Tłumacz pliki lokalizacyjne JSON bez zmiany kluczy.
Klucze pozostają kluczami. Zagnieżdżenie pozostaje nienaruszone. Tłumaczone są tylko wartości tekstowe — i tylko one. Wszystkie inne typy właściwości pozostają dokładnie takie, jak wysłano.
Standardowe narzędzia tłumaczeniowe nie rozumieją JSON.
Ogólne API tłumaczeniowe widzą Twój JSON jako ścianę tekstu. Tłumaczą nazwy kluczy razem z wartościami. Spłaszczają zagnieżdżone obiekty. Łączą ciągi tekstowe, których nie powinny. W efekcie otrzymujesz strukturalnie uszkodzony JSON, który wymaga ręcznej korekty przed użyciem. Jeśli utrzymujesz pliki lokalizacyjne dla aplikacji produkcyjnej, wiesz, że korzystanie ze standardowego API tłumaczeniowego generuje więcej pracy niż oszczędza.
Problem jest głębszy niż tylko nazwy kluczy. Standardowe API tłumaczeniowe również uszkadzają zmienne interpolacyjne. Ciąg taki jak "Hello {name}, you have {count} messages" wraca z przetłumaczonymi nazwami zmiennych — "Hola {nombre}, tienes {cuenta} mensajes" — co psuje każde środowisko wykonawcze oczekujące oryginalnej nazwy zmiennej. Następują godziny debugowania.
Dla zespołów utrzymujących pliki lokalizacyjne w wielu językach dla aplikacji produkcyjnej, to nie jest teoretyczny problem. Już się zdarzyło. Pytanie brzmi, ile czasu zajmuje ręczna naprawa za każdym razem.
PolyLingo przegląda Twój JSON przed tłumaczeniem.
PolyLingo rozumie strukturę JSON. Rekurencyjnie przegląda obiekt, identyfikuje wartości tekstowe zawierające tekst do przetłumaczenia i wysyła do modelu tłumaczeniowego tylko te wartości. Nazwy kluczy nigdy nie są modyfikowane. Liczby, wartości logiczne, null i typy inne niż tekstowe są przekazywane bez zmian. Wynik to poprawny JSON o identycznej strukturze — tylko z przetłumaczonymi wartościami tekstowymi.
Zmienne interpolacyjne — {name}, {{count}}, %s i podobne wzorce — są identyfikowane i zachowywane podczas całego procesu tłumaczenia. Zastępowane są placeholderami przed tłumaczeniem i przywracane w oryginalnej formie w wyniku. Model tłumaczeniowy nigdy nie widzi ich jako tekstu do tłumaczenia.
Tablice są obsługiwane poprawnie: każdy element tekstowy jest tłumaczony, podczas gdy indeksy liczbowe i struktura tablicy pozostają bez zmian. Tablice mieszane zawierające zarówno teksty, jak i typy nie-tekstowe (liczby, obiekty) są przeglądane poprawnie, a typy nie-tekstowe przekazywane bez zmian.
{
"nav_home": "Home",
"nav_pricing": "Pricing",
"hero_title": "Grow your audience globally",
"hero_cta": "Get started for free",
"footer_rights": "All rights reserved."
}{
"nav_home": "Accueil",
"nav_pricing": "Tarifs",
"hero_title": "Développez votre audience mondiale",
"hero_cta": "Commencer gratuitement",
"footer_rights": "Tous droits réservés."
}{
"nav": {
"home": "Home",
"pricing": "Pricing",
"blog": "Blog"
},
"hero": {
"title": "Grow your audience globally",
"subtitle": "Translate in seconds.",
"cta": "Get started for free"
},
"errors": {
"notFound": "Page not found",
"serverError": "Something went wrong"
}
}{
"nav": {
"home": "Inicio",
"pricing": "Precios",
"blog": "Blog"
},
"hero": {
"title": "Expande tu audiencia globalmente",
"subtitle": "Traduce en segundos.",
"cta": "Comienza gratis"
},
"errors": {
"notFound": "Página no encontrada",
"serverError": "Algo salió mal"
}
}curl -X POST https://api.usepolylingo.com/v1/translate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "{\"nav_home\": \"Home\", \"hero_title\": \"Get started\"}",
"format": "json",
"targets": ["es", "fr", "de", "ja", "zh"],
"model": "standard"
}'
# Response:
# {
# "translations": {
# "es": "{\"nav_home\": \"Inicio\", \"hero_title\": \"Empezar\"}",
# "fr": "{\"nav_home\": \"Accueil\", \"hero_title\": \"Commencer\"}",
# ...
# }
# }Co PolyLingo gwarantuje dla każdego tłumaczenia JSON
- ✓Nazwy kluczy nigdy nie są modyfikowane
- ✓Zagnieżdżone obiekty i tablice obsługiwane rekurencyjnie
- ✓Liczby, wartości logiczne, null przekazywane bez zmian
- ✓Wszystkie 36 języków w jednym żądaniu
- ✓Automatycznie wykrywane jako JSON — bez potrzeby flagi formatu
- ✓Działa z płaskimi i głęboko zagnieżdżonymi plikami lokalizacyjnymi
- ✓Zmienne interpolacyjne ({name}, {{count}}, %s) zachowane dokładnie
- ✓Wynik to poprawny JSON — możliwy do sparsowania bez modyfikacji
Trzy kroki do przetłumaczonych plików lokalizacyjnych
Wklej swój JSON lub wywołaj API
Użyj tłumacza bez kodu do jednorazowych tłumaczeń: wklej JSON, wybierz języki, pobierz przetłumaczone pliki. Dla automatyzacji wywołaj POST /v1/translate z zawartością JSON i kodami języków docelowych.
Otrzymaj wszystkie języki w jednej odpowiedzi
API zwraca obiekt JSON z jednym wpisem na język docelowy, każdy zawierający w pełni przetłumaczony plik lokalizacyjny o identycznej strukturze. Bez wywołań na język. Bez pętli. Jedno żądanie na wszystkie wyniki.
Umieść wyniki w katalogu messages
Zapisz każdy przetłumaczony plik do messages/es.json, messages/fr.json, messages/de.json — lub tam, gdzie oczekuje ich Twoja biblioteka i18n. Struktura jest identyczna jak w pliku źródłowym, więc nie jest potrzebne dalsze przetwarzanie.
Gdzie tłumaczenie JSON ma największe znaczenie
i18n aplikacji z next-intl lub i18next
Tłumacz bezpośrednio swoje pliki messages/*.json lub locales/*.json. Klucze pozostają nienaruszone, zagnieżdżenie jest zachowane, a zmienne interpolacyjne pozostają niezmienione. Umieść pliki w katalogu messages i wdrażaj.
Eksporty treści CMS
Platformy headless CMS często eksportują treści strukturalne jako JSON. PolyLingo tłumaczy wartości tekstowe, zachowując nazwy pól, zagnieżdżone typy treści oraz wartości niebędące tekstem, takie jak daty, wartości logiczne i identyfikatory.
Odpowiedzi API i pliki konfiguracyjne
Każda struktura JSON z tłumaczalnymi wartościami tekstowymi — opisy produktów, szablony powiadomień, teksty w aplikacji dostarczane przez API — może być tłumaczona bez modyfikacji struktury, od której zależy Twoja aplikacja.
Najczęściej zadawane pytania o tłumaczenie JSON
Czy zmienne interpolacyjne takie jak {name} lub {{count}} są zachowywane?
Tak. PolyLingo identyfikuje popularne wzorce interpolacji, w tym {variable}, {{variable}}, %(variable)s oraz %s przed tłumaczeniem. Są one zastępowane stabilnymi placeholderami, otaczający tekst jest tłumaczony, a oryginalne nazwy zmiennych są przywracane w wyniku. Model tłumaczeniowy nigdy nie widzi nazw zmiennych jako tekstu do tłumaczenia.
Co się dzieje z wartościami niebędącymi tekstem — liczbami, wartościami logicznymi, null?
Wartości niebędące tekstem są przekazywane bez żadnych zmian. PolyLingo tłumaczy tylko wartości tekstowe zawierające naturalny język. Liczby, wartości logiczne, null oraz tablice niebędące tekstem są zachowywane dokładnie tak, jak w źródle.
Czy PolyLingo radzi sobie z głęboko zagnieżdżonymi strukturami JSON?
Tak. PolyLingo rekurencyjnie przegląda obiekty o dowolnej głębokości zagnieżdżenia. Tłumaczenie dotyczy wszystkich wartości tekstowych w całej strukturze, niezależnie od poziomu zagnieżdżenia.
Co jeśli niektóre klucze zawierają treści nietłumaczalne, takie jak slugi lub kody?
PolyLingo domyślnie tłumaczy wszystkie wartości tekstowe. Jeśli masz pola tekstowe, które nie powinny być tłumaczone — slug, kody języków, identyfikatory techniczne — zalecanym podejściem jest albo wykluczenie ich z wysyłanego JSON, albo użycie parametru format z określeniem pól do pominięcia (wkrótce dostępne). W większości plików lokalizacyjnych wszystkie wartości tekstowe są przeznaczone do tłumaczenia.
Czy działa z JSON5 lub JSONC (JSON z komentarzami)?
Obecnie PolyLingo przetwarza standardowy JSON. JSON5 i JSONC (z komentarzami) powinny być wstępnie przetworzone w celu usunięcia komentarzy i konwersji do standardowego JSON przed wysłaniem. To powszechny krok w pipeline’ach budowania i dodaje minimalne obciążenie.
Na ile języków mogę tłumaczyć w jednym żądaniu?
Do wszystkich 36 obsługiwanych języków w jednym żądaniu. Odpowiedź zawiera jeden przetłumaczony obiekt JSON na kod języka. Limity szybkości zależą od planu — darmowy pozwala na 10 żądań na minutę, a plany Growth i Scale na 200–600 żądań na minutę.
Powiązane przewodniki
Przetłumacz swoje pliki lokalizacyjne w kilka sekund.
Wklej swój JSON, wybierz języki, otrzymaj poprawne pliki lokalizacyjne dla każdego języka docelowego.
Rozpocznij darmowe tłumaczenieWklej swój JSON lokalizacyjny i zobacz wynik — za darmo, bez konta.