`

Yii框架的多语言设置

    博客分类:
  • YII
 
阅读更多

http://blog.sina.com.cn/s/blog_61e65d1701016zg9.html

 

Yii框架的多语言设置

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框架中文文档、yii中文手册教程

    12. **国际化和本地化**:支持多语言的应用程序开发。 13. **拓展和插件**:如何创建和使用第三方扩展,增强框架功能。 通过这些文档,开发者可以深入理解Yii框架的机制,并学会如何有效地利用它来构建强大的Web...

    yii框架(1.1.15)

    8. **国际化与本地化**:Yii支持多语言应用,1.1.15可能会对国际化和本地化功能进行改进,使开发者更容易创建面向全球用户的网站。 9. **测试工具**:Yii框架提供了一套完整的测试工具,如PHPUnit和Codeception的...

    yii框架语言基础

    - URL管理允许开发者创建简洁易读的URL,国际化支持应用的多语言版本。 Yii框架是一个功能丰富且高度灵活的PHP框架,它旨在帮助开发者快速开发可扩展的Web应用。通过深入学习Yii的MVC架构、组件和模块的使用,以及...

    Yii框架PDF中文文档

    - **国际化**:使应用支持多语言。 - **安全措施**:包括CSRF保护、XSS防护等。 - **性能调整**:提高应用性能的技术手段。 #### 六、常用扩展手册 - **SRBAC**:权限管理扩展,用于实现细粒度的访问控制。 通过...

    Yii框架学习笔记.pdf

    1. **信息翻译**:为了使Web应用支持多语言,Yii框架提供了一套完整的国际化和本地化工具。开发者可以通过翻译信息来实现多语言界面,同时框架还提供了本地化服务,能够根据用户的地区设置自动选择合适语言。 ### ...

    php开发yii框架软件包

    7. **国际化与本地化**:Yii提供强大的I18N和L10N支持,方便进行多语言网站的开发。 8. **AJAX支持**:通过Ajax封装,可以轻松地创建富客户端应用程序,提供更好的用户体验。 9. **命令行工具**:yiic命令行工具...

    Yii框架详解

    Yii内置了i18n(国际化)和l10n(本地化)功能,支持多语言环境。开发者可以通过配置轻松地实现内容的国际化和本地化。 八、强大的错误处理和日志记录 Yii框架提供了强大的错误处理和日志记录机制,能够帮助开发者...

    基于Yii 框架开发的博客

    8. **I18N与L10N**:Yii支持国际化(I18N)和本地化(L10N),方便多语言网站的开发。 回到这个基于Yii框架的博客项目,我们可以推测其基本架构和组成部分: - **用户模块**:包括用户注册、登录、个人资料管理等...

    YII框架开源项目

    9. **多语言支持**:iiSNS支持多语言环境,方便搭建国际化社区。 总的来说,Yii框架与iiSNS论坛的结合,不仅利用了Yii的强大性能和灵活性,还实现了功能丰富的社区应用,为开发者提供了一套高效、可扩展的解决方案...

    Yii框架1.1版本

    5. **I18N与L10N支持**:Yii框架提供了强大的国际化(I18N)和本地化(L10N)支持,方便开发者构建多语言应用。 6. **RESTful API开发**:Yii 1.1支持创建RESTful风格的API,这对于现代Web服务和移动应用的开发尤为...

    yii框架1.1.8

    6. **I18N和L10N**:框架内置了国际化(I18N)和本地化(L10N)支持,方便开发者构建多语言应用。1.1.8版本改进了这部分功能,使翻译更高效准确。 7. **Gii代码生成工具**:Gii是Yii自带的代码生成工具,能自动生成...

    yii php框架最新版本

    8. **国际化与本地化**:Yii内置了完整的i18n(国际化)和l10n(本地化)支持,可以方便地创建多语言的应用程序。 9. **测试框架**:Yii提供了单元测试、功能测试和验收测试的工具,帮助开发者进行代码质量控制。 ...

    yii框架源代码

    8. **I18N和L10N**:国际化(I18N)和本地化(L10N)通过`CMessageSource`和`CLocale`类实现,方便多语言应用的开发。 9. **扩展性**:Yii的插件和模块系统允许开发者轻松添加新的功能,`CModule`类是模块的基类,`...

    yii框架笔记,绝对值得经典

    - **国际化**:支持多种语言,方便创建多语言应用程序。 ### Yii框架的学习与部署 #### 三、学习路径 - **入门**:首先了解Yii的基本概念,包括MVC架构模式、组件模型等。 - **环境搭建**:熟悉如何在本地计算机上...

    uniapp源码外卖联盟小程序-后台PHP源码Yii框架开发的DuAdmin后台源码-.zip

    【标题】"uniapp源码外卖联盟小程序-后台PHP源码Yii框架开发的DuAdmin后台源码-.zip" 涵盖了多个IT领域的关键知识点,主要包括前端开发工具uniapp、后端语言PHP以及用于构建管理后台的DuAdmin框架,还有特定的应用...

    Yii框架多语言站点配置方法分析【中文/英文切换站点】

    本文实例讲述了Yii框架多语言站点配置方法。分享给大家供大家参考,具体如下: 这里假设我们要建立 中文/英文 切换的站点 1. 设置全局默认的语言 文件添加代码:protected/config/main.php 'language' => 'zh_cn'...

    基于Yii 框架开发的博客.zip

    9. 国际化与本地化:Yii提供了完善的i18n和l10n支持,方便博客系统适应多语言环境。 10. 社区活跃:Yii有一个庞大的开发者社区,提供了丰富的扩展和插件,以及详尽的文档和教程,有助于开发者解决问题和提高开发...

    yii框架 最新

    4. I18N和L10N:Yii内置了强大的国际化和本地化功能,支持多语言环境,可以轻松地根据用户所在的地区展示不同的内容。 5. 缓存策略:Yii提供了多种缓存策略,如APC、Memcached、Redis等,通过缓存来提高应用程序的...

    yii框架快速入门--(中文版)并附redmine-wiki对yii的解释

    7. **I18N和L10N**:Yii支持国际化(I18N)和本地化(L10N),方便开发多语言应用。 8. **命令行工具**:Yii提供了一个强大的Gii工具,可自动生成代码,如模型、控制器、迁移等,加速开发进程。 9. **性能优化**:...

Global site tag (gtag.js) - Google Analytics