All checks were successful
Deploy to production / deploy (push) Successful in 2m48s
- Introduced French as a supported language across the application, updating locale files and adding translations for various components. - Enhanced language handling logic to accommodate French, ensuring proper detection and fallback mechanisms. - Updated UI elements to include French language options, improving accessibility for French-speaking users. - Refactored SEO handling to include French in hreflang links, enhancing search engine indexing for multilingual content. - Added new scripts for managing French translations and ensuring consistency across language files.
5.6 KiB
5.6 KiB
Konzept: Französisch (fr) als Bedien-/UI-Sprache
Stand: April 2026
Bezug: Bestehende Locales de, en, es, ceb (Vue I18n, Store, SEO, Header).
1. Ziel
- Nutzer können die Oberfläche auf Französisch stellen (Endonym: Français).
- Vollständige Key-Parität mit der deutschen Referenz (
de), analog zu Spanisch (es): keine stillen Lücken, die nur über Fallback sichtbar werden. - Locale-Code:
fr(BCP 47). Regionale Varianten (fr-CA,fr-CH) nur bei Bedarf später; vorerst eine gemeinsamefr-UI.
2. Inhaltliche Leitplanken
| Thema | Empfehlung |
|---|---|
| Anrede | Einheitlich festlegen: „vous“ (formell) oder „tu“ (duzt); für eine Community-Plattform oft vous bei Systemtexten, ggf. Ausnahmen in Spieldialogen abstimmen. Umsetzung: Die erste französische UI-Version wurde maschinell aus dem Deutschen erzeugt (google-translate-api-x); menschliche Nachbearbeitung sollte vous durchgängig prüfen (v. a. Social/Vocab/Falukant). |
| Referenz für Keys | de als maßgebliche Struktur; Übersetzung nach Französisch. |
| Qualität | Große Module (Falukant, Admin, Social/Vocab) iterativ oder durch TMS/Übersetzer; CI-Check auf Key-Parität de ↔ fr. |
3. Technische Umsetzung (Frontend)
3.1 Neue Übersetzungsdateien
- Ordner:
frontend/src/i18n/locales/fr/ - Dieselben 19 JSON-Dateien wie unter
en/de/es/ceb(z. B.general.json,header.json, …seo.json).
3.2 I18n-Bundling
- Datei:
frontend/src/i18n/index.js- Alle
fr*importieren. - Block
messages.fr = { ...frGeneral, …, ...frSeo }analog zues. fallbackLocale: gesetzt alsfr: ['de'](Lücken fallen auf Deutsch zurück).
- Alle
cebnutztdeepMergeüberen+ceb;frwiees: nurfr-Bundles, kein deepMerge nötig.
3.3 Zentrale Liste unterstützter UI-Locales
Aktuell mehrfach dieselbe Liste (de, en, ceb, es), u. a. in:
frontend/src/store/index.jsfrontend/src/main.js(?lang=, localStorage)frontend/src/components/AppHeader.vuefrontend/src/components/SettingsWidget.vuefrontend/src/utils/seo.js
Empfehlung: Eine exportierte Konstante z. B. frontend/src/i18n/supportedLocales.js (SUPPORTED_UI_LOCALES, ggf. SEO_UI_LOCALES daraus ableiten oder gemeinsam pflegen) und alle Stellen darauf umstellen – vor oder beim Einführen von fr, damit keine Stelle vergessen wird.
3.4 Sprachauswahl UI
AppHeader.vue: Option{ value: 'fr', nativeLabel: 'Français' };supportedaus Zentralmodul.SettingsWidget.vue: Nach Speichern der Profil-Sprache Store synchron halten;languagesListaktuell unvollständig vs. Header – alle UI-Sprachen (de,en,ceb,es,fr) konsistent anbieten oder vollständig aus API-setting.optionsspeisen.
3.5 Register / Einstellungen (JSON)
- In
settings.personal.language(und falls nötigregister.languages) in allen relevanten Locales den Eintragfr/ „Français“ ergänzen.
3.6 SEO & Einstieg per URL
frontend/src/utils/seo.js:frin die Locale-Liste aufnehmen;hreflangfürfr;og:locale/ Alternates wie bei bestehenden Sprachen.main.js: Query?lang=früber zentrale erlaubte Locales freischalten.index.html: falls hreflang/noscript manuell gepflegt wird –frergänzen.
3.7 Browser-Sprache (optional)
- In
store/main.js: Wennnavigator.languagemitfrbeginnt (z. B.fr,fr-FR,fr-BE,fr-CH), Standard-UI auffrsetzen – analog zu bestehender Logik für Deutsch und Bisaya.
4. Backend
- Falls die Account-Sprache serverseitig validiert oder als feste Optionsliste ausgeliefert wird:
frzur Whitelist / zu den Optionen hinzufügen. - Vocab-Sprachen in der Datenbank (Kurse, Zielsprachen) sind unabhängig von der UI-Locale; keine Pflichtänderung für reines UI-Französisch.
5. Qualitätssicherung & Abnahme
- Skript: flache Key-Parität
devs.frpro JSON-Datei (wie bereits füresgenutzt). npm run buildohne Fehler.- Manuell:
?lang=fr, Wechsel im Header ohne vollständigen Reload, Smoke über Login, Einstellungen, eine Social-/Falukant-Ansicht.
6. Definition of Done (Checkliste)
frontend/src/i18n/locales/fr/*.jsonvollständig (Key-Parität zude)i18n/index.js:freingebunden,fallbackLocalefürfrgesetzt (['de'])- Zentrale
SUPPORTED_UI_LOCALESinfrontend/src/i18n/supportedLocales.js; Store,main.js, Header, Settings-Widget,seo.jsimportieren daraus AppHeader,main.js,store,seo.js,RegisterDialogumfr/ Browser-Erkennungfr*erweitertsettings/registerJSON: Sprachefr(und Register umeswo gefehlt) ergänztSettingsWidget:languagesListüber alle UI-Sprachen ausSUPPORTED_UI_LOCALES- Backend:
initializeTypes+authService+ Migrationtype.user_param_valuefürfr - SEO/hreflang/
?lang=fr+index.htmlAlternate + noscriptlang="fr" - QA:
npm run i18n:check-parity(de↔fr),npm run build - Anrede / MT-Hinweis in Abschnitt 2 (Tabelle) und Skript
frontend/scripts/generate-fr-locale-from-de.mjsfür Regenerierung
7. Nächste Schritte (optional als Tickets)
- Infra:
supportedLocales.js+frin allen technischen Stellen + leere/kopiertefr-JSONs ausdeals Stub. - SEO: hreflang,
seo.jsonfr,main.js/index.html. - Übersetzung: modulweise (Core → Social → Falukant → Admin).
- QA & CI: Key-Check im Workflow.
Ende des Konzepts.