i18n: push/pull no overwrite
This commit is contained in:
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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.",
|
||||
|
||||
@@ -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!"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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.",
|
||||
|
||||
@@ -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..."
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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 ý"
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user