sorted markdown and added favicon
Sonarqube Scanner / Prepare environment (push) Successful in 13s
Sonarqube Scanner / Build and test (push) Successful in 33s
Sonarqube Scanner / SonarQube analysis (push) Successful in 1m38s
Sonarqube Scanner / Deploy to Server (push) Successful in 7s

This commit is contained in:
Florian Zumpe
2026-10-04 09:06:48 +02:00
parent 497b7b8050
commit 74090723c4
22 changed files with 1133 additions and 5 deletions
+56
View File
@@ -0,0 +1,56 @@
# 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.
```js
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.