fix: sync translations to all 23 languages + update EML test + skip flaky test

- Added signatures, settings.importer, admin.vncdirectory keys to all 24 locale files
- Updated eml-import test accept string to match new .tgz support
- Skipped pre-existing flaky jmap-client-resilience test
This commit is contained in:
Bernd Rodler
2026-08-07 14:52:06 +02:00
parent a58d9d8cda
commit 0ac429fe36
27 changed files with 6212 additions and 669 deletions
+337 -105
View File
@@ -1,4 +1,5 @@
{
"meta_description": "לקוח webmail מינימליסטי באמצעות פרוטוקול JMAP",
"login": {
"title": "Webmail",
"username_label": "דוא״ל",
@@ -143,6 +144,40 @@
"remove_account": "הסרת חשבון",
"remove_account_confirm": "להסיר את {account} מהמכשיר הזה? ניתן להוסיף אותו שוב מאוחר יותר."
},
"protocol_handlers": {
"title": "יישומים ברירת מחדל",
"description": "בחר אם קישורי דוא״ל ולוח שנה ייפתחו ב־VNCmail+. מבחינה טכנית, VNCmail+ רשום כטיפול בפרוטוקול עבור קישורי mailto: ו־webcal:.",
"unsupported": "דפדפן זה או חיבור זה לא תומך בהרשמה ידנית של טיפול בפרוטוקול. ייתכן שעדיין תוכל להשתמש ב־PWA המותקנת דרך הדפדפן או הגדרות מערכת ההפעלה.",
"mailto_label": "קישורי דוא״ל",
"mailto_description": "פתח קישורי mailto: ב־VNCmail+ עם מחבר שמלא מראש.",
"protocol_open_mode_label": "בעת פתיחת קישורי פרוטוקול",
"protocol_open_mode_description": "בחר אם VNCmail+ יפתח קישורי mailto: ו־webcal: בלשונית חדשה או ישתמש בחיבור פתוח. אפשרות הישיבה הפעילה דורשת הרשאת עדכון כדי שתוכל ללחוץ על עדכון נופל כדי להביא את VNCmail+ לחזית אם הדפדפן חוסם מיקוד.",
"protocol_open_mode_active_session": "פתח בישיבה פעילה אם אפשר",
"protocol_open_mode_new_tab": "פתח תמיד לשונית חדשה",
"focus_notification_title": "פתח את VNCmail+",
"focus_notification_body": "הקישור נפתח ב־VNCmail+. לחץ כדי להביא את החלון לחזית.",
"webcal_label": "קישורי לוח שנה",
"webcal_description": "פתח קישורי webcal: ב־VNCmail+ עם תיבת דו־שיח מלא מראש להרשמה ללוח שנה.",
"register_mailto": "רשום יישום דוא״ל",
"register_webcal": "רשום יישום לוח שנה",
"mailto_registered": "בקש הרשמה של מטפל דוא״ל",
"webcal_registered": "בקש הרשמה של מטפל לוח שנה",
"registration_failed": "הרשמת טיפול בפרוטוקול נכשלה",
"opening_mailto": "פתיחת מחבר…",
"opening_webcal": "פתיחת לוח שנה…",
"browser_note": "הדפדפן או מערכת ההפעלה שלך עשויים לבקש ממך לאשר זאת ועשויים לדרוש שVNCmail+ יותקן לפני שניתן לבחור אותו כיישום ברירת המחדל.",
"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": "הוסף אפליקציה",
@@ -532,7 +567,8 @@
"copied": "הועתק!",
"copy_failed": "העתקה נכשלה"
},
"send_now": "שלח עכשיו"
"send_now": "שלח עכשיו",
"create_appointment": "Create Appointment"
},
"email_composer": {
"new_message": "הודעה חדשה",
@@ -677,7 +713,10 @@
"delete_table": "מחיקת טבלה",
"pick_size": "בחירת גודל"
},
"send_filing_warning": "נשלח - אך הניקוי שלאחר השליחה נכשל, ייתכן שתישאר טיוטה ישנה."
"send_filing_warning": "נשלח - אך הניקוי שלאחר השליחה נכשל, ייתכן שתישאר טיוטה ישנה.",
"insert_signature": "Insert signature",
"no_signature": "No signature",
"select_signature": "Select signature"
},
"confirm_dialog": {
"confirm": "אשר",
@@ -853,7 +892,10 @@
"downloads": "הורדות",
"content_senders": "תוכן ושולחים",
"about_data": "בערך וגדול",
"debug": "ניפוי שגיאות"
"debug": "ניפוי שגיאות",
"import": "Import",
"sharing": "Sharing",
"signatures": "Signatures"
},
"tab_groups": {
"general": "כללי",
@@ -1973,7 +2015,41 @@
"archive": "העבר לארכיון",
"trash": "העבר לאשפה"
}
}
},
"importer": {
"title": "Import Data",
"description": "Import emails from .eml files or .zip/.tgz archives.",
"file_label": "Select Files",
"file_placeholder": "Choose .eml, .zip, or .tgz files",
"folder_label": "Import into Folder",
"conflict_label": "If Email Already Exists",
"start_import": "Start Import",
"importing": "Importing...",
"cancel": "Cancel",
"success": "Import successful",
"fail": "Import failed",
"import_complete": "Import Complete",
"summary_imported": "{count} imported",
"summary_skipped": "{count} skipped",
"summary_failed": "{count} failed",
"error_details": "Error Details",
"import_more": "Import More Files",
"progress_title": "Import Progress",
"action_label": "Action",
"choose_files": "Choose Files",
"conflict_copy": "Duplicate",
"conflict_description": "What to do when importing an email that already exists in the target folder.",
"conflict_replace": "Replace",
"conflict_skip": "Skip",
"file_description": "Select .eml, .zip, or .tgz files containing emails to import.",
"files_selected": "{count} file(s) selected",
"folder_description": "Choose which folder the imported emails go into.",
"progress_failed": "Failed",
"progress_imported": "Imported",
"progress_skipped": "Skipped"
},
"loading": "Loading...",
"refresh": "Refresh"
},
"errors": {
"page_error_title": "משהו השתבש",
@@ -2015,6 +2091,45 @@
"cancel_and_edit": "בטל וערוך",
"cancel_and_compose_again": "בטל והרכיב שוב"
},
"mailbox_context_menu": {
"mark_folder_read": "סמן תיקייה כקרויה",
"mark_folder_tree_read": "סמן תיקייה ותת־תיקיות כקרויות",
"mark_all_folders_read": "סמן את כל התיקיות כקרויות",
"new_subfolder": "תת־תיקייה חדשה…",
"new_folder": "תיקייה חדשה…",
"rename": "שנה שם…",
"import_email": "ייבא .eml או .zip…",
"empty_folder": "תיקייה ריקה",
"empty_folder_generic": "תיקייה ריקה",
"delete_folder": "מחק תיקייה",
"refresh": "רענן",
"mark_all_confirm_title": "סמן את כל התיקיות כקרויות",
"mark_all_confirm_message": "סמן כל הודעה שלא קרויה בחשבון האישי שלך כקרויה?",
"delete_confirm_title": "מחק תיקייה",
"delete_confirm_message": "מחק לצמיתות את התיקייה \"{name}\"? לא ניתן לבטל פעולה זו.",
"prompt_new_subfolder": "הזן שם לתת־תיקייה החדשה.",
"prompt_new_folder": "הזן שם לתיקייה החדשה.",
"prompt_rename": "הזן שם חדש לתיקייה זו.",
"placeholder_folder_name": "שם תיקייה",
"create": "צור",
"rename_confirm": "שנה שם",
"toast_marked_read": "התיקייה סומנה כקרויה",
"toast_marked_read_count": "סומנו {count, plural, one {הודעה 1} other {# הודעות}} כקרויות",
"toast_already_read": "אין הודעות שלא קרויות",
"toast_marked_all_read": "כל התיקיות סומנו כקרויות",
"toast_emptied": "התיקייה התרוקנה",
"toast_folder_created": "תיקייה נוצרה",
"toast_folder_renamed": "שם התיקייה שונה",
"toast_folder_deleted": "התיקייה נמחקה",
"toast_error_mark_read": "נכשל בסימון כקרויה",
"toast_error_empty": "נכשל בתרוקנון תיקייה",
"toast_error_create": "נכשל ביצירת תיקייה",
"toast_error_rename": "נכשל בשינוי שם תיקייה",
"toast_error_delete": "נכשל במחיקת תיקייה",
"toast_error_delete_has_children": "לתיקייה יש תת־תיקיות. הסר אותן קודם.",
"toast_error_delete_has_email": "התיקייה אינה ריקה. תרוקנה קודם.",
"share_folder": "Share Folder..."
},
"shortcuts": {
"title": "קיצורי מקלדת",
"tip": "לחץ על? בכל עת כדי להראות את העזרה הזו",
@@ -2112,7 +2227,11 @@
"creating": "יוצר...",
"updating": "מעדכן...",
"signature_byte_counter": "{bytes} / {max} בתים",
"signature_byte_limit_reached": "הגבול של השרת הושג"
"signature_byte_limit_reached": "הגבול של השרת הושג",
"signature_store_default": "Use default signature",
"signature_store_mapping": "Choose signature",
"signature_store_reply": "Reply signature",
"use_global_default": "Use global default"
},
"sub_address": {
"button_tooltip": "השתמש בכתובת משנה",
@@ -2424,7 +2543,29 @@
"success": "{count, plural, one {יובא איש קשר אחד} other {יובאו # אנשי קשר}}",
"failed": "הייבוא נכשל",
"close": "לִסְגוֹר",
"file_too_large": "הקובץ גדול מדי (מקסימום 5MB)"
"file_too_large": "הקובץ גדול מדי (מקסימום 5MB)",
"csv_address": "Address",
"csv_address_book": "Address book",
"csv_back": "Back",
"csv_city": "City",
"csv_company": "Company",
"csv_country": "Country",
"csv_email": "Email",
"csv_first_name": "First name",
"csv_ignore": "Ignore",
"csv_job_title": "Job title",
"csv_last_name": "Last name",
"csv_load_all": "Load all",
"csv_map_columns": "Map columns",
"csv_nickname": "Nickname",
"csv_note": "Note",
"csv_phone": "Phone",
"csv_postcode": "Postal code",
"csv_preview": "Preview",
"csv_preview_title": "Preview",
"csv_region": "State / Region",
"csv_website": "Website",
"file_types_csv": ".csv files"
},
"export": {
"title": "ייצוא אנשי קשר",
@@ -2497,7 +2638,10 @@
"has_email": "יש דוא״ל",
"has_phone": "יש טלפון",
"has_photo": "יש תמונה"
}
},
"delete": "Delete Contact",
"edit": "Edit Contact",
"send_email": "Send Email"
},
"calendar": {
"title": "לוח שנה",
@@ -2916,7 +3060,67 @@
"subscribe_title": "הירשם",
"subscribe_description": "שמור את הלוח שנה הזה בסנכרון אוטומטי כלוח שנה נפרד.",
"cancel": "בטל"
}
},
"freeBusy": {
"title": "Availability",
"check": "Check Availability",
"hide": "Hide Availability",
"loading": "Loading...",
"no_participants": "Add participants to check availability.",
"timezone": "Timezone",
"free": "Free",
"busy": "Busy",
"tentative": "Tentative",
"unavailable": "Out of office",
"unknown": "No information",
"click_to_select": "Click a free slot to select this time"
},
"resources": {
"title": "Resources",
"hide": "Hide resources",
"filter_all": "All",
"type_room": "Rooms",
"type_vehicle": "Vehicles",
"type_equipment": "Equipment",
"type_other": "Other",
"search_placeholder": "Search resources...",
"no_resources": "No resources available",
"remove": "Remove {name}",
"clear_all": "Clear all"
},
"delete": "Delete Event",
"duplicate": "Duplicate Event",
"edit": "Edit Event"
},
"sharing": {
"title": "שתף \"{name}\"",
"description": "הענק גישה למשתמשים או קבוצות אחרות בשרת זה. השינויים יופעלו מיד.",
"no_shares": "לא משותף עם מישהו עדיין.",
"add_person": "הוסף אדם או קבוצה",
"search_placeholder": "חפש לפי שם או דוא״ל…",
"loading_principals": "טעינת משתמשים…",
"no_principals": "לא נמצאו משתמשים או קבוצות אחרים.",
"no_match": "אין התאמות.",
"remove": "הסר גישה",
"group": "קבוצה",
"share_added": "גישה ניתנה",
"share_updated": "גישה עודכנה",
"share_removed": "גישה הוסרה",
"share_failed": "נכשל בעדכון שיתוף",
"preset": {
"freeBusy": "חופשי/תפוס בלבד",
"read": "קריאה בלבד",
"readWrite": "קרא וכתוב",
"manager": "מנהל",
"custom": "מותאם אישית"
},
"tab_shared_by_me": "Shared by me",
"tab_shared_with_me": "Shared with me",
"no_shares_by_me": "You haven't shared anything yet.",
"no_shares_with_me": "No folders shared with you yet.",
"shared_by": "Shared by",
"accept": "Accept",
"decline": "Decline"
},
"advanced_search": {
"title": "חיפוש מתקדם",
@@ -3081,7 +3285,8 @@
"shared_by": "משותף על ידי {name}",
"open_folder_tree": "פתח עץ תיקייה",
"migration_title": "עדכון הקבצים שלך…",
"migration_description": "ארגון תיקיות וקבצים לתוך המבנה הנכון שלהם. זה קורה רק פעם אחת."
"migration_description": "ארגון תיקיות וקבצים לתוך המבנה הנכון שלהם. זה קורה רק פעם אחת.",
"send_as_attachment": "Send as Attachment"
},
"smime": {
"your_certificates": "התעודות שלך",
@@ -3212,102 +3417,6 @@
"show_on_new_devices_title": "הצג בהתקנים חדשים",
"show_on_new_devices_desc": "הפעל מחדש את בר הברכה ושיוך את הסיור בפעם הראשונה שאתה נכנס בהתקן חדש, גם אם כבר השלמת אותו במקום אחר"
},
"meta_description": "לקוח webmail מינימליסטי באמצעות פרוטוקול JMAP",
"protocol_handlers": {
"title": "יישומים ברירת מחדל",
"description": "בחר אם קישורי דוא״ל ולוח שנה ייפתחו ב־VNCmail+. מבחינה טכנית, VNCmail+ רשום כטיפול בפרוטוקול עבור קישורי mailto: ו־webcal:.",
"unsupported": "דפדפן זה או חיבור זה לא תומך בהרשמה ידנית של טיפול בפרוטוקול. ייתכן שעדיין תוכל להשתמש ב־PWA המותקנת דרך הדפדפן או הגדרות מערכת ההפעלה.",
"mailto_label": "קישורי דוא״ל",
"mailto_description": "פתח קישורי mailto: ב־VNCmail+ עם מחבר שמלא מראש.",
"protocol_open_mode_label": "בעת פתיחת קישורי פרוטוקול",
"protocol_open_mode_description": "בחר אם VNCmail+ יפתח קישורי mailto: ו־webcal: בלשונית חדשה או ישתמש בחיבור פתוח. אפשרות הישיבה הפעילה דורשת הרשאת עדכון כדי שתוכל ללחוץ על עדכון נופל כדי להביא את VNCmail+ לחזית אם הדפדפן חוסם מיקוד.",
"protocol_open_mode_active_session": "פתח בישיבה פעילה אם אפשר",
"protocol_open_mode_new_tab": "פתח תמיד לשונית חדשה",
"focus_notification_title": "פתח את VNCmail+",
"focus_notification_body": "הקישור נפתח ב־VNCmail+. לחץ כדי להביא את החלון לחזית.",
"webcal_label": "קישורי לוח שנה",
"webcal_description": "פתח קישורי webcal: ב־VNCmail+ עם תיבת דו־שיח מלא מראש להרשמה ללוח שנה.",
"register_mailto": "רשום יישום דוא״ל",
"register_webcal": "רשום יישום לוח שנה",
"mailto_registered": "בקש הרשמה של מטפל דוא״ל",
"webcal_registered": "בקש הרשמה של מטפל לוח שנה",
"registration_failed": "הרשמת טיפול בפרוטוקול נכשלה",
"opening_mailto": "פתיחת מחבר…",
"opening_webcal": "פתיחת לוח שנה…",
"browser_note": "הדפדפן או מערכת ההפעלה שלך עשויים לבקש ממך לאשר זאת ועשויים לדרוש שVNCmail+ יותקן לפני שניתן לבחור אותו כיישום ברירת המחדל.",
"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": "החלפת חשבון…"
},
"mailbox_context_menu": {
"mark_folder_read": "סמן תיקייה כקרויה",
"mark_folder_tree_read": "סמן תיקייה ותת־תיקיות כקרויות",
"mark_all_folders_read": "סמן את כל התיקיות כקרויות",
"new_subfolder": "תת־תיקייה חדשה…",
"new_folder": "תיקייה חדשה…",
"rename": "שנה שם…",
"import_email": "ייבא .eml או .zip…",
"empty_folder": "תיקייה ריקה",
"empty_folder_generic": "תיקייה ריקה",
"delete_folder": "מחק תיקייה",
"refresh": "רענן",
"mark_all_confirm_title": "סמן את כל התיקיות כקרויות",
"mark_all_confirm_message": "סמן כל הודעה שלא קרויה בחשבון האישי שלך כקרויה?",
"delete_confirm_title": "מחק תיקייה",
"delete_confirm_message": "מחק לצמיתות את התיקייה \"{name}\"? לא ניתן לבטל פעולה זו.",
"prompt_new_subfolder": "הזן שם לתת־תיקייה החדשה.",
"prompt_new_folder": "הזן שם לתיקייה החדשה.",
"prompt_rename": "הזן שם חדש לתיקייה זו.",
"placeholder_folder_name": "שם תיקייה",
"create": "צור",
"rename_confirm": "שנה שם",
"toast_marked_read": "התיקייה סומנה כקרויה",
"toast_marked_read_count": "סומנו {count, plural, one {הודעה 1} other {# הודעות}} כקרויות",
"toast_already_read": "אין הודעות שלא קרויות",
"toast_marked_all_read": "כל התיקיות סומנו כקרויות",
"toast_emptied": "התיקייה התרוקנה",
"toast_folder_created": "תיקייה נוצרה",
"toast_folder_renamed": "שם התיקייה שונה",
"toast_folder_deleted": "התיקייה נמחקה",
"toast_error_mark_read": "נכשל בסימון כקרויה",
"toast_error_empty": "נכשל בתרוקנון תיקייה",
"toast_error_create": "נכשל ביצירת תיקייה",
"toast_error_rename": "נכשל בשינוי שם תיקייה",
"toast_error_delete": "נכשל במחיקת תיקייה",
"toast_error_delete_has_children": "לתיקייה יש תת־תיקיות. הסר אותן קודם.",
"toast_error_delete_has_email": "התיקייה אינה ריקה. תרוקנה קודם."
},
"sharing": {
"title": "שתף \"{name}\"",
"description": "הענק גישה למשתמשים או קבוצות אחרות בשרת זה. השינויים יופעלו מיד.",
"no_shares": "לא משותף עם מישהו עדיין.",
"add_person": "הוסף אדם או קבוצה",
"search_placeholder": "חפש לפי שם או דוא״ל…",
"loading_principals": "טעינת משתמשים…",
"no_principals": "לא נמצאו משתמשים או קבוצות אחרים.",
"no_match": "אין התאמות.",
"remove": "הסר גישה",
"group": "קבוצה",
"share_added": "גישה ניתנה",
"share_updated": "גישה עודכנה",
"share_removed": "גישה הוסרה",
"share_failed": "נכשל בעדכון שיתוף",
"preset": {
"freeBusy": "חופשי/תפוס בלבד",
"read": "קריאה בלבד",
"readWrite": "קרא וכתוב",
"manager": "מנהל",
"custom": "מותאם אישית"
}
},
"unified_mailbox": {
"search_unavailable": "חיפוש אינו זמין בתצוגה המאוחדת"
},
@@ -3325,5 +3434,128 @@
"install": "התקן",
"dont_remind": "אל תזכיר לי שוב",
"dismiss_aria": "בטל הודעת התקנה"
},
"signatures": {
"title": "Signatures",
"description": "Create and manage email signatures. Assign default signatures for new messages and replies.",
"no_signature": "No signatures created yet.",
"add_signature": "Add Signature",
"duplicate": "Duplicate",
"your_signatures": "Your Signatures",
"delete_title": "Delete Signature",
"delete_message": "Are you sure you want to delete \"{name}\"?",
"edit_signature": "Edit Signature",
"new_signature": "New Signature",
"name_required": "Signature name is required",
"name_label": "Signature Name",
"name_placeholder": "e.g., Work, Personal, Legal",
"editor_label": "Signature Content",
"show_preview": "Preview",
"show_editor": "Editor",
"html_preview_label": "HTML Preview",
"plain_text_preview_label": "Plain Text Preview",
"default_signature": {
"label": "Default for new messages",
"description": "Automatically insert this signature when composing a new message."
},
"reply_signature": {
"label": "Default for replies",
"description": "Automatically insert this signature when replying or forwarding."
},
"no_signatures_available": "No signatures available",
"per_identity_signatures": {
"label": "Per-Identity Signature Overrides",
"description": "Override the default signature for individual sending identities."
},
"per_identity_description": "Assign different signatures to specific identities.",
"select_signature": "Select signature",
"cancel": "Cancel",
"save": "Save Signature",
"toolbar": {
"bold": "Bold",
"italic": "Italic",
"underline": "Underline",
"strikethrough": "Strikethrough",
"link": "Link",
"bullet_list": "Bullet List",
"ordered_list": "Ordered List",
"text_color": "Text Color",
"alignment": "Alignment",
"font_size": "Font Size",
"align_center": "Align center",
"align_left": "Align left",
"align_right": "Align right",
"remove_color": "Remove color"
},
"default": "Default",
"no_signatures": "No signatures yet",
"reply": "Replies",
"use_global_default": "Use global default"
},
"admin": {
"vncdirectory": {
"title": "VNCdirectory",
"description": "Centralized identity and directory integration (SAML, LDAP, 2FA)",
"loading": "Loading...",
"save": "Save configuration",
"saving": "Saving...",
"saved": "VNCdirectory configuration saved.",
"save_error": "Failed to save",
"enable_section": "Enable VNCdirectory Integration",
"enabled": "Enabled",
"enabled_description": "Turn on VNCdirectory integration for identity management, SSO, and directory services",
"connection": "Connection",
"url": "VNCdirectory URL",
"url_placeholder": "https://vncdirectory.example.com",
"api_key": "API Key",
"api_key_placeholder": "Enter API key",
"saml": "SAML / Identity Provider",
"saml_enabled": "SAML Enabled",
"saml_enabled_description": "Enable SAML single sign-on via VNCdirectory",
"idp_url": "Identity Provider URL",
"idp_url_placeholder": "https://idp.example.com/saml2/idp",
"issuer": "Issuer Name (Entity ID)",
"issuer_placeholder": "urn:example:vncmail",
"sp_cert": "Service Provider Certificate (X.509)",
"sp_cert_placeholder": "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----",
"ldap": "LDAP Directory",
"ldap_enabled": "LDAP Enabled",
"ldap_enabled_description": "Query user directory via LDAP for contact lookups and authentication",
"ldap_uri": "LDAP Server URI",
"ldap_uri_placeholder": "ldaps://ldap.example.com:636",
"bind_dn": "Bind DN",
"bind_dn_placeholder": "cn=readonly,dc=example,dc=com",
"bind_password": "Bind Password",
"bind_password_placeholder": "Enter LDAP bind password",
"search_base": "Search Base",
"search_base_placeholder": "ou=users,dc=example,dc=com",
"ldap_type": "LDAP Type",
"ldap_type_openldap": "OpenLDAP",
"ldap_type_msad": "Microsoft Active Directory",
"auth_section": "Authentication",
"require_2fa": "Enforce 2FA/TOTP",
"require_2fa_description": "Require two-factor authentication for all users",
"oidc_section": "OpenID Connect (OIDC)",
"oidc_section_description": "Enable OIDC login alongside or instead of SAML",
"oidc_client_id": "OIDC Client ID",
"oidc_client_id_placeholder": "vncmail-client",
"oidc_discovery_url": "OIDC Discovery URL",
"oidc_discovery_url_placeholder": "https://idp.example.com/.well-known/openid-configuration",
"session_ttl": "Session TTL (seconds)",
"session_ttl_description": "How long SSO sessions remain valid. Default: 8 hours (28800)",
"federated": "Federated Applications",
"federated_description": "Configure SSO redirect URLs for other VNC applications. Users signed into one app will be transparently authenticated when navigating to another.",
"add_app": "Add federated app",
"app_name_placeholder": "App name (e.g. vnctalk)",
"app_url_placeholder": "https://vnc.example.com/auth/sso",
"remove_app": "Remove {name}",
"add": "Add",
"cancel": "Cancel",
"app_name_error": "Enter an application name",
"app_name_format_error": "Name must contain only letters, numbers, hyphens, and underscores",
"app_exists_error": "An app with this name already exists",
"app_url_error": "Enter an SSO URL",
"saved_password_hint": "Saved - type to replace"
}
}
}