Язык ASP .NET Core по умолчанию всегда английский
Я установил локализацию, как описано в блоге Microsoft, но языком по умолчанию всегда является английский. Вот так выглядит мой Startup.cs в отношении локализации.
CultureInfo[] supportedCultures = new[]
{
new CultureInfo("ar"),
new CultureInfo("en")
};
В методе ConfigureServices:
services.Configure<RequestLocalizationOptions>(options =>
{
options.DefaultRequestCulture = new RequestCulture("ar", "ar");
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
});
services.AddLocalization(options =>
{
options.ResourcesPath = "Resources";
});
services.AddMvc()
.AddViewLocalization()
.AddDataAnnotationsLocalization();
В настройке метода:
app.UseRequestLocalization(new RequestLocalizationOptions()
{
DefaultRequestCulture = new RequestCulture("ar"),
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
});
Спасибо:)
1 ответ
Вы устанавливаете "арабский" как DefaultRequestCulture
но DefaultRequestCulture
используется, если ни один из встроенных поставщиков не может определить культуру запроса. Поставщики по умолчанию:
QueryStringRequestCultureProvider
CookieRequestCultureProvider
AcceptLanguageHeaderRequestCultureProvider
Скорее всего, культура определяется из HTTP-заголовка Accept-Language, который отправляет браузер.
Вы должны удалить AcceptLanguageHeaderRequestCultureProvider
для того, чтобы отступить DefaultRequestCulture
, Для этого мы можем перезаписать RequestCultureProviders
список RequestLocalizationOptions
и использовать только двух других провайдеров. В Startup.cs
:
public void ConfigureServices(IServiceCollection services)
{
CultureInfo[] supportedCultures = new[]
{
new CultureInfo("ar"),
new CultureInfo("en")
};
services.Configure<RequestLocalizationOptions>(options =>
{
options.DefaultRequestCulture = new RequestCulture("ar");
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
options.RequestCultureProviders = new List<IRequestCultureProvider>
{
new QueryStringRequestCultureProvider(),
new CookieRequestCultureProvider()
};
});
}
И в Configure
метод просто использовать app.UseRequestLocalization();
до app.UseMvc();
Если вы используете вызов Ajax для установки культуры и ответа клиенту с результатом Json.
Вы должны установить значение cookie, соответствующее ASP.Net, как показано ниже на уровне браузера. в противном случае локализатор не сможет найти правильную культуру со значением cookie.
var date = new Date();
date.setTime(date.getTime() + (30*24*60*60*1000));
expires = "; expires=" + date.toUTCString();
document.cookie = '.AspNetCore.Culture' + "=c=" + (data.message || "ko-KR") + "|uic=" +(data.message || "ko-KR") + expires + "; path=/";
window.location.reload();
Благодарю вас