【转】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的本地化相关推荐
- ABP源码分析四十七:ABP中的异常处理
ABP源码分析四十七:ABP中的异常处理 参考文章: (1)ABP源码分析四十七:ABP中的异常处理 (2)https://www.cnblogs.com/1zhk/p/5538983.html (3 ...
- 【转】ABP源码分析四十七:ABP中的异常处理
ABP 中异常处理的思路是很清晰的.一共五种类型的异常类. AbpInitializationException用于封装ABP初始化过程中出现的异常,只要抛出AbpInitializationExce ...
- 【转】ABP源码分析二十三:Authorization
Permission:用于定义一个Permission,一个permission可以包含多个子Permission. PermissionDictionary:继承自Dictionary<str ...
- 【转】ABP源码分析四:Configuration
核心模块的配置 Configuration是ABP中设计比较巧妙的地方.其通过AbpStartupConfiguration,Castle的依赖注入,Dictionary对象和扩展方法很巧妙的实现了配 ...
- 【转】ABP源码分析四十六:ABP ZERO中的Ldap模块
通过AD作为用户认证的数据源.整个管理用户认证逻辑就在LdapAuthenticationSource类中实现. LdapSettingProvider:定义LDAP的setting和提供Defaut ...
- 【转】ABP源码分析四十五:ABP ZERO中的EntityFramework模块
AbpZeroDbContext:配置ABP.Zero中定义的entity的Dbset EntityFrameworkModelBuilderExtensions:给PrimitiveProperty ...
- 【转】ABP源码分析四十四:ZERO的配置
ABP Zero模块中需要配置的地方主要集中在三块:1.配置静态的role:2.配置外部认证源:3.配置本地化语言和资源. UserManagementConfig/IUserManagementCo ...
- 【转】ABP源码分析四十二:ZERO的身份认证
ABP Zero模块通过自定义实现Asp.Net Identity完成身份认证功能, 对Asp.Net Identity做了较大幅度的扩展.同时重写了ABP核心模块中的permission功能,以实现 ...
- 【转】ABP源码分析四十一:ZERO的Audit,Setting,Background Job
AuditLog: 继承自Entity<long>的实体类.封装AuditLog的信息. AuditingStore: 实现了IAuditingStore接口,实现了将AuditLog的信 ...
最新文章
- 介绍一个团队协同管理工具:Leangoo
- mysql导入数据出现Errcode: 2 - No such file or directory错误信息
- python twisted安装
- c语言编程课程心得,c语言编程课程设计心得.docx
- 4.6 大数据集-机器学习笔记-斯坦福吴恩达教授
- c语言单元测验,C语言程序设计单元测验一.PDF
- Django二次开发对接FastDFS
- python 双向循环链表实现_python实现双向循环链表基本结构及其基本方法
- 头指针与头结点的异同
- cs231n assignment3
- 单片机软件反破解 Hex反破解 破解后的hex不能量产
- java程序员生日祝福语_给程序员的一句话祝福语
- TabHost眼睛会骗人
- vue之table案例
- 【调剂】云南大学2021年硕士研究生招生调剂工作的说明
- python神经网络训练效果差_为什么我的神经网络验证精度比我的训练精度高,并且两者都变得恒定? - python...
- 7-1 计算π的值 (10分) java
- 大数据入门教程,小白快速掌握Hadoop集成Kerberos安全技术
- 学生上课睡觉班主任怎么处理_如何处理学生上课睡觉问题??
- 用vb.net开发的简易(通用)上位机