开发基于键值对形式的语言管理器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
}

 

 

 

posted @ 2017-11-28 11:57  丢了蜡笔小新会哭〆  阅读(506)  评论(0编辑  收藏  举报