gpt4 book ai didi

c# - 识别未本地化的文本

转载 作者:太空宇宙 更新时间:2023-11-03 11:18:16 25 4
gpt4 key购买 nike

在 ASP.NET 中,应用程序可以使用资源文件进行本地化。资源文件包含不同的翻译。例如,一个人可能有一个英语资源文件和一个西类牙语资源文件。使用资源文件时,可以将属性应用于网页上的控件,以使用资源文件中的值自动填充该控件。或者,这些值可以通过编程方式从资源文件加载并分配给控件的属性。

ASP.NET 使用回退机制来加载翻译。它试图找到与当前用户的文化最相似的资源文件。如果当前用户的文化是西类牙语,ASP.NET 会尝试从西类牙语资源文件中加载适当的资源。如果西类牙语资源不可用,它会回退到默认资源文件。由于此行为,西类牙语用户的文本可能会以默认语言显示,原因有两个:

  1. 没有可用的西类牙语翻译。 (翻译人员尚未提供该项目的翻译。)
  2. 文本未本地化。 (这可能是纯文本出现在页面中或消息在某处被硬编码的结果。)

如果文本以默认语言出现,我想知道是因为原因 1 还是因为原因 2。

对于每个缺失的翻译,我可以在资源文件中插入某种占位符文本。然而,这意味着我要放弃回退机制。更糟糕的是,如果占位符文本意外进入生产环境,它看起来比显示默认文本要糟糕得多。

有没有人有任何建议(或解决方案)来确定这两个条件中的哪一个是在手动测试期间出现默认文本的原因?

最佳答案

如果我对您的理解是正确的,您想要验证每个可本地化的文本实际上确实是可本地化的并且没有被烧录到代码中。为此,您不应使用真正的文化(西类牙语),而应为假的不受支持的文化创建资源,并为默认资源中可用的每个可本地化资源条目提供自动翻译。

例如,如果您有一个默认资源包含:

  • 条目 1:这是一个测试!

您应该在您的假文化中创建一个资源,其中包含:

  • 条目 1:Th1s 1s @ t€st!

您甚至可以(并且应该)使用简单的字符映射自动执行伪造资源的创建。这样,当您将应用程序设置为使用您的自定义假文化时,您知道每个条目都有一个翻译,因此您可以找到硬编码文本。 此策略由 Windows 使用,称为 pseudo-locales .使用伪翻译字符串可以使用伪文化进行开发,因为文本仍然可读,这提高了找到硬编码文本的可能性

自 Windows Vista 和 Windows 2008 R2 以来,Windows 支持伪语言环境,因此如果您的构建和测试环境使用这些操作系统,您可以将您的假文化与这些伪语言环境之一相关联(例如 qps-ploc)。如果您有不受支持的操作系统,只需将您的虚假资源与您可能永远不会支持或只是创建您自己的文化的真实文化相关联。

另请注意,即使在受支持的操作系统中,Visual Studio 也不会为这些伪语言环境创建附属程序集,除非您 enable them on the registry .

关于c# - 识别未本地化的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11927671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com