11

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

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

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

我也想知道格式化。在 a 内换行是否有任何并发​​症{% blocktrans %}?或者有领先的空间?例如:

{% blocktrans %}
    You have {{ num_messages }} messages.
    Another sentence.
{% blocktrans %}

欢迎任何建议。

4

1 回答 1

10

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

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

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

  • 如果一个巨大的翻译块发生变化,那么所有翻译都需要由每个翻译者再次完成。如果您使用小的可翻译块,那么您可以重用大部分现有的翻译段落/文本,您只需要为实际更改的部分获取更新的翻译。

所以回答你的问题:每段一个blocktrans标签是一个更好的选择。如果您最终更改了一个段落,那么只有该段落需要由翻译人员再次检查。

关于空格和换行符:默认情况下,这些将在 PO 翻译文件中结束。在 Django 1.7 中,blocktrans 将有一个trimmed删除空格和换行符的选项(source):

此选项将从 {% blocktrans %} 标记的内容的开头和结尾删除换行符,替换行开头和结尾的任何空格,并使用空格字符将所有行合并为一个。这对于缩进 {% blocktrans %} 标记的内容而无需缩进字符最终出现在 PO 文件中的相应条目中非常有用,这使得翻译过程更容易。

于 2013-12-06T14:42:27.130 回答