Django не может перевести язык

#django #language-translation

#django #язык-перевод

Вопрос:

Я хочу перевести свой веб-сайт на CH, но никакого ответа после того, как я выполнил онлайн-инструкцию. Я что-то пропустил?

Я изменил код языка settings.py .

settings.py:

 import os
import django_heroku
from django.utils.translation import gettext_lazy as _

LANGUAGES = (
  ('en', ('English')),
  ('zh-Hant', _('Traditional Chinese')),
)
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
...
]
TEMPLATES = [
{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [TEMP_DIR],
    'APP_DIRS': True,
    'OPTIONS': {
        'context_processors': [
            'django.template.context_processors.i18n',
            'django.template.context_processors.debug',
             ....]}

# LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-Hant'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True

LOCALE_PATHS = [
 os.path.join(BASE_DIR, 'locale')
]
 

Добавлен тег для перевода в html

base.html:

 {% load i18n %}
<!DOCTYPE html>
<html>
....
 

home.html:

 {% extends "base.html" %}
{% load i18n %}
{% block content %}
{% trans "Let's translate this" %}
....
 

Обновлен msgstr в …. locale zh-Hant LC_MESSAGESdjango.po:

 msgid "Let's translate this"
msgstr "來翻譯這個"
 

Ответ №1:

Обновлен msgstr в …. locale zh-Hant LC_MESSAGESdjango.po:

Для традиционного китайского языка:

zh-hant в вашей конфигурации, и ваш каталог должен быть назван zh_Hant .

Смотрите каталог locale: https://github.com/django/django/tree/master/django/contrib/auth/locale

название локали

Имя локали, либо языковая спецификация формы ll, либо комбинированная спецификация языка и страны формы ll_CC. Примеры: it, de_AT, es, pt_BR, sr_Latn. Языковая часть всегда в нижнем регистре. Часть страны находится в заголовке, если она содержит более 2 символов, в противном случае она в верхнем регистре. Разделитель — это символ подчеркивания.

и языки keys со строчными буквами:

 LANGUAGES = (
  ('en', _('English')),
  ('zh-hant', _('Traditional Chinese')),
)
 

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

1. Я выполняю эту команду каждый раз после обновления файлов in .po

2. @HugoYu, каталог должен быть назван zh_Hant . Я обновил свой ответ.

3. Тот же результат, даже каталог с именем zh_Hant

Ответ №2:

Измените свой языковой код так, чтобы у вас было LANGUAGES вот так;

 LANGUAGES = (
    ('en', gettext('English')),
    ('ja', gettext('Japanese')),
    ('it', gettext('Italian')),
    ('zh-hant', gettext('Chinese')),
)
 

Я протестировал это на многоязычном сайте, который у меня есть.

 python manage.py makemessages -l zh-hant
python manage.py compilemessages
 

Администратор Django по умолчанию выглядит так;

введите описание изображения здесь

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

1. Я получил сообщение об ошибке: «django.core.exceptions. Неправильно сконфигурировано: параметр SECRET_KEY не должен быть пустым «.

2. Тогда ваши настройки не определены. Вам нужно либо определить переменную DJANGO_SETTINGS_MODULE среды, либо передать --settings аргумент в runserver