ABP源碼分析四十三:ZERO的本地化


ABP Zero模塊擴展了ABP基礎框架中的本地化功能,實現了通過數據庫管理本地化的功能。其通過數據庫保存本地化語言及其資源。

 

ApplicationLanguage:代表本地化語言的實體類。一種語言就是一個ApplicationLanguage實例。

 

ApplicationLanguageProvider:實現了ILanguageProvider接口,通過IApplicationLanguageManager實例設置DefaultLanguage和獲取應用所配置的Language的列表。

 

ApplicationLanguageManager/IApplicationLanguageManager:通過IRepository<ApplicationLanguage>實例完成ApplicationLanguage實體的CRUD操作。同時實現ApplicationLanguage實體的更改事件,具體就是當ApplicationLanguage實體狀態變化時,將對應的ApplicationLanguage實體從緩存中移除。 

 


 

ApplicationLanguageText:代表數據庫中的本地化資源的實體類。在ABP 基礎框架中,是用資源文件保存本地化資源的,但是Zero中使用數據庫保存本地化資源。

 

ApplicationLanguageTextManager/IApplicationLanguageTextManager: 通過IRepository<ApplicationLanguageText, long>實例完成ApplicationLanguageText實體的CRUD操作。

 


關於ILocalizationSourceILocalizationDictionaryILocalizationDictionaryProvider的定義和用法參見ABP核心框架中的本地化模塊。ABP.Zero中重新實現了這三個接口,以完成從數據庫中讀取資源。如果明白了ABP核心框架中的本地化模塊的用法,下面幾個對象是很容易理解的。

IMultiTenantLocalizationSource : 擴展了ABP中的ILocalizationSource接口。重載了GetString和GetStringOrNull以提供根據tenant信息返回本地化字符串的方法。

MultiTenantLocalizationSource:實現了IMultiTenantLocalizationSource 接口。通過MultiTenantLocalizationDictionaryProvider實例完成本地化資源的讀取。

 

IMultiTenantLocalizationDictionary : 擴展了ABP核心框架中的ILocalizationDictionary,重載了GetOrNull和GetAllStrings以提供根據tenant信息返回本地化字符串的方法。

MultiTenantLocalizationDictionary:實現了IMultiTenantLocalizationDictionary接口,通過IRepository<ApplicationLanguageText, long> 實例從數據庫讀取與指定tenant相關的本地化資源。並且通過ICacheManager實例緩存本地化資源

 

MultiTenantLocalizationDictionaryProvider:實現了ILocalizationDictionaryProvider接口,通過MultiTenantLocalizationDictionary獲取與指定tenant相關的本地化資源。

 

MultiTenantLocalizationDictionaryCacheHelper:提供了兩個靜態方法一個用於獲取localization cache,另一個方法CalculateCacheKey用於生成CacheKey。一個cacheKey對應一個本地化資源(字典類型)。

MultiTenantLocalizationDictionaryCacheCleaner:將一個指定的本地化資源從緩存中刪除。

 


ILanguageManagementConfig:提供EnableDbLocalization方法激活是否使用Database作為本地化資源的數據源

 

LanguageManagementConfig:實現了ILanguageManagementConfig接口中的EnableDbLocalization方法。具體就是將其他本地化Source從configuration中移除,替換為Database Source。

 

返回ABP源碼分析系列文章目錄


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM