1

我正在使用这个URI 语言标识符

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;,所以 URL 显示了我当前使用的语言,就像上面一样。

问题:如何让用户在语言之间切换?

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

谢谢

4

2 回答 2

1

你有几个选择...

  • site_url 将始终在末尾返回 /en 或 /es 或路径的任何位,因此您可以使用字符串函数来破坏(删除)结束位并添加您自己的。

  • 您可以设置具有站点名称并引用该站点名称的配置属性(“http://localhost/internationalisation/index.php”),然后附加您的语言标识符。

  • 您可以将相对路径和 basename 函数与FILE魔术常量一起使用

<?php echo basename(__FILE__) . '/en'; ?>
于 2012-11-05T17:42:03.097 回答
0

遵循 LastCoder 的第一个建议:

配置:

$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));
        }
    }
}
于 2012-11-06T09:27:34.400 回答