Django如何识别Django实现的多语言网页的语言变化?
How can Django recognize language changes in a multilingual web page implemented in Django?
我已经使用 Django 实现了一个英文网页。
当我尝试用中文创建网页时,我现在有一个问题。中文页面将以前缀(/ch/)分隔。
我打算实现一个按钮来改变语言,但问题是Django如何记住改变的页面。假设我的域是 'domain.com',如果通过按钮将语言设置为中文,我希望在用户访问 'domain.com' 时打开 'domain.com/ch'。
不过点击按钮好像不能控制django的urlpatterns(urls.py),好像需要把language对应的变量存入javascript.
非常感谢您的建议。
这是一个相当复杂的主题,但默认情况下在 Django 中有很多东西可以提供帮助。 django 的区域设置部分将查看 cookie 的语言偏好,我相信浏览器也提供了一些元素,它可以为网站的新访问者选择默认语言。
在 Django 中需要注意的是 i18n and the docs on the topic are here; https://docs.djangoproject.com/en/1.11/topics/i18n/
您需要启用两个设置才能最好地支持多种语言; USE_I18N adds the language element, and USE_L10N 允许日期、数字、货币等的本地化格式。
关于翻译的话题,give this a read 因为您需要确保 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'),
)
对设置进行排序后,URLs 设置为 i18n_patterns
和模板中的一些 {% trans "" %}
标记,您可以测试消息目录的实际生成。
您为此使用了两个管理命令,第一个是 makemessages 然后将翻译添加到生成的文件中,然后 运行 compilemessages
完成工作。
我已经使用 Django 实现了一个英文网页。 当我尝试用中文创建网页时,我现在有一个问题。中文页面将以前缀(/ch/)分隔。
我打算实现一个按钮来改变语言,但问题是Django如何记住改变的页面。假设我的域是 'domain.com',如果通过按钮将语言设置为中文,我希望在用户访问 'domain.com' 时打开 'domain.com/ch'。 不过点击按钮好像不能控制django的urlpatterns(urls.py),好像需要把language对应的变量存入javascript.
非常感谢您的建议。
这是一个相当复杂的主题,但默认情况下在 Django 中有很多东西可以提供帮助。 django 的区域设置部分将查看 cookie 的语言偏好,我相信浏览器也提供了一些元素,它可以为网站的新访问者选择默认语言。
在 Django 中需要注意的是 i18n and the docs on the topic are here; https://docs.djangoproject.com/en/1.11/topics/i18n/
您需要启用两个设置才能最好地支持多种语言; USE_I18N adds the language element, and USE_L10N 允许日期、数字、货币等的本地化格式。
关于翻译的话题,give this a read 因为您需要确保 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'),
)
对设置进行排序后,URLs 设置为 i18n_patterns
和模板中的一些 {% trans "" %}
标记,您可以测试消息目录的实际生成。
您为此使用了两个管理命令,第一个是 makemessages 然后将翻译添加到生成的文件中,然后 运行 compilemessages
完成工作。