读书人

资源文件在国际化中的施用(WinForm)

发布时间: 2012-09-02 21:00:34 作者: rapoo

资源文件在国际化中的运用(WinForm)

国际化的软件往往需要多种语言资源,如何在C#的WinForm中做到呢?且看以下分解:

1 工程添加资源文件
??? ?????? 资源文件命名方式 [资源文件主题名].[语言区域.].resx???
????????? ?例如资源文件主题名为: "Resource1" 。我们准备了?中 英 日?三个语言版本的资源文件,则对应的语言区域分别是?"zh-CN"、"en"、"ja"。
????????????所以我们添加了三个资源文件: Resource1.zh-CN.resx 、Resource1.en.resx、 Resource1.ja.resx

2 添加命名空间(反射、资源、进程、国际化)
????????? using System.Reflection;
????????? using System.Resources;
??????????using System.Threading;
????????? using System.Globalization;

3?获取资源文件管理器
??????????? ResourceManager rm = new ResourceManager("winGetMsgFromResource.Resource1", Assembly.GetExecutingAssembly());
????????????资源文件名的构成为?[项目命名空间].[资源文件主题名]

4?获取当前进程的语言区域
??????????? CultureInfo ci = Thread.CurrentThread.CurrentCulture;

5 从资源文件中按项目名获取值
??????????? 假定MsgId是资源文件中的项目名
????????????rm.GetString(MsgId, ci);

6 前台国际化环境的选择(改变当前程序进程中的区域信息的方式达到改变)
??????????? Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("zh-CN");
??????????? Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-us");
??????????? Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("ja-JP");


实例:一个简单的资源文件访问类

资源文件在国际化中的施用(WinForm)using?System;
资源文件在国际化中的施用(WinForm)using?System.Collections.Generic;
资源文件在国际化中的施用(WinForm)using?System.Text;
资源文件在国际化中的施用(WinForm)using?System.Reflection;
资源文件在国际化中的施用(WinForm)using?System.Resources;
资源文件在国际化中的施用(WinForm)using?System.Threading;
资源文件在国际化中的施用(WinForm)using?System.Globalization;
资源文件在国际化中的施用(WinForm)
资源文件在国际化中的施用(WinForm)namespace?winGetMsgFromResource
资源文件在国际化中的施用(WinForm){
资源文件在国际化中的施用(WinForm)????class?clsMsg
资源文件在国际化中的施用(WinForm)????{
资源文件在国际化中的施用(WinForm)????????public?static?string?getMsg(string?MsgId)
资源文件在国际化中的施用(WinForm)????????{
资源文件在国际化中的施用(WinForm)????????????ResourceManager?rm?=?new?ResourceManager("winGetMsgFromResource.Resource1",?Assembly.GetExecutingAssembly());
资源文件在国际化中的施用(WinForm)????????????CultureInfo?ci?=?Thread.CurrentThread.CurrentCulture;
资源文件在国际化中的施用(WinForm)????????????return?rm.GetString(MsgId,?ci);
资源文件在国际化中的施用(WinForm)????????}
资源文件在国际化中的施用(WinForm)
资源文件在国际化中的施用(WinForm)????????public?static?string?getMsg1()
资源文件在国际化中的施用(WinForm)????????{
资源文件在国际化中的施用(WinForm)????????????string?strOut?=?string.Empty;
资源文件在国际化中的施用(WinForm)????????????CultureInfo?ci?=?Thread.CurrentThread.CurrentCulture;
资源文件在国际化中的施用(WinForm)????????????switch?(ci.ToString())
资源文件在国际化中的施用(WinForm)????????????{?
资源文件在国际化中的施用(WinForm)????????????????case?"zh-CN":
资源文件在国际化中的施用(WinForm)????????????????????strOut?=?"当前?文化区域?为?中文";
资源文件在国际化中的施用(WinForm)????????????????????break;
资源文件在国际化中的施用(WinForm)????????????????case?"en-US":
资源文件在国际化中的施用(WinForm)????????????????????strOut?=?"Current?Culture?is?ENGLISH";
资源文件在国际化中的施用(WinForm)????????????????????break;
资源文件在国际化中的施用(WinForm)????????????????case?"ja-JP":
资源文件在国际化中的施用(WinForm)????????????????????strOut?=?"在の言は?日本です";
资源文件在国际化中的施用(WinForm)????????????????????break;
资源文件在国际化中的施用(WinForm)????????????????default:
资源文件在国际化中的施用(WinForm)????????????????????strOut?=?"others";
资源文件在国际化中的施用(WinForm)????????????????????break;
资源文件在国际化中的施用(WinForm)????????????}
资源文件在国际化中的施用(WinForm)????????????return?strOut;
资源文件在国际化中的施用(WinForm)????????}
资源文件在国际化中的施用(WinForm)????}
资源文件在国际化中的施用(WinForm)}

示例工程

winGetMsgFromResource.rar

?

读书人网 >编程

热点推荐