我正在Codeigniter开始一个新的网站项目。我需要这个网站是多语言的,英语将成为默认语言。 我知道codeigniter中的语言类是如何工作的,我已经在使用它了。
我担心的是我需要以所选语言显示网址。我将用一个例子来解释自己:
当选择英语语言时,我有以下网址: www.domain.com/cars/list_cars 的 其中汽车是控制器, list_cars 是负责调用相应视图的方法。
选择西班牙语语言时,我希望将网址显示为 www.domain.com/coches/mostrar_coches
实现这一目标的最佳方式是什么?我能想到的唯一方法是改变 routes.php ,例如:
$route['cars/list_cars'] = 'coches/mostrar_coches';
有没有更好/更简单的方法来实现这一目标?
谢谢!
答案 0 :(得分:2)
我使用CodeIgniter和Url翻译了concebe.com。我的解决方案是将所有请求重定向到只有一个控制器,该控制器负责根据转换调用其他函数。见下文:
function dinamic($js,$page,$item=NULL,$id=NULL)
{
switch ($page)
{
case $this->lang->line('products'):
$page='products';
break;
case $this->lang->line('about_us'):
$page='about_us';
break;
...
}
//switch page
switch ($page)
{
case 'contact_us':
$this->template->render($js,$this->_contact_us($js));
return;
break;
}
这不是一个聪明的解决方案也不会帮助你,因为更难,但我必须区分js调用,这是唯一的方法,我希望这有助于某人。
约束:当切换语言时,你丢失了页面,不管你在哪里。
答案 1 :(得分:0)
翻译您的控制器和方法名称是一件令人头痛的事情。您的搜索引擎优化的好处是如此之小,以至于确实不值得做,只要确保您有好的内容。
答案 2 :(得分:0)
我做了你的建议,使用routes.php作为你的本地化网址段。对我来说很好,但对于每个页面,你需要在路径文件中有一个新条目。