首页 > 解决方案 > .NET Core 本地化全球化

问题描述

有人可以为我确认此代码是否会更改应用程序所有用户的文化,还是仅更改当前用户的文化?

var cultureInfo = new CultureInfo("en-US");
CultureInfo.DefaultThreadCurrentCulture = cultureInfo;
CultureInfo.DefaultThreadCurrentUICulture = cultureInfo;

我想显示一个包含应用程序接受的不同文化的组合,并在我在组合中选择它时更改文化,但是如果我在其中打开应用程序,例如当我更改为 Chrome 和 Firefox 时,似乎文化其他的变化,这很可怕。

标签: .net-corelocalizationglobalization

解决方案


你可以使用下面的代码

启动.ConfigureServices

CultureInfo[] supportedCultures = new[]
       {
        new CultureInfo("ar"),
        new CultureInfo("fa"),
        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()
            };

    });

启动.配置

app.UseRequestLocalization();

改变语言:

[HttpPost]
public IActionResult SetLanguage(string culture, string returnUrl)
{
    Response.Cookies.Append(
        CookieRequestCultureProvider.DefaultCookieName,
        CookieRequestCultureProvider.MakeCookieValue(new     RequestCulture(culture)),
    new CookieOptions { Expires = DateTimeOffset.UtcNow.AddYears(1) }
    );

    return LocalRedirect(returnUrl);
}

更多详情:这里


推荐阅读