#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