开发基于键值对形式的语言管理器LauguageManager
开发基于键值对形式的语言管理器LauguageManager
前言:在我们在开发UI框架的过程中,我们会用到语言的国际化,尤其是我们的游戏项目做大之后,公司不仅仅满足于国内的市场,有可能会发布到美国、日本等国家。在这个时候语言的国际化会显得尤为重要了,当然国际化不仅仅指的语言国家化,还包括音频的国际化等许多的方面。在这里我们主要讲解的是语言的国际化。
通常的话我们会将语言信息全部的存放在配置文件中,当我们在国内的市场中我们可以使用中文,当我们发布到美国的时候可以使用英文的配置文件。如图所示:
英文的配置文件:
中文的配置文件:
这些通常以键值对的形式存放在配置表中。我们就需要对配置文件进行解析存放在字典集合中。Json文件的解析http://www.cnblogs.com/MoRanQianXiao/p/7899821.html。
全部的实现代码如下:
namespace UIFromWork { public class LauguageManager { #region 单例模式 private static LauguageManager _instance = null; public static LauguageManager Instance { get { if (_instance == null) { _instance = new LauguageManager(); } return _instance; } } #endregion #region 字段和属性定义 /*** * 语言的缓存集合 * */ private Dictionary<string, string> _dicLauguageCache = new Dictionary<string, string>(); #endregion #region 构造函数的定义 private LauguageManager() { //初始化语言缓存集合 InitLauguageCache(); } #endregion #region 公共方法的定义 public string ShowText(string lauguageId) { //参数的检查 if (string.IsNullOrEmpty(lauguageId)) return null; //查询处理 if (_dicLauguageCache != null && _dicLauguageCache.Count >= 1) { string result = null; _dicLauguageCache.TryGetValue(lauguageId, out result); if (result != null) { return result; } } //抛自定义异常 throw new JsonAnlysisException(string.Format("{0}/ShowText()/Query is null ! Parameter : lauguageId : {1} ", GetType(), lauguageId)); } #endregion #region 私有方法的定义 private void InitLauguageCache() { IConfigManagerAble config = new ConfigManagerByJson("Json\\LauguageJSONConfig"); if (config != null) { _dicLauguageCache = config.AppSetting; } } #endregion }//class_end }
{/*background:url("https://images.cnblogs.com/cnblogs_com/Candies/632934/o_o_light2.png") no-repeat 10px 50%;*/background:url("https://images.cnblogs.com/cnblogs_com/Candies/632934/o_may.png")no-repeat 20px 40%;margin-top: 20px;padding: 10px 10px 10px 120px;box-shadow: 0px 0px 15px #aaa;border-radius: