我刚刚开始使用Django国际化并尝试了解使用{% blocktrans %}
的最佳做法。是否最好为每个段落使用一个{% blocktrans %}
,或者我应该有一个包含许多段落的大{% blocktrans %}
?
拥有一个大{% blocktrans %}
更快,让我的模板看起来更干净,但我担心的是:
<p>...</p>
)成为翻译字符串的一部分msgid
会改变,这似乎会影响其他段落。如果我有较小的块,那么更改将更加孤立(我想)。msgid
。我也想知道格式化。在{% blocktrans %}
内部换行是否有任何问题?还是有领先的空间? e.g:
{% blocktrans %}
You have {{ num_messages }} messages.
Another sentence.
{% blocktrans %}
欢迎任何建议。
答案 0 :(得分:9)
多个小{% blocktrans %}
块因各种原因而受益:
每个可翻译的字符串最终都会出现在翻译文件中,这些文件应该由说这种语言的人翻译。他们不应该处理HTML标签的正确性,但他们应该纯粹将几个句子翻译成该语言。次要标记很好,但不是整个页面的HTML。
您也可以这样考虑:可翻译字符串中的标记越少,翻译人员出错的可能性就越小(可能有也可能没有技术背景)。
所以回答你的问题:每个段落的块转换标签是更好的选择。如果您最终更改了一个段落,则翻译者只需要再次检查该段落。
关于空格和换行:默认情况下,这些最终会出现在PO翻译文件中。在Django 1.7中,blocktrans将有一个trimmed
选项,用于删除空格和换行符(source):
此选项将从{%blocktrans%}标记内容的开头和结尾删除换行符,替换行开头和结尾处的任何空格,并使用空格字符将所有行合并为一行他们。这对于缩进{%blocktrans%}标记的内容非常有用,而不会使缩进字符最终出现在PO文件的相应条目中,这使得翻译过程更加容易。