All checks were successful
Deploy to production / deploy (push) Successful in 2m47s
- 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.
521 lines
12 KiB
Markdown
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.
|