【问题标题】:Automatic gettext translation generator for testing (pseudolocalization)用于测试的自动 gettext 翻译生成器(伪本地化)
【发布时间】:2015-07-23 09:53:57
【问题描述】:

我目前正在使网站支持 i18n。将硬编码字符串标记为可翻译。

我想知道是否有任何自动化工具可以让我浏览网站并快速查看哪些字符串已标记,哪些仍未标记。我看到像django-i18n-helper 这样的一些项目尝试使用 HTML 工具突出显示已翻译的字符串,但这不适用于 JavaScript。

所以我认为 FДЦЖ CУЯILLIC, ??????????????????????????????????????????? ???或 ʇxǝʇ uʍop-ǝpısdn (或类似的东西)应该可以解决问题。易于在视觉上区分,仍然可读,但不依赖于除 Unicode 支持之外的任何富文本格式。

问题是,我找不到任何现成的工具可以吃 gettext .po/.pot 文件并吐出这样的翻译。不过,我认为这个想法很明显,所以肯定已经有一些东西了。

就我而言,我使用的是 Python/Django,但我想这个问题适用于任何使用 gettext 兼容库的东西。该工具唯一应该注意的是,翻译字符串中可能存在 HTML 片段。

【问题讨论】:

  • 似乎没有很好的工具可以解决这个问题 - 没有现成的公开可用的工具。我使用 msgfilter 和 sed 进行了几次测试运行,但目前我最终使用了 Crowdin 的伪定位功能。这两种方法都导致翻译文件部分损坏(一些占位符被损坏),但我手动修复了这些。

标签: internationalization gettext django-i18n pseudolocalization


【解决方案1】:

msgfilter 程序可让您通过所需的任何程序运行翻译。它特别适用于 GNU sed

例如,将所有翻译转换为大写(HTML 大多不区分大小写,因此应该可以):

msgfilter -i django.po sed -e 's/\(.*\)/\U\1/'

您的应用中唯一包含小写字母的字符串将是硬编码的。

如果你真的想做人造西里尔字母,你只需要编写一个程序或脚本来读取拉丁语并输出,然后将该程序提供给 msgfilter 而不是 sed。

如果您的发行版有一个talkfilters 包,它可能会提供一些在这种特定情况下可能有用的程序。所有这些都应该用作 msgfilter 过滤器。 (我个人最喜欢的是chef。Bork bork bork!)

【讨论】:

  • 谢谢。我认为这至少解决了一半的问题。遗憾的是,过滤器/talkfilters 不提供 Unicode 字符串修饰(如 blackletter/zalgo/upside-down 等),并且 chef/pirate/etc 在视觉上不是很容易区分,所以不是我想要的。而且,他们似乎都不关心 HTML 标记,并且很乐意将 <a hreff 转换为 <a href,这是不可取的。
  • 好主意。差不多,是的。除了有人决定文本必须对用户大喊大叫的地方,但幸运的是,这些地方不是很频繁。
  • googlers 的快速添加:好像你的 .po 文件(例如 django.po)被改变了,那么你需要写:msgfilter -i django.po -o django.po sed -e 's/\(.*\)/\U\1/'
【解决方案2】:

我自己还没有尝试过,但是从翻译工具包中找到了podebug tool。根据文档(flippedunicoderewrite options),这看起来正是我想要的工具。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-25
    • 2014-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 1970-01-01
    • 2011-11-25
    相关资源
    最近更新 更多