6

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

有任何想法吗?

4

1 回答 1

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

于 2013-10-20T19:11:47.547 回答