资源文件本地化使用

资源文件是解决本地化的有效途径之一。

建立一个空白的项目。

首先建立一个FORM。摆上两个BUTTON。

第一个BUTTON用来切换语言。第二个BUTTON用来显示对应的语言资源。

查看FORM的属性。在杂项里面,有一个Language。我们首先选择中文(简体)。然后编辑窗体的text为“这是一个例子”。button1的text为“切换语言”,button2的text为“得到信息”。保存。然后选择英语(美国),编辑窗体的text为“This is a Example”,button1.Text为“Switch Language”,button2.Text为“Get Info”。保存。

这些信息保存在bin/debug下面的zh-CH和en-US的文件夹下面。

 

然后我们切换回代码页面,请大家重点看看InitializeComponent()这个方法。这个方法和普通的(没有设置语言属性)的窗体就不一样了。看下面的代码,它尝试从资源文件里面来读取窗体有关的信息。

System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(Form1));

...................................

this.button2.Text = resources.GetString("button2.Text");
this.button2.TextAlign = ((System.Drawing.ContentAlignment)(resources.GetObject("button2.TextAlign")));
this.button2.Visible = ((bool)(resources.GetObject("button2.Visible")));

...................................

 我们编写button1的click事件,如下:

if(System.Threading.Thread.CurrentThread.CurrentUICulture.Name == "en-US")
{
System.Threading.Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.CreateSpecificCulture("zh-CN");?
}
else
{
System.Threading.Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US");?
}

//这段代码,大家可以从InitializeComponent方法里面拷贝出来。用来重新设置窗体的信息。

System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(Form1));

this.button1.Location = ((System.Drawing.Point)(resources.GetObject("button1.Location")));
this.button1.Size = ((System.Drawing.Size)(resources.GetObject("button1.Size")));
this.button1.Text = resources.GetString("button1.Text");
this.button1.TextAlign = ((System.Drawing.ContentAlignment)(resources.GetObject("button1.TextAlign")));

this.button2.Location = ((System.Drawing.Point)(resources.GetObject("button2.Location")));
this.button2.Size = ((System.Drawing.Size)(resources.GetObject("button2.Size")));
this.button2.TabIndex = ((int)(resources.GetObject("button2.TabIndex")));
this.button2.Text = resources.GetString("button2.Text");
this.button2.TextAlign = ((System.Drawing.ContentAlignment)(resources.GetObject("button2.TextAlign")));

this.Text = resources.GetString("$this.Text");

 

然后给项目添加两个资源文件,分别为MyResource.resx和MyResource.en-US.resx。

双击MyResource.en-US.resx,添加一个内容。name栏里面添加ONE,value里面添加ONE.

 同样给MyResource.resx添加一项,name里面也是ONE,value里面是"一".

 然后编写button2的click事件。

如下:

 

ResourceManager rm = new ResourceManager("ResourceMgr.MyResource",this.GetType().Assembly);
MessageBox.Show(rm.GetString("ONE"));

 

OK.运行起来这个FORM,点击按钮查看效果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值