如何修复Asp.net-mvc网站(使用Culture和.resx文件)无所不在地更改语言?

时间:2019-06-03 17:08:53

标签: c# asp.net-mvc asp.net-core localization resources

我们支持几种语言,在我们的网站属性中存储了不同的语言说明。这里是其中的一些: 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。

有人知道为什么会这样以及如何解决吗?

编辑: 当网站以法语显示时,这是给英语用户的:

{
    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”字符串应显示为“ Add”,而不是“ Ajouter”

0 个答案:

没有答案