Не вижу строки моего проекта в Django Rosetta - PullRequest
0 голосов
/ 15 мая 2018

Я установил и настроил rosetta в своем проекте Django, и я могу сказать, что он работает, потому что я вижу многоязычные функции с Django admin и вижу строки для перевода в third party и django tabs, но при выборе project tab я получаю это сообщение:

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

Я не знаю, что мне не хватает.

1 Ответ

0 голосов
/ 03 мая 2019

Разработчики должны знать, что когда вы добавляете регион языка или конкретную письменную форму скрипта, ваша команда для создания сообщений должна использовать "_" (подчеркивание) в качестве разделителя региона, а 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)')),
)
...