复习框架设计CLR VIA C# 第二章 之 使用多语言环境

此文未经作者同意,不能转摘

 ==========================================================================

 

 1.要想使用多语言环境(区域性),可以先简单了解以下知识:

     a.什么是区域性 Culture

       如 主标记  副标记   对应的语言文化

             en       (无)          英语

             en        US          美国英语

             zh        CN          中华人民共和国中文

       例如: 中华人民共和国中文 通常可表示为 "zh-CN"

     b. 资源文件  xx.resources   xx.resx   xx.txt  xx.avi......

        啥叫资源文件啊,就是里面的内容 只是把它当数据来用的文件就叫 资源文件

        常见的资源文件 里可以是 文本(对)、图片、视频、声音、图标、甚至是 只当成数据用的 代码

     c.资源文件 与程序的组合形式

          最笨的方式就是自己在代码里自己来实现对资源文件的读写了。

          当然,因为这种用法太常见了,所以大家想出了某些机制来“简化”对它的读写了,但是对于初学者当然就头大了

           常见的机制,就是建立起某种格式的资源文件,然后

              a) 编译后直接嵌到程序集中      即你不容易看到它了,

              b) 不嵌入式的引用它           这里你使用程序时,可得保证它一定存在,当然好处就是 可以通过折腾这些资源文件而达到比如换肤,换语言等功效了

    d. 假如按一定关系建立好程序和资源文件后,程序如何切换资源文件

            a)   最简单的就是  程序自动感知 运行环境的操作系统的区域性,然后自动选择正确的资源文件

            b)   通过读取配置文件的自定义信息,然后改变代码里的区域性,从而加载正确的资源文件  ,这个好处就是灵活

            c)   对于B/S的应用,可以通过取得客户端的环境信息来加载,本质上,只是b)的变形

 

 

  2.在.net里 建立多语言支持环境是很容易的事,因为它提供了较为简单的机制,下面我们以 CUI(控制台程序)方式来讲解如何使用:    

       a. 打开vs2005,新建一CUI的工程,假设 名称为 MyApp

       b.选中MyApp工程,点右键-->属性

          在弹出属性页中 选中 资源标签,如果没有任何项目的资源文件时,它会提示你要不要创建(废话,当然要建了)

           点击此话,会自动在工程项目里的 Properties 目录里多出一个(实际是两个)叫 Resources.resx的文件

           

           好了,按资源文件名的机制,你还可以建立另外的语言下的资源文件:

            如 美语: Resources.en-US.resx

                 简体中文 Resources.zh-CN.resx

           这里有个技巧,就是复制 Resources.resx文件 然后改名,好了,所需文件已建好。如下图所示

 

    工程文件

 

       c. 接下来以按语言 替换 文字为例来说明资源文件的使用

                 双击  Resources.resx 文件,进入 默认的文本对 编辑状态 ,如下图所示

         resources文件

           文本对是以 key = value的形式 进行编辑,上例中 为 Hello= ffgggHHHi~

            因为此为中性语言(即默认语言),所以我的 值为乱写的,呵

      好,依次双击

             美语: Resources.en-US.resx

         resources.en-US文件

             简体中文 Resources.zh-CN.resx

         resources.zh-CN文件

      需要废话的是: key 记得都要一样(包括大小写),

                             如此例中 key为  Hello                  (小技巧:  key可以用中文起名)

     d.好了,万事俱备,只欠调用了

          接下来,利用 主程序 来测试,

           

       

        

        哟,资源文本的使用好简单啊,原来 资源文件其实可以由两个文件构成,在你编写资源文本的时候,IDE会自动生成该资源的C#代码,如 这个Hello,就会在 Resources.designer.cs文件里生成以下代码:

      

          原来资源文件 会生成 Resources类, Hello 键 为该类的 静态属性

    好了,运行一下吧

    运行效果1

     咦!,似乎有点怪,,呵,是的,,默认语言中的文字没显示,它自己用了中文,好,看一下编译之后,都生成了哪些文件

生成文件1

 

哈哈,原来 两个资源文件 会生成 两个 目录,点一下en-US 的目录看看

 

生成文件2

原来 资源文件 会生成一个叫 MyApp.resources.dll 的文件,我们通常 称它为   资源附属程序集 ,里面没有任何代码,只有资源而已

 

好了,突然产生一个邪恶念头,,如果我把  zh-CN目录里的那个 资源附属程序集 文件删除后,再运行程序会怎样?

 

运行效果图2

呵呵,这回变成了 默认语言了,原来,我的操作系统的区域性为 简体中文(又是废话,呵)

好了,,要是想试试 美语,你可以试试 将作系统的区域性为 调整为 美国,算了,这个艰巨的任务就留给读者来完成吧。

 

 -----------------------------------------------------------------------------------------------------------------------------

进阶学习

 3.上面留了个小尾巴(7月份的尾巴,你是湿纸坐....),就是如果我想手动切换语言就不太方便了,好,接下来我们来看看这个问题如何解决,其实要解决它很简单,就是 想法 控制  Resources类的区域性就行了,怎么控制呢?

  

  好,编译后,运行一下看看

    运行效果图3

 ok,美语出来了,所以只需要能动态替换掉  CultureInfo构造里的 “en-US”这个字符串,就能切换语言了

 

 

进阶2学习

-------------------------------------------------------------------------------------------------------------------------------

4. 好,要想动态取得 字符串,可以把这个字符串放到程序集的配置文件里,这里不多说了,直接上代码

 

  

 因为代码用到了  ConfigurationManager 类,所以记得 添加引用 System.Configuration.dll文件

 

好,还有得记新建 App.config配置文件,然后如图所示

  配置文件

       注意,你得分别按 三种 情况 来测试!!!(为了省事把三种情况全部写在了一起)

  

 ----------------------------------------------------------------------------------------------------------------------------------------

进阶3学习

  5. 到此,似乎很完美了,呵

      还有什么要学的么? 想想,,,, 还有一个不方便 的地方的就开发方式,,在实际开发中,不可能一次就编写完所有的语言下的 资源文件。而是根据需要客户的需要,逐步完善的一个过程。

     总结上面的话,得到需要解决的步骤:

                 1. 区域性的目录 根据 需要增加,创建一个目录不难,所以不再讨论

                 2.   区域性的目录里的  资源附加程序集  重点解决这个

     分析: 资源附加程序集 不用包含任何代码,只需资源即可,利用反射工具可以看到

     zh-CN: MyApp.resources.dll文件的结构,如图所示:

          反射资源文件

 

所以 关闭原来的工程,重新新建一个同名的工程 MyApp来测试

       建立的文件如下所示

   解决方案2

  可以看到,除了一个 简体中文件的资源文件外,没有任何有意义的代码了,好,双击该资源文件

  resources.zh-CN2

为了能确认测试成功,故意使值 不同,这里打成了“好想你!!!”(呵,,不知想谁)

好了,编译一下,生成的文件如图所示

生成文件3

 这时,千万注意,我们并不需要你看到的这个MyApp.dll文件,而是 zh-CN里的文件,如果你进去,同样可以看到它

生成文件2

好了,为了省事,直接把zh-CN目录全部复制到  原来的旧工程下,改配置文件为: zh-CN ,

测试结果:

   运行效果图4

 

-----------------------------------------------------------------------------------------------------------

 

 

 

  

    

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值