我有一个可本地化的c#应用程序。有一个文件Localization.resx
和一个文件Localization.de.resx
。Localization.resx
包含不变的语言-它是英语。
用户应该能够选择他喜欢的语言。我找到了这个问题的第一个答案,获得所有可用语言的编程方法(在卫星程序集中),以确定哪些文化是可用的。我看到有de
和InvariantCulture
可用。
但我不能提供InvariantCulture。用户不会知道这是什么。相反,我应该提供en
。
我不能将Localization.resx
重命名为Localization.en.resx
,因为创建保存资源的类需要这个文件。
我可以将Localization.resx
复制到Localization.en.resx
,但是我必须始终保持这些文件的一致性,并且还需要从可用的区域性中删除InvariantCulture
。
我可以编写一个将InvariantCulture
可视化为en
的转换器。但我认为这是一次丑恶的攻击。
有什么帮助吗?
发布于 2016-03-13 12:04:18
您可以使用NeutralResourcesLanguageAttribute程序集属性来设置中立语言。
[assembly: NeutralResourcesLanguageAttribute("en-US", UltimateResourceFallbackLocation.Satellite)]
如果在一个资源中找不到密钥,这也使它成为其他卫星的“后盾”(如果您请求一个没有在resource.en-US.resx
中定义的密钥,它将在resource.en.resx
中搜索,最后在resource.resx
中搜索)
我不知道您是如何列出语言名称的,但是如果这仍然给了InvariantCulture
,您可以有一个空的Localization.en.resx
,使用这个方法它将在Localization.resx
中找到所有缺少的资源,所以不需要同步它们。
发布于 2016-03-11 22:18:07
在UI中,我们让用户知道什么是“默认”应用程序有英语本地化。并提议通过显示除不变之外的所有可用选项来更改它。而且,编写一个将InvariantCulture可视化为en的转换器也不是一个丑陋的黑客。
https://stackoverflow.com/questions/35896871
复制相似问题