使用与OS语言不同的默认语言时,本地化不正确

时间:2011-11-17 11:25:52

标签: silverlight silverlight-4.0 localization cultureinfo

我遇到了本地化问题 - 它有时会检索到错误的值。这是我的情况:

在每个集会中,我将NeutralResourcesLanguage设置为en-US 可用资源列表是:default(english)fr,de。

所以我有英文操作系统,我选择了任何语言 - 一切都很好( UICulture 设置为en,fr或de和文化分别是en-US,de-DE或fr-FR。

但是当我有德语操作系统并选择英语时( UICulture 是en并且文化是en-US) - 有些字符串在德语。

此外,如果我离开Thread.CurrentThread.CurrentUICulture ==“de”和Thread.CurrentThread.CurrentCulture =“en-US”,那么一些文本将是英文版。

对此有何解释和解决方法?

2 个答案:

答案 0 :(得分:0)

您需要使用正确的语言代码,例如enfrde

如果没有必要,请不要使用专门的语言代码,因此如果您只有一个法语翻译,请使用fr

只有在必要时才应使用更专业的。

更新:在Windows上,您无法完全控制从操作系统获取的消息的语言。通常它们将使用您当前的线程区域设置,但有时它们将使用操作系统默认语言,您无法对其进行任何操作。只记录用户的行为。

答案 1 :(得分:0)

我发现了问题 - 我使用的是DependencyProperty,默认值为 PropertyMetadata(Resources.Text)。由于DP是静态的,因此在ApplicationStartup处理程序中应用实际本地化设置之前,系统语言正在初始化。