Lokalisierung
4Notice erscheint in sieben Sprachen: en, de, fr, es, it, ja, zh-Hans. Der ganze Schritt war ein Ticket und ein Commit („Localize the UI into seven languages”) — weil die Vorarbeit ihn mechanisch gemacht hat.
1. Ein Katalog, keine hartkodierten Strings
Abschnitt betitelt „1. Ein Katalog, keine hartkodierten Strings“Alle UI-Texte leben in einem String-Katalog
(Resources/Localizable.xcstrings) — bei 4Notice 30 Keys. Die
unterstützten Sprachen sind einmal deklariert, in project.yml,
sodass das generierte Xcode-Projekt immer übereinstimmt:
options: developmentLanguage: en knownRegions: [en, de, fr, es, it, ja, zh-Hans]Die Akzeptanzkriterien des Tickets: alle UI-Texte im Katalog,
orphan-strings meldet nichts, App in de und en geprüft. „Keine
hartkodierten Texte” ist keine Stilfrage — es macht die nächsten zwei
Schritte prüfbar.
2. Der Agent übersetzt — mit markiertem Vorbehalt
Abschnitt betitelt „2. Der Agent übersetzt — mit markiertem Vorbehalt“Die Übersetzungen selbst waren Agenten-Arbeit, alle sieben Sprachen in einem Lauf. Der Vorbehalt steht in den Notizen des Tickets, wörtlich:
ja/zh-Hans sind Agent-Übersetzungen — vor dem Store einmal gegenlesen lassen.
Das ist das Muster für Agenten bei Urteils-Arbeit: die Geschwindigkeit mitnehmen, die Unsicherheit dort festhalten, wo sie wieder gesehen wird (im Ticket), und die menschliche Prüfung einplanen, bevor es zählt (beim Store-Eintrag, nicht beim Commit).
3. Beweisen, dass nichts übrig ist
Abschnitt betitelt „3. Beweisen, dass nichts übrig ist“Hier liefert der
importierte release-checks-Skill:
orphan-strings — eines der drei Tools, die der Agent vorher
implementiert und verifiziert hat — listet jeden Katalog-Key, den
keine Swift-Quelle wörtlich referenziert:
echo '{"catalog": "Resources/Localizable.xcstrings", "sources": ["Sources"]}' \ | python3 .agent/tools/orphan-strings/macos.py# → {"ok": true, "orphans": []}Eine leere Liste ist das Ziel — aber eine nicht-leere ist Kandidaten, keine Fakten: Ein per String-Interpolation gebauter Key taucht hier ebenfalls auf, also wird jeder Treffer vor dem Löschen bestätigt (der Skill sagt das dazu; deshalb berichtet er, statt zu fixen).
Für 4Notice: keine Waisen, Sichttest auf Deutsch und Englisch, Ticket
Done. Store-Metadaten je Sprache sind ein eigenes Thema — sie
gehören zu fastlane, wo die
Screenshots für alle sieben Sprachen in einem automatisierten Lauf
entstehen.