7

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

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

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

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

添加另一个名为 formMain.Strings.de-DE.resx 的资源。从以前的资源中添加相同的名称键,然后用对应的德语单词更改值。现在要从源访问创建的资源,它将是这样的。

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());
    }
4

2 回答 2

14

我找到了答案

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

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

谢谢,

于 2009-04-29T00:44:02.160 回答
1

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

Thread.CurrentThread.CurrentUICulture = CultureInfo.CurrentCulture;

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


评论后编辑:

确保您的卫星组件位于适当的位置,并正确构建。从我引用的那篇文章中:

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

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

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

于 2009-04-28T16:59:22.747 回答