Django: запись blocktrans не переводится

У меня есть этот блок в моем HTML

...
<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 "ኮንዶሚኒየም"

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

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

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


person Michael Tedla    schedule 01.05.2015    source источник
comment
Это работает, когда я помещаю переменную непосредственно в trans. {% trans house_post.house_type.name%}   -  person Michael Tedla    schedule 01.05.2015


Ответы (2)


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

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

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

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

person ferrangb    schedule 01.05.2015

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

from django.utils.translation import ugettext_lazy as _

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

person frlan    schedule 01.05.2015