【问题标题】:Localization: general culture vs. specific culture本地化:一般文化与特定文化
【发布时间】:2023-03-20 07:57:01
【问题描述】:

我创建了一个简单的 Windows 商店应用程序,其中包含 3 种语言:英语、德语和俄语。我没有使用完整的文化名称,如 ru-RU、en-US 或 de-DE,但我只是指定语言:ru、en、de。所以我有以下资源文件结构:

prj-folder
\ strings
  \ de
    \ Resource.resw
  \ en
    \ Resource.resw
  \ ru
    \ Resource.resw

在清单中,我将默认文化设置为“en”。我的开发工作站具有美国文化,因此如果运行该应用程序,所有内容都是英文的(正如预期的那样,顺便说一句)。 为了测试其他文化,我在App.ctor 中添加了以下代码:

public App()
{
    InitializeComponent();

    var culture = new CultureInfo("ru-RU");
    Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = culture.Name;
    CultureInfo.DefaultThreadCurrentCulture = culture;
    CultureInfo.DefaultThreadCurrentUICulture = culture;

    // ...
}

效果很好。我可以看到俄语或德语的所有内容。

我已经发布了我的应用程序 - 今天它已出现在商店中。在开发工作站(en-US)上,一切都按预期工作。但!在带有德语(de-DE 文化)的工作站上 - 一切都是英语:Windows Store 中的描述和应用程序中的 UI。我不知道我的本地化出了什么问题,也不知道为什么一切都是英文的。

注意:这可能很重要。我在应用程序的更新中添加了德语和俄语。第一个版本只有一种语言 - 英语,默认文化是 en-US。

更新: 似乎问题与使用德语 Windows 8 的设备有关。大多数应用程序都在 de-DE 文化下运行,但我的应用程序在 en-US 文化下运行。我会试着找出我们的原因。

【问题讨论】:

  • 等待更新发布到市场,您将拥有自己的语言。
  • 嗯。您可以通过从商店下载自己的应用来重现该行为吗?
  • @linkerro 更新当然已经在商店里了
  • @Vlad 是的,我在德语 Windows 8 上进行了更新 - 英语;然后我卸载了应用程序并再次安装 - 再次英语
  • @ie.: 那么你可以附加一个调试器并查看线程的 UI Culture 是什么?

标签: c# localization windows-8 windows-runtime windows-store


【解决方案1】:

您的清单是否列出了所有三种语言?应用程序使用的语言集被过滤为清单中存在的语言,因此,如果您的清单仅包含“en”,那么无论用户设置如何,您都会得到。

.NET 文化和 UI 文化对 Windows 应用商店应用的本地化没有影响。感兴趣的设置是:

Windows.Globalization.ApplicationLanguages.Languages 那就是资源加载器使用的列表,它的构造来自:

1) Windows.System.UserProfile.GlobalizationPreferences.Languages 以语言设置的用户语言配置文件

2) Windows.Globalization.ApplicationLanguages.ManifestLanguages。应用程序清单中定义的语言。

3) Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride。可选的特定于应用程序的持久主要语言。

稍微简化一下,ApplicationLanguages.Languages 是 GlobalizationLPreferences.Languages 与 ManifestLanguages 的交集。如果没有交集,则清单语言获胜。主要语言覆盖总是预先添加到列表中,而不是根据清单进行过滤。

如果其他现代应用程序显示德语,最可能的原因是您的清单中没有德语。另一种可能性是 PrimaryLanguageOverride 在某种程度上卡在了英语上。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多