mirror of
https://github.com/gustjose/obsidian-syncthing-manager.git
synced 2026-07-22 06:40:35 +00:00
feat: add Crowdin localization support
This commit is contained in:
parent
3c66932c13
commit
29c4bbb86b
19 changed files with 827 additions and 937 deletions
|
|
@ -150,6 +150,10 @@ Contributions are welcome! If you encounter bugs or have feature requests, pleas
|
|||
- **Build:** `npm run build`
|
||||
- **Dev:** `npm run dev`
|
||||
|
||||
### 🌍 Translations
|
||||
|
||||
Help us make the plugin accessible to everyone! We use **[Crowdin](https://crowdin.com/project/obsidian-syncthing-manager)** to manage translations. You don't need to be a developer to contribute. Just create a free account and start translating strings to your language directly in the browser!
|
||||
|
||||
---
|
||||
|
||||
## License
|
||||
|
|
|
|||
7
crowdin.yml
Normal file
7
crowdin.yml
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
project_id_env: CROWDIN_PROJECT_ID
|
||||
api_token_env: CROWDIN_PERSONAL_TOKEN
|
||||
preserve_hierarchy: true
|
||||
|
||||
files:
|
||||
- source: /src/lang/locales/en.json
|
||||
translation: /src/lang/locales/%two_letters_code%.json
|
||||
|
|
@ -8,14 +8,11 @@ Help us make **Syncthing Manager** accessible to everyone! We welcome contributi
|
|||
|
||||
## Translating the Plugin
|
||||
|
||||
The plugin uses a simple key-value system for localization. To add or update a translation:
|
||||
We use **Crowdin** to manage all plugin translations. You don't need any coding experience to help!
|
||||
|
||||
1. Navigate to [`src/lang/locales/`](https://github.com/gustjose/obsidian-syncthing-manager/tree/main/src/lang/locales).
|
||||
2. If you want to update an existing language, edit the corresponding `.ts` file (e.g., `pt.ts` for Portuguese).
|
||||
3. To add a **new language**:
|
||||
- Copy `en.ts` and rename it using the ISO 639-1 code (e.g., `es.ts` for Spanish).
|
||||
- Update the translations inside the file.
|
||||
- Register the new locale in `src/lang/lang.ts`.
|
||||
1. Go to our **[Crowdin Project Page](https://crowdin.com/project/obsidian-syncthing-manager)**.
|
||||
2. Choose your language from the list. If it isn't listed, you can request it on Crowdin.
|
||||
3. Start translating! Your changes will automatically be synced to our GitHub repository.
|
||||
|
||||
## Translating Documentation
|
||||
|
||||
|
|
|
|||
|
|
@ -8,14 +8,11 @@ Ajude-nos a tornar o **Syncthing Manager** acessível a todos! Aceitamos contrib
|
|||
|
||||
## Traduzindo o Plugin
|
||||
|
||||
O plugin utiliza um sistema simples de chave-valor para localização. Para adicionar ou atualizar uma tradução:
|
||||
Nós usamos o **Crowdin** para gerenciar todas as traduções do plugin. Você não precisa de nenhuma experiência com código para ajudar!
|
||||
|
||||
1. Navegue até [`src/lang/locales/`](https://github.com/gustjose/obsidian-syncthing-manager/tree/main/src/lang/locales).
|
||||
2. Se desejar atualizar um idioma existente, edite o arquivo `.ts` correspondente (ex: `pt.ts` para Português).
|
||||
3. Para adicionar um **novo idioma**:
|
||||
- Copie o arquivo `en.ts` e renomeie-o usando o código ISO 639-1 (ex: `es.ts` para Espanhol).
|
||||
- Atualize as traduções dentro do arquivo.
|
||||
- Registre o novo local em `src/lang/lang.ts`.
|
||||
1. Acesse a nossa **[Página do Projeto no Crowdin](https://crowdin.com/project/obsidian-syncthing-manager)**.
|
||||
2. Escolha o seu idioma na lista. Se ele não estiver listado, você pode solicitá-lo no próprio Crowdin.
|
||||
3. Comece a traduzir! Suas alterações serão sincronizadas automaticamente com nosso repositório no GitHub.
|
||||
|
||||
## Traduzindo a Documentação
|
||||
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ export default defineConfig([
|
|||
"package.json",
|
||||
"package-lock.json",
|
||||
"vitest.config.ts",
|
||||
"src/lang/locales/*.json",
|
||||
],
|
||||
},
|
||||
// 2. Configuração para os SCRIPTS (Node.js)
|
||||
|
|
|
|||
41
scripts/fix-sentence-case.mjs
Normal file
41
scripts/fix-sentence-case.mjs
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
import fs from "fs";
|
||||
import path from "path";
|
||||
import { evaluateSentenceCase } from "eslint-plugin-obsidianmd/dist/lib/rules/ui/sentenceCaseUtil.js";
|
||||
|
||||
const enPath = path.resolve("./src/lang/locales/en.json");
|
||||
const enData = JSON.parse(fs.readFileSync(enPath, "utf8"));
|
||||
|
||||
const options = {
|
||||
brands: [
|
||||
"Syncthing",
|
||||
"Obsidian",
|
||||
"GitHub",
|
||||
"Android",
|
||||
"Mac",
|
||||
"Windows",
|
||||
"macOS",
|
||||
"Crowdin",
|
||||
],
|
||||
acronyms: ["OK", "API", "URL", "HTTPS", "HTTP", "TLS", "IP", "ID", "GUI"],
|
||||
enforceCamelCaseLower: true,
|
||||
};
|
||||
|
||||
let modified = false;
|
||||
|
||||
for (const [key, value] of Object.entries(enData)) {
|
||||
if (typeof value === "string") {
|
||||
const result = evaluateSentenceCase(value, options);
|
||||
if (!result.ok && result.suggestion) {
|
||||
enData[key] = result.suggestion;
|
||||
modified = true;
|
||||
console.log(`Fixing ${key}: "${value}" -> "${result.suggestion}"`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (modified) {
|
||||
fs.writeFileSync(enPath, JSON.stringify(enData, null, "\t") + "\n");
|
||||
console.log("Updated en.json with sentence case fixes.");
|
||||
} else {
|
||||
console.log("No issues found to fix.");
|
||||
}
|
||||
40
scripts/migrate-locales.mjs
Normal file
40
scripts/migrate-locales.mjs
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
import { build } from "esbuild";
|
||||
import fs from "fs/promises";
|
||||
import url from "url";
|
||||
import path from "path";
|
||||
|
||||
const __dirname = url.fileURLToPath(new URL(".", import.meta.url));
|
||||
|
||||
async function run() {
|
||||
const localesDir = path.join(__dirname, "../src/lang/locales");
|
||||
const files = ["en", "pt", "ru"];
|
||||
|
||||
for (const file of files) {
|
||||
const tsPath = path.join(localesDir, `${file}.ts`);
|
||||
const jsPath = path.join(localesDir, `${file}.mjs`);
|
||||
const jsonPath = path.join(localesDir, `${file}.json`);
|
||||
|
||||
try {
|
||||
await build({
|
||||
entryPoints: [tsPath],
|
||||
outfile: jsPath,
|
||||
format: "esm",
|
||||
});
|
||||
|
||||
const module = await import(url.pathToFileURL(jsPath).href);
|
||||
const data = module.default;
|
||||
|
||||
await fs.writeFile(
|
||||
jsonPath,
|
||||
JSON.stringify(data, null, "\t") + "\n",
|
||||
);
|
||||
console.log(`Converted ${file}.ts to ${file}.json`);
|
||||
|
||||
await fs.rm(tsPath);
|
||||
await fs.rm(jsPath);
|
||||
} catch (e) {
|
||||
console.error(`Error converting ${file}:`, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
run();
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
import { moment } from "obsidian";
|
||||
import en from "./locales/en";
|
||||
import pt from "./locales/pt";
|
||||
import ru from "./locales/ru";
|
||||
import en from "./locales/en.json";
|
||||
import pt from "./locales/pt.json";
|
||||
import ru from "./locales/ru.json";
|
||||
|
||||
const locales: Record<string, Partial<typeof en>> = {
|
||||
pt: pt,
|
||||
ru: ru,
|
||||
const locales: Record<string, Record<string, string>> = {
|
||||
pt: pt as Record<string, string>,
|
||||
ru: ru as Record<string, string>,
|
||||
};
|
||||
|
||||
export const LANGUAGE_LIST = [
|
||||
|
|
@ -34,8 +34,12 @@ export function t(key: TranslationKey): string {
|
|||
}
|
||||
|
||||
const dict = locales[lang];
|
||||
const defaultDict = en as Record<string, string>;
|
||||
|
||||
const translation = dict && dict[key] ? dict[key] : en[key];
|
||||
const translation =
|
||||
dict && dict[key as string]
|
||||
? dict[key as string]
|
||||
: defaultDict[key as string];
|
||||
|
||||
return translation || key;
|
||||
}
|
||||
|
|
|
|||
200
src/lang/locales/en.json
Normal file
200
src/lang/locales/en.json
Normal file
|
|
@ -0,0 +1,200 @@
|
|||
{
|
||||
"cmd_open_panel": "Open side panel",
|
||||
"cmd_force_sync": "Force sync now",
|
||||
"cmd_debug_connect": "Debug: test connection",
|
||||
"cmd_copy_debug": "Copy debug info",
|
||||
"ribbon_tooltip": "Open Syncthing manager",
|
||||
"status_synced": "Synced",
|
||||
"status_syncing": "Syncing...",
|
||||
"status_error": "Error",
|
||||
"status_offline": "Offline",
|
||||
"status_unknown": "Unknown",
|
||||
"status_paused": "Paused",
|
||||
"status_config": "Pending config",
|
||||
"info_last_sync": "Last sync",
|
||||
"info_devices": "Online devices",
|
||||
"info_folder": "Vault folder",
|
||||
"info_history": "Recent activity",
|
||||
"history_empty": "No recent activity",
|
||||
"history_incoming": "Incoming (remote)",
|
||||
"history_outgoing": "Outgoing (local)",
|
||||
"btn_sync_now": "Sync now",
|
||||
"btn_requesting": "Requesting...",
|
||||
"tooltip_pause": "Pause sync",
|
||||
"tooltip_resume": "Resume sync",
|
||||
"setting_header_conn": "Connection settings",
|
||||
"setting_header_folder": "Folder & files",
|
||||
"setting_header_interface": "Interface options",
|
||||
"setting_header_general": "General",
|
||||
"setting_lang_name": "Language",
|
||||
"setting_lang_desc": "Force the plugin interface to a specific language or follow Obsidian. This plugin is localized by the community. To help translate into your language, click the globe icon to join our Crowdin project.",
|
||||
"tooltip_help_translate": "Help translate via Crowdin",
|
||||
"setting_https_name": "Use HTTPS",
|
||||
"setting_https_desc": "Important: keep this disabled for Android/mobile to work correctly. Only enable if you have configured a valid TLS certificate on your desktop.",
|
||||
"setting_host_name": "IP address / host",
|
||||
"setting_host_desc": "The address where Syncthing GUI is running. Use \"127.0.0.1\" for localhost.",
|
||||
"setting_host_placeholder": "Localhost",
|
||||
"setting_port_name": "Port",
|
||||
"setting_port_desc": "Default is 8384. Check your Syncthing GUI settings if you changed it.",
|
||||
"setting_api_name": "API key",
|
||||
"setting_api_desc": "Copy this from Syncthing > actions > settings > general.",
|
||||
"btn_test_conn": "Test connection",
|
||||
"setting_api_stored_securely": "API key is stored securely in your system keychain.",
|
||||
"setting_api_stored_legacy": "API key is stored locally (upgrade Obsidian for keychain support).",
|
||||
"setting_api_configured": "Configured",
|
||||
"setting_api_not_configured": "Not configured",
|
||||
"btn_modify_secret": "Modify secret",
|
||||
"setting_folder_name": "Vault folder ID",
|
||||
"setting_folder_desc": "Select the Syncthing folder ID that matches this Obsidian vault to track its specific status.",
|
||||
"dropdown_default": "Select a folder...",
|
||||
"dropdown_none": "No folder selected",
|
||||
"btn_search_folders": "Fetch folders from Syncthing",
|
||||
"setting_modal_conflict_name": "Conflict detection",
|
||||
"setting_modal_conflict_desc": "Enable automatic scanning for \".sync-conflict\" files. A red alert will appear in the side panel if conflicts are found.",
|
||||
"setting_status_bar_name": "Show status bar item",
|
||||
"setting_status_bar_desc": "Displays the connection icon and quick actions in the bottom right status bar (desktop only).",
|
||||
"setting_ribbon_name": "Show ribbon icon",
|
||||
"setting_ribbon_desc": "Displays the icon in the left sidebar ribbon to quickly open the controller panel.",
|
||||
"setting_tab_icon_name": "Show sync status in tabs",
|
||||
"setting_tab_icon_desc": "Displays a icon in the file tab when syncing.",
|
||||
"setting_explorer_icon_name": "File explorer icon",
|
||||
"setting_explorer_icon_desc": "Show a sync button on hover next to files in the sidebar.",
|
||||
"setting_history_filter_name": "History filter",
|
||||
"setting_history_filter_desc": "Files or folders to hide from the history panel (comma separated, e.g. .Obsidian, .ds_store).",
|
||||
"notice_syncing": "Sync requested...",
|
||||
"notice_success_conn": "Connection successful! Device ID: ",
|
||||
"notice_fail_conn": "Connection failed. Please check the IP, port, and ensure HTTPS is disabled (especially on Android).",
|
||||
"notice_error_auth": "Authentication failed. Please check your API key.",
|
||||
"notice_offline": "Syncthing is unreachable. Is it running?",
|
||||
"notice_folders_found": "Folders found.",
|
||||
"notice_config_first": "Please configure the API key, URL and folder first",
|
||||
"notice_searching": "Connecting to Syncthing...",
|
||||
"notice_invalid_host": "Invalid host format. Please use ipv4, ipv6, localhost or a valid domain without HTTP/HTTPS.",
|
||||
"notice_invalid_port": "Invalid port. Must be a number between 1 and 65535.",
|
||||
"modal_conflict_title": "Resolve sync conflicts",
|
||||
"modal_conflict_empty": "Great news! No conflict files found in your vault.",
|
||||
"modal_conflict_desc": "The following files have conflicting versions. Compare the content and choose which one to keep.",
|
||||
"btn_compare": "Compare content",
|
||||
"btn_keep_original": "Keep original",
|
||||
"tooltip_keep_original": "Deletes the conflict file (right side) and keeps your current local file.",
|
||||
"btn_keep_conflict": "Use conflict version",
|
||||
"tooltip_keep_conflict": "Overwrites your local file with the conflict version (right side).",
|
||||
"btn_use_this_version": "Use this version",
|
||||
"diff_instructions": "Use the arrows in the middle to transfer changes to the original file. To keep one version entirely, click 'use this version' above it.",
|
||||
"btn_save_merge": "Save merge",
|
||||
"diff_legend": "Original (a) ↔ conflict (b)",
|
||||
"diff_original_header": "Current file (original)",
|
||||
"diff_conflict_header": "Incoming conflict",
|
||||
"diff_loading": "Loading file content...",
|
||||
"diff_original_missing": "(original file was deleted or not found)",
|
||||
"diff_read_error": "Error reading file content.",
|
||||
"setting_ignore_name": "Ignored files (.stignore)",
|
||||
"setting_ignore_desc": "Edit the .stignore file to prevent specific files (like workspace layouts) from syncing between devices.",
|
||||
"btn_edit_ignore": "Edit .stignore",
|
||||
"modal_ignore_title": "Edit .stignore",
|
||||
"modal_ignore_desc": "Files or patterns listed below will be completely ignored by Syncthing.",
|
||||
"header_ignore_templates": "Quick add templates:",
|
||||
"btn_add_ignore": "Add",
|
||||
"btn_save_ignore": "Save changes",
|
||||
"notice_ignore_saved": ".stignore file saved successfully.",
|
||||
"notice_ignore_exists": "This rule is already in the list.",
|
||||
"ignore_help_text": "Click \"add\" to include common rules that prevent sync issues between desktop and mobile.",
|
||||
"ignore_pattern_workspace_label": "Workspace config",
|
||||
"ignore_pattern_workspace_desc": "Essential! Ignores open window positions and tabs (avoids visual conflicts between desktop and mobile).",
|
||||
"ignore_pattern_installer_label": "Installer cache",
|
||||
"ignore_pattern_installer_desc": "Ignores temporary Obsidian update files.",
|
||||
"ignore_pattern_hidden_label": "Hidden files",
|
||||
"ignore_pattern_hidden_desc": "Ignores system files (like .ds_store on Mac or thumbs.db on Windows).",
|
||||
"notice_ignore_added": "Added: ",
|
||||
"notice_ignore_error": "Error saving .stignore",
|
||||
"alert_conflict_detected": "Conflict(s) detected!",
|
||||
"alert_click_to_resolve": "Click here to resolve",
|
||||
"explorer_sync_tooltip": "Sync this file",
|
||||
"setting_header_about": "About",
|
||||
"setting_version_name": "Version",
|
||||
"setting_version_tooltip": "View release notes",
|
||||
"setting_github_desc": "Access source code or report an issue.",
|
||||
"btn_github_repo": "GitHub repo",
|
||||
"btn_report_bug": "Report bug",
|
||||
"modal_versions_title": "File versions",
|
||||
"modal_versions_empty": "No previous versions found.",
|
||||
"btn_restore": "Restore",
|
||||
"notice_version_restored": "Version restored successfully.",
|
||||
"notice_restore_fail": "Failed to restore version.",
|
||||
"confirm_restore": "Are you sure you want to restore the version from {date}? Current content will be overwritten.",
|
||||
"cmd_view_versions": "File versions",
|
||||
"btn_cancel": "Cancel",
|
||||
"modal_confirm_title": "Confirm action",
|
||||
"modal_context_menu_title": "Context menu",
|
||||
"btn_manage_context_menu": "Manage context menu items",
|
||||
"setting_group_context_menu_name": "Group items",
|
||||
"setting_group_context_menu_desc": "Group all Syncthing items under a single submenu.",
|
||||
"header_context_menu_items": "Items",
|
||||
"btn_view_version": "View content",
|
||||
"cmd_sync_file": "Sync file",
|
||||
"cmd_ignore_file": "Don't sync this",
|
||||
"notice_ignored_success": "Added to .stignore",
|
||||
"notice_ignored_error": "Failed to add to .stignore",
|
||||
"setting_debug_mode_name": "Debug mode",
|
||||
"setting_debug_mode_desc": "Enable verbose logging to console (dev).",
|
||||
"tooltip_configure_modules": "Configure debug modules",
|
||||
"modal_debug_title": "Debug configuration",
|
||||
"modal_debug_desc": "Select which modules should output debug logs to the console.",
|
||||
"debug_report_title": "Debug report",
|
||||
"debug_report_desc": "Copy the information below and paste it in a bug report.",
|
||||
"debug_report_copy": "Copy to clipboard",
|
||||
"debug_report_copied": "Debug info copied!",
|
||||
"debug_report_open_issue": "Open issue on GitHub",
|
||||
"debug_report_no_errors": "No recent errors or warnings.",
|
||||
"btn_debug_report": "Debug report",
|
||||
"setting_log_level_name": "Log level",
|
||||
"setting_log_level_desc": "Set the minimum severity of logs to capture.",
|
||||
"log_level_off": "Off",
|
||||
"log_level_error": "Error only",
|
||||
"log_level_warn": "Warnings + errors",
|
||||
"log_level_debug": "All (debug)",
|
||||
"debug_console_title": "Debug console",
|
||||
"debug_console_empty": "No logs captured yet.",
|
||||
"debug_console_clear": "Clear",
|
||||
"btn_open_console": "Open console",
|
||||
"debug_console_filter_level": "Minimum level",
|
||||
"debug_console_filter_modules": "Modules",
|
||||
"modal_versioning_title": "File versioning",
|
||||
"versioning_type": "Versioning strategy",
|
||||
"versioning_type_desc": "Select the method used to keep previous versions of files.",
|
||||
"versioning_none": "No versioning",
|
||||
"versioning_trashcan": "Trash can",
|
||||
"versioning_simple": "Simple file versioning",
|
||||
"versioning_staggered": "Staggered file versioning",
|
||||
"versioning_external": "External file versioning",
|
||||
"versioning_cleanout_days": "Clean out after (days)",
|
||||
"versioning_cleanout_days_desc": "The number of days to keep files in the trash can. Zero means forever.",
|
||||
"versioning_keep": "Keep versions",
|
||||
"versioning_keep_desc": "The number of versions to keep.",
|
||||
"versioning_max_age": "Maximum age (days)",
|
||||
"versioning_max_age_desc": "The maximum age of versions to keep.",
|
||||
"versioning_clean_interval": "Clean interval (seconds)",
|
||||
"versioning_clean_interval_desc": "The interval between running the cleanup process.",
|
||||
"versioning_command": "Command",
|
||||
"versioning_command_desc": "External command to execute for versioning.",
|
||||
"btn_save": "Save",
|
||||
"notice_versioning_saved": "Versioning configuration saved.",
|
||||
"notice_versioning_error": "Failed to save versioning configuration.",
|
||||
"setting_file_versioning_name": "File versioning",
|
||||
"setting_file_versioning_desc": "Configure how Syncthing keeps previous versions of your files.",
|
||||
"btn_configure": "Configure",
|
||||
"notice_folder_missing": "Syncthing folder not found. Please reselect it in the settings.",
|
||||
"notice_folder_migration": "Folder config needs update. Please reselect your vault folder in Syncthing settings.",
|
||||
"notice_resuming": "Resuming sync...",
|
||||
"notice_pausing": "Pausing sync...",
|
||||
"notice_is_paused": "Sync is paused.",
|
||||
"loading_versions": "Loading versions...",
|
||||
"loading_config": "Loading configuration...",
|
||||
"error_folder_not_found": "Folder not found in configuration.",
|
||||
"saving": "Saving...",
|
||||
"error_loading_versions": "Error loading versions. Check console.",
|
||||
"tab_syncing": "Syncing...",
|
||||
"tab_synced": "Synced!",
|
||||
"conflict_delete_error": "Error deleting file.",
|
||||
"conflict_restore_error": "Error restoring conflict."
|
||||
}
|
||||
|
|
@ -1,296 +0,0 @@
|
|||
export default {
|
||||
// Commands
|
||||
cmd_open_panel: "Open side panel",
|
||||
cmd_force_sync: "Force sync now",
|
||||
cmd_debug_connect: "Debug: test connection",
|
||||
cmd_copy_debug: "Copy debug info",
|
||||
|
||||
// Ribbon Icon
|
||||
ribbon_tooltip: "Open syncthing manager",
|
||||
|
||||
// Status / View
|
||||
status_synced: "Synced",
|
||||
status_syncing: "Syncing...",
|
||||
status_error: "Error",
|
||||
status_offline: "Offline",
|
||||
status_unknown: "Unknown",
|
||||
status_paused: "Paused",
|
||||
status_config: "Pending config",
|
||||
|
||||
info_last_sync: "Last sync",
|
||||
info_devices: "Online devices",
|
||||
info_folder: "Vault folder",
|
||||
info_history: "Recent activity",
|
||||
history_empty: "No recent activity",
|
||||
|
||||
// History Directions (Tooltips for arrows)
|
||||
history_incoming: "Incoming (remote)",
|
||||
history_outgoing: "Outgoing (local)",
|
||||
|
||||
btn_sync_now: "Sync now",
|
||||
btn_requesting: "Requesting...",
|
||||
tooltip_pause: "Pause sync",
|
||||
tooltip_resume: "Resume sync",
|
||||
|
||||
// Settings - Headers
|
||||
setting_header_conn: "Connection settings",
|
||||
setting_header_folder: "Folder & files",
|
||||
setting_header_interface: "Interface options",
|
||||
setting_header_general: "General",
|
||||
|
||||
// Settings - General
|
||||
setting_lang_name: "Language",
|
||||
setting_lang_desc:
|
||||
"Force the plugin interface to a specific language or follow Obsidian.",
|
||||
|
||||
// Settings - Connection
|
||||
setting_https_name: "Use HTTPS",
|
||||
setting_https_desc:
|
||||
"Important: keep this disabled for Android/mobile to work correctly. Only enable if you have configured a valid TLS certificate on your desktop.",
|
||||
setting_host_name: "IP address / host",
|
||||
setting_host_desc:
|
||||
'The address where syncthing GUI is running. Use "127.0.0.1" for localhost.',
|
||||
setting_host_placeholder: "Localhost",
|
||||
setting_port_name: "Port",
|
||||
setting_port_desc:
|
||||
"Default is 8384. Check your syncthing GUI settings if you changed it.",
|
||||
setting_api_name: "API key",
|
||||
setting_api_desc:
|
||||
"Copy this from syncthing > actions > settings > general.",
|
||||
btn_test_conn: "Test connection",
|
||||
setting_api_stored_securely:
|
||||
"API key is stored securely in your system keychain.",
|
||||
setting_api_stored_legacy:
|
||||
"API key is stored locally (upgrade Obsidian for keychain support).",
|
||||
setting_api_configured: "Configured",
|
||||
setting_api_not_configured: "Not configured",
|
||||
btn_modify_secret: "Modify secret",
|
||||
|
||||
// Settings - Folder
|
||||
setting_folder_name: "Vault folder ID",
|
||||
setting_folder_desc:
|
||||
"Select the syncthing folder ID that matches this Obsidian vault to track its specific status.",
|
||||
dropdown_default: "Select a folder...",
|
||||
dropdown_none: "No folder selected",
|
||||
btn_search_folders: "Fetch folders from syncthing",
|
||||
|
||||
// Settings - Conflict
|
||||
setting_modal_conflict_name: "Conflict detection",
|
||||
setting_modal_conflict_desc:
|
||||
'Enable automatic scanning for ".sync-conflict" files. A red alert will appear in the side panel if conflicts are found.',
|
||||
|
||||
// Settings - Interface
|
||||
setting_status_bar_name: "Show status bar item",
|
||||
setting_status_bar_desc:
|
||||
"Displays the connection icon and quick actions in the bottom right status bar (desktop only).",
|
||||
setting_ribbon_name: "Show ribbon icon",
|
||||
setting_ribbon_desc:
|
||||
"Displays the icon in the left sidebar ribbon to quickly open the controller panel.",
|
||||
setting_tab_icon_name: "Show sync status in tabs",
|
||||
setting_tab_icon_desc: "Displays a icon in the file tab when syncing.",
|
||||
setting_explorer_icon_name: "File explorer icon",
|
||||
setting_explorer_icon_desc:
|
||||
"Show a sync button on hover next to files in the sidebar.",
|
||||
|
||||
// --- History Filter ---
|
||||
setting_history_filter_name: "History filter",
|
||||
setting_history_filter_desc:
|
||||
"Files or folders to hide from the history panel (comma separated, e.g. .Obsidian, .ds_store).",
|
||||
|
||||
// Notices / Errors
|
||||
notice_syncing: "Sync requested...",
|
||||
notice_success_conn: "Connection successful! Device ID: ",
|
||||
notice_fail_conn:
|
||||
"Connection failed. Please check the IP, port, and ensure HTTPS is disabled (especially on Android).",
|
||||
notice_error_auth: "Authentication failed. Please check your API key.",
|
||||
notice_offline: "Syncthing is unreachable. Is it running?",
|
||||
notice_folders_found: "Folders found.",
|
||||
notice_config_first: "Please configure the API key, URL and folder first",
|
||||
notice_searching: "Connecting to syncthing...",
|
||||
notice_invalid_host:
|
||||
"Invalid host format. Please use ipv4, ipv6, localhost or a valid domain without HTTP/HTTPS.",
|
||||
notice_invalid_port: "Invalid port. Must be a number between 1 and 65535.",
|
||||
|
||||
// Conflict Modal
|
||||
modal_conflict_title: "Resolve sync conflicts",
|
||||
modal_conflict_empty: "Great news! No conflict files found in your vault.",
|
||||
modal_conflict_desc:
|
||||
"The following files have conflicting versions. Compare the content and choose which one to keep.",
|
||||
btn_compare: "Compare content",
|
||||
btn_keep_original: "Keep original",
|
||||
tooltip_keep_original:
|
||||
"Deletes the conflict file (right side) and keeps your current local file.",
|
||||
btn_keep_conflict: "Use conflict version",
|
||||
tooltip_keep_conflict:
|
||||
"Overwrites your local file with the conflict version (right side).",
|
||||
btn_use_this_version: "Use this version",
|
||||
diff_instructions:
|
||||
"Use the arrows in the middle to transfer changes to the original file. To keep one version entirely, click 'use this version' above it.",
|
||||
btn_save_merge: "Save merge",
|
||||
diff_legend: "Original (a) ↔ conflict (b)",
|
||||
|
||||
// Diff View
|
||||
diff_original_header: "Current file (original)",
|
||||
diff_conflict_header: "Incoming conflict",
|
||||
diff_loading: "Loading file content...",
|
||||
diff_original_missing: "(original file was deleted or not found)",
|
||||
diff_read_error: "Error reading file content.",
|
||||
|
||||
// Ignore (.stignore)
|
||||
setting_ignore_name: "Ignored files (.stignore)",
|
||||
setting_ignore_desc:
|
||||
"Edit the .stignore file to prevent specific files (like workspace layouts) from syncing between devices.",
|
||||
btn_edit_ignore: "Edit .stignore",
|
||||
|
||||
// Ignore Modal
|
||||
modal_ignore_title: "Edit .stignore",
|
||||
modal_ignore_desc:
|
||||
"Files or patterns listed below will be completely ignored by syncthing.",
|
||||
header_ignore_templates: "Quick add templates:",
|
||||
btn_add_ignore: "Add",
|
||||
btn_save_ignore: "Save changes",
|
||||
notice_ignore_saved: ".stignore file saved successfully.",
|
||||
notice_ignore_exists: "This rule is already in the list.",
|
||||
ignore_help_text:
|
||||
'Click "add" to include common rules that prevent sync issues between desktop and mobile.',
|
||||
|
||||
ignore_pattern_workspace_label: "Workspace config",
|
||||
ignore_pattern_workspace_desc:
|
||||
"Essential! Ignores open window positions and tabs (avoids visual conflicts between desktop and mobile).",
|
||||
|
||||
ignore_pattern_installer_label: "Installer cache",
|
||||
ignore_pattern_installer_desc: "Ignores temporary Obsidian update files.",
|
||||
|
||||
ignore_pattern_hidden_label: "Hidden files",
|
||||
ignore_pattern_hidden_desc:
|
||||
"Ignores system files (like .ds_store on mac or thumbs.db on Windows).",
|
||||
|
||||
notice_ignore_added: "Added: ",
|
||||
notice_ignore_error: "Error saving .stignore",
|
||||
|
||||
// Alerts
|
||||
alert_conflict_detected: "Conflict(s) detected!",
|
||||
alert_click_to_resolve: "Click here to resolve",
|
||||
|
||||
// Placeholders
|
||||
explorer_sync_tooltip: "Sync this file",
|
||||
|
||||
// About
|
||||
setting_header_about: "About",
|
||||
setting_version_name: "Version",
|
||||
setting_version_tooltip: "View release notes",
|
||||
setting_github_desc: "Access source code or report an issue.",
|
||||
btn_github_repo: "GitHub repo",
|
||||
btn_report_bug: "Report bug",
|
||||
|
||||
// Versions
|
||||
modal_versions_title: "File versions",
|
||||
modal_versions_empty: "No previous versions found.",
|
||||
btn_restore: "Restore",
|
||||
notice_version_restored: "Version restored successfully.",
|
||||
notice_restore_fail: "Failed to restore version.",
|
||||
confirm_restore:
|
||||
"Are you sure you want to restore the version from {date}? Current content will be overwritten.",
|
||||
cmd_view_versions: "File versions",
|
||||
btn_cancel: "Cancel",
|
||||
modal_confirm_title: "Confirm action",
|
||||
|
||||
// Context Menu
|
||||
modal_context_menu_title: "Context menu",
|
||||
btn_manage_context_menu: "Manage context menu items",
|
||||
setting_group_context_menu_name: "Group items",
|
||||
setting_group_context_menu_desc:
|
||||
"Group all syncthing items under a single submenu.",
|
||||
header_context_menu_items: "Items",
|
||||
btn_view_version: "View content",
|
||||
cmd_sync_file: "Sync file",
|
||||
cmd_ignore_file: "Don't sync this",
|
||||
notice_ignored_success: "Added to .stignore",
|
||||
notice_ignored_error: "Failed to add to .stignore",
|
||||
// Debug
|
||||
setting_debug_mode_name: "Debug mode",
|
||||
setting_debug_mode_desc: "Enable verbose logging to console (dev).",
|
||||
tooltip_configure_modules: "Configure debug modules",
|
||||
modal_debug_title: "Debug configuration",
|
||||
modal_debug_desc:
|
||||
"Select which modules should output debug logs to the console.",
|
||||
|
||||
// Debug Report
|
||||
debug_report_title: "Debug report",
|
||||
debug_report_desc:
|
||||
"Copy the information below and paste it in a bug report.",
|
||||
debug_report_copy: "Copy to clipboard",
|
||||
debug_report_copied: "Debug info copied!",
|
||||
debug_report_open_issue: "Open issue on GitHub",
|
||||
debug_report_no_errors: "No recent errors or warnings.",
|
||||
btn_debug_report: "Debug report",
|
||||
|
||||
// Log Levels
|
||||
setting_log_level_name: "Log level",
|
||||
setting_log_level_desc: "Set the minimum severity of logs to capture.",
|
||||
log_level_off: "Off",
|
||||
log_level_error: "Error only",
|
||||
log_level_warn: "Warnings + errors",
|
||||
log_level_debug: "All (debug)",
|
||||
|
||||
// Debug Console
|
||||
debug_console_title: "Debug console",
|
||||
debug_console_empty: "No logs captured yet.",
|
||||
debug_console_clear: "Clear",
|
||||
btn_open_console: "Open console",
|
||||
debug_console_filter_level: "Minimum level",
|
||||
debug_console_filter_modules: "Modules",
|
||||
// Versioning
|
||||
modal_versioning_title: "File versioning",
|
||||
versioning_type: "Versioning strategy",
|
||||
versioning_type_desc:
|
||||
"Select the method used to keep previous versions of files.",
|
||||
versioning_none: "No versioning",
|
||||
versioning_trashcan: "Trash can",
|
||||
versioning_simple: "Simple file versioning",
|
||||
versioning_staggered: "Staggered file versioning",
|
||||
versioning_external: "External file versioning",
|
||||
|
||||
versioning_cleanout_days: "Clean out after (days)",
|
||||
versioning_cleanout_days_desc:
|
||||
"The number of days to keep files in the trash can. Zero means forever.",
|
||||
versioning_keep: "Keep versions",
|
||||
versioning_keep_desc: "The number of versions to keep.",
|
||||
versioning_max_age: "Maximum age (days)",
|
||||
versioning_max_age_desc: "The maximum age of versions to keep.",
|
||||
versioning_clean_interval: "Clean interval (seconds)",
|
||||
versioning_clean_interval_desc:
|
||||
"The interval between running the cleanup process.",
|
||||
versioning_command: "Command",
|
||||
versioning_command_desc: "External command to execute for versioning.",
|
||||
|
||||
btn_save: "Save",
|
||||
notice_versioning_saved: "Versioning configuration saved.",
|
||||
notice_versioning_error: "Failed to save versioning configuration.",
|
||||
setting_file_versioning_name: "File versioning",
|
||||
setting_file_versioning_desc:
|
||||
"Configure how syncthing keeps previous versions of your files.",
|
||||
|
||||
// General
|
||||
btn_configure: "Configure",
|
||||
|
||||
// Connection Check
|
||||
notice_folder_missing:
|
||||
"Syncthing folder not found. Please reselect it in the settings.",
|
||||
notice_folder_migration:
|
||||
"Folder config needs update. Please reselect your vault folder in syncthing settings.",
|
||||
|
||||
// Dynamic UI Strings
|
||||
notice_resuming: "Resuming sync...",
|
||||
notice_pausing: "Pausing sync...",
|
||||
notice_is_paused: "Sync is paused.",
|
||||
loading_versions: "Loading versions...",
|
||||
loading_config: "Loading configuration...",
|
||||
error_folder_not_found: "Folder not found in configuration.",
|
||||
saving: "Saving...",
|
||||
error_loading_versions: "Error loading versions. Check console.",
|
||||
tab_syncing: "Syncing...",
|
||||
tab_synced: "Synced!",
|
||||
conflict_delete_error: "Error deleting file.",
|
||||
conflict_restore_error: "Error restoring conflict.",
|
||||
};
|
||||
200
src/lang/locales/pt.json
Normal file
200
src/lang/locales/pt.json
Normal file
|
|
@ -0,0 +1,200 @@
|
|||
{
|
||||
"cmd_open_panel": "Abrir Painel Lateral",
|
||||
"cmd_force_sync": "Forçar Sincronização Agora",
|
||||
"cmd_debug_connect": "Debug: Testar Conexão",
|
||||
"cmd_copy_debug": "Copiar informações de depuração",
|
||||
"ribbon_tooltip": "Abrir Syncthing Controller",
|
||||
"status_synced": "Sincronizado",
|
||||
"status_syncing": "Sincronizando...",
|
||||
"status_offline": "Desconectado",
|
||||
"status_error": "Erro",
|
||||
"status_unknown": "Desconhecido",
|
||||
"status_paused": "Pausado",
|
||||
"status_config": "Configuração pendente",
|
||||
"info_last_sync": "Último Sync",
|
||||
"info_devices": "Dispositivos Online",
|
||||
"info_folder": "Pasta Monitorada",
|
||||
"info_history": "Atividade Recente",
|
||||
"history_empty": "Nenhuma atividade recente",
|
||||
"history_incoming": "Recebido (Remoto)",
|
||||
"history_outgoing": "Enviado (Local)",
|
||||
"btn_sync_now": "Sincronizar Agora",
|
||||
"btn_requesting": "Solicitando...",
|
||||
"tooltip_pause": "Pausar sincronização",
|
||||
"tooltip_resume": "Retomar sincronização",
|
||||
"setting_header_conn": "Configurações de Conexão",
|
||||
"setting_header_folder": "Pastas e Arquivos",
|
||||
"setting_header_interface": "Interface",
|
||||
"setting_header_general": "Geral",
|
||||
"setting_lang_name": "Idioma",
|
||||
"setting_lang_desc": "Force a interface do plugin para um idioma específico ou siga o Obsidian. Este plugin é traduzido pela comunidade. Para ajudar a, clique no ícone para entrar no nosso projeto do Crowdin.",
|
||||
"tooltip_help_translate": "Ajudar a traduzir (Crowdin)",
|
||||
"setting_https_name": "Usar HTTPS",
|
||||
"setting_https_desc": "IMPORTANTE: Mantenha DESATIVADO para Android/Mobile funcionar corretamente, também deve estar desativado no syncthing. Só ative se você configurou certificados TLS válidos no Desktop.",
|
||||
"setting_host_name": "Endereço IP / Host",
|
||||
"setting_host_desc": "O endereço onde a interface do Syncthing roda. Use \"127.0.0.1\" para localhost.",
|
||||
"setting_host_placeholder": "localhost",
|
||||
"setting_port_name": "Porta",
|
||||
"setting_port_desc": "Padrão é 8384. Verifique nas configurações do Syncthing se você alterou.",
|
||||
"setting_api_name": "Chave da API (API Key)",
|
||||
"setting_api_desc": "Copie este código no Syncthing em: Ações > Configurações > Geral.",
|
||||
"btn_test_conn": "Testar Conexão",
|
||||
"setting_api_stored_securely": "A chave da API está armazenada com segurança no chaveiro do sistema.",
|
||||
"setting_api_stored_legacy": "A chave da API está armazenada localmente (atualize o Obsidian para suporte ao chaveiro).",
|
||||
"setting_api_configured": "Configurada",
|
||||
"setting_api_not_configured": "Não configurada",
|
||||
"btn_modify_secret": "Modificar secret",
|
||||
"setting_folder_name": "Pasta do Cofre",
|
||||
"setting_folder_desc": "Selecione qual ID de pasta do Syncthing corresponde a este cofre do Obsidian para monitorar o status específico dele.",
|
||||
"dropdown_default": "Selecione uma pasta...",
|
||||
"dropdown_none": "Nenhuma selecionada",
|
||||
"btn_search_folders": "Buscar pastas no Syncthing",
|
||||
"setting_modal_conflict_name": "Detecção de Conflitos",
|
||||
"setting_modal_conflict_desc": "Ativa a busca automática por arquivos \".sync-conflict\". Um alerta vermelho aparecerá no Painel Lateral se conflitos forem encontrados.",
|
||||
"setting_status_bar_name": "Mostrar na Barra de Status",
|
||||
"setting_status_bar_desc": "Exibe o ícone de conexão e status no rodapé direito (Apenas Desktop). Reinicie o obsidian para aplicar.",
|
||||
"setting_ribbon_name": "Mostrar Ícone no Ribbon",
|
||||
"setting_ribbon_desc": "Exibe o ícone na barra lateral esquerda para acesso rápido ao painel. Reinicie o obsidian para aplicar.",
|
||||
"setting_tab_icon_name": "Mostrar status de sync nas abas",
|
||||
"setting_tab_icon_desc": "Exibe um ícone na aba do arquivo enquanto ele está sendo sincronizado.",
|
||||
"setting_explorer_icon_name": "Ícone no Gerenciador de Arquivos",
|
||||
"setting_explorer_icon_desc": "Exibe um botão de sincronização ao passar o mouse sobre os arquivos na barra lateral.",
|
||||
"setting_history_filter_name": "Filtro de Histórico",
|
||||
"setting_history_filter_desc": "Arquivos ou pastas para esconder do painel de histórico (separados por vírgula, ex: .Obsidian, .DS_Store).",
|
||||
"notice_syncing": "Sincronização solicitada...",
|
||||
"notice_success_conn": "Conexão realizada com sucesso! ID do Dispositivo: ",
|
||||
"notice_fail_conn": "Falha na conexão. Verifique IP, Porta e se o HTTPS está desativado (especialmente no Android).",
|
||||
"notice_error_auth": "Erro de Autenticação. Verifique sua API Key.",
|
||||
"notice_offline": "Syncthing inacessível. O aplicativo está rodando?",
|
||||
"notice_folders_found": "pastas encontradas.",
|
||||
"notice_config_first": "Por favor, configure a API Key, a URL e a pasta primeiro.",
|
||||
"notice_searching": "Conectando ao Syncthing...",
|
||||
"notice_invalid_host": "Formato de host inválido. Use IPv4, IPv6, localhost ou um domínio válido sem http/https.",
|
||||
"notice_invalid_port": "Porta inválida. Deve ser um número entre 1 e 65535.",
|
||||
"modal_conflict_title": "Resolver Conflitos de Sync",
|
||||
"modal_conflict_empty": "Ótimo! Nenhum arquivo de conflito encontrado no cofre.",
|
||||
"modal_conflict_desc": "Os arquivos abaixo possuem versões conflitantes. Compare o conteúdo e escolha qual manter.",
|
||||
"btn_compare": "Comparar Conteúdo",
|
||||
"btn_keep_original": "Manter Original",
|
||||
"tooltip_keep_original": "Apaga o arquivo de conflito (da direita) e mantém o seu arquivo atual.",
|
||||
"btn_keep_conflict": "Usar Versão do Conflito",
|
||||
"tooltip_keep_conflict": "Substitui o seu arquivo local pela versão do conflito (da direita).",
|
||||
"btn_use_this_version": "Usar esta versão",
|
||||
"diff_instructions": "Use as setas no meio para transferir alterações para o arquivo original. Para manter uma das versões integralmente, clique em 'Usar esta versão' acima dela.",
|
||||
"btn_save_merge": "Salvar Merge",
|
||||
"diff_legend": "Original (A) ↔ conflito (B)",
|
||||
"diff_original_header": "Arquivo Atual (Original)",
|
||||
"diff_conflict_header": "Versão do Conflito",
|
||||
"diff_loading": "Carregando conteúdo...",
|
||||
"diff_original_missing": "(O arquivo original foi deletado ou não encontrado)",
|
||||
"diff_read_error": "Erro ao ler o conteúdo do arquivo.",
|
||||
"setting_ignore_name": "Arquivos Ignorados (.stignore)",
|
||||
"setting_ignore_desc": "Edite o arquivo .stignore para impedir que arquivos específicos (como configs de workspace) sejam sincronizados, evitando bagunça de layout.",
|
||||
"btn_edit_ignore": "Editar .stignore",
|
||||
"modal_ignore_title": "Editar .stignore",
|
||||
"modal_ignore_desc": "Arquivos ou padrões listados abaixo serão completamente ignorados pelo Syncthing.",
|
||||
"header_ignore_templates": "Modelos Rápidos:",
|
||||
"ignore_help_text": "Clique em \"Adicionar\" para incluir regras comuns que evitam problemas de sincronização entre Desktop e Mobile.",
|
||||
"ignore_pattern_workspace_label": "Configurações de Workspace",
|
||||
"ignore_pattern_workspace_desc": "Essencial! Ignora posições de janelas e abas abertas (evita conflitos visuais entre PC e Celular).",
|
||||
"ignore_pattern_installer_label": "Cache do Instalador",
|
||||
"ignore_pattern_installer_desc": "Ignora arquivos temporários de atualização do Obsidian.",
|
||||
"ignore_pattern_hidden_label": "Arquivos Ocultos",
|
||||
"ignore_pattern_hidden_desc": "Ignora arquivos de sistema (como .DS_Store no Mac ou thumbs.db no Windows).",
|
||||
"btn_add_ignore": "Adicionar",
|
||||
"btn_save_ignore": "Salvar Alterações",
|
||||
"notice_ignore_saved": "Arquivo .stignore salvo com sucesso.",
|
||||
"notice_ignore_exists": "Esta regra já está na lista.",
|
||||
"notice_ignore_added": "Adicionado: ",
|
||||
"notice_ignore_error": "Erro ao salvar .stignore",
|
||||
"alert_conflict_detected": "Conflito(s) Detectado(s)!",
|
||||
"alert_click_to_resolve": "Clique aqui para resolver",
|
||||
"explorer_sync_tooltip": "Sincronizar este arquivo",
|
||||
"setting_header_about": "Sobre",
|
||||
"setting_version_name": "Versão",
|
||||
"setting_version_tooltip": "Ver notas da versão",
|
||||
"setting_github_desc": "Acesse o código fonte ou reporte um problema.",
|
||||
"btn_github_repo": "Repositório GitHub",
|
||||
"btn_report_bug": "Reportar Bug",
|
||||
"modal_versions_title": "Versões do Arquivo",
|
||||
"modal_versions_empty": "Nenhuma versão anterior encontrada.",
|
||||
"btn_restore": "Restaurar",
|
||||
"notice_version_restored": "Versão restaurada com sucesso.",
|
||||
"notice_restore_fail": "Falha ao restaurar versão.",
|
||||
"confirm_restore": "Tem certeza que deseja restaurar a versão de {date}? O conteúdo atual será sobrescrito.",
|
||||
"cmd_view_versions": "Versões de Arquivo",
|
||||
"btn_cancel": "Cancelar",
|
||||
"modal_confirm_title": "Confirmar Ação",
|
||||
"modal_context_menu_title": "Menu de Contexto",
|
||||
"btn_manage_context_menu": "Gerenciar itens do menu de contexto",
|
||||
"setting_group_context_menu_name": "Agrupar itens",
|
||||
"setting_group_context_menu_desc": "Agrupa todos os itens do syncthing em um único submenu.",
|
||||
"header_context_menu_items": "Itens",
|
||||
"btn_view_version": "Ver conteúdo",
|
||||
"cmd_sync_file": "Sincronizar arquivo",
|
||||
"cmd_ignore_file": "Não sincronizar isto",
|
||||
"notice_ignored_success": "Adicionado ao .stignore",
|
||||
"notice_ignored_error": "Falha ao adicionar ao .stignore",
|
||||
"setting_debug_mode_name": "Modo de Depuração",
|
||||
"setting_debug_mode_desc": "Habilita logs detalhados no console (dev).",
|
||||
"tooltip_configure_modules": "Configurar módulos",
|
||||
"modal_debug_title": "Configuração de Depuração",
|
||||
"modal_debug_desc": "Selecione quais módulos devem exibir logs no console.",
|
||||
"debug_report_title": "Relatório de depuração",
|
||||
"debug_report_desc": "Copie as informações abaixo e cole em um relatório de bug.",
|
||||
"debug_report_copy": "Copiar para área de transferência",
|
||||
"debug_report_copied": "Informações copiadas!",
|
||||
"debug_report_open_issue": "Abrir Issue no GitHub",
|
||||
"debug_report_no_errors": "Nenhum erro ou aviso recente.",
|
||||
"btn_debug_report": "Relatório de depuração",
|
||||
"setting_log_level_name": "Nível de log",
|
||||
"setting_log_level_desc": "Define a severidade mínima dos logs a serem capturados.",
|
||||
"log_level_off": "Desligado",
|
||||
"log_level_error": "Apenas erros",
|
||||
"log_level_warn": "Avisos + erros",
|
||||
"log_level_debug": "Todos (debug)",
|
||||
"debug_console_title": "Console de depuração",
|
||||
"debug_console_empty": "Nenhum log capturado ainda.",
|
||||
"debug_console_clear": "Limpar",
|
||||
"btn_open_console": "Abrir console",
|
||||
"debug_console_filter_level": "Nível mínimo",
|
||||
"debug_console_filter_modules": "Módulos",
|
||||
"modal_versioning_title": "Versionamento de Arquivos",
|
||||
"versioning_type": "Estratégia de versionamento",
|
||||
"versioning_type_desc": "Selecione o método usado para manter versões anteriores dos arquivos.",
|
||||
"versioning_none": "Sem versionamento",
|
||||
"versioning_trashcan": "Lixeira (Trash can)",
|
||||
"versioning_simple": "Simples (Simple)",
|
||||
"versioning_staggered": "Escalonado (Staggered)",
|
||||
"versioning_external": "Externo (External)",
|
||||
"versioning_cleanout_days": "Limpar após (dias)",
|
||||
"versioning_cleanout_days_desc": "Dias para manter arquivos na lixeira. 0 significa para sempre.",
|
||||
"versioning_keep": "Manter versões",
|
||||
"versioning_keep_desc": "Número de versões a manter.",
|
||||
"versioning_max_age": "Idade máxima (dias)",
|
||||
"versioning_max_age_desc": "Idade máxima das versões a manter.",
|
||||
"versioning_clean_interval": "Intervalo de limpeza (segundos)",
|
||||
"versioning_clean_interval_desc": "Intervalo entre a limpeza de versões antigas.",
|
||||
"versioning_command": "Comando",
|
||||
"versioning_command_desc": "Comando externo para executar o versionamento.",
|
||||
"btn_save": "Salvar",
|
||||
"notice_versioning_saved": "Configuração de versionamento salva.",
|
||||
"notice_versioning_error": "Falha ao salvar configuração de versionamento.",
|
||||
"setting_file_versioning_name": "Versionamento de Arquivos",
|
||||
"setting_file_versioning_desc": "Configure como o Syncthing mantém versões anteriores dos seus arquivos.",
|
||||
"btn_configure": "Configurar",
|
||||
"notice_folder_missing": "Pasta do Syncthing não encontrada. Por favor, reconfigure nas opções.",
|
||||
"notice_folder_migration": "Configuração de pasta desatualizada. Por favor, selecione novamente a pasta do cofre nas configurações do Syncthing.",
|
||||
"notice_resuming": "Retomando sincronização...",
|
||||
"notice_pausing": "Pausando sincronização...",
|
||||
"notice_is_paused": "Sincronização pausada.",
|
||||
"loading_versions": "Carregando versões...",
|
||||
"loading_config": "Carregando configuração...",
|
||||
"error_folder_not_found": "Pasta não encontrada na configuração.",
|
||||
"saving": "Salvando...",
|
||||
"error_loading_versions": "Erro ao carregar versões. Verifique o console.",
|
||||
"tab_syncing": "Sincronizando...",
|
||||
"tab_synced": "Sincronizado!",
|
||||
"conflict_delete_error": "Erro ao deletar arquivo.",
|
||||
"conflict_restore_error": "Erro ao restaurar conflito."
|
||||
}
|
||||
|
|
@ -1,301 +0,0 @@
|
|||
export default {
|
||||
// Comandos
|
||||
cmd_open_panel: "Abrir Painel Lateral",
|
||||
cmd_force_sync: "Forçar Sincronização Agora",
|
||||
cmd_debug_connect: "Debug: Testar Conexão",
|
||||
cmd_copy_debug: "Copiar informações de depuração",
|
||||
|
||||
// Ribbon
|
||||
ribbon_tooltip: "Abrir Syncthing Controller",
|
||||
|
||||
// Status / View
|
||||
status_synced: "Sincronizado",
|
||||
status_syncing: "Sincronizando...",
|
||||
status_offline: "Desconectado",
|
||||
status_error: "Erro",
|
||||
status_unknown: "Desconhecido",
|
||||
status_paused: "Pausado",
|
||||
|
||||
info_last_sync: "Último Sync",
|
||||
info_devices: "Dispositivos Online",
|
||||
info_folder: "Pasta Monitorada",
|
||||
info_history: "Atividade Recente",
|
||||
history_empty: "Nenhuma atividade recente",
|
||||
|
||||
// History Directions (Tooltips for arrows)
|
||||
history_incoming: "Recebido (Remoto)",
|
||||
history_outgoing: "Enviado (Local)",
|
||||
|
||||
btn_sync_now: "Sincronizar Agora",
|
||||
btn_requesting: "Solicitando...",
|
||||
tooltip_pause: "Pausar sincronização",
|
||||
tooltip_resume: "Retomar sincronização",
|
||||
|
||||
// Settings - Headers
|
||||
setting_header_conn: "Configurações de Conexão",
|
||||
setting_header_folder: "Pastas e Arquivos",
|
||||
setting_header_interface: "Interface",
|
||||
setting_header_general: "Geral",
|
||||
|
||||
// Settings - General
|
||||
setting_lang_name: "Idioma",
|
||||
setting_lang_desc:
|
||||
"Force a interface do plugin para um idioma específico ou siga o Obsidian.",
|
||||
|
||||
// Settings - Connection
|
||||
setting_https_name: "Usar HTTPS",
|
||||
setting_https_desc:
|
||||
"IMPORTANTE: Mantenha DESATIVADO para Android/Mobile funcionar corretamente, também deve estar desativado no syncthing. Só ative se você configurou certificados TLS válidos no Desktop.",
|
||||
setting_host_name: "Endereço IP / Host",
|
||||
setting_host_desc:
|
||||
'O endereço onde a interface do Syncthing roda. Use "127.0.0.1" para localhost.',
|
||||
setting_host_placeholder: "localhost",
|
||||
setting_port_name: "Porta",
|
||||
setting_port_desc:
|
||||
"Padrão é 8384. Verifique nas configurações do Syncthing se você alterou.",
|
||||
setting_api_name: "Chave da API (API Key)",
|
||||
setting_api_desc:
|
||||
"Copie este código no Syncthing em: Ações > Configurações > Geral.",
|
||||
btn_test_conn: "Testar Conexão",
|
||||
setting_api_stored_securely:
|
||||
"A chave da API está armazenada com segurança no chaveiro do sistema.",
|
||||
setting_api_stored_legacy:
|
||||
"A chave da API está armazenada localmente (atualize o Obsidian para suporte ao chaveiro).",
|
||||
setting_api_configured: "Configurada",
|
||||
setting_api_not_configured: "Não configurada",
|
||||
btn_modify_secret: "Modificar secret",
|
||||
|
||||
// Settings - Folder
|
||||
setting_folder_name: "Pasta do Cofre",
|
||||
setting_folder_desc:
|
||||
"Selecione qual ID de pasta do Syncthing corresponde a este cofre do Obsidian para monitorar o status específico dele.",
|
||||
dropdown_default: "Selecione uma pasta...",
|
||||
dropdown_none: "Nenhuma selecionada",
|
||||
btn_search_folders: "Buscar pastas no Syncthing",
|
||||
|
||||
// Settings - Conflict
|
||||
setting_modal_conflict_name: "Detecção de Conflitos",
|
||||
setting_modal_conflict_desc:
|
||||
'Ativa a busca automática por arquivos ".sync-conflict". Um alerta vermelho aparecerá no Painel Lateral se conflitos forem encontrados.',
|
||||
|
||||
// Settings - Interface
|
||||
setting_status_bar_name: "Mostrar na Barra de Status",
|
||||
setting_status_bar_desc:
|
||||
"Exibe o ícone de conexão e status no rodapé direito (Apenas Desktop). Reinicie o obsidian para aplicar.",
|
||||
setting_ribbon_name: "Mostrar Ícone no Ribbon",
|
||||
setting_ribbon_desc:
|
||||
"Exibe o ícone na barra lateral esquerda para acesso rápido ao painel. Reinicie o obsidian para aplicar.",
|
||||
setting_tab_icon_name: "Mostrar status de sync nas abas",
|
||||
setting_tab_icon_desc:
|
||||
"Exibe um ícone na aba do arquivo enquanto ele está sendo sincronizado.",
|
||||
setting_explorer_icon_name: "Ícone no Gerenciador de Arquivos",
|
||||
setting_explorer_icon_desc:
|
||||
"Exibe um botão de sincronização ao passar o mouse sobre os arquivos na barra lateral.",
|
||||
|
||||
// --- History Filter ---
|
||||
setting_history_filter_name: "Filtro de Histórico",
|
||||
setting_history_filter_desc:
|
||||
"Arquivos ou pastas para esconder do painel de histórico (separados por vírgula, ex: .Obsidian, .DS_Store).",
|
||||
|
||||
// Notices / Errors
|
||||
notice_syncing: "Sincronização solicitada...",
|
||||
notice_success_conn: "Conexão realizada com sucesso! ID do Dispositivo: ",
|
||||
notice_fail_conn:
|
||||
"Falha na conexão. Verifique IP, Porta e se o HTTPS está desativado (especialmente no Android).",
|
||||
notice_error_auth: "Erro de Autenticação. Verifique sua API Key.",
|
||||
notice_offline: "Syncthing inacessível. O aplicativo está rodando?",
|
||||
notice_folders_found: "pastas encontradas.",
|
||||
notice_config_first:
|
||||
"Por favor, configure a API Key, a URL e a pasta primeiro.",
|
||||
notice_searching: "Conectando ao Syncthing...",
|
||||
notice_invalid_host:
|
||||
"Formato de host inválido. Use IPv4, IPv6, localhost ou um domínio válido sem http/https.",
|
||||
notice_invalid_port: "Porta inválida. Deve ser um número entre 1 e 65535.",
|
||||
|
||||
// Modal de Conflitos
|
||||
modal_conflict_title: "Resolver Conflitos de Sync",
|
||||
modal_conflict_empty:
|
||||
"Ótimo! Nenhum arquivo de conflito encontrado no cofre.",
|
||||
modal_conflict_desc:
|
||||
"Os arquivos abaixo possuem versões conflitantes. Compare o conteúdo e escolha qual manter.",
|
||||
btn_compare: "Comparar Conteúdo",
|
||||
btn_keep_original: "Manter Original",
|
||||
tooltip_keep_original:
|
||||
"Apaga o arquivo de conflito (da direita) e mantém o seu arquivo atual.",
|
||||
btn_keep_conflict: "Usar Versão do Conflito",
|
||||
tooltip_keep_conflict:
|
||||
"Substitui o seu arquivo local pela versão do conflito (da direita).",
|
||||
btn_use_this_version: "Usar esta versão",
|
||||
diff_instructions:
|
||||
"Use as setas no meio para transferir alterações para o arquivo original. Para manter uma das versões integralmente, clique em 'Usar esta versão' acima dela.",
|
||||
btn_save_merge: "Salvar Merge",
|
||||
diff_legend: "Original (A) ↔ conflito (B)",
|
||||
|
||||
// Visualização de Diferença
|
||||
diff_original_header: "Arquivo Atual (Original)",
|
||||
diff_conflict_header: "Versão do Conflito",
|
||||
diff_loading: "Carregando conteúdo...",
|
||||
diff_original_missing:
|
||||
"(O arquivo original foi deletado ou não encontrado)",
|
||||
diff_read_error: "Erro ao ler o conteúdo do arquivo.",
|
||||
|
||||
// Ignore (.stignore)
|
||||
setting_ignore_name: "Arquivos Ignorados (.stignore)",
|
||||
setting_ignore_desc:
|
||||
"Edite o arquivo .stignore para impedir que arquivos específicos (como configs de workspace) sejam sincronizados, evitando bagunça de layout.",
|
||||
btn_edit_ignore: "Editar .stignore",
|
||||
|
||||
// Modal de Ignore
|
||||
modal_ignore_title: "Editar .stignore",
|
||||
modal_ignore_desc:
|
||||
"Arquivos ou padrões listados abaixo serão completamente ignorados pelo Syncthing.",
|
||||
header_ignore_templates: "Modelos Rápidos:",
|
||||
|
||||
ignore_help_text:
|
||||
'Clique em "Adicionar" para incluir regras comuns que evitam problemas de sincronização entre Desktop e Mobile.',
|
||||
|
||||
ignore_pattern_workspace_label: "Configurações de Workspace",
|
||||
ignore_pattern_workspace_desc:
|
||||
"Essencial! Ignora posições de janelas e abas abertas (evita conflitos visuais entre PC e Celular).",
|
||||
|
||||
ignore_pattern_installer_label: "Cache do Instalador",
|
||||
ignore_pattern_installer_desc:
|
||||
"Ignora arquivos temporários de atualização do Obsidian.",
|
||||
|
||||
ignore_pattern_hidden_label: "Arquivos Ocultos",
|
||||
ignore_pattern_hidden_desc:
|
||||
"Ignora arquivos de sistema (como .DS_Store no Mac ou thumbs.db no Windows).",
|
||||
|
||||
btn_add_ignore: "Adicionar",
|
||||
btn_save_ignore: "Salvar Alterações",
|
||||
notice_ignore_saved: "Arquivo .stignore salvo com sucesso.",
|
||||
notice_ignore_exists: "Esta regra já está na lista.",
|
||||
notice_ignore_added: "Adicionado: ",
|
||||
notice_ignore_error: "Erro ao salvar .stignore",
|
||||
|
||||
// Alerta de Conflito (View)
|
||||
alert_conflict_detected: "Conflito(s) Detectado(s)!",
|
||||
alert_click_to_resolve: "Clique aqui para resolver",
|
||||
|
||||
// Placeholders
|
||||
explorer_sync_tooltip: "Sincronizar este arquivo",
|
||||
|
||||
// About
|
||||
setting_header_about: "Sobre",
|
||||
setting_version_name: "Versão",
|
||||
setting_version_tooltip: "Ver notas da versão",
|
||||
setting_github_desc: "Acesse o código fonte ou reporte um problema.",
|
||||
btn_github_repo: "Repositório GitHub",
|
||||
btn_report_bug: "Reportar Bug",
|
||||
|
||||
// Versões
|
||||
modal_versions_title: "Versões do Arquivo",
|
||||
modal_versions_empty: "Nenhuma versão anterior encontrada.",
|
||||
btn_restore: "Restaurar",
|
||||
notice_version_restored: "Versão restaurada com sucesso.",
|
||||
notice_restore_fail: "Falha ao restaurar versão.",
|
||||
confirm_restore:
|
||||
"Tem certeza que deseja restaurar a versão de {date}? O conteúdo atual será sobrescrito.",
|
||||
cmd_view_versions: "Versões de Arquivo",
|
||||
btn_cancel: "Cancelar",
|
||||
modal_confirm_title: "Confirmar Ação",
|
||||
|
||||
// Menu de Contexto
|
||||
modal_context_menu_title: "Menu de Contexto",
|
||||
btn_manage_context_menu: "Gerenciar itens do menu de contexto",
|
||||
setting_group_context_menu_name: "Agrupar itens",
|
||||
setting_group_context_menu_desc:
|
||||
"Agrupa todos os itens do syncthing em um único submenu.",
|
||||
header_context_menu_items: "Itens",
|
||||
btn_view_version: "Ver conteúdo",
|
||||
cmd_sync_file: "Sincronizar arquivo",
|
||||
cmd_ignore_file: "Não sincronizar isto",
|
||||
notice_ignored_success: "Adicionado ao .stignore",
|
||||
notice_ignored_error: "Falha ao adicionar ao .stignore",
|
||||
// Debug
|
||||
setting_debug_mode_name: "Modo de Depuração",
|
||||
setting_debug_mode_desc: "Habilita logs detalhados no console (dev).",
|
||||
tooltip_configure_modules: "Configurar módulos",
|
||||
modal_debug_title: "Configuração de Depuração",
|
||||
modal_debug_desc: "Selecione quais módulos devem exibir logs no console.",
|
||||
|
||||
// Relatório de Depuração
|
||||
debug_report_title: "Relatório de depuração",
|
||||
debug_report_desc:
|
||||
"Copie as informações abaixo e cole em um relatório de bug.",
|
||||
debug_report_copy: "Copiar para área de transferência",
|
||||
debug_report_copied: "Informações copiadas!",
|
||||
debug_report_open_issue: "Abrir Issue no GitHub",
|
||||
debug_report_no_errors: "Nenhum erro ou aviso recente.",
|
||||
btn_debug_report: "Relatório de depuração",
|
||||
|
||||
// Níveis de Log
|
||||
setting_log_level_name: "Nível de log",
|
||||
setting_log_level_desc:
|
||||
"Define a severidade mínima dos logs a serem capturados.",
|
||||
log_level_off: "Desligado",
|
||||
log_level_error: "Apenas erros",
|
||||
log_level_warn: "Avisos + erros",
|
||||
log_level_debug: "Todos (debug)",
|
||||
|
||||
// Console de Depuração
|
||||
debug_console_title: "Console de depuração",
|
||||
debug_console_empty: "Nenhum log capturado ainda.",
|
||||
debug_console_clear: "Limpar",
|
||||
btn_open_console: "Abrir console",
|
||||
debug_console_filter_level: "Nível mínimo",
|
||||
debug_console_filter_modules: "Módulos",
|
||||
|
||||
// Versioning
|
||||
modal_versioning_title: "Versionamento de Arquivos",
|
||||
versioning_type: "Estratégia de versionamento",
|
||||
versioning_type_desc:
|
||||
"Selecione o método usado para manter versões anteriores dos arquivos.",
|
||||
versioning_none: "Sem versionamento",
|
||||
versioning_trashcan: "Lixeira (Trash can)",
|
||||
versioning_simple: "Simples (Simple)",
|
||||
versioning_staggered: "Escalonado (Staggered)",
|
||||
versioning_external: "Externo (External)",
|
||||
|
||||
versioning_cleanout_days: "Limpar após (dias)",
|
||||
versioning_cleanout_days_desc:
|
||||
"Dias para manter arquivos na lixeira. 0 significa para sempre.",
|
||||
versioning_keep: "Manter versões",
|
||||
versioning_keep_desc: "Número de versões a manter.",
|
||||
versioning_max_age: "Idade máxima (dias)",
|
||||
versioning_max_age_desc: "Idade máxima das versões a manter.",
|
||||
versioning_clean_interval: "Intervalo de limpeza (segundos)",
|
||||
versioning_clean_interval_desc:
|
||||
"Intervalo entre a limpeza de versões antigas.",
|
||||
versioning_command: "Comando",
|
||||
versioning_command_desc: "Comando externo para executar o versionamento.",
|
||||
|
||||
btn_save: "Salvar",
|
||||
notice_versioning_saved: "Configuração de versionamento salva.",
|
||||
notice_versioning_error: "Falha ao salvar configuração de versionamento.",
|
||||
setting_file_versioning_name: "Versionamento de Arquivos",
|
||||
setting_file_versioning_desc:
|
||||
"Configure como o Syncthing mantém versões anteriores dos seus arquivos.",
|
||||
|
||||
btn_configure: "Configurar",
|
||||
|
||||
// Connection Check
|
||||
notice_folder_missing:
|
||||
"Pasta do Syncthing não encontrada. Por favor, reconfigure nas opções.",
|
||||
notice_folder_migration:
|
||||
"Configuração de pasta desatualizada. Por favor, selecione novamente a pasta do cofre nas configurações do Syncthing.",
|
||||
|
||||
// Dynamic UI Strings
|
||||
notice_resuming: "Retomando sincronização...",
|
||||
notice_pausing: "Pausando sincronização...",
|
||||
notice_is_paused: "Sincronização pausada.",
|
||||
loading_versions: "Carregando versões...",
|
||||
loading_config: "Carregando configuração...",
|
||||
error_folder_not_found: "Pasta não encontrada na configuração.",
|
||||
saving: "Salvando...",
|
||||
error_loading_versions: "Erro ao carregar versões. Verifique o console.",
|
||||
tab_syncing: "Sincronizando...",
|
||||
tab_synced: "Sincronizado!",
|
||||
conflict_delete_error: "Erro ao deletar arquivo.",
|
||||
conflict_restore_error: "Erro ao restaurar conflito.",
|
||||
};
|
||||
200
src/lang/locales/ru.json
Normal file
200
src/lang/locales/ru.json
Normal file
|
|
@ -0,0 +1,200 @@
|
|||
{
|
||||
"cmd_open_panel": "Открыть Боковую Панель",
|
||||
"cmd_force_sync": "Принудительно синхронизировать сейчас",
|
||||
"cmd_debug_connect": "Отладка: Тест подключения",
|
||||
"cmd_copy_debug": "Скопировать отладочную информацию",
|
||||
"ribbon_tooltip": "Открыть контроллер Syncthing",
|
||||
"status_synced": "Синхронизировано",
|
||||
"status_syncing": "Синхронизация...",
|
||||
"status_offline": "Не в сети",
|
||||
"status_error": "Ошибка",
|
||||
"status_unknown": "Неизвестно",
|
||||
"status_paused": "Пауза",
|
||||
"status_config": "Ожидание конфигурации",
|
||||
"info_last_sync": "Последняя синхронизация",
|
||||
"info_devices": "Устройств в сети",
|
||||
"info_folder": "Папка хранилища",
|
||||
"info_history": "Недавняя активность",
|
||||
"history_empty": "Нет недавней активности",
|
||||
"history_incoming": "Входящие (удаленно)",
|
||||
"history_outgoing": "Исходящие (локально)",
|
||||
"btn_sync_now": "Синхронизировать сейчас",
|
||||
"btn_requesting": "Запрашивается...",
|
||||
"tooltip_pause": "Приостановить синхронизацию",
|
||||
"tooltip_resume": "Возобновить синхронизацию",
|
||||
"setting_header_conn": "Настройки соединения",
|
||||
"setting_header_folder": "Папки и файлы",
|
||||
"setting_header_interface": "Параметры интерфейса",
|
||||
"setting_header_general": "Основные",
|
||||
"setting_lang_name": "Язык интерфейса",
|
||||
"setting_lang_desc": "Выберите предпочитаемый язык или используйте выставленный в Obsidian. Плагин локализуется сообществом. Чтобы помочь перевести его на ваш язык, нажмите на значок глобуса (Crowdin).",
|
||||
"tooltip_help_translate": "Помочь с переводом (Crowdin)",
|
||||
"setting_https_name": "Использовать HTTPS",
|
||||
"setting_https_desc": "ВАЖНО: Для корректной работы c Android/Mobile ОТКЛЮЧИТЕ эту функцию, она также должна быть ОТКЛЮЧЕНА в Syncthing. Включайте только в том случае, если вы настроили действующий сертификат TLS на своем Устройстве.",
|
||||
"setting_host_name": "IP Адрес / Хост",
|
||||
"setting_host_desc": "Адрес, по которому открывается доступ к интерфейсу Syncthing. Используйте \"127.0.0.1\" для локальной сети.",
|
||||
"setting_host_placeholder": "localhost",
|
||||
"setting_port_name": "Порт",
|
||||
"setting_port_desc": "Стандартный 8384. Проверьте настройки Syncthing через интерфейс, если вы его изменили.",
|
||||
"setting_api_name": "API Ключ",
|
||||
"setting_api_desc": "Найдите его по пути Syncthing > Действия > Настройки > Общие.",
|
||||
"btn_test_conn": "Проверить соединение",
|
||||
"setting_api_stored_securely": "API ключ надёжно хранится в связке ключей системы.",
|
||||
"setting_api_stored_legacy": "API ключ хранится локально (обновите Obsidian для поддержки связки ключей).",
|
||||
"setting_api_configured": "Настроен",
|
||||
"setting_api_not_configured": "Не настроен",
|
||||
"btn_modify_secret": "Изменить секрет",
|
||||
"setting_folder_name": "ID папки хранилища",
|
||||
"setting_folder_desc": "Выберите ID папки в Syncthing, соответствующий этому хранилищу Obsidian, чтобы отслеживать ее конкретный статус.",
|
||||
"dropdown_default": "Выберите папку...",
|
||||
"dropdown_none": "Папка не выбрана",
|
||||
"btn_search_folders": "Найти папки из Syncthing",
|
||||
"setting_modal_conflict_name": "Обнаружение конфликтов",
|
||||
"setting_modal_conflict_desc": "Включить автоматический поиск \".sync-conflict\" файлов. При обнаружении конфликтов на Боковой Панели появится красное предупреждение.",
|
||||
"setting_status_bar_name": "Показывать значок в Строке Состояния",
|
||||
"setting_status_bar_desc": "Отображает значок подключения и быстрые действия в нижней правой строке состояния (Только для ПК). Перезапустите Obsidian, чтобы применить.",
|
||||
"setting_ribbon_name": "Показывать иконку на Вертикальной Панели",
|
||||
"setting_ribbon_desc": "Отображает значок на левой вертикальной панели, чтобы быстро открыть панель управления. Перезапустите Obsidian, чтобы применить.",
|
||||
"setting_tab_icon_name": "Показывать статус синхронизации во вкладках",
|
||||
"setting_tab_icon_desc": "Отображает иконку во вкладке файла во время его синхронизации.",
|
||||
"setting_explorer_icon_name": "Иконка в проводнике файлов",
|
||||
"setting_explorer_icon_desc": "Показывать кнопку синхронизации при наведении на файлы в боковой панели.",
|
||||
"setting_history_filter_name": "Фильтр истории",
|
||||
"setting_history_filter_desc": "Файлы или папки, которые нужно скрыть из панели истории (через запятую, например .Obsidian, .ds_store).",
|
||||
"notice_syncing": "Запрошена синхронизация...",
|
||||
"notice_success_conn": "Подключение прошло успешно! ID устройства: ",
|
||||
"notice_fail_conn": "Не удалось установить соединение. Пожалуйста, проверьте IP, Порт, и убедитесь,что HTTPS отключен (особенно на Android).",
|
||||
"notice_error_auth": "Не удалось выполнить авторизацию. Пожалуйста, проверьте Ваш API Ключ.",
|
||||
"notice_offline": "Syncthing недоступен. Запущен ли он?",
|
||||
"notice_folders_found": "папки(ок) найдено.",
|
||||
"notice_config_first": "Пожалуйста, сначала настройте API Ключ, URL и папку.",
|
||||
"notice_searching": "Подключение к Syncthing...",
|
||||
"notice_invalid_host": "Неверный формат хоста. Используйте IPv4, IPv6, localhost или действительный домен без http/https.",
|
||||
"notice_invalid_port": "Неверный порт. Строго укажите число от 1 до 65535.",
|
||||
"modal_conflict_title": "Разрешить конфликты синхронизации",
|
||||
"modal_conflict_empty": "Отличные новости! Конфликтующих файлов в Вашем хранилище не найдено.",
|
||||
"modal_conflict_desc": "Данные файлы имеют конфликтующие версии. Сравните содержимое и выберите какой оставить.",
|
||||
"btn_compare": "Сравнить содержимое",
|
||||
"btn_keep_original": "Оставить оригинал",
|
||||
"tooltip_keep_original": "Удалит конфликтные файлы (правая сторона) и оставит Ваши локальные.",
|
||||
"btn_keep_conflict": "Использовать конфликтную",
|
||||
"tooltip_keep_conflict": "Заменяет Ваши локальные файлы на конфликтные (правая сторона).",
|
||||
"btn_use_this_version": "Использовать эту версию",
|
||||
"diff_instructions": "Используйте стрелки посередине для переноса изменений в исходный файл. Чтобы полностью сохранить одну из версий, нажмите 'Использовать эту версию' над ней.",
|
||||
"btn_save_merge": "Сохранить слияние",
|
||||
"diff_legend": "Оригинал (A) ↔ конфликт (B)",
|
||||
"diff_original_header": "Текущий файл (Оригинал)",
|
||||
"diff_conflict_header": "Конфликтующая версия",
|
||||
"diff_loading": "Загружаю содержимое файла...",
|
||||
"diff_original_missing": "(Оригинальный файл удален или не был найден)",
|
||||
"diff_read_error": "Ошибка при чтении содержимого файла.",
|
||||
"setting_ignore_name": "Шаблон игнорирования (.stignore)",
|
||||
"setting_ignore_desc": "Редактируйте .stignore файл, чтобы предотвратить синхронизацию конкретных файлов (например настройки пространств) между устройствами.",
|
||||
"btn_edit_ignore": "Редактировать .stignore",
|
||||
"modal_ignore_title": "Редактирование .stignore",
|
||||
"modal_ignore_desc": "Файлы или шаблоны вписанные ниже будут полностью проигнорированы Syncthing.",
|
||||
"header_ignore_templates": "Встроенные Шаблоны:",
|
||||
"ignore_help_text": "Нажмите \"Добавить\", чтобы включить общие правила, предотвращающие проблемы синхронизации между ПК и мобильным устройством.",
|
||||
"ignore_pattern_workspace_label": "Настройки рабочей среды",
|
||||
"ignore_pattern_workspace_desc": "Важно! Игнорирует позиции открытых окон и вкладок (избегает визуальных конфликтов между ПК и мобильным устройством).",
|
||||
"ignore_pattern_installer_label": "Кэш установщика",
|
||||
"ignore_pattern_installer_desc": "Игнорирует временные файлы обновлений Obsidian.",
|
||||
"ignore_pattern_hidden_label": "Скрытые файлы",
|
||||
"ignore_pattern_hidden_desc": "Игнорирует системные файлы (например, .ds_store на mac или thumbs.db на Windows).",
|
||||
"btn_add_ignore": "Добавить",
|
||||
"btn_save_ignore": "Сохранить изменения",
|
||||
"notice_ignore_saved": ".stignore успешно сохранен.",
|
||||
"notice_ignore_exists": "Это правило уже в есть в списке.",
|
||||
"notice_ignore_added": "Добавлено: ",
|
||||
"notice_ignore_error": "Ошибка сохранения .stignore",
|
||||
"alert_conflict_detected": "Обнаружен конфликт(ы)!",
|
||||
"alert_click_to_resolve": "Нажмите здесь, чтобы решить",
|
||||
"explorer_sync_tooltip": "Синхронизировать этот файл",
|
||||
"setting_header_about": "О плагине",
|
||||
"setting_version_name": "Версия",
|
||||
"setting_version_tooltip": "Просмотреть заметки к выпуску",
|
||||
"setting_github_desc": "Исходный код или сообщение об ошибке.",
|
||||
"btn_github_repo": "Репозиторий GitHub",
|
||||
"btn_report_bug": "Сообщить об ошибке",
|
||||
"modal_versions_title": "Версии файла",
|
||||
"modal_versions_empty": "Предыдущие версии не найдены.",
|
||||
"btn_restore": "Восстановить",
|
||||
"notice_version_restored": "Версия успешно восстановлена.",
|
||||
"notice_restore_fail": "Не удалось восстановить версию.",
|
||||
"confirm_restore": "Вы уверены, что хотите восстановить версию от {date}? Текущее содержимое будет перезаписано.",
|
||||
"cmd_view_versions": "Версии файла",
|
||||
"btn_cancel": "Отмена",
|
||||
"modal_confirm_title": "Подтверждение",
|
||||
"modal_context_menu_title": "Контекстное меню",
|
||||
"btn_manage_context_menu": "Управление контекстным меню",
|
||||
"setting_group_context_menu_name": "Группировка элементов",
|
||||
"setting_group_context_menu_desc": "Группировать все элементы syncthing в одно подменю.",
|
||||
"header_context_menu_items": "Элементы",
|
||||
"btn_view_version": "Просмотр содержимого",
|
||||
"cmd_sync_file": "Синхронизировать файл",
|
||||
"cmd_ignore_file": "Не синхронизировать это",
|
||||
"notice_ignored_success": "Добавлено в .stignore",
|
||||
"notice_ignored_error": "Не удалось добавить в .stignore",
|
||||
"setting_debug_mode_name": "Режим отладки",
|
||||
"setting_debug_mode_desc": "Включить подробное логирование в консоли (dev).",
|
||||
"tooltip_configure_modules": "Настроить модули",
|
||||
"modal_debug_title": "Конфигурация отладки",
|
||||
"modal_debug_desc": "Выберите модули, которые будут выводить логи в консоль.",
|
||||
"debug_report_title": "Отчёт об отладке",
|
||||
"debug_report_desc": "Скопируйте информацию ниже и вставьте в отчёт об ошибке.",
|
||||
"debug_report_copy": "Копировать в буфер обмена",
|
||||
"debug_report_copied": "Информация скопирована!",
|
||||
"debug_report_open_issue": "Открыть Issue на GitHub",
|
||||
"debug_report_no_errors": "Нет недавних ошибок или предупреждений.",
|
||||
"btn_debug_report": "Отчёт об отладке",
|
||||
"setting_log_level_name": "Уровень логов",
|
||||
"setting_log_level_desc": "Установите минимальную серьёзность логов для захвата.",
|
||||
"log_level_off": "Выключено",
|
||||
"log_level_error": "Только ошибки",
|
||||
"log_level_warn": "Предупреждения + ошибки",
|
||||
"log_level_debug": "Все (отладка)",
|
||||
"debug_console_title": "Консоль отладки",
|
||||
"debug_console_empty": "Логи пока не захвачены.",
|
||||
"debug_console_clear": "Очистить",
|
||||
"btn_open_console": "Открыть консоль",
|
||||
"debug_console_filter_level": "Минимальный уровень",
|
||||
"debug_console_filter_modules": "Модули",
|
||||
"modal_versioning_title": "Версионирование файлов",
|
||||
"versioning_type": "Стратегия версионирования",
|
||||
"versioning_type_desc": "Выберите метод для сохранения предыдущих версий файлов.",
|
||||
"versioning_none": "Без версионирования",
|
||||
"versioning_trashcan": "Корзина (Trash can)",
|
||||
"versioning_simple": "Простое (Simple)",
|
||||
"versioning_staggered": "Поэтапное (Staggered)",
|
||||
"versioning_external": "Внешнее (External)",
|
||||
"versioning_cleanout_days": "Очищать через (дней)",
|
||||
"versioning_cleanout_days_desc": "Дней хранить файлы в корзине. 0 означает вечно.",
|
||||
"versioning_keep": "Хранить версий",
|
||||
"versioning_keep_desc": "Количество версий для хранения.",
|
||||
"versioning_max_age": "Максимальный возраст (дней)",
|
||||
"versioning_max_age_desc": "Максимальный возраст версий для хранения.",
|
||||
"versioning_clean_interval": "Интервал очистки (секунды)",
|
||||
"versioning_clean_interval_desc": "Интервал между очисткой старых версий.",
|
||||
"versioning_command": "Команда",
|
||||
"versioning_command_desc": "Внешняя команда для выполнения версионирования.",
|
||||
"btn_save": "Сохранить",
|
||||
"notice_versioning_saved": "Конфигурация версионирования сохранена.",
|
||||
"notice_versioning_error": "Не удалось сохранить конфигурацию версионирования.",
|
||||
"setting_file_versioning_name": "Версионирование файлов",
|
||||
"setting_file_versioning_desc": "Настройте, как Syncthing сохраняет предыдущие версии ваших файлов.",
|
||||
"btn_configure": "Настроить",
|
||||
"notice_folder_missing": "Папка Syncthing не найдена. Пожалуйста, выберите её заново в настройках.",
|
||||
"notice_folder_migration": "Конфигурация папки устарела. Пожалуйста, выберите папку хранилища заново в настройках Syncthing.",
|
||||
"notice_resuming": "Возобновление синхронизации...",
|
||||
"notice_pausing": "Приостановка синхронизации...",
|
||||
"notice_is_paused": "Синхронизация приостановлена.",
|
||||
"loading_versions": "Загрузка версий...",
|
||||
"loading_config": "Загрузка конфигурации...",
|
||||
"error_folder_not_found": "Папка не найдена в конфигурации.",
|
||||
"saving": "Сохранение...",
|
||||
"error_loading_versions": "Ошибка загрузки версий. Проверьте консоль.",
|
||||
"tab_syncing": "Синхронизация...",
|
||||
"tab_synced": "Синхронизировано!",
|
||||
"conflict_delete_error": "Ошибка удаления файла.",
|
||||
"conflict_restore_error": "Ошибка восстановления конфликта."
|
||||
}
|
||||
|
|
@ -1,300 +0,0 @@
|
|||
export default {
|
||||
// Commands
|
||||
cmd_open_panel: "Открыть Боковую Панель",
|
||||
cmd_force_sync: "Принудительно синхронизировать сейчас",
|
||||
cmd_debug_connect: "Отладка: Тест подключения",
|
||||
cmd_copy_debug: "Скопировать отладочную информацию",
|
||||
|
||||
// Ribbon Icon
|
||||
ribbon_tooltip: "Открыть контроллер Syncthing",
|
||||
|
||||
// Status / View
|
||||
status_synced: "Синхронизировано",
|
||||
status_syncing: "Синхронизация...",
|
||||
status_offline: "Не в сети",
|
||||
status_error: "Ошибка",
|
||||
status_unknown: "Неизвестно",
|
||||
status_paused: "Пауза",
|
||||
|
||||
info_last_sync: "Последняя синхронизация",
|
||||
info_devices: "Устройств в сети",
|
||||
info_folder: "Папка хранилища",
|
||||
info_history: "Недавняя активность",
|
||||
history_empty: "Нет недавней активности",
|
||||
|
||||
// History Directions (Tooltips for arrows)
|
||||
history_incoming: "Входящие (удаленно)",
|
||||
history_outgoing: "Исходящие (локально)",
|
||||
|
||||
btn_sync_now: "Синхронизировать сейчас",
|
||||
btn_requesting: "Запрашивается...",
|
||||
tooltip_pause: "Приостановить синхронизацию",
|
||||
tooltip_resume: "Возобновить синхронизацию",
|
||||
|
||||
// Settings - Headers
|
||||
setting_header_conn: "Настройки соединения",
|
||||
setting_header_folder: "Папки и файлы",
|
||||
setting_header_interface: "Параметры интерфейса",
|
||||
setting_header_general: "Основные",
|
||||
|
||||
// Settings - General
|
||||
setting_lang_name: "Язык интерфейса",
|
||||
setting_lang_desc:
|
||||
"Выберите предпочитаемый язык или используйте выставленный в Obsidian.",
|
||||
|
||||
// Settings - Connection
|
||||
setting_https_name: "Использовать HTTPS",
|
||||
setting_https_desc:
|
||||
"ВАЖНО: Для корректной работы c Android/Mobile ОТКЛЮЧИТЕ эту функцию, она также должна быть ОТКЛЮЧЕНА в Syncthing. Включайте только в том случае, если вы настроили действующий сертификат TLS на своем Устройстве.",
|
||||
setting_host_name: "IP Адрес / Хост",
|
||||
setting_host_desc:
|
||||
'Адрес, по которому открывается доступ к интерфейсу Syncthing. Используйте "127.0.0.1" для локальной сети.',
|
||||
setting_host_placeholder: "localhost",
|
||||
setting_port_name: "Порт",
|
||||
setting_port_desc:
|
||||
"Стандартный 8384. Проверьте настройки Syncthing через интерфейс, если вы его изменили.",
|
||||
setting_api_name: "API Ключ",
|
||||
setting_api_desc:
|
||||
"Найдите его по пути Syncthing > Действия > Настройки > Общие.",
|
||||
btn_test_conn: "Проверить соединение",
|
||||
setting_api_stored_securely:
|
||||
"API ключ надёжно хранится в связке ключей системы.",
|
||||
setting_api_stored_legacy:
|
||||
"API ключ хранится локально (обновите Obsidian для поддержки связки ключей).",
|
||||
setting_api_configured: "Настроен",
|
||||
setting_api_not_configured: "Не настроен",
|
||||
btn_modify_secret: "Изменить секрет",
|
||||
|
||||
// Settings - Folder
|
||||
setting_folder_name: "ID папки хранилища",
|
||||
setting_folder_desc:
|
||||
"Выберите ID папки в Syncthing, соответствующий этому хранилищу Obsidian, чтобы отслеживать ее конкретный статус.",
|
||||
dropdown_default: "Выберите папку...",
|
||||
dropdown_none: "Папка не выбрана",
|
||||
btn_search_folders: "Найти папки из Syncthing",
|
||||
|
||||
// Settings - Conflict
|
||||
setting_modal_conflict_name: "Обнаружение конфликтов",
|
||||
setting_modal_conflict_desc:
|
||||
'Включить автоматический поиск ".sync-conflict" файлов. При обнаружении конфликтов на Боковой Панели появится красное предупреждение.',
|
||||
|
||||
// Settings - Interface
|
||||
setting_status_bar_name: "Показывать значок в Строке Состояния",
|
||||
setting_status_bar_desc:
|
||||
"Отображает значок подключения и быстрые действия в нижней правой строке состояния (Только для ПК). Перезапустите Obsidian, чтобы применить.",
|
||||
setting_ribbon_name: "Показывать иконку на Вертикальной Панели",
|
||||
setting_ribbon_desc:
|
||||
"Отображает значок на левой вертикальной панели, чтобы быстро открыть панель управления. Перезапустите Obsidian, чтобы применить.",
|
||||
setting_tab_icon_name: "Показывать статус синхронизации во вкладках",
|
||||
setting_tab_icon_desc:
|
||||
"Отображает иконку во вкладке файла во время его синхронизации.",
|
||||
setting_explorer_icon_name: "Иконка в проводнике файлов",
|
||||
setting_explorer_icon_desc:
|
||||
"Показывать кнопку синхронизации при наведении на файлы в боковой панели.",
|
||||
|
||||
// --- History Filter ---
|
||||
setting_history_filter_name: "Фильтр истории",
|
||||
setting_history_filter_desc:
|
||||
"Файлы или папки, которые нужно скрыть из панели истории (через запятую, например .Obsidian, .ds_store).",
|
||||
|
||||
// Notices / Errors
|
||||
notice_syncing: "Запрошена синхронизация...",
|
||||
notice_success_conn: "Подключение прошло успешно! ID устройства: ",
|
||||
notice_fail_conn:
|
||||
"Не удалось установить соединение. Пожалуйста, проверьте IP, Порт, и убедитесь,что HTTPS отключен (особенно на Android).",
|
||||
notice_error_auth:
|
||||
"Не удалось выполнить авторизацию. Пожалуйста, проверьте Ваш API Ключ.",
|
||||
notice_offline: "Syncthing недоступен. Запущен ли он?",
|
||||
notice_folders_found: "папки(ок) найдено.",
|
||||
notice_config_first: "Пожалуйста, сначала настройте API Ключ, URL и папку.",
|
||||
notice_searching: "Подключение к Syncthing...",
|
||||
notice_invalid_host:
|
||||
"Неверный формат хоста. Используйте IPv4, IPv6, localhost или действительный домен без http/https.",
|
||||
notice_invalid_port: "Неверный порт. Строго укажите число от 1 до 65535.",
|
||||
|
||||
// Conflict Modal
|
||||
modal_conflict_title: "Разрешить конфликты синхронизации",
|
||||
modal_conflict_empty:
|
||||
"Отличные новости! Конфликтующих файлов в Вашем хранилище не найдено.",
|
||||
modal_conflict_desc:
|
||||
"Данные файлы имеют конфликтующие версии. Сравните содержимое и выберите какой оставить.",
|
||||
btn_compare: "Сравнить содержимое",
|
||||
btn_keep_original: "Оставить оригинал",
|
||||
tooltip_keep_original:
|
||||
"Удалит конфликтные файлы (правая сторона) и оставит Ваши локальные.",
|
||||
btn_keep_conflict: "Использовать конфликтную",
|
||||
tooltip_keep_conflict:
|
||||
"Заменяет Ваши локальные файлы на конфликтные (правая сторона).",
|
||||
btn_use_this_version: "Использовать эту версию",
|
||||
diff_instructions:
|
||||
"Используйте стрелки посередине для переноса изменений в исходный файл. Чтобы полностью сохранить одну из версий, нажмите 'Использовать эту версию' над ней.",
|
||||
btn_save_merge: "Сохранить слияние",
|
||||
diff_legend: "Оригинал (A) ↔ конфликт (B)",
|
||||
|
||||
// Diff View
|
||||
diff_original_header: "Текущий файл (Оригинал)",
|
||||
diff_conflict_header: "Конфликтующая версия",
|
||||
diff_loading: "Загружаю содержимое файла...",
|
||||
diff_original_missing: "(Оригинальный файл удален или не был найден)",
|
||||
diff_read_error: "Ошибка при чтении содержимого файла.",
|
||||
|
||||
// Ignore (.stignore)
|
||||
setting_ignore_name: "Шаблон игнорирования (.stignore)",
|
||||
setting_ignore_desc:
|
||||
"Редактируйте .stignore файл, чтобы предотвратить синхронизацию конкретных файлов (например настройки пространств) между устройствами.",
|
||||
btn_edit_ignore: "Редактировать .stignore",
|
||||
|
||||
// Ignore Modal
|
||||
modal_ignore_title: "Редактирование .stignore",
|
||||
modal_ignore_desc:
|
||||
"Файлы или шаблоны вписанные ниже будут полностью проигнорированы Syncthing.",
|
||||
header_ignore_templates: "Встроенные Шаблоны:",
|
||||
ignore_help_text:
|
||||
'Нажмите "Добавить", чтобы включить общие правила, предотвращающие проблемы синхронизации между ПК и мобильным устройством.',
|
||||
|
||||
ignore_pattern_workspace_label: "Настройки рабочей среды",
|
||||
ignore_pattern_workspace_desc:
|
||||
"Важно! Игнорирует позиции открытых окон и вкладок (избегает визуальных конфликтов между ПК и мобильным устройством).",
|
||||
|
||||
ignore_pattern_installer_label: "Кэш установщика",
|
||||
ignore_pattern_installer_desc:
|
||||
"Игнорирует временные файлы обновлений Obsidian.",
|
||||
|
||||
ignore_pattern_hidden_label: "Скрытые файлы",
|
||||
ignore_pattern_hidden_desc:
|
||||
"Игнорирует системные файлы (например, .ds_store на mac или thumbs.db на Windows).",
|
||||
|
||||
btn_add_ignore: "Добавить",
|
||||
btn_save_ignore: "Сохранить изменения",
|
||||
notice_ignore_saved: ".stignore успешно сохранен.",
|
||||
notice_ignore_exists: "Это правило уже в есть в списке.",
|
||||
|
||||
notice_ignore_added: "Добавлено: ",
|
||||
notice_ignore_error: "Ошибка сохранения .stignore",
|
||||
|
||||
// Conflict Alert (View)
|
||||
alert_conflict_detected: "Обнаружен конфликт(ы)!",
|
||||
alert_click_to_resolve: "Нажмите здесь, чтобы решить",
|
||||
|
||||
// Placeholders
|
||||
explorer_sync_tooltip: "Синхронизировать этот файл",
|
||||
|
||||
// About
|
||||
setting_header_about: "О плагине",
|
||||
setting_version_name: "Версия",
|
||||
setting_version_tooltip: "Просмотреть заметки к выпуску",
|
||||
setting_github_desc: "Исходный код или сообщение об ошибке.",
|
||||
btn_github_repo: "Репозиторий GitHub",
|
||||
btn_report_bug: "Сообщить об ошибке",
|
||||
|
||||
// Versions
|
||||
modal_versions_title: "Версии файла",
|
||||
modal_versions_empty: "Предыдущие версии не найдены.",
|
||||
btn_restore: "Восстановить",
|
||||
notice_version_restored: "Версия успешно восстановлена.",
|
||||
notice_restore_fail: "Не удалось восстановить версию.",
|
||||
confirm_restore:
|
||||
"Вы уверены, что хотите восстановить версию от {date}? Текущее содержимое будет перезаписано.",
|
||||
cmd_view_versions: "Версии файла",
|
||||
btn_cancel: "Отмена",
|
||||
modal_confirm_title: "Подтверждение",
|
||||
|
||||
// Context Menu
|
||||
modal_context_menu_title: "Контекстное меню",
|
||||
btn_manage_context_menu: "Управление контекстным меню",
|
||||
setting_group_context_menu_name: "Группировка элементов",
|
||||
setting_group_context_menu_desc:
|
||||
"Группировать все элементы syncthing в одно подменю.",
|
||||
header_context_menu_items: "Элементы",
|
||||
btn_view_version: "Просмотр содержимого",
|
||||
cmd_sync_file: "Синхронизировать файл",
|
||||
cmd_ignore_file: "Не синхронизировать это",
|
||||
notice_ignored_success: "Добавлено в .stignore",
|
||||
notice_ignored_error: "Не удалось добавить в .stignore",
|
||||
// Debug
|
||||
setting_debug_mode_name: "Режим отладки",
|
||||
setting_debug_mode_desc: "Включить подробное логирование в консоли (dev).",
|
||||
tooltip_configure_modules: "Настроить модули",
|
||||
modal_debug_title: "Конфигурация отладки",
|
||||
modal_debug_desc: "Выберите модули, которые будут выводить логи в консоль.",
|
||||
|
||||
// Отчёт об отладке
|
||||
debug_report_title: "Отчёт об отладке",
|
||||
debug_report_desc:
|
||||
"Скопируйте информацию ниже и вставьте в отчёт об ошибке.",
|
||||
debug_report_copy: "Копировать в буфер обмена",
|
||||
debug_report_copied: "Информация скопирована!",
|
||||
debug_report_open_issue: "Открыть Issue на GitHub",
|
||||
debug_report_no_errors: "Нет недавних ошибок или предупреждений.",
|
||||
btn_debug_report: "Отчёт об отладке",
|
||||
|
||||
// Уровни логов
|
||||
setting_log_level_name: "Уровень логов",
|
||||
setting_log_level_desc:
|
||||
"Установите минимальную серьёзность логов для захвата.",
|
||||
log_level_off: "Выключено",
|
||||
log_level_error: "Только ошибки",
|
||||
log_level_warn: "Предупреждения + ошибки",
|
||||
log_level_debug: "Все (отладка)",
|
||||
|
||||
// Консоль отладки
|
||||
debug_console_title: "Консоль отладки",
|
||||
debug_console_empty: "Логи пока не захвачены.",
|
||||
debug_console_clear: "Очистить",
|
||||
btn_open_console: "Открыть консоль",
|
||||
debug_console_filter_level: "Минимальный уровень",
|
||||
debug_console_filter_modules: "Модули",
|
||||
|
||||
// Versioning
|
||||
modal_versioning_title: "Версионирование файлов",
|
||||
versioning_type: "Стратегия версионирования",
|
||||
versioning_type_desc:
|
||||
"Выберите метод для сохранения предыдущих версий файлов.",
|
||||
versioning_none: "Без версионирования",
|
||||
versioning_trashcan: "Корзина (Trash can)",
|
||||
versioning_simple: "Простое (Simple)",
|
||||
versioning_staggered: "Поэтапное (Staggered)",
|
||||
versioning_external: "Внешнее (External)",
|
||||
|
||||
versioning_cleanout_days: "Очищать через (дней)",
|
||||
versioning_cleanout_days_desc:
|
||||
"Дней хранить файлы в корзине. 0 означает вечно.",
|
||||
versioning_keep: "Хранить версий",
|
||||
versioning_keep_desc: "Количество версий для хранения.",
|
||||
versioning_max_age: "Максимальный возраст (дней)",
|
||||
versioning_max_age_desc: "Максимальный возраст версий для хранения.",
|
||||
versioning_clean_interval: "Интервал очистки (секунды)",
|
||||
versioning_clean_interval_desc: "Интервал между очисткой старых версий.",
|
||||
versioning_command: "Команда",
|
||||
versioning_command_desc: "Внешняя команда для выполнения версионирования.",
|
||||
|
||||
btn_save: "Сохранить",
|
||||
notice_versioning_saved: "Конфигурация версионирования сохранена.",
|
||||
notice_versioning_error:
|
||||
"Не удалось сохранить конфигурацию версионирования.",
|
||||
setting_file_versioning_name: "Версионирование файлов",
|
||||
setting_file_versioning_desc:
|
||||
"Настройте, как Syncthing сохраняет предыдущие версии ваших файлов.",
|
||||
|
||||
btn_configure: "Настроить",
|
||||
|
||||
// Connection Check
|
||||
notice_folder_missing:
|
||||
"Папка Syncthing не найдена. Пожалуйста, выберите её заново в настройках.",
|
||||
notice_folder_migration:
|
||||
"Конфигурация папки устарела. Пожалуйста, выберите папку хранилища заново в настройках Syncthing.",
|
||||
|
||||
// Dynamic UI Strings
|
||||
notice_resuming: "Возобновление синхронизации...",
|
||||
notice_pausing: "Приостановка синхронизации...",
|
||||
notice_is_paused: "Синхронизация приостановлена.",
|
||||
loading_versions: "Загрузка версий...",
|
||||
loading_config: "Загрузка конфигурации...",
|
||||
error_folder_not_found: "Папка не найдена в конфигурации.",
|
||||
saving: "Сохранение...",
|
||||
error_loading_versions: "Ошибка загрузки версий. Проверьте консоль.",
|
||||
tab_syncing: "Синхронизация...",
|
||||
tab_synced: "Синхронизировано!",
|
||||
conflict_delete_error: "Ошибка удаления файла.",
|
||||
conflict_restore_error: "Ошибка восстановления конфликта.",
|
||||
};
|
||||
|
|
@ -896,7 +896,7 @@ export default class SyncthingController extends Plugin {
|
|||
}
|
||||
});
|
||||
} catch (error) {
|
||||
Logger.error(LOG_MODULES.MAIN, "Failed to fetch history", error);
|
||||
Logger.error(LOG_MODULES.MAIN, "Failed to Fetch History", error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,28 +39,41 @@ export class SyncthingSettingTab extends PluginSettingTab {
|
|||
.setName(t("setting_header_general"))
|
||||
.setHeading();
|
||||
|
||||
new Setting(containerEl)
|
||||
const langSetting = new Setting(containerEl)
|
||||
.setName(t("setting_lang_name"))
|
||||
.setDesc(t("setting_lang_desc"))
|
||||
.addDropdown((dropDown) => {
|
||||
LANGUAGE_LIST.forEach((lang) => {
|
||||
dropDown.addOption(lang.code, lang.display);
|
||||
});
|
||||
.setDesc(t("setting_lang_desc"));
|
||||
|
||||
dropDown.setValue(this.plugin.settings.language);
|
||||
dropDown.onChange((value) => {
|
||||
void (async () => {
|
||||
this.plugin.settings.language = value;
|
||||
await this.plugin.saveSettings();
|
||||
setLanguage(value);
|
||||
this.plugin.app.workspace.trigger(
|
||||
"syncthing:status-changed",
|
||||
);
|
||||
this.display();
|
||||
})();
|
||||
});
|
||||
langSetting.addDropdown((dropDown) => {
|
||||
LANGUAGE_LIST.forEach((lang) => {
|
||||
dropDown.addOption(lang.code, lang.display);
|
||||
});
|
||||
|
||||
dropDown.setValue(this.plugin.settings.language);
|
||||
dropDown.onChange((value) => {
|
||||
void (async () => {
|
||||
this.plugin.settings.language = value;
|
||||
await this.plugin.saveSettings();
|
||||
setLanguage(value);
|
||||
this.plugin.app.workspace.trigger(
|
||||
"syncthing:status-changed",
|
||||
);
|
||||
this.display();
|
||||
})();
|
||||
});
|
||||
});
|
||||
|
||||
langSetting.addExtraButton((btn) => {
|
||||
btn.setIcon("languages")
|
||||
.setTooltip(
|
||||
t("tooltip_help_translate") || "Help translate via Crowdin",
|
||||
)
|
||||
.onClick(() => {
|
||||
window.open(
|
||||
"https://crowdin.com/project/obsidian-syncthing-manager",
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
// CONEXÃO
|
||||
new Setting(containerEl).setName(t("setting_header_conn")).setHeading();
|
||||
|
||||
|
|
|
|||
26
tests/i18n.test.ts
Normal file
26
tests/i18n.test.ts
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
import { describe, it, expect } from "vitest";
|
||||
import en from "../src/lang/locales/en.json";
|
||||
import pt from "../src/lang/locales/pt.json";
|
||||
import ru from "../src/lang/locales/ru.json";
|
||||
|
||||
describe("Translations", () => {
|
||||
it("todos os idiomas devem ter as mesmas chaves que o inglês", () => {
|
||||
const baseKeys = Object.keys(en);
|
||||
const locales = [
|
||||
{ name: "PT", data: pt },
|
||||
{ name: "RU", data: ru },
|
||||
];
|
||||
|
||||
locales.forEach((locale) => {
|
||||
const localeKeys = Object.keys(locale.data);
|
||||
const missingKeys = baseKeys.filter(
|
||||
(key) => !localeKeys.includes(key),
|
||||
);
|
||||
|
||||
expect(
|
||||
missingKeys,
|
||||
`Faltam chaves no idioma ${locale.name}`,
|
||||
).toEqual([]);
|
||||
});
|
||||
});
|
||||
});
|
||||
55
tests/sentence-case.test.ts
Normal file
55
tests/sentence-case.test.ts
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
import { describe, it, expect } from "vitest";
|
||||
import en from "../src/lang/locales/en.json";
|
||||
// Importa o utilitário do ESLint do Obsidian para verificar Sentence Case
|
||||
import { evaluateSentenceCase } from "eslint-plugin-obsidianmd/dist/lib/rules/ui/sentenceCaseUtil.js";
|
||||
|
||||
describe("Sentence Case Validation", () => {
|
||||
it("en.json deve seguir o padrão Sentence case do Obsidian", () => {
|
||||
const errors: string[] = [];
|
||||
const options = {
|
||||
brands: [
|
||||
"Syncthing",
|
||||
"Obsidian",
|
||||
"GitHub",
|
||||
"Android",
|
||||
"Mac",
|
||||
"Windows",
|
||||
"macOS",
|
||||
"Crowdin",
|
||||
],
|
||||
acronyms: [
|
||||
"OK",
|
||||
"API",
|
||||
"URL",
|
||||
"HTTPS",
|
||||
"HTTP",
|
||||
"TLS",
|
||||
"IP",
|
||||
"ID",
|
||||
"GUI",
|
||||
],
|
||||
enforceCamelCaseLower: true,
|
||||
};
|
||||
|
||||
for (const [key, value] of Object.entries(
|
||||
en as Record<string, string>,
|
||||
)) {
|
||||
if (typeof value === "string") {
|
||||
const result = evaluateSentenceCase(value, options);
|
||||
if (!result.ok) {
|
||||
errors.push(
|
||||
`Chave '${key}': esperado "${result.suggestion}", mas recebeu "${value}"`,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (errors.length > 0) {
|
||||
console.error(
|
||||
"Erros de Sentence Case encontrados:\n",
|
||||
errors.join("\n"),
|
||||
);
|
||||
}
|
||||
expect(errors.length).toBe(0);
|
||||
});
|
||||
});
|
||||
|
|
@ -11,6 +11,8 @@
|
|||
"importHelpers": true,
|
||||
"isolatedModules": true,
|
||||
"strictNullChecks": true,
|
||||
"resolveJsonModule": true,
|
||||
"allowSyntheticDefaultImports": true,
|
||||
"lib": ["DOM", "ES5", "ES6", "ES7"]
|
||||
},
|
||||
"include": ["**/*.ts"],
|
||||
|
|
|
|||
Loading…
Reference in a new issue