【问题标题】:C# Resources: display resource string names instead of localized valuesC# 资源:显示资源字符串名称而不是本地化值
【发布时间】:2016-06-20 16:59:36
【问题描述】:

有相当大的项目使用资源进行国际化(遵循本指南:ASP.NET MVC 2 Localization complete guide,使用数据属性等),我们需要翻译资源文件。在项目开始时,我选择了拥有大量小资源文件的方法 - 对于每个视图、视图模型、控制器......所以我最终拥有数百个资源。在翻译过程中(由我们的合作伙伴使用ResXManager tool 完成,我们在识别字符串的上下文时遇到了麻烦(它在哪里显示,以找出正确的翻译形式以便在显示时有意义)。

所以我被要求对不显示本地化值而是键(或字符串名称)的应用程序进行突变。例如。在资源TBL_NAME 中使用字符串@ResX.TBL_NAME 并翻译成英文作为“名称”,我想在这个特殊的突变中将它显示为“TBL_NAME”,所以翻译者可以看到上下文 - 确切的位置使用此字符串。 最好的办法是,如果这不是应用程序的特殊构建,而是应用程序的另一种可供翻译人员使用的“语言”,那么他可以在英语和这种“未本地化”的语言之间切换。

我正在寻找一些简单的想法来做这件事。到目前为止,我正在考虑这些方法:

  1. Override ResourceManager.GetString - 不能使用,因为我们使用生成的 Designer 类来大量访问字符串,到目前为止我还没有找到更改创建的 ResourceManager (see this answer) 的方法。我错过了什么吗?
  2. 为一些未使用的语言创建资源,其中将包含对 string name/translated valueTBL_NAME/TBL_NAME - 可行,但由于我们拥有数百个资源,因此非常耗费精力。此外,添加新资源将要求我们记住,我们还需要添加此未使用的语言资源将完全相同的字符串名称。将单个字符串添加到应用程序时,您还必须做两倍的工作。

目前,在我看来,使用资源和当前的方法不可能解决这个任务,所以我决定在这里提出这个问题(我知道这是讨论而不是问题),希望,有人会给我一些关于解决此问题的其他方法的提示。

【问题讨论】:

  • 这就是我不喜欢资源文件的原因。最终可能会产生各种难以或不可能模拟的对它们的依赖。这不是很有帮助,因为您的资源文件已经构建,但我使用了this library,它采用了完全不同的方法。它甚至包括一个配置设置来返回资源键(即未翻译的文本)而不是用于调试目的的翻译。或者您可以在翻译中添加几个字符来测试对布局的影响。
  • 您是在寻找可以编码的解决方案,还是考虑购买允许翻译人员在上下文中工作的软件?
  • @Jenszcz:两种方式都可以。如果您对翻译过程的好软件有一些提示,我将不胜感激。我在项目开始时一直在寻找一个,但没有找到任何合理的。

标签: c# asp.net-mvc localization internationalization resx


【解决方案1】:

我的首选方案是为翻译人员提供一个环境,让他们可以看到他们正在翻译的内容。 Rigi 需要一些设置(基本上你需要添加额外的 UI 语言),但是一旦你完成了翻译人员就可以在实时网站中工作 - 或者在测试实例中工作,这就是我们所做的。

他们还可以在屏幕截图中工作,这在翻译人员必须访问管理员或其他角色特定页面但您不想为他们提供各种用户权限时很方便。这些屏幕截图可以作为自动化 UI 测试的一部分或在手动 UI 测试期间生成。

恐怕我不能说解决方案的成本,但我们的翻译人员对此非常满意。我不确定这是否是您正在寻找的,因为您要求一个简单的解决方案,但它绝对解决了为翻译人员提供完成工作所需的上下文的问题 - 比显示资源 ID 更好。

【讨论】:

  • 谢谢@Jenszcz:这不是答案(问题不同),但它似乎绝对是解决问题的方法,采取了非常不同的方式。我不喜欢的是链接页面上的神秘感,还有你的“我不能说任何关于成本......” - 这至少是可疑的:-)。但我会查看您链接的页面以了解更多信息。
  • @Zoka,我处于技术职位,与采购、预算等无关:这就是为什么我不能对成本说任何话的原因。我认为 Rigi 开发人员没有固定价格模型。
猜你喜欢
  • 2021-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-21
  • 2019-10-22
  • 1970-01-01
相关资源
最近更新 更多