Как исправить сайт Asp.net-mvc (используя файлы Culture и .resx), меняющий язык из ниоткуда? - PullRequest
2 голосов
/ 03 июня 2019

Мы поддерживаем несколько языков, для которых у нас есть различные значения, хранящиеся в Свойствах нашего сайта. Вот некоторые из них: Resources.es.resx, Resources.fr.resx, Resources.resx (содержит английские переводы).

Иногда (как 3 раза за последний год) наш сайт становится на французском для ВСЕХ наших английских пользователей.

Мы реализовали некоторые записи, чтобы попытаться понять, что происходит. В прошлый раз, когда произошла ошибка, мы заметили, что при попытке получить образец строки из нашего файла Resources.resx, результат был из файла Resources.fr.resx. Это было так для всех наших пользователей.

Вот как мы получили эту строку:

string englishResource = Properties.Resources.ResourceManager.GetString("Add", new CultureInfo("en-ca", useUserOverride: false));

Это как если бы Resources.resx не был найден, а язык по умолчанию равен Resources.fr.resx.

Когда веб-сайт работает нормально, возвращаемая строка всегда находится в Resources.resx, как и ожидалось.

Кто-нибудь знает, почему это происходит и как это исправить?

EDIT: вот что мы получаем для английского пользователя, когда веб-сайт отображается на французском языке:

{
    SessionCulture: “en”,
    UserLanguages: [
        “en-US”,
        “en;q=0.9”,
        “fr;q=0.8",
        “es;q=0.7”,
        “ca;q=0.6",
        “it;q=0.5”
    ],
    LocalizationSystemLanguage: “en”,
    CurrentThreadCulture: “en-CA”,
    CurrentThreadUICulture: “en-CA”,
    EnglishResource: “Ajouter”,
    FrenchResource: “Ajouter”,
    SpanishResource: “Agregar”
}

строка "EnglishResource" должна читать "Добавить" вместо "Ajouter"

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