Zum Inhalt springen

Übersetzungen von Vorlagen

Eine Vorlage lässt sich in mehreren Sprachen versenden. Sie hat eine Standardsprache und bis zu 29 Sprachvarianten (Übersetzungen). Die ID der Vorlage ist in jeder Sprache dieselbe – Ihr Code gibt nur die gewünschte Sprache an, zum Beispiel locale: 'de', und Frontmail wählt die passende Variante.

Jede Sprache ist möglich, nicht nur die acht Sprachen des Dashboards: Verwenden Sie ein BCP-47-Sprachtag wie hu, nl oder pt-BR.

Jede Variante hat eigene Werte für:

  • Betreff,
  • HTML-Inhalt,
  • Textversion (automatisch aus dem HTML der Variante erzeugt oder von Hand geschrieben),
  • Absendername – optional; lassen Sie ihn leer, um den Absendernamen der Standardsprache zu verwenden.

Alles andere wird einmal in der Standardsprache festgelegt und gilt für alle Sprachen: Empfänger (An, CC, BCC, Reply-To), Absenderadresse, die Parameter, CSS beim Speichern inline setzen, der E-Mail-Dienst, die Schutzeinstellungen, Anhänge, die automatische Antwort und das Sammeln von Kontakten.

Das ist Absicht: Die Sicherheitsregeln einer Vorlage – dynamische Empfänger, die Inhaltssperre, feste Absenderfelder und die Validierung der Parameter – liegen an einer Stelle, sodass eine Übersetzung sie nie lockern kann. Eine Variante kann nur Parameter verwenden, die es in der Standardsprache gibt.

Zum Hinzufügen und Bearbeiten von Übersetzungen brauchen Sie die Rolle Inhaber, Admin oder Entwickler.

  1. Öffnen Sie die Vorlage. Über den Tabs des Editors liegt die Leiste Sprachen mit der Standardsprache (gekennzeichnet mit Standard) und je einem Chip pro Variante.
  2. Klicken Sie auf Sprache hinzufügen.
  3. Wählen Sie unter Sprache eine Sprache aus der Liste oder geben Sie ihren Code ein (z. B. pt-BR) und wählen Sie „pt-BR“ verwenden.
  4. Wählen Sie unter Beginnen mit:
    • Kopie der Standardsprache – Sie übersetzen den Text selbst,
    • Maschinelle Übersetzung – übersetzt mit dem eigenen Anbieterschlüssel Ihrer Organisation (siehe Maschinelle Übersetzung); haben Sie mehrere Anbieter eingerichtet, wählen Sie den Anbieter,
    • Leer – leerer Betreff und leeres HTML.
  5. Klicken Sie auf Sprache hinzufügen, übersetzen oder prüfen Sie den Inhalt und klicken Sie auf Speichern.

Die neue Sprache ist ein Entwurf (gekennzeichnet mit neu), bis Sie sie speichern. Die maschinelle Übersetzung verwendet nur die gespeicherte Standardsprache – ungespeicherte Änderungen daran sind nicht enthalten.

Klicken Sie in der Leiste Sprachen auf eine Sprache, um den Editor darauf umzuschalten. Der Editor zeigt Sie bearbeiten die Übersetzung: … und funktioniert wie gewohnt:

  • Inhalt – Betreff und die Tabs HTML, Visuell und Text bearbeiten die Variante. Beispieldaten und die Vorschau sind gemeinsam, und die Vorschau rendert die Variante genau so, wie sie versendet wird. Parameter sind hier schreibgeschützt (Parameter gelten für alle Sprachen. Bearbeiten Sie sie in der Standardsprache.).
  • Einstellungen – nur Betreff, Absendername und die Einstellung der Textversion gehören zur Variante; gemeinsame Felder sind mit Gilt für alle Sprachen. gekennzeichnet.
  • Snippets und Test senden haben ein Feld Sprache, sodass Sie Code kopieren oder eine Test-E-Mail in jeder Sprache senden können.

Die Prüfungen vergleichen die Variante außerdem mit der Standardsprache: Ein Parameter, den es nur in der Übersetzung gibt, ist ein Fehler (fügen Sie ihn zuerst der Standardsprache hinzu); ein Parameter, der in der Standardsprache verwendet wird, in der Übersetzung aber fehlt, ist eine Warnung.

  • Veraltet – die Standardsprache wurde nach dem Speichern dieser Übersetzung erneut gespeichert, der Übersetzung könnte also etwas fehlen. Der Versand funktioniert trotzdem. Aktualisieren und speichern Sie die Übersetzung oder klicken Sie – wenn sie weiterhin passt – auf Als aktuell markieren.
  • Maschinell – die gespeicherte Version stammt aus einer maschinellen Übersetzung. Prüfen Sie sie, bevor Sie sich darauf verlassen.

Bei ausgewählter Variante bietet die Leiste außerdem Neu übersetzen (eine neue maschinelle Übersetzung der gespeicherten Standardsprache; gespeichert wird erst, wenn Sie auf Speichern klicken) und Sprache löschen. Wenn Sie eine Sprache löschen, werden auch ihre Versionen gelöscht, und E-Mails, die diese Sprache anfordern, werden in der Standardsprache versendet.

Jedes Speichern einer Übersetzung erzeugt eine neue Version dieser Übersetzung – jede Sprache hat ihre eigenen Versionsnummern. Bei ausgewählter Variante zeigt der Tab Versionen die Versionen der Übersetzung … mit Basiert auf (die Version der Standardsprache, auf deren Grundlage sie gespeichert wurde) und Herkunft (Manuell oder Maschinell). Versionen vergleichen und eine ältere mit Wiederherstellen zurückholen funktioniert genau wie bei der Standardsprache.

Eine Nachricht speichert immer die Sprache und die Version der Übersetzung, mit der sie gerendert wurde. E-Mails in der Warteschlange zurückgehaltener E-Mails werden mit den Versionen gesendet, die bei ihrer Annahme aktuell waren.

Die Standardsprache finden Sie unter Einstellungen → Allgemein → Standardsprache. Sie können jede Sprache wählen außer einer, für die bereits eine Variante existiert – löschen Sie diese Variante zuerst.

Die Sprache wählt immer der Absender ausdrücklich. Frontmail errät sie nicht aus dem Browser (Accept-Language) – übergeben Sie die Sprache des Besuchers selbst, wenn Sie das möchten.

Für ein angefordertes locale verwendet Frontmail:

  1. kein locale → die Standardsprache,
  2. exakte Übereinstimmung (Groß-/Kleinschreibung egal) → diese Sprache,
  3. dieselbe Basissprache → de-AT erhält de; pt erhält eine pt-…-Variante wie pt-BR,
  4. sonst → die Standardsprache.

Eine unbekannte Sprache ist kein Fehler – locale ist ein Wunsch. Nur ein fehlerhaftes Tag (z. B. "german!") wird mit 400 invalid_body abgelehnt.

Die Antwort nennt die tatsächlich verwendete Sprache:

{ "message_id": "msg_…", "status": "queued", "status_token": "…", "locale": "de" }

Fügen Sie locale zu POST /v1/send hinzu (und zu jeder Nachricht von POST /v1/send-batch):

{
"template_id": "tpl_01J9…",
"template_params": { "name": "Jana" },
"locale": "de"
}

POST /v1/send-form verwendet das reservierte Formularfeld fm_locale. Ein Feld namens locale bleibt ein gewöhnlicher Vorlagenparameter, bestehende Formulare funktionieren also weiter:

<select name="fm_locale">
<option value="en">English</option>
<option value="de">Deutsch</option>
</select>

Jedes SDK hat eine Option locale und gibt die verwendete Sprache in result.locale zurück.

Browser (@frontmail/browser) – sendForm sendet sie als fm_locale; ein eigenes Feld fm_locale im Formular hat Vorrang:

const result = await send('svc_01J9…', 'tpl_contact', { name: 'Jana' }, { locale: 'de' });
await sendForm('svc_01J9…', 'tpl_contact', '#contact', { locale: document.documentElement.lang });
console.log(result.locale); // 'de'

React (@frontmail/react) – die Prop locale von <FrontmailForm> oder options.locale bei send / sendForm. Vue und Svelte funktionieren genauso:

<FrontmailForm serviceId="svc_01J9…" templateId="tpl_contact" locale="de">…</FrontmailForm>
const { send } = useSendEmail('svc_01J9…', 'tpl_contact');
await send({ name: 'Jana' }, { locale: 'de' });

Node.js (@frontmail/node):

const { locale } = await frontmail.send({ templateId: 'tpl_order', params: { order_id: 'A-1042' }, locale: 'de' });
await frontmail.sendBatch([{ templateId: 'tpl_reminder', params: { name: 'Jana' }, locale: 'cs' }]);

Android / Kotlin (dev.frontmail:frontmail):

val result = frontmail.send(
"tpl_contact",
mapOf("name" to name),
options = SendOptions(locale = Locale.getDefault().toLanguageTag()),
)
println(result.locale) // "de"

iOS / Swift (Frontmail für Swift) – verwenden Sie Locale.preferredLanguages.first (z. B. de-AT); Locale.current.identifier verwendet _ und ist kein gültiges Tag:

let result = try await frontmail.send(
templateID: "tpl_contact",
params: ["name": "Jan"],
options: SendOptions(locale: Locale.preferredLanguages.first)
)
print(result.locale ?? "default") // "de"

Flutter / Dart (frontmail) – verwenden Sie toLanguageTag() (z. B. de-AT); Locale.toString() verwendet _ und ist kein gültiges Tag:

final result = await frontmail.send(
templateId: 'tpl_contact',
params: {'name': 'Jan'},
options: SendOptions(locale: Localizations.localeOf(context).toLanguageTag()),
);
print(result.locale ?? 'default'); // "de"

React Native verwendet send(params, { locale: 'de' }) aus useSendEmail. npx frontmail types listet die Sprachen jeder Vorlage auf und erzeugt dafür einen Typ – siehe Node.js.

Automatische Antworten, erneutes Senden und EmailJS

Abschnitt betitelt „Automatische Antworten, erneutes Senden und EmailJS“
  • Automatische Antworten folgen der Sprache der ursprünglichen Nachricht: Die Vorlage der automatischen Antwort wählt nach denselben Regeln ihre eigene Variante für diese Sprache (und fällt auf ihre Standardsprache zurück).
  • Erneut senden im Verlauf versendet die Nachricht noch einmal in derselben Sprache, mit der aktuellen Version der Übersetzung. Wurde diese Sprache inzwischen gelöscht, wird die Standardsprache verwendet.
  • Die EmailJS-kompatiblen Routen (/api/v1.0/email/…) und @frontmail/emailjs-compat senden immer die Standardsprache.

Die E-Mail wird in der Sprache gerendert, in der sie versendet wird. formatDate, formatNumber und formatMoney formatieren Datum, Zahlen und Beträge für diese Sprache (eine deutsche Variante gibt 1. Oktober 2026 und 49,00 € aus). Die Fußzeile Gesendet mit Frontmail im Free-Tarif erscheint in der Sprache der E-Mail, wenn es eine der acht Sprachen des Dashboards ist, sonst auf Englisch.

Frontmail kann eine Vorlage für Sie mit OpenAI, Anthropic, Google Gemini oder DeepL übersetzen – mit dem eigenen API-Schlüssel Ihrer Organisation („Bring Your Own Key“). Frontmail übersetzt nie auf eigene Rechnung, und die maschinelle Übersetzung kostet keine Frontmail-Credits; der Anbieter rechnet die Nutzung über Ihr Konto ab.

Die maschinelle Übersetzung wird immer von Hand gestartet: Sie läuft nur, wenn Sie in Sprache hinzufügen die Option Maschinelle Übersetzung wählen oder auf Neu übersetzen klicken, und das Ergebnis ist ein Entwurf, den Sie vor dem Speichern prüfen.

Nur Inhaber und Admins können Schlüssel hinzufügen oder ändern. Entwickler sehen, welche Anbieter eingerichtet sind (schreibgeschützt), und können damit übersetzen.

  1. Öffnen Sie Einstellungen → Maschinelle Übersetzung.
  2. Klicken Sie neben dem Anbieter auf Schlüssel hinzufügen. …-Schlüssel erstellen öffnet die Seite des Anbieters für API-Schlüssel.
  3. Fügen Sie den API-Schlüssel ein. Für OpenAI, Anthropic und Gemini können Sie ein Modell (optional) angeben; lassen Sie es leer für das Standardmodell des Anbieters. Bei DeepL gibt es keine Modellauswahl.
  4. Klicken Sie auf Schlüssel speichern. Frontmail prüft den Schlüssel vor dem Speichern mit einer kleinen Anfrage beim Anbieter.

Bei mehreren Anbietern bestimmen Sie mit Als Standard festlegen, welcher vorausgewählt ist. Schlüssel ersetzen und Entfernen finden Sie neben jedem eingerichteten Anbieter; wenn Sie einen Schlüssel entfernen, bleiben bereits gespeicherte Übersetzungen erhalten.

Der Schlüssel wird verschlüsselt gespeichert und nie wieder angezeigt – das Dashboard zeigt nur seine letzten vier Zeichen. Jede Änderung wird im Audit-Log festgehalten.

Nur Betreff, HTML, Textversion und Absendername der gespeicherten Standardsprache – die Textversion nur, wenn sie von Hand geschrieben ist (eine automatische wird aus dem übersetzten HTML erzeugt). Nichts anderes verlässt Frontmail: keine Empfänger, Parameterwerte, Beispieldaten, Kontakte oder Nachrichtenverläufe. Die Anfrage geht direkt von den Servern von Frontmail an die offizielle API des Anbieters, und für den Inhalt gelten die Bedingungen des Anbieters.

Frontmail bittet den Anbieter, Handlebars-Ausdrücke ({{name}}, {{#if …}}), HTML-Tags und -Attribute, Links und E-Mail-Adressen unverändert zu lassen, und prüft das anschließend: Die Übersetzung muss genau dieselben Handlebars-Ausdrücke und dieselben Link- und Bild-URLs enthalten wie die Vorlage. Ist das nicht der Fall, wird das Ergebnis verworfen mit Die maschinelle Übersetzung hat Parameter, Links oder die HTML-Struktur verändert und wurde daher nicht übernommen. (translation_invalid) – versuchen Sie es erneut oder mit einem anderen Anbieter. Es wird nie etwas teilweise gespeichert.

Weitere Fehler: translation_not_configured (kein Schlüssel eingerichtet), translation_provider_auth (der Anbieter hat den Schlüssel abgelehnt) und translation_provider_error (der Anbieter ist fehlgeschlagen – versuchen Sie es später erneut).

  • 30 maschinelle Übersetzungen pro Stunde und Organisation.
  • 60.000 Zeichen Ausgangsinhalt pro Übersetzung; längere Vorlagen erhalten payload_too_large.
  • Eine Übersetzung hat 60 Sekunden Zeit.
  • Die Kosten berechnet der Anbieter dem Konto, zu dem der Schlüssel gehört. Übersetzen verbraucht keine Frontmail-Credits, und eine übersetzte E-Mail kostet beim Versand wie jede andere einen Credit.
  • 30 Sprachen pro Vorlage – die Standardsprache plus 29 Varianten.
  • Für eine Variante gelten dieselben Größenlimits wie für den Inhalt der Vorlage selbst.
  • Sprachtags sind höchstens 35 Zeichen lang.

Exportieren (.json) enthält alle Sprachvarianten, und Importieren legt sie in der neuen Vorlage wieder an. Ältere Exportdateien ohne Varianten lassen sich weiterhin wie bisher importieren.