.net core引用abp vnext实现本地化
-
创建一个.net core3.1 web应用程序
- 引用上abp的依赖注入
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }).UseAutofac();public void ConfigureServices(IServiceCollection services) { services.AddApplication<AbpLocalizationDemoModule>(); services.AddControllers(); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.InitializeApplication(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); }[DependsOn( typeof(AbpAutofacModule), typeof(AbpAspNetCoreModule), typeof(LocalizationModule) )] public class AbpLocalizationDemoModule : AbpModule { /// <summary> /// service注入 /// </summary> /// <param name="context"></param> public override void ConfigureServices(ServiceConfigurationContext context) { Console.WriteLine("service注入完成"); } /// <summary> /// 程序初始化 /// </summary> /// <param name="context"></param> public override void OnApplicationInitialization(ApplicationInitializationContext context) { Console.WriteLine("初始化完成"); } } -
添加Localization文件夹及资源文件
-
![]()
-
![]()
-
LocalizationModule
public class LocalizationModule :AbpModule { /// <summary> /// service注入 /// </summary> /// <param name="context"></param> public override void ConfigureServices(ServiceConfigurationContext context) { Configure<AbpVirtualFileSystemOptions>(options => { //资源文件添加到abp虚拟系统 options.FileSets.AddEmbedded<LocalizationModule>("AbpLocalizationDemo"); }); Configure<AbpLocalizationOptions>(options => { //为了资源文件分类写了两个Resource,类的作用是用来标识引用的资源文件来源 options.Resources .Add<TestResource>("en") .AddVirtualJson("/Localization/Resources/TestResource"); options.Resources .Add<ExceptionResource>("en") .AddVirtualJson("/Localization/Resources/ExceptionResource"); options.DefaultResourceType = typeof(TestResource); }); } /// <summary> /// 程序初始化 /// </summary> /// <param name="context"></param> public override void OnApplicationInitialization(ApplicationInitializationContext context) { var app = context.GetApplicationBuilder(); // 配置国际化中间件支持 // abp有默认en=英文 zh=中文等 ,个性化命名ch=中文 这种情况就需要加上中间件 // 作用主要是前端根据header或路由等标识切换应用的本地化资源文件 var supportedCultures = new[] { "en", "zh" }; var localizationOptions = new RequestLocalizationOptions().SetDefaultCulture(supportedCultures[0]) .AddSupportedCultures(supportedCultures) .AddSupportedUICultures(supportedCultures); app.UseRequestLocalization(localizationOptions); } } -
[Route("api/[controller]/[action]")] [ApiController] public class DefaultController : AbpController { //不同Resource获取不同资源文件里的数据 private readonly IStringLocalizer<TestResource> _testlocalizer; private readonly IStringLocalizer<ExceptionResource> _exceptionLocalizer; public DefaultController(IStringLocalizer<TestResource> testlocalizer, IStringLocalizer<ExceptionResource> exceptionLocalizer) { _testlocalizer = testlocalizer; _exceptionLocalizer = exceptionLocalizer; } [HttpGet] public string GetLocalization() { var str = _testlocalizer["HelloWorld"]; System.Console.WriteLine(_testlocalizer["HelloWorld"]); System.Console.WriteLine(_exceptionLocalizer["HelloWorld"]); return str; } } -
使用Header Accept-Language = en或 Accept-Language = zh切换多语言



浙公网安备 33010602011771号