使用 Django 的新 i18n_patterns:如何回退到设置模块中指定的默认语言?

Posted

技术标签:

【中文标题】使用 Django 的新 i18n_patterns:如何回退到设置模块中指定的默认语言?【英文标题】:Using Django's new i18n_patterns: How to fall back to the default language specified in the settings module? 【发布时间】:2012-06-14 21:01:46 【问题描述】:

我正在使用 Django 1.4 的新 i18n_patterns

from django.conf.urls import patterns, include, url
from django.conf.urls.i18n import i18n_patterns

from django.contrib import admin
admin.autodiscover()

urlpatterns += i18n_patterns('',
    url(r'^admin/', include(admin.site.urls)),
)

它适用于每一种活跃的语言:

/en/admin/ # Ok
/es/admin/ # Ok

但这失败了:

/admin/ # 404 Not found

如何避免 404 错误并重定向到所请求 URL 的语言前缀版本(不仅是管理面板)?

是写一个自定义的中间件解决方案吗?为什么这在 Django 中没有默认出现?

【问题讨论】:

【参考方案1】:

您好像没有enable django.middleware.locale.LocaleMiddleware。

【讨论】:

糟糕...我的错!我想文档需要进一步澄清这一点。然而,在阅读了整个翻译部分之后,很明显django.middleware.locale.LocaleMiddleware 是翻译所有内容的必要条件。谢谢! 答案仍然适用于 Django 1.9。

以上是关于使用 Django 的新 i18n_patterns:如何回退到设置模块中指定的默认语言?的主要内容,如果未能解决你的问题,请参考以下文章

Django模板:使用其他语言获取当前URL

Django 模板:获取另一种语言的当前 URL

Django App TypeError django.views.i18n.javascript_catalog

Django1.10 - /i18n/setlang/ CSRF 令牌丢失或不正确

Python之路Day18-正则及Django

django-18.admin后台中文版