我试着用ZPT模板使字符串翻译在金字塔中工作。我遵循了关于国际化和本地化的金字塔指南,即http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/i18n.html#chameleon-template-support-for-translation-strings。
但是,当我添加行时
<span>${some_translation_string}</span>对于我的.pt模板文件,我只从服务员那里得到一条断言消息:
NameError: some_translation_string当我将字符串some_translation_string翻译到ZPT模板之外时(即在视图的Python代码中),它将正确地翻译。因此,我认为应该有一个有效的已编译消息目录(尽管是由于缺少babel/lingua的Python3支持而手动创建的)。
我想我误解了在ZPT模板中插入本地化字符串的方法。它可能不能与引用变量相同吗?
发布于 2014-03-30 21:12:09
正如我现在所理解的,ZPT模板中的翻译应该如下所示:
<span i18n:translate="">some_translation_string</h1>如果您省略了i18n:translate中的字符串标识符,则将使用字符串本身。
此外,还必须在模板标题中添加域名,例如:
<html lang="en"
xmlns:tal="http://xml.zope.org/namespaces/tal"
xmlns:metal="http://xml.zope.org/namespaces/metal"
xmlns:i18n="http://xml.zope.org/namespaces/i18n"
i18n:domain="my_domain">这些信息似乎在参考的金字塔文件中缺失了。
发布于 2014-07-31 09:01:31
作为参考,要对JavaScript代码中的消息进行翻译,我发现这种方法非常方便:
在您的视图中,向模板参数添加一个TranslationStringFactory实例:
from translationstring import TranslationStringFactory
@view_config(route_name='site', renderer='templates/site.pt')
def form(request):
...
return {'_': TranslationStringFactory('yourapp')}然后在模板中可以编写:
<script type="text/javascript">
...
yourapp.i18n['error'] = '${_('Error')}';
yourapp.i18n['warning'] = '${_('Warning')}';
</script>https://stackoverflow.com/questions/22584459
复制相似问题