Да, получается довольно компактно
Да, получается довольно компактно. Вы не тестировали быстродействие? По-идее ваш вариант должен быть быстрее. Все-таки работа идет с константами, а не ассоциативным массивом. По поводу роутинга… Дело в том, что я старался обойти этот вопрос в статье, но, похоже, не получилось . Проблема в том, что я для себя не определился какой метод лучше, а точнее не протестировал все идеи. У меня есть три варианта. Первый. Посетитель сам выбирает язык, а мы сохраняем его в сессии. Параллельно пробуем прочитать Accept-Language, т. е. «угадать» выбор пользователя.
Тут явный минус в том, что посетителю придется выбирать язык каждый раз при входе на сайт (если мы его не «угадали»). Второй. Это ваш вариант. Т. е. используются адреса вроде http://www. site. com/ru/controller/function/… http://www. site. com/en/controller/function/… Тут решение вы показали в своем примере. У меня получалось практически тоже самое. Разве что использовал «:any» вместо «(.+)», но это не важно. Главное, что в этом варианте посетитель может сохранить ссылку на версию сайта с нужным языком и можно не использовать сессии. Третий. Использовать субдомены. ru. site. com/…. en. site. com/….
Вот это вариант я как раз и не доделал. Идея простая. Раз есть три домена, то есть и три папки DOCUMENT_ROOT, в каждую их которых помещаем свой index. php, причем все они будут ссылаться на одну папку application. Но тут возникает проблема. Что делать с $config['base_url'] (из файла config. php)? Можно, конечно, ее проигнорировать и установить глобальные переменные для каждого домена в index.
php. Но тогда придется игнорировать и функции типа anchor В общем, похоже ваш вариант самый подходящий.