PageSourceSearch

https://marianne.com/wp-content/plugins/divi-translate-main/js/translator.js?v=1.6&ver=7.1.1

js marianne.com collected 2026-09-24 20:30:57 UTC 8,792 bytes, 180 lines download raw bytes

1var mainLanguage = ditrData.mainLanguage || 'en'
2var defaultLanguage = ditrData.defaultLanguage || 'en'
3var custom_strings = ditrData.custom_strings || []
4var auto_translate_to = ditrData.auto_translate_to || null
5var selectedLanguages = ditrData.selectedLanguages || []
6var blacklist = ditrData.blacklist || []
7var autoDetect = ditrData.autoDetect || false
8var autoTranslateAll = ditrData.autoTranslateAll || false
9
10jQuery($ => {
11    if ($("#wp-admin-bar-et-disable-visual-builder").length == 0 && $("#poststuff #post-body #post-body-content #titlediv input#title").length == 0) {//disable on builder
12        $("body").append(`<div id="ditr_translate_element" class="skiptranslate"></div>`);
13        if (ditrData.translate_title == '0') {
14            $("title").addClass('notranslate')
15        }
16        $("#wpadminbar,.et-pb-icon").addClass('skiptranslate');
17        $("[data-text_orientation]").each(function () {
18            let text_orientation = $(this).data('text_orientation')
19            if (text_orientation) {
20                $(this).parent().parent().css('text-align', text_orientation)
21            }
22        });
23        $(".ditr-switch-language").change(function () {
24            let lang = $(this).val().replace('-uk', '');
25            switchLanguage(lang)
26        });
27        $(".ditr-abbr-lang-switcher,.ditr-flag-lang-switcher").click(function () {
28            let lang = $(this).data('lang').replace('-uk', '');
29            switchLanguage(lang, $(this).data('link'))
30        });
31        setTimeout(function () {
32            if (auto_translate_to) {
33                switchLanguage(auto_translate_to)
34            } else {
35                let selected = $(".goog-te-combo").val();
36                let lang = selected ? selected.split('-')[0] : mainLanguage
37                if (!selected && autoDetect) {
38                    let browserLangauge = navigator.language.split('-')[0]
39                    if (selectedLanguages[browserLangauge] || autoTranslateAll) {
40                        lang = browserLangauge
41                    }
42                }
43                setUiLanguage(lang);
44                setCustomStrings(lang)
45            }
46        }, 2000);
47        jQuery.expr[':'].icontains = function (a, i, m) {
48            return jQuery(a).text().toUpperCase()
49                .indexOf(m[3].toUpperCase()) >= 0;
50        };
51        $('a[href^="mailto:"]').addClass("skiptranslate")
52        if (blacklist) {
53            for (let blacklistString of blacklist) {
54                let textToFind = blacklistString.string.replace("'", '’')
55                let caseSensitive = blacklistString.is_case_sensitive;
56                if (textToFind) {
57                    let searchBy = caseSensitive ? 'contains' : 'icontains'
58                    $(`body :${searchBy}('${textToFind}')`).each(function () {
59                        let tagName = $(this).prop("tagName").toLowerCase()
60                        if (tagName != 'script' && tagName != 'style' && $(this).children().length == 0 && $(this).parents('script').length == 0) {
61                            if ($(this).text().toLowerCase() == textToFind.toLowerCase()) {
62                                $(this).addClass("skiptranslate")
63                            } else {
64                                let replace = new RegExp(`\b(${textToFind})\b`, 'g' + (caseSensitive ? '' : 'i'));
65                                // $(this).html($(this).text().replace(replace, `<span class="skiptranslate">${replace}</span>`))
66                                $(this).html($(this).text().replace(replace, `<span class="skiptranslate"> ${textToFind} </span>`))
67                            }
68                        }
69                    });
70                }
71            }
72        }
73        // console.log(custom_strings)
74        if (custom_strings) {
75            // jQuery.expr[':'].icontains = function (a, i, m) {
76            //     return jQuery(a).text().toUpperCase()
77            //         .indexOf(m[3].toUpperCase()) >= 0;
78            // };
79            for (let index in custom_strings) {
80                let customString = custom_strings[index]
81                let textToFind = customString.original
82                // alert(textToFind)
83                let caseSensitive = customString.is_case_sensitive;
84                if (textToFind) {
85                    let searchBy = caseSensitive ? 'contains' : 'icontains'
86                    $(`body :${searchBy}('${textToFind}')`).each(function () {
87                        let tagName = $(this).prop("tagName").toLowerCase()
88                        if (['style', 'script'].indexOf(tagName) >= 0) return;
89                        // if (tagName == 'script') return;
90                        if ($(this).parents('script').length) return;
91                        let foundInText = false;
92                        for (let content of $(this).contents()) {
93                            if (content.nodeName == '#text' && content.data.toLowerCase().indexOf(textToFind.toLowerCase()) >= 0) {
94                                foundInText = true
95                            }
96                        }
97                        if ($(this).children().length == 0 || foundInText) {
98                            if ($(this).text().toLowerCase() == textToFind.toLowerCase()) {
99                                $(this).addClass("skiptranslate").attr("data-custom-string-index", index)
100                            } else {
101                                // let replace = new RegExp(`(${textToFind})`, 'g' + (caseSensitive ? '' : 'i'));
102                                let replace = new RegExp(`\b(${textToFind})\b`, 'g' + (caseSensitive ? '' : 'i'));
103                                $(this).html($(this).html().replace(replace, `<span data-custom-string-index="${index}" class="skiptranslate"> ${textToFind} </span>`))
104                            }
105                        }
106                    });
107                }
108                $(`input[type="submit"][value="${textToFind}"]`).attr("data-custom-string-index", index).parent().addClass("skiptranslate")
109            }
110        }
111
112        function setUiLanguage(lang) {
113            $(".ditr-abbr-lang-switcher").removeClass("active")
114            $(".ditr-flag-lang-switcher").removeClass("active")
115            $(`.ditr-abbr-lang-switcher[data-lang=${lang}]`).addClass("active")
116            $(`.ditr-flag-lang-switcher[data-lang=${lang}]`).addClass("active")
117            if ($(`.ditr-switch-language option[value=${lang}]`).length) {
118                $(".ditr-switch-language").val(lang);
119            }
120        }
121
122        function setCustomStrings(lang) {
123            $('[data-custom-string-index]').each(function () {
124                let index = $(this).attr("data-custom-string-index")
125                if (custom_strings[index] && custom_strings[index].original) {
126                    let translated = custom_strings[index].original
127                    let translatedStrings = custom_strings[index].translated;
128                    if (translatedStrings[lang]) {
129                        translated = translatedStrings[lang]
130                    } else if (translatedStrings[`${lang}-uk`]) {
131                        translated = translatedStrings[`${lang}-uk`]
132                    }
133                    if ($(this).attr("type") == 'submit' && $(this).prop("tagName") == 'INPUT') {
134                        $(this).val(translated);
135                    } else {
136                        if ($(this).prop("tagName") == 'SPAN') {
137                            translated = ` ${translated} `
138                        }
139                        $(this).text(translated);
140                    }
141                }
142            });
143        }
144
145        function switchLanguage(lang, link) {
146            setUiLanguage(lang)
147            setCustomStrings(lang)
148            let currentLang = $("select.goog-te-combo").val()
149            if (currentLang == lang) { //new language is same as before
150                return;
151            }
152
153            if ($(`.goog-te-combo option[value=${lang}]`).length == 0) {
154                return
155            }
156
157            $("select.goog-te-combo").val(lang)
158            triggerHtmlEvent($("select.goog-te-combo")[0], 'change');
159            triggerHtmlEvent($("select.goog-te-combo")[0], 'change');
160            if (link) {
161                setTimeout(() => {
162                    location = link
163                }, 1000)
164            }
165        }
166    }
167})
168
169function triggerHtmlEvent(element, eventName) {
170    var event;
171    event = document.createEvent('HTMLEvents');
172    event.initEvent(eventName, true, true);
173    element.dispatchEvent(event);
174}
175
176function ditrTranslateElementInit() {
177    setTimeout(function () {
178        new google.translate.TranslateElement({pageLanguage: mainLanguage, autoDisplay: false}, 'ditr_translate_element');
179    }, 1000);
180}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.