开发基于键值对形式的语言管理器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
}
时间: 2024-08-01 08:19:04

开发基于键值对形式的语言管理器LauguageManager的相关文章

第20课-数据库开发及ado.net 可空值类型,资料管理器,多条件查询,Case

第20课-数据库开发及ado.net 可空值类型,资料管理器,多条件查询,Case SqlHelper using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Text; namespace _02省市联动 { public static  class SqlHelper { //

unity 多语言管理器

多语言是游戏中比较长见的功能,实现起来也相对比较简单,在这里简单说一下思路,稍后代码附上 简单说一下步骤: 步骤一.设计多语言配置表.在这里说一下多语言配置表.就是一个json格式文件,每种语言的简写作 为当前语言的键,比如简体用zh-hans,值是一个json对象.比如游戏中有一个需要多语言的 label,内容是"登陆游戏",我们简单写一下这个表 { "zh-hans": { "登陆游戏": "", " 输入昵称&

大数据技术之_19_Spark学习_02_Spark Core 应用解析+ RDD 概念 + RDD 编程 + 键值对 RDD + 数据读取与保存主要方式 + RDD 编程进阶 + Spark Core 实例练习

第1章 RDD 概念1.1 RDD 为什么会产生1.2 RDD 概述1.2.1 什么是 RDD1.2.2 RDD 的属性1.3 RDD 弹性1.4 RDD 特点1.4.1 分区1.4.2 只读1.4.3 依赖1.4.4 缓存1.4.5 CheckPoint第2章 RDD 编程2.1 RDD 编程模型2.2 RDD 创建2.2.1 由一个已经存在的 Scala 集合创建,即集合并行化(测试用)2.2.2 由外部存储系统的数据集创建(开发用)2.3 RDD 编程2.3.1 Transformatio

iOS 键值观察(KVO)简述及实例理解

KVO概述: KVO,即:Key-Value Observing,直译为:基于键值的观察者.  它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知. 简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了.KVO的优点: 当有属性改变,KVO会提供自动的消息通知.这样开发人员不需要自己去实现这样的方案:每次属性改变了就发送消息通知. 这是KVO机制提供的最大的优点.因为这个方案已经被明确定义,获得框架级支持,可以方便地采用. 开发人员不需要添加任何代码,

深度理解Key-Value Observing 键值观察

前言   在上一阶段的开发过程中,我们大量使用了 KVO 机制,来确保页面信息的及时同步.也因此碰到了很多问题,促使我们去进一步学习 KVO 的相关机制,再到寻找更好的解决方案.鉴于 KVO 让人欲仙欲死的使用经历,在这里做一个简单分享.此分享的目的,更多的是在于点出 KVO 相关的技术点,供我们大家在学习和使用过程中做一个参考. 对于 KVO 的背后机制感兴趣的同学,可以直接看第三部分,KVC 和 isa-swizzling . 对于 替代方案感兴趣的同学,请直接跳到末尾的第五部分,有列出了目

Android基础--键值对存储(SharedPreferences)

SharedPreferences用于将键值对形式的数据存储到当前应用专属的存储空间中 package com.itheima.sharedpreferences; import android.os.Bundle; import android.app.Activity; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.text.T

android 同时上传文件和键值对的问题。

============问题描述============ 我这边现在要上传一个音频或者图像文件,但是同时又要用键值对的形式将文件的后缀名同时上传. 而且这个文件是直接用流写入的....不能用entity那个键值对形式传. 请问如何解决. ============解决方案1============ 使用Apache httpcomm 工具包,有一个FiileEntity类.直接把文件路径放进去就OK了. ============解决方案2============ 保持会话,文件上传成功后,再上传键

DevExpress的下拉框控件ComboxBoxEdit怎样绑定键值对选项

场景 DevExpress的下拉框控件ComboBoxEdit控件的使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102855898 在设置ComboBoxEdit的下拉框内容时除了最简单的 comboBox.Properties.Items.Add("下拉选项1"); 如果要添加键值对形式的数据该怎样实现. 注: 博客主页: https://blog.csdn.net/badao_liumang_qizhi

安卓开发:UI组件-布局管理器和文本显示

接下来的随笔,记录了在学习b站up主:天哥在奔跑,录制的教学视频的同时,进行一个app开发. up主:天哥在奔跑 视频地址:https://www.bilibili.com/video/av38409964?from=search&seid=1641333322970886700 开发app:师傅网 2.1布局管理器 每个界面上元素有很多,各元素相互之间的摆放位置与元素关系,就由布局管理器完成.常用的两种布局为线性布局(LinearLayout)和相对布局(RelativeLayout). 2.