我才刚刚开始使用Django国际化,并试图了解使用{% blocktrans %}的最佳实践。最好为每个段落使用一个{% blocktrans %},还是应该有一个包含很多段落的大{% blocktrans %}

拥有一个较大的{% blocktrans %}会更快,并使我的模板看起来更整洁,但我担心的是:

  • 会导致HTML标签(例如<p>...</p>)成为翻译字符串
  • 的一部分
  • 如果我在巨大块的一部分中更改了一项内容,则msgid将会更改,这似乎可能会影响其他段落。如果我的块较小,那么更改将更加孤立(我想)。
  • 如果我进行了格式更改,例如在段落之间添加/删除换行符,则将更改msgid

  • 我也想知道格式化。在{% blocktrans %}内部换行是否有任何麻烦?还是有领导空间?例如。:
    {% blocktrans %}
        You have {{ num_messages }} messages.
        Another sentence.
    {% blocktrans %}
    

    欢迎任何建议。

    最佳答案

    出于各种原因,多个小的{% blocktrans %}块是有益的:

  • 每个可翻译的字符串都以翻译文件结尾,并且这些文件应可由说该语言的人翻译。他们不必处理HTML标签的正确性,而应该纯粹将一些句子翻译成该语言。次要标记可以,但不能使用整个页面的HTML。
    您也可以这样思考:可翻译字符串中的标记越少,翻译人员(可能有或没有技术背景)出错的机会就越少。
  • 如果巨大的翻译块发生了变化,则所有翻译都需要由每个翻译人员再次完成。如果使用小的可翻译块,则可以重用大多数现有的已翻译段落/文本,并且只需要为实际更改的部分获取更新的翻译即可。

  • 因此,请回答您的问题:每个段落都使用blocktrans标记是更好的选择。如果您最终更改了一个段落,那么只有那个段落需要翻译人员再次检查。
    关于空格和换行符:默认情况下,它们将以PO转换文件结尾。在Django 1.7中,blocktrans将具有trimmed选项,该选项可删除空格和换行符(source):

    关于python - Django i18n : recommended size and formatting for {% blocktrans %} blocks?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20150773/

    10-08 21:36