fix(i18n): Code-Quality-Review Korrekturen
- resolveLang() Hilfsfunktion extrahieren (DRY)
- JSDoc-Kommentar in I18n.init() korrigieren
- settings.export.btn Key für Export-Button trennen
- setLanguage('auto') im Reset-Handler aufrufen
This commit is contained in:
+1
-1
@@ -173,7 +173,7 @@
|
|||||||
<span class="setting-label" data-i18n="settings.export">Backup exportieren</span>
|
<span class="setting-label" data-i18n="settings.export">Backup exportieren</span>
|
||||||
<span class="setting-desc" data-i18n="settings.export.desc">Alle Boards, Notes und Einstellungen als JSON sichern</span>
|
<span class="setting-desc" data-i18n="settings.export.desc">Alle Boards, Notes und Einstellungen als JSON sichern</span>
|
||||||
</div>
|
</div>
|
||||||
<button class="btn-small" id="btnExportJSON" data-i18n="settings.export">Export</button>
|
<button class="btn-small" id="btnExportJSON" data-i18n="settings.export.btn">Export</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="setting-row">
|
<div class="setting-row">
|
||||||
<div class="setting-info">
|
<div class="setting-info">
|
||||||
|
|||||||
+18
-11
@@ -224,6 +224,7 @@ const STRINGS = {
|
|||||||
'settings.image_ref.desc': 'Bilder als Referenz anzeigen (nur aktuelle Session)',
|
'settings.image_ref.desc': 'Bilder als Referenz anzeigen (nur aktuelle Session)',
|
||||||
'settings.export': 'Backup exportieren',
|
'settings.export': 'Backup exportieren',
|
||||||
'settings.export.desc': 'Alle Boards, Notes und Einstellungen als JSON sichern',
|
'settings.export.desc': 'Alle Boards, Notes und Einstellungen als JSON sichern',
|
||||||
|
'settings.export.btn': 'Export',
|
||||||
'settings.import': 'Backup importieren',
|
'settings.import': 'Backup importieren',
|
||||||
'settings.import.desc': 'JSON-Backup wiederherstellen',
|
'settings.import.desc': 'JSON-Backup wiederherstellen',
|
||||||
'settings.browser_import': 'Browser-Lesezeichen',
|
'settings.browser_import': 'Browser-Lesezeichen',
|
||||||
@@ -514,6 +515,7 @@ const STRINGS = {
|
|||||||
'settings.image_ref.desc': 'Show images as reference (current session only)',
|
'settings.image_ref.desc': 'Show images as reference (current session only)',
|
||||||
'settings.export': 'Export backup',
|
'settings.export': 'Export backup',
|
||||||
'settings.export.desc': 'Save all boards, notes and settings as JSON',
|
'settings.export.desc': 'Save all boards, notes and settings as JSON',
|
||||||
|
'settings.export.btn': 'Export',
|
||||||
'settings.import': 'Import backup',
|
'settings.import': 'Import backup',
|
||||||
'settings.import.desc': 'Restore a JSON backup',
|
'settings.import.desc': 'Restore a JSON backup',
|
||||||
'settings.browser_import': 'Browser bookmarks',
|
'settings.browser_import': 'Browser bookmarks',
|
||||||
@@ -621,16 +623,24 @@ function applyLanguage() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 'auto' auflösen zu konkretem Sprachcode
|
||||||
|
* @param {string} lang - 'de', 'en' oder 'auto'
|
||||||
|
* @returns {string} 'de' oder 'en'
|
||||||
|
*/
|
||||||
|
function resolveLang(lang) {
|
||||||
|
return (lang === 'auto')
|
||||||
|
? (navigator.language.startsWith('de') ? 'de' : 'en')
|
||||||
|
: lang;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sprache setzen, speichern und DOM aktualisieren
|
* Sprache setzen, speichern und DOM aktualisieren
|
||||||
* @param {string} lang - 'de', 'en' oder 'auto'
|
* @param {string} lang - 'de', 'en' oder 'auto'
|
||||||
*/
|
*/
|
||||||
function setLanguage(lang) {
|
function setLanguage(lang) {
|
||||||
const resolved = (lang === 'auto')
|
currentLang = resolveLang(lang);
|
||||||
? (navigator.language.startsWith('de') ? 'de' : 'en')
|
document.documentElement.lang = currentLang;
|
||||||
: lang;
|
|
||||||
currentLang = resolved;
|
|
||||||
document.documentElement.lang = resolved;
|
|
||||||
applyLanguage();
|
applyLanguage();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -643,17 +653,14 @@ const I18n = {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialisierung: Sprache aus Settings lesen, auflösen, DOM anwenden
|
* Initialisierung: Sprache aus Settings lesen, auflösen, DOM anwenden
|
||||||
* Wird nach applySettings() aufgerufen (settings-Objekt muss bereit sein)
|
* Muss NACH dem Laden des settings-Objekts aufgerufen werden
|
||||||
*/
|
*/
|
||||||
init() {
|
init() {
|
||||||
const lang = (typeof settings !== 'undefined' && settings.language)
|
const lang = (typeof settings !== 'undefined' && settings.language)
|
||||||
? settings.language
|
? settings.language
|
||||||
: 'auto';
|
: 'auto';
|
||||||
const resolved = (lang === 'auto')
|
currentLang = resolveLang(lang);
|
||||||
? (navigator.language.startsWith('de') ? 'de' : 'en')
|
document.documentElement.lang = currentLang;
|
||||||
: lang;
|
|
||||||
currentLang = resolved;
|
|
||||||
document.documentElement.lang = resolved;
|
|
||||||
applyLanguage();
|
applyLanguage();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -235,6 +235,7 @@ function bindSettingsEvents() {
|
|||||||
imageRefEnabled: false, language: 'auto' };
|
imageRefEnabled: false, language: 'auto' };
|
||||||
await saveBoards();
|
await saveBoards();
|
||||||
await saveSettings();
|
await saveSettings();
|
||||||
|
setLanguage('auto');
|
||||||
applySettings();
|
applySettings();
|
||||||
renderBoards();
|
renderBoards();
|
||||||
closeSettings();
|
closeSettings();
|
||||||
|
|||||||
Reference in New Issue
Block a user