Я никогда не делал этого, поэтому я просто пытаюсь описать, как я буду обращаться к проблеме, как если бы я столкнулся с ней.
Во-первых, я бы начал с настройки сервера, чтобы все домены указывали на одно, одно приложение (которое, как я полагаю, у вас уже есть).
Далее в вашем 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 имеют соответствующий язык включен.
И вот как я попытаюсь решить свою проблему. Опять же, я хотел бы подчеркнуть, что я только пытаюсь здесь придумать решение проблемы, и вышеупомянутый подход не был протестирован.