fecshop 支持多語言翻譯,可以通過多個途徑進(jìn)行語言的切換,一共分為四個大部分:
數(shù)據(jù)庫數(shù)據(jù)的翻譯,網(wǎng)頁內(nèi)容數(shù)據(jù)的翻譯,網(wǎng)站提示和報錯等信息的翻譯,郵件內(nèi)容的
語言翻譯,當(dāng)您為一個store指定了語言,那么就會按照上面四種途徑進(jìn)行相應(yīng)的語言翻譯,
,進(jìn)而形成對應(yīng)語言的翻譯語言。
在fecshop FecshopLang 服務(wù) 中可以配置語言選項,你可以在
@common/config/fecshop_local_services/FecshopLang.php
中進(jìn)行配置語言項,譬如:
'fecshoplang' => [
//'class' => 'fecshop\services\FecshopLang',
// mongoSearchLangName 在各個語言下字段參考資料如下:(不支持中文)
// https://docs.mongodb.com/manual/reference/text-search-languages/#text-search-languages
'allLangCode' => [
# 'en_US' 是標(biāo)準(zhǔn)語言簡碼 code對應(yīng)的值en取 “標(biāo)準(zhǔn)語言簡碼”的前兩位字符,
# 該值設(shè)置后,進(jìn)行了產(chǎn)品分類數(shù)據(jù)的添加后,不能修改,否則會出現(xiàn)部分翻譯語言丟失。
'en_US' => [
'code' => 'en',
],
'fr_FR' => [
'code' => 'fr',
],
'de_DE' => [
'code' => 'de',
],
'es_ES' => [
'code' => 'es',
],
'ru_RU' => [
'code' => 'ru',
],
'pt_PT' => [
'code' => 'pt',
],
'zh_CN' => [
'code' => 'zh',
],
],
# 默認(rèn)語言。
'defaultLangCode' => 'en',
],
上面是fecshop默認(rèn)的幾個語言配置,您可以根據(jù)自己的業(yè)務(wù)需求進(jìn)行語言的設(shè)置和添加。
fecshop的每個store設(shè)置的不同語言,以及對應(yīng)的產(chǎn)品搜索(mongodb full search需要根據(jù)語言進(jìn)行切詞),都要依賴上面的配置。
數(shù)據(jù)庫中的數(shù)據(jù),譬如產(chǎn)品表中的產(chǎn)品名字,產(chǎn)品描述等,分類表中的分類名字和分類描述, 在數(shù)據(jù)庫表中都是保存了多份語言數(shù)據(jù)
在網(wǎng)站前臺展示數(shù)據(jù)的時候,根據(jù)當(dāng)前的store設(shè)置的語言,將相應(yīng)語言的數(shù)據(jù)取出來展示即可。 如果相應(yīng)語言的值在數(shù)據(jù)庫中沒有添加,那么將會把默認(rèn)語言的值取出來作為當(dāng)前語言的值。
網(wǎng)站內(nèi)容語言的翻譯,是依靠的翻譯文件,在實(shí)現(xiàn)方面依賴的Yii::t()
函數(shù),關(guān)于
Yii2多語言翻譯的知識,可以參看地址 Yii2多語言
@vendor/fancyecommerce/fecshop/app/appfront/languages/
,在這個文件夾下面可以看到
各個語言的文件包,進(jìn)入相應(yīng)語言,就可以看到翻譯文件,譬如中文的翻譯文件路徑為
:@vendor/fancyecommerce/fecshop/app/appfront/languages/zh_CN/appfront.php
,在這個文件里面就可以看到所有的中文翻譯內(nèi)容,如果您想重寫或者添加新
的翻譯,可以到 @appfront/languages/zh_CN/appfront.php
中添加或者重寫翻譯
數(shù)組,注意,這里使用的是php的數(shù)組,需要按照相應(yīng)格式填寫,否則會報錯。
在翻譯文件中,您可能看到這樣的帶有{}的部分,譬如下面的 {passwdMinLength}
,
這是一個動態(tài)變量,這個請不要翻譯和做其他的任何改動,直接復(fù)制上去即可,譬如下面的
翻譯,這個值是由php動態(tài)計算而來。
'Password length must be greater than or equal to {passwdMinLength}'
=> '密碼長度必須大于或等于{passwdMinLength}',
'Password length must be less than or equal to {passwdMaxLength}'
=> '密碼長度必須小于或等于{passwdMaxLength}',
'The passwords are inconsistent'
=> '密碼不一致',
在網(wǎng)站頂部,會出現(xiàn)一些提示信息和報錯信息,譬如您注冊郵箱的時候,會提示你的格式不正確等, 這些數(shù)據(jù)也是用翻譯文件的方式,方法上上面類似,都是在一個同一個文件中 添加翻譯內(nèi)容,方法和方式同上。
郵件內(nèi)容的模板,是在theme中,譬如appfront的郵件模板,是在
@fecshop/app/appfront/theme/base/default/mailer
下面,其中,
@fecshop/app/appfront/theme
是模板文件夾路徑,base
是模板包名,
default
是模板名,mailer
是郵件theme文件夾,在mailer路徑下,打開
customer/account/forgotpassword
,里面是用戶忘記密碼發(fā)送的郵件,
其中subject_
開頭的都是郵件的標(biāo)題,body_
開頭的都是郵件的內(nèi)容
en
結(jié)尾的代表英文語言的郵件,zh
結(jié)尾的代表中文語言的郵件,打開相應(yīng)文件
從en
復(fù)制一份到對應(yīng)的語言,然后修改里面的語言即可,
有一些語言,里面沒有對應(yīng)的文件,您新建即可。
添加或者修改郵件內(nèi)容,舉例:
如果您想修改 @fecshop/app/appfront/theme/base/default/mailer/customer/account/forgotpassword/body_zh.php
,
里面的內(nèi)容,你可以在 @appfront/theme/terry/theme01/里面新建文件 mailer/customer/account/forgotpassword/body_zh.php
(如果存在,則不需要創(chuàng)建)
然后將上面的文件內(nèi)容復(fù)制到新建的文件中,進(jìn)行修改即可,這樣就完成了郵件內(nèi)容的添加或者重寫。
通過以上四種方式的翻譯,我們就完成了整個fecshop多語言翻譯的閉環(huán)。
注意: 如果您不添加翻譯,則默認(rèn)就會使用英語的翻譯。
更多建議: