AI localization CLI — translate JSON/YAML/.strings/.po/ARB/Android XML into 42 languages
Project description
KAERIS i18n — CLI
AI localization from your terminal. Translate your app's strings files into 42 languages — locally or in CI/CD. Format-aware, placeholder-safe, and incremental (only new keys).
- Zero dependencies — pure Python stdlib, installs in a second
- 6 formats — JSON, YAML,
.strings,.po, ARB, Android XML - Incremental —
--only-newtranslates just the keys you added, merges the rest - CI-ready — GitHub Action included; open a PR with fresh translations on every push
Install
pip install kaeris
# or, without installing:
pipx run kaeris --help
Quick start
# Translate a whole file into Spanish, French and Japanese
kaeris translate locales/en.json --langs es,fr,ja --out locales
# Only translate keys that are missing from the existing target files
kaeris translate locales/en.json --langs es,fr,ja --out locales --only-new
# List all supported languages
kaeris languages
Output files are written next to the source (or into --out), named by language:
es.json, fr.json, ja.json (or values-es/strings.xml for Android, etc.).
Authentication & tiers
| Tier | How | Limit |
|---|---|---|
| Free (anonymous) | no key | 10,000 chars/file |
| Pro / Team | --key kaerisp_… or KAERIS_API_KEY |
200k / 500k chars/file |
| Lifetime (BYOK) | --key and --openrouter-key sk-or-… |
unlimited (you pay OpenRouter for tokens) |
export KAERIS_API_KEY=kaerisp_xxxxxxxx
export KAERIS_OPENROUTER_KEY=sk-or-v1-xxxx # Lifetime/BYOK only
kaeris translate en.json --langs de,uk
Get a key at https://kaeris.dev/pricing.html. A free OpenRouter key: https://openrouter.ai/keys.
CI/CD (GitHub Actions)
Translate new keys and open a PR automatically on every push — see
translate.example.yml:
- uses: kaeris-dev/i18n_tool/.github/actions/kaeris-translate@main
with:
source: locales/en.json
languages: es,fr,de,ja
out: locales
only-new: "true"
How incremental mode works
--only-new (JSON) parses your source and each existing translation, finds the keys present
in the source but missing from the target, translates only those, and merges them back —
preserving your existing translations and any non-string values (numbers, booleans). No more
re-translating (and re-paying for) the whole file every time you add one string.
Environment variables
KAERIS_API_KEY— API keyKAERIS_OPENROUTER_KEY— OpenRouter key (BYOK)KAERIS_API_URL— override the API base URLNO_COLOR— disable coloured output
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file kaeris-0.1.1.tar.gz.
File metadata
- Download URL: kaeris-0.1.1.tar.gz
- Upload date:
- Size: 8.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9f9f6364caaef0edbf483e3601e5c7cb31a8b2755223796993955e269bf44067
|
|
| MD5 |
1c2f352e71e89f0fe3ba7cef64439238
|
|
| BLAKE2b-256 |
241fd44923ba06f8d6d60a774a1955be18f66d8342abb8443ee017fb46580eec
|
File details
Details for the file kaeris-0.1.1-py3-none-any.whl.
File metadata
- Download URL: kaeris-0.1.1-py3-none-any.whl
- Upload date:
- Size: 8.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
629764f429e3579c4785f8471ee49ef372e348821ffb245877088a56f0a73cc5
|
|
| MD5 |
033601ccee8cc48b87ec0940560259d3
|
|
| BLAKE2b-256 |
1cee6e955a743cbd059224247e5f717d045eba66324fbb4a9fc54e01ab21c483
|