Browse Source

Merge pull request #618 from colinin/global-localized-text-resources-interface

Global localized text resources interface
pull/645/head
yx lin 4 years ago
committed by GitHub
parent
commit
6b21d42620
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 7
      aspnet-core/LINGYUN.MicroService.All.sln
  2. 3
      aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/FodyWeavers.xml
  3. 30
      aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/FodyWeavers.xsd
  4. 23
      aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN.Abp.AspNetCore.Mvc.Localization.csproj
  5. 43
      aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/AbpAspNetCoreMvcLocalizationModule.cs
  6. 17
      aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/GetTextByKeyInput.cs
  7. 19
      aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/GetTextsInput.cs
  8. 11
      aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/ILanguageAppService.cs
  9. 11
      aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/IResourceAppService.cs
  10. 13
      aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/ITextAppService.cs
  11. 33
      aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/LanguageAppService.cs
  12. 27
      aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/LanguageController.cs
  13. 8
      aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/LanguageDto.cs
  14. 34
      aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/ResourceAppService.cs
  15. 27
      aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/ResourceController.cs
  16. 9
      aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/ResourceDto.cs
  17. 21
      aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/Resources/en.json
  18. 21
      aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/Resources/zh-Hans.json
  19. 150
      aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/TextAppService.cs
  20. 34
      aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/TextController.cs
  21. 6
      aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/TextDifferenceDto.cs
  22. 6
      aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/TextDto.cs
  23. 25
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/CreateOrUpdateLanguageInput.cs
  24. 20
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/CreateOrUpdateResourceInput.cs
  25. 10
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/CreateOrUpdateTextInput.cs
  26. 20
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/CreateTextInput.cs
  27. 9
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/GetLanguagesInput.cs
  28. 9
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/GetResourcesInput.cs
  29. 24
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/GetTextsInput.cs
  30. 19
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/ILanguageAppService.cs
  31. 18
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/IResourceAppService.cs
  32. 13
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/ITextAppService.cs
  33. 13
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/ResourceDto.cs
  34. 19
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/RestoreDefaultTextInput.cs
  35. 13
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/SetTextInput.cs
  36. 6
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/UpdateTextInput.cs
  37. 73
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application/LINGYUN/Abp/LocalizationManagement/LanguageAppService.cs
  38. 13
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application/LINGYUN/Abp/LocalizationManagement/LocalizationAppServiceBase.cs
  39. 6
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application/LINGYUN/Abp/LocalizationManagement/LocalizationManagementApplicationMapperProfile.cs
  40. 78
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application/LINGYUN/Abp/LocalizationManagement/ResourceAppService.cs
  41. 98
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application/LINGYUN/Abp/LocalizationManagement/TextAppService.cs
  42. 24
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN/Abp/LocalizationManagement/Localization/Resources/en.json
  43. 24
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN/Abp/LocalizationManagement/Localization/Resources/zh-Hans.json
  44. 25
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/ITextRepository.cs
  45. 2
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationStore.cs
  46. 44
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore/LINGYUN/Abp/LocalizationManagement/EntityFrameworkCore/EfCoreTextRepository.cs
  47. 5
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.HttpApi/LINGYUN.Abp.LocalizationManagement.HttpApi.csproj
  48. 9
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.HttpApi/LINGYUN/Abp/LocalizationManagement/AbpLocalizationManagementHttpApiModule.cs
  49. 62
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.HttpApi/LINGYUN/Abp/LocalizationManagement/LanguageController.cs
  50. 62
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.HttpApi/LINGYUN/Abp/LocalizationManagement/ResourceController.cs
  51. 40
      aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.HttpApi/LINGYUN/Abp/LocalizationManagement/TextController.cs
  52. 2
      aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/BackendAdminHttpApiHostModule.cs
  53. 1
      aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/LY.MicroService.BackendAdmin.HttpApi.Host.csproj
  54. 5
      aspnet-core/services/LY.MicroService.LocalizationManagement.HttpApi.Host/LocalizationManagementHttpApiHostModule.Configure.cs
  55. 1
      aspnet-core/services/LY.MicroService.PlatformManagement.HttpApi.Host/LY.MicroService.PlatformManagement.HttpApi.Host.csproj
  56. 2
      aspnet-core/services/LY.MicroService.PlatformManagement.HttpApi.Host/PlatformManagementHttpApiHostModule.cs
  57. 1
      aspnet-core/services/LY.MicroService.RealtimeMessage.HttpApi.Host/LY.MicroService.RealtimeMessage.HttpApi.Host.csproj
  58. 2
      aspnet-core/services/LY.MicroService.RealtimeMessage.HttpApi.Host/RealtimeMessageHttpApiHostModule.cs
  59. 2
      aspnet-core/services/LY.MicroService.TaskManagement.HttpApi.Host/LY.MicroService.TaskManagement.HttpApi.Host.csproj
  60. 13
      aspnet-core/services/LY.MicroService.TaskManagement.HttpApi.Host/TaskManagementHttpApiHostModule.Configure.cs
  61. 4
      aspnet-core/services/LY.MicroService.TaskManagement.HttpApi.Host/TaskManagementHttpApiHostModule.cs
  62. 1
      aspnet-core/services/LY.MicroService.WebhooksManagement.HttpApi.Host/LY.MicroService.WebhooksManagement.HttpApi.Host.csproj
  63. 2
      aspnet-core/services/LY.MicroService.WebhooksManagement.HttpApi.Host/WebhooksManagementHttpApiHostModule.cs
  64. 2
      aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/LY.MicroService.WorkflowManagement.HttpApi.Host.csproj
  65. 13
      aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/WorkflowManagementHttpApiHostModule.Configure.cs
  66. 6
      aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/WorkflowManagementHttpApiHostModule.cs
  67. 2
      aspnet-core/services/LY.MicroService.identityServer.HttpApi.Host/IdentityServerHttpApiHostModule.cs
  68. 1
      aspnet-core/services/LY.MicroService.identityServer.HttpApi.Host/LY.MicroService.identityServer.HttpApi.Host.csproj
  69. 2
      gateways/internal/LINGYUN.MicroService.Internal.ApiGateway/src/LINGYUN.MicroService.Internal.ApiGateway/Properties/launchSettings.json
  70. 36
      gateways/internal/LINGYUN.MicroService.Internal.ApiGateway/src/LINGYUN.MicroService.Internal.ApiGateway/ocelot.Development.json

7
aspnet-core/LINGYUN.MicroService.All.sln

