Исходный язык Django и код языка по умолчанию - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть приложение django, где строки кода и шаблона изначально были на польском языке. Теперь я хочу добавить английский язык и установить его по умолчанию .

Я использую шаблоны localeMiddleware и i18n. Когда в settings.py у меня есть:

LANGUAGE_CODE = 'pl'

LANGUAGES = (
    ('pl', _('Polski')),
    ('en', _('English')),
)

Если работает нормально - мои URL автоматически префиксы с 'pl', когда я изменяю его на 'en' сайт переводится на английский.

Но, поскольку я хочу, чтобы моим языком по умолчанию был английский (чтобы посетители из Китая / где бы он ни видел веб-сайт на английском языке), я должен изменить LANGUAGE_CODE на 'en'.

Однако, если я это сделаю, веб-сайт будет на английском языке, префикс url по умолчанию будет «en», но даже когда я изменю его на «pl», он игнорируется, а веб-сайт все еще на английском.

Я знаю, что язык по умолчанию должен совпадать с языком «источника», как в коде и шаблонах - но, может быть, есть другое / лучшее решение, чем замена всех строк во всех моих представлениях и шаблонах?

Мое промежуточное ПО:

MIDDLEWARE = [
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'core.middleware.SubdomainMiddleware',
    'corsheaders.middleware.CorsMiddleware',
    'simple_history.middleware.HistoryRequestMiddleware',
    'django.middleware.security.SecurityMiddleware',
    'debug_toolbar.middleware.DebugToolbarMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

мои urls.py:

urlpatterns = i18n_patterns(
    path('admin/', admin.site.urls),
    # path('api/', include('api.urls', namespace='api')),

    path('backoffice/', decorator_include([login_required, ], (backoffice_urlpatterns, 'backoffice'))),
    path('', include('web.urls', namespace='web')),
    prefix_default_language=True

) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
...