1

我刚刚开始第一次编写多语言应用程序。我已经阅读了语言资源文件的概念,我想我明白了主要思想。我试图实现它,并立即发现一个问题:

我已将默认语言字符串输入到 resx 文件中,然后添加了另一个资源文件(例如:UIStrings.en.resx)。由于我的公司不在英国/其他英语国家,我们的申请主要是用我们的语言编写的。因此默认语言是我们的语言(斯洛文尼亚语)。

当我添加 .en.resx 文件并插入正确的翻译并运行程序时,它现在显示英文文本。我想那是因为

CultureInfo.CurrentUICulture = "en-US" 

尽管

CultureInfo.Currentculture = "sl-SI"

我认为这是因为我正在运行英文版的 Windows(尽管区域选项中的所有属性都正确设置为斯洛文尼亚语设置)。

如何使应用程序以用户语言而不是安装的 Windows 语言显示字符串?

4

1 回答 1

1

我发现这篇博客文章回答了我的问题。

如果其他人正在为此苦苦挣扎,请执行以下操作:

因此,如果您使用的是最常见的 Windows 版本(英文版),那么您就会陷入“en-US”文化;因此,您的应用程序将始终使用您的英语资源。为了缓解这种情况,您可以在应用程序启动时执行一些小技巧。您可能会误导您的应用程序查看 CurrentCulture 属性而不是 CurrentUICulture 属性。在应用程序启动时,您可以编写如下内容:

Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;

这样,您的应用程序将使用您的全球化设置而不是默认的 Windows 本地化设置。您的应用程序将本地化为您的全球化语言和文化。如果您更改控制面板中的区域设置,您的应用程序语言和文化将自动更改。

于 2010-02-24T09:39:43.733 回答