перевод не работает в Django 1.5 даже после компиляции сообщения - PullRequest
0 голосов
/ 21 февраля 2019

Я использую Django 1.5

Мне нужно включить интернационализацию в моем приложении.Для этого я добавил несколько вещей в файл settings.py

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',
    ...
)

from django.conf import global_settings
TEMPLATE_CONTEXT_PROCESSORS = global_settings.TEMPLATE_CONTEXT_PROCESSORS + (
    '...local context processrors...'
)

# global_settings.TEMPLATE_CONTEXT_PROCESSORS contains 
# TEMPLATE_CONTEXT_PROCESSORS = (
#     'django.contrib.auth.context_processors.auth',
#     'django.core.context_processors.debug',
#     'django.core.context_processors.i18n',
#     ...
# )

USE_I18N = True
USE_L10N = True

LANGUAGE_CODE = 'es'

# List of languages available for translation
ugettext = lambda s: s
LANGUAGES = (
    ('en', ugettext('English')),
    ('es', ugettext('Spanish'))
)
LOCALE_PATHS = (
    os.path.join(PROJECT_ROOT, 'locale/'),
)

LOCALE_PATHS имеет вывод местоположения как

('/media/path_to_project/workbench/workbench/settings/../locale/',)

Но при запуске ./manage.py makemessages -l es он генерирует *.po файл в

/media/path_to_project/workbench/workbench

вместо

/media/path_to_project/workbench/workbench/locale

Кроме того, скомпилированный язык не отображается в шаблоне.

1 Ответ

0 голосов
/ 21 февраля 2019

Вам необходимо проверить следующие вещи.

  • Убедитесь, что вы добавили USE_L10N = True и USE_I18N = True в ваш settings.py файл
  • Проверьте PROJECT_ROOT и LOCALE_PATHS и убедитесь, что это правильно
  • Добавьте django.core.context_processors.i18n к TEMPLATE_CONTEXT_PROCESSORS в setting.py.

Перевод и форматирование контролируются USE_I18N и USE_L10N соответственно.Однако обе функции включают интернационализацию и локализацию .Названия настроек - неудачный результат истории Джанго.

...