django-сортировка: локализация не работает

#django

#django

Вопрос:

Я использую приложение для сортировки django:

https://github.com/directeur/django-sorting

Мне просто интересно, есть ли способ создать локальные имена для фильтров сортировки … Например. Я пытаюсь локализовать следующее:

 <th>{% anchor total Rating %}</th>
  

И использование стандартного трюка django

 <th>{% anchor total _("Rating") %}</th>
  

не помогает… Не знаю, что делать…

Ответ №1:

вы должны использовать тег trans template из шаблонов..

https://docs.djangoproject.com/en/dev/topics/i18n/internationalization/#trans-template-tag

Обновить

Если вы хотите, чтобы заголовок был переведен, вам просто нужно изменить код тега шаблона привязки django-sorting, например, взглянув на исходный код здесь:

https://github.com/directeur/django-sorting/blob/master/django_sorting/templatetags/sorting_tags.py

Внутри anchor вы могли бы изменить его, например, добавив функцию ugettext как «_()», когда заголовок передается классу SortAnchorNode:

 return SortAnchorNode(bits[1].strip(), _(title.strip()))
  

Или вы можете выбрать другое место для запуска перевода, это просто для демонстрации, но это должно сработать

это переведет заголовок, который вы указываете в своем теге:

 {% anchor total "Result" %}  //{% anchor field title %}
  

Вы должны быть уверены, что слова, которые вы передаете, переведены в ваших словарях..

Комментарии:

1. Похоже, решение не сработало … упустил из виду, что в po-файле нет сообщений : (

2. что вы имеете в виду? вы должны добавить po-файлы для слов, которые вам нужно перевести

3. Я имею в виду, когда я выполняю django-admin.py при компиляции сообщений я вижу строку типа #: .settings.py:27 msgid «Русский» msgstr «» Но там нет копии результата… Среди строк django.po

4. makemessages не найдет вашу строку «Результат» в шаблоне, он просто проверит ваш исходный код, в котором используется ugettext, поэтому вам нужно будет добавить его вручную в po-файл, а затем использовать команду compilemessages..

5. Пытаюсь сейчас… Но, похоже, тоже безуспешно… Файл скомпилирован, но строка не заменена 🙁