到目前为止,我设法在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”,这样对搜索引擎会很好?