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