Я создаю, затем запускаю свой сайт asp.net CORE в Visual Studio, и я загружаю свои локализованные ресурсы, как только сайт запускается, по умолчанию, т.е. на английском языке.
public void ConfigureServices(IServiceCollection services)
{
services.AddLocalization(options => options.ResourcesPath = "Resources");
services.Configure<RequestLocalizationOptions>(options =>
{
var supportedCultures = new[]
{
new CultureInfo("sv-SE"),
new CultureInfo("en-GB"),
new CultureInfo("fr-FR")
};
// Explicitly state numbers/dates etc.
options.SupportedCultures = supportedCultures;
// Explicitly state UI strings (e.g. localised strings)
options.SupportedUICultures = supportedCultures;
// etc...
services.AddMvc().AddViewLocalization();
});
}
Однако, когда я публикую это в Azure и посещаю сайт, язык по умолчанию не задействован, он дает мне все @SharedLocalizer
имена переменных. Если я затем выберу язык, все будет работать так, как задумано, поэтому у меня останутся два вопроса:
1) При запуске моего сайта в VS как / где он устанавливает культуру по умолчанию?
2) Как я могу заставить свой сайт делать это при публикации через Azure?
У меня есть этот метод в моем контроллере home / index, но он устанавливает язык на основе выбора пользователя - как это происходит автоматически, когда язапускаю его в VS?!
public IActionResult SetLanguage(string culture, string returnUrl)
{
CultureInfo ci = new CultureInfo(culture);
CultureInfo.DefaultThreadCurrentCulture = ci;
CultureInfo.DefaultThreadCurrentUICulture = ci;
return Redirect(returnUrl);
}