我已阅读django关于如何以更多语言提供网站的文档。
说实话,所有声音都非常复杂,所以我需要帮助才能清除所有内容。
首先,我想做以下事情:
website.com/en/index
website.com/es/index
等网址。我找到了this项目,但似乎已过时我正在寻找是否有任何内置的方法来做同样的事情。website.com/es/index
之类的直接链接进入网站,请点击该网站的网址,我如何确保其遵循用户输入的相同语言网站?我不是在找人解决我的问题,而是为了让我朝着正确的方向努力:
提前谢谢你。
答案 0 :(得分:1)
你不需要任何第三方软件包来完成你想要做的事情,Django内置了它。
django.middleware.locale.LocaleMiddleware
添加到中间件urls.py
,django.conf.urls.i18n.i18n_patterns
中
你已经完成了。
对于使用site.com/en/lorem-ipsum
包裹的网址,您会获得django.conf.urls.i18n.i18n_patterns
等网址。
更具体地说明您的问题:
1)这是默认行为。如果您使用django.conf.urls.i18n.i18n_patterns
包装管理员网址,您也将获得多种语言的管理网站。使用相同的网址格式,例如site.com/en/admin/
。以下是urls.py
示例:
from django.conf.urls import url, include, i18n
from django.contrib import admin
urlpatterns += i18n.i18n_patterns(
url(r'^admin/', admin.site.urls),
url(r'^products/', include('your_project.apps.products.urls', namespace='products')),
# ...
)
2)所有网址都是一致的语言环境。例如。如果用户在site.com/en/home
并且有关于产品页面的链接,则该链接将是“site.com/en/about”
3)我可以理解,在不编辑gettext文件等的情况下更新管理站点上的翻译会容易得多。但是,我喜欢django处理翻译的方式。对管理站点进行翻译会涉及数据库,我不认为使用数据库进行翻译是个好主意。