繁体   English   中英

如何为C#中的本地化创建一个中性的后备卫星资源?

[英]How do I create a neutral fallback satellite resource for localization in C#.?

我正在尝试修改现有的WPF应用程序以进行本地化。 我的限制之一是所有资源(包括默认的美国后备资源)必须是卫星资源。 它们都不能嵌入到主部件中。

通过对Codeplex的阅读,我发现我需要做的就是在AssemblyInfo.cs文件中进行以下更改。

[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]

当我这样做时,我在应用程序启动时遇到一个异常:

找不到适合于指定区域性或中性区域性的任何资源。 确保在编译时已将“ XXX.YYY.ZZZ.g.en-US.resources”正确地嵌入或链接到程序集“ XXX.YYY.ZZZ”中,或者确保所需的所有附属程序集均已加载并完全签名。

如果我转回将后备资源(en-US)放入主程序集中,则一切正常。 根据我的阅读,如果您希望将后备资源作为卫星资源,则必须具有针对该语言环境的特定资源(即,必须具有Resources.en-US.resx)。 我对么?

在我看来,除了g(.g.en-US)之外,我似乎很讨厌。 这表示什么吗? 我的任何资源文件中都不存在g?

我在正确创建资源吗? 我首先创建一个通用的Resources.resx文件,并将所有字符串放入其中。 然后,我只需在Visual Studio中复制/粘贴并为每个特定的语言环境(ar,es-MX等)重命名。 然后,进行适当的翻译。

现在,我仅关注一个项目资源文件。 也许它挂在另一个没有资源文件的美国版的项目上了? 如果是这样,是否有任何方法可以使Visual Studio告诉我有关它真正挂在身上的更多信息?

简而言之,您对资源文件和需要构建的内容的理解似乎是正确的。

.g用于已编译的XAML文件,并自动为您构建。 这里没有什么特别的或不可思议的事情。

通常,后备资源嵌入在主程序集中。 如果您不这样做,则必须为要进行的每种文化创建一个卫星资源程序集,以及一个美国英语版本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM