Django如何识别Django中实现的多语言网页中的语言变化?

时间:2017-09-13 17:14:54

标签: javascript django multilingual django-multilingual

我已经使用Django实现了英文网页。 我现在有一个问题,当我试图用中文创建一个网页时。中文页面将用前缀(/ ch /).

分隔

我计划实现一个按钮来更改语言,但问题是Django如何记住更改的页面。假设我的域名是' domain.com',如果通过按钮将语言设置为中文,我想拥有' domain.com/ch'用户访问' domain.com'时打开。 但是,单击一个按钮似乎无法控制Django(urls.py)的urlpatterns,并且似乎有必要在javascript中存储与语言相对应的变量。

我很感激你的意见。

1 个答案:

答案 0 :(得分:1)

这是一个相当复杂的主题,但默认情况下有很多东西可以帮助Django。 django的区域设置部分将查看用于语言偏好的cookie。我相信浏览器还提供了一些元素,它可以为网站的新访问者提供默认语言。

在Django中,要注意的是,关于这个主题的文档在这里; https://docs.djangoproject.com/en/1.11/topics/i18n/

您需要启用两项设置才能获得多种语言的最佳支持; USE_I18N添加了语言元素,USE_L10N允许日期,数字,货币等的本地化格式。

关于翻译的主题,give this a read因为你需要确保你的python代码中的字符串,javascript&显示给用户的模板包含在相应的翻译功能中。

在您的根urls.py文件中,您还需要确保使用i18n_patterns,它会在您的网址前加上当前启用的语言代码。使用Javascript翻译URL的一个示例是;

from django.conf.urls.i18n import i18n_patterns

urlpatterns = i18n_patterns(
    url(r'^jsi18n/$', JavaScriptCatalog.as_view(), name='javascript-catalog'),
)

一旦您对设置进行了排序,设置为i18n_patterns的网址和模板中的一些{% trans "" %}标记就可以测试实际生成的消息目录。

您可以使用两个管理命令,第一个是makemessages,然后将翻译添加到生成的文件中,然后运行compilemessages完成作业。