@ -426,6 +426,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.TextTemplating.
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Notifications.Common", "modules\common\LINGYUN.Abp.Notifications.Common\LINGYUN.Abp.Notifications.Common.csproj", "{0CE035CF-2D8A-4559-93EC-ADBEC4237C61}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Notifications.Common", "modules\common\LINGYUN.Abp.Notifications.Common\LINGYUN.Abp.Notifications.Common.csproj", "{0CE035CF-2D8A-4559-93EC-ADBEC4237C61}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.AspNetCore.Mvc.Localization", "modules\localization\LINGYUN.Abp.AspNetCore.Mvc.Localization\LINGYUN.Abp.AspNetCore.Mvc.Localization.csproj", "{995DB1CE-A2FC-4468-A521-4207FD587EC5}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
@ -1104,6 +1106,10 @@ Global
{0CE035CF-2D8A-4559-93EC-ADBEC4237C61}.Debug|Any CPU.Build.0 = Debug|Any CPU {0CE035CF-2D8A-4559-93EC-ADBEC4237C61}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0CE035CF-2D8A-4559-93EC-ADBEC4237C61}.Release|Any CPU.ActiveCfg = Release|Any CPU {0CE035CF-2D8A-4559-93EC-ADBEC4237C61}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0CE035CF-2D8A-4559-93EC-ADBEC4237C61}.Release|Any CPU.Build.0 = Release|Any CPU {0CE035CF-2D8A-4559-93EC-ADBEC4237C61}.Release|Any CPU.Build.0 = Release|Any CPU
{995DB1CE-A2FC-4468-A521-4207FD587EC5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{995DB1CE-A2FC-4468-A521-4207FD587EC5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{995DB1CE-A2FC-4468-A521-4207FD587EC5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{995DB1CE-A2FC-4468-A521-4207FD587EC5}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
@ -1312,6 +1318,7 @@ Global
{130F8ED1-A64F-48DE-BF43-18EAD19CAF63} = {ABD89F39-62D9-439E-8662-BE4F36BFA04F} {130F8ED1-A64F-48DE-BF43-18EAD19CAF63} = {ABD89F39-62D9-439E-8662-BE4F36BFA04F}
{A53FE09E-6B1C-46C0-9422-C313D14AE9E4} = {ABD89F39-62D9-439E-8662-BE4F36BFA04F} {A53FE09E-6B1C-46C0-9422-C313D14AE9E4} = {ABD89F39-62D9-439E-8662-BE4F36BFA04F}
{0CE035CF-2D8A-4559-93EC-ADBEC4237C61} = {8AC72641-30D3-4ACF-89FA-808FADC55C2E} {0CE035CF-2D8A-4559-93EC-ADBEC4237C61} = {8AC72641-30D3-4ACF-89FA-808FADC55C2E}
{995DB1CE-A2FC-4468-A521-4207FD587EC5} = {90E88EAC-4291-4406-8D88-EFDF61B11292}
EndGlobalSection EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {C95FDF91-16F2-4A8B-A4BE-0E62D1B66718} SolutionGuid = {C95FDF91-16F2-4A8B-A4BE-0E62D1B66718}

3
aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/FodyWeavers.xml

@ -0,0 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<ConfigureAwait ContinueOnCapturedContext="false" />
</Weavers>

30
aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/FodyWeavers.xsd

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

23
aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN.Abp.AspNetCore.Mvc.Localization.csproj

@ -0,0 +1,23 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\common.props" />
<Import Project="..\..\..\configureawait.props" />
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace />
</PropertyGroup>
<ItemGroup>
<None Remove="LINGYUN\Abp\AspNetCore\Mvc\Localization\Resources\*.json" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="LINGYUN\Abp\AspNetCore\Mvc\Localization\Resources\*.json" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Volo.Abp.AspNetCore.Mvc" Version="$(VoloAbpPackageVersion)" />
</ItemGroup>
</Project>

43
aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/AbpAspNetCoreMvcLocalizationModule.cs

@ -0,0 +1,43 @@
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc.Localization;
using Volo.Abp.Localization;
using Volo.Abp.Localization.Resources.AbpLocalization;
using Volo.Abp.Modularity;
using Volo.Abp.VirtualFileSystem;
namespace LINGYUN.Abp.AspNetCore.Mvc.Localization;
[DependsOn(typeof(AbpAspNetCoreMvcModule))]
public class AbpAspNetCoreMvcLocalizationModule : AbpModule
{
public override void PreConfigureServices(ServiceConfigurationContext context)
{
PreConfigure<AbpMvcDataAnnotationsLocalizationOptions>(options =>
{
options.AddAssemblyResource(
typeof(AbpLocalizationResource),
typeof(AbpAspNetCoreMvcLocalizationModule).Assembly);
});
PreConfigure<IMvcBuilder>(mvcBuilder =>
{
mvcBuilder.AddApplicationPartIfNotExists(typeof(AbpAspNetCoreMvcLocalizationModule).Assembly);
});
}
public override void ConfigureServices(ServiceConfigurationContext context)
{
Configure<AbpVirtualFileSystemOptions>(options =>
{
options.FileSets.AddEmbedded<AbpAspNetCoreMvcLocalizationModule>();
});
Configure<AbpLocalizationOptions>(options =>
{
options.Resources
.Get<AbpLocalizationResource>()
.AddVirtualJson("/LINGYUN/Abp/AspNetCore/Mvc/Localization/Resources");
});
}
}

17
aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/GetTextByKeyInput.cs

@ -0,0 +1,17 @@
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Validation;
namespace LINGYUN.Abp.AspNetCore.Mvc.Localization
{
public class GetTextByKeyInput
{
[Required]
public string Key { get; set; }
[Required]
public string CultureName { get; set; }
[Required]
public string ResourceName { get; set; }
}
}

19
aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/GetTextsInput.cs

@ -0,0 +1,19 @@
using System.ComponentModel.DataAnnotations;
namespace LINGYUN.Abp.AspNetCore.Mvc.Localization
{
public class GetTextsInput
{
[Required]
public string CultureName { get; set; }
[Required]
public string TargetCultureName { get; set; }
public string ResourceName { get; set; }
public bool? OnlyNull { get; set; }
public string Filter { get; set; }
}
}

11
aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/ILanguageAppService.cs

@ -0,0 +1,11 @@
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
namespace LINGYUN.Abp.AspNetCore.Mvc.Localization
{
public interface ILanguageAppService : IApplicationService
{
Task<ListResultDto<LanguageDto>> GetListAsync();
}
}

11
aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/IResourceAppService.cs

@ -0,0 +1,11 @@
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
namespace LINGYUN.Abp.AspNetCore.Mvc.Localization
{
public interface IResourceAppService : IApplicationService
{
Task<ListResultDto<ResourceDto>> GetListAsync();
}
}

13
aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/ITextAppService.cs

@ -0,0 +1,13 @@
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
namespace LINGYUN.Abp.AspNetCore.Mvc.Localization
{
public interface ITextAppService : IApplicationService
{
Task<TextDto> GetByCultureKeyAsync(GetTextByKeyInput input);
Task<ListResultDto<TextDifferenceDto>> GetListAsync(GetTextsInput input);
}
}

33
aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/LanguageAppService.cs

@ -0,0 +1,33 @@
using Microsoft.AspNetCore.Authorization;
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
using Volo.Abp.Localization;
namespace LINGYUN.Abp.AspNetCore.Mvc.Localization
{
[Authorize]
public class LanguageAppService : ApplicationService, ILanguageAppService
{
private readonly ILanguageProvider _languageProvider;
public LanguageAppService(ILanguageProvider languageProvider)
{
_languageProvider = languageProvider;
}
public virtual async Task<ListResultDto<LanguageDto>> GetListAsync()
{
var languages = await _languageProvider.GetLanguagesAsync();
return new ListResultDto<LanguageDto>(
languages.Select(l => new LanguageDto
{
CultureName = l.CultureName,
UiCultureName = l.UiCultureName,
DisplayName = l.DisplayName,
FlagIcon = l.FlagIcon
}).ToList());
}
}
}

27
aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/LanguageController.cs

@ -0,0 +1,27 @@
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.AspNetCore.Mvc;
namespace LINGYUN.Abp.AspNetCore.Mvc.Localization
{
[Area("abp")]
[RemoteService(Name = "abp")]
[Route("api/abp/localization/languages")]
public class LanguageController : AbpController, ILanguageAppService
{
private readonly ILanguageAppService _service;
public LanguageController(ILanguageAppService service)
{
_service = service;
}
[HttpGet]
public virtual Task<ListResultDto<LanguageDto>> GetListAsync()
{
return _service.GetListAsync();
}
}
}

8
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/LanguageDto.cs → aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/LanguageDto.cs

@ -1,11 +1,7 @@
using System; namespace LINGYUN.Abp.AspNetCore.Mvc.Localization
using Volo.Abp.Application.Dtos;
namespace LINGYUN.Abp.LocalizationManagement
{ {
public class LanguageDto : AuditedEntityDto<Guid> public class LanguageDto
{ {
public bool Enable { get; set; }
public string CultureName { get; set; } public string CultureName { get; set; }
public string UiCultureName { get; set; } public string UiCultureName { get; set; }
public string DisplayName { get; set; } public string DisplayName { get; set; }

34
aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/ResourceAppService.cs

@ -0,0 +1,34 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.Extensions.Options;
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
using Volo.Abp.Localization;
namespace LINGYUN.Abp.AspNetCore.Mvc.Localization
{
[Authorize]
public class ResourceAppService : ApplicationService, IResourceAppService
{
private readonly AbpLocalizationOptions _localizationOptions;
public ResourceAppService(
IOptions<AbpLocalizationOptions> localizationOptions)
{
_localizationOptions = localizationOptions.Value;
}
public virtual Task<ListResultDto<ResourceDto>> GetListAsync()
{
var resources = _localizationOptions.Resources.Select(x => new ResourceDto
{
Name = x.Value.ResourceName,
DisplayName = x.Value.ResourceName,
Description = x.Value.ResourceName,
});
return Task.FromResult(new ListResultDto<ResourceDto>(resources.ToList()));
}
}
}

27
aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/ResourceController.cs

@ -0,0 +1,27 @@
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.AspNetCore.Mvc;
namespace LINGYUN.Abp.AspNetCore.Mvc.Localization
{
[Area("abp")]
[RemoteService(Name = "abp")]
[Route("api/abp/localization/resources")]
public class ResourceController : AbpController, IResourceAppService
{
private readonly IResourceAppService _service;
public ResourceController(IResourceAppService service)
{
_service = service;
}
[HttpGet]
public virtual Task<ListResultDto<ResourceDto>> GetListAsync()
{
return _service.GetListAsync();
}
}
}

9
aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/ResourceDto.cs

@ -0,0 +1,9 @@
namespace LINGYUN.Abp.AspNetCore.Mvc.Localization
{
public class ResourceDto
{
public string Name { get; set; }
public string DisplayName { get; set; }
public string Description { get; set; }
}
}

21
aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/Resources/en.json

@ -0,0 +1,21 @@
{
"culture": "en",
"texts": {
"Languages": "Languages",
"Resources": "Resources",
"Texts": "Texts",
"DisplayName:Key": "Key",
"DisplayName:Value": "Value",
"Description:Name": "Name",
"Description:CultureName": "Culture Name",
"Description:ResourceName": "Resource Name",
"Description:TargetCultureName": "Target Culture",
"Description:TargetValue": "Target Value",
"Description:OnlyNull": "Only Null",
"Description:Filter": "Filter",
"Description:UiCultureName": "Ui Culture Name",
"Description:DisplayName": "Display Name",
"Description:FlagIcon": "Flag Icon",
"Description:Description": "Description"
}
}

21
aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/Resources/zh-Hans.json

@ -0,0 +1,21 @@
{
"culture": "zh-Hans",
"texts": {
"Languages": "语言",
"Resources": "资源",
"Texts": "文档",
"DisplayName:Key": "键名",
"DisplayName:Value": "键值",
"Description:Name": "名称",
"Description:CultureName": "文化名称",
"Description:ResourceName": "资源名称",
"Description:TargetCultureName": "目标文化",
"Description:TargetValue": "目标值",
"Description:OnlyNull": "仅限空值",
"Description:Filter": "筛选",
"Description:UiCultureName": "Ui文件名称",
"Description:DisplayName": "显示名称",
"Description:FlagIcon": "旗帜图标",
"Description:Description": "描述"
}
}

150
aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/TextAppService.cs

@ -0,0 +1,150 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.Extensions.Localization;
using Microsoft.Extensions.Options;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
using Volo.Abp.Localization;
namespace LINGYUN.Abp.AspNetCore.Mvc.Localization
{
[Authorize]
public class TextAppService : ApplicationService, ITextAppService
{
private readonly AbpLocalizationOptions _localizationOptions;
private readonly IStringLocalizerFactory _localizerFactory;
public TextAppService(
IStringLocalizerFactory stringLocalizerFactory,
IOptions<AbpLocalizationOptions> localizationOptions)
{
_localizerFactory = stringLocalizerFactory;
_localizationOptions = localizationOptions.Value;
}
public virtual Task<TextDto> GetByCultureKeyAsync(GetTextByKeyInput input)
{
var resource = _localizationOptions.Resources
.Where(l => l.Value.ResourceName.Equals(input.ResourceName))
.Select(l => l.Value)
.FirstOrDefault();
IEnumerable<LocalizedString> localizedStrings = new List<LocalizedString>();
var localizer = _localizerFactory.Create(resource.ResourceType);
using (CultureHelper.Use(input.CultureName))
{
localizedStrings = localizer.GetAllStrings(true);
var result = new TextDto
{
Key = input.Key,
CultureName = input.CultureName,
ResourceName = input.ResourceName,
Value = localizer[input.Key]?.Value
};
return Task.FromResult(result);
}
}
public virtual Task<ListResultDto<TextDifferenceDto>> GetListAsync(GetTextsInput input)
{
var result = new List<TextDifferenceDto>();
if (input.ResourceName.IsNullOrWhiteSpace())
{
var filterResources = _localizationOptions.Resources
.WhereIf(!input.Filter.IsNullOrWhiteSpace(), x => x.Value.ResourceName.Contains(input.Filter));
foreach (var resource in filterResources)
{
result.AddRange(GetTextDifferences(resource.Value, input.CultureName, input.TargetCultureName, input.Filter, input.OnlyNull));
}
}
else
{
var resource = _localizationOptions.Resources
.Where(l => l.Value.ResourceName.Equals(input.ResourceName))
.WhereIf(!input.Filter.IsNullOrWhiteSpace(), x => x.Value.ResourceName.Contains(input.Filter))
.Select(l => l.Value)
.FirstOrDefault();
if (resource != null)
{
result.AddRange(GetTextDifferences(resource, input.CultureName, input.TargetCultureName, input.Filter, input.OnlyNull));
}
}
return Task.FromResult(new ListResultDto<TextDifferenceDto>(result));
}
protected virtual IEnumerable<TextDifferenceDto> GetTextDifferences(
LocalizationResource resource,
string cultureName,
string targetCultureName,
string filter = null,
bool? onlyNull = null)
{
var result = new List<TextDifferenceDto>();
IEnumerable<LocalizedString> localizedStrings = new List<LocalizedString>();
IEnumerable<LocalizedString> targetLocalizedStrings = new List<LocalizedString>();
var localizer = _localizerFactory.Create(resource.ResourceType);
using (CultureHelper.Use(cultureName))
{
localizedStrings = localizer.GetAllStrings(true)
.WhereIf(!filter.IsNullOrWhiteSpace(), x => x.Name.Contains(filter));
}
if (Equals(cultureName, targetCultureName))
{
targetLocalizedStrings = localizedStrings;
}
else
{
using (CultureHelper.Use(targetCultureName))
{
targetLocalizedStrings = localizer.GetAllStrings(true)
.WhereIf(!filter.IsNullOrWhiteSpace(), x => x.Name.Contains(filter));
}
}
foreach (var localizedString in localizedStrings)
{
var targetLocalizedString = targetLocalizedStrings.FirstOrDefault(l => l.Name.Equals(localizedString.Name));
if (onlyNull == true)
{
if (targetLocalizedString == null || targetLocalizedString.Value.IsNullOrWhiteSpace())
{
result.Add(new TextDifferenceDto
{
CultureName = cultureName,
TargetCultureName = targetCultureName,
Key = localizedString.Name,
Value = localizedString.Value,
TargetValue = null,
ResourceName = resource.ResourceName
});
}
}
else
{
result.Add(new TextDifferenceDto
{
CultureName = cultureName,
TargetCultureName = targetCultureName,
Key = localizedString.Name,
Value = localizedString.Value,
TargetValue = targetLocalizedString?.Value,
ResourceName = resource.ResourceName
});
}
}
return result;
}
}
}

34
aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/TextController.cs

@ -0,0 +1,34 @@
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.AspNetCore.Mvc;
namespace LINGYUN.Abp.AspNetCore.Mvc.Localization
{
[Area("abp")]
[RemoteService(Name = "abp")]
[Route("api/abp/localization/texts")]
public class TextController : AbpController, ITextAppService
{
private readonly ITextAppService _service;
public TextController(ITextAppService service)
{
_service = service;
}
[HttpGet]
[Route("by-culture-key")]
public virtual Task<TextDto> GetByCultureKeyAsync(GetTextByKeyInput input)
{
return _service.GetByCultureKeyAsync(input);
}
[HttpGet]
public virtual Task<ListResultDto<TextDifferenceDto>> GetListAsync(GetTextsInput input)
{
return _service.GetListAsync(input);
}
}
}

6
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/TextDifferenceDto.cs → aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/TextDifferenceDto.cs

@ -1,8 +1,6 @@
using Volo.Abp.Application.Dtos; namespace LINGYUN.Abp.AspNetCore.Mvc.Localization
namespace LINGYUN.Abp.LocalizationManagement
{ {
public class TextDifferenceDto : EntityDto<int> public class TextDifferenceDto
{ {
public string CultureName { get; set; } public string CultureName { get; set; }
public string Key { get; set; } public string Key { get; set; }

6
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/TextDto.cs → aspnet-core/modules/localization/LINGYUN.Abp.AspNetCore.Mvc.Localization/LINGYUN/Abp/AspNetCore/Mvc/Localization/TextDto.cs

@ -1,8 +1,6 @@
using Volo.Abp.Application.Dtos; namespace LINGYUN.Abp.AspNetCore.Mvc.Localization
namespace LINGYUN.Abp.LocalizationManagement
{ {
public class TextDto : EntityDto<int> public class TextDto
{ {
public string Key { get; set; } public string Key { get; set; }
public string Value { get; set; } public string Value { get; set; }

25
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/CreateOrUpdateLanguageInput.cs

@ -1,25 +0,0 @@
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Validation;
namespace LINGYUN.Abp.LocalizationManagement
{
public class CreateOrUpdateLanguageInput
{
public virtual bool Enable { get; set; }
[Required]
[DynamicStringLength(typeof(LanguageConsts), nameof(LanguageConsts.MaxCultureNameLength))]
public string CultureName { get; set; }
[Required]
[DynamicStringLength(typeof(LanguageConsts), nameof(LanguageConsts.MaxUiCultureNameLength))]
public string UiCultureName { get; set; }
[Required]
[DynamicStringLength(typeof(LanguageConsts), nameof(LanguageConsts.MaxDisplayNameLength))]
public string DisplayName { get; set; }
[DynamicStringLength(typeof(LanguageConsts), nameof(LanguageConsts.MaxFlagIconLength))]
public string FlagIcon { get; set; }
}
}

20
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/CreateOrUpdateResourceInput.cs

@ -1,20 +0,0 @@
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Validation;
namespace LINGYUN.Abp.LocalizationManagement
{
public class CreateOrUpdateResourceInput
{
public bool Enable { get; set; }
[Required]
[DynamicStringLength(typeof(ResourceConsts), nameof(ResourceConsts.MaxNameLength))]
public string Name { get; set; }
[DynamicStringLength(typeof(ResourceConsts), nameof(ResourceConsts.MaxDisplayNameLength))]
public string DisplayName { get; set; }
[DynamicStringLength(typeof(ResourceConsts), nameof(ResourceConsts.MaxDescriptionLength))]
public string Description { get; set; }
}
}

10
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/CreateOrUpdateTextInput.cs

@ -1,10 +0,0 @@
using Volo.Abp.Validation;
namespace LINGYUN.Abp.LocalizationManagement
{
public class CreateOrUpdateTextInput
{
[DynamicStringLength(typeof(TextConsts), nameof(TextConsts.MaxValueLength))]
public string Value { get; set; }
}
}

20
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/CreateTextInput.cs

@ -1,20 +0,0 @@
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Validation;
namespace LINGYUN.Abp.LocalizationManagement
{
public class CreateTextInput : CreateOrUpdateTextInput
{
[Required]
[DynamicStringLength(typeof(ResourceConsts), nameof(ResourceConsts.MaxNameLength))]
public string ResourceName { get; set; }
[Required]
[DynamicStringLength(typeof(TextConsts), nameof(TextConsts.MaxKeyLength))]
public string Key { get; set; }
[Required]
[DynamicStringLength(typeof(LanguageConsts), nameof(LanguageConsts.MaxCultureNameLength))]
public string CultureName { get; set; }
}
}

9
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/GetLanguagesInput.cs

@ -1,9 +0,0 @@
using Volo.Abp.Application.Dtos;
namespace LINGYUN.Abp.LocalizationManagement
{
public class GetLanguagesInput : PagedAndSortedResultRequestDto
{
public string Filter { get; set; }
}
}

9
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/GetResourcesInput.cs

@ -1,9 +0,0 @@
using Volo.Abp.Application.Dtos;
namespace LINGYUN.Abp.LocalizationManagement
{
public class GetResourcesInput : PagedAndSortedResultRequestDto
{
public string Filter { get; set; }
}
}

24
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/GetTextsInput.cs

@ -1,24 +0,0 @@
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Validation;
namespace LINGYUN.Abp.LocalizationManagement
{
public class GetTextsInput : PagedAndSortedResultRequestDto
{
[Required]
[DynamicStringLength(typeof(LanguageConsts), nameof(LanguageConsts.MaxCultureNameLength))]
public string CultureName { get; set; }
[Required]
[DynamicStringLength(typeof(LanguageConsts), nameof(LanguageConsts.MaxCultureNameLength))]
public string TargetCultureName { get; set; }
[DynamicStringLength(typeof(ResourceConsts), nameof(ResourceConsts.MaxNameLength))]
public string ResourceName { get; set; }
public bool? OnlyNull { get; set; }
public string Filter { get; set; }
}
}

19
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/ILanguageAppService.cs

@ -1,19 +0,0 @@
using System;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
namespace LINGYUN.Abp.LocalizationManagement
{
public interface ILanguageAppService :
ICrudAppService<
LanguageDto,
Guid,
GetLanguagesInput,
CreateOrUpdateLanguageInput,
CreateOrUpdateLanguageInput
>
{
Task<ListResultDto<LanguageDto>> GetAllAsync();
}
}

18
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/IResourceAppService.cs

@ -1,18 +0,0 @@
using System;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
namespace LINGYUN.Abp.LocalizationManagement
{
public interface IResourceAppService :
ICrudAppService<
ResourceDto,
Guid,
GetResourcesInput,
CreateOrUpdateResourceInput,
CreateOrUpdateResourceInput>
{
Task<ListResultDto<ResourceDto>> GetAllAsync();
}
}

13
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/ITextAppService.cs

@ -3,15 +3,10 @@ using Volo.Abp.Application.Services;
namespace LINGYUN.Abp.LocalizationManagement namespace LINGYUN.Abp.LocalizationManagement
{ {
public interface ITextAppService : public interface ITextAppService : IApplicationService
ICrudAppService<
TextDto,
TextDifferenceDto,
int,
GetTextsInput,
CreateTextInput,
UpdateTextInput>
{ {
Task<TextDto> GetByCultureKeyAsync(GetTextByKeyInput input); Task SetTextAsync(SetTextInput input);
Task RestoreToDefaultAsync(RestoreDefaultTextInput input);
} }
} }

13
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/ResourceDto.cs

@ -1,13 +0,0 @@
using System;
using Volo.Abp.Application.Dtos;
namespace LINGYUN.Abp.LocalizationManagement
{
public class ResourceDto : AuditedEntityDto<Guid>
{
public bool Enable { get; set; }
public string Name { get; set; }
public string DisplayName { get; set; }
public string Description { get; set; }
}
}

19
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/RestoreDefaultTextInput.cs

@ -0,0 +1,19 @@
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Validation;
namespace LINGYUN.Abp.LocalizationManagement;
public class RestoreDefaultTextInput
{
[Required]
[DynamicStringLength(typeof(ResourceConsts), nameof(ResourceConsts.MaxNameLength))]
public string ResourceName { get; set; }
[Required]
[DynamicStringLength(typeof(TextConsts), nameof(TextConsts.MaxKeyLength))]
public string Key { get; set; }
[Required]
[DynamicStringLength(typeof(LanguageConsts), nameof(LanguageConsts.MaxCultureNameLength))]
public string CultureName { get; set; }
}

13
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/GetTextByKeyInput.cs → aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/SetTextInput.cs

@ -1,10 +1,14 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Volo.Abp.Validation; using Volo.Abp.Validation;
namespace LINGYUN.Abp.LocalizationManagement namespace LINGYUN.Abp.LocalizationManagement
{ {
public class GetTextByKeyInput public class SetTextInput
{ {
[Required]
[DynamicStringLength(typeof(ResourceConsts), nameof(ResourceConsts.MaxNameLength))]
public string ResourceName { get; set; }
[Required] [Required]
[DynamicStringLength(typeof(TextConsts), nameof(TextConsts.MaxKeyLength))] [DynamicStringLength(typeof(TextConsts), nameof(TextConsts.MaxKeyLength))]
public string Key { get; set; } public string Key { get; set; }
@ -13,8 +17,7 @@ namespace LINGYUN.Abp.LocalizationManagement
[DynamicStringLength(typeof(LanguageConsts), nameof(LanguageConsts.MaxCultureNameLength))] [DynamicStringLength(typeof(LanguageConsts), nameof(LanguageConsts.MaxCultureNameLength))]
public string CultureName { get; set; } public string CultureName { get; set; }
[Required] [DynamicStringLength(typeof(TextConsts), nameof(TextConsts.MaxValueLength))]
[DynamicStringLength(typeof(ResourceConsts), nameof(ResourceConsts.MaxNameLength))] public string Value { get; set; }
public string ResourceName { get; set; }
} }
} }

6
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application.Contracts/LINGYUN/Abp/LocalizationManagement/UpdateTextInput.cs

@ -1,6 +0,0 @@
namespace LINGYUN.Abp.LocalizationManagement
{
public class UpdateTextInput : CreateOrUpdateTextInput
{
}
}

73
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application/LINGYUN/Abp/LocalizationManagement/LanguageAppService.cs

@ -1,73 +0,0 @@
using LINGYUN.Abp.LocalizationManagement.Permissions;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
namespace LINGYUN.Abp.LocalizationManagement
{
public class LanguageAppService :
CrudAppService<
Language,
LanguageDto,
Guid,
GetLanguagesInput,
CreateOrUpdateLanguageInput,
CreateOrUpdateLanguageInput>,
ILanguageAppService
{
public LanguageAppService(ILanguageRepository repository) : base(repository)
{
GetPolicyName = LocalizationManagementPermissions.Language.Default;
GetListPolicyName = LocalizationManagementPermissions.Language.Default;
CreatePolicyName = LocalizationManagementPermissions.Language.Create;
UpdatePolicyName = LocalizationManagementPermissions.Language.Update;
DeletePolicyName = LocalizationManagementPermissions.Language.Delete;
}
public virtual async Task<ListResultDto<LanguageDto>> GetAllAsync()
{
await CheckGetListPolicyAsync();
var languages = await Repository.GetListAsync();
return new ListResultDto<LanguageDto>(
ObjectMapper.Map<List<Language>, List<LanguageDto>>(languages));
}
protected override Language MapToEntity(CreateOrUpdateLanguageInput createInput)
{
return new Language(
createInput.CultureName,
createInput.UiCultureName,
createInput.DisplayName,
createInput.FlagIcon)
{
Enable = createInput.Enable
};
}
protected override void MapToEntity(CreateOrUpdateLanguageInput updateInput, Language entity)
{
if (!string.Equals(entity.FlagIcon, updateInput.FlagIcon, StringComparison.InvariantCultureIgnoreCase))
{
entity.FlagIcon = updateInput.FlagIcon;
}
entity.ChangeCulture(updateInput.CultureName, updateInput.UiCultureName, updateInput.DisplayName);
entity.Enable = updateInput.Enable;
}
protected override async Task<IQueryable<Language>> CreateFilteredQueryAsync(GetLanguagesInput input)
{
var query = await base.CreateFilteredQueryAsync(input);
query = query.WhereIf(!input.Filter.IsNullOrWhiteSpace(),
x => x.CultureName.Contains(input.Filter) || x.UiCultureName.Contains(input.Filter) ||
x.DisplayName.Contains(input.Filter));
return query;
}
}
}

13
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application/LINGYUN/Abp/LocalizationManagement/LocalizationAppServiceBase.cs

@ -0,0 +1,13 @@
using LINGYUN.Abp.LocalizationManagement.Localization;
using Volo.Abp.Application.Services;
namespace LINGYUN.Abp.LocalizationManagement;
public abstract class LocalizationAppServiceBase : ApplicationService
{
protected LocalizationAppServiceBase()
{
LocalizationResource = typeof(LocalizationManagementResource);
ObjectMapperContext = typeof(AbpLocalizationManagementApplicationModule);
}
}

6
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application/LINGYUN/Abp/LocalizationManagement/LocalizationManagementApplicationMapperProfile.cs

@ -1,15 +1,11 @@
using AutoMapper; using AutoMapper;
namespace LINGYUN.Abp.LocalizationManagement namespace LINGYUN.Abp.LocalizationManagement
{ {
public class LocalizationManagementApplicationMapperProfile : Profile public class LocalizationManagementApplicationMapperProfile : Profile
{ {
public LocalizationManagementApplicationMapperProfile() public LocalizationManagementApplicationMapperProfile()
{ {
CreateMap<Language, LanguageDto>();
CreateMap<Resource, ResourceDto>();
CreateMap<Text, TextDto>();
CreateMap<TextDifference, TextDifferenceDto>();
} }
} }
} }

78
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application/LINGYUN/Abp/LocalizationManagement/ResourceAppService.cs

@ -1,78 +0,0 @@
using LINGYUN.Abp.LocalizationManagement.Permissions;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
namespace LINGYUN.Abp.LocalizationManagement
{
public class ResourceAppService :
CrudAppService<
Resource,
ResourceDto,
Guid,
GetResourcesInput,
CreateOrUpdateResourceInput,
CreateOrUpdateResourceInput>,
IResourceAppService
{
public ResourceAppService(IResourceRepository repository) : base(repository)
{
GetPolicyName = LocalizationManagementPermissions.Resource.Default;
GetListPolicyName = LocalizationManagementPermissions.Resource.Default;
CreatePolicyName = LocalizationManagementPermissions.Resource.Create;
UpdatePolicyName = LocalizationManagementPermissions.Resource.Update;
DeletePolicyName = LocalizationManagementPermissions.Resource.Delete;
}
public virtual async Task<ListResultDto<ResourceDto>> GetAllAsync()
{
await CheckGetListPolicyAsync();
var resources = await Repository.GetListAsync();
return new ListResultDto<ResourceDto>(
ObjectMapper.Map<List<Resource>, List<ResourceDto>>(resources));
}
protected override Resource MapToEntity(CreateOrUpdateResourceInput createInput)
{
return new Resource(
createInput.Name,
createInput.DisplayName,
createInput.Description)
{
Enable = createInput.Enable
};
}
protected override void MapToEntity(CreateOrUpdateResourceInput updateInput, Resource entity)
{
if (!string.Equals(entity.Name, updateInput.Name, StringComparison.InvariantCultureIgnoreCase))
{
entity.Name = updateInput.Name;
}
if (!string.Equals(entity.DisplayName, updateInput.DisplayName, StringComparison.InvariantCultureIgnoreCase))
{
entity.DisplayName = updateInput.DisplayName;
}
if (!string.Equals(entity.Description, updateInput.Description, StringComparison.InvariantCultureIgnoreCase))
{
entity.Description = updateInput.Description;
}
entity.Enable = updateInput.Enable;
}
protected override async Task<IQueryable<Resource>> CreateFilteredQueryAsync(GetResourcesInput input)
{
var query = await base.CreateFilteredQueryAsync(input);
query = query.WhereIf(!input.Filter.IsNullOrWhiteSpace(),
x => x.Name.Contains(input.Filter) || x.DisplayName.Contains(input.Filter));
return query;
}
}
}

98
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Application/LINGYUN/Abp/LocalizationManagement/TextAppService.cs

@ -1,73 +1,55 @@
using LINGYUN.Abp.LocalizationManagement.Permissions; using LINGYUN.Abp.LocalizationManagement.Permissions;
using System.Collections.Generic; using Microsoft.AspNetCore.Authorization;
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
namespace LINGYUN.Abp.LocalizationManagement namespace LINGYUN.Abp.LocalizationManagement
{ {
public class TextAppService : [Authorize(LocalizationManagementPermissions.Text.Default)]
CrudAppService< public class TextAppService : LocalizationAppServiceBase, ITextAppService
Text,
TextDto,
TextDifferenceDto,
int,
GetTextsInput,
CreateTextInput,
UpdateTextInput>,
ITextAppService
{ {
private readonly ITextRepository _textRepository; private readonly ITextRepository _textRepository;
public TextAppService(ITextRepository repository) : base(repository) public TextAppService(ITextRepository repository)
{ {
_textRepository = repository; _textRepository = repository;
GetPolicyName = LocalizationManagementPermissions.Text.Default;
GetListPolicyName = LocalizationManagementPermissions.Text.Default;
CreatePolicyName = LocalizationManagementPermissions.Text.Create;
UpdatePolicyName = LocalizationManagementPermissions.Text.Update;
DeletePolicyName = LocalizationManagementPermissions.Text.Delete;
} }
public virtual async Task<TextDto> GetByCultureKeyAsync(GetTextByKeyInput input) public async virtual Task SetTextAsync(SetTextInput input)
{ {
await CheckGetPolicyAsync(); var text = await _textRepository.GetByCultureKeyAsync(input.ResourceName, input.CultureName, input.Key);
if (text == null)
var text = await _textRepository.GetByCultureKeyAsync( {
input.ResourceName, input.CultureName, input.Key); await AuthorizationService.CheckAsync(LocalizationManagementPermissions.Text.Create);
return await MapToGetOutputDtoAsync(text); text = new Text(
input.ResourceName,
input.CultureName,
input.Key,
input.Value);
await _textRepository.InsertAsync(text);
}
else
{
await AuthorizationService.CheckAsync(LocalizationManagementPermissions.Text.Update);
text.SetValue(input.Value);
await _textRepository.UpdateAsync(text);
}
await CurrentUnitOfWork.SaveChangesAsync();
} }
public override async Task<PagedResultDto<TextDifferenceDto>> GetListAsync(GetTextsInput input) [Authorize(LocalizationManagementPermissions.Text.Delete)]
{ public async virtual Task RestoreToDefaultAsync(RestoreDefaultTextInput input)
await CheckGetListPolicyAsync(); {
var text = await _textRepository.GetByCultureKeyAsync(input.ResourceName, input.CultureName, input.Key);
var count = await _textRepository.GetDifferenceCountAsync( if (text != null)
input.CultureName, input.TargetCultureName, {
input.ResourceName, input.OnlyNull, input.Filter); await _textRepository.DeleteAsync(text);
var texts = await _textRepository.GetDifferencePagedListAsync( await CurrentUnitOfWork.SaveChangesAsync();
input.CultureName, input.TargetCultureName, }
input.ResourceName, input.OnlyNull, input.Filter,
input.Sorting, input.SkipCount, input.MaxResultCount);
return new PagedResultDto<TextDifferenceDto>(count,
ObjectMapper.Map<List<TextDifference>, List<TextDifferenceDto>>(texts));
}
protected override Text MapToEntity(CreateTextInput createInput)
{
return new Text(
createInput.ResourceName,
createInput.CultureName,
createInput.Key,
createInput.Value);
}
protected override void MapToEntity(UpdateTextInput updateInput, Text entity)
{
entity.SetValue(updateInput.Value);
} }
} }
} }

24
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN/Abp/LocalizationManagement/Localization/Resources/en.json

@ -1,28 +1,11 @@
{ {
"culture": "en", "culture": "en",
"texts": { "texts": {
"Languages": "Languages",
"Resources": "Resources",
"Texts": "Texts",
"Delete": "Delete", "Delete": "Delete",
"DisplayName:Any": "Any", "DisplayName:Any": "Any",
"DisplayName:CreationTime": "Creation Time", "DisplayName:CreationTime": "Creation Time",
"DisplayName:CultureName": "Culture",
"DisplayName:Description": "Description",
"DisplayName:DisplayName": "Display Name",
"DisplayName:Enable": "Enable",
"DisplayName:FlagIcon": "Flag Icon",
"DisplayName:Key": "Key",
"DisplayName:LastModificationTime": "Modification Time", "DisplayName:LastModificationTime": "Modification Time",
"DisplayName:Name": "Name",
"DisplayName:OnlyNull": "Only Null",
"DisplayName:ResourceName": "Resource",
"DisplayName:SaveAndNext": "Save & Next", "DisplayName:SaveAndNext": "Save & Next",
"DisplayName:TargetCultureName": "Target Culture",
"DisplayName:TargetValue": "Target Value",
"DisplayName:UiCultureName": "Ui Culture",
"DisplayName:Value": "Value",
"Permissions:LocalizationManagement": "Localization", "Permissions:LocalizationManagement": "Localization",
"Permissions:Language": "Language", "Permissions:Language": "Language",
"Permissions:Resource": "Resource", "Permissions:Resource": "Resource",
@ -33,13 +16,8 @@
"Edit": "Edit", "Edit": "Edit",
"EditByName": "Edit - {0}", "EditByName": "Edit - {0}",
"Filter": "Filter", "Filter": "Filter",
"Language:AddNew": "Add New Language",
"Resource:AddNew": "Add New Resource",
"SaveAndNext": "Save & Next", "SaveAndNext": "Save & Next",
"SearchFilter": "Search", "SearchFilter": "Search",
"Text:AddNew": "Add New Text", "Text:AddNew": "Add New Text"
"WillDeleteLanguage": "Language to be deleted {0}",
"WillDeleteResource": "Resource to be deleted {0}",
"WillDeleteText": "Document to be deleted {0}"
} }
} }

24
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain.Shared/LINGYUN/Abp/LocalizationManagement/Localization/Resources/zh-Hans.json

@ -1,28 +1,11 @@
{ {
"culture": "zh-Hans", "culture": "zh-Hans",
"texts": { "texts": {
"Languages": "语言",
"Resources": "资源",
"Texts": "文档",
"Delete": "删除", "Delete": "删除",
"DisplayName:Any": "所有", "DisplayName:Any": "所有",
"DisplayName:CreationTime": "创建时间", "DisplayName:CreationTime": "创建时间",
"DisplayName:CultureName": "文化名称",
"DisplayName:Description": "描述",
"DisplayName:DisplayName": "显示名称",
"DisplayName:Enable": "启用",
"DisplayName:FlagIcon": "旗帜图标",
"DisplayName:Key": "键",
"DisplayName:LastModificationTime": "变更时间", "DisplayName:LastModificationTime": "变更时间",
"DisplayName:Name": "名称",
"DisplayName:OnlyNull": "仅空值",
"DisplayName:ResourceName": "资源名称",
"DisplayName:SaveAndNext": "保存并下一步", "DisplayName:SaveAndNext": "保存并下一步",
"DisplayName:TargetCultureName": "目标文化",
"DisplayName:TargetValue": "目标值",
"DisplayName:UiCultureName": "界面文化",
"DisplayName:Value": "值",
"Permissions:LocalizationManagement": "本地化管理", "Permissions:LocalizationManagement": "本地化管理",
"Permissions:Language": "语言管理", "Permissions:Language": "语言管理",
"Permissions:Resource": "资源管理", "Permissions:Resource": "资源管理",
@ -33,13 +16,8 @@
"Edit": "编辑", "Edit": "编辑",
"EditByName": "编辑 - {0}", "EditByName": "编辑 - {0}",
"Filter": "过滤字符", "Filter": "过滤字符",
"Language:AddNew": "添加新语言",
"Resource:AddNew": "添加新资源",
"SaveAndNext": "保存并下一步", "SaveAndNext": "保存并下一步",
"SearchFilter": "请输入过滤字符", "SearchFilter": "请输入过滤字符",
"Text:AddNew": "添加新文档", "Text:AddNew": "添加新文档"
"WillDeleteLanguage": "将要删除语言 {0}",
"WillDeleteResource": "将要删除资源 {0}",
"WillDeleteText": "将要删除文档 {0}"
} }
} }

25
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/ITextRepository.cs

@ -16,30 +16,7 @@ namespace LINGYUN.Abp.LocalizationManagement
Task<List<Text>> GetListAsync( Task<List<Text>> GetListAsync(
string resourceName = null, string resourceName = null,
CancellationToken cancellationToken = default); string cultureName = null,
Task<List<Text>> GetListAsync(
string resourceName,
string cultureName,
CancellationToken cancellationToken = default);
Task<int> GetDifferenceCountAsync(
string cultureName,
string targetCultureName,
string resourceName = null,
bool? onlyNull = null,
string filter = null,
CancellationToken cancellationToken = default);
Task<List<TextDifference>> GetDifferencePagedListAsync(
string cultureName,
string targetCultureName,
string resourceName = null,
bool? onlyNull = null,
string filter = null,
string sorting = nameof(Text.Key),
int skipCount = 1,
int maxResultCount = 10,
CancellationToken cancellationToken = default); CancellationToken cancellationToken = default);
} }
} }

2
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationStore.cs

@ -54,7 +54,7 @@ namespace LINGYUN.Abp.LocalizationManagement
return dictionaries; return dictionaries;
} }
var texts = await TextRepository.GetListAsync(resourceName, cancellationToken); var texts = await TextRepository.GetListAsync(resourceName, null, cancellationToken);
foreach (var textGroup in texts.GroupBy(x => x.CultureName)) foreach (var textGroup in texts.GroupBy(x => x.CultureName))
{ {

44
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore/LINGYUN/Abp/LocalizationManagement/EntityFrameworkCore/EfCoreTextRepository.cs

@ -48,36 +48,32 @@ namespace LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore
} }
public virtual async Task<List<Text>> GetListAsync( public virtual async Task<List<Text>> GetListAsync(
string resourceName = null, string resourceName = null,
string cultureName = null,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
var languages = (await GetDbContextAsync()).Set<Language>(); //var languages = (await GetDbContextAsync()).Set<Language>();
var resources = (IQueryable<Resource>)(await GetDbContextAsync()).Set<Resource>(); //var resources = (IQueryable<Resource>)(await GetDbContextAsync()).Set<Resource>();
if (!resourceName.IsNullOrWhiteSpace()) //if (!resourceName.IsNullOrWhiteSpace())
{ //{
resources = resources.Where(x => x.Name.Equals(resourceName)); // resources = resources.Where(x => x.Name.Equals(resourceName));
} //}
var texts = await GetDbSetAsync(); //var texts = await GetDbSetAsync();
return await (from txts in texts //return await (from txts in texts
join r in resources // join r in resources
on txts.ResourceName equals r.Name // on txts.ResourceName equals r.Name
join lg in languages // join lg in languages
on txts.CultureName equals lg.CultureName // on txts.CultureName equals lg.CultureName
where r.Enable && lg.Enable // where r.Enable && lg.Enable
select txts) // select txts)
.ToListAsync(GetCancellationToken(cancellationToken)); // .ToListAsync(GetCancellationToken(cancellationToken));
}
public virtual async Task<List<Text>> GetListAsync(
string resourceName,
string cultureName,
CancellationToken cancellationToken = default)
{
return await (await GetDbSetAsync()) return await (await GetDbSetAsync())
.Where(x => x.ResourceName.Equals(resourceName) && x.CultureName.Equals(cultureName)) .WhereIf(!resourceName.IsNullOrWhiteSpace(), x => x.ResourceName.Equals(resourceName))
.ToListAsync(GetCancellationToken(cancellationToken)); .WhereIf(!cultureName.IsNullOrWhiteSpace(), x => x.CultureName.Equals(cultureName))
.ToListAsync(GetCancellationToken(cancellationToken));
} }
public virtual async Task<List<TextDifference>> GetDifferencePagedListAsync( public virtual async Task<List<TextDifference>> GetDifferencePagedListAsync(

5
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.HttpApi/LINGYUN.Abp.LocalizationManagement.HttpApi.csproj

@ -9,10 +9,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Volo.Abp.AspNetCore.Mvc" Version="$(VoloAbpPackageVersion)" /> <ProjectReference Include="..\..\localization\LINGYUN.Abp.AspNetCore.Mvc.Localization\LINGYUN.Abp.AspNetCore.Mvc.Localization.csproj" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\LINGYUN.Abp.LocalizationManagement.Application.Contracts\LINGYUN.Abp.LocalizationManagement.Application.Contracts.csproj" /> <ProjectReference Include="..\LINGYUN.Abp.LocalizationManagement.Application.Contracts\LINGYUN.Abp.LocalizationManagement.Application.Contracts.csproj" />
</ItemGroup> </ItemGroup>

9
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.HttpApi/LINGYUN/Abp/LocalizationManagement/AbpLocalizationManagementHttpApiModule.cs

@ -1,15 +1,16 @@
using LINGYUN.Abp.LocalizationManagement.Localization; using LINGYUN.Abp.AspNetCore.Mvc.Localization;
using LINGYUN.Abp.LocalizationManagement.Localization;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc.Localization; using Volo.Abp.AspNetCore.Mvc.Localization;
using Volo.Abp.Localization; using Volo.Abp.Localization;
using Volo.Abp.Localization.Resources.AbpLocalization;
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.Abp.Validation.Localization; using Volo.Abp.Validation.Localization;
namespace LINGYUN.Abp.LocalizationManagement namespace LINGYUN.Abp.LocalizationManagement
{ {
[DependsOn( [DependsOn(
typeof(AbpAspNetCoreMvcModule), typeof(AbpAspNetCoreMvcLocalizationModule),
typeof(AbpLocalizationManagementApplicationContractsModule))] typeof(AbpLocalizationManagementApplicationContractsModule))]
public class AbpLocalizationManagementHttpApiModule : AbpModule public class AbpLocalizationManagementHttpApiModule : AbpModule
{ {
@ -35,7 +36,7 @@ namespace LINGYUN.Abp.LocalizationManagement
{ {
options.Resources options.Resources
.Get<LocalizationManagementResource>() .Get<LocalizationManagementResource>()
.AddBaseTypes(typeof(AbpValidationResource)); .AddBaseTypes(typeof(AbpValidationResource), typeof(AbpLocalizationResource));
}); });
} }
} }

62
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.HttpApi/LINGYUN/Abp/LocalizationManagement/LanguageController.cs

@ -1,62 +0,0 @@
using Microsoft.AspNetCore.Mvc;
using System;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.AspNetCore.Mvc;
namespace LINGYUN.Abp.LocalizationManagement
{
[RemoteService(Name = LocalizationRemoteServiceConsts.RemoteServiceName)]
[Area("localization")]
[Route("api/localization/languages")]
public class LanguageController : AbpController, ILanguageAppService
{
private readonly ILanguageAppService _service;
public LanguageController(ILanguageAppService service)
{
_service = service;
}
[HttpPost]
public virtual async Task<LanguageDto> CreateAsync(CreateOrUpdateLanguageInput input)
{
return await _service.CreateAsync(input);
}
[HttpDelete]
[Route("{id}")]
public virtual async Task DeleteAsync(Guid id)
{
await _service.DeleteAsync(id);
}
[HttpGet]
[Route("all")]
public virtual async Task<ListResultDto<LanguageDto>> GetAllAsync()
{
return await _service.GetAllAsync();
}
[HttpGet]
[Route("{id}")]
public virtual async Task<LanguageDto> GetAsync(Guid id)
{
return await _service.GetAsync(id);
}
[HttpGet]
public virtual async Task<PagedResultDto<LanguageDto>> GetListAsync(GetLanguagesInput input)
{
return await _service.GetListAsync(input);
}
[HttpPut]
[Route("{id}")]
public virtual async Task<LanguageDto> UpdateAsync(Guid id, CreateOrUpdateLanguageInput input)
{
return await _service.UpdateAsync(id, input);
}
}
}

62
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.HttpApi/LINGYUN/Abp/LocalizationManagement/ResourceController.cs

@ -1,62 +0,0 @@
using Microsoft.AspNetCore.Mvc;
using System;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.AspNetCore.Mvc;
namespace LINGYUN.Abp.LocalizationManagement
{
[RemoteService(Name = LocalizationRemoteServiceConsts.RemoteServiceName)]
[Area("localization")]
[Route("api/localization/resources")]
public class ResourceController : AbpController, IResourceAppService
{
private readonly IResourceAppService _service;
public ResourceController(IResourceAppService service)
{
_service = service;
}
[HttpPost]
public virtual async Task<ResourceDto> CreateAsync(CreateOrUpdateResourceInput input)
{
return await _service.CreateAsync(input);
}
[HttpDelete]
[Route("{id}")]
public virtual async Task DeleteAsync(Guid id)
{
await _service.DeleteAsync(id);
}
[HttpGet]
[Route("all")]
public virtual async Task<ListResultDto<ResourceDto>> GetAllAsync()
{
return await _service.GetAllAsync();
}
[HttpGet]
[Route("{id}")]
public virtual async Task<ResourceDto> GetAsync(Guid id)
{
return await _service.GetAsync(id);
}
[HttpGet]
public virtual async Task<PagedResultDto<ResourceDto>> GetListAsync(GetResourcesInput input)
{
return await _service.GetListAsync(input);
}
[HttpPut]
[Route("{id}")]
public virtual async Task<ResourceDto> UpdateAsync(Guid id, CreateOrUpdateResourceInput input)
{
return await _service.UpdateAsync(id, input);
}
}
}

40
aspnet-core/modules/lt/LINGYUN.Abp.LocalizationManagement.HttpApi/LINGYUN/Abp/LocalizationManagement/TextController.cs

@ -1,7 +1,6 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp; using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.AspNetCore.Mvc;
namespace LINGYUN.Abp.LocalizationManagement namespace LINGYUN.Abp.LocalizationManagement
@ -18,44 +17,17 @@ namespace LINGYUN.Abp.LocalizationManagement
_service = service; _service = service;
} }
[HttpPost] [HttpPut]
public virtual async Task<TextDto> CreateAsync(CreateTextInput input) public virtual Task SetTextAsync(SetTextInput input)
{ {
return await _service.CreateAsync(input); return _service.SetTextAsync(input);
} }
[HttpDelete] [HttpDelete]
[Route("{id}")] [Route("restore-to-default")]
public virtual async Task DeleteAsync(int id) public virtual Task RestoreToDefaultAsync(RestoreDefaultTextInput input)
{
await _service.DeleteAsync(id);
}
[HttpGet]
[Route("{id}")]
public virtual async Task<TextDto> GetAsync(int id)
{
return await _service.GetAsync(id);
}
[HttpGet]
[Route("by-culture-key")]
public virtual async Task<TextDto> GetByCultureKeyAsync(GetTextByKeyInput input)
{
return await _service.GetByCultureKeyAsync(input);
}
[HttpGet]
public virtual async Task<PagedResultDto<TextDifferenceDto>> GetListAsync(GetTextsInput input)
{
return await _service.GetListAsync(input);
}
[HttpPut]
[Route("{id}")]
public virtual async Task<TextDto> UpdateAsync(int id, UpdateTextInput input)
{ {
return await _service.UpdateAsync(id, input); return _service.RestoreToDefaultAsync(input);
} }
} }
} }

2
aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/BackendAdminHttpApiHostModule.cs

@ -1,5 +1,6 @@
using DotNetCore.CAP; using DotNetCore.CAP;
using LINGYUN.Abp.AspNetCore.HttpOverrides; using LINGYUN.Abp.AspNetCore.HttpOverrides;
using LINGYUN.Abp.AspNetCore.Mvc.Localization;
using LINGYUN.Abp.Auditing; using LINGYUN.Abp.Auditing;
using LINGYUN.Abp.AuditLogging.Elasticsearch; using LINGYUN.Abp.AuditLogging.Elasticsearch;
using LINGYUN.Abp.Data.DbMigrator; using LINGYUN.Abp.Data.DbMigrator;
@ -50,6 +51,7 @@ namespace LY.MicroService.BackendAdmin;
typeof(AbpLoggingSerilogElasticsearchModule), typeof(AbpLoggingSerilogElasticsearchModule),
typeof(AbpAuditLoggingElasticsearchModule), typeof(AbpAuditLoggingElasticsearchModule),
typeof(AbpAspNetCoreMvcUiMultiTenancyModule), typeof(AbpAspNetCoreMvcUiMultiTenancyModule),
typeof(AbpAspNetCoreMvcLocalizationModule),
typeof(AbpSettingManagementApplicationModule), typeof(AbpSettingManagementApplicationModule),
typeof(AbpSettingManagementHttpApiModule), typeof(AbpSettingManagementHttpApiModule),
typeof(AbpPermissionManagementApplicationModule), typeof(AbpPermissionManagementApplicationModule),

1
aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/LY.MicroService.BackendAdmin.HttpApi.Host.csproj

@ -57,6 +57,7 @@
<ProjectReference Include="..\..\modules\common\LINGYUN.Abp.Localization.Dynamic\LINGYUN.Abp.Localization.Dynamic.csproj" /> <ProjectReference Include="..\..\modules\common\LINGYUN.Abp.Localization.Dynamic\LINGYUN.Abp.Localization.Dynamic.csproj" />
<ProjectReference Include="..\..\modules\features\LINGYUN.Abp.FeatureManagement.Client\LINGYUN.Abp.FeatureManagement.Client.csproj" /> <ProjectReference Include="..\..\modules\features\LINGYUN.Abp.FeatureManagement.Client\LINGYUN.Abp.FeatureManagement.Client.csproj" />
<ProjectReference Include="..\..\modules\identity\LINGYUN.Abp.Identity.EntityFrameworkCore\LINGYUN.Abp.Identity.EntityFrameworkCore.csproj" /> <ProjectReference Include="..\..\modules\identity\LINGYUN.Abp.Identity.EntityFrameworkCore\LINGYUN.Abp.Identity.EntityFrameworkCore.csproj" />
<ProjectReference Include="..\..\modules\localization\LINGYUN.Abp.AspNetCore.Mvc.Localization\LINGYUN.Abp.AspNetCore.Mvc.Localization.csproj" />
<ProjectReference Include="..\..\modules\localization\LINGYUN.Abp.Localization.CultureMap\LINGYUN.Abp.Localization.CultureMap.csproj" /> <ProjectReference Include="..\..\modules\localization\LINGYUN.Abp.Localization.CultureMap\LINGYUN.Abp.Localization.CultureMap.csproj" />
<ProjectReference Include="..\..\modules\logging\LINGYUN.Abp.Logging.Serilog.Elasticsearch\LINGYUN.Abp.Logging.Serilog.Elasticsearch.csproj" /> <ProjectReference Include="..\..\modules\logging\LINGYUN.Abp.Logging.Serilog.Elasticsearch\LINGYUN.Abp.Logging.Serilog.Elasticsearch.csproj" />
<ProjectReference Include="..\..\modules\logging\LINGYUN.Abp.Serilog.Enrichers.Application\LINGYUN.Abp.Serilog.Enrichers.Application.csproj" /> <ProjectReference Include="..\..\modules\logging\LINGYUN.Abp.Serilog.Enrichers.Application\LINGYUN.Abp.Serilog.Enrichers.Application.csproj" />

5
aspnet-core/services/LY.MicroService.LocalizationManagement.HttpApi.Host/LocalizationManagementHttpApiHostModule.Configure.cs

@ -264,6 +264,11 @@ public partial class LocalizationManagementHttpApiHostModule
options.Audience = configuration["AuthServer:ApiName"]; options.Audience = configuration["AuthServer:ApiName"];
}); });
if (isDevelopment)
{
// services.AddAlwaysAllowAuthorization();
}
if (!isDevelopment) if (!isDevelopment)
{ {
var redis = ConnectionMultiplexer.Connect(configuration["Redis:Configuration"]); var redis = ConnectionMultiplexer.Connect(configuration["Redis:Configuration"]);

1
aspnet-core/services/LY.MicroService.PlatformManagement.HttpApi.Host/LY.MicroService.PlatformManagement.HttpApi.Host.csproj

@ -48,6 +48,7 @@
<ProjectReference Include="..\..\modules\common\LINGYUN.Abp.Features.LimitValidation.Redis.Client\LINGYUN.Abp.Features.LimitValidation.Redis.Client.csproj" /> <ProjectReference Include="..\..\modules\common\LINGYUN.Abp.Features.LimitValidation.Redis.Client\LINGYUN.Abp.Features.LimitValidation.Redis.Client.csproj" />
<ProjectReference Include="..\..\modules\common\LINGYUN.Abp.Notifications\LINGYUN.Abp.Notifications.csproj" /> <ProjectReference Include="..\..\modules\common\LINGYUN.Abp.Notifications\LINGYUN.Abp.Notifications.csproj" />
<ProjectReference Include="..\..\modules\features\LINGYUN.Abp.Features.Client\LINGYUN.Abp.Features.Client.csproj" /> <ProjectReference Include="..\..\modules\features\LINGYUN.Abp.Features.Client\LINGYUN.Abp.Features.Client.csproj" />
<ProjectReference Include="..\..\modules\localization\LINGYUN.Abp.AspNetCore.Mvc.Localization\LINGYUN.Abp.AspNetCore.Mvc.Localization.csproj" />
<ProjectReference Include="..\..\modules\localization\LINGYUN.Abp.Localization.CultureMap\LINGYUN.Abp.Localization.CultureMap.csproj" /> <ProjectReference Include="..\..\modules\localization\LINGYUN.Abp.Localization.CultureMap\LINGYUN.Abp.Localization.CultureMap.csproj" />
<ProjectReference Include="..\..\modules\logging\LINGYUN.Abp.Serilog.Enrichers.Application\LINGYUN.Abp.Serilog.Enrichers.Application.csproj" /> <ProjectReference Include="..\..\modules\logging\LINGYUN.Abp.Serilog.Enrichers.Application\LINGYUN.Abp.Serilog.Enrichers.Application.csproj" />
<ProjectReference Include="..\..\modules\logging\LINGYUN.Abp.Serilog.Enrichers.UniqueId\LINGYUN.Abp.Serilog.Enrichers.UniqueId.csproj" /> <ProjectReference Include="..\..\modules\logging\LINGYUN.Abp.Serilog.Enrichers.UniqueId\LINGYUN.Abp.Serilog.Enrichers.UniqueId.csproj" />

2
aspnet-core/services/LY.MicroService.PlatformManagement.HttpApi.Host/PlatformManagementHttpApiHostModule.cs

@ -1,5 +1,6 @@
using DotNetCore.CAP; using DotNetCore.CAP;
using LINGYUN.Abp.AspNetCore.HttpOverrides; using LINGYUN.Abp.AspNetCore.HttpOverrides;
using LINGYUN.Abp.AspNetCore.Mvc.Localization;
using LINGYUN.Abp.AuditLogging.Elasticsearch; using LINGYUN.Abp.AuditLogging.Elasticsearch;
using LINGYUN.Abp.Authorization.OrganizationUnits; using LINGYUN.Abp.Authorization.OrganizationUnits;
using LINGYUN.Abp.Data.DbMigrator; using LINGYUN.Abp.Data.DbMigrator;
@ -47,6 +48,7 @@ namespace LY.MicroService.PlatformManagement;
typeof(AbpAspNetCoreSerilogModule), typeof(AbpAspNetCoreSerilogModule),
typeof(AbpAuditLoggingElasticsearchModule), typeof(AbpAuditLoggingElasticsearchModule),
typeof(AbpAspNetCoreMultiTenancyModule), typeof(AbpAspNetCoreMultiTenancyModule),
typeof(AbpAspNetCoreMvcLocalizationModule),
typeof(AbpUINavigationVueVbenAdminModule), typeof(AbpUINavigationVueVbenAdminModule),
typeof(PlatformThemeVueVbenAdminModule), typeof(PlatformThemeVueVbenAdminModule),
// typeof(AbpOssManagementAliyunModule), // typeof(AbpOssManagementAliyunModule),

1
aspnet-core/services/LY.MicroService.RealtimeMessage.HttpApi.Host/LY.MicroService.RealtimeMessage.HttpApi.Host.csproj

@ -53,6 +53,7 @@
<ProjectReference Include="..\..\modules\common\LINGYUN.Abp.Notifications.SignalR\LINGYUN.Abp.Notifications.SignalR.csproj" /> <ProjectReference Include="..\..\modules\common\LINGYUN.Abp.Notifications.SignalR\LINGYUN.Abp.Notifications.SignalR.csproj" />
<ProjectReference Include="..\..\modules\common\LINGYUN.Abp.Notifications.Sms\LINGYUN.Abp.Notifications.Sms.csproj" /> <ProjectReference Include="..\..\modules\common\LINGYUN.Abp.Notifications.Sms\LINGYUN.Abp.Notifications.Sms.csproj" />
<ProjectReference Include="..\..\modules\identity\LINGYUN.Abp.Identity.EntityFrameworkCore\LINGYUN.Abp.Identity.EntityFrameworkCore.csproj" /> <ProjectReference Include="..\..\modules\identity\LINGYUN.Abp.Identity.EntityFrameworkCore\LINGYUN.Abp.Identity.EntityFrameworkCore.csproj" />
<ProjectReference Include="..\..\modules\localization\LINGYUN.Abp.AspNetCore.Mvc.Localization\LINGYUN.Abp.AspNetCore.Mvc.Localization.csproj" />
<ProjectReference Include="..\..\modules\task-management\LINGYUN.Abp.BackgroundTasks.Quartz\LINGYUN.Abp.BackgroundTasks.Quartz.csproj" /> <ProjectReference Include="..\..\modules\task-management\LINGYUN.Abp.BackgroundTasks.Quartz\LINGYUN.Abp.BackgroundTasks.Quartz.csproj" />
<ProjectReference Include="..\..\modules\task-management\LINGYUN.Abp.BackgroundTasks.ExceptionHandling\LINGYUN.Abp.BackgroundTasks.ExceptionHandling.csproj" /> <ProjectReference Include="..\..\modules\task-management\LINGYUN.Abp.BackgroundTasks.ExceptionHandling\LINGYUN.Abp.BackgroundTasks.ExceptionHandling.csproj" />
<ProjectReference Include="..\..\modules\task-management\LINGYUN.Abp.TaskManagement.EntityFrameworkCore\LINGYUN.Abp.TaskManagement.EntityFrameworkCore.csproj" /> <ProjectReference Include="..\..\modules\task-management\LINGYUN.Abp.TaskManagement.EntityFrameworkCore\LINGYUN.Abp.TaskManagement.EntityFrameworkCore.csproj" />

2
aspnet-core/services/LY.MicroService.RealtimeMessage.HttpApi.Host/RealtimeMessageHttpApiHostModule.cs

@ -1,5 +1,6 @@
using DotNetCore.CAP; using DotNetCore.CAP;
using LINGYUN.Abp.AspNetCore.HttpOverrides; using LINGYUN.Abp.AspNetCore.HttpOverrides;
using LINGYUN.Abp.AspNetCore.Mvc.Localization;
using LINGYUN.Abp.AuditLogging.Elasticsearch; using LINGYUN.Abp.AuditLogging.Elasticsearch;
using LINGYUN.Abp.Authorization.OrganizationUnits; using LINGYUN.Abp.Authorization.OrganizationUnits;
using LINGYUN.Abp.BackgroundTasks.ExceptionHandling; using LINGYUN.Abp.BackgroundTasks.ExceptionHandling;
@ -48,6 +49,7 @@ namespace LY.MicroService.RealtimeMessage;
typeof(AbpAspNetCoreSerilogModule), typeof(AbpAspNetCoreSerilogModule),
typeof(AbpAuditLoggingElasticsearchModule), typeof(AbpAuditLoggingElasticsearchModule),
typeof(AbpAspNetCoreMultiTenancyModule), typeof(AbpAspNetCoreMultiTenancyModule),
typeof(AbpAspNetCoreMvcLocalizationModule),
typeof(AbpMessageServiceApplicationModule), typeof(AbpMessageServiceApplicationModule),
typeof(AbpMessageServiceHttpApiModule), typeof(AbpMessageServiceHttpApiModule),
typeof(AbpIdentityWeChatModule), typeof(AbpIdentityWeChatModule),

2
aspnet-core/services/LY.MicroService.TaskManagement.HttpApi.Host/LY.MicroService.TaskManagement.HttpApi.Host.csproj

@ -64,6 +64,8 @@
<ProjectReference Include="..\..\modules\task-management\LINGYUN.Abp.TaskManagement.Application\LINGYUN.Abp.TaskManagement.Application.csproj" /> <ProjectReference Include="..\..\modules\task-management\LINGYUN.Abp.TaskManagement.Application\LINGYUN.Abp.TaskManagement.Application.csproj" />
<ProjectReference Include="..\..\modules\task-management\LINGYUN.Abp.TaskManagement.EntityFrameworkCore\LINGYUN.Abp.TaskManagement.EntityFrameworkCore.csproj" /> <ProjectReference Include="..\..\modules\task-management\LINGYUN.Abp.TaskManagement.EntityFrameworkCore\LINGYUN.Abp.TaskManagement.EntityFrameworkCore.csproj" />
<ProjectReference Include="..\..\modules\task-management\LINGYUN.Abp.TaskManagement.HttpApi\LINGYUN.Abp.TaskManagement.HttpApi.csproj" /> <ProjectReference Include="..\..\modules\task-management\LINGYUN.Abp.TaskManagement.HttpApi\LINGYUN.Abp.TaskManagement.HttpApi.csproj" />
<ProjectReference Include="..\..\modules\localization\LINGYUN.Abp.AspNetCore.Mvc.Localization\LINGYUN.Abp.AspNetCore.Mvc.Localization.csproj" />
<ProjectReference Include="..\..\modules\localization\LINGYUN.Abp.Localization.CultureMap\LINGYUN.Abp.Localization.CultureMap.csproj" />
<ProjectReference Include="..\..\modules\saas\LINGYUN.Abp.Saas.EntityFrameworkCore\LINGYUN.Abp.Saas.EntityFrameworkCore.csproj" /> <ProjectReference Include="..\..\modules\saas\LINGYUN.Abp.Saas.EntityFrameworkCore\LINGYUN.Abp.Saas.EntityFrameworkCore.csproj" />
<ProjectReference Include="..\..\modules\auditing\LINGYUN.Abp.AuditLogging.Elasticsearch\LINGYUN.Abp.AuditLogging.Elasticsearch.csproj" /> <ProjectReference Include="..\..\modules\auditing\LINGYUN.Abp.AuditLogging.Elasticsearch\LINGYUN.Abp.AuditLogging.Elasticsearch.csproj" />
<ProjectReference Include="..\..\modules\logging\LINGYUN.Abp.Serilog.Enrichers.Application\LINGYUN.Abp.Serilog.Enrichers.Application.csproj" /> <ProjectReference Include="..\..\modules\logging\LINGYUN.Abp.Serilog.Enrichers.Application\LINGYUN.Abp.Serilog.Enrichers.Application.csproj" />

13
aspnet-core/services/LY.MicroService.TaskManagement.HttpApi.Host/TaskManagementHttpApiHostModule.Configure.cs

@ -1,6 +1,7 @@
using DotNetCore.CAP; using DotNetCore.CAP;
using LINGYUN.Abp.ExceptionHandling; using LINGYUN.Abp.ExceptionHandling;
using LINGYUN.Abp.ExceptionHandling.Emailing; using LINGYUN.Abp.ExceptionHandling.Emailing;
using LINGYUN.Abp.Localization.CultureMap;
using LINGYUN.Abp.Serilog.Enrichers.Application; using LINGYUN.Abp.Serilog.Enrichers.Application;
using LINGYUN.Abp.Serilog.Enrichers.UniqueId; using LINGYUN.Abp.Serilog.Enrichers.UniqueId;
using Medallion.Threading; using Medallion.Threading;
@ -262,6 +263,18 @@ public partial class TaskManagementHttpApiHostModule
// 动态语言支持 // 动态语言支持
options.Resources.AddDynamic(); options.Resources.AddDynamic();
}); });
Configure<AbpLocalizationCultureMapOptions>(options =>
{
var zhHansCultureMapInfo = new CultureMapInfo
{
TargetCulture = "zh-Hans",
SourceCultures = new string[] { "zh", "zh_CN", "zh-CN" }
};
options.CulturesMaps.Add(zhHansCultureMapInfo);
options.UiCulturesMaps.Add(zhHansCultureMapInfo);
});
} }
private void ConfigureSecurity(IServiceCollection services, IConfiguration configuration, bool isDevelopment = false) private void ConfigureSecurity(IServiceCollection services, IConfiguration configuration, bool isDevelopment = false)

4
aspnet-core/services/LY.MicroService.TaskManagement.HttpApi.Host/TaskManagementHttpApiHostModule.cs

@ -1,4 +1,5 @@
using DotNetCore.CAP; using DotNetCore.CAP;
using LINGYUN.Abp.AspNetCore.Mvc.Localization;
using LINGYUN.Abp.AuditLogging.Elasticsearch; using LINGYUN.Abp.AuditLogging.Elasticsearch;
using LINGYUN.Abp.Authorization.OrganizationUnits; using LINGYUN.Abp.Authorization.OrganizationUnits;
using LINGYUN.Abp.BackgroundTasks.ExceptionHandling; using LINGYUN.Abp.BackgroundTasks.ExceptionHandling;
@ -7,6 +8,7 @@ using LINGYUN.Abp.BackgroundTasks.Quartz;
using LINGYUN.Abp.Data.DbMigrator; using LINGYUN.Abp.Data.DbMigrator;
using LINGYUN.Abp.EventBus.CAP; using LINGYUN.Abp.EventBus.CAP;
using LINGYUN.Abp.ExceptionHandling.Emailing; using LINGYUN.Abp.ExceptionHandling.Emailing;
using LINGYUN.Abp.Localization.CultureMap;
using LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore; using LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore;
using LINGYUN.Abp.Saas.EntityFrameworkCore; using LINGYUN.Abp.Saas.EntityFrameworkCore;
using LINGYUN.Abp.Serilog.Enrichers.Application; using LINGYUN.Abp.Serilog.Enrichers.Application;
@ -47,6 +49,7 @@ namespace LY.MicroService.TaskManagement;
typeof(AbpEmailingExceptionHandlingModule), typeof(AbpEmailingExceptionHandlingModule),
typeof(AbpHttpClientIdentityModelWebModule), typeof(AbpHttpClientIdentityModelWebModule),
typeof(AbpAspNetCoreMultiTenancyModule), typeof(AbpAspNetCoreMultiTenancyModule),
typeof(AbpAspNetCoreMvcLocalizationModule),
typeof(AbpBackgroundTasksJobsModule), typeof(AbpBackgroundTasksJobsModule),
typeof(AbpBackgroundTasksQuartzModule), typeof(AbpBackgroundTasksQuartzModule),
typeof(AbpBackgroundTasksExceptionHandlingModule), typeof(AbpBackgroundTasksExceptionHandlingModule),
@ -63,6 +66,7 @@ namespace LY.MicroService.TaskManagement;
typeof(AbpCachingStackExchangeRedisModule), typeof(AbpCachingStackExchangeRedisModule),
typeof(AbpAspNetCoreMvcModule), typeof(AbpAspNetCoreMvcModule),
typeof(AbpSwashbuckleModule), typeof(AbpSwashbuckleModule),
typeof(AbpLocalizationCultureMapModule),
typeof(AbpAutofacModule) typeof(AbpAutofacModule)
)] )]
public partial class TaskManagementHttpApiHostModule : AbpModule public partial class TaskManagementHttpApiHostModule : AbpModule

