2013-03-30 2 views
0

Не удалось найти пример для моего конкретного случая.Язык в базовом URL-адресе для многоязычного сайта на острове Кохана 3

Я создаю многоязычный веб-сайт на острове Кохана 3.3. Мне нужно создать URL-адреса, такие как:

http://site.com for English version 
http://es.site.com for Spanish 
http://fr.site.com for French 

и так далее. Но все примеры, которые я мог найти, были похожи на http://site.com/lang/

Что мне нужно сделать для достижения цели? Должен ли я делать разные приложения для каждого языка, а затем настраивать .htaccess? Или есть способ прочитать язык из URL (в случае lang.site.com). Я не мог найти способ сделать это ...

ответ

0

Я никогда не делал этого, поэтому я просто пытаюсь описать, как я буду обращаться к проблеме, как если бы я столкнулся с ней.

Во-первых, я бы начал с настройки сервера, чтобы все домены указывали на одно, одно приложение (которое, как я полагаю, у вас уже есть).

Далее в вашем bootstrap.php, когда setting the language, я хотел бы использовать вспомогательную функцию, которая будет определять его для меня, на основе URL веб-сайта осуществляется доступ на, и мой самозагрузки бы тогда, вероятно, выглядеть следующим образом:

/** 
* Set the default language 
*/ 
I18n::lang(MyApp::get_request_language_code()); 

Я бы ожидал, что мой MyApp::get_request_language_code() вернет строку, которая будет соответствовать языковому коду, используемому для класса I18n. Этот помощник также должен перенаправить запрос, если URL-адрес недействителен (например, xxx.example.com).

Тогда, я бы, вероятно, установить базовый URL, используя $_SERVER['HTTP_HOST'], то есть:

Kohana::init(array(
    'base_url'  => $_SERVER['HTTP_HOST'], 
)); 

Кроме того, я бы еще вспомогательную функцию, которая будет возвращать домен префикс, который я бы конкатенировать с моим реальным доменом, например:

Kohana::init(array(
    'base_url'  => MyApp::get_request_language_url_prefix().'example.com', 
)); 

устанавливая доменное имя с префиксом языка в base_url во Kohana :: Init() вы убедитесь, что все URLs генерируется с использованием либо маршрута или класса URL имеют соответствующий язык включен.

И вот как я попытаюсь решить свою проблему. Опять же, я хотел бы подчеркнуть, что я только пытаюсь здесь придумать решение проблемы, и вышеупомянутый подход не был протестирован.