您的位置:首页 > 编程语言 > C#

c#使用资源文件实现多语言应用程序

2012-05-02 07:52 627 查看
实现多语言的方法可能有使用资源文件,或者配置xml两种方法吧。没时间研究过多,学习了一下使用资源文件的方法,成功了。在.net2.0 中,m$ 为我们提供了一种简单方便的方法, 使用资源文件。

  实现多语言的方法可能有使用资源文件,或者配置xml两种方法吧。

  没时间研究过多,学习了一下使用资源文件的方法,成功了。

  在.net2.0 中,m$ 为我们提供了一种简单方便的方法,使用资源文件

  1.新建一个 Winform 应用程序, 新建一 Form ,名为 Form1,添加一个菜单一个按钮。如图





  2. 设置 Form1 的 Localizable 属性为 true, 设置该属性后,.net 将根据不同的语言,为应用程序生成不同的资源文件

  3.设置各个控件的文本(系统默认语言下)

  4.更改 Form1 的 Language 属性为想要支持的另一种语言,此例中我们选用 English

  5.重新设置各个控件的文本

  注:此时.net 将为 Form1 生成另一个资源文件,在本例中名为 Form1.en.resx

  当你需要添加新的控件时,需要切换到default语言。

  6. 如果有其它的语言要设置,请重复第4,第5步

  7.编写代码 (需要消息框多语言支持的话,就用form做消息框吧。同时也做成多语言支持。)

  using System;

  using System.Collections.Generic;

  using System.ComponentModel;

  using System.Data;

  using System.Drawing;

  using System.Text;

  using System.Windows.Forms;

  using System.Threading;

  using System.Globalization;

  namespace GlobalResource

  {

  public partial class Form1 : Form

  {

  public Form1()

  {

  InitializeComponent();

  }

  private void button1_Click(object sender, EventArgs e)

  {

  Msg msg = new Msg();

  msg.ShowDialog();

  }

  private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)

  {

  Application.Exit();

  }

  private void 中文ToolStripMenuItem_Click(object sender, EventArgs e)

  {

  //更改当前线程的 CultureInfo

  //zh-CN 为中文,更多的关于 Culture 的字符串请查 MSDN

  Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("zh-CN");

  //对当前窗体应用更改后的资源

  ApplyResource();

  }

  private void ToolStripMenuItem_Click(object sender, EventArgs e)

  {

  //更改当前线程的 CultureInfo

  //en 为英文,更多的关于 Culture 的字符串请查 MSDN

  Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en");

  //对当前窗体应用更改后的资源

  ApplyResource();

  }

  /// <summary>

  /// 应用资源

  /// ApplyResources 的第一个参数为要设置的控件

  ///                  第二个参数为在资源文件中的ID,默认为控件的名称

  /// </summary>

  private void ApplyResource()

  {

  System.ComponentModel.ComponentResourceManager res = new ComponentResourceManager(typeof(Form1));

  foreach (Control ctl in Controls)

  {

  res.ApplyResources(ctl, ctl.Name);

  }

  //菜单

  foreach (ToolStripMenuItem item in this.menuStrip1.Items)

  {

  res.ApplyResources(item, item.Name);

  foreach (ToolStripMenuItem subItem in item.DropDownItems)

  {

  res.ApplyResources(subItem, subItem.Name);

  }

  }

  //Caption

  res.ApplyResources(this, "$this");

  }

  }

  }

  判断操作系统语言的方法:

  private void Form1_Load(object sender, EventArgs e)

  {

  //不需要判断操作系统的语言,使用资源文件会自动选择。

  //if (System.Globalization.CultureInfo.InstalledUICulture.Name == "zh-CN")

  //{

  //    Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("zh-CN");

  //    //对当前窗体应用更改后的资源

  //    ApplyResource();

  //}

  //else

  //{

  //    Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en");

  //    //对当前窗体应用更改后的资源

  //    ApplyResource();

  //}

  }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息