簡體   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