123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416 |
- using UnityEngine;
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Xml;
- using UnityEngine.UI;
- public class Language
- {
- public enum Enabled
- {
- English,
- ChineseSimplified,
- ChineseTraditional,
- }
- public enum LangType
- {
- Public
- }
- public static string[] availableArr = new string[]{Enabled.ChineseSimplified.ToString(), Enabled.English.ToString(), Enabled.ChineseTraditional.ToString() };
- private static SystemLanguage defaultLan = SystemLanguage.English;
- public static XmlDocument xml;
- public static string lan = SystemLanguage.English.ToString();
- public static string lanForUI = SystemLanguage.English.ToString();
- public static Dictionary<CurrentLanguage, TextAsset> LanguageDic
- {
- get
- {
- if (languageDic == null)
- {
- languageDic = new Dictionary<CurrentLanguage, TextAsset>();
- languageDic.Add(CurrentLanguage.English, ResourceManager.Load<TextAsset>("English", Folder.Config));
- languageDic.Add(CurrentLanguage.ChineseSimplified, ResourceManager.Load<TextAsset>("ChineseSimplified", Folder.Config));
- languageDic.Add(CurrentLanguage.ChineseTraditional, ResourceManager.Load<TextAsset>("ChineseTraditional", Folder.Config));
- }
- return languageDic;
- }
- }
- public static Dictionary<CurrentLanguage, TextAsset> languageDic;
- public static Dictionary<CurrentLanguage, XmlDocument> XmlDocumentDictionary
- {
- get
- {
- if (xmlDocumentDictionary == null)
- {
- xmlDocumentDictionary = new Dictionary<CurrentLanguage, XmlDocument>();
- XmlDocument xmlDocument = new XmlDocument();
- xmlDocument.LoadXml(LanguageDic[CurrentLanguage.English].text);
- xmlDocumentDictionary.Add(CurrentLanguage.English, xmlDocument);
- xmlDocument = new XmlDocument();
- xmlDocument.LoadXml(LanguageDic[CurrentLanguage.ChineseSimplified].text);
- xmlDocumentDictionary.Add(CurrentLanguage.ChineseSimplified, xmlDocument);
- xmlDocument = new XmlDocument();
- xmlDocument.LoadXml(LanguageDic[CurrentLanguage.ChineseTraditional].text);
- xmlDocumentDictionary.Add(CurrentLanguage.ChineseTraditional, xmlDocument);
- }
- return xmlDocumentDictionary;
- }
- }
- public static Dictionary<CurrentLanguage, XmlDocument> xmlDocumentDictionary;
- public static void Initialize()
- {
- LanguageManager.CurrentLanguage = ConfigManager.GetStringFormConfig("Language").ToEnum<CurrentLanguage>();
- if (Initializer.Instance.AuditEdition)
- {
- LanguageManager.CurrentLanguage = CurrentLanguage.ChineseSimplified;
- }
- if (LanguageManager.CurrentLanguage == CurrentLanguage.Default)
- {
- if (Application.systemLanguage == SystemLanguage.ChineseSimplified)
- {
- LanguageManager.CurrentLanguage = CurrentLanguage.ChineseSimplified;
- }
- else if (Application.systemLanguage == SystemLanguage.ChineseTraditional)
- {
- LanguageManager.CurrentLanguage = CurrentLanguage.ChineseTraditional;
- }
- else
- {
- LanguageManager.CurrentLanguage = CurrentLanguage.English;
- }
- }
- xml = XmlDocumentDictionary[LanguageManager.CurrentLanguage];
- if (LanguageManager.CurrentLanguage == CurrentLanguage.English)
- {
- ResourceManager.Get<Button>(CanvasLabel.L_TraChi).interactable = true;
- ResourceManager.Get<Button>(CanvasLabel.L_SimChi).interactable = true;
- ResourceManager.Get<Button>(CanvasLabel.L_English).interactable = false;
- ResourceManager.Get<Button>(CanvasLabel.L_TraChi).image.color = Lib.LightGray;
- ResourceManager.Get<Button>(CanvasLabel.L_SimChi).image.color = Lib.LightGray;
- ResourceManager.Get<Button>(CanvasLabel.L_English).image.color = Lib.Orange;
- }
- else if (LanguageManager.CurrentLanguage == CurrentLanguage.ChineseSimplified)
- {
- ResourceManager.Get<Button>(CanvasLabel.L_TraChi).interactable = true;
- ResourceManager.Get<Button>(CanvasLabel.L_SimChi).interactable = false;
- ResourceManager.Get<Button>(CanvasLabel.L_English).interactable = true;
- ResourceManager.Get<Button>(CanvasLabel.L_TraChi).image.color = Lib.LightGray;
- ResourceManager.Get<Button>(CanvasLabel.L_SimChi).image.color = Lib.Orange;
- ResourceManager.Get<Button>(CanvasLabel.L_English).image.color = Lib.LightGray;
- }
- else if (LanguageManager.CurrentLanguage == CurrentLanguage.ChineseTraditional)
- {
- ResourceManager.Get<Button>(CanvasLabel.L_TraChi).interactable = false;
- ResourceManager.Get<Button>(CanvasLabel.L_SimChi).interactable = true;
- ResourceManager.Get<Button>(CanvasLabel.L_English).interactable = true;
- ResourceManager.Get<Button>(CanvasLabel.L_TraChi).image.color = Lib.Orange;
- ResourceManager.Get<Button>(CanvasLabel.L_SimChi).image.color = Lib.LightGray;
- ResourceManager.Get<Button>(CanvasLabel.L_English).image.color = Lib.LightGray;
- }
- }
- public static void SwitchLanguage(CurrentLanguage currentLanguage)
- {
- LanguageManager.CurrentLanguage = currentLanguage;
- TextAsset textAsset = LanguageDic[currentLanguage];
- xml = new XmlDocument();
- xml.LoadXml(textAsset.text);
- }
- //public static void Init(string lan)
- //{
- // Debug.Log("Init Language " + lan);
- // Language.lan = lan;
- // string path = "XML/Language/";
- // TextAsset textAsset = ResourcesUtil.GetInstance().GetTextAsset("XML/Language/" + lan);
- // if (textAsset == null)
- // {
- // Debug.LogError("Can not find language use default " + defaultLan);
- // textAsset = ResourcesUtil.GetInstance().GetTextAsset("XML/Language/" + defaultLan.ToString());
- // Language.lan = defaultLan.ToString();
- // }
- // if (xml == null)
- // xml = new XmlDocument();
- // xml.LoadXml(text);
- //}
- public static bool initialized
- {
- get{
- return xml != null;
- }
- }
- public static void LoadFromResource()
- {
- //TextAsset textasset = ResourcesManager.Instance.LoadConfig("xml/lan", lan);
- xml = new XmlDocument ();
- //xml.LoadXml (textasset.text);
- }
- public static void Load(System.Action callBack)
- {
- //Language.lan = GetSpecifiedLang();
- // ResourcesManager.Instance.LoadAsset<TextAsset> ("xml/lan", lan, (objs) => {
- // if (objs != null && objs.Length > 0 && objs[0] != null) {
- // xml = new XmlDocument ();
- // xml.LoadXml ((objs[0] as TextAsset).text);
- //// Debug.LogError("bundleLoad-->"+(objs[0] as TextAsset).text);
- // } else {
- // TextAsset textasset = ResourcesManager.Instance.LoadConfig("xml/lan", lan);
- // xml = new XmlDocument ();
- // xml.LoadXml (textasset.text);
- //// Debug.LogError("resourceLoad-->"+(textasset.text));
- // }
- // callBack();
- // });
- // AssetBundleLoader.Load(path, lan.ToString(), typeof(TextAsset), (object asset)=>{
- // xml = new XmlDocument();
- // xml.LoadXml((asset as TextAsset).text);
- //// AssetBundleUtil.GetInstance().GetFont(AssetBundleUtil.Url.Font, lan.ToString(), (Font assetFont)=>{
- //// font = assetFont;
- //// });
- // font = ResourcesUtil.GetInstance().GetFont(ResourcesUtil.Url.Font, lan);
- //// font = ResourcesUtil.GetInstance().GetFont(ResourcesUtil.Url.Font, Enabled.Chinese.ToString());
- // callBack();
- // }, true);
- }
- /// <summary>
- /// 替换字符获取新的字符串
- /// </summary>
- /// <param name="old">需要替换的字符串</param>
- /// <param name="_replace">替换的数组</param>
- /// <returns></returns>
- public static string GetReplacedText(string old, params System.Object[] _replace)
- {
- if (old == "" || old == null) return "";
- string replaceStr = old;
- int length = _replace.Length;
- for (int i = 0; i < length; i++)
- {
- replaceStr = replaceStr.Replace("_$" + i + "_", _replace[i].ToString());
- }
- return replaceStr;
- }
- public static string GetStr(string id,LangType type = LangType.Public)
- {
- return GetStr (type.ToString(),id);
- }
- public static string GetStr(string pageAndID)
- {
- string[] strings = pageAndID.Split(new[] {"__"}, StringSplitOptions.None);
- return GetStr(strings[0], strings[1]);
- }
- public static string GetStr(string pageAndID, SystemLanguage language)
- {
- string[] strings = pageAndID.Split(new[] { "__" }, StringSplitOptions.None);
- CurrentLanguage currentLanguage;
- if (language == SystemLanguage.ChineseSimplified)
- {
- currentLanguage = CurrentLanguage.ChineseSimplified;
- }
- else if (language == SystemLanguage.ChineseTraditional)
- {
- currentLanguage = CurrentLanguage.ChineseTraditional;
- }
- else
- {
- currentLanguage = CurrentLanguage.English;
- }
- return GetStr(strings[0], strings[1], currentLanguage);
- }
- public static string GetStr(string page, string id)
- {
- if(xml == null)
- {
- Initialize();
- }
- try
- {
- XmlNode pageNode = xml.SelectSingleNode("lan/"+page);
- XmlNode node = pageNode.SelectSingleNode(id);
- if(node != null)
- return node.InnerText.Replace("\\n", "\n");
- }
- catch(Exception e)
- {
- Debug.LogException(e);
- }
- string error = "Topic missing page["+page+"] id["+id+"]";
- Debug.LogError(error);
- return error;
- }
- public static string GetStr(string page, string id, CurrentLanguage language)
- {
- XmlDocument xmlDocument = XmlDocumentDictionary[language];
- try
- {
- XmlNode pageNode = xmlDocument.SelectSingleNode("lan/" + page);
- XmlNode node = pageNode.SelectSingleNode(id);
- if (node != null)
- return node.InnerText.Replace("\\n", "\n");
- }
- catch (Exception e)
- {
- Debug.LogException(e);
- }
- string error = "Topic missing page[" + page + "] id[" + id + "]";
- Debug.LogError(error);
- return error;
- }
- public static string GetShareUrl()
- {
- XmlDocument tempXML = new XmlDocument();
- tempXML.LoadXml(LanguageDic[CurrentLanguage.ChineseSimplified].text);
- string page;
- if (Application.isEditor)
- {
- page = "Android";
- }
- else if (Application.platform == RuntimePlatform.IPhonePlayer)
- {
- page = "IOS";
- }
- else if (Application.isMobilePlatform)
- {
- page = "Android";
- }
- else
- {
- throw new Exception();
- }
- try
- {
- XmlNode pageNode = tempXML.SelectSingleNode("lan/" + page);
- XmlNode node = pageNode.SelectSingleNode("ShareUrl");
- if (node != null)
- return node.InnerText.Replace("\\n", "\n");
- }
- catch (Exception e)
- {
- Debug.LogException(e);
- }
- string error = "Topic missing page[" + page + "] id[" + "ShareUrl" + "]";
- Debug.LogError(error);
- return error;
- }
- private static Font defaultFont;
- public static Font font;
- public static Font GetFont()
- {
- if (xml == null || font == null)
- {
- if(defaultFont == null)
- {
- Debug.LogError("Language not init");
- defaultFont = Font.CreateDynamicFontFromOSFont("Arial", 20);
- }
- return defaultFont;
- }
- return font;
- //return "Fonts/" + SystemLanguage.ChineseTraditional.ToString();
- //return "Fonts/" + SystemLanguage.Chinese.ToString();
- }
- public static Font GetFont(Enabled font)
- {
- return null;
- //return ResourcesUtil.GetInstance().GetFont(ResourcesUtil.Url.Font, font.ToString());
- }
- public static Font GetSystemFont()
- {
- return Font.CreateDynamicFontFromOSFont("Arial", 20);
- }
- public static Font GetNumberFont()
- {
- return null;
- //return ResourcesUtil.GetInstance().GetFont(ResourcesUtil.Url.Font, "Number");
- }
- public static string GetSpecifiedLang1()
- {
- string language = "";
- if (Application.systemLanguage.ToString() == SystemLanguage.ChineseSimplified.ToString())
- language = SystemLanguage.Chinese.ToString();
- else
- language = Application.systemLanguage.ToString();
- if (!isInEnabled(language))
- language = defaultLan.ToString();
- #if UNITY_EDITOR || UNITY_STANDALONE
- language = SystemLanguage.English.ToString();
- #endif
- // language = SystemLanguage.Chinese.ToString();
- language = SystemLanguage.English.ToString();
- return language;
- }
- private static bool isInEnabled(string value)
- {
- bool isIn = false;
- foreach (string name in Enum.GetNames(typeof(Enabled)))
- {
- if (value == name)
- return true;
- }
- return isIn;
- }
- public static bool IsLanguageInit()
- {
- return (xml == null) ? false : true;
- }
- public static string GetLanguagePath()
- {
- return "XML/lan/" + lan;
- }
- }
|