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.
3.5 KiB
3.5 KiB
LINGYUN.Abp.Localization.Persistence
模块说明
本地化组件持久层模块,提供将本地化资源持久化到存储设施的功能。此模块允许你将静态本地化文档保存到持久化存储中,方便管理和维护。
功能特性
- 支持将静态本地化资源持久化到存储设施
- 提供本地化资源的读写接口
- 支持自定义持久化存储实现
- 支持异步读写操作
- 支持多语言文化支持
- 支持选择性持久化指定的资源
安装
dotnet add package LINGYUN.Abp.Localization.Persistence
基础模块
- Volo.Abp.Localization
配置说明
模块提供以下配置选项:
- SaveStaticLocalizationsToPersistence:是否启用本地化资源持久化(默认:true)
- SaveToPersistenceResources:需要持久化的资源列表
使用方法
- 添加模块依赖:
[DependsOn(
typeof(AbpLocalizationPersistenceModule))]
public class YouProjectModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
Configure<AbpLocalizationPersistenceOptions>(options =>
{
// 启用持久化设施
options.SaveStaticLocalizationsToPersistence = true;
// 指定你的本地化资源类型, 此类型下定义的静态文档将被持久化到存储设施
options.AddPersistenceResource<YouProjectResource>();
});
// 或者使用扩展方法持久化本地化资源类型
Configure<AbpLocalizationOptions>(options =>
{
// 效果如上
options.UsePersistence<YouProjectResource>();
});
}
}
扩展接口
ILocalizationPersistenceReader
用于从持久化存储中读取本地化资源:
public interface ILocalizationPersistenceReader
{
// 获取指定资源的本地化字符串
LocalizedString GetOrNull(string resourceName, string cultureName, string name);
// 填充本地化字典
void Fill(string resourceName, string cultureName, Dictionary<string, LocalizedString> dictionary);
// 异步填充本地化字典
Task FillAsync(string resourceName, string cultureName, Dictionary<string, LocalizedString> dictionary);
// 获取支持的文化列表
Task<IEnumerable<string>> GetSupportedCulturesAsync();
}
ILocalizationPersistenceWriter
用于将本地化资源写入持久化存储:
public interface ILocalizationPersistenceWriter
{
// 写入语言信息
Task<bool> WriteLanguageAsync(LanguageInfo language);
// 写入资源信息
Task<bool> WriteResourceAsync(LocalizationResourceBase resource);
// 获取已存在的文本
Task<IEnumerable<string>> GetExistsTextsAsync(
string resourceName,
string cultureName,
IEnumerable<string> keys);
// 写入本地化文本
Task<bool> WriteTextsAsync(IEnumerable<LocalizableStringText> texts);
}
自定义持久化实现
要实现自定义的持久化存储,需要:
- 实现
ILocalizationPersistenceReader接口 - 实现
ILocalizationPersistenceWriter接口 - 在模块中注册你的实现:
public override void ConfigureServices(ServiceConfigurationContext context)
{
context.Services.AddTransient<ILocalizationPersistenceReader, YourCustomReader>();
context.Services.AddTransient<ILocalizationPersistenceWriter, YourCustomWriter>();
}