3

我添加了新的 Rosource 文件 UserNotification.resx。然后我添加了两个本地化文件,分别命名为 UserNotification.hr-HR.resx 和 UserNotification.sl-SI.resx。(关注线程:如何在 C# 中使用本地化

然后我将 Windows 语言更改为“si”。如果我使用System.Globalization.CultureInfo.CurrentCulture.ToString()输出 si sl-SI打印当前文化

但是,我总是从 UserNotification.resx 中得到一个字符串。Seams 无法识别本地化资源文件。

4

1 回答 1

5

如果您使用多线程,.NET 本地化的问题是您需要为您生成的每个线程手动设置文化(以防它与 Windows 文化不同,以防用户可以选择所需的语言)。它不是从主线程继承的。

创建新线程后,在启动它之前,您应该将其文化设置为主线程的文化(通常使用窗口的默认文化)。

因此,系统显示出良好的 CurrentCulture。但是当前线程说什么?也许应用程序出于某种原因以不同的文化启动,这就是它加载默认资源文件的原因?无论如何,您没有理由不手动设置当前文化。大多数情况下,当您想为用户提供更改应用程序语言的选项时,您需要这样做。

于 2011-10-15T15:04:42.657 回答