You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
14 KiB
14 KiB
本地化扩展
**本文档中引用的文件** - [AbpLocalizationCultureMapModule.cs](file://aspnet-core/framework/localization/LINGYUN.Abp.Localization.CultureMap/LINGYUN/Abp/Localization/CultureMap/AbpLocalizationCultureMapModule.cs) - [AbpLocalizationJsonModule.cs](file://aspnet-core/framework/localization/LINGYUN.Abp.Localization.Json/LINGYUN/Abp/Localization/Json/AbpLocalizationJsonModule.cs) - [AbpLocalizationXmlModule.cs](file://aspnet-core/framework/localization/LINGYUN.Abp.Localization.Xml/LINGYUN/Abp/Localization/Xml/AbpLocalizationXmlModule.cs) - [CultureMapInfo.cs](file://aspnet-core/framework/localization/LINGYUN.Abp.Localization.CultureMap/LINGYUN/Abp/Localization/CultureMap/CultureMapInfo.cs) - [AbpLocalizationCultureMapOptions.cs](file://aspnet-core/framework/localization/LINGYUN.Abp.Localization.CultureMap/LINGYUN/Abp/Localization/CultureMap/AbpLocalizationCultureMapOptions.cs) - [XmlLocalizationFile.cs](file://aspnet-core/framework/localization/LINGYUN.Abp.Localization.Xml/LINGYUN/Abp/Localization/Xml/XmlLocalizationFile.cs) - [XmlPhysicalFileLocalizationResourceContributor.cs](file://aspnet-core/framework/localization/LINGYUN.Abp.Localization.Xml/LINGYUN/Abp/Localization/Xml/XmlPhysicalFileLocalizationResourceContributor.cs) - [XmlVirtualFileLocalizationResourceContributor.cs](file://aspnet-core/framework/localization/LINGYUN.Abp.Localization.Xml/LINGYUN/Abp/Localization/Xml/XmlVirtualFileLocalizationResourceContributor.cs) - [TextAppService.cs](file://aspnet-core/framework/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/TextAppService.cs) - [LanguageAppService.cs](file://aspnet-core/framework/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/LanguageAppService.cs) - [ILanguageAppService.cs](file://aspnet-core/framework/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/ILanguageAppService.cs) - [ITextAppService.cs](file://aspnet-core/framework/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/ITextAppService.cs) - [GetTextsInput.cs](file://aspnet-core/framework/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/GetTextsInput.cs) - [TextDto.cs](file://aspnet-core/framework/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/TextDto.cs) - [zh-Hans.xml](file://aspnet-core/tests/LINGYUN.Abp.Localization.Xml.Tests/LINGYUN/Abp/Localization/Xml/Resources/zh-Hans.xml) - [en.xml](file://aspnet-core/tests/LINGYUN.Abp.Localization.Xml.Tests/LINGYUN/Abp/Localization/Xml/Resources/en.xml) - [abp.js](file://aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/abp/core/abp.js)目录
简介
本项目提供了一套完整的本地化扩展解决方案,支持多语言文化映射、JSON和XML本地化文件处理。系统通过模块化设计实现了灵活的本地化功能,包括文化标识映射、物理和虚拟文件资源贡献者、以及前后端集成的本地化服务。开发者可以利用这些功能实现动态文化切换和高效的多语言支持。
项目结构
本地化扩展主要由四个核心模块组成:文化映射、JSON本地化、XML本地化和ASP.NET Core MVC本地化。这些模块共同构成了一个完整的本地化解决方案。
graph TD
subgraph "本地化扩展"
A[文化映射]
B[JSON本地化]
C[XML本地化]
D[ASP.NET Core MVC本地化]
end
A --> |映射配置| E[AbpLocalizationCultureMapOptions]
B --> |模块依赖| F[AbpLocalizationModule]
C --> |文件处理| G[XmlLocalizationFile]
D --> |服务接口| H[ITextAppService]
D --> |应用服务| I[TextAppService]
C --> |资源贡献者| J[XmlPhysicalFileLocalizationResourceContributor]
C --> |虚拟文件| K[XmlVirtualFileLocalizationResourceContributor]
Diagram sources
- AbpLocalizationCultureMapModule.cs
- AbpLocalizationJsonModule.cs
- AbpLocalizationXmlModule.cs
- TextAppService.cs
Section sources
- AbpLocalizationCultureMapModule.cs
- AbpLocalizationJsonModule.cs
- AbpLocalizationXmlModule.cs
核心组件
本地化扩展的核心组件包括文化映射模块、JSON和XML本地化处理模块,以及ASP.NET Core MVC本地化服务。这些组件协同工作,提供了完整的多语言支持解决方案。
Section sources
- AbpLocalizationCultureMapModule.cs
- AbpLocalizationJsonModule.cs
- AbpLocalizationXmlModule.cs
- TextAppService.cs
架构概述
本地化扩展采用分层架构设计,从底层的文件处理到上层的服务接口,形成了完整的本地化功能链。
graph TD
subgraph "前端"
A[abp.js]
B[文化切换]
end
subgraph "应用层"
C[TextAppService]
D[LanguageAppService]
end
subgraph "领域层"
E[XmlLocalizationFile]
F[XmlPhysicalFileLocalizationResourceContributor]
G[XmlVirtualFileLocalizationResourceContributor]
end
subgraph "基础设施层"
H[AbpLocalizationModule]
I[AbpAspNetCoreModule]
end
A --> C
B --> C
C --> E
D --> E
E --> F
E --> G
F --> H
G --> H
C --> H
D --> I
Diagram sources
- TextAppService.cs
- LanguageAppService.cs
- XmlLocalizationFile.cs
- XmlPhysicalFileLocalizationResourceContributor.cs
- abp.js
详细组件分析
文化映射分析
文化映射组件允许将多种格式的区域性标识映射到标准格式,解决了不同系统间文化标识不一致的问题。
classDiagram
class AbpLocalizationCultureMapOptions {
+List<CultureMapInfo> CulturesMaps
+List<CultureMapInfo> UiCulturesMaps
+AbpLocalizationCultureMapOptions()
}
class CultureMapInfo {
+string TargetCulture
+string[] SourceCultures
}
class AbpLocalizationCultureMapModule {
+ConfigureServices()
+OnApplicationInitialization()
}
AbpLocalizationCultureMapOptions --> CultureMapInfo : "包含"
AbpLocalizationCultureMapModule --> AbpLocalizationCultureMapOptions : "配置"
Diagram sources
- AbpLocalizationCultureMapOptions.cs
- CultureMapInfo.cs
- AbpLocalizationCultureMapModule.cs
Section sources
- AbpLocalizationCultureMapOptions.cs
- CultureMapInfo.cs
XML本地化分析
XML本地化组件提供了完整的XML格式本地化文件处理能力,支持物理文件和虚拟文件系统。
classDiagram
class XmlLocalizationFile {
+CultureInfo Culture
+LocalizationText[] Texts
+WriteToPath(filePath)
+InternalWrite(stream, encoding)
}
class CultureInfo {
+string Name
}
class LocalizationText {
+string Key
+string Value
}
class XmlPhysicalFileLocalizationResourceContributor {
-string _filePath
+BuildFileProvider(context)
+CreateDictionaries(fileProvider, filePath)
}
class XmlVirtualFileLocalizationResourceContributor {
+BuildFileProvider(context)
}
class XmlFileLocalizationResourceContributorBase {
+CreateDictionaryFromFile(file)
+CanParseFile(file)
}
XmlLocalizationFile --> CultureInfo
XmlLocalizationFile --> LocalizationText
XmlPhysicalFileLocalizationResourceContributor --> XmlFileLocalizationResourceContributorBase
XmlVirtualFileLocalizationResourceContributor --> XmlFileLocalizationResourceContributorBase
Diagram sources
- XmlLocalizationFile.cs
- XmlPhysicalFileLocalizationResourceContributor.cs
- XmlVirtualFileLocalizationResourceContributor.cs
Section sources
- XmlLocalizationFile.cs
- XmlPhysicalFileLocalizationResourceContributor.cs
本地化服务分析
本地化服务组件提供了REST API接口,支持获取本地化文本和语言列表。
sequenceDiagram
participant Frontend as "前端"
participant TextAppService as "TextAppService"
participant LocalizerFactory as "IStringLocalizerFactory"
participant ExternalStore as "IExternalLocalizationStore"
Frontend->>TextAppService : GetByCultureKeyAsync(input)
TextAppService->>LocalizerFactory : CreateByResourceNameAsync(input.ResourceName)
LocalizerFactory-->>TextAppService : IStringLocalizer
TextAppService->>TextAppService : CultureHelper.Use(input.CultureName)
TextAppService->>IStringLocalizer : [input.Key]
IStringLocalizer-->>TextAppService : LocalizedString
TextAppService-->>Frontend : TextDto
Frontend->>TextAppService : GetListAsync(input)
TextAppService->>ExternalStore : GetResourcesAsync()
ExternalStore-->>TextAppService : Resource列表
TextAppService->>LocalizerFactory : CreateByResourceNameAsync(resource.ResourceName)
LocalizerFactory-->>TextAppService : IStringLocalizer
TextAppService->>IStringLocalizer : GetAllStringsAsync()
IStringLocalizer-->>TextAppService : LocalizedString[]
TextAppService-->>Frontend : ListResultDto<TextDifferenceDto>
Diagram sources
- TextAppService.cs
- ITextAppService.cs
- GetTextsInput.cs
Section sources
- TextAppService.cs
- ITextAppService.cs
依赖分析
本地化扩展的依赖关系清晰,各模块之间耦合度低,便于独立使用和维护。
graph TD
A[AbpLocalizationCultureMapModule] --> B[AbpAspNetCoreModule]
C[AbpLocalizationJsonModule] --> D[AbpLocalizationModule]
E[AbpLocalizationXmlModule] --> D[AbpLocalizationModule]
F[TextAppService] --> G[IStringLocalizerFactory]
F --> H[IExternalLocalizationStore]
F --> I[AbpLocalizationOptions]
J[XmlPhysicalFileLocalizationResourceContributor] --> K[PhysicalFileProvider]
L[XmlVirtualFileLocalizationResourceContributor] --> M[IVirtualFileProvider]
Diagram sources
- AbpLocalizationCultureMapModule.cs
- AbpLocalizationJsonModule.cs
- [AbpLocalizationXmlModule.cs](file://aspnet-core/framework/localization/LINGYUN.Abp.Localization.Xml/L