Интернационализация в django cms

1. Интернационализация

5 September 2013 г. 23:16:24

1.1. Мультиязыковые URL

Если вы используете более одного языка, ссылки в django cms должны использовать i18n_patterns(). Больше информации можно найти в официальной документации django.

Пример urls.py :

from django.conf import settings
from django.conf.urls.defaults import patterns, include, url
from django.contrib import admin
from django.conf.urls.i18n import i18n_patterns
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
 
admin.autodiscover()
 
urlpatterns = patterns('',
    url(r'^jsi18n/(?P<packages>\S+?)/$', 'django.views.i18n.javascript_catalog'),
)
 
urlpatterns += staticfiles_urlpatterns()
 
urlpatterns += i18n_patterns('',
    url(r'^admin/', include(admin.site.urls)),
    url(r'^', include('cms.urls')), # <---------подклюаем django cms url используя i18n_patterns
)

1.2. Сохранение языка в Cookie

Если кто-то заходит на сайт  http://www.mysite.fr/ django определяет язык по следующим правилам:

  • Язык из url
  • Язык из сессии
  • Язык из cookie
  • Язык из браузера
  • LANGUAGE_CODE из настроек

Если у меня браузер на немецком и я захожу на сайт который только на английском и французском, язык будет выбран на основании LANGUAGE_CODE. Если это английский, а мы знаем только французский, то мы должны переключить язык.  И когда я зайду на сайт через некоторое время, страницы будут опять отображаться на английском и язык надо будет опять переключать. То же самое будет и для всех ссылок которые ссылаются на / они будут отображаться опять на английском. Такое поведение CMS можно исправить используя промежуточный слой: 

cms.middleware.language.LanguageCookieMiddleware

Добавление этой строки в настойки middleware  исправит это.

1.3. Выбор языка

Тэг шаблона  language_chooser  будет отображать на выбор языка на данной странице. Вы можете изменить шаблон в файле menu/language_chooser.html  или исольщовать собственный шаблон, если необходимо.

Пример:

{% load menu_tags %}
{% language_chooser "myapp/language_chooser.html" %}

 

1.4. page_language_url

Этот тэг шаблона вернет URL данной страницы на другом языке.

Пример:

{% page_language_url "de" %}

 

1.5. hide_unstranslated

Если вы добавите язык по умолчанию в   CMS_LANGUAGES и установите hide_unstranslated в False, то все странице будут отображены для любого языка, даже если страница еще не переведена на этот язык. Если hide_untranslated установлена в True и в секции CMS_LANGUAGES и Ваша станица еще не имеет перевода на английский язык, а Вы просматриваете версию страницы на немецком, то после того как вы смените язык страница будет переадресована на  /. То же самое будет для URL которые не управляются CMS (например сторонние ссылки) и отображают выбор языка.

1.6. Авоматическая генерация чистых ссылок в юникоде

Если ваш сайт использует язык, который использует не ASCII символы, возможно вы захотете включить CMS_UNIHANDECODE_HOST  и CMS_UNIHANDECODE_VERSION чтобы автоматически генерировать чистые ссылки на этот язык тоже.

 


Оставьте свой комментарий

comments powered by Disqus
Меню

Cult of digits 2014 Яндекс.Метрика