Django проблемы blocktrans с отображаемыми переменными - PullRequest
0 голосов
/ 04 апреля 2020

Я уже таким же образом перевел в этом проекте несколько похожих шаблонов в одном каталоге, которые почти равны этому. Но этот шаблон делает меня беспомощным.

Без тега перевода {% blocktrans %} он работает правильно и отображает переменную. enter image description here

c_filter_size.html

{% load i18n %}
{% if ffilter %}
  <div class="badge badge-success text-wrap" style="width: 12rem;"">{% trans "Filter sizing check" %}</div>
  <h6><small><p class="p-1 mb-2 bg-info text-white">{% trans "The filter sizing is successfully performed." %}
  </p></small></h6>

    {% if ffilter1 and ffilter.wfsubtype != ffilter1.wfsubtype %}
      <div class="badge badge-success text-wrap" style="width: 12rem;"">{% trans "Filter sizing check" %}</div>
      <h6><small><p class="p-1 mb-2 bg-info text-white">
        If you insist on the fineness, but allow
        to reduce flow rate up to {{ffilter1.flowrate}} m3/hr the filter size and therefore filter
        price can be reduced.
      </p></small></h6>
    {% endif %}

с тегом перевода {% blocktrans %} не работает ни в Engli sh, ни в переведенном языке для отображаемой переменной. Другие подобные шаблоны слаженно работают. enter image description here

c_filter_size.html

{% load i18n %}
{% if ffilter %}
  <div class="badge badge-success text-wrap" style="width: 12rem;"">{% trans "Filter sizing check" %}</div>
  <h6><small><p class="p-1 mb-2 bg-info text-white">{% trans "The filter sizing is successfully performed." %}
  </p></small></h6>

    {% if ffilter1 and ffilter.wfsubtype != ffilter1.wfsubtype %}
      <div class="badge badge-success text-wrap" style="width: 12rem;"">{% trans "Filter sizing check" %}</div>
      <h6><small><p class="p-1 mb-2 bg-info text-white">
    {% blocktrans %}
        If you insist on the fineness, but allow
        to reduce flow rate up to {{ffilter1.flowrate}} m3/hr the filter size and therefore filter
        price can be reduced.
    {% endblocktrans %}
      </p></small></h6>
    {% endif %}

enter image description here

django.po 

...

#: rsf/templates/rsf/comments/c_filter_size.html:11
#, python-format
msgid ""
"\n"
"        If you insist on the fineness, but allow\n"
"        to reduce flow rate up to <b>%(ffilter1.flowrate)s</b> m3/hr the "
"filter size and therefore filter\n"
"        price can be reduced.\n"
"        "
msgstr ""
"\n"
" Если тонкость фильтрации изменить невозможно, но возможно уменьшить "
"расход до <b>%(ffilter1.flowrate)s</b> м3/час, то "
"размер фильтра и соответственно его цена могут быть уменьшены."

...

Спасибо

Ответы [ 2 ]

1 голос
/ 04 апреля 2020

Вы не можете получить доступ к свойствам переменных внутри blocktrans. Вместо использования {{ffilter1.flowrate}} внутри blocktrans вы должны использовать ключевое слово with:

{% blocktrans with flowrate=ffilter1.flowrate %}
    If you insist on the fineness, but allow to reduce
    flow rate up to {{ flowrate }} m3/hr the filter size and
    therefore filter price can be reduced.
{% endblocktrans %}

Кроме того, чтобы избежать использования отступов внутри вашего перевода, используйте ключевое слово trimmed:

{% blocktrans with flowrate=ffilter1.flowrate trimmed %}

Источник: https://docs.djangoproject.com/en/3.0/topics/i18n/translation/#blocktrans -темп-тег

0 голосов
/ 04 апреля 2020

Возможно, вы могли бы разбить ваши блоки trans на две секции.

{% blocktrans %}
        If you insist on the fineness, but allow
        to reduce flow rate up to {% endblocktrans %}
{{ffilter1.flowrate}}
{% blocktrans %} m3/hr the filter size and therefore filter
        price can be reduced.
{% endblocktrans %}

Это выглядит не лучшим образом, но было бы невозможно поместить переменную внутри блока trans, я думаю.

На другой ноте. Я заметил, что у вас есть ошибка в ваших встроенных стилях, у вас есть дополнительная "отметка в следующей строке.

<div class="badge badge-success text-wrap" style="width: 12rem;"">

...