在 Asp.Net Core Angular SPA 中实现本地化可以通过以下步骤进行:
services.AddLocalization(options => options.ResourcesPath = "Resources");
services.AddMvc()
.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
.AddDataAnnotationsLocalization();
添加本地化资源文件: 在项目根目录下创建一个名为 Resources 的文件夹,并在其中添加一个名为 Resources.resx 的资源文件用于默认语言。然后根据需要添加其他语言的资源文件,例如 Resources.fr.resx(法语)、Resources.de.resx(德语)等。
配置支持的语言: 在 Startup.cs 文件的 Configure 方法中添加以下代码来配置支持的语言:
var supportedCultures = new[]
{
new CultureInfo("en-US"),
new CultureInfo("fr-FR"),
new CultureInfo("de-DE")
};
app.UseRequestLocalization(new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture("en-US"),
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
});
Welcome to my App!
This is a localized message.
然后,在项目根目录下运行以下命令来提取需要本地化的文本:
ng xi18n --output-path src/locale
这将生成一个名为 messages.xlf 的文件,其中包含需要本地化的文本。
private readonly IStringLocalizer _localizer;
public MyController(IStringLocalizer localizer)
{
_localizer = localizer;
}
public IActionResult Index()
{
ViewData["WelcomeHeader"] = _localizer["@@welcomeHeader"];
ViewData["WelcomeMessage"] = _localizer["@@welcomeMessage"];
return View();
}
这样就可以在视图中通过 ViewData["WelcomeHeader"] 和 ViewData["WelcomeMessage"] 来获取本地化的文本。
这是一个简单的示例,你可以根据自己的需求进一步扩展和定制本地化功能。
上一篇:ASP.Net Core 2.1 Web Api 2 和 Active Directory 凭据
下一篇:ASP.NET Core Angular Template - 组件样式在 ng build --prod 后不会被应用