Fecshop 多語(yǔ)言

2018-05-25 14:08 更新

Fecshop 多語(yǔ)言

fecshop 支持多語(yǔ)言翻譯,可以通過(guò)多個(gè)途徑進(jìn)行語(yǔ)言的切換,一共分為四個(gè)大部分:
數(shù)據(jù)庫(kù)數(shù)據(jù)的翻譯,網(wǎng)頁(yè)內(nèi)容數(shù)據(jù)的翻譯,網(wǎng)站提示和報(bào)錯(cuò)等信息的翻譯,郵件內(nèi)容的
語(yǔ)言翻譯,當(dāng)您為一個(gè)store指定了語(yǔ)言,那么就會(huì)按照上面四種途徑進(jìn)行相應(yīng)的語(yǔ)言翻譯,
,進(jìn)而形成對(duì)應(yīng)語(yǔ)言的翻譯語(yǔ)言。

一:語(yǔ)言的配置

在fecshop FecshopLang 服務(wù) 中可以配置語(yǔ)言選項(xiàng),你可以在 @common/config/fecshop_local_services/FecshopLang.php 中進(jìn)行配置語(yǔ)言項(xiàng),譬如:

'fecshoplang' => [
    //'class' => 'fecshop\services\FecshopLang',
    //  mongoSearchLangName 在各個(gè)語(yǔ)言下字段參考資料如下:(不支持中文)
    //  https://docs.mongodb.com/manual/reference/text-search-languages/#text-search-languages
    'allLangCode' => [
        # 'en_US' 是標(biāo)準(zhǔn)語(yǔ)言簡(jiǎn)碼  code對(duì)應(yīng)的值en取 “標(biāo)準(zhǔn)語(yǔ)言簡(jiǎn)碼”的前兩位字符,
        # 該值設(shè)置后,進(jìn)行了產(chǎn)品分類數(shù)據(jù)的添加后,不能修改,否則會(huì)出現(xiàn)部分翻譯語(yǔ)言丟失。
        '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)語(yǔ)言。
    'defaultLangCode' => 'en',

    
],

上面是fecshop默認(rèn)的幾個(gè)語(yǔ)言配置,您可以根據(jù)自己的業(yè)務(wù)需求進(jìn)行語(yǔ)言的設(shè)置和添加。

fecshop的每個(gè)store設(shè)置的不同語(yǔ)言,以及對(duì)應(yīng)的產(chǎn)品搜索(mongodb full search需要根據(jù)語(yǔ)言進(jìn)行切詞),都要依賴上面的配置。

語(yǔ)言簡(jiǎn)碼表

二:翻譯

數(shù)據(jù)庫(kù)數(shù)據(jù)

數(shù)據(jù)庫(kù)中的數(shù)據(jù),譬如產(chǎn)品表中的產(chǎn)品名字,產(chǎn)品描述等,分類表中的分類名字和分類描述, 在數(shù)據(jù)庫(kù)表中都是保存了多份語(yǔ)言數(shù)據(jù)

在網(wǎng)站前臺(tái)展示數(shù)據(jù)的時(shí)候,根據(jù)當(dāng)前的store設(shè)置的語(yǔ)言,將相應(yīng)語(yǔ)言的數(shù)據(jù)取出來(lái)展示即可。 如果相應(yīng)語(yǔ)言的值在數(shù)據(jù)庫(kù)中沒(méi)有添加,那么將會(huì)把默認(rèn)語(yǔ)言的值取出來(lái)作為當(dāng)前語(yǔ)言的值。

網(wǎng)頁(yè)內(nèi)容語(yǔ)言的翻譯

網(wǎng)站內(nèi)容語(yǔ)言的翻譯,是依靠的翻譯文件,在實(shí)現(xiàn)方面依賴的Yii::t()函數(shù),關(guān)于 Yii2多語(yǔ)言翻譯的知識(shí),可以參看地址 Yii2多語(yǔ)言

Fecshop的翻譯文件路徑為:(舉例appfront入口)

@vendor/fancyecommerce/fecshop/app/appfront/languages/,在這個(gè)文件夾下面可以看到 各個(gè)語(yǔ)言的文件包,進(jìn)入相應(yīng)語(yǔ)言,就可以看到翻譯文件,譬如中文的翻譯文件路徑為 :@vendor/fancyecommerce/fecshop/app/appfront/languages/zh_CN/appfront.php ,在這個(gè)文件里面就可以看到所有的中文翻譯內(nèi)容,如果您想重寫或者添加新 的翻譯,可以到 @appfront/languages/zh_CN/appfront.php 中添加或者重寫翻譯 數(shù)組,注意,這里使用的是php的數(shù)組,需要按照相應(yīng)格式填寫,否則會(huì)報(bào)錯(cuò)。

在翻譯文件中,您可能看到這樣的帶有{}的部分,譬如下面的 {passwdMinLength}, 這是一個(gè)動(dòng)態(tài)變量,這個(gè)請(qǐng)不要翻譯和做其他的任何改動(dòng),直接復(fù)制上去即可,譬如下面的 翻譯,這個(gè)值是由php動(dòng)態(tài)計(jì)算而來(lái)。

 'Password length must be greater than or equal to {passwdMinLength}'
                                => '密碼長(zhǎng)度必須大于或等于{passwdMinLength}',
 'Password length must be less than or equal to {passwdMaxLength}'  
                                => '密碼長(zhǎng)度必須小于或等于{passwdMaxLength}',
 'The passwords are inconsistent'   
                                => '密碼不一致',

提示報(bào)錯(cuò)信息的翻譯

在網(wǎng)站頂部,會(huì)出現(xiàn)一些提示信息和報(bào)錯(cuò)信息,譬如您注冊(cè)郵箱的時(shí)候,會(huì)提示你的格式不正確等, 這些數(shù)據(jù)也是用翻譯文件的方式,方法上上面類似,都是在一個(gè)同一個(gè)文件中 添加翻譯內(nèi)容,方法和方式同上。

郵件內(nèi)容的翻譯

郵件內(nèi)容的模板,是在theme中,譬如appfront的郵件模板,是在 @fecshop/app/appfront/theme/base/default/mailer下面,其中, @fecshop/app/appfront/theme是模板文件夾路徑,base是模板包名, default是模板名,mailer是郵件theme文件夾,在mailer路徑下,打開(kāi) customer/account/forgotpassword,里面是用戶忘記密碼發(fā)送的郵件, 其中subject_開(kāi)頭的都是郵件的標(biāo)題,body_開(kāi)頭的都是郵件的內(nèi)容 en結(jié)尾的代表英文語(yǔ)言的郵件,zh結(jié)尾的代表中文語(yǔ)言的郵件,打開(kāi)相應(yīng)文件 從en復(fù)制一份到對(duì)應(yīng)的語(yǔ)言,然后修改里面的語(yǔ)言即可, 有一些語(yǔ)言,里面沒(méi)有對(duì)應(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(如果存在,則不需要?jiǎng)?chuàng)建) 然后將上面的文件內(nèi)容復(fù)制到新建的文件中,進(jìn)行修改即可,這樣就完成了郵件內(nèi)容的添加或者重寫。

通過(guò)以上四種方式的翻譯,我們就完成了整個(gè)fecshop多語(yǔ)言翻譯的閉環(huán)。

注意: 如果您不添加翻譯,則默認(rèn)就會(huì)使用英語(yǔ)的翻譯。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)