Джанго мультиязычность (i18n) и SEO - PullRequest
4 голосов
/ 21 апреля 2010

Я занимаюсь разработкой многоязычного сайта в Джанго.

Чтобы улучшить SEO, я предоставлю каждой языковой версии уникальный URL, как показано ниже,

  • англ .: www.foo.com/en/index.html
  • французский: www.foo.com/fr/index.html
  • китайский: www.foo.com/zh/index.html

Тем не менее,

Django ищет ключ "django_language" в сеансе пользователя или куки, чтобы определить язык по умолчанию. Таким образом, несмотря на то, какой язык выбрал пользователь, URL всегда один и тот же. Например: http://www.foo.com/index.html

Как решить эту проблему?

Ответы [ 2 ]

1 голос
/ 21 апреля 2010

Мы сделали это, внедрив часть промежуточного программного обеспечения для активации нужного языка путем анализа его по 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()
1 голос
/ 21 апреля 2010

django CMS имеет функцию, которую вы ищете. Похоже, вы ищете CMS, так что это может быть полезно.

Если вы хотите сделать это вручную, вы должны взглянуть на urls.py

...