Локализация в приложении .netcore 2.1 MVC с использованием CookieRequestCultureProvider - PullRequest
0 голосов
/ 29 марта 2019

Я создаю приложение .netcore 2.1 MVC.

Мы должны поддерживать несколько языков для пользовательского интерфейса и сообщений, возвращаемых контроллером.

Я перешел по ссылке: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/localization?view=aspnetcore-2.1

В любом браузере, скажем, Chrome, на 2 вкладках я входил в систему с пользователем A и пользователем B. Если пользователь A меняет предпочитаемый язык, его пользовательский интерфейс отображает пользовательский интерфейс на правильном языке. Все хорошо. Теперь, если я обновлю вкладку «Пользователь Б» и обновлю язык интерфейса, для него / нее тоже изменится.

Я использую код ниже:

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. Но это не работает.

Какие еще основные изменения мне нужно сделать, это могут быть startup.cs или где-то еще, чтобы приложения знали, что имя нового cookie не по умолчанию, и поток считывал правильный cookie и загружал информацию о культуре и далее.

1 Ответ

0 голосов
/ 11 апреля 2019

Теперь, если я обновлю вкладку «Пользователь Б» и обновлю язык интерфейса, для него / нее также будет изменен

Это ожидаемое поведение, поскольку браузер не создает cookie для пользователя, вошедшего на сайт.но он создает cookie в браузере для определенного домена (URL сайта).Так что, будь то пользователь A или пользователь B, сменивший язык, cookie будет установлен в браузере для всех пользователей.

Я подумал, что мне следует создать отдельный файл cookie для каждого пользователя, добавив идентификатор пользователя в имени файла cookie.

Вы не можете сделать это, потому что вы можете указать только 1 имя файла cookie настраиваемой культуры для CookieRequestCultureProvider и невозможно поддерживать несколько имен файлов cookie на основе идентификатора пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...