Skip to main content

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

Yksi mobiili- ja verkkoprojekti voi helposti sisältää yli viisi eri käännöstiedostomuotoa. Niiden pitäminen käsin synkronoituina on mahdoton tehtävä.

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.

Terminal
# 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 json

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

Terminal
npm install -g @i18n-agent/i18n-convert
npm-paketti sisältää valmiit binääritiedostot macOS:lle, Linux:ille ja Windows:ille. Rust-työkaluketjua ei tarvita.

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

Batch conversion
# 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

FormatExtensionFlag
Android XML.xml--to android-xml
iOS Strings.strings--to ios-strings
iOS Stringsdict.stringsdict--to ios-stringsdict
Flutter ARB.arb--to arb

Verkko

FormatExtensionFlag
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

FormatExtensionFlag
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

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

Terminal
$ 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-run
Käytä tuotannossa aina --dry-run-valitsinta ennen muuntamista yksinkertaisempaan muotoon. Näet kaikki varoitukset kirjoittamatta tiedostoja.

CI-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
# .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 push
Yhdistä i18n-convert ja i18n-validate CI-putkessasi. Muunna muodot ensin ja validoi sitten, että kaikki kohdetiedostot ovat täydellisiä ja oikein muodostettuja.

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