Einstieg
Sprachen und Übersetzungen
Flowplan gibt es in drei Sprachen: Deutsch, Englisch und Französisch. Weitere Sprachen lassen sich ohne Änderungen am Code der App hinzufügen – mit jedem Übersetzungswerkzeug, das JSON-Dateien versteht.
Sprache wählen
Flowplan folgt der Sprache deines Browsers; Sprachen, die Flowplan nicht kennt, zeigen Englisch. Unter Einstellungen → Darstellung & Sprache → Sprache wählst du aus der Liste eine Sprache (mit Flagge) – sie gilt dann auf allen Geräten, auch für E-Mails und Push-Hinweise; Automatisch (folgt dem Browser) nimmt die Festlegung zurück. Auf der Anmeldeseite öffnet der kleine Knopf unten rechts (z. B. 🇩🇪 DE) ein Menü mit allen Sprachen.
Datum, Uhrzeit und Zahlen folgen der Sprache (Französisch: fr-FR, z. B. „15 oct. 2026“ und „2 400,5“). Beim Rechnen in Notizen gilt das Dezimalkomma auch für Französisch.
Was du selbst anlegst – Seiten, Datenbanken, Eigenschaften –, bleibt in der Sprache, in der es entstanden ist. Vorlagen und Beispielinhalte gibt es auf Deutsch und Englisch; französische Konten bekommen die englischen.
Wie die Übersetzung funktioniert
Deutsch und Englisch stehen direkt im Code nebeneinander. Jede weitere Sprache ist ein Katalog im Ordner locales/ der App, der den englischen Text auf die Übersetzung abbildet:
{
"Sign in": "Se connecter",
"{0} commented on “{1}”": "{0} a commenté « {1} »"
}locales/en.jsonenthält alle Texte der App (über 3.500) und ist die Vorlage für Übersetzungswerkzeuge. Die Datei wird erzeugt, nicht von Hand bearbeitet.{0},{1}… stehen für Werte wie Namen oder Zahlen. Sie müssen in der Übersetzung vorkommen, ihre Reihenfolge darf sich ändern.- Ein leerer oder fehlender Eintrag zeigt den englischen Text – eine Sprache kann also Schritt für Schritt wachsen, und neue Texte der App brechen nie etwas.
Eine Sprache hinzufügen
Katalog anlegen, z. B. für Italienisch:
npm run i18n -- --add itDas erzeugt
locales/it.jsonmit allen Texten und leeren Übersetzungen.Übersetzen – von Hand oder mit einem Werkzeug wie Weblate, Crowdin, POEditor oder Lokalise (Format „JSON key-value“ bzw. „i18next JSON“, Quelldatei
locales/en.json). Maschinelle Übersetzung (z. B. DeepL) eignet sich als Entwurf; Platzhalter und HTML-Tags bitte unverändert lassen.Sprache anmelden: in
lib/i18n.tsunterLANGUAGESmit Namen und Datumsformat (it: { name: "Italiano", tag: "it-IT" }) und inlib/i18n-catalogs.tsden Katalog importieren.Prüfen:
npm run i18n -- --check # Fortschritt und falsche Platzhalter npm run i18n -- --check --missing # was noch fehlt, mit Fundstelle im Code
Die Sprache erscheint danach in der Auswahl auf der Anmeldeseite und im Profil, und Browser in dieser Sprache bekommen sie automatisch.
Kataloge aktuell halten
Nach Änderungen an Texten im Code sammelt npm run i18n alle Texte neu: neue kommen leer in jeden Katalog, nicht mehr verwendete fallen heraus, vorhandene Übersetzungen bleiben. Die Tests melden fehlende Übersetzungen nur als Hinweis; falsche Platzhalter lassen sie fehlschlagen.
Texte für den Code gibt es als t("Deutsch", "English") in Komponenten, tr() außerhalb davon und ct() für Inhalte, die der Server anlegt. Tabellen mit Textpaaren bekommen eine Markierung, damit npm run i18n sie findet, z. B. // i18n-table: 1 für [Deutsch, Englisch]-Paare.
Texterkennung
Die Texterkennung für gescannte PDFs und Bilder ist davon unabhängig: Sie erkennt Deutsch und Englisch, mit FLOWPLAN_OCR_LANGS=fra,eng auch Französisch (siehe Konfiguration).