
Käännä Flutter:in ARB-tiedostoja sekunneissa
Metatiedot pysyvät muuttumattomina, muuttujapaikat säilyvät ja monikkomuodot ovat oikein CLDR:n mukaan. ARB-tiedostosi käännetään rikkomatta flutter gen-l10n:ää.
ARB-käännös rikkoo Flutter-koonnokset
ARB-tiedostot näyttävät JSON:lta, mutta eivät ole sitä. Ne sisältävät @-alkuisia metatietomerkintöjä, tyyppimerkinnöillä varustettuja muuttujapaikkoja ja ICU-monikkorakenteita, joiden on noudatettava CLDR-sääntöjä tarkasti. Yleiset käännöstyökalut rikkovat kaiken — ja flutter gen-l10n epäonnistuu huomaamatta tai antaa vaikeaselkoisia virheitä.
@-alkuiset metatietomerkinnät käännetään tai poistetaan, mikä rikkoo muuttujapaikkojen määritykset ja kuvaukset
Aaltosulkeissa olevat muuttujapaikkojen nimet käännetään, nimetään uudelleen tai poistetaan, mikä aiheuttaa kaatumisia suorituksen aikana
ICU-monikkorakenteet tarvitsevat täsmälliset CLDR-luokat kullekin kielelle, mutta yleiset työkalut joko ohittavat ne tai luovat virheellisiä rakenteita
@@locale-otsake rikkoutuu tai ei vastaa tiedostoa, jolloin flutter gen-l10n liittää käännökset väärään kieleen
{
"@@locale": "en",
"appTitle": "My Flutter App",
"@appTitle": {
"description": "The title of the application"
},
"greeting": "Hello, {name}!",
"@greeting": {
"description": "A greeting with the user's name",
"placeholders": {
"name": {
"type": "String",
"example": "John"
}
}
},
"itemCount": "{count, plural, =0{No items} =1{1 item} other{{count} items}}",
"@itemCount": {
"description": "Number of items in the cart",
"placeholders": {
"count": {
"type": "int"
}
}
},
"lastLogin": "Last login: {date}",
"@lastLogin": {
"placeholders": {
"date": {
"type": "DateTime",
"format": "yMMMd"
}
}
}
}{
"@@locale": "de",
"appTitle": "Meine Flutter-App",
"@appTitle": {
"description": "The title of the application"
},
"greeting": "Hallo, {name}!",
"@greeting": {
"description": "A greeting with the user's name",
"placeholders": {
"name": {
"type": "String",
"example": "John"
}
}
},
"itemCount": "{count, plural, =0{Keine Artikel} =1{1 Artikel} other{{count} Artikel}}",
"@itemCount": {
"description": "Number of items in the cart",
"placeholders": {
"count": {
"type": "int"
}
}
},
"lastLogin": "Letzte Anmeldung: {date}",
"@lastLogin": {
"placeholders": {
"date": {
"type": "DateTime",
"format": "yMMMd"
}
}
}
}Mitä i18n Agent säilyttää
@-metatietomerkinnät
Kaikki @-alkuiset metatiedot — kuvaukset, muuttujapaikat ja tyyppimerkinnät — säilytetään täsmälleen määritellyssä muodossa
Muuttujapaikkojen turvallisuus
Nimetyt muuttujapaikat, kuten {userName}, {count} ja {price}, tunnistetaan ja jätetään muuttamatta kaikissa käännöksissä
CLDR-monikkomuodot
ICU-monikkoluokat (zero, one, two, few, many, other) luodaan oikein kullekin kohdekielelle CLDR-sääntöjen mukaan
JSON-rakenne
Avainten järjestys, sisäkkäisyys ja ARB-kohtainen muotoilu vastaavat lähdetiedostoasi ja pitävät diff-tarkistukset selkeinä
Toimii Flutter-pinon kanssa
Näin se toimii

Ei manuaalista kopiointia tai merkkijonojen poimintaa. Vain käännetyt tiedostot.
Kokeile i18n Agent:ia nyt
Pudota käännöstiedostosi tähän
JSON, YAML, PO, XML, CSV, Markdown, Properties
tai valitse napsauttamalla
Kohdekielet
Usein kysytyt kysymykset
Kehittäjä?
Asenna CLI-työkalu ja käännä ensimmäinen tiedostosi kahdessa minuutissa.
Asenna CLI-työkaluYritystiimi?
Oletko yhä jumissa TMS-sopimuksessa? Keskustellaan siirtymisestä.