yii框架详解 之 国际化 (I18N)
2024-08-27 01:13:30
我们要开启组件中们关于语言的配置,默认的就是CPhpMessageSource,也可以改为其他的方式。
#组件配置中'messages' => array('class'=>'CPhpMessageSource',),
Yii 含有如下几种信息源。你也可以扩展 CMessageSource 创建自己的信息源类型。
CPhpMessageSource: 信息的翻译存储在一个 PHP 的 键值对 数组中。 原始信息为键,翻译后的信息为值。每个数组表示一个特定信息分类的翻译,分别存储在不同的 PHP 脚本文件中,文件名即分类名。 针对同一种语言的 PHP 翻译文件存储在同一个以区域 ID 命名的目录中。而所有的这些目录位于 basePath 指定的目录中。
CGettextMessageSource: 信息的翻译存储在 GNU Gettext 文件中。
CDbMessageSource: 信息的翻译存储在数据库的表中。更多细节,请查看 CDbMessageSource 的 API 文档。
信息源是作为一个 应用程序组件 载入的。 Yii 预定义了一个名为 messages 的应用程序组件以存储用户程序中用到的信息。 默认情况下,此信息源的类型是 CPhpMessageSource ,而存储这些 PHP 翻译文件的目录是protected/messages
。
总体来说,要实现信息翻译,需要执行如下几步:
在合适的位置调用 Yii::t() ;
echo Yii::t('common','error_404');
以
protected/messages/LocaleID/CategoryName.php
的格式创建 PHP 翻译文件。 每个文件简单的返回一个信息翻译数组。 注意,这是假设你使用默认的 CPhpMessageSource 存储翻译信息。return array(
'error_404' => '抱歉,没有找到页面!',
);
注意:CategoryName是自定义的,比如我把通用的一些提示语言都放在common.php中,把相关模块的语言都放在moduleName.php中。
在一个 Yii 应用程序中,我们区分了它的 目标语言(target language) 和 源语言(source language)。目标语言是应用程序的目标用户的语言(区域), 而源语言是指写在应用程序源代码中的语言(区域)。国际化仅会在这两种语言不同的情况下发生。
#配置文件中'sourceLanguage'=>'en_us','language'=>'zh_cn',
最新文章
- 当前端也拥有 Server 的能力
- Selenium Remote-Control架构
- Linux下安装Java环境配置步骤详述
- MySQL Database on Azure 参数设置
- [bzoj 1004][HNOI 2008]Cards(Burnside引理+DP)
- android.os.DeadObjectException memory near r0: 异常处理 Consumer closed input channel or an error occurred. events=0x9
- AppUse学习笔记
- IOS开发之动态获取模型的属性值
- [转载] .NET 中可以有类似 JVM 的幻像引用吗?
- java(8)二重循环
- os、os.path模块(文件/目录方法)
- 【mysql】一个很小但很影响速度的地方
- 安装tensorflow,那叫一个坑啊
- Python2 字典 cmp() 函数
- 在普通Java类里使用spring里注入的service、dao等
- RedHat Linux文本模式下乱码解决方法
- LOJ#2882. 「JOISC 2014 Day4」两个人的星座(计算几何)
- 牛B三人组-快速排序-堆排序-归并排序
- sql: Compare Tables
- MFC【17-1】线程和线程同步化