Vertaal een JSON-i18n-bestand met alle sleutels, placeholders en meervoudsvormen intact
Upload en.json (of meerdere namespace-bestanden) en krijg es.json terug met dezelfde geneste sleutels, dezelfde volgorde en dezelfde inspringing. Alleen de waarden worden vertaald en in elke string controleren we elke {name}, {{count}} en ICU-plural. De eerste strings zijn gratis zonder account; de hele opdracht, tot 5,000 strings, kost $5, eenmalig betaald.
- Sleutels en nesting worden nooit vertaald; arrays, getallen en booleans blijven zoals ze zijn
- Gecontroleerde placeholders: {name}, {{count}}, %s, :attribute, $t(key), @:key
- ICU-plurals behouden hun structuur en krijgen de categorieën die de doeltaal nodig heeft
- Flutter ARB: @metadata blijft behouden en dient als context, @@locale wordt bijgewerkt
- Bestandsnaam volgens de taal: en.json wordt es.json, app_en.arb wordt app_es.arb
{
"home.greeting": "Good morning, {name}Buenos días, {name}",
"home.nearby": "{count, plural, =0 {No trails near you yet} one {# trail near you} other {# trails near you}}{count, plural, =0 {Aún no hay rutas cerca de ti} one {# ruta cerca de ti} other {# rutas cerca de ti}}",
"trail.offline_done": "<b>{name}</b> is saved on this phone. You can use the map without a signal.<b>{name}</b> está guardado en este teléfono. Puedes usar el mapa sin señal.",
"trail.share_text": "I just finished {trail} with Trailbook! {km} km and {meters} m up. 🥾¡Acabo de terminar {trail} con Trailbook! {km} km y {meters} m de subida. 🥾",
"saved.empty": "You have not saved any trails yet.\nTap the heart on a trail to keep it here.Aún no has guardado ninguna ruta.\nToca el corazón en una ruta para guardarla aquí."
}
Geel: placeholders en ICU-meervoudssyntaxis, in elke string gecontroleerd. Blauwgroen: tags, escapes en emoji, ongewijzigd gelaten.
Dezelfde sleutels. Dezelfde placeholders. Nieuwe taal.
Alleen de waarden veranderen. Het bestand komt terug met dezelfde nesting en volgorde, onder de naam es.json, en elke string die een placeholder kwijtraakt, wordt opnieuw vertaald voordat hij in je build kan komen.
Demo-app die voor deze pagina is verzonnen; de Spaanse strings zijn echte output van de tool, uit een bestand met 85 strings.
Wat er wel en niet wordt vertaald
Elke stringwaarde wordt ter vertaling verstuurd met de volledige sleutel als context, zodat "settings.save" en "cart.save" met verschillende woorden terug kunnen komen. Sleutels worden nooit verstuurd. Waarden die geen tekst zijn, zoals een URL, een e-mailadres of een waarde die alleen uit placeholders bestaat, zoals "{count}", blijven ongewijzigd.
Rich-text-tags die react-intl en vergelijkbare bibliotheken gebruiken, zoals <b>{name}</b> of <link>Undo</link>, worden vóór de vertaling vervangen door markeringen en daarna weer teruggezet. Letterlijke \n-reeksen en emoji moeten ook behouden blijven; een string waarin iets daarvan verloren gaat, wordt opnieuw vertaald. Mislukt dat twee keer, dan blijft het Engels staan en zetten we de sleutel voor je op een rij.
Meervoudsvormen
Een ICU-bericht zoals {count, plural, one {# trail} other {# trails}} wordt als één string vertaald. De vertaler weet welke pluralcategorieën de doeltaal gebruikt, bijvoorbeeld one, few, many en other voor Russisch of Pools, en het resultaat wordt gecontroleerd op behoud van de variabelenaam en het pluralsleutelwoord. i18next-bestanden met aparte sleutels zoals trail_one en trail_other worden sleutel voor sleutel vertaald; sleutels die voor de doeltaal ontbreken (trail_few, trail_many) voegen we niet toe.
Hoe de tool werkt, wat het kost en hoe we met je bestanden omgaan, staat op de pagina Lokalisatiebestanden vertalen; de prijzen van alle tools staan op de pagina prijzen.
Laatst bijgewerkt op
Vragen en antwoorden
Blijft mijn opmaak behouden?
Ja. De inspringing (twee spaties, vier spaties of tabs), de volgorde van de sleutels, de spatie na dubbele punten en een afsluitende nieuwe regel nemen we over uit je bestand. Een geminificeerd bestand blijft op één regel staan.
Kan ik meerdere namespace-bestanden tegelijk uploaden?
Ja, tot 20 bestanden in één opdracht, zoals common.json, cart.json en errors.json. Je downloadt ze samen als één ZIP.
Wat als sommige strings niet vertaald mogen worden?
Zet product- en merknamen onder "Nooit vertalen"; elke string waarin zo'n naam voorkomt, wordt gecontroleerd op behoud ervan. Waarden die alleen uit een URL, een e-mailadres of placeholders bestaan, worden automatisch overgeslagen.
Wat kost het?
De eerste strings zijn gratis. De hele opdracht, tot 5,000 strings, kost $5, eenmalig betaald. Unlimited dekt tot 15,000 strings per opdracht. Kleine opdrachten zijn de uitzondering: een opdracht van maximaal 300 strings is helemaal gratis, inclusief downloads.