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源码分析四十三:ZERO的本地化的更多相关文章
- 使用react全家桶制作博客后台管理系统 网站PWA升级 移动端常见问题处理 循序渐进学.Net Core Web Api开发系列【4】:前端访问WebApi [Abp 源码分析]四、模块配置 [Abp 源码分析]三、依赖注入
使用react全家桶制作博客后台管理系统 前面的话 笔者在做一个完整的博客上线项目,包括前台.后台.后端接口和服务器配置.本文将详细介绍使用react全家桶制作的博客后台管理系统 概述 该项目是基 ...
- ABP源码分析四:Configuration
核心模块的配置 Configuration是ABP中设计比较巧妙的地方.其通过AbpStartupConfiguration,Castle的依赖注入,Dictionary对象和扩展方法很巧妙的实现了配 ...
- ABP源码分析二十三:Authorization
Permission:用于定义一个Permission,一个permission可以包含多个子Permission. PermissionDictionary:继承自Dictionary<str ...
- ABP源码分析四十七:ABP中的异常处理
ABP 中异常处理的思路是很清晰的.一共五种类型的异常类. AbpInitializationException用于封装ABP初始化过程中出现的异常,只要抛出AbpInitializationExce ...
- ABP源码分析三十三:ABP.Web
ABP.Web模块并不复杂,主要完成ABP系统的初始化和一些基础功能的实现. AbpWebApplication : 继承自ASP.Net的HttpApplication类,主要完成下面三件事一,在A ...
- ABP源码分析四十:ZERO的Application和Tenant
ABP的Zero模块以数据库为数据源实现了ABP框架中的tenant management (multi-tenancy), role management, user management, ses ...
- ABP源码分析四十一:ZERO的Audit,Setting,Background Job
AuditLog: 继承自Entity<long>的实体类.封装AuditLog的信息. AuditingStore: 实现了IAuditingStore接口,实现了将AuditLog的信 ...
- ABP源码分析四十二:ZERO的身份认证
ABP Zero模块通过自定义实现Asp.Net Identity完成身份认证功能, 对Asp.Net Identity做了较大幅度的扩展.同时重写了ABP核心模块中的permission功能,以实现 ...
- ABP源码分析四十四:ZERO的配置
ABP Zero模块中需要配置的地方主要集中在三块:配置静态的role,配置外部认证源,以及配置本地化语言和资源. UserManagementConfig/IUserManagementConfig ...
随机推荐
- java EE设计模式简介
1.何为设计模式 设计模式提供了对常见应用设计问题的解决方案.在面向对象的编程中,设计模式通常在解决与对象创建和交互相关的问题,而非整体软件架构所面对的大规模问题,它们以样板代码的形式提供了通用的解决 ...
- 无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同。如果服务器位于远程计算机上,请检查。。。
异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 无法向会话状态服务器发出会话状态请求.请确保 ASP.NET State Ser ...
- ifconfig: command not found(CentOS专版,其他的可以参考)
ifconfig: command not found 查看path配置(echo相当于c中的printf,C#中的Console.WriteLine) echo $PATH 解决方案1:先看看是不是 ...
- 解决PHP-问题:Class 'SimpleXMLElement' not found in
1.问题 在ubuntu 16.10中,学习PHP,学习到PHP如何生成XML文件时候,碰到了这个问题: PHP Fatal error: Class 'ClassName\SimpleXMLElem ...
- 使用技术手段限制DBA的危险操作—Oracle Database Vault
概述 众所周知,在业务高峰期,某些针对Oracle数据库的操作具有很高的风险,比如修改表结构.修改实例参数等等,如果没有充分评估和了解这些操作所带来的影响,这些操作很可能会导致故障,轻则导致应用错误, ...
- JS继承之借用构造函数继承和组合继承
根据少一点套路,多一点真诚这个原则,继续学习. 借用构造函数继承 在解决原型中包含引用类型值所带来问题的过程中,开发人员开始使用一种叫做借用构造函数(constructor stealing)的技术( ...
- 浅谈JSP注释
HTML注释 JSP文件是由HTML尿急和嵌入的Java程序片段组成的,所以在HTML中的注释同样可以在JSP文件中使用.注释格式:<!--注释内容--> <!-- 欢迎提示信息! ...
- Windos环境用Nginx配置反向代理和负载均衡
Windos环境用Nginx配置反向代理和负载均衡 引言:在前后端分离架构下,难免会遇到跨域问题.目前的解决方案大致有JSONP,反向代理,CORS这三种方式.JSONP兼容性良好,最大的缺点是只支持 ...
- SEO:权重如何做到从0到1
SEO:权重如何做到从0到1 [写于2016年9月]我真的好久好久没到我的博客上去看过了,今天突然登上 seo.chinaz.com,搜索 dkplus.iteye.com,发现自己的博客在百度收录中 ...
- Java中的进程与线程(总结篇)
详细文档: Java中的进程与线程.rar 474KB 1/7/2017 6:21:15 PM 概述: 几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进 ...