i18n Converter
Mag-convert sa pagitan ng 32+ i18n file format. Android XML, iOS Strings, XLIFF, PO, JSON, YAML, at iba pa. Lossless kapag posible, na may malinaw na babala sa data loss kapag hindi.
Ang Suliranin
Bawat platform ay may iba-ibang format ng pagsasalin. Gumagamit ang Android ng strings.xml. Gumagamit ang iOS ng .strings at .stringsdict. Gumagamit ang mga web app ng JSON o YAML. Kadalasang XLIFF o PO ang gusto ng mga translator at TMS platform. Kapag kailangan ninyong magbahagi ng strings sa pagitan ng mga platform, nauuwi ito sa pag-copy-paste sa iba-ibang format, pagsusulat ng one-off script, o manu-manong pagre-restructure ng mga file. Nakakapagod, madaling magkamali, at nasisira tuwing may lalabas na bagong format.
Ang Solusyon
Ang i18n-convert ay isang CLI tool na nagko-convert sa pagitan ng 32+ i18n file format. Awtomatiko nitong nade-detect ang input format, pinananatili ang mas maraming istruktura hangga't maaari, at binabalaan kayo kapag may conversion na mawawalan ng data (tulad ng plurals sa CSV).
# 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 jsonAwtomatikong pagtukoy
Awtomatikong nade-detect ang input format mula sa file extension at nilalaman. Walang kailangang flag.
Lossless Kapag Posible
Pinananatili ang metadata, mga komento, at plural forms kapag sinusuportahan ng target format ang mga ito.
Mga Babala sa Pagkawala ng Data
Kapag may conversion na magdudulot ng pagkawala ng impormasyon, makakakuha kayo ng malinaw na babala bago maisulat ang anumang file.
Pag-install
I-install sa pamamagitan ng npm para sa pinakamadaling setup, Homebrew sa macOS, o buuin mula sa source gamit ang Cargo.
npm install -g @i18n-agent/i18n-convertMga Karaniwang Conversion
Karamihan sa mga team ay paulit-ulit na nangangailangan ng ilang conversion: JSON papuntang Android XML para sa mobile, PO papuntang JSON para sa web, at XLIFF round-trips para sa handoff sa translator. Narito ang ilang karaniwang pattern.
# 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/Mga Sinusuportahang Format
Sinusuportahan ng i18n-convert ang 32+ format sa mga kategoryang mobile, web, localization standards, at data exchange.
Mobile
| 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 |
Web
| 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 |
Mga Pamantayan sa Localization
| 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 |
Palitan ng Data
| Format | Extension | Flag |
|---|---|---|
| CSV | .csv | --to csv |
| TSV | .tsv | --to tsv |
| Excel | .xlsx | --to xlsx |
Mga Babala sa Pagkawala ng Data
Hindi pare-pareho ang lahat ng format. Sinusuportahan ng XLIFF ang notes, mga context, at mga plural form. Wala ang mga iyon sa CSV. Kapag nag-convert kayo mula sa mas mayaman na format papunta sa mas simple, sasabihin ng i18n-convert nang eksakto kung ano ang mawawala.
$ 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-runIntegrasyon sa CI
I-automate ang pagsi-sync ng format sa inyong CI/CD pipeline. Kapag nagbago ang source translation file, awtomatikong i-regenerate ang lahat ng derived format para manatiling naka-sync ang mga file para sa mobile, web, at translator.
# .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 pushSubukan ang i18n Agent Ngayon
I-drop dito ang inyong translation file
JSON, YAML, PO, XML, CSV, Markdown, Properties
o i-click para mag-browse
Mga target language