From cc20d29636e77b0b51e4115ec3367ce78e7faea8 Mon Sep 17 00:00:00 2001 From: hamedf62 Date: Tue, 23 Jun 2026 13:56:44 +0330 Subject: [PATCH] feat: add Farsi (fa) locale support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add comprehensive Farsi translation for the webmail interface: - Create locales/fa/common.json with Farsi translations - Register 'fa' locale in i18n/routing.ts and i18n/request.ts - Add Iran flag component (FlagIR) to flag-icons.tsx - Add ف��رسی to language switcher dropdown - Add Farsi language name to English locale for language selector Translation covers login, sidebar, email viewer, composer, settings, notifications, calendar, contacts, errors, shortcuts, and more. --- components/ui/flag-icons.tsx | 13 + components/ui/language-switcher.tsx | 1 + i18n/request.ts | 3 + i18n/routing.ts | 2 +- locales/en/common.json | 5 +- locales/fa/common.json | 3188 +++++++++++++++++++++++++++ 6 files changed, 3210 insertions(+), 2 deletions(-) create mode 100644 locales/fa/common.json diff --git a/components/ui/flag-icons.tsx b/components/ui/flag-icons.tsx index cb5404f0..0ede1186 100644 --- a/components/ui/flag-icons.tsx +++ b/components/ui/flag-icons.tsx @@ -233,6 +233,18 @@ export function FlagRO(props: FlagProps) { ); } +/** Iran – Green, White, Red horizontal with emblem (simplified) */ +export function FlagIR(props: FlagProps) { + return ( + + + + + + + ); +} + /** Map locale codes to flag components */ export const flagComponents: Record ReactElement> = { cs: FlagCS, @@ -254,4 +266,5 @@ export const flagComponents: Record ReactElement> tr: FlagTR, uk: FlagUA, zh: FlagCN, + fa: FlagIR, }; diff --git a/components/ui/language-switcher.tsx b/components/ui/language-switcher.tsx index 99827c98..41f0e323 100644 --- a/components/ui/language-switcher.tsx +++ b/components/ui/language-switcher.tsx @@ -12,6 +12,7 @@ const languages = [ { value: 'da', label: 'Dansk' }, { value: 'de', label: 'Deutsch' }, { value: 'en', label: 'English' }, + { value: 'fa', label: 'فارسی' }, { value: 'es', label: 'Español' }, { value: 'fr', label: 'Français' }, { value: 'it', label: 'Italiano' }, diff --git a/i18n/request.ts b/i18n/request.ts index a20ab9a0..cb41162d 100644 --- a/i18n/request.ts +++ b/i18n/request.ts @@ -23,6 +23,9 @@ export default getRequestConfig(async ({ requestLocale }) => { case 'es': messages = (await import('../locales/es/common.json')).default; break; + case 'fa': + messages = (await import('../locales/fa/common.json')).default; + break; case 'fr': messages = (await import('../locales/fr/common.json')).default; break; diff --git a/i18n/routing.ts b/i18n/routing.ts index bd9003a9..16643034 100644 --- a/i18n/routing.ts +++ b/i18n/routing.ts @@ -12,7 +12,7 @@ const localePrefix = (process.env.NEXT_PUBLIC_LOCALE_PREFIX ?? 'never') as | 'always' | 'as-needed'; -const SUPPORTED_LOCALES = ['cs', 'da', 'de', 'en', 'es', 'fr', 'hu', 'it', 'ja', 'ko', 'lv', 'nl', 'pl', 'pt', 'ro', 'ru', 'tr', 'uk', 'zh'] as const; +const SUPPORTED_LOCALES = ['cs', 'da', 'de', 'en', 'es', 'fa', 'fr', 'hu', 'it', 'ja', 'ko', 'lv', 'nl', 'pl', 'pt', 'ro', 'ru', 'tr', 'uk', 'zh'] as const; // Fallback locale used when the visitor's Accept-Language header does not // match any supported locale (and no NEXT_LOCALE cookie is set yet). Admins diff --git a/locales/en/common.json b/locales/en/common.json index 3e7db119..ad4368d9 100644 --- a/locales/en/common.json +++ b/locales/en/common.json @@ -804,7 +804,10 @@ "pt": "Português", "ru": "Русский", "uk": "Українська", - "zh": "简体中文" + "zh": "简体中文", + "fa": "فارسی", + "farsi": "فارسی", + "switch_to_farsi": "Switch to Farsi" }, "settings": { "title": "Settings", diff --git a/locales/fa/common.json b/locales/fa/common.json new file mode 100644 index 00000000..d1d445d3 --- /dev/null +++ b/locales/fa/common.json @@ -0,0 +1,3188 @@ +{ + "meta_description": "سرویس ایمیل تحت وب مینیمال با پروتکل JMAP", + "login": { + "title": "ایمیل تحت وب", + "username_label": "ایمیل", + "username_placeholder": "user@example.com", + "password_label": "رمز عبور", + "password_placeholder": "رمز عبور خود را وارد کنید", + "jmap_endpoint_label": "سرور JMAP", + "jmap_endpoint_placeholder": "https://mail.example.com", + "jmap_endpoint_cors_hint": "سرور باید درخواست‌های CORS از این دامنه را مجاز کند.", + "jmap_server_label": "سرور", + "jmap_server_auto_picked": "سرور از دامنه ایمیل شما انتخاب شد.", + "sign_in": "ورود", + "signing_in": "در حال ورود...", + "loading": "در حال بارگذاری...", + "reconnecting": "ارتباط قطع شد. در حال تلاش برای اتصال مجدد…", + "error": { + "invalid_credentials": "ایمیل یا رمز عبور نامعتبر است. اطلاعات خود را بررسی و دوباره تلاش کنید.", + "connection_failed": "امکان اتصال به سرور وجود ندارد. اتصال اینترنت خود را بررسی کنید.", + "cors_blocked": "سرور در دسترس است اما درخواست‌های cross-origin را مسدود می‌کند.", + "server_error": "سرور موقتاً در دسترس نیست. لطفاً بعداً تلاش کنید.", + "generic": "خطای غیرمنتظره‌ای رخ داد. اگر ادامه داشت با مدیر سیستم تماس بگیرید.", + "totp_required": "کد احراز هویت دو مرحله‌ای لازم است.", + "totp_invalid": "کد احراز هویت نامعتبر است. برنامه authenticator خود را بررسی کنید.", + "oauth_discovery_failed": "ورود یکپارچه فعال است اما ارائه‌دهنده هویت در دسترس نیست." + }, + "show_password": "نمایش رمز عبور", + "hide_password": "مخفی کردن رمز عبور", + "totp_toggle": "کد احراز هویت دو مرحله‌ای دارم", + "remember_me": "مرا به خاطر بسپار", + "config_error": { + "title": "خطای پیکربندی", + "fetch_failed": "بارگذاری پیکربندی برنامه ممکن نیست.", + "server_not_configured": "سرور ایمیل پیکربندی نشده است. با مدیر سیستم تماس بگیرید." + }, + "remove_from_history": "حذف از تاریخچه", + "totp_label": "کد احراز هویت", + "totp_placeholder": "000000", + "session_expired": "نشست شما منقضی شده است. لطفاً دوباره وارد شوید.", + "dismiss": "رد کردن", + "or": "یا", + "sign_in_sso": "ورود با SSO", + "add_account_title": "افزودن حساب", + "add_account_subtitle": "ورود با حساب دیگر", + "cancel": "انصراف", + "website": "وبسایت", + "imprint": "اطلاعات حقوقی", + "privacy_policy": "حریم خصوصی", + "try_demo": "نسخه آزمایشی", + "demo_description": "کاوش با داده‌های نمونه - بدون نیاز به حساب", + "demo_launching": "در حال راه‌اندازی نسخه آزمایشی...", + "demo_login_button": "راه‌اندازی نسخه آزمایشی", + "demo_tagline": "تجربه یک سرویس ایمیل کامل. بدون نیاز به حساب کاربری.", + "demo_no_signup": "نیازی به ثبت‌نام نیست - آزادانه با داده‌های نمونه کاوش کنید", + "oauth_completing": "در حال تکمیل ورود...", + "oauth_error": { + "title": "احراز هویت ناموفق", + "invalid_state": "اعتبارسنجی امنیتی ناموفق بود. لطفاً دوباره وارد شوید.", + "missing_params": "اطلاعات مجوزدهی ناقص است. لطفاً دوباره وارد شوید.", + "token_exchange_failed": "تکمیل احراز هویت ناموفق بود.", + "access_denied": "دسترسی رد شد. با مدیر سیستم تماس بگیرید.", + "back_to_login": "بازگشت به صفحه ورود" + } + }, + "sidebar": { + "close": "بستن", + "compose": "ایمیل جدید", + "compose_hint": "ایمیل جدید (c)", + "search_placeholder": "جستجوی ایمیل...", + "search_placeholder_hint": "جستجوی ایمیل... (کلید /)", + "storage": "فضای ذخیره‌سازی", + "storage_used": "استفاده شده", + "storage_free": "آزاد", + "storage_total": "کل", + "sign_out": "خروج", + "sign_out_of": "خروج از {account}", + "sign_out_all": "خروج از همه حساب‌ها", + "add_account": "افزودن حساب", + "set_as_default": "تنظیم به عنوان پیش‌فرض", + "switch_account": "تعویض حساب", + "contacts": "مخاطبین", + "calendar": "تقویم", + "settings": "تنظیمات", + "admin": "مدیریت", + "files": "فایل‌ها", + "loading_mailboxes": "در حال بارگذاری صندوق‌های پستی...", + "push_connected": "به‌روزرسانی‌های بلادرنگ فعال", + "push_disconnected": "به‌روزرسانی‌های بلادرنگ غیرفعال", + "keyboard_shortcuts": "میانبرهای صفحه کلید", + "theme": { + "light": "حالت روشن", + "dark": "حالت تاریک", + "system": "تم سیستم" + }, + "language": { + "title": "زبان" + }, + "mailboxes": { + "inbox": "صندوق ورودی", + "sent": "ارسال شده", + "drafts": "پیش‌نویس‌ها", + "trash": "زباله‌دان", + "archive": "بایگانی", + "starred": "ستاره‌دار", + "all_mail": "همه ایمیل‌ها", + "spam": "هرزنامه", + "important": "مهم" + }, + "unified_inbox": "صندوق ورودی یکپارچه", + "unified_sent": "همه ارسال‌ها", + "unified_drafts": "همه پیش‌نویس‌ها", + "unified_trash": "همه زباله‌دان‌ها", + "unified_archive": "همه بایگانی‌ها", + "unified_junk": "همه هرزنامه‌ها", + "all_accounts": "همه حساب‌ها", + "expand": "باز کردن", + "collapse": "جمع کردن", + "expand_tooltip": "باز کردن", + "collapse_tooltip": "جمع کردن", + "mobile": { + "search": "جستجو", + "compose": "ایمیل جدید", + "go_back": "بازگشت" + }, + "clear_search": "پاک کردن جستجو", + "vacation_active": "پاسخ‌گوی خودکار فعال است", + "demo_banner": "حالت آزمایشی", + "demo_reset": "بازنشانی", + "demo_tour": "تور", + "tags": "برچسب‌ها", + "folders": "پوشه‌ها", + "shared": "اشتراکی", + "mail": "ایمیل", + "nav_label": "ناوبری", + "add_app": "برنامه‌ها", + "scheduled": "زمان‌بندی شده" + }, + "protocol_handlers": { + "title": "برنامه‌های پیش‌فرض", + "description": "انتخاب کنید لینک‌های ایمیل و تقویم در Bulwark باز شوند.", + "unsupported": "این مرورگر از ثبت دستی پروتکل پشتیبانی نمی‌کند.", + "mailto_label": "لینک‌های ایمیل", + "mailto_description": "باز کردن لینک‌های mailto: در Bulwark", + "protocol_open_mode_label": "هنگام باز کردن لینک‌های پروتکل", + "protocol_open_mode_description": "انتخاب کنید لینک‌ها در تب جدید باز شوند یا نشست فعال.", + "protocol_open_mode_active_session": "باز کردن در نشست فعال", + "protocol_open_mode_new_tab": "همیشه در تب جدید", + "focus_notification_title": "باز کردن Bulwark", + "focus_notification_body": "لینک در Bulwark باز شد.", + "webcal_label": "لینک‌های تقویم", + "webcal_description": "باز کردن لینک‌های webcal: در Bulwark", + "register_mailto": "ثبت برنامه ایمیل", + "register_webcal": "ثبت برنامه تقویم", + "mailto_registered": "ثبت مدیریت ایمیل درخواست شد", + "webcal_registered": "ثبت مدیریت تقویم درخواست شد", + "registration_failed": "ثبت پروتکل ناموفق بود", + "opening_mailto": "در حال باز کردن ویرایشگر...", + "opening_webcal": "در حال باز کردن تقویم...", + "browser_note": "مرورگر یا سیستم عامل ممکن است تأیید شما را بخواهد.", + "select_account_title": "انتخاب حساب", + "select_mailto_account": "انتخاب کنید کدام حساب این لینک ایمیل را باز کند.", + "select_webcal_account": "انتخاب کنید کدام حساب این لینک تقویم را باز کند.", + "select_account_note": "فقط برای این لینک پروتکل اعمال می‌شود.", + "detail_to": "به", + "detail_subject": "موضوع", + "detail_no_subject": "بدون موضوع", + "detail_calendar": "تقویم", + "detail_source": "منبع", + "active_account": "فعال", + "switching_account": "در حال تعویض حساب..." + }, + "sidebar_apps": { + "modal_title": "برنامه‌های نوار کناری", + "add_new": "افزودن برنامه", + "edit_app": "ویرایش برنامه", + "name_label": "نام", + "name_placeholder": "برنامه من", + "name_required": "نام الزامی است", + "url_label": "آدرس", + "url_required": "آدرس الزامی است", + "url_invalid": "آدرس http یا https معتبر وارد کنید", + "icon_label": "آیکون", + "icon_required": "آیکون الزامی است", + "open_mode_label": "حالت باز کردن", + "open_new_tab": "تب جدید", + "open_inline": "داخلی", + "cancel": "انصراف", + "add": "افزودن", + "update": "به‌روزرسانی", + "delete": "حذف", + "delete_confirm_title": "حذف برنامه", + "delete_confirm": "آیا از حذف \"{name}\" اطمینان دارید؟", + "no_apps": "هنوز برنامه‌ای اضافه نشده", + "no_apps_hint": "برنامه‌ها و لینک‌های دلخواه را به نوار کناری اضافه کنید", + "search_icons": "جستجوی آیکون‌ها...", + "show_popular": "محبوب", + "show_all": "همه", + "no_icons_found": "آیکونی یافت نشد", + "inline_badge": "داخلی", + "tab_badge": "تب", + "show_on_mobile": "نمایش در موبایل" + }, + "email_list": { + "no_emails": "پیامی یافت نشد", + "no_emails_description": "این صندوق پستی خالی است", + "no_search_results": "نتیجه‌ای یافت نشد", + "no_search_results_description": "جستجو یا فیلترهای خود را تنظیم کنید", + "loading": "در حال بارگذاری ایمیل‌ها...", + "unread": "خوانده نشده", + "to_me": "به من", + "to_recipients": "به {count} گیرنده", + "and_others": "و {count} نفر دیگر", + "draft": "پیش‌نویس", + "starred": "ستاره‌دار", + "conversations_count": "{count} از {total} مکالمه", + "conversations_count_plus": "+{count} مکالمه", + "conversations_count_simple": "{count} مکالمه", + "no_conversations": "مکالمه‌ای نیست", + "loading_more": "در حال بارگذاری بیشتر...", + "no_more_emails": "ایمیل بیشتری برای بارگذاری نیست", + "batch_actions": { + "select": "انتخاب ایمیل‌ها", + "select_all": "انتخاب همه", + "selected_messages": "{count, plural, one {1 ایمیل} other {# ایمیل}} انتخاب شده", + "mark_read": "علامت‌گذاری به عنوان خوانده شده", + "mark_unread": "علامت‌گذاری به عنوان خوانده نشده", + "delete": "حذف", + "delete_confirm_title": "حذف ایمیل‌ها", + "delete_confirm_message": "آیا از حذف {count, plural, one {1 ایمیل} other {# ایمیل}} اطمینان دارید؟", + "clear_selection": "پاک کردن انتخاب" + }, + "permanent_delete": "حذف دائمی", + "permanent_delete_confirm_title": "حذف دائمی", + "permanent_delete_confirm_message": "این ایمیل برای همیشه حذف خواهد شد. این عملیات قابل بازگشت نیست.", + "permanent_delete_confirm_batch_message": "این {count, plural, one {1 ایمیل} other {# ایمیل}} برای همیشه حذف خواهد شد.", + "empty_folder": { + "button": "خالی کردن پوشه", + "confirm_title": "خالی کردن پوشه", + "confirm_message": "همه ایمیل‌های این پوشه برای همیشه حذف خواهند شد.", + "confirm_button": "خالی کردن پوشه", + "junk_hint": "می‌توانید پوشه هرزنامه را خالی کنید.", + "trash_hint": "می‌توانید پوشه زباله‌دان را خالی کنید." + }, + "no_scheduled_emails": "ایمیل زمان‌بندی شده‌ای نیست", + "no_scheduled_emails_description": "پیام‌های زمان‌بندی شده برای بعد اینجا نمایش داده می‌شوند.", + "scheduled_count": "{count, plural, one {1 ایمیل زمان‌بندی شده} other {# ایمیل زمان‌بندی شده}}", + "scheduled_actions_hint": "پیام‌های زمان‌بندی شده را می‌توان لغو یا ویرایش کرد.", + "cancel_scheduled_send": "لغو ارسال", + "reschedule_send": "باززمان‌بندی", + "cancel_and_edit": "لغو و ویرایش", + "cancel_and_compose_again": "لغو و نوشتن مجدد", + "reschedule_prompt": "تاریخ/زمان جدید را وارد کنید" + }, + "email_viewer": { + "read_receipt": { + "prompt": "فرستنده درخواست تأیید خواندن کرده است:", + "send": "ارسال تأیید", + "ignore": "نادیده گرفتن", + "sent": "تأیید خواندن ارسال شد.", + "send_failed": "تأیید خواندن ارسال نشد", + "mdn_subject": "خوانده شد: {subject}", + "mdn_body": "این یک رسید برای پیام ارسالی به {recipient} است." + }, + "no_email_selected": "ایمیلی انتخاب نشده", + "no_email_description": "یک ایمیل از لیست انتخاب کنید", + "no_conversation_selected": "مکالمه‌ای انتخاب نشده", + "no_conversation_description": "یک مکالمه از لیست انتخاب کنید", + "compose": "ایمیل جدید", + "compose_hint": "نوشتن پیام جدید", + "no_subject": "(بدون موضوع)", + "no_body_content": "(محتوایی موجود نیست)", + "no_preview_available": "پیش‌نمایشی در دسترس نیست", + "loading_email": "در حال بارگذاری ایمیل...", + "loading": "در حال بارگذاری...", + "reply": "پاسخ", + "reply_all": "پاسخ به همه", + "forward": "ارسال مجدد", + "delete": "حذف", + "archive": "بایگانی", + "star": "ستاره‌دار کردن", + "unstar": "حذف ستاره", + "mark_unread": "علامت‌گذاری خوانده نشده", + "mark_read": "علامت‌گذاری خوانده شده", + "unread": "خوانده نشده", + "read": "خوانده شده", + "spam_short": "هرزنامه", + "not_spam_short": "هرزنامه نیست", + "move": "انتقال", + "print": "چاپ", + "view_source": "مشاهده منبع", + "export_email": "خروجی .eml", + "import_email": "وارد کردن .eml یا .zip", + "keyboard_shortcuts": "میانبرهای صفحه کلید (?)", + "email_source": "منبع ایمیل", + "draft_banner": "این پیام یک پیش‌نویس است", + "edit_draft": "ویرایش", + "copy_source": "کپی در کلیپ‌بورد", + "source_copied": "منبع کپی شد", + "attachments": "پیوست‌ها", + "important": "مهم", + "download": "دانلود", + "download_all": "دانلود همه", + "from": "از", + "to": "به", + "cc": "رونوشت", + "bcc": "رونوشت مخفی", + "date": "تاریخ", + "subject": "موضوع", + "show_details": "نمایش جزئیات", + "hide_details": "مخفی کردن جزئیات", + "external_content_warning": "تصاویر و محتوای خارجی مسدود شده‌اند", + "load_external_content": "بارگذاری تصاویر", + "trust_sender": "همیشه به این فرستنده اعتماد کن", + "back_to_list": "بازگشت به لیست", + "view_contact": "مشاهده مخاطب", + "message_details": "جزئیات پیام", + "more_reply_options": "گزینه‌های بیشتر پاسخ", + "set_color": "تنظیم برچسب", + "tag": "برچسب", + "more_actions": "عملیات بیشتر", + "previous": "قبلی", + "next": "بعدی", + "move_to": "انتقال به...", + "remove_color": "حذف برچسب", + "more_count": "+{count} بیشتر", + "characters_count": "{count} کاراکتر", + "quick_reply_placeholder": "پاسخ سریع بنویسید...", + "more_options": "گزینه‌های بیشتر", + "sending": "در حال ارسال...", + "security_authentication": "امنیت و احراز هویت", + "technical_details": "جزئیات فنی", + "message_id_label": "شناسه پیام:", + "reply_to_label": "پاسخ به:", + "delivery_time_label": "زمان تحویل:", + "conversation_part_label": "بخشی از مکالمه:", + "previous_messages": "{count} پیام قبلی", + "previous_messages_plural": "{count} پیام قبلی", + "time": { + "day": "روز", + "days": "روز", + "hour": "ساعت", + "hours": "ساعت", + "minute": "دقیقه", + "minutes": "دقیقه" + }, + "unknown_sender": "ناشناس", + "recipient_me": "من", + "recipient_and_others": "{name} و {count} نفر دیگر", + "recipient_to_prefix": "به:", + "authentication": { + "title": "احراز هویت", + "status": { + "verified": "تأیید شده", + "warning": "هشدار", + "none": "احراز هویت نشده" + }, + "spf": { + "pass": "SPF تأیید شد", + "fail": "SPF ناموفق", + "none": "SPF ندارد" + }, + "dkim": { + "pass": "DKIM معتبر", + "fail": "DKIM نامعتبر", + "none": "DKIM ندارد" + }, + "dmarc": { + "pass": "DMARC تأیید شد", + "fail": "DMARC ناموفق", + "none": "DMARC ندارد" + }, + "spam_score": "امتیاز هرزنامه", + "tooltip_spf": "SPF: تأیید مجاز بودن سرور ارسال‌کننده", + "tooltip_dkim": "DKIM: تأیید عدم تغییر ایمیل در انتقال", + "tooltip_dmarc": "DMARC: هماهنگی SPF و DKIM با دامنه فرستنده", + "policy": "سیاست", + "result": { + "pass": "موفق", + "fail": "ناموفق", + "softfail": "ناموفق نسبی", + "neutral": "خنثی", + "permerror": "خطای دائمی", + "temperror": "خطای موقت", + "none": "ندارد" + } + }, + "details": { + "recipients_routing": "گیرندگان و مسیریابی", + "authentication_security": "احراز هویت و امنیت", + "identifiers_threading": "شناسه‌ها و رشته‌بندی", + "mailing_list": "لیست پستی", + "message_properties": "ویژگی‌های پیام", + "sent": "ارسال شده", + "received": "دریافت شده", + "delivery_time": "زمان تحویل", + "in_reply_to": "در پاسخ به", + "references": "منابع", + "thread_id": "شناسه رشته", + "size": "حجم", + "mime_type": "نوع MIME", + "attachments_summary": "{count} فایل · {size}", + "list_id": "شناسه لیست", + "list_help": "راهنمای لیست", + "list_post": "ارسال به لیست", + "list_unsubscribe": "لغو اشتراک", + "iprev": "DNS معکوس", + "spam_status": "وضعیت هرزنامه", + "ai_verdict": "نظر هوش مصنوعی", + "account": "حساب", + "no_subject": "(بدون موضوع)" + }, + "headers": { + "routing": "مسیریابی", + "received": "دریافت شده", + "message_id": "شناسه پیام", + "list_info": "اطلاعات لیست" + }, + "color_tag": { + "title": "برچسب رنگی", + "red": "قرمز", + "orange": "نارنجی", + "yellow": "زرد", + "green": "سبز", + "blue": "آبی", + "purple": "بنفش", + "pink": "صورتی", + "none": "هیچکدام" + }, + "tooltips": { + "reply": "پاسخ (r)", + "reply_all": "پاسخ به همه (a)", + "forward": "ارسال مجدد (f)", + "archive": "بایگانی (e)", + "delete": "حذف (# یا Del)", + "star": "ستاره‌دار (s)", + "unstar": "حذف ستاره (s)", + "compose": "ایمیل جدید (c)", + "previous": "ایمیل قبلی", + "next": "ایمیل بعدی", + "edit_draft": "ویرایش پیش‌نویس" + }, + "spam": { + "button_title": "گزارش هرزنامه", + "not_spam_title": "علامت‌گذاری به عنوان قانونی", + "toast_success": "به هرزنامه منتقل شد", + "toast_batch": "{count} ایمیل به هرزنامه منتقل شد", + "toast_undo": "بازگردانی", + "toast_not_spam_success": "به صندوق ورودی منتقل شد", + "toast_not_spam_batch": "{count} ایمیل به صندوق ورودی منتقل شد", + "error": "گزارش هرزنامه ناموفق بود", + "error_not_spam": "بازگردانی ایمیل ناموفق بود" + }, + "unsubscribe_banner": { + "label": "خبرنامه", + "button": "لغو اشتراک", + "confirm_title": "لغو اشتراک از این فرستنده؟", + "confirm_button": "تأیید", + "cancel": "انصراف", + "success_http": "صفحه لغو اشتراک در تب جدید باز شد", + "success_mailto": "درخواست لغو اشتراک ارسال شد", + "error": "لغو اشتراک ممکن نیست", + "dismiss": "رد کردن" + }, + "calendar_invitation": { + "loading": "در حال بارگذاری جزئیات رویداد…", + "title": "دعوت‌نامه تقویم", + "published_title": "رویداد منتشر شده", + "response_title": "پاسخ رویداد", + "update_title": "به‌روزرسانی رویداد", + "counter_title": "پیشنهاد متقابل", + "refresh_title": "درخواست به‌روزرسانی", + "declined_counter_title": "پیشنهاد متقابل رد شد", + "cancelled_title": "رویداد لغو شد", + "organizer": "برگزارکننده: {name}", + "organizer_label": "برگزارکننده", + "attendees": "{count, plural, one {# شرکت‌کننده} other {# شرکت‌کننده}}", + "accept": "پذیرفتن", + "maybe": "شاید", + "decline": "رد کردن", + "add_to_calendar": "افزودن به تقویم", + "added": "به تقویم اضافه شد", + "rsvp_sent": "پاسخ ارسال شد", + "parse_error": "خواندن دعوت‌نامه ممکن نیست", + "action_failed": "عملیات تقویم انجام نشد.", + "no_calendar": "تقویم در دسترس نیست", + "published_info": "این رویداد برای اطلاع‌رسانی به اشتراک گذاشته شده.", + "response_info": "این پیام شامل پاسخ یک شرکت‌کننده است.", + "response_info_organizer": "پاسخ شرکت‌کننده رویداد شما را به‌روزرسانی می‌کند.", + "update_info": "این پیام یک رویداد موجود را به‌روزرسانی می‌کند.", + "counter_info": "این پیام تغییراتی در رویداد پیشنهاد می‌دهد.", + "counter_info_organizer": "شرکت‌کننده تغییراتی در رویداد شما پیشنهاد داده.", + "refresh_info": "این پیام آخرین جزئیات رویداد را درخواست می‌کند.", + "refresh_info_organizer": "شرکت‌کننده آخرین جزئیات رویداد را درخواست کرده.", + "declined_counter_info": "برگزارکننده پیشنهاد متقابل را رد کرد.", + "authentication_failed_info": "بررسی احراز هویت ایمیل ناموفق بود. با احتیاط عمل کنید.", + "authentication_missing_info": "این دعوت‌نامه فاقد احراز هویت ایمیل است.", + "sender_mismatch_info": "این دعوت‌نامه از {sender} ارسال شده ولی برگزارکننده {organizer} است.", + "sender_mismatch_unverified_info": "از {sender} ارسال شده ولی برگزارکننده {organizer} است و پیام تأیید نشد.", + "organizer_role": "شما برگزارکننده این رویداد هستید", + "your_response": "پاسخ شما: {status}", + "response_needed": "نیاز به پاسخ", + "response_accepted": "پذیرفته شد", + "response_tentative": "احتمالی", + "response_declined": "رد شد", + "response_delegated": "واگذار شد", + "actor_sent_info": "ارسال شده توسط {name}.", + "actor_response_info": "{name} پاسخ داد: {status}.", + "actor_counter_info": "{name} تغییراتی پیشنهاد داد.", + "actor_refresh_info": "{name} آخرین جزئیات را درخواست کرد.", + "actor_declined_counter_info": "{name} پیشنهاد متقابل را رد کرد.", + "actor_note": "یادداشت: {comment}", + "actor_unknown": "شخصی", + "proposed_changes": "تغییرات پیشنهادی", + "change_title": "عنوان", + "change_time": "زمان", + "change_location": "مکان", + "change_description": "توضیحات", + "change_empty": "هیچ", + "change_from_to": "{before} -> {after}", + "apply_proposal": "اعمال تغییرات پیشنهادی", + "proposal_applied": "تغییرات پیشنهادی اعمال شد.", + "review_proposal": "بررسی پیشنهاد", + "review_request": "بررسی درخواست", + "view_in_calendar": "مشاهده در تقویم", + "select_calendar": "انتخاب تقویم", + "already_in_calendar": "هم‌اکنون در تقویم شماست", + "request_info": "به این رویداد دعوت شده‌اید. پاسخ دهید.", + "cancel_info": "برگزارکننده این رویداد را لغو کرده است.", + "event_updated": "به‌روزرسانی #{sequence}", + "event_status_tentative": "احتمالی", + "event_status_cancelled": "لغو شده", + "expand": "نمایش جزئیات", + "collapse": "مخفی کردن جزئیات" + }, + "send": "ارسال", + "more": "بیشتر", + "scheduled_banner": "زمان‌بندی شده برای ارسال در {date}", + "scheduled_send_created": "ایمیل برای ارسال زمان‌بندی شد", + "cancel_scheduled_send": "لغو ارسال", + "reschedule_send": "باززمان‌بندی", + "cancel_and_edit": "لغو و ویرایش", + "cancel_and_compose_again": "لغو و نوشتن مجدد", + "reschedule_prompt": "تاریخ/زمان جدید را وارد کنید", + "scheduled_actions_only": "نمای زمان‌بندی فقط عملیات زمان‌بندی را پشتیبانی می‌کند", + "undo_send_scheduled": "پیام برای ارسال زمان‌بندی شد", + "undo_send": "بازگردانی ارسال", + "contact_sidebar": { + "title": "مخاطب", + "close": "بستن نوار کناری", + "action_email": "ایمیل", + "action_email_title": "ارسال ایمیل", + "action_copy": "کپی", + "action_copy_title": "کپی ایمیل", + "action_edit_title": "ویرایش مخاطب", + "section_emails": "ایمیل‌ها", + "section_phones": "تلفن‌ها", + "section_organizations": "سازمان‌ها", + "section_addresses": "آدرس‌ها", + "section_notes": "یادداشت‌ها", + "not_in_contacts": "در مخاطبین شما نیست", + "add_to_contacts": "افزودن به مخاطبین", + "copied": "کپی شد!", + "copy_failed": "کپی ناموفق بود" + } + }, + "email_composer": { + "read_receipt_on": "درخواست تأیید خواندن فعال (کلیک برای غیرفعال کردن)", + "read_receipt_off": "درخواست تأیید خواندن", + "new_message": "پیام جدید", + "reply": "پاسخ", + "reply_all": "پاسخ به همه", + "forward": "ارسال مجدد", + "reply_to": "پاسخ", + "reply_all_to": "پاسخ به همه", + "forward_message": "ارسال مجدد", + "from": "از", + "to": "به", + "cc": "رونوشت", + "bcc": "رونوشت مخفی", + "subject": "موضوع", + "body_placeholder": "پیام خود را بنویسید...", + "send": "ارسال", + "cancel": "انصراف", + "attach": "پیوست", + "attach_photos": "عکس و ویدیو", + "attach_files": "فایل‌ها", + "discard": "دور انداختن", + "discard_draft_title": "دور انداختن پیش‌نویس؟", + "discard_draft_confirm": "تغییرات ذخیره نشده دارید. پیش‌نویس دور انداخته شود؟", + "saving": "در حال ذخیره...", + "sending": "در حال ارسال...", + "add_link": "افزودن لینک", + "link_url_prompt": "آدرس را وارد کنید", + "draft_saved": "پیش‌نویس ذخیره شد", + "save_failed": "ذخیره ناموفق بود", + "to_placeholder": "آدرس ایمیل گیرندگان", + "cc_placeholder": "گیرندگان رونوشت", + "bcc_placeholder": "گیرندگان رونوشت مخفی", + "subject_placeholder": "موضوع", + "cc_label": "رونوشت:", + "bcc_label": "رونوشت مخفی:", + "subject_label": "موضوع:", + "file_size_kb": "کیلوبایت", + "prefix": { + "forward": "Fwd:", + "reply": "Re:" + }, + "no_subject": "(بدون موضوع)", + "unknown_sender": "ناشناس", + "quote": { + "reply_header": "در تاریخ {date}، {sender} نوشت:", + "forward_header": "---------- پیام ارجاعی ----------", + "from": "از: {sender}", + "date": "تاریخ: {date}", + "subject": "موضوع: {subject}", + "to": "به: {recipients}" + }, + "remove_sub_address": "حذف زیرآدرس", + "from_override": { + "toggle_off": "بازنویسی", + "toggle_on": "لغو بازنویسی", + "toggle_tooltip": "نام و آدرس فرستنده را آزادانه ویرایش کنید.", + "name_label": "نام فرستنده", + "name_placeholder": "نام", + "email_label": "آدرس ایمیل فرستنده", + "email_placeholder": "alias@example.com" + }, + "use_template": "قالب", + "save_as_template": "ذخیره به عنوان قالب", + "validation": { + "recipient_required": "یک گیرنده اضافه کنید", + "subject_required": "یک موضوع اضافه کنید", + "body_required": "پیامی بنویسید یا فایلی پیوست کنید" + }, + "upload_progress": "در حال بارگذاری {uploaded} / {total}", + "upload_cancel": "لغو بارگذاری", + "upload_failed": "بارگذاری {filename} ناموفق بود", + "drop_files": "فایل‌ها را اینجا رها کنید", + "show_less": "نمایش کمتر", + "send_failed": "ارسال ایمیل ناموفق بود", + "continue_draft": "ادامه پیش‌نویس", + "close_draft_title": "ذخیره یا دور انداختن پیش‌نویس؟", + "close_draft_message": "تغییرات ذخیره نشده دارید. ذخیره یا دور انداختن؟", + "save_draft": "ذخیره پیش‌نویس", + "smime_sign_on": "امضای S/MIME فعال", + "smime_sign_off": "فعال کردن امضای S/MIME", + "smime_encrypt_on": "رمزنگاری S/MIME فعال", + "smime_encrypt_off": "فعال کردن رمزنگاری S/MIME", + "smime_encrypt_unavailable": "رمزنگاری S/MIME در دسترس نیست", + "smime_unlock_title": "باز کردن قفل کلید S/MIME", + "smime_unlock_message": "عبارت عبور کلید S/MIME را وارد کنید.", + "smime_unlock_button": "باز کردن", + "smime_passphrase_placeholder": "عبارت عبور", + "forgot_attachment": { + "title": "آیا پیوست را فراموش کرده‌اید؟", + "message": "پیام شما به \"{keyword}\" اشاره دارد اما فایلی پیوست نشده.", + "send_anyway": "ارسال به هر حال", + "back": "بازگشت به ویرایش" + }, + "schedule_send": "زمان‌بندی ارسال", + "schedule_send_description": "زمان انتشار پیام توسط سرور را انتخاب کنید.", + "schedule_send_required": "تاریخ و زمان را انتخاب کنید.", + "schedule_send_invalid": "تاریخ و زمان معتبر وارد کنید.", + "schedule_send_future": "تاریخ و زمان در آینده انتخاب کنید.", + "schedule_send_too_late": "این زمان دیرتر از حد مجاز سرور است.", + "schedule_send_unsupported": "ارسال زمان‌بندی شده پشتیبانی نمی‌شود.", + "schedule_send_cleanup_warning": "ارسال زمان‌بندی ایجاد شد اما پاکسازی پیش‌نویس ناموفق بود.", + "send_delay_unsupported": "تأخیر ارسال پشتیبانی نمی‌شود.", + "send_delay_unsupported_confirm": "این حساب تأخیر ارسال ندارد. بلافاصله ارسال شود؟", + "recipient_edit_email": "ویرایش آدرس ایمیل", + "recipient_edit_name": "ویرایش نام نمایشی", + "recipient_email_placeholder": "آدرس ایمیل", + "recipient_name_placeholder": "نام نمایشی" + }, + "confirm_dialog": { + "confirm": "تأیید", + "cancel": "انصراف" + }, + "common": { + "loading": "در حال بارگذاری...", + "error": "خطا", + "success": "موفقیت", + "cancel": "انصراف", + "save": "ذخیره", + "delete": "حذف", + "edit": "ویرایش", + "close": "بستن", + "search": "جستجو", + "refresh": "بازنشانی", + "settings": "تنظیمات", + "help": "راهنما", + "logout": "خروج", + "yes": "بله", + "no": "خیر", + "unknown": "ناشناس", + "app_title": "ایمیل تحت وب", + "reconnecting": "ارتباط قطع شد. در حال تلاش برای اتصال مجدد…", + "rate_limited_title": "احراز هویت سرور موقتاً محدود شده است.", + "rate_limited_detail": "Bulwark درخواست‌های پس‌زمینه را متوقف کرده است. تلاش مجدد در {seconds} ثانیه.", + "rate_limited_action_title": "درخواست برای جلوگیری از قفل متوقف شد.", + "rate_limited_action_detail": "Bulwark منتظر پایان زمان انتظار سرور است. در {seconds} ثانیه دوباره تلاش کنید." + }, + "notifications": { + "email_sent": "ایمیل با موفقیت ارسال شد", + "email_deleted": "ایمیل حذف شد", + "email_archived": "ایمیل بایگانی شد", + "email_starred": "ایمیل ستاره‌دار شد", + "email_unstarred": "ستاره ایمیل برداشته شد", + "email_marked_read": "ایمیل خوانده شده علامت‌گذاری شد", + "email_marked_unread": "ایمیل خوانده نشده علامت‌گذاری شد", + "copied_to_clipboard": "در کلیپ‌بورد کپی شد", + "source_copied": "منبع در کلیپ‌بورد کپی شد", + "error_sending": "ارسال ایمیل ناموفق بود", + "error_deleting": "حذف ایمیل ناموفق بود", + "error_loading": "بارگذاری ایمیل‌ها ناموفق بود", + "new_email": "ایمیل جدید", + "new_email_from": "از {sender}", + "click_to_view": "برای مشاهده کلیک کنید", + "email_moved": "ایمیل منتقل شد", + "emails_moved": "{count} ایمیل منتقل شد", + "moved_to_mailbox": "منتقل شد به {mailbox}", + "move_failed": "انتقال ناموفق بود", + "move_error": "انتقال ایمیل‌ها به پوشه انتخاب شده ممکن نیست", + "email_tagged": "ایمیل برچسب‌گذاری شد", + "emails_tagged": "{count} ایمیل برچسب‌گذاری شد", + "tag_failed": "برچسب‌گذاری ناموفق بود", + "identity_created": "هویت با موفقیت ایجاد شد", + "identity_updated": "هویت با موفقیت به‌روزرسانی شد", + "identity_deleted": "هویت حذف شد", + "identity_set_primary": "هویت اصلی به‌روزرسانی شد", + "identity_create_failed": "ایجاد هویت ناموفق بود: {error}", + "identity_update_failed": "به‌روزرسانی هویت ناموفق بود: {error}", + "identity_delete_failed": "حذف هویت ناموفق بود: {error}", + "identity_unauthorized": "شما مجاز به ارسال از این آدرس ایمیل نیستید", + "identity_not_found": "هویت یافت نشد", + "vacation_saved": "تنظیمات پاسخ‌گوی خودکار ذخیره شد", + "vacation_save_failed": "ذخیره تنظیمات پاسخ‌گوی خودکار ناموفق بود", + "filters_saved": "فیلترها با موفقیت ذخیره شدند", + "filters_save_failed": "ذخیره فیلترها ناموفق بود", + "filters_deleted": "قانون فیلتر حذف شد", + "templates_exported": "قالب‌ها با موفقیت خروجی گرفته شدند", + "templates_imported": "{count, plural, one {# قالب} other {# قالب}} وارد شد", + "templates_import_errors": "برخی قالب‌ها وارد نشدند", + "templates_import_empty": "قالبی در فایل یافت نشد", + "export_email_error": "خروجی ایمیل ناموفق بود", + "import_email_success": "ایمیل با موفقیت وارد شد", + "import_email_error": "وارد کردن ایمیل ناموفق بود" + }, + "date": { + "today": "امروز", + "yesterday": "دیروز", + "this_week": "این هفته", + "last_week": "هفته گذشته", + "this_month": "این ماه", + "older": "قدیمی‌تر", + "just_now": "همین الان", + "minutes_ago": "{count} دقیقه پیش", + "minutes_ago_plural": "{count} دقیقه پیش", + "hours_ago": "{count} ساعت پیش", + "hours_ago_plural": "{count} ساعت پیش", + "days_ago": "{count} روز پیش", + "days_ago_plural": "{count} روز پیش" + }, + "language": { + "title": "زبان", + "english": "English", + "french": "Français", + "japanese": "日本語", + "spanish": "Español", + "italian": "Italiano", + "german": "Deutsch", + "dutch": "Nederlands", + "portuguese": "Português", + "russian": "Русский", + "select_language": "انتخاب زبان", + "switch_to_english": "تغییر به انگلیسی", + "switch_to_french": "تغییر به فرانسوی", + "switch_to_japanese": "تغییر به ژاپنی", + "switch_to_spanish": "تغییر به اسپانیایی", + "switch_to_italian": "تغییر به ایتالیایی", + "switch_to_german": "تغییر به آلمانی", + "switch_to_dutch": "تغییر به هلندی", + "switch_to_portuguese": "تغییر به پرتغالی", + "switch_to_russian": "تغییر به روسی", + "switching": "در حال تغییر زبان...", + "switch": "تغییر زبان", + "current": "زبان فعلی", + "polish": "Polski", + "switch_to_polish": "تغییر به لهستانی", + "en": "English", + "fr": "Français", + "de": "Deutsch", + "es": "Español", + "it": "Italiano", + "ja": "日本語", + "ko": "한국어", + "lv": "Latviešu", + "nl": "Nederlands", + "pl": "Polski", + "pt": "Português", + "ru": "Русский", + "uk": "Українська", + "zh": "简体中文" + }, + "settings": { + "title": "تنظیمات", + "back_to_mail": "بازگشت به ایمیل", + "save_success": "تنظیمات با موفقیت ذخیره شد", + "import_success": "تنظیمات با موفقیت وارد شد", + "import_error": "وارد کردن تنظیمات ناموفق بود", + "reset_confirm": "آیا از بازنشانی همه تنظیمات اطمینان دارید؟", + "unsaved_changes": "تغییرات ذخیره نشده دارید", + "discard_changes": "دور انداختن تغییرات ذخیره نشده؟", + "discard": "دور انداختن", + "keep_editing": "ادامه ویرایش", + "search_placeholder": "جستجوی تنظیمات", + "search_clear": "پاک کردن جستجو", + "search_no_results": "تنظبمات منطبقی یافت نشد", + "tabs": { + "appearance": "ظاهر", + "language": "زبان، منطقه و زمان", + "email": "رفتار ایمیل", + "composer": "ویرایشگر", + "privacy": "حریم خصوصی و امنیت", + "account": "حساب", + "identities": "هویت‌ها", + "vacation": "پاسخ‌گوی خودکار", + "advanced": "پیشرفته", + "calendar": "تقویم", + "filters": "فیلترها", + "templates": "قالب‌ها", + "folders": "پوشه‌ها", + "keywords": "برچسب‌ها", + "security": "امنیت", + "files": "فایل‌ها", + "contacts": "مخاطبین", + "encryption": "رمزنگاری", + "protocol_handlers": "برنامه‌های پیش‌فرض", + "sidebar_apps": "برنامه‌های نوار کناری", + "notifications": "اعلان‌ها", + "layout": "چیدمان", + "reading": "خواندن", + "composing": "نوشتن", + "downloads": "دانلودها", + "content_senders": "محتوا و فرستندگان", + "about_data": "درباره و داده‌ها", + "debug": "اشکال‌زدایی" + }, + "tab_groups": { + "general": "عمومی", + "account": "حساب و هویت", + "organization": "سازمان‌دهی ایمیل", + "apps": "برنامه‌ها", + "system": "سیستم", + "appearance": "ظاهر", + "mail": "ایمیل", + "privacy": "حریم خصوصی و امنیت", + "advanced": "پیشرفته" + }, + "appearance": { + "title": "Appearance", + "description": "Customize the look and feel of your webmail", + "theme": { + "label": "Theme", + "description": "Choose your preferred color scheme", + "light": "Light", + "dark": "Dark", + "system": "System" + }, + "language": { + "label": "Language", + "description": "Choose your preferred language" + }, + "font_size": { + "label": "Font Size", + "description": "Adjust text size for better readability", + "small": "Small", + "medium": "Medium", + "large": "Large" + }, + "list_density": { + "label": "Density", + "description": "Control spacing and padding across the UI", + "extra_compact": "Extra Compact", + "compact": "Compact", + "regular": "Regular", + "comfortable": "Comfortable" + }, + "animations": { + "label": "Enable Animations", + "description": "Show smooth transitions and effects" + }, + "toolbar_position": { + "label": "Toolbar Position", + "description": "Where to show email action buttons (Reply, Archive, Delete, etc.)", + "top": "Top", + "below_subject": "Below subject" + }, + "toolbar_labels": { + "label": "Show Toolbar Labels", + "description": "Display text labels next to toolbar icons. Disable to save space once you are familiar with the icons." + }, + "hide_account_switcher": { + "label": "Hide Sidebar Account Switcher", + "description": "Hide the account selector at the top of the folder sidebar. You can still switch accounts from the bottom navigation rail." + }, + "show_rail_account_list": { + "label": "Show Account Avatars on Navigation Rail", + "description": "Display individual account circles at the bottom of the navigation rail for quick switching, with a sign-out button below." + }, + "unified_mailbox": { + "label": "Unified Mailbox", + "description": "Show combined folders (Inbox, Sent, etc.) across all connected accounts", + "include_group": { + "label": "Include group inboxes", + "description": "Also merge shared/group inboxes into the unified view." + } + }, + "all_mail": { + "label": "All Mail", + "description": "Show an \"All Mail\" entry above your folders that merges messages from across this account's folders into one list.", + "folders_label": "Folders in All Mail", + "folders_description": "Choose which folders are merged into the All Mail view.", + "no_folders": "No folders available." + }, + "colorful_sidebar_icons": { + "label": "Colorful Sidebar Icons", + "description": "Tint folder and tag icons by type (blue Inbox, red Junk, green Sent, etc.). Disable for a monochrome sidebar." + }, + "pro_interface": { + "label": "Pro Interface (Experimental)", + "description": "Desktop-only power-user layout with multi-tab message browsing and cross-account workflows. The standard interface is unaffected; you can switch back at any time.", + "open_label": "Open Pro Interface", + "back_to_standard": "Back to standard" + } + }, + "keywords": { + "title": "Email Tags", + "description": "Define tags to organize your emails with colors. These are stored as JMAP keywords on the server.", + "add_keyword": "Add Tag", + "reset_defaults": "Reset to Defaults", + "label_field": "Display Name", + "label_placeholder": "e.g. Work, Personal, Urgent", + "id_field": "Tag ID", + "id_placeholder": "e.g. work, personal", + "color_field": "Color", + "id_exists": "This tag ID already exists", + "edit": "Edit tag", + "delete": "Delete tag", + "save": "Save", + "add": "Add", + "cancel": "Cancel", + "migrating": "Updating tag on existing emails…", + "migration_error": "Failed to update tag on existing emails" + }, + "notifications": { + "test_sound": "Test notification sound", + "sounds": { + "default": "Default (Beep)", + "cheerful": "Cheerful", + "involved": "Involved", + "swift": "Swift Gesture", + "relax": "Relax" + }, + "push": { + "title": "Background Notifications", + "description": "Receive system notifications for new mail when this site is closed. Delivered via the Bulwark push relay; the relay never sees mail content.", + "relay_label": "Push relay", + "relay_desc": "Defaults to the hosted Bulwark relay. Change only if you self-host.", + "relay_locked": "Set by administrator", + "relay_locked_desc": "The push relay URL has been set by your administrator and cannot be changed.", + "relay_placeholder": "https://notifications.relay.example.com", + "status_active": "Active on this device", + "status_inactive": "Not enabled on this device", + "status_unsupported": "This browser does not support Web Push", + "status_busy": "Working…", + "enable": "Enable", + "reenable": "Re-register", + "disable": "Disable", + "confirm_disable_title": "Disable background notifications?", + "confirm_disable_message": "This device will stop receiving alerts when the site is closed.", + "ios_hint": "On iOS, install the site to your home screen first - Safari only delivers Web Push to installed PWAs." + }, + "sound_selection": { + "title": "Notification Sound", + "description": "Choose which sound to play for notifications", + "choose": "Sound", + "choose_desc": "Select a notification tone and click the speaker icon to preview it" + }, + "email": { + "title": "Email Notifications", + "description": "Configure notifications for incoming emails", + "enabled": "Email notifications", + "enabled_desc": "Show notifications when new emails arrive", + "sound": "Notification sound", + "sound_desc": "Play an audio alert when new emails arrive" + }, + "calendar": { + "title": "Calendar Notifications", + "description": "Configure notifications for calendar events", + "enabled": "Event notifications", + "enabled_desc": "Show alerts for upcoming calendar events", + "sound": "Notification sound", + "sound_desc": "Play an audio alert for calendar reminders", + "invitation_parsing": "Parse email invitations", + "invitation_parsing_desc": "Detect calendar invitations in email attachments and show calendar actions" + } + }, + "language_region": { + "title": "Language, Region & Time", + "description": "Language, date format, time format, and other regional preferences", + "language": { + "label": "Language", + "description": "Choose your preferred language", + "english": "English", + "french": "Français" + }, + "date_format": { + "label": "Date Format", + "description": "How dates are shown in the email list", + "smart": "Smart (locale-aware)", + "relative": "Relative (1h ago, 2d ago)", + "full": "Always full date", + "preview_today": "Today:", + "preview_this_week": "This week:", + "preview_older": "Older:" + }, + "time_format": { + "label": "Time Format", + "description": "Choose between 12-hour or 24-hour clock", + "12h": "12-hour", + "24h": "24-hour" + }, + "first_day": { + "label": "First Day of Week", + "description": "Start week on Sunday or Monday", + "sunday": "Sunday", + "monday": "Monday" + } + }, + "email_behavior": { + "request_read_receipt": { + "label": "Request read receipts by default", + "description": "Pre-enable the read-receipt request when composing a new message." + }, + "read_receipt_response": { + "label": "Respond to read-receipt requests", + "description": "What to do when an incoming message asks for a read receipt.", + "ask": "Ask each time", + "always": "Always send", + "never": "Never send" + }, + "title": "Email Behavior", + "description": "Configure how emails are handled", + "mark_read": { + "label": "Mark as Read", + "description": "When to mark emails as read when opened", + "instant": "Instantly", + "delay_3s": "After 3 seconds", + "delay_5s": "After 5 seconds", + "never": "Never" + }, + "delete_action": { + "label": "Delete Action", + "description": "What happens when you delete an email", + "trash": "Move to Trash", + "trash_and_read": "Move to Trash and mark as read", + "permanent": "Delete Permanently", + "warning": "Emails will be permanently deleted and cannot be recovered. This action is irreversible." + }, + "archive_mode": { + "label": "Archive in", + "description": "How to organize emails when archiving", + "single": "A single folder", + "year": "A folder per year", + "month": "A folder per month", + "reorganize": "Reorganize existing archive", + "reorganize_success": "{count, plural, =0 {No emails to reorganize} =1 {1 email reorganized} other {# emails reorganized}}", + "reorganize_error": "Failed to reorganize archive" + }, + "permanently_delete_junk": { + "label": "Permanently Delete Junk", + "description": "Permanently delete emails from the Junk/Spam folder instead of moving them to Trash" + }, + "mail_layout": { + "label": "Mail Layout", + "description": "Choose between the classic split reading pane, a Gmail-style focused reading flow, or a Zimbra-style bottom reading pane.", + "split": "Split pane", + "split_description": "Keep the message list and reading pane visible side by side.", + "focus": "Focused list", + "focus_description": "Show one line per message and open mail full-width while keeping the folder sidebar visible.", + "horizontal": "Reading pane at bottom", + "horizontal_description": "Show the message list on top and open the selected message in a reading pane below it." + }, + "show_preview": { + "label": "Show Preview Text", + "description": "Display email preview in the list", + "focus_description": "Display inline preview text inside the focused one-line message list" + }, + "disable_threading": { + "label": "Disable Conversation Grouping", + "description": "Show emails as individual messages instead of grouped by conversation" + }, + "plain_text_mode": { + "label": "Plain Text Only", + "description": "Disable the rich text editor and send all emails as plain text only, including replies and forwards" + }, + "auto_select_reply_identity": { + "label": "Reply From Received Address", + "description": "When replying, send from the address the message was originally sent to. Matches identities first; for domain catch-all deliveries, rewrites the From header to the alias while sending through your primary identity." + }, + "signature_position": { + "label": "Signature Position", + "description": "Where to insert your signature in replies and forwards. Above the quoted text reads naturally as a closing for the reply; below keeps the original message contiguous.", + "above_quote": "Before quoted text", + "below_quote": "After quoted text" + }, + "signature_separator": { + "label": "Signature Delimiter", + "description": "Prefix the signature with the standard \"-- \" delimiter line (RFC 3676). Turn off if you'd rather flow straight from your message into the signature." + }, + "sub_address_delimiter": { + "label": "Sub-Address Delimiter", + "description": "Character separating your username from a sub-address tag. Match the delimiter your mail server uses (e.g. user{delimiter}tag@domain.com).", + "option": "{delimiter} (user{delimiter}tag@domain.com)", + "custom": "Custom…", + "custom_input_label": "Custom delimiter character" + }, + "attachment_click_action": { + "label": "Attachment Click Action", + "description": "Choose whether clicking a file attachment previews it or downloads it immediately", + "preview": "Preview when possible", + "download": "Download immediately" + }, + "attachment_position": { + "label": "Attachment Position", + "description": "Where to display attachments in the email header", + "beside-sender": "Next to sender", + "below-header": "Below header" + }, + "emails_per_page": { + "10": "10 emails", + "25": "25 emails", + "50": "50 emails", + "100": "100 emails", + "label": "Emails Per Page", + "description": "Number of emails to load at once" + }, + "always_light_mode": { + "label": "Always Show Emails in Light Mode", + "description": "Render email content in light mode even when the app is in dark mode, avoiding dark mode conversion issues" + }, + "external_content": { + "label": "External Content", + "description": "How to handle images and external content", + "ask": "Always ask", + "block": "Always block", + "allow": "Always allow" + }, + "trusted_senders": { + "label": "Trusted Senders", + "description": "Manage senders whose images load automatically", + "count_zero": "None", + "count_one": "1 sender", + "count_other": "{count} senders", + "modal_title": "Trusted Senders", + "empty_title": "No trusted senders yet", + "empty_description": "When viewing an email with blocked images, click \"Always trust this sender\" to add them here.", + "add_manually": "Add sender manually", + "add_button": "Add", + "add_placeholder": "Enter email address", + "search_placeholder": "Search senders...", + "no_results": "No senders match your search", + "remove": "Remove", + "close": "Close", + "invalid_email": "Please enter a valid email address", + "already_added": "This sender is already trusted", + "save_error": "Failed to save - check the Contacts debug log for details", + "use_address_book_label": "Sync with address book", + "use_address_book_description": "Store trusted senders in a dedicated \"Trusted Senders\" address book so they sync across all your devices" + }, + "hover_actions": { + "label": "Quick Hover Actions", + "description": "Choose which quick actions appear when hovering over an email in the list", + "delete": "Delete", + "star": "Star / Unstar", + "mark_read": "Mark Read / Unread", + "archive": "Archive", + "tag": "Tag", + "spam": "Mark as Spam", + "none_selected": "No actions selected", + "mode_label": "Display Mode", + "mode_inline": "Inline", + "mode_floating": "Floating", + "corner_label": "Floating Position", + "corner_top-left": "Top Left", + "corner_top-right": "Top Right", + "corner_bottom-left": "Bottom Left", + "corner_bottom-right": "Bottom Right" + }, + "default_mail_program": { + "label": "Default Mail Program", + "description": "Register {appName} as your default mail program for mailto: links", + "button": "Set as Default", + "success": "Browser prompted to set as default", + "error": "Your browser does not support this feature" + }, + "attachment_reminder": { + "label": "Attachment Reminder", + "description": "Warn before sending when your message mentions attachments but none are attached", + "keywords_label": "Trigger keywords", + "keywords_description": "Words or phrases that trigger the reminder when found in your message", + "add_placeholder": "Add keyword...", + "add": "Add", + "remove": "Remove" + }, + "hide_inline_image_attachments": { + "label": "Hide inline images from attachments", + "description": "Images embedded in the message body are not listed as separate attachments" + }, + "attachment_image_previews": { + "label": "Show image previews in attachments", + "description": "Render image attachments as thumbnail cards instead of generic file icons" + }, + "send_delay": { + "label": "Undo send / send delay", + "description": "Delay normal sends by a short server-side window.", + "off": "Off", + "seconds": "{seconds} seconds", + "unsupported": "The current account does not advertise delayed-send support. The setting is still saved for other accounts." + } + }, + "composer": { + "title": "Composer", + "description": "Configure email composition settings", + "autosave": { + "label": "Auto-save Interval", + "description": "How often to save drafts automatically", + "30s": "Every 30 seconds", + "1m": "Every minute", + "2m": "Every 2 minutes", + "5m": "Every 5 minutes" + }, + "send_confirmation": { + "label": "Send Confirmation", + "description": "Ask for confirmation before sending emails" + }, + "default_reply": { + "label": "Default Reply Mode", + "description": "Default action when clicking reply", + "reply": "Reply", + "reply_all": "Reply All" + } + }, + "privacy": { + "title": "Privacy & Security", + "description": "Manage your privacy and security settings", + "external_images": { + "label": "Block External Images", + "description": "Prevent tracking through external images" + }, + "session_timeout": { + "label": "Session Timeout", + "description": "Automatically log out after inactivity", + "never": "Never", + "30m": "30 minutes", + "1h": "1 hour", + "4h": "4 hours" + }, + "clear_cache": { + "label": "Clear Cache", + "description": "Remove cached data and temporary files", + "button": "Clear Cache", + "confirm": "Are you sure you want to clear the cache?", + "success": "Cache cleared successfully" + } + }, + "account": { + "title": "Account", + "description": "View your account information", + "name_label": "Display Name", + "username_label": "Username", + "account_type_label": "Account Type", + "auth_method_label": "Authentication", + "auth_method_oauth": "Single Sign-On (OAuth/OIDC)", + "auth_method_basic": "Password", + "demo_account": "Demo Account", + "email": { + "label": "Email Address", + "value": "{email}" + }, + "server": { + "label": "JMAP Server", + "value": "{server}" + }, + "storage": { + "label": "Storage Usage", + "used": "{used} of {total} used", + "percentage": "{percent}% used" + }, + "last_sync": { + "label": "Last Sync", + "value": "{time}" + }, + "accounts": { + "title": "Logged-in accounts", + "description": "Drag to reorder how accounts appear in the account dropdown", + "active": "Currently active account", + "default_badge": "Default account", + "set_default": "Set as default", + "switch_to": "Switch to this account", + "move_up": "Move up", + "move_down": "Move down", + "drag_handle": "Drag to reorder", + "add": "Add account" + }, + "shared_accounts": { + "title": "Shared with me", + "description": "Group and shared accounts you can manage. Select one to edit its filters, vacation responder, calendars, and contacts.", + "shared_label": "Shared account" + } + }, + "scoped": { + "back": "Back to my account", + "managing": "Managing: {name}" + }, + "security": { + "title": "Account Security", + "description": "Manage your password, two-factor authentication, and security settings", + "detecting": "Detecting server capabilities...", + "not_available": "Account security management is not available for this mail server. Required permissions may be disabled. See the documentation for details.", + "password": { + "title": "Change Password", + "current": "Current Password", + "new": "New Password", + "confirm": "Confirm New Password", + "submit": "Change Password", + "success": "Password changed successfully", + "error_title": "Password change failed", + "error_mismatch": "New passwords do not match", + "error_min_length": "Password must be at least 8 characters", + "error_generic": "Failed to change password" + }, + "display_name": { + "label": "Display Name", + "description": "Your name as it appears on the server", + "placeholder": "Enter your display name", + "save": "Save", + "success": "Display name updated", + "error": "Failed to update display name" + }, + "totp": { + "section_title": "Two-Factor Authentication", + "label": "TOTP Authentication", + "description": "Add an extra layer of security with a time-based one-time password", + "active": "Enabled", + "inactive": "Disabled", + "enabled": "Two-factor authentication enabled", + "disabled": "Two-factor authentication disabled", + "enable_error": "Failed to enable 2FA", + "disable_error": "Failed to disable 2FA", + "setup_instructions": "Copy this URL into your authenticator app (Google Authenticator, Authy, etc.):", + "verification_code": "Verification code", + "confirm": "Confirm", + "disable": "Disable", + "disable_confirm_prompt": "Enter your password to disable two-factor authentication.", + "password_required": "Password is required", + "code_required": "Verification code is required", + "code_invalid": "Invalid verification code. Check your authenticator app and try again." + }, + "app_passwords": { + "title": "App Passwords", + "description": "Create passwords for apps that don't support two-factor authentication", + "add": "Add", + "create": "Create", + "cancel": "Cancel", + "done": "Done", + "generate": "Generate", + "name_label": "App Name", + "name_placeholder": "e.g. Thunderbird, iPhone Mail", + "expires_label": "Expires (optional)", + "allowed_ips_label": "Allowed IPs (optional)", + "allowed_ips_placeholder": "10.0.0.5, 192.168.1.0/24", + "allowed_ips_hint": "Comma- or space-separated. Leave empty to allow any IP.", + "password_label": "Password (leave empty to auto-generate)", + "password_placeholder": "Auto-generated if empty", + "copy_now_warning": "Copy this password now - it will not be shown again.", + "added": "App password created", + "removed": "App password removed", + "add_error": "Failed to create app password", + "remove_error": "Failed to remove app password", + "none": "No app passwords configured" + }, + "api_keys": { + "title": "API Keys", + "description": "Create API keys for scripts and integrations that talk to the server directly", + "name_label": "Key Name", + "name_placeholder": "e.g. Backup script, CI runner", + "copy_now_warning": "Copy this API key now - it will not be shown again.", + "added": "API key created", + "removed": "API key removed", + "add_error": "Failed to create API key", + "remove_error": "Failed to remove API key", + "none": "No API keys configured" + }, + "encryption": { + "section_title": "Encryption at Rest", + "label": "Email Encryption", + "description": "Encrypt stored emails on the server for additional privacy", + "active": "{type} encryption enabled", + "inactive": "Disabled", + "enabled": "Encryption at rest enabled", + "disabled_success": "Encryption at rest disabled", + "error": "Failed to update encryption settings" + }, + "email_client": { + "title": "Email Client Setup", + "description": "Use these credentials to configure your desktop or mobile email client (Thunderbird, Apple Mail, Outlook, etc.)", + "jmap_username_label": "JMAP Username", + "copy": "Copy", + "copied": "Copied", + "password_instructions": "Use your JMAP username above along with an app password to sign in to your email client. Create an app password in the section above if you haven't already." + }, + "link_device": { + "title": "Link Mobile App", + "description": "Sign in to the Bulwark Mail mobile app without typing anything. Generate a QR code here and scan it from the app's login screen.", + "generate": "Show QR code", + "regenerate": "Show a new code", + "instructions": "Open the Bulwark Mail app, tap \"Scan QR code\" on the login screen, and point your camera here.", + "expires_in": "This code expires in {seconds} seconds. It can only be used once.", + "expired": "This code has expired.", + "generating": "Generating…", + "error": "Couldn't create a pairing code. Please try again." + } + }, + "identities": { + "title": "Sending Identities", + "description": "Manage email addresses you can send from", + "identities_count": { + "label": "Your Identities", + "description": "Email addresses configured for sending", + "count_zero": "No identities", + "count_one": "1 identity", + "count_other": "{count} identities" + }, + "manage": "Manage Identities", + "sub_addressing": { + "label": "Sub-Addressing", + "description": "Use tags like user+tag@domain.com to organize incoming mail", + "learn_more": "Learn More" + } + }, + "vacation": { + "title": "Vacation Responder", + "description": "Automatically reply to incoming emails while you're away", + "loading": "Loading vacation settings...", + "not_supported": "Your mail server does not support vacation responses.", + "fetch_error": "Failed to load vacation settings. Please try again.", + "status": { + "label": "Vacation Responder", + "description": "Send an automatic reply to people who email you", + "active": "Active", + "inactive": "Inactive" + }, + "date_range": { + "title": "Date Range", + "description": "Optionally limit the auto-reply to a specific period", + "start": "Start Date", + "start_description": "Leave empty for no start limit", + "end": "End Date", + "end_description": "Leave empty for no end limit" + }, + "message": { + "title": "Auto-Reply Message", + "description": "The message that will be sent as a reply", + "subject_label": "Subject", + "subject_description": "Subject line of the auto-reply", + "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." + }, + "preview": { + "title": "Preview", + "show": "Show preview", + "hide": "Hide preview" + }, + "save": "Save Changes", + "saving": "Saving...", + "warnings": { + "end_before_start": "End date must be after start date", + "start_in_past": "Start date is in the past", + "empty_body": "Message body is empty - recipients will receive a blank reply" + } + }, + "folders": { + "role_memos": "Notes", + "title": "Folders", + "description": "Manage your email folders and assign standard roles", + "folder_list": "Your Folders", + "folder_list_description": "Click a folder icon to customize it", + "standard_roles": "Standard Folder Roles", + "standard_roles_description": "Assign which folders are used for standard mailbox roles like Inbox, Sent, Trash, etc.", + "role_inbox": "Inbox", + "role_drafts": "Drafts", + "role_sent": "Sent", + "role_trash": "Trash", + "role_junk": "Spam / Junk", + "role_archive": "Archive", + "role_none": "None", + "create_folder": "Create Folder", + "create_subfolder": "Create Subfolder", + "subfolder_of": "Inside {name}", + "subfolder_name": "Subfolder name", + "new_folder_name": "Folder name", + "rename": "Rename", + "change_icon": "Change icon", + "delete": "Delete", + "confirm_delete": "Are you sure you want to delete \"{name}\"? Emails in this folder will be moved to Trash.", + "create": "Create", + "cancel": "Cancel", + "no_folders": "No custom folders", + "cannot_delete_role": "Cannot delete a folder with a standard role. Remove the role first.", + "folder_created": "Folder created", + "folder_renamed": "Folder renamed", + "folder_deleted": "Folder deleted", + "role_updated": "Folder role updated", + "error_create": "Failed to create folder", + "error_rename": "Failed to rename folder", + "error_delete": "Failed to delete folder", + "error_delete_has_children": "Cannot delete folder: it still contains subfolders. Delete or move them first.", + "error_delete_has_email": "Cannot delete folder: it still contains emails. Move or delete them first.", + "error_role": "Failed to update folder role" + }, + "advanced": { + "title": "Advanced", + "description": "Advanced options and developer settings", + "debug_mode": { + "label": "Debug Mode", + "description": "Enable detailed logging for troubleshooting" + }, + "debug_categories": { + "description": "Select which categories to log. Disable categories you don't need to reduce console noise.", + "jmap": "JMAP Client", + "jmap_description": "Mailbox operations, email fetching, and JMAP protocol requests", + "calendar": "Calendar", + "calendar_description": "Calendar events, imports, and scheduling messages", + "tasks": "Tasks", + "tasks_description": "Calendar task creation, fetching, and updates", + "auth": "Authentication", + "auth_description": "Login, TOTP, token exchange, and session management", + "filters": "Filters", + "filters_description": "Sieve filter rules and vacation scripts", + "email": "Email Viewing", + "email_description": "Email rendering, TNEF processing, and mark-as-read", + "push": "Push Notifications", + "push_description": "Push notification setup and delivery", + "contacts": "Contacts & Address Books", + "contacts_description": "Contact sync, address book operations, and trusted senders" + }, + "settings_sync": { + "label": "Settings Sync", + "description": "Sync your settings across browsers and devices" + }, + "sender_favicons": { + "label": "Sender Favicons", + "description": "Show website icons as profile pictures for business senders" + }, + "show_avatars_in_junk": { + "label": "Show Avatars in Junk Folder", + "description": "Show profile images and favicons for senders in the junk folder. Disabled by default to avoid lending visual legitimacy to phishing attempts." + }, + "keyboard_shortcuts": { + "label": "Keyboard Shortcuts", + "description": "View available keyboard shortcuts", + "button": "View Shortcuts" + }, + "reset_settings": { + "label": "Reset Settings", + "description": "Restore all settings to default values", + "button": "Reset to Defaults" + }, + "export_settings": { + "label": "Export Settings", + "description": "Download your settings as JSON", + "button": "Export" + }, + "import_settings": { + "label": "Import Settings", + "description": "Upload settings from JSON file", + "button": "Import" + }, + "about": { + "title": "Bulwark Webmail" + } + }, + "sidebar_apps": { + "title": "Sidebar Apps", + "description": "Manage custom apps and links in your sidebar", + "keep_loaded": "Keep Apps Loaded", + "keep_loaded_description": "Keep inline apps running in the background when switching between them to avoid reloading", + "manage_title": "Custom Apps", + "manage_description": "Add, edit, or remove custom apps from your sidebar" + }, + "contacts": { + "title": "Contacts", + "description": "Import and export your contacts", + "group_by_letter_label": "Group by first letter", + "group_by_letter_description": "Show alphabetical section headers in the contact list", + "import_label": "Import Contacts", + "import_description": "Import contacts from a vCard (.vcf) file", + "export_label": "Export Contacts", + "export_description": "Export all contacts as a vCard (.vcf) file", + "manage_title": "Address Books", + "manage_description": "Rename your address books", + "no_address_books": "No address books found", + "categories_title": "Categories", + "categories_description": "Rename contact categories", + "no_categories": "No categories found" + }, + "downloads": { + "title": "Downloads", + "description": "Customize how downloaded emails and attachments are named.", + "reset": "Restore default", + "preview": "Preview:", + "email_template": { + "label": "Email (.eml) filename", + "description": "Template used when you export an email or drag one out to the file system. The .eml extension is added automatically." + }, + "attachment_template": { + "label": "Attachment filename", + "description": "Template used when downloading or dragging out an attachment. If you omit '{filename}' and '{ext}', the original extension is preserved." + }, + "bundle_template": { + "label": "Multi-email .zip filename", + "description": "Template used when you drag out or download several selected emails as a single .zip archive. The .zip extension is added automatically." + }, + "spaces": { + "label": "Spaces", + "description": "Replace spaces in the resulting filename with another character.", + "keep": "Keep spaces", + "underscore": "Replace with _", + "dash": "Replace with -" + }, + "lowercase": { + "label": "Lowercase", + "description": "Force the entire filename to lowercase." + }, + "strip_diacritics": { + "label": "Strip diacritics", + "description": "Convert accented letters to their ASCII equivalents (ä → a, é → e). Useful for tools that mangle Unicode filenames." + }, + "collapse_separators": { + "label": "Collapse repeated separators", + "description": "Collapse runs of spaces, underscores, or dashes to a single character." + }, + "after_export": { + "label": "After export", + "description": "Optionally move the email after exporting it as .eml.", + "keep": "Keep in mailbox", + "archive": "Move to archive", + "trash": "Move to trash" + } + }, + "filters": { + "title": "Email Filters", + "description": "Create rules to automatically sort, label, and manage incoming emails", + "add_rule": "Add Rule", + "no_rules": "No filter rules", + "no_rules_description": "Create rules to automatically organize your incoming emails", + "vacation_active": "Vacation Responder is active", + "vacation_active_description": "Auto-reply is enabled for incoming messages", + "vacation_configure": "Configure", + "edit_rule": "Edit Rule", + "new_rule": "New Rule", + "delete_rule": "Delete Rule", + "delete_confirm": "Are you sure you want to delete this rule?", + "enable": "Enable", + "disable": "Disable", + "raw_editor": "Raw Sieve Editor", + "raw_editor_warning": "Editing the raw Sieve script may break visual rule editing. Changes made here override the visual builder.", + "validate": "Validate", + "validation_success": "Script is valid", + "validation_error": "Script has errors", + "save": "Save Rules", + "saving": "Saving...", + "saved": "Filters saved successfully", + "save_failed": "Failed to save filters", + "loading": "Loading filters...", + "not_supported": "Your mail server does not support email filters.", + "rule_name": "Rule Name", + "rule_name_placeholder": "e.g., Sort newsletters", + "match_all": "Match ALL conditions", + "match_any": "Match ANY condition", + "conditions": "Conditions", + "add_condition": "Add Condition", + "actions": "Actions", + "add_action": "Add Action", + "stop_processing": "Stop processing subsequent rules", + "attachment_type_placeholder": "e.g. pdf, doc, jpg", + "value_placeholder_multi": "Value (multiple separated by commas)", + "condition_fields": { + "attachment": "Attachment", + "from": "From", + "to": "To", + "cc": "Cc", + "subject": "Subject", + "header": "Custom Header", + "size": "Size", + "body": "Body" + }, + "comparators": { + "has_any": "is present", + "has_type": "of type", + "contains": "contains", + "not_contains": "does not contain", + "is": "is exactly", + "not_is": "is not", + "starts_with": "starts with", + "ends_with": "ends with", + "matches": "matches pattern", + "greater_than": "is greater than", + "less_than": "is less than" + }, + "action_types": { + "move": "Move to folder", + "copy": "Copy to folder", + "forward": "Forward to", + "mark_read": "Mark as read", + "star": "Star message", + "add_label": "Add tag", + "discard": "Discard (delete silently)", + "reject": "Reject with message", + "keep": "Keep in inbox", + "stop": "Stop processing" + }, + "move_to_folder": "Select folder", + "copy_to_folder": "Select folder", + "forward_to": "Forward to email address", + "forward_placeholder": "email@example.com", + "reject_message": "Rejection message", + "reject_placeholder": "Your email has been rejected", + "label_name": "Tag name", + "label_placeholder": "Select tag", + "header_name": "Header name", + "header_placeholder": "e.g., X-Mailing-List", + "size_bytes": "Size in bytes", + "size_placeholder": "e.g., 1000000", + "system_managed": "System-managed rule", + "opaque_warning": "This script was edited outside the visual builder. Only raw Sieve editing is available.", + "open_sieve_editor": "Open raw Sieve editor", + "fetch_error": "Failed to load filters", + "expanded_view": "Expanded view", + "expanded_view_description": "Show filter rules with detailed condition and action blocks", + "if": "If", + "then": "Then", + "match_all_conditions": "all match", + "match_any_condition": "any matches", + "and": "and", + "or": "or", + "cancel": "Cancel", + "confirm_delete": "Delete", + "rule_list": "Filter rules", + "drag_to_reorder": "Drag to reorder", + "match_type": "Match type", + "reset_to_visual": "Reset to visual builder", + "reset_warning": "This will discard the current script and start fresh.", + "confirm_reset": "Reset", + "validation_empty_name": "Rule name is required", + "validation_empty_conditions": "At least one condition with a value is required", + "validation_empty_actions": "At least one action is required", + "templates_section": "Start from template", + "template_newsletters": "Move newsletters to folder", + "template_receipts": "Auto-archive receipts", + "template_important": "Flag important emails", + "template_notifications": "Filter notifications", + "sieve_editor": { + "title": "Sieve Script Editor", + "warning": "Editing the raw Sieve script may break visual rule editing. Changes made here override the visual builder.", + "script_content": "Sieve script", + "valid": "Script is valid", + "invalid": "Script has errors", + "save_warning": "Saving will overwrite any visual rules. This cannot be undone. Click Save again to confirm.", + "validating": "Validating...", + "validate": "Validate", + "cancel": "Cancel", + "save": "Save", + "confirm_save": "Confirm Save", + "validation_failed": "Validation request failed" + }, + "rule_summary": { + "conditions_count": "{count, plural, one {# condition} other {# conditions}}", + "actions_count": "{count, plural, one {# action} other {# actions}}" + }, + "origin_external": "External", + "managed_by_tooltip": "Managed by {source}. Edit it in that app, or use the raw Sieve editor." + }, + "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" + } + }, + "files": { + "display": { + "title": "Display", + "description": "Configure how files and folders are displayed" + }, + "folder_layout": { + "label": "Folder Navigation", + "description": "Choose how folders are displayed: inline with files or in a sidebar tree", + "inline": "Inline", + "sidebar": "Sidebar" + }, + "default_view": { + "label": "Default View", + "description": "Choose between grid and list layout", + "list": "List", + "grid": "Grid" + }, + "default_sort": { + "label": "Default Sort", + "description": "Choose the default sorting for files", + "name": "Name", + "size": "Size", + "modified": "Modified" + }, + "sort_direction": { + "label": "Sort Direction", + "description": "Choose ascending or descending order", + "ascending": "Ascending", + "descending": "Descending" + }, + "icons": { + "title": "Icons", + "description": "Configure file icon appearance" + }, + "show_icons": { + "label": "Show File Icons", + "description": "Display icons next to files and folders" + }, + "colored_icons": { + "label": "Colored Icons", + "description": "Use colorful icons instead of monochrome" + }, + "show_thumbnails": { + "label": "Show Thumbnails", + "description": "Display image previews instead of icons for image files" + }, + "behavior": { + "title": "Behavior", + "description": "Configure file browser behavior" + }, + "show_hidden": { + "label": "Show Hidden Files", + "description": "Display files and folders that start with a dot" + }, + "preview": { + "label": "Preview" + } + } + }, + "errors": { + "page_error_title": "مشکلی پیش آمد", + "page_error_description": "با خطای غیرمنتظره‌ای مواجه شدیم. لطفاً دوباره تلاش کنید.", + "sidebar_error": "بارگذاری صندوق‌های پستی ممکن نیست", + "email_list_error": "بارگذاری ایمیل‌ها ممکن نیست", + "viewer_error_title": "نمایش ایمیل ممکن نیست", + "viewer_error_description": "مشکلی در رندر این ایمیل وجود داشت.", + "composer_error": "بارگذاری ویرایشگر ممکن نیست", + "settings_error_title": "تنظیمات در دسترس نیست", + "settings_error_description": "بارگذاری تنظیمات ممکن نیست.", + "try_again": "دوباره تلاش کنید", + "reload": "بارگذاری مجدد", + "reload_emails": "بارگذاری مجدد ایمیل‌ها", + "reload_settings": "بارگذاری مجدد تنظیمات", + "retry": "تلاش مجدد", + "go_home": "رفتن به صندوق ورودی" + }, + "context_menu": { + "reply": "پاسخ", + "reply_all": "پاسخ به همه", + "forward": "ارسال مجدد", + "mark_read": "علامت‌گذاری خوانده شده", + "mark_unread": "علامت‌گذاری خوانده نشده", + "star": "ستاره‌دار", + "unstar": "حذف ستاره", + "move_to": "انتقال به...", + "archive": "بایگانی", + "delete": "حذف", + "mark_as_spam": "گزارش هرزنامه", + "not_spam": "هرزنامه نیست", + "color_tag": "برچسب", + "remove_color": "حذف برچسب", + "items_selected": "{count} ایمیل انتخاب شده", + "edit_draft": "ویرایش پیش‌نویس", + "cancel_scheduled_send": "لغو ارسال", + "reschedule_send": "باززمان‌بندی", + "cancel_and_edit": "لغو و ویرایش", + "cancel_and_compose_again": "لغو و نوشتن مجدد" + }, + "mailbox_context_menu": { + "mark_folder_read": "Mark folder as read", + "mark_folder_tree_read": "Mark folder & subfolders as read", + "mark_all_folders_read": "Mark all folders as read", + "new_subfolder": "New subfolder...", + "new_folder": "New folder...", + "rename": "Rename...", + "import_email": "Import .eml or .zip...", + "empty_folder": "Empty folder", + "empty_folder_generic": "Empty folder", + "delete_folder": "Delete folder", + "refresh": "Refresh", + "mark_all_confirm_title": "Mark all folders as read", + "mark_all_confirm_message": "Mark every unread message in your personal account as read?", + "delete_confirm_title": "Delete folder", + "delete_confirm_message": "Permanently delete the folder \"{name}\"? This action cannot be undone.", + "prompt_new_subfolder": "Enter a name for the new subfolder.", + "prompt_new_folder": "Enter a name for the new folder.", + "prompt_rename": "Enter a new name for this folder.", + "placeholder_folder_name": "Folder name", + "create": "Create", + "rename_confirm": "Rename", + "toast_marked_read": "Folder marked as read", + "toast_marked_read_count": "Marked {count, plural, one {1 message} other {# messages}} as read", + "toast_already_read": "No unread messages", + "toast_marked_all_read": "All folders marked as read", + "toast_emptied": "Folder emptied", + "toast_folder_created": "Folder created", + "toast_folder_renamed": "Folder renamed", + "toast_folder_deleted": "Folder deleted", + "toast_error_mark_read": "Failed to mark as read", + "toast_error_empty": "Failed to empty folder", + "toast_error_create": "Failed to create folder", + "toast_error_rename": "Failed to rename folder", + "toast_error_delete": "Failed to delete folder", + "toast_error_delete_has_children": "Folder has subfolders. Remove them first.", + "toast_error_delete_has_email": "Folder is not empty. Empty it first." + }, + "shortcuts": { + "title": "میانبرهای صفحه کلید", + "tip": "هر زمان کلید ? را فشار دهید", + "sections": { + "navigation": "ناوبری", + "actions": "عملیات ایمیل", + "global": "سراسری", + "threads": "رشته‌ها", + "composer": "ویرایشگر" + }, + "navigation": { + "next_email": "ایمیل بعدی", + "previous_email": "ایمیل قبلی", + "open_email": "باز کردن ایمیل", + "close_email": "بستن / لغو انتخاب" + }, + "actions": { + "reply": "پاسخ", + "reply_all": "پاسخ به همه", + "forward": "ارسال مجدد", + "star": "تغییر ستاره", + "archive": "بایگانی", + "delete": "حذف", + "mark_unread": "علامت‌گذاری خوانده نشده", + "mark_read": "علامت‌گذاری خوانده شده", + "toggle_spam": "هرزنامه / غیر هرزنامه" + }, + "global": { + "compose": "ایمیل جدید", + "search": "تمرکز جستجو", + "help": "نمایش میانبرها", + "refresh": "بازنشانی ایمیل‌ها", + "select_all": "انتخاب همه" + }, + "threads": { + "expand_collapse": "باز/بسته کردن رشته" + }, + "composer": { + "send": "ارسال ایمیل", + "schedule_send": "زمان‌بندی ارسال", + "template_picker": "انتخاب‌گر قالب" + } + }, + "threads": { + "messages_one": "{count} message", + "messages_other": "{count} messages", + "messages_tooltip": "{count, plural, one {# message in this conversation} other {# messages in this conversation}}", + "expand": "Expand conversation", + "collapse": "Collapse conversation", + "loading": "Loading conversation...", + "mark_read": "Mark conversation as read", + "mark_unread": "Mark conversation as unread", + "archive": "Archive conversation", + "delete": "Delete conversation", + "star": "Star conversation", + "unstar": "Unstar conversation", + "toggle_thread": "Toggle thread" + }, + "identities": { + "modal_title": "Manage Sending Identities", + "create_new": "Create New Identity", + "edit_identity": "Edit Identity", + "delete_confirm": "Delete this identity? This cannot be undone.", + "cannot_delete": "This identity cannot be deleted", + "primary_identity": "Primary", + "set_as_primary": "Set as primary", + "no_identities": "No identities found", + "display": { + "reply_to": "Reply-To:", + "bcc": "BCC:", + "signature": "Signature:", + "preview": "Preview:" + }, + "validation_errors": { + "invalid_emails": "Invalid emails: {emails}", + "unknown_error": "Unknown error" + }, + "form": { + "name_label": "Display Name", + "name_placeholder": "e.g., Work Email, Personal", + "name_required": "Name is required", + "email_label": "Email Address", + "email_placeholder": "your.email@example.com", + "email_required": "Email is required", + "email_invalid": "Please enter a valid email address", + "email_immutable": "Email address cannot be changed after creation", + "reply_to_label": "Reply-To (optional)", + "reply_to_placeholder": "different@email.com", + "bcc_label": "Auto BCC (optional)", + "bcc_placeholder": "archive@email.com", + "text_signature_label": "Text Signature", + "html_signature_label": "HTML Signature", + "signature_byte_counter": "{bytes} / {max} bytes", + "signature_byte_limit_reached": "Server limit reached", + "save": "Save Identity", + "cancel": "Cancel", + "creating": "Creating...", + "updating": "Updating..." + }, + "sub_address": { + "button_tooltip": "Use sub-address", + "popover_title": "Add Sub-Address Tag", + "tag_input_placeholder": "Enter tag (e.g., shopping)", + "preview_label": "Preview:", + "recent_tags": "Recent Tags", + "suggested_tags": "Suggested", + "use_address": "Use This Address", + "invalid_tag": "Tag must be alphanumeric and dashes only", + "tag_too_long": "Tag must be 30 characters or less", + "help_text": "Emails sent to user{delimiter}tag@domain.com will arrive in your inbox", + "validation": { + "empty": "Tag cannot be empty", + "too_long": "Tag must be {max} characters or less", + "invalid_chars": "Tag must contain only letters, numbers, and dashes" + } + }, + "badge": { + "sent_via": "via", + "sub_address_tag": "Sent using sub-address: {tag}", + "identity_name": "Sent using identity: {name}", + "identity_short": "via {name}", + "subaddress_tag": "+{tag}" + }, + "delete_button": "Delete", + "delete_confirm_title": "Delete Identity" + }, + "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...", + "create_new": "New Contact", + "no_category": "No Category", + "rename_category": "Rename category", + "category_name_label": "Category name", + "category_renamed": "Category renamed", + "category_rename_failed": "Failed to rename category", + "category_added": "Contact added to {name}", + "category_added_plural": "{count} contacts added to {name}", + "empty_state": "No contacts yet", + "empty_state_title": "No contacts yet", + "empty_state_subtitle": "Create your first contact or import from a vCard file", + "empty_search": "No contacts match your search", + "empty_search_hint": "Try a different search term", + "empty_filtered": "No contacts match your filters", + "empty_filtered_hint": "Try adjusting or clearing filters", + "clear_search": "Clear search", + "import_vcard": "Import vCard", + "delete_confirm_title": "Delete contact", + "delete_confirm": "Are you sure you want to delete this contact?", + "local_mode": "Contacts are stored locally (server does not support JMAP Contacts)", + "back_to_contacts": "Back to contacts", + "back_to_email": "Back to email", + "open_categories": "Open categories", + "tabs": { + "all": "All", + "groups": "Groups" + }, + "shared": { + "title": "Shared" + }, + "address_books": { + "title": "My Address Books", + "shared_prefix": "Shared: {name}", + "moved": "Contact moved to {name}", + "moved_plural": "{count} contacts moved to {name}", + "move_failed": "Failed to move contact", + "address_book": "Address Book", + "rename": "Rename address book", + "name_label": "Address book name", + "renamed": "Address book renamed", + "rename_failed": "Failed to rename address book", + "default": "Default", + "manage": "Manage address books", + "share": "Share address book", + "new_contact_in_book": "New contact in this address book", + "delete": "Delete address book", + "confirm_delete": "Delete \"{name}\"? All contacts in this address book will be removed.", + "deleted": "Address book deleted", + "delete_failed": "Failed to delete address book" + }, + "detail": { + "emails": "Email Addresses", + "phones": "Phone Numbers", + "organizations": "Organizations", + "addresses": "Addresses", + "notes": "Notes", + "titles": "Titles & Roles", + "online_services": "Online Services", + "anniversaries": "Anniversaries", + "personal_info": "Personal Info", + "languages": "Languages", + "categories": "Categories", + "related_contacts": "Related Contacts", + "crypto_keys": "Crypto Keys", + "cert_issuer": "Issuer", + "cert_expires": "Expires", + "cert_expired": "Expired", + "cert_fingerprint": "Fingerprint", + "cert_algorithm": "Algorithm", + "import_to_smime": "Import to S/MIME", + "cert_already_imported": "Already imported to S/MIME", + "cert_imported": "Certificate imported to S/MIME store", + "cert_import_failed": "Failed to import certificate", + "no_contact_selected": "Select a contact to view details", + "compose_email": "Compose email", + "copy_email": "Copy email", + "copy_phone": "Copy phone number", + "copy_url": "Copy URL", + "copied": "Copied to clipboard", + "copy_failed": "Failed to copy to clipboard", + "created": "Created", + "updated": "Last updated", + "timezone": "Timezone", + "anniversary_birth": "Birthday", + "anniversary_death": "Passed away", + "anniversary_wedding": "Anniversary", + "anniversary_other": "Other", + "personal_expertise": "Expertise", + "personal_hobby": "Hobby", + "personal_interest": "Interest", + "personal_other": "Other", + "gender": "Gender", + "gender_masculine": "Male", + "gender_feminine": "Female", + "gender_other": "Other", + "gender_none": "Not applicable", + "gender_unknown": "Unknown", + "calendar": "Calendar", + "calendar_uri": "Calendar URL", + "scheduling_uri": "Scheduling URL", + "freebusy_uri": "Free/Busy URL", + "section_contact": "Contact details", + "section_work": "Work", + "section_personal": "Personal", + "email_default_label": "Email", + "phone_default_label": "Phone", + "address_default_label": "Address", + "online_service_default_label": "Online", + "organization_label": "Organization", + "title_label": "Title", + "role_label": "Role", + "language_label": "Language", + "related_default_label": "Related", + "more_actions": "More actions", + "age_years": "{count, plural, one {1 year old} other {# years old}}", + "years_since": "{count, plural, one {1 year} other {# years}}" + }, + "activity": { + "recent_emails": "Recent Emails", + "upcoming_events": "Upcoming Events", + "no_emails": "No recent emails", + "no_events": "No upcoming events", + "no_subject": "(No subject)", + "no_title": "(No title)", + "load_failed": "Failed to load", + "unknown_sender": "Unknown sender", + "all_day": "All day" + }, + "form": { + "create_title": "New Contact", + "edit_title": "Edit Contact", + "section_address_book": "Directory", + "select_address_book": "Select a directory...", + "section_identity": "Name & Identity", + "section_work": "Work & Organization", + "prefix": "Prefix", + "prefix_placeholder": "Dr., Mr., Mrs.", + "given_name": "First name", + "middle_name": "Middle name", + "surname": "Last name", + "suffix": "Suffix", + "suffix_placeholder": "Jr., Sr., III", + "nickname": "Nickname", + "nickname_placeholder": "Nickname", + "email": "Email", + "email_placeholder": "email@example.com", + "phone": "Phone", + "phone_placeholder": "+1 234 567 890", + "phone_type": "Type", + "phone_voice": "Voice", + "phone_cell": "Mobile", + "phone_fax": "Fax", + "phone_pager": "Pager", + "phone_video": "Video", + "phone_text": "Text", + "organization": "Organization", + "organization_placeholder": "Company name", + "department": "Department", + "department_placeholder": "Department", + "job_title": "Job title", + "job_title_placeholder": "e.g., Software Engineer", + "role": "Role", + "role_placeholder": "e.g., Team Lead", + "addresses": "Addresses", + "add_address": "Add address", + "street": "Street", + "city": "City", + "region": "State / Region", + "postcode": "Postal code", + "country": "Country", + "online_services": "Online Services", + "add_online_service": "Add online service", + "url_placeholder": "https://...", + "service_placeholder": "Service", + "anniversaries": "Anniversaries", + "add_anniversary": "Add date", + "anniversary_birth": "Birthday", + "anniversary_wedding": "Anniversary", + "anniversary_death": "Memorial", + "anniversary_other": "Other", + "personal_info": "Personal Info", + "add_personal_info": "Add entry", + "personal_info_placeholder": "e.g., Photography", + "personal_expertise": "Expertise", + "personal_hobby": "Hobby", + "personal_interest": "Interest", + "personal_other": "Other", + "level": "Level", + "level_high": "High", + "level_medium": "Medium", + "level_low": "Low", + "categories": "Categories", + "categories_placeholder": "e.g., Family, Friends, Colleagues", + "categories_hint": "Type to search or add categories", + "category_add": "Add", + "note": "Notes", + "note_placeholder": "Add a note...", + "gender": "Gender", + "gender_sex": "Sex", + "gender_male": "Male", + "gender_female": "Female", + "gender_other": "Other", + "gender_none": "Not applicable", + "gender_unknown": "Unknown", + "gender_identity": "Gender identity", + "gender_identity_placeholder": "Gender identity...", + "calendar": "Calendar", + "calendar_uri": "Calendar URL", + "scheduling_uri": "Scheduling URL", + "freebusy_uri": "Free/Busy URL", + "context_work": "Work", + "context_private": "Private", + "add_email": "Add email", + "add_phone": "Add phone", + "save": "Save", + "cancel": "Cancel", + "creating": "Creating...", + "updating": "Updating...", + "name_required": "At least a first name or last name is required", + "email_invalid": "Please enter a valid email address", + "email_error_inline": "Invalid email format", + "save_failed": "Failed to save contact", + "delete": "Delete", + "upload_photo": "Upload photo", + "remove_photo": "Remove photo", + "photo_hint": "JPG or PNG, up to 10 MB. Will be resized.", + "photo_too_large": "Image is too large (max 10 MB)", + "photo_invalid": "Invalid image file", + "change_photo": "Change" + }, + "groups": { + "create": "New Group", + "edit": "Edit Group", + "empty": "No groups yet", + "delete_confirm_title": "Delete group", + "delete_confirm": "Are you sure you want to delete this group?", + "name_label": "Group Name", + "name_placeholder": "e.g., Team, Family", + "name_required": "Group name is required", + "save_failed": "Failed to save group", + "members_label": "Members", + "search_members": "Search contacts to add...", + "no_members": "No members in this group", + "member_count": "{count, plural, =0 {No members} one {1 member} other {# members}}", + "send_email": "Send email to group", + "send_email_to": "To", + "send_email_cc": "Cc", + "send_email_bcc": "Bcc", + "no_member_emails": "This group has no members with an email address." + }, + "import": { + "title": "Import Contacts", + "drop_hint": "Click to select a vCard file", + "file_types": ".vcf or .vcard files", + "no_contacts": "No contacts found in file", + "parse_error": "Failed to parse vCard file", + "found": "{count, plural, one {1 contact found} other {# contacts found}}", + "duplicate": "Duplicate", + "select_all": "Select all", + "deselect_all": "Deselect all", + "selected": "{count, plural, one {1 selected} other {# selected}}", + "import_button": "Import", + "importing": "Importing...", + "success": "{count, plural, one {1 contact imported} other {# contacts imported}}", + "failed": "Import failed", + "close": "Close", + "file_too_large": "File is too large (max 5 MB)" + }, + "export": { + "title": "Export Contacts", + "success": "{count, plural, one {1 contact exported} other {# contacts exported}}" + }, + "bulk": { + "selected": "{count, plural, one {1 selected} other {# selected}}", + "select_all": "Select all", + "delete": "Delete", + "delete_confirm_title": "Delete contacts", + "delete_confirm": "Delete {count, plural, one {1 contact} other {# contacts}}?", + "deleted": "{count, plural, one {1 contact deleted} other {# contacts deleted}}", + "add_to_group": "Add to group", + "choose_group": "Choose a group", + "adding_contacts": "Adding {count, plural, one {1 contact} other {# contacts}}", + "added_to_group": "Contacts added to group", + "export": "Export", + "clear": "Clear selection" + }, + "toast": { + "created": "Contact created", + "updated": "Contact updated", + "deleted": "Contact deleted", + "error_create": "Failed to create contact", + "error_update": "Failed to update contact", + "error_delete": "Failed to delete contact" + }, + "context_menu": { + "open": "Open", + "edit": "Edit", + "send_email": "Send email", + "add_to_group": "Add to group", + "export_vcard": "Export as vCard", + "delete": "Delete", + "call": "Call", + "duplicate": "Duplicate", + "print": "Print" + }, + "filters": { + "toggle": "Filters", + "select": "Select", + "clear": "Clear", + "close": "Close", + "title": "Advanced filters", + "organization": "Company", + "organization_placeholder": "e.g. Acme Corp", + "job_title": "Job title", + "job_title_placeholder": "e.g. Designer", + "location": "Location", + "location_placeholder": "City or country", + "email_domain": "Email domain", + "email_domain_placeholder": "example.com", + "birthday_month": "Birthday in", + "any_month": "Any month", + "has_email": "Has email", + "has_phone": "Has phone", + "has_photo": "Has photo" + } + }, + "calendar": { + "title": "Calendar", + "back_to_email": "Back to email", + "back_to_month": "Back to month", + "my_calendars": "Calendars", + "birthday_calendar": "Birthdays", + "mini_calendar_change": "Click to change month", + "views": { + "month": "Month", + "week": "Week", + "day": "Day", + "agenda": "Agenda", + "today": "Today", + "month_hint": "Month (m)", + "week_hint": "Week (w)", + "day_hint": "Day (d)", + "agenda_hint": "Agenda (a)", + "tasks": "Tasks", + "tasks_hint": "Tasks (k)" + }, + "events": { + "create": "Create event", + "edit": "Edit event", + "delete": "Delete event", + "details": "Event details", + "no_events": "No events", + "all_day": "All day", + "more": "+{count} more", + "no_title": "(No title)", + "resize": "Resize event", + "duplicate": "Duplicate", + "today_header": "Today", + "tomorrow_header": "Tomorrow", + "export_ics": "Export as .ics", + "copy_title": "Copy title", + "copy_link": "Copy meeting link", + "new_event": "New event", + "new_all_day_event": "New all-day event", + "new_task": "New task", + "go_to_today": "Go to today" + }, + "detail": { + "add_note": "Add a note...", + "save_note": "Save", + "note_saved": "Note added", + "open_link": "Open link", + "meeting_link": "Meeting link", + "tentative": "Tentative", + "cancelled": "Cancelled", + "delete_confirm": "Delete this event?" + }, + "form": { + "title": "Title", + "description": "Description", + "location": "Location", + "meeting_link": "Meeting link", + "start_date": "Start date", + "end_date": "End date", + "start_time": "Start time", + "end_time": "End time", + "all_day_event": "All-day event", + "calendar_select": "Calendar", + "save": "Save", + "cancel": "Cancel", + "delete_confirm": "Are you sure you want to delete this event?", + "color": "Color" + }, + "participants": { + "title": "Participants", + "add": "Add participant", + "organizer": "Organizer", + "attendee": "Attendee", + "accepted": "Accepted", + "declined": "Declined", + "tentative": "Tentative", + "needs_action": "Needs action", + "remove": "Remove", + "edit": "Edit", + "email_placeholder": "Add email address or search contacts", + "send_invitations": "Send invitations to participants", + "status_summary": "{accepted} accepted, {pending} pending", + "invited_by": "Invitation from {name}", + "respond_below": "Respond using the buttons below", + "rsvp_label": "Your response", + "cancel_notification": "Participants will be notified of the cancellation", + "you_organizer": "You are the organizer", + "you_attendee": "You are an attendee", + "no_participants": "No participants", + "count": "{count, plural, one {# participant} other {# participants}}" + }, + "recurrence": { + "title": "Recurrence", + "none": "Does not repeat", + "daily": "Daily", + "weekly": "Weekly", + "monthly": "Monthly", + "yearly": "Yearly", + "every_n_days": "Every {count} days", + "every_n_weeks": "Every {count} weeks", + "every_n_months": "Every {count} months", + "until": "Until", + "occurrences": "{count} occurrences", + "custom": "Custom…", + "edit_custom": "Edit custom recurrence", + "every_n_years": "Every {count} years", + "on_days": "on {days}", + "on_day_n": "on day {day}", + "on_the_nth": "on the {nth} {day}", + "in_month": "in {month}", + "nth_1": "first", + "nth_2": "second", + "nth_3": "third", + "nth_4": "fourth", + "nth_last": "last", + "editor_freq_day": "Day", + "editor_freq_week": "Week", + "editor_freq_month": "Month", + "editor_freq_year": "Year", + "editor_repeats_on": "Repeats on", + "editor_every": "Every", + "editor_unit_days": "day(s)", + "editor_unit_weeks": "week(s)", + "editor_unit_months": "month(s)", + "editor_unit_years": "year(s)", + "editor_on_day": "on day", + "editor_on_the": "on the", + "editor_in": "in", + "editor_ends": "Ends", + "editor_never": "Never", + "editor_ends_on": "On", + "editor_ends_after": "After", + "editor_occurrences": "occurrences" + }, + "recurrence_scope": { + "edit_title": "Edit recurring event", + "delete_title": "Delete recurring event", + "description": "This is a recurring event. Which events would you like to modify?", + "this_event": "This event only", + "this_and_future": "This and following events", + "all_events": "All events", + "cancel": "Cancel", + "save": "Save", + "delete": "Delete" + }, + "alerts": { + "title": "Reminders", + "none": "No reminders", + "at_time": "At time of event", + "minutes_before": "{count, plural, one {# minute before} other {# minutes before}}", + "hours_before": "{count, plural, one {# hour before} other {# hours before}}", + "days_before": "{count, plural, one {# day before} other {# days before}}", + "weeks_before": "{count, plural, one {# week before} other {# weeks before}}", + "unit_minutes_before": "minutes before", + "unit_hours_before": "hours before", + "unit_days_before": "days before", + "unit_weeks_before": "weeks before", + "add": "Add reminder", + "remove": "Remove reminder", + "amount": "Reminder amount", + "unit": "Reminder unit" + }, + "settings": { + "title": "Calendar settings", + "default_view": "Default view", + "week_starts_on": "Week starts on", + "time_format": "Time format", + "default_calendar": "Default calendar", + "default_reminder": "Default reminder", + "time_format_12h": "12-hour", + "time_format_24h": "24-hour", + "notifications_enabled": "Event notifications", + "notifications_enabled_desc": "Show alerts for upcoming calendar events", + "notification_sound": "Notification sound", + "notification_sound_desc": "Play a sound for calendar alerts", + "invitation_parsing": "Parse email invitations", + "invitation_parsing_desc": "Detect calendar invitations in email attachments and show calendar actions", + "show_time_in_month_view": "Show time in month view", + "show_time_in_month_view_desc": "Display event times in the month calendar view", + "show_week_numbers": "Show week numbers", + "show_week_numbers_desc": "Display week numbers in the mini-calendar", + "enable_tasks": "Enable tasks", + "enable_tasks_desc": "Show a tasks view in the calendar for managing to-dos", + "show_tasks_on_calendar": "Show tasks on calendar", + "show_tasks_on_calendar_desc": "Display task chips on the day and week calendar views", + "hover_preview": "Event hover preview", + "hover_preview_desc": "Show a detail popover when hovering over calendar events", + "hover_preview_instant": "Instant", + "hover_preview_delay_500ms": "0.5-second delay", + "hover_preview_delay_1s": "1-second delay", + "hover_preview_delay_2s": "2-second delay", + "hover_preview_off": "Disabled", + "show_birthday_calendar": "Contact birthday calendar", + "show_birthday_calendar_desc": "Show a virtual calendar with birthdays from your contacts" + }, + "days": { + "monday": "Monday", + "tuesday": "Tuesday", + "wednesday": "Wednesday", + "thursday": "Thursday", + "friday": "Friday", + "saturday": "Saturday", + "sunday": "Sunday", + "mon": "Mon", + "tue": "Tue", + "wed": "Wed", + "thu": "Thu", + "fri": "Fri", + "sat": "Sat", + "sun": "Sun" + }, + "months": { + "jan": "Jan", + "feb": "Feb", + "mar": "Mar", + "apr": "Apr", + "may": "May", + "jun": "Jun", + "jul": "Jul", + "aug": "Aug", + "sep": "Sep", + "oct": "Oct", + "nov": "Nov", + "dec": "Dec" + }, + "notifications": { + "event_created": "Event created", + "event_updated": "Event updated", + "event_deleted": "Event deleted", + "calendar_created": "Calendar created", + "calendar_deleted": "Calendar deleted", + "event_move_error": "Failed to move event", + "event_resize_error": "Failed to resize event", + "alert_title": "Upcoming event", + "alert_now": "Starting now", + "alert_in_minutes": "In {count} min", + "invitation_sent": "Invitations sent", + "rsvp_updated": "Response updated", + "rsvp_error": "Failed to update response", + "event_duplicated": "Event duplicated", + "event_error": "Failed to save event", + "task_due": "Task due", + "event_exported": "Event exported", + "title_copied": "Title copied", + "link_copied": "Link copied" + }, + "status": { + "loading_calendars": "Loading calendars...", + "loading_events": "Loading events..." + }, + "quick_create": { + "placeholder": "New event title", + "aria_label": "Quick create event" + }, + "nav_prev": "Previous", + "nav_next": "Next", + "nav_open_menu": "Open menu", + "import": { + "title": "Import Calendar", + "tab_file": "File", + "tab_url": "URL", + "select_file": "Select .ics file", + "drop_file": "or drop file here", + "supported_formats": "Supports iCalendar (.ics) files", + "url_description": "Enter the URL of an external iCalendar (.ics) feed to import events.", + "url_placeholder": "https://example.com/calendar.ics", + "url_hint": "Supports CalDAV and iCalendar (.ics) URLs", + "fetch": "Fetch", + "invalid_url": "Please enter a valid URL", + "url_fetch_failed": "Failed to fetch calendar from URL", + "parsing": "Parsing calendar file...", + "parsed_events": "{count} events found", + "no_events": "No events found in file", + "select_all": "Select all", + "deselect_all": "Deselect all", + "target_calendar": "Import to calendar", + "import_button": "Import selected", + "importing": "Importing events...", + "success": "{count} events imported successfully", + "error": "Failed to import calendar", + "file_too_large": "File exceeds 10MB limit", + "invalid_format": "Invalid calendar file format" + }, + "webcal_action": { + "title": "Open calendar link", + "description": "How would you like to use \"{name}\"?", + "import_title": "Import once", + "import_description": "Fetch the events now and copy them into one of your calendars.", + "subscribe_title": "Subscribe", + "subscribe_description": "Keep this calendar synced automatically as a separate calendar.", + "cancel": "Cancel" + }, + "management": { + "title": "Calendar Management", + "description": "Create, rename, and customize your calendars. Right-click a calendar in the sidebar to quickly change its color.", + "name": "Name", + "name_placeholder": "Calendar name", + "color": "Color", + "change_color": "Change color", + "random_color": "New random color", + "add_calendar": "Add calendar", + "edit": "Edit", + "delete": "Delete", + "save": "Save", + "create": "Create", + "cancel": "Cancel", + "default": "Default", + "confirm_delete": "Delete \"{name}\"? All events in this calendar will be removed.", + "confirm_clear": "Clear all events from \"{name}\"? This cannot be undone.", + "set_default": "Set as default", + "default_updated": "Default calendar updated", + "error_default": "Failed to set default calendar", + "clear_events": "Clear events", + "events_cleared": "{count} events cleared", + "error_clear": "Failed to clear calendar events", + "calendar_created": "Calendar created", + "calendar_updated": "Calendar updated", + "calendar_deleted": "Calendar deleted", + "color_updated": "Calendar color updated", + "error_create": "Failed to create calendar", + "error_update": "Failed to update calendar", + "error_delete": "Failed to delete calendar", + "caldav_url": "CalDAV URL", + "copy_url": "Copy CalDAV URL", + "url_copied": "CalDAV URL copied to clipboard", + "share": "Share calendar", + "new_event_in_calendar": "New event in this calendar" + }, + "subscription": { + "title": "iCal Subscription", + "section_title": "iCal Subscriptions", + "description": "Subscribe to an external iCalendar feed. Events will be synced automatically into their own calendar. Supports https:// and webcal:// URLs.", + "url_label": "Calendar URL", + "url_placeholder": "https://example.com/calendar.ics or webcal://...", + "name_label": "Calendar name", + "name_placeholder": "e.g. Public Holidays", + "color_label": "Color", + "refresh_interval": "Refresh interval", + "interval_15": "Every 15 minutes", + "interval_30": "Every 30 minutes", + "interval_60": "Every hour", + "interval_360": "Every 6 hours", + "interval_1440": "Every day", + "subscribe": "Subscribe", + "subscribing": "Subscribing...", + "save": "Save changes", + "saving": "Saving...", + "edit": "Edit", + "edit_title": "Edit Subscription", + "updated": "Updated \"{name}\"", + "update_error": "Failed to update subscription", + "invalid_url": "Please enter a valid URL", + "success": "Subscribed to \"{name}\"", + "error": "Failed to add subscription", + "refresh": "Refresh now", + "refresh_success": "Subscription refreshed", + "refresh_error": "Failed to refresh subscription", + "unsubscribe": "Unsubscribe", + "confirm_delete": "Unsubscribe from \"{name}\"? The calendar and all its events will be removed.", + "deleted": "Subscription removed", + "delete_error": "Failed to remove subscription", + "last_refreshed": "Last updated: {time}" + }, + "tasks": { + "label": "Tasks", + "no_tasks": "No tasks", + "no_title": "(No title)", + "mark_complete": "Mark as complete", + "mark_incomplete": "Mark as incomplete", + "filter_all": "All", + "filter_pending": "Pending", + "filter_completed": "Completed", + "filter_overdue": "Overdue", + "show_completed": "Show completed", + "create": "New Task", + "edit": "Edit Task", + "title_placeholder": "Task title", + "description_placeholder": "Add a description...", + "due_date": "Due date", + "include_time": "Include time", + "priority": "Priority", + "priority_none": "None", + "priority_high": "High", + "priority_medium": "Medium", + "priority_low": "Low", + "progress": "Status", + "progress_needs_action": "Needs action", + "progress_in_process": "In process", + "progress_completed": "Completed", + "progress_cancelled": "Cancelled", + "calendar": "Calendar", + "alert": "Reminder", + "alert_none": "None", + "alert_at_time": "At time of due date", + "alert_5min": "5 minutes before", + "alert_15min": "15 minutes before", + "alert_30min": "30 minutes before", + "alert_1hr": "1 hour before", + "alert_1day": "1 day before", + "delete": "Delete", + "cancel": "Cancel", + "save": "Save", + "quick_add_placeholder": "Add a task...", + "due_today": "Today", + "due_tomorrow": "Tomorrow", + "overdue": "Overdue" + } + }, + "sharing": { + "title": "Share \"{name}\"", + "description": "Grant access to other users or groups on this server. Changes take effect immediately.", + "no_shares": "Not shared with anyone yet.", + "add_person": "Add person or group", + "search_placeholder": "Search by name or email…", + "loading_principals": "Loading users…", + "no_principals": "No other users or groups found.", + "no_match": "No matches.", + "remove": "Remove access", + "group": "Group", + "share_added": "Access granted", + "share_updated": "Access updated", + "share_removed": "Access removed", + "share_failed": "Failed to update sharing", + "preset": { + "freeBusy": "Free/busy only", + "read": "Read only", + "readWrite": "Read & write", + "manager": "Manager", + "custom": "Custom" + } + }, + "advanced_search": { + "title": "Advanced Search", + "from": "From", + "from_placeholder": "Sender email or name", + "to": "To", + "to_placeholder": "Recipient email or name", + "subject": "Subject", + "subject_placeholder": "Subject contains...", + "body": "Body", + "body_placeholder": "Body contains...", + "folder": "Folder", + "all_folders": "All folders", + "has_attachment": "Attachments", + "date_after": "After", + "date_before": "Before", + "starred": "Starred", + "unread": "Unread", + "read": "Read", + "yes": "Yes", + "no": "No", + "clear": "Clear", + "clear_all": "Clear all", + "filters_active": "{count} filter", + "filters_active_plural": "{count} filters", + "toggle_filters": "More", + "search_hint": "Use advanced filters for precise search", + "advanced_filters_tooltip": "Advanced search filters", + "results_found": "{count, plural, =0 {No results found} one {# result found} other {# results found}}", + "results_found_more": "{count}+ results found" + }, + "welcome": { + "title": "به صندوق پستی خود خوش آمدید", + "tip_compose": "کلید c را برای ایمیل جدید فشار دهید", + "tip_shortcuts": "کلید ? را برای مشاهده میانبرها فشار دهید", + "tip_sidebar": "تقویم، مخاطبین و تنظیمات در نوار کناری", + "tip_settings": "تجربه خود را در تنظیمات سفارشی کنید", + "got_it": "متوجه شدم", + "settings": "تنظیمات", + "dismiss": "رد کردن", + "start_tour": "شروع تور" + }, + "demo_welcome": { + "title": "به Bulwark Mail خوش آمدید", + "description": "یک سرویس ایمیل کامل را در مرورگر خود کاوش کنید.", + "feature_email": "خواندن و نوشتن ایمیل", + "feature_organize": "برچسب‌ها، ستاره‌ها و پوشه‌ها", + "feature_shortcuts": "میانبرهای صفحه کلید", + "feature_privacy": "نسخه آزمایشی ۱۰۰٪ خصوصی", + "hint": "روی هر ایمیل در سمت چپ کلیک کنید یا تور را ببینید." + }, + "files": { + "open_in_new_tab": "Open in new tab", + "title": "Files", + "search_placeholder": "Search files...", + "empty_state_title": "No files yet", + "empty_state_description": "Upload files or create folders to get started", + "upload": "Upload", + "upload_files": "Upload Files", + "new_folder": "New Folder", + "new_folder_name": "Folder name", + "rename": "Rename", + "rename_title": "Rename", + "new_name": "New name", + "delete": "Delete", + "delete_confirm_title": "Delete resource", + "delete_confirm_message": "Are you sure you want to delete \"{name}\"? This cannot be undone.", + "download": "Download", + "name": "Name", + "size": "Size", + "modified": "Modified", + "type": "Type", + "folder": "Folder", + "file": "File", + "parent_directory": "Parent directory", + "breadcrumb_root": "Home", + "other_accounts": "Other accounts", + "no_accounts": "No connected accounts.", + "drop_files_here": "Drop files or folders here to upload", + "uploading": "Uploading...", + "upload_success": "{count, plural, one {1 file uploaded} other {# files uploaded}}", + "upload_error": "Failed to upload file", + "create_folder_success": "Folder created", + "create_folder_error": "Failed to create folder", + "delete_success": "Deleted successfully", + "delete_error": "Failed to delete", + "rename_success": "Renamed successfully", + "rename_error": "Failed to rename", + "download_error": "Failed to download", + "not_available": "File storage is not available on this server", + "cancel": "Cancel", + "create": "Create", + "save": "Save", + "no_results": "No files match your search", + "batch_delete_confirm_message": "Are you sure you want to delete {count, plural, one {1 item} other {# items}}? This cannot be undone.", + "batch_delete_success": "{count, plural, one {1 item deleted} other {# items deleted}}", + "grid_view": "Grid view", + "list_view": "List view", + "details": "Details", + "path": "Path", + "preview": "Preview", + "preview_error": "Failed to load preview", + "cut": "Cut", + "copy": "Copy", + "paste": "Paste", + "move_success": "{count, plural, one {1 item moved} other {# items moved}}", + "move_error": "Failed to move", + "paste_success": "Pasted successfully", + "paste_error": "Failed to paste", + "new_text_file": "New Text File", + "file_name": "File name", + "retry": "Retry", + "refresh": "Refresh", + "toggle_favorite": "Toggle favorite", + "duplicate": "Duplicate", + "duplicate_success": "Duplicated successfully", + "duplicate_error": "Failed to duplicate", + "share": "Share", + "shared": "Shared", + "shared_with_me": "Shared with me", + "shared_by": "Shared by {name}", + "create_file_success": "File created", + "create_file_error": "Failed to create file", + "favorites": "Favorites", + "recent": "Recent", + "properties": "Properties", + "open_folder": "Open folder", + "upload_folder": "Upload Folder", + "file_too_large": "\"{name}\" exceeds the maximum file size ({max})", + "undo": "Undo", + "undo_success": "Action undone", + "undo_error": "Failed to undo", + "toolbar": "File actions", + "open_folder_tree": "Open folder tree", + "file_list": "Files and folders", + "context_menu": "Actions", + "settings_title": "File Settings", + "settings_display": "Display", + "settings_default_view": "Default View", + "settings_default_view_desc": "Choose between grid and list layout", + "settings_default_sort": "Default Sort", + "settings_default_sort_desc": "Choose the default sorting for files", + "settings_sort_direction": "Sort Direction", + "settings_sort_direction_desc": "Choose ascending or descending order", + "settings_ascending": "Ascending", + "settings_descending": "Descending", + "settings_icons": "Icons", + "settings_show_icons": "Show File Icons", + "settings_show_icons_desc": "Display icons next to files and folders", + "settings_colored_icons": "Colored Icons", + "settings_colored_icons_desc": "Use colorful icons instead of monochrome", + "settings_show_thumbnails": "Show Thumbnails", + "settings_show_thumbnails_desc": "Display image previews instead of icons for image files", + "settings_behavior": "Behavior", + "settings_show_hidden": "Show Hidden Files", + "settings_show_hidden_desc": "Display files and folders that start with a dot", + "settings_folder_layout": "Folder Navigation", + "settings_folder_layout_desc": "Choose how folders are displayed: inline with files or in a sidebar tree", + "settings_folder_layout_inline": "Inline", + "settings_folder_layout_sidebar": "Sidebar", + "disabled_title": "Files feature is disabled by your administrator", + "disabled_description": "Large file uploads via WebDAV can cause Stalwart/RocksDB instability, including out-of-memory crashes and unrecoverable disk usage. Deleted files may not be immediately purged from blob storage. This feature is not recommended for production environments.", + "stability_warning": "Large file uploads can cause server instability. Deleted files may not be immediately purged from storage. Use with caution.", + "migration_title": "Updating your files…", + "migration_description": "Organising folders and files into their proper structure. This happens only once." + }, + "smime": { + "your_certificates": "Your Certificates", + "your_certificates_desc": "Import and manage your S/MIME certificates for signing and encrypting emails", + "recipient_certificates": "Recipient Certificates", + "recipient_certificates_desc": "Public certificates for encrypting emails to recipients", + "identity_bindings": "Identity Key Bindings", + "identity_bindings_desc": "Bind S/MIME certificates to your email identities", + "defaults_title": "Defaults", + "defaults_desc": "Configure default signing and encryption behavior", + "import_pkcs12": "Import PKCS#12 (.p12/.pfx)", + "import_public_cert": "Import Certificate", + "no_certificates": "No certificates imported yet", + "no_recipient_certs": "No recipient certificates", + "expires": "Expires", + "expired": "Expired", + "bound_to": "Bound to", + "no_key_bound": "None", + "lock": "Lock key", + "unlock": "Unlock key", + "details": "View details", + "delete": "Delete", + "encrypt_by_default": "Encrypt by default", + "encrypt_by_default_desc": "Automatically encrypt emails when all recipients have certificates", + "remember_unlocked": "Remember unlocked keys", + "remember_unlocked_desc": "Keep keys unlocked for the duration of this browser session", + "sign_default_for": "Sign by default for", + "enter_p12_passphrase": "Enter PKCS#12 Passphrase", + "p12_passphrase_desc": "Enter the passphrase that protects this certificate file", + "enter_storage_passphrase": "Set Storage Passphrase", + "storage_passphrase_desc": "Choose a passphrase to protect this key at rest in your browser", + "next": "Next", + "import": "Import", + "unlock_key": "Unlock Key", + "unlock_key_desc": "Enter the storage passphrase to unlock this key for signing or decryption", + "passphrase_placeholder": "Enter passphrase", + "confirm_passphrase_placeholder": "Confirm passphrase", + "passphrase_mismatch": "Passphrases do not match", + "cancel": "Cancel", + "processing": "Processing…", + "close": "Close", + "certificate_details": "Certificate Details", + "cert_subject": "Subject", + "cert_issuer": "Issuer", + "cert_email": "Email", + "cert_serial": "Serial Number", + "cert_validity": "Validity", + "cert_fingerprint": "Fingerprint (SHA-256)", + "cert_algorithm": "Algorithm", + "cert_capabilities": "Capabilities", + "cert_source": "Source", + "cert_expired": "This certificate has expired", + "cert_not_yet_valid": "This certificate is not yet valid", + "cap_sign": "Signing", + "cap_encrypt": "Encryption", + "cap_none": "None", + "show_passphrase": "Show passphrase", + "hide_passphrase": "Hide passphrase", + "sign_toggle": "Sign", + "encrypt_toggle": "Encrypt", + "missing_recipient_certs": "Missing certificates for: {emails}", + "missing_sender_cert": "No certificate bound to this identity", + "status_encrypted_ok": "This message was encrypted", + "status_encrypted_no_key": "This message is encrypted but no matching key was found", + "status_encrypted_failed": "Failed to decrypt this message", + "status_signed_valid": "Signature verified", + "status_signed_invalid": "Signature verification failed", + "status_signed_expired_cert": "Signed with an expired certificate", + "status_signed_self_signed": "Signature valid, but certificate is self-signed (not trusted)", + "status_signed_mismatch": "Signature valid, but signer does not match sender", + "status_unsupported": "Unsupported S/MIME format", + "auto_import_signer_certs": "Auto-import signer certificates", + "auto_import_signer_certs_desc": "Automatically save certificates from verified signed emails for future encryption", + "export": "Export", + "enter_export_passphrase": "Set Export Passphrase", + "export_passphrase_desc": "Choose a passphrase to protect the exported PKCS#12 file", + "export_storage_desc": "Enter the storage passphrase to decrypt the key for export", + "incorrect_passphrase": "Incorrect passphrase" + }, + "tour": { + "step_counter": "Step {current} of {total}", + "skip": "Skip tour", + "back": "Back", + "next": "Next", + "finish": "Finish", + "take_a_tour": "Take a tour of the interface", + "restart_title": "Introductory tour", + "restart_desc": "Replay the guided walkthrough of the interface", + "restart_button": "Restart tour", + "show_on_new_devices_title": "Show on new devices", + "show_on_new_devices_desc": "Replay the welcome banner and tour the first time you sign in on a new device, even if you've already completed them elsewhere", + "sidebar_title": "Your mailboxes", + "sidebar_desc": "This is your folder sidebar. Click any mailbox to view its emails. You can create folders, drag emails between them, and see unread counts at a glance.", + "compose_title": "Compose an email", + "compose_desc": "Click here to write a new email. You can add recipients, attachments, and use rich text formatting.", + "search_title": "Search your mail", + "search_desc": "Search by sender, subject, or content. Click the filter icon for advanced options like date range, attachments, and starred messages.", + "email_list_title": "Your email list", + "email_list_desc": "Emails appear here. Click one to read it on the right. Use the checkbox to select multiple, then bulk-move, delete, or tag them.", + "email_viewer_title": "Reading pane", + "email_viewer_desc": "The selected email opens here. Reply, forward, archive, or delete with the toolbar buttons. You can also star emails or add color tags.", + "keywords_title": "Color tags", + "keywords_desc": "Organize your email with color-coded tags. Drag an email onto a tag to label it, or right-click an email to assign tags.", + "calendar_title": "Calendar", + "calendar_desc": "Switch to the calendar to manage your events. Create events, set reminders, and view day, week, or month layouts.", + "contacts_title": "Contacts", + "contacts_desc": "Your address book lives here. Import contacts, create groups, and click any contact to see their full details.", + "settings_title": "Settings", + "settings_desc": "Customize everything: theme, density, signatures, filters, keyboard shortcuts, calendar defaults, and more.", + "shortcuts_title": "Keyboard shortcuts", + "shortcuts_desc": "Power users love this. Press ? anytime to see all available shortcuts. You can navigate, compose, and manage emails without touching a mouse.", + "compose_open_title": "The composer", + "compose_open_desc": "This is the email composer. Add recipients, write your message, attach files, and use rich text formatting. You can also save drafts and use templates.", + "calendar_view_title": "Your calendar", + "calendar_view_desc": "Here's your calendar with sample events. You can switch between day, week, month, and agenda views using the toolbar.", + "create_event_title": "Create an event", + "create_event_desc": "Click this button to create a new calendar event. You can set a title, date, time, and add participants.", + "event_modal_title": "Event details", + "event_modal_desc": "Here's the event form. Fill in the title, pick a date and time, add a location or participants. Hit save when you're done - or close it and move on.", + "contacts_list_title": "Your contacts", + "contacts_list_desc": "Here are your contacts. Click any contact to see their full details on the right. You can also create new contacts, import vCards, or organize contacts into groups.", + "settings_tabs_title": "Settings menu", + "settings_tabs_desc": "Here are all the settings categories. Customize your appearance, manage identities, set up email filters, configure your calendar, and much more.", + "files_title": "File storage", + "files_desc": "Your file browser lets you upload, organize, and share files - like a personal cloud drive built into your mail.", + "demo_banner_title": "Demo controls", + "demo_banner_desc": "You're in demo mode - everything stays in your browser. Hit 'Reset Demo' anytime to start fresh with clean sample data.", + "quota_title": "Storage usage", + "quota_desc": "Track your mailbox size here. The circle fills up as you use more space." + }, + "unified_mailbox": { + "search_unavailable": "جستجو در نمای یکپارچه در دسترس نیست" + }, + "quote_header": { + "reply_line": "در تاریخ {date}، {from} نوشت:", + "forwarded_separator": "---------- پیام ارجاعی ----------", + "from_label": "از", + "date_label": "تاریخ", + "subject_label": "موضوع" + }, + "pwa_install": { + "title": "نصب {appName}", + "description": "برای دسترسی سریع برنامه را نصب کنید.", + "not_now": "الان نه", + "install": "نصب", + "dont_remind": "دیگر یادآوری نکن", + "dismiss_aria": "رد کردن پیشنهاد نصب" + } +}