1
aspnet-core/services/LY.MicroService.WebhooksManagement.HttpApi.Host/LY.MicroService.WebhooksManagement.HttpApi.Host.csproj

@ -66,6 +66,7 @@
<ProjectReference Include="..\..\modules\logging\LINGYUN.Abp.Serilog.Enrichers.UniqueId\LINGYUN.Abp.Serilog.Enrichers.UniqueId.csproj" /> <ProjectReference Include="..\..\modules\logging\LINGYUN.Abp.Serilog.Enrichers.UniqueId\LINGYUN.Abp.Serilog.Enrichers.UniqueId.csproj" />
<ProjectReference Include="..\..\modules\tenants\LINGYUN.Abp.MultiTenancy\LINGYUN.Abp.MultiTenancy.csproj" /> <ProjectReference Include="..\..\modules\tenants\LINGYUN.Abp.MultiTenancy\LINGYUN.Abp.MultiTenancy.csproj" />
<ProjectReference Include="..\..\modules\localization\LINGYUN.Abp.Localization.CultureMap\LINGYUN.Abp.Localization.CultureMap.csproj" /> <ProjectReference Include="..\..\modules\localization\LINGYUN.Abp.Localization.CultureMap\LINGYUN.Abp.Localization.CultureMap.csproj" />
<ProjectReference Include="..\..\modules\localization\LINGYUN.Abp.AspNetCore.Mvc.Localization\LINGYUN.Abp.AspNetCore.Mvc.Localization.csproj" />
<ProjectReference Include="..\..\modules\lt\LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore\LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore.csproj" /> <ProjectReference Include="..\..\modules\lt\LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore\LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore.csproj" />
</ItemGroup> </ItemGroup>

2
aspnet-core/services/LY.MicroService.WebhooksManagement.HttpApi.Host/WebhooksManagementHttpApiHostModule.cs

@ -1,4 +1,5 @@
using DotNetCore.CAP; using DotNetCore.CAP;
using LINGYUN.Abp.AspNetCore.Mvc.Localization;
using LINGYUN.Abp.AspNetCore.Mvc.Wrapper; using LINGYUN.Abp.AspNetCore.Mvc.Wrapper;
using LINGYUN.Abp.AuditLogging.Elasticsearch; using LINGYUN.Abp.AuditLogging.Elasticsearch;
using LINGYUN.Abp.Authorization.OrganizationUnits; using LINGYUN.Abp.Authorization.OrganizationUnits;
@ -56,6 +57,7 @@ namespace LY.MicroService.WebhooksManagement;
typeof(AbpCAPEventBusModule), typeof(AbpCAPEventBusModule),
typeof(AbpHttpClientIdentityModelWebModule), typeof(AbpHttpClientIdentityModelWebModule),
typeof(AbpAspNetCoreMultiTenancyModule), typeof(AbpAspNetCoreMultiTenancyModule),
typeof(AbpAspNetCoreMvcLocalizationModule),
typeof(AbpSaasEntityFrameworkCoreModule), typeof(AbpSaasEntityFrameworkCoreModule),
typeof(AbpFeatureManagementEntityFrameworkCoreModule), typeof(AbpFeatureManagementEntityFrameworkCoreModule),
typeof(AbpPermissionManagementEntityFrameworkCoreModule), typeof(AbpPermissionManagementEntityFrameworkCoreModule),

2
aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/LY.MicroService.WorkflowManagement.HttpApi.Host.csproj

@ -45,6 +45,8 @@
<ProjectReference Include="..\..\modules\logging\LINGYUN.Abp.Serilog.Enrichers.Application\LINGYUN.Abp.Serilog.Enrichers.Application.csproj" /> <ProjectReference Include="..\..\modules\logging\LINGYUN.Abp.Serilog.Enrichers.Application\LINGYUN.Abp.Serilog.Enrichers.Application.csproj" />
<ProjectReference Include="..\..\modules\logging\LINGYUN.Abp.Serilog.Enrichers.UniqueId\LINGYUN.Abp.Serilog.Enrichers.UniqueId.csproj" /> <ProjectReference Include="..\..\modules\logging\LINGYUN.Abp.Serilog.Enrichers.UniqueId\LINGYUN.Abp.Serilog.Enrichers.UniqueId.csproj" />
<ProjectReference Include="..\..\modules\lt\LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore\LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore.csproj" /> <ProjectReference Include="..\..\modules\lt\LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore\LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore.csproj" />
<ProjectReference Include="..\..\modules\localization\LINGYUN.Abp.AspNetCore.Mvc.Localization\LINGYUN.Abp.AspNetCore.Mvc.Localization.csproj" />
<ProjectReference Include="..\..\modules\localization\LINGYUN.Abp.Localization.CultureMap\LINGYUN.Abp.Localization.CultureMap.csproj" />
<ProjectReference Include="..\..\modules\oss-management\LINGYUN.Abp.BlobStoring.OssManagement\LINGYUN.Abp.BlobStoring.OssManagement.csproj" /> <ProjectReference Include="..\..\modules\oss-management\LINGYUN.Abp.BlobStoring.OssManagement\LINGYUN.Abp.BlobStoring.OssManagement.csproj" />
<ProjectReference Include="..\..\modules\workflow\LINGYUN.Abp.Workflow.Elsa.Server\LINGYUN.Abp.Workflow.Elsa.Server.csproj" /> <ProjectReference Include="..\..\modules\workflow\LINGYUN.Abp.Workflow.Elsa.Server\LINGYUN.Abp.Workflow.Elsa.Server.csproj" />
<ProjectReference Include="..\..\modules\workflow\LINGYUN.Abp.Workflow.Elsa\LINGYUN.Abp.Workflow.Elsa.csproj" /> <ProjectReference Include="..\..\modules\workflow\LINGYUN.Abp.Workflow.Elsa\LINGYUN.Abp.Workflow.Elsa.csproj" />

13
aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/WorkflowManagementHttpApiHostModule.Configure.cs

@ -5,6 +5,7 @@ using Elsa.Persistence.EntityFramework.MySql;
using LINGYUN.Abp.BlobStoring.OssManagement; using LINGYUN.Abp.BlobStoring.OssManagement;
using LINGYUN.Abp.ExceptionHandling; using LINGYUN.Abp.ExceptionHandling;
using LINGYUN.Abp.ExceptionHandling.Emailing; using LINGYUN.Abp.ExceptionHandling.Emailing;
using LINGYUN.Abp.Localization.CultureMap;
using LINGYUN.Abp.Serilog.Enrichers.Application; using LINGYUN.Abp.Serilog.Enrichers.Application;
using Medallion.Threading; using Medallion.Threading;
using Medallion.Threading.Redis; using Medallion.Threading.Redis;
@ -247,6 +248,18 @@ public partial class WorkflowManagementHttpApiHostModule
// 动态语言支持 // 动态语言支持
options.Resources.AddDynamic(); options.Resources.AddDynamic();
}); });
Configure<AbpLocalizationCultureMapOptions>(options =>
{
var zhHansCultureMapInfo = new CultureMapInfo
{
TargetCulture = "zh-Hans",
SourceCultures = new string[] { "zh", "zh_CN", "zh-CN" }
};
options.CulturesMaps.Add(zhHansCultureMapInfo);
options.UiCulturesMaps.Add(zhHansCultureMapInfo);
});
} }
private void ConfigureSecurity(IServiceCollection services, IConfiguration configuration, bool isDevelopment = false) private void ConfigureSecurity(IServiceCollection services, IConfiguration configuration, bool isDevelopment = false)

