Django i18n:{%blocktrans%}块的推荐大小和格式?

Rex*_*exE 11 python django django-templates django-i18n

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

拥有一个大{% blocktrans %}的更快,使我的模板看起来更干净,但我担心的是:

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

我也想知道格式化.内线换线是否有任何复杂情况{% blocktrans %}?还是有领先的空间?例如:

{% blocktrans %}
    You have {{ num_messages }} messages.
    Another sentence.
{% blocktrans %}
Run Code Online (Sandbox Code Playgroud)

欢迎任何建议.

Sim*_*ser 10

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

  • 每个可翻译的字符串最终都在翻译文件中,并且这些文件应该由说这种语言的人翻译.他们不应该处理HTML标签的正确性,但他们应该纯粹将几个句子翻译成该语言.次要标记很好但不是整个页面的HTML.

    您也可以这样考虑:可翻译字符串中的标记越少,翻译人员出错的可能性就越小(可能有也可能没有技术背景).

  • 如果巨大的翻译块发生变化,则每个译员都需要再次完成所有翻译.如果您使用小的可翻译块,那么您可以重用大多数现有的翻译段落/文本,并且您只需要获得实际更改的部分的更新翻译.

所以回答你的问题:每段的块转换标签是更好的选择.如果您最终更改了一个段落,那么翻译者只需要再次检查该段落.

关于空格和换行:默认情况下,这些将最终出现在PO翻译文件中.在Django 1.7中,blocktrans将有一个trimmed删除空格和换行符的选项(源代码):

此选项将从{%blocktrans%}标记的内容的开头和结尾删除换行符,替换行的开头和结尾处的任何空格,并使用空格字符将所有行合并为一行以将它们分开.这对于缩进{%blocktrans%}标记的内容非常有用,而缩进字符不会在PO文件的相应条目中结束,这使得翻译过程更容易.