Co porównuje narzędzie
- Formaty Apple:
%@, %1$@, %d, %ld, %lld, %.2f, %u, %i i %s, pozycja po pozycji. %% to tekst.
- Placeholdery ICU we Flutterze:
{name}, także w gałęziach plural i select.
Rzadkie konwersje, takie jak %e czy %x, są celowo pomijane, żeby tekst w rodzaju „20%en” nie był brany za błąd.
Najczęstsze błędy
- Pominięty specyfikator: aplikacja działa dalej, ale imię lub liczba znika z ekranu.
- Zmieniony typ:
%lld zastąpione przez %@ odczytuje liczbę całkowitą jako obiekt, co grozi awarią.
- Zmieniona kolejność bez pozycji: żeby zmienić kolejność, ponumeruj wszystkie argumenty (
%1$@, %2$@); mieszanie numerowanych i nienumerowanych to zachowanie niezdefiniowane.
- „20 % de remise” po francusku: spacja przed znakiem procentu sprawia, że
% d jest czytane jako specyfikator. Podwój znak: %%.
- Przemianowany placeholder ICU:
{count} zamienione na {liczba} zmienia API wszystkich lokalizacji we Flutterze.
Te przypadki szczegółowo opisują poradnik o specyfikatorach formatu iOS i poradnik o placeholderach ICU.
Ograniczenia narzędzia
Narzędzie porównuje placeholdery, nie znaczenie: nie wykryje dwóch zamienionych %@, gdy argumenty nie są numerowane, ani źle przetłumaczonego zdania. Nie interpretuje escapowania apostrofami w ICU (opcja use-escaping we Flutterze): '{' jest czytane jako nawias klamrowy. Porównuje jeden tekst naraz; dla całego pliku użyj wyszukiwarki brakujących kluczy ARB albo edytora, który sprawdza każdy klucz.