Web 应用程序翻译不适用于所有浏览器

Web application translation not working in all browsers

我有一个支持英语和丹麦语的网络应用程序。用户可以从应用程序的设置中更改语言。语言设置存储在数据库中,分别为英语和丹麦语的“1”或“2”。包含所有必要翻译的文本文件充当字典,如果选择丹麦语,所有单词和短语都会根据该字典进行翻译。
在 IE 中这很完美,但在 Chrome 和 Firefox 等其他浏览器中,只有部分文本被正确翻译,而其余部分则根据浏览器中的语言设置进行翻译。
这是我的控制器函数 (vb.net),它从数据库中获取用户的语言:

Public Function GetCurrentUserLanguageContent() As ActionResult

    Dim language As Integer = sInt(GetSingleValue("SELECT language_id FROM Users WHERE user_id =" & CurrentUser.Userid))

    Dim langCode As String

    If language = 2 Then
        langCode = "da-DK"
    Else
        langCode = "en-GB"
    End If

    Dim languageSet = New With {.LangCode = langCode, .Translations = My.Resources.daDKLang}
    Return languageSet

End Function

我的脚本(JavaScript(技术上打字稿)和jQuery)看起来像这样:

interface langDefinition {
LangCode: string;
Translations: string; 
}

class translatedLang {  
dictionary = new Array<string>();
defaultLangauge = "en-GB";
currentLanguage: string;
isDefaultLanguage: boolean;

constructor() {

    try { 
        var self = this;

        $.ajax({
            url: "...",
            dataType: 'json',
            async: false, 
            cache: false,
            success: function (langDef: langDefinition) {
                self.currentLanguage = langDef.LangCode;
                self.isDefaultLanguage = self.currentLanguage == self.defaultLangauge;
                self.setupDictionary(langDef.Translations); 
                var rnotwhite = /\S/; 
                $('body *').contents().filter(function () {
                    return this.nodeType === 3 && rnotwhite.test($(this).text());
                }).text(function (i, text) {
                        this.replaceWholeText(self.translate(text));
                        //this.nodeValue = text + ' replaced';     // this works, in that it adds 'replaced' to the missing translations
                });
            }
        }); 
    }
    catch (ex) {
        this.isDefaultLanguage = true;
    }
}

private setupDictionary(translations: string): void {
    translations.split(/\r\n/g).forEach((value: string) => {
        var keyValuePair: string[] = value.split(",");
        this.dictionary[keyValuePair[0]] = keyValuePair[1];
    });
}

public translateNewlineString(translationString: string): string {
    return translationString
           .split(/\r\n/g)
           .map((l) => {
                return this.translate(l);
            })
           .join(" ");
}

public translate(translationString: string): string {
    if (this.isDefaultLanguage) {
        return translationString;
    }
    else {
        if (this.dictionary.hasOwnProperty(translationString)) {
            return this.dictionary[translationString];
        }
        else {
            return translationString;
        }
    }
}

}

从 setupDictionary 函数可以看出,字典文件的格式如下:
something in english,something in danish something else in english, something else in danish

请注意,如果我在 AJAX 调用中将 this.replaceWholeText(self.translate(text)); 更改为 this.nodeValue = text + ' replaced';,应翻译的文本将更改为包含 'replaced' - 这意味着它实际上已更改正确的文字...

又一次;这在 IE 中一切正常,但某些浏览器,例如 Chrome,在某些情况下似乎会覆盖我的翻译。
有什么办法可以解决这个问题,还是我需要做一些完全不同的事情?

我自己找到了解决方案;我只需要将 this.replaceWholeText(self.translate(text)); 更改为 this.nodeValue = self.translate(text);,因此 AJAX 调用如下所示:

$.ajax({
        url: "...",
        dataType: 'json',
        async: false, 
        cache: false,
        success: function (langDef: langDefinition) {
            self.currentLanguage = langDef.LangCode;
            self.isDefaultLanguage = self.currentLanguage == self.defaultLangauge;
            self.setupDictionary(langDef.Translations); 
            var rnotwhite = /\S/; 
            $('body *').contents().filter(function () {
                return this.nodeType === 3 && rnotwhite.test($(this).text());
            }).text(function (i, text) {
                this.nodeValue = self.translate(text);
            });
        }
    });