Можно сделать языки отдельными модулями при инициализации модуля указать какой в приложении будет язык, а actions, views и модели сделать для всех модулей одинаковыми.
Можно сделать отдельными приложениями, на хостинге раскидать по папкам en, ru, de и так далее.
Можно через urlManager поймать $_GET ‘<lang:\w+>/<_a>/<_b>’ => ‘/<_a>/<_b>’ и затем в корневом контроллере указать язык в зависимости от этой переменной.
вот №3 больше нравится, но не очень нравится что для каждого правила надо писать <lang:\w+> может есть какой-то префикс в котором можно просто указать его и не парится ?
подскажите, а если через куки сделать? выбирает человек язык, это значение заносится в куки, а на страницах, в зависимости от этого значения, и делается выборка данных из нужной таблицы.
какие могут быть подводные камни? просто это самое просто что пришло в голову для реализации мультиязычности. что скажете, какие могут быть минусы?
Тогда уж удобней через сессию - на стороне клиента незачем хранить.
При входе на сайт по geoip определяется страна, выбирается язык, пишется в сессию PHP. Если клиент язык меняет, то он меняется в сессии. А уже в базовом контроллере обрабатывать это значение и устанавливать язык системы
вдруг пользователю из России нужна англоязычная версия - зачем каждый раз при открытии браузера выбирать язык? ведь проще в куках сохранить на более длительное время. разве нет?
GeoIP - каждый раз выполнять такое действие это расточительство за которое надо бить по рукам, при этом страна по IP и язык в OS могут не совпадать (иностранец к примеру). Каждый уважаемый себя браузер (не бот) передает в User-Agent языковые предпочтения пользователя. Парсим (качаем готовое решение) User-Agent узнаем на каком языке хочет общаться пользователь. И так всегда делаем пока пользователь не определится сам!
Сooke vs Session - подумайте об удобстве пользователя - каждый раз ему надо выбирать языка при истечении сессий (если это не авторизованный юзер настройки которого подгружаются при авторизации), а значить куки предпочтительнее (с 100500 лет expire)!
Url vs Sub-domain vs Сooke - здесь все зависит от SEO вашего проекта, что бы принять решения надо советоваться с SEO специалистами - если это перевод интерфейса для конечного пользователя то Сooke must have, в противном случает здесь есть много деталей (зеркала, канонические ссылки, заточенность под поисковые системы и т.п.).
P.S.: Если на собеседовании соискатель предложит GeoIP и Session на этом его интервью было бы законченно!