i18n-muunnin
Muunna yli 32 i18n-tiedostomuodon välillä: Android XML, iOS Strings, XLIFF, PO, JSON, YAML ja muut. Häviötön mahdollisuuksien mukaan ja selkeät varoitukset tietojen menetyksestä muulloin.
Ongelma
Jokainen alusta käyttää eri käännösmuotoa. Android käyttää strings.xml-tiedostoa. iOS käyttää .strings- ja .stringsdict-tiedostoja. Verkkosovellukset käyttävät JSON:ia tai YAML:ia. Kääntäjät ja TMS-alustat haluavat XLIFF- tai PO-muodon. Kun merkkijonoja on jaettava alustojen välillä, päädyt kopioimaan ja liittämään muotojen välillä, kirjoittamaan kertakäyttöisiä komentosarjoja tai järjestämään tiedostoja käsin uudelleen. Se on työlästä, virhealtista ja rikkoutuu aina uuden muodon ilmestyessä.
Ratkaisu
i18n-convert on yksi CLI-työkalu, joka muuntaa yli 32 i18n-tiedostomuodon välillä. Se tunnistaa syötemuodon automaattisesti, säilyttää mahdollisimman suuren osan rakenteesta ja varoittaa, jos muunnos menettäisi tietoja, kuten monikkomuodot CSV-muodossa.
# Auto-detect input format, convert to Android XML
i18n-convert en.json --to android-xml -o strings.xml
# iOS Strings to Gettext PO
i18n-convert Localizable.strings --to po -o messages.po
# XLIFF to Rails YAML
i18n-convert translations.xliff --to yaml-rails -o en.yml
# Pipe to stdout
i18n-convert messages.po --to jsonAutomaattinen tunnistus
Syötemuoto tunnistetaan automaattisesti tiedostopäätteestä ja sisällöstä. Valitsimia ei tarvita.
Häviötön mahdollisuuksien mukaan
Metatiedot, kommentit ja monikkomuodot säilytetään, kun kohdemuoto tukee niitä.
Varoitukset tietojen menetyksestä
Kun muunnos menettäisi tietoja, saat nimenomaiset varoitukset ennen yhdenkään tiedoston kirjoittamista.
Asennus
Asenna helpoimmin npm:llä, macOS:ssä Homebrew:lla tai koosta lähdekoodista Cargolla.
npm install -g @i18n-agent/i18n-convertTavalliset muunnokset
Useimmat tiimit tarvitsevat toistuvasti muutamia muunnoksia: JSON Android XML -muotoon mobiilia varten, PO JSON-muotoon verkkoa varten ja XLIFF-edestakaismuunnokset kääntäjille luovutusta varten. Tässä on tavallisia malleja.
# Convert all PO files to JSON
for f in locales/*.po; do
i18n-convert "$f" --to json -o "${f%.po}.json"
done
# Convert entire directory
i18n-convert locales/ --to json --out-dir locales-json/Tuetut muodot
i18n-convert tukee yli 32 muotoa mobiili-, verkko-, lokalisointistandardi- ja tiedonsiirtoluokissa.
Mobiili
| Format | Extension | Flag |
|---|---|---|
| Android XML | .xml | --to android-xml |
| iOS Strings | .strings | --to ios-strings |
| iOS Stringsdict | .stringsdict | --to ios-stringsdict |
| Flutter ARB | .arb | --to arb |
Verkko
| Format | Extension | Flag |
|---|---|---|
| JSON (flat) | .json | --to json |
| JSON (nested) | .json | --to json-nested |
| YAML | .yml | --to yaml |
| YAML (Rails) | .yml | --to yaml-rails |
| Properties | .properties | --to properties |
Lokalisointistandardit
| Format | Extension | Flag |
|---|---|---|
| XLIFF 1.2 | .xlf | --to xliff |
| XLIFF 2.0 | .xlf | --to xliff-2 |
| Gettext PO | .po | --to po |
| Gettext POT | .pot | --to pot |
| TMX | .tmx | --to tmx |
| TBX | .tbx | --to tbx |
Tiedonsiirto
| Format | Extension | Flag |
|---|---|---|
| CSV | .csv | --to csv |
| TSV | .tsv | --to tsv |
| Excel | .xlsx | --to xlsx |
Varoitukset tietojen menetyksestä
Kaikki muodot eivät ole samanarvoisia. XLIFF tukee huomautuksia, asiayhteyksiä ja monikkomuotoja. CSV ei tue niistä mitään. Kun muunnat monipuolisesta muodosta yksinkertaisempaan, i18n-convert kertoo täsmälleen, mitä menetetään.
$ i18n-convert plurals.po --to csv
Data loss warnings:
[ERROR] 3 entries use plurals (not supported by CSV)
Proceed? [y/N]
# Skip prompts
i18n-convert plurals.po --to csv --force
# Preview warnings without writing
i18n-convert plurals.po --to csv --dry-runCI-integraatio
Automatisoi muotojen synkronointi CI/CD-putkessasi. Kun lähdekäännöstiedosto muuttuu, luo kaikki johdetut muodot automaattisesti uudelleen, jotta mobiili-, verkko- ja kääntäjätiedostot pysyvät synkronoituina.
# .github/workflows/format-sync.yml
name: Sync Translation Formats
on:
push:
branches: [main]
paths: ['locales/en.json']
jobs:
sync-formats:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install i18n-convert
run: npm install -g @i18n-agent/i18n-convert
- name: Convert JSON to Android XML
run: i18n-convert locales/en.json --to android-xml -o android/res/values/strings.xml
- name: Convert JSON to iOS Strings
run: i18n-convert locales/en.json --to ios-strings -o ios/en.lproj/Localizable.strings
- name: Commit synced formats
run: |
git config user.name "github-actions"
git config user.email "[email protected]"
git add android/ ios/
git diff --cached --quiet || git commit -m "chore: sync translation formats"
git pushKokeile i18n Agent:ia nyt
Pudota käännöstiedostosi tähän
JSON, YAML, PO, XML, CSV, Markdown, Properties
tai valitse napsauttamalla
Kohdekielet