Browse Source

feat:调整多语言设置

pull/126/head
wangjun 3 years ago
parent
commit
afe895b223
  1. 2
      aspnet-core/frameworks/src/Lion.AbpPro.Core/Lion/AbpPro/Core/CustomListResultDto.cs
  2. 1
      aspnet-core/frameworks/src/Lion.AbpPro.Core/Lion/AbpPro/Core/CustomPagedResultDto.cs
  3. 8
      aspnet-core/frameworks/src/Lion.AbpPro.Core/Lion/AbpPro/Core/Guard.cs
  4. 23
      aspnet-core/frameworks/src/Lion.AbpPro.Core/Lion/AbpPro/Core/PagingBase.cs
  5. 8
      aspnet-core/frameworks/src/Lion.AbpPro.Localization/Lion/AbpPro/AbpProLocalizationErrorCodes.cs
  6. 5
      aspnet-core/frameworks/src/Lion.AbpPro.Localization/Lion/AbpPro/Localization/Resources/en.json
  7. 5
      aspnet-core/frameworks/src/Lion.AbpPro.Localization/Lion/AbpPro/Localization/Resources/zh-Hans.json
  8. 10
      aspnet-core/frameworks/test/Lion.AbpPro.Localization.Tests/Lion/AbpPro/AbpProLocalizationTests.cs
  9. 3
      aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/GlobalUsings.cs
  10. 15
      aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/CreateOrganizationUnitInput.cs
  11. 15
      aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/UpdateOrganizationUnitInput.cs
  12. 24
      aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/Dtos/GetPermissionInput.cs
  13. 24
      aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/Dtos/UpdateRolePermissionsInput.cs
  14. 16
      aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Tenants/Dtos/UpdateDefaultConnectionStringInput.cs
  15. 16
      aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Tenants/Dtos/UpdateTenantInput.cs
  16. 4
      aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/LockUserInput.cs
  17. 99
      aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/LoginGithubResponse.cs
  18. 13
      aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/LoginInput.cs
  19. 21
      aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/LoginStsResponse.cs
  20. 27
      aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Application.Contracts/DataDictionaries/Dtos/CreateDataDictinaryDetailInput.cs
  21. 24
      aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Application.Contracts/DataDictionaries/Dtos/CreateDataDictinaryInput.cs
  22. 6
      aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Application.Contracts/DataDictionaries/Dtos/SetDataDictinaryDetailInput.cs
  23. 29
      aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Application.Contracts/DataDictionaries/Dtos/UpdateDataDictinaryInput.cs
  24. 24
      aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Application.Contracts/DataDictionaries/Dtos/UpdateDetailInput.cs
  25. 3
      aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Application.Contracts/GlobalUsings.cs
  26. 4
      aspnet-core/modules/LanguageManagement/src/Lion.AbpPro.LanguageManagement.Application.Contracts/GlobalUsings.cs
  27. 79
      aspnet-core/modules/LanguageManagement/src/Lion.AbpPro.LanguageManagement.Application.Contracts/LanguageTexts/CreateLanguageTextInput.cs
  28. 2
      aspnet-core/modules/LanguageManagement/src/Lion.AbpPro.LanguageManagement.Application.Contracts/LanguageTexts/UpdateLanguageTextInput.cs
  29. 80
      aspnet-core/modules/LanguageManagement/src/Lion.AbpPro.LanguageManagement.Application.Contracts/Languages/CreateLanguageInput.cs
  30. 90
      aspnet-core/modules/LanguageManagement/src/Lion.AbpPro.LanguageManagement.Application.Contracts/Languages/UpdateLanguageInput.cs
  31. 15
      aspnet-core/services/src/Lion.AbpPro.Domain.Shared/Localization/AbpPro/en.json
  32. 14
      aspnet-core/services/src/Lion.AbpPro.Domain.Shared/Localization/AbpPro/zh-Hans.json

2
aspnet-core/frameworks/src/Lion.AbpPro.Core/Lion/AbpPro/Core/CustomListResultDto.cs

