i18n: push/pull no overwrite

This commit is contained in:
Lemmy
2026-08-08 17:23:59 -04:00
parent 60b053c076
commit 95595088d9
11 changed files with 335 additions and 331 deletions
+89 -89
View File
@@ -1,120 +1,120 @@
{
"state": {
"tip": {
"online": "9Router: connected",
"offline": "9Router: offline",
"auth_required": "9Router: login required"
},
"combos": "{count} combo(s)"
},
"login": {
"title": "9Router Login",
"hint": "The dashboard requires authentication. Enter your 9Router password to continue.",
"password_placeholder": "Password…",
"submit": "Log in"
},
"list": {
"title": "9Router — Combos",
"refresh": "Refresh",
"new_combo": "New Combo",
"search": "Search combos…",
"empty": "No combos yet. Create one to get started.",
"no_match": "No combos match your search.",
"open": "Open combo",
"delete": "Delete combo",
"delete_confirm": "Confirm delete",
"delete_cancel": "Cancel",
"kind": "Kind: {kind}"
},
"detail": {
"back": "Back to combos",
"models_count": "{count} model(s)",
"refresh": "Refresh",
"delete": "Delete combo",
"delete_confirm": "Delete this combo?",
"delete_yes": "Yes, delete",
"delete_no": "Cancel",
"kind_label": "Kind",
"rename": "Rename",
"rename_placeholder": "New name…",
"rename_save": "Save",
"rename_cancel": "Cancel",
"models_title": "Model Chain",
"no_models": "This combo has no models yet.",
"drag_hint": "Drag a model to reorder",
"add_model": "Add model",
"remove_model": "Remove model",
"move_up": "Move up",
"move_down": "Move down"
},
"add_model": {
"title": "Add Model",
"back": "Back to combo",
"search": "Search models…",
"empty": "No models available.",
"no_match": "No models match your search."
"no_match": "No models match your search.",
"search": "Search models…",
"title": "Add Model"
},
"create": {
"title": "New Combo",
"back": "Back",
"cancel": "Cancel",
"kind_label": "Kind",
"models_hint": "One model per line, in fallback order (e.g. cc/claude-opus-4-7).",
"models_label": "Models",
"models_placeholder": "cc/claude-opus-4-7\nglm/glm-5.1",
"name_label": "Name",
"name_placeholder": "e.g. my-fallback",
"models_label": "Models",
"models_hint": "One model per line, in fallback order (e.g. cc/claude-opus-4-7).",
"models_placeholder": "cc/claude-opus-4-7\nglm/glm-5.1",
"kind_label": "Kind",
"cancel": "Cancel",
"submit": "Create"
"submit": "Create",
"title": "New Combo"
},
"kind": {
"none": "None",
"fallback": "Fallback",
"round_robin": "Round-robin",
"fusion": "Fusion"
"detail": {
"add_model": "Add model",
"back": "Back to combos",
"delete": "Delete combo",
"delete_confirm": "Delete this combo?",
"delete_no": "Cancel",
"delete_yes": "Yes, delete",
"drag_hint": "Drag a model to reorder",
"kind_label": "Kind",
"models_count": "{count} model(s)",
"models_title": "Model Chain",
"move_down": "Move down",
"move_up": "Move up",
"no_models": "This combo has no models yet.",
"refresh": "Refresh",
"remove_model": "Remove model",
"rename": "Rename",
"rename_cancel": "Cancel",
"rename_placeholder": "New name…",
"rename_save": "Save"
},
"error": {
"dismiss": "Dismiss",
"connection_failed": "Could not connect to 9Router",
"http_status": "HTTP {status}",
"bad_response": "Unexpected response from 9Router",
"auth_required": "Authentication required",
"login_failed": "Login failed",
"need_password": "Please enter your password.",
"reorder_failed": "Failed to reorder models",
"add_model_failed": "Failed to add model",
"remove_model_failed": "Failed to remove model",
"invalid_name": "Name can only contain letters, numbers, -, _ and .",
"auth_required": "Authentication required",
"bad_response": "Unexpected response from 9Router",
"connection_failed": "Could not connect to 9Router",
"create_failed": "Failed to create combo",
"need_name_models": "A name and at least one model are required.",
"delete_failed": "Failed to delete combo",
"dismiss": "Dismiss",
"http_status": "HTTP {status}",
"invalid_name": "Name can only contain letters, numbers, -, _ and .",
"kind_failed": "Failed to update kind",
"login_failed": "Login failed",
"need_name_models": "A name and at least one model are required.",
"need_password": "Please enter your password.",
"remove_model_failed": "Failed to remove model",
"rename_failed": "Failed to rename combo",
"kind_failed": "Failed to update kind"
"reorder_failed": "Failed to reorder models"
},
"kind": {
"fallback": "Fallback",
"fusion": "Fusion",
"none": "None",
"round_robin": "Round-robin"
},
"list": {
"delete": "Delete combo",
"delete_cancel": "Cancel",
"delete_confirm": "Confirm delete",
"empty": "No combos yet. Create one to get started.",
"kind": "Kind: {kind}",
"new_combo": "New Combo",
"no_match": "No combos match your search.",
"open": "Open combo",
"refresh": "Refresh",
"search": "Search combos…",
"title": "9Router — Combos"
},
"login": {
"hint": "The dashboard requires authentication. Enter your 9Router password to continue.",
"password_placeholder": "Password…",
"submit": "Log in",
"title": "9Router Login"
},
"settings": {
"server_host": {
"label": "Server Host",
"description": "Hostname of the 9Router dashboard. Default: 127.0.0.1."
},
"server_port": {
"label": "Server Port",
"description": "Port of the 9Router dashboard. Default: 20128."
},
"data_dir": {
"label": "Data Directory",
"description": "9Router data directory (used to compute the CLI token when the dashboard requires login). Default: ~/.9router."
"description": "9Router data directory (used to compute the CLI token when the dashboard requires login). Default: ~/.9router.",
"label": "Data Directory"
},
"debug_logging": {
"description": "Print debug messages to the Noctalia log.",
"label": "Debug Logging"
},
"language": {
"label": "Language",
"description": "Language for this plugin's UI. 'Auto' follows the Noctalia shell language.",
"label": "Language",
"options": {
"auto": "Auto (follow shell)",
"en": "English",
"vi": "Tiếng Việt"
}
},
"debug_logging": {
"label": "Debug Logging",
"description": "Print debug messages to the Noctalia log."
"server_host": {
"description": "Hostname of the 9Router dashboard. Default: 127.0.0.1.",
"label": "Server Host"
},
"server_port": {
"description": "Port of the 9Router dashboard. Default: 20128.",
"label": "Server Port"
}
},
"state": {
"combos": "{count} combo(s)",
"tip": {
"auth_required": "9Router: login required",
"offline": "9Router: offline",
"online": "9Router: connected"
}
}
}
+89 -89
View File
@@ -1,120 +1,120 @@
{
"state": {
"tip": {
"online": "9Router: đã kết nối",
"offline": "9Router: ngoại tuyến",
"auth_required": "9Router: cần đăng nhập"
},
"combos": "{count} combo"
},
"login": {
"title": "Đăng nhập 9Router",
"hint": "Dashboard yêu cầu xác thực. Nhập mật khẩu 9Router của bạn để tiếp tục.",
"password_placeholder": "Mật khẩu…",
"submit": "Đăng nhập"
},
"list": {
"title": "9Router — Combos",
"refresh": "Làm mới",
"new_combo": "Combo mới",
"search": "Tìm combo…",
"empty": "Chưa có combo nào. Tạo một combo để bắt đầu.",
"no_match": "Không có combo nào khớp tìm kiếm.",
"open": "Mở combo",
"delete": "Xóa combo",
"delete_confirm": "Xác nhận xóa",
"delete_cancel": "Hủy",
"kind": "Loại: {kind}"
},
"detail": {
"back": "Quay lại danh sách",
"models_count": "{count} model",
"refresh": "Làm mới",
"delete": "Xóa combo",
"delete_confirm": "Xóa combo này?",
"delete_yes": "Có, xóa",
"delete_no": "Hủy",
"kind_label": "Loại",
"rename": "Đổi tên",
"rename_placeholder": "Tên mới…",
"rename_save": "Lưu",
"rename_cancel": "Hủy",
"models_title": "Chuỗi Model",
"no_models": "Combo này chưa có model nào.",
"drag_hint": "Kéo model để sắp xếp lại",
"add_model": "Thêm model",
"remove_model": "Xóa model",
"move_up": "Di chuyển lên",
"move_down": "Di chuyển xuống"
},
"add_model": {
"title": "Thêm Model",
"back": "Quay lại combo",
"search": "Tìm model…",
"empty": "Không có model nào.",
"no_match": "Không có model khớp tìm kiếm."
"no_match": "Không có model khớp tìm kiếm.",
"search": "Tìm model…",
"title": "Thêm Model"
},
"create": {
"title": "Combo mới",
"back": "Quay lại",
"cancel": "Hủy",
"kind_label": "Loại",
"models_hint": "Mỗi model một dòng, theo thứ tự fallback (vd: cc/claude-opus-4-7).",
"models_label": "Models",
"models_placeholder": "cc/claude-opus-4-7\nglm/glm-5.1",
"name_label": "Tên",
"name_placeholder": "vd: my-fallback",
"models_label": "Models",
"models_hint": "Mỗi model một dòng, theo thứ tự fallback (vd: cc/claude-opus-4-7).",
"models_placeholder": "cc/claude-opus-4-7\nglm/glm-5.1",
"kind_label": "Loại",
"cancel": "Hủy",
"submit": "Tạo"
"submit": "Tạo",
"title": "Combo mới"
},
"kind": {
"none": "Không",
"fallback": "Fallback",
"round_robin": "Round-robin",
"fusion": "Fusion"
"detail": {
"add_model": "Thêm model",
"back": "Quay lại danh sách",
"delete": "Xóa combo",
"delete_confirm": "Xóa combo này?",
"delete_no": "Hủy",
"delete_yes": "Có, xóa",
"drag_hint": "Kéo model để sắp xếp lại",
"kind_label": "Loại",
"models_count": "{count} model",
"models_title": "Chuỗi Model",
"move_down": "Di chuyển xuống",
"move_up": "Di chuyển lên",
"no_models": "Combo này chưa có model nào.",
"refresh": "Làm mới",
"remove_model": "Xóa model",
"rename": "Đổi tên",
"rename_cancel": "Hủy",
"rename_placeholder": "Tên mới…",
"rename_save": "Lưu"
},
"error": {
"dismiss": "Đóng",
"connection_failed": "Không kết nối được 9Router",
"http_status": "HTTP {status}",
"bad_response": "Phản hồi không mong đợi từ 9Router",
"auth_required": "Cần xác thực",
"login_failed": "Đăng nhập thất bại",
"need_password": "Vui lòng nhập mật khẩu.",
"reorder_failed": "Không thể sắp xếp lại model",
"add_model_failed": "Không thể thêm model",
"remove_model_failed": "Không thể xóa model",
"invalid_name": "Tên chỉ được chứa chữ, số, -, _ và .",
"auth_required": "Cần xác thực",
"bad_response": "Phản hồi không mong đợi từ 9Router",
"connection_failed": "Không kết nối được 9Router",
"create_failed": "Không thể tạo combo",
"need_name_models": "Cần tên và ít nhất một model.",
"delete_failed": "Không xóa được combo",
"dismiss": "Đóng",
"http_status": "HTTP {status}",
"invalid_name": "Tên chỉ được chứa chữ, số, -, _ và .",
"kind_failed": "Không cập nhật được loại",
"login_failed": "Đăng nhập thất bại",
"need_name_models": "Cần tên và ít nhất một model.",
"need_password": "Vui lòng nhập mật khẩu.",
"remove_model_failed": "Không thể xóa model",
"rename_failed": "Không đổi tên được combo",
"kind_failed": "Không cập nhật được loại"
"reorder_failed": "Không thể sắp xếp lại model"
},
"kind": {
"fallback": "Fallback",
"fusion": "Fusion",
"none": "Không",
"round_robin": "Round-robin"
},
"list": {
"delete": "Xóa combo",
"delete_cancel": "Hủy",
"delete_confirm": "Xác nhận xóa",
"empty": "Chưa có combo nào. Tạo một combo để bắt đầu.",
"kind": "Loại: {kind}",
"new_combo": "Combo mới",
"no_match": "Không có combo nào khớp tìm kiếm.",
"open": "Mở combo",
"refresh": "Làm mới",
"search": "Tìm combo…",
"title": "9Router — Combos"
},
"login": {
"hint": "Dashboard yêu cầu xác thực. Nhập mật khẩu 9Router của bạn để tiếp tục.",
"password_placeholder": "Mật khẩu…",
"submit": "Đăng nhập",
"title": "Đăng nhập 9Router"
},
"settings": {
"server_host": {
"label": "Máy chủ",
"description": "Hostname của dashboard 9Router. Mặc định: 127.0.0.1."
},
"server_port": {
"label": "Cổng",
"description": "Cổng của dashboard 9Router. Mặc định: 20128."
},
"data_dir": {
"label": "Thư mục dữ liệu",
"description": "Thư mục dữ liệu 9Router (dùng để tính CLI token khi dashboard yêu cầu đăng nhập). Mặc định: ~/.9router."
"description": "Thư mục dữ liệu 9Router (dùng để tính CLI token khi dashboard yêu cầu đăng nhập). Mặc định: ~/.9router.",
"label": "Thư mục dữ liệu"
},
"debug_logging": {
"description": "In thông điệp gỡ lỗi vào log Noctalia.",
"label": "Ghi log gỡ lỗi"
},
"language": {
"label": "Ngôn ngữ",
"description": "Ngôn ngữ giao diện của plugin. 'Tự động' theo ngôn ngữ shell Noctalia.",
"label": "Ngôn ngữ",
"options": {
"auto": "Tự động (theo shell)",
"en": "English",
"vi": "Tiếng Việt"
}
},
"debug_logging": {
"label": "Ghi log gỡ lỗi",
"description": "In thông điệp gỡ lỗi vào log Noctalia."
"server_host": {
"description": "Hostname của dashboard 9Router. Mặc định: 127.0.0.1.",
"label": "Máy chủ"
},
"server_port": {
"description": "Cổng của dashboard 9Router. Mặc định: 20128.",
"label": "Cổng"
}
},
"state": {
"combos": "{count} combo",
"tip": {
"auth_required": "9Router: cần đăng nhập",
"offline": "9Router: ngoại tuyến",
"online": "9Router: đã kết nối"
}
}
}
+4
View File
@@ -1,5 +1,9 @@
{
"action_update": "Mettre à jour",
"caption_ignored": {
"one": "1 paquet ignoré",
"other": "{count} paquets ignorés"
},
"notify_updates": {
"one": "1 paquet à mettre à jour",
"other": "{count} paquets à mettre à jour"
+3 -3
View File
@@ -56,12 +56,12 @@
"group_remove_failed": "Could not disband the output group.",
"group_requires_two": "Select at least two available outputs.",
"group_switch_failed": "The output group was created, but could not be selected.",
"invalid_audio_data": "The audio service returned invalid data.",
"invalid_slot": "The keybind number must be a whole number from 1 to 99.",
"invalid_volume": "The requested volume is invalid.",
"input_port_not_found": "The selected input port no longer exists.",
"input_port_switch_failed": "Could not switch the input port.",
"input_port_unavailable": "The selected input port is not currently available.",
"invalid_audio_data": "The audio service returned invalid data.",
"invalid_slot": "The keybind number must be a whole number from 1 to 99.",
"invalid_volume": "The requested volume is invalid.",
"no_visible_devices": "There are no visible devices to cycle through.",
"pactl_missing": "pactl is required but was not found on PATH.",
"scan_in_progress": "Bluetooth scanning is already in progress.",
+46 -46
View File
@@ -1,47 +1,47 @@
{
"panel": {
"apply": "Apply",
"apply_notification_title": "Apply",
"created_by": "Created by {author}",
"description": "Description: {description}",
"download_failed": "Download failed",
"download_ok": "Download complete",
"install": "Install",
"install_notification_title": "Install",
"installed_title": "Installed Configs",
"notification_title": "Config Swap",
"origin": "Origin: {origin}",
"refresh": "Refresh",
"show_list": "Show List",
"show_store": "Show Store",
"store_title": "Config Store",
"title": "Config Swap",
"welcome_message_title": "Welcome to Config Swap!",
"welcome_message1": "Please read this carefully before you continue.",
"welcome_message2": "This plugin can replace your current Noctalia configuration. We recommend backing up your current settings first — use the Save button in the Installed section. Backups are stored in ~/Config-Swap.",
"not_agree": "Not now",
"agree": "I understand",
"confirmation": "Apply this configuration?",
"description_confirmation": "This will replace your current settings.toml and wallpaper. A backup is not created automatically unless you saved one first.",
"cancel": "Cancel",
"confirmation_delete": "Are you sure too delete ",
"delete": "delete",
"description_setting1": "Save your current configuration under a custom name at ~/Config-Swap/{name}. A default info.json is created and can be edited later at ~/Config-Swap/{name}/info.json. To set a preview, you can add preview.png to the config folder. This also works for wallpapers using wallpaper.png",
"save": "save",
"info_store_title": "Info Store section",
"info_store_github_button": "github",
"info_store_copy_link_success": "copy link success",
"info_store_what_is_title": "What is the Store?",
"info_store_what_is_body": "The Store lists community-submitted configuration profiles hosted on the Config-Swap-Box GitHub repository. Each profile bundles a settings.toml, a preview image, and an optional wallpaper.",
"info_store_installing_title": "Installing a profile",
"info_store_installing_body": "Pressing install downloads the profile's files into ~/Config-Swap/{name}. This does not change your current configuration yet.",
"info_store_applying_title": "Applying a profile",
"info_store_applying_body": "Pressing apply replaces your active settings.toml and wallpaper with the selected profile. This is not reversible unless you saved a backup first from the Setting section.",
"info_store_community_title": "Community content",
"info_store_community_body": "Profiles are submitted by community members and are reviewed by the owner.",
"info_store_rate_limits_title": "Rate limits",
"info_store_rate_limits_body": "The store list is fetched from the GitHub API, which limits unauthenticated requests. Avoid refreshing repeatedly in a short period of time.",
"info_how_to_submite_config_title": "How to submit a configuration",
"info_how_to_submite_config_body": "You can contribute to Config Swap by adding your own configuration files and wallpaper to the store so others can use them.\n\nTo do so:\n* Go to the Settings section and save your configuration. The plugin will copy your settings.toml and create an info.json file.\n* Take a preview image and wallpaper, then go to ~/Config-Swap/{name} and copy your preview.png and wallpaper.png files. The exact names are required.\n* Update your info.json with important information such as the author and description.\n* Go to the GitHub page linked from the information panel in the Store section and create a pull request.\n* Wait for review, and then your configuration can be shared."
}
}
"panel": {
"agree": "I understand",
"apply": "Apply",
"apply_notification_title": "Apply",
"cancel": "Cancel",
"confirmation": "Apply this configuration?",
"confirmation_delete": "Are you sure too delete ",
"created_by": "Created by {author}",
"delete": "delete",
"description": "Description: {description}",
"description_confirmation": "This will replace your current settings.toml and wallpaper. A backup is not created automatically unless you saved one first.",
"description_setting1": "Save your current configuration under a custom name at ~/Config-Swap/{name}. A default info.json is created and can be edited later at ~/Config-Swap/{name}/info.json. To set a preview, you can add preview.png to the config folder. This also works for wallpapers using wallpaper.png",
"download_failed": "Download failed",
"download_ok": "Download complete",
"info_how_to_submite_config_body": "You can contribute to Config Swap by adding your own configuration files and wallpaper to the store so others can use them.\n\nTo do so:\n* Go to the Settings section and save your configuration. The plugin will copy your settings.toml and create an info.json file.\n* Take a preview image and wallpaper, then go to ~/Config-Swap/{name} and copy your preview.png and wallpaper.png files. The exact names are required.\n* Update your info.json with important information such as the author and description.\n* Go to the GitHub page linked from the information panel in the Store section and create a pull request.\n* Wait for review, and then your configuration can be shared.",
"info_how_to_submite_config_title": "How to submit a configuration",
"info_store_applying_body": "Pressing apply replaces your active settings.toml and wallpaper with the selected profile. This is not reversible unless you saved a backup first from the Setting section.",
"info_store_applying_title": "Applying a profile",
"info_store_community_body": "Profiles are submitted by community members and are reviewed by the owner.",
"info_store_community_title": "Community content",
"info_store_copy_link_success": "copy link success",
"info_store_github_button": "github",
"info_store_installing_body": "Pressing install downloads the profile's files into ~/Config-Swap/{name}. This does not change your current configuration yet.",
"info_store_installing_title": "Installing a profile",
"info_store_rate_limits_body": "The store list is fetched from the GitHub API, which limits unauthenticated requests. Avoid refreshing repeatedly in a short period of time.",
"info_store_rate_limits_title": "Rate limits",
"info_store_title": "Info Store section",
"info_store_what_is_body": "The Store lists community-submitted configuration profiles hosted on the Config-Swap-Box GitHub repository. Each profile bundles a settings.toml, a preview image, and an optional wallpaper.",
"info_store_what_is_title": "What is the Store?",
"install": "Install",
"install_notification_title": "Install",
"installed_title": "Installed Configs",
"not_agree": "Not now",
"notification_title": "Config Swap",
"origin": "Origin: {origin}",
"refresh": "Refresh",
"save": "save",
"show_list": "Show List",
"show_store": "Show Store",
"store_title": "Config Store",
"title": "Config Swap",
"welcome_message1": "Please read this carefully before you continue.",
"welcome_message2": "This plugin can replace your current Noctalia configuration. We recommend backing up your current settings first — use the Save button in the Installed section. Backups are stored in ~/Config-Swap.",
"welcome_message_title": "Welcome to Config Swap!"
}
}
+4 -4
View File
@@ -163,7 +163,7 @@
"description_not_editable": "The description in this shortcut cannot be changed safely.",
"description_required": "Enter a shortcut description.",
"different_source": "These shortcuts are stored in different files and cannot be reordered safely.",
"file_too_large": "The keybinding file is too large.",
"file_too_large": "The managed keybinding file is too large.",
"hidden_block_invalid": "The hidden shortcut block is incomplete or damaged, so it was left unchanged.",
"integrate_failed": "The managed file could not be included from the main configuration.",
"invalid_command_kind": "The selected command type is not supported.",
@@ -182,9 +182,9 @@
"managed_rename_failed": "The managed keybinding file could not be installed atomically.",
"managed_temporary_collision": "A safe temporary filename could not be allocated.",
"managed_write_failed": "The managed keybinding file could not be written.",
"mango_command_hash_unsupported": "MangoWC commands containing # are not supported by this first writer version.",
"migration_cleanup_changed": "The configuration or legacy Keymap file changed during migration, so automatic cleanup stopped for safety.",
"migration_remove_failed": "The legacy Keymap file could not be removed, so the original configuration was restored.",
"mango_command_hash_unsupported": "MangoWC commands containing # are not supported by this first writer version.",
"native_update_unsupported": "Existing shortcuts cannot be converted to native actions safely.",
"preflight_failed": "The configuration safety check could not be started.",
"recovery_reload_failed": "The previous files were restored, but reloading the restored compositor configuration also failed.",
@@ -199,7 +199,7 @@
"source_rename_failed": "The main configuration could not be updated atomically.",
"source_temporary_collision": "A safe temporary filename could not be allocated.",
"source_unreadable": "The main compositor configuration could not be read.",
"source_write_failed": "The main configuration file could not be written.",
"source_write_failed": "The managed file could not be included from the main configuration.",
"stale_category": "The category changed while its editor was open. Refresh and try again.",
"stale_context": "The compositor configuration changed while the creator was open. Refresh and reopen the creator.",
"symlink_unsupported": "The main or managed configuration is a symbolic link. Saving is blocked to preserve the link safely.",
@@ -214,7 +214,7 @@
"verify_failed": "The compositor rejected the generated configuration.",
"verify_start_failed": "Configuration validation could not be started; no changes were kept.",
"verify_timeout": "Configuration validation timed out; no changes were kept.",
"write_failed": "The keybinding file could not be written."
"write_failed": "The managed keybinding file could not be written."
},
"hyprland_hint": "Hyprland supports one or more ordinary keys. Click selected keys again to remove them.",
"list_hint": "Choose modifiers and enter the key or comma-separated key sequence. You can also create shortcuts from the keyboard view.",
+14 -14
View File
@@ -3,6 +3,7 @@
"add_remove": "Add/Remove",
"adding_removing": "Adding/removing files...",
"arch": "Architectures",
"build_status": "Build Status",
"checking_out": "Checking out...",
"checkout": "Checkout package",
"commit": "Commit package",
@@ -21,11 +22,16 @@
"loading": "Loading...",
"loading_packages": "Loading packages...",
"my_projects": "My Projects",
"no_builds": "No build results.",
"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.",
"rebuild": "Rebuild package",
"rebuilding_pkg": "Rebuilding package...",
"reload_projects": "Reload projects",
@@ -43,25 +49,19 @@
"service_remote_run": "Service Remote Run",
"service_run": "Service Manual Run",
"service_run_all": "Service Run All",
"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.",
"build_status": "Build Status",
"status_refresh": "Refresh status",
"status_loading": "Loading status...",
"no_builds": "No build results.",
"status_succeeded": "Succeeded",
"status_finished": "Finished",
"status_failed": "Failed",
"status_unresolvable": "Unresolvable",
"status_blocked": "Blocked",
"status_building": "Building",
"status_excluded": "Excluded",
"status_failed": "Failed",
"status_finished": "Finished",
"status_loading": "Loading status...",
"status_refresh": "Refresh status",
"status_scheduled": "Scheduled",
"status_signing": "Signing",
"status_blocked": "Blocked",
"status_excluded": "Excluded",
"status_succeeded": "Succeeded",
"status_unbuildable": "Unbuildable",
"status_unknown": "Unknown",
"status_unresolvable": "Unresolvable",
"update_changes": "Update {name}.changes",
"update_dir": "Update directory",
"updating_dir": "Updating directory..."
+46 -46
View File
@@ -1,59 +1,59 @@
{
"settings": {
"refresh_interval": {
"label": "Refresh interval (ms)",
"description": "How often the process list is resampled."
},
"sort_by": {
"label": "Default sort column",
"description": "Column the process table is sorted by when the panel opens.",
"options": {
"cpu": "CPU",
"mem": "Memory",
"pid": "PID",
"cmd": "Command"
}
},
"kill_command": {
"label": "Kill command",
"description": "Command run against a selected PID (the PID is appended). Empty uses kill -TERM."
},
"show_count": {
"label": "Show process count",
"description": "Append the number of processes to the bar widget text."
},
"glyph": {
"label": "Widget icon",
"description": "Glyph shown in the bar widget."
},
"icon_only": {
"label": "Icon only",
"description": "Show only a CPU icon in the bar widget; details move to the tooltip."
}
},
"widget": {
"tooltip": "CPU {cpu}% RAM {ram}% · {n} processes"
},
"panel": {
"title": "Processes",
"refreshed_at": "Updated {time}",
"refresh": "Refresh",
"load": "Load",
"search_placeholder": "Filter by name, user or PID",
"sort_asc": "asc",
"sort_desc": "desc",
"col": {
"pid": "PID",
"cmd": "COMMAND",
"cpu": "CPU%",
"cpu_raw": "CPU",
"mem": "MEM%",
"mem_raw": "MEM",
"pid": "PID",
"rss": "RSS",
"stat": "S",
"cmd": "COMMAND"
"stat": "S"
},
"count": "{n} processes",
"kill_tip": "Kill {pid}",
"load": "Load",
"no_processes": "No matching processes",
"kill_tip": "Kill {pid}"
"refresh": "Refresh",
"refreshed_at": "Updated {time}",
"search_placeholder": "Filter by name, user or PID",
"sort_asc": "asc",
"sort_desc": "desc",
"title": "Processes"
},
"settings": {
"glyph": {
"description": "Glyph shown in the bar widget.",
"label": "Widget icon"
},
"icon_only": {
"description": "Show only a CPU icon in the bar widget; details move to the tooltip.",
"label": "Icon only"
},
"kill_command": {
"description": "Command run against a selected PID (the PID is appended). Empty uses kill -TERM.",
"label": "Kill command"
},
"refresh_interval": {
"description": "How often the process list is resampled.",
"label": "Refresh interval (ms)"
},
"show_count": {
"description": "Append the number of processes to the bar widget text.",
"label": "Show process count"
},
"sort_by": {
"description": "Column the process table is sorted by when the panel opens.",
"label": "Default sort column",
"options": {
"cmd": "Command",
"cpu": "CPU",
"mem": "Memory",
"pid": "PID"
}
}
},
"widget": {
"tooltip": "CPU {cpu}% RAM {ram}% · {n} processes"
}
}
+16 -16
View File
@@ -1,25 +1,25 @@
{
"hint_title": "Run a shell command",
"hint_subtitle": "Type a command after /sh and press Enter to open it in your terminal",
"run_title": "Run: {command}",
"run_subtitle": "Opens in your default terminal",
"run_subtitle_found": "{command} found — opens in your default terminal",
"history_subtitle": "Recent command",
"suggest_subtitle": "Suggestion",
"snap_subtitle": "Complete: {command} — Enter to run",
"snippet_subtitle": "Snippet",
"cd_open_title": "Open in: {path}",
"cd_open_subtitle": "Opens terminal in this folder",
"cd_empty": "No folders found",
"cd_empty_subtitle": "Type path or check workspace setting",
"cd_open_subtitle": "Opens terminal in this folder",
"cd_open_title": "Open in: {path}",
"hint_subtitle": "Type a command after /sh and press Enter to open it in your terminal",
"hint_title": "Run a shell command",
"history_subtitle": "Recent command",
"run_subtitle": "Opens in your default terminal",
"run_subtitle_found": "{command} found — opens in your default terminal",
"run_title": "Run: {command}",
"settings": {
"default_workspace": {
"label": "Default Workspace",
"description": "Working directory commands run in. Leave empty to use the terminal's current directory."
"description": "Working directory commands run in. Leave empty to use the terminal's current directory.",
"label": "Default Workspace"
},
"snippets": {
"label": "Snippets",
"description": "Commands shown when /sh is empty. Each entry is one command."
"description": "Commands shown when /sh is empty. Each entry is one command.",
"label": "Snippets"
}
}
},
"snap_subtitle": "Complete: {command} — Enter to run",
"snippet_subtitle": "Snippet",
"suggest_subtitle": "Suggestion"
}
+16 -16
View File
@@ -1,25 +1,25 @@
{
"hint_title": "Chạy lệnh shell",
"hint_subtitle": "Gõ lệnh sau /sh rồi nhấn Enter để mở trong terminal",
"run_title": "Chạy: {command}",
"run_subtitle": "Mở trong terminal mặc định",
"run_subtitle_found": "Tìm thấy {command} — mở trong terminal mặc định",
"history_subtitle": "Lệnh gần đây",
"suggest_subtitle": "Gợi ý",
"snap_subtitle": "Hoàn tất: {command} — Enter để chạy",
"snippet_subtitle": "Snippet",
"cd_open_title": "Mở trong: {path}",
"cd_open_subtitle": "Mở terminal trong thư mục này",
"cd_empty": "Không tìm thấy thư mục",
"cd_empty_subtitle": "Gõ đường dẫn hoặc kiểm tra cài đặt workspace",
"cd_open_subtitle": "Mở terminal trong thư mục này",
"cd_open_title": "Mở trong: {path}",
"hint_subtitle": "Gõ lệnh sau /sh rồi nhấn Enter để mở trong terminal",
"hint_title": "Chạy lệnh shell",
"history_subtitle": "Lệnh gần đây",
"run_subtitle": "Mở trong terminal mặc định",
"run_subtitle_found": "Tìm thấy {command} — mở trong terminal mặc định",
"run_title": "Chạy: {command}",
"settings": {
"default_workspace": {
"label": "Thư mục làm việc",
"description": "Thư mục lệnh chạy trong đó. Để trống dùng thư mục hiện tại của terminal."
"description": "Thư mục lệnh chạy trong đó. Để trống dùng thư mục hiện tại của terminal.",
"label": "Thư mục làm việc"
},
"snippets": {
"label": "Snippets",
"description": "Lệnh hiện khi /sh trống. Mỗi mục là một lệnh."
"description": "Lệnh hiện khi /sh trống. Mỗi mục là một lệnh.",
"label": "Snippets"
}
}
},
"snap_subtitle": "Hoàn tất: {command} — Enter để chạy",
"snippet_subtitle": "Snippet",
"suggest_subtitle": "Gợi ý"
}
+8 -8
View File
@@ -36,14 +36,6 @@
"description": "Show the active transcription model on the bar.",
"label": "Show model on bar"
},
"streaming_color": {
"description": "Color of the icon while Voxtype is streaming live audio.",
"label": "Streaming icon color"
},
"streaming_glyph": {
"description": "Noctalia glyph shown while Voxtype is streaming live audio.",
"label": "Streaming icon"
},
"stopped_color": {
"description": "Color of the icon while Voxtype is not running.",
"label": "Stopped icon color"
@@ -52,6 +44,14 @@
"description": "Noctalia glyph shown while Voxtype is not running.",
"label": "Stopped icon"
},
"streaming_color": {
"description": "Color of the icon while Voxtype is streaming live audio.",
"label": "Streaming icon color"
},
"streaming_glyph": {
"description": "Noctalia glyph shown while Voxtype is streaming live audio.",
"label": "Streaming icon"
},
"transcribing_color": {
"description": "Color of the icon while Voxtype is transcribing recorded audio.",
"label": "Transcribing icon color"