W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Your new understanding has made you powerful. Please use your new powers for good.
一直以來,我們都是硬編碼方式返回中文的文案或者提示,如:
$rs['msg'] = '用戶不存在';
這種寫法在項(xiàng)目根本不需要考慮國(guó)際化翻譯時(shí),是完全沒問題的。
當(dāng)我們需要進(jìn)行翻譯時(shí),可以這樣進(jìn)行調(diào)整:
$rs['msg'] = T('user not exists');
然后在對(duì)應(yīng)的翻譯文件中(如中文對(duì)應(yīng)文件是:./Language/zh_cn/common.php)添加對(duì)應(yīng)的翻譯即可:
// $vim ./Language/zh_cn/common.php
return array(
'user not exists' => '用戶不存在',
);
有時(shí),我們需要?jiǎng)討B(tài)返回一些值,這里可以用 大括號(hào) 將需要?jiǎng)討B(tài)替換的值包住并提供替換的參數(shù)即可,一如:
echo T('hello {name}', array('name' => 'dogstar'));
如果對(duì)應(yīng)的中文翻譯是:
'hello {name}' => '您好,{name}',
將會(huì)看到輸出:
您好,dogstar
如果要簡(jiǎn)化動(dòng)態(tài)變量的傳遞,可以這樣:
echo T('{0} I love you because {1}', array('PhalApi', 'no reasons'));
如果對(duì)應(yīng)的中文翻譯是:
'{0} I love you because {1}' => '{0} 我愛你因?yàn)閧1}',
將會(huì)看到輸出:
PhalApi 我愛你因?yàn)閚o reasons
翻譯不存在,有兩種場(chǎng)景:一是指定的語言包不存在;二是語言包存在但翻譯不存在。無論何種情況,找不到翻譯時(shí),都會(huì)用代碼硬編碼的內(nèi)容返回。
當(dāng)我們擁有了多種語言時(shí),則可以在入口/初始化文件中,選擇設(shè)定需要的語言。
SL('zh_cn'); //SL()函數(shù)等效于PhalApi_Translator::setLanguage()
參數(shù)即為語言包的路徑名,如下面的en, zh_cn:
.
|-- en
| `-- common.php
`-- zh_cn
`-- common.php
此處,也可以通過客戶端傳遞參數(shù)來自行選擇語言。簡(jiǎn)單地:
SL($_GET['lan']);
有時(shí)需要手動(dòng)添加語言翻譯包,因?yàn)閷?duì)應(yīng)的翻譯不一定在項(xiàng)目的./Language下,如擴(kuò)展類庫。
當(dāng)需要添加額外的語言翻譯包時(shí),可以這樣添加:
PhalApi_Translator::addMessage(API_ROOT . '/Library/User');
在User這個(gè)目錄下的翻譯包類似地,為:
./Language/
└── zh_cn
└── common.php
1 directory, 1 file
相當(dāng)于追加一個(gè)額外的項(xiàng)目路徑,其他的加載過程和原來的一樣。
所以,你可以輕松看到,所謂的翻譯也只是通過數(shù)組下標(biāo)找一下對(duì)應(yīng)的內(nèi)容而已,沒有太多的技術(shù)性,也沒有過多的性能問題。
但正是有這樣提前周到的國(guó)際化準(zhǔn)備,我們可以對(duì)外(如像產(chǎn)品、BOSS和外界)傳送這樣一個(gè)隱喻: 我們的項(xiàng)目可以快速支持國(guó)際翻譯 。
這聽起來多么高大尚啊!因?yàn)槟切┎欢夹g(shù)的人,根本不在乎是用PHP的數(shù)組來存放還是什么技術(shù),而在于能不能走向國(guó)際化。
SO?既然翻譯”無傷大雅“(指對(duì)性能的影響和對(duì)代碼編寫的阻礙),統(tǒng)一使用翻譯的寫法是值得推薦的。
即使項(xiàng)目沒有機(jī)會(huì)用到真正的翻譯,但至少有兩點(diǎn)我認(rèn)為也是有用的:
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: