{% extends "base.html" %} {% block content %} {% if key_ok %}
DeepL API key found
Preview & check work without a key — translating needs one.
{% else %}
!
No DeepL API key
Preview & check work without a key. To translate, add a key in Settings (it is stored in .env).
{% endif %} {% if config_error %} {# Erststart (kein config.json — z.B. nach Doppelklick der .exe). Kein CLI-Fehlertext, sondern zwei klare Wege: der Wizard fuer "einfach ausprobieren" (kein Setup), und der Projektmodus fuer wiederkehrende Uebersetzung eigener Dateien. #}

Welcome to deepl-i18n

Translate localization files with DeepL. Two ways to start:

Just try it
Upload a file, pick target languages, download the translations as a ZIP. No config, nothing to set up.
Upload a file & translate
Set up a project
Point a config.json at the locale files in your repo, then re-translate only what's missing — again and again.
Set up a config.json →

No config.json at {{ config_path }} yet — that's fine for the upload wizard.

{% else %}

Configured targets · config.json

{% if not targets %} {# config.json existiert, hat aber kein Target — sonst waere das Dashboard hier leer. #}
No targets yet
A target points at a source file and an output folder. Add one in Settings to translate it from here — or skip the config and use the upload wizard.
Add a target in Settings Use the upload wizard
{% endif %}
{% for t in targets %}
{{ t.name }}
{{ t.input_path }} → {{ t.output_dir }}
{% if t.key_count is none %} Master file not readable {% else %} {{ t.key_count|num }} keys {% endif %}
{# Ein Formular fuer alle drei Aktionen, damit language/override/backup ueberall gelten. Preview & Check gehen per GET (formaction+formmethod) an ihre Routen, Translate per POST an das action des Formulars. Frueher waren Preview/Check blosse Links, die den override-Haken nicht mitgeschickt haben. #}
{% endfor %}
{% endif %} {% endblock %}