【发布时间】:2020-02-04 21:41:45
【问题描述】:
我正在构建并在 Visual Studio 中运行我的 asp.net CORE 站点,并且我会在站点启动后立即加载本地化资源,并设置为默认值,即英语。
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);
}
【问题讨论】:
标签: c# asp.net visual-studio azure asp.net-core