我使用两种语言(En& Fr)
在我的数据库中保存了一个产品名称如何通过更改网址
以不同方式加载它们例如
localhost/mysite/en/products/
从表格中加载“en_name”
和
localhost/mysite/fr/products/
为我加载“fr_name”?
答案 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)
如果要将文本以不同语言存储在文件中(它将包含在页面中)而不是数据库中,则使用语言库。因此,如果语言文本存储在数据库中,您需要检查负责检查网址段的方法,以检查网址是否包含en
或fr
并加载相应的语言。
所以使用的方法是:
$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”。