我们要开启组件中们关于语言的配置,默认的就是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中。
- 配置 CApplication::sourceLanguage 和 CApplication::language。
在一个 Yii 应用程序中,我们区分了它的 目标语言(target language) 和 源语言(source language)。
目标语言是应用程序的目标用户的语言(区域), 而源语言是指写在应用程序源代码中的语言(区域)。国际化仅会在这两种语言不同的情况下发生。
#配置文件中
‘sourceLanguage‘=>‘en_us‘,
‘language‘=>‘zh_cn‘,
来源: <http://www.yiichina.com/guide/topics.i18n>
时间: 2024-10-14 15:57:22