Was das Tool vergleicht
- Apple-Formate:
%@, %1$@, %d, %ld, %lld, %.2f, %u, %i und %s, Position für Position. %% ist Text.
- ICU-Platzhalter in Flutter:
{name}, auch innerhalb von plural- und select-Zweigen.
Seltene Konvertierungen wie %e oder %x werden bewusst ignoriert, damit ein Text wie „20%en“ nicht für einen Fehler gehalten wird.
Die häufigsten Fehler
- Ein verlorener Bezeichner: Nichts stürzt ab, aber der Name oder die Zahl verschwindet vom Bildschirm.
- Ein geänderter Typ: Wird
%lld durch %@ ersetzt, liest die App eine Ganzzahl als Objekt und kann abstürzen.
- Eine geänderte Reihenfolge ohne Positionen: Zum Umstellen nummerieren Sie jedes Argument (
%1$@, %2$@); nummerierte und nicht nummerierte zu mischen ist undefiniertes Verhalten.
- „20 % Rabatt“ im Deutschen oder Französischen: Durch das Leerzeichen vor dem Prozentzeichen wird
% d als Bezeichner gelesen. Verdoppeln Sie das Zeichen: %%.
- Ein umbenannter ICU-Platzhalter:
{count} wird zu {anzahl} und ändert in Flutter die API jeder Locale.
Diese Fälle werden in der Anleitung zu iOS-Formatbezeichnern und der Anleitung zu ICU-Platzhaltern ausführlich behandelt.
Grenzen des Tools
Das Tool vergleicht Platzhalter, nicht die Bedeutung: Es erkennt weder zwei vertauschte %@, wenn die Argumente nicht nummeriert sind, noch einen schlecht übersetzten Satz. Es interpretiert kein ICU-Escaping mit Apostrophen (Flutters Option use-escaping): '{' wird als Klammer gelesen. Es vergleicht jeweils einen String; für eine ganze Datei nutzen Sie den Check für fehlende ARB-Schlüssel oder einen Editor, der jeden Schlüssel prüft.