我正在使用此URI Language Identifier
http://localhost/internationalisation/index.php/en/
http://localhost/internationalisation/index.php/en/welcome/
http://localhost/internationalisation/index.php/en/contact/
http://localhost/internationalisation/index.php/es/
http://localhost/internationalisation/index.php/es/welcome/
我已设置$config['lang_ignore'] = FALSE;
,因此该网址会显示我目前正在使用的语言。
问题:如何让用户在语言之间切换?
View中的这些代码不起作用:
<a href="<?php echo site_url('en'); ?>">English</a>
<a href="<?php echo site_url('es'); ?>">Spanish</a>
因为他们会产生这样的链接:
http://localhost/internationalisation/index.php/en/en
http://localhost/internationalisation/index.php/en/es
由于
答案 0 :(得分:1)
你有几个选择......
site_url将始终返回/ en或/ es或末尾路径的任何位,以便您可以使用字符串函数来修改(删除)结束位并添加自己的位。
< / LI>您可以设置具有站点名称和引用的配置属性(“http://localhost/internationalisation/index.php”),然后附加您的语言标识符。
您可以使用相对路径和basename函数以及 FILE 魔术常量
<?php echo basename(__FILE__) . '/en'; ?>
答案 1 :(得分:0)
跟随LastCoder的第一个建议:
<强> CONFIG:强>
$config['lang_ignore'] = FALSE;
查看:强>
<a href="<?php echo site_url('language/en'); ?>">English</a>
<a href="<?php echo site_url('language/es'); ?>">Spanish</a>
<强>控制器:强>
class Language extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->helper('url');
$lang_uri_abbr = $this->config->item('lang_uri_abbr');
if ($this->uri->segment(2) === false ||
! isset($lang_uri_abbr[$this->uri->segment(2)]))
{
redirect();
}
else
{
$site_url = substr(site_url(), 0, -2);
redirect($site_url . $this->uri->segment(2));
}
}
}