当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

Yii框架的多语言设置

发表于: 2013-02-04   作者:dcj3sjt126com   来源:转载   浏览次数:
yii
摘要: Yii  框架的缺省语言是美国英语(en_us )。但是身在在中国,又希望致力于中国企业的信息化建设,所以让Yii 支持多语言(至少简体中文和美国英语)那是必须的。 1.       全局语言 和其它application 级别的配置一样,系统的缺省语言可以在protected/config/main.php 中设置:
Yii  框架的缺省语言是美国英语(en_us )。但是身在在中国,又希望致力于中国企业的信息化建设,所以让Yii 支持多语言(至少简体中文和美国英语)那是必须的。
1.       全局语言
和其它application 级别的配置一样,系统的缺省语言可以在protected/config/main.php 中设置:
                               return array(
                                                             'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',
                                                              ......
                                                              'language'=>'zh_cn',  //*** 不设置的话缺省为 en_us
 
2.       Controller  级别
由于Yii 框架中Controller 掌控几乎全部的Views ,所以我们可以通过在Controller 的初始化函数中指定该Controller 控制的所有Views 的缺省语言。
       
    class foo extends Controller
                {
                              public function init()
                              {
                                            Yii::app()->language = ‘zh_cn’;
                              }
                              ……
 
需要动态切换语言的系统需要更多的逻辑。目前通行的做法是在页面的某个位置(多数是右上角)放置语言的链接,例如:中文 | English 。
echo CHtml:: link ( ' 中文 ' , array ( '' , 'hl' => 'zh' )) . '| ' . CHtml:: link ( 'English' , array ( '' , 'hl' => 'en' )) ;
 
这样在点击相应的语言链接之后,利用Cache 将语言选择保存在服务器端。同样在Controller::init() 函数中根据Cache 中缓存的语言设置系统的缺省语言。
public function init()
{
        If (isset ($_GET['hl']) && 'en'===$_GET['hl'])
{
setcookie ("hl", 'en_us');
$_COOKIE['hl']='en_us';   //cookie 不能立刻生效 
}
else if (isset ($_GET['hl']) && 'zh'===$_GET['hl'])
{
unset ($_COOKIE['hl']);
setcookie ("hl", "");
}
 
If ('en_us'==$_COOKIE['hl'])
{
Yii::app()->language='en_us';
}
}
 
3.       文本翻译
为了解决文本的不同语言版本的动态选择,Yii 框架提供一个全局性的函数Yii::t(‘[text file]’, ‘[text]’) 用来封装所有需要多语言支持的文本。其中第一个参数’[text file]’ 代表存储当前语言文本的文件,第二个参数‘[text] ’是文本编码。’[text]’ 通常就是该文本在系统的缺省语言中的版本。例如:Yii 框架缺省的系统语言是美国英语,所以’[text]’通常就是文本的英文语意。但是如果在protected/config/main.php 中设置系统的缺省语言是简体中文,那么’[text]’ 应该是文本的简体中文语意。以文本“Name (名称)”为例,如果系统语言是美国英语,我们可以将’[text]’ 定义为’Name’;而当系统语言是简体中文时,’[text]’ 应该定义为’ 名称’ 。
 
和大多数多语言框架一样,Yii 框架也将不同语言的文本保存在该语言对应的目录下,作为一个资源。基于Yii 框架的系统在根目录下有一个messages 目录([webapp]/messages )。简体中文资源放置在[webapp]/messages/zh_cn 下,美国英语资源放置在[webapp]/messages/en_us 下。所有语言资源都是以PHP 文件的形式存在,且都返回一个包含若干Key/Value 对的数组。其中Key 就是Yii::t() 的第二参数’[text]’ 。仍以文本“Name (名称)”为例,如果系统语言是美国英语,语言资源文件中对应的Key/Value 应该是’Name’=>’ 名称’ ; 而当系统语言是简体中文时,Key/Value 应该是’ 名称’=>’Name’ 。值得注意的是,因为Yii 框架是使用UTF-8 编码,所以语言资源文件也必须是UTF-8 编码。否则显示文本时会出现乱码。
 
       Yii  框架在运行时,会首先根据Yii::app()->language 的值定位到对应语言目录下的[text file].php 文件。然后再根据’[text]’ 在Key/Value 对数组中定位该’[text]’ 对应的语言文本,作为最终显示的文本。

Yii框架的多语言设置

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
yii2的多语言个yii1几乎类似 1.设置默认语言:在mail.php配置文件加上:'language'=>'zh-CN' 2.多语
一、下载Yii 在部署yii框架之前首先要搭建好php环境,这里就不说搭建环境的问题了(这里已经部署好w
  Yii是重量级框架,类似于同ruby on rails,django是同一类型的框架,所以其有的特点在其他框架上
早上在ruby-china发了个帖子,询问“现今PHP的框架中最接近RAILS的是什么?”大部分答曰"Yii”。所
YII框架实现排序 用YII2实现批量修改排序功能,如下图 控制器: /** * Lists all CollectionAlbum m
1.下载框架解压,复制framework 2.可以看一下里边的目录结构 3.将framework文件夹复制到你想要存放
必须说明的是,本教程里所有的YII框架开发网站项目是整合Smarty来开发的,Smarty作为最成熟使用最多
1、在程序运行文件夹例如“\Bin\Debug\”中包含csla生成的资源文件: 2、在程序运行时,设置CSLA的
1,在../models/NewDemand.php中定义page方法 //默认20条记录 public function page($size = 20, $in
Yii Framework是一个基于组件、用于开发大型 Web 应用的高性能 PHP 框架。Yii提供了今日Web 2.0应用
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号