Skip to main content
Babel Fishers. Localization on your terms.

PyPI Python versions License

Translate your app without breaking it.

Babel Fishers translates your localization files with the provider you choose. It protects placeholders and other parts that must never change. You pay your provider directly, and only for what you use.

Full documentation, including guides for every feature, lives at gycks.github.io/babelfishers.

Install

pip install babelfishers

Requires Python 3.11 or newer.

Quickstart

babelfishers init
babelfishers translate --dry-run
babelfishers translate

init asks for your source locale, your target locales and a translation provider, then writes babelfishers.toml. Add the files to translate under [resources.<format>], set your provider's API key as an environment variable, and run translate.

See the Quickstart for the full walkthrough.

[locale]
source = "en"
targets = ["fr", "de", "es"]

[engine]
provider = "deepl"

[resources.json]
paths = ["locales/[source]/*.json"]

What you get

  • Ten file formats. JSON, HTML, YAML, Java properties, Android strings, gettext, Apple strings, Flutter ARB, XLIFF, and .NET resx. Each parser follows its own format's rules.
  • Nine translation providers. DeepL, Azure, Google Cloud Translation, LibreTranslate, OpenAI, Anthropic, Google Gemini, Mistral, and DeepSeek. Pick one as your default, or set a different provider per group of files.
  • Placeholders stay intact. Variables such as %s and {name}, and plural rules, are protected before translation and checked afterward.
  • Glossaries. Keep terms untranslated, fix their translation per language, or pass extra context to the provider.
  • A local translation memory. Text that was translated once is never sent to a provider twice.
  • A dry run. translate --dry-run shows what would happen without calling a provider or writing a file.
  • Continuous integration. babelfishers ci runs a translation in your pipeline and opens or updates a pull request with the result, for GitHub Actions and GitLab CI/CD.

How it works

Babel Fishers reads your project from one TOML file. It parses each source file once, protects placeholders and glossary terms, sends only the translatable text to your chosen provider, and writes the result back in the same format as the source.

You run Babel Fishers yourself, on your own files, with your own account at the provider you choose. No file has to leave your machine unless you pick a cloud provider. With a self-hosted LibreTranslate server, none does.

See How it works for the full picture.

Documentation

Contributing

This project is still young and worked on when time allows. If you find a bug or have an idea, open an issue and I will take a look.

License

Licensed under the Apache License, Version 2.0.

Metadata

Release files for babelfishers 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for babelfishers 0.1.2
File Size Uploaded
babelfishers-0.1.2.tar.gz 64.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for babelfishers 0.1.2
File Interpreter ABI Platform
babelfishers-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 168.6 kB

Release files / babelfishers-0.1.2.tar.gz

Download URL babelfishers-0.1.2.tar.gz
Size 64.0 kB
Tags Source
SHA-256 checksum
How to use checksums
4426149fadd9e218274d19fe7b291ef51b8e916e2ae50cf9672b919fc268acd5
BLAKE2b-256 checksum
How to use checksums
cc28063b6c47fb9873380c689c8753e8147a3c84fcc52a5bbd234790578fcb93
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.

Transparency log

Release files / babelfishers-0.1.2-py3-none-any.whl

Download URL babelfishers-0.1.2-py3-none-any.whl
Size 104.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8be96c0244d4f39d7cf60e36126af628bdaea9887cba23555536fca66c500e83
BLAKE2b-256 checksum
How to use checksums
9c3ab9e4013da129f4f76b466d03e3f53d49fc6d4520b2959bc0a66c2ca2fcdf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.

Transparency log

Release history Release notifications | RSS feed

0.1.3

2 release files

This release

0.1.2 This release

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page