我有一个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)