Можно и средствами Kohana определить локализацию клиента (браузера)
Код:
Вынести в статический класс типа такой код:
Код:
$available_langs = array('ru', 'en');
$default_lang = 'ru';
$lang = Cookie::get('lang', NULL);
if ( ! in_array($lang, $available_langs))
$lang = NULL;
if ($lang === NULL)
{
$langs = Request::accept_lang();
foreach ($langs as $l => $v)
{
if (in_array($l, $available_langs))
{
$lang = $l;
break;
}
if ($lang === NULL)
{
$lang = $default_lang;
}
Cookie::set('lang', $lang);
}
}
Код:
Ну это как-бы одно, а другое - нужно учитывать параметр языка из строки браузера. Тут скорее всего придется все равно отдельным классом делать для удобства.
Кстати, интересная тема!)
Сделать так, чтобы:
- Учитывался язык из HTTP_ACCEPT_LANGUAGE
- Основной язык не присутствовал в строке браузера, а дополнительные были:
http://домен/
http://домен/en/
http://домен/uk/
Тут тоже интересный момент: украинский в настройках браузера 'uk', а не 'ua', как хотелось бы)
United Kingdom - 'en-gb', а не 'uk', вот так-то. Но это мелочи. Тема не маленькая, если все по "фен-шую" делать)
Вот здесь сделано так:
http://www.gsl.ua/ua/TV-Video/ - украинский
При переключении, основной язык убирается, а если изменить
http://www.gsl.ua/ua/TV-Video/ на
http://www.gsl.ua/ru/TV-Video/ - 404
Некоторые делают так:
http://домен/ - главная страница (на русском)
http://домен/ru/ - тоже как бы главная ( = http://домен/ )
http://домен/en/ - главная на английском (тут нормально)
Хотя может это и не так критично, но думаю пример с магазином самый правильный вариант и для SEO хорошо - не нужна приставка для основного языка. Как вы думаете?
Может кто-то реализовывал на Kohana такой вариант?
И непонятно, почему в фреймворках (думаю не только в кохане) не предусмотрена мультиязычность? Один язык - роуты как обычно (типа прозрачно для программиста), два и более - роут уже с приставкой языка. Помойму это востребовано всегда и везде (ну если на поддоменах не делать).