我正在考虑从自然的gettext msgids切换到固定的。例如。从
{% trans "Welcome to the site" %}
到
{% trans "welcome_to_site" %}
这是因为当网站上的语言数量增加并且每个持续部署版本的所有翻译都不实际时,文本字符串更新变得越来越麻烦。然而,切换到伪造的msgids会使网站模板和源代码工作,其中英语是主要语言,繁琐。
Pyramid framemwork和Chameleon templates通过允许gettext转换的默认值为这个问题提供了一个简洁的解决方案。例如。如果(英文).po文件中没有msgid
和msgstr
数据,则使用默认值。因此,您可以将自然文本和msgid混合到您的翻译中。例如:
from pyramid.i18n import TranslationString
ts = TranslationString('add-number', default='Add ${number}',
domain='form', mapping={'number':1})
与Django有什么相似之处吗?
或者 - 是否有任何基于上下文的翻译工具,即使msgid文本不再匹配,也可以使用.po文件注释中的文件和行号信息?
如果没有解决方案,我正在考虑实现自定义转换函数和自定义xtrans和xblocktrans模板标记,这将采用msgid提示。
答案 0 :(得分:0)
如果我错了,请纠正我,但我认为{% trans "Welcome to the site" %}
不是英文翻译,它只是一个占位符字符串,如果没有翻译,则会发现默认值同一时间(我称之为“开发人员的英语”)。您可以在源代码中为这些“英语”字符串提供单独的英语翻译。这是我理解Django翻译的方式,但随意纠正我。