Wat de tool vergelijkt
- Apple-formaten:
%@, %1$@, %d, %ld, %lld, %.2f, %u, %i en %s, positie voor positie. %% is tekst.
- ICU-placeholders van Flutter:
{name}, ook binnen plural- en select-takken.
Zeldzame conversies zoals %e of %x worden bewust genegeerd, zodat tekst als "20%en" niet voor een fout wordt aangezien.
De meest voorkomende fouten
- Een weggevallen specifier: er crasht niets, maar de naam of het getal verdwijnt van het scherm.
- Een ander type:
%lld vervangen door %@ leest een integer als object en kan een crash veroorzaken.
- Een andere volgorde zonder posities: om te verplaatsen nummer je elk argument (
%1$@, %2$@); genummerd en ongenummerd mengen is ongedefinieerd gedrag.
- "20 % de remise" in het Frans: door de spatie vóór het procentteken wordt
% d als specifier gelezen. Verdubbel het teken: %%.
- Een hernoemde ICU-placeholder:
{count} veranderd in {aantal} wijzigt in Flutter de API van elke locale.
Deze gevallen worden uitgelegd in de handleiding over iOS-format specifiers en de handleiding over ICU-placeholders.
Beperkingen van de tool
De tool vergelijkt placeholders, geen betekenis: hij ziet niet dat twee %@ zijn verwisseld als de argumenten niet genummerd zijn, en ook geen slecht vertaalde zin. Hij interpreteert geen ICU-escaping met apostroffen (de optie use-escaping van Flutter): '{' wordt als accolade gelezen. Hij vergelijkt één tekst tegelijk; gebruik voor een heel bestand de checker voor ontbrekende ARB-sleutels of een editor die elke sleutel controleert.