3.0 KiB
Texte und Sprachen
Die Sprachdateien public/js/texts-de.js und public/js/texts-en.js enthalten
jeweils die generische Klasse WegwichtelTexts. Beide Dateien verwenden dieselben
Schlüssel und registrieren ihren Katalog mit der eigenen Sprachkennung in
Wegwichtel.TextCatalogs. Es gibt keine sprachabhängigen Klassennamen.
Die App lädt beide Kataloge vor i18n.js. Beim Start wird die erste unterstützte
Sprache aus navigator.languages gewählt; ohne diese Liste wird
navigator.language verwendet. Regionale Varianten wie en-GB oder de-DE
verwenden den passenden Grundkatalog. Passt keine Sprache, wird der erste
geladene Katalog verwendet: in der App Deutsch. Einzelne fehlende Übersetzungen
fallen ebenfalls auf diesen Katalog zurück. Wird nur eine Sprachdatei eingebunden,
funktioniert sie allein und bildet den Fallback.
Verwendung
Schlüssel beschreiben die Funktion, nicht den Wortlaut. Zusammengehörige Texte liegen in verschachtelten Abschnitten; der Aufruf verwendet Punkte als Trennung.
Wegwichtel.I18n.t('app.no-route');
Wegwichtel.I18n.t('bootstrap-loader.error.start-error');
Wegwichtel.I18n.t(`bootstrap-loader.steps.${step}`);
Wegwichtel.I18n.t('media.image.count', { count: 2 });
bootstrap-loader.steps ist nach den stabilen Schrittkennungen aufgebaut:
storage, jquery, jquery-ui, modules, server, routes und location.
Die Zuordnung benötigt keine zusätzliche Liste von Nachrichtenschlüsseln.
HTML verwendet data-i18n, data-i18n-title, data-i18n-aria-label,
data-i18n-placeholder und data-i18n-alt. Deutsche Standardtexte werden mit
node scripts/localize-html.js aus dem Katalog ins HTML übernommen. Dadurch
stehen Beschriftungen bereits vor dem Laden der Skripte bereit. Nach Änderungen
die erzeugte public/index.html mit ins Repository übernehmen.
Impressum und Datenschutzerklärung sind davon ausgenommen. Ihre rechtlichen
Texte und Kontaktangaben stehen ausschließlich statisch auf Deutsch in
public/index.html, ohne i18n-Attribute und mit lang="de" an beiden Artikeln.
Änderungen an diesen Angaben direkt im HTML vornehmen. Auch die zugehörigen
Dialogüberschriften bleiben auf Deutsch. Die Menüeinträge und die übrige
Bedienoberfläche werden weiterhin übersetzt.
Zum gezielten Prüfen kann Wegwichtel.I18n.setLanguage('en') aufgerufen werden.
Das aktualisiert feste Beschriftungen. Bereits aufgebaute dynamische Ansichten
müssen neu aufgebaut werden; die automatische Startauswahl erfolgt vor ihrem
ersten Aufbau. Ein sichtbarer Sprachschalter ist nicht enthalten.
Die Tests prüfen beide Kataloge, Platzhalter und Pluralformen, Browserpräferenzen, den Betrieb mit nur einer Sprachdatei, deutsche HTML-Standardtexte und englische App-Meldungen. Nutzerinhalte wie Streckennamen werden nicht übersetzt.
SonarQube prüft auch die Sprachdateien auf Probleme und Testabdeckung. Nur die
Duplikaterkennung nimmt public/js/texts-*.js aus: Übersetzungskataloge müssen
dieselbe Struktur haben und sind keine mehrfach implementierte Programmlogik.