huankfy

明月出天山,苍茫云海间

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

     项目推广到其它国家的时候要做本地化。.net提供了本地化和国际化的操作,但有些不便利。最近在做项目的时候,遇到了资源国际化的问题。网上有不少的介绍,但很多都是介绍.net是怎么处理的或者如何用.net来处理。后来根据.net里面的设计思想进行了改进,很好的解决了问题。大致介绍一下。

     在.net中,提供了对资源文件供操作(较早的是resouce格式,现都是resx格式)。resx格式的资源简化了开发,但实际是与操作resource一样的(有兴趣可看下.net对resx操作的大致情况,就会知道两者间的联系)。多语言的资源根据不同的语言进行了命名,resourcefile.language.resx。根据不同的语言加载对应的资源文件进行解析(它提供了culture类)。

     借鉴这一思想,增加xml作为资源存储文件,最终发布的时候可将xml做处理,如加密等。文件的命名同上filename.language.xml,设置culture,根据不同的culture加载不同的xml资源文件,然后进行解析。

     在项目中已经使用了,这里贴一下代码(C#):

     访问接口:

ResourceManager

     资源操作类,对资源文件进行解析:

 

ResourceParse

    通过ResouceManger对象进行访问,先设置文件路径。为简化操作,在访问的时候,提供文件的filename,由程序根据当前的语言文化形成完整的文件路径。如传入filename,假设当前是en-us,最终形成的解析文件就是appdomain/Resources/filename.en-us.xml,如果是简体中文,要解析的就是appdomain/Resources/filename.zh-CN.xml。

    利用这一思想,可很方便进行修改。但缺点就是不能对图片等文件隐藏,只能纪录文本信息,这也是由xml特性决定的。利用resx则可以对图片、声音等处理,在编译的时候设置embed。resx+xml很好的解决了这一问题。其它语言开发,也可以采用这一思想。

ps:当时做多语言开发的时候,很自然的想到已经有不少方案了,于是上网一搜,太多太多,但都不适合。后来索性好好的看看.net是怎么处理的,毕竟ms这方面已经做了不少工作,看看它的处理。后来终于搞定。


posted on 2008-11-29 15:14  Yanbo.Hu  阅读(567)  评论(0编辑  收藏  举报