2012-04-06 57 views
2

我正在用Codeigniter 2.1构建我的应用程序,并且使用i18n多语言库,并且一切正常。当我翻译当前页面时,唯一的问题就出现了,没关系,但当我更改页面时,它会以默认语言返回。例如:Codeigniter 2.1 switch_uri()和i18n语言库

myapp.com/en/home

点击锚(switch_uri( '德'))

myapp.com/de/home

现在跟随链接到另一个控制器和它回来到默认 语言

myapp.com/en/about

那么我该如何修复它,当我切换控制器时,语言保持最后选择的状态,而不是默认的状态?

在此先感谢。 :)

编辑:

这些是我的主页来改变页面语言。我想我可能会使用某种cookie来保存用户的语言,并在下一次控制器负载中得到它,但我确信有更简单和容易的事情。

<ul id="languages"> 
    <li><a href="<?= base_url($this->lang->switch_uri('bg')) ?>" class="lang-bg"></a></li> 
    <li><a href="<?= base_url($this->lang->switch_uri('en')) ?>" class="lang-en"></a></li> 
</ul> 

有我的链接,在主菜单中的其他页面:

<li> 
    <?= anchor(base_url('about'), 'about') ?> 
</li> 
+0

你可以发布代码,你有链接? – Altrim 2012-04-06 21:31:13

+0

我编辑了我的问题上面。 :) – suricactus 2012-04-07 14:43:35

+0

不,我的意思是控制器的链接。如果你已经正确实施,不应该是他们应该工作的问题,并且语言不应该改变。我询问了链接,看看你是否有硬编码的语言(controller/function/en),如果你在这样的链接中硬编码语言,那么你应该在最后删除语言参数。 – Altrim 2012-04-07 17:25:36

回答

1

好吧,我可以看到的问题是在你使用BASE_URL()的链接。尝试不带base_url()的链接。

<?php echo anchor('about/index/', 'About'); ?> 
+0

谢谢。我真的不知道base_url()会导致问题。你救了我的命。再次感谢! :) – suricactus 2012-04-07 18:51:14

+1

我有完全相同的问题,我不使用'base_url''锚('auth/logout','注销')'和语言改变后(我改变语言trhru链接,例如'localhost/project/en'或'localhost/project/fr'(单击第二个链接后语言已更改?或者我需要做什么才能更改语言? – Kyslik 2013-06-17 11:23:23

+0

@Kyslik我不再使用codeigniter,但上次我使用i18n库时,我使用了这个[这里](https://github.com/EllisLab/CodeIgniter/wiki/CodeIgniter-2.1-internationalization-i18n)。检查一下,看看它是否有帮助。 – Altrim 2013-06-17 21:47:26