Мультиязычный сайт на Django — переводим проект на разные языки

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

  • меню сайта
  • модели, информацию, которая хранится в базе данных
  • текст в шаблонах

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

Содержание

Подготовка перевода сайта на несколько языков

Измените settings.py

# язык сайта по умолчанию, если не удалось определить язык другими способами
LANGUAGE_CODE = 'ru'

# список доступных языков
LANGUAGES = (
    ('ru', 'Russian'),
    ('uk', 'Ukrainian'),
)

# включаем систему перевода django
USE_I18N = True

# указываем, где лежат файлы перевода
LOCALE_PATHS = (
    'locale',
    # os.path.join(PROJECT_DIR, 'locale'),
)

Добавьте в MIDDLEWARE_CLASSES

'django.middleware.locale.LocaleMiddleware',

Измените urls.py

Для поддержки нескольких языков в URL нужно использовать i18n_patterns вместо patterns в urls.py

from django.conf.urls.i18n import i18n_patterns

urlpatterns = i18n_patterns('',
    url(r'^$', 'project.views.home', name='home'),
    ...
)

Перевод шаблонов и сообщений

Следующий шаг — отметить в проекте строки, которые будут переведены на другие языки.

В шаблонах строки, которые будут переводится на выбранный язык, нужно добавить в блок {% trans «This string will be translated» %}

В дальнейшем при создании файлов перевода (django.po файлы) в них появится строка This string will be translated, для которой вы укажете правильный перевод.

Подробнее — http://www.djangobook.com/en/2.0/chapter19.html

Создание файлов перевода

Создайте в каталоге проекта директорию locale

Выполните команду

django-admin.py makemessages -l ru

После этой команды в директории locale будет создан каталог ru, в нем — LC_MESSAGES и в нем файл django.po.

Теперь используйте poedit для перевода терминов.

Вы также можете использовать любой текстовый редактор, а затем скомпилировать файлы перевода командой

django-admin.py compilemessages

В результате компиляции в каталоге появится файл django.mo, из которого Django будет брать перевод на русский язык.

Мультиязычный сайт на Django — переводим проект на разные языки: 5 комментариев

  1. Если я не ошибаюсь, то ‘ukrainian’ это ‘ua’. Просто ‘uk’ это ‘United Kingdom’. А так, статья замечательная!

    1. ua — Украина
      uk — украинский язык

      Тут речь идёт о языках. Поэтому нет конфликтов, так как для английского языка используется en

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *