繁体   English   中英

使用CookieRequestCultureProvider在.netcore 2.1 MVC应用程序中进行本地化

[英]Localization in .netcore 2.1 MVC application using CookieRequestCultureProvider

我正在创建.netcore 2.1 MVC应用程序。

我们必须支持UI和控制器返回的消息的多种语言。

我按照链接: https//docs.microsoft.com/en-us/aspnet/core/fundamentals/localization?view = aspnetcore-2.1

在任何浏览器上说Chrome,在2个选项卡中我使用用户A和用户B登录。如果用户A更改了他喜欢的语言,他/她的UI会以正确的语言反映UI。 都好。 现在,如果我刷新用户B选项卡并刷新UI语言也会为他/她更改。

我使用下面的代码:

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

        return LocalRedirect(returnUrl);
}

我想我应该为每个用户创建单独的cookie,通过在cookie名称中附加userid来表示。 但这不起作用。

我需要做的更多核心更改可能是startup.cs或其他地方,因此应用程序知道新cookie的名称不是默认值,并且线程读取正确的cookie并加载文化信息。

现在,如果我刷新用户B选项卡并刷新UI语言也会为他/她更改

这是预期的行为,因为浏览器不会为登录到站点的用户创建cookie,但它会在浏览器中为某个域(站点URL)创建cookie。 因此,无论用户A还是用户B更改语言,都将在浏览器中为所有用户设置cookie。

我想我应该为每个用户创建单独的cookie,通过在cookie名称中附加userid来表示

您无法完成此操作,因为您只能为CookieRequestCultureProvider指定1个自定义文化Cookie名称,并且无法根据用户ID支持多个Cookie名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM