Fecshop 多語言

2018-05-25 14:08 更新

Fecshop 多語言

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ù)

數(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)容語言的翻譯

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

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

@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)容的翻譯

郵件內(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)就會使用英語的翻譯。

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號