【问题标题】:How can Django recognize language changes in a multilingual web page implemented in Django?Django 如何识别 Django 实现的多语言网页中的语言变化?
【发布时间】:2018-02-22 12:11:53
【问题描述】:

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

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

非常感谢您的建议。

【问题讨论】:

    标签: javascript django multilingual django-multilingual


    【解决方案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'),
    )
    

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

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

    【讨论】:

      猜你喜欢
      • 2014-02-26
      • 1970-01-01
      • 1970-01-01
      • 2013-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多