Verifica dei placeholder iOS e Flutter

Incolla una stringa sorgente e le sue traduzioni: lo strumento segnala i placeholder persi, rinominati, di tipo diverso o riordinati, sia per i formati Apple (%@, %1$@, %lld) sia per i messaggi ICU di Flutter. Gratis, senza registrazione, e il tuo testo non lascia mai il browser.

Confronta i placeholder

Traduzioni da controllare

Confronto eseguito nel browser: nulla viene caricato.

Controlla ogni traduzione prima dell'esportazione, senza copia e incolla

LocalePilot è un'app desktop che confronta automaticamente i placeholder di tutte le traduzioni con quelli della sorgente (%@, %1$@, %lld, ICU), li elenca in un centro QA e blocca l'esportazione finché un problema bloccante non è corretto. È in fase di finalizzazione per macOS: lascia la tua email per sapere quando esce.

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.

Domande frequenti

Quali specificatori di formato iOS vengono riconosciuti?

%@, %1$@ (e le altre posizioni), %d, %ld, %lld, %.2f, %u, %i, %s; %% è trattato come testo. Le conversioni rare come %e o %x vengono ignorate di proposito.

Perché "20 % de remise" viene segnalato?

In una stringa di formato, "% d" è uno specificatore valido (lo spazio è un flag printf), quindi "%lld % de remise" contiene due specificatori per un solo argomento. Scrivi "%lld %% de remise".

Posso cambiare l'ordine degli argomenti in una traduzione?

Sì, numerando tutti gli argomenti: %1$@ è il primo, %2$@ il secondo, ovunque si trovino nella frase. In una stessa stringa, o è tutto numerato o niente.

Lo strumento controlla anche i messaggi ICU di Flutter?

Sì: i placeholder tra parentesi graffe vengono confrontati con quelli della sorgente, anche dentro i rami plural e select.

Il mio testo viene inviato a un server?

No. Le stringhe, a volte non ancora pubblicate, vengono confrontate nella pagina: non viene inviato nulla.

In cosa si differenzia da LocalePilot?

Questo strumento confronta una stringa alla volta. LocalePilot è un'app desktop, in finalizzazione per macOS, che confronta ogni chiave dei file ARB, .strings e .xcstrings e blocca l'esportazione in caso di problema bloccante.

Ricevi un avviso al lancio

LocalePilot è in fase di rifinitura. Lascia la tua email per sapere quando esce.

  • macOS 12 o successivo · Ollama o LM Studio facoltativi
  • Interfaccia dell'app in inglese, francese, spagnolo, italiano e portoghese.