Walidator placeholderów iOS i Flutter

Wklej tekst źródłowy i jego tłumaczenia: narzędzie wskazuje placeholdery pominięte, przemianowane, o zmienionym typie lub kolejności, zarówno dla formatów Apple (%@, %1$@, %lld), jak i komunikatów ICU we Flutterze. Darmowe, bez rejestracji, a tekst nigdy nie opuszcza przeglądarki.

Porównaj placeholdery

Tłumaczenia do sprawdzenia

Porównanie w przeglądarce: nic nie jest wysyłane.

Sprawdzaj każde tłumaczenie przed eksportem bez kopiowania i wklejania

LocalePilot to aplikacja desktopowa, która automatycznie porównuje placeholdery wszystkich tłumaczeń z placeholderami źródła (%@, %1$@, %lld, ICU), zbiera je w centrum QA i blokuje eksport, dopóki problem blokujący nie zostanie poprawiony. Wersja na macOS jest na ostatniej prostej: zostaw e-mail, a damy znać o premierze.

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.

Najczęściej zadawane pytania

Które specyfikatory formatu iOS są rozpoznawane?

%@, %1$@ (i inne pozycje), %d, %ld, %lld, %.2f, %u, %i, %s; %% jest traktowane jako tekst. Rzadkie konwersje, takie jak %e czy %x, są celowo pomijane.

Dlaczego „20 % de remise” jest oznaczane?

W ciągu formatującym „% d” to poprawny specyfikator (spacja to flaga printf), więc „%lld % de remise” zawiera dwa specyfikatory dla jednego argumentu. Napisz „%lld %% de remise”. Pułapka dotyczy francuskiej typografii i każdego innego tekstu ze spacją po znaku procentu.

Czy w tłumaczeniu można zmienić kolejność argumentów?

Tak, numerując wszystkie argumenty: %1$@ to pierwszy, %2$@ drugi, niezależnie od miejsca w zdaniu. W jednym tekście albo wszystko jest numerowane, albo nic.

Czy narzędzie sprawdza też komunikaty ICU we Flutterze?

Tak: placeholdery w nawiasach klamrowych są porównywane z placeholderami źródła, także w gałęziach plural i select.

Czy mój tekst jest wysyłany na serwer?

Nie. Teksty, czasem jeszcze niewydane, są porównywane na stronie: nic nie jest wysyłane.

Czym to się różni od LocalePilot?

To narzędzie porównuje jeden tekst naraz. LocalePilot to aplikacja desktopowa, kończona właśnie na macOS, która porównuje każdy klucz w plikach ARB, .strings i .xcstrings i blokuje eksport przy problemie blokującym.

Daj mi znać o premierze

LocalePilot jest na etapie finalizacji. Zostaw swój adres e-mail, aby dowiedzieć się o premierze.

  • macOS 12 lub nowszy · Ollama lub LM Studio opcjonalnie
  • Interfejs aplikacji po angielsku, francusku, hiszpańsku, włosku i portugalsku.