使用本地化和语言属性我已经翻译了我的Form1。
在Form1_Load事件中,我想设置标签,按钮等的文本......
private void Form1_Load(object sender, EventArgs e)
{
SetLanguage();
}
SetLanguage方法:
private void SetLanguage()
{
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("de");
System.Resources.ResourceManager rm = new System.Resources.ResourceManager(typeof(Form1));
button1.Text = rm.GetString("button1.Text");
linkLabel1.Text = rm.GetString("linkLabel1.Text");
checkBox1.Text = rm.GetString("checkBox1.Text");
}
但是它不起作用,它总是选择“默认/后备”英文字符串(但是设置了de CultureInfo)。我完全不知道什么是错的...我在新的示例应用程序中使用了相同的代码,它在这个小样本应用程序中工作。但在我的实际应用程序中,它不起作用。
同样明确告诉ressourcemanager使用什么文化会返回英文字符串而不是德语:
MessageBox.Show(rm.GetString("button1.Text", new System.Globalization.CultureInfo("de")));
有什么想法吗?
答案 0 :(得分:0)
这一节很重要。当我们将表单的localizable设置为true并构建应用程序时,Visual Studio .NET会创建特定于表单的Language属性中指定的文化的资源。 Visual Studio .NET使用resgen.exe创建资源文件。我们还可以使用以下语法创建资源:
resgen mytext.en-us.txt mytext.en-us.resources
resgen mytext.en-us.resources mytext.en-us.resx
//此命令读取二进制资源文件mytext.en-us.resources和 //写一个名为mytext.en-us.resx的基于XML的输出文件 现在创建了资源,但我们需要将它们链接到应用程序,因此这是由Visual Studio .NET使用AL.exe(程序集链接器)完成的。我们也可以通过这样做手动完成:
al
/t:lib
/embed:mytext.en-us.resx
/culture:en-us
/out:Myapplication.resources.dll
您可以在MSDN文档中找到有关resgen.exe和al.exe的更多信息。