5.1 KiB
5.1 KiB
| name | description | argument-hint | allowed-tools | user-invocable |
|---|---|---|---|---|
| translation-review | Überprüft Django .po Übersetzungsdateien auf Qualität, Kontext-Passgenauigkeit, Konsistenz und fehlende Übersetzungen. Verbessert Übersetzungen direkt. Für Translation-QA und Review. | [locale] [--dry-run] | Glob, Grep, Read, Edit, Write | true |
Django Translation Review
Überprüft und verbessert Django .po Übersetzungsdateien im league-planner Projekt. Stellt sicher, dass Übersetzungen kontextgerecht, konsistent und vollständig sind.
Argumente
locale(optional): Bestimmte Sprache prüfen, z.B.de,fr,ko. Ohne Angabe → alle Locales.--dry-run(optional): Nur Bericht erstellen, keine Änderungen vornehmen.
Workflow
Phase 1: Discovery
- Finde alle
.poFiles mit Glob:**/locale/*/LC_MESSAGES/django.po - Filtere nach dem angegebenen Locale (falls angegeben)
- Überspringe
locale/common/(das ist ein Referenz-File, kein echtes Locale) - Lies die
.poFiles und erstelle eine Übersicht: Locale, Anzahl Einträge, leere msgstr, fuzzy-Einträge
Phase 2: Kontext-Analyse
Um kontextgerechte Übersetzungen sicherzustellen, lies diese Kontext-Quellen:
scheduler/choices.py— Enthält Sport-spezifische Choice-Tuples mitgettext_lazy. Hier ist der Fachkontext (Sport/Liga-Planung) am klarsten.- Source-Referenzen in .po — Jeder
msgidhat#:Kommentare die zeigen, wo der String verwendet wird. Nutze diese um den Kontext zu verstehen:- Strings aus
templates/→ UI-Labels, Buttons, Überschriften - Strings aus
models.py→ Feld-Labels, verbose_names - Strings aus
choices.py→ Dropdown-/Select-Optionen - Strings aus
views.py→ Nachrichten, Fehlermeldungen - Strings aus
helpers.py→ Solver-/System-Meldungen
- Strings aus
Phase 3: Qualitätsprüfung
Prüfe jede Übersetzung auf diese Kriterien:
Kritisch
- Leere Übersetzungen:
msgstr ""wo eine Übersetzung erwartet wird - Fuzzy-Markierungen:
#, fuzzyEinträge die manuell bestätigt werden müssen - Falsche Platzhalter:
%(name)s,{0},%dmüssen exakt übereinstimmen
Kontext
- Sport-Fachbegriffe: Im Kontext von Liga-Planung die richtigen Begriffe verwenden:
- "Match" → "Spiel" (nicht "Übereinstimmung")
- "Day" (als Spieltag) → "Spieltag" (nicht "Tag")
- "Round" → "Runde" oder "Spieltag" je nach Kontext
- "Home/Away" → "Heim/Auswärts"
- "Fixture" → "Begegnung" oder "Ansetzung"
- "Draw" → "Auslosung" (nicht "Zeichnung")
- "Group" (im Turnier) → "Gruppe"
- "Seed" → "Setzliste"/"gesetzt" (nicht "Samen")
- "Clash" → "Überschneidung" oder "Konflikt"
- "Scenario" → "Szenario"
- "Constraint" → "Nebenbedingung" oder "Einschränkung"
- "Wish" → "Wunsch" (Planungswunsch)
- "Run" (Solver-Run) → "Lauf" oder "Durchlauf"
- "Slot" → "Zeitfenster" oder "Slot"
Konsistenz
- Gleiche Begriffe gleich übersetzen: Wenn "Scenario" einmal "Szenario" ist, muss es überall "Szenario" sein
- Stil-Konsistenz: Formell/Informell einheitlich (Du vs. Sie). league-planner verwendet Du-Form
- Groß-/Kleinschreibung: Deutsche Substantive groß, UI-Labels konsistent
Stil
- Natürliche Sprache: Übersetzungen sollen sich natürlich anfühlen, nicht wie maschinelle Übersetzung
- Kürze: UI-Labels kurz halten, keine unnötigen Wörter
- Aktive Sprache: "Szenario wurde erstellt" statt "Es wurde ein Szenario erstellt"
Phase 4: Änderungen anwenden
Wenn NICHT --dry-run:
- Für jede gefundene Verbesserung, nutze das Edit-Tool um den
msgstrzu aktualisieren - Entferne
#, fuzzyMarkierungen wenn die Übersetzung korrekt bestätigt wurde - Fülle leere
msgstraus, sofern der Kontext eine sichere Übersetzung erlaubt - WICHTIG: Ändere NIEMALS
msgid— nurmsgstrdarf geändert werden - WICHTIG: Erhalte alle
#:Source-Referenz-Kommentare unverändert - WICHTIG: Erhalte Python-Format-Strings exakt (
%(name)s,{0},%detc.)
Phase 5: Zusammenfassung
Gib am Ende eine strukturierte Zusammenfassung:
## Translation Review — [Locale]
### Statistik
- Geprüfte Einträge: X
- Verbesserungen: Y
- Fehlende Übersetzungen (gefüllt): Z
- Fuzzy aufgelöst: W
- Unverändert: V
### Änderungen
| # | msgid | Alt | Neu | Grund |
|---|-------|-----|-----|-------|
| 1 | "..." | "..." | "..." | Kontext/Konsistenz/Stil |
### Offene Punkte
- [Einträge die manuelle Prüfung brauchen]
Wichtige Regeln
- Konservativ sein: Im Zweifel lieber nicht ändern als eine falsche Übersetzung einführen
- Kontext prüfen: Immer die
#:Source-Referenzen lesen bevor eine Übersetzung geändert wird - Format-Strings erhalten:
%(count)d Spielenicht%(anzahl)d Spiele - Plural-Forms beachten:
msgid_plural/msgstr[0]/msgstr[1]korrekt handhaben - Kein Overengineering: Wenn eine Übersetzung gut genug ist, nicht ändern nur um sie "schöner" zu machen
- Locale
en: Englische .po Files haben typischerweise leere msgstr — das ist korrekt, damsgidbereits Englisch ist. Diese NICHT ausfüllen. - Locale
common: Ist ein Referenz-File, nicht bearbeiten