7

我想在我的项目中使用本地化,所以我使用“.resx”文件。

我有两个文件“StringRes.resx”和“StringRes.fr.resx”。如您所料,我希望我的应用程序的所有消息都根据用户的 CultureInfo 进行更改。

但是当我这样做时:

public MainWindow()
{
     Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("fr");
     InitializeComponent();
}

当我这样做时,它不会改变任何东西:

Console.WriteLine(StringRes.FirstName);

实际上,显示的始终是 StringRes 中的字符串,而不是 StringRes.fr 中的字符串

两者都在同一个命名空间中。

感谢您的任何帮助。

4

1 回答 1

15

我创建了自己的测试项目,并将"fr-FR"其用作文化标签。测试项目可以在我的 skydrive上找到。

完美运行。

文化测试

简而言之:

我将项目属性中的文化设置为 en-US,因为这就是我想要的Resource.resx

然后我创建了Resource.resx,Resource.fr-FR.resxResource.nl-NL.resx.

我用TestData绳子填满了它们。并创建了一个带有 3 个按钮的窗口,这些按钮与它们挂钩。在我创建文本块的按钮旁边,文本块绑定到文本字符串字段。

在按钮事件中,我改变了文化和Text领域。然后你就可以看到变化发生了。


您首先需要在您Resource.resx需要创建的同一文件夹中创建您的 then Resource.fr-FR.resx。Resource.resx 将获得一个代码隐藏文件,所有培养的资源文件都不应该。如果您的 Resource.fr-FR.resx 确实有一个文化文件,那么您做错了什么,最好删除该资源文件并重新创建它,这样它就会丢失它的代码隐藏。

于 2013-08-21T08:05:57.030 回答