【发布时间】:2018-02-11 00:21:41
【问题描述】:
我有以下几点:
public void ConfigureServices(IServiceCollection services)
{
...
services.AddLocalization(o => { o.ResourcesPath = "Resources"; });
services.AddMvc(options =>{})
.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
.AddDataAnnotationsLocalization();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
IList<CultureInfo> supportedCultures = new List<CultureInfo>
{
new CultureInfo("en"),
new CultureInfo("ko"),
};
app.UseRequestLocalization(new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture("en"),
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
});
......
}
我有一个Index.cshtml,其中包含以下内容(位于/Views/Home/ 内)。
@using Microsoft.AspNetCore.Mvc.Localization
@inject IViewLocalizer Localizer
......
<h2>@Localizer["QuickLinksTitle"].Value</h2>
我有 2 个 .resx 文件,Index.en.resx 和 Index.ko.resx 在 /Resources/Views/Home 内
但是视图总是显示QuickLinksTitle而不是.resx文件中的值。
.resx 都有键 QuickLinksTitle 和相应的文本值,但它似乎从不从任何资源文件中读取任何内容。
我已验证我的浏览器确实发送了正确的语言Accept-Language: ko,en-US;q=0.9,en;q=0.8
我的假设是,如果我给出@Localizer['Key'],它应该是读取该键的值,而不是实际的键。
我知道 MS 希望我们做 @Localizer["Some text in default lang"],然后它有非默认语言的密钥,但我更喜欢有一个 .resx 用于默认语言(英语),一个用于其他语言。但现在我什至还没有从.resx 文件中读取数据。
【问题讨论】:
标签: c# asp.net-mvc asp.net-core localization .net-core