Tłumaczenie JSON

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.

Klucze
zawsze zachowane
Zagnieżdżone
obiekty obsługiwane rekurencyjnie
36
języków wyjściowych na żądanie
100K
darmowych tokenów / miesiąc

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.

Wejście — płaski JSON lokalizacyjny (angielski)
{
  "nav_home": "Home",
  "nav_pricing": "Pricing",
  "hero_title": "Grow your audience globally",
  "hero_cta": "Get started for free",
  "footer_rights": "All rights reserved."
}
Wynik — francuski (klucze identyczne)
{
  "nav_home": "Accueil",
  "nav_pricing": "Tarifs",
  "hero_title": "Développez votre audience mondiale",
  "hero_cta": "Commencer gratuitement",
  "footer_rights": "Tous droits réservés."
}
Wejście — zagnieżdżony JSON lokalizacyjny (angielski)
{
  "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"
  }
}
Wynik — hiszpański (struktura nienaruszona)
{
  "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"
  }
}
Żądanie API — tłumaczenie na 5 języków w jednym wywołaniu
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

1

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.

2

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.

3

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ę.

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łumaczenie

Wklej swój JSON lokalizacyjny i zobacz wynik — za darmo, bez konta.

Tłumacz pliki lokalizacyjne JSON bez zmiany kluczy — PolyLingo | PolyLingo