| | |
| | | using System.Collections.Generic; |
| | | using System; |
| | | using UnityEngine; |
| | | using LitJson; |
| | | |
| | | |
| | | public static class Language |
| | |
| | | } |
| | | } |
| | | |
| | | public static Dictionary<string, string> languageShowDict = new Dictionary<string, string>();//界面显示的多语言版本 |
| | | |
| | | //启动多语言的渠道,如{appid:[默认语言标识,是否首次安装强制指定语言,只包含哪些语言版本]} |
| | | // 如{"sghy":["en","0","en,zh,ft"]},字符0代表随系统选择如果找不到则用默认,配1则不检查系统直接用默认 |
| | | //为了同代码版本同表维护,保持配置一致按appid区分,只做翻译处理 |
| | | public static Dictionary<string, string[]> languageStartDict = new Dictionary<string, string[]>();//启动多语言的渠道 |
| | | static Dictionary<string, string> languageDict = new Dictionary<string, string>();// unity语言配置对应的约定字符 找不到用默认 |
| | | |
| | | /// <summary> |
| | | /// 根据系统语言自动设置默认语言 |
| | | /// 未强制语言的 根据系统语言自动设置默认语言 等情况 |
| | | /// </summary> |
| | | public static void InitDefaultLanguage() |
| | | { |
| | | var config = InitialFunctionConfig.Get("Language").Numerical1; |
| | | Debug.LogFormat("系统语言:{0} {1}", Application.systemLanguage, config); |
| | | if (string.IsNullOrEmpty(config)) |
| | | //初始化, 该表是随包安装的如果热更需要二次才生效 |
| | | var config = InitialFunctionConfig.Get("LanguageEx"); |
| | | |
| | | languageShowDict = JsonMapper.ToObject<Dictionary<string, string>>(config.Numerical1); |
| | | languageStartDict = JsonMapper.ToObject<Dictionary<string, string[]>>(config.Numerical2); |
| | | languageDict = JsonMapper.ToObject<Dictionary<string, string>>(config.Numerical3); |
| | | |
| | | if (languageStartDict == null || !languageStartDict.ContainsKey(VersionConfigEx.Get().appId)) |
| | | { |
| | | //检查有没多语言 |
| | | Debug.Log("当前渠道未开启多语言:" + VersionConfigEx.Get().appId); |
| | | return; |
| | | } |
| | | |
| | | Debug.LogFormat("系统语言:{0} {1}", Application.systemLanguage, config.Numerical1); |
| | | |
| | | var id = LocalSave.GetString("LANGUAGE_ID1"); |
| | | if (!string.IsNullOrEmpty(id)) |
| | | return; |
| | | |
| | | switch (Application.systemLanguage) |
| | | { |
| | | case SystemLanguage.Chinese: |
| | | case SystemLanguage.ChineseSimplified: |
| | | case SystemLanguage.ChineseTraditional: |
| | | { |
| | | id = "zh"; |
| | | break; |
| | | } |
| | | //玩家已经选择过语言,不做处理 |
| | | Debug.Log("当前选择语言:" + id); |
| | | return; |
| | | } |
| | | var json = LitJson.JsonMapper.ToObject(config); |
| | | if (json.Keys.Contains(id)) |
| | | Id = id; |
| | | |
| | | var defaultCfg = languageStartDict[VersionConfigEx.Get().appId]; |
| | | string languageMark; |
| | | if (defaultCfg[1] == "0") |
| | | { |
| | | //随系统选择 |
| | | languageMark = ((int)Application.systemLanguage).ToString(); |
| | | if (languageDict.ContainsKey(languageMark)) |
| | | { |
| | | id = languageDict[languageMark]; |
| | | var lanArr = defaultCfg[2].Split(','); |
| | | if (Array.IndexOf(lanArr, id) == -1) |
| | | { |
| | | //不包含的语言 用默认 |
| | | id = defaultCfg[0]; |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | //默认 |
| | | id = defaultCfg[0]; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | //开启的情况下必须要有个默认值 |
| | | Id = InitialFunctionConfig.Get("Language").Numerical2; |
| | | //强制指定默认 |
| | | id = defaultCfg[0]; |
| | | } |
| | | |
| | | Id = id; |
| | | Debug.LogFormat("系统语言:{0} 设置为{1}", Application.systemLanguage, Id); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | { |
| | | get |
| | | { |
| | | var config = InitialFunctionConfig.Get("Language").Numerical1; |
| | | if (string.IsNullOrEmpty(config)) |
| | | if (languageStartDict == null || languageStartDict.Count == 0) |
| | | { |
| | | return ""; |
| | | } |
| | | if (!languageStartDict.ContainsKey(VersionConfigEx.Get().appId)) |
| | | { |
| | | return ""; |
| | | } |
| | | return LocalSave.GetString("LANGUAGE_ID1"); |
| | | } |
| | | set |
| | |
| | | } |
| | | } |
| | | |
| | | //多语言的路径 |
| | | //默认路径不附加地址,Id不为空时附加Id |
| | | public static string fixPath |
| | | { |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | // 获取语言选项 |
| | | public static string[] GetLanguages() |
| | | { |
| | | if (languageStartDict == null || !languageStartDict.ContainsKey(VersionConfig.Get().appId)) |
| | | { |
| | | return null; |
| | | } |
| | | return languageStartDict[VersionConfig.Get().appId][2].Split(','); |
| | | } |
| | | |
| | | public static string Get(string _id) |
| | | { |
| | | // return string.Empty; |