diff --git a/components/settings/vacation-settings.tsx b/components/settings/vacation-settings.tsx index b9fbda6c..b546d66d 100644 --- a/components/settings/vacation-settings.tsx +++ b/components/settings/vacation-settings.tsx @@ -4,9 +4,12 @@ import { useState, useEffect, useCallback } from 'react'; import { useTranslations } from 'next-intl'; import { SettingsSection, SettingItem, ToggleSwitch } from './settings-section'; import { Button } from '@/components/ui/button'; +import { RichTextEditor } from '@/components/email/rich-text-editor'; import { useVacationStore } from '@/stores/vacation-store'; import { useAuthStore } from '@/stores/auth-store'; import { useManagedAccountStore } from '@/stores/managed-account-store'; +import { sanitizeEmailHtml } from '@/lib/email-sanitization'; +import { htmlToPlainText } from '@/lib/html-to-text'; import { Loader2, AlertTriangle, Eye, EyeOff } from 'lucide-react'; import { toast } from '@/stores/toast-store'; @@ -27,6 +30,7 @@ export function VacationSettings() { toDate, subject, textBody, + htmlBody, isLoading, isSaving, error, @@ -40,6 +44,8 @@ export function VacationSettings() { const [localToDate, setLocalToDate] = useState(toDate || ''); const [localSubject, setLocalSubject] = useState(subject); const [localTextBody, setLocalTextBody] = useState(textBody); + const [htmlEnabled, setHtmlEnabled] = useState(!!htmlBody); + const [localHtmlBody, setLocalHtmlBody] = useState(htmlBody || ''); const [showPreview, setShowPreview] = useState(false); const [validationWarnings, setValidationWarnings] = useState([]); @@ -55,7 +61,9 @@ export function VacationSettings() { setLocalToDate(toDate || ''); setLocalSubject(subject); setLocalTextBody(textBody); - }, [isEnabled, fromDate, toDate, subject, textBody]); + setHtmlEnabled(!!htmlBody); + setLocalHtmlBody(htmlBody || ''); + }, [isEnabled, fromDate, toDate, subject, textBody, htmlBody]); const validate = useCallback(() => { const warnings: string[] = []; @@ -70,13 +78,14 @@ export function VacationSettings() { warnings.push(t('warnings.start_in_past')); } - if (localEnabled && !localTextBody.trim()) { + const hasHtmlContent = htmlEnabled && !!htmlToPlainText(localHtmlBody).trim(); + if (localEnabled && !localTextBody.trim() && !hasHtmlContent) { warnings.push(t('warnings.empty_body')); } setValidationWarnings(warnings); return warnings; - }, [localFromDate, localToDate, localEnabled, localTextBody, t]); + }, [localFromDate, localToDate, localEnabled, localTextBody, htmlEnabled, localHtmlBody, t]); useEffect(() => { validate(); @@ -87,7 +96,8 @@ export function VacationSettings() { (localFromDate || null) !== (fromDate || null) || (localToDate || null) !== (toDate || null) || localSubject !== subject || - localTextBody !== textBody; + localTextBody !== textBody || + (htmlEnabled ? localHtmlBody : '') !== (htmlBody || ''); const hasBlockingError = !!(localFromDate && localToDate && new Date(localToDate) <= new Date(localFromDate)); @@ -96,13 +106,25 @@ export function VacationSettings() { validate(); if (hasBlockingError) return; + const sanitizedHtml = + htmlEnabled && htmlToPlainText(localHtmlBody).trim() + ? sanitizeEmailHtml(localHtmlBody) + : null; + // Keep a plain-text part as the fallback for clients that don't render + // HTML. If the user left it blank, derive it from the HTML body. + const textBody = + localTextBody.trim() || !sanitizedHtml + ? localTextBody + : htmlToPlainText(sanitizedHtml, { paragraphSpacing: true }); + try { await updateVacationResponse(client, { isEnabled: localEnabled, fromDate: localFromDate || null, toDate: localToDate || null, subject: localSubject, - textBody: localTextBody, + textBody, + htmlBody: sanitizedHtml, }, managedAccountId ?? undefined); toast.success(tNotifications('vacation_saved')); @@ -217,28 +239,66 @@ export function VacationSettings() { className="w-full px-3 py-2 text-sm rounded-md bg-muted border border-border text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring transition-colors duration-150 hover:border-muted-foreground resize-y" /> + + + + {htmlEnabled && ( +
+
+ +
+
+ )} - {localTextBody.trim() && ( - - - {showPreview && ( -
- {localSubject && ( -

{localSubject}

- )} -

{localTextBody}

-
- )} -
- )} + {(() => { + const showHtmlPreview = htmlEnabled && !!htmlToPlainText(localHtmlBody).trim(); + if (!localTextBody.trim() && !showHtmlPreview) return null; + return ( + + + {showPreview && ( +
+ {localSubject && ( +

{localSubject}

+ )} + {showHtmlPreview ? ( +
{ + const anchor = (e.target as HTMLElement).closest('a'); + if (anchor?.href) { + e.preventDefault(); + window.open(anchor.href, '_blank', 'noopener,noreferrer'); + } + }} + dangerouslySetInnerHTML={{ __html: sanitizeEmailHtml(localHtmlBody) }} + /> + ) : ( +

{localTextBody}

+ )} +
+ )} + + ); + })()} {validationWarnings.length > 0 && (
diff --git a/locales/ar/common.json b/locales/ar/common.json index 35be0649..ceb19007 100644 --- a/locales/ar/common.json +++ b/locales/ar/common.json @@ -1539,7 +1539,10 @@ "subject_placeholder": "خارج المكتب", "body_label": "نص الرسالة", "body_description": "محتوى الرسالة النصي العادي", - "body_placeholder": "شكرًا لرسالتك. أنا حاليًا خارج المكتب وسأرد عند عودتي." + "body_placeholder": "شكرًا لرسالتك. أنا حاليًا خارج المكتب وسأرد عند عودتي.", + "html_label": "رسالة منسّقة (HTML)", + "html_description": "أضِف نسخة منسّقة تتضمّن روابط وتنسيقًا. سيرى المستلمون الذين لا يستطيع برنامج بريدهم عرضها النصّ العادي أعلاه.", + "html_placeholder": "اكتب ردّ غياب منسّقًا…" }, "preview": { "title": "معاينة", diff --git a/locales/cs/common.json b/locales/cs/common.json index 19273b00..6f7f50d2 100644 --- a/locales/cs/common.json +++ b/locales/cs/common.json @@ -1533,7 +1533,10 @@ "subject_placeholder": "Mimo kancelář", "body_label": "Tělo zprávy", "body_description": "Obsah zprávy v prostém textu", - "body_placeholder": "Děkuji za vaši zprávu. Momentálně jsem mimo kancelář a odpovím po svém návratu." + "body_placeholder": "Děkuji za vaši zprávu. Momentálně jsem mimo kancelář a odpovím po svém návratu.", + "html_label": "Formátovaná zpráva (HTML)", + "html_description": "Přidejte formátovanou verzi s odkazy a stylem. Příjemci, jejichž poštovní klient ji nedokáže zobrazit, uvidí prostý text výše.", + "html_placeholder": "Napište formátovanou odpověď o nepřítomnosti…" }, "preview": { "title": "Náhled", diff --git a/locales/da/common.json b/locales/da/common.json index db1ca4ed..bae3f4d1 100644 --- a/locales/da/common.json +++ b/locales/da/common.json @@ -1536,7 +1536,10 @@ "subject_placeholder": "Fraværende", "body_label": "Beskedtekst", "body_description": "Ren tekst-beskedindhold", - "body_placeholder": "Tak for din e-mail. Jeg er i øjeblikket fraværende og vil svare, når jeg vender tilbage." + "body_placeholder": "Tak for din e-mail. Jeg er i øjeblikket fraværende og vil svare, når jeg vender tilbage.", + "html_label": "Formateret besked (HTML)", + "html_description": "Tilføj en formateret version med links og styling. Modtagere, hvis mailprogram ikke kan vise den, får den almindelige tekst ovenfor.", + "html_placeholder": "Skriv et formateret fraværssvar…" }, "preview": { "title": "Forhåndsvisning", diff --git a/locales/de/common.json b/locales/de/common.json index 5889ac66..91812a3b 100644 --- a/locales/de/common.json +++ b/locales/de/common.json @@ -1533,7 +1533,10 @@ "subject_placeholder": "Abwesenheitsnotiz", "body_label": "Nachrichtentext", "body_description": "Nur-Text-Nachrichteninhalt", - "body_placeholder": "Vielen Dank für Ihre E-Mail. Ich bin derzeit nicht im Büro und werde nach meiner Rückkehr antworten." + "body_placeholder": "Vielen Dank für Ihre E-Mail. Ich bin derzeit nicht im Büro und werde nach meiner Rückkehr antworten.", + "html_label": "Formatierte Nachricht (HTML)", + "html_description": "Fügen Sie eine formatierte Version mit Links und Gestaltung hinzu. Empfänger, deren E-Mail-Programm sie nicht anzeigen kann, sehen den obigen Klartext.", + "html_placeholder": "Formatierte Abwesenheitsantwort schreiben…" }, "preview": { "title": "Vorschau", diff --git a/locales/en/common.json b/locales/en/common.json index 44c37a2b..3bc5915d 100644 --- a/locales/en/common.json +++ b/locales/en/common.json @@ -1547,7 +1547,10 @@ "subject_placeholder": "Out of Office", "body_label": "Message Body", "body_description": "Plain text message content", - "body_placeholder": "Thank you for your email. I am currently out of the office and will respond when I return." + "body_placeholder": "Thank you for your email. I am currently out of the office and will respond when I return.", + "html_label": "Formatted message (HTML)", + "html_description": "Add a rich, formatted version with links and styling. Recipients whose mail client can't display it fall back to the plain text above.", + "html_placeholder": "Write a formatted out-of-office reply…" }, "preview": { "title": "Preview", diff --git a/locales/es/common.json b/locales/es/common.json index d14a3c25..940179fd 100644 --- a/locales/es/common.json +++ b/locales/es/common.json @@ -1533,7 +1533,10 @@ "subject_placeholder": "Fuera de la oficina", "body_label": "Cuerpo del mensaje", "body_description": "Contenido del mensaje en texto plano", - "body_placeholder": "Gracias por su correo. Actualmente estoy fuera de la oficina y responderé cuando regrese." + "body_placeholder": "Gracias por su correo. Actualmente estoy fuera de la oficina y responderé cuando regrese.", + "html_label": "Mensaje con formato (HTML)", + "html_description": "Añade una versión con formato, enlaces y estilo. Los destinatarios cuyo cliente de correo no pueda mostrarla verán el texto sin formato de arriba.", + "html_placeholder": "Escribe una respuesta de ausencia con formato…" }, "preview": { "title": "Vista previa", diff --git a/locales/fa/common.json b/locales/fa/common.json index 773d58cd..8022ebed 100644 --- a/locales/fa/common.json +++ b/locales/fa/common.json @@ -1540,7 +1540,10 @@ "subject_placeholder": "خارج از دفتر", "body_label": "بدنه پیام", "body_description": "محتوای پیام متنی ساده", - "body_placeholder": "از ایمیل شما متشکرم. من در حال حاضر خارج از دفتر هستم و پس از بازگشت پاسخ خواهم داد." + "body_placeholder": "از ایمیل شما متشکرم. من در حال حاضر خارج از دفتر هستم و پس از بازگشت پاسخ خواهم داد.", + "html_label": "پیام قالب‌بندی‌شده (HTML)", + "html_description": "یک نسخهٔ قالب‌بندی‌شده با پیوند و استایل اضافه کنید. گیرندگانی که برنامهٔ ایمیلشان نمی‌تواند آن را نمایش دهد، متن سادهٔ بالا را می‌بینند.", + "html_placeholder": "یک پاسخ خودکار قالب‌بندی‌شده بنویسید…" }, "preview": { "title": "پیش‌نمایش", diff --git a/locales/fr/common.json b/locales/fr/common.json index b37907ff..deead19e 100644 --- a/locales/fr/common.json +++ b/locales/fr/common.json @@ -1533,7 +1533,10 @@ "subject_placeholder": "Absence du bureau", "body_label": "Corps du message", "body_description": "Contenu du message en texte brut", - "body_placeholder": "Merci pour votre email. Je suis actuellement absent du bureau et vous répondrai à mon retour." + "body_placeholder": "Merci pour votre email. Je suis actuellement absent du bureau et vous répondrai à mon retour.", + "html_label": "Message mis en forme (HTML)", + "html_description": "Ajoutez une version mise en forme avec des liens et du style. Les destinataires dont la messagerie ne peut pas l'afficher verront le texte brut ci-dessus.", + "html_placeholder": "Rédigez une réponse d'absence mise en forme…" }, "preview": { "title": "Aperçu", diff --git a/locales/he/common.json b/locales/he/common.json index 44117c13..284d79e1 100644 --- a/locales/he/common.json +++ b/locales/he/common.json @@ -1503,7 +1503,10 @@ "subject_placeholder": "מחוץ למשרד", "body_label": "גוף ההודעה", "body_description": "תוכן הודעת טקסט רגילה", - "body_placeholder": "תודה על המייל שלך. אני כרגע מחוץ למשרד ואענה כשאחזור." + "body_placeholder": "תודה על המייל שלך. אני כרגע מחוץ למשרד ואענה כשאחזור.", + "html_label": "הודעה מעוצבת (HTML)", + "html_description": "הוסיפו גרסה מעוצבת עם קישורים וסגנון. נמענים שתוכנת הדוא״ל שלהם אינה יכולה להציג אותה יראו את הטקסט הרגיל שלמעלה.", + "html_placeholder": "כתבו תשובת היעדרות מעוצבת…" }, "preview": { "title": "תצוגה מקדימה", diff --git a/locales/hu/common.json b/locales/hu/common.json index df095070..e090595f 100644 --- a/locales/hu/common.json +++ b/locales/hu/common.json @@ -1536,7 +1536,10 @@ "subject_placeholder": "Távol vagyok", "body_label": "Üzenet szövege", "body_description": "Egyszerű szöveges üzenet tartalma", - "body_placeholder": "Köszönöm az e-mailed. Jelenleg távol vagyok az irodától, és visszatérésemkor válaszolok." + "body_placeholder": "Köszönöm az e-mailed. Jelenleg távol vagyok az irodától, és visszatérésemkor válaszolok.", + "html_label": "Formázott üzenet (HTML)", + "html_description": "Adjon hozzá egy formázott változatot hivatkozásokkal és stílussal. Azok a címzettek, akiknek a levelezőprogramja nem tudja megjeleníteni, a fenti egyszerű szöveget látják.", + "html_placeholder": "Írjon formázott távolléti választ…" }, "preview": { "title": "Előnézet", diff --git a/locales/it/common.json b/locales/it/common.json index f6de43a3..45347c6b 100644 --- a/locales/it/common.json +++ b/locales/it/common.json @@ -1533,7 +1533,10 @@ "subject_placeholder": "Fuori ufficio", "body_label": "Corpo del messaggio", "body_description": "Contenuto del messaggio in testo semplice", - "body_placeholder": "Grazie per la tua email. Sono attualmente fuori ufficio e risponderò al mio ritorno." + "body_placeholder": "Grazie per la tua email. Sono attualmente fuori ufficio e risponderò al mio ritorno.", + "html_label": "Messaggio formattato (HTML)", + "html_description": "Aggiungi una versione formattata con link e stile. I destinatari il cui client di posta non può visualizzarla vedranno il testo semplice qui sopra.", + "html_placeholder": "Scrivi una risposta di assenza formattata…" }, "preview": { "title": "Anteprima", diff --git a/locales/ja/common.json b/locales/ja/common.json index ab7c653f..9186aa93 100644 --- a/locales/ja/common.json +++ b/locales/ja/common.json @@ -1533,7 +1533,10 @@ "subject_placeholder": "不在通知", "body_label": "メッセージ本文", "body_description": "テキスト形式のメッセージ内容", - "body_placeholder": "メールをいただきありがとうございます。現在不在にしており、戻り次第ご返信いたします。" + "body_placeholder": "メールをいただきありがとうございます。現在不在にしており、戻り次第ご返信いたします。", + "html_label": "書式付きメッセージ(HTML)", + "html_description": "リンクやスタイルを含む書式付きの版を追加します。表示できないメールソフトの受信者には上記のプレーンテキストが表示されます。", + "html_placeholder": "書式付きの不在返信を入力…" }, "preview": { "title": "プレビュー", diff --git a/locales/ko/common.json b/locales/ko/common.json index 80295ed7..06a9563f 100644 --- a/locales/ko/common.json +++ b/locales/ko/common.json @@ -1533,7 +1533,10 @@ "subject_placeholder": "부재중 알림", "body_label": "메시지 본문", "body_description": "일반 텍스트로 보낼 메시지 내용이에요", - "body_placeholder": "메일을 보내주셔서 감사합니다. 현재 자리를 비우고 있어 돌아오는 대로 답변드리겠습니다." + "body_placeholder": "메일을 보내주셔서 감사합니다. 현재 자리를 비우고 있어 돌아오는 대로 답변드리겠습니다.", + "html_label": "서식 있는 메시지 (HTML)", + "html_description": "링크와 스타일이 포함된 서식 있는 버전을 추가합니다. 메일 클라이언트가 이를 표시할 수 없는 수신자에게는 위의 일반 텍스트가 표시됩니다.", + "html_placeholder": "서식 있는 부재중 자동 회신 작성…" }, "preview": { "title": "미리보기", diff --git a/locales/lv/common.json b/locales/lv/common.json index f1a233f4..e2824dd4 100644 --- a/locales/lv/common.json +++ b/locales/lv/common.json @@ -1533,7 +1533,10 @@ "subject_placeholder": "Atvaļinājumā / Esmu prom", "body_label": "Ziņojuma teksts", "body_description": "Ziņojuma saturs parastā tekstā", - "body_placeholder": "Paldies par e-pastu. Pašlaik esmu prombūtnē un atbildēšu, kad atgriezīšos." + "body_placeholder": "Paldies par e-pastu. Pašlaik esmu prombūtnē un atbildēšu, kad atgriezīšos.", + "html_label": "Formatēts ziņojums (HTML)", + "html_description": "Pievienojiet formatētu versiju ar saitēm un noformējumu. Saņēmēji, kuru e-pasta programma to nevar parādīt, redzēs iepriekš redzamo vienkāršo tekstu.", + "html_placeholder": "Rakstiet formatētu prombūtnes atbildi…" }, "preview": { "title": "Priekšskatījums", diff --git a/locales/nl/common.json b/locales/nl/common.json index 4438c9ec..ff5220ee 100644 --- a/locales/nl/common.json +++ b/locales/nl/common.json @@ -1533,7 +1533,10 @@ "subject_placeholder": "Afwezigheidsbericht", "body_label": "Berichttekst", "body_description": "Inhoud van het bericht in platte tekst", - "body_placeholder": "Bedankt voor je e-mail. Ik ben momenteel niet aanwezig en zal reageren bij terugkomst." + "body_placeholder": "Bedankt voor je e-mail. Ik ben momenteel niet aanwezig en zal reageren bij terugkomst.", + "html_label": "Opgemaakt bericht (HTML)", + "html_description": "Voeg een opgemaakte versie met links en stijl toe. Ontvangers van wie het e-mailprogramma deze niet kan weergeven, zien de platte tekst hierboven.", + "html_placeholder": "Schrijf een opgemaakt afwezigheidsantwoord…" }, "preview": { "title": "Voorbeeld", diff --git a/locales/pl/common.json b/locales/pl/common.json index be6642d9..41e527fd 100644 --- a/locales/pl/common.json +++ b/locales/pl/common.json @@ -1533,7 +1533,10 @@ "subject_placeholder": "Poza biurem", "body_label": "Treść wiadomości", "body_description": "Treść wiadomości w zwykłym tekście", - "body_placeholder": "Dziękuję za wiadomość. Obecnie jestem poza biurem i odpowiem po powrocie." + "body_placeholder": "Dziękuję za wiadomość. Obecnie jestem poza biurem i odpowiem po powrocie.", + "html_label": "Wiadomość sformatowana (HTML)", + "html_description": "Dodaj sformatowaną wersję z odnośnikami i stylami. Odbiorcy, których program pocztowy nie może jej wyświetlić, zobaczą powyższy zwykły tekst.", + "html_placeholder": "Napisz sformatowaną odpowiedź o nieobecności…" }, "preview": { "title": "Podgląd", diff --git a/locales/pt/common.json b/locales/pt/common.json index 81cce094..88112cc2 100644 --- a/locales/pt/common.json +++ b/locales/pt/common.json @@ -1533,7 +1533,10 @@ "subject_placeholder": "Fora do escritório", "body_label": "Corpo da mensagem", "body_description": "Conteúdo da mensagem em texto simples", - "body_placeholder": "Obrigado pelo seu e-mail. Estou atualmente fora do escritório e responderei quando retornar." + "body_placeholder": "Obrigado pelo seu e-mail. Estou atualmente fora do escritório e responderei quando retornar.", + "html_label": "Mensagem formatada (HTML)", + "html_description": "Adicione uma versão formatada, com links e estilo. Os destinatários cujo cliente de e-mail não a exibir verão o texto simples acima.", + "html_placeholder": "Escreva uma resposta de ausência formatada…" }, "preview": { "title": "Pré-visualização", diff --git a/locales/ro/common.json b/locales/ro/common.json index 70a438c3..9fa4f8b0 100644 --- a/locales/ro/common.json +++ b/locales/ro/common.json @@ -1540,7 +1540,10 @@ "subject_placeholder": "Absent de la birou", "body_label": "Corpul mesajului", "body_description": "Conținutul mesajelor în text simplu", - "body_placeholder": "Vă mulțumesc pentru e-mail. În prezent nu mă aflu la birou și vă voi răspunde la întoarcere." + "body_placeholder": "Vă mulțumesc pentru e-mail. În prezent nu mă aflu la birou și vă voi răspunde la întoarcere.", + "html_label": "Mesaj formatat (HTML)", + "html_description": "Adăugați o versiune formatată, cu linkuri și stil. Destinatarii al căror client de e-mail nu o poate afișa vor vedea textul simplu de mai sus.", + "html_placeholder": "Scrieți un răspuns de absență formatat…" }, "preview": { "title": "Previzualizare", diff --git a/locales/ru/common.json b/locales/ru/common.json index 4ad2a908..a3eabfbf 100644 --- a/locales/ru/common.json +++ b/locales/ru/common.json @@ -1533,7 +1533,10 @@ "subject_placeholder": "Вне офиса", "body_label": "Текст сообщения", "body_description": "Содержимое сообщения в виде обычного текста", - "body_placeholder": "Спасибо за ваше письмо. Я сейчас вне офиса и отвечу, когда вернусь." + "body_placeholder": "Спасибо за ваше письмо. Я сейчас вне офиса и отвечу, когда вернусь.", + "html_label": "Форматированное сообщение (HTML)", + "html_description": "Добавьте форматированную версию со ссылками и оформлением. Получатели, чей почтовый клиент не может её отобразить, увидят обычный текст выше.", + "html_placeholder": "Напишите форматированный ответ об отсутствии…" }, "preview": { "title": "Предпросмотр", diff --git a/locales/sk/common.json b/locales/sk/common.json index ef7b8a47..84f64f7c 100644 --- a/locales/sk/common.json +++ b/locales/sk/common.json @@ -1538,7 +1538,10 @@ "subject_placeholder": "Mimo kancelárie", "body_label": "Telo správy", "body_description": "Obsah správy v prostom texte", - "body_placeholder": "Ďakujem za vašu správu. Momentálne som mimo kancelárie a odpoviem po svojom návrate." + "body_placeholder": "Ďakujem za vašu správu. Momentálne som mimo kancelárie a odpoviem po svojom návrate.", + "html_label": "Formátovaná správa (HTML)", + "html_description": "Pridajte formátovanú verziu s odkazmi a štýlom. Príjemcovia, ktorých poštový klient ju nedokáže zobraziť, uvidia obyčajný text vyššie.", + "html_placeholder": "Napíšte formátovanú odpoveď o neprítomnosti…" }, "preview": { "title": "Náhľad", diff --git a/locales/tr/common.json b/locales/tr/common.json index 2a4ac304..eec6e9e7 100644 --- a/locales/tr/common.json +++ b/locales/tr/common.json @@ -1533,7 +1533,10 @@ "subject_placeholder": "Ofis Dışındayım", "body_label": "İleti Gövdesi", "body_description": "Düz metin ileti içeriği", - "body_placeholder": "E-postanız için teşekkür ederim. Şu anda ofis dışındayım ve döndüğümde yanıt vereceğim." + "body_placeholder": "E-postanız için teşekkür ederim. Şu anda ofis dışındayım ve döndüğümde yanıt vereceğim.", + "html_label": "Biçimlendirilmiş mesaj (HTML)", + "html_description": "Bağlantılar ve stil içeren biçimlendirilmiş bir sürüm ekleyin. E-posta istemcisi bunu görüntüleyemeyen alıcılar yukarıdaki düz metni görür.", + "html_placeholder": "Biçimlendirilmiş bir ofis dışı yanıtı yazın…" }, "preview": { "title": "Önizleme", diff --git a/locales/uk/common.json b/locales/uk/common.json index 63636400..aabdca9e 100644 --- a/locales/uk/common.json +++ b/locales/uk/common.json @@ -1533,7 +1533,10 @@ "subject_placeholder": "Поза офісом", "body_label": "Тіло повідомлення", "body_description": "Вміст звичайного текстового повідомлення", - "body_placeholder": "Дякуємо за ваш електронний лист. Мене зараз немає в офісі, я відповім, коли повернуся." + "body_placeholder": "Дякуємо за ваш електронний лист. Мене зараз немає в офісі, я відповім, коли повернуся.", + "html_label": "Форматоване повідомлення (HTML)", + "html_description": "Додайте форматовану версію з посиланнями та оформленням. Одержувачі, чий поштовий клієнт не може її показати, побачать звичайний текст вище.", + "html_placeholder": "Напишіть форматовану відповідь про відсутність…" }, "preview": { "title": "Попередній перегляд", diff --git a/locales/zh/common.json b/locales/zh/common.json index 4c57d997..173b3a8f 100644 --- a/locales/zh/common.json +++ b/locales/zh/common.json @@ -1533,7 +1533,10 @@ "subject_placeholder": "外出办公", "body_label": "邮件正文", "body_description": "纯文本邮件内容", - "body_placeholder": "感谢您的来信。我目前不在办公室,返回后会尽快回复您的邮件。" + "body_placeholder": "感谢您的来信。我目前不在办公室,返回后会尽快回复您的邮件。", + "html_label": "带格式的消息(HTML)", + "html_description": "添加带链接和样式的格式化版本。邮件客户端无法显示时,收件人将看到上面的纯文本。", + "html_placeholder": "撰写带格式的外出自动回复…" }, "preview": { "title": "预览",