构建全球可访问的网站和应用程序需要对内容进行适当的本地化,以吸引来自不同文化和地区的用户。ASP.NET Core 提供强大的本地化支持,以用户首选的语言和格式呈现内容。
在本综合指南中,我们将探索 ASP.NET Core 中的各种国际化和本地化功能,使您能够轻松地针对全球受众调整您的 Web 应用程序。
本地化是使产品或内容适应特定区域或文化的过程。这包括:
本地化使世界各地的用户更容易在其原生文化环境中访问应用程序。
ASP.NET Core 提供用于本地化内容的服务和中间件。关键组件包括:
这些为全球 ASP.NET Core Web 应用提供了端到端本地化系统。
第一步是通过将应用区域性添加到 ConfigureServices 方法来注册应用将支持的区域性:
var supportedCultures = new[]
{
new CultureInfo("en-US"),
new CultureInfo("fr-FR"),
new CultureInfo("es-MX")
};
services.Configure<RequestLocalizationOptions>(options =>
{
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
});
这会列出您的应用可以本地化到的区域性,例如美国英语、法语法国、西班牙语、墨西哥等。
本地化中间件需要确定每个请求的区域性。这可以通过以下方式完成:
我们在 RequestLocalizationOptions 中配置:
options.ApplyCurrentCultureToResponseHeaders = true;
options.DefaultRequestCulture = new RequestCulture("en-US");
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
options.RequestCultureProviders = new[]
{
new RouteDataRequestCultureProvider(),
new CookieRequestCultureProvider()
};
这提供了来自各种来源(如路由、cookie 等)的灵活文化检测。
视图本地化系统使用检测到的区域性来呈现特定于区域性的字符串、格式等。
本地化视图
我们可以通过添加名称后缀(如 About.cshtml、About.fr.cshtml、About.es.cshtml 等)来提供特定于区域性的 Razor 视图版本。中间件将自动将匹配的中间件用于请求区域性。
本地化字符串
资源文件包含每种语言的字符串翻译。它们被命名为资源。{culture}.resx 类似于 resources.en-US.resx。这些是根据区域性自动读取的。
在 Razor 视图中,我们注入 IStringLocalizer 服务以访问已翻译的字符串:
@inject IStringLocalizer<HomePage> L
<h1>@L["WelcomeMessage"]</h1>
资源文件为区域性提供已翻译的字符串。
本地化内容
内置帮助程序,如 DateTime.ToLocalizedString() 格式化日期、数字等,按照区域性约定:
@DateTime.Now.ToLocalizedString()
@10.5.ToLocalizedString(culture: null)
这样可以很容易地本地化视图,而无需更改代码。
ASP.NET 数据注释为模型验证错误消息提供属性。这些可以本地化,如下所示:
[Display(Name = "DateOfBirth", ResourceType = typeof(Resources.HomePage))]
[Required(ErrorMessageResourceName = "RequiredDate",
ErrorMessageResourceType = typeof(Resources.HomePage))]
public DateTime DOB { get; set; }
ResourceType 指向包含特定于区域性的字符串的类。
对于客户端验证,IStringLocalizer 脚本为 jQuery 非干扰式验证生成本地化消息。
ASP.NET Core 还为 Web API 提供请求本地化。Accept-Language 标头可用于确定区域性。
资源可以提供本地化的消息:
[HttpGet("about")]
public IActionResult About()
{
return Ok(SharedResource.AboutText);
}
EF Core 还可以配置为根据请求的区域性本地化数据库内容。
将应用配置为本地化后,测试的重要方面包括:
自动化测试有助于验证本地化在整个应用中的有效性。
要进行有效的本地化,需要注意以下几点:
本地化对于面向全球用户的全球应用程序至关重要。ASP.NET Core 提供了全面的文化惯例和广泛的本地化框架。涵盖的关键概念包括通过路由、Cookie 等检测区域性、呈现本地化的视图和字符串以及本地化的模型验证。内置帮助程序可设置日期、数字和货币的格式。从一开始就规划本地化并使用最佳实践,从而产生全球就绪的应用程序。ASP.NET Core 具有使应用不受语言、地区或文化约束的工具。