c# 多语言设置
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# 多语言设置相关的知识,希望对你有一定的参考价值。
设置Form中localiziable 为true 设置语言为所需语言
主要为:
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("zh-CN");
//对当前窗体应用更改后的资源
ApplyResource();
在APplayResource();中首先引用所需改变的控件的容器窗体
System.ComponentModel.ComponentResourceManager res = new ComponentResourceManager(typeof(Form1));
然后遍历容器中控件并应用资源对自定义控件,其窗体一般为UserControl* 在对自定义资源改变时需要重新引用资源文件
System.ComponentModel.ComponentResourceManager res = new ComponentResourceManager(typeof(userControl*));
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 退出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();
}
///
/// 应用资源
/// ApplyResources 的第一个参数为要设置的控件
/// 第二个参数为在资源文件中的ID,默认为控件的名称
///
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();
}
}
附件列表
以上是关于c# 多语言设置的主要内容,如果未能解决你的问题,请参考以下文章