C#创建多语言设置

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

当您添加例如德语时,您将拥有以下文件: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()); } 

我找到了答案

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

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

谢谢,

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

 Thread.CurrentThread.CurrentUICulture = CultureInfo.CurrentCulture; 

这是一篇简短的文章,讨论了如何使这项工作的一些选项,以及在运行时选择语言环境的选项。


评论后编辑:

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

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

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

这是关于此主题的另一个很好的信息来源 。