Django blocktrans с переменной

У меня есть шаблон, в котором я хочу перевести строку.

{% 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"

Я бы предпочел иметь возможность устанавливать переменную только в переведенной строке.

Что я делаю не так с переведенной строкой?


person Fab    schedule 26.09.2017    source источник


Ответы (1)


Вы можете использовать это так:

{% blocktrans %} 
    {% with website_name="www.mywebsite.com" %}
        {% trans 'footer-slogan{{ website_name }}' %}
    {% endwith %}   
{% endblocktrans %}
person Astik Anand    schedule 26.09.2017
comment
Я пробовал то, что вы предложили, но все еще не работает. - person Fab; 27.09.2017
comment
@Fab, произошла typo ошибка. Попробуйте прямо сейчас и дайте мне знать об этом. - person Astik Anand; 27.09.2017
comment
Я уже видел ваш типаж раньше. Даже после исправления не работает. - person Fab; 27.09.2017
comment
Я наконец нашел проблему. Это потому, что я показывал другой язык, который еще не был переведен. И я не нашел в документации, но для людей, которым интересно, можно ли использовать переменную внутри файла po, которая не используется в исходном переводе, это невозможно. Это должно быть уточнено. - person Fab; 02.10.2017
comment
Похоже, что в представлении не обязательно указывать переменную внутри идентификатора перевода. Но в шаблоне он есть. - person Fab; 02.10.2017
comment
@Fab, Спасибо, что сообщили мне. - person Astik Anand; 02.10.2017