Главная | Архив новостей | Общение | Площадка | Примеры OpenID
Хостинг Django от «Джино»
Оглавление

Определение переводимых строк в шаблоне

Для использования переводов в шаблонах Django применяются два шаблонных и немного отличный от Python синтаксис. Чтобы получить доступ к этим тегам, поместите {% load i18n %} в начале вашего шаблона.

Тег {% trans %} помечает строку для перевода:

<title>{% trans "This is the title." %}</title>

Если вы желаете только пометить значение для перевода, но перевести его позже, используйте опцию noop:

<title>{% trans "value" noop %}</title>

Нельзя использовать шаблонные переменные в теге {% trans %} — разрешены только строковые константы, в одиночных или двойных кавычках. Если ваш перевод требует использования переменных (символов подстановки), используйте {% blocktrans %}, например:

{% blocktrans %}This will have {{ value }} inside.{% endblocktrans %}

Для перевода шаблонного выражения — скажем, использование шаблонного фильтра — следует связать выражение с локальной переменной для использования внутри блока перевода:

{% blocktrans with value|filter as myvar %}
  This will have {{ myvar }} inside.
{% endblocktrans %}

Если вам необходимо связать более одного выражения внутри тега {% blocktrans %}, объедините выражения с помощью and:

{% blocktrans with book|title as book_t and author|title as author_t %}
  This is {{ book_t }} by {{ author_t }}
{% endblocktrans %}

Для множественного числа, укажите обе, единственную и множественную, формы с помощью тега {% plural %}, который используется внутри {% blocktrans %} и {% endblocktrans %}, например:

{% blocktrans count list|length as counter %}
  There is only one {{ name }} object.
{% plural %}
  There are {{ counter }} {{ name }} objects.
{% endblocktrans %}

С технической точки зрения все блоки и встроенные переводы используют соответствующие функции gettext() и ngettext().

Когда вы используете RequestContext (см. главу «Расширения для шаблонной системы»), ваш шаблон получает доступ к 3 переменным режима перевода:

  • {{ LANGUAGES }} — это список кортежей, в котором первый элемент является идентификатором языка, а второй — названием этого языка (родное название).

  • {{ LANGUAGE_CODE }} — это текущий, предпочитаемый пользователем, язык (т.е., en-us). Подробности далее в разделе «How Django Discovers Language Preference».

  • {{ LANGUAGE_BIDI }} — это текущей метод записи языка. Если True, значит пишут справа налево (иврит, арабский язык). Если False, значит слева направо (английский, французский, русский).

Вы также можете подгрузить эти значения с помощью шаблонных тегов:

{% load i18n %}
{% get_current_language as LANGUAGE_CODE %}
{% get_available_languages as LANGUAGES %}
{% get_current_language_bidi as LANGUAGE_BIDI %}

Обработчики механизма переводов также доступны внутри любого блочного шаблонного тега, который работает с неизменными строками. В таких случаях используйте синтаксис _(), чтобы пометить строку для перевода, например:

{% some_special_tag _("Page not found") value|yesno:_("yes,no") %}

В этом примере, тег и фильтр увидят уже переведённую строку (т.е., строка будет переведена до передачи шаблонной функции), поэтому им не надо знать о переводе.


Увидели ошибку?
Выделите её мышкой и нажмите
Ctrl-Enter
Обработано:
1049 49 130 71

Версия книги
1.0 2.0
Версия 2.0 в процессе перевода!

Мой луч
Многообразие света

Полезное
Актуальные вакансии, Python работа для python-разработчиков.


Скачать в формате
CHM от 2 сентября

Заказать PDF файл можно через почту, чат, джаббер. Всего 2WMZ. Содержимое точно соответствует содержимому сайта.
Чем чаще заказываете — тем больше перевожу.

Русская группа

на поддержку перевода
Яндекс Яндекс.Деньги Хочу такую же кнопку
Ускорить процесс перевода!
R130494980980
Z425285133788
E112528079659
U327380922061

Книга помогла реализовать:
Проект «Мой луч»
АРМ УФМС.


Мой вебсайт стоит666 337,31 руб

© 2008-2009 Ruslan Popov @ gmail.com Powered by Django 1.1 beta 1 SVN-11114
Главная | Архив новостей | Общение | Площадка | Примеры OpenID