Browse Source

本地化测试。

master
wwwk 3 years ago
parent
commit
ce0d30e97c
  1. 31
      services/book-store/BookStoreModule.cs
  2. 19
      services/book-store/Controllers/DataAnnotationsLocalizationController.cs
  3. 4
      services/book-store/Controllers/WrapController.cs

31
services/book-store/BookStoreModule.cs

@ -4,6 +4,7 @@ using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.DataProtection; using Microsoft.AspNetCore.DataProtection;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Localization;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
@ -12,9 +13,9 @@ using Sanhe.Abp.AspNetCore.Mvc.Wrapper;
using Sanhe.Abp.ExceptionHandling; using Sanhe.Abp.ExceptionHandling;
using Sanhe.Abp.ExceptionHandling.Emailing; using Sanhe.Abp.ExceptionHandling.Emailing;
using Sanhe.Abp.Features.LimitValidation.Redis; using Sanhe.Abp.Features.LimitValidation.Redis;
using Sanhe.Abp.Wrapper;
using StackExchange.Redis; using StackExchange.Redis;
using System; using System;
using System.Collections.Generic;
using System.Linq; using System.Linq;
using Volo.Abp; using Volo.Abp;
using Volo.Abp.Account; using Volo.Abp.Account;
@ -132,11 +133,11 @@ public class BookStoreModule : AbpModule
context.Services.AddAlwaysAllowAuthorization(); context.Services.AddAlwaysAllowAuthorization();
// wrap // wrap
Configure<AbpWrapperOptions>(options => //Configure<AbpWrapperOptions>(options =>
{ //{
options.IsEnabled = true; // options.IsEnabled = true;
options.IgnoreNamespaces.Clear(); // options.IgnoreNamespaces.Clear();
}); //});
// limit // limit
Configure<AbpRedisRequiresLimitFeatureOptions>(options => Configure<AbpRedisRequiresLimitFeatureOptions>(options =>
{ {
@ -231,14 +232,14 @@ public class BookStoreModule : AbpModule
Configure<AbpLocalizationOptions>(options => Configure<AbpLocalizationOptions>(options =>
{ {
options.Resources options.Resources
.Add<BookStoreResource>("en") .Add<BookStoreResource>("zh-Hans")
.AddBaseTypes(typeof(AbpValidationResource)) .AddBaseTypes(typeof(AbpValidationResource))
.AddVirtualJson("/Localization/BookStore"); .AddVirtualJson("/Localization/BookStore");
options.DefaultResourceType = typeof(BookStoreResource); options.DefaultResourceType = typeof(BookStoreResource);
//options.Languages.Add(new LanguageInfo("en", "en", "English"));
options.Languages.Add(new LanguageInfo("zh-Hans", "zh-Hans", "简体中文")); options.Languages.Add(new LanguageInfo("zh-Hans", "zh-Hans", "简体中文"));
options.Languages.Add(new LanguageInfo("en", "en", "English"));
}); });
Configure<AbpExceptionLocalizationOptions>(options => Configure<AbpExceptionLocalizationOptions>(options =>
@ -262,10 +263,10 @@ public class BookStoreModule : AbpModule
private void ConfigureAutoApiControllers() private void ConfigureAutoApiControllers()
{ {
Configure<AbpAspNetCoreMvcOptions>(options => //Configure<AbpAspNetCoreMvcOptions>(options =>
{ //{
//options.ConventionalControllers.Create(typeof(BookStoreModule).Assembly); // options.ConventionalControllers.Create(typeof(BookStoreModule).Assembly);
}); //});
} }
private void ConfigureSwagger(IServiceCollection services) private void ConfigureSwagger(IServiceCollection services)
@ -355,7 +356,11 @@ public class BookStoreModule : AbpModule
app.UseDeveloperExceptionPage(); app.UseDeveloperExceptionPage();
} }
app.UseAbpRequestLocalization(optios => optios.SetDefaultCulture("zh-hans")); // 微软内置从三个地方获取本地化:QueryString、Cookie、Header:accept-heade
// 浏览器中文的Culture字符串是zh-CN与Abp的zh-Hans不匹配
// 故而清除此provider
app.UseAbpRequestLocalization(
options => options.RequestCultureProviders.RemoveAll(provider => provider is AcceptLanguageHeaderRequestCultureProvider));
if (!env.IsDevelopment()) if (!env.IsDevelopment())
{ {

19
services/book-store/Controllers/DataAnnotationsLocalizationController.cs

@ -0,0 +1,19 @@
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.AspNetCore.Mvc;
namespace BookStore.Controllers;
// 验证数据模型验证本地化
// 配合AbpMvcDataAnnotationsLocalizationOptions及AbpLocalizationOptions.DefaultResourceType
[Route("api/data-annotation")]
[RemoteService]
public class DataAnnotationsLocalizationController: AbpControllerBase
{
[HttpPost]
public Task<Person> CreateAsync(Person person)
{
return Task.FromResult(person);
}
}

4
services/book-store/Controllers/WrapController.cs

@ -1,4 +1,5 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using System.ComponentModel.DataAnnotations;
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp; using Volo.Abp;
using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.AspNetCore.Mvc;
@ -42,6 +43,9 @@ public class WrapController : AbpControllerBase
public class Person public class Person
{ {
[Required]
[StringLength(100, MinimumLength = 1)]
public string Name { get; set; } public string Name { get; set; }
[Range(0, 150)]
public int Age { get; set; } public int Age { get; set; }
} }
Loading…
Cancel
Save