refactor: update translation logic to append original values

This commit is contained in:
EduarteXD
2025-05-04 18:21:59 +08:00
parent 0e585d5574
commit 3c5d7f0797
2 changed files with 16 additions and 5 deletions

19
core.js
View File

@ -64,7 +64,8 @@ async function allTranslate() {
// 只有当文本发生变化时才保存原始文本 // 只有当文本发生变化时才保存原始文本
if (originalText !== translatedText) { if (originalText !== translatedText) {
parentNode.setAttribute('data-original-value', originalText); const originalValue = parentNode.getAttribute('data-original-value') || "";
parentNode.setAttribute('data-original-value', originalValue + originalText);
node.nodeValue = translatedText; node.nodeValue = translatedText;
} }
} else { } else {
@ -134,6 +135,7 @@ function traverseElement(el) {
function translateElement(el, parentNode) { function translateElement(el, parentNode) {
// Get the text field name // Get the text field name
let k; let k;
let translatedText;
if (el.tagName === "INPUT") { if (el.tagName === "INPUT") {
if (el.type === 'button' || el.type === 'submit') { if (el.type === 'button' || el.type === 'submit') {
k = 'value'; k = 'value';
@ -141,12 +143,21 @@ function translateElement(el, parentNode) {
k = 'placeholder'; k = 'placeholder';
} }
el.setAttribute('data-original-value', el[k]); translatedText = GetSCLocalizationTranslateString(el[k]);
if (el[k] === translatedText) return;
const originalValue = parentNode.getAttribute('data-original-value') || "";
el.setAttribute('data-original-value', originalValue + el[k]);
} else { } else {
k = 'data'; k = 'data';
parentNode.setAttribute('data-original-value', el[k]);
translatedText = GetSCLocalizationTranslateString(el[k]);
if (el[k] === translatedText) return;
const originalValue = parentNode.getAttribute('data-original-value') || "";
parentNode.setAttribute('data-original-value', originalValue + el[k]);
} }
el[k] = GetSCLocalizationTranslateString(el[k]); el[k] = translatedText;
} }
function translateRelativeTimeEl(el) { function translateRelativeTimeEl(el) {

File diff suppressed because one or more lines are too long