diff --git a/assets/css/style.css b/assets/css/style.css index 2930d73..2c1988d 100644 --- a/assets/css/style.css +++ b/assets/css/style.css @@ -1,10 +1,12 @@ .d-l10n-translate-template { - display: none; + color: gainsboro; } .d-l10n-translated { text-decoration: underline dotted; - cursor: pointer; +} + +.d-l10n-translated-reference { } .d-l10n-translated-entity-name { @@ -27,11 +29,11 @@ font-style: italic; } -.d-l10n-translated-original:before { +.d-l10n-translated-non-cjk:before { content: ' ' } -.d-l10n-translated-original:after { +.d-l10n-translated-non-cjk:after { content: ' ' } @@ -57,7 +59,6 @@ .d-l10n-control-box-item { display: inline-flex; - margin-right: 1rem; flex-flow: row; align-items: center; } @@ -66,3 +67,13 @@ display: block; margin-right: 0.5rem; } + +.d-l10n-control-box-vertical-divider { + border-left: 1px solid gray; + margin-left: 1rem; + margin-right: 1rem; +} + +.d-l10n-translated-error { + color: red; +} diff --git a/assets/js/work.js b/assets/js/work.js index 6c25689..3e36795 100644 --- a/assets/js/work.js +++ b/assets/js/work.js @@ -68,7 +68,7 @@ function setupControls() { } function processColorBoxes() { - const allColorBoxes = document.querySelectorAll(".d-l10n-color"); + const allColorBoxes = document.querySelectorAll(".d-l10n-color") const knownColors = {} @@ -77,22 +77,22 @@ function processColorBoxes() { const key = colorBox.innerHTML const value = colorBox.getAttribute('data-color') if (value == null || value.length < 1) { - return; + return } knownColors[key] = value - }); + }) // second pass: add a little box with the color allColorBoxes.forEach((colorBox) => { const key = colorBox.innerHTML const value = knownColors[key] if (value == null || value.length < 1) { - return; + return } colorBox.innerHTML = ` ${key}` - }); + }) } function getPreferredTranslation() { @@ -100,7 +100,7 @@ function getPreferredTranslation() { return localStorage.getItem("d-l10n-preferred-translation") || 'writer' } - return 'writer'; + return 'writer' } function changePreferredTranslation(mode) { @@ -116,16 +116,16 @@ function changePreferredTranslation(mode) { function getPreferredAnnotation() { if (localStorage) { - return localStorage.getItem("d-l10n-preferred-annotation") || 'none' + return localStorage.getItem("d-l10n-preferred-annotation") || 'hide' } - return 'none'; + return 'hide' } function changePreferredAnnotation(mode) { // can be 'none', 'parenthesis', 'ruby' - if (mode !== 'none' && mode !== 'parenthesis' && mode !== 'ruby') { - mode = 'none' + if (mode !== 'hide' && mode !== 'parenthesis' && mode !== 'ruby') { + mode = 'hide' } if (localStorage) { @@ -133,8 +133,29 @@ function changePreferredAnnotation(mode) { } } +function processInlineAnnotation(box, processedString) { + const original = box.getAttribute('data-original') + + return `${processedString} (${original}) ` +} + +function processRubyAnnotation(box, processedString) { + const original = box.getAttribute('data-original') + + return `${processedString}` +} + function processTranslationBoxes() { - const boxes = document.querySelectorAll(".d-l10n-translate-template"); + const boxes = document.querySelectorAll(".d-l10n-translate-template") + if (boxes.length < 1) { + // no translation needed, hide the controls + const controlBox = document.querySelector('.d-l10n-control-box') + if (controlBox) { + controlBox.style.display = 'none' + } + + return + } const knownTranslations = {} @@ -152,7 +173,7 @@ function processTranslationBoxes() { const isUntranslatable = box.getAttribute('data-untranslatable') === 'true' if (originalValue == null || originalValue.length < 1) { - return; + return } knownTranslations[key] = { @@ -165,9 +186,10 @@ function processTranslationBoxes() { isManuscript: isManuscript, isUntranslatable: isUntranslatable } - }); + }) const currentPreferredTranslation = getPreferredTranslation() + const currentPreferredAnnotation = getPreferredAnnotation() // remove already generated boxes const generatedBoxes = document.querySelectorAll(".d-l10n-generated") @@ -179,13 +201,15 @@ function processTranslationBoxes() { boxes.forEach((box) => { const key = box.innerHTML const translation = knownTranslations[key] + const isRefernece = box.getAttribute('data-ref') != null if (translation == null) { - return; + box.insertAdjacentHTML('afterend', `Missing translation for: ${key}`) + return } if (translation.isUntranslatable) { - box.innerHTML = `${translation.original}` - return; + box.insertAdjacentHTML('afterend', `${translation.original}`) + return } let preferredTranslation @@ -202,7 +226,7 @@ function processTranslationBoxes() { if (isCjkContext(preferredTranslation)) { preferredTranslation = `${preferredTranslation}` } else { - preferredTranslation = `${preferredTranslation}` + preferredTranslation = `${preferredTranslation}` } } @@ -210,7 +234,7 @@ function processTranslationBoxes() { if (isCjkContext(preferredTranslation)) { preferredTranslation = `${preferredTranslation}` } else { - preferredTranslation = `${preferredTranslation}` + preferredTranslation = `${preferredTranslation}` } } @@ -218,11 +242,21 @@ function processTranslationBoxes() { preferredTranslation = `${preferredTranslation}` } - if (currentPreferredTranslation === 'original') { - box.insertAdjacentHTML('afterend', `${translation.original}`) + if (isRefernece || currentPreferredTranslation === 'original') { + box.insertAdjacentHTML('afterend', `${preferredTranslation}`) } else { + if (currentPreferredAnnotation === 'parenthesis') { + preferredTranslation = processInlineAnnotation(box, preferredTranslation) + } + + if (currentPreferredAnnotation === 'ruby') { + preferredTranslation = processRubyAnnotation(box, preferredTranslation) + } + box.insertAdjacentHTML('afterend', `${preferredTranslation}`) } + + box.style.display = 'none' }) } @@ -230,4 +264,4 @@ window.addEventListener("load", () => { setupControls() processColorBoxes() processTranslationBoxes() -}); +}) diff --git a/shortcode.php b/shortcode.php index bfb87f7..b752eaf 100644 --- a/shortcode.php +++ b/shortcode.php @@ -143,51 +143,54 @@ function d_l10n_color_shortcode($attr = array(), $content = null, $tag = ''): ?s return '' . $content . ''; } -function d_l10n_add_translation_controls($content) { +function d_l10n_add_translation_controls($content): string +{ $controlHtml = <<