Не вижу строки моего проекта в Django Rosetta
Я установил и настроил rosetta
на моем Django
проект, и я могу сказать, что он работает, потому что я вижу многоязычные функции с Django admin
и я вижу строки для перевода в third party
а также django
вкладки, но когда выбрал project
На вкладке я получаю это сообщение:
Nothing to translate!
You haven't specified any languages in your settings file, or haven't yet generated a batch of translation catalogs.
Please refer to Django's I18N documentation for a guide on how to set up internationalization for your project.
Я уже использовал gettext()
в моем коде, но я не вижу эти строки в rosetta
,
Это пример использования gettext()
в моем models.py
:
from django.utils.translation import gettext as _
class Hotel(models.Model):
ONE_STAR = '*'
TWO_STARS = '**'
THREE_STARS = '***'
FOUR_STARS = '****'
FIVE_STARS = '****'
GRAND_TOURISM = 'GRAND_TOURISM'
NA = 'NA'
SPECIAL = 'SPECIAL'
ECO = 'ECO'
BOUTIQUE = 'BOUTIQUE'
HOTEL_CATEGORY_CHOICES = (
(ONE_STAR, _('*')),
(TWO_STARS, _('**')),
(THREE_STARS, _('***')),
(FOUR_STARS, _('****')),
(FIVE_STARS, _('*****')),
(GRAND_TOURISM, _('Grand Tourism')),
(NA, _('NA')),
(SPECIAL, _('Special')),
(ECO, _('Eco-Hotel')),
(BOUTIQUE, _('Boutique-Hotel'))
)
Это конфигурация языков в settings.py
:
LOCALE_PATHS = (
os.path.join(BASE_DIR, 'locale'),
)
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
LANGUAGE_CODE = 'en-us'
gettext = lambda s: s
LANGUAGES = (
('en', gettext('English')),
('de', gettext('German')),
('es', gettext('Spanish')),
)
USE_I18N = True
Я не знаю, что мне не хватает.
0 ответов
Разработчики должны знать, что когда вы добавляете регион языка или конкретную письменную форму сценария, ваша команда для создания сообщений должна использовать "_" (подчеркивание) в качестве разделителя региона и ваш проект settings.py
должен использовать "-" (дефис) в качестве разделителя региона.
Например, допустим, мы добавляем английскую версию "UK", как традиционного, так и упрощенного китайского, и Гонконгскую область для китайского (кантонского). Вот команды для создания файлов языкового перевода:
$ django-admin makemessages -l en_uk
$ django-admin makemessages -l zh_hk
$ django-admin makemessages -l zh_hans
$ django-admin makemessages -l zh_hant
И проект settings.py
нужен кортеж ЯЗЫКОВ, чтобы содержать их, используя дефис:
LANGUAGES = (
('en-uk', _('English (UK)')),
('zh-hk', _('Cantonese')),
('zh-hans', _('Chinese (Simplified)')),
('zh-hant', _('Chinese (Traditional)')),
)