Интернационализация и Локализация¶
1. Переключение языка на стороне сервера.¶
На стороне сервера есть возможность переключения языка отдаваемых сервером данных - как системных сообщений, так и контента в отдельности.
1.1. Переключение языка всех данных.¶
Для полного переключения языка всех данных в запросе к серверу должен быть добавлен заголовок X-Client-Lang со значением кода языка и локали (обязательно в формате в соответствии с RFC 2616 раздел 14.4 и 3.9, например, ru-ru). Стоит отметить, что код должен присутствовать в siriuso/settings.LANGUAGES иначе переключение не будет произведено.
Например в заголовках запроса должен быть такой заголовок:
X-Client-Lang: ru-ru
Для пользователя, авторизированного на сервере достаточно один раз передать такой заголовок и его значение будет сохранено в переменной сессии на стороне сервера. Если требуется изменить язык, то следует просто ещё в любом следующем запросе передать заголов X-Client-Lang с требуемым кодом языка.
В случае с неавторизированным пользователем скорее всего придётся передавать данный заголовок при каждом запросе… Можно попробовать убрать это недостаток на стороне сервера, сохраняя код текущего языка в cookies.
1.2. Переключение языка контента.¶
В случае, когда нужно сохранить или получить контент в определённом языке, не меняя язык всех передаваемых сервером данных, нужно использовать заголовок X-Content-Lang со значением в виде кода нужного языка (обязательно в формате в соответствии с RFC 2616 раздел 14.4 и 3.9, например, ru-ru). Передача такого заголовка сообщает серверу, что текстовые дынные, переданные/полученные при помощи текущего запроса, должны быть в указанном языке.
При передаче данных на сервере (например, сохранение записи на стене пользователя или сообщества), текстовые данные будут сохранены в необходимом языке.
При получении данных с сервера, текстовые данные так же будут в указанном языке (если эти данные доступны на требуемом языке). В случае отсутствия перевода контента на требуемый язык, контент будет предоставлен в языке по умолчанию.
Пример сохранени/получения контента в языке Эсперанто:
X-Content-Lang: es-xx
Следует отметить, что передача X-Content-Lang воздейтсвует только на текущий запрос и не влияет на сессию пользователя (не переключает и не сохраняет это переключение языка на стороне сервера), т.е. имеет временный характер.