Сменить язык на лету - PullRequest
       1

Сменить язык на лету

2 голосов
/ 27 февраля 2012

У меня есть контроллер приветствия, который позволяет пользователю выбрать язык (en или fr), который затем указывает на соответствующий контроллер (en или fr), поэтому URL выглядит следующим образом:FUNC.Я хотел бы, чтобы была ссылка, которая может изменить язык, и я хотел бы, чтобы она переключала язык, но оставалась на той же странице.Просто возьмите соответствующие языковые строки из соответствующих языковых файлов.

Какой лучший способ сделать это?

Ответы [ 3 ]

2 голосов
/ 27 февраля 2012

Вы должны использовать для этого маршрутизацию, в вашем routes.php вы должны добавить это:

$route['([a-z]{2})/(:any)'] = 'yourdefaulthomecontroller/$2/lang/$1'; // rearrange as you like

Тогда в вашем контроллере по умолчанию вы можете найти rsegment и использовать его против всего, что вам нужно.

print_r($this->uri->rsegment_array()); // This will print out the routes

На практике:

if($this->uri->rsegment(3) == 'lang' && $this->uri->rsegment(4))
{
    // Do something
}
0 голосов
/ 27 февраля 2012

Как вы в настоящее время достигаете I18N? Всякий раз, когда я имею дело с несколькими языками на сайте, я использую класс синтаксического анализатора, поскольку он позволяет очень легко добавлять несколько языков.

Используя это, довольно легко переключать языки, определяя язык, запрошенный в URL.

Если под "на лету" вы имеете в виду изменение языка без перерисовки страницы, то это совсем другое дело.

0 голосов
/ 27 февраля 2012

Самый простой способ - добавить к вашим переменным языковым ссылкам переменные, которые необходимо сохранить после перезагрузки страницы.

, поэтому найдите в своем коде все переменные навигации и просто добавьте их к своим языковым ссылкам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...