Интернационализация и локализация django
На примере русского языка.
-
В файл settings.py вписываем:
-
Подготавливаем все фразы к переводу.
Для этого в .py-файлах:
а в шаблонах есть теги для перевода фраз и многострочного перевода:
Лучше обходиться без начальных и оконечных пробелов, т.к. в противном случае перевод может не подцепиться.К сожалению, в каждом шаблоне нужно добавлять загрузку i18n, сразу после тега {% extends «layout.html» %}, почему-то разработчики джанго считают это фичей, видимо, потому что не пользуются).
Перевод полей модели:
Перевод полей форм:
- В корне проекта создаём папку locale
-
Из корня проекта запускаем команду
Команда генерирует файл django.po.
Сначала идёт заголовок, в котором нет ничего интересного, за исключением следующих строк:По этому правилу образовываются формы слов русского языка во множественном числе.
Дальше следуют пачки видагде первая строка — место, где встретилась фраза, помеченная для перевода, вторая строка — фраза, а третья — перевод, который надо вписать.
Особый случай — переводы, зависящие от числа, к примеру, подходов:здесь для русского языка нужно задать три фразы — для значения переменной 1, 2 и 5.
-
Скомплировать переводы
По необходимости пункты 4-5 можно повторять, при этом уже введённые переводы не будут потеряны, если фразы, помеченные к переводу, не были удалены.
Джанго определяет язык пользователя так (если не нашёл, то идёт дальше):
- Ищет ключ django_language в сессии пользователя
- Ищет в cookies
- Ищет в cookies
- Ищет Accept-Language в HTTP-заголовках, и пытается отыскать разрешённые в приложении (в переменной LANGUAGES) языки
- Использует значение переменной LANGUAGE_CODE
Для смены локали нужно следующее:
-
В urls.py прописать url
смена локали будет доступна по адресу /i18n/setlang/ -
Где-нибудь в шаблоне определить форму:
Ссылка на официальную документацию по интернационализации django.
Локализация javascript в django
Similar Posts
LEAVE A COMMENT
Для отправки комментария вам необходимо авторизоваться.
Этот подход может помочь со склонением месяца при выводе даты?
Если кто посоветует — буду благодарен.
Из банального — фразы для перевода писать с суффиксами, и переводить их и на английский тоже (чтобы убрать суффикс).
Ну или выложите здесь часть кода, которая не работает.
У меня такого вроде не было
LOCALE_PATHS = (
‘полный путь к каталогу locale проекта’,
)
‘django.core.context_processors.i18n’.
у меня тут есть еще одна апликация (3rd party), у которой тоже есть своя локализация ru…
тогда вопрос меняется ;)
как «склеивать» мою и 3rd party локализации?
Можете сделать видео как это все настроить правильно самого начала
Хороший язык, была возможность.
Почему бы и нет.
Он ещё и быстрый и простой.