Мне удалось сделать многоязычный веб-сайт на codeigniter, мне потребовалось некоторое время и много исследований, чтобы выяснить это, поэтому я также опубликую детали здесь на случай, если кто-то хочет сделать то же самое и Также вы можете помочь мне с моей проблемой ..
Проблема в том, что я хочу, чтобы ссылки на мои сайты были такими:
http://www.example.com/
http://www.example.com/ru
http://www.example.com/it ...etc
Я использовал этот урок, чтобы сделать это:
https://www.cloudways.com/blog/multi-language-codeigniter/
У меня есть переключатель языка в представлениях таким образом
<form method="POST" action="<?= base_url() ?>LanguageSwitcher/switchlang">
<input type="hidden" name="uri" value="<?= uri_string(); ?>" />
<select name="language" onchange="this.form.submit()">
<option>Select language</option>
<option value="en">English</option>
<option value="ru">Russian</option>
<option value="it">Italian</option>
</select>
</form>
так что в основном я сохраняю выбор языка в сеансе, чтобы позже я мог использовать его для "где получить" для извлечения из базы данных
и вот мой файл маршрутов
$route['news/(:any)'] = 'news/index/$1';
$route['news'] = 'news';
$route['default_controller'] = 'pages/view';
$route['(:any)'] = 'pages/view/$1';
и вот мой конфигурационный файл, я пытался сделать это
if (isset($_SESSION['site_lang'])) {
if ($_SESSION['site_lang'] == "en") {
$base_url = 'http://localhost/codeigniter/';
}else{
$base_url = 'http://localhost/codeigniter/'.$_SESSION['site_lang'].'/';
}
}else{
$base_url = 'http://localhost/codeigniter/';
}
$config['base_url'] = $base_url;
но это не сработало, и даже если бы это сработало, URI даже не распознает, что находится в ссылке "/ ru"
главный вопрос в том, есть ли способ сделать то, что я пытаюсь сделать в codeigniter, без использования моделей или создания различных методов lang для каждого lang в контроллерах?
есть ли способ, которым я мог бы просто выглядеть так: "example.com/ru" для каждого языка, так что это было бы хорошо для поисковых систем?