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": "رد کردن پیشنهاد نصب"
+ }
+}