Reo*_*oul 14 localization resx asp.net-core-mvc asp.net-core asp.net-core-localization
我一直在努力探讨如何最好地在MVC6中为多种语言实现资源文件,但由于每次发布的更改让我对如何正确实现它们感到困惑.需要什么,约束是什么?
我看过几篇文章:
https://damienbod.com/2015/10/21/asp-net-5-mvc-6-localization/
http://pratikvasani.github.io/archive/2015/12/25/MVC-6-localization-how-to/
我正在尝试设置资源文件,以便我的用户可以使用英语和德语,这可以基于浏览器设置或帐户中的个人设置.
实现这一目标的最佳方式是什么?
提前致谢!
编辑:
因此,根据文章,我已将以下代码添加到Startup.cs:
services.AddLocalization(options =>
options.ResourcesPath = "Resources");
services.AddMvc()
.AddViewLocalization(Microsoft.AspNet.Mvc.Razor.LanguageViewLocationExpanderFormat.Suffix)
.AddDataAnnotationsLocalization();
var supportedCultures = new[]
{
new CultureInfo("de-DE"),
new CultureInfo("en-US")
};
//Set Default Localization Culture
app.UseRequestLocalization(new RequestLocalizationOptions
{
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
}, new RequestCulture(new CultureInfo("en-US")));
Run Code Online (Sandbox Code Playgroud)
然后在Resources文件夹中我创建了带有文件名的新resx文件:
"Views.Shared._LocalizationTest.en-US.resx"
"Views.Shared._LocalizationTest.de-DE.resx"
我的部分观点如下:
@using Microsoft.AspNet.Localization
@using Microsoft.AspNet.Mvc.Localization
@inject IViewLocalizer Localizer
<div>
@Localizer["TestString"]
</div>
Run Code Online (Sandbox Code Playgroud)
我似乎仍然遗漏了一些东西,因为我正在显示"TestString"而不是"Test String"表示英语或"German:Test String"(根据我的资源文件).
有任何想法吗?
ASP.NET Core 默认方法是不在资源文件中包含默认语言字符串,而只是将它们包装在代码中。因此,您可以使用本地化程序中包含的英语字符串编写应用程序,并拥有一个德语资源文件。请参阅我的文章https://learn.microsoft.com/aspnet/core/fundamentals/localization
| 归档时间: |
|
| 查看次数: |
1344 次 |
| 最近记录: |