我遇到了本地化问题 - 它有时会检索到错误的值。这是我的情况:
在每个集会中,我将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”,那么一些文本将是英文版。
对此有何解释和解决方法?
答案 0 :(得分:0)
您需要使用正确的语言代码,例如en
,fr
和de
。
如果没有必要,请不要使用专门的语言代码,因此如果您只有一个法语翻译,请使用fr
。
只有在必要时才应使用更专业的。
更新:在Windows上,您无法完全控制从操作系统获取的消息的语言。通常它们将使用您当前的线程区域设置,但有时它们将使用操作系统默认语言,您无法对其进行任何操作。只记录用户的行为。
答案 1 :(得分:0)
我发现了问题 - 我使用的是DependencyProperty,默认值为 PropertyMetadata(Resources.Text)。由于DP是静态的,因此在ApplicationStartup处理程序中应用实际本地化设置之前,系统语言正在初始化。