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的本地化相关推荐

  1. ABP源码分析四十七:ABP中的异常处理

    ABP源码分析四十七:ABP中的异常处理 参考文章: (1)ABP源码分析四十七:ABP中的异常处理 (2)https://www.cnblogs.com/1zhk/p/5538983.html (3 ...

  2. 【转】ABP源码分析四十七:ABP中的异常处理

    ABP 中异常处理的思路是很清晰的.一共五种类型的异常类. AbpInitializationException用于封装ABP初始化过程中出现的异常,只要抛出AbpInitializationExce ...

  3. 【转】ABP源码分析二十三:Authorization

    Permission:用于定义一个Permission,一个permission可以包含多个子Permission. PermissionDictionary:继承自Dictionary<str ...

  4. 【转】ABP源码分析四:Configuration

    核心模块的配置 Configuration是ABP中设计比较巧妙的地方.其通过AbpStartupConfiguration,Castle的依赖注入,Dictionary对象和扩展方法很巧妙的实现了配 ...

  5. 【转】ABP源码分析四十六:ABP ZERO中的Ldap模块

    通过AD作为用户认证的数据源.整个管理用户认证逻辑就在LdapAuthenticationSource类中实现. LdapSettingProvider:定义LDAP的setting和提供Defaut ...

  6. 【转】ABP源码分析四十五:ABP ZERO中的EntityFramework模块

    AbpZeroDbContext:配置ABP.Zero中定义的entity的Dbset EntityFrameworkModelBuilderExtensions:给PrimitiveProperty ...

  7. 【转】ABP源码分析四十四:ZERO的配置

    ABP Zero模块中需要配置的地方主要集中在三块:1.配置静态的role:2.配置外部认证源:3.配置本地化语言和资源. UserManagementConfig/IUserManagementCo ...

  8. 【转】ABP源码分析四十二:ZERO的身份认证

    ABP Zero模块通过自定义实现Asp.Net Identity完成身份认证功能, 对Asp.Net Identity做了较大幅度的扩展.同时重写了ABP核心模块中的permission功能,以实现 ...

  9. 【转】ABP源码分析四十一:ZERO的Audit,Setting,Background Job

    AuditLog: 继承自Entity<long>的实体类.封装AuditLog的信息. AuditingStore: 实现了IAuditingStore接口,实现了将AuditLog的信 ...

最新文章

  1. 介绍一个团队协同管理工具:Leangoo
  2. mysql导入数据出现Errcode: 2 - No such file or directory错误信息
  3. python twisted安装
  4. c语言编程课程心得,c语言编程课程设计心得.docx
  5. 4.6 大数据集-机器学习笔记-斯坦福吴恩达教授
  6. c语言单元测验,C语言程序设计单元测验一.PDF
  7. Django二次开发对接FastDFS
  8. python 双向循环链表实现_python实现双向循环链表基本结构及其基本方法
  9. 头指针与头结点的异同
  10. cs231n assignment3
  11. 单片机软件反破解 Hex反破解 破解后的hex不能量产
  12. java程序员生日祝福语_给程序员的一句话祝福语
  13. TabHost眼睛会骗人
  14. vue之table案例
  15. 【调剂】云南大学2021年硕士研究生招生调剂工作的说明
  16. python神经网络训练效果差_为什么我的神经网络验证精度比我的训练精度高,并且两者都变得恒定? - python...
  17. 7-1 计算π的值 (10分) java
  18. 大数据入门教程,小白快速掌握Hadoop集成Kerberos安全技术
  19. 学生上课睡觉班主任怎么处理_如何处理学生上课睡觉问题??
  20. 用vb.net开发的简易(通用)上位机

热门文章

  1. 谈一下我对如何设计微服务接口的理解和思考
  2. 云开发0基础训练营第二期热力来袭!
  3. CCF 201312-3 最大的矩形[比较简单]
  4. Python入门基础之迭代和列表生成式
  5. Fullpage参数说明
  6. dobbo 简单框架
  7. 怎样解决MySQL数据库主从复制延迟的问题?
  8. svn在linux下的使用(svn命令行)ubuntu 删除 新增 添加 提交 状态查询 恢复
  9. php与其它语言组合开发,PHP相对于其它语言有哪些魅力?
  10. oracle distinct分页优化_Oracle SQL性能优化最常用的40条建议