gitwtfhub

wtf is deepl-i18n?

lancedelgardo/deepl-i18n — explained in plain English

Analysis updated 2026-05-18

0PythonAudience · developerComplexity · 2/5Setup · easy

TL;DR

A command line tool that translates your app's JSON, YAML, and other localization files using the DeepL API, filling in only the missing keys.

Mindmap

mindmap
  root((repo))
    What it does
      Translates locale files
      Fills missing keys
      Protects placeholders
    Tech stack
      Python
      DeepL API
    Use cases
      App localization
      CI translation checks
      Multi-language files
    Audience
      Developers
      i18n maintainers

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Why would anyone build with this?

REASON 1

Translate a source language JSON file into several target languages while preserving existing translations.

REASON 2

Estimate translation cost and free-tier fit with a dry run before spending any DeepL quota.

REASON 3

Add a CI check step that fails the build if translations are missing or placeholders got corrupted.

REASON 4

Automatically retranslate localization files whenever the source file changes using watch mode.

What's in the stack?

PythonDeepL APICLI

How it stacks up

lancedelgardo/deepl-i18n0xallam/my-recipe0xhassaan/nn-from-scratch
Stars00
LanguagePythonPythonPython
Last pushed2022-11-22
MaintenanceDormant
Setup difficultyeasymoderatemoderate
Complexity2/52/54/5
Audiencedevelopergeneraldeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you spin it up?

Difficulty · easy Time to first run · 30min

Requires a DeepL API key, the free tier covers 500,000 characters per month.

Wtf does this do

deepl-i18n is a command line tool that translates the JSON, YAML, and other localization files used by apps into multiple languages, using the DeepL translation API. It is an unofficial project, not affiliated with DeepL SE. You point it at a file in your source language, list the languages you want as output, and it fills in only the keys that are missing, leaving existing translations untouched and removing keys that are no longer needed. The tool is careful about not wasting your translation quota. Identical strings that repeat across your file, like the word OK or Cancel, are only sent to DeepL once per run and then reused everywhere they appear, so you are not billed twice for the same text. It also protects placeholders such as double curly brace variables from being mangled or accidentally merged into surrounding words during translation, and checks afterward that they survived intact. The placeholder pattern is configurable if your project uses a different style like percent s or numbered braces. Beyond plain JSON, it understands nested YAML files, flat Java properties files, iOS strings files, Flutter ARB files, Android XML resources, and CSV, detecting the format automatically from the file extension or letting you force one. You can set DeepL's formality level, pass a short context description so DeepL picks better terminology, and choose between a quality optimized or latency optimized translation model. Before spending any quota, a dry run shows exactly how many keys and characters would be translated and whether that fits inside DeepL's free tier of 500,000 characters a month, without needing an API key at all. There is also a watch mode that retranslates automatically whenever your source file changes, and a check command meant for continuous integration that validates existing translations and placeholder integrity, exiting with an error code if anything is broken. The only setup required is Python 3.10 or later, a DeepL API key supplied through an environment variable or a local file, and the deepl package, which is the tool's only dependency.

Yoink these prompts

Prompt 1
Show me how to install deepl-i18n and set up my DeepL API key in a .env file.
Prompt 2
Help me write a config.json for deepl-i18n that translates locales/en.json into German, French, and Spanish.
Prompt 3
Run a dry run with deepl-i18n to see how many characters my translation would cost.
Prompt 4
Set up a CI step using deepl-i18n check to validate my translation files automatically.

Frequently asked questions

wtf is deepl-i18n?

A command line tool that translates your app's JSON, YAML, and other localization files using the DeepL API, filling in only the missing keys.

What language is deepl-i18n written in?

Mainly Python. The stack also includes Python, DeepL API, CLI.

How hard is deepl-i18n to set up?

Setup difficulty is rated easy, with roughly 30min to a first successful run.

Who is deepl-i18n for?

Mainly developer.

View the repo → Decode another repo

This repo across BitVibe Labs

Don't trust strangers blindly. Verify against the repo.