@ -1,6 +1,6 @@
namespace Lion.AbpPro.Core;
[Serializable]
public class CustomListResultDto<T>
{
public IReadOnlyList<T> Items

1
aspnet-core/frameworks/src/Lion.AbpPro.Core/Lion/AbpPro/Core/CustomPagedResultDto.cs

@ -1,6 +1,5 @@
namespace Lion.AbpPro.Core;
[Serializable]
public class CustomPagedResultDto<T> : CustomListResultDto<T>
{
public long TotalCount { get; set; }

8
aspnet-core/frameworks/src/Lion.AbpPro.Core/Lion/AbpPro/Core/Guard.cs

@ -112,9 +112,7 @@ public static class Guard
/// </summary>
/// <param name="value"></param>
/// <param name="valueName">参数名称。</param>
public static Guid NotEmpty(
Guid value,
string valueName)
public static Guid NotEmpty(Guid value, string valueName)
{
if (value == Guid.Empty)
{
@ -130,9 +128,7 @@ public static class Guard
/// <typeparam name="T">集合项的类型。</typeparam>
/// <param name="list"></param>
/// <param name="valueName">参数名称。</param>
public static void NotNullOrEmpty<T>(
IReadOnlyList<T> list,
string valueName)
public static void NotNullOrEmpty<T>(IReadOnlyList<T> list, string valueName)
{
if (null == list || !list.Any())
{

23
aspnet-core/frameworks/src/Lion.AbpPro.Core/Lion/AbpPro/Core/PagingBase.cs

@ -1,3 +1,7 @@
using Lion.AbpPro.Localization;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Localization;
namespace Lion.AbpPro.Core;
/// <summary>
@ -6,7 +10,7 @@ namespace Lion.AbpPro.Core;
public class PagingBase : IValidatableObject
{
public const int MaxPageSize = 100000;
/// <summary>
/// 当前页面.默认从1开始
/// </summary>
@ -16,7 +20,7 @@ public class PagingBase : IValidatableObject
/// 每页多少条.每页显示多少记录
/// </summary>
public int PageSize { get; set; } = 10;
/// <summary>
/// 跳过多少条
/// </summary>
@ -25,28 +29,29 @@ public class PagingBase : IValidatableObject
protected PagingBase()
{
}
public PagingBase(int pageIndex = 1, int pageSize = 10)
{
PageIndex = pageIndex;
PageSize = pageSize;
}
public virtual IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var localization = validationContext.GetRequiredService<IStringLocalizer<AbpProLocalizationResource>>();
if (PageIndex < 1)
{
yield return new ValidationResult(
"起始页必须大于等于1",
new[] { "PageIndex"}
localization[AbpProLocalizationErrorCodes.ErrorCode100001],
new[] { "PageIndex" }
);
}
if (PageSize > MaxPageSize)
{
yield return new ValidationResult(
$"每页最大记录数不能超过'{MaxPageSize}'",
new[] { "PageSize"}
localization[AbpProLocalizationErrorCodes.ErrorCode100002],
new[] { "PageSize" }
);
}
}

8
aspnet-core/frameworks/src/Lion.AbpPro.Localization/Lion/AbpPro/AbpProLocalizationErrorCodes.cs

@ -0,0 +1,8 @@
namespace Lion.AbpPro;
public class AbpProLocalizationErrorCodes
{
public const string ErrorCode100001 = AbpProLocalizationConsts.NameSpace + ":100001";
public const string ErrorCode100002 = AbpProLocalizationConsts.NameSpace + ":100002";
public const string ErrorCode100003 = AbpProLocalizationConsts.NameSpace + ":100003";
}

5
aspnet-core/frameworks/src/Lion.AbpPro.Localization/Lion/AbpPro/Localization/Resources/en.json

@ -2,6 +2,9 @@
"culture": "en",
"texts": {
"Welcome": "Welcome",
"Permission:Cap": "CAP Dashboard"
"Permission:Cap": "CAP Dashboard",
"Lion.AbpPro:100001": "The start page must be greater than or equal to 1",
"Lion.AbpPro:100002": "The maximum number of records per page cannot exceed 100,000",
"Lion.AbpPro:100003": "{0} can not be empty"
}
}

5
aspnet-core/frameworks/src/Lion.AbpPro.Localization/Lion/AbpPro/Localization/Resources/zh-Hans.json

@ -2,6 +2,9 @@
"culture": "zh-Hans",
"texts": {
"Welcome": "欢迎",
"Permission:Cap": "CAP面板"
"Permission:Cap": "CAP面板",
"Lion.AbpPro:100001": "起始页必须大于等于1",
"Lion.AbpPro:100002": "每页最大记录数不能超过100000",
"Lion.AbpPro:100003": "{0}不能为空"
}
}

10
aspnet-core/frameworks/test/Lion.AbpPro.Localization.Tests/Lion/AbpPro/AbpProLocalizationTests.cs

@ -20,14 +20,16 @@ namespace Lion.AbpPro
{
using (CultureHelper.Use("en"))
{
_stringLocalizer["Welcome"].Value
.ShouldBe("Welcome");
_stringLocalizer["Welcome"].Value.ShouldBe("Welcome");
_stringLocalizer[AbpProLocalizationErrorCodes.ErrorCode100001].Value.ShouldBe("The start page must be greater than or equal to 1");
_stringLocalizer[AbpProLocalizationErrorCodes.ErrorCode100003,"Name"].Value.ShouldBe("Name can not be empty");
}
using (CultureHelper.Use("zh-Hans"))
{
_stringLocalizer["Welcome"].Value
.ShouldBe("欢迎");
_stringLocalizer["Welcome"].Value.ShouldBe("欢迎");
_stringLocalizer[AbpProLocalizationErrorCodes.ErrorCode100001].Value.ShouldBe("起始页必须大于等于1");
_stringLocalizer[AbpProLocalizationErrorCodes.ErrorCode100003,"Name"].Value.ShouldBe("Name不能为空");
}
}
}

3
aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/GlobalUsings.cs

@ -4,6 +4,9 @@ global using System.ComponentModel.DataAnnotations;
global using Lion.AbpPro.BasicManagement.OrganizationUnits.Dto;
global using Lion.AbpPro.BasicManagement.Tenants.Dtos;
global using Lion.AbpPro.Core;
global using Lion.AbpPro.Localization;
global using Microsoft.Extensions.DependencyInjection;
global using Microsoft.Extensions.Localization;
global using Volo.Abp.Application.Dtos;
global using Volo.Abp.Application.Services;
global using Volo.Abp.AspNetCore.Mvc.MultiTenancy;

15
aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/CreateOrganizationUnitInput.cs

@ -1,9 +1,20 @@
namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto;
public class CreateOrganizationUnitInput
public class CreateOrganizationUnitInput : IValidatableObject
{
[Required]
public string DisplayName { get; set; }
public Guid? ParentId { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var localization = validationContext.GetRequiredService<IStringLocalizer<AbpProLocalizationResource>>();
if (DisplayName.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(DisplayName)],
new[] { nameof(DisplayName) }
);
}
}
}

15
aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/OrganizationUnits/Dto/UpdateOrganizationUnitInput.cs

@ -1,9 +1,20 @@
namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto;
public class UpdateOrganizationUnitInput
public class UpdateOrganizationUnitInput : IValidatableObject
{
[Required]
public string DisplayName { get; set; }
public Guid Id { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var localization = validationContext.GetRequiredService<IStringLocalizer<AbpProLocalizationResource>>();
if (DisplayName.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(DisplayName)],
new[] { nameof(DisplayName) }
);
}
}
}

