Fecshop 多語言

2018-05-25 14:08 更新

Fecshop 多語言

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多語言

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

@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)。

注意: 如果您不添加翻譯,則默認就會使用英語的翻譯。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號