using System.Collections; using System.Collections.Generic; using System; using UnityEngine; public static class Language { public static int languageNumber { get; set; } public static event Action languageChangeEvent; public static void ChangeLanguage(int _number) { if (languageChangeEvent != null) { languageChangeEvent(); } } /// /// 根据系统语言自动设置默认语言 /// public static void InitDefaultLanguage() { var config = InitialFunctionConfig.Get("Language").Numerical1; Debug.LogFormat("系统语言:{0} {1}", Application.systemLanguage, config); if (string.IsNullOrEmpty(config)) return; 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; } } var json = LitJson.JsonMapper.ToObject(config); if (json.Keys.Contains(id)) Id = id; else { //开启的情况下必须要有个默认值 Id = InitialFunctionConfig.Get("Language").Numerical2; } } /// /// 语言的ID,用于区分下载资源 /// /// public static string Id { get { var config = InitialFunctionConfig.Get("Language").Numerical1; if (string.IsNullOrEmpty(config)) return ""; return LocalSave.GetString("LANGUAGE_ID1"); } set { LocalSave.SetString("LANGUAGE_ID1", value); } } //默认路径不附加地址,Id不为空时附加Id public static string fixPath { get { if (string.IsNullOrEmpty(Id)) return ""; return string.Format("/{0}", Id); } } public static string Get(string _id) { // return string.Empty; var languageInfo = LanguageConfig.Get(_id); if (languageInfo == null) { #if UNITY_EDITOR // TODO YYL // if (_id.StartsWith(NewBieGuideScriptableObject.GuidesPrefixNewBie) || // _id.StartsWith(NewBieGuideScriptableObject.GuidesPrefixFun)) // return string.Empty; Debug.LogErrorFormat("缺少语言表配置,id: {0}", _id); #endif return string.Empty; } if (string.IsNullOrEmpty(languageInfo.content)) { Debug.LogFormat("语言内容为空,id: {0}", _id); } return languageInfo.content; } public static string Get(string _id, params object[] _objects) { var content = Get(_id); try { return string.Format(content, _objects); } catch (Exception ex) { Debug.LogFormat("语言内容格式错误,id: {0}", _id); return content; } } public static string GetFromLocal(int _id) { return string.Empty; var languageInfo = PriorLanguageConfig.Get(_id); if (languageInfo == null) { Debug.LogFormat("缺少语言表配置,id: {0}", _id); return string.Empty; } if (string.IsNullOrEmpty(languageInfo.Content)) { Debug.LogFormat("语言内容为空,id: {0}", _id); } return languageInfo.Content; } public static string GetFromLocal(int _id, params object[] _objects) { var content = GetFromLocal(_id); try { return string.Format(content, _objects); } catch (Exception ex) { Debug.LogFormat("语言内容格式错误,id: {0}", _id); return content; } } }