2014-01-13 7 views
0

Недавно я начал использовать фреймворки (CodeIgniter), и после многих исследований все еще есть много сомнений, особенно в отношении многоязычного веб-сайта.Перевести маршруты (URL) для многоязычного сайта в codeigniter

Я пытаюсь «перевести» URL-адрес, например, у меня есть en/home и fr/home, но я хотел бы иметь для каждого языка свой собственный перевод как fr/accueil, pt/inicio, и так далее ... Так пока все моя система делает, чтобы изменить язык, но URL-адрес (контроллер) остается на том же языке (на английском языке): en/home, fr/home, pt/home вместо fr/accueil и pt/inicio

Что я должен сделать, чтобы достичь этого своего рода «перевод» или маршрутизация? Лучше ли создавать контроллер для каждого языка и вызывать их отдельно? Я начал это делать, но в какой-то момент я понял, что он чрезвычайно массивный и, вероятно, это не очень хорошая практика. Но мне было проще создать контроллер для каждого языка, но тогда я не знаю, где и в каком файле я должен установить функцию автоматического запуска, чтобы обнаружить/сохранить языковые настройки.

Кроме того, когда я печатаю только язык в моей URL (например, /en, /fr) не «перенаправить» к главному контроллеру (дома):

// '/en', '/de', '/fr' and '/nl' URIs -> use default controller 
$route['^(en|fr|pt)$'] = $route['default_controller']; 

Это не работает для меня, если я тип "/" после языка: /fr/ работает нормально !, /fr не работает!

+0

В моем варианте это не имеет значения, если ваш контроллер не совпадает с выбранным в данный момент языком, пользователь не будет просматривать ваш сайт с помощью 'url', он будет просматривать его через« меню »и« ссылки », которые вы предоставили , Это то, что вы должны сделать. Но если вы действительно хотите эту функциональность, вам придется добавлять или вызывать разные контроллеры для разных языков. – tomexsans

ответ

0

Я успешно использую подход к настройке файла cookie для языка вместо его использования в URI, а затем все сегменты URI, установленные в базе данных страниц, для каждого языка, а затем в моей модели страницы загружаю правильный URI языка и текст на основе файла cookie.

Теперь единственная оставшаяся проблема маршрутизация, я установить что-то вроде этого в конце моего файла маршрутов, перенаправляя все остальные запросы к способу страницы контроллера:

$route['(:any)'] = "main/pages"; 
$route['(:any)/(:any)'] = "main/pages"; 

Таким образом, я могу иметь как страницу URI и подменю URI с моей локализованной версией.

+0

спасибо! это действительно возможность, а также оставить URL-адрес на английском языке для всех языков. но я действительно хочу добиться этого с помощью CI. Я знаю другие способы, как получить результат, который я хочу, но я думаю, что мои возможные решения могут быть не лучшими способами с точки зрения передового опыта и шаблонов ... – PauloBraga