Django源语言和默认语言代码

时间:2018-09-04 19:17:27

标签: python django django-i18n

我有一个django应用程序,其中的代码和模板字符串最初是经过修饰的。现在,我想添加英语并将其设置为默认语言

我使用localeMiddleware和i18n模式。 在settings.py中,我有:

LANGUAGE_CODE = 'pl'

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

如果工作正常-当我将其更改为“ en”时,我的网址会自动以“ pl”作为前缀。

但是,因为我希望我的默认语言为英语(因此来自中国/任何地方的访问者都可以用英语查看网站),所以我必须将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)

0 个答案:

没有答案