【转】ABP源码分析四十三:ZERO的本地化
ABP Zero模塊擴(kuò)展了ABP基礎(chǔ)框架中的本地化功能,實(shí)現(xiàn)了通過(guò)數(shù)據(jù)庫(kù)對(duì)本地化功能進(jìn)行管理。其通過(guò)數(shù)據(jù)庫(kù)保存本地化語(yǔ)言及其資源。
?
ApplicationLanguage:代表本地化語(yǔ)言的實(shí)體類。一種語(yǔ)言就是一個(gè)ApplicationLanguage實(shí)例。
?
ApplicationLanguageProvider:實(shí)現(xiàn)了ILanguageProvider接口,通過(guò)IApplicationLanguageManager實(shí)例設(shè)置DefaultLanguage和獲取應(yīng)用所配置的Language的列表。
?
ApplicationLanguageManager/IApplicationLanguageManager:通過(guò)IRepository<ApplicationLanguage>實(shí)例完成ApplicationLanguage實(shí)體的CRUD操作。同時(shí)實(shí)現(xiàn)ApplicationLanguage實(shí)體的更改事件,具體就是當(dāng)ApplicationLanguage實(shí)體狀態(tài)變化時(shí),將對(duì)應(yīng)的ApplicationLanguage實(shí)體從緩存中移除。?
?
?
ApplicationLanguageText:代表數(shù)據(jù)庫(kù)中的本地化資源的實(shí)體類。在ABP 基礎(chǔ)框架中,是用資源文件保存本地化資源的,但是Zero中使用數(shù)據(jù)庫(kù)保存本地化資源。
?
ApplicationLanguageTextManager/IApplicationLanguageTextManager: 通過(guò)IRepository<ApplicationLanguageText, long>實(shí)例完成ApplicationLanguageText實(shí)體的CRUD操作。
?
關(guān)于ILocalizationSource,ILocalizationDictionary和ILocalizationDictionaryProvider的定義和用法參見(jiàn)ABP核心框架中的本地化模塊。ABP.Zero中重新實(shí)現(xiàn)了這三個(gè)接口,以完成從數(shù)據(jù)庫(kù)中讀取資源。如果明白了ABP核心框架中的本地化模塊的用法,下面幾個(gè)對(duì)象是很容易理解的。
IMultiTenantLocalizationSource?: 擴(kuò)展了ABP中的ILocalizationSource接口。重載了GetString和GetStringOrNull以提供根據(jù)tenant信息返回本地化字符串的方法。
MultiTenantLocalizationSource:實(shí)現(xiàn)了IMultiTenantLocalizationSource 接口。通過(guò)MultiTenantLocalizationDictionaryProvider實(shí)例完成本地化資源的讀取。
?
IMultiTenantLocalizationDictionary?: 擴(kuò)展了ABP核心框架中的ILocalizationDictionary,重載了GetOrNull和GetAllStrings以提供根據(jù)tenant信息返回本地化字符串的方法。
MultiTenantLocalizationDictionary:實(shí)現(xiàn)了IMultiTenantLocalizationDictionary接口,通過(guò)IRepository<ApplicationLanguageText, long> 實(shí)例從數(shù)據(jù)庫(kù)讀取與指定tenant相關(guān)的本地化資源。并且通過(guò)ICacheManager實(shí)例緩存本地化資源
?
MultiTenantLocalizationDictionaryProvider:實(shí)現(xiàn)了ILocalizationDictionaryProvider接口,通過(guò)MultiTenantLocalizationDictionary獲取與指定tenant相關(guān)的本地化資源。
?
MultiTenantLocalizationDictionaryCacheHelper:提供了兩個(gè)靜態(tài)方法一個(gè)用于獲取localization cache,另一個(gè)方法CalculateCacheKey用于生成CacheKey。一個(gè)cacheKey對(duì)應(yīng)一個(gè)本地化資源(字典類型)。
MultiTenantLocalizationDictionaryCacheCleaner:將一個(gè)指定的本地化資源從緩存中刪除。
?
ILanguageManagementConfig:提供EnableDbLocalization方法激活是否使用Database作為本地化資源的數(shù)據(jù)源
?
LanguageManagementConfig:實(shí)現(xiàn)了ILanguageManagementConfig接口中的EnableDbLocalization方法。具體就是將其他本地化Source從configuration中移除,替換為Database Source。
?
返回ABP源碼分析系列文章目錄
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的【转】ABP源码分析四十三:ZERO的本地化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 系列史上最大屏 小米手环7将进军海外:至
- 下一篇: 用于科研的移动机器人平台推荐