123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220 |
- using UnityEngine;
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Xml;
- public class Language
- {
- public enum Enabled:int
- {
- ChineseSimplified = 0,
- English = 1,
- ChineseTraditional = 2,
- }
- 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;
- private static XmlDocument xml;
- public static string lan = SystemLanguage.English.ToString();
- public static string lanForUI = SystemLanguage.English.ToString();
- // 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 page, string id)
- {
- if(xml == null)
- {
- Debug.LogError("Language not init");
- return "Language not init";
- }
- 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;
- }
- private static Font defaultFont;
- public static Font font; //todo Public改为private
- 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;
- }
- }
|