Files
yourpart3/docs/BISAYA_SITE_LOCALIZATION_IMPLEMENTATION_SPEC.md
Torsten Schulz (local) c6caeefb5f
All checks were successful
Deploy to production / deploy (push) Successful in 2m47s
feat(bisaya-course): enhance German course content and localization support
- Updated the create-german-for-bisaya-course-content.js script to improve lesson pattern retrieval by introducing a new function for generating a lesson pattern pool.
- Added new exercises for various topics including 'Wohnung & Nachbarn', 'Besuch empfangen', 'Arzt, Apotheke, Termin', and 'Amt, Dokumente, Anmeldung', enhancing practical language skills for learners.
- Improved localization by integrating translation keys for various UI elements and error messages across multiple components, ensuring a consistent user experience in both German and Bisaya.
- Enhanced the main.js file to recognize Bisaya language preferences in browser settings, improving accessibility for users.
2026-03-31 17:40:03 +02:00

521 lines
12 KiB
Markdown

# Bisaya-Lokalisierung der Gesamtwebseite: Umsetzungsdokument
## 1. Ziel
Die gesamte Webseite soll zusätzlich in `Bisaya` verfügbar werden, nicht nur einzelne Sprachkurse.
Das Ziel ist:
- die komplette Produktoberfläche für Bisaya-Nutzer verständlich zu machen
- Hauptnavigation, Formulare, Dialoge, Fehlermeldungen und Lernbereiche konsistent zu übersetzen
- vorhandene i18n-Struktur weiterzuverwenden statt einen Sonderpfad zu bauen
- die Qualität der Übersetzungen hoch zu halten, besonders bei Alltagssprache und sprachdidaktischen Inhalten
Das ist kein reines JSON-Kopieren. Es ist eine Kombination aus:
- technischer i18n-Erweiterung
- Audit von hartcodierten Strings
- kontrollierter Übersetzungsarbeit
- fachlicher QA
## 2. Ist-Stand
Die aktuelle Lokalisierung ist in [frontend/src/i18n/index.js](/mnt/share/torsten/Programs/YourPart3/frontend/src/i18n/index.js) zentral verdrahtet.
Derzeit existieren drei Web-Locales:
- `de`
- `en`
- `es`
Die Struktur ist modulartig aufgebaut:
- `general.json`
- `header.json`
- `navigation.json`
- `home.json`
- `chat.json`
- `settings.json`
- `socialnetwork.json`
- `falukant.json`
- weitere Funktionsbereiche
Die bestehende Struktur ist grundsätzlich gut genug für eine vierte Sprache.
Der Haken ist:
- es gibt weiterhin viele hartcodierte Texte in Vue-Komponenten
- manche Bereiche nutzen bereits sauber `$t(...)`
- andere mischen i18n und direkte Strings
- einige `tr:`-Muster umgehen die normale Komponentensprache
Für Bisaya reicht es deshalb nicht, nur neue Locale-Dateien zu erzeugen.
## 3. Sprachentscheidung
### 3.1 Locale-Code
Empfehlung:
- Web-Locale-Code: `ceb`
Begründung:
- `ceb` ist der etablierte technische Code für Cebuano/Bisaya
- besser anschlussfähig an Standards und spätere Integrationen
- klarer als ein frei erfundener Key wie `bis`
### 3.2 Sichtbarer Sprachname
Empfehlung im UI:
- `Bisaya`
Optional im Admin-/Technik-Kontext:
- `Bisaya (Cebuano)`
### 3.3 Sprachstil
Der Stil darf nicht zu formal oder zu schulbuchartig sein.
Empfohlen:
- alltagsnah
- warm
- direkt verständlich
- kurze Sätze
- neutrale, breit verständliche Bisaya-Formulierungen
Nicht empfohlen:
- künstlich hochsprachliche Formulierungen
- unnötig spanisch geprägte oder regionale Spezialformen, wenn einfachere Alternativen reichen
- gemischtes Englisch-Bisaya ohne klare Regel
## 4. Produktentscheidung
Die Bisaya-Lokalisierung wird als vollwertige vierte Oberfläche behandelt, nicht als Teil des Sprachkurs-Features.
Das heißt:
- Bisaya ist globale UI-Sprache
- dieselbe Sprache kann zusätzlich als Lernsprache in Kursen vorkommen
- Website-Locale und Sprachkursinhalt sind fachlich getrennt
Wichtig:
- `Website-Bisaya` ist Produkt-Lokalisierung
- `Bisaya-Sprachkurs` ist Lerninhalt
Das muss technisch und redaktionell getrennt bleiben.
## 5. Hauptprobleme, die vor der Übersetzung geklärt werden müssen
### 5.1 Hartcodierte Strings
Die größte technische Altlast sind direkte Texte in Komponenten.
Beispiele aus dem aktuellen Frontend:
- Abschnittslabels in Komponenten wie [AppSectionBar.vue](/mnt/share/torsten/Programs/YourPart3/frontend/src/components/AppSectionBar.vue)
- direkte Buttontexte und Statusmeldungen in Views
- Fehlermeldungen, die als deutscher Klartext im Code stehen
- teils auch Titel, Platzhalter und Hilfetexte
Konsequenz:
- vor oder während der Bisaya-Einführung müssen diese Texte systematisch in i18n überführt werden
### 5.2 Fallback-Logik
Aktuell ist `fallbackLocale: 'de'` gesetzt.
Für Bisaya ist das kurzfristig okay, aber fachlich nicht ideal.
Empfehlung:
- während der Einführung: globaler Fallback kann vorerst `de` bleiben
- mittelfristig: für `ceb` bevorzugt auf `en` oder spezifisches Ketten-Fallback umstellen
Zielbild:
```js
fallbackLocale: {
ceb: ['en', 'de'],
default: ['de']
}
```
So landet ein Bisaya-Nutzer bei fehlenden Schlüsseln nicht sofort in Deutsch.
### 5.3 Übersetzungstiefe
Nicht alles muss in einem Schritt übersetzt werden.
Wir brauchen klare Ebenen:
- Shell und Navigation zuerst
- Hauptnutzungspfade danach
- Spezialbereiche später
## 6. Übersetzungsprinzipien
### 6.1 Quelle
Primäre Übersetzungsquelle sollte `de` sein.
Begründung:
- das Produkt wird aktuell stark deutsch geführt
- viele Texte sind fachlich auf Deutsch zuerst gepflegt
- so vermeiden wir doppelte Drift zwischen `de` und `en`
### 6.2 Glossar
Vor dem Massenübersetzen braucht es ein verbindliches Glossar.
Pflichtbegriffe:
- Anmeldung
- Einstellungen
- Freunde
- Nachrichten
- Chat
- Kurs
- Lektion
- Übung
- Wiederholung
- Abschluss
- Senden
- Löschen
- Speichern
- Suche
- Zurück
- Weiter
Zusätzlich fachliche Glossare für:
- Vokabeltrainer
- Falukant
- Socialnetwork
- Moderation
- Erotik-Bereich
### 6.3 Nicht alles wörtlich
Die beste Bisaya-UI ist nicht immer die wörtlichste.
Beispiel:
- kurze, handlungsnahe Buttons sind wichtiger als exakte 1:1-Übertragung
- Hilfetexte dürfen freier formuliert werden, solange der Zweck gleich bleibt
### 6.4 Konsistenzregeln
Es muss pro Begriff genau eine Standardform geben, außer es gibt einen klaren Kontextgrund.
Beispiel:
- `Weiter` nicht an einer Stelle frei übersetzen und an anderer nur halb Englisch lassen
- `Lektion` und `Kurs` nicht ständig unterschiedlich umschreiben
## 7. Rollout-Phasen
## 7.1 Phase A: Technische Basis
Ziel:
- `ceb` als viertes Locale technisch einführen
Umfang:
- neue Locale-Dateien unter `frontend/src/i18n/locales/ceb/`
- Ergänzung in [index.js](/mnt/share/torsten/Programs/YourPart3/frontend/src/i18n/index.js)
- Sprachumschalter auf `ceb` erweitern
- Store- und Default-Sprachlogik prüfen
Ergebnis:
- die App kann Bisaya als UI-Sprache laden
- zunächst mit vielen Fallbacks, aber technisch sauber
## 7.2 Phase B: Shell und globale Oberfläche
Ziel:
- die Seite fühlt sich sofort als Bisaya-Oberfläche an
Umfang:
- `general.json`
- `header.json`
- `navigation.json`
- `message.json`
- `error.json`
Zusätzlich:
- hartcodierte Hauptnavigationen in Komponenten in i18n überführen
Ergebnis:
- Header, Footer, Navigation, Standarddialoge, Basisaktionen und Fehlermeldungen sind in Bisaya
## 7.3 Phase C: Einstiegspfade
Ziel:
- zentrale Nutzungspfade vollständig lokalisieren
Umfang:
- `home.json`
- `register.json`
- `activate.json`
- `passwordReset.json`
- `settings.json`
- allgemeine No-Login-/Login-Flows
Ergebnis:
- neue Nutzer können die Plattform in Bisaya betreten und bedienen
## 7.4 Phase D: Socialnetwork und Sprachlernen
Ziel:
- Hauptanwendungsbereich für Community und Lernen abdecken
Umfang:
- `socialnetwork.json`
- `friends.json`
- Vokabeltrainer-Views
- Sprachkurs-Views
- Such- und Dialogflächen im Social-Bereich
Wichtig:
- Sprachlerntexte im Kurs selbst nicht blind mitsynchronisieren
- UI-Texte ja, Lerninhalte separat prüfen
## 7.5 Phase E: Falukant und Spezialbereiche
Ziel:
- komplexe Produktmodule sauber nachziehen
Umfang:
- `falukant.json`
- `blog.json`
- `chat.json`
- `minigames.json`
- Admin-Bereiche optional später
Hinweis:
- Falukant ist textlich sehr groß und fachlich komplex
- dafür braucht es gesonderte QA
## 8. Technische Umsetzung
### 8.1 Neue Locale-Dateien
Geplante Struktur:
```text
frontend/src/i18n/locales/ceb/
activate.json
admin.json
blog.json
chat.json
error.json
falukant.json
friends.json
general.json
header.json
home.json
message.json
minigames.json
navigation.json
passwordReset.json
personal.json
register.json
settings.json
socialnetwork.json
```
### 8.2 Import in i18n
In [frontend/src/i18n/index.js](/mnt/share/torsten/Programs/YourPart3/frontend/src/i18n/index.js):
- alle `ceb`-Dateien importieren
- vierten `messages.ceb`-Block ergänzen
- Fallback-Regel ggf. modernisieren
### 8.3 Sprachwahl im Store
In [frontend/src/store/index.js](/mnt/share/torsten/Programs/YourPart3/frontend/src/store/index.js):
- `setLanguage` muss `ceb` akzeptieren
- Browser-Spracherkennung bleibt vorerst `de/en`, außer wir wollen `ceb` aktiv auch automatisch setzen
Empfehlung:
- Auto-Default nicht auf `ceb`
- Bisaya bewusst auswählbar machen
### 8.4 UI-Auswahl erweitern
Komponenten wie:
- [SettingsWidget.vue](/mnt/share/torsten/Programs/YourPart3/frontend/src/components/SettingsWidget.vue)
müssen `ceb` als auswählbare Sprache bekommen.
## 9. Audit von Nicht-i18n-Texten
Vor der Vollübersetzung braucht es einen String-Audit.
Kategorien:
1. komplett hartcodierte Texte
2. gemischte Texte mit Teil-i18n
3. technische Fehlermeldungen
4. Admin-/Debugtexte, die bewusst vorerst unübersetzt bleiben dürfen
Besonders kritisch:
- [AppSectionBar.vue](/mnt/share/torsten/Programs/YourPart3/frontend/src/components/AppSectionBar.vue)
- Views mit hero-texten und Buttons
- direkte Dialogtitel
- direkte Success-/Error-Meldungen in JS-Dateien
Empfehlung:
- zuerst Audit-Backlog erzeugen
- dann Bereich für Bereich in i18n ziehen
## 10. Übersetzungsworkflow
### 10.1 Empfohlener Ablauf pro Datei
1. deutsche Quelldatei nehmen
2. Schlüsselstruktur unverändert lassen
3. Bisaya-Datei anlegen
4. problematische Begriffe mit Glossar abgleichen
5. UI-Stichprobe im echten Produkt machen
### 10.2 Qualitätssicherung
Jede größere Datei braucht:
- formale Prüfung: alle Keys vorhanden
- Produktprüfung: Text passt im Layout
- Sprachprüfung: natürliches Bisaya
- Kontextprüfung: Button- und Fehlermeldungstexte klingen im UI sinnvoll
### 10.3 Platzhalter und Variablen
Besondere Aufmerksamkeit für:
- `{count}`
- `{minutes}`
- `{title}`
- `{name}`
- plural-/choice-nahe Muster
Bisaya-Übersetzungen müssen Variablen und Platzhalter exakt beibehalten.
## 11. Inhaltliche Risiken
### 11.1 Falukant
Falukant hat viele produktinterne Begriffe.
Risiko:
- zu direkte Übersetzung zerstört die interne Fachsprache
Empfehlung:
- einige Begriffe bewusst nicht übersetzen
- stattdessen mit konsistenten Lehnformen arbeiten
### 11.2 Sprachkurs-Bereich
Risiko:
- UI wird lokalisiert, Lerninhalt aber versehentlich mitübersetzt, obwohl er als Kursmaterial bestehen bleiben soll
Empfehlung:
- klare Trennung zwischen:
- UI-Text
- Kursinhalt
- Vokabel-/Satzmaterial
### 11.3 Mischnutzung Deutsch/Bisaya
Viele Nutzer könnten Deutsch lernen und gleichzeitig die Website in Bisaya benutzen.
Das ist erlaubt, aber nur wenn:
- UI-Lokalisierung stabil ist
- Kursinhalt nicht durcheinandergerät
## 12. Priorisierte Umsetzung
Empfohlene Reihenfolge:
1. `ceb` technisch einführen
2. Sprachumschalter erweitern
3. `general/header/navigation/message/error`
4. hartcodierte Shell-Texte bereinigen
5. `settings/home/register/passwordReset`
6. `socialnetwork/friends`
7. Vokabeltrainer- und Kurs-UI
8. Chat/Blog/Minigames
9. Falukant
10. Admin-Bereich optional zuletzt
## 13. Definition von "fertig"
Die Bisaya-Weblokalisierung ist erst dann wirklich fertig, wenn:
- `ceb` als Sprache global auswählbar ist
- Hauptnavigation und Standardsystemtexte lokalisiert sind
- zentrale Nutzerflüsse ohne Deutsch funktionieren
- Sprachkurs-UI sauber lokalisiert ist
- Falukant und Spezialmodule zumindest konsistent oder bewusst ausgeklammert sind
- fehlende Keys systematisch kontrolliert werden
## 14. Konkrete nächste technische Phase
Die sinnvolle erste echte Bauphase ist:
### Phase 1
- `frontend/src/i18n/locales/ceb/` anlegen
- `index.js` für `ceb` erweitern
- `SettingsWidget.vue` Sprachwahl erweitern
- `AppSectionBar.vue` und vergleichbare Shell-Komponenten in i18n ziehen
- `general/header/navigation/message/error` auf Bisaya anlegen
Erst danach lohnt es sich, größere Produktbereiche wie Socialnetwork oder Falukant vollständig zu übersetzen.
## 15. Ergebnis
Die Website in Bisaya zu lokalisieren ist machbar und passt gut zur bestehenden Struktur, aber nur, wenn wir es als echtes Produktprojekt behandeln.
Die richtige Reihenfolge ist:
- erst technische Sprachbasis
- dann Shell und Kernpfade
- dann die großen Module
- parallel dazu Audit und Bereinigung harter Strings
So entsteht keine halbfertige vierte Sprache, sondern eine wirklich benutzbare Bisaya-Oberfläche.