Skip to main content

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.

Madaling umabot sa 5+ iba-ibang translation file format ang iisang mobile + web na proyekto. Ang mano-manong pagpapanatili ng pagkakasabay-sabay ng mga ito ay isang talong laban.

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

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

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

Terminal
npm install -g @i18n-agent/i18n-convert
Kasama sa npm package ang mga prebuilt binary para sa macOS, Linux, at Windows. Hindi kailangan ang Rust toolchain.

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

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/

Mga Sinusuportahang Format

Sinusuportahan ng i18n-convert ang 32+ format sa mga kategoryang mobile, web, localization standards, at data exchange.

Mobile

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

Web

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

Mga Pamantayan sa Localization

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

Palitan ng Data

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

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
Laging gamitin ang --dry-run bago mag-convert papunta sa mas simpleng format sa production. Ipinapakita nito ang bawat babala nang hindi nagsusulat ng anumang file.

Integrasyon 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
# .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
Pagsamahin ang i18n-convert at i18n-validate sa inyong CI pipeline. I-convert muna ang mga format, saka i-validate na kumpleto at well-formed ang lahat ng target file.

Subukan 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

Hindi kailangan ang signupInstant na estimate

Mga Madalas Itanong