diff --git a/aspnet-core/modules/text-templating/LINGYUN.Abp.TextTemplating.Domain/LINGYUN/Abp/TextTemplating/TextTemplateContentContributor.cs b/aspnet-core/modules/text-templating/LINGYUN.Abp.TextTemplating.Domain/LINGYUN/Abp/TextTemplating/TextTemplateContentContributor.cs index 6c6b15a72..027a7b148 100644 --- a/aspnet-core/modules/text-templating/LINGYUN.Abp.TextTemplating.Domain/LINGYUN/Abp/TextTemplating/TextTemplateContentContributor.cs +++ b/aspnet-core/modules/text-templating/LINGYUN.Abp.TextTemplating.Domain/LINGYUN/Abp/TextTemplating/TextTemplateContentContributor.cs @@ -1,6 +1,7 @@ using Microsoft.Extensions.Caching.Distributed; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; +using System; using System.Threading.Tasks; using Volo.Abp.Caching; using Volo.Abp.DependencyInjection; @@ -42,6 +43,12 @@ public class TextTemplateContentContributor : ITemplateContentContributor, ITran var repository = context.ServiceProvider.GetRequiredService(); var template = await repository.FindByNameAsync(context.TemplateDefinition.Name, culture); + // 2025/06/23 fixed 非内联本地化模板内容为空时,回退到默认文化 + if (template == null && !culture.IsNullOrWhiteSpace()) + { + template = await repository.FindByNameAsync(context.TemplateDefinition.Name, context.TemplateDefinition.DefaultCultureName); + } + return new TextTemplateContentCacheItem( template?.Name, template?.Content, diff --git a/aspnet-core/modules/text-templating/LINGYUN.Abp.TextTemplating.Domain/LINGYUN/Abp/TextTemplating/TextTemplateContentProvider.cs b/aspnet-core/modules/text-templating/LINGYUN.Abp.TextTemplating.Domain/LINGYUN/Abp/TextTemplating/TextTemplateContentProvider.cs index f668f214b..281e1e309 100644 --- a/aspnet-core/modules/text-templating/LINGYUN.Abp.TextTemplating.Domain/LINGYUN/Abp/TextTemplating/TextTemplateContentProvider.cs +++ b/aspnet-core/modules/text-templating/LINGYUN.Abp.TextTemplating.Domain/LINGYUN/Abp/TextTemplating/TextTemplateContentProvider.cs @@ -30,8 +30,12 @@ public class TextTemplateContentProvider : TemplateContentProvider, ITransientDe bool tryDefaults = true, bool useCurrentCultureIfCultureNameIsNull = true) { - var template = await TemplateDefinitionStore.GetAsync(templateName); + var template = await TemplateDefinitionStore.GetOrNullAsync(templateName); + if (template != null) + { + return await GetContentOrNullAsync(template, cultureName); + } - return await GetContentOrNullAsync(template, cultureName); + return await base.GetContentOrNullAsync(templateName, cultureName, tryDefaults, useCurrentCultureIfCultureNameIsNull); } } diff --git a/aspnet-core/modules/text-templating/LINGYUN.Abp.TextTemplating.Domain/LINGYUN/Abp/TextTemplating/TextTemplateDefinitionInitializer.cs b/aspnet-core/modules/text-templating/LINGYUN.Abp.TextTemplating.Domain/LINGYUN/Abp/TextTemplating/TextTemplateDefinitionInitializer.cs index a108e7ec9..7406aeb33 100644 --- a/aspnet-core/modules/text-templating/LINGYUN.Abp.TextTemplating.Domain/LINGYUN/Abp/TextTemplating/TextTemplateDefinitionInitializer.cs +++ b/aspnet-core/modules/text-templating/LINGYUN.Abp.TextTemplating.Domain/LINGYUN/Abp/TextTemplating/TextTemplateDefinitionInitializer.cs @@ -36,7 +36,7 @@ public class TextTemplateDefinitionInitializer : ITransientDependency using var scope = RootServiceProvider.CreateScope(); var applicationLifetime = scope.ServiceProvider.GetService(); var token = applicationLifetime?.ApplicationStopping ?? cancellationToken; - using (CancellationTokenProvider.Use(cancellationToken)) + using (CancellationTokenProvider.Use(token)) { if (CancellationTokenProvider.Token.IsCancellationRequested) {