6
aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/WorkflowManagementHttpApiHostModule.cs

@ -1,7 +1,9 @@
using LINGYUN.Abp.AuditLogging.Elasticsearch; using LINGYUN.Abp.AspNetCore.Mvc.Localization;
using LINGYUN.Abp.AuditLogging.Elasticsearch;
using LINGYUN.Abp.BlobStoring.OssManagement; using LINGYUN.Abp.BlobStoring.OssManagement;
using LINGYUN.Abp.Data.DbMigrator; using LINGYUN.Abp.Data.DbMigrator;
using LINGYUN.Abp.ExceptionHandling.Emailing; using LINGYUN.Abp.ExceptionHandling.Emailing;
using LINGYUN.Abp.Localization.CultureMap;
using LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore; using LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore;
using LINGYUN.Abp.Saas.EntityFrameworkCore; using LINGYUN.Abp.Saas.EntityFrameworkCore;
using LINGYUN.Abp.Serilog.Enrichers.Application; using LINGYUN.Abp.Serilog.Enrichers.Application;
@ -49,6 +51,7 @@ namespace LY.MicroService.WorkflowManagement;
typeof(AbpEmailingExceptionHandlingModule), typeof(AbpEmailingExceptionHandlingModule),
typeof(AbpHttpClientIdentityModelWebModule), typeof(AbpHttpClientIdentityModelWebModule),
typeof(AbpAspNetCoreMultiTenancyModule), typeof(AbpAspNetCoreMultiTenancyModule),
typeof(AbpAspNetCoreMvcLocalizationModule),
typeof(AbpFeatureManagementEntityFrameworkCoreModule), typeof(AbpFeatureManagementEntityFrameworkCoreModule),
typeof(AbpPermissionManagementEntityFrameworkCoreModule), typeof(AbpPermissionManagementEntityFrameworkCoreModule),
typeof(AbpSettingManagementEntityFrameworkCoreModule), typeof(AbpSettingManagementEntityFrameworkCoreModule),
@ -58,6 +61,7 @@ namespace LY.MicroService.WorkflowManagement;
typeof(AbpCachingStackExchangeRedisModule), typeof(AbpCachingStackExchangeRedisModule),
typeof(AbpAspNetCoreMvcModule), typeof(AbpAspNetCoreMvcModule),
typeof(AbpSwashbuckleModule), typeof(AbpSwashbuckleModule),
typeof(AbpLocalizationCultureMapModule),
typeof(AbpAutofacModule) typeof(AbpAutofacModule)
)] )]
public partial class WorkflowManagementHttpApiHostModule : AbpModule public partial class WorkflowManagementHttpApiHostModule : AbpModule

2
aspnet-core/services/LY.MicroService.identityServer.HttpApi.Host/IdentityServerHttpApiHostModule.cs

@ -1,5 +1,6 @@
using DotNetCore.CAP; using DotNetCore.CAP;
using LINGYUN.Abp.AspNetCore.HttpOverrides; using LINGYUN.Abp.AspNetCore.HttpOverrides;
using LINGYUN.Abp.AspNetCore.Mvc.Localization;
using LINGYUN.Abp.AuditLogging.Elasticsearch; using LINGYUN.Abp.AuditLogging.Elasticsearch;
using LINGYUN.Abp.Authorization.OrganizationUnits; using LINGYUN.Abp.Authorization.OrganizationUnits;
using LINGYUN.Abp.EventBus.CAP; using LINGYUN.Abp.EventBus.CAP;
@ -32,6 +33,7 @@ namespace LY.MicroService.IdentityServer;
typeof(AbpSerilogEnrichersUniqueIdModule), typeof(AbpSerilogEnrichersUniqueIdModule),
typeof(AbpAspNetCoreSerilogModule), typeof(AbpAspNetCoreSerilogModule),
typeof(AbpAspNetCoreMultiTenancyModule), typeof(AbpAspNetCoreMultiTenancyModule),
typeof(AbpAspNetCoreMvcLocalizationModule),
typeof(LINGYUN.Abp.Account.AbpAccountApplicationModule), typeof(LINGYUN.Abp.Account.AbpAccountApplicationModule),
typeof(LINGYUN.Abp.Account.AbpAccountHttpApiModule), typeof(LINGYUN.Abp.Account.AbpAccountHttpApiModule),
typeof(LINGYUN.Abp.Identity.AbpIdentityApplicationModule), typeof(LINGYUN.Abp.Identity.AbpIdentityApplicationModule),

1
aspnet-core/services/LY.MicroService.identityServer.HttpApi.Host/LY.MicroService.identityServer.HttpApi.Host.csproj

@ -66,6 +66,7 @@
<ProjectReference Include="..\..\modules\identity\LINGYUN.Abp.Identity.Application\LINGYUN.Abp.Identity.Application.csproj" /> <ProjectReference Include="..\..\modules\identity\LINGYUN.Abp.Identity.Application\LINGYUN.Abp.Identity.Application.csproj" />
<ProjectReference Include="..\..\modules\identity\LINGYUN.Abp.Identity.EntityFrameworkCore\LINGYUN.Abp.Identity.EntityFrameworkCore.csproj" /> <ProjectReference Include="..\..\modules\identity\LINGYUN.Abp.Identity.EntityFrameworkCore\LINGYUN.Abp.Identity.EntityFrameworkCore.csproj" />
<ProjectReference Include="..\..\modules\identity\LINGYUN.Abp.Identity.HttpApi\LINGYUN.Abp.Identity.HttpApi.csproj" /> <ProjectReference Include="..\..\modules\identity\LINGYUN.Abp.Identity.HttpApi\LINGYUN.Abp.Identity.HttpApi.csproj" />
<ProjectReference Include="..\..\modules\localization\LINGYUN.Abp.AspNetCore.Mvc.Localization\LINGYUN.Abp.AspNetCore.Mvc.Localization.csproj" />
<ProjectReference Include="..\..\modules\localization\LINGYUN.Abp.Localization.CultureMap\LINGYUN.Abp.Localization.CultureMap.csproj" /> <ProjectReference Include="..\..\modules\localization\LINGYUN.Abp.Localization.CultureMap\LINGYUN.Abp.Localization.CultureMap.csproj" />
<ProjectReference Include="..\..\modules\logging\LINGYUN.Abp.Serilog.Enrichers.Application\LINGYUN.Abp.Serilog.Enrichers.Application.csproj" /> <ProjectReference Include="..\..\modules\logging\LINGYUN.Abp.Serilog.Enrichers.Application\LINGYUN.Abp.Serilog.Enrichers.Application.csproj" />
<ProjectReference Include="..\..\modules\logging\LINGYUN.Abp.Serilog.Enrichers.UniqueId\LINGYUN.Abp.Serilog.Enrichers.UniqueId.csproj" /> <ProjectReference Include="..\..\modules\logging\LINGYUN.Abp.Serilog.Enrichers.UniqueId\LINGYUN.Abp.Serilog.Enrichers.UniqueId.csproj" />

2
gateways/internal/LINGYUN.MicroService.Internal.ApiGateway/src/LINGYUN.MicroService.Internal.ApiGateway/Properties/launchSettings.json

@ -12,7 +12,7 @@
"commandName": "Project", "commandName": "Project",
"launchBrowser": false, "launchBrowser": false,
"environmentVariables": { "environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Production" "ASPNETCORE_ENVIRONMENT": "Development"
}, },
"applicationUrl": "https://127.0.0.1:30443;http://127.0.0.1:30000" "applicationUrl": "https://127.0.0.1:30443;http://127.0.0.1:30000"
} }

36
gateways/internal/LINGYUN.MicroService.Internal.ApiGateway/src/LINGYUN.MicroService.Internal.ApiGateway/ocelot.Development.json

@ -707,7 +707,7 @@
"Port": 30030 "Port": 30030
} }
], ],
"UpstreamPathTemplate": "/api/abp/localization/application-configuration", "UpstreamPathTemplate": "/api/abp/localization-management/application-configuration",
"UpstreamHttpMethod": [ "UpstreamHttpMethod": [
"GET" "GET"
], ],
@ -734,7 +734,7 @@
"Port": 30030 "Port": 30030
} }
], ],
"UpstreamPathTemplate": "/api/abp/localization/api-definition", "UpstreamPathTemplate": "/api/abp/localization-management/api-definition",
"UpstreamHttpMethod": [ "UpstreamHttpMethod": [
"GET" "GET"
], ],
@ -752,6 +752,38 @@
}, },
"Key": "localization-api-definition" "Key": "localization-api-definition"
}, },
{
"DownstreamPathTemplate": "/api/abp/localization/{everything}",
"DownstreamScheme": "http",
"DownstreamHostAndPorts": [
{
"Host": "127.0.0.1",
"Port": 30010
}
],
"UpstreamPathTemplate": "/api/abp/localization/{everything}",
"UpstreamHttpMethod": [
"GET"
],
"LoadBalancerOptions": {
"Type": "RoundRobin"
},
"RateLimitOptions": {
"ClientWhitelist": [],
"EnableRateLimiting": true,
"Period": "1s",
"PeriodTimespan": 1,
"Limit": 5
},
"QoSOptions": {
"ExceptionsAllowedBeforeBreaking": 10,
"DurationOfBreak": 1000,
"TimeoutValue": 10000
},
"HttpHandlerOptions": {
"UseTracing": true
}
},
{ {
"DownstreamPathTemplate": "/api/localization/{everything}", "DownstreamPathTemplate": "/api/localization/{everything}",
"DownstreamScheme": "http", "DownstreamScheme": "http",

Loading…
Cancel
Save