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

     

     

  • 相关阅读:
    KMP模板
    洛谷 [P2701] 巨大的牛棚
    浅谈用极大化思想解决最大子矩阵问题
    洛谷 [P1578] WC2002 奶牛浴场
    洛谷 [P1040]加分二叉树
    洛谷 [P1220] 关路灯
    清北学堂复习笔记
    一些比较实用的网站
    图论模板
    一些应该注意的问题
  • 原文地址:https://www.cnblogs.com/MoRanQianXiao/p/7908807.html
Copyright © 2020-2023  润新知