2

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

我计划实现一个按钮来更改语言,但问题是 Django 如何记住更改后的页面。假设我的域是“domain.com”,如果通过按钮将语言设置为中文,我希望在用户访问“domain.com”时打开“domain.com/ch”。但是,点击一个按钮似乎并不能控制Django的urlpatterns(urls.py),似乎需要在javascript中存储语言对应的变量。

我会很感激你的建议。

4

1 回答 1

1

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

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

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

关于翻译的主题,请阅读本文,因为您需要确保向用户显示的 python 代码、javascript 和模板中的字符串包含在适当的翻译函数中。

在您的根urls.py文件中,您还需要确保您使用的i18n_patterns是将当前启用的语言代码作为 URL 的前缀。带有 Javascript 翻译 URL 的示例是:

from django.conf.urls.i18n import i18n_patterns

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

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

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

于 2017-09-13T19:18:51.983 回答