【问题标题】:Django blocktrans with variable带有变量的Django blocktrans
【发布时间】:2017-09-26 20:17:18
【问题描述】:

我有一个模板,我想在其中翻译一个字符串。

{% blocktrans with "www.mywebsite.com" as website_name %}footer-slogan{{ website_name }}{% endblocktrans %}

我已经生成了我的 po 文件,我将其中的字符串翻译如下:

msgid "footer-slogan %(website_name)s"
msgstr "This is a test %(website_name)s"

在我生成的 html 文件中,我得到了这个未翻译的元素:

footer-slogan www.mywebsite.com

如果我从翻译后的字符串中删除变量,它会起作用:

msgid "footer-slogan %(website_name)s"
msgstr "This is a test"

我什至尝试从源翻译中删除变量,但将变量保留在翻译后的字符串中,问题是一样的:

template.html
{% blocktrans with "www.mywebsite.com" as website_name %}footer-slogan{% endblocktrans %}

django.po
msgid "footer-slogan"
msgstr "This is a test %(website_name)s"

我希望能够仅在翻译后的字符串上设置变量。

我在翻译后的字符串上做错了什么?

【问题讨论】:

    标签: django internationalization po django-i18n


    【解决方案1】:

    你可以这样使用

    {% blocktrans %} 
        {% with website_name="www.mywebsite.com" %}
            {% trans 'footer-slogan{{ website_name }}' %}
        {% endwith %}   
    {% endblocktrans %}
    

    【讨论】:

    • 我已经尝试了您的建议,但仍然无法正常工作。
    • @Fab,typo 出现错误。现在试试,让我知道。
    • 我以前见过你的类型。改正后还是不行。
    • 我终于找到了问题所在。这是因为我正在显示另一种语言,尚未翻译。而且我没有在文档中找到,但是对于想知道是否可以在 po 文件中使用原始翻译中未使用的变量的人来说,这是不可能的。必须指定。
    • 从视图上看,翻译ID里面的变量不是必须的。但在模板中是这样的。
    【解决方案2】:

    回答有点晚了,但对于其他来寻求的人来说

    `{% blocktrans with site_name="xyz" %}{{ site_name }} - Your account 
     has been successfully created and activated!{% endblocktrans %}`
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-11
      • 2011-03-20
      • 2013-08-12
      • 2015-06-17
      • 2010-12-21
      • 2014-04-13
      • 2020-07-23
      相关资源
      最近更新 更多