DJANGO:如何根据用户的位置更改语言网站?

时间:2016-02-01 09:12:34

标签: python django

任何人都可以帮助我,拜托!!! setting.py

LANGUAGE_CODE = 'en'

# supported languages 
LANGUAGES = (
('en', 'English'),
('ko', 'Korean'),

)

2 个答案:

答案 0 :(得分:3)

Django已经完成了它自己的工作,你不需要做任何额外的事情。

From the docs

  

LocaleMiddleware尝试通过以下算法确定用户的语言偏好:

     
      
  • 首先,它在请求的URL中查找语言前缀。只有在root URLconf中使用i18n_patterns函数时才会执行此操作。有关语言前缀以及如何国际化URL模式的详细信息,请参阅国际化:URL模式。

  •   
  • 如果失败,它会在当前用户的会话中查找LANGUAGE_SESSION_KEY密钥。

  •   
  • 如果没有,它会查找一个cookie。

  •   
  • 使用的Cookie名称由LANGUAGE_COOKIE_NAME设置设置。 (默认名称为django_language。)

  •   
  • 如果失败,它会查看Accept-Language HTTP标头。此标头由您的浏览器发送,并按优先级顺序告诉服务器您喜欢哪种语言。 Django尝试标题中的每种语言,直到找到可用翻译的语言。

  •   
  • 如果失败,则使用全局LANGUAGE_CODE设置。

  •   

答案 1 :(得分:1)

@ Sayse的answer是正确的,但是,Django不会为您的项目自动启用LocaleMiddleware

启用后(将其添加到settings.py中的MIDDLEWARE_CLASSES)Django将执行here所述的语言检测,管理应用等应用将使用相应的翻译。

但是你还需要设置其他一切;你必须在你的代码和/或模板中标记你的可翻译字符串,设置每种语言的消息文件,考虑是否需要国际化支持URL等。

阅读translation documentation

是个好主意