Skip to main content
AI agent network visualization

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

Lähde (englanti)
lib/l10n/app_en.arb
{
  "@@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"
      }
    }
  }
}
Käännetty (japani)
lib/l10n/app_ja.arb
{
  "@@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

flutter gen-l10n (virallinen)
Easy Localization
GetX-kansainvälistäminen

Näin se toimii

How i18n Agent works: Install, Translate, Done
1
2
3
terminal
$translate_filesrc/messages/en.json
 --target["de", "ja", "es"]
Done.3 languages, 142 keys translated.

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

Rekisteröitymistä ei tarvitaVälitön arvio

Usein kysytyt kysymykset

Kehittäjä?

Asenna CLI-työkalu ja käännä ensimmäinen tiedostosi kahdessa minuutissa.

Asenna CLI-työkalu

Yritystiimi?

Oletko yhä jumissa TMS-sopimuksessa? Keskustellaan siirtymisestä.