24
aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/Dtos/GetPermissionInput.cs

@ -1,10 +1,28 @@
namespace Lion.AbpPro.BasicManagement.Roles.Dtos
{
public class GetPermissionInput
public class GetPermissionInput : IValidatableObject
{
[Required]
public string ProviderName { get; set; }
[Required]
public string ProviderKey { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var localization = validationContext.GetRequiredService<IStringLocalizer<AbpProLocalizationResource>>();
if (ProviderName.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(ProviderName)],
new[] { nameof(ProviderName) }
);
}
if (ProviderKey.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(ProviderKey)],
new[] { nameof(ProviderKey) }
);
}
}
}
}

24
aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Roles/Dtos/UpdateRolePermissionsInput.cs

@ -1,13 +1,31 @@
namespace Lion.AbpPro.BasicManagement.Roles.Dtos
{
public class UpdateRolePermissionsInput
public class UpdateRolePermissionsInput : IValidatableObject
{
[Required]
public string ProviderName { get; set; }
[Required]
public string ProviderKey { get; set; }
public UpdatePermissionsDto UpdatePermissionsDto { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var localization = validationContext.GetRequiredService<IStringLocalizer<AbpProLocalizationResource>>();
if (ProviderName.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(ProviderName)],
new[] { nameof(ProviderName) }
);
}
if (ProviderKey.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(ProviderKey)],
new[] { nameof(ProviderKey) }
);
}
}
}
}

16
aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Tenants/Dtos/UpdateDefaultConnectionStringInput.cs

@ -1,8 +1,20 @@
namespace Lion.AbpPro.BasicManagement.Tenants.Dtos
{
public class UpdateConnectionStringInput
public class UpdateConnectionStringInput : IValidatableObject
{
public Guid Id { get; set; }
[Required(ErrorMessage = "连接字符串不能为空")] public string ConnectionString { get; set; }
public string ConnectionString { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var localization = validationContext.GetRequiredService<IStringLocalizer<AbpProLocalizationResource>>();
if (ConnectionString.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(ConnectionString)],
new[] { nameof(ConnectionString) }
);
}
}
}
}

16
aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Tenants/Dtos/UpdateTenantInput.cs

@ -1,9 +1,21 @@
namespace Lion.AbpPro.BasicManagement.Tenants.Dtos
{
public class UpdateTenantInput
public class UpdateTenantInput : IValidatableObject
{
public Guid Id { get; set; }
[Required(ErrorMessage = "租户名称不能为空")] public string Name { get; set; }
public string Name { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var localization = validationContext.GetRequiredService<IStringLocalizer<AbpProLocalizationResource>>();
if (Name.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(Name)],
new[] { nameof(Name) }
);
}
}
}
}

4
aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/LockUserInput.cs

@ -2,10 +2,8 @@ namespace Lion.AbpPro.BasicManagement.Users.Dtos
{
public class LockUserInput
{
[Required]
public Guid UserId { get; set; }
[Required]
public bool Locked { get; set; }
}
}

99
aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/LoginGithubResponse.cs

@ -1,99 +0,0 @@
namespace Lion.AbpPro.BasicManagement.Users.Dtos;
public class LoginGithubResponse
{
public string login { get; set; }
public int id { get; set; }
public string node_id { get; set; }
public string avatar_url { get; set; }
public string gravatar_id { get; set; }
public string url { get; set; }
public string html_url { get; set; }
public string followers_url { get; set; }
public string following_url { get; set; }
public string gists_url { get; set; }
public string starred_url { get; set; }
public string subscriptions_url { get; set; }
public string organizations_url { get; set; }
public string repos_url { get; set; }
public string events_url { get; set; }
public string received_events_url { get; set; }
public string type { get; set; }
public string site_admin { get; set; }
public string name { get; set; }
public string company { get; set; }
public string blog { get; set; }
public string location { get; set; }
public string email { get; set; }
public string hireable { get; set; }
public string bio { get; set; }
public string twitter_username { get; set; }
public int public_repos { get; set; }
public int public_gists { get; set; }
public int followers { get; set; }
public int following { get; set; }
public string created_at { get; set; }
public string updated_at { get; set; }
}

13
aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/LoginInput.cs

@ -21,15 +21,22 @@ namespace Lion.AbpPro.BasicManagement.Users.Dtos
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var localization = validationContext.GetRequiredService<IStringLocalizer<AbpProLocalizationResource>>();
if (Name.IsNullOrWhiteSpace())
{
yield return new ValidationResult("Email can not be null", new[] { "Email" });
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(Name)],
new[] { "Name" }
);
}
if (Password.IsNullOrWhiteSpace())
{
yield return new ValidationResult("Password can not be null", new[] { "Password" });
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(Password)],
new[] { "Password" }
);
}
}
}
}
}

21
aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/LoginStsResponse.cs

@ -1,21 +0,0 @@
namespace Lion.AbpPro.BasicManagement.Users.Dtos
{
public class LoginStsResponse
{
public string name { get; set; }
public string preferred_username { get; set; }
public string family_name { get; set; }
public string email { get; set; }
public string given_name { get; set; }
public string avatar { get; set; }
public string sub { get; set; }
public Guid? tenantId { get; set; }
}
}

27
aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Application.Contracts/DataDictionaries/Dtos/CreateDataDictinaryDetailInput.cs

@ -1,14 +1,33 @@
namespace Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Dtos
{
public class CreateDataDictinaryDetailInput
public class CreateDataDictinaryDetailInput : IValidatableObject
{
[Required]
public Guid Id { get; set; }
[Required]
public string Code { get; set; }
[Required]
public string DisplayText { get; set; }
public string Description { get; set; }
public int Order { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var localization = validationContext.GetRequiredService<IStringLocalizer<AbpProLocalizationResource>>();
if (Code.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(Code)],
new[] { nameof(Code) }
);
}
if (DisplayText.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(DisplayText)],
new[] { nameof(DisplayText) }
);
}
}
}
}

24
aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Application.Contracts/DataDictionaries/Dtos/CreateDataDictinaryInput.cs

@ -1,11 +1,29 @@
namespace Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Dtos
{
public class CreateDataDictinaryInput
public class CreateDataDictinaryInput : IValidatableObject
{
[Required]
public string Code { get; set; }
[Required]
public string DisplayText { get; set; }
public string Description { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var localization = validationContext.GetRequiredService<IStringLocalizer<AbpProLocalizationResource>>();
if (Code.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(Code)],
new[] { nameof(Code) }
);
}
if (DisplayText.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(DisplayText)],
new[] { nameof(DisplayText) }
);
}
}
}
}

6
aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Application.Contracts/DataDictionaries/Dtos/SetDataDictinaryDetailInput.cs

@ -2,13 +2,11 @@ namespace Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Dtos
{
public class SetDataDictinaryDetailInput
{
[Required]
public Guid DataDictionaryId { get; set; }
[Required]
public Guid DataDictionayDetailId { get; set; }
[Required]
public bool IsEnabled { get; set; }
[Required] public bool IsEnabled { get; set; }
}
}

29
aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Application.Contracts/DataDictionaries/Dtos/UpdateDataDictinaryInput.cs

@ -1,13 +1,32 @@
namespace Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Dtos
{
public class UpdateDataDictinaryInput
public class UpdateDataDictinaryInput : IValidatableObject
{
[Required]
public Guid Id { get; set; }
[Required]
public string Code { get; set; }
[Required]
public string DisplayText { get; set; }
public string Description { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var localization = validationContext.GetRequiredService<IStringLocalizer<AbpProLocalizationResource>>();
if (Code.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(Code)],
new[] { nameof(Code) }
);
}
if (DisplayText.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(DisplayText)],
new[] { nameof(DisplayText) }
);
}
}
}
}
}

24
aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Application.Contracts/DataDictionaries/Dtos/UpdateDetailInput.cs

@ -1,16 +1,28 @@
namespace Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Dtos
{
public class UpdateDetailInput
public class UpdateDetailInput : IValidatableObject
{
[Required] public Guid DataDictionaryId { get; set; }
public Guid DataDictionaryId { get; set; }
[Required] public Guid Id { get; set; }
public Guid Id { get; set; }
[Required] public string DisplayText { get; set; }
public string DisplayText { get; set; }
public string Description { get; set; }
public int Order { get; set; }
}
}
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var localization = validationContext.GetRequiredService<IStringLocalizer<AbpProLocalizationResource>>();
if (DisplayText.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(DisplayText)],
new[] { nameof(DisplayText) }
);
}
}
}
}

3
aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Application.Contracts/GlobalUsings.cs

@ -10,6 +10,9 @@ global using System.Threading.Tasks;
global using Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Dtos;
global using Lion.AbpPro.DataDictionaryManagement.Localization;
global using Lion.AbpPro.Core;
global using Lion.AbpPro.Localization;
global using Microsoft.Extensions.DependencyInjection;
global using Microsoft.Extensions.Localization;
global using Volo.Abp.Application;
global using Volo.Abp.Application.Dtos;
global using Volo.Abp.Application.Services;

4
aspnet-core/modules/LanguageManagement/src/Lion.AbpPro.LanguageManagement.Application.Contracts/GlobalUsings.cs

@ -2,12 +2,16 @@
global using System;
global using System.Collections.Generic;
global using System.ComponentModel.DataAnnotations;
global using System.Linq;
global using System.Text;
global using System.Threading;
global using System.Threading.Tasks;
global using Lion.AbpPro.Core;
global using Lion.AbpPro.LanguageManagement.Localization;
global using Lion.AbpPro.Localization;
global using Microsoft.Extensions.DependencyInjection;
global using Microsoft.Extensions.Localization;
global using Volo.Abp.Application;
global using Volo.Abp.Application.Dtos;
global using Volo.Abp.Application.Services;

79
aspnet-core/modules/LanguageManagement/src/Lion.AbpPro.LanguageManagement.Application.Contracts/LanguageTexts/CreateLanguageTextInput.cs

@ -1,30 +1,63 @@
using System.ComponentModel.DataAnnotations;
namespace Lion.AbpPro.LanguageManagement.LanguageTexts;
/// <summary>
/// 创建语言文本
/// </summary>
public class CreateLanguageTextInput
public class CreateLanguageTextInput : IValidatableObject
{
/// <summary>
/// 资源名称
/// </summary>
[Required(ErrorMessage = "资源名称不能为空")]
public string ResourceName { get; set; }
/// <summary>
/// 语言名称
/// </summary>
[Required(ErrorMessage = "语言名称不能为空")]
public string CultureName { get; set; }
/// <summary>
/// 名称
/// </summary>
[Required(ErrorMessage = "名称不能为空")]
public string Name { get; set; }
/// <summary>
/// 值
/// </summary>
[Required(ErrorMessage = "值不能为空")]
public string Value { get; set; }
/// <summary>
/// 资源名称
/// </summary>
public string ResourceName { get; set; }
/// <summary>
/// 语言名称
/// </summary>
public string CultureName { get; set; }
/// <summary>
/// 名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 值
/// </summary>
public string Value { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var localization = validationContext.GetRequiredService<IStringLocalizer<AbpProLocalizationResource>>();
if (CultureName.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(CultureName)],
new[] { nameof(CultureName) }
);
}
if (ResourceName.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(ResourceName)],
new[] { nameof(ResourceName) }
);
}
if (Name.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(Name)],
new[] { nameof(Name) }
);
}
if (Value.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(Value)],
new[] { nameof(Value) }
);
}
}
}

2
aspnet-core/modules/LanguageManagement/src/Lion.AbpPro.LanguageManagement.Application.Contracts/LanguageTexts/UpdateLanguageTextInput.cs

@ -1,5 +1,3 @@
using System.ComponentModel.DataAnnotations;
namespace Lion.AbpPro.LanguageManagement.LanguageTexts;
/// <summary>

80
aspnet-core/modules/LanguageManagement/src/Lion.AbpPro.LanguageManagement.Application.Contracts/Languages/CreateLanguageInput.cs

@ -1,34 +1,60 @@
using System.ComponentModel.DataAnnotations;
namespace Lion.AbpPro.LanguageManagement.Languages;
/// <summary>
/// 创建语言
/// </summary>
public class CreateLanguageInput
public class CreateLanguageInput : IValidatableObject
{
/// <summary>
/// 语言名称
/// </summary>
[Required(ErrorMessage = "语言名称不能为空")]
public string CultureName { get; set; }
/// <summary>
/// Ui语言名称
/// </summary>
[Required(ErrorMessage = "Ui语言名称不能为空")]
public string UiCultureName { get; set; }
/// <summary>
/// 显示名称
/// </summary>
[Required(ErrorMessage = "显示名称不能为空")]
public string DisplayName { get; set; }
/// <summary>
/// 图标
/// </summary>
public string FlagIcon { get; set; }
/// <summary>
/// 是否启用
/// </summary>
[Required(ErrorMessage = "是否启用不能为空")]
public bool IsEnabled { get; set; }
/// <summary>
/// 语言名称
/// </summary>
public string CultureName { get; set; }
/// <summary>
/// Ui语言名称
/// </summary>
public string UiCultureName { get; set; }
/// <summary>
/// 显示名称
/// </summary>
public string DisplayName { get; set; }
/// <summary>
/// 图标
/// </summary>
public string FlagIcon { get; set; }
/// <summary>
/// 是否启用
/// </summary>
public bool IsEnabled { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var localization = validationContext.GetRequiredService<IStringLocalizer<AbpProLocalizationResource>>();
if (CultureName.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(CultureName)],
new[] { nameof(CultureName) }
);
}
if (UiCultureName.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(UiCultureName)],
new[] { nameof(UiCultureName) }
);
}
if (DisplayName.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(DisplayName)],
new[] { nameof(DisplayName) }
);
}
}
}

90
aspnet-core/modules/LanguageManagement/src/Lion.AbpPro.LanguageManagement.Application.Contracts/Languages/UpdateLanguageInput.cs

@ -1,39 +1,65 @@
using System.ComponentModel.DataAnnotations;
namespace Lion.AbpPro.LanguageManagement.Languages;
/// <summary>
/// 删除语言
/// </summary>
public class UpdateLanguageInput
public class UpdateLanguageInput : IValidatableObject
{
/// <summary>
/// 语言Id
/// </summary>
public Guid Id { get; set; }
/// <summary>
/// 语言名称
/// </summary>
[Required(ErrorMessage = "语言名称不能为空")]
public string CultureName { get; set; }
/// <summary>
/// Ui语言名称
/// </summary>
[Required(ErrorMessage = "Ui语言名称不能为空")]
public string UiCultureName { get; set; }
/// <summary>
/// 显示名称
/// </summary>
[Required(ErrorMessage = "显示名称不能为空")]
public string DisplayName { get; set; }
/// <summary>
/// 图标
/// </summary>
public string FlagIcon { get; set; }
/// <summary>
/// 是否启用
/// </summary>
[Required(ErrorMessage = "是否启用不能为空")]
public bool IsEnabled { get; set; }
/// <summary>
/// 语言Id
/// </summary>
public Guid Id { get; set; }
/// <summary>
/// 语言名称
/// </summary>
public string CultureName { get; set; }
/// <summary>
/// Ui语言名称
/// </summary>
public string UiCultureName { get; set; }
/// <summary>
/// 显示名称
/// </summary>
public string DisplayName { get; set; }
/// <summary>
/// 图标
/// </summary>
public string FlagIcon { get; set; }
/// <summary>
/// 是否启用
/// </summary>
public bool IsEnabled { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var localization = validationContext.GetRequiredService<IStringLocalizer<AbpProLocalizationResource>>();
if (CultureName.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(CultureName)],
new[] { nameof(CultureName) }
);
}
if (UiCultureName.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(UiCultureName)],
new[] { nameof(UiCultureName) }
);
}
if (DisplayName.IsNullOrWhiteSpace())
{
yield return new ValidationResult(
localization[AbpProLocalizationErrorCodes.ErrorCode100003, nameof(DisplayName)],
new[] { nameof(DisplayName) }
);
}
}
}

15
aspnet-core/services/src/Lion.AbpPro.Domain.Shared/Localization/AbpPro/en.json

@ -24,19 +24,6 @@
"Description:Setting.Group.Other.Github": "Github",
"Enum:TestType:Created:1":"Created",
"Enum:TestType:Cancel:1":"Cancel",
"Enum:TestType:Delete:1":"Delete",
"Lion.AbpPro:100001": "OrganizationUnit Not Exist",
"Lion.AbpPro:100002": "UserLockedOut",
"Lion.AbpPro:100003": "UserOrPasswordMismatch",
"Lion.AbpPro:100004": "ApiResource Not Exist",
"Lion.AbpPro:100005": "ApiResource Exist",
"Lion.AbpPro:100006": "ApiScope Not Exist",
"Lion.AbpPro:100007": "ApiScope Exist",
"Lion.AbpPro:100008": "ApiClient Not Exist",
"Lion.AbpPro:100009": "ApiClient Exist",
"Lion.AbpPro:100010": "IdentityResource Not Exist",
"Lion.AbpPro:100011": "IdentityResource Exist"
"Enum:TestType:Delete:1":"Delete"
}
}

14
aspnet-core/services/src/Lion.AbpPro.Domain.Shared/Localization/AbpPro/zh-Hans.json

@ -25,18 +25,6 @@
"Description:Setting.Group.Other.Github": "Github",
"Enum:TestType:Created:1":"创建",
"Enum:TestType:Cancel:1":"取消",
"Enum:TestType:Delete:1":"删除",
"Lion.AbpPro:100001": "组织机构不存在",
"Lion.AbpPro:100002": "用户被锁定",
"Lion.AbpPro:100003": "用户名或者密码错误",
"Lion.AbpPro:100004": "ApiResource不存在",
"Lion.AbpPro:100005": "ApiResource 已存在",
"Lion.AbpPro:100006": "ApiScope 不存在",
"Lion.AbpPro:100007": "ApiScope 已存在",
"Lion.AbpPro:100008": "ApiClient 不存在",
"Lion.AbpPro:100009": "ApiClient 已存在",
"Lion.AbpPro:100010": "IdentityResource 不存在",
"Lion.AbpPro:100011": "IdentityResource 已存在"
"Enum:TestType:Delete:1":"删除"
}
}
Loading…
Cancel
Save