feat: add email templates with placeholder variables and composer integration

- Reusable email templates with local storage persistence
- Dynamic placeholder variables ({{recipientName}}, {{date}}, etc.) with auto-fill
- Template manager modal with category filtering and search
- Template picker integrated in composer toolbar (Ctrl+Shift+T)
- Settings tab for template management
- 48 unit tests for template utilities
- i18n support for all 8 languages
This commit is contained in:
Matthieu MALVACHE
2026-02-17 01:35:26 +01:00
committed by Matthieu MALVACHE
parent b65b2f26df
commit 2636a88820
23 changed files with 2422 additions and 36 deletions
+71 -4
View File
@@ -288,7 +288,9 @@
"subject": "Betreff: {subject}",
"to": "An: {recipients}"
},
"remove_sub_address": "Sub-Adresse entfernen"
"remove_sub_address": "Sub-Adresse entfernen",
"use_template": "Vorlage",
"save_as_template": "Als Vorlage speichern"
},
"common": {
"loading": "Lädt...",
@@ -342,7 +344,11 @@
"vacation_save_failed": "Fehler beim Speichern der Abwesenheitsnotiz-Einstellungen",
"filters_saved": "Filter erfolgreich gespeichert",
"filters_save_failed": "Fehler beim Speichern der Filter",
"filters_deleted": "Filterregel gelöscht"
"filters_deleted": "Filterregel gelöscht",
"templates_exported": "Vorlagen erfolgreich exportiert",
"templates_imported": "{count, plural, one {# Vorlage importiert} other {# Vorlagen importiert}}",
"templates_import_errors": "Einige Vorlagen konnten nicht importiert werden",
"templates_import_empty": "Keine Vorlagen in der Datei gefunden"
},
"date": {
"today": "Heute",
@@ -398,7 +404,8 @@
"vacation": "Abwesenheitsnotiz",
"advanced": "Erweitert",
"calendar": "Kalender",
"filters": "Filter"
"filters": "Filter",
"templates": "Vorlagen"
},
"appearance": {
"title": "Darstellung",
@@ -782,6 +789,39 @@
"conditions_count": "{count, plural, one {# Bedingung} other {# Bedingungen}}",
"actions_count": "{count, plural, one {# Aktion} other {# Aktionen}}"
}
},
"templates": {
"title": "E-Mail-Vorlagen",
"description": "Erstellen Sie wiederverwendbare E-Mail-Vorlagen mit Platzhaltervariablen",
"add": "Neue Vorlage",
"edit": "Vorlage bearbeiten",
"name": "Vorlagenname",
"name_placeholder": "z.B.: Nachfass-E-Mail",
"category": "Kategorie",
"category_placeholder": "z.B.: Arbeit, Persönlich",
"subject": "Betreff",
"subject_placeholder": "E-Mail-Betreffzeile",
"body": "Text",
"body_placeholder": "E-Mail-Inhalt...",
"recipients_placeholder": "email@example.com",
"identity": "Senden als",
"default_identity": "Standard-Identität",
"favorite": "Favorit",
"cancel": "Abbrechen",
"create": "Erstellen",
"update": "Aktualisieren",
"confirm_delete": "Löschen",
"no_templates": "Keine Vorlagen",
"manage": "Vorlagen verwalten",
"count": "{count, plural, one {# Vorlage} other {# Vorlagen}}",
"export_import": "Exportieren und Importieren",
"export_import_description": "Sichern Sie Ihre Vorlagen oder übertragen Sie sie auf ein anderes Gerät",
"export": "Exportieren",
"import": "Importieren",
"validation": {
"empty": "Vorlagenname ist erforderlich",
"too_long": "Vorlagenname darf maximal 200 Zeichen haben"
}
}
},
"errors": {
@@ -825,7 +865,8 @@
"navigation": "Navigation",
"actions": "E-Mail-Aktionen",
"global": "Global",
"threads": "Unterhaltungen"
"threads": "Unterhaltungen",
"composer": "Verfassen"
},
"navigation": {
"next_email": "Nächste E-Mail",
@@ -853,6 +894,9 @@
},
"threads": {
"expand_collapse": "Unterhaltung erweitern/einklappen"
},
"composer": {
"template_picker": "Vorlagenauswahl öffnen"
}
},
"threads": {
@@ -931,6 +975,29 @@
"subaddress_tag": "+{tag}"
}
},
"templates": {
"picker_title": "Vorlage wählen",
"search_placeholder": "Vorlagen suchen...",
"section_favorites": "Favoriten",
"section_recent": "Zuletzt verwendet",
"section_uncategorized": "Sonstige",
"no_templates": "Keine Vorlagen",
"no_results": "Keine Vorlagen gefunden",
"fill_placeholders": "Platzhalterwerte ausfüllen",
"enter_value": "Wert eingeben...",
"preview": "Vorschau",
"insert_with_values": "Mit Werten einfügen",
"insert_raw": "Unverändert einfügen",
"copy_suffix": "(Kopie)",
"placeholder": "Variable",
"placeholders": {
"recipient_name": "Name des Empfängers",
"company": "Firmenname",
"date": "Heutiges Datum",
"day_of_week": "Wochentag",
"sender_name": "Ihr Name"
}
},
"contacts": {
"title": "Kontakte",
"search_placeholder": "Kontakte suchen...",
+71 -4
View File
@@ -288,7 +288,9 @@
"subject": "Subject: {subject}",
"to": "To: {recipients}"
},
"remove_sub_address": "Remove sub-address"
"remove_sub_address": "Remove sub-address",
"use_template": "Template",
"save_as_template": "Save as Template"
},
"common": {
"loading": "Loading...",
@@ -342,7 +344,11 @@
"vacation_save_failed": "Failed to save vacation responder settings",
"filters_saved": "Filters saved successfully",
"filters_save_failed": "Failed to save filters",
"filters_deleted": "Filter rule deleted"
"filters_deleted": "Filter rule deleted",
"templates_exported": "Templates exported successfully",
"templates_imported": "{count, plural, one {# template} other {# templates}} imported",
"templates_import_errors": "Some templates could not be imported",
"templates_import_empty": "No templates found in the file"
},
"date": {
"today": "Today",
@@ -398,7 +404,8 @@
"vacation": "Vacation Responder",
"advanced": "Advanced",
"calendar": "Calendar",
"filters": "Filters"
"filters": "Filters",
"templates": "Templates"
},
"appearance": {
"title": "Appearance",
@@ -782,6 +789,39 @@
"conditions_count": "{count, plural, one {# condition} other {# conditions}}",
"actions_count": "{count, plural, one {# action} other {# actions}}"
}
},
"templates": {
"title": "Email Templates",
"description": "Create reusable email templates with placeholder variables",
"add": "New Template",
"edit": "Edit Template",
"name": "Template Name",
"name_placeholder": "e.g., Follow-up email",
"category": "Category",
"category_placeholder": "e.g., Work, Personal",
"subject": "Subject",
"subject_placeholder": "Email subject line",
"body": "Body",
"body_placeholder": "Email body content...",
"recipients_placeholder": "email@example.com",
"identity": "Send As",
"default_identity": "Default identity",
"favorite": "Favorite",
"cancel": "Cancel",
"create": "Create",
"update": "Update",
"confirm_delete": "Delete",
"no_templates": "No templates yet",
"manage": "Manage Templates",
"count": "{count, plural, one {# template} other {# templates}}",
"export_import": "Export & Import",
"export_import_description": "Back up your templates or transfer them to another device",
"export": "Export",
"import": "Import",
"validation": {
"empty": "Template name is required",
"too_long": "Template name must be 200 characters or less"
}
}
},
"errors": {
@@ -825,7 +865,8 @@
"navigation": "Navigation",
"actions": "Email Actions",
"global": "Global",
"threads": "Threads"
"threads": "Threads",
"composer": "Composer"
},
"navigation": {
"next_email": "Next email",
@@ -853,6 +894,9 @@
},
"threads": {
"expand_collapse": "Expand/collapse thread"
},
"composer": {
"template_picker": "Open template picker"
}
},
"threads": {
@@ -931,6 +975,29 @@
"subaddress_tag": "+{tag}"
}
},
"templates": {
"picker_title": "Choose a Template",
"search_placeholder": "Search templates...",
"section_favorites": "Favorites",
"section_recent": "Recent",
"section_uncategorized": "Other",
"no_templates": "No templates yet",
"no_results": "No templates found",
"fill_placeholders": "Fill Placeholder Values",
"enter_value": "Enter a value...",
"preview": "Preview",
"insert_with_values": "Insert with Values",
"insert_raw": "Insert Raw",
"copy_suffix": "(copy)",
"placeholder": "Variable",
"placeholders": {
"recipient_name": "Recipient name",
"company": "Company name",
"date": "Current date",
"day_of_week": "Day of the week",
"sender_name": "Your name"
}
},
"contacts": {
"title": "Contacts",
"search_placeholder": "Search contacts...",
+71 -4
View File
@@ -288,7 +288,9 @@
"subject": "Asunto: {subject}",
"to": "Para: {recipients}"
},
"remove_sub_address": "Eliminar sub-dirección"
"remove_sub_address": "Eliminar sub-dirección",
"use_template": "Plantilla",
"save_as_template": "Guardar como plantilla"
},
"common": {
"loading": "Cargando...",
@@ -342,7 +344,11 @@
"vacation_save_failed": "Error al guardar la configuración de respuesta automática",
"filters_saved": "Filtros guardados correctamente",
"filters_save_failed": "Error al guardar los filtros",
"filters_deleted": "Regla de filtrado eliminada"
"filters_deleted": "Regla de filtrado eliminada",
"templates_exported": "Plantillas exportadas correctamente",
"templates_imported": "{count, plural, one {# plantilla importada} other {# plantillas importadas}}",
"templates_import_errors": "Algunas plantillas no se pudieron importar",
"templates_import_empty": "No se encontraron plantillas en el archivo"
},
"date": {
"today": "Hoy",
@@ -398,7 +404,8 @@
"vacation": "Respuesta automática",
"advanced": "Avanzado",
"calendar": "Calendario",
"filters": "Filtros"
"filters": "Filtros",
"templates": "Plantillas"
},
"appearance": {
"title": "Apariencia",
@@ -782,6 +789,39 @@
"conditions_count": "{count, plural, one {# condición} other {# condiciones}}",
"actions_count": "{count, plural, one {# acción} other {# acciones}}"
}
},
"templates": {
"title": "Plantillas de correo",
"description": "Crea plantillas reutilizables con variables de marcador de posición",
"add": "Nueva plantilla",
"edit": "Editar plantilla",
"name": "Nombre de la plantilla",
"name_placeholder": "ej.: Correo de seguimiento",
"category": "Categoría",
"category_placeholder": "ej.: Trabajo, Personal",
"subject": "Asunto",
"subject_placeholder": "Línea de asunto del correo",
"body": "Cuerpo",
"body_placeholder": "Contenido del correo...",
"recipients_placeholder": "email@example.com",
"identity": "Enviar como",
"default_identity": "Identidad predeterminada",
"favorite": "Favorito",
"cancel": "Cancelar",
"create": "Crear",
"update": "Actualizar",
"confirm_delete": "Eliminar",
"no_templates": "Sin plantillas",
"manage": "Gestionar plantillas",
"count": "{count, plural, one {# plantilla} other {# plantillas}}",
"export_import": "Exportar e importar",
"export_import_description": "Haz una copia de seguridad de tus plantillas o transfiérelas a otro dispositivo",
"export": "Exportar",
"import": "Importar",
"validation": {
"empty": "El nombre de la plantilla es obligatorio",
"too_long": "El nombre de la plantilla no debe superar los 200 caracteres"
}
}
},
"errors": {
@@ -825,7 +865,8 @@
"navigation": "Navegación",
"actions": "Acciones de Correo",
"global": "Global",
"threads": "Conversaciones"
"threads": "Conversaciones",
"composer": "Redacción"
},
"navigation": {
"next_email": "Siguiente correo",
@@ -853,6 +894,9 @@
},
"threads": {
"expand_collapse": "Expandir/contraer conversación"
},
"composer": {
"template_picker": "Abrir selector de plantillas"
}
},
"threads": {
@@ -931,6 +975,29 @@
"subaddress_tag": "+{tag}"
}
},
"templates": {
"picker_title": "Elegir una plantilla",
"search_placeholder": "Buscar plantillas...",
"section_favorites": "Favoritos",
"section_recent": "Recientes",
"section_uncategorized": "Otros",
"no_templates": "Sin plantillas",
"no_results": "No se encontraron plantillas",
"fill_placeholders": "Completar valores de marcadores",
"enter_value": "Introduce un valor...",
"preview": "Vista previa",
"insert_with_values": "Insertar con valores",
"insert_raw": "Insertar sin completar",
"copy_suffix": "(copia)",
"placeholder": "Variable",
"placeholders": {
"recipient_name": "Nombre del destinatario",
"company": "Nombre de la empresa",
"date": "Fecha actual",
"day_of_week": "Día de la semana",
"sender_name": "Tu nombre"
}
},
"contacts": {
"title": "Contactos",
"search_placeholder": "Buscar contactos...",
+71 -4
View File
@@ -288,7 +288,9 @@
"subject": "Objet : {subject}",
"to": "À : {recipients}"
},
"remove_sub_address": "Retirer le sous-adressage"
"remove_sub_address": "Retirer le sous-adressage",
"use_template": "Modèle",
"save_as_template": "Enregistrer comme modèle"
},
"common": {
"loading": "Chargement...",
@@ -342,7 +344,11 @@
"vacation_save_failed": "Échec de l'enregistrement des paramètres du répondeur d'absence",
"filters_saved": "Filtres enregistrés avec succès",
"filters_save_failed": "Échec de l'enregistrement des filtres",
"filters_deleted": "Règle de filtrage supprimée"
"filters_deleted": "Règle de filtrage supprimée",
"templates_exported": "Modèles exportés avec succès",
"templates_imported": "{count, plural, one {# modèle importé} other {# modèles importés}}",
"templates_import_errors": "Certains modèles n'ont pas pu être importés",
"templates_import_empty": "Aucun modèle trouvé dans le fichier"
},
"date": {
"today": "Aujourd'hui",
@@ -398,7 +404,8 @@
"vacation": "Répondeur d'absence",
"advanced": "Avancé",
"calendar": "Calendrier",
"filters": "Filtres"
"filters": "Filtres",
"templates": "Modèles"
},
"appearance": {
"title": "Apparence",
@@ -782,6 +789,39 @@
"conditions_count": "{count, plural, one {# condition} other {# conditions}}",
"actions_count": "{count, plural, one {# action} other {# actions}}"
}
},
"templates": {
"title": "Modèles d'e-mails",
"description": "Créez des modèles d'e-mails réutilisables avec des variables",
"add": "Nouveau modèle",
"edit": "Modifier le modèle",
"name": "Nom du modèle",
"name_placeholder": "ex : E-mail de suivi",
"category": "Catégorie",
"category_placeholder": "ex : Travail, Personnel",
"subject": "Objet",
"subject_placeholder": "Objet de l'e-mail",
"body": "Corps",
"body_placeholder": "Contenu de l'e-mail...",
"recipients_placeholder": "email@example.com",
"identity": "Envoyer en tant que",
"default_identity": "Identité par défaut",
"favorite": "Favori",
"cancel": "Annuler",
"create": "Créer",
"update": "Mettre à jour",
"confirm_delete": "Supprimer",
"no_templates": "Aucun modèle",
"manage": "Gérer les modèles",
"count": "{count, plural, one {# modèle} other {# modèles}}",
"export_import": "Exporter et importer",
"export_import_description": "Sauvegardez vos modèles ou transférez-les sur un autre appareil",
"export": "Exporter",
"import": "Importer",
"validation": {
"empty": "Le nom du modèle est requis",
"too_long": "Le nom du modèle ne doit pas dépasser 200 caractères"
}
}
},
"errors": {
@@ -825,7 +865,8 @@
"navigation": "Navigation",
"actions": "Actions email",
"global": "Global",
"threads": "Conversations"
"threads": "Conversations",
"composer": "Rédaction"
},
"navigation": {
"next_email": "Email suivant",
@@ -853,6 +894,9 @@
},
"threads": {
"expand_collapse": "Développer/réduire la conversation"
},
"composer": {
"template_picker": "Ouvrir le sélecteur de modèles"
}
},
"threads": {
@@ -931,6 +975,29 @@
"subaddress_tag": "+{tag}"
}
},
"templates": {
"picker_title": "Choisir un modèle",
"search_placeholder": "Rechercher des modèles...",
"section_favorites": "Favoris",
"section_recent": "Récents",
"section_uncategorized": "Autres",
"no_templates": "Aucun modèle",
"no_results": "Aucun modèle trouvé",
"fill_placeholders": "Remplir les variables",
"enter_value": "Entrez une valeur...",
"preview": "Aperçu",
"insert_with_values": "Insérer avec les valeurs",
"insert_raw": "Insérer brut",
"copy_suffix": "(copie)",
"placeholder": "Variable",
"placeholders": {
"recipient_name": "Nom du destinataire",
"company": "Nom de l'entreprise",
"date": "Date du jour",
"day_of_week": "Jour de la semaine",
"sender_name": "Votre nom"
}
},
"contacts": {
"title": "Contacts",
"search_placeholder": "Rechercher des contacts...",
+71 -4
View File
@@ -288,7 +288,9 @@
"subject": "Oggetto: {subject}",
"to": "A: {recipients}"
},
"remove_sub_address": "Rimuovi sotto-indirizzo"
"remove_sub_address": "Rimuovi sotto-indirizzo",
"use_template": "Modello",
"save_as_template": "Salva come modello"
},
"common": {
"loading": "Caricamento...",
@@ -342,7 +344,11 @@
"vacation_save_failed": "Impossibile salvare le impostazioni del risponditore automatico",
"filters_saved": "Filtri salvati con successo",
"filters_save_failed": "Impossibile salvare i filtri",
"filters_deleted": "Regola di filtraggio eliminata"
"filters_deleted": "Regola di filtraggio eliminata",
"templates_exported": "Modelli esportati con successo",
"templates_imported": "{count, plural, one {# modello importato} other {# modelli importati}}",
"templates_import_errors": "Alcuni modelli non sono stati importati",
"templates_import_empty": "Nessun modello trovato nel file"
},
"date": {
"today": "Oggi",
@@ -398,7 +404,8 @@
"vacation": "Risponditore automatico",
"advanced": "Avanzate",
"calendar": "Calendario",
"filters": "Filtri"
"filters": "Filtri",
"templates": "Modelli"
},
"appearance": {
"title": "Aspetto",
@@ -782,6 +789,39 @@
"conditions_count": "{count, plural, one {# condizione} other {# condizioni}}",
"actions_count": "{count, plural, one {# azione} other {# azioni}}"
}
},
"templates": {
"title": "Modelli email",
"description": "Crea modelli email riutilizzabili con variabili segnaposto",
"add": "Nuovo modello",
"edit": "Modifica modello",
"name": "Nome del modello",
"name_placeholder": "es.: Email di follow-up",
"category": "Categoria",
"category_placeholder": "es.: Lavoro, Personale",
"subject": "Oggetto",
"subject_placeholder": "Oggetto dell'email",
"body": "Corpo",
"body_placeholder": "Contenuto dell'email...",
"recipients_placeholder": "email@example.com",
"identity": "Invia come",
"default_identity": "Identità predefinita",
"favorite": "Preferito",
"cancel": "Annulla",
"create": "Crea",
"update": "Aggiorna",
"confirm_delete": "Elimina",
"no_templates": "Nessun modello",
"manage": "Gestisci modelli",
"count": "{count, plural, one {# modello} other {# modelli}}",
"export_import": "Esporta e importa",
"export_import_description": "Esegui il backup dei modelli o trasferiscili su un altro dispositivo",
"export": "Esporta",
"import": "Importa",
"validation": {
"empty": "Il nome del modello è obbligatorio",
"too_long": "Il nome del modello non deve superare i 200 caratteri"
}
}
},
"errors": {
@@ -825,7 +865,8 @@
"navigation": "Navigazione",
"actions": "Azioni sui messaggi",
"global": "Globali",
"threads": "Conversazioni"
"threads": "Conversazioni",
"composer": "Composizione"
},
"navigation": {
"next_email": "Messaggio successivo",
@@ -853,6 +894,9 @@
},
"threads": {
"expand_collapse": "Espandi/comprimi conversazione"
},
"composer": {
"template_picker": "Apri selettore modelli"
}
},
"threads": {
@@ -931,6 +975,29 @@
"subaddress_tag": "+{tag}"
}
},
"templates": {
"picker_title": "Scegli un modello",
"search_placeholder": "Cerca modelli...",
"section_favorites": "Preferiti",
"section_recent": "Recenti",
"section_uncategorized": "Altri",
"no_templates": "Nessun modello",
"no_results": "Nessun modello trovato",
"fill_placeholders": "Compila i valori segnaposto",
"enter_value": "Inserisci un valore...",
"preview": "Anteprima",
"insert_with_values": "Inserisci con valori",
"insert_raw": "Inserisci grezzo",
"copy_suffix": "(copia)",
"placeholder": "Variabile",
"placeholders": {
"recipient_name": "Nome del destinatario",
"company": "Nome dell'azienda",
"date": "Data odierna",
"day_of_week": "Giorno della settimana",
"sender_name": "Il tuo nome"
}
},
"contacts": {
"title": "Contatti",
"search_placeholder": "Cerca contatti...",
+71 -4
View File
@@ -288,7 +288,9 @@
"subject": "件名: {subject}",
"to": "宛先: {recipients}"
},
"remove_sub_address": "サブアドレスを削除"
"remove_sub_address": "サブアドレスを削除",
"use_template": "テンプレート",
"save_as_template": "テンプレートとして保存"
},
"common": {
"loading": "読み込み中...",
@@ -342,7 +344,11 @@
"vacation_save_failed": "不在応答の設定の保存に失敗しました",
"filters_saved": "フィルターを保存しました",
"filters_save_failed": "フィルターの保存に失敗しました",
"filters_deleted": "フィルタールールが削除されました"
"filters_deleted": "フィルタールールが削除されました",
"templates_exported": "テンプレートをエクスポートしました",
"templates_imported": "{count}件のテンプレートをインポートしました",
"templates_import_errors": "一部のテンプレートをインポートできませんでした",
"templates_import_empty": "ファイルにテンプレートが見つかりません"
},
"date": {
"today": "今日",
@@ -398,7 +404,8 @@
"vacation": "不在応答",
"advanced": "詳細設定",
"calendar": "カレンダー",
"filters": "フィルター"
"filters": "フィルター",
"templates": "テンプレート"
},
"appearance": {
"title": "外観",
@@ -782,6 +789,39 @@
"conditions_count": "{count, plural, other {#個の条件}}",
"actions_count": "{count, plural, other {#個のアクション}}"
}
},
"templates": {
"title": "メールテンプレート",
"description": "プレースホルダー変数付きの再利用可能なメールテンプレートを作成",
"add": "新規テンプレート",
"edit": "テンプレートを編集",
"name": "テンプレート名",
"name_placeholder": "例:フォローアップメール",
"category": "カテゴリー",
"category_placeholder": "例:仕事、個人",
"subject": "件名",
"subject_placeholder": "メールの件名",
"body": "本文",
"body_placeholder": "メール本文...",
"recipients_placeholder": "email@example.com",
"identity": "送信者",
"default_identity": "デフォルトのID",
"favorite": "お気に入り",
"cancel": "キャンセル",
"create": "作成",
"update": "更新",
"confirm_delete": "削除",
"no_templates": "テンプレートがありません",
"manage": "テンプレートを管理",
"count": "{count}件のテンプレート",
"export_import": "エクスポートとインポート",
"export_import_description": "テンプレートのバックアップや別のデバイスへの転送",
"export": "エクスポート",
"import": "インポート",
"validation": {
"empty": "テンプレート名は必須です",
"too_long": "テンプレート名は200文字以内にしてください"
}
}
},
"errors": {
@@ -825,7 +865,8 @@
"navigation": "ナビゲーション",
"actions": "メール操作",
"global": "全般",
"threads": "スレッド"
"threads": "スレッド",
"composer": "作成"
},
"navigation": {
"next_email": "次のメール",
@@ -853,6 +894,9 @@
},
"threads": {
"expand_collapse": "スレッドの展開/折りたたみ"
},
"composer": {
"template_picker": "テンプレートピッカーを開く"
}
},
"threads": {
@@ -931,6 +975,29 @@
"subaddress_tag": "+{tag}"
}
},
"templates": {
"picker_title": "テンプレートを選択",
"search_placeholder": "テンプレートを検索...",
"section_favorites": "お気に入り",
"section_recent": "最近使用",
"section_uncategorized": "その他",
"no_templates": "テンプレートがありません",
"no_results": "テンプレートが見つかりません",
"fill_placeholders": "プレースホルダーの値を入力",
"enter_value": "値を入力...",
"preview": "プレビュー",
"insert_with_values": "値を挿入",
"insert_raw": "そのまま挿入",
"copy_suffix": "(コピー)",
"placeholder": "変数",
"placeholders": {
"recipient_name": "宛先の名前",
"company": "会社名",
"date": "今日の日付",
"day_of_week": "曜日",
"sender_name": "あなたの名前"
}
},
"contacts": {
"title": "連絡先",
"search_placeholder": "連絡先を検索...",
+71 -4
View File
@@ -288,7 +288,9 @@
"subject": "Onderwerp: {subject}",
"to": "Aan: {recipients}"
},
"remove_sub_address": "Sub-adres verwijderen"
"remove_sub_address": "Sub-adres verwijderen",
"use_template": "Sjabloon",
"save_as_template": "Opslaan als sjabloon"
},
"common": {
"loading": "Laden...",
@@ -342,7 +344,11 @@
"vacation_save_failed": "Kan afwezigheidsinstellingen niet opslaan",
"filters_saved": "Filters succesvol opgeslagen",
"filters_save_failed": "Filters opslaan mislukt",
"filters_deleted": "Filterregel verwijderd"
"filters_deleted": "Filterregel verwijderd",
"templates_exported": "Sjablonen succesvol geëxporteerd",
"templates_imported": "{count, plural, one {# sjabloon geïmporteerd} other {# sjablonen geïmporteerd}}",
"templates_import_errors": "Sommige sjablonen konden niet worden geïmporteerd",
"templates_import_empty": "Geen sjablonen gevonden in het bestand"
},
"date": {
"today": "Vandaag",
@@ -398,7 +404,8 @@
"vacation": "Afwezigheidsmelder",
"advanced": "Geavanceerd",
"calendar": "Agenda",
"filters": "Filters"
"filters": "Filters",
"templates": "Sjablonen"
},
"appearance": {
"title": "Uiterlijk",
@@ -782,6 +789,39 @@
"conditions_count": "{count, plural, one {# voorwaarde} other {# voorwaarden}}",
"actions_count": "{count, plural, one {# actie} other {# acties}}"
}
},
"templates": {
"title": "E-mailsjablonen",
"description": "Maak herbruikbare e-mailsjablonen met plaatshoudervariabelen",
"add": "Nieuw sjabloon",
"edit": "Sjabloon bewerken",
"name": "Sjabloonnaam",
"name_placeholder": "bijv.: Opvolgmail",
"category": "Categorie",
"category_placeholder": "bijv.: Werk, Persoonlijk",
"subject": "Onderwerp",
"subject_placeholder": "E-mailonderwerp",
"body": "Inhoud",
"body_placeholder": "E-mailinhoud...",
"recipients_placeholder": "email@example.com",
"identity": "Verzenden als",
"default_identity": "Standaard identiteit",
"favorite": "Favoriet",
"cancel": "Annuleren",
"create": "Aanmaken",
"update": "Bijwerken",
"confirm_delete": "Verwijderen",
"no_templates": "Geen sjablonen",
"manage": "Sjablonen beheren",
"count": "{count, plural, one {# sjabloon} other {# sjablonen}}",
"export_import": "Exporteren en importeren",
"export_import_description": "Maak een back-up van uw sjablonen of breng ze over naar een ander apparaat",
"export": "Exporteren",
"import": "Importeren",
"validation": {
"empty": "Sjabloonnaam is verplicht",
"too_long": "Sjabloonnaam mag maximaal 200 tekens zijn"
}
}
},
"errors": {
@@ -825,7 +865,8 @@
"navigation": "Navigatie",
"actions": "E-mailacties",
"global": "Globaal",
"threads": "Gesprekken"
"threads": "Gesprekken",
"composer": "Opstellen"
},
"navigation": {
"next_email": "Volgende e-mail",
@@ -853,6 +894,9 @@
},
"threads": {
"expand_collapse": "Gesprek uitklappen/inklappen"
},
"composer": {
"template_picker": "Sjabloonkiezer openen"
}
},
"threads": {
@@ -931,6 +975,29 @@
"subaddress_tag": "+{tag}"
}
},
"templates": {
"picker_title": "Kies een sjabloon",
"search_placeholder": "Sjablonen zoeken...",
"section_favorites": "Favorieten",
"section_recent": "Recent",
"section_uncategorized": "Overig",
"no_templates": "Geen sjablonen",
"no_results": "Geen sjablonen gevonden",
"fill_placeholders": "Plaatshouderwaarden invullen",
"enter_value": "Voer een waarde in...",
"preview": "Voorbeeld",
"insert_with_values": "Invoegen met waarden",
"insert_raw": "Onbewerkt invoegen",
"copy_suffix": "(kopie)",
"placeholder": "Variabele",
"placeholders": {
"recipient_name": "Naam ontvanger",
"company": "Bedrijfsnaam",
"date": "Huidige datum",
"day_of_week": "Dag van de week",
"sender_name": "Uw naam"
}
},
"contacts": {
"title": "Contacten",
"search_placeholder": "Contacten zoeken...",
+71 -4
View File
@@ -288,7 +288,9 @@
"subject": "Assunto: {subject}",
"to": "Para: {recipients}"
},
"remove_sub_address": "Remover sub-endereço"
"remove_sub_address": "Remover sub-endereço",
"use_template": "Modelo",
"save_as_template": "Salvar como modelo"
},
"common": {
"loading": "Carregando...",
@@ -342,7 +344,11 @@
"vacation_save_failed": "Falha ao salvar configurações de resposta automática",
"filters_saved": "Filtros salvos com sucesso",
"filters_save_failed": "Falha ao salvar os filtros",
"filters_deleted": "Regra de filtragem eliminada"
"filters_deleted": "Regra de filtragem eliminada",
"templates_exported": "Modelos exportados com sucesso",
"templates_imported": "{count, plural, one {# modelo importado} other {# modelos importados}}",
"templates_import_errors": "Alguns modelos não puderam ser importados",
"templates_import_empty": "Nenhum modelo encontrado no arquivo"
},
"date": {
"today": "Hoje",
@@ -398,7 +404,8 @@
"vacation": "Resposta automática",
"advanced": "Avançado",
"calendar": "Calendário",
"filters": "Filtros"
"filters": "Filtros",
"templates": "Modelos"
},
"appearance": {
"title": "Aparência",
@@ -782,6 +789,39 @@
"conditions_count": "{count, plural, one {# condição} other {# condições}}",
"actions_count": "{count, plural, one {# ação} other {# ações}}"
}
},
"templates": {
"title": "Modelos de e-mail",
"description": "Crie modelos de e-mail reutilizáveis com variáveis de marcador",
"add": "Novo modelo",
"edit": "Editar modelo",
"name": "Nome do modelo",
"name_placeholder": "ex.: E-mail de acompanhamento",
"category": "Categoria",
"category_placeholder": "ex.: Trabalho, Pessoal",
"subject": "Assunto",
"subject_placeholder": "Linha de assunto do e-mail",
"body": "Corpo",
"body_placeholder": "Conteúdo do e-mail...",
"recipients_placeholder": "email@example.com",
"identity": "Enviar como",
"default_identity": "Identidade padrão",
"favorite": "Favorito",
"cancel": "Cancelar",
"create": "Criar",
"update": "Atualizar",
"confirm_delete": "Excluir",
"no_templates": "Sem modelos",
"manage": "Gerenciar modelos",
"count": "{count, plural, one {# modelo} other {# modelos}}",
"export_import": "Exportar e importar",
"export_import_description": "Faça backup dos seus modelos ou transfira-os para outro dispositivo",
"export": "Exportar",
"import": "Importar",
"validation": {
"empty": "O nome do modelo é obrigatório",
"too_long": "O nome do modelo não pode exceder 200 caracteres"
}
}
},
"errors": {
@@ -825,7 +865,8 @@
"navigation": "Navegação",
"actions": "Ações de E-mail",
"global": "Global",
"threads": "Conversas"
"threads": "Conversas",
"composer": "Redação"
},
"navigation": {
"next_email": "Próximo e-mail",
@@ -853,6 +894,9 @@
},
"threads": {
"expand_collapse": "Expandir/recolher conversa"
},
"composer": {
"template_picker": "Abrir seletor de modelos"
}
},
"threads": {
@@ -931,6 +975,29 @@
"subaddress_tag": "+{tag}"
}
},
"templates": {
"picker_title": "Escolher um modelo",
"search_placeholder": "Pesquisar modelos...",
"section_favorites": "Favoritos",
"section_recent": "Recentes",
"section_uncategorized": "Outros",
"no_templates": "Sem modelos",
"no_results": "Nenhum modelo encontrado",
"fill_placeholders": "Preencher valores dos marcadores",
"enter_value": "Insira um valor...",
"preview": "Pré-visualização",
"insert_with_values": "Inserir com valores",
"insert_raw": "Inserir bruto",
"copy_suffix": "(cópia)",
"placeholder": "Variável",
"placeholders": {
"recipient_name": "Nome do destinatário",
"company": "Nome da empresa",
"date": "Data atual",
"day_of_week": "Dia da semana",
"sender_name": "Seu nome"
}
},
"contacts": {
"title": "Contatos",
"search_placeholder": "Pesquisar contatos...",