From f5bd62e81bd094343e8151c370d549e788408f0d Mon Sep 17 00:00:00 2001 From: Lemmy Date: Wed, 5 Aug 2026 17:59:17 -0400 Subject: [PATCH] chore(i18n): update --- anilist/translations/de.json | 12 + audio-switcher/translations/en.json | 7 +- battery-widget/translations/fr.json | 53 +++ bookmarks/translations/en.json | 39 +- bookmarks/translations/tr.json | 39 +- codexbar-meter/translations/en.json | 16 +- deepseek_usage/translations/en.json | 72 ++-- eyecare/translations/fr.json | 10 + ip-monitor/translations/en.json | 176 ++++----- kineticwe-layouts/translations/en.json | 4 +- lyrics/translations/en.json | 6 +- lyrics/translations/zh-Hans.json | 6 +- mango_layouts/translations/en.json | 46 +-- nextboot-selector/translations/de.json | 32 ++ niri-active-workspace/translations/en.json | 22 +- niri-animations/translations/en.json | 50 +-- niri-animations/translations/es.json | 50 +-- noctwhspr/translations/de.json | 9 + obs-integration/translations/en.json | 110 +++--- portctl/translations/de.json | 54 +++ prismlauncher-instances/translations/de.json | 16 + proton-pass/translations/de.json | 7 + qrcode/translations/en.json | 124 +++---- screen-toolkit/translations/en.json | 368 +++++++++---------- sharednd/translations/de.json | 17 + shelly/translations/de.json | 84 +++++ tmux-provider/translations/fr.json | 4 + todo/translations/de.json | 37 ++ todo/translations/fr.json | 10 + udiskie/translations/en.json | 126 +++---- udiskie/translations/es.json | 124 +++---- um5606_fan_state/translations/de.json | 12 + upbeat/translations/de.json | 16 + web-launcher/translations/de.json | 27 ++ zed-provider/translations/de.json | 17 + 35 files changed, 1149 insertions(+), 653 deletions(-) create mode 100644 anilist/translations/de.json create mode 100644 battery-widget/translations/fr.json create mode 100644 eyecare/translations/fr.json create mode 100644 nextboot-selector/translations/de.json create mode 100644 noctwhspr/translations/de.json create mode 100644 portctl/translations/de.json create mode 100644 prismlauncher-instances/translations/de.json create mode 100644 proton-pass/translations/de.json create mode 100644 sharednd/translations/de.json create mode 100644 shelly/translations/de.json create mode 100644 tmux-provider/translations/fr.json create mode 100644 todo/translations/de.json create mode 100644 todo/translations/fr.json create mode 100644 um5606_fan_state/translations/de.json create mode 100644 upbeat/translations/de.json create mode 100644 web-launcher/translations/de.json create mode 100644 zed-provider/translations/de.json diff --git a/anilist/translations/de.json b/anilist/translations/de.json new file mode 100644 index 0000000..c6aac56 --- /dev/null +++ b/anilist/translations/de.json @@ -0,0 +1,12 @@ +{ + "panel": { + "close": "Schließen", + "close_preview": "Vorschau schließen", + "connect": "Mit AniList verbinden", + "cover_preview": "Cover anzeigen", + "decrement": "Vorherige Folge/Kapitel", + "download_cover": "Cover herunterladen", + "download_cover_failed": "Das Coverbild konnte nicht gespeichert werden.", + "download_cover_success": "Cover wurde unter {path} gespeichert" + } +} diff --git a/audio-switcher/translations/en.json b/audio-switcher/translations/en.json index 1351a51..c326dc3 100644 --- a/audio-switcher/translations/en.json +++ b/audio-switcher/translations/en.json @@ -95,6 +95,10 @@ "visible_count": "Visible {count}" }, "settings": { + "scroll_step": { + "description": "How many percentage points each mouse-wheel step changes volume on the bar widget.", + "label": "Scroll step" + }, "show_actions_in_tooltip": { "description": "Show actions in tooltip.", "label": "Show actions in tooltip" @@ -133,6 +137,7 @@ } }, "input": "Input", - "output": "Output" + "output": "Output", + "tooltip": "Output: {output} ({output_volume})\nInput: {input} ({input_volume})\nScroll: change output volume\nLeft click: open Audio Switcher\nRight click: cycle outputs\nMiddle click: cycle inputs" } } diff --git a/battery-widget/translations/fr.json b/battery-widget/translations/fr.json new file mode 100644 index 0000000..c78bf5a --- /dev/null +++ b/battery-widget/translations/fr.json @@ -0,0 +1,53 @@ +{ + "settings": { + "battery": { + "auto": "Automatique", + "bat0": "BAT0", + "custom": "Personnalisé", + "description": "Détection automatique de la batterie ou nom personnalisé.", + "label": "Batterie" + }, + "battery_name": { + "description": "Nom de la batterie.", + "label": "Nom de la Batterie" + }, + "charging_color": { + "description": "Couleur utilisée lorsque l'appareil est branché au secteur.", + "label": "Couleur de Charge" + }, + "color": { + "description": "Couleur de l'icône et du texte de ce widget ; les codes hex fixes sont également pris en charge.", + "label": "Couleur" + }, + "hide_full": { + "description": "Cacher le widget lorsque la batterie est pleine.", + "label": "Cacher quand plein" + }, + "hide_plugged": { + "description": "Cacher le widget lorsque l'appareil est branché au secteur.", + "label": "Cacher quand branché" + }, + "layout": { + "description": "Disposition du widget.", + "horizontal": "Horizontal", + "label": "Disposition", + "vertical": "Vertical" + }, + "refresh_interval": { + "description": "Définit la fréquence de mise à jour du contenu du widget (en secondes).", + "label": "Intervalle d'actualisation" + }, + "show_glyph": { + "description": "Afficher l’icône de la batterie.", + "label": "Afficher l’icône" + }, + "show_label": { + "description": "Afficher le texte à coté de l’icône.", + "label": "Afficher le texte" + }, + "warning_color": { + "description": "Couleur utilisée quand la batterie est en dessous de 20%.", + "label": "Couleur d'alerte" + } + } +} diff --git a/bookmarks/translations/en.json b/bookmarks/translations/en.json index 2c1d78e..f60ece3 100644 --- a/bookmarks/translations/en.json +++ b/bookmarks/translations/en.json @@ -1,5 +1,12 @@ { "back_button": "Back", + "cancel_button": "Cancel", + "cmd_field": "Shell command", + "delete_folder_button": "Delete folder", + "delete_tooltip": "Delete", + "description_field": "Description (optional)", + "drag_tooltip": "Drag to reorder, or onto a folder to file it inside", + "drop_out_of_folder": "Drop here to move back to the main panel", "edit": { "delete_tooltip": "Delete", "drag_tooltip": "Drag to reorder, or onto a folder to file it inside", @@ -8,6 +15,9 @@ "hide_controls_tooltip": "Hide reorder/edit/delete controls", "show_controls_tooltip": "Show reorder/edit/delete controls" }, + "edit_bookmark": "Edit Bookmark", + "edit_folder": "Edit Folder", + "edit_tooltip": "Edit", "entry_form": { "cancel_button": "Cancel", "cmd_field": "Shell command", @@ -38,23 +48,49 @@ "reorder_failed": "Failed to reorder: {error}", "save_failed": "Failed to save: {error}" }, + "err_corrupt": "Bookmarks file is corrupt: {error}", + "err_delete_failed": "Failed to delete: {error}", + "err_exit_code": "\"{label}\" exited with code {code}", + "err_label_cmd_required": "Label and command are required", + "err_label_required": "Label is required", + "err_launch_failed": "Failed to launch \"{label}\"", + "err_no_command": "This bookmark has no command", + "err_no_data_dir": "No data directory available", + "err_read_failed": "Failed to read bookmarks: {error}", + "err_reorder_failed": "Failed to reorder: {error}", + "err_save_failed": "Failed to save: {error}", "folder": { "delete_folder_button": "Delete folder", "folder_deleted": "Deleted folder \"{label}\" and its contents" }, + "folder_deleted": "Deleted folder \"{label}\" and its contents", + "folder_name_field": "Folder name", + "glyph_field": "Glyph name (e.g. bookmark)", + "hide_controls_tooltip": "Hide reorder/edit/delete controls", "info": { "cmd_line": "Command: {cmd}", "description_line": "Description: {description}" }, + "info_cmd_line": "Command: {cmd}", + "info_description_line": "Description: {description}", + "label_field": "Label", + "new_bookmark": "New Bookmark", + "new_folder": "New Folder", "no_bookmarks": "No bookmarks yet", "no_search_results": "No matching bookmarks", "open_tooltip": "Open", + "run_in_background_field": "Run in background", + "run_in_terminal_field": "Run in terminal", + "save_button": "Save", "search_placeholder": "Search bookmarks...", "settings": { "bk_sort_by": { "description": "How bookmarks are ordered in \"/bk\" results when there's no search text.", "label": "/bk sort order", - "options": { "history": "Recently used", "usage_count": "Most used" } + "options": { + "history": "Recently used", + "usage_count": "Most used" + } }, "data_path": { "description": "Where data.json is stored. Leave empty to use the default plugin data directory.", @@ -81,5 +117,6 @@ "label": "Tooltip" } }, + "show_controls_tooltip": "Show reorder/edit/delete controls", "title": "Bookmarks" } diff --git a/bookmarks/translations/tr.json b/bookmarks/translations/tr.json index e3ce552..e0afba5 100644 --- a/bookmarks/translations/tr.json +++ b/bookmarks/translations/tr.json @@ -1,5 +1,12 @@ { "back_button": "Geri", + "cancel_button": "İptal", + "cmd_field": "Shell Komutu", + "delete_folder_button": "Klasörü Sil", + "delete_tooltip": "Sil", + "description_field": "Açıklama (İsteğe bağlı)", + "drag_tooltip": "Sıralamak için sürükle veya bir klasörün içine bırak", + "drop_out_of_folder": "Ana panele göndermek için buraya bırak", "edit": { "delete_tooltip": "Sil", "drag_tooltip": "Sıralamak için sürükle veya bir klasörün içine bırak", @@ -8,6 +15,9 @@ "hide_controls_tooltip": "Sıralama/düzenleme/silme kontrollerini gizle", "show_controls_tooltip": "Sıralama/düzenleme/silme kontrollerini göster" }, + "edit_bookmark": "Yer İmini Düzenle", + "edit_folder": "Klasörü Düzenle", + "edit_tooltip": "Düzenle", "entry_form": { "cancel_button": "İptal", "cmd_field": "Shell Komutu", @@ -38,23 +48,49 @@ "reorder_failed": "Sıralama Yapılamadı: {error}", "save_failed": "Kaydedilemedi: {error}" }, + "err_corrupt": "Bozuk yer imleri dosyası: {error}", + "err_delete_failed": "Silinemedi: {error}", + "err_exit_code": "\"{label}\" {code} ile sonlandı", + "err_label_cmd_required": "Etiket ve komut alanları gerekli", + "err_label_required": "Etiket gerekli", + "err_launch_failed": "\"{label}\" açılamadı", + "err_no_command": "Bu yer iminin bir komutu yok", + "err_no_data_dir": "Eksik veri dizgini", + "err_read_failed": "Yer imleri okunamadı: {error}", + "err_reorder_failed": "Sıralama Yapılamadı: {error}", + "err_save_failed": "Kaydedilemedi: {error}", "folder": { "delete_folder_button": "Klasörü Sil", "folder_deleted": "\"{label}\" klasörü ve içeriği silindi" }, + "folder_deleted": "\"{label}\" klasörü ve içeriği silindi", + "folder_name_field": "Klasör ismi", + "glyph_field": "Simge (ör. bookmark)", + "hide_controls_tooltip": "Sıralama/düzenleme/silme kontrollerini gizle", "info": { "cmd_line": "Komut: {cmd}", "description_line": "Açıklama: {description}" }, + "info_cmd_line": "Komut: {cmd}", + "info_description_line": "Açıklama: {description}", + "label_field": "İsim etiketi", + "new_bookmark": "Yeni Yer İmi", + "new_folder": "Yeni Klasör", "no_bookmarks": "Henüz bir yer imi yok", "no_search_results": "Eşleşen yer imi yok", "open_tooltip": "Aç", + "run_in_background_field": "Arka planda çalıştır", + "run_in_terminal_field": "Konsolda çalıştır", + "save_button": "Kaydet", "search_placeholder": "Yer imlerinde ara...", "settings": { "bk_sort_by": { "description": "\"/bk\" sonuçlarının arama yapılmadığı durumda yer imlerini nasıl sıralacağını belirler.", "label": "/bk sıralama önceliği", - "options": { "history": "Son kullanılanlar", "usage_count": "En sık kullanılanlar" } + "options": { + "history": "Son kullanılanlar", + "usage_count": "En sık kullanılanlar" + } }, "data_path": { "description": "data.json dosyasının saklandığı konum. Varsayılan eklenti veri konumunu kullanmak için boş bırakın.", @@ -81,5 +117,6 @@ "label": "İsim etiketi" } }, + "show_controls_tooltip": "Sıralama/düzenleme/silme kontrollerini göster", "title": "Yer İmleri" } diff --git a/codexbar-meter/translations/en.json b/codexbar-meter/translations/en.json index a9eac0f..e2673a0 100644 --- a/codexbar-meter/translations/en.json +++ b/codexbar-meter/translations/en.json @@ -1,17 +1,17 @@ { "plugin_name": "CodexBar Meter", "settings": { + "bar_provider_limit": { + "description": "Maximum number of provider meters shown in the bar capsule; the panel and tooltip still include all providers.", + "label": "Bar provider limit" + }, "codexbar_path": { - "label": "CodexBar command", - "description": "Command or absolute path used to query enabled CodexBar providers." + "description": "Command or absolute path used to query enabled CodexBar providers.", + "label": "CodexBar command" }, "refresh_interval": { - "label": "Refresh interval", - "description": "Seconds between background usage refreshes." - }, - "bar_provider_limit": { - "label": "Bar provider limit", - "description": "Maximum number of provider meters shown in the bar capsule; the panel and tooltip still include all providers." + "description": "Seconds between background usage refreshes.", + "label": "Refresh interval" } } } diff --git a/deepseek_usage/translations/en.json b/deepseek_usage/translations/en.json index babb3ec..f3e7202 100644 --- a/deepseek_usage/translations/en.json +++ b/deepseek_usage/translations/en.json @@ -1,53 +1,53 @@ { - "title": "DeepSeek Usage", - "widget": { - "no_key": "Set Key", - "loading": "Checking...", - "error": "Error" - }, - "tooltip": { - "balance": "Current Balance", - "last_updated": "Last Checked", - "status": "API Status", - "action": "Action", - "click_to_configure": "Click to open settings and set API Key" - }, - "status": { - "ok": "Active", - "unconfigured": "API Key Not Set", - "never": "Never" - }, "error": { "invalid_key": "Invalid or expired API Key (401)", - "parse_failed": "Failed to parse API response", - "no_wallet": "No active wallet found in user summary" + "no_wallet": "No active wallet found in user summary", + "parse_failed": "Failed to parse API response" }, "panel": { - "title": "DeepSeek Balance", - "refresh_tooltip": "Refresh balance now", - "unconfigured_title": "API Key Required", - "unconfigured_desc": "Please configure your DeepSeek API Key in the plugin settings.", - "open_settings": "Open Settings", - "current_balance": "Available Balance", - "wallet_info": "Normal Wallet", "add_credits": "Add Credits", "add_credits_tooltip": "Open DeepSeek platform top-up page in browser", + "current_balance": "Available Balance", "history_title": "Balance History (24h Trend)", + "open_settings": "Open Settings", + "refresh_tooltip": "Refresh balance now", + "settings_btn": "Settings", + "title": "DeepSeek Balance", + "unconfigured_desc": "Please configure your DeepSeek API Key in the plugin settings.", + "unconfigured_title": "API Key Required", "updated_at": "Updated", - "settings_btn": "Settings" + "wallet_info": "Normal Wallet" }, "settings": { "api_key": { - "label": "DeepSeek API Key", - "description": "API Key from platform.deepseek.com/api_keys" - }, - "refresh_minutes": { - "label": "Refresh Interval (Minutes)", - "description": "How often to poll DeepSeek API for balance updates" + "description": "API Key from platform.deepseek.com/api_keys", + "label": "DeepSeek API Key" }, "low_balance_threshold": { - "label": "Low Balance Warning Threshold", - "description": "Send a desktop notification when balance drops below this amount" + "description": "Send a desktop notification when balance drops below this amount", + "label": "Low Balance Warning Threshold" + }, + "refresh_minutes": { + "description": "How often to poll DeepSeek API for balance updates", + "label": "Refresh Interval (Minutes)" } + }, + "status": { + "never": "Never", + "ok": "Active", + "unconfigured": "API Key Not Set" + }, + "title": "DeepSeek Usage", + "tooltip": { + "action": "Action", + "balance": "Current Balance", + "click_to_configure": "Click to open settings and set API Key", + "last_updated": "Last Checked", + "status": "API Status" + }, + "widget": { + "error": "Error", + "loading": "Checking...", + "no_key": "Set Key" } } diff --git a/eyecare/translations/fr.json b/eyecare/translations/fr.json new file mode 100644 index 0000000..e39bd3f --- /dev/null +++ b/eyecare/translations/fr.json @@ -0,0 +1,10 @@ +{ + "notifications": { + "eyecare-break-title": "Le temps d'une pause" + }, + "settings": { + "eyecare-break-duration": { + "label": "Durée de la pause" + } + } +} diff --git a/ip-monitor/translations/en.json b/ip-monitor/translations/en.json index 5e0bd25..4f4eb7b 100644 --- a/ip-monitor/translations/en.json +++ b/ip-monitor/translations/en.json @@ -1,80 +1,7 @@ { - "name": "IP Monitor", "description": "Bar widget to monitor IPs from interfaces, custom commands, or IPC.", - "tooltip": { - "iface": "Interface", - "ip": "IP", - "network": "Network", - "gateway": "Default route", - "mask": "Mask", - "broadcast": "Broadcast" - }, + "name": "IP Monitor", "settings": { - "left_click_action": { - "label": "Left Click Action", - "description": "Action to perform on left click." - }, - "right_click_action": { - "label": "Right Click Action", - "description": "Action to perform on right click." - }, - "glyph": { - "label": "Icon", - "description": "Icon to show before the IP." - }, - "glyph_color": { - "label": "Icon Color", - "description": "Color of the icon." - }, - "mode": { - "label": "Mode", - "description": "How to fetch the IP.", - "options": { - "interface": "Network Interface", - "ipc": "IPC", - "custom_command": "Custom Command" - } - }, - "iface": { - "label": "Interface", - "description": "Pattern to match network interfaces (e.g. wlan*, eth0)." - }, - "custom_command": { - "label": "Custom Command", - "description": "Command to run to fetch the IP." - }, - "text_color": { - "label": "IP Text Color", - "description": "Color of the IP text." - }, - "name": { - "label": "Name", - "description": "Optional name to show next to the IP." - }, - "name_color": { - "label": "Name Text Color", - "description": "Color of the name text." - }, - "separator": { - "label": "Separator", - "description": "Character to separate the IP and the name (e.g. -)." - }, - "ipc_id": { - "label": "IPC ID", - "description": "String ID used to target this specific widget via IPC JSON payload." - }, - "separator_color": { - "label": "Separator Color", - "description": "Color of the separator." - }, - "hide_on_empty": { - "label": "Hide on Empty", - "description": "Hide the widget entirely when no IP is found." - }, - "refresh_interval": { - "label": "Refresh Interval", - "description": "How often to refresh the IP (in seconds)." - }, "click": { "options": { "copy_ip": "Copy IP", @@ -82,29 +9,102 @@ "none": "None" } }, - "ip_font_size": { - "label": "IP Font Size", - "description": "Font size for the IP and name text." + "custom_command": { + "description": "Command to run to fetch the IP.", + "label": "Custom Command" }, "details_font_size": { - "label": "Details Font Size", - "description": "Font size for the network details text." + "description": "Font size for the network details text.", + "label": "Details Font Size" }, "details_key_color": { - "label": "Details Key Color", - "description": "Color for the detail labels (e.g. Network, Mask)." + "description": "Color for the detail labels (e.g. Network, Mask).", + "label": "Details Key Color" }, "details_value_color": { - "label": "Details Value Color", - "description": "Color for the detail values." + "description": "Color for the detail values.", + "label": "Details Value Color" }, - "hide_tooltip_options": { - "label": "Hide Tooltip Options", - "description": "Comma-separated list of fields to hide in the tooltip (e.g. network,mask,iface)." + "glyph": { + "description": "Icon to show before the IP.", + "label": "Icon" + }, + "glyph_color": { + "description": "Color of the icon.", + "label": "Icon Color" }, "hide_details_options": { - "label": "Hide Details Options", - "description": "Comma-separated list of fields to hide in the details table (e.g. network,mask,iface)." + "description": "Comma-separated list of fields to hide in the details table (e.g. network,mask,iface).", + "label": "Hide Details Options" + }, + "hide_on_empty": { + "description": "Hide the widget entirely when no IP is found.", + "label": "Hide on Empty" + }, + "hide_tooltip_options": { + "description": "Comma-separated list of fields to hide in the tooltip (e.g. network,mask,iface).", + "label": "Hide Tooltip Options" + }, + "iface": { + "description": "Pattern to match network interfaces (e.g. wlan*, eth0).", + "label": "Interface" + }, + "ip_font_size": { + "description": "Font size for the IP and name text.", + "label": "IP Font Size" + }, + "ipc_id": { + "description": "String ID used to target this specific widget via IPC JSON payload.", + "label": "IPC ID" + }, + "left_click_action": { + "description": "Action to perform on left click.", + "label": "Left Click Action" + }, + "mode": { + "description": "How to fetch the IP.", + "label": "Mode", + "options": { + "custom_command": "Custom Command", + "interface": "Network Interface", + "ipc": "IPC" + } + }, + "name": { + "description": "Optional name to show next to the IP.", + "label": "Name" + }, + "name_color": { + "description": "Color of the name text.", + "label": "Name Text Color" + }, + "refresh_interval": { + "description": "How often to refresh the IP (in seconds).", + "label": "Refresh Interval" + }, + "right_click_action": { + "description": "Action to perform on right click.", + "label": "Right Click Action" + }, + "separator": { + "description": "Character to separate the IP and the name (e.g. -).", + "label": "Separator" + }, + "separator_color": { + "description": "Color of the separator.", + "label": "Separator Color" + }, + "text_color": { + "description": "Color of the IP text.", + "label": "IP Text Color" } + }, + "tooltip": { + "broadcast": "Broadcast", + "gateway": "Default route", + "iface": "Interface", + "ip": "IP", + "mask": "Mask", + "network": "Network" } } diff --git a/kineticwe-layouts/translations/en.json b/kineticwe-layouts/translations/en.json index c89a25e..b4afde8 100644 --- a/kineticwe-layouts/translations/en.json +++ b/kineticwe-layouts/translations/en.json @@ -1,8 +1,8 @@ { "settings": { "show_text": { - "label": "Show layout name", - "description": "Show the current layout name next to the glyph in the bar. When off, only the glyph is shown." + "description": "Show the current layout name next to the glyph in the bar. When off, only the glyph is shown.", + "label": "Show layout name" } } } diff --git a/lyrics/translations/en.json b/lyrics/translations/en.json index 4bafd20..5c7c700 100644 --- a/lyrics/translations/en.json +++ b/lyrics/translations/en.json @@ -145,12 +145,12 @@ "description": "Light up each character as the song progresses (karaoke style).", "label": "Per-character gradient" }, - "hide_when_paused": { - "label": "Hide when paused" - }, "hide_when_no_lyrics": { "label": "Hide when no lyrics" }, + "hide_when_paused": { + "label": "Hide when paused" + }, "inactive_color": { "description": "Color used for upcoming lyrics, paused playback, and secondary lines.", "label": "Inactive lyric color" diff --git a/lyrics/translations/zh-Hans.json b/lyrics/translations/zh-Hans.json index 0cbf49c..1d0463b 100644 --- a/lyrics/translations/zh-Hans.json +++ b/lyrics/translations/zh-Hans.json @@ -145,12 +145,12 @@ "description": "根据播放进度逐字点亮当前歌词。", "label": "逐字渐变" }, - "hide_when_paused": { - "label": "暂停时隐藏" - }, "hide_when_no_lyrics": { "label": "无歌词时隐藏" }, + "hide_when_paused": { + "label": "暂停时隐藏" + }, "inactive_color": { "description": "设置未唱歌词、暂停状态和次要歌词行的颜色。", "label": "未唱歌词颜色" diff --git a/mango_layouts/translations/en.json b/mango_layouts/translations/en.json index 4338bcc..22641de 100644 --- a/mango_layouts/translations/en.json +++ b/mango_layouts/translations/en.json @@ -1,35 +1,35 @@ { - "show_icon_label": "Show Icon", - "show_text_label": "Show Text", - "custom_color_label": "Icon/Text Color", "custom_color_desc": "E.g. primary, on_surface, etc.", - "list_mode_label": "Vertical List Mode", - "layout_tile_label": "Layout: Tile", - "layout_scroller_label": "Layout: Scroller", - "layout_monocle_label": "Layout: Monocle", - "layout_grid_label": "Layout: Grid", - "layout_fair_label": "Layout: Fair", + "custom_color_label": "Icon/Text Color", + "layout_center_tile_label": "Layout: Center Tile", "layout_deck_label": "Layout: Deck", "layout_dwindle_label": "Layout: Dwindle", - "layout_center_tile_label": "Layout: Center Tile", - "layout_vertical_tile_label": "Layout: Vertical Tile", + "layout_fair_label": "Layout: Fair", + "layout_grid_label": "Layout: Grid", + "layout_monocle_label": "Layout: Monocle", "layout_right_tile_label": "Layout: Right Tile", - "layout_vertical_scroller_label": "Layout: Vertical Scroller", - "layout_vertical_grid_label": "Layout: Vertical Grid", + "layout_scroller_label": "Layout: Scroller", + "layout_tile_label": "Layout: Tile", "layout_vertical_deck_label": "Layout: Vertical Deck", "layout_vertical_fair_label": "Layout: Vertical Fair", - "name_tile": "Tile", - "name_scroller": "Scroller", - "name_monocle": "Monocle", - "name_grid": "Grid", - "name_fair": "Fair", + "layout_vertical_grid_label": "Layout: Vertical Grid", + "layout_vertical_scroller_label": "Layout: Vertical Scroller", + "layout_vertical_tile_label": "Layout: Vertical Tile", + "list_mode_label": "Vertical List Mode", + "name_center_tile": "Center Tile", "name_deck": "Deck", "name_dwindle": "Dwindle", - "name_center_tile": "Center Tile", - "name_vertical_tile": "Vertical Tile", + "name_fair": "Fair", + "name_grid": "Grid", + "name_monocle": "Monocle", "name_right_tile": "Right Tile", - "name_vertical_scroller": "Vertical Scroller", - "name_vertical_grid": "Vertical Grid", + "name_scroller": "Scroller", + "name_tile": "Tile", "name_vertical_deck": "Vertical Deck", - "name_vertical_fair": "Vertical Fair" + "name_vertical_fair": "Vertical Fair", + "name_vertical_grid": "Vertical Grid", + "name_vertical_scroller": "Vertical Scroller", + "name_vertical_tile": "Vertical Tile", + "show_icon_label": "Show Icon", + "show_text_label": "Show Text" } diff --git a/nextboot-selector/translations/de.json b/nextboot-selector/translations/de.json new file mode 100644 index 0000000..ea72b83 --- /dev/null +++ b/nextboot-selector/translations/de.json @@ -0,0 +1,32 @@ +{ + "notification": { + "failed_to_set_next_boot": "Der nächste Systemstart konnte nicht festgelegt werden", + "timed_out": "Zeitüberschreitung" + }, + "panel": { + "reset": "Zurücksetzen", + "title": "Auswahl für den nächsten Startvorgang" + }, + "setting": { + "close_on_select": { + "description": "Ob das Fenster nach der Auswahl eines Eintrags geschlossen werden soll", + "label": "Schließen wenn ausgewählt" + }, + "excluded_keywords": { + "description": "Schlüsselwörter zum Ausschluss von Einträgen (Groß-/Kleinschreibung wird nicht berücksichtigt)", + "label": "Ausgeschlossene Schlüsselwörter" + }, + "privilege_command": { + "description": "Befehl zum Erhöhen der Berechtigungen des efibootmgr Befehls", + "label": "Privilege-Befehl" + }, + "reboot_command": { + "description": "Befehl, der ausgeführt werden soll, wenn „Neustart bei Auswahl“ aktiviert ist", + "label": "Befehl zum Neustart" + }, + "reboot_on_select": { + "description": "Ob nach der Auswahl eines Eintrags automatisch ein Neustart erfolgen soll", + "label": "Neustart bei Auswahl" + } + } +} diff --git a/niri-active-workspace/translations/en.json b/niri-active-workspace/translations/en.json index 3b50483..f270cab 100644 --- a/niri-active-workspace/translations/en.json +++ b/niri-active-workspace/translations/en.json @@ -1,22 +1,22 @@ { - "plugin_name": "Niri Active Workspace", "plugin_description": "Shows only the focused niri workspace in the bar.", + "plugin_name": "Niri Active Workspace", "settings": { + "glyph": { + "description": "Icon shown before the label.", + "label": "Icon" + }, "label_mode": { - "label": "Label", + "both": "Index and name", "description": "What to show for the focused workspace.", - "name_or_index": "Name, or index when unnamed", - "name": "Name only", "index": "Index only", - "both": "Index and name" + "label": "Label", + "name": "Name only", + "name_or_index": "Name, or index when unnamed" }, "show_position": { - "label": "Show position", - "description": "Append the focused workspace's position, e.g. 3/5." - }, - "glyph": { - "label": "Icon", - "description": "Icon shown before the label." + "description": "Append the focused workspace's position, e.g. 3/5.", + "label": "Show position" } } } diff --git a/niri-animations/translations/en.json b/niri-animations/translations/en.json index 868e042..a80f9e7 100644 --- a/niri-animations/translations/en.json +++ b/niri-animations/translations/en.json @@ -1,34 +1,34 @@ { - "title": "Niri Animations", - "preset": "Preset", - "no_preset": "No preset (base pack)", - "animations_on": "Animations on", "animations_off": "Animations off", + "animations_on": "Animations on", + "no_preset": "No preset (base pack)", + "preset": "Preset", "random": "Random", - "speed": "Speed", - "speed_hint": "above 1 is slower", - "shortcut_label": "Animations", - "status_presets_found": "presets in", - "status_base_pack": "Base pack", - "status_off": "Animations disabled.", - "status_read_error": "Could not read", - "status_write_error": "Could not write", "settings": { - "presets_dir": { - "label": "Presets directory", - "description": "Folder scanned for .kdl animation presets" - }, - "target_file": { - "label": "Target file", - "description": "File rewritten with the chosen preset and speed. Your niri config must include it after the base animations." - }, "include_prefix": { - "label": "Include prefix", - "description": "Path prefix written in the include line, relative to the target file" + "description": "Path prefix written in the include line, relative to the target file", + "label": "Include prefix" + }, + "presets_dir": { + "description": "Folder scanned for .kdl animation presets", + "label": "Presets directory" }, "reload_command": { - "label": "Reload command", - "description": "Run after writing, so the compositor picks up the change" + "description": "Run after writing, so the compositor picks up the change", + "label": "Reload command" + }, + "target_file": { + "description": "File rewritten with the chosen preset and speed. Your niri config must include it after the base animations.", + "label": "Target file" } - } + }, + "shortcut_label": "Animations", + "speed": "Speed", + "speed_hint": "above 1 is slower", + "status_base_pack": "Base pack", + "status_off": "Animations disabled.", + "status_presets_found": "presets in", + "status_read_error": "Could not read", + "status_write_error": "Could not write", + "title": "Niri Animations" } diff --git a/niri-animations/translations/es.json b/niri-animations/translations/es.json index 790ce6d..94c6a32 100644 --- a/niri-animations/translations/es.json +++ b/niri-animations/translations/es.json @@ -1,34 +1,34 @@ { - "title": "Niri Animations", - "preset": "Preset", - "no_preset": "Sin preset (pack base)", - "animations_on": "Animaciones activas", "animations_off": "Animaciones apagadas", + "animations_on": "Animaciones activas", + "no_preset": "Sin preset (pack base)", + "preset": "Preset", "random": "Al azar", - "speed": "Velocidad", - "speed_hint": "arriba de 1 es más lento", - "shortcut_label": "Animaciones", - "status_presets_found": "presets en", - "status_base_pack": "Pack base", - "status_off": "Animaciones desactivadas.", - "status_read_error": "No pude leer", - "status_write_error": "No pude escribir", "settings": { - "presets_dir": { - "label": "Carpeta de presets", - "description": "Carpeta donde se buscan los presets .kdl de animación" - }, - "target_file": { - "label": "Archivo destino", - "description": "Archivo que se reescribe con el preset y la velocidad elegidos. Tu config de niri tiene que incluirlo después de las animaciones base." - }, "include_prefix": { - "label": "Prefijo del include", - "description": "Prefijo de ruta que se escribe en la línea include, relativo al archivo destino" + "description": "Prefijo de ruta que se escribe en la línea include, relativo al archivo destino", + "label": "Prefijo del include" + }, + "presets_dir": { + "description": "Carpeta donde se buscan los presets .kdl de animación", + "label": "Carpeta de presets" }, "reload_command": { - "label": "Comando de recarga", - "description": "Se ejecuta después de escribir, para que el compositor tome el cambio" + "description": "Se ejecuta después de escribir, para que el compositor tome el cambio", + "label": "Comando de recarga" + }, + "target_file": { + "description": "Archivo que se reescribe con el preset y la velocidad elegidos. Tu config de niri tiene que incluirlo después de las animaciones base.", + "label": "Archivo destino" } - } + }, + "shortcut_label": "Animaciones", + "speed": "Velocidad", + "speed_hint": "arriba de 1 es más lento", + "status_base_pack": "Pack base", + "status_off": "Animaciones desactivadas.", + "status_presets_found": "presets en", + "status_read_error": "No pude leer", + "status_write_error": "No pude escribir", + "title": "Niri Animations" } diff --git a/noctwhspr/translations/de.json b/noctwhspr/translations/de.json new file mode 100644 index 0000000..ce75dfa --- /dev/null +++ b/noctwhspr/translations/de.json @@ -0,0 +1,9 @@ +{ + "settings": { + "root": { + "description": "Verzeichnis, in dem hyprwhspr installiert ist. Behalte die Standardeinstellung bei, es sei denn, hyprwhspr befindet sich unter einem nicht standardmäßigen Präfix", + "label": "hyprwhspr Installationsverzeichnis" + } + }, + "title": "noctwhspr" +} diff --git a/obs-integration/translations/en.json b/obs-integration/translations/en.json index bf5adde..9d0488f 100644 --- a/obs-integration/translations/en.json +++ b/obs-integration/translations/en.json @@ -1,69 +1,69 @@ { - "settings": { - "show_label": { - "label": "Show label", - "description": "Show the OBS label next to the icon." - }, - "checkout_dir": { - "label": "Package checkout directory", - "description": "Directory where packages will be checked out." - } - }, "panel": { - "my_projects": "My Projects", - "reload_projects": "Reload projects", - "search_projects": "Search projects...", - "no_projects": "No projects found.", - "no_packages": "No packages found.", - "loading": "Loading...", - "error": "OBS command failed", - "retry": "Retry", - "checkout": "Checkout package", - "checking_out": "Checking out...", - "edit_files": "Edit files", - "edit_changes": "Edit {name}.changes", - "update_changes": "Update {name}.changes", - "edit_meta": "Edit package meta", - "rebuild": "Rebuild package", - "repo": "Repositories", - "arch": "Architectures", - "confirm_rebuild": "Confirm rebuild", - "remove": "Remove package", - "confirm_remove": "Click to confirm removal", - "edit_project_meta": "Edit project meta", - "no_editable": "No editable files found.", - "search_packages": "Search...", - "loading_packages": "Loading packages...", - "files": "Files", - "no_files": "No files found.", - "remove_file": "Remove file", "add_remove": "Add/Remove", "adding_removing": "Adding/removing files...", - "no_changes": "no changes for package {name}", - "update_dir": "Update directory", - "updating_dir": "Updating directory...", - "running_manual_service": "Running manual service...", - "running_remote_service": "Running remote service...", - "committing": "Committing...", - "rebuilding_pkg": "Rebuilding package...", - "service_run": "Service Manual Run", - "service_remote_run": "Service Remote Run", - "service_local_run": "Service Local Run", - "service_run_all": "Service Run All", - "confirm_run_all": "Confirm Run All", - "confirm": "Confirm", - "running_local_service": "Running local service...", - "running_all_services": "Running all services...", + "arch": "Architectures", + "checking_out": "Checking out...", + "checkout": "Checkout package", "commit": "Commit package", + "committing": "Committing...", + "configure_oscrc": "Configure oscrc", + "confirm": "Confirm", + "confirm_rebuild": "Confirm rebuild", + "confirm_remove": "Click to confirm removal", + "confirm_run_all": "Confirm Run All", + "edit_changes": "Edit {name}.changes", + "edit_files": "Edit files", + "edit_meta": "Edit package meta", + "edit_project_meta": "Edit project meta", + "error": "OBS command failed", + "files": "Files", + "loading": "Loading...", + "loading_packages": "Loading packages...", + "my_projects": "My Projects", + "no_changes": "no changes for package {name}", + "no_editable": "No editable files found.", + "no_files": "No files found.", + "no_packages": "No packages found.", + "no_projects": "No projects found.", "osc_missing": "'osc' not found", "osc_missing_hint": "Install the 'osc' package to start using this plugin.", "osc_not_configured": "OBS account not configured", "osc_not_configured_hint": "Create ~/.config/osc/oscrc before browsing projects.", - "configure_oscrc": "Configure oscrc" + "rebuild": "Rebuild package", + "rebuilding_pkg": "Rebuilding package...", + "reload_projects": "Reload projects", + "remove": "Remove package", + "remove_file": "Remove file", + "repo": "Repositories", + "retry": "Retry", + "running_all_services": "Running all services...", + "running_local_service": "Running local service...", + "running_manual_service": "Running manual service...", + "running_remote_service": "Running remote service...", + "search_packages": "Search...", + "search_projects": "Search projects...", + "service_local_run": "Service Local Run", + "service_remote_run": "Service Remote Run", + "service_run": "Service Manual Run", + "service_run_all": "Service Run All", + "update_changes": "Update {name}.changes", + "update_dir": "Update directory", + "updating_dir": "Updating directory..." + }, + "settings": { + "checkout_dir": { + "description": "Directory where packages will be checked out.", + "label": "Package checkout directory" + }, + "show_label": { + "description": "Show the OBS label next to the icon.", + "label": "Show label" + } }, "widget": { - "osc_missing": "'osc' missing", "configure_obs": "Configure OBS", - "obs": "OBS" + "obs": "OBS", + "osc_missing": "'osc' missing" } } diff --git a/portctl/translations/de.json b/portctl/translations/de.json new file mode 100644 index 0000000..b0a7877 --- /dev/null +++ b/portctl/translations/de.json @@ -0,0 +1,54 @@ +{ + "categories": { + "cloud": "Cloud", + "containers": "Container", + "databases": "Datenbanken", + "development": "Entwicklung", + "other": "Andere", + "servers": "Server" + }, + "panel": { + "cancel": "Abbrechen", + "kill": "Beenden", + "kill_confirm": "{name} beenden?", + "killing": "{name} wird beendet…", + "no_ports": "Keine lauschenden Ports", + "no_results": "Keine Ergebnisse für \"{query}\"", + "pid_copied": "PID {pid} kopiert", + "search_placeholder": "Suche Port, Prozess, PID…", + "tcp": "TCP", + "udp": "UDP" + }, + "service": { + "kill_failed": "PID {pid} konnte nicht beendet werden", + "ss_not_found": "ss (iproute2) nicht gefunden — Installiere das iproute2 Paket", + "terminated": "Prozess {pid} wurde beendet" + }, + "settings": { + "glyph": { + "description": "In der Leiste angezeigtes Symbol", + "label": "Symbol" + }, + "hide_system_ports": { + "description": "Ports unterhalb von 1024 ausblenden (privilegierte/Root-Ports)", + "label": "System Ports ausblenden" + }, + "hide_unknown_ports": { + "description": "Ports ausblenden, auf deren Prozessinformationen nicht zugegriffen werden kann (z. B. rootlessport, root-eigene Prozesse ohne sudo)", + "label": "Unbekannte Ports ausblenden" + }, + "ignore_list": { + "description": "Durch Kommas getrennte Teilzeichenfolgen von Prozessnamen, die ausgeblendet werden sollen (z. B. discord,chrome,steam)", + "label": "Prozesse ignorieren" + }, + "ignore_ports": { + "description": "Durch Kommas getrennte Portnummern, die ausgeblendet werden sollen (z.B. 37700,6463)", + "label": "Ports ignorieren" + }, + "refresh_interval": { + "description": "Sekunden zwischen den Port-Scans", + "label": "Aktualisierungsintervall" + } + }, + "title": "Portctl" +} diff --git a/prismlauncher-instances/translations/de.json b/prismlauncher-instances/translations/de.json new file mode 100644 index 0000000..85ee206 --- /dev/null +++ b/prismlauncher-instances/translations/de.json @@ -0,0 +1,16 @@ +{ + "no_instances": { + "subtitle": "Filter: ", + "title": "Keine Instanzen gefunden" + }, + "settings": { + "launcher_exec_command": { + "description": "Starte Prismlauncher oder einen Fork deiner Wahl", + "label": "Prism-Ausführungsdatei" + }, + "prismlauncher_path": { + "description": "Pfad zu PrismLauncher", + "label": "PrismLauncher Pfad" + } + } +} diff --git a/proton-pass/translations/de.json b/proton-pass/translations/de.json new file mode 100644 index 0000000..27f4a74 --- /dev/null +++ b/proton-pass/translations/de.json @@ -0,0 +1,7 @@ +{ + "copied-password": "Passwort in die Zwischenablage kopiert", + "failed-list-vaults": "Auflistung der Tresore fehlgeschlagen. Bist du bei pass-cli angemeldet?", + "item-not-found": "Eintrag nicht gefunden", + "loading-items": "Lade Einträge…", + "loading-vaults": "Tresore werden geladen…" +} diff --git a/qrcode/translations/en.json b/qrcode/translations/en.json index 42707bf..8b90083 100644 --- a/qrcode/translations/en.json +++ b/qrcode/translations/en.json @@ -1,66 +1,66 @@ { - "settings": { - "titlebar": { - "label": "Show Titlebar", - "description": "Show panel name and buttons like settings and close." - }, - "generate_button": { - "label": "Show Generate Button", - "description": "Disable will submit on enter." - }, - "close_on_copy": { - "label": "Close on Copy", - "description": "Close the panel when copying the QR code." - }, - "notify": { - "label": "Notify", - "description": "Controls the notifications, minimal only notifies when Close on Copy is used.", - "all": "All", - "minimal": "Minimal", - "none": "None" - }, - "keep_on_close": { - "label": "Keep on Close", - "description": "Keep the input, QR Code, status etc when closing the panel." - }, - "size": { - "label": "QR Code Size", - "description": "Specify module size in dots (pixels)." - }, - "correction_level": { - "label": "Correction Level", - "description": "Specify error correction level.", - "l": "Lowest", - "m": "Medium", - "q": "High", - "h": "Highest" - } + "panel": { + "error": { + "copy_failed": "failed to copy the QR code.", + "generate_failed": "failed to generate the QR code.", + "missing_qrencode": "qrencode not installed." }, - "widget": { - "tooltip": "Generate a QR Code", - "glyph": { - "label": "Glyph", - "description": "Icon glyph name" - }, - "custom_image": { - "label": "Custom image", - "description": "Path to a custom image; leave empty to use the icon glyph" - } - }, - "panel": { - "placeholder": "Enter text or url...", - "status": { - "generating": "Generating...", - "error": "Error: {message}", - "ready": "QR code ready. Scan it here or click it to copy.", - "copied": "QR code copied to clipboard.", - "idle": "Enter some text, then press Generate.", - "idlebis": "Enter some text, then press Enter." - }, - "error": { - "generate_failed": "failed to generate the QR code.", - "missing_qrencode": "qrencode not installed.", - "copy_failed": "failed to copy the QR code." - } + "placeholder": "Enter text or url...", + "status": { + "copied": "QR code copied to clipboard.", + "error": "Error: {message}", + "generating": "Generating...", + "idle": "Enter some text, then press Generate.", + "idlebis": "Enter some text, then press Enter.", + "ready": "QR code ready. Scan it here or click it to copy." } + }, + "settings": { + "close_on_copy": { + "description": "Close the panel when copying the QR code.", + "label": "Close on Copy" + }, + "correction_level": { + "description": "Specify error correction level.", + "h": "Highest", + "l": "Lowest", + "label": "Correction Level", + "m": "Medium", + "q": "High" + }, + "generate_button": { + "description": "Disable will submit on enter.", + "label": "Show Generate Button" + }, + "keep_on_close": { + "description": "Keep the input, QR Code, status etc when closing the panel.", + "label": "Keep on Close" + }, + "notify": { + "all": "All", + "description": "Controls the notifications, minimal only notifies when Close on Copy is used.", + "label": "Notify", + "minimal": "Minimal", + "none": "None" + }, + "size": { + "description": "Specify module size in dots (pixels).", + "label": "QR Code Size" + }, + "titlebar": { + "description": "Show panel name and buttons like settings and close.", + "label": "Show Titlebar" + } + }, + "widget": { + "custom_image": { + "description": "Path to a custom image; leave empty to use the icon glyph", + "label": "Custom image" + }, + "glyph": { + "description": "Icon glyph name", + "label": "Glyph" + }, + "tooltip": "Generate a QR Code" + } } diff --git a/screen-toolkit/translations/en.json b/screen-toolkit/translations/en.json index 0cab860..da510e0 100644 --- a/screen-toolkit/translations/en.json +++ b/screen-toolkit/translations/en.json @@ -1,212 +1,212 @@ { + "messages": { + "capture_failed": "Screen capture failed.", + "color_picked": "Color {color} picked.", + "lens_failed": "Google Lens upload failed.", + "measure_copied": "Measurement copied.", + "measure_failed": "Measurement failed.", + "measure_result": "Measured: {width} × {height} px (copied)", + "missing_dep": "Missing dependency: {dep}", + "no_annotator": "No annotation tool found (install swappy or satty)", + "no_qr": "No QR code detected.", + "no_recorder": "No screen recorder found. Install wl-screenrec or wf-recorder.", + "no_text": "No text detected.", + "palette_failed": "Palette extraction failed.", + "picker_cancelled": "Color picker cancelled.", + "recording_failed": "Recording failed or cancelled.", + "recording_started": "Recording started. Use the red REC indicator or shortcut to stop.", + "recording_stopped": "Recording stopped. Preparing save options…", + "saved_to": "Saved: {path}", + "share_bad_args": "Share failed: no file specified.", + "share_file_not_found": "Share failed: file not found.", + "share_file_too_large": "File too large for anonymous upload (128 MB max). Add an X02 API key for larger files.", + "share_invalid_response": "Upload failed: unexpected server response.", + "share_missing_dep": "Share failed: missing dependency (curl/jq).", + "share_request_failed": "Upload request failed.", + "share_unknown_error": "Upload failed with unknown error.", + "translate_failed": "Translation failed." + }, + "ocr": { + "exit_args": "Invalid capture arguments.", + "exit_capture": "Screen capture failed.", + "exit_dep": "Missing dependency: {dep}", + "exit_process": "Image processing failed.", + "exit_unknown": "Unknown OCR error (code {code})." + }, + "panel": { + "clear": "Clear", + "clear_history": "Clear history", + "click_to_copy": "Click to copy", + "compose_mail": "Compose mail", + "copied_to_clipboard": "Saved and copied to clipboard", + "copy_all": "Copy all formats", + "copy_css_vars": "Copy as CSS vars", + "copy_hex_list": "Copy hex list", + "copy_link": "Copy link", + "copy_text": "Copy text", + "discard": "Discard", + "empty": "Pick a tool. Results appear here.", + "format_copied": "{label} copied.", + "history": "History", + "history_cleared": "History cleared", + "no_color": "Pick a color to get started", + "no_history": "No colors in history yet.", + "no_result": "No result yet.", + "no_text": "No text detected.", + "ocr_text": "Detected text", + "open_url": "Open URL", + "pick_again": "Pick again", + "ready": "Recording finished", + "ready_hint": "Preview the recording, then save or discard", + "rec": "REC", + "record_duration": "Time", + "record_ratio": "Ratio", + "record_size": "Size", + "recording_banner": "Recording…", + "recording_hint": "Recording — click the bar widget or this button to stop.", + "running": "Running…", + "save": "Save", + "saved_to": "Saved: {path}", + "search_text": "Search text", + "section_annotate": "Annotate", + "section_capture": "Capture", + "section_record": "Record", + "share": "Share", + "share_failed": "Upload failed", + "share_url": "Link copied", + "sharing": "Uploading…", + "stop": "Stop", + "subtitle": "Screen utilities", + "title": "Screen Toolkit", + "tools": "Tools", + "translate": "Translate", + "translate_label": "Translate to", + "translation": "Translation" + }, "plugin_name": "Screen Toolkit", - "widget": { - "tooltip": "Screen Toolkit", - "recording": "Recording — click to stop" + "settings": { + "filename_format": { + "description": "Template for generated filenames. Extension is added automatically. Tokens: %Y %m %d %H %M %S.", + "label": "Filename Format" + }, + "gif_max_seconds": { + "description": "Maximum duration in seconds for GIF recordings.", + "label": "Max GIF Duration" + }, + "hide_cursor": { + "description": "Exclude the cursor from recordings. Screenshots never include the cursor.", + "label": "Hide Cursor in Recordings" + }, + "panel_mode": { + "description": "Layout of the main panel. Compact is the dense grid; Full is the original spacious grid.", + "label": "Panel Mode", + "options": { + "compact": "Compact", + "full": "Full" + } + }, + "record_audio_in": { + "description": "Record the default microphone while recording.", + "label": "Record Microphone" + }, + "record_audio_out": { + "description": "Record the desktop's audio output while recording.", + "label": "Record System Audio" + }, + "record_codec": { + "description": "Video codec for gpu-screen-recorder fullscreen capture. h264 is the safest NVIDIA NVENC default; av1 needs a recent GPU.", + "label": "Fullscreen Codec", + "options": { + "av1": "AV1", + "h264": "H.264", + "hevc": "H.265 / HEVC" + } + }, + "record_copy_to_clipboard": { + "description": "Copy the recording to clipboard when done instead of showing the save dialog.", + "label": "Copy to Clipboard" + }, + "record_fps": { + "description": "Frame rate for gpu-screen-recorder fullscreen capture (15–240).", + "label": "Fullscreen Frame Rate" + }, + "record_skip_confirmation": { + "description": "Automatically save to disk when recording finishes, without showing the save dialog.", + "label": "Skip Save Confirmation" + }, + "screenshot_path": { + "description": "Where screenshots are saved. Leave empty for ~/Pictures/Screenshots.", + "label": "Screenshot Path" + }, + "search_engine_url": { + "description": "URL used when searching OCR text. Leave empty to use Google. Examples: https://duckduckgo.com/?q= or https://search.brave.com/search?q=", + "label": "Search Engine URL" + }, + "selected_ocr_lang": { + "description": "Tesseract language code (e.g. eng, deu, fra). Can be combined with + (e.g. eng+fra).", + "label": "OCR Language" + }, + "share_skip_popover": { + "description": "Skip the share popover and copy the link straight to clipboard. A notification confirms.", + "label": "Copy Link Directly" + }, + "video_path": { + "description": "Where recordings are saved. Leave empty for ~/Videos.", + "label": "Video Path" + }, + "x02_api_key": { + "description": "Optional. Get a free key at up.x02.me for permanent links and larger files. Without a key, uploads use uguu.se (anonymous, 3h, 128 MB max).", + "label": "X02 API Key" + }, + "x02_expiry": { + "description": "How long your shared links stay alive. Only applies when using an X02 API key.", + "label": "Link Expiry", + "options": { + "1d": "1 day", + "1h": "1 hour", + "30d": "30 days", + "7d": "7 days", + "permanent": "Permanent" + } + } }, "shortcut": { "label": "Screen Toolkit", "recording": "Stop recording" }, - "panel": { - "title": "Screen Toolkit", - "subtitle": "Screen utilities", - "section_capture": "Capture", - "section_annotate": "Annotate", - "section_record": "Record", - "no_color": "Pick a color to get started", - "ocr_text": "Detected text", - "ready_hint": "Preview the recording, then save or discard", - "recording_banner": "Recording…", - "tools": "Tools", - "rec": "REC", - "stop": "Stop", - "recording_hint": "Recording — click the bar widget or this button to stop.", - "ready": "Recording finished", - "save": "Save", - "discard": "Discard", - "record_size": "Size", - "record_duration": "Time", - "record_ratio": "Ratio", - "saved_to": "Saved: {path}", - "copied_to_clipboard": "Saved and copied to clipboard", - "running": "Running…", - "empty": "Pick a tool. Results appear here.", - "pick_again": "Pick again", - "copy_all": "Copy all formats", - "history": "History", - "clear_history": "Clear history", - "history_cleared": "History cleared", - "clear": "Clear", - "search_text": "Search text", - "translate_label": "Translate to", - "translate": "Translate", - "translation": "Translation", - "copy_text": "Copy text", - "copy_link": "Copy link", - "open_url": "Open URL", - "compose_mail": "Compose mail", - "copy_hex_list": "Copy hex list", - "copy_css_vars": "Copy as CSS vars", - "no_text": "No text detected.", - "share": "Share", - "sharing": "Uploading…", - "share_url": "Link copied", - "share_failed": "Upload failed", - "no_result": "No result yet.", - "click_to_copy": "Click to copy", - "no_history": "No colors in history yet.", - "format_copied": "{label} copied." - }, "tools": { - "colorpicker": "Color", "annotate": "Markup", "annotate_fullscreen": "Markup FS", "annotate_window": "Window", + "colorpicker": "Color", + "fullscreen": "Fullscreen", + "lens": "Lens", + "measure": "Measure", "ocr": "OCR", "palette": "Palette", - "measure": "Measure", "qr": "QR", - "lens": "Lens", "record": "Record", - "record_gif": "GIF", - "record_mp4": "Record", "record_fullscreen_gif": "GIF FS", "record_fullscreen_mp4": "Rec FS", - "fullscreen": "Fullscreen", + "record_gif": "GIF", + "record_mp4": "Record", "window": "Window" }, "tooltips": { - "colorpicker": "Pick a color from screen", - "ocr": "Extract text from screen", - "qr": "Scan a QR or barcode", - "palette": "Extract dominant colors from a region", - "lens": "Search image with Google Lens", - "measure": "Measure region size in pixels", "annotate": "Draw and annotate a region", "annotate_fullscreen": "Annotate the entire screen", "annotate_window": "Annotate the focused window (Hyprland)", + "colorpicker": "Pick a color from screen", + "lens": "Search image with Google Lens", + "measure": "Measure region size in pixels", + "ocr": "Extract text from screen", + "palette": "Extract dominant colors from a region", + "qr": "Scan a QR or barcode", "record": "Record a screen region as GIF or MP4", "record_fullscreen": "Record the entire screen" }, - "messages": { - "color_picked": "Color {color} picked.", - "picker_cancelled": "Color picker cancelled.", - "no_text": "No text detected.", - "no_qr": "No QR code detected.", - "lens_failed": "Google Lens upload failed.", - "capture_failed": "Screen capture failed.", - "palette_failed": "Palette extraction failed.", - "measure_result": "Measured: {width} × {height} px (copied)", - "measure_copied": "Measurement copied.", - "measure_failed": "Measurement failed.", - "translate_failed": "Translation failed.", - "recording_started": "Recording started. Use the red REC indicator or shortcut to stop.", - "recording_stopped": "Recording stopped. Preparing save options…", - "recording_failed": "Recording failed or cancelled.", - "no_recorder": "No screen recorder found. Install wl-screenrec or wf-recorder.", - "no_annotator": "No annotation tool found (install swappy or satty)", - "missing_dep": "Missing dependency: {dep}", - "share_bad_args": "Share failed: no file specified.", - "share_file_not_found": "Share failed: file not found.", - "share_missing_dep": "Share failed: missing dependency (curl/jq).", - "share_request_failed": "Upload request failed.", - "share_invalid_response": "Upload failed: unexpected server response.", - "share_file_too_large": "File too large for anonymous upload (128 MB max). Add an X02 API key for larger files.", - "share_unknown_error": "Upload failed with unknown error.", - "saved_to": "Saved: {path}" - }, - "ocr": { - "exit_dep": "Missing dependency: {dep}", - "exit_args": "Invalid capture arguments.", - "exit_capture": "Screen capture failed.", - "exit_process": "Image processing failed.", - "exit_unknown": "Unknown OCR error (code {code})." - }, - "settings": { - "screenshot_path": { - "label": "Screenshot Path", - "description": "Where screenshots are saved. Leave empty for ~/Pictures/Screenshots." - }, - "video_path": { - "label": "Video Path", - "description": "Where recordings are saved. Leave empty for ~/Videos." - }, - "filename_format": { - "label": "Filename Format", - "description": "Template for generated filenames. Extension is added automatically. Tokens: %Y %m %d %H %M %S." - }, - "selected_ocr_lang": { - "label": "OCR Language", - "description": "Tesseract language code (e.g. eng, deu, fra). Can be combined with + (e.g. eng+fra)." - }, - "search_engine_url": { - "label": "Search Engine URL", - "description": "URL used when searching OCR text. Leave empty to use Google. Examples: https://duckduckgo.com/?q= or https://search.brave.com/search?q=" - }, - "x02_api_key": { - "label": "X02 API Key", - "description": "Optional. Get a free key at up.x02.me for permanent links and larger files. Without a key, uploads use uguu.se (anonymous, 3h, 128 MB max)." - }, - "x02_expiry": { - "label": "Link Expiry", - "description": "How long your shared links stay alive. Only applies when using an X02 API key.", - "options": { - "1h": "1 hour", - "1d": "1 day", - "7d": "7 days", - "30d": "30 days", - "permanent": "Permanent" - } - }, - "share_skip_popover": { - "label": "Copy Link Directly", - "description": "Skip the share popover and copy the link straight to clipboard. A notification confirms." - }, - "record_audio_out": { - "label": "Record System Audio", - "description": "Record the desktop's audio output while recording." - }, - "record_audio_in": { - "label": "Record Microphone", - "description": "Record the default microphone while recording." - }, - "hide_cursor": { - "label": "Hide Cursor in Recordings", - "description": "Exclude the cursor from recordings. Screenshots never include the cursor." - }, - "record_codec": { - "label": "Fullscreen Codec", - "description": "Video codec for gpu-screen-recorder fullscreen capture. h264 is the safest NVIDIA NVENC default; av1 needs a recent GPU.", - "options": { - "h264": "H.264", - "hevc": "H.265 / HEVC", - "av1": "AV1" - } - }, - "record_fps": { - "label": "Fullscreen Frame Rate", - "description": "Frame rate for gpu-screen-recorder fullscreen capture (15–240)." - }, - "record_skip_confirmation": { - "label": "Skip Save Confirmation", - "description": "Automatically save to disk when recording finishes, without showing the save dialog." - }, - "record_copy_to_clipboard": { - "label": "Copy to Clipboard", - "description": "Copy the recording to clipboard when done instead of showing the save dialog." - }, - "gif_max_seconds": { - "label": "Max GIF Duration", - "description": "Maximum duration in seconds for GIF recordings." - }, - "panel_mode": { - "label": "Panel Mode", - "description": "Layout of the main panel. Compact is the dense grid; Full is the original spacious grid.", - "options": { - "compact": "Compact", - "full": "Full" - } - } + "widget": { + "recording": "Recording — click to stop", + "tooltip": "Screen Toolkit" } } diff --git a/sharednd/translations/de.json b/sharednd/translations/de.json new file mode 100644 index 0000000..82aa3d9 --- /dev/null +++ b/sharednd/translations/de.json @@ -0,0 +1,17 @@ +{ + "notify": { + "no_niri_body": "Das sieht nach einer niri-Sitzung aus (NIRI_SOCKET ist gesetzt), aber die niri-Binärdatei befindet sich nicht im PATH, sodass die Bildschirmfreigabe nicht erkannt werden kann.", + "no_niri_title": "ShareDND: niri nicht gefunden" + }, + "settings": { + "always_off_after": { + "description": "Deaktiviere Nicht stören, wenn die Freigabe endet, auch wenn diese Funktion bereits vor Beginn der Freigabe aktiviert war. Im deaktivierten Zustand wird DND nur dann deaktiviert, wenn dieses Plugin es aktiviert hat.", + "label": "Immer DND nach dem Teilen deaktivieren" + }, + "only_active": { + "description": "Es werden nur Screencasts gezählt, die aktiv gestreamt werden. Ist diese Funktion deaktiviert, bleibt Nicht stören bei jeder geöffneten Screencast-Sitzung aktiviert (auch wenn diese angehalten ist oder nichts anzeigt).", + "label": "Nur aktive Streams" + } + }, + "title": "ShareDND" +} diff --git a/shelly/translations/de.json b/shelly/translations/de.json new file mode 100644 index 0000000..a2033a4 --- /dev/null +++ b/shelly/translations/de.json @@ -0,0 +1,84 @@ +{ + "bar": { + "click_handler": { + "error": { + "missing_cli": "Shelly CLI ist nicht installiert. Bitte installiere es, um diese Funktion nutzen zu können.", + "missing_gui": "Shelly GUI ist nicht installiert. Bitte installiere es, um diese Funktion nutzen zu können." + } + }, + "text": { + "error": "?", + "updates": { + "one": "{count} Update", + "other": "{count} Updates" + } + }, + "tooltip": { + "aur_title": "AUR", + "error": { + "decode_json": "Decodierung der Ausgabe von `shelly check-updates --json` fehlgeschlagen" + }, + "flatpak_title": "Flatpak", + "no_updates": "System ist auf dem neuesten Stand", + "packages_title": "Pakete" + } + }, + "notify": { + "new_updates": { + "description": "Für dein System sind {count} neue Updates verfügbar.", + "title": "Neue Updates verfügbar" + } + }, + "settings": { + "bar_font_size": { + "description": "Die Schriftgröße des Leistentextes.", + "label": "Schriftgröße der Leiste" + }, + "bar_label": { + "description": "Bezeichnung, die in der Leiste angezeigt werden soll.", + "label": "Leistenbezeichnung", + "options": { + "count_and_label": "Zählen und beschriften (z.B. 5 Aktualisierungen)", + "count_only": "Nur zählen (z.B. 5)" + } + }, + "click_action": { + "description": "Was passiert, wenn man auf die Leiste klickt", + "label": "Klick Aktion", + "options": { + "none": "Nichts", + "open_gui": "Öffne Shelly GUI", + "open_updater": "Starte Update in Terminal" + } + }, + "color": { + "description": "Die Farbe des Textes in der Leiste", + "label": "Farbe" + }, + "glyph": { + "description": "Das von dem Label angezeigte Symbol", + "label": "Symbol" + }, + "glyph_color": { + "description": "Die Farbe des Symbols", + "label": "Symbol Farbe" + }, + "glyph_size": { + "description": "Die Größe des Symbols", + "label": "Symbol Größe" + }, + "hide_when_up_to_date": { + "description": "Ob die Leiste ausgeblendet werden soll, wenn keine Aktualisierungen verfügbar sind", + "label": "Ausblenden wenn auf dem neuesten Stand" + }, + "interval": { + "description": "Wie oft der Dienst im Hintergrund nach Updates sucht", + "label": "Aktualisierungsintervall in Sekunden" + }, + "notify": { + "description": "Ob bei verfügbaren Updates eine Benachrichtigung angezeigt werden soll", + "label": "Benachrichtigen" + } + }, + "title": "Shelly" +} diff --git a/tmux-provider/translations/fr.json b/tmux-provider/translations/fr.json new file mode 100644 index 0000000..6305cfc --- /dev/null +++ b/tmux-provider/translations/fr.json @@ -0,0 +1,4 @@ +{ + "session_attached": "Attaché", + "session_detached": "Détaché" +} diff --git a/todo/translations/de.json b/todo/translations/de.json new file mode 100644 index 0000000..10c2aaa --- /dev/null +++ b/todo/translations/de.json @@ -0,0 +1,37 @@ +{ + "clear_done_confirm": "Alle erledigten Einträge löschen?", + "clear_done_no": "Abbrechen", + "clear_done_yes": "Löschen", + "empty": "Noch keine Aufgaben – mit + hinzufügen", + "placeholder": "Neue Aufgabe…", + "prio_important": "Wichtig", + "prio_low": "Niedrig", + "prio_medium": "Mittel", + "save_failed": "Das Speichern der Aufgabenliste ist fehlgeschlagen", + "settings": { + "glyph": { + "description": "Das Symbol, das für das To Do Widget in der Leiste angezeigt wird.", + "label": "Leisten-Symbol" + }, + "todo_folder": { + "description": "Ordner, in dem die Aufgabenliste (todo.json) gespeichert ist. Standardmäßig ist dies ~/Documents/Todo", + "label": "To Do Ordner" + } + }, + "sort_manual": "Manuell", + "sort_priority": "Priorität", + "tip_add": "Aufgabe hinzufügen", + "tip_clear_done": "Alle erledigten Aufgaben löschen", + "tip_close": "Schließen", + "tip_commit": "Speichern (Enter)", + "tip_delete": "Aufgabe löschen", + "tip_done": "Als erledigt markieren", + "tip_edit": "Bearbeiten", + "tip_grip": "Zum Neuanordnen ziehen", + "tip_grip_drop": "Klicke einen anderen Griff an, um hier abzusetzen, oder diesen hier, um den Vorgang abzubrechen", + "tip_settings": "Plugin Einstellungen", + "tip_sort": "Modus wechseln", + "tip_undone": "Als Aufgabe markieren", + "title": "To Do", + "tooltip": "To Do — {count} zu erledigen" +} diff --git a/todo/translations/fr.json b/todo/translations/fr.json new file mode 100644 index 0000000..8a71fcd --- /dev/null +++ b/todo/translations/fr.json @@ -0,0 +1,10 @@ +{ + "clear_done_no": "Annuler", + "clear_done_yes": "Effacer", + "placeholder": "Nouvelle tache", + "prio_important": "Important", + "prio_low": "Basse", + "prio_medium": "Moyenne", + "tip_close": "Fermer", + "tip_edit": "Modifier" +} diff --git a/udiskie/translations/en.json b/udiskie/translations/en.json index 3824347..3f3edbb 100644 --- a/udiskie/translations/en.json +++ b/udiskie/translations/en.json @@ -1,69 +1,69 @@ { - "settings": { - "enable_notifications": { - "label": "Desktop notifications", - "description": "Show native Noctalia desktop notifications on device events." - }, - "auto_open_filemanager": { - "label": "Auto-open file manager", - "description": "Automatically open mounted drives in file manager." - }, - "file_manager_cmd": { - "label": "File manager command", - "description": "Command used to open mounted folders." - }, - "glyph": { - "label": "Bar glyph", - "description": "The glyph shown for the Udiskie widget on the bar." - }, - "show_count": { - "label": "Show device count", - "description": "Display count of mounted devices on the bar widget." - }, - "hide_when_empty": { - "label": "Hide when empty", - "description": "Hide the bar widget when no USB drives are connected." - } - }, - "tooltip_empty": "No devices mounted", - "tooltip_mounted": "Mounted devices", - "panel_title": "Udiskie Manager", - "panel_empty": "No USB drives detected", - "btn_mount_all": "Mount All", - "btn_unmount_all": "Unmount All", + "btn_docs": "Check Documentation", + "btn_eject": "Eject", "btn_mount": "Mount", + "btn_mount_all": "Mount All", + "btn_open": "Open", + "btn_poweroff": "Power Off", + "btn_retry": "Retry Connection", "btn_unlock": "Unlock", "btn_unmount": "Unmount", - "btn_eject": "Eject", - "btn_poweroff": "Power Off", - "btn_open": "Open", + "btn_unmount_all": "Unmount All", + "copy_path_tooltip": "Copy mount path", + "error_missing_dep": "udiskie binary is missing from PATH", + "no_partitions_found": "No partitions found", + "notif_drive_connected_body": "{label} connected", + "notif_drive_connected_title": "Drive Connected", + "notif_drive_mounted_body": "{label} is ready to use", + "notif_drive_mounted_title": "Drive Mounted", + "notif_drive_removed_body": "{label} disconnected", + "notif_drive_removed_title": "Drive Removed", + "notif_drive_unmounted_body": "{label} was safely unmounted", + "notif_drive_unmounted_title": "Drive Unmounted", + "notif_eject_failed_fallback": "Could not eject {device}", + "notif_eject_failed_title": "Eject Failed", + "notif_mount_all_failed_fallback": "Could not mount all devices", + "notif_mount_all_failed_title": "Mount All Failed", + "notif_mount_failed_fallback": "Could not mount {device}", + "notif_mount_failed_title": "Mount Failed", + "notif_poweroff_failed_fallback": "Could not power off {device}", + "notif_poweroff_failed_title": "Power Off Failed", + "notif_unmount_all_failed_fallback": "One or more devices are busy", + "notif_unmount_all_failed_title": "Unmount All Failed", + "notif_unmount_failed_fallback": "Device {device} is busy or in use", + "notif_unmount_failed_title": "Unmount Failed", + "notify_path_copied": "Path copied to clipboard", + "panel_empty": "No USB drives detected", + "panel_title": "Udiskie Manager", + "settings": { + "auto_open_filemanager": { + "description": "Automatically open mounted drives in file manager.", + "label": "Auto-open file manager" + }, + "enable_notifications": { + "description": "Show native Noctalia desktop notifications on device events.", + "label": "Desktop notifications" + }, + "file_manager_cmd": { + "description": "Command used to open mounted folders.", + "label": "File manager command" + }, + "glyph": { + "description": "The glyph shown for the Udiskie widget on the bar.", + "label": "Bar glyph" + }, + "hide_when_empty": { + "description": "Hide the bar widget when no USB drives are connected.", + "label": "Hide when empty" + }, + "show_count": { + "description": "Display count of mounted devices on the bar widget.", + "label": "Show device count" + } + }, + "status_locked": "Locked (LUKS)", "status_mounted": "Mounted", "status_unmounted": "Unmounted", - "status_locked": "Locked (LUKS)", - "error_missing_dep": "udiskie binary is missing from PATH", - "btn_retry": "Retry Connection", - "btn_docs": "Check Documentation", - "copy_path_tooltip": "Copy mount path", - "notify_path_copied": "Path copied to clipboard", - "no_partitions_found": "No partitions found", - "notif_drive_connected_title": "Drive Connected", - "notif_drive_connected_body": "{label} connected", - "notif_drive_removed_title": "Drive Removed", - "notif_drive_removed_body": "{label} disconnected", - "notif_drive_mounted_title": "Drive Mounted", - "notif_drive_mounted_body": "{label} is ready to use", - "notif_drive_unmounted_title": "Drive Unmounted", - "notif_drive_unmounted_body": "{label} was safely unmounted", - "notif_mount_failed_title": "Mount Failed", - "notif_mount_failed_fallback": "Could not mount {device}", - "notif_mount_all_failed_title": "Mount All Failed", - "notif_mount_all_failed_fallback": "Could not mount all devices", - "notif_unmount_failed_title": "Unmount Failed", - "notif_unmount_failed_fallback": "Device {device} is busy or in use", - "notif_unmount_all_failed_title": "Unmount All Failed", - "notif_unmount_all_failed_fallback": "One or more devices are busy", - "notif_eject_failed_title": "Eject Failed", - "notif_eject_failed_fallback": "Could not eject {device}", - "notif_poweroff_failed_title": "Power Off Failed", - "notif_poweroff_failed_fallback": "Could not power off {device}" -} \ No newline at end of file + "tooltip_empty": "No devices mounted", + "tooltip_mounted": "Mounted devices" +} diff --git a/udiskie/translations/es.json b/udiskie/translations/es.json index 96856bc..fa8ff21 100644 --- a/udiskie/translations/es.json +++ b/udiskie/translations/es.json @@ -1,69 +1,69 @@ { - "settings": { - "enable_notifications": { - "label": "Notificaciones de escritorio", - "description": "Mostrar notificaciones nativas de escritorio de Noctalia en los eventos de dispositivos." - }, - "auto_open_filemanager": { - "label": "Abrir gestor de archivos automáticamente", - "description": "Abrir automáticamente los dispositivos montados en el gestor de archivos." - }, - "file_manager_cmd": { - "label": "Comando del gestor de archivos", - "description": "Comando usado para abrir las carpetas montadas." - }, - "glyph": { - "label": "Icono de la barra", - "description": "El icono que se muestra para el widget de Udiskie en la barra." - }, - "show_count": { - "label": "Mostrar número de dispositivos", - "description": "Mostrar el número de dispositivos montados en el widget de la barra." - }, - "hide_when_empty": { - "label": "Ocultar cuando esté vacío", - "description": "Ocultar el widget de la barra cuando no haya unidades USB conectadas." - } - }, - "tooltip_empty": "No hay dispositivos montados", - "tooltip_mounted": "Dispositivos montados", - "panel_title": "Udiskie Manager", - "panel_empty": "No se detectaron unidades USB", - "btn_mount_all": "Montar todo", - "btn_unmount_all": "Desmontar todo", + "btn_docs": "Consultar documentación", + "btn_eject": "Expulsar", "btn_mount": "Montar", + "btn_mount_all": "Montar todo", + "btn_open": "Abrir", + "btn_poweroff": "Apagar", + "btn_retry": "Reintentar conexión", "btn_unlock": "Desbloquear", "btn_unmount": "Desmontar", - "btn_eject": "Expulsar", - "btn_poweroff": "Apagar", - "btn_open": "Abrir", + "btn_unmount_all": "Desmontar todo", + "copy_path_tooltip": "Copiar ruta de montaje", + "error_missing_dep": "El binario udiskie no está en el PATH", + "no_partitions_found": "No se encontraron particiones", + "notif_drive_connected_body": "{label} se ha conectado", + "notif_drive_connected_title": "Unidad conectada", + "notif_drive_mounted_body": "{label} está listo para usar", + "notif_drive_mounted_title": "Unidad montada", + "notif_drive_removed_body": "{label} se ha desconectado", + "notif_drive_removed_title": "Unidad extraída", + "notif_drive_unmounted_body": "{label} se desmontó de forma segura", + "notif_drive_unmounted_title": "Unidad desmontada", + "notif_eject_failed_fallback": "No se pudo expulsar {device}", + "notif_eject_failed_title": "Error al expulsar", + "notif_mount_all_failed_fallback": "No se pudieron montar todos los dispositivos", + "notif_mount_all_failed_title": "Error al montar todo", + "notif_mount_failed_fallback": "No se pudo montar {device}", + "notif_mount_failed_title": "Error al montar", + "notif_poweroff_failed_fallback": "No se pudo apagar {device}", + "notif_poweroff_failed_title": "Error al apagar", + "notif_unmount_all_failed_fallback": "Uno o más dispositivos están ocupados", + "notif_unmount_all_failed_title": "Error al desmontar todo", + "notif_unmount_failed_fallback": "El dispositivo {device} está ocupado o en uso", + "notif_unmount_failed_title": "Error al desmontar", + "notify_path_copied": "Ruta copiada al portapapeles", + "panel_empty": "No se detectaron unidades USB", + "panel_title": "Udiskie Manager", + "settings": { + "auto_open_filemanager": { + "description": "Abrir automáticamente los dispositivos montados en el gestor de archivos.", + "label": "Abrir gestor de archivos automáticamente" + }, + "enable_notifications": { + "description": "Mostrar notificaciones nativas de escritorio de Noctalia en los eventos de dispositivos.", + "label": "Notificaciones de escritorio" + }, + "file_manager_cmd": { + "description": "Comando usado para abrir las carpetas montadas.", + "label": "Comando del gestor de archivos" + }, + "glyph": { + "description": "El icono que se muestra para el widget de Udiskie en la barra.", + "label": "Icono de la barra" + }, + "hide_when_empty": { + "description": "Ocultar el widget de la barra cuando no haya unidades USB conectadas.", + "label": "Ocultar cuando esté vacío" + }, + "show_count": { + "description": "Mostrar el número de dispositivos montados en el widget de la barra.", + "label": "Mostrar número de dispositivos" + } + }, + "status_locked": "Bloqueado (LUKS)", "status_mounted": "Montado", "status_unmounted": "Desmontado", - "status_locked": "Bloqueado (LUKS)", - "error_missing_dep": "El binario udiskie no está en el PATH", - "btn_retry": "Reintentar conexión", - "btn_docs": "Consultar documentación", - "copy_path_tooltip": "Copiar ruta de montaje", - "notify_path_copied": "Ruta copiada al portapapeles", - "no_partitions_found": "No se encontraron particiones", - "notif_drive_connected_title": "Unidad conectada", - "notif_drive_connected_body": "{label} se ha conectado", - "notif_drive_removed_title": "Unidad extraída", - "notif_drive_removed_body": "{label} se ha desconectado", - "notif_drive_mounted_title": "Unidad montada", - "notif_drive_mounted_body": "{label} está listo para usar", - "notif_drive_unmounted_title": "Unidad desmontada", - "notif_drive_unmounted_body": "{label} se desmontó de forma segura", - "notif_mount_failed_title": "Error al montar", - "notif_mount_failed_fallback": "No se pudo montar {device}", - "notif_mount_all_failed_title": "Error al montar todo", - "notif_mount_all_failed_fallback": "No se pudieron montar todos los dispositivos", - "notif_unmount_failed_title": "Error al desmontar", - "notif_unmount_failed_fallback": "El dispositivo {device} está ocupado o en uso", - "notif_unmount_all_failed_title": "Error al desmontar todo", - "notif_unmount_all_failed_fallback": "Uno o más dispositivos están ocupados", - "notif_eject_failed_title": "Error al expulsar", - "notif_eject_failed_fallback": "No se pudo expulsar {device}", - "notif_poweroff_failed_title": "Error al apagar", - "notif_poweroff_failed_fallback": "No se pudo apagar {device}" + "tooltip_empty": "No hay dispositivos montados", + "tooltip_mounted": "Dispositivos montados" } diff --git a/um5606_fan_state/translations/de.json b/um5606_fan_state/translations/de.json new file mode 100644 index 0000000..5046cb9 --- /dev/null +++ b/um5606_fan_state/translations/de.json @@ -0,0 +1,12 @@ +{ + "settings": { + "poll_interval": { + "description": "Abfrageintervall in ms", + "label": "Abfrageintervall" + }, + "show_label": { + "label": "Label anzeigen" + } + }, + "title": "ASUS UM5606 Fan State" +} diff --git a/upbeat/translations/de.json b/upbeat/translations/de.json new file mode 100644 index 0000000..ad0245e --- /dev/null +++ b/upbeat/translations/de.json @@ -0,0 +1,16 @@ +{ + "settings": { + "beat_display": { + "description": "Internet-Zeitformat umschalten (.beats)", + "label": ".beats anzeigen" + }, + "show_centibeats": { + "description": "Anzeige der Subbeats ein-/ausschalten (.xx)", + "label": "Subbeats anzeigen" + }, + "time_format_toggle": { + "description": "24-Stunden-Anzeige", + "label": "24-Stunden-Anzeige umschalten" + } + } +} diff --git a/web-launcher/translations/de.json b/web-launcher/translations/de.json new file mode 100644 index 0000000..7b0422b --- /dev/null +++ b/web-launcher/translations/de.json @@ -0,0 +1,27 @@ +{ + "notify": { + "message": "Öffne {name}", + "title": "Websites" + }, + "settings": { + "command": { + "description": "Befehl zum Starten der Website. Beispiel: \"firefox --new-window\"", + "label": "Befehl" + }, + "icon_provider": { + "description": "Icon Downloadquelle", + "direct": "Website-eigenes favicon.ico", + "duckduckgo": "DuckDuckGo", + "google": "Google", + "label": "Icon Anbieter" + }, + "links": { + "description": "Format: Name|https://url", + "label": "Links" + }, + "notify": { + "description": "Beim Öffnen des Links benachrichtigen", + "label": "Benachrichtigen" + } + } +} diff --git a/zed-provider/translations/de.json b/zed-provider/translations/de.json new file mode 100644 index 0000000..7056a93 --- /dev/null +++ b/zed-provider/translations/de.json @@ -0,0 +1,17 @@ +{ + "database-empty": "Die Zed-Datenbank ist leer oder wurde nicht gefunden", + "filter-empty": "Filter: \"{filter}\"", + "loading": "Wird geladen…", + "loading-subtitle": "Lese Zed-Projekte", + "no-projects-found": "Keine Projekte gefunden", + "settings": { + "db_path": { + "description": "Pfad zu Zed's db.sqlite Datei", + "label": "Zed-Datenbankpfad" + }, + "max_results": { + "description": "Maximale Anzahl der anzuzeigenden Projekte", + "label": "Maximale Ergebnisse" + } + } +}