Lightning 組件內容多語言與自定義標籤按規則使用

之前做的項目都是中文環境,頁面上的文本與標籤也都是直接在代碼中寫的漢字,去年開始做了A項目,要求是代碼與系統配置中不能出現任何中文,因爲需要推廣其它國家,由於習慣問題,在開發時都用的中文,後面再去補,導致沒有很好的規劃,用自定義標籤替換,獲取字段的標籤也是寫到了控制類中,如下截圖,如果一個組件中涉及到多個對象的多個字段, 在初始化時就需要寫一大段的代碼,而在另一個組件中同樣重複的代碼又出現一次

關於自定義標籤就更不用提了,每個人都新建一次,同樣的意思的提示消息每個人都來一遍,導致混亂,同時,自定義標籤是有數量限制的(5,000).

去年底在做B項目時,也需要支持多語言,鑑於上個項目的情況,計劃在項目開始前就規範,但實際情況是在做完後再補(),這次在新建自定義標籤時,按類別先分類,目前暫時按如下截圖,然後新建不同類別視圖

自定義標籤暫時按這種方法使用,那對於字段的標籤如何管理,爲了跟頁面控制邏輯分離,通過寫一個Lightning組件,這個組件比較特殊沒有任何的內容,只有一個初始方法,初始化方法調後臺,獲取指定對象的Label.

後臺拿到這些對象的Label集,在前臺通過

localStorage.setItem(key,JSON.stringify(Entity[key]));

按對象存放在localStorage中,localStorage是HTML5中的內容

對瀏覽器來說,使用 Web Storage 存儲鍵值對比存儲 Cookie 方式更直觀,而且容量更大,它包含兩種:localStorage 和 sessionStorage sessionStorage(臨時存儲) :爲每一個數據源維持一個存儲區域,在瀏覽器打開期間存在,包括頁面重新加載 localStorage(長期存儲) :與 sessionStorage 一樣,但是瀏覽器關閉後,數據依然會一直存在 另localStorage 的大小是5M,不同瀏覽器大小不一樣,但是存Label是足夠的, localStorage的類型只能是String類型,所以在使用時需要轉換,在瀏覽器的隱私模式不可讀取,需要使用高版本瀏覽器,對於Lightning本身就對瀏覽器有要求,我們一般建議客戶使用谷歌最新版本瀏覽器.

把這個組件放到主頁,因爲我們登錄系統後直接進入主頁,這裏獲取對象的標籤名,按照對象名:{字段名:標籤} 存在本地.

當在需要使用標籤的組件中,直接從本地讀取,

var orderRequestLabelJSON = JSON.parse(localStorage.getItem("OrderRequest__c"));

可以在頁面定義一個屬性,在使用時,屬性.字段api名,有字段api名,所以在頁面查找也方便,這裏需要改進一點就是當沒有讀取到時就顯示api名,而不是顯示空白

<lightning:textarea label="{!v.OrderRequestLabel.Name}" ></lightning:textarea>

可以通過瀏覽器中應用查看

如果你有其它方法,歡迎留言.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章