【转】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操作。
?
關于ILocalizationSource,ILocalizationDictionary和ILocalizationDictionaryProvider的定義和用法參見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源碼分析系列文章目錄
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的【转】ABP源码分析四十三:ZERO的本地化的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 系列史上最大屏 小米手环7将进军海外:至
 - 下一篇: 150W和4800mAh大电池终于兼得了