C#创建多语言设置

时间:2009-04-28 16:53:26

标签: c# installation multilingual

我使用下面的简短文章添加了多语言。

当您添加例如德语时,您将拥有以下文件: formMain.resx formMain.de-DE.resx formMain.Designer.cs formMain.cs

在第一个文件中,您将拥有中性语言的资源,如字符串,图像,..

所以现在你需要为代码中使用的字符串添加资源。添加一个新资源文件并将其命名为formMain.Strings.resx 然后我将为每个应该翻译的字符串输入名称,值对。当您添加资源文件时,它会自动输入,因为另一个名为formMain.Strings.Designer.cs的文件会在resx设计器的每个关闭时自动重新生成。

添加名为formMain.Strings.de-DE.resx的其他资源。从以前的资源添加相同的Name键,只需使用相应的德语单词更改Value。现在要从源访问创建的资源,就像这样。

MessageBox.Show(formMain_Strings.SameStringName);

但是,我已将我改为泰语。当我在VS中运行我的应用程序时,一切正常。

但是,只要我在客户端计算机上添加安装项目并安装它就不会将语言更改为泰语,只保留默认语言。

所以我已经将资源文件和th-TH dll添加到项目设置中。我仍然遇到同样的问题。

Packaging file 'Lang.Strings.resx'...
Packaging file 'MultiLanguage.resources.dll'...
Packaging file 'MultiLanguage.exe'...
Packaging file 'Lang.Strings.th-TH.resx'...

在visual studio中运行时一切正常。有没有什么我需要做的就是让它在安装后运行。我保留的每个文件的所有属性都是默认值。

非常感谢,

======

static void Main()
    {
        System.Threading.Thread.CurrentThread.CurrentUICulture = 
new System.Globalization.CultureInfo("th-TH");

        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }

2 个答案:

答案 0 :(得分:13)

我找到了答案

单击解决方案资源管理器中的“安装项目”,然后单击“添加\项目输出\”。从对话框中选择要包含本地化(卫星)程序集的项目,然后选择“本地化资源”。

安装到我安装的文件夹后,我有th-TH文件夹,其中包含附属程序集。

谢谢,

答案 1 :(得分:1)

尝试在应用启动时添加(如果不存在):

Thread.CurrentThread.CurrentUICulture = CultureInfo.CurrentCulture;

以下是short article讨论如何使其工作的一些选项,以及在运行时选择语言环境的选项。


评论后编辑:

确保您的附属装配在适当的位置,并正确构建。从那篇文章中我引用了:

“当.NET运行时启动应用程序时,它会查找可能的附属程序集文件。附属程序集文件是仅限资源的程序集文件,其扩展名为.resources.dll而不是.exe ir .dll(如果主程序集是一个库)。卫星组件文件总是位于applciation主目录的语言特定子目录。如果应用程序文件是Converter.exe,那么日本卫星组件文件是ja \ Converter.resources.dll。“

您应该在这里查看一些内容。检查程序集的名称。另外,请确保它位于正确的位置。在您的情况下,它应该位于您的可执行文件下具有适当名称的th-TH子目录中。如果它在那里,它应该被找到并正确使用。

这是关于此主题的another good source of information