mirror of https://github.com/abpframework/abp.git
10 changed files with 163 additions and 36 deletions
@ -0,0 +1,8 @@ |
|||
using System.Collections.Generic; |
|||
|
|||
namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations; |
|||
|
|||
public class ApplicationLocalizationDto |
|||
{ |
|||
public Dictionary<string, ApplicationLocalizationResourceDto> Resources { get; set; } |
|||
} |
|||
@ -0,0 +1,10 @@ |
|||
using System.Collections.Generic; |
|||
|
|||
namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations; |
|||
|
|||
public class ApplicationLocalizationResourceDto |
|||
{ |
|||
public Dictionary<string, string> Texts { get; set; } |
|||
|
|||
public List<string> BaseResources { get; set; } |
|||
} |
|||
@ -0,0 +1,9 @@ |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Application.Services; |
|||
|
|||
namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations; |
|||
|
|||
public interface IAbpApplicationLocalizationAppService : IApplicationService |
|||
{ |
|||
Task<ApplicationLocalizationDto> GetAsync(string culture); |
|||
} |
|||
@ -0,0 +1,69 @@ |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using System.Threading.Tasks; |
|||
using Microsoft.Extensions.Localization; |
|||
using Microsoft.Extensions.Options; |
|||
using Volo.Abp.Application.Services; |
|||
using Volo.Abp.Localization; |
|||
using Volo.Abp.Localization.External; |
|||
|
|||
namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations; |
|||
|
|||
public class AbpApplicationLocalizationAppService : |
|||
ApplicationService, |
|||
IAbpApplicationLocalizationAppService |
|||
{ |
|||
protected IExternalLocalizationStore ExternalLocalizationStore { get; } |
|||
protected AbpLocalizationOptions LocalizationOptions { get; } |
|||
|
|||
public AbpApplicationLocalizationAppService( |
|||
IExternalLocalizationStore externalLocalizationStore, |
|||
IOptions<AbpLocalizationOptions> localizationOptions) |
|||
{ |
|||
ExternalLocalizationStore = externalLocalizationStore; |
|||
LocalizationOptions = localizationOptions.Value; |
|||
} |
|||
|
|||
public async Task<ApplicationLocalizationDto> GetAsync(string culture) |
|||
{ |
|||
using (CultureHelper.Use(culture)) |
|||
{ |
|||
var localizationConfig = new ApplicationLocalizationDto(); |
|||
|
|||
var resources = LocalizationOptions |
|||
.Resources |
|||
.Values |
|||
.Union( |
|||
await ExternalLocalizationStore.GetResourcesAsync() |
|||
); |
|||
|
|||
foreach (var resource in resources) |
|||
{ |
|||
var dictionary = new Dictionary<string, string>(); |
|||
|
|||
var localizer = await StringLocalizerFactory.CreateByResourceNameOrNullAsync(resource.ResourceName); |
|||
if (localizer != null) |
|||
{ |
|||
var localizedStrings = await localizer.GetAllStringsAsync( |
|||
includeParentCultures: true, |
|||
includeBaseLocalizers: false, //TODO: Test this!
|
|||
includeDynamicContributors: false |
|||
); |
|||
|
|||
foreach (var localizedString in localizedStrings) |
|||
{ |
|||
dictionary[localizedString.Name] = localizedString.Value; |
|||
} |
|||
} |
|||
|
|||
localizationConfig.Resources[resource.ResourceName] = |
|||
new ApplicationLocalizationResourceDto { |
|||
Texts = dictionary, |
|||
BaseResources = resource.BaseResourceNames |
|||
}; |
|||
} |
|||
|
|||
return localizationConfig; |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,24 @@ |
|||
using System.Threading.Tasks; |
|||
using Microsoft.AspNetCore.Mvc; |
|||
|
|||
namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations; |
|||
|
|||
[Area("abp")] |
|||
[RemoteService(Name = "abp")] |
|||
[Route("api/abp/application-localization")] |
|||
public class AbpApplicationLocalizationController: AbpControllerBase, IAbpApplicationLocalizationAppService |
|||
{ |
|||
private readonly IAbpApplicationLocalizationAppService _localizationAppService; |
|||
|
|||
public AbpApplicationLocalizationController(IAbpApplicationLocalizationAppService localizationAppService) |
|||
{ |
|||
_localizationAppService = localizationAppService; |
|||
} |
|||
|
|||
[HttpGet] |
|||
[Route("{culture}")] |
|||
public virtual async Task<ApplicationLocalizationDto> GetAsync(string culture) |
|||
{ |
|||
return await _localizationAppService.GetAsync(culture); |
|||
} |
|||
} |
|||
@ -0,0 +1,35 @@ |
|||
using System; |
|||
using System.Threading.Tasks; |
|||
using Microsoft.AspNetCore.Mvc; |
|||
using Microsoft.Extensions.Localization; |
|||
using Microsoft.Extensions.Options; |
|||
using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations; |
|||
using Volo.Abp.Auditing; |
|||
using Volo.Abp.Http; |
|||
using Volo.Abp.Localization; |
|||
|
|||
namespace Volo.Abp.AspNetCore.Mvc.Localization; |
|||
|
|||
[Area("Abp")] |
|||
[Route("Abp/ApplicationLocalizationScript")] |
|||
[DisableAuditing] |
|||
[RemoteService(false)] |
|||
[ApiExplorerSettings(IgnoreApi = true)] |
|||
public class AbpApplicationLocalizationScriptController : AbpController |
|||
{ |
|||
protected IAbpApplicationLocalizationAppService LocalizationAppService { get; } |
|||
|
|||
public AbpApplicationLocalizationScriptController( |
|||
IAbpApplicationLocalizationAppService localizationAppService) |
|||
{ |
|||
LocalizationAppService = localizationAppService; |
|||
} |
|||
|
|||
[HttpGet] |
|||
[Route("{culture}")] |
|||
[Produces(MimeTypes.Application.Javascript, MimeTypes.Text.Plain)] |
|||
public async Task GetAsync(string culture) |
|||
{ |
|||
throw new NotImplementedException(); |
|||
} |
|||
} |
|||
@ -1,35 +0,0 @@ |
|||
using System; |
|||
using System.Threading.Tasks; |
|||
using Microsoft.AspNetCore.Mvc; |
|||
using Microsoft.Extensions.Localization; |
|||
using Microsoft.Extensions.Options; |
|||
using Volo.Abp.Auditing; |
|||
using Volo.Abp.Localization; |
|||
|
|||
namespace Volo.Abp.AspNetCore.Mvc.Localization; |
|||
|
|||
[Area("Abp")] |
|||
[Route("Abp/LocalizationScript")] |
|||
[DisableAuditing] |
|||
[RemoteService(false)] |
|||
[ApiExplorerSettings(IgnoreApi = true)] |
|||
public class AbpLocalizationScriptController |
|||
{ |
|||
protected AbpLocalizationOptions LocalizationOptions { get; } |
|||
protected IStringLocalizerFactory StringLocalizerFactory { get; } |
|||
|
|||
public AbpLocalizationScriptController( |
|||
IOptions<AbpLocalizationOptions> localizationOptions, |
|||
IStringLocalizerFactory stringLocalizerFactory) |
|||
{ |
|||
StringLocalizerFactory = stringLocalizerFactory; |
|||
LocalizationOptions = localizationOptions.Value; |
|||
} |
|||
|
|||
[HttpGet] |
|||
[Route("{culture}")] |
|||
public async Task GetAsync(string culture) |
|||
{ |
|||
throw new NotImplementedException(); |
|||
} |
|||
} |
|||
Loading…
Reference in new issue