前言

這段時(shí)間在研究多語(yǔ)言的實(shí)現(xiàn),就找了NopCommerce這個(gè)開(kāi)源項(xiàng)目來(lái)研究了一下,并把自己對(duì)這個(gè)項(xiàng)目的粗淺認(rèn)識(shí)與大家分享一下。

挺碰巧的是昨天收到了NopCommerce 3.90 發(fā)布測(cè)試版的郵件:

電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開(kāi)發(fā)培訓(xùn)

不啰嗦了,開(kāi)始正題了!

其實(shí)對(duì)于Nop的多語(yǔ)言,最主要的元素有下面兩個(gè):

  • WebWorkContext(IWorkContext的實(shí)現(xiàn)類(lèi))

  • LocalizationService(ILocalizationService的實(shí)現(xiàn)類(lèi))

其他相關(guān)的元素可以說(shuō)都是在這兩個(gè)的基礎(chǔ)上體現(xiàn)價(jià)值的。

下面先來(lái)介紹一下WebWorkContext的WorkingLanguage屬性,這個(gè)是貫穿整個(gè)應(yīng)用的,所以必須要先從這個(gè)講起。

WorkingLanguage

WebWorkContext中對(duì)多語(yǔ)言來(lái)說(shuō)最為重要的一個(gè)屬性就是WorkingLanguage,它決定了我們當(dāng)前瀏覽頁(yè)面所采用的是那種語(yǔ)言。

每次打開(kāi)一個(gè)頁(yè)面,包括切換語(yǔ)言時(shí),都是讀取這個(gè)WorkingLanguage的值。當(dāng)然在讀的時(shí)候,也做了不少操作:

  1. 從當(dāng)前上下文中的_cachedLanguage變量是否有值,有就直接讀取了這個(gè)值。

  2. GenericAttribute表中查詢(xún)當(dāng)前用戶(hù)的語(yǔ)言ID,這張表中的字段Key對(duì)應(yīng)的值是LanguageId時(shí),就表明是某個(gè)用戶(hù)當(dāng)前正在使用的語(yǔ)言ID。

  3. Language表中查詢(xún)出語(yǔ)言信息(當(dāng)前店鋪->當(dāng)前店鋪默認(rèn)->當(dāng)前店鋪的第一個(gè)->所有語(yǔ)言的第一個(gè))

查詢(xún)語(yǔ)言表時(shí),首先查出店鋪支持的所有語(yǔ)言,然后找到當(dāng)前用戶(hù)正在使用的語(yǔ)言ID,根據(jù)這兩個(gè)條件組合得到的Language實(shí)體就是當(dāng)前的WorkingLanguage。

如果說(shuō)這兩個(gè)條件的組合拿不到相應(yīng)的語(yǔ)言實(shí)體,就會(huì)根據(jù)當(dāng)前Store的默認(rèn)語(yǔ)言ID(如下圖所示)去找。

電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開(kāi)發(fā)培訓(xùn)

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開(kāi)發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式