2025-07-02 14:16:25 +02:00
|
|
|
function localizeHtmlPage() {
|
|
|
|
const i18nRegex = /__MSG_(\w+)__/g;
|
|
|
|
|
|
|
|
function replaceMsg(match, p1) {
|
|
|
|
try {
|
|
|
|
return p1 ? chrome.i18n.getMessage(p1) : match;
|
|
|
|
} catch (e) {
|
2025-07-04 09:36:40 +02:00
|
|
|
console.warn(`Could not find message for: ${p1}`);
|
2025-07-02 14:16:25 +02:00
|
|
|
return match;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
const walker = document.createTreeWalker(
|
|
|
|
document.documentElement,
|
|
|
|
NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT,
|
|
|
|
null,
|
|
|
|
false
|
|
|
|
);
|
|
|
|
|
|
|
|
let node;
|
|
|
|
while (node = walker.nextNode()) {
|
|
|
|
if (node.nodeType === Node.ELEMENT_NODE) {
|
|
|
|
for (const attr of node.attributes) {
|
|
|
|
if (i18nRegex.test(attr.value)) {
|
|
|
|
attr.value = attr.value.replace(i18nRegex, replaceMsg);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else if (node.nodeType === Node.TEXT_NODE) {
|
|
|
|
if (i18nRegex.test(node.nodeValue)) {
|
|
|
|
node.nodeValue = node.nodeValue.replace(i18nRegex, replaceMsg);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
document.documentElement.lang = chrome.i18n.getUILanguage().split('-')[0];
|
|
|
|
document.title = document.title.replace(i18nRegex, replaceMsg);
|
|
|
|
}
|
|
|
|
|
|
|
|
document.addEventListener('DOMContentLoaded', localizeHtmlPage);
|