Да, это возможно ... Bootstrap.php загружается перед маршрутами, поэтому, если вы установите что-то вроде:
session_start();
if(isset($_SESSION['lng'])){
Configure::write('Config.language', $_SESSION['lng']);
}
... и в вашем контроллере приложения в beforeFilter:
$language = 'xy';
Configure::write('Config.language', $language);
$_SESSION['lng'] = $language;
Таким образом, на начальной странице отображается запрос языка, перенаправьте на xy.site.com или www.site.com/xy, что вам нравится. Теперь второй рендер изменится $language
и на страницах ссылок и установит $_SESSION['lang']
...
Все ссылки на маршрутизаторы, такие как:
Router::connect(__('/:gender/search/:looking_for/*'), array('controller' => 'users', 'action' => 'search'));
станет:
Router::connect(__('/:gender/trazi/:looking_for/*'), array('controller' => 'users', 'action' => 'search'));
или
Router::connect(__('/:gender/suche/:looking_for/*'), array('controller' => 'users', 'action' => 'search'));
100% проверено, работает в CakePHP 2.2. Также возможно дальнейшее улучшение, если вы поместите субдомен / анализатор URL-адресов в сам загрузчик ...