2015-05-01 2 views
1

У меня есть этот блок в моем HTMLДжанго: запись blocktrans не переводится

... 
<a class="header" href="{% url 'listing' house_post.id %}"> 
    {% blocktrans with house_type=house_post.house_type.name trimmed %} 
    {{house_type}} 
    {% endblocktrans %} 
</a> 
... 

Одно значение house_type является «кондоминиум». Я добавил следующую запись в файл .po.

msgid "Condominium" 
msgstr "ኮንዶሚኒየም" 

Я запускать compilemessages на файл ро, а остальные переводы работать при переключении языков. И я убедился, что значение house_type настроено как "Condominium". Но по какой-то причине он не переводится.

Кроме того, когда я запускаю makemessages Инструмент замечает дополнения, которые я сделал в файлах .po. Я раскомментирую их перед запуском compilemessages. Я не знаю, почему это делается, хотя это может быть ключом.

Можно добавить тексты перевода в файлы .po. Не так ли?

+0

Это работает, когда я напрямую переношу переменную внутри транс. {% trans house_post.house_type.name%} –

ответ

2

Это не переведено, так как {{house_type}} будет иметь значение house_post.house_type.name.

Блоктранс фактически ничего не делает в вашем коде. Это вам понадобится, если вы хотите добавить переводный текст в предложение. Пример:

{% blocktrans with house_type=house_post.house_type.name trimmed %} 
    {{house_type}} Translate this part 
    {% endblocktrans %} 

Если вы хотите иметь переведенную переменную, вы должны пройти переводы house_post.house_type.name.

0

Контент вашего блоктранса, скорее всего, составляет {{house_type}}. Не знаю, откуда она взялась, но здесь вы должны ее перевести. Не забудьте вставить что-то вроде

from django.utils.translation import ugettext_lazy as _ 

в заголовок ваших файлов py.

Смежные вопросы