2011-08-05 42 views
2

我试图使用i18n机器翻译.py文件中的某些字符串。翻译.pt文件不是问题,但每当我尝试在文件系统的Python代码中使用_('Something')进行翻译时,它总是会提供英文文本(这是默认设置),而不是应该在那里的挪威文本。所以我可以看到英文版python代码的输出,而其他页面模板位正确翻译。为Plone产品翻译文件系统中的内容

有没有什么类似的东西?

回答

4

用于域名_('Something')与您在翻译中使用的挪威语.po文件相同吗?他们应该是一样的,所以不要在一个案例中使用'plone',在另一个案例中使用'my.domain'。

此外,对下划线函数的调用本身并不转换字符串;它只创建一个可以翻译的字符串。如果该字符串直接在模板中自行结束,则应该将i18n:translate=""添加到该标记,可能带有匹配的i18n:域。

否则,您应该手动调用translate方法,如http://readthedocs.org/docs/collective-docs/en/latest/i18n/localization.html#manually-translated-message-ids中所述。请阅读Plone 4 migration guide了解Plone 3和4之间的一些区别,这些区别可能会在这里引起你的注意。

+0

这工作得很好,正是我需要的帮助。尽管如此,没有足够的声望来投票给你。 – user880151

3

请注意,_()不会在调用时翻译文本,但会返回一个Message对象,该对象在模板中呈现时将被翻译。

这意味着:

  1. 没有CONCAT Message对象。 "text %s" % _('translation')将不起作用,以及"text" + _('translation')
  2. 如果您不通过模板发送文本到浏览器,它可能不会被翻译。例如,如果您生成电子邮件,则需要手动翻译消息对象