ResourceManager没有选择正确的语言

时间:2012-10-23 11:22:13

标签: c# resourcemanager

使用本地化和语言属性我已经翻译了我的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")));

有什么想法吗?

1 个答案:

答案 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的更多信息。

相关问题