九月 30 2014 11:27 上午 admin html
今天咱們來看一看Apollo中的Localization Component。網站
像這樣的代碼你們在Apollo中確定常常見到,那麼NullLocalizer.Instance是什麼?咱們來看一看NullLocalizer。htm
不知道你們對「Apollo 刨析:前奏曲」中的CachingModule還有沒有印象,Apollo用了相似的機制,只不過這一次把構造函數注入變成了屬性注入。blog
在Load方法咱們能夠看到Apollo註冊了一個IText接口,那這個IText接口是幹什麼用的?請看下面!接口
咱們看到的是 LocalizationUtilities.Resolve 實現了具體的注入。get
,可是怎麼確保它是以屬性輸入的方式被注入進來的?下面咱們接着看。it
這個方法比較簡單,最終 T 屬性被注入成 IText.Get 方法。上面咱們說到咱們註冊了IText接口,最終的實現類是io
Text。咱們看下Text 是怎麼實現的。配置
var currentCulture = workContext.CurrentCulture;
這個是獲取網站的語言種類。
這裏咱們進行了調整了一下,期初是從站點配置文件中獲取語言種類。
下面咱們主要看下 _localizedStringManager.GetLocalizedString(_scope, textHint, currentCulture)
第一行 LoadCulture(cultureName);從下面的幾個.po文件中進行加載語言化。優先級從頭至尾。
.PO 文件格式以下: