不变的 .resx 文件
Invariant .resx file
我有一个可本地化的 C# 应用程序。
有一个文件 Localization.resx
和一个文件 Localization.de.resx
。
Localization.resx
包含不变的语言 - 它是英语。
用户应该能够select他的首选语言。我找到了这个问题的第一个答案 Programmatic way to get all the available languages (in satellite assemblies) 来确定哪些文化是可用的。我看到有 de
和 InvariantCulture
可用。
但我无法提供 InvariantCulture。用户不会知道这是什么。相反,我应该提供 en
.
我无法将 Localization.resx
重命名为 Localization.en.resx
,因为创建包含资源的 Class 需要此文件。
我可以将 Localization.resx
复制到 Localization.en.resx
,但是我必须始终保持这些文件的一致性,并且还需要从可用区域性中删除 InvariantCulture
。
我可以编写一个转换器,将 InvariantCulture
可视化为 en
。但我认为这是一个丑陋的 hack。
有什么帮助吗?
在 UI 中,我们让用户知道哪些 "By Default" 应用程序有英文本地化。并提供通过显示除不变量之外的所有可用选项来更改它。编写一个将 InvariantCulture 可视化为 en.
的转换器也不会是一个丑陋的 hack
您可以使用 NeutralResourcesLanguageAttribute 程序集属性来设置中性语言。
[assembly: NeutralResourcesLanguageAttribute("en-US", UltimateResourceFallbackLocation.Satellite)]
如果在一个资源中找不到密钥(如果您要求的密钥未在 resource.en-US.resx
中定义,它将在 "fallback" 中搜索 "fallback" =12=] 最后在 resource.resx
)
我不确定你是如何列出语言名称的,但如果这仍然给出 InvariantCulture
,你可以有一个空的 Localization.en.resx
,使用这种方法它会找到所有Localization.resx
中缺少资源,因此无需同步它们。
我有一个可本地化的 C# 应用程序。
有一个文件 Localization.resx
和一个文件 Localization.de.resx
。
Localization.resx
包含不变的语言 - 它是英语。
用户应该能够select他的首选语言。我找到了这个问题的第一个答案 Programmatic way to get all the available languages (in satellite assemblies) 来确定哪些文化是可用的。我看到有 de
和 InvariantCulture
可用。
但我无法提供 InvariantCulture。用户不会知道这是什么。相反,我应该提供 en
.
我无法将 Localization.resx
重命名为 Localization.en.resx
,因为创建包含资源的 Class 需要此文件。
我可以将 Localization.resx
复制到 Localization.en.resx
,但是我必须始终保持这些文件的一致性,并且还需要从可用区域性中删除 InvariantCulture
。
我可以编写一个转换器,将 InvariantCulture
可视化为 en
。但我认为这是一个丑陋的 hack。
有什么帮助吗?
在 UI 中,我们让用户知道哪些 "By Default" 应用程序有英文本地化。并提供通过显示除不变量之外的所有可用选项来更改它。编写一个将 InvariantCulture 可视化为 en.
的转换器也不会是一个丑陋的 hack您可以使用 NeutralResourcesLanguageAttribute 程序集属性来设置中性语言。
[assembly: NeutralResourcesLanguageAttribute("en-US", UltimateResourceFallbackLocation.Satellite)]
如果在一个资源中找不到密钥(如果您要求的密钥未在 resource.en-US.resx
中定义,它将在 "fallback" 中搜索 "fallback" =12=] 最后在 resource.resx
)
我不确定你是如何列出语言名称的,但如果这仍然给出 InvariantCulture
,你可以有一个空的 Localization.en.resx
,使用这种方法它会找到所有Localization.resx
中缺少资源,因此无需同步它们。