【发布时间】:2016-06-20 16:59:36
【问题描述】:
有相当大的项目使用资源进行国际化(遵循本指南:ASP.NET MVC 2 Localization complete guide,使用数据属性等),我们需要翻译资源文件。在项目开始时,我选择了拥有大量小资源文件的方法 - 对于每个视图、视图模型、控制器......所以我最终拥有数百个资源。在翻译过程中(由我们的合作伙伴使用ResXManager tool 完成,我们在识别字符串的上下文时遇到了麻烦(它在哪里显示,以找出正确的翻译形式以便在显示时有意义)。
所以我被要求对不显示本地化值而是键(或字符串名称)的应用程序进行突变。例如。在资源TBL_NAME 中使用字符串@ResX.TBL_NAME 并翻译成英文作为“名称”,我想在这个特殊的突变中将它显示为“TBL_NAME”,所以翻译者可以看到上下文 - 确切的位置使用此字符串。
最好的办法是,如果这不是应用程序的特殊构建,而是应用程序的另一种可供翻译人员使用的“语言”,那么他可以在英语和这种“未本地化”的语言之间切换。
我正在寻找一些简单的想法来做这件事。到目前为止,我正在考虑这些方法:
-
Override
ResourceManager.GetString- 不能使用,因为我们使用生成的 Designer 类来大量访问字符串,到目前为止我还没有找到更改创建的 ResourceManager (see this answer) 的方法。我错过了什么吗? -
为一些未使用的语言创建资源,其中将包含对
string name/translated value和TBL_NAME/TBL_NAME- 可行,但由于我们拥有数百个资源,因此非常耗费精力。此外,添加新资源将要求我们记住,我们还需要添加此未使用的语言资源将完全相同的字符串名称。将单个字符串添加到应用程序时,您还必须做两倍的工作。
目前,在我看来,使用资源和当前的方法不可能解决这个任务,所以我决定在这里提出这个问题(我知道这是讨论而不是问题),希望,有人会给我一些关于解决此问题的其他方法的提示。
【问题讨论】:
-
这就是我不喜欢资源文件的原因。最终可能会产生各种难以或不可能模拟的对它们的依赖。这不是很有帮助,因为您的资源文件已经构建,但我使用了this library,它采用了完全不同的方法。它甚至包括一个配置设置来返回资源键(即未翻译的文本)而不是用于调试目的的翻译。或者您可以在翻译中添加几个字符来测试对布局的影响。
-
您是在寻找可以编码的解决方案,还是考虑购买允许翻译人员在上下文中工作的软件?
-
@Jenszcz:两种方式都可以。如果您对翻译过程的好软件有一些提示,我将不胜感激。我在项目开始时一直在寻找一个,但没有找到任何合理的。
标签: c# asp.net-mvc localization internationalization resx