如何在codeigniter中更改语言

时间:2014-04-13 16:36:04

标签: php codeigniter

我使用两种语言(En& Fr)

在我的数据库中保存了一个产品名称

如何通过更改网址

以不同方式加载它们

例如

localhost/mysite/en/products/

从表格中加载“en_name”

localhost/mysite/fr/products/

为我加载“fr_name”?

3 个答案:

答案 0 :(得分:1)

我认为最简单的方法可能是将uri段传递给查询的where子句。

https://www.codeigniter.com/user_guide/libraries/uri.html

https://www.codeigniter.com/user_guide/database/query_builder.html?highlight=select#selecting-data

类似的东西:

$lang = $this-uri->segment(3);
$this->db->where('language', $lang);
$this->db->get('table');

答案 1 :(得分:1)

如果要将文本以不同语言存储在文件中(它将包含在页面中)而不是数据库中,则使用语言库。因此,如果语言文本存储在数据库中,您需要检查负责检查网址段的方法,以检查网址是否包含enfr并加载相应的语言。

所以使用的方法是:

$this->uri->segment(n)

有关如何使用它的更多信息:
https://www.codeigniter.com/user_guide/libraries/uri.html

你的情况应该是这样的:
修改

if($this->uri->segment(1) == "fr"){
   $this->session->set_userdata('lang', 'fr');
}else{
   $this->session->set_userdata('lang', 'en');
}

现在,您可以通过检查model会话的值

,轻松检查从lang(db文件)中选择的语言

答案 2 :(得分:0)

我终于使用此CI扩展程序i18n完成了此操作,这是我的代码:

$lang = $this->uri->segment(1);
echo $prodct[$lang."_name"];

所以如果我像这样输入我的网址

localhost/mysite/en/products/

它会从DB获取那些字段,就像“en_name”, 同样也适用于“fr”。