C#资源:显示资源字符串名称,而不是本地化值

C#资源:显示资源字符串名称,而不是本地化值,c#,asp.net-mvc,localization,internationalization,resx,C#,Asp.net Mvc,Localization,Internationalization,Resx,由于有相当大的项目使用资源进行国际化(遵循本指南:,使用数据属性等),我们需要翻译资源文件。在项目的设计过程中,我选择了一种拥有大量小资源文件的方法——对于每个视图、视图模型、控制器。。。所以我最终拥有了数百种资源。在翻译过程中(由我们的合作伙伴使用我们遇到了识别字符串上下文的问题(在哪里显示,以找出正确的翻译形式,以便在显示时有意义) 因此,我被要求对应用程序进行变异,该应用程序不显示本地化的值,而是显示键(或字符串名称)。例如,在resourcesTBL_NAME中使用字符串,如@ResX.

由于有相当大的项目使用资源进行国际化(遵循本指南:,使用数据属性等),我们需要翻译资源文件。在项目的设计过程中,我选择了一种拥有大量小资源文件的方法——对于每个视图、视图模型、控制器。。。所以我最终拥有了数百种资源。在翻译过程中(由我们的合作伙伴使用我们遇到了识别字符串上下文的问题(在哪里显示,以找出正确的翻译形式,以便在显示时有意义)

因此,我被要求对应用程序进行变异,该应用程序不显示本地化的值,而是显示键(或字符串名称)。例如,在resources
TBL_NAME
中使用字符串,如
@ResX.TBL_NAME
,并将其翻译为英语“NAME”,我想在这个特殊的变异中显示为“TBL_NAME”,因此翻译器可能会看到上下文,即使用此字符串的确切位置。 最好的方法是,如果这不是应用程序的特殊构建,而是翻译人员可以使用的应用程序的另一种“语言”,那么他可以在英语和这种“非本地化”语言之间切换

我正在寻找一些简单的方法。到目前为止,我正在考虑以下方法:

  • 覆盖
    ResourceManager.GetString
    -无法使用,因为我们使用生成的设计器类大量访问字符串,到目前为止,我还没有找到更改创建的ResourceManager()的方法。我是否遗漏了什么
  • 为一些未使用的语言创建资源,这些语言将包含成对的
    字符串名称/翻译值
    作为
    TBL_名称/TBL_名称
    -可行,但非常耗竭,因为我们有数百个资源。此外,添加新资源需要我们记住,我们还需要添加此未使用的语言资源我将使用完全相同的字符串名称。在向应用程序添加单个字符串时,您还需要做两倍的工作

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

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

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


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

    这就是为什么我不喜欢资源文件。最终可能会产生各种各样的依赖关系,这些依赖关系很难或不可能被模拟。这不是非常有用,因为您的资源文件已经生成,但我使用了一种完全不同的方法。它甚至包括一个用于返回资源密钥的配置设置(这是未翻译的文本)不是为了调试目的而进行翻译,或者你可以在翻译中添加几个字符来测试布局的效果。你只想寻找可以编码的解决方案,或者你也会考虑购买允许译者在上下文中工作的软件?@ Jenszcz:两种方式都是可能的。如果你有好软件的提示。对于翻译过程,我将不胜感激。我在项目开始时一直在寻找一个,但没有找到任何合理的。谢谢@Jenszcz:这不是答案(问题不同),但它似乎绝对是问题的解决方案,采取了非常不同的方式。我不喜欢的是链接页面上的神秘性,以及你的答案“我不能说任何关于成本的事情……”这至少是可疑的:——).但我会看看你链接的页面以了解更多信息。@Zoka,我是一名技术人员,与采购、预算无关:这就是为什么我不能谈论成本的原因。我认为Rigi开发商没有固定的价格模型。