本地化资源.NET - 如何使它们保持同步?

时间:2011-07-08 04:26:18

标签: c# .net silverlight resources localization

当我们遵循本地化指南时,我们会至少使用几个资源文件。

Resource.resxResource.CI.resx这是一个特定的CultureInfo资源。 假设我们在Resource.resx中添加了一百个字符串对,并希望将这些键转换为另一个资源。我们现在可以复制粘贴它们并翻译它们,这可能是第一次。

然而,在我们翻译字符串之后,很难保持文件同步 - 它会自动重新排序字符串,而我目前还不明白确定每个字符串是否已本地化的假设方式。

由于资源字符串应该是彼此链接的,并且为了确保正确构建附属程序集而执行额外的工作,我希望有一个类似'确保每个资源字符串都存在于本地化资源文件中的函数'但我担心一个人失踪......

8 个答案:

答案 0 :(得分:6)

RESX Synchroniser可能会为您提供所需的内容

  

编辑.NET资源文件时   在Visual Studio中,手动和   使用“生成本地资源”   命令,IDE仅更新   文化不变的资源:如果你   有一个名为的资源文件   Messages.aspx,其他文件   语言,比如Messages.it-IT.resx,   没有更新,你必须这样做   手动。 RESX Synchronizer会   帮助您保留资源文件   同步,添加新密钥   本地化文件,并删除   删除的。评论被保留   在此过程中。

答案 1 :(得分:4)

我刚刚发现http://zetaresourceeditor.codeplex.com/似乎与其他人的想法相似

答案 2 :(得分:2)

可能UnitTest可以帮到你吗?你知道,每个控件应该有哪个文本,一旦你创建它们,只需添加新的字符串列表并比较值。经过一番努力,你可以测试你的本地化工作。

答案 3 :(得分:1)

我建议您使用该Winform的Resx文件以编程方式创建特定于文化的资源文件。 您可以创建一个可以不时运行的小应用程序。

为每个文化创建XML类型的文件,例如fr.XML,用项目中所有字符串的Union填充它。并在那里提供翻译,例如法语文件可能如下所示。

< wordTranslation>
< Word>Hello< /Word>
< Translation>Bonjour< /Translation>
< /wordTranslation>

创建一个哈希表或一些数据结构,最好充当每种文化的字典,并用文化特定的XMl文件(如frDictionary)填充数据。

对于项目中的每个Resx文件,例如wind1.resx,创建一个特定于文化的文件,例如wind1.fr.resx。 从wind1.resx中读取单词,从frDictionayry中找到单词的翻译。 把它写到wind1.fr.resx。

您可以不断更新XML文件中的翻译。 所以这是一次性的努力。 通过这种方式,您可以保持同步并轻松维护。

答案 4 :(得分:1)

我知道这已经得到了传统的答案,但我还想提出一些完全原创的东西,我们尝试(并成功)为Silverlight进行更有效的本地化:

Localisation of Silverlight projects after completion

Resx是如此“上个世纪”

答案 5 :(得分:1)

这个讨论有点老了,但仍然很有趣。看看ResXManager

答案 6 :(得分:0)

您的意思是同步这些文件之间的翻译?使用http://www.getlocalization.com并将两者作为主文件上传,翻译完成后,翻译将填充到您的所有文件中。

答案 7 :(得分:0)

我想你可以试试Amanuens。它是由RESX Synchronizer的同一个作者开发的,除了帮助保持资源文件同步(如果你设置它,甚至自动进入你的存储库),可以用来让你的翻译人员访问要翻译的字符串非常强大和易于使用的网页编辑器。