【发布时间】:2018-06-25 19:06:37
【问题描述】:
我正在尝试修改现有的 WPF 应用程序以进行本地化。我的限制之一是所有资源(包括默认的 en-US 后备资源)都必须是卫星资源。它们都不能嵌入到主程序集中。
通过对 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 告诉我更多关于它真正挂断的信息?
【问题讨论】:
标签: c# localization