i18n-i teisendi
Teisenda enam kui 32 i18n-failivormingu vahel: Android XML, iOS Strings, XLIFF, PO, JSON, YAML ja muud. Võimaluse korral kadudeta, muul juhul selgete andmekao hoiatustega.
Probleem
Iga platvorm kasutab eri tõlkevormingut. Android kasutab strings.xml-i. iOS kasutab .strings- ja .stringsdict-faile. Veebirakendused kasutavad JSON-i või YAML-i. Tõlkijad ja TMS-platvormid soovivad XLIFF-i või PO-d. Kui pead stringe platvormide vahel jagama, jõuad lõpuks vormingute vahel kopeerimise ja kleepimise, ühekordsete skriptide kirjutamise või failide käsitsi ümberstruktureerimiseni. See on tüütu, veaohtlik ja läheb katki iga uue vormingu ilmumisel.
Lahendus
i18n-convert on üks CLI-tööriist, mis teisendab enam kui 32 i18n-failivormingu vahel. See tuvastab sisendvormingu automaatselt, säilitab võimalikult palju struktuuri ja hoiatab, kui teisendamine kaotaks andmeid, näiteks CSV-s mitmusevormid.
# 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 jsonAutomaatne tuvastamine
Sisendvorming tuvastatakse automaatselt faililaiendi ja sisu järgi. Lippe pole vaja.
Võimaluse korral kadudeta
Metaandmed, kommentaarid ja mitmusevormid säilitatakse, kui sihtvorming neid toetab.
Andmekao hoiatused
Kui teisendamine kaotaks teavet, saad enne ühegi faili kirjutamist selgesõnalised hoiatused.
Paigaldamine
Lihtsaimaks seadistamiseks paigalda npm-i kaudu, macOS-is Homebrew'ga või ehita lähtekoodist Cargo abil.
npm install -g @i18n-agent/i18n-convertLevinud teisendused
Enamik meeskondi vajab korduvalt mõnda teisendust: JSON Android XML-i mobiili jaoks, PO JSON-i veebi jaoks ja XLIFF-i edasi-tagasi teisendused tõlkijatele üleandmiseks. Siin on mõned levinud mustrid.
# 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/Toetatud vormingud
i18n-convert toetab enam kui 32 vormingut mobiili, veebi, lokaliseerimisstandardite ja andmevahetuse kategooriates.
Mobiil
| 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 |
Veeb
| 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 |
Lokaliseerimisstandardid
| 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 |
Andmevahetus
| Format | Extension | Flag |
|---|---|---|
| CSV | .csv | --to csv |
| TSV | .tsv | --to tsv |
| Excel | .xlsx | --to xlsx |
Andmekao hoiatused
Kõik vormingud pole võrdsed. XLIFF toetab märkmeid, kontekste ja mitmusevorme. CSV ei toeta neist ühtegi. Kui teisendad rikkalikust vormingust lihtsamasse, annab i18n-convert täpselt teada, mis kaotsi läheb.
$ 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 lõiming
Automatiseeri vormingute sünkroonimine CI/CD-konveieris. Kui lähtetõlkefail muutub, loo kõik tuletatud vormingud automaatselt uuesti, et mobiili-, veebi- ja tõlkijafailid püsiksid sünkroonis.
# .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 pushProovi i18n Agent'i kohe
Kukuta tõlkefail siia
JSON, YAML, PO, XML, CSV, Markdown, Properties
või klõpsa faili valimiseks
Sihtkeeled