温馨提示×

ASP.NET Core中如何实现全球化和本地化

小亿
113
2024-05-09 17:12:54
栏目: 编程语言

在ASP.NET Core中,全球化和本地化可以通过以下方式来实现:

  1. 在Startup.cs文件中配置支持全球化和本地化的中间件:
public void ConfigureServices(IServiceCollection services)
{
    services.AddLocalization(options => options.ResourcesPath = "Resources");
    
    services.AddMvc()
        .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
        .AddDataAnnotationsLocalization();
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    var supportedCultures = new[]
    {
        new CultureInfo("en-US"),
        new CultureInfo("zh-CN")
    };

    app.UseRequestLocalization(new RequestLocalizationOptions
    {
        DefaultRequestCulture = new RequestCulture("en-US"),
        SupportedCultures = supportedCultures,
        SupportedUICultures = supportedCultures
    });

    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");
    });
}
  1. 在Views文件夹中创建对应的资源文件,用于存放各种语言的本地化字符串。如在Resources文件夹中创建对应的资源文件:Home.en-US.resx和Home.zh-CN.resx。

  2. 在Controller中使用IStringLocalizer来获取本地化字符串:

private readonly IStringLocalizer<HomeController> _localizer;

public HomeController(IStringLocalizer<HomeController> localizer)
{
    _localizer = localizer;
}

public IActionResult Index()
{
    ViewData["Message"] = _localizer["Hello World!"];

    return View();
}

通过以上方式,在ASP.NET Core中实现全球化和本地化功能。当用户访问网站时,根据其浏览器的语言偏好设置,系统会自动选择对应的本地化字符串进行显示。

0