前言

這段時間在研究多語言的實現(xiàn),就找了NopCommerce這個開源項目來研究了一下,并把自己對這個項目的粗淺認識與大家分享一下。

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

電腦培訓,計算機培訓,平面設(shè)計培訓,網(wǎng)頁設(shè)計培訓,美工培訓,Web培訓,Web前端開發(fā)培訓

不啰嗦了,開始正題了!

其實對于Nop的多語言,最主要的元素有下面兩個:

  • WebWorkContext(IWorkContext的實現(xiàn)類)

  • LocalizationService(ILocalizationService的實現(xiàn)類)

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

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

WorkingLanguage

WebWorkContext中對多語言來說最為重要的一個屬性就是WorkingLanguage,它決定了我們當前瀏覽頁面所采用的是那種語言。

每次打開一個頁面,包括切換語言時,都是讀取這個WorkingLanguage的值。當然在讀的時候,也做了不少操作:

  1. 從當前上下文中的_cachedLanguage變量是否有值,有就直接讀取了這個值。

  2. GenericAttribute表中查詢當前用戶的語言ID,這張表中的字段Key對應(yīng)的值是LanguageId時,就表明是某個用戶當前正在使用的語言ID。

  3. Language表中查詢出語言信息(當前店鋪->當前店鋪默認->當前店鋪的第一個->所有語言的第一個)

查詢語言表時,首先查出店鋪支持的所有語言,然后找到當前用戶正在使用的語言ID,根據(jù)這兩個條件組合得到的Language實體就是當前的WorkingLanguage。

如果說這兩個條件的組合拿不到相應(yīng)的語言實體,就會根據(jù)當前Store的默認語言ID(如下圖所示)去找。

電腦培訓,計算機培訓,平面設(shè)計培訓,網(wǎng)頁設(shè)計培訓,美工培訓,Web培訓,Web前端開發(fā)培訓

網(wǎng)友評論