57 lines
3.0 KiB
Markdown
57 lines
3.0 KiB
Markdown
# 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, Datenschutzerklärung und Nutzungsvereinbarung 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 den rechtlichen 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.
|