總體來說,要實現信息翻譯,需要執行如下幾步:
在合適的位置調用 Yii::t() ;
以 protected/messages/LocaleID/CategoryName.php 的格式創建 PHP 翻譯文件。 每個文件簡單的返回一個信息翻譯數組。 注意,這是假設你使用默認的 CPhpMessageSource 存儲翻譯信息。
配置 CApplication::sourceLanguage 和 CApplication::language。
因此第一步為Application添加合適的配置:
[php]
<?php
// This is the main Web application configuration. Any writable
// CWebApplication properties can be configured here.
return array(
'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',
'sourceLanguage'=>'en',
'language'=>'zh_cn',
'name'=>'i18nDemo',
...
// application components
'components'=>array(
'coreMessages'=>array(
'basePath'=>'protected/messages',
),),
);
<?php
// This is the main Web application configuration. Any writable
// CWebApplication properties can be configured here.
return array(
'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',
'sourceLanguage'=>'en',
'language'=>'zh_cn',
'name'=>'i18nDemo',
...
// application components
'components'=>array(
'coreMessages'=>array(
'basePath'=>'protected/messages',
),),
);
源語言為en,目錄語言為中文(zh_cn) ,翻譯信息的目錄為protected/messages.
然後再protected/messages 創建zh_cn 目錄,如果還需要支持其它語言,可以創建相應的目錄,然後在zh_cn創建一個yii.php ,其中yii 做為翻譯時的分類名(你可以選擇你自己喜歡的名字)。
檢查代碼中需要翻譯的地方,然後在yii.php 文件中定義對應的翻譯:
[php]
return array (
'Application Name' => '應用程序名稱',
'Greetings from Santa'=>'來自聖誕老人的問候',
'firstName'=>'名',
'lastName'=>'姓',
'Choose your Christmas Gift'=>'選擇你喜歡的聖誕禮物',
'iPad'=>'iPad',
'Remote control helicopter'=>'遙控直升飛機',
'60 inch 3D LED TV'=>'60寸3D LED電視',
'Holy Bible'=>'聖經',
'Choose your Christmas dinner'=>'選擇你聖誕節晚餐',
'Egg'=>'雞蛋',
'Ham'=>'火腿',
'Chicken'=>'雞',
'Pork'=>'豬肉',
'Beer'=>'啤酒',
'Coke'=>'可樂',
'Wine'=>'白酒',
'Submit'=>'提交',
'Merry Christmas'=>'聖誕快樂',
'On Christmas Day,You will be given'=>'聖誕節那天你將獲得',
'And you will have'=>'你可以有',
'for Christmas dinner'=>'作為聖誕晚餐',
'Start Again'=>'重新選擇'
);
1
然後將原先使用英文字符串的地方換成yii::t('yii',xxx);比如DataModel.php
1
public function getGifts()
{
return array(
'1'=>Yii::t('yii','iPad'),
'2'=>Yii::t('yii','Remote control helicopter'),
'3'=>Yii::t('yii','60 inch 3D LED TV'),
'4'=>Yii::t('yii','Holy Bible'),
);
}
public function getMeals()
{
return array(
'1'=>Yii::t('yii','Egg'),
'2'=>Yii::t('yii','Ham'),
'3'=>Yii::t('yii','Chicken'),
'4'=>Yii::t('yii','Pork'),
'5'=>Yii::t('yii','Beer'),
'6'=>Yii::t('yii','Coke'),
'7'=>Yii::t('yii','Wine'),
);
}
return array (
'Application Name' => '應用程序名稱',
'Greetings from Santa'=>'來自聖誕老人的問候',
'firstName'=>'名',
'lastName'=>'姓',
'Choose your Christmas Gift'=>'選擇你喜歡的聖誕禮物',
'iPad'=>'iPad',
'Remote control helicopter'=>'遙控直升飛機',
'60 inch 3D LED TV'=>'60寸3D LED電視',
'Holy Bible'=>'聖經',
'Choose your Christmas dinner'=>'選擇你聖誕節晚餐',
'Egg'=>'雞蛋',
'Ham'=>'火腿',
'Chicken'=>'雞',
'Pork'=>'豬肉',
'Beer'=>'啤酒',
'Coke'=>'可樂',
'Wine'=>'白酒',
'Submit'=>'提交',
'Merry Christmas'=>'聖誕快樂',
'On Christmas Day,You will be given'=>'聖誕節那天你將獲得',
'And you will have'=>'你可以有',
'for Christmas dinner'=>'作為聖誕晚餐',
'Start Again'=>'重新選擇'
);
1
然後將原先使用英文字符串的地方換成yii::t('yii',xxx);比如DataModel.php
1
public function getGifts()
{
return array(
'1'=>Yii::t('yii','iPad'),
'2'=>Yii::t('yii','Remote control helicopter'),
'3'=>Yii::t('yii','60 inch 3D LED TV'),
'4'=>Yii::t('yii','Holy Bible'),
);
}
public function getMeals()
{
return array(
'1'=>Yii::t('yii','Egg'),
'2'=>Yii::t('yii','Ham'),
'3'=>Yii::t('yii','Chicken'),
'4'=>Yii::t('yii','Pork'),
'5'=>Yii::t('yii','Beer'),
'6'=>Yii::t('yii','Coke'),
'7'=>Yii::t('yii','Wine'),
);
}