Yii实现站点多语言切换
2013-06-27 15:37
696 查看
1. 设置全局默认的语言
在 protected/config/main.php 文件内添加如下代码,默认语言为中文。
重写protected/components/Controller.php
protected/views/layouts/main.php 中添加语言切换链接
使用Yii:t()或者protected/views下面添加对应语言的页面。
摘自:
http://vsfor.blog.51cto.com/4165449/1184156 http://blog.forecho.com/archives/800
在 protected/config/main.php 文件内添加如下代码,默认语言为中文。
'language' => 'zh_cn',2.控制器根据用户选择动态切换语言
重写protected/components/Controller.php
<?php /** * Controller is the customized base controller class. * All controller classes for this application should extend from this base class. */ class Controller extends CController { /** * @var string the default layout for the controller view. Defaults to '//layouts/column1', * meaning using a single column layout. See 'protected/views/layouts/column1.php'. */ public $layout='//layouts/column1'; /** * @var array context menu items. This property will be assigned to {@link CMenu::items}. */ public $menu=array(); /** * @var array the breadcrumbs of the current page. The value of this property will * be assigned to {@link CBreadcrumbs::links}. Please refer to {@link CBreadcrumbs::links} * for more details on how to specify this property. */ public $breadcrumbs=array(); /** * 设置当前站点显示的语言 */ public function init() { if(isset($_GET['lang']) && $_GET['lang'] != "") { // 通过传递参数更改语言 Yii::app()->language = $_GET['lang']; // 设置COOKIE, Yii::app()->request->cookies['lang'] = new CHttpCookie('lang', $_GET['lang']); } else if (isset(Yii::app()->request->cookies['lang']) && Yii::app()->request->cookies['lang']->value != "") { // 根据COOKIE中语言类型来设置语言 Yii::app()->language = Yii::app()->request->cookies['lang']->value; } else { // 根据浏览器语言来设置语言 $lang = explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']); Yii::app()->language = strtolower(str_replace('-', '_', $lang[0])); } } /** * 用于生成多语言链接 * @param type $lang * @return string */ public function langurl($lang = 'en_us') { if ($lang == Yii::app()->language) { return null; } $current_uri = Yii::app()->request->requestUri; if (strrpos($current_uri, 'lang=')) { //防止生成的 url 传值出现重复 $langstr = 'lang=' . Yii::app()->language; $current_uri = str_replace('?' . $langstr . '&', '?', $current_uri); $current_uri = str_replace('?' . $langstr, '', $current_uri); $current_uri = str_replace('&' . $langstr, '', $current_uri); } if (strrpos($current_uri, '?')) { return $current_uri . '&lang=' . $lang; } else { return $current_uri . '?lang=' . $lang; } } }3.页面提供切换语言选项
protected/views/layouts/main.php 中添加语言切换链接
<div id="header"> <div id="logo"><?php echo CHtml::encode(Yii::app()->name); ?></div> <div style="text-align: right"> <?php echo CHtml::link ( ' 中文简体 ' , $this->langurl('zh_cn')) . '| ' . CHtml::link ( ' 中文繁体 ' , $this->langurl('zh_tw')) . '| ' . CHtml::link ( ' English ' ,$this->langurl('en_us')) ; ?> </div> </div>4.多语言描述文字
使用Yii:t()或者protected/views下面添加对应语言的页面。
摘自:
http://vsfor.blog.51cto.com/4165449/1184156 http://blog.forecho.com/archives/800
相关文章推荐
- Yii实现站点多语言切换
- Yii2.0 实现多语言切换
- Android实现app应用多语言切换功能
- 巧用枚举类型,实现项目的多语言切换
- [Yii Framework] Yii多语言站点
- C#实现多国语言的界面切换
- UWP 实现App多语言为所欲为切换
- Android应用内语言切换实现
- 使用jquery-i18n-properties实现多语言切换,自动选择,及持久化
- 程序实现多国语言的动态切换解决方案
- php简单实现多语言切换的方法
- 在Android App里实现语言切换
- [iOS]怎么在iOS开发中切换显示语言实现国际化
- [Cocoa]_[初级]_[Cocoa开发应用实现多语言之间自由切换]
- asp.net&nbsp;2.0实现语言和主题的切换
- iOS中代码支持多国语言切换的实现(Xcode5+iOS7)
- [导入]Web站点风格切换的实现
- QT实现多国语言的动态切换
- Android(国际化)多语言的实现和切换
- c++实现动态多国语言的动态切换