语言管理模块(专业版)
需拥有 ABP团队版或更高授权 方可使用此模块。
该模块实现了应用程序的语言管理系统:
- 管理系统中的语言
- 翻译界面文本
- 启用/禁用语言
- 在界面中选择默认语言
模块功能概览请参阅模块介绍页面。
安装方法
语言管理模块已预装在 启动模板 中,无需手动安装。
程序包
本模块遵循 模块开发最佳实践指南,包含多个NuGet和NPM程序包。如需了解各程序包及其关联关系,请查阅该指南。
可访问语言管理模块程序包列表页面查看相关程序包。
用户界面
菜单项
语言管理模块在"主菜单"的"管理"菜单项下添加以下内容:
- 语言设置:语言管理页面
- 语言文本:语言文本管理页面
菜单项名称常量定义于LanguageManagementMenuNames类中。
页面功能
语言设置
语言页面用于管理系统中的语言。
在此页面可创建新语言或编辑现有语言:
- 已启用的语言可被选为系统语言
语言文本
语言文本页面用于管理不同语言的文本内容。
在此页面可为特定语言翻译文本或编辑现有翻译。
数据种子
运行.DbMigrator应用程序时,本模块会向数据库添加初始数据(参见数据种子系统):
- 创建通过
AbpLocalizationOptions配置的语言记录
如需修改预置语言列表,请参阅本地化文档。
内部实现
领域层
聚合体
本模块遵循实体最佳实践与规范。
语言核心
Language(聚合根):代表系统中的语言LanguageText(聚合根):代表系统中的语言文本
动态本地化
LocalizationResourceRecord(聚合根):代表系统中的本地化资源LocalizationTextRecord(聚合根):代表本地化资源的所有文本内容
存储库
本模块遵循存储库最佳实践与规范。
为此模块定义的自定义存储库:
ILanguageRepositoryILanguageTextRepositoryILocalizationResourceRecordRepositoryILocalizationTextRecordRepository
领域服务
本模块未定义任何领域服务。
设置管理
本模块未定义任何设置项。
应用层
应用服务
LanguageAppService(实现ILanguageAppService):实现语言管理界面的用例LanguageTextAppService(实现ILanguageTextAppService):实现语言文本管理界面的用例
数据库支持
通用配置
表/集合前缀与架构
所有表/集合默认使用Abp前缀。如需修改表前缀或设置架构名(取决于数据库提供商支持),请设置LanguageManagementDbProperties类的静态属性。
连接字符串
本模块使用AbpLanguageManagement作为连接字符串名称。若未定义该名称的连接字符串,将回退至Default连接字符串。
详细信息请参阅连接字符串文档。
Entity Framework Core
数据表
- AbpLanguages
- AbpLanguageTexts
- AbpLocalizationResources
- AbpLocalizationTexts
MongoDB
集合
- AbpLanguages
- AbpLanguageTexts
- AbpLocalizationResources
- AbpLocalizationTexts
权限控制
本模块定义的所有权限请参阅LanguageManagementPermissions类的成员。
Angular界面
安装配置
要配置应用使用语言管理模块,首先需要从@volo/abp.ng.language-management/config导入provideLanguageManagementConfig,然后将其加入appConfig数组。
// app.config.ts
import { provideLanguageManagementConfig } from '@volo/abp.ng.language-management/config';
export const appConfig: ApplicationConfig = {
providers: [
// ...
provideLanguageManagementConfig()
],
};
语言管理模块需通过路由数组进行导入和懒加载。该模块提供静态方法createRoutes用于配置,可用选项如下所示。可从@volo/abp.ng.language-management导入。
// app.routes.ts
const APP_ROUTES: Routes = [
// ...
{
path: 'language-management',
loadChildren: () =>
import('@volo/abp.ng.language-management').then(c => c.createRoutes(/* 此处填入配置选项 */)),
},
];
若通过启动模板生成项目,则无需额外配置,因这两项配置均已预置实现。
配置选项
通过向createRoutes静态方法传递以下选项,可修改模块页面的外观和行为:
- entityActionContributors: 调整网格操作功能,详见Angular实体操作扩展
- toolbarActionContributors: 调整页面工具栏,详见Angular页面工具栏扩展
- entityPropContributors: 调整表格列显示,详见Angular数据表列扩展
- createFormPropContributors: 调整创建表单字段,详见Angular动态表单扩展
- editFormPropContributors: 调整编辑表单字段,详见Angular动态表单扩展
服务/模型
语言管理模块的服务和模型通过 ABP CLI 的 generate-proxy 命令生成。如需模块代理,可在Angular项目目录运行:
abp generate-proxy --module languageManagement
可替换组件
eLanguageManagementComponents枚举提供所有可替换组件的键值,可从@volo/abp.ng.language-management导入。
详细信息请参阅组件替换文档。
远程接口地址
语言管理模块的远程接口地址可在环境文件中配置:
export const environment = {
// 其他配置项
apis: {
default: {
url: '默认地址',
},
LanguageManagement: {
url: '语言管理远程地址'
}
// 其他接口配置
},
};
语言管理模块的远程地址配置为可选项。若未设置,将自动回退使用default.url。
分布式事件
本模块定义以下事件传输对象(ETO),用于订阅模块实体的变更:
LanguageEto:在Language实体发生变更时发布LanguageTextEto:在LanguageText实体发生变更时发布
示例:获取新租户创建通知
public class MyHandler :
IDistributedEventHandler<EntityCreatedEto<LanguageEto>>,
ITransientDependency
{
public async Task HandleEventAsync(EntityCreatedEto<LanguageEto> eventData)
{
LanguageEto language = eventData.Entity;
// 处理逻辑...
}
}
LanguageEto和LanguageTextEto已配置为自动发布事件。其他事件需自行配置。预定义事件详情请参阅分布式事件总线文档。
订阅分布式事件在分布式场景(如微服务架构)中特别有用。若正在开发单体应用或在运行租户管理模块的同一进程中监听事件,订阅本地事件可能更高效便捷。
抠丁客






