Django多语言(i18n)和SEO

时间:2010-04-21 14:38:29

标签: django seo internationalization multilingual

我正在Django开发一个多语言网站。

为了改善搜索引擎优化,我会为每种语言版本提供如下所示的唯一网址

  • english:www.foo.com/en/index.html
  • french:www.foo.com/fr/index.html
  • chinese:www.foo.com/zh/index.html

然而,

Django在用户会话或cookie中查找“django_language”键以确定默认语言。因此,尽管用户选择了哪种语言,但URL始终相同。例如:http://www.foo.com/index.html

如何解决此问题?

2 个答案:

答案 0 :(得分:1)

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

如果您想亲手操作,请查看urls.py

答案 1 :(得分: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()