如何在 Django 模型中翻译多行字符串

Jul*_*e B 6 django translation django-models multilinestring

我使用 ugettext_lazy 作为 _ ,在模型文件中我的字符串以这种方式表示:

    s = _(“第一行”  
          “第二行”  
          “第三线”)

但运行 makemessages 后,我发现 .po 文件中只有“firstline”被标记为翻译,其余部分都不存在。我不想避免使用多线,那么有什么方法可以使翻译与此配合使用吗?

更新:

应该补充我的问题:我需要我的多行字符串由 django 的 makemessages 处理

到目前为止我能想象的最好的解决方案是

    s = str(_("第一行")) +  
          str(_("第二行") +  
          str(_("第三行"))

dmv*_*rtx -2

更新:实际的问题是makemessages没有进行 python(和 JS 等)解析,因此它不会按预期连接多行字符串。下面的解决方案也不起作用(它不会看到计算值)。

不幸的是,您必须找到另一种方法来格式化消息,最好将其拆分为单行部分。

之前的回答:

ugettext_lazy只能接受单个参数,因此这取决于您想要的翻译方式。

如果您愿意"firstline" "secondline" "thirdline"将其导出为单个句子进行翻译,您可以执行以下操作:

s = _(' '.join(["firstline", "secondline", "thirdline"]))
Run Code Online (Sandbox Code Playgroud)

如果您想将它们保留为单独的翻译句子,那么这样的方法也可能有效:

s = ' '.join(_(line) for line in ["firstline", "secondline", "thirdline"])
Run Code Online (Sandbox Code Playgroud)

或者只是调用_每一行并将它们连接起来