[解决]转换语言时的链接

使用多语言的时:

  1. 我在VIEW层里生成切换到当前页面的其它语言的链接, 这个链接怎么生成呢?

  比如,  /post/index?id=1 或 /post/index 或 /post/index , 那如何把语言把语言附加上呢?

  注: 是指在任何页都可以转到当前页面的其它语言的该页面, 而非指定的 array('post/index')

  1. 如何能用路由规则来解决上面这个问题?

比如, 语言版本有 en_us, zh_cn. 能不能使用  post/index/en_us/id/1 和post/index/zh_cn/id/1 来切换语言呢?

  1. 我这样使用本地化和语言对吗?


// path: controllers/BaseController.php


// $defaultLocale => ('en_us', 'zh_cn', ...)中的一个


$this->_locale = Yii::app()->getLocale($defaultLocale);


Yii::app()->setLanguage($defaultLocale);


$this->_language = Yii::app()->getLanguage();


  1. 不是太明白你的要求。你可以用$this->createUrl('post/index', array('id'=>1, 'lang'=>$lang)创建出包含语言参数的链接。

  2. 路由规则可以是:

'post/index/<lang:\w+_\w+>/*'=>'post/index'

  1. 你不需要额外去设locale了。当你setLanguage()后,缺省的locale就是这个语言所对应的locale。你可以直接使用Yii::app()->numberFormatter。

谢谢强哥的回答

第一个问题。 我在网站中的任何一个页面, 点击另一种语言的按钮, 都会跳转到该语言的页面。 这一部分代码是放在layout里面, 是公用的。 使用 Yii::app()->getRequest()->getUrl() 得到该页的链接, 可是我不知道怎么把语言加到链接, 并且用 createUrl()的方式写出来。

不知道我描述清楚了没有~~

以手册里的链接为例:

http://www.yiiframew…h_cn/topics.url

http://www.yiiframew…e/de/topics.url

除了 doc/guide 之外, 我另外两个(当然是不存在的):

http://www.yiiframew…h_cn/topics.url

http://www.yiiframew…h_cn/topics.url

如果我把几个切换语言的按钮放在layout里,

那这个链接应该怎么写呢?

你可以参考一下CPagination::createPageUrl()的做法。

谢谢!

这就是我想要的!