【问题标题】:Django i18n: recommended size and formatting for {% blocktrans %} blocks?Django i18n:{% blocktrans %} 块的推荐大小和格式?
【发布时间】:2013-12-07 16:22:30
【问题描述】:

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

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

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

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

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

欢迎任何建议。

【问题讨论】:

  • 如果您要在 blocktrans 中放入这么多东西,您可能需要考虑使用一些内容管理系统 - 不一定是完整的 cms,但至少可以少一些硬编码。
  • (@brunodesthuilliers 写的评论指的是我在编辑之前的问题中的代码示例。)
  • 不过还是有道理的。
  • @IgnacioVazquez-Abrams 谢谢。有人推荐 CMS 吗?
  • 我会使用夹层,但使用 CMS 并不能解决您的 i18n 问题,trans 和 blocktrans 仅适用于 TEXT,因此您不应该在 blocktrans 中使用 HTML 标签。

标签: python django django-templates django-i18n


【解决方案1】:

多个小 {% blocktrans %} 块有多种好处:

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2010-12-21
    • 2013-07-11
    • 2011-03-20
    • 1970-01-01
    • 2010-10-28
    • 2012-06-12
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多