通过codeigniter链接到语言的多语言网站

时间:2018-08-31 19:13:25

标签: php codeigniter permalinks multilingual

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

0 个答案:

没有答案