2010-04-21 106 views
4

我正在Django开发一个多语言站点。Django多国语言(i18n)和SEO

为了提高搜索引擎优化,我会给每个语言版本的唯一网址,如下所示,

  • 英语:www.foo.com/en/index.html
  • 法语:www.foo。 COM/FR/index.html的
  • 中国:www.foo.com/zh/index.html

然而,

的Django寻找一个“django_la nguage“键在用户的会话或cookie中默认确定语言。所以,尽管用户选择了哪种语言,但URL总是相同的。例如:http://www.foo.com/index.html

如何解决此问题?

回答

1

django CMS有你正在寻找的功能。看起来你正在寻找一个CMS,所以它可以是有用的。

如果你想手工做,你应该在urls.py

+1

DZPM: Django的CMS是一个很好的样本,谢谢 – fumer 2010-04-24 14:49:31

1

看看通过实现中间件的由请求URL解析它来激活所需的语言,我们已经做到了这一点。

事情是这样的:

class LanguageInPathMiddleware(object): 
    def __init__(self): 
     self.language_codes = set(dict(settings.LANGUAGES).keys()) 

    def process_request(self, request): 
     language_code = request.path_info.lstrip('/').split('/', 1)[0] 
     if language_code in self.language_codes: 
      translation.activate(language_code) 
      request.LANGUAGE_CODE = translation.get_language() 
+3

到:notanumber 我找到了一个好Django应用程序 “的Django loacleurl”。谢谢 – fumer 2010-04-24 14:51:57