在resx文件中捕获缺少的本地资源

时间:2009-10-12 09:54:55

标签: .net localization resources

我有许多不同语言的资源文件。

让我们假设我们支持3种语言(en,de,fr),并拥有此文件:

common.resx common.de.resx common.fr.resx

我想检测例如在de中请求资源但是缺少资源时发生的事件,因此恢复为默认语言。有没有办法抓住这个? (所以我可以记录它,然后添加缺少的资源)。

由于

4 个答案:

答案 0 :(得分:5)

如果您想捕捉差异,请使用RESX Synchronizer。它是一个开源应用程序,可以将主要resx与本地化的所有差异同步(它在本地化资源中添加和/或删除键)。

您可以按如下方式使用它将所有更改从common.resx复制到common.de.resx:

resxsync /v common.resx common.de.resx

/ v选项列出所有更改,这些更改都是添加到de resx或从de resx中删除的所有键。

答案 1 :(得分:2)

假设所有资源文件更改都在开发中开始并进入生产阶段,这似乎是某种形式的静态分析的工作。

我使用Zeta Resource Editor因为它突出显示缺少翻译的区域以及占位符(例如 {0} )。

答案 2 :(得分:1)

Resharper有这个很棒的功能http://www.jetbrains.com/resharper/features/internationalization.html#Code_Inspections_for_Resource_Files

  

只要特定资源值不是,ReSharper就会发出警告   在特定文化中被覆盖

答案 3 :(得分:0)

现有的资源阅读API中没有任何内容可以在外部公开回退。但是,System.Resources.ResourceManager没有被密封,因此当需要回退时,没有什么可以阻止您将其子类化以引发事件。