User Tools

Site Tools

Translations of this page:

Sidebar

Documentation index

ru:multilingual_sites

Multilingual Sites

Цель данной фичи - создать на одном домене несколько вариантов перевода сайта. Как перевести интерфейс сайта описано в факе New Rotation Hints пункт “Перевод меню сайта ( i18 )”. Сейчас мы будем говорить о переводе непосредственно контента.

Сначала надо в меню rotation - settings - Multilingual создать нужное кол-во других языков. После этого в редактировании каждой галеры появится возможность редактировать ее описание для каждого языка. Но в большинстве случаев нас инстерисует автоматический перевод. Для этого есть Google translate. Предположим что в результате этих действий у вас добавлено 2 языка de and es для основного сайта на en.

Язык переключается добавлением в урл &force_lng=… (de или es в нашем примере).

Есть 2 варианта отображения нужного языка и соответствено 2 опции в rotation - settings - Multilingual

1. Когда урл страницы не меняется, но отличается для браузеров с разными языками - Auto Switch language

2. когда меняется урл страницы, и на данном урле определенный язык вне зависимости от языка браузера - Auto redirect to existing language

Auto Switch language

Скрипт ищет называние языка в хедерах передаваемых браузером и показывает страницу в зависимости от языка. Урл не меняется. С этим вариантом все ясно - включили опцию - показывает в разных языках одну и туже страницу.

Auto redirect to existing language

В опциях ротации по языкам есть опция Auto redirect to existing language , смысл которой в том, что бы редиректить пользователя на соответствующий урл по языку. дефолтный вариант

http://{DOMAIN}/{LANGUAGE}/{ORIGINAL_REQUEST} 

те если приходит запрос http://domain/category/asd/ с языком ru то будет редирект на http://domain/ru/category/asd/ (конечно при условии что ru есть в настройках). По урлу http://domain/ru/category/asd/ всгеда будет на русском языке, вне зависимости от настроек браузера.

Для того что бы работали такие реврайты надо добавить делофтный реврайт в начало htaccess.

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]{2})/(.*)$ $2?force_lng=$1&%{QUERY_STRING} [L]

Конечно, можно сделать собственный вариант для разнообразия линков.

Для каждого языка есть несоклько вариантов ведения статистики, разница в которых заключается фактически в 2х опциях: Own category stats и Own thumb stats.

Если обе опции Own category stats и Own thumb stats - выключены. Фактически вы получаете просто перевод сайта. Это хорошо для СЕ.

Own category stats - yes, это значит что при выводе тумб категорий с сортировкой clicks они будут выведены в соответствии со статистикой кликов на опредленной странице языка. Те клики по тумбам категорий на странице http://domain/ и http://domain/de/ будут считаться отдельно. Возможно для de это не самый актуальный пример, но например если сравнить jp и en то сортировка\популярность категорий заметно отличается.

Own thumb stats значит что и тумбы галерей получают собственную статистику. Обратите внимание, что в этом случае мы создаем +1 комплект тумб категорий дабы тумбы категории была на первых местах в соответствующей категории. Те если ключить эту опцию и не включить Own category stats то тумба категории может отличаться от первых тумб в этой категории.

Site Iinternationalisation (i18n)

Перевод сайта на другие языки.

Довольно просто сделать перевод меню сайта (те ссылок типа Most Popular, Order By date и прочее) на другие языки.

1. Делаем кастом темплейт например languages в котором будет код слов

<?php 
$my_keywords['en'] = array(
  'most_popular' => 'Most popular',
  'order_by_date' => 'Order By Date',
  и так далее
);
$my_keywords['ru'] = array(
  'most_popular' => 'Самые популярные',
  'order_by_date' => 'Сортировать по дате',
  и так далее
);

$my_keywords['de'] = array(
  'most_popular' => 'Populärste',
  'order_by_date' => 'Sortiert nach Datum',
  и так далее
);

и так далее сколько угодно языков

далее 2 варианта подставления языка: 

по языку браузера

if (strstr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 'ru')) {
  $lang = $my_keywords['ru'];
} elseif (strstr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 'de')) {
  $lang = $my_keywords['de'];
} else $lang = $my_keywords['en'];

или по geo_ip

if ($_SERVER['GEOIP_COUNTRY_CODE'] =='RU') {
  $lang = $my_keywords['ru'];
} elseif ($_SERVER['GEOIP_COUNTRY_CODE'] =='DE') {
  $lang = $my_keywords['de'];
} else $lang = $my_keywords['en'];


надеюсь в обоих примерах понятно как добавить больше языков

и в конце темпелйта

if ($_GET['force_lng'] and isset($my_keywords[$_GET['force_lng']])) {
  setcookie('force_lng', $_GET['force_lng'], time() + 86400);
  $lang = $my_keywords[$_GET['force_lng']];
} elseif ($_COOKIE['force_lng'] and isset($my_keywords[$_COOKIE['force_lng']])){
  $lang = $my_keywords[$_COOKIE['force_lng']];
} else $lang = $my_keywords['en'];

Все, конец темплейта :)

2. во всех темпелйтах где надо будут разные языки инклудим этот созданный темплейт

<!--INCLUDE_TEMPLATE_languages-->

3. В темпелейтах соответствующие слова заменяем на переменные, например

Most popular меняем на <?=$lang['most_popular']?>
Order By Date меняем на <?=$lang['order_by_date']?>
и так далее

с этого момента у вас уже должны быть разные описания для разных языков

4. даем юзеру возможность переключить язык “насильно”

для этого ставим линку вида

http://domain/?force_lng=de (и тп нужных язык в зависимости от массива ваших языков в $my_keywords['de'])

Все.

ru/multilingual_sites.txt · Last modified: 2016/05/23 12:25 by admin