from __future__ import annotations

I18N: dict[str, dict[str, str]] = {
  "en": {
    "app_title": "ANTCH",
    "btn_new": "+ New",
    "btn_new_short": "+",
    "btn_collapse": "<<",
    "btn_expand": ">>",
    "tab_chats": "Chats",
    "tab_requests": "Requests",
    "incoming": "Incoming",
    "incoming_with_count": "Incoming ({n})",
    "outgoing_with_count": "Outgoing ({n})",
    "outgoing": "Outgoing",
    "settings_button": "⚙ Settings",
    "btn_logout": "Logout / Launcher",
    "settings_title": "Settings",
    "tab_profile": "Profile",
    "tab_language": "Language",
    "tab_theme": "Theme",
    "tab_appearance": "Appearance",
    "tab_audio": "Audio",
    "profile_alias": "Alias: {v}",
    "profile_id": "ID: {v}",
    "profile_created": "Created: {v}",
    "lang_tr": "Turkish",
    "lang_en": "English",
    "lang_de": "German",
    "lang_es": "Spanish",
    "lang_fr": "French",
    "hint_esc": "Esc",
    "replying_to": "↩ Replying to {alias}: {snippet}",
    "read_more": "Read more…",
    "show_less": "Show less",
    "edited_tag": "edited",
    "pending_tag": "…",
    "connecting": "Connecting…",
    "select_chat_first": "Select a chat first.",
    "menu_new_chat_title": "New Chat",
    "menu_new_chat_body": "Choose what you want to do:",
    "menu_start_new": "Start New Chat",
    "menu_create_group": "Create Group",
    "menu_import_json": "Import Chat (JSON)",
    "close": "Close",
    "ok": "OK",
    "cancel": "Cancel",
    "yes": "Yes",
    "no": "No",
    "save": "Save",
    "generic_error": "Error: {e}",
    "accept": "Accept",
    "decline": "Decline",
    "handshake_request": "Handshake Request",
    "handshake_request_body": "From: {alias}\nFingerprint: {fp}\n\nAccepting will establish an E2E session.",
    "req_created_updated": "Created {c} • Updated {u}",
    "theme_default": "Default",
    "copy": "Copy",
    "copied": "Copied to clipboard",
    "cut_to_clipboard": "Cut to clipboard",
    "pyperclip_not_installed": "pyperclip not installed",
    "add": "Add",
    "fullscreen": "Fullscreen",
    "theme_default": "Default",
    "theme_gruvbox": "Gruvbox Light",
    "theme_gruvbox_dark": "Gruvbox Dark",
    "theme_dracula": "Dracula",
    "theme_nord": "Nord",
    "theme_solarized_light": "Solarized Light",
    "theme_solarized_dark": "Solarized Dark",
    "theme_catppuccin_mocha": "Catppuccin Mocha",
    "theme_catppuccin_latte": "Catppuccin Latte",
    "theme_catppuccin_frappe": "Catppuccin Frappé",
    "theme_catppuccin_macchiato": "Catppuccin Macchiato",
    "theme_tokyo_night": "Tokyo Night",
    "theme_tokyo_night_storm": "Tokyo Night Storm",
    "theme_tokyo_night_light": "Tokyo Night Light",
    "theme_one_dark": "One Dark",
    "theme_one_light": "One Light",
    "theme_monokai_pro": "Monokai Pro",
    "theme_github_dark": "GitHub Dark",
    "theme_github_light": "GitHub Light",
    "theme_material_darker": "Material Darker",
    "theme_material_palenight": "Material Palenight",
    "theme_ayu_dark": "Ayu Dark",
    "theme_ayu_mirage": "Ayu Mirage",
    "theme_ayu_light": "Ayu Light",
    "theme_rose_pine": "Rosé Pine",
    "theme_rose_pine_moon": "Rosé Pine Moon",
    "theme_rose_pine_dawn": "Rosé Pine Dawn",
    "theme_everforest_dark": "Everforest Dark",
    "theme_everforest_light": "Everforest Light",
    "theme_kanagawa": "Kanagawa",
    "theme_kanagawa_light": "Kanagawa Light",
    "theme_night_owl": "Night Owl",
    "theme_synthwave_84": "Synthwave '84",
    "theme_cyberpunk": "Cyberpunk",
    "theme_high_contrast": "High Contrast",
    "theme_paper": "Paper",
    "theme_sync_gtk": "Sync with GTK Theme",
    "theme_sync_qt": "Sync with QT Theme",
    "theme_sync_success": "Theme synced with system",
    "theme_sync_failed": "Could not detect system theme",
    "menu_reply": "Reply",
    "menu_edit": "Edit",
    "menu_delete": "Delete",
    "menu_info": "Info",
    "menu_history": "View History",
    "menu_open": "Open",
    "menu_export": "Export",
    "menu_delete_chat": "Delete Chat",
    "menu_retry": "Retry Handshake",
    "menu_delete_record": "Delete Record",
    "menu_add_member": "Add Member",
    "menu_seed": "Seed",
    "menu_chat": "Chat",
    "menu_message": "Message",
    "menu_outgoing_request": "Outgoing Request",
    "dlg_delete_message": "Delete Message",
    "dlg_delete_message_body": "Delete this message for both sides?",
    "dlg_message_info": "Message Info",
    "dlg_delete_chat": "Delete Chat",
    "dlg_delete_chat_body": "Delete chat with {peer} (local data)?",
    "dlg_export_chat": "Export Chat…",
    "tab_users": "Users",
    "status_online": "Online",
    "status_idle": "Idle",
    "status_dnd": "Do Not Disturb",
    "status_invisible": "Invisible",
    "status_offline": "Offline",
    "set_status": "Set Status",
    "edit_profile": "Edit Profile",
    "bio_placeholder": "Enter your bio…",
    "status_msg_placeholder": "What's on your mind?",
    "visible_to_others": "Visible to others",
    "tab_privacy": "Privacy",
    "blocked_users": "Blocked Users",
    "block_user": "Block User",
    "unblock_user": "Unblock",
    "privacy_settings": "Privacy Settings",
    "search_users": "Search users (Regex)…",
    "user_info": "User Info",
    "bio": "Bio",
    "status": "Status",
    "search_placeholder": "Search users (Regex)…",
    "bio_label": "Bio",
    "save_btn": "Save",
    "profile_saved": "Profile saved!",
    "visibility_label": "Visibility",
    "visibility_public": "Public",
    "visibility_private": "Private",
    "blocked_users_label": "Blocked Users",
    "unblock_btn": "Unblock",
    "status_label": "Status",
    "tab_network": "Network",
    "tab_cloud": "Cloud",
    "tab_backup": "Backup",
    "tab_plugins": "Plugins",
    "tab_bindings": "Bindings",
    "plugin_enabled": "{name} enabled",
    "plugin_disabled": "{name} disabled",
    "plugin_list_refreshed": "Plugin list refreshed",
    "plugin_folder_error": "Error: {e}",
    "plugin_settings_saved": "Settings saved",

    "audio_input_device": "Microphone",
    "audio_output_device": "Speaker",
    "audio_default_device": "Default (System)",
    "audio_mic_volume": "Mic Volume (%)",
    "audio_speaker_volume": "Speaker Volume (%)",
    "audio_apply": "Apply",
    "audio_saved": "Audio settings applied.",
    "audio_restart_test_hint": "Device changes require restarting the test.",
    "audio_test_start": "Start Test (Listen to myself)",
    "audio_test_stop": "Stop Test",
    "audio_devices_unavailable": "Audio devices unavailable.",
    "audio_test_stop_call_first": "Stop the active call first.",

    "group_call_started": "Group call started",
    "group_call_joined": "{user} joined the call",
    "group_call_left": "{user} left the call",
    "group_call_ring": "Incoming group call from {group}",
    "group_call_ringing": "Ringing group members...",
    "group_call_in_progress": "In group call: {group}",
    "group_call_participants": "Participants ({n})",

    "network_status_header": "Network Status",
    "cloud_header": "Cloud",
    "backup_header": "Backups",

    "cloud_section_settings": "Settings",
    "cloud_section_actions": "Sync",
    "cloud_section_status": "Status",
    "cloud_enabled_label": "Enable Cloud for this user",
    "cloud_snapshots_label": "Publish encrypted chat snapshot",
    "cloud_files_label": "Publish encrypted files (if supported)",
    "cloud_mode_all": "All chats",
    "cloud_mode_selected": "Selected chats",
    "cloud_mode_toggle": "Chat Scope: {mode}",
    "cloud_chats_label": "Chats",
    "cloud_sync_up": "Sync local → cloud (backup-safe)",
    "cloud_sync_down": "Sync cloud → local (creates backup + restart)",
    "cloud_status": "Clouding",
    "cloud_last_publish": "Last publish",
    "cloud_last_fetch": "Last fetch",

    "backup_section": "Backups",
    "backup_create": "Create backup now",
    "backup_restore": "Restore selected (staged + restart)",
    "backup_delete": "Delete selected",
    "backup_list_label": "Available backups",
    "backup_created": "Backup created",
    "backup_deleted": "Backup deleted",
    "backup_encrypt_title": "Encrypt Backup",
    "backup_encrypt_body": "Do you want to protect the backup with a passphrase?\n\nNo encryption → No\nEncrypt backup → Yes",
    "backup_passphrase_title": "Backup Passphrase",
    "backup_passphrase_prompt": "Enter passphrase for backup (min 4 characters):",
    "backup_passphrase_short": "Passphrase too short (min 4 chars)",

    "cloud_sync_up_done": "Uploaded to cloud",
    "cloud_sync_up_failed": "Cloud upload failed",
    "cloud_fetching": "Fetching from cloud…",
    "cloud_no_nodes": "No nodes connected to the cloud (start a node daemon).",
    "cloud_not_seeded": "No node has the latest snapshot yet (not seeded).",
    "cloud_fetch_timeout": "Cloud fetch timed out (no responding nodes).",
    "cloud_bad_node": "Cloud fetch failed (bad node response).",
    "cloud_no_snapshot": "No cloud snapshot found",
    "cloud_bad_snapshot": "Cloud snapshot is invalid",
    "cloud_restore_staged": "Restore staged; restarting…",
    "backup_read_err": "Backup could not be read",
    "backup_restore_staged": "Backup restore staged; restarting…",

    "seeding_disabled": "Seeding is disabled",
    "seed_file_missing": "File ciphertext not found",
    "seed_file_done": "Seeding announced",
    "seed_chat_toggled": "Chat seeding selection toggled",
    "net_mode_label": "Current Mode: {mode}",
    "net_status_label": "Connection Status: {status}",
    "net_status_connected": "Connected",
    "net_status_disconnected": "Disconnected",
    "net_public_ip": "Public IP Address:",
    "net_hidden": "Hidden",
    "net_show_ip": "Show IP",
    "net_fetching": "Fetching...",
    "dlg_peer_alias": "Enter peer alias",
    "request_sent": "Request sent to {alias}",
    "dlg_group_name": "Group Name",
    "dlg_group_name_ph": "My awesome group",
    "dlg_group_members": "Add members (comma-separated aliases)",
    "dlg_group_members_ph": "alice,bob,charlie",
    "dlg_group_member_add": "Add member alias (leave empty to finish)",
    "dlg_group_member_add_ph": "username",
    "dlg_create_group_title": "Create New Group",
    "dlg_add_members": "Members",
    "dlg_no_members_yet": "No members added yet",
    "dlg_create_group_btn": "Create Group",
    "dlg_group_name_required": "Group name is required",
    "group_build_title": "Group",
    "group_build_continue": "Continue",
    "group_build_create": "Create",
    "group_build_cancel": "Cancel",
    "group_info_title": "Group Info",
    "group_info_body": "Name: {name}\nID: {gid}\n\nMembers:\n{members}",
    "group_members_sub": "{n} members",
    "group_invite_title": "Group Invite",
    "group_invite_body": "Group: {name}\nFrom: {from_alias}\n\nAccept to join.",
    "dlg_add_member": "Add member alias",
    "dlg_import_chat": "Import chat JSON path",
    "block_placeholder": "Alias or fingerprint",
    "download_done_status": "Downloaded: {path}",

    "appearance_timezone": "Time Zone",
    "appearance_timezone_desc": "Select how timestamps are displayed (UTC recommended for privacy)",
    "appearance_time_format": "Time Format",
    "appearance_time_format_desc": "Choose 12-hour or 24-hour clock",
    "appearance_saved": "Appearance settings saved",

    "appearance_cat_time": "Time Display",
    "appearance_cat_messages": "Messages",
    "appearance_cat_colors": "User Colors",
    "appearance_cat_rules": "Color Rules",

    "appearance_button_style": "Button Style",
    "appearance_button_style_desc": "Visual style for buttons (restart required)",
    "btn_style_flat": "Default (Flat)",
    "btn_style_default": "3D Shadow",

    "appearance_msg_spacing": "Message Spacing",
    "appearance_msg_spacing_desc": "Extra spacing between non-grouped messages (0-5 lines)",
    "appearance_my_color": "My Name Color",
    "appearance_my_color_desc": "Your username color in chat",
    "appearance_default_color": "Default User Color",
    "appearance_default_color_desc": "Default color for other users",

    "appearance_rules_title": "Color Rules",
    "appearance_rules_desc": "Rules to customize user colors by username, message content, or permissions",
    "appearance_add_rule": "+ Add Rule",
    "appearance_no_rules": "No color rules defined",
    "code_preview_more_lines": "... +{n} more lines",
    "code_preview_no_code": "No code",


    "rule_type_user": "Specific User",
    "rule_type_regex_name": "Username Regex",
    "rule_type_user_contains": "Username Contains",
    "rule_type_permission": "Has Permission",
    "rule_type_is_self": "Is Me (Self)",
    "rule_type_regex_msg": "Message Regex",
    "rule_type_msg_contains": "Message Contains",
    "rule_type_is_reply": "Is Reply",
    "rule_type_is_edited": "Is Edited",
    "rule_type_has_file": "Has Attachment",
    "rule_type_has_image": "Has Image",
    "rule_type_time_range": "Time Range",
    "rule_type_date_regex": "Date/Time Regex",
    "rule_type_chat_dm": "Is DM",
    "rule_type_chat_group": "Is Group",
    "rule_type_custom_python": "Custom Python",

    "rule_perm_kick": "Can Kick",
    "rule_perm_ban": "Can Ban",
    "rule_perm_admin": "Is Admin/Creator",
    "rule_perm_moderator": "Is Moderator",
    "rule_perm_online": "Is Online",
    "rule_perm_in_call": "In Voice Call",

    "dlg_pattern_time_range": "Format: HH:MM-HH:MM (e.g. 09:00-17:00)",
    "dlg_pattern_date_regex": "Regex for: YYYY-MM-DD HH:MM:SS DayName",
    "dlg_pattern_custom_python": "Python expression (returns True/False)",

    "dlg_edit_rule_title": "Edit Color Rule",
    "dlg_rule_type": "Rule Type",
    "dlg_rule_pattern": "Pattern / Value",
    "dlg_rule_pattern_user": "Username",
    "dlg_rule_pattern_regex_name": "Regex for username",
    "dlg_rule_pattern_regex_msg": "Regex for message content",
    "dlg_rule_color": "Primary Color",
    "dlg_rule_color2": "Secondary Color (for split)",
    "dlg_rule_split": "Split Colors",
    "dlg_rule_priority": "Priority (higher = checked first)",
    "dlg_use_previous_color": "Use Previous Rule Color",
    "dlg_rule_enabled": "Enabled",

    "find_bar_status": "{current}/{total}",
    "find_bar_hint": "[Esc] Exit • [↵] Next • [⇧↵] Prev",
    "find_no_results": "No results",
    "find_invalid_regex": "Invalid regex",
    "cmd_find_desc": "Search messages with regex",
    "cmd_find_usage": "/find <pattern>",


    "select_mode_help": "📋 Select Mode: Click=Select • Middle Click=Range • [C] Clear • [Del] Delete • [Esc] Exit",
    "select_mode_exited": "Exited select mode",
    "select_bar_hint": " | [Esc] Exit • [Del] Delete • [C] Clear • [Ctrl+A] All • [Middle] Range",
    "select_count": "📋 {n} selected",
    "selection_cleared": "Selection cleared",
    "no_messages_selected": "No messages selected",
    "confirm_delete_messages": "Delete {n} selected message(s)?",
    "messages_deleted": "{n} message(s) deleted",
    "select_all_done": "All {n} messages selected",


    "py_editor_title": "Python Code Editor",
    "py_vars_title": "Available Variables",
    "py_user_info": "User Info",
    "py_message_info": "Message Info",
    "py_text_analysis": "Text Analysis",
    "py_datetime": "Date/Time",
    "py_functions": "Functions",
    "py_examples": "Examples",
    "py_result_hint": "Result must be True/False",
    "py_btn_save": "Save",
    "py_btn_cancel": "Cancel",
    "py_open_editor": "Open Code Editor",
    "py_code_label": "Python Code",

    "bindings_header": "Keyboard Shortcuts",
    "bindings_global": "Global",
    "bindings_composer": "Message Input",
    "bindings_select_mode": "Select Mode",
    "bindings_find_mode": "Find Mode",
    "bindings_navigation": "Navigation",
    "bind_toggle_select": "Toggle select mode",
    "bind_find_next": "Find next",
    "bind_find_prev": "Find previous",
    "bind_exit": "Exit / Cancel",
    "bind_select_all": "Select all",
    "bind_delete": "Delete selected",
    "bind_clear_selection": "Clear selection",
    "bind_copy": "Copy",
    "bind_paste": "Paste",
    "bind_cut": "Cut",
    "bind_select_left": "Extend selection left",
    "bind_select_right": "Extend selection right",
    "bind_select_word_left": "Extend selection word left",
    "bind_select_word_right": "Extend selection word right",
    "bind_move_word_left": "Move cursor word left",
    "bind_move_word_right": "Move cursor word right",
    "bind_history_prev": "Previous message from history",
    "bind_history_next": "Next message from history",
    "bind_send": "Send message",
    "bind_newline": "Insert newline",
    "bind_scroll_up": "Scroll up",
    "bind_scroll_down": "Scroll down",
    "bind_scroll_page_up": "Page up",
    "bind_scroll_page_down": "Page down",
    "bind_scroll_home": "Scroll to top",
    "bind_scroll_end": "Scroll to bottom",
    "bind_press_key": "Press key combo...",
    "bind_reset": "Reset",
    "bind_reset_all": "Reset All Bindings",
    "bind_conflict": "Key already used by: {action}",
    "bind_saved": "Keybinding saved",
    "bind_reset_done": "Keybindings reset to defaults",
    "update_available": "Update Available",
    "update_available_body": "A new version of Antch is available!\n\nCurrent: {current}\nLatest: {latest}\n\nRun this command to update:\n\npipx upgrade antch",
    "btn_update": "⬆"
  },
  "tr": {
    "app_title": "ANTCH",
    "btn_new": "+ Yeni",
    "btn_new_short": "+",
    "btn_collapse": "<<",
    "btn_expand": ">>",
    "tab_chats": "Sohbetler",
    "tab_requests": "İstekler",
    "incoming": "Gelen",
    "incoming_with_count": "Gelen ({n})",
    "outgoing_with_count": "Giden ({n})",
    "outgoing": "Giden",
    "settings_button": "⚙ Ayarlar",
    "btn_logout": "Çıkış / Launcher",
    "settings_title": "Ayarlar",
    "tab_profile": "Profil",
    "tab_language": "Dil",
    "tab_theme": "Tema",
    "tab_appearance": "Görünüm",
    "tab_audio": "Ses",
    "profile_alias": "Alias: {v}",
    "profile_id": "ID: {v}",
    "profile_created": "Oluşturuldu: {v}",
    "lang_tr": "Türkçe",
    "lang_en": "İngilizce",
    "lang_de": "Almanca",
    "lang_es": "İspanyolca",
    "lang_fr": "Fransızca",
    "hint_esc": "Esc",
    "replying_to": "↩ {alias} mesajına yanıt: {snippet}",
    "read_more": "Devamını oku…",
    "show_less": "Daha az göster",
    "edited_tag": "düzenlendi",
    "pending_tag": "…",
    "connecting": "Bağlanılıyor…",
    "select_chat_first": "Önce bir sohbet seç.",
    "menu_new_chat_title": "Yeni Sohbet",
    "menu_new_chat_body": "Ne yapmak istiyorsun?",
    "menu_start_new": "Yeni sohbet başlat",
    "menu_create_group": "Grup oluştur",
    "menu_import_json": "Sohbeti içe aktar (JSON)",
    "close": "Kapat",
    "ok": "Tamam",
    "cancel": "İptal",
    "yes": "Evet",
    "no": "Hayır",
    "save": "Kaydet",
    "generic_error": "Hata: {e}",
    "accept": "Kabul",
    "decline": "Reddet",
    "handshake_request": "Eşleşme isteği",
    "handshake_request_body": "Kimden: {alias}\nParmak izi: {fp}\n\nKabul edersen E2E oturum kurulacak.",
    "req_created_updated": "Oluşturuldu {c} • Güncellendi {u}",
    "copy": "Kopyala",
    "copied": "Panoya kopyalandı",
    "cut_to_clipboard": "Kesildi",
    "pyperclip_not_installed": "pyperclip kurulu değil",
    "add": "Ekle",
    "fullscreen": "Tam Ekran",
    "theme_default": "Varsayılan",
    "theme_gruvbox": "Gruvbox Açık",
    "theme_gruvbox_dark": "Gruvbox Koyu",
    "theme_dracula": "Dracula",
    "theme_nord": "Nord",
    "theme_solarized_light": "Solarized Açık",
    "theme_solarized_dark": "Solarized Koyu",
    "theme_catppuccin_mocha": "Catppuccin Mocha",
    "theme_catppuccin_latte": "Catppuccin Latte",
    "theme_catppuccin_frappe": "Catppuccin Frappé",
    "theme_catppuccin_macchiato": "Catppuccin Macchiato",
    "theme_tokyo_night": "Tokyo Night",
    "theme_tokyo_night_storm": "Tokyo Night Storm",
    "theme_tokyo_night_light": "Tokyo Night Açık",
    "theme_one_dark": "One Dark",
    "theme_one_light": "One Light",
    "theme_monokai_pro": "Monokai Pro",
    "theme_github_dark": "GitHub Koyu",
    "theme_github_light": "GitHub Açık",
    "theme_material_darker": "Material Darker",
    "theme_material_palenight": "Material Palenight",
    "theme_ayu_dark": "Ayu Koyu",
    "theme_ayu_mirage": "Ayu Mirage",
    "theme_ayu_light": "Ayu Açık",
    "theme_rose_pine": "Rosé Pine",
    "theme_rose_pine_moon": "Rosé Pine Moon",
    "theme_rose_pine_dawn": "Rosé Pine Dawn",
    "theme_everforest_dark": "Everforest Koyu",
    "theme_everforest_light": "Everforest Açık",
    "theme_kanagawa": "Kanagawa",
    "theme_kanagawa_light": "Kanagawa Açık",
    "theme_night_owl": "Night Owl",
    "theme_synthwave_84": "Synthwave '84",
    "theme_cyberpunk": "Cyberpunk",
    "theme_high_contrast": "Yüksek Kontrast",
    "theme_paper": "Kağıt",
    "theme_sync_gtk": "GTK Temasına Uyarla",
    "theme_sync_qt": "QT Temasına Uyarla",
    "theme_sync_success": "Tema sisteme uyarlandı",
    "theme_sync_failed": "Sistem teması algılanamadı",
    "menu_reply": "Yanıtla",
    "menu_edit": "Düzenle",
    "menu_delete": "Sil",
    "menu_info": "Bilgi",
    "menu_history": "Geçmişi Gör",
    "menu_open": "Aç",
    "menu_export": "Dışa Aktar",
    "menu_delete_chat": "Sohbeti Sil",
    "menu_retry": "Eşleşmeyi tekrar dene",
    "menu_delete_record": "Kaydı Sil",
    "menu_add_member": "Üye Ekle",
    "menu_seed": "Seedle",
    "menu_chat": "Sohbet",
    "menu_message": "Mesaj",
    "menu_outgoing_request": "Giden İstek",
    "dlg_delete_message": "Mesajı Sil",
    "dlg_delete_message_body": "Bu mesajı her iki taraftan da silmek istiyor musun?",
    "dlg_message_info": "Mesaj Bilgisi",
    "dlg_delete_chat": "Sohbeti Sil",
    "dlg_delete_chat_body": "{peer} ile olan sohbeti sil (yerel veri)?",
    "dlg_export_chat": "Sohbeti dışa aktar…",
    "tab_users": "Kullanıcılar",
    "status_online": "Çevrimiçi",
    "status_idle": "Boşta",
    "status_dnd": "Rahatsız Etmeyin",
    "status_invisible": "Görünmez",
    "status_offline": "Çevrimdışı",
    "set_status": "Durum Ayarla",
    "edit_profile": "Profili Düzenle",
    "bio_placeholder": "Biyografini yaz…",
    "status_msg_placeholder": "Aklından ne geçiyor?",
    "visible_to_others": "Başkalarına görünür",
    "tab_privacy": "Gizlilik",
    "blocked_users": "Engellenen Kullanıcılar",
    "block_user": "Kullanıcıyı Engelle",
    "unblock_user": "Engeli Kaldır",
    "privacy_settings": "Gizlilik Ayarları",
    "search_users": "Kullanıcı ara (Regex)…",
    "user_info": "Kullanıcı Bilgisi",
    "bio": "Biyografi",
    "status": "Durum",
    "search_placeholder": "Kullanıcı ara (Regex)…",
    "bio_label": "Biyografi",
    "save_btn": "Kaydet",
    "profile_saved": "Profil kaydedildi!",
    "visibility_label": "Görünürlük",
    "visibility_public": "Herkese Açık",
    "visibility_private": "Gizli",
    "blocked_users_label": "Engellenen Kullanıcılar",
    "unblock_btn": "Engeli Kaldır",
    "status_label": "Durum",
    "tab_network": "Ağ",
    "tab_cloud": "Bulut",
    "tab_backup": "Yedek",
    "tab_plugins": "Eklentiler",
    "tab_bindings": "Kısayollar",
    "plugin_enabled": "{name} aktif",
    "plugin_disabled": "{name} devre dışı",
    "plugin_list_refreshed": "Eklenti listesi yenilendi",
    "plugin_folder_error": "Hata: {e}",
    "plugin_settings_saved": "Ayarlar kaydedildi",

    "audio_input_device": "Mikrofon",
    "audio_output_device": "Hoparlör",
    "audio_default_device": "Varsayılan (Sistem)",
    "audio_mic_volume": "Mikrofon Sesi (%)",
    "audio_speaker_volume": "Hoparlör Sesi (%)",
    "audio_apply": "Uygula",
    "audio_saved": "Ses ayarları uygulandı.",
    "audio_restart_test_hint": "Cihaz değişikliği için testi yeniden başlatmalısın.",
    "audio_test_start": "Testi Başlat (Kendimi dinle)",
    "audio_test_stop": "Testi Durdur",
    "audio_devices_unavailable": "Ses cihazları alınamadı.",
    "audio_test_stop_call_first": "Önce aktif aramayı kapat.",

    "group_call_started": "Grup araması başlatıldı",
    "group_call_joined": "{user} aramaya katıldı",
    "group_call_left": "{user} aramadan ayrıldı",
    "group_call_ring": "{group} grubundan gelen arama",
    "group_call_ringing": "Grup üyeleri aranıyor...",
    "group_call_in_progress": "Grup aramasında: {group}",
    "group_call_participants": "Katılımcılar ({n})",

    "network_status_header": "Ağ Durumu",
    "cloud_header": "Bulut",
    "backup_header": "Yedekler",

    "cloud_section_settings": "Ayarlar",
    "cloud_section_actions": "Eşitle",
    "cloud_section_status": "Durum",
    "cloud_enabled_label": "Bu kullanıcı için Bulutu aç",
    "cloud_snapshots_label": "Şifreli sohbet yedeğini yayınla",
    "cloud_files_label": "Şifreli dosyaları yayınla (destekleniyorsa)",
    "cloud_mode_all": "Tüm sohbetler",
    "cloud_mode_selected": "Seçili sohbetler",
    "cloud_mode_toggle": "Kapsam: {mode}",
    "cloud_chats_label": "Sohbetler",
    "cloud_sync_up": "Yerel → Bulut (güvenli yedek)",
    "cloud_sync_down": "Bulut → Yerel (yedek alır + yeniden başlatır)",
    "cloud_status": "Bulutlanıyor mu",
    "cloud_last_publish": "Son yayın",
    "cloud_last_fetch": "Son çekme",

    "backup_section": "Yedekler",
    "backup_create": "Şimdi yedek oluştur",
    "backup_restore": "Seçili yedeği geri yükle (aşamalı + restart)",
    "backup_delete": "Seçiliyi sil",
    "backup_list_label": "Mevcut yedekler",
    "backup_created": "Yedek oluşturuldu",
    "backup_deleted": "Yedek silindi",
    "backup_encrypt_title": "Yedek Şifreleme",
    "backup_encrypt_body": "Yedeği şifre ile korumak ister misiniz?\n\nŞifresiz yedek → Hayır\nŞifreli yedek → Evet",
    "backup_passphrase_title": "Yedek Şifresi",
    "backup_passphrase_prompt": "Yedek için şifre girin (en az 4 karakter):",
    "backup_passphrase_short": "Şifre çok kısa (en az 4 karakter)",

    "cloud_sync_up_done": "Buluta yüklendi",
    "cloud_sync_up_failed": "Bulut yüklemesi başarısız",
    "cloud_fetching": "Buluttan alınıyor…",
    "cloud_no_nodes": "Buluta bağlı node yok (node daemon başlat).",
    "cloud_not_seeded": "Hiçbir node bu yedeğe sahip değil (seed edilmemiş).",
    "cloud_fetch_timeout": "Bulut alma zaman aşımına uğradı (yanıtlayan node yok).",
    "cloud_bad_node": "Bulut alma başarısız (hatalı node yanıtı).",
    "cloud_no_snapshot": "Bulutta yedek bulunamadı",
    "cloud_bad_snapshot": "Bulut yedeği geçersiz",
    "cloud_restore_staged": "Geri yükleme hazır; yeniden başlatılıyor…",
    "backup_read_err": "Yedek okunamadı",
    "backup_restore_staged": "Yedek geri yükleme hazır; yeniden başlatılıyor…",

    "seeding_disabled": "Seeding kapalı",
    "seed_file_missing": "Dosya şifreli verisi bulunamadı",
    "seed_file_done": "Seeding duyuruldu",
    "seed_chat_toggled": "Sohbet seçimi değiştirildi",
    "net_mode_label": "Mevcut Mod: {mode}",
    "net_status_label": "Bağlantı Durumu: {status}",
    "net_status_connected": "Bağlı",
    "dlg_peer_alias": "Kullanıcı alias gir",
    "request_sent": "İstek gönderildi: {alias}",
    "dlg_group_name": "Grup Adı",
    "dlg_group_name_ph": "Harika grubum",
    "dlg_group_members": "Üye ekle (virgülle alias)",
    "dlg_group_members_ph": "ali,ayşe,mehmet",
    "dlg_group_member_add": "Üye alias ekle (boş bırak bitir)",
    "dlg_group_member_add_ph": "kullanıcı_adı",
    "dlg_create_group_title": "Yeni Grup Oluştur",
    "dlg_add_members": "Üyeler",

    "appearance_timezone": "Saat Dilimi",
    "appearance_timezone_desc": "Zaman damgalarının nasıl gösterileceğini seç (gizlilik için UTC önerilir)",
    "appearance_time_format": "Saat Formatı",
    "appearance_time_format_desc": "12 saatlik veya 24 saatlik saat seç",
    "appearance_saved": "Görünüm ayarları kaydedildi",

    "appearance_cat_time": "Zaman Gösterimi",
    "appearance_cat_messages": "Mesajlar",
    "appearance_cat_colors": "Kullanıcı Renkleri",
    "appearance_cat_rules": "Renk Kuralları",

    "appearance_button_style": "Buton Stili",
    "appearance_button_style_desc": "Butonların görsel stili (yeniden başlatma gerekir)",
    "btn_style_flat": "Varsayılan (Düz)",
    "btn_style_default": "3D Gölgeli",

    "appearance_msg_spacing": "Mesaj Aralığı",
    "appearance_msg_spacing_desc": "Gruplanmamış mesajlar arası boşluk (0-5 satır)",
    "appearance_my_color": "Benim Adımın Rengi",
    "appearance_my_color_desc": "Sohbette kullanıcı adınızın rengi",
    "appearance_default_color": "Varsayılan Kullanıcı Rengi",
    "appearance_default_color_desc": "Diğer kullanıcılar için varsayılan renk",

    "appearance_rules_title": "Renk Kuralları",
    "appearance_rules_desc": "Kullanıcı adı, mesaj içeriği veya yetkiye göre renk özelleştir",
    "appearance_add_rule": "+ Kural Ekle",
    "appearance_no_rules": "Tanımlı renk kuralı yok",
    "code_preview_more_lines": "... +{n} satır daha",
    "code_preview_no_code": "Kod yok",


    "rule_type_user": "Belirli Kullanıcı",
    "rule_type_regex_name": "Kullanıcı Adı Regex",
    "rule_type_user_contains": "Kullanıcı Adı İçerir",
    "rule_type_permission": "Yetkiye Sahip",
    "rule_type_is_self": "Benim (Kendim)",
    "rule_type_regex_msg": "Mesaj Regex",
    "rule_type_msg_contains": "Mesaj İçerir",
    "rule_type_is_reply": "Yanıt mı",
    "rule_type_is_edited": "Düzenlenmiş mi",
    "rule_type_has_file": "Ek Var",
    "rule_type_has_image": "Resim Var",
    "rule_type_time_range": "Zaman Aralığı",
    "rule_type_date_regex": "Tarih/Saat Regex",
    "rule_type_chat_dm": "Özel Mesaj mı",
    "rule_type_chat_group": "Grup mu",
    "rule_type_custom_python": "Özel Python Kodu",

    "rule_perm_kick": "Atabilir",
    "rule_perm_ban": "Yasaklayabilir",
    "rule_perm_admin": "Admin/Kurucu",
    "rule_perm_moderator": "Moderatör",
    "rule_perm_online": "Çevrimiçi",
    "rule_perm_in_call": "Aramada",

    "dlg_pattern_time_range": "Format: SS:DD-SS:DD (örn: 09:00-17:00)",
    "dlg_pattern_date_regex": "Regex: YYYY-MM-DD HH:MM:SS GünAdı",
    "dlg_pattern_custom_python": "Python ifadesi (True/False döner)",

    "dlg_edit_rule_title": "Renk Kuralı Düzenle",
    "dlg_rule_type": "Kural Türü",
    "dlg_rule_pattern": "Desen / Değer",
    "dlg_rule_pattern_user": "Kullanıcı adı",
    "dlg_rule_pattern_regex_name": "Kullanıcı adı için regex",
    "dlg_rule_pattern_regex_msg": "Mesaj içeriği için regex",
    "dlg_rule_color": "Birincil Renk",
    "dlg_rule_color2": "İkincil Renk (bölme için)",
    "dlg_rule_split": "Renkleri Böl",
    "dlg_rule_priority": "Öncelik (yüksek = önce kontrol)",
    "dlg_use_previous_color": "Önceki Kural Rengini Kullan",
    "dlg_rule_enabled": "Aktif",

    "dlg_no_members_yet": "Henüz üye eklenmedi",
    "dlg_create_group_btn": "Grup Oluştur",
    "dlg_group_name_required": "Grup adı gerekli",
    "group_build_title": "Grup",
    "group_build_continue": "Devam Et",
    "group_build_create": "Kur",
    "group_build_cancel": "İptal",
    "group_info_title": "Grup Bilgisi",
    "group_info_body": "Ad: {name}\nID: {gid}\n\nÜyeler:\n{members}",
    "group_members_sub": "{n} üye",
    "group_invite_title": "Grup Daveti",
    "group_invite_body": "Grup: {name}\nKimden: {from_alias}\n\nKatılmak için kabul et.",
    "dlg_add_member": "Eklenecek üye alias",
    "dlg_import_chat": "Sohbet JSON yolu",
    "block_placeholder": "Alias veya parmak izi",
    "download_done_status": "İndirildi: {path}",
    "net_status_disconnected": "Bağlantı Yok",
    "net_public_ip": "Genel IP Adresi:",
    "net_hidden": "Gizli",
    "net_show_ip": "IP Göster",
    "net_fetching": "Getiriliyor...",

    "find_bar_status": "{current}/{total}",
    "find_bar_hint": "[Esc] Çık • [↵] Sonraki • [⇧↵] Önceki",
    "find_no_results": "Sonuç yok",
    "find_invalid_regex": "Geçersiz regex",
    "cmd_find_desc": "Mesajlarda regex ile ara",
    "cmd_find_usage": "/find <desen>",


    "select_mode_help": "📋 Seçim Modu: Tıkla=Seç • Orta Tık=Aralık • [C] Temizle • [Del] Sil • [Esc] Çık",
    "select_mode_exited": "Seçim modundan çıkıldı",
    "select_bar_hint": " | [Esc] Çık • [Del] Sil • [C] Temizle • [Ctrl+A] Tümü • [Orta Tık] Aralık",
    "select_count": "📋 {n} mesaj seçili",
    "selection_cleared": "Seçim temizlendi",
    "no_messages_selected": "Seçili mesaj yok",
    "confirm_delete_messages": "{n} seçili mesaj silinsin mi?",
    "messages_deleted": "{n} mesaj silindi",
    "select_all_done": "Tüm {n} mesaj seçildi",


    "py_editor_title": "Python Kod Editörü",
    "py_vars_title": "Kullanılabilir Değişkenler",
    "py_user_info": "Kullanıcı Bilgisi",
    "py_message_info": "Mesaj Bilgisi",
    "py_text_analysis": "Metin Analizi",
    "py_datetime": "Tarih/Saat",
    "py_functions": "Fonksiyonlar",
    "py_examples": "Örnekler",
    "py_result_hint": "Sonuç True/False olmalı",
    "py_btn_save": "Kaydet",
    "py_btn_cancel": "İptal",
    "py_open_editor": "Kod Editörünü Aç",
    "py_code_label": "Python Kodu",

    "bindings_header": "Klavye Kısayolları",
    "bindings_global": "Genel",
    "bindings_composer": "Mesaj Girişi",
    "bindings_select_mode": "Seçim Modu",
    "bindings_find_mode": "Arama Modu",
    "bindings_navigation": "Gezinme",
    "bind_toggle_select": "Seçim modunu aç/kapat",
    "bind_find_next": "Sonraki sonucu bul",
    "bind_find_prev": "Önceki sonucu bul",
    "bind_exit": "Çıkış / İptal",
    "bind_select_all": "Tümünü seç",
    "bind_delete": "Seçilenleri sil",
    "bind_clear_selection": "Seçimi temizle",
    "bind_copy": "Kopyala",
    "bind_paste": "Yapıştır",
    "bind_cut": "Kes",
    "bind_select_left": "Seçimi sola genişlet",
    "bind_select_right": "Seçimi sağa genişlet",
    "bind_select_word_left": "Seçimi kelime sola genişlet",
    "bind_select_word_right": "Seçimi kelime sağa genişlet",
    "bind_move_word_left": "İmleci kelime sola taşı",
    "bind_move_word_right": "İmleci kelime sağa taşı",
    "bind_history_prev": "Geçmişten önceki mesaj",
    "bind_history_next": "Geçmişten sonraki mesaj",
    "bind_send": "Mesajı gönder",
    "bind_newline": "Yeni satır ekle",
    "bind_scroll_up": "Yukarı kaydır",
    "bind_scroll_down": "Aşağı kaydır",
    "bind_scroll_page_up": "Sayfa yukarı",
    "bind_scroll_page_down": "Sayfa aşağı",
    "bind_scroll_home": "Başa git",
    "bind_scroll_end": "Sona git",
    "bind_press_key": "Tuş kombinasyonu girin...",
    "bind_reset": "Sıfırla",
    "bind_reset_all": "Tüm Kısayolları Sıfırla",
    "bind_conflict": "Tuş zaten kullanılıyor: {action}",
    "bind_saved": "Kısayol kaydedildi",
    "bind_reset_done": "Kısayollar varsayılana sıfırlandı",
    "update_available": "Güncelleme Mevcut",
    "update_available_body": "Antch'ın yeni bir sürümü mevcut!\n\nMevcut: {current}\nSon: {latest}\n\nGüncellemek için şu komutu çalıştırın:\n\npipx upgrade antch",
    "btn_update": "⬆"
  },
  "de": {
    "app_title": "ANTCH",
    "btn_new": "+ Neu",
    "btn_new_short": "+",
    "btn_collapse": "<<",
    "btn_expand": ">>",
    "tab_chats": "Chats",
    "tab_requests": "Anfragen",
    "incoming": "Eingehend",
    "incoming_with_count": "Eingehend ({n})",
    "outgoing_with_count": "Ausgehend ({n})",
    "outgoing": "Ausgehend",
    "settings_button": "⚙ Einstellungen",
    "settings_title": "Einstellungen",
    "tab_profile": "Profil",
    "tab_language": "Sprache",
    "tab_theme": "Thema",
    "profile_alias": "Alias: {v}",
    "profile_id": "ID: {v}",
    "profile_created": "Erstellt: {v}",
    "lang_tr": "Türkisch",
    "lang_en": "Englisch",
    "lang_de": "Deutsch",
    "lang_es": "Spanisch",
    "lang_fr": "Französisch",
    "hint_esc": "Esc",
    "replying_to": "↩ Antwort an {alias}: {snippet}",
    "read_more": "Mehr lesen…",
    "show_less": "Weniger anzeigen",
    "edited_tag": "bearbeitet",
    "pending_tag": "…",
    "connecting": "Verbinden…",
    "select_chat_first": "Wähle zuerst einen Chat aus.",
    "menu_new_chat_title": "Neuer Chat",
    "menu_new_chat_body": "Wähle aus, was du tun möchtest:",
    "menu_start_new": "Neuen Chat starten",
    "menu_import_json": "Chat importieren (JSON)",
    "close": "Schließen",
    "ok": "OK",
    "cancel": "Abbrechen",
    "yes": "Ja",
    "no": "Nein",
    "save": "Speichern",
    "generic_error": "Fehler: {e}",
    "accept": "Annehmen",
    "decline": "Ablehnen",
    "handshake_request": "Pairing-Anfrage",
    "handshake_request_body": "Von: {alias}\nFingerabdruck: {fp}\n\nAnnehmen stellt eine E2E-Sitzung her.",
    "req_created_updated": "Erstellt {c} • Aktualisiert {u}",
    "copy": "Kopieren",
    "copied": "In die Zwischenablage kopiert",
    "cut_to_clipboard": "In die Zwischenablage ausgeschnitten",
    "pyperclip_not_installed": "pyperclip nicht installiert",
    "add": "Hinzufügen",
    "fullscreen": "Vollbild",
    "theme_default": "Standard",
    "theme_gruvbox": "Gruvbox Hell",
    "theme_gruvbox_dark": "Gruvbox Dunkel",
    "theme_dracula": "Dracula",
    "theme_nord": "Nord",
    "theme_solarized_light": "Solarized Hell",
    "theme_solarized_dark": "Solarized Dunkel",
    "theme_catppuccin_mocha": "Catppuccin Mocha",
    "theme_catppuccin_latte": "Catppuccin Latte",
    "theme_catppuccin_frappe": "Catppuccin Frappé",
    "theme_catppuccin_macchiato": "Catppuccin Macchiato",
    "theme_tokyo_night": "Tokyo Night",
    "theme_tokyo_night_storm": "Tokyo Night Storm",
    "theme_tokyo_night_light": "Tokyo Night Hell",
    "theme_one_dark": "One Dark",
    "theme_one_light": "One Light",
    "theme_monokai_pro": "Monokai Pro",
    "theme_github_dark": "GitHub Dunkel",
    "theme_github_light": "GitHub Hell",
    "theme_material_darker": "Material Darker",
    "theme_material_palenight": "Material Palenight",
    "theme_ayu_dark": "Ayu Dunkel",
    "theme_ayu_mirage": "Ayu Mirage",
    "theme_ayu_light": "Ayu Hell",
    "theme_rose_pine": "Rosé Pine",
    "theme_rose_pine_moon": "Rosé Pine Moon",
    "theme_rose_pine_dawn": "Rosé Pine Dawn",
    "theme_everforest_dark": "Everforest Dunkel",
    "theme_everforest_light": "Everforest Hell",
    "theme_kanagawa": "Kanagawa",
    "theme_kanagawa_light": "Kanagawa Hell",
    "theme_night_owl": "Night Owl",
    "theme_synthwave_84": "Synthwave '84",
    "theme_cyberpunk": "Cyberpunk",
    "theme_high_contrast": "Hoher Kontrast",
    "theme_paper": "Papier",
    "theme_sync_gtk": "Mit GTK-Thema synchronisieren",
    "theme_sync_qt": "Mit QT-Thema synchronisieren",
    "theme_sync_success": "Thema mit System synchronisiert",
    "theme_sync_failed": "Systemthema konnte nicht erkannt werden",
    "menu_reply": "Antworten",
    "menu_edit": "Bearbeiten",
    "menu_delete": "Löschen",
    "menu_info": "Info",
    "menu_open": "Öffnen",
    "menu_export": "Exportieren",
    "menu_delete_chat": "Chat löschen",
    "menu_retry": "Pairing erneut versuchen",
    "menu_delete_record": "Eintrag löschen",
    "menu_chat": "Chat",
    "menu_message": "Nachricht",
    "menu_outgoing_request": "Ausgehende Anfrage",
    "dlg_delete_message": "Nachricht löschen",
    "dlg_delete_message_body": "Diese Nachricht für beide Seiten löschen?",
    "dlg_message_info": "Nachrichteninfo",
    "dlg_delete_chat": "Chat löschen",
    "dlg_delete_chat_body": "Chat mit {peer} löschen (lokale Daten)?",
    "dlg_export_chat": "Chat exportieren…",
    "tab_users": "Nutzer",
    "status_online": "Online",
    "status_idle": "Inaktiv",
    "status_dnd": "Nicht stören",
    "status_invisible": "Unsichtbar",
    "status_offline": "Offline",
    "set_status": "Status setzen",
    "edit_profile": "Profil bearbeiten",
    "bio_placeholder": "Schreibe deine Bio…",
    "status_msg_placeholder": "Was geht dir durch den Kopf?",
    "visible_to_others": "Für andere sichtbar",
    "tab_privacy": "Datenschutz",
    "blocked_users": "Blockierte Nutzer",
    "block_user": "Nutzer blockieren",
    "unblock_user": "Entsperren",
    "privacy_settings": "Datenschutzeinstellungen",
    "search_users": "Nutzer suchen (Regex)…",
    "user_info": "Nutzerinfo",
    "bio": "Bio",
    "status": "Status",
    "search_placeholder": "Nutzer suchen (Regex)…",
    "bio_label": "Bio",
    "save_btn": "Speichern",
    "profile_saved": "Profil gespeichert!",
    "visibility_label": "Sichtbarkeit",
    "visibility_public": "Öffentlich",
    "visibility_private": "Privat",
    "blocked_users_label": "Blockierte Nutzer",
    "unblock_btn": "Entsperren",
    "status_label": "Status",
    "tab_network": "Netzwerk",
    "tab_plugins": "Plugins",
    "tab_bindings": "Tastenkürzel",
    "plugin_enabled": "{name} aktiviert",
    "plugin_disabled": "{name} deaktiviert",
    "plugin_list_refreshed": "Plugin-Liste aktualisiert",
    "plugin_folder_error": "Fehler: {e}",
    "plugin_settings_saved": "Einstellungen gespeichert",
    "network_status_header": "Netzwerkstatus",
    "net_mode_label": "Aktueller Modus: {mode}",
    "net_status_label": "Verbindungsstatus: {status}",
    "net_status_connected": "Verbunden",
    "net_status_disconnected": "Getrennt",
    "net_public_ip": "Öffentliche IP-Adresse:",
    "net_hidden": "Versteckt",
    "net_show_ip": "IP anzeigen",
    "net_fetching": "Abrufen...",
    "find_bar_status": "{current}/{total}",
    "find_bar_hint": "[Esc] Beenden • [↵] Weiter • [⇧↵] Zurück",
    "find_no_results": "Keine Ergebnisse gefunden",
    "find_invalid_regex": "Ungültiges Regex-Muster",
    "cmd_find_desc": "Nachrichten im aktuellen Chat suchen",
    "cmd_find_usage": "/find <muster>",


    "select_mode_help": "📋 Auswahlmodus: Klick=Auswählen • Mittelklick=Bereich • [C] Löschen • [Entf] Entf • [Esc] Beenden",
    "select_mode_exited": "Auswahlmodus beendet",
    "select_bar_hint": " | [Esc] Beenden • [Entf] Löschen • [C] Leeren • [Strg+A] Alle • [Mittel] Bereich",
    "select_count": "📋 {n} ausgewählt",
    "selection_cleared": "Auswahl gelöscht",
    "no_messages_selected": "Keine Nachrichten ausgewählt",
    "confirm_delete_messages": "{n} ausgewählte Nachricht(en) löschen?",
    "messages_deleted": "{n} Nachricht(en) gelöscht",
    "select_all_done": "Alle {n} Nachrichten ausgewählt",


    "py_editor_title": "Python Code-Editor",
    "py_vars_title": "Verfügbare Variablen",
    "py_user_info": "Benutzerinfo",
    "py_message_info": "Nachrichteninfo",
    "py_text_analysis": "Textanalyse",
    "py_datetime": "Datum/Zeit",
    "py_functions": "Funktionen",
    "py_examples": "Beispiele",
    "py_result_hint": "Ergebnis muss True/False sein",
    "py_btn_save": "Speichern",
    "py_btn_cancel": "Abbrechen",
    "py_open_editor": "Code-Editor öffnen",
    "py_code_label": "Python Code",

    "bindings_header": "Tastenkürzel",
    "bindings_global": "Global",
    "bindings_composer": "Nachrichteneingabe",
    "bindings_select_mode": "Auswahlmodus",
    "bindings_find_mode": "Suchmodus",
    "bindings_navigation": "Navigation",
    "bind_toggle_select": "Auswahlmodus umschalten",
    "bind_find_next": "Nächstes Ergebnis",
    "bind_find_prev": "Vorheriges Ergebnis",
    "bind_exit": "Beenden / Abbrechen",
    "bind_select_all": "Alle auswählen",
    "bind_delete": "Ausgewählte löschen",
    "bind_clear_selection": "Auswahl leeren",
    "bind_copy": "Kopieren",
    "bind_paste": "Einfügen",
    "bind_cut": "Ausschneiden",
    "bind_select_left": "Auswahl nach links erweitern",
    "bind_select_right": "Auswahl nach rechts erweitern",
    "bind_select_word_left": "Auswahl wortweise links erweitern",
    "bind_select_word_right": "Auswahl wortweise rechts erweitern",
    "bind_move_word_left": "Cursor wortweise links",
    "bind_move_word_right": "Cursor wortweise rechts",
    "bind_history_prev": "Vorherige Nachricht aus Verlauf",
    "bind_history_next": "Nächste Nachricht aus Verlauf",
    "bind_send": "Nachricht senden",
    "bind_newline": "Neue Zeile einfügen",
    "bind_scroll_up": "Nach oben scrollen",
    "bind_scroll_down": "Nach unten scrollen",
    "bind_scroll_page_up": "Seite hoch",
    "bind_scroll_page_down": "Seite runter",
    "bind_scroll_home": "Zum Anfang",
    "bind_scroll_end": "Zum Ende",
    "bind_press_key": "Tastenkombination drücken...",
    "bind_reset": "Zurücksetzen",
    "bind_reset_all": "Alle Tastenkürzel zurücksetzen",
    "bind_conflict": "Taste bereits verwendet von: {action}",
    "bind_saved": "Tastenkürzel gespeichert",
    "bind_reset_done": "Tastenkürzel auf Standard zurückgesetzt",

    "btn_logout": "Abmelden / Launcher",
    "tab_appearance": "Erscheinungsbild",
    "tab_audio": "Audio",
    "menu_create_group": "Gruppe erstellen",
    "menu_history": "Verlauf anzeigen",
    "menu_add_member": "Mitglied hinzufügen",
    "menu_seed": "Seeden",

    "audio_input_device": "Mikrofon",
    "audio_output_device": "Lautsprecher",
    "audio_default_device": "Standard (System)",
    "audio_mic_volume": "Mikrofonlautstärke (%)",
    "audio_speaker_volume": "Lautsprecherlautstärke (%)",
    "audio_apply": "Anwenden",
    "audio_saved": "Audioeinstellungen angewendet.",
    "audio_restart_test_hint": "Für Gerätewechsel bitte Test neu starten.",
    "audio_test_start": "Test starten (Mich selbst hören)",
    "audio_test_stop": "Test stoppen",
    "audio_devices_unavailable": "Audiogeräte konnten nicht abgerufen werden.",
    "audio_test_stop_call_first": "Bitte aktiven Anruf zuerst beenden.",

    "group_call_started": "Gruppenanruf gestartet",
    "group_call_joined": "{user} ist dem Anruf beigetreten",
    "group_call_left": "{user} hat den Anruf verlassen",
    "group_call_ring": "Eingehender Anruf von Gruppe {group}",
    "group_call_ringing": "Gruppenmitglieder werden angerufen...",
    "group_call_in_progress": "Im Gruppenanruf: {group}",
    "group_call_participants": "Teilnehmer ({n})",

    "tab_cloud": "Cloud",
    "tab_backup": "Sicherung",
    "cloud_header": "Cloud",
    "cloud_section_settings": "Einstellungen",
    "cloud_section_actions": "Synchronisieren",
    "cloud_section_status": "Status",
    "cloud_enabled_label": "Cloud für diesen Benutzer aktivieren",
    "cloud_snapshots_label": "Verschlüsseltes Chat-Backup veröffentlichen",
    "cloud_files_label": "Verschlüsselte Dateien veröffentlichen (falls unterstützt)",
    "cloud_mode_all": "Alle Chats",
    "cloud_mode_selected": "Ausgewählte Chats",
    "cloud_mode_toggle": "Umfang: {mode}",
    "cloud_chats_label": "Chats",
    "cloud_sync_up": "Lokal → Cloud (sicheres Backup)",
    "cloud_sync_down": "Cloud → Lokal (Backup + Neustart)",
    "cloud_status": "Cloud-Synchronisation",
    "cloud_last_publish": "Letzte Veröffentlichung",
    "cloud_last_fetch": "Letzter Abruf",

    "backup_header": "Sicherungen",
    "backup_section": "Sicherungen",
    "backup_create": "Jetzt Sicherung erstellen",
    "backup_restore": "Ausgewählte wiederherstellen (staged + Neustart)",
    "backup_delete": "Ausgewählte löschen",
    "backup_list_label": "Verfügbare Sicherungen",
    "backup_created": "Sicherung erstellt",
    "backup_deleted": "Sicherung gelöscht",
    "backup_encrypt_title": "Sicherung verschlüsseln",
    "backup_encrypt_body": "Möchten Sie die Sicherung mit einem Passwort schützen?\n\nKeine Verschlüsselung → Nein\nVerschlüsselt → Ja",
    "backup_passphrase_title": "Sicherungs-Passwort",
    "backup_passphrase_prompt": "Passwort für die Sicherung eingeben (mind. 4 Zeichen):",
    "backup_passphrase_short": "Passwort zu kurz (mind. 4 Zeichen)",
    "backup_read_err": "Sicherung konnte nicht gelesen werden",
    "backup_restore_staged": "Wiederherstellung vorbereitet; Neustart…",

    "cloud_sync_up_done": "In die Cloud hochgeladen",
    "cloud_sync_up_failed": "Cloud-Upload fehlgeschlagen",
    "cloud_fetching": "Von Cloud abrufen…",
    "cloud_no_nodes": "Keine Cloud-Nodes verbunden (Node-Daemon starten).",
    "cloud_not_seeded": "Kein Node hat dieses Backup (nicht geseeded).",
    "cloud_fetch_timeout": "Cloud-Abruf Zeitüberschreitung (kein Node antwortet).",
    "cloud_bad_node": "Cloud-Abruf fehlgeschlagen (fehlerhafte Node-Antwort).",
    "cloud_no_snapshot": "Kein Backup in der Cloud gefunden",
    "cloud_bad_snapshot": "Cloud-Backup ungültig",
    "cloud_restore_staged": "Wiederherstellung bereit; Neustart…",

    "seeding_disabled": "Seeding deaktiviert",
    "seed_file_missing": "Verschlüsselte Dateidaten nicht gefunden",
    "seed_file_done": "Seeding angekündigt",
    "seed_chat_toggled": "Chat-Auswahl geändert",
    "dlg_peer_alias": "Benutzer-Alias eingeben",
    "request_sent": "Anfrage gesendet: {alias}",
    "dlg_group_name": "Gruppenname",
    "dlg_group_name_ph": "Meine tolle Gruppe",
    "dlg_group_members": "Mitglieder hinzufügen (durch Komma getrennt)",
    "dlg_group_members_ph": "alice,bob,charlie",
    "dlg_group_member_add": "Mitglied-Alias hinzufügen (leer lassen zum Beenden)",
    "dlg_group_member_add_ph": "benutzername",
    "dlg_create_group_title": "Neue Gruppe erstellen",
    "dlg_add_members": "Mitglieder",

    "appearance_timezone": "Zeitzone",
    "appearance_timezone_desc": "Wähle wie Zeitstempel angezeigt werden (UTC für Datenschutz empfohlen)",
    "appearance_time_format": "Zeitformat",
    "appearance_time_format_desc": "12-Stunden oder 24-Stunden Format wählen",
    "appearance_saved": "Erscheinungsbild-Einstellungen gespeichert",

    "appearance_cat_time": "Zeitanzeige",
    "appearance_cat_messages": "Nachrichten",
    "appearance_cat_colors": "Benutzerfarben",
    "appearance_cat_rules": "Farbregeln",

    "appearance_button_style": "Schaltflächenstil",
    "appearance_button_style_desc": "Visueller Stil der Schaltflächen (Neustart erforderlich)",
    "btn_style_flat": "Standard (Flach)",
    "btn_style_default": "3D mit Schatten",

    "appearance_msg_spacing": "Nachrichtenabstand",
    "appearance_msg_spacing_desc": "Abstand zwischen nicht gruppierten Nachrichten (0-5 Zeilen)",
    "appearance_my_color": "Meine Namensfarbe",
    "appearance_my_color_desc": "Farbe Ihres Benutzernamens im Chat",
    "appearance_default_color": "Standard-Benutzerfarbe",
    "appearance_default_color_desc": "Standardfarbe für andere Benutzer",

    "appearance_rules_title": "Farbregeln",
    "appearance_rules_desc": "Passe Farben nach Benutzername, Nachrichteninhalt oder Berechtigung an",
    "appearance_add_rule": "+ Regel hinzufügen",
    "appearance_no_rules": "Keine Farbregeln definiert",
    "code_preview_more_lines": "... +{n} weitere Zeilen",
    "code_preview_no_code": "Kein Code",

    "rule_type_user": "Bestimmter Benutzer",
    "rule_type_regex_name": "Benutzername-Regex",
    "rule_type_user_contains": "Benutzername enthält",
    "rule_type_permission": "Hat Berechtigung",
    "rule_type_is_self": "Ich selbst",
    "rule_type_regex_msg": "Nachricht-Regex",
    "rule_type_msg_contains": "Nachricht enthält",
    "rule_type_is_reply": "Ist Antwort",
    "rule_type_is_edited": "Ist bearbeitet",
    "rule_type_has_file": "Hat Anhang",
    "rule_type_has_image": "Hat Bild",
    "rule_type_time_range": "Zeitbereich",
    "rule_type_date_regex": "Datum/Zeit-Regex",
    "rule_type_chat_dm": "Ist Direktnachricht",
    "rule_type_chat_group": "Ist Gruppe",
    "rule_type_custom_python": "Benutzerdefinierter Python-Code",

    "rule_perm_kick": "Kann kicken",
    "rule_perm_ban": "Kann sperren",
    "rule_perm_admin": "Admin/Gründer",
    "rule_perm_moderator": "Moderator",
    "rule_perm_online": "Online",
    "rule_perm_in_call": "Im Anruf",

    "dlg_pattern_time_range": "Format: HH:MM-HH:MM (z.B. 09:00-17:00)",
    "dlg_pattern_date_regex": "Regex: YYYY-MM-DD HH:MM:SS Wochentag",
    "dlg_pattern_custom_python": "Python-Ausdruck (gibt True/False zurück)",

    "dlg_edit_rule_title": "Farbregel bearbeiten",
    "dlg_rule_type": "Regeltyp",
    "dlg_rule_pattern": "Muster / Wert",
    "dlg_rule_pattern_user": "Benutzername",
    "dlg_rule_pattern_regex_name": "Regex für Benutzername",
    "dlg_rule_pattern_regex_msg": "Regex für Nachrichteninhalt",
    "dlg_rule_color": "Primärfarbe",
    "dlg_rule_color2": "Sekundärfarbe (für Aufteilung)",
    "dlg_rule_split": "Farben aufteilen",
    "dlg_rule_priority": "Priorität (höher = wird zuerst geprüft)",
    "dlg_use_previous_color": "Vorherige Regelfarbe verwenden",
    "dlg_rule_enabled": "Aktiviert",

    "dlg_no_members_yet": "Noch keine Mitglieder hinzugefügt",
    "dlg_create_group_btn": "Gruppe erstellen",
    "dlg_group_name_required": "Gruppenname erforderlich",
    "group_build_title": "Gruppe",
    "group_build_continue": "Weiter",
    "group_build_create": "Erstellen",
    "group_build_cancel": "Abbrechen",
    "group_info_title": "Gruppeninfo",
    "group_info_body": "Name: {name}\nID: {gid}\n\nMitglieder:\n{members}",
    "group_members_sub": "{n} Mitglieder",
    "group_invite_title": "Gruppeneinladung",
    "group_invite_body": "Gruppe: {name}\nVon: {from_alias}\n\nAnnehmen um beizutreten.",
    "dlg_add_member": "Mitglied-Alias zum Hinzufügen",
    "dlg_import_chat": "Chat-JSON-Pfad",
    "block_placeholder": "Alias oder Fingerabdruck",
    "download_done_status": "Heruntergeladen: {path}",
    "update_available": "Update verfügbar",
    "update_available_body": "Eine neue Version von Antch ist verfügbar!\n\nAktuell: {current}\nNeueste: {latest}\n\nFühren Sie diesen Befehl aus, um zu aktualisieren:\n\npipx upgrade antch",
    "btn_update": "⬆"
  },
  "es": {
    "app_title": "ANTCH",
    "btn_new": "+ Nuevo",
    "btn_new_short": "+",
    "btn_collapse": "<<",
    "btn_expand": ">>",
    "tab_chats": "Chats",
    "tab_requests": "Solicitudes",
    "incoming": "Entrantes",
    "incoming_with_count": "Entrantes ({n})",
    "outgoing_with_count": "Salientes ({n})",
    "outgoing": "Salientes",
    "settings_button": "⚙ Ajustes",
    "settings_title": "Ajustes",
    "tab_profile": "Perfil",
    "tab_language": "Idioma",
    "tab_theme": "Tema",
    "profile_alias": "Alias: {v}",
    "profile_id": "ID: {v}",
    "profile_created": "Creado: {v}",
    "lang_tr": "Turco",
    "lang_en": "Inglés",
    "lang_de": "Alemán",
    "lang_es": "Español",
    "lang_fr": "Francés",
    "hint_esc": "Esc",
    "replying_to": "↩ Respondiendo a {alias}: {snippet}",
    "read_more": "Leer más…",
    "show_less": "Mostrar menos",
    "edited_tag": "editado",
    "pending_tag": "…",
    "connecting": "Conectando…",
    "select_chat_first": "Selecciona primero un chat.",
    "menu_new_chat_title": "Nuevo chat",
    "menu_new_chat_body": "Elige lo que quieres hacer:",
    "menu_start_new": "Iniciar nuevo chat",
    "menu_import_json": "Importar chat (JSON)",
    "close": "Cerrar",
    "ok": "OK",
    "cancel": "Cancelar",
    "yes": "Sí",
    "no": "No",
    "save": "Guardar",
    "generic_error": "Error: {e}",
    "accept": "Aceptar",
    "decline": "Rechazar",
    "handshake_request": "Solicitud de emparejamiento",
    "handshake_request_body": "De: {alias}\nHuella digital: {fp}\n\nAceptar establecerá una sesión E2E.",
    "req_created_updated": "Creado {c} • Actualizado {u}",
    "copy": "Copiar",
    "copied": "Copiado al portapapeles",
    "cut_to_clipboard": "Cortado al portapapeles",
    "pyperclip_not_installed": "pyperclip no instalado",
    "add": "Añadir",
    "fullscreen": "Pantalla completa",
    "theme_default": "Predeterminado",
    "theme_gruvbox": "Gruvbox Claro",
    "theme_gruvbox_dark": "Gruvbox Oscuro",
    "theme_dracula": "Dracula",
    "theme_nord": "Nord",
    "theme_solarized_light": "Solarized Claro",
    "theme_solarized_dark": "Solarized Oscuro",
    "theme_catppuccin_mocha": "Catppuccin Mocha",
    "theme_catppuccin_latte": "Catppuccin Latte",
    "theme_catppuccin_frappe": "Catppuccin Frappé",
    "theme_catppuccin_macchiato": "Catppuccin Macchiato",
    "theme_tokyo_night": "Tokyo Night",
    "theme_tokyo_night_storm": "Tokyo Night Storm",
    "theme_tokyo_night_light": "Tokyo Night Claro",
    "theme_one_dark": "One Dark",
    "theme_one_light": "One Light",
    "theme_monokai_pro": "Monokai Pro",
    "theme_github_dark": "GitHub Oscuro",
    "theme_github_light": "GitHub Claro",
    "theme_material_darker": "Material Darker",
    "theme_material_palenight": "Material Palenight",
    "theme_ayu_dark": "Ayu Oscuro",
    "theme_ayu_mirage": "Ayu Mirage",
    "theme_ayu_light": "Ayu Claro",
    "theme_rose_pine": "Rosé Pine",
    "theme_rose_pine_moon": "Rosé Pine Moon",
    "theme_rose_pine_dawn": "Rosé Pine Dawn",
    "theme_everforest_dark": "Everforest Oscuro",
    "theme_everforest_light": "Everforest Claro",
    "theme_kanagawa": "Kanagawa",
    "theme_kanagawa_light": "Kanagawa Claro",
    "theme_night_owl": "Night Owl",
    "theme_synthwave_84": "Synthwave '84",
    "theme_cyberpunk": "Cyberpunk",
    "theme_high_contrast": "Alto Contraste",
    "theme_paper": "Papel",
    "theme_sync_gtk": "Sincronizar con tema GTK",
    "theme_sync_qt": "Sincronizar con tema QT",
    "theme_sync_success": "Tema sincronizado con el sistema",
    "theme_sync_failed": "No se pudo detectar el tema del sistema",
    "menu_reply": "Responder",
    "menu_edit": "Editar",
    "menu_delete": "Eliminar",
    "menu_info": "Info",
    "menu_open": "Abrir",
    "menu_export": "Exportar",
    "menu_delete_chat": "Eliminar chat",
    "menu_retry": "Reintentar emparejamiento",
    "menu_delete_record": "Eliminar registro",
    "menu_chat": "Chat",
    "menu_message": "Mensaje",
    "menu_outgoing_request": "Solicitud saliente",
    "dlg_delete_message": "Eliminar mensaje",
    "dlg_delete_message_body": "¿Eliminar este mensaje para ambos?",
    "dlg_message_info": "Info del mensaje",
    "dlg_delete_chat": "Eliminar chat",
    "dlg_delete_chat_body": "¿Eliminar chat con {peer} (datos locales)?",
    "dlg_export_chat": "Exportar chat…",
    "tab_users": "Usuarios",
    "status_online": "En línea",
    "status_idle": "Inactivo",
    "status_dnd": "No molestar",
    "status_invisible": "Invisible",
    "status_offline": "Desconectado",
    "set_status": "Establecer estado",
    "edit_profile": "Editar perfil",
    "bio_placeholder": "Escribe tu biografía…",
    "status_msg_placeholder": "¿Qué tienes en mente?",
    "visible_to_others": "Visible para otros",
    "tab_privacy": "Privacidad",
    "blocked_users": "Usuarios bloqueados",
    "block_user": "Bloquear usuario",
    "unblock_user": "Desbloquear",
    "privacy_settings": "Ajustes de privacidad",
    "search_users": "Buscar usuarios (Regex)…",
    "user_info": "Info del usuario",
    "bio": "Bio",
    "status": "Estado",
    "search_placeholder": "Buscar usuarios (Regex)…",
    "bio_label": "Bio",
    "save_btn": "Guardar",
    "profile_saved": "¡Perfil guardado!",
    "visibility_label": "Visibilidad",
    "visibility_public": "Público",
    "visibility_private": "Privado",
    "blocked_users_label": "Usuarios bloqueados",
    "unblock_btn": "Desbloquear",
    "status_label": "Estado",
    "tab_network": "Red",
    "tab_plugins": "Plugins",
    "tab_bindings": "Atajos",
    "plugin_enabled": "{name} activado",
    "plugin_disabled": "{name} desactivado",
    "plugin_list_refreshed": "Lista de plugins actualizada",
    "plugin_folder_error": "Error: {e}",
    "plugin_settings_saved": "Ajustes guardados",
    "network_status_header": "Estado de la red",
    "net_mode_label": "Modo actual: {mode}",
    "net_status_label": "Estado de conexión: {status}",
    "net_status_connected": "Conectado",
    "net_status_disconnected": "Desconectado",
    "net_public_ip": "Dirección IP pública:",
    "net_hidden": "Oculto",
    "net_show_ip": "Mostrar IP",
    "net_fetching": "Obteniendo...",
    "find_bar_status": "{current}/{total}",
    "find_bar_hint": "[Esc] Salir • [↵] Siguiente • [⇧↵] Anterior",
    "find_no_results": "No se encontraron resultados",
    "find_invalid_regex": "Patrón regex inválido",
    "cmd_find_desc": "Buscar mensajes en el chat actual",
    "cmd_find_usage": "/find <patrón>",


    "select_mode_help": "📋 Modo Selección: Clic=Seleccionar • Clic Medio=Rango • [C] Limpiar • [Supr] Eliminar • [Esc] Salir",
    "select_mode_exited": "Salió del modo selección",
    "select_bar_hint": " | [Esc] Salir • [Supr] Eliminar • [C] Limpiar • [Ctrl+A] Todo • [Medio] Rango",
    "select_count": "📋 {n} seleccionados",
    "selection_cleared": "Selección limpiada",
    "no_messages_selected": "No hay mensajes seleccionados",
    "confirm_delete_messages": "¿Eliminar {n} mensaje(s) seleccionado(s)?",
    "messages_deleted": "{n} mensaje(s) eliminado(s)",
    "select_all_done": "Todos los {n} mensajes seleccionados",


    "py_editor_title": "Editor de Código Python",
    "py_vars_title": "Variables Disponibles",
    "py_user_info": "Info de Usuario",
    "py_message_info": "Info de Mensaje",
    "py_text_analysis": "Análisis de Texto",
    "py_datetime": "Fecha/Hora",
    "py_functions": "Funciones",
    "py_examples": "Ejemplos",
    "py_result_hint": "El resultado debe ser True/False",
    "py_btn_save": "Guardar",
    "py_btn_cancel": "Cancelar",
    "py_open_editor": "Abrir Editor de Código",
    "py_code_label": "Código Python",

    "bindings_header": "Atajos de teclado",
    "bindings_global": "Global",
    "bindings_composer": "Entrada de mensaje",
    "bindings_select_mode": "Modo selección",
    "bindings_find_mode": "Modo búsqueda",
    "bindings_navigation": "Navegación",
    "bind_toggle_select": "Alternar modo selección",
    "bind_find_next": "Buscar siguiente",
    "bind_find_prev": "Buscar anterior",
    "bind_exit": "Salir / Cancelar",
    "bind_select_all": "Seleccionar todo",
    "bind_delete": "Eliminar seleccionados",
    "bind_clear_selection": "Limpiar selección",
    "bind_copy": "Copiar",
    "bind_paste": "Pegar",
    "bind_cut": "Cortar",
    "bind_select_left": "Extender selección izquierda",
    "bind_select_right": "Extender selección derecha",
    "bind_select_word_left": "Extender selección palabra izquierda",
    "bind_select_word_right": "Extender selección palabra derecha",
    "bind_move_word_left": "Mover cursor palabra izquierda",
    "bind_move_word_right": "Mover cursor palabra derecha",
    "bind_history_prev": "Mensaje anterior del historial",
    "bind_history_next": "Mensaje siguiente del historial",
    "bind_send": "Enviar mensaje",
    "bind_newline": "Insertar nueva línea",
    "bind_scroll_up": "Desplazar arriba",
    "bind_scroll_down": "Desplazar abajo",
    "bind_scroll_page_up": "Página arriba",
    "bind_scroll_page_down": "Página abajo",
    "bind_scroll_home": "Ir al inicio",
    "bind_scroll_end": "Ir al final",
    "bind_press_key": "Presiona una combinación...",
    "bind_reset": "Restablecer",
    "bind_reset_all": "Restablecer todos los atajos",
    "bind_conflict": "Tecla ya usada por: {action}",
    "bind_saved": "Atajo guardado",
    "bind_reset_done": "Atajos restablecidos",

    "btn_logout": "Salir / Launcher",
    "tab_appearance": "Apariencia",
    "tab_audio": "Audio",
    "menu_create_group": "Crear grupo",
    "menu_history": "Ver historial",
    "menu_add_member": "Añadir miembro",
    "menu_seed": "Seedear",

    "audio_input_device": "Micrófono",
    "audio_output_device": "Altavoz",
    "audio_default_device": "Predeterminado (Sistema)",
    "audio_mic_volume": "Volumen del Micrófono (%)",
    "audio_speaker_volume": "Volumen del Altavoz (%)",
    "audio_apply": "Aplicar",
    "audio_saved": "Ajustes de audio aplicados.",
    "audio_restart_test_hint": "Reinicia la prueba para cambiar el dispositivo.",
    "audio_test_start": "Iniciar prueba (Escucharme)",
    "audio_test_stop": "Detener prueba",
    "audio_devices_unavailable": "No se pudieron obtener los dispositivos de audio.",
    "audio_test_stop_call_first": "Primero cierra la llamada activa.",

    "group_call_started": "Llamada grupal iniciada",
    "group_call_joined": "{user} se unió a la llamada",
    "group_call_left": "{user} dejó la llamada",
    "group_call_ring": "Llamada entrante del grupo {group}",
    "group_call_ringing": "Llamando a miembros del grupo...",
    "group_call_in_progress": "En llamada grupal: {group}",
    "group_call_participants": "Participantes ({n})",

    "tab_cloud": "Nube",
    "tab_backup": "Copia de Seguridad",
    "cloud_header": "Nube",
    "cloud_section_settings": "Ajustes",
    "cloud_section_actions": "Sincronizar",
    "cloud_section_status": "Estado",
    "cloud_enabled_label": "Activar Nube para este usuario",
    "cloud_snapshots_label": "Publicar respaldo cifrado de chats",
    "cloud_files_label": "Publicar archivos cifrados (si es compatible)",
    "cloud_mode_all": "Todos los chats",
    "cloud_mode_selected": "Chats seleccionados",
    "cloud_mode_toggle": "Alcance: {mode}",
    "cloud_chats_label": "Chats",
    "cloud_sync_up": "Local → Nube (respaldo seguro)",
    "cloud_sync_down": "Nube → Local (respaldo + reinicio)",
    "cloud_status": "Sincronización con la Nube",
    "cloud_last_publish": "Última publicación",
    "cloud_last_fetch": "Última obtención",

    "backup_header": "Copias de Seguridad",
    "backup_section": "Copias de Seguridad",
    "backup_create": "Crear copia de seguridad ahora",
    "backup_restore": "Restaurar seleccionada (staged + reiniciar)",
    "backup_delete": "Eliminar seleccionada",
    "backup_list_label": "Copias de seguridad disponibles",
    "backup_created": "Copia de seguridad creada",
    "backup_deleted": "Copia de seguridad eliminada",
    "backup_encrypt_title": "Cifrar Copia de Seguridad",
    "backup_encrypt_body": "¿Quiere proteger la copia de seguridad con una contraseña?\n\nSin cifrado → No\nCifrada → Sí",
    "backup_passphrase_title": "Contraseña de Copia de Seguridad",
    "backup_passphrase_prompt": "Ingrese la contraseña para la copia de seguridad (mín. 4 caracteres):",
    "backup_passphrase_short": "Contraseña muy corta (mín. 4 caracteres)",
    "backup_read_err": "No se pudo leer la copia de seguridad",
    "backup_restore_staged": "Restauración preparada; reiniciando…",

    "cloud_sync_up_done": "Subido a la nube",
    "cloud_sync_up_failed": "Error al subir a la nube",
    "cloud_fetching": "Obteniendo de la nube…",
    "cloud_no_nodes": "No hay nodos de nube conectados (inicia el daemon del nodo).",
    "cloud_not_seeded": "Ningún nodo tiene este respaldo (no seedeado).",
    "cloud_fetch_timeout": "Tiempo de espera agotado al obtener de la nube (ningún nodo responde).",
    "cloud_bad_node": "Error al obtener de la nube (respuesta de nodo errónea).",
    "cloud_no_snapshot": "No se encontró respaldo en la nube",
    "cloud_bad_snapshot": "Respaldo de nube inválido",
    "cloud_restore_staged": "Restauración lista; reiniciando…",

    "seeding_disabled": "Seeding desactivado",
    "seed_file_missing": "Datos cifrados del archivo no encontrados",
    "seed_file_done": "Seeding anunciado",
    "seed_chat_toggled": "Selección de chat cambiada",
    "dlg_peer_alias": "Ingresa el alias del usuario",
    "request_sent": "Solicitud enviada: {alias}",
    "dlg_group_name": "Nombre del Grupo",
    "dlg_group_name_ph": "Mi grupo genial",
    "dlg_group_members": "Añadir miembros (separados por coma)",
    "dlg_group_members_ph": "alice,bob,charlie",
    "dlg_group_member_add": "Añadir alias de miembro (dejar vacío para terminar)",
    "dlg_group_member_add_ph": "nombre_usuario",
    "dlg_create_group_title": "Crear Nuevo Grupo",
    "dlg_add_members": "Miembros",

    "appearance_timezone": "Zona Horaria",
    "appearance_timezone_desc": "Elige cómo mostrar las marcas de tiempo (UTC recomendado para privacidad)",
    "appearance_time_format": "Formato de Hora",
    "appearance_time_format_desc": "Elegir formato de 12 o 24 horas",
    "appearance_saved": "Ajustes de apariencia guardados",

    "appearance_cat_time": "Visualización de Hora",
    "appearance_cat_messages": "Mensajes",
    "appearance_cat_colors": "Colores de Usuario",
    "appearance_cat_rules": "Reglas de Color",

    "appearance_button_style": "Estilo de Botón",
    "appearance_button_style_desc": "Estilo visual de los botones (requiere reinicio)",
    "btn_style_flat": "Predeterminado (Plano)",
    "btn_style_default": "3D con Sombra",

    "appearance_msg_spacing": "Espaciado de Mensajes",
    "appearance_msg_spacing_desc": "Espacio entre mensajes no agrupados (0-5 líneas)",
    "appearance_my_color": "Color de Mi Nombre",
    "appearance_my_color_desc": "Color de tu nombre de usuario en el chat",
    "appearance_default_color": "Color de Usuario Predeterminado",
    "appearance_default_color_desc": "Color predeterminado para otros usuarios",

    "appearance_rules_title": "Reglas de Color",
    "appearance_rules_desc": "Personaliza colores por nombre de usuario, contenido del mensaje o permiso",
    "appearance_add_rule": "+ Añadir Regla",
    "appearance_no_rules": "No hay reglas de color definidas",
    "code_preview_more_lines": "... +{n} líneas más",
    "code_preview_no_code": "Sin código",

    "rule_type_user": "Usuario Específico",
    "rule_type_regex_name": "Regex de Nombre de Usuario",
    "rule_type_user_contains": "Nombre de Usuario Contiene",
    "rule_type_permission": "Tiene Permiso",
    "rule_type_is_self": "Soy Yo",
    "rule_type_regex_msg": "Regex de Mensaje",
    "rule_type_msg_contains": "Mensaje Contiene",
    "rule_type_is_reply": "Es Respuesta",
    "rule_type_is_edited": "Está Editado",
    "rule_type_has_file": "Tiene Adjunto",
    "rule_type_has_image": "Tiene Imagen",
    "rule_type_time_range": "Rango de Tiempo",
    "rule_type_date_regex": "Regex de Fecha/Hora",
    "rule_type_chat_dm": "Es Mensaje Directo",
    "rule_type_chat_group": "Es Grupo",
    "rule_type_custom_python": "Código Python Personalizado",

    "rule_perm_kick": "Puede Expulsar",
    "rule_perm_ban": "Puede Banear",
    "rule_perm_admin": "Admin/Fundador",
    "rule_perm_moderator": "Moderador",
    "rule_perm_online": "En Línea",
    "rule_perm_in_call": "En Llamada",

    "dlg_pattern_time_range": "Formato: HH:MM-HH:MM (ej: 09:00-17:00)",
    "dlg_pattern_date_regex": "Regex: YYYY-MM-DD HH:MM:SS NombreDía",
    "dlg_pattern_custom_python": "Expresión Python (devuelve True/False)",

    "dlg_edit_rule_title": "Editar Regla de Color",
    "dlg_rule_type": "Tipo de Regla",
    "dlg_rule_pattern": "Patrón / Valor",
    "dlg_rule_pattern_user": "Nombre de usuario",
    "dlg_rule_pattern_regex_name": "Regex para nombre de usuario",
    "dlg_rule_pattern_regex_msg": "Regex para contenido del mensaje",
    "dlg_rule_color": "Color Primario",
    "dlg_rule_color2": "Color Secundario (para división)",
    "dlg_rule_split": "Dividir Colores",
    "dlg_rule_priority": "Prioridad (mayor = se verifica primero)",
    "dlg_use_previous_color": "Usar Color de Regla Anterior",
    "dlg_rule_enabled": "Activado",

    "dlg_no_members_yet": "Aún no hay miembros añadidos",
    "dlg_create_group_btn": "Crear Grupo",
    "dlg_group_name_required": "Se requiere nombre de grupo",
    "group_build_title": "Grupo",
    "group_build_continue": "Continuar",
    "group_build_create": "Crear",
    "group_build_cancel": "Cancelar",
    "group_info_title": "Info del Grupo",
    "group_info_body": "Nombre: {name}\nID: {gid}\n\nMiembros:\n{members}",
    "group_members_sub": "{n} miembros",
    "group_invite_title": "Invitación a Grupo",
    "group_invite_body": "Grupo: {name}\nDe: {from_alias}\n\nAceptar para unirse.",
    "dlg_add_member": "Alias de miembro a añadir",
    "dlg_import_chat": "Ruta del JSON del chat",
    "block_placeholder": "Alias o huella digital",
    "download_done_status": "Descargado: {path}",
    "update_available": "Actualización disponible",
    "update_available_body": "¡Una nueva versión de Antch está disponible!\n\nActual: {current}\nÚltima: {latest}\n\nEjecuta este comando para actualizar:\n\npipx upgrade antch",
    "btn_update": "⬆"
  },
  "fr": {
    "app_title": "ANTCH",
    "btn_new": "+ Nouveau",
    "btn_new_short": "+",
    "btn_collapse": "<<",
    "btn_expand": ">>",
    "tab_chats": "Chats",
    "tab_requests": "Demandes",
    "incoming": "Entrants",
    "incoming_with_count": "Entrants ({n})",
    "outgoing_with_count": "Sortants ({n})",
    "outgoing": "Sortants",
    "settings_button": "⚙ Paramètres",
    "settings_title": "Paramètres",
    "tab_profile": "Profil",
    "tab_language": "Langue",
    "tab_theme": "Thème",
    "profile_alias": "Alias : {v}",
    "profile_id": "ID : {v}",
    "profile_created": "Créé : {v}",
    "lang_tr": "Turc",
    "lang_en": "Anglais",
    "lang_de": "Allemand",
    "lang_es": "Espagnol",
    "lang_fr": "Français",
    "hint_esc": "Esc",
    "replying_to": "↩ Réponse à {alias} : {snippet}",
    "read_more": "Lire la suite…",
    "show_less": "Afficher moins",
    "edited_tag": "modifié",
    "pending_tag": "…",
    "connecting": "Connexion…",
    "select_chat_first": "Sélectionne d’abord un chat.",
    "menu_new_chat_title": "Nouveau chat",
    "menu_new_chat_body": "Choisis ce que tu veux faire :",
    "menu_start_new": "Démarrer un nouveau chat",
    "menu_import_json": "Importer un chat (JSON)",
    "close": "Fermer",
    "ok": "OK",
    "cancel": "Annuler",
    "yes": "Oui",
    "no": "Non",
    "save": "Enregistrer",
    "generic_error": "Erreur: {e}",
    "accept": "Accepter",
    "decline": "Refuser",
    "handshake_request": "Demande d’appairage",
    "handshake_request_body": "De : {alias}\nEmpreinte : {fp}\n\nAccepter établira une session E2E.",
    "req_created_updated": "Créé {c} • Mis à jour {u}",
    "copy": "Copier",
    "copied": "Copié dans le presse-papiers",
    "cut_to_clipboard": "Coupé dans le presse-papiers",
    "pyperclip_not_installed": "pyperclip non installé",
    "add": "Ajouter",
    "fullscreen": "Plein écran",
    "theme_default": "Par défaut",
    "theme_gruvbox": "Gruvbox Clair",
    "theme_gruvbox_dark": "Gruvbox Sombre",
    "theme_dracula": "Dracula",
    "theme_nord": "Nord",
    "theme_solarized_light": "Solarized Clair",
    "theme_solarized_dark": "Solarized Sombre",
    "theme_catppuccin_mocha": "Catppuccin Mocha",
    "theme_catppuccin_latte": "Catppuccin Latte",
    "theme_catppuccin_frappe": "Catppuccin Frappé",
    "theme_catppuccin_macchiato": "Catppuccin Macchiato",
    "theme_tokyo_night": "Tokyo Night",
    "theme_tokyo_night_storm": "Tokyo Night Storm",
    "theme_tokyo_night_light": "Tokyo Night Clair",
    "theme_one_dark": "One Dark",
    "theme_one_light": "One Light",
    "theme_monokai_pro": "Monokai Pro",
    "theme_github_dark": "GitHub Sombre",
    "theme_github_light": "GitHub Clair",
    "theme_material_darker": "Material Darker",
    "theme_material_palenight": "Material Palenight",
    "theme_ayu_dark": "Ayu Sombre",
    "theme_ayu_mirage": "Ayu Mirage",
    "theme_ayu_light": "Ayu Clair",
    "theme_rose_pine": "Rosé Pine",
    "theme_rose_pine_moon": "Rosé Pine Moon",
    "theme_rose_pine_dawn": "Rosé Pine Dawn",
    "theme_everforest_dark": "Everforest Sombre",
    "theme_everforest_light": "Everforest Clair",
    "theme_kanagawa": "Kanagawa",
    "theme_kanagawa_light": "Kanagawa Clair",
    "theme_night_owl": "Night Owl",
    "theme_synthwave_84": "Synthwave '84",
    "theme_cyberpunk": "Cyberpunk",
    "theme_high_contrast": "Contraste Élevé",
    "theme_paper": "Papier",
    "theme_sync_gtk": "Synchroniser avec le thème GTK",
    "theme_sync_qt": "Synchroniser avec le thème QT",
    "theme_sync_success": "Thème synchronisé avec le système",
    "theme_sync_failed": "Impossible de détecter le thème système",
    "menu_reply": "Répondre",
    "menu_edit": "Modifier",
    "menu_delete": "Supprimer",
    "menu_info": "Infos",
    "menu_open": "Ouvrir",
    "menu_export": "Exporter",
    "menu_delete_chat": "Supprimer le chat",
    "menu_retry": "Réessayer l’appairage",
    "menu_delete_record": "Supprimer l’enregistrement",
    "menu_chat": "Chat",
    "menu_message": "Message",
    "menu_outgoing_request": "Demande sortante",
    "dlg_delete_message": "Supprimer le message",
    "dlg_delete_message_body": "Supprimer ce message des deux côtés ?",
    "dlg_message_info": "Infos du message",
    "dlg_delete_chat": "Supprimer le chat",
    "dlg_delete_chat_body": "Supprimer le chat avec {peer} (données locales) ?",
    "dlg_export_chat": "Exporter le chat…",
    "tab_users": "Utilisateurs",
    "status_online": "En ligne",
    "status_idle": "Inactif",
    "status_dnd": "Ne pas déranger",
    "status_invisible": "Invisible",
    "status_offline": "Hors ligne",
    "set_status": "Définir le statut",
    "edit_profile": "Modifier le profil",
    "bio_placeholder": "Écris ta bio…",
    "status_msg_placeholder": "À quoi penses-tu ?",
    "visible_to_others": "Visible pour les autres",
    "tab_privacy": "Confidentialité",
    "blocked_users": "Utilisateurs bloqués",
    "block_user": "Bloquer un utilisateur",
    "unblock_user": "Débloquer",
    "privacy_settings": "Paramètres de confidentialité",
    "search_users": "Rechercher des utilisateurs (Regex)…",
    "user_info": "Infos utilisateur",
    "bio": "Bio",
    "status": "Statut",
    "search_placeholder": "Rechercher des utilisateurs (Regex)…",
    "bio_label": "Bio",
    "save_btn": "Enregistrer",
    "profile_saved": "Profil enregistré !",
    "visibility_label": "Visibilité",
    "visibility_public": "Public",
    "visibility_private": "Privé",
    "blocked_users_label": "Utilisateurs bloqués",
    "unblock_btn": "Débloquer",
    "status_label": "Statut",
    "tab_network": "Réseau",
    "tab_plugins": "Extensions",
    "tab_bindings": "Raccourcis",
    "plugin_enabled": "{name} activé",
    "plugin_disabled": "{name} désactivé",
    "plugin_list_refreshed": "Liste des extensions actualisée",
    "plugin_folder_error": "Erreur: {e}",
    "plugin_settings_saved": "Paramètres enregistrés",
    "network_status_header": "État du réseau",
    "net_mode_label": "Mode actuel : {mode}",
    "net_status_label": "État de la connexion : {status}",
    "net_status_connected": "Connecté",
    "net_status_disconnected": "Déconnecté",
    "net_public_ip": "Adresse IP publique :",
    "net_hidden": "Masqué",
    "net_show_ip": "Afficher IP",
    "net_fetching": "Récupération...",
    "find_bar_status": "{current}/{total}",
    "find_bar_hint": "[Esc] Quitter • [↵] Suivant • [⇧↵] Précédent",
    "find_no_results": "Aucun résultat trouvé",
    "find_invalid_regex": "Motif regex invalide",
    "cmd_find_desc": "Rechercher des messages dans le chat actuel",
    "cmd_find_usage": "/find <motif>",


    "select_mode_help": "📋 Mode Sélection: Clic=Sélectionner • Clic Milieu=Plage • [C] Effacer • [Suppr] Supprimer • [Esc] Quitter",
    "select_mode_exited": "Mode sélection quitté",
    "select_bar_hint": " | [Esc] Quitter • [Suppr] Supprimer • [C] Effacer • [Ctrl+A] Tout • [Milieu] Plage",
    "select_count": "📋 {n} sélectionné(s)",
    "selection_cleared": "Sélection effacée",
    "no_messages_selected": "Aucun message sélectionné",
    "confirm_delete_messages": "Supprimer {n} message(s) sélectionné(s)?",
    "messages_deleted": "{n} message(s) supprimé(s)",
    "select_all_done": "Tous les {n} messages sélectionnés",


    "py_editor_title": "Éditeur de Code Python",
    "py_vars_title": "Variables Disponibles",
    "py_user_info": "Info Utilisateur",
    "py_message_info": "Info Message",
    "py_text_analysis": "Analyse de Texte",
    "py_datetime": "Date/Heure",
    "py_functions": "Fonctions",
    "py_examples": "Exemples",
    "py_result_hint": "Le résultat doit être True/False",
    "py_btn_save": "Enregistrer",
    "py_btn_cancel": "Annuler",
    "py_open_editor": "Ouvrir l'Éditeur",
    "py_code_label": "Code Python",

    "bindings_header": "Raccourcis clavier",
    "bindings_global": "Global",
    "bindings_composer": "Saisie de message",
    "bindings_select_mode": "Mode sélection",
    "bindings_find_mode": "Mode recherche",
    "bindings_navigation": "Navigation",
    "bind_toggle_select": "Basculer le mode sélection",
    "bind_find_next": "Résultat suivant",
    "bind_find_prev": "Résultat précédent",
    "bind_exit": "Quitter / Annuler",
    "bind_select_all": "Tout sélectionner",
    "bind_delete": "Supprimer la sélection",
    "bind_clear_selection": "Effacer la sélection",
    "bind_copy": "Copier",
    "bind_paste": "Coller",
    "bind_cut": "Couper",
    "bind_select_left": "Étendre la sélection à gauche",
    "bind_select_right": "Étendre la sélection à droite",
    "bind_select_word_left": "Étendre la sélection mot gauche",
    "bind_select_word_right": "Étendre la sélection mot droit",
    "bind_move_word_left": "Déplacer curseur mot gauche",
    "bind_move_word_right": "Déplacer curseur mot droit",
    "bind_history_prev": "Message précédent de l'historique",
    "bind_history_next": "Message suivant de l'historique",
    "bind_send": "Envoyer le message",
    "bind_newline": "Insérer nouvelle ligne",
    "bind_scroll_up": "Défiler vers le haut",
    "bind_scroll_down": "Défiler vers le bas",
    "bind_scroll_page_up": "Page précédente",
    "bind_scroll_page_down": "Page suivante",
    "bind_scroll_home": "Aller au début",
    "bind_scroll_end": "Aller à la fin",
    "bind_press_key": "Appuyez sur une combinaison...",
    "bind_reset": "Réinitialiser",
    "bind_reset_all": "Réinitialiser tous les raccourcis",
    "bind_conflict": "Touche déjà utilisée par : {action}",
    "bind_saved": "Raccourci enregistré",
    "bind_reset_done": "Raccourcis réinitialisés",

    "btn_logout": "Déconnexion / Launcher",
    "tab_appearance": "Apparence",
    "tab_audio": "Audio",
    "menu_create_group": "Créer un groupe",
    "menu_history": "Voir l'historique",
    "menu_add_member": "Ajouter un membre",
    "menu_seed": "Seeder",

    "audio_input_device": "Microphone",
    "audio_output_device": "Haut-parleur",
    "audio_default_device": "Par défaut (Système)",
    "audio_mic_volume": "Volume du Microphone (%)",
    "audio_speaker_volume": "Volume du Haut-parleur (%)",
    "audio_apply": "Appliquer",
    "audio_saved": "Paramètres audio appliqués.",
    "audio_restart_test_hint": "Redémarrez le test pour changer d'appareil.",
    "audio_test_start": "Démarrer le test (M'écouter)",
    "audio_test_stop": "Arrêter le test",
    "audio_devices_unavailable": "Impossible d'obtenir les appareils audio.",
    "audio_test_stop_call_first": "Veuillez d'abord terminer l'appel actif.",

    "group_call_started": "Appel de groupe démarré",
    "group_call_joined": "{user} a rejoint l'appel",
    "group_call_left": "{user} a quitté l'appel",
    "group_call_ring": "Appel entrant du groupe {group}",
    "group_call_ringing": "Appel des membres du groupe...",
    "group_call_in_progress": "En appel de groupe : {group}",
    "group_call_participants": "Participants ({n})",

    "tab_cloud": "Cloud",
    "tab_backup": "Sauvegarde",
    "cloud_header": "Cloud",
    "cloud_section_settings": "Paramètres",
    "cloud_section_actions": "Synchroniser",
    "cloud_section_status": "Statut",
    "cloud_enabled_label": "Activer le Cloud pour cet utilisateur",
    "cloud_snapshots_label": "Publier la sauvegarde chiffrée des chats",
    "cloud_files_label": "Publier les fichiers chiffrés (si pris en charge)",
    "cloud_mode_all": "Tous les chats",
    "cloud_mode_selected": "Chats sélectionnés",
    "cloud_mode_toggle": "Portée : {mode}",
    "cloud_chats_label": "Chats",
    "cloud_sync_up": "Local → Cloud (sauvegarde sécurisée)",
    "cloud_sync_down": "Cloud → Local (sauvegarde + redémarrage)",
    "cloud_status": "Synchronisation Cloud",
    "cloud_last_publish": "Dernière publication",
    "cloud_last_fetch": "Dernière récupération",

    "backup_header": "Sauvegardes",
    "backup_section": "Sauvegardes",
    "backup_create": "Créer une sauvegarde maintenant",
    "backup_restore": "Restaurer sélectionnée (staged + redémarrer)",
    "backup_delete": "Supprimer sélectionnée",
    "backup_list_label": "Sauvegardes disponibles",
    "backup_created": "Sauvegarde créée",
    "backup_deleted": "Sauvegarde supprimée",
    "backup_encrypt_title": "Chiffrer la Sauvegarde",
    "backup_encrypt_body": "Voulez-vous protéger la sauvegarde avec un mot de passe?\n\nPas de chiffrement → Non\nChiffrée → Oui",
    "backup_passphrase_title": "Mot de passe de Sauvegarde",
    "backup_passphrase_prompt": "Entrez le mot de passe pour la sauvegarde (min. 4 caractères):",
    "backup_passphrase_short": "Mot de passe trop court (min. 4 caractères)",
    "backup_read_err": "La sauvegarde n'a pas pu être lue",
    "backup_restore_staged": "Restauration préparée; redémarrage…",

    "cloud_sync_up_done": "Téléversé dans le cloud",
    "cloud_sync_up_failed": "Échec du téléversement vers le cloud",
    "cloud_fetching": "Récupération depuis le cloud…",
    "cloud_no_nodes": "Aucun nœud cloud connecté (démarrez le daemon du nœud).",
    "cloud_not_seeded": "Aucun nœud n'a cette sauvegarde (non seedé).",
    "cloud_fetch_timeout": "Délai d'attente dépassé (aucun nœud ne répond).",
    "cloud_bad_node": "Échec de récupération cloud (réponse de nœud erronée).",
    "cloud_no_snapshot": "Aucune sauvegarde trouvée dans le cloud",
    "cloud_bad_snapshot": "Sauvegarde cloud invalide",
    "cloud_restore_staged": "Restauration prête ; redémarrage…",

    "seeding_disabled": "Seeding désactivé",
    "seed_file_missing": "Données chiffrées du fichier non trouvées",
    "seed_file_done": "Seeding annoncé",
    "seed_chat_toggled": "Sélection de chat modifiée",
    "dlg_peer_alias": "Entrez l'alias de l'utilisateur",
    "request_sent": "Demande envoyée : {alias}",
    "dlg_group_name": "Nom du Groupe",
    "dlg_group_name_ph": "Mon super groupe",
    "dlg_group_members": "Ajouter des membres (séparés par des virgules)",
    "dlg_group_members_ph": "alice,bob,charlie",
    "dlg_group_member_add": "Ajouter un alias de membre (laisser vide pour terminer)",
    "dlg_group_member_add_ph": "nom_utilisateur",
    "dlg_create_group_title": "Créer un Nouveau Groupe",
    "dlg_add_members": "Membres",

    "appearance_timezone": "Fuseau Horaire",
    "appearance_timezone_desc": "Choisissez comment afficher les horodatages (UTC recommandé pour la confidentialité)",
    "appearance_time_format": "Format de l'Heure",
    "appearance_time_format_desc": "Choisir le format 12 ou 24 heures",
    "appearance_saved": "Paramètres d'apparence enregistrés",

    "appearance_cat_time": "Affichage de l'Heure",
    "appearance_cat_messages": "Messages",
    "appearance_cat_colors": "Couleurs des Utilisateurs",
    "appearance_cat_rules": "Règles de Couleur",

    "appearance_button_style": "Style des Boutons",
    "appearance_button_style_desc": "Style visuel des boutons (redémarrage requis)",
    "btn_style_flat": "Par défaut (Plat)",
    "btn_style_default": "3D avec Ombre",

    "appearance_msg_spacing": "Espacement des Messages",
    "appearance_msg_spacing_desc": "Espace entre les messages non groupés (0-5 lignes)",
    "appearance_my_color": "Couleur de Mon Nom",
    "appearance_my_color_desc": "Couleur de votre nom d'utilisateur dans le chat",
    "appearance_default_color": "Couleur d'Utilisateur par Défaut",
    "appearance_default_color_desc": "Couleur par défaut pour les autres utilisateurs",

    "appearance_rules_title": "Règles de Couleur",
    "appearance_rules_desc": "Personnalisez les couleurs par nom d'utilisateur, contenu du message ou permission",
    "appearance_add_rule": "+ Ajouter une Règle",
    "appearance_no_rules": "Aucune règle de couleur définie",
    "code_preview_more_lines": "... +{n} lignes de plus",
    "code_preview_no_code": "Pas de code",

    "rule_type_user": "Utilisateur Spécifique",
    "rule_type_regex_name": "Regex du Nom d'Utilisateur",
    "rule_type_user_contains": "Nom d'Utilisateur Contient",
    "rule_type_permission": "A la Permission",
    "rule_type_is_self": "C'est Moi",
    "rule_type_regex_msg": "Regex du Message",
    "rule_type_msg_contains": "Message Contient",
    "rule_type_is_reply": "Est une Réponse",
    "rule_type_is_edited": "Est Modifié",
    "rule_type_has_file": "A une Pièce Jointe",
    "rule_type_has_image": "A une Image",
    "rule_type_time_range": "Plage Horaire",
    "rule_type_date_regex": "Regex Date/Heure",
    "rule_type_chat_dm": "Est un Message Direct",
    "rule_type_chat_group": "Est un Groupe",
    "rule_type_custom_python": "Code Python Personnalisé",

    "rule_perm_kick": "Peut Expulser",
    "rule_perm_ban": "Peut Bannir",
    "rule_perm_admin": "Admin/Fondateur",
    "rule_perm_moderator": "Modérateur",
    "rule_perm_online": "En Ligne",
    "rule_perm_in_call": "En Appel",

    "dlg_pattern_time_range": "Format : HH:MM-HH:MM (ex : 09:00-17:00)",
    "dlg_pattern_date_regex": "Regex : YYYY-MM-DD HH:MM:SS NomJour",
    "dlg_pattern_custom_python": "Expression Python (retourne True/False)",

    "dlg_edit_rule_title": "Modifier la Règle de Couleur",
    "dlg_rule_type": "Type de Règle",
    "dlg_rule_pattern": "Motif / Valeur",
    "dlg_rule_pattern_user": "Nom d'utilisateur",
    "dlg_rule_pattern_regex_name": "Regex pour le nom d'utilisateur",
    "dlg_rule_pattern_regex_msg": "Regex pour le contenu du message",
    "dlg_rule_color": "Couleur Primaire",
    "dlg_rule_color2": "Couleur Secondaire (pour division)",
    "dlg_rule_split": "Diviser les Couleurs",
    "dlg_rule_priority": "Priorité (plus haut = vérifié en premier)",
    "dlg_use_previous_color": "Utiliser la Couleur de la Règle Précédente",
    "dlg_rule_enabled": "Activé",

    "dlg_no_members_yet": "Aucun membre ajouté pour l'instant",
    "dlg_create_group_btn": "Créer le Groupe",
    "dlg_group_name_required": "Nom de groupe requis",
    "group_build_title": "Groupe",
    "group_build_continue": "Continuer",
    "group_build_create": "Créer",
    "group_build_cancel": "Annuler",
    "group_info_title": "Infos du Groupe",
    "group_info_body": "Nom : {name}\nID : {gid}\n\nMembres :\n{members}",
    "group_members_sub": "{n} membres",
    "group_invite_title": "Invitation au Groupe",
    "group_invite_body": "Groupe : {name}\nDe : {from_alias}\n\nAccepter pour rejoindre.",
    "dlg_add_member": "Alias du membre à ajouter",
    "dlg_import_chat": "Chemin du JSON du chat",
    "block_placeholder": "Alias ou empreinte",
    "download_done_status": "Téléchargé : {path}",
    "update_available": "Mise à jour disponible",
    "update_available_body": "Une nouvelle version d'Antch est disponible !\n\nActuelle : {current}\nDernière : {latest}\n\nExécutez cette commande pour mettre à jour :\n\npipx upgrade antch",
    "btn_update": "⬆"
  }
}


def normalize_lang(code: str | None) -> str:
    c = (code or "en").strip().lower()
    return c if c in I18N else "en"


def t(lang: str, key: str, **kwargs) -> str:
    lang = normalize_lang(lang)
    table = I18N.get(lang) or I18N["en"]
    s = table.get(key) or I18N["en"].get(key) or key
    try:
        return s.format(**kwargs)
    except Exception:
        return s
