怎麼使用CDbMessageSource(). [ 新手入门 ]
Yii 含有如下几种信息源。你也可以扩展 CMessageSource 创建自己的信息源类型。
CPhpMessageSource: 信息的翻译存储在一个 PHP 的 键值对 数组中。 原始信息为键,翻译后的信息为值。每个数组表示一个特定信息分类的翻译,分别存储在不同的 PHP 脚本文件中,文件名即分类名。 针对同一种语言的 PHP 翻译文件存储在同一个以区域 ID 命名的目录中。而所有的这些目录位于 basePath 指定的目录中。
CGettextMessageSource: 信息的翻译存储在 GNU Gettext 文件中。
CDbMessageSource: 信息的翻译存储在数据库的表中。更多细节,请查看 CDbMessageSource 的 API 文档。
我的做法是:YII默認是用CPhpMessageSource做翻譯的也就是在message下面建一個文件夾如zh_cn,裏面再建一個分類如default.php,然後再default裏面寫上數組實現翻譯。
現在的問題是:由於翻譯可能需要修改。所以想做一個模塊。對翻譯進行增加與修改功能。而如果用CPhpMessageSource方法。每次增加或者修改。就要修改文件裏面的數組。也就意味著這個文件清空。重新寫入。。所以我想用CDbMessageSource方法。把翻譯的數據寫入數據庫。剛才也提到YII默認是用CPhpMessageSource做翻譯的。那我如何使CDbMessageSource生效而CPhpMessageSource失效了?
共 1 条回复
-
先把数据表结构导入:
CREATE TABLE SourceMessage ( id INTEGER PRIMARY KEY, category VARCHAR(32), message TEXT ); CREATE TABLE Message ( id INTEGER, language VARCHAR(16), translation TEXT, PRIMARY KEY (id, language), CONSTRAINT FK_Message_SourceMessage FOREIGN KEY (id) REFERENCES SourceMessage (id) ON DELETE CASCADE ON UPDATE RESTRICT );
然后在配置文件里配置组件:
'message'=>array( 'class'=>'CDbMessageSource', 'connectionID'=>'db', 'sourceMessageTable'=>'{{SourceMessage}}', 'translatedMessageTable'=>'{{Message}}', ),
接下来就尽情使用吧,哈哈
resory 廣東
注册时间:2012-07-20
最后登录:1970-01-01
在线时长:0小时0分
最后登录:1970-01-01
在线时长:0小时0分
- 粉丝0
- 金钱30
- 威望0
- 积分30