Cosa confronta lo strumento
- Formati Apple:
%@, %1$@, %d, %ld, %lld, %.2f, %u, %i e %s, posizione per posizione. %% è testo.
- Placeholder ICU di Flutter:
{name}, anche dentro i rami plural e select.
Le conversioni rare come %e o %x vengono ignorate di proposito, così un testo come "20%en" non viene preso per un errore.
Gli errori più comuni
- Uno specificatore perso: niente va in crash, ma il nome o il numero spariscono dallo schermo.
- Un tipo cambiato:
%lld sostituito da %@ legge un intero come un oggetto, con rischio di crash.
- Un ordine cambiato senza posizioni: per riordinare, numera tutti gli argomenti (
%1$@, %2$@); mescolare numerati e non numerati è un comportamento indefinito.
- "20 % de remise" in francese: lo spazio prima del segno di percentuale fa leggere
% d come uno specificatore. Raddoppia il segno: %%.
- Un placeholder ICU rinominato:
{count} diventato {nombre} cambia l'API di tutte le locale in Flutter.
Questi casi sono descritti in dettaglio nella guida agli specificatori di formato iOS e nella guida ai placeholder ICU.
Limiti dello strumento
Lo strumento confronta i placeholder, non il significato: non rileva due %@ scambiati quando gli argomenti non sono numerati, né una frase tradotta male. Non interpreta l'escape degli apostrofi ICU (l'opzione use-escaping di Flutter): '{' viene letto come una parentesi graffa. Confronta una stringa alla volta; per un file intero, usa la verifica delle chiavi mancanti ARB o un editor che controlli ogni chiave.