From 650fa50c238bd75d3a3fa93b8c217376cb2356a5 Mon Sep 17 00:00:00 2001 From: 52sanmao <52sanmao@users.noreply.github.com> Date: Sat, 9 May 2026 04:55:45 +0800 Subject: [PATCH 1/4] i18n: add Fetch/Rebuild/E2EE/SetupWizard keys, regenerate JSON/TS - Add Ui.SetupWizard.Fetch.*, Rebuild.*, Bucket.*, CouchDB.*, P2P.*, CouchDBCheck.* keys to en.yaml - Add Setup.ScanQRCode.*, UseSetupURI.*, RemoteE2EE.*, Bucket.*, CouchDB.*, P2P.* keys to en.yaml - Regenerate all language JSON files from YAML sources - Bake combinedMessages.prod.ts from dev sources - Update Guidance.svelte and Instruction.svelte with message prop auto-translation --- src/UI/components/Guidance.svelte | 9 +- src/UI/components/Instruction.svelte | 8 +- src/common/i18n.ts | 74 +- src/common/messages/combinedMessages.dev.ts | 2 + src/common/messages/combinedMessages.prod.ts | 1032 +++++++++++++++++- src/common/messagesJson/de.json | 68 +- src/common/messagesJson/en.json | 158 +++ src/common/messagesJson/es.json | 85 +- src/common/messagesJson/ja.json | 92 +- src/common/messagesJson/ko.json | 95 +- src/common/messagesJson/ru.json | 91 +- src/common/messagesJson/zh-tw.json | 68 +- src/common/messagesJson/zh.json | 65 ++ src/common/messagesYAML/de.yaml | 119 +- src/common/messagesYAML/en.yaml | 200 +++- src/common/messagesYAML/es.yaml | 184 ++++ src/common/messagesYAML/ja.yaml | 105 ++ src/common/messagesYAML/ko.yaml | 115 ++ src/common/messagesYAML/ru.yaml | 112 ++ src/common/messagesYAML/zh-tw.yaml | 93 +- src/common/messagesYAML/zh.yaml | 75 ++ 21 files changed, 2749 insertions(+), 101 deletions(-) diff --git a/src/UI/components/Guidance.svelte b/src/UI/components/Guidance.svelte index f4cbfac1..a8e77e81 100644 --- a/src/UI/components/Guidance.svelte +++ b/src/UI/components/Guidance.svelte @@ -1,18 +1,25 @@
{#if title}

{title}

{/if} + {#if translatedMessage} +

{translatedMessage}

+ {/if} {@render children?.()}
diff --git a/src/UI/components/Instruction.svelte b/src/UI/components/Instruction.svelte index 033c39fc..d093f4a2 100644 --- a/src/UI/components/Instruction.svelte +++ b/src/UI/components/Instruction.svelte @@ -1,12 +1,18 @@
+ {#if translatedMessage} +

{translatedMessage}

+ {/if} {@render children?.()}
diff --git a/src/common/i18n.ts b/src/common/i18n.ts index 8e2a07d5..cbebb568 100644 --- a/src/common/i18n.ts +++ b/src/common/i18n.ts @@ -1,23 +1,54 @@ +import { getLanguage } from "@/deps"; import type { AllMessageKeys, I18N_LANGS } from "./rosetta"; import { allMessages } from "./rosetta"; import type { TaggedType } from "./types"; -export let currentLang: I18N_LANGS = ""; + +const obsidianLangMap: Record = { + de: "de", + es: "es", + ja: "ja", + ko: "ko", + ru: "ru", + zh: "zh", + "zh-cn": "zh", + "zh-hans": "zh", + "zh-tw": "zh-tw", + "zh-hk": "zh-tw", + "zh-mo": "zh-tw", + "zh-hant": "zh-tw", +}; + +function resolveLanguage(lang: I18N_LANGS): I18N_LANGS { + if (lang !== "") return lang; + const obsidianLanguage = getLanguage().toLowerCase(); + return obsidianLangMap[obsidianLanguage] ?? "def"; +} + +export let currentLang: I18N_LANGS = resolveLanguage(""); const missingTranslations = [] as string[]; +let __onMissingTranslations = (key: string) => console.warn(key); +const msgCache = new Map(); + +export function getResolvedLang(lang: I18N_LANGS = currentLang): I18N_LANGS { + return resolveLanguage(lang); +} + +export function isAutoDisplayLanguage(lang: I18N_LANGS): boolean { + return lang === ""; +} export function __getMissingTranslations() { return missingTranslations; } -let __onMissingTranslations = (key: string) => console.warn(key); export function __onMissingTranslation(callback: (key: string) => void) { __onMissingTranslations = callback; } -const msgCache = new Map(); - export function setLang(lang: I18N_LANGS) { - if (lang === currentLang) return; - currentLang = lang; + const resolvedLang = resolveLanguage(lang); + if (resolvedLang === currentLang) return; + currentLang = resolvedLang; msgCache.clear(); } @@ -25,11 +56,8 @@ function _getMessage(key: string, lang: I18N_LANGS) { if (key.trim() == "") return key; const msgs = allMessages[key] ?? undefined; - - if (lang == "") { - lang = "def"; - } - let msg = msgs?.[lang]; + const resolvedLang = resolveLanguage(lang); + let msg = msgs?.[resolvedLang]; if (!msg) { if (missingTranslations.indexOf(key) === -1) { @@ -48,12 +76,6 @@ function getMessage(key: string) { return msg; } -/** - * Translate message to each locale - * @param message {string} Message to translate - * @param lang {I18N_LANGS} (Optional) Language. If supplied, this result cannot be cached. Do not use this in tight loop. - * @returns Translated message - */ export function $t(message: string, lang?: I18N_LANGS) { if (lang !== undefined) { return _getMessage(message, lang); @@ -61,12 +83,6 @@ export function $t(message: string, lang?: I18N_LANGS) { return getMessage(message); } -/** - * TagFunction to Automatically translate. - * @param strings - * @param values - * @returns - */ export function $f(strings: TemplateStringsArray, ...values: string[]) { let result = ""; for (let i = 0; i < values.length; i++) { @@ -76,13 +92,6 @@ export function $f(strings: TemplateStringsArray, ...values: string[]) { return result; } -/** - * Translate message to each locale and replace placeholders. - * @param key {string} Message identifier. - * @param params {Record} Parameters to replace placeholders. - * @param lang {I18N_LANGS} (Optional) Language. - * @returns Translated and formatted message. - */ export function $msg( key: T, params: Record = {}, @@ -95,3 +104,8 @@ export function $msg( } return msg as TaggedType; } + +export function translateIfAvailable(message: string, lang?: I18N_LANGS) { + if (message.trim() == "" || allMessages[message] === undefined) return message; + return $t(message, lang); +} diff --git a/src/common/messages/combinedMessages.dev.ts b/src/common/messages/combinedMessages.dev.ts index a0a0a700..2d76a616 100644 --- a/src/common/messages/combinedMessages.dev.ts +++ b/src/common/messages/combinedMessages.dev.ts @@ -1,4 +1,5 @@ import { PartialMessages as def } from "./def.ts"; +import { PartialMessages as de } from "./de.ts"; import { PartialMessages as es } from "./es.ts"; import { PartialMessages as fr } from "./fr.ts"; import { PartialMessages as ja } from "./ja.ts"; @@ -11,6 +12,7 @@ type MessageKeys = keyof typeof def.def; const messages = { ...def, + ...de, ...es, ...fr, ...ja, diff --git a/src/common/messages/combinedMessages.prod.ts b/src/common/messages/combinedMessages.prod.ts index 5b9b1a7f..ff3e37c3 100644 --- a/src/common/messages/combinedMessages.prod.ts +++ b/src/common/messages/combinedMessages.prod.ts @@ -106,6 +106,8 @@ export const _allMessages = { "Analyse database usage": { def: "Analyse database usage", fr: "Analyser l'utilisation de la base de données", + ja: "データベース使用状況を分析", + ko: "데이터베이스 사용량 분석", ru: "Анализ использования базы данных", zh: "分析数据库使用情况", }, @@ -113,7 +115,9 @@ export const _allMessages = { { def: "Analyse database usage and generate a TSV report for diagnosis yourself. You can paste the generated report with any spreadsheet you like.", fr: "Analyser l'utilisation de la base de données et générer un rapport TSV pour un diagnostic personnel. Vous pouvez coller le rapport généré dans le tableur de votre choix.", - ru: "Analyse database usage and generate a TSV report for diagnosis yourself. You can paste the generated report with any spreadsheet you like.", + ja: "データベース使用状況を分析し、自分で診断できるよう TSV レポートを生成します。生成したレポートは任意のスプレッドシートに貼り付けて確認できます。", + ko: "데이터베이스 사용량을 분석하고 직접 진단할 수 있도록 TSV 보고서를 생성합니다. 생성된 보고서는 원하는 스프레드시트에 붙여 넣어 확인할 수 있습니다.", + ru: "Проанализируйте использование базы данных и создайте TSV-отчёт для самостоятельной диагностики. Полученный отчёт можно вставить в любую удобную для вас таблицу.", zh: "分析数据库使用情况并生成 TSV 报告以供您自行诊断。您可以将生成的报告粘贴到您喜欢的任何电子表格中。", }, "Apply Latest Change if Conflicting": { @@ -200,7 +204,10 @@ export const _allMessages = { }, Check: { def: "Check", + es: "Verificar", fr: "Vérifier", + ja: "確認", + ko: "확인", ru: "Проверить", zh: "立即检查", }, @@ -233,6 +240,8 @@ export const _allMessages = { "Copy Report to clipboard": { def: "Copy Report to clipboard", fr: "Copier le rapport dans le presse-papiers", + ja: "レポートをクリップボードにコピー", + ko: "보고서를 클립보드에 복사", ru: "Копировать отчёт в буфер обмена", zh: "将报告复制到剪贴板", }, @@ -419,6 +428,7 @@ export const _allMessages = { }, "Doctor.Button.Yes": { def: "Yes", + es: "Sí", fr: "Oui", ja: "はい", ko: "예", @@ -740,7 +750,10 @@ export const _allMessages = { "If enabled, the ⛔ icon will be shown inside the status instead of the file warnings banner. No details will be shown.": { def: "If enabled, the ⛔ icon will be shown inside the status instead of the file warnings banner. No details will be shown.", + es: "Si se activa, se mostrará el icono ⛔ en el estado en lugar del banner de advertencia de archivos. No se mostrarán detalles.", fr: "Si activée, l'icône ⛔ s'affichera dans le statut à la place de la bannière d'avertissements de fichiers. Aucun détail ne sera affiché.", + ja: "有効にすると、ファイル警告バナーの代わりにステータス内へ ⛔ アイコンのみを表示します。詳細は表示されません。", + ko: "활성화하면 파일 경고 배너 대신 상태 영역에 ⛔ 아이콘만 표시됩니다. 자세한 내용은 표시되지 않습니다.", ru: "Если включено, значок будет показан внутри статуса.", zh: "如果启用,状态栏内将显示 ⛔ 图标,而非文件警告横幅,不会显示任何详细信息。", }, @@ -904,9 +917,10 @@ export const _allMessages = { }, lang_def: { def: "Default", + es: "Predeterminado", fr: "Par défaut", - ja: "Default", - ko: "Default", + ja: "デフォルト", + ko: "기본값", ru: "По умолчанию", zh: "Default", }, @@ -1353,6 +1367,8 @@ export const _allMessages = { "Minimum interval for syncing": { def: "Minimum interval for syncing", fr: "Intervalle minimum pour la synchronisation", + ja: "同期間隔の最小値", + ko: "동기화 최소 간격", ru: "Минимальный интервал синхронизации", zh: "同步最小间隔", }, @@ -1696,8 +1712,10 @@ export const _allMessages = { }, "moduleMigration.fix0256.buttons.fix": { def: "Fix", + es: "Corregir", fr: "Corriger", ja: "修正", + ko: "수정", ru: "Исправить", zh: "修复", }, @@ -2247,7 +2265,7 @@ export const _allMessages = { fr: "Méthode recommandée pour configurer Self-hosted LiveSync avec une URI de configuration.", ja: "セットアップURIを使用してSelf-hosted LiveSyncをセットアップする推奨方法です。", ko: "이것은 Setup URI로 Self-hosted LiveSync를 설정하는 권장 방법입니다.", - ru: "This is the recommended method to set up Self-hosted LiveSync with a Setup URI.", + ru: "Это рекомендуемый способ настройки Self-hosted LiveSync с помощью Setup URI.", zh: "这是使用设置 URI 设置 Self-hosted LiveSync 的推荐方法", }, "obsidianLiveSyncSettingTab.descCopySetupURI": { @@ -2256,7 +2274,7 @@ export const _allMessages = { fr: "Parfait pour configurer un nouvel appareil !", ja: "新しいデバイスのセットアップにおすすめ!", ko: "새 기기 설정에 완벽합니다!", - ru: "Perfect for setting up a new device!", + ru: "Идеально подходит для настройки нового устройства!", zh: "非常适合设置新设备!", }, "obsidianLiveSyncSettingTab.descEnableLiveSync": { @@ -2265,7 +2283,7 @@ export const _allMessages = { fr: "N'activez ceci qu'après avoir configuré l'une des deux options ci-dessus ou terminé toute la configuration manuellement.", ja: "上記の2つのオプションのいずれかを設定するか、すべての設定を手動で完了した後にのみ有効にしてください。", ko: "위의 두 옵션 중 하나를 구성하거나 모든 구성을 수동으로 완료한 후에만 활성화하세요.", - ru: "Only enable this after configuring either of the above two options or completing all configuration manually.", + ru: "Включайте это только после настройки одного из двух вариантов выше или после полного ручного завершения всей конфигурации.", zh: "仅在配置了上述两个选项之一或手动完成所有配置后启用此选项", }, "obsidianLiveSyncSettingTab.descFetchConfigFromRemote": { @@ -2274,7 +2292,7 @@ export const _allMessages = { fr: "Récupérer les paramètres nécessaires depuis un serveur distant déjà configuré.", ja: "既に設定済みのリモートサーバーから必要な設定を取得します。", ko: "이미 구성된 원격 서버에서 필요한 설정을 가져옵니다.", - ru: "Fetch necessary settings from already configured remote server.", + ru: "Получить необходимые настройки с уже настроенного удалённого сервера.", zh: "从已配置的远程服务器获取必要的设置", }, "obsidianLiveSyncSettingTab.descManualSetup": { @@ -2283,7 +2301,7 @@ export const _allMessages = { fr: "Non recommandé, mais utile si vous n'avez pas d'URI de configuration", ja: "推奨しませんが、セットアップURIがない場合に便利です", ko: "권장하지 않지만 Setup URI가 없는 경우에 유용합니다", - ru: "Not recommended, but useful if you don't have a Setup URI", + ru: "Не рекомендуется, но полезно, если у вас нет Setup URI.", zh: "不推荐,但如果您没有设置 URI 则很有用", }, "obsidianLiveSyncSettingTab.descTestDatabaseConnection": { @@ -2292,7 +2310,7 @@ export const _allMessages = { fr: "Ouvrir la connexion à la base de données. Si la base distante est introuvable et que vous avez l'autorisation de créer une base, elle sera créée.", ja: "データベース接続を開きます。リモートデータベースが見つからず、データベースを作成する権限がある場合は、データベースが作成されます。", ko: "데이터베이스 연결을 엽니다. 원격 데이터베이스를 찾을 수 없고 데이터베이스 생성 권한이 있는 경우, 데이터베이스가 생성됩니다.", - ru: "Open database connection. If the remote database is not found and you have permission to create a database, the database will be created.", + ru: "Открыть подключение к базе данных. Если удалённая база данных не найдена и у вас есть право на её создание, база будет создана.", zh: "打开数据库连接。如果未找到远程数据库并且您有创建数据库的权限,则将创建数据库", }, "obsidianLiveSyncSettingTab.descValidateDatabaseConfig": { @@ -2301,7 +2319,7 @@ export const _allMessages = { fr: "Vérifie et corrige les problèmes potentiels de la configuration de la base.", ja: "データベース設定の潜在的な問題を確認し、修正します。", ko: "데이터베이스 구성의 잠재적 문제를 확인하고 수정합니다.", - ru: "Checks and fixes any potential issues with the database config.", + ru: "Проверяет и исправляет любые потенциальные проблемы в конфигурации базы данных.", zh: "检查并修复数据库配置中的任何潜在问题", }, "obsidianLiveSyncSettingTab.errAccessForbidden": { @@ -3200,11 +3218,11 @@ export const _allMessages = { }, "obsidianLiveSyncSettingTab.optionCouchDB": { def: "CouchDB", - es: "CouchDB", + es: "Servidor CouchDB", fr: "CouchDB", - ja: "CouchDB", - ko: "CouchDB", - ru: "CouchDB", + ja: "CouchDB サーバー", + ko: "CouchDB 서버", + ru: "Сервер CouchDB", zh: "CouchDB", }, "obsidianLiveSyncSettingTab.optionDisableAllAutomatic": { @@ -3236,20 +3254,20 @@ export const _allMessages = { }, "obsidianLiveSyncSettingTab.optionLiveSync": { def: "LiveSync", - es: "LiveSync", + es: "Sincronización LiveSync", fr: "LiveSync", - ja: "LiveSync", - ko: "LiveSync", - ru: "LiveSync", + ja: "LiveSync 同期", + ko: "LiveSync 동기화", + ru: "Синхронизация LiveSync", zh: "LiveSync", }, "obsidianLiveSyncSettingTab.optionMinioS3R2": { def: "Minio,S3,R2", - es: "Minio,S3,R2", + es: "MinIO, S3, R2", fr: "Minio, S3, R2", - ja: "Minio,S3,R2", - ko: "Minio,S3,R2", - ru: "Minio,S3,R2", + ja: "MinIO、S3、R2", + ko: "MinIO, S3, R2", + ru: "MinIO, S3, R2", zh: "Minio, S3, R2", }, "obsidianLiveSyncSettingTab.optionOkReadEverything": { @@ -3394,11 +3412,11 @@ export const _allMessages = { }, "obsidianLiveSyncSettingTab.titleCouchDB": { def: "CouchDB", - es: "CouchDB", + es: "Servidor CouchDB", fr: "CouchDB", - ja: "CouchDB", - ko: "CouchDB", - ru: "CouchDB", + ja: "CouchDB サーバー", + ko: "CouchDB 서버", + ru: "Сервер CouchDB", zh: "CouchDB", }, "obsidianLiveSyncSettingTab.titleDeletionPropagation": { @@ -3484,11 +3502,11 @@ export const _allMessages = { }, "obsidianLiveSyncSettingTab.titleMinioS3R2": { def: "Minio,S3,R2", - es: "Minio,S3,R2", + es: "MinIO, S3, R2", fr: "Minio, S3, R2", - ja: "Minio,S3,R2", - ko: "Minio,S3,R2", - ru: "Minio,S3,R2", + ja: "MinIO、S3、R2", + ko: "MinIO, S3, R2", + ru: "MinIO, S3, R2", zh: "Minio, S3, R2", }, "obsidianLiveSyncSettingTab.titleNotification": { @@ -3836,6 +3854,8 @@ export const _allMessages = { "Prepare the 'report' to create an issue": { def: "Prepare the 'report' to create an issue", fr: "Préparer le « rapport » pour créer un ticket", + ja: "Issue 作成用の「レポート」を準備", + ko: "이슈 생성을 위한 '보고서' 준비", ru: "Подготовить «отчёт» для создания Issue", zh: "准备 '报告' 以创建问题单", }, @@ -3977,6 +3997,7 @@ export const _allMessages = { }, "Replicator.Dialogue.Locked.Action.Fetch": { def: "Reset Synchronisation on This Device", + es: "Restablecer sincronización en este dispositivo", fr: "Réinitialiser la synchronisation sur cet appareil", ja: "このデバイスの同期をリセット", ko: "원격 데이터베이스에서 모든 것을 다시 가져오기", @@ -4084,36 +4105,48 @@ export const _allMessages = { "Rerun Onboarding Wizard": { def: "Rerun Onboarding Wizard", fr: "Relancer l'assistant d'intégration", + ja: "オンボーディングウィザードを再実行", + ko: "온보딩 마법사 다시 실행", ru: "Перезапустить мастер настройки", zh: "重新运行引导向导", }, "Rerun the onboarding wizard to set up Self-hosted LiveSync again.": { def: "Rerun the onboarding wizard to set up Self-hosted LiveSync again.", fr: "Relancer l'assistant d'intégration pour reconfigurer Self-hosted LiveSync.", + ja: "オンボーディングウィザードを再実行して、Self-hosted LiveSync をもう一度設定します。", + ko: "온보딩 마법사를 다시 실행하여 Self-hosted LiveSync를 다시 설정합니다.", ru: "Перезапустить мастер настройки для повторной настройки Self-hosted LiveSync.", zh: "重新运行引导向导以再次设置 Self-hosted LiveSync。", }, "Rerun Wizard": { def: "Rerun Wizard", fr: "Relancer l'assistant", + ja: "ウィザードを再実行", + ko: "마법사 다시 실행", ru: "Перезапустить мастер", zh: "重新运行向导", }, "Reset notification threshold and check the remote database usage": { def: "Reset notification threshold and check the remote database usage", fr: "Réinitialiser le seuil de notification et vérifier l'utilisation de la base distante", + ja: "通知しきい値をリセットしてリモートデータベース使用量を確認", + ko: "알림 임계값을 초기화하고 원격 데이터베이스 사용량 확인", ru: "Сбросить порог уведомления и проверить использование удалённой базы данных", zh: "重置通知阈值并检查远程数据库使用情况", }, "Reset the remote storage size threshold and check the remote storage size again.": { def: "Reset the remote storage size threshold and check the remote storage size again.", fr: "Réinitialiser le seuil de taille du stockage distant et vérifier à nouveau la taille du stockage distant.", + ja: "リモートストレージ容量のしきい値をリセットし、リモートストレージ容量を再確認します。", + ko: "원격 저장소 크기 임계값을 초기화하고 원격 저장소 크기를 다시 확인합니다.", ru: "Сбросить порог размера удалённого хранилища и проверить размер хранилища снова.", zh: "重置远程存储大小阈值并再次检查远程存储大小。", }, "Run Doctor": { def: "Run Doctor", fr: "Lancer le Docteur", + ja: "診断を実行", + ko: "진단 실행", ru: "Запустить диагностику", zh: "立即诊断", }, @@ -4237,6 +4270,7 @@ export const _allMessages = { }, "Setting.GenerateKeyPair.Desc": { def: 'We have generated a key pair!\n\nNote: This key pair will never be shown again. Please save it in a safe place. If you have lost it, you need to generate a new key pair.\nNote 2: The public key is in spki format, and the Private key is in pkcs8 format. For the sake of convenience, newlines are converted to `\\n` in public key.\nNote 3: The public key should be configured in the remote database, and the private key should be configured in local devices.\n\n>[!FOR YOUR EYES ONLY]-\n>
\n>\n> ### Public Key\n> ```\n${public_key}\n> ```\n>\n> ### Private Key\n> ```\n${private_key}\n> ```\n>\n>
\n\n>[!Both for copying]-\n>\n>
\n>\n> ```\n${public_key}\n${private_key}\n> ```\n>\n>
\n\n', + es: 'Hemos generado un par de claves.\n\nNota: Este par de claves no volverá a mostrarse. Guárdalo en un lugar seguro. Si lo pierdes, tendrás que generar uno nuevo.\nNota 2: La clave pública está en formato spki y la clave privada en formato pkcs8. Para mayor comodidad, los saltos de línea de la clave pública se convierten en `\\n`.\nNota 3: La clave pública debe configurarse en la base de datos remota y la clave privada en los dispositivos locales.\n\n>[!SOLO PARA TUS OJOS]-\n>
\n>\n> ### Clave pública\n> ```\n${public_key}\n> ```\n>\n> ### Clave privada\n> ```\n${private_key}\n> ```\n>\n>
\n\n>[!Ambas para copiar]-\n>\n>
\n>\n> ```\n${public_key}\n${private_key}\n> ```\n>\n>
', fr: 'Nous avons généré une paire de clés !\n\nNote : cette paire de clés ne sera plus jamais affichée. Veuillez la conserver dans un endroit sûr. Si vous la perdez, vous devrez générer une nouvelle paire.\nNote 2 : la clé publique est au format spki, et la clé privée au format pkcs8. Pour plus de commodité, les retours à la ligne sont convertis en `\\n` dans la clé publique.\nNote 3 : la clé publique doit être configurée dans la base distante, et la clé privée sur les appareils locaux.\n\n>[!POUR VOS YEUX SEULEMENT]-\n>
\n>\n> ### Clé publique\n> ```\n${public_key}\n> ```\n>\n> ### Clé privée\n> ```\n${private_key}\n> ```\n>\n>
\n\n>[!Les deux pour copier]-\n>\n>
\n>\n> ```\n${public_key}\n${private_key}\n> ```\n>\n>
\n\n', ja: 'キーペアを生成しました!\n\n注意: このキーペアは再度表示されません。安全な場所に保存してください。紛失した場合は、新しいキーペアを生成する必要があります。\n注意2: 公開鍵はspki形式、秘密鍵はpkcs8形式です。利便性のため、公開鍵の改行は`\\n`に変換されています。\n注意3: 公開鍵はリモートデータベースに、秘密鍵はローカルデバイスに設定してください。\n\n>[!FOR YOUR EYES ONLY]-\n>
\n>\n> ### 公開鍵\n> ```\n${public_key}\n> ```\n>\n> ### 秘密鍵\n> ```\n${private_key}\n> ```\n>\n>
\n\n>[!Both for copying]-\n>\n>
\n>\n> ```\n${public_key}\n${private_key}\n> ```\n>\n>
\n\n', ko: '키 페어를 생성했습니다!\n\n참고: 이 키 페어는 다시 표시되지 않습니다. 안전한 곳에 저장해 주세요. 분실하면 새 키 페어를 생성해야 합니다.\n참고 2: 공개 키는 spki 형식이고, 개인 키는 pkcs8 형식입니다. 편의상 공개 키의 줄 바꿈은 `\\n`으로 변환됩니다.\n참고 3: 공개 키는 원격 데이터베이스에서 구성되어야 하고, 개인 키는 로컬 기기에서 구성되어야 합니다.\n\n>[!FOR YOUR EYES ONLY]-\n>
\n>\n> ### 공개 키\n> ```\n${public_key}\n> ```\n>\n> ### 개인 키\n> ```\n${private_key}\n> ```\n>\n>
\n\n>[!Both for copying]-\n>\n>
\n>\n> ```\n${public_key}\n${private_key}\n> ```\n>\n>
\n\n\n', @@ -4245,6 +4279,7 @@ export const _allMessages = { }, "Setting.GenerateKeyPair.Title": { def: "New key pair has been generated!", + es: "¡Se ha generado un nuevo par de claves!", fr: "Une nouvelle paire de clés a été générée !", ja: "新しいキーペアが生成されました!", ko: "새 키 페어가 생성되었습니다!", @@ -4279,6 +4314,7 @@ export const _allMessages = { def: "Scan for broken files", fr: "Analyser les fichiers corrompus", ja: "破損ファイルのスキャン", + ko: "손상된 파일 검사", ru: "Сканировать повреждённые файлы", zh: "扫描损坏或异常的文件", }, @@ -4286,6 +4322,7 @@ export const _allMessages = { def: "Scans for files that are not stored correctly in the database.", fr: "Analyse les fichiers qui ne sont pas stockés correctement dans la base.", ja: "データベースに正しく保存されていないファイルをスキャンします。", + ko: "데이터베이스에 올바르게 저장되지 않은 파일을 검사합니다.", ru: "Сканирует файлы, которые неправильно хранятся в базе данных.", zh: "扫描数据库中未正确存储的文件。", }, @@ -4489,7 +4526,10 @@ export const _allMessages = { }, "Show status icon instead of file warnings banner": { def: "Show status icon instead of file warnings banner", + es: "Mostrar icono de estado en lugar del banner de advertencia de archivos", fr: "Afficher l'icône de statut au lieu de la bannière d'avertissements", + ja: "ファイル警告バナーの代わりにステータスアイコンを表示", + ko: "파일 경고 배너 대신 상태 아이콘 표시", ru: "Показывать иконку статуса вместо предупреждения о файлах", zh: "显示状态图标,而非文件警告横幅", }, @@ -4698,6 +4738,8 @@ export const _allMessages = { "The minimum interval for automatic synchronisation on event.": { def: "The minimum interval for automatic synchronisation on event.", fr: "L'intervalle minimum pour la synchronisation automatique sur événement.", + ja: "イベント発生時の自動同期における最小間隔です。", + ko: "이벤트 발생 시 자동 동기화의 최소 간격입니다.", ru: "Минимальный интервал автоматической синхронизации по событию.", zh: "基于事件自动同步的最小间隔。", }, @@ -4712,6 +4754,7 @@ export const _allMessages = { }, "TweakMismatchResolve.Action.Dismiss": { def: "Dismiss", + es: "Descartar", fr: "Ignorer", ja: "無視", ko: "무시", @@ -4862,6 +4905,935 @@ export const _allMessages = { ru: "Использовать удалённую конфигурацию", zh: "Use Remote Configuration", }, + "Ui.Bucket.Guidance": { + def: "Please enter the details required to connect to your S3/MinIO/R2 compatible object storage service.", + }, + "Ui.CouchDB.Guidance": { + def: "Please enter the CouchDB server information below.", + }, + "Ui.P2P.Guidance": { + def: "Please enter the Peer-to-Peer Synchronisation information below.", + }, + "Ui.RemoteE2EE.AdvancedTitle": { + def: "Advanced", + }, + "Ui.RemoteE2EE.AlgorithmWarning": { + def: "Changing the encryption algorithm will prevent access to any data previously encrypted with a different algorithm.", + }, + "Ui.RemoteE2EE.ButtonCancel": { + def: "Cancel", + }, + "Ui.RemoteE2EE.ButtonProceed": { + def: "Proceed", + }, + "Ui.RemoteE2EE.DefaultAlgorithmDesc": { + def: "In most cases, you should stick with the default algorithm.", + }, + "Ui.RemoteE2EE.Guidance": { + def: "Please configure your end-to-end encryption settings.", + }, + "Ui.RemoteE2EE.LabelEncrypt": { + def: "End-to-End Encryption", + }, + "Ui.RemoteE2EE.LabelEncryptionAlgorithm": { + def: "Encryption Algorithm", + }, + "Ui.RemoteE2EE.LabelObfuscateProperties": { + def: "Obfuscate Properties", + }, + "Ui.RemoteE2EE.ManualWarning": { + def: "Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences. This is a security measure designed to protect your data.", + }, + "Ui.RemoteE2EE.MultiDestinationWarning": { + def: "This setting must be the same even when connecting to multiple synchronisation destinations.", + }, + "Ui.RemoteE2EE.ObfuscatePropertiesDesc": { + def: "Obfuscating properties adds an additional layer of security by making it harder to identify the structure and names of your files and folders on the remote server.", + }, + "Ui.RemoteE2EE.PassphraseValidationLine1": { + def: "Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences.", + }, + "Ui.RemoteE2EE.PassphraseValidationLine2": { + def: "Therefore, we ask that you exercise extreme caution when configuring server information manually.", + }, + "Ui.RemoteE2EE.PlaceholderPassphrase": { + def: "Enter your passphrase", + }, + "Ui.RemoteE2EE.StronglyRecommended": { + def: "Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server. This means that even if someone gains access to the server, they won't be able to read your data without the passphrase.", + }, + "Ui.RemoteE2EE.StronglyRecommendedLine1": { + def: "Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server.", + }, + "Ui.RemoteE2EE.StronglyRecommendedLine2": { + def: "Also, please note that if you are using Peer-to-Peer synchronization, this configuration will be used when you switch to other methods and connect to a remote server in the future.", + }, + "Ui.RemoteE2EE.StronglyRecommendedTitle": { + def: "Strongly Recommended", + }, + "Ui.RemoteE2EE.Title": { + def: "End-to-End Encryption", + }, + "Ui.RemoteE2EE.WarningSameSetting": { + def: "This setting must be the same even when connecting to multiple synchronisation destinations.", + }, + "Ui.ScanQRCode.ButtonClose": { + def: "Close this dialog", + }, + "Ui.ScanQRCode.Guidance": { + def: "Please follow the steps below to import settings from your existing device.", + }, + "Ui.ScanQRCode.Instruction": { + def: "Please follow the steps below to import settings from your existing device.", + }, + "Ui.ScanQRCode.Step1": { + def: "On this device, please keep this Vault open.", + }, + "Ui.ScanQRCode.Step2": { + def: "On the source device, open Obsidian.", + }, + "Ui.ScanQRCode.Step3": { + def: "On the source device, from the command palette, run the 'Show settings as a QR code' command.", + }, + "Ui.ScanQRCode.Step4": { + def: "On this device, switch to the camera app or use a QR code scanner to scan the displayed QR code.", + }, + "Ui.ScanQRCode.Title": { + def: "Scan QR Code", + }, + "Ui.SetupWizard.Bucket.Title": { + def: "S3/MinIO/R2 Configuration", + }, + "Ui.SetupWizard.Common.AdvancedSettings": { + def: "Advanced Settings", + }, + "Ui.SetupWizard.Common.Back": { + def: "Back", + de: "Zurück", + es: "Volver", + ja: "戻る", + ko: "뒤로", + ru: "Назад", + zh: "返回", + "zw-th": "返回", + }, + "Ui.SetupWizard.Common.Cancel": { + def: "Cancel", + de: "Abbrechen", + es: "Cancelar", + ja: "キャンセル", + ko: "취소", + ru: "Отмена", + zh: "取消", + "zw-th": "取消", + }, + "Ui.SetupWizard.Common.ContinueAnyway": { + def: "Continue anyway", + }, + "Ui.SetupWizard.Common.ExperimentalSettings": { + def: "Experimental Settings", + }, + "Ui.SetupWizard.Common.HttpsOnlyMobile": { + def: "We can use only Secure (HTTPS) connections on Obsidian Mobile.", + }, + "Ui.SetupWizard.Common.ProceedSelectOption": { + def: "Please select an option", + de: "Bitte wählen Sie eine Option", + es: "Por favor, seleccione una opción", + ja: "オプションを選択してください", + ko: "옵션을 선택해 주세요", + ru: "Пожалуйста, выберите вариант", + zh: "请选择一个选项", + "zw-th": "請選擇一個選項", + }, + "Ui.SetupWizard.CouchDB.Title": { + def: "CouchDB Configuration", + }, + "Ui.SetupWizard.CouchDBCheck.DetectAndFix": { + def: "Detect and Fix CouchDB Issues", + }, + "Ui.SetupWizard.CouchDBCheck.Fix": { + def: "Fix", + }, + "Ui.SetupWizard.Fetch.BackupDone": { + def: "I have created a backup of my Vault.", + }, + "Ui.SetupWizard.Fetch.BackupQuestion": { + def: "Have you created a backup before proceeding?", + }, + "Ui.SetupWizard.Fetch.BackupRecommendation": { + def: "We recommend that you copy your Vault folder to a safe location. This will provide a safeguard in case a large number of conflicts arise, or if you accidentally synchronise with an incorrect destination.", + }, + "Ui.SetupWizard.Fetch.BackupSkipped": { + def: "I understand the risks and will proceed without a backup.", + }, + "Ui.SetupWizard.Fetch.BackupUnable": { + def: "I am unable to create a backup of my Vault.", + }, + "Ui.SetupWizard.Fetch.BackupUnableNote": { + def: "If you understand the risks and still wish to proceed, select so.", + }, + "Ui.SetupWizard.Fetch.BackupUnableWarning": { + def: "It is strongly advised to create a backup before proceeding. Continuing without a backup may lead to data loss.", + }, + "Ui.SetupWizard.Fetch.ConflictNote": { + def: "Furthermore, if conflicts are already present in the server data, they will be synchronised to this device as they are, and you will need to resolve them locally.", + }, + "Ui.SetupWizard.Fetch.Guidance": { + def: "This will rebuild the local database on this device using the most recent data from the server. This action is designed to resolve synchronisation inconsistencies and restore correct functionality.", + }, + "Ui.SetupWizard.Fetch.ImportantBody": { + def: "If you have unsynchronised changes in your Vault on this device, they will likely diverge from the server's versions after the reset. This may result in a large number of file conflicts.", + }, + "Ui.SetupWizard.Fetch.ImportantTitle": { + def: "Important Notice", + }, + "Ui.SetupWizard.Fetch.PreventFetchConfig": { + def: "Prevent fetching configuration from server", + }, + "Ui.SetupWizard.Fetch.Proceed": { + def: "Reset and Resume Synchronisation", + }, + "Ui.SetupWizard.Fetch.Title": { + def: "Reset Synchronisation on This Device", + }, + "Ui.SetupWizard.Fetch.UnbalancedNote": { + def: "In this scenario, Self-hosted LiveSync will recreate metadata for every file and deliberately generate conflicts. Where the file content is identical, these conflicts will be resolved automatically.", + }, + "Ui.SetupWizard.Fetch.VaultIdentical": { + def: "The files in this Vault are almost identical to the server's.", + }, + "Ui.SetupWizard.Fetch.VaultIdenticalDesc": { + def: "(e.g., immediately after restoring on another computer, or having recovered from a backup)", + }, + "Ui.SetupWizard.Fetch.VaultIndependent": { + def: "This Vault is empty, or contains only new files that are not on the server.", + }, + "Ui.SetupWizard.Fetch.VaultIndependentDesc": { + def: "(e.g., setting up for the first time on a new smartphone, starting from a clean slate)", + }, + "Ui.SetupWizard.Fetch.VaultQuestion": { + def: "To minimise the creation of new conflicts, please select the option that best describes the current state of your Vault. The application will then check your files in the most appropriate way based on your selection.", + }, + "Ui.SetupWizard.Fetch.VaultUnbalanced": { + def: "There may be differences between the files in this Vault and the server.", + }, + "Ui.SetupWizard.Fetch.VaultUnbalancedDesc": { + def: "(e.g., after editing many files whilst offline)", + }, + "Ui.SetupWizard.Intro.ExistingOption": { + def: "I already have a configured server", + de: "Ich habe bereits einen konfigurierten Server", + es: "Ya tengo un servidor configurado", + ja: "サーバーはすでに設定済みです", + ko: "이미 서버를 설정했습니다", + ru: "У меня уже есть настроенный сервер", + zh: "我已经配置了服务器", + "zw-th": "我已經設定好伺服器", + }, + "Ui.SetupWizard.Intro.ExistingOptionDesc": { + def: "Connect to an existing LiveSync server", + de: "Mit einem bestehenden LiveSync-Server verbinden", + es: "Conectar a un servidor LiveSync existente", + ja: "既存の LiveSync サーバーに接続する", + ko: "기존 LiveSync 서버에 연결하기", + ru: "Подключиться к существующему серверу LiveSync", + zh: "连接到现有的 LiveSync 服务器", + "zw-th": "連線到現有的 LiveSync 伺服器", + }, + "Ui.SetupWizard.Intro.Guidance": { + def: "Welcome! Let's set up LiveSync. Are you new to LiveSync, or do you already have a remote server configured?", + de: "Willkommen! Lassen Sie uns LiveSync einrichten. Sind Sie neu bei LiveSync oder haben Sie bereits einen Remote-Server konfiguriert?", + es: "¡Bienvenido! Vamos a configurar LiveSync. ¿Es usted nuevo en LiveSync o ya tiene un servidor remoto configurado?", + ja: "ようこそ!LiveSync をセットアップしましょう。LiveSync の新規ユーザーですか、それともリモートサーバーはすでに設定済みですか?", + ko: "환영합니다! LiveSync를 설정하겠습니다. LiveSync를 처음 사용하시나요, 아니면 이미 원격 서버를 설정하셨나요?", + ru: "Добро пожаловать! Давайте настроим LiveSync. Вы новый пользователь LiveSync или у вас уже есть настроенный удалённый сервер?", + zh: "欢迎!让我们设置 LiveSync。您是 LiveSync 新用户,还是已经配置了远程服务器?", + "zw-th": "歡迎!讓我們設定 LiveSync。您是 LiveSync 新用戶,還是已經設定遠端伺服器?", + }, + "Ui.SetupWizard.Intro.NewOption": { + def: "I'm new to LiveSync", + de: "Ich bin neu bei LiveSync", + es: "Soy nuevo en LiveSync", + ja: "LiveSync の新規ユーザーです", + ko: "LiveSync를 처음 사용합니다", + ru: "Я новый пользователь LiveSync", + zh: "我是 LiveSync 新用户", + "zw-th": "我是 LiveSync 新用戶", + }, + "Ui.SetupWizard.Intro.NewOptionDesc": { + def: "Set up LiveSync for the first time", + de: "LiveSync zum ersten Mal einrichten", + es: "Configurar LiveSync por primera vez", + ja: "LiveSync を初めてセットアップする", + ko: "LiveSync를 처음으로 설정하기", + ru: "Настроить LiveSync впервые", + zh: "首次设置 LiveSync", + "zw-th": "首次設定 LiveSync", + }, + "Ui.SetupWizard.Intro.ProceedExisting": { + def: "Connect to existing", + de: "Mit Bestehendem verbinden", + es: "Conectar a existente", + ja: "既存サーバーに接続", + ko: "기존 서버에 연결", + ru: "Подключиться к существующему", + zh: "连接到现有服务器", + "zw-th": "連線到現有伺服器", + }, + "Ui.SetupWizard.Intro.ProceedNew": { + def: "Set up new", + de: "Neu einrichten", + es: "Configurar nuevo", + ja: "新規セットアップ", + ko: "새로 설정", + ru: "Новая настройка", + zh: "新建设置", + "zw-th": "新建設定", + }, + "Ui.SetupWizard.Intro.Question": { + def: "Which describes your situation?", + de: "Was beschreibt Ihre Situation?", + es: "¿Cuál describe su situación?", + ja: "当てはまるのはどれですか?", + ko: "어떤 상황에 해당하시나요?", + ru: "Какая ситуация вам подходит?", + zh: "您的情况是?", + "zw-th": "您的情況是?", + }, + "Ui.SetupWizard.Intro.Title": { + def: "Setup Wizard", + de: "Einrichtungsassistent", + es: "Asistente de configuración", + ja: "セットアップウィザード", + ko: "설정 마법사", + ru: "Мастер настройки", + zh: "设置向导", + "zw-th": "設定精靈", + }, + "Ui.SetupWizard.OutroAskUserMode.CompatibleOption": { + def: "Use compatible mode", + de: "Kompatibilitätsmodus verwenden", + es: "Usar modo compatible", + ja: "互換モードを使用", + ko: "호환 모드 사용", + ru: "Использовать совместимый режим", + zh: "使用兼容模式", + "zw-th": "使用相容模式", + }, + "Ui.SetupWizard.OutroAskUserMode.CompatibleOptionDesc": { + def: "Use this if the remote was set up with an older version of LiveSync. Some features may be limited.", + de: "Verwenden Sie dies, wenn der Remote-Server mit einer älteren Version von LiveSync eingerichtet wurde. Einige Funktionen können eingeschränkt sein.", + es: "Use esto si el remoto se configuró con una versión anterior de LiveSync. Algunas funciones pueden estar limitadas.", + ja: "リモートが旧バージョンの LiveSync でセットアップされている場合はこちらを選択してください。一部の機能が制限される場合があります。", + ko: "원격이 이전 버전의 LiveSync로 설정된 경우 이 옵션을 사용하세요. 일부 기능이 제한될 수 있습니다.", + ru: "Используйте это, если удалённый сервер был настроен со старой версией LiveSync. Некоторые функции могут быть ограничены.", + zh: "如果远程是使用旧版 LiveSync 设置的,请使用此选项。某些功能可能受限。", + "zw-th": "如果遠端是使用舊版 LiveSync 設定的,請使用此選項。某些功能可能受限。", + }, + "Ui.SetupWizard.OutroAskUserMode.ExistingOption": { + def: "This device has existing data", + de: "Dieses Gerät hat vorhandene Daten", + es: "Este dispositivo tiene datos existentes", + ja: "このデバイスには既存データがあります", + ko: "이 장치에 기존 데이터가 있습니다", + ru: "На этом устройстве есть существующие данные", + zh: "此设备已有数据", + "zw-th": "此裝置已有資料", + }, + "Ui.SetupWizard.OutroAskUserMode.ExistingOptionDesc": { + def: "Merge local files with the remote. Use this if you already have notes in this vault.", + de: "Lokale Dateien mit den Remote-Dateien zusammenführen. Verwenden Sie dies, wenn Sie bereits Notizen in diesem Tresor haben.", + es: "Fusionar archivos locales con los remotos. Use esto si ya tiene notas en esta bóveda.", + ja: "ローカルファイルをリモートとマージします。このボールトにすでにメモがある場合はこちらを選択してください。", + ko: "로컬 파일을 원격과 병합합니다. 이 볼트에 이미 메모가 있는 경우 이 옵션을 사용하세요.", + ru: "Объединить локальные файлы с удалёнными. Используйте это, если в хранилище уже есть заметки.", + zh: "将本地文件与远程合并。如果此保险库中已有笔记,请使用此选项。", + "zw-th": "將本機檔案與遠端合併。如果此保險庫中已有筆記,請使用此選項。", + }, + "Ui.SetupWizard.OutroAskUserMode.Guidance": { + def: "Choose how this device will be used with LiveSync. This affects initial sync behavior.", + de: "Wählen Sie, wie dieses Gerät mit LiveSync verwendet wird. Dies beeinflusst das anfängliche Synchronisationsverhalten.", + es: "Elija cómo se usará este dispositivo con LiveSync. Esto afecta el comportamiento de sincronización inicial.", + ja: "このデバイスの LiveSync での使用方法を選択してください。初期同期動作に影響します。", + ko: "이 장치의 LiveSync 사용 방법을 선택해 주세요. 초기 동기화 동작에 영향을 줍니다.", + ru: "Выберите, как это устройство будет использоваться с LiveSync. Это влияет на начальное поведение синхронизации.", + zh: "选择此设备在 LiveSync 中的使用方式。这会影响初始同步行为。", + "zw-th": "選擇此裝置在 LiveSync 中的使用方式。這會影響初始同步行為。", + }, + "Ui.SetupWizard.OutroAskUserMode.NewOption": { + def: "Set up as a new device", + de: "Als neues Gerät einrichten", + es: "Configurar como dispositivo nuevo", + ja: "新しいデバイスとしてセットアップ", + ko: "새 장치로 설정", + ru: "Настроить как новое устройство", + zh: "设置为新设备", + "zw-th": "設定為新裝置", + }, + "Ui.SetupWizard.OutroAskUserMode.NewOptionDesc": { + def: "Start fresh with a new vault. Remote files will be fetched after setup.", + de: "Mit einem neuen Tresor beginnen. Remote-Dateien werden nach der Einrichtung abgerufen.", + es: "Comenzar con una bóveda nueva. Los archivos remotos se obtendrán después de la configuración.", + ja: "新しいボールトで開始します。セットアップ後にリモートファイルが取得されます。", + ko: "새 볼트로 시작합니다. 설정 후 원격 파일을 가져옵니다.", + ru: "Начать с нового хранилища. Удалённые файлы будут получены после настройки.", + zh: "从新的保险库开始。设置后将获取远程文件。", + "zw-th": "從新的保險庫開始。設定後將取得遠端檔案。", + }, + "Ui.SetupWizard.OutroAskUserMode.ProceedApplySettings": { + def: "Apply settings", + de: "Einstellungen anwenden", + es: "Aplicar ajustes", + ja: "設定を適用", + ko: "설정 적용", + ru: "Применить настройки", + zh: "应用设置", + "zw-th": "套用設定", + }, + "Ui.SetupWizard.OutroAskUserMode.ProceedNext": { + def: "Continue", + de: "Weiter", + es: "Continuar", + ja: "続行", + ko: "계속", + ru: "Продолжить", + zh: "继续", + "zw-th": "繼續", + }, + "Ui.SetupWizard.OutroAskUserMode.Question": { + def: "Select the mode for this device:", + de: "Wählen Sie den Modus für dieses Gerät:", + es: "Seleccione el modo para este dispositivo:", + ja: "このデバイスのモードを選択:", + ko: "이 장치의 모드를 선택하세요:", + ru: "Выберите режим для этого устройства:", + zh: "选择此设备的模式:", + "zw-th": "選擇此裝置的模式:", + }, + "Ui.SetupWizard.OutroAskUserMode.Title": { + def: "How will you use this device?", + de: "Wie werden Sie dieses Gerät verwenden?", + es: "¿Cómo usará este dispositivo?", + ja: "このデバイスをどのように使用しますか?", + ko: "이 장치를 어떻게 사용하시겠습니까?", + ru: "Как вы будете использовать это устройство?", + zh: "您将如何使用此设备?", + "zw-th": "您將如何使用此裝置?", + }, + "Ui.SetupWizard.OutroExisting.Guidance": { + def: "Setup is complete. The remote data will be fetched after restarting. Click the button below to restart and begin synchronization.", + de: "Die Einrichtung ist abgeschlossen. Die Remote-Daten werden nach dem Neustart abgerufen. Klicken Sie auf die Schaltfläche unten, um neu zu starten und die Synchronisation zu beginnen.", + es: "La configuración se ha completado. Los datos remotos se obtendrán después de reiniciar. Haga clic en el botón de abajo para reiniciar y comenzar la sincronización.", + ja: "セットアップが完了しました。再起動後にリモートデータが取得されます。下のボタンをクリックして再起動し、同期を開始してください。", + ko: "설정이 완료되었습니다. 재시작 후 원격 데이터를 가져옵니다. 아래 버튼을 클릭하여 재시작하고 동기화를 시작하세요.", + ru: "Настройка завершена. Удалённые данные будут получены после перезапуска. Нажмите кнопку ниже, чтобы перезапустить и начать синхронизацию.", + zh: "设置已完成。重启后将获取远程数据。点击下方按钮重启并开始同步。", + "zw-th": "設定已完成。重新啟動後將取得遠端資料。點擊下方按鈕重新啟動並開始同步。", + }, + "Ui.SetupWizard.OutroExisting.Proceed": { + def: "Restart and Fetch Data", + de: "Neu starten und Daten abrufen", + es: "Reiniciar y obtener datos", + ja: "再起動してデータを取得", + ko: "재시작하고 데이터 가져오기", + ru: "Перезапустить и получить данные", + zh: "重启并获取数据", + "zw-th": "重新啟動並取得資料", + }, + "Ui.SetupWizard.OutroExisting.Question": { + def: "Please select the button below to restart and proceed to the data fetching confirmation.", + de: "Klicken Sie auf die Schaltfläche unten, um neu zu starten und zur Bestätigung des Datenabrufs fortzufahren.", + es: "Seleccione el botón de abajo para reiniciar y proceder a la confirmación de obtención de datos.", + ja: "下のボタンをクリックして再起動し、データ取得の確認に進んでください。", + ko: "아래 버튼을 클릭하여 재시작하고 데이터 가져오기 확인으로 진행하세요.", + ru: "Нажмите кнопку ниже, чтобы перезапустить и перейти к подтверждению получения данных.", + zh: "请点击下方按钮重启并进入数据获取确认。", + "zw-th": "請點擊下方按鈕重新啟動並進入資料取得確認。", + }, + "Ui.SetupWizard.OutroExisting.Title": { + def: "Setup Complete: Preparing to Fetch Synchronisation Data", + de: "Einrichtung abgeschlossen: Vorbereitung zum Abrufen der Synchronisationsdaten", + es: "Configuración completada: Preparando para obtener datos de sincronización", + ja: "セットアップ完了:同期データの取得準備中", + ko: "설정 완료: 동기화 데이터 가져오기 준비 중", + ru: "Настройка завершена: Подготовка к получению данных синхронизации", + zh: "设置完成:准备获取同步数据", + "zw-th": "設定完成:準備取得同步資料", + }, + "Ui.SetupWizard.OutroNewUser.GuidancePrimary": { + def: "Your LiveSync configuration has been set up. The settings will be applied when you close this dialog.", + de: "Ihre LiveSync-Konfiguration wurde eingerichtet. Die Einstellungen werden beim Schließen dieses Dialogs angewendet.", + es: "Su configuración de LiveSync se ha completado. Los ajustes se aplicarán al cerrar este diálogo.", + ja: "LiveSync の設定が完了しました。このダイアログを閉じると設定が適用されます。", + ko: "LiveSync 구성이 완료되었습니다. 이 대화 상자를 닫으면 설정이 적용됩니다.", + ru: "Ваша конфигурация LiveSync настроена. Настройки будут применены при закрытии этого диалога.", + zh: "您的 LiveSync 配置已设置完成。关闭此对话框后将应用设置。", + "zw-th": "您的 LiveSync 設定已完成。關閉此對話方塊後將套用設定。", + }, + "Ui.SetupWizard.OutroNewUser.GuidanceWarning": { + def: "This will overwrite existing files if the remote vault has data. Make sure you are using an empty vault or have backups.", + de: "Dies überschreibt vorhandene Dateien, wenn der Remote-Tresor Daten enthält. Stellen Sie sicher, dass Sie einen leeren Tresor verwenden oder über Backups verfügen.", + es: "Esto sobrescribirá los archivos existentes si la bóveda remota tiene datos. Asegúrese de usar una bóveda vacía o tener copias de seguridad.", + ja: "リモートボールトにデータがある場合、既存のファイルが上書きされます。空のボールトを使用しているか、バックアップがあることを確認してください。", + ko: "원격 볼트에 데이터가 있으면 기존 파일이 덮어쓰여집니다. 빈 볼트를 사용하거나 백업이 있는지 확인해 주세요.", + ru: "Это перезапишет существующие файлы, если в удалённом хранилище есть данные. Убедитесь, что вы используете пустое хранилище или имеете резервные копии.", + zh: "如果远程保险库中有数据,这将覆盖现有文件。请确保您使用的是空保险库或已做好备份。", + "zw-th": "如果遠端保險庫中有資料,這將覆蓋現有檔案。請確保您使用的是空保險庫或已做好備份。", + }, + "Ui.SetupWizard.OutroNewUser.Important": { + def: "Important:", + de: "Wichtig:", + es: "Importante:", + ja: "重要:", + ko: "중요:", + ru: "Важно:", + zh: "重要提示:", + "zw-th": "重要提示:", + }, + "Ui.SetupWizard.OutroNewUser.Proceed": { + def: "Apply and restart", + de: "Anwenden und neu starten", + es: "Aplicar y reiniciar", + ja: "適用して再起動", + ko: "적용하고 재시작", + ru: "Применить и перезапустить", + zh: "应用并重启", + "zw-th": "套用並重新啟動", + }, + "Ui.SetupWizard.OutroNewUser.Question": { + def: "Ready to apply the configuration?", + de: "Bereit, die Konfiguration anzuwenden?", + es: "¿Listo para aplicar la configuración?", + ja: "設定を適用する準備はできましたか?", + ko: "구성을 적용할 준비가 되셨나요?", + ru: "Готовы применить конфигурацию?", + zh: "准备好应用配置了吗?", + "zw-th": "準備好套用設定了嗎?", + }, + "Ui.SetupWizard.OutroNewUser.Title": { + def: "Setup Complete", + de: "Einrichtung abgeschlossen", + es: "Configuración completada", + ja: "セットアップ完了", + ko: "설정 완료", + ru: "Настройка завершена", + zh: "设置完成", + "zw-th": "設定完成", + }, + "Ui.SetupWizard.P2P.Title": { + def: "P2P Configuration", + }, + "Ui.SetupWizard.P2P.UseDefaultRelay": { + def: "Use vrtmrz's relay", + }, + "Ui.SetupWizard.Rebuild.BackupBeforeProceeding": { + def: "Of course, we can back up the data before proceeding.", + }, + "Ui.SetupWizard.Rebuild.BackupDone": { + def: "I have created a backup of my Vault.", + }, + "Ui.SetupWizard.Rebuild.BackupQuestion": { + def: "Have you created a backup before proceeding?", + }, + "Ui.SetupWizard.Rebuild.BackupSkipped": { + def: "I understand the risks and will proceed without a backup.", + }, + "Ui.SetupWizard.Rebuild.BackupUnable": { + def: "I am unable to create a backup of my Vaults.", + }, + "Ui.SetupWizard.Rebuild.BackupUnableAdvice": { + def: "You should create a new synchronisation destination and rebuild your data there. After that, synchronise to a brand new vault on each other device with the new remote one by one.", + }, + "Ui.SetupWizard.Rebuild.BackupWarning": { + def: "This is an extremely powerful operation. We strongly recommend that you copy your Vault folder to a safe location.", + }, + "Ui.SetupWizard.Rebuild.ConfirmDataLoss": { + def: "I understand that all changes made on other smartphones or computers possibly could be lost.", + }, + "Ui.SetupWizard.Rebuild.ConfirmIrreversible": { + def: "I understand that this action is irreversible once performed.", + }, + "Ui.SetupWizard.Rebuild.ConfirmSyncDisabled": { + def: "I understand that other devices will no longer be able to synchronise, and will need to be reset the synchronisation information.", + }, + "Ui.SetupWizard.Rebuild.ConfirmTitle": { + def: "Please Confirm the Following", + }, + "Ui.SetupWizard.Rebuild.Guidance": { + def: "This procedure will first delete all existing synchronisation data from the server. Following this, the server data will be completely rebuilt, using the current state of your Vault on this device as the single, authoritative master copy.", + }, + "Ui.SetupWizard.Rebuild.PreventFetchConfig": { + def: "Prevent fetching configuration from server", + }, + "Ui.SetupWizard.Rebuild.Proceed": { + def: "I Understand, Overwrite Server", + }, + "Ui.SetupWizard.Rebuild.ResetNotifyOtherDevices": { + def: "by resetting the remote, you will be informed on other devices.", + }, + "Ui.SetupWizard.Rebuild.ResolveOnOtherDevices": { + def: "There is a way to resolve this on other devices.", + }, + "Ui.SetupWizard.Rebuild.Title": { + def: "Final Confirmation: Overwrite Server Data with This Device's Files", + }, + "Ui.SetupWizard.Rebuild.WhenToUse": { + def: "You should perform this operation only in exceptional circumstances, such as when the server data is completely corrupted, when changes on all other devices are no longer needed, or when the database size has become unusually large in comparison to the Vault size.", + }, + "Ui.SetupWizard.SelectExisting.Guidance": { + def: "Choose how to connect to your existing LiveSync server.", + de: "Wählen Sie, wie Sie sich mit Ihrem bestehenden LiveSync-Server verbinden möchten.", + es: "Elija cómo conectarse a su servidor LiveSync existente.", + ja: "既存の LiveSync サーバーへの接続方法を選択してください。", + ko: "기존 LiveSync 서버에 연결하는 방법을 선택해 주세요.", + ru: "Выберите способ подключения к существующему серверу LiveSync.", + zh: "选择如何连接到您现有的 LiveSync 服务器。", + "zw-th": "選擇如何連線到您現有的 LiveSync 伺服器。", + }, + "Ui.SetupWizard.SelectExisting.ManualOption": { + def: "Configure manually", + de: "Manuell konfigurieren", + es: "Configurar manualmente", + ja: "手動で設定", + ko: "수동으로 설정", + ru: "Настроить вручную", + zh: "手动配置", + "zw-th": "手動設定", + }, + "Ui.SetupWizard.SelectExisting.ManualOptionDesc": { + def: "Enter server details and credentials yourself", + de: "Serverdetails und Anmeldedaten selbst eingeben", + es: "Ingrese los detalles del servidor y las credenciales usted mismo", + ja: "サーバーの詳細と認証情報を自分で入力", + ko: "서버 세부 정보와 자격 증명을 직접 입력", + ru: "Введите данные сервера и учётные данные самостоятельно", + zh: "自行输入服务器详细信息和凭据", + "zw-th": "自行輸入伺服器詳細資料和憑證", + }, + "Ui.SetupWizard.SelectExisting.ProceedManual": { + def: "Configure manually", + de: "Manuell konfigurieren", + es: "Configurar manualmente", + ja: "手動で設定", + ko: "수동으로 설정", + ru: "Настроить вручную", + zh: "手动配置", + "zw-th": "手動設定", + }, + "Ui.SetupWizard.SelectExisting.ProceedQr": { + def: "Scan QR code", + de: "QR-Code scannen", + es: "Escanear código QR", + ja: "QR コードをスキャン", + ko: "QR 코드 스캔", + ru: "Сканировать QR-код", + zh: "扫描二维码", + "zw-th": "掃描 QR 碼", + }, + "Ui.SetupWizard.SelectExisting.ProceedSetupUri": { + def: "Use Setup URI", + de: "Setup-URI verwenden", + es: "Usar URI de configuración", + ja: "セットアップ URI を使用", + ko: "설정 URI 사용", + ru: "Использовать URI настройки", + zh: "使用设置 URI", + "zw-th": "使用設定 URI", + }, + "Ui.SetupWizard.SelectExisting.QrOption": { + def: "Scan QR code", + de: "QR-Code scannen", + es: "Escanear código QR", + ja: "QR コードをスキャン", + ko: "QR 코드 스캔", + ru: "Сканировать QR-код", + zh: "扫描二维码", + "zw-th": "掃描 QR 碼", + }, + "Ui.SetupWizard.SelectExisting.QrOptionDesc": { + def: "Scan a QR code from an already configured device", + de: "QR-Code von einem bereits konfigurierten Gerät scannen", + es: "Escanear un código QR desde un dispositivo ya configurado", + ja: "設定済みのデバイスから QR コードをスキャン", + ko: "이미 구성된 장치에서 QR 코드 스캔", + ru: "Сканировать QR-код с уже настроенного устройства", + zh: "从已配置的设备扫描二维码", + "zw-th": "從已設定的裝置掃描 QR 碼", + }, + "Ui.SetupWizard.SelectExisting.Question": { + def: "Select connection method:", + de: "Verbindungsmethode wählen:", + es: "Seleccione método de conexión:", + ja: "接続方法を選択:", + ko: "연결 방법 선택:", + ru: "Выберите способ подключения:", + zh: "选择连接方式:", + "zw-th": "選擇連線方式:", + }, + "Ui.SetupWizard.SelectExisting.SetupUriOption": { + def: "Use Setup URI", + de: "Setup-URI verwenden", + es: "Usar URI de configuración", + ja: "セットアップ URI を使用", + ko: "설정 URI 사용", + ru: "Использовать URI настройки", + zh: "使用设置 URI", + "zw-th": "使用設定 URI", + }, + "Ui.SetupWizard.SelectExisting.SetupUriOptionDesc": { + def: "Import configuration from a setup URI provided by your server", + de: "Konfiguration aus einem vom Server bereitgestellten Setup-URI importieren", + es: "Importar configuración desde un URI proporcionado por su servidor", + ja: "サーバーから提供されるセットアップ URI から設定をインポート", + ko: "서버에서 제공하는 설정 URI에서 구성 가져오기", + ru: "Импортировать конфигурацию из URI, предоставленного сервером", + zh: "从服务器提供的设置 URI 导入配置", + "zw-th": "從伺服器提供的設定 URI 匯入設定", + }, + "Ui.SetupWizard.SelectExisting.Title": { + def: "Connect to Existing Server", + de: "Mit bestehendem Server verbinden", + es: "Conectar a servidor existente", + ja: "既存サーバーに接続", + ko: "기존 서버에 연결", + ru: "Подключение к существующему серверу", + zh: "连接到现有服务器", + "zw-th": "連線到現有伺服器", + }, + "Ui.SetupWizard.SelectNew.Guidance": { + def: "Choose how you want to configure your new LiveSync connection.", + de: "Wählen Sie, wie Sie Ihre neue LiveSync-Verbindung konfigurieren möchten.", + es: "Elija cómo desea configurar su nueva conexión LiveSync.", + ja: "新しい LiveSync 接続の設定方法を選択してください。", + ko: "새 LiveSync 연결을 구성하는 방법을 선택해 주세요.", + ru: "Выберите, как вы хотите настроить новое подключение LiveSync.", + zh: "选择您想如何配置新的 LiveSync 连接。", + "zw-th": "選擇您想如何設定新的 LiveSync 連線。", + }, + "Ui.SetupWizard.SelectNew.ManualOption": { + def: "Configure manually", + de: "Manuell konfigurieren", + es: "Configurar manualmente", + ja: "手動で設定", + ko: "수동으로 설정", + ru: "Настроить вручную", + zh: "手动配置", + "zw-th": "手動設定", + }, + "Ui.SetupWizard.SelectNew.ManualOptionDesc": { + def: "Enter server details and credentials yourself", + de: "Serverdetails und Anmeldedaten selbst eingeben", + es: "Ingrese los detalles del servidor y las credenciales usted mismo", + ja: "サーバーの詳細と認証情報を自分で入力", + ko: "서버 세부 정보와 자격 증명을 직접 입력", + ru: "Введите данные сервера и учётные данные самостоятельно", + zh: "自行输入服务器详细信息和凭据", + "zw-th": "自行輸入伺服器詳細資料和憑證", + }, + "Ui.SetupWizard.SelectNew.ProceedManual": { + def: "Configure manually", + de: "Manuell konfigurieren", + es: "Configurar manualmente", + ja: "手動で設定", + ko: "수동으로 설정", + ru: "Настроить вручную", + zh: "手动配置", + "zw-th": "手動設定", + }, + "Ui.SetupWizard.SelectNew.ProceedSetupUri": { + def: "Use Setup URI", + de: "Setup-URI verwenden", + es: "Usar URI de configuración", + ja: "セットアップ URI を使用", + ko: "설정 URI 사용", + ru: "Использовать URI настройки", + zh: "使用设置 URI", + "zw-th": "使用設定 URI", + }, + "Ui.SetupWizard.SelectNew.Question": { + def: "Select configuration method:", + de: "Konfigurationsmethode wählen:", + es: "Seleccione método de configuración:", + ja: "設定方法を選択:", + ko: "구성 방법 선택:", + ru: "Выберите метод настройки:", + zh: "选择配置方式:", + "zw-th": "選擇設定方式:", + }, + "Ui.SetupWizard.SelectNew.SetupUriOption": { + def: "Use Setup URI", + de: "Setup-URI verwenden", + es: "Usar URI de configuración", + ja: "セットアップ URI を使用", + ko: "설정 URI 사용", + ru: "Использовать URI настройки", + zh: "使用设置 URI", + "zw-th": "使用設定 URI", + }, + "Ui.SetupWizard.SelectNew.SetupUriOptionDesc": { + def: "Import configuration from a setup URI provided by your server", + de: "Konfiguration aus einem vom Server bereitgestellten Setup-URI importieren", + es: "Importar configuración desde un URI proporcionado por su servidor", + ja: "サーバーから提供されるセットアップ URI から設定をインポート", + ko: "서버에서 제공하는 설정 URI에서 구성 가져오기", + ru: "Импортировать конфигурацию из URI, предоставленного сервером", + zh: "从服务器提供的设置 URI 导入配置", + "zw-th": "從伺服器提供的設定 URI 匯入設定", + }, + "Ui.SetupWizard.SelectNew.Title": { + def: "Set Up New Connection", + de: "Neue Verbindung einrichten", + es: "Configurar nueva conexión", + ja: "新しい接続をセットアップ", + ko: "새 연결 설정", + ru: "Настройка нового подключения", + zh: "设置新连接", + "zw-th": "設定新連線", + }, + "Ui.SetupWizard.SetupRemote.BucketOption": { + def: "LiveSync Bucket", + de: "LiveSync-Bucket", + es: "Bucket de LiveSync", + ja: "LiveSync バケット", + ko: "LiveSync 버킷", + ru: "Хранилище LiveSync", + zh: "LiveSync 存储桶", + "zw-th": "LiveSync 儲存桶", + }, + "Ui.SetupWizard.SetupRemote.BucketOptionDesc": { + def: "Use the bundled bucket server included with the LiveSync companion service", + de: "Verwenden Sie den mitgelieferten Bucket-Server des LiveSync-Begleitdienstes", + es: "Use el servidor bucket incluido con el servicio complementario de LiveSync", + ja: "LiveSync コンパニオンサービスに同梱されているバケットサーバーを使用", + ko: "LiveSync 컴패니언 서비스에 포함된 버킷 서버 사용", + ru: "Используйте встроенный сервер хранилища, входящий в компаньон-сервис LiveSync", + zh: "使用 LiveSync 配套服务内置的存储桶服务器", + "zw-th": "使用 LiveSync 配套服務內建的儲存桶伺服器", + }, + "Ui.SetupWizard.SetupRemote.CouchDbOption": { + def: "CouchDB", + de: "CouchDB", + es: "CouchDB", + ja: "CouchDB", + ko: "CouchDB", + ru: "CouchDB", + zh: "CouchDB", + "zw-th": "CouchDB", + }, + "Ui.SetupWizard.SetupRemote.CouchDbOptionDesc": { + def: "Use your own CouchDB instance for full control over your sync server", + de: "Verwenden Sie Ihre eigene CouchDB-Instanz für die vollständige Kontrolle über Ihren Sync-Server", + es: "Use su propia instancia de CouchDB para control total del servidor de sincronización", + ja: "ご自身の CouchDB インスタンスを使用して、同期サーバーを完全に制御", + ko: "자체 CouchDB 인스턴스를 사용하여 동기화 서버를 완전히 제어", + ru: "Используйте свой экземпляр CouchDB для полного контроля над сервером синхронизации", + zh: "使用您自己的 CouchDB 实例,完全控制同步服务器", + "zw-th": "使用您自己的 CouchDB 執行個體,完全控制同步伺服器", + }, + "Ui.SetupWizard.SetupRemote.Guidance": { + def: "Choose the type of remote server you want to use:", + de: "Wählen Sie den Typ des Remote-Servers, den Sie verwenden möchten:", + es: "Elija el tipo de servidor remoto que desea usar:", + ja: "使用するリモートサーバーの種類を選択してください:", + ko: "사용할 원격 서버 유형을 선택해 주세요:", + ru: "Выберите тип удалённого сервера, который хотите использовать:", + zh: "选择您要使用的远程服务器类型:", + "zw-th": "選擇您要使用的遠端伺服器類型:", + }, + "Ui.SetupWizard.SetupRemote.P2POption": { + def: "Peer-to-peer (Experimental)", + de: "Peer-to-peer (Experimentell)", + es: "Peer-to-peer (Experimental)", + ja: "ピアツーピア(実験的)", + ko: "피어 투 피어 (실험적)", + ru: "Одноранговая сеть (Экспериментально)", + zh: "点对点(实验性)", + "zw-th": "點對點(實驗性)", + }, + "Ui.SetupWizard.SetupRemote.P2POptionDesc": { + def: "Synchronize directly between devices without a central server", + de: "Direkte Synchronisation zwischen Geräten ohne zentralen Server", + es: "Sincronice directamente entre dispositivos sin un servidor central", + ja: "中央サーバーなしでデバイス間を直接同期", + ko: "중앙 서버 없이 장치 간 직접 동기화", + ru: "Синхронизация напрямую между устройствами без центрального сервера", + zh: "无需中央服务器,直接在设备之间同步", + "zw-th": "無需中央伺服器,直接在裝置之間同步", + }, + "Ui.SetupWizard.SetupRemote.ProceedBucket": { + def: "Set up Bucket", + de: "Bucket einrichten", + es: "Configurar Bucket", + ja: "バケットをセットアップ", + ko: "버킷 설정", + ru: "Настроить хранилище", + zh: "设置存储桶", + "zw-th": "設定儲存桶", + }, + "Ui.SetupWizard.SetupRemote.ProceedCouchDb": { + def: "Set up CouchDB", + de: "CouchDB einrichten", + es: "Configurar CouchDB", + ja: "CouchDB をセットアップ", + ko: "CouchDB 설정", + ru: "Настроить CouchDB", + zh: "设置 CouchDB", + "zw-th": "設定 CouchDB", + }, + "Ui.SetupWizard.SetupRemote.ProceedP2P": { + def: "Set up P2P", + de: "P2P einrichten", + es: "Configurar P2P", + ja: "P2P をセットアップ", + ko: "P2P 설정", + ru: "Настроить P2P", + zh: "设置 P2P", + "zw-th": "設定 P2P", + }, + "Ui.SetupWizard.SetupRemote.Title": { + def: "Setup Remote", + de: "Remote-Server einrichten", + es: "Configurar servidor remoto", + ja: "リモートサーバーのセットアップ", + ko: "원격 서버 설정", + ru: "Настройка удалённого сервера", + zh: "设置远程服务器", + "zw-th": "設定遠端伺服器", + }, + "Ui.UseSetupURI.ButtonCancel": { + def: "Cancel", + }, + "Ui.UseSetupURI.ButtonProceed": { + def: "Test Settings and Continue", + }, + "Ui.UseSetupURI.ErrorFailedToParse": { + def: "Failed to parse Setup-URI.", + }, + "Ui.UseSetupURI.ErrorPassphraseRequired": { + def: "Passphrase is required.", + }, + "Ui.UseSetupURI.Guidance": { + def: "Please enter the Setup URI that was generated during server installation or on another device, along with the vault passphrase.", + }, + "Ui.UseSetupURI.InvalidInfo": { + def: "The Setup-URI does not appear to be valid. Please check that you have copied it correctly.", + }, + "Ui.UseSetupURI.Label": { + def: "Setup-URI", + }, + "Ui.UseSetupURI.LabelPassphrase": { + def: "Passphrase", + }, + "Ui.UseSetupURI.PlaceholderPassphrase": { + def: "Enter your passphrase", + }, + "Ui.UseSetupURI.Title": { + def: "Enter Setup URI", + }, + "Ui.UseSetupURI.ValidMessage": { + def: "The Setup-URI is valid and ready to use.", + }, "Unique name between all synchronized devices. To edit this setting, please disable customization sync once.": { def: "Unique name between all synchronized devices. To edit this setting, please disable customization sync once.", es: "Nombre único entre dispositivos sincronizados. Para editarlo, desactive sincronización de personalización", diff --git a/src/common/messagesJson/de.json b/src/common/messagesJson/de.json index 0967ef42..b53a0182 100644 --- a/src/common/messagesJson/de.json +++ b/src/common/messagesJson/de.json @@ -1 +1,67 @@ -{} +{ + "Ui.SetupWizard.Common.Back": "Zurück", + "Ui.SetupWizard.Common.Cancel": "Abbrechen", + "Ui.SetupWizard.Common.ProceedSelectOption": "Bitte wählen Sie eine Option", + "Ui.SetupWizard.Intro.ExistingOption": "Ich habe bereits einen konfigurierten Server", + "Ui.SetupWizard.Intro.ExistingOptionDesc": "Mit einem bestehenden LiveSync-Server verbinden", + "Ui.SetupWizard.Intro.Guidance": "Willkommen! Lassen Sie uns LiveSync einrichten. Sind Sie neu bei LiveSync oder haben Sie bereits einen Remote-Server konfiguriert?", + "Ui.SetupWizard.Intro.NewOption": "Ich bin neu bei LiveSync", + "Ui.SetupWizard.Intro.NewOptionDesc": "LiveSync zum ersten Mal einrichten", + "Ui.SetupWizard.Intro.ProceedExisting": "Mit Bestehendem verbinden", + "Ui.SetupWizard.Intro.ProceedNew": "Neu einrichten", + "Ui.SetupWizard.Intro.Question": "Was beschreibt Ihre Situation?", + "Ui.SetupWizard.Intro.Title": "Einrichtungsassistent", + "Ui.SetupWizard.OutroAskUserMode.CompatibleOption": "Kompatibilitätsmodus verwenden", + "Ui.SetupWizard.OutroAskUserMode.CompatibleOptionDesc": "Verwenden Sie dies, wenn der Remote-Server mit einer älteren Version von LiveSync eingerichtet wurde. Einige Funktionen können eingeschränkt sein.", + "Ui.SetupWizard.OutroAskUserMode.ExistingOption": "Dieses Gerät hat vorhandene Daten", + "Ui.SetupWizard.OutroAskUserMode.ExistingOptionDesc": "Lokale Dateien mit den Remote-Dateien zusammenführen. Verwenden Sie dies, wenn Sie bereits Notizen in diesem Tresor haben.", + "Ui.SetupWizard.OutroAskUserMode.Guidance": "Wählen Sie, wie dieses Gerät mit LiveSync verwendet wird. Dies beeinflusst das anfängliche Synchronisationsverhalten.", + "Ui.SetupWizard.OutroAskUserMode.NewOption": "Als neues Gerät einrichten", + "Ui.SetupWizard.OutroAskUserMode.NewOptionDesc": "Mit einem neuen Tresor beginnen. Remote-Dateien werden nach der Einrichtung abgerufen.", + "Ui.SetupWizard.OutroAskUserMode.ProceedApplySettings": "Einstellungen anwenden", + "Ui.SetupWizard.OutroAskUserMode.ProceedNext": "Weiter", + "Ui.SetupWizard.OutroAskUserMode.Question": "Wählen Sie den Modus für dieses Gerät:", + "Ui.SetupWizard.OutroAskUserMode.Title": "Wie werden Sie dieses Gerät verwenden?", + "Ui.SetupWizard.OutroExisting.Guidance": "Die Einrichtung ist abgeschlossen. Die Remote-Daten werden nach dem Neustart abgerufen. Klicken Sie auf die Schaltfläche unten, um neu zu starten und die Synchronisation zu beginnen.", + "Ui.SetupWizard.OutroExisting.Proceed": "Neu starten und Daten abrufen", + "Ui.SetupWizard.OutroExisting.Question": "Klicken Sie auf die Schaltfläche unten, um neu zu starten und zur Bestätigung des Datenabrufs fortzufahren.", + "Ui.SetupWizard.OutroExisting.Title": "Einrichtung abgeschlossen: Vorbereitung zum Abrufen der Synchronisationsdaten", + "Ui.SetupWizard.OutroNewUser.GuidancePrimary": "Ihre LiveSync-Konfiguration wurde eingerichtet. Die Einstellungen werden beim Schließen dieses Dialogs angewendet.", + "Ui.SetupWizard.OutroNewUser.GuidanceWarning": "Dies überschreibt vorhandene Dateien, wenn der Remote-Tresor Daten enthält. Stellen Sie sicher, dass Sie einen leeren Tresor verwenden oder über Backups verfügen.", + "Ui.SetupWizard.OutroNewUser.Important": "Wichtig:", + "Ui.SetupWizard.OutroNewUser.Proceed": "Anwenden und neu starten", + "Ui.SetupWizard.OutroNewUser.Question": "Bereit, die Konfiguration anzuwenden?", + "Ui.SetupWizard.OutroNewUser.Title": "Einrichtung abgeschlossen", + "Ui.SetupWizard.SelectExisting.Guidance": "Wählen Sie, wie Sie sich mit Ihrem bestehenden LiveSync-Server verbinden möchten.", + "Ui.SetupWizard.SelectExisting.ManualOption": "Manuell konfigurieren", + "Ui.SetupWizard.SelectExisting.ManualOptionDesc": "Serverdetails und Anmeldedaten selbst eingeben", + "Ui.SetupWizard.SelectExisting.ProceedManual": "Manuell konfigurieren", + "Ui.SetupWizard.SelectExisting.ProceedQr": "QR-Code scannen", + "Ui.SetupWizard.SelectExisting.ProceedSetupUri": "Setup-URI verwenden", + "Ui.SetupWizard.SelectExisting.QrOption": "QR-Code scannen", + "Ui.SetupWizard.SelectExisting.QrOptionDesc": "QR-Code von einem bereits konfigurierten Gerät scannen", + "Ui.SetupWizard.SelectExisting.Question": "Verbindungsmethode wählen:", + "Ui.SetupWizard.SelectExisting.SetupUriOption": "Setup-URI verwenden", + "Ui.SetupWizard.SelectExisting.SetupUriOptionDesc": "Konfiguration aus einem vom Server bereitgestellten Setup-URI importieren", + "Ui.SetupWizard.SelectExisting.Title": "Mit bestehendem Server verbinden", + "Ui.SetupWizard.SelectNew.Guidance": "Wählen Sie, wie Sie Ihre neue LiveSync-Verbindung konfigurieren möchten.", + "Ui.SetupWizard.SelectNew.ManualOption": "Manuell konfigurieren", + "Ui.SetupWizard.SelectNew.ManualOptionDesc": "Serverdetails und Anmeldedaten selbst eingeben", + "Ui.SetupWizard.SelectNew.ProceedManual": "Manuell konfigurieren", + "Ui.SetupWizard.SelectNew.ProceedSetupUri": "Setup-URI verwenden", + "Ui.SetupWizard.SelectNew.Question": "Konfigurationsmethode wählen:", + "Ui.SetupWizard.SelectNew.SetupUriOption": "Setup-URI verwenden", + "Ui.SetupWizard.SelectNew.SetupUriOptionDesc": "Konfiguration aus einem vom Server bereitgestellten Setup-URI importieren", + "Ui.SetupWizard.SelectNew.Title": "Neue Verbindung einrichten", + "Ui.SetupWizard.SetupRemote.BucketOption": "LiveSync-Bucket", + "Ui.SetupWizard.SetupRemote.BucketOptionDesc": "Verwenden Sie den mitgelieferten Bucket-Server des LiveSync-Begleitdienstes", + "Ui.SetupWizard.SetupRemote.CouchDbOption": "CouchDB", + "Ui.SetupWizard.SetupRemote.CouchDbOptionDesc": "Verwenden Sie Ihre eigene CouchDB-Instanz für die vollständige Kontrolle über Ihren Sync-Server", + "Ui.SetupWizard.SetupRemote.Guidance": "Wählen Sie den Typ des Remote-Servers, den Sie verwenden möchten:", + "Ui.SetupWizard.SetupRemote.P2POption": "Peer-to-peer (Experimentell)", + "Ui.SetupWizard.SetupRemote.P2POptionDesc": "Direkte Synchronisation zwischen Geräten ohne zentralen Server", + "Ui.SetupWizard.SetupRemote.ProceedBucket": "Bucket einrichten", + "Ui.SetupWizard.SetupRemote.ProceedCouchDb": "CouchDB einrichten", + "Ui.SetupWizard.SetupRemote.ProceedP2P": "P2P einrichten", + "Ui.SetupWizard.SetupRemote.Title": "Remote-Server einrichten" +} diff --git a/src/common/messagesJson/en.json b/src/common/messagesJson/en.json index c8b67f5f..1ab5002f 100644 --- a/src/common/messagesJson/en.json +++ b/src/common/messagesJson/en.json @@ -563,6 +563,164 @@ "TweakMismatchResolve.Title": "Configuration Mismatch Detected", "TweakMismatchResolve.Title.TweakResolving": "Configuration Mismatch Detected", "TweakMismatchResolve.Title.UseRemoteConfig": "Use Remote Configuration", + "Ui.Bucket.Guidance": "Please enter the details required to connect to your S3/MinIO/R2 compatible object storage service.", + "Ui.CouchDB.Guidance": "Please enter the CouchDB server information below.", + "Ui.P2P.Guidance": "Please enter the Peer-to-Peer Synchronisation information below.", + "Ui.RemoteE2EE.AdvancedTitle": "Advanced", + "Ui.RemoteE2EE.AlgorithmWarning": "Changing the encryption algorithm will prevent access to any data previously encrypted with a different algorithm.", + "Ui.RemoteE2EE.ButtonCancel": "Cancel", + "Ui.RemoteE2EE.ButtonProceed": "Proceed", + "Ui.RemoteE2EE.DefaultAlgorithmDesc": "In most cases, you should stick with the default algorithm.", + "Ui.RemoteE2EE.Guidance": "Please configure your end-to-end encryption settings.", + "Ui.RemoteE2EE.LabelEncrypt": "End-to-End Encryption", + "Ui.RemoteE2EE.LabelEncryptionAlgorithm": "Encryption Algorithm", + "Ui.RemoteE2EE.LabelObfuscateProperties": "Obfuscate Properties", + "Ui.RemoteE2EE.ManualWarning": "Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences. This is a security measure designed to protect your data.", + "Ui.RemoteE2EE.MultiDestinationWarning": "This setting must be the same even when connecting to multiple synchronisation destinations.", + "Ui.RemoteE2EE.ObfuscatePropertiesDesc": "Obfuscating properties adds an additional layer of security by making it harder to identify the structure and names of your files and folders on the remote server.", + "Ui.RemoteE2EE.PassphraseValidationLine1": "Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences.", + "Ui.RemoteE2EE.PassphraseValidationLine2": "Therefore, we ask that you exercise extreme caution when configuring server information manually.", + "Ui.RemoteE2EE.PlaceholderPassphrase": "Enter your passphrase", + "Ui.RemoteE2EE.StronglyRecommended": "Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server. This means that even if someone gains access to the server, they won't be able to read your data without the passphrase.", + "Ui.RemoteE2EE.StronglyRecommendedLine1": "Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server.", + "Ui.RemoteE2EE.StronglyRecommendedLine2": "Also, please note that if you are using Peer-to-Peer synchronization, this configuration will be used when you switch to other methods and connect to a remote server in the future.", + "Ui.RemoteE2EE.StronglyRecommendedTitle": "Strongly Recommended", + "Ui.RemoteE2EE.Title": "End-to-End Encryption", + "Ui.RemoteE2EE.WarningSameSetting": "This setting must be the same even when connecting to multiple synchronisation destinations.", + "Ui.ScanQRCode.ButtonClose": "Close this dialog", + "Ui.ScanQRCode.Guidance": "Please follow the steps below to import settings from your existing device.", + "Ui.ScanQRCode.Instruction": "Please follow the steps below to import settings from your existing device.", + "Ui.ScanQRCode.Step1": "On this device, please keep this Vault open.", + "Ui.ScanQRCode.Step2": "On the source device, open Obsidian.", + "Ui.ScanQRCode.Step3": "On the source device, from the command palette, run the 'Show settings as a QR code' command.", + "Ui.ScanQRCode.Step4": "On this device, switch to the camera app or use a QR code scanner to scan the displayed QR code.", + "Ui.ScanQRCode.Title": "Scan QR Code", + "Ui.SetupWizard.Bucket.Title": "S3/MinIO/R2 Configuration", + "Ui.SetupWizard.Common.AdvancedSettings": "Advanced Settings", + "Ui.SetupWizard.Common.Back": "Back", + "Ui.SetupWizard.Common.Cancel": "Cancel", + "Ui.SetupWizard.Common.ContinueAnyway": "Continue anyway", + "Ui.SetupWizard.Common.ExperimentalSettings": "Experimental Settings", + "Ui.SetupWizard.Common.HttpsOnlyMobile": "We can use only Secure (HTTPS) connections on Obsidian Mobile.", + "Ui.SetupWizard.Common.ProceedSelectOption": "Please select an option", + "Ui.SetupWizard.CouchDB.Title": "CouchDB Configuration", + "Ui.SetupWizard.CouchDBCheck.DetectAndFix": "Detect and Fix CouchDB Issues", + "Ui.SetupWizard.CouchDBCheck.Fix": "Fix", + "Ui.SetupWizard.Fetch.BackupDone": "I have created a backup of my Vault.", + "Ui.SetupWizard.Fetch.BackupQuestion": "Have you created a backup before proceeding?", + "Ui.SetupWizard.Fetch.BackupRecommendation": "We recommend that you copy your Vault folder to a safe location. This will provide a safeguard in case a large number of conflicts arise, or if you accidentally synchronise with an incorrect destination.", + "Ui.SetupWizard.Fetch.BackupSkipped": "I understand the risks and will proceed without a backup.", + "Ui.SetupWizard.Fetch.BackupUnable": "I am unable to create a backup of my Vault.", + "Ui.SetupWizard.Fetch.BackupUnableNote": "If you understand the risks and still wish to proceed, select so.", + "Ui.SetupWizard.Fetch.BackupUnableWarning": "It is strongly advised to create a backup before proceeding. Continuing without a backup may lead to data loss.", + "Ui.SetupWizard.Fetch.ConflictNote": "Furthermore, if conflicts are already present in the server data, they will be synchronised to this device as they are, and you will need to resolve them locally.", + "Ui.SetupWizard.Fetch.Guidance": "This will rebuild the local database on this device using the most recent data from the server. This action is designed to resolve synchronisation inconsistencies and restore correct functionality.", + "Ui.SetupWizard.Fetch.ImportantBody": "If you have unsynchronised changes in your Vault on this device, they will likely diverge from the server's versions after the reset. This may result in a large number of file conflicts.", + "Ui.SetupWizard.Fetch.ImportantTitle": "Important Notice", + "Ui.SetupWizard.Fetch.PreventFetchConfig": "Prevent fetching configuration from server", + "Ui.SetupWizard.Fetch.Proceed": "Reset and Resume Synchronisation", + "Ui.SetupWizard.Fetch.Title": "Reset Synchronisation on This Device", + "Ui.SetupWizard.Fetch.UnbalancedNote": "In this scenario, Self-hosted LiveSync will recreate metadata for every file and deliberately generate conflicts. Where the file content is identical, these conflicts will be resolved automatically.", + "Ui.SetupWizard.Fetch.VaultIdentical": "The files in this Vault are almost identical to the server's.", + "Ui.SetupWizard.Fetch.VaultIdenticalDesc": "(e.g., immediately after restoring on another computer, or having recovered from a backup)", + "Ui.SetupWizard.Fetch.VaultIndependent": "This Vault is empty, or contains only new files that are not on the server.", + "Ui.SetupWizard.Fetch.VaultIndependentDesc": "(e.g., setting up for the first time on a new smartphone, starting from a clean slate)", + "Ui.SetupWizard.Fetch.VaultQuestion": "To minimise the creation of new conflicts, please select the option that best describes the current state of your Vault. The application will then check your files in the most appropriate way based on your selection.", + "Ui.SetupWizard.Fetch.VaultUnbalanced": "There may be differences between the files in this Vault and the server.", + "Ui.SetupWizard.Fetch.VaultUnbalancedDesc": "(e.g., after editing many files whilst offline)", + "Ui.SetupWizard.Intro.ExistingOption": "I already have a configured server", + "Ui.SetupWizard.Intro.ExistingOptionDesc": "Connect to an existing LiveSync server", + "Ui.SetupWizard.Intro.Guidance": "Welcome! Let's set up LiveSync. Are you new to LiveSync, or do you already have a remote server configured?", + "Ui.SetupWizard.Intro.NewOption": "I'm new to LiveSync", + "Ui.SetupWizard.Intro.NewOptionDesc": "Set up LiveSync for the first time", + "Ui.SetupWizard.Intro.ProceedExisting": "Connect to existing", + "Ui.SetupWizard.Intro.ProceedNew": "Set up new", + "Ui.SetupWizard.Intro.Question": "Which describes your situation?", + "Ui.SetupWizard.Intro.Title": "Setup Wizard", + "Ui.SetupWizard.OutroAskUserMode.CompatibleOption": "Use compatible mode", + "Ui.SetupWizard.OutroAskUserMode.CompatibleOptionDesc": "Use this if the remote was set up with an older version of LiveSync. Some features may be limited.", + "Ui.SetupWizard.OutroAskUserMode.ExistingOption": "This device has existing data", + "Ui.SetupWizard.OutroAskUserMode.ExistingOptionDesc": "Merge local files with the remote. Use this if you already have notes in this vault.", + "Ui.SetupWizard.OutroAskUserMode.Guidance": "Choose how this device will be used with LiveSync. This affects initial sync behavior.", + "Ui.SetupWizard.OutroAskUserMode.NewOption": "Set up as a new device", + "Ui.SetupWizard.OutroAskUserMode.NewOptionDesc": "Start fresh with a new vault. Remote files will be fetched after setup.", + "Ui.SetupWizard.OutroAskUserMode.ProceedApplySettings": "Apply settings", + "Ui.SetupWizard.OutroAskUserMode.ProceedNext": "Continue", + "Ui.SetupWizard.OutroAskUserMode.Question": "Select the mode for this device:", + "Ui.SetupWizard.OutroAskUserMode.Title": "How will you use this device?", + "Ui.SetupWizard.OutroExisting.Guidance": "Setup is complete. The remote data will be fetched after restarting. Click the button below to restart and begin synchronization.", + "Ui.SetupWizard.OutroExisting.Proceed": "Restart and Fetch Data", + "Ui.SetupWizard.OutroExisting.Question": "Please select the button below to restart and proceed to the data fetching confirmation.", + "Ui.SetupWizard.OutroExisting.Title": "Setup Complete: Preparing to Fetch Synchronisation Data", + "Ui.SetupWizard.OutroNewUser.GuidancePrimary": "Your LiveSync configuration has been set up. The settings will be applied when you close this dialog.", + "Ui.SetupWizard.OutroNewUser.GuidanceWarning": "This will overwrite existing files if the remote vault has data. Make sure you are using an empty vault or have backups.", + "Ui.SetupWizard.OutroNewUser.Important": "Important:", + "Ui.SetupWizard.OutroNewUser.Proceed": "Apply and restart", + "Ui.SetupWizard.OutroNewUser.Question": "Ready to apply the configuration?", + "Ui.SetupWizard.OutroNewUser.Title": "Setup Complete", + "Ui.SetupWizard.P2P.Title": "P2P Configuration", + "Ui.SetupWizard.P2P.UseDefaultRelay": "Use vrtmrz's relay", + "Ui.SetupWizard.Rebuild.BackupBeforeProceeding": "Of course, we can back up the data before proceeding.", + "Ui.SetupWizard.Rebuild.BackupDone": "I have created a backup of my Vault.", + "Ui.SetupWizard.Rebuild.BackupQuestion": "Have you created a backup before proceeding?", + "Ui.SetupWizard.Rebuild.BackupSkipped": "I understand the risks and will proceed without a backup.", + "Ui.SetupWizard.Rebuild.BackupUnable": "I am unable to create a backup of my Vaults.", + "Ui.SetupWizard.Rebuild.BackupUnableAdvice": "You should create a new synchronisation destination and rebuild your data there. After that, synchronise to a brand new vault on each other device with the new remote one by one.", + "Ui.SetupWizard.Rebuild.BackupWarning": "This is an extremely powerful operation. We strongly recommend that you copy your Vault folder to a safe location.", + "Ui.SetupWizard.Rebuild.ConfirmDataLoss": "I understand that all changes made on other smartphones or computers possibly could be lost.", + "Ui.SetupWizard.Rebuild.ConfirmIrreversible": "I understand that this action is irreversible once performed.", + "Ui.SetupWizard.Rebuild.ConfirmSyncDisabled": "I understand that other devices will no longer be able to synchronise, and will need to be reset the synchronisation information.", + "Ui.SetupWizard.Rebuild.ConfirmTitle": "Please Confirm the Following", + "Ui.SetupWizard.Rebuild.Guidance": "This procedure will first delete all existing synchronisation data from the server. Following this, the server data will be completely rebuilt, using the current state of your Vault on this device as the single, authoritative master copy.", + "Ui.SetupWizard.Rebuild.PreventFetchConfig": "Prevent fetching configuration from server", + "Ui.SetupWizard.Rebuild.Proceed": "I Understand, Overwrite Server", + "Ui.SetupWizard.Rebuild.ResetNotifyOtherDevices": "by resetting the remote, you will be informed on other devices.", + "Ui.SetupWizard.Rebuild.ResolveOnOtherDevices": "There is a way to resolve this on other devices.", + "Ui.SetupWizard.Rebuild.Title": "Final Confirmation: Overwrite Server Data with This Device's Files", + "Ui.SetupWizard.Rebuild.WhenToUse": "You should perform this operation only in exceptional circumstances, such as when the server data is completely corrupted, when changes on all other devices are no longer needed, or when the database size has become unusually large in comparison to the Vault size.", + "Ui.SetupWizard.SelectExisting.Guidance": "Choose how to connect to your existing LiveSync server.", + "Ui.SetupWizard.SelectExisting.ManualOption": "Configure manually", + "Ui.SetupWizard.SelectExisting.ManualOptionDesc": "Enter server details and credentials yourself", + "Ui.SetupWizard.SelectExisting.ProceedManual": "Configure manually", + "Ui.SetupWizard.SelectExisting.ProceedQr": "Scan QR code", + "Ui.SetupWizard.SelectExisting.ProceedSetupUri": "Use Setup URI", + "Ui.SetupWizard.SelectExisting.QrOption": "Scan QR code", + "Ui.SetupWizard.SelectExisting.QrOptionDesc": "Scan a QR code from an already configured device", + "Ui.SetupWizard.SelectExisting.Question": "Select connection method:", + "Ui.SetupWizard.SelectExisting.SetupUriOption": "Use Setup URI", + "Ui.SetupWizard.SelectExisting.SetupUriOptionDesc": "Import configuration from a setup URI provided by your server", + "Ui.SetupWizard.SelectExisting.Title": "Connect to Existing Server", + "Ui.SetupWizard.SelectNew.Guidance": "Choose how you want to configure your new LiveSync connection.", + "Ui.SetupWizard.SelectNew.ManualOption": "Configure manually", + "Ui.SetupWizard.SelectNew.ManualOptionDesc": "Enter server details and credentials yourself", + "Ui.SetupWizard.SelectNew.ProceedManual": "Configure manually", + "Ui.SetupWizard.SelectNew.ProceedSetupUri": "Use Setup URI", + "Ui.SetupWizard.SelectNew.Question": "Select configuration method:", + "Ui.SetupWizard.SelectNew.SetupUriOption": "Use Setup URI", + "Ui.SetupWizard.SelectNew.SetupUriOptionDesc": "Import configuration from a setup URI provided by your server", + "Ui.SetupWizard.SelectNew.Title": "Set Up New Connection", + "Ui.SetupWizard.SetupRemote.BucketOption": "LiveSync Bucket", + "Ui.SetupWizard.SetupRemote.BucketOptionDesc": "Use the bundled bucket server included with the LiveSync companion service", + "Ui.SetupWizard.SetupRemote.CouchDbOption": "CouchDB", + "Ui.SetupWizard.SetupRemote.CouchDbOptionDesc": "Use your own CouchDB instance for full control over your sync server", + "Ui.SetupWizard.SetupRemote.Guidance": "Choose the type of remote server you want to use:", + "Ui.SetupWizard.SetupRemote.P2POption": "Peer-to-peer (Experimental)", + "Ui.SetupWizard.SetupRemote.P2POptionDesc": "Synchronize directly between devices without a central server", + "Ui.SetupWizard.SetupRemote.ProceedBucket": "Set up Bucket", + "Ui.SetupWizard.SetupRemote.ProceedCouchDb": "Set up CouchDB", + "Ui.SetupWizard.SetupRemote.ProceedP2P": "Set up P2P", + "Ui.SetupWizard.SetupRemote.Title": "Setup Remote", + "Ui.UseSetupURI.ButtonCancel": "Cancel", + "Ui.UseSetupURI.ButtonProceed": "Test Settings and Continue", + "Ui.UseSetupURI.ErrorFailedToParse": "Failed to parse Setup-URI.", + "Ui.UseSetupURI.ErrorPassphraseRequired": "Passphrase is required.", + "Ui.UseSetupURI.Guidance": "Please enter the Setup URI that was generated during server installation or on another device, along with the vault passphrase.", + "Ui.UseSetupURI.InvalidInfo": "The Setup-URI does not appear to be valid. Please check that you have copied it correctly.", + "Ui.UseSetupURI.Label": "Setup-URI", + "Ui.UseSetupURI.LabelPassphrase": "Passphrase", + "Ui.UseSetupURI.PlaceholderPassphrase": "Enter your passphrase", + "Ui.UseSetupURI.Title": "Enter Setup URI", + "Ui.UseSetupURI.ValidMessage": "The Setup-URI is valid and ready to use.", "Unique name between all synchronized devices. To edit this setting, please disable customization sync once.": "Unique name between all synchronized devices. To edit this setting, please disable customization sync once.", "Use Custom HTTP Handler": "Use Custom HTTP Handler", "Use dynamic iteration count": "Use dynamic iteration count", diff --git a/src/common/messagesJson/es.json b/src/common/messagesJson/es.json index ada05781..60fc1783 100644 --- a/src/common/messagesJson/es.json +++ b/src/common/messagesJson/es.json @@ -18,6 +18,7 @@ "Batch size of on-demand fetching": "Tamaño de lote para obtención bajo demanda", "Before v0.17.16, we used an old adapter for the local database. Now the new adapter is preferred. However, it needs local database rebuilding. Please disable this toggle when you have enough time. If leave it enabled, also while fetching from the remote database, you will be asked to disable this.": "Antes de v0.17.16 usábamos adaptador antiguo. Nuevo adaptador requiere reconstruir BD local. Desactive cuando pueda", "Bucket Name": "Nombre del bucket", + "Check": "Verificar", "cmdConfigSync.showCustomizationSync": "Mostrar sincronización de personalización", "Comma separated `.gitignore, .dockerignore`": "Separados por comas: `.gitignore, .dockerignore`", "Compute revisions for chunks (Previous behaviour)": "Calcular revisiones para chunks (comportamiento anterior)", @@ -34,6 +35,7 @@ "Do not keep metadata of deleted files.": "No conservar metadatos de archivos borrados", "Do not split chunks in the background": "No dividir chunks en segundo plano", "Do not use internal API": "No usar API interna", + "Doctor.Button.Yes": "Sí", "Enable advanced features": "Habilitar características avanzadas", "Enable customization sync": "Habilitar sincronización de personalización", "Enable Developers' Debug Tools.": "Habilitar herramientas de depuración", @@ -56,6 +58,7 @@ "If enabled per-filed efficient customization sync will be used. We need a small migration when enabling this. And all devices should be updated to v0.23.18. Once we enabled this, we lost a compatibility with old versions.": "Habilita sincronización eficiente por archivo. Requiere migración y actualizar todos dispositivos a v0.23.18. Pierde compatibilidad con versiones antiguas", "If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker.": "Divide chunks en máximo 100 ítems. Menos eficiente en deduplicación", "If enabled, newly created chunks are temporarily kept within the document, and graduated to become independent chunks once stabilised.": "Chunks nuevos se mantienen temporalmente en el documento hasta estabilizarse", + "If enabled, the ⛔ icon will be shown inside the status instead of the file warnings banner. No details will be shown.": "Si se activa, se mostrará el icono ⛔ en el estado en lugar del banner de advertencia de archivos. No se mostrarán detalles.", "If enabled, the file under 1kb will be processed in the UI thread.": "Archivos <1kb se procesan en hilo UI", "If enabled, the notification of hidden files change will be suppressed.": "Si se habilita, se suprimirá la notificación de cambios en archivos ocultos.", "If this enabled, all chunks will be stored with the revision made from its content. (Previous behaviour)": "Si se habilita, todos los chunks se almacenan con la revisión hecha desde su contenido. (comportamiento anterior)", @@ -67,6 +70,7 @@ "Incubate Chunks in Document": "Incubar chunks en documento", "Interval (sec)": "Intervalo (segundos)", "Keep empty folder": "Mantener carpetas vacías", + "lang_def": "Predeterminado", "lang-de": "Alemán", "lang-es": "Español", "lang-fr": "Français", @@ -150,6 +154,7 @@ "moduleLocalDatabase.logWaitingForReady": "Esperando a que la base de datos esté lista...", "moduleLog.showLog": "Mostrar registro", "moduleMigration.docUri": "https://github.com/vrtmrz/obsidian-livesync/blob/main/README_ES.md#how-to-use", + "moduleMigration.fix0256.buttons.fix": "Corregir", "moduleMigration.logBulkSendCorrupted": "El envío de fragmentos en bloque se ha habilitado, sin embargo, esta función se ha corrompido. Disculpe las molestias. Deshabilitado automáticamente.", "moduleMigration.logFetchRemoteTweakFailed": "Error al obtener los valores de ajuste remoto", "moduleMigration.logLocalDatabaseNotReady": "¡Algo salió mal! La base de datos local no está lista", @@ -306,12 +311,12 @@ "obsidianLiveSyncSettingTab.okWwwAuth": "✔ httpd.WWW-Authenticate está correcto.", "obsidianLiveSyncSettingTab.optionApply": "Aplicar", "obsidianLiveSyncSettingTab.optionCancel": "Cancelar", - "obsidianLiveSyncSettingTab.optionCouchDB": "CouchDB", + "obsidianLiveSyncSettingTab.optionCouchDB": "Servidor CouchDB", "obsidianLiveSyncSettingTab.optionDisableAllAutomatic": "Desactivar lo automático", "obsidianLiveSyncSettingTab.optionFetchFromRemote": "Obtener del remoto", "obsidianLiveSyncSettingTab.optionHere": "AQUÍ", - "obsidianLiveSyncSettingTab.optionLiveSync": "LiveSync", - "obsidianLiveSyncSettingTab.optionMinioS3R2": "Minio,S3,R2", + "obsidianLiveSyncSettingTab.optionLiveSync": "Sincronización LiveSync", + "obsidianLiveSyncSettingTab.optionMinioS3R2": "MinIO, S3, R2", "obsidianLiveSyncSettingTab.optionOkReadEverything": "OK, he leído todo.", "obsidianLiveSyncSettingTab.optionOnEvents": "En eventos", "obsidianLiveSyncSettingTab.optionPeriodicAndEvents": "Periódico y en eventos", @@ -326,7 +331,7 @@ "obsidianLiveSyncSettingTab.titleAppearance": "Apariencia", "obsidianLiveSyncSettingTab.titleConflictResolution": "Resolución de conflictos", "obsidianLiveSyncSettingTab.titleCongratulations": "¡Felicidades!", - "obsidianLiveSyncSettingTab.titleCouchDB": "CouchDB", + "obsidianLiveSyncSettingTab.titleCouchDB": "Servidor CouchDB", "obsidianLiveSyncSettingTab.titleDeletionPropagation": "Propagación de eliminación", "obsidianLiveSyncSettingTab.titleEncryptionNotEnabled": "El cifrado no está habilitado", "obsidianLiveSyncSettingTab.titleEncryptionPassphraseInvalid": "La frase de contraseña de cifrado es inválida", @@ -336,7 +341,7 @@ "obsidianLiveSyncSettingTab.titleFetchSettings": "Obtener configuraciones", "obsidianLiveSyncSettingTab.titleHiddenFiles": "Archivos ocultos", "obsidianLiveSyncSettingTab.titleLogging": "Registro", - "obsidianLiveSyncSettingTab.titleMinioS3R2": "Minio,S3,R2", + "obsidianLiveSyncSettingTab.titleMinioS3R2": "MinIO, S3, R2", "obsidianLiveSyncSettingTab.titleNotification": "Notificación", "obsidianLiveSyncSettingTab.titleOnlineTips": "Consejos en línea", "obsidianLiveSyncSettingTab.titleQuickSetup": "Configuración rápida", @@ -365,6 +370,7 @@ "Region": "Región", "Remote server type": "Tipo de servidor remoto", "Remote Type": "Tipo de remoto", + "Replicator.Dialogue.Locked.Action.Fetch": "Restablecer sincronización en este dispositivo", "Requires restart of Obsidian": "Requiere reiniciar Obsidian", "Requires restart of Obsidian.": "Requiere reiniciar Obsidian", "Save settings to a markdown file. You will be notified when new settings arrive. You can set different files by the platform.": "Guardar configuración en archivo markdown. Se notificarán nuevos ajustes. Puede definir diferentes archivos por plataforma", @@ -380,12 +386,15 @@ "Seconds. Saving to the local database will be delayed until this value after we stop typing or saving.": "Segundos. Guardado en BD local se retrasará hasta este valor tras dejar de escribir/guardar", "Secret Key": "Clave secreta", "Server URI": "URI del servidor", + "Setting.GenerateKeyPair.Desc": "Hemos generado un par de claves.\n\nNota: Este par de claves no volverá a mostrarse. Guárdalo en un lugar seguro. Si lo pierdes, tendrás que generar uno nuevo.\nNota 2: La clave pública está en formato spki y la clave privada en formato pkcs8. Para mayor comodidad, los saltos de línea de la clave pública se convierten en `\\n`.\nNota 3: La clave pública debe configurarse en la base de datos remota y la clave privada en los dispositivos locales.\n\n>[!SOLO PARA TUS OJOS]-\n>
\n>\n> ### Clave pública\n> ```\n${public_key}\n> ```\n>\n> ### Clave privada\n> ```\n${private_key}\n> ```\n>\n>
\n\n>[!Ambas para copiar]-\n>\n>
\n>\n> ```\n${public_key}\n${private_key}\n> ```\n>\n>
", + "Setting.GenerateKeyPair.Title": "¡Se ha generado un nuevo par de claves!", "Should we keep folders that don't have any files inside?": "¿Mantener carpetas vacías?", "Should we only check for conflicts when a file is opened?": "¿Solo comprobar conflictos al abrir archivo?", "Should we prompt you about conflicting files when a file is opened?": "¿Notificar sobre conflictos al abrir archivo?", "Should we prompt you for every single merge, even if we can safely merge automatcially?": "¿Preguntar en cada fusión aunque sea automática?", "Show only notifications": "Mostrar solo notificaciones", "Show status as icons only": "Mostrar estado solo con íconos", + "Show status icon instead of file warnings banner": "Mostrar icono de estado en lugar del banner de advertencia de archivos", "Show status inside the editor": "Mostrar estado dentro del editor", "Show status on the status bar": "Mostrar estado en la barra de estado", "Show verbose log. Please enable if you report an issue.": "Mostrar registro detallado. Actívelo si reporta un problema.", @@ -409,6 +418,72 @@ "The maximum number of chunks that can be incubated within the document. Chunks exceeding this number will immediately graduate to independent chunks.": "Número máximo de chunks que pueden incubarse en el documento. Excedentes se independizan", "The maximum total size of chunks that can be incubated within the document. Chunks exceeding this size will immediately graduate to independent chunks.": "Tamaño total máximo de chunks incubados. Excedentes se independizan", "This passphrase will not be copied to another device. It will be set to `Default` until you configure it again.": "Esta frase no se copia a otros dispositivos. Usará `Default` hasta reconfigurar", + "TweakMismatchResolve.Action.Dismiss": "Descartar", + "Ui.SetupWizard.Common.Back": "Volver", + "Ui.SetupWizard.Common.Cancel": "Cancelar", + "Ui.SetupWizard.Common.ProceedSelectOption": "Por favor, seleccione una opción", + "Ui.SetupWizard.Intro.ExistingOption": "Ya tengo un servidor configurado", + "Ui.SetupWizard.Intro.ExistingOptionDesc": "Conectar a un servidor LiveSync existente", + "Ui.SetupWizard.Intro.Guidance": "¡Bienvenido! Vamos a configurar LiveSync. ¿Es usted nuevo en LiveSync o ya tiene un servidor remoto configurado?", + "Ui.SetupWizard.Intro.NewOption": "Soy nuevo en LiveSync", + "Ui.SetupWizard.Intro.NewOptionDesc": "Configurar LiveSync por primera vez", + "Ui.SetupWizard.Intro.ProceedExisting": "Conectar a existente", + "Ui.SetupWizard.Intro.ProceedNew": "Configurar nuevo", + "Ui.SetupWizard.Intro.Question": "¿Cuál describe su situación?", + "Ui.SetupWizard.Intro.Title": "Asistente de configuración", + "Ui.SetupWizard.OutroAskUserMode.CompatibleOption": "Usar modo compatible", + "Ui.SetupWizard.OutroAskUserMode.CompatibleOptionDesc": "Use esto si el remoto se configuró con una versión anterior de LiveSync. Algunas funciones pueden estar limitadas.", + "Ui.SetupWizard.OutroAskUserMode.ExistingOption": "Este dispositivo tiene datos existentes", + "Ui.SetupWizard.OutroAskUserMode.ExistingOptionDesc": "Fusionar archivos locales con los remotos. Use esto si ya tiene notas en esta bóveda.", + "Ui.SetupWizard.OutroAskUserMode.Guidance": "Elija cómo se usará este dispositivo con LiveSync. Esto afecta el comportamiento de sincronización inicial.", + "Ui.SetupWizard.OutroAskUserMode.NewOption": "Configurar como dispositivo nuevo", + "Ui.SetupWizard.OutroAskUserMode.NewOptionDesc": "Comenzar con una bóveda nueva. Los archivos remotos se obtendrán después de la configuración.", + "Ui.SetupWizard.OutroAskUserMode.ProceedApplySettings": "Aplicar ajustes", + "Ui.SetupWizard.OutroAskUserMode.ProceedNext": "Continuar", + "Ui.SetupWizard.OutroAskUserMode.Question": "Seleccione el modo para este dispositivo:", + "Ui.SetupWizard.OutroAskUserMode.Title": "¿Cómo usará este dispositivo?", + "Ui.SetupWizard.OutroExisting.Guidance": "La configuración se ha completado. Los datos remotos se obtendrán después de reiniciar. Haga clic en el botón de abajo para reiniciar y comenzar la sincronización.", + "Ui.SetupWizard.OutroExisting.Proceed": "Reiniciar y obtener datos", + "Ui.SetupWizard.OutroExisting.Question": "Seleccione el botón de abajo para reiniciar y proceder a la confirmación de obtención de datos.", + "Ui.SetupWizard.OutroExisting.Title": "Configuración completada: Preparando para obtener datos de sincronización", + "Ui.SetupWizard.OutroNewUser.GuidancePrimary": "Su configuración de LiveSync se ha completado. Los ajustes se aplicarán al cerrar este diálogo.", + "Ui.SetupWizard.OutroNewUser.GuidanceWarning": "Esto sobrescribirá los archivos existentes si la bóveda remota tiene datos. Asegúrese de usar una bóveda vacía o tener copias de seguridad.", + "Ui.SetupWizard.OutroNewUser.Important": "Importante:", + "Ui.SetupWizard.OutroNewUser.Proceed": "Aplicar y reiniciar", + "Ui.SetupWizard.OutroNewUser.Question": "¿Listo para aplicar la configuración?", + "Ui.SetupWizard.OutroNewUser.Title": "Configuración completada", + "Ui.SetupWizard.SelectExisting.Guidance": "Elija cómo conectarse a su servidor LiveSync existente.", + "Ui.SetupWizard.SelectExisting.ManualOption": "Configurar manualmente", + "Ui.SetupWizard.SelectExisting.ManualOptionDesc": "Ingrese los detalles del servidor y las credenciales usted mismo", + "Ui.SetupWizard.SelectExisting.ProceedManual": "Configurar manualmente", + "Ui.SetupWizard.SelectExisting.ProceedQr": "Escanear código QR", + "Ui.SetupWizard.SelectExisting.ProceedSetupUri": "Usar URI de configuración", + "Ui.SetupWizard.SelectExisting.QrOption": "Escanear código QR", + "Ui.SetupWizard.SelectExisting.QrOptionDesc": "Escanear un código QR desde un dispositivo ya configurado", + "Ui.SetupWizard.SelectExisting.Question": "Seleccione método de conexión:", + "Ui.SetupWizard.SelectExisting.SetupUriOption": "Usar URI de configuración", + "Ui.SetupWizard.SelectExisting.SetupUriOptionDesc": "Importar configuración desde un URI proporcionado por su servidor", + "Ui.SetupWizard.SelectExisting.Title": "Conectar a servidor existente", + "Ui.SetupWizard.SelectNew.Guidance": "Elija cómo desea configurar su nueva conexión LiveSync.", + "Ui.SetupWizard.SelectNew.ManualOption": "Configurar manualmente", + "Ui.SetupWizard.SelectNew.ManualOptionDesc": "Ingrese los detalles del servidor y las credenciales usted mismo", + "Ui.SetupWizard.SelectNew.ProceedManual": "Configurar manualmente", + "Ui.SetupWizard.SelectNew.ProceedSetupUri": "Usar URI de configuración", + "Ui.SetupWizard.SelectNew.Question": "Seleccione método de configuración:", + "Ui.SetupWizard.SelectNew.SetupUriOption": "Usar URI de configuración", + "Ui.SetupWizard.SelectNew.SetupUriOptionDesc": "Importar configuración desde un URI proporcionado por su servidor", + "Ui.SetupWizard.SelectNew.Title": "Configurar nueva conexión", + "Ui.SetupWizard.SetupRemote.BucketOption": "Bucket de LiveSync", + "Ui.SetupWizard.SetupRemote.BucketOptionDesc": "Use el servidor bucket incluido con el servicio complementario de LiveSync", + "Ui.SetupWizard.SetupRemote.CouchDbOption": "CouchDB", + "Ui.SetupWizard.SetupRemote.CouchDbOptionDesc": "Use su propia instancia de CouchDB para control total del servidor de sincronización", + "Ui.SetupWizard.SetupRemote.Guidance": "Elija el tipo de servidor remoto que desea usar:", + "Ui.SetupWizard.SetupRemote.P2POption": "Peer-to-peer (Experimental)", + "Ui.SetupWizard.SetupRemote.P2POptionDesc": "Sincronice directamente entre dispositivos sin un servidor central", + "Ui.SetupWizard.SetupRemote.ProceedBucket": "Configurar Bucket", + "Ui.SetupWizard.SetupRemote.ProceedCouchDb": "Configurar CouchDB", + "Ui.SetupWizard.SetupRemote.ProceedP2P": "Configurar P2P", + "Ui.SetupWizard.SetupRemote.Title": "Configurar servidor remoto", "Unique name between all synchronized devices. To edit this setting, please disable customization sync once.": "Nombre único entre dispositivos sincronizados. Para editarlo, desactive sincronización de personalización", "Use Custom HTTP Handler": "Usar manejador HTTP personalizado", "Use dynamic iteration count": "Usar conteo de iteraciones dinámico", diff --git a/src/common/messagesJson/ja.json b/src/common/messagesJson/ja.json index e4da423c..4843bda5 100644 --- a/src/common/messagesJson/ja.json +++ b/src/common/messagesJson/ja.json @@ -9,6 +9,8 @@ "(Obsolete) Use an old adapter for compatibility": "(廃止済み)古いアダプターを互換性のために利用", "Access Key": "アクセスキー", "Always prompt merge conflicts": "常に競合は手動で解決する", + "Analyse database usage": "データベース使用状況を分析", + "Analyse database usage and generate a TSV report for diagnosis yourself. You can paste the generated report with any spreadsheet you like.": "データベース使用状況を分析し、自分で診断できるよう TSV レポートを生成します。生成したレポートは任意のスプレッドシートに貼り付けて確認できます。", "Apply Latest Change if Conflicting": "競合がある場合は最新の変更を適用する", "Apply preset configuration": "プリセットを適用する", "Automatically Sync all files when opening Obsidian.": "Obsidian起動時にすべてのファイルを自動同期します。", @@ -18,9 +20,11 @@ "Batch size of on-demand fetching": "オンデマンド取得のバッチサイズ", "Before v0.17.16, we used an old adapter for the local database. Now the new adapter is preferred. However, it needs local database rebuilding. Please disable this toggle when you have enough time. If leave it enabled, also while fetching from the remote database, you will be asked to disable this.": "v0.17.6までは古いアダプターをローカル用のデータベースに使用していましたが、現在は新しいアダプターを推奨しています。しかし、新しいアダプターに変更するにはローカルデータベースの再構築が必要です。有効のままにしておくと、リモートデータベースからフェッチする場合に、この設定を無効にするかの質問が表示されます。", "Bucket Name": "バケット名", + "Check": "確認", "cmdConfigSync.showCustomizationSync": "カスタマイズ同期を表示", "Comma separated `.gitignore, .dockerignore`": "カンマ区切り `.gitignore, .dockerignore`", "Compute revisions for chunks": "チャンクの修正(リビジョン)を計算", + "Copy Report to clipboard": "レポートをクリップボードにコピー", "Data Compression": "データ圧縮", "Database Name": "データベース名", "Database suffix": "データベースの接尾辞(suffix)", @@ -79,6 +83,7 @@ "If enabled per-filed efficient customization sync will be used. We need a small migration when enabling this. And all devices should be updated to v0.23.18. Once we enabled this, we lost a compatibility with old versions.": "有効にすると、ファイルごとの効率的なカスタマイズ同期が使用されます。有効化時に小規模な移行が必要です。また、すべてのデバイスをv0.23.18にアップデートする必要があります。一度有効にすると、古いバージョンとの互換性がなくなります。", "If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker.": "有効にすると、チャンクは最大100項目に分割されます。ただし、重複除去の精度は落ちます。", "If enabled, newly created chunks are temporarily kept within the document, and graduated to become independent chunks once stabilised.": "有効にすると、新しく作成されたチャンクはドキュメント内に一時的に保持され、安定したら独立したチャンクになります。", + "If enabled, the ⛔ icon will be shown inside the status instead of the file warnings banner. No details will be shown.": "有効にすると、ファイル警告バナーの代わりにステータス内へ ⛔ アイコンのみを表示します。詳細は表示されません。", "If enabled, the file under 1kb will be processed in the UI thread.": "有効にすると、1kb未満のファイルはUIスレッドで処理されます。", "If enabled, the notification of hidden files change will be suppressed.": "有効にすると、隠しファイルの変更通知が抑制されます。", "If this enabled, all chunks will be stored with the revision made from its content. (Previous behaviour)": "有効にすると、すべてのチャンクはコンテンツから作成されたリビジョンと共に保存されます(以前の動作)。", @@ -97,7 +102,7 @@ "K.short_p2p_sync": "P2P Sync (%{exp})", "K.title_p2p_sync": "Peer-to-Peer Sync", "Keep empty folder": "空フォルダの維持", - "lang_def": "Default", + "lang_def": "デフォルト", "lang-de": "Deutsche", "lang-def": "%{lang_def}", "lang-es": "Español", @@ -147,6 +152,7 @@ "Memory cache size (by total characters)": "全体でキャッシュする文字数", "Memory cache size (by total items)": "全体のキャッシュサイズ", "Minimum delay for batch database updating": "バッチデータベース更新の最小遅延", + "Minimum interval for syncing": "同期間隔の最小値", "moduleCheckRemoteSize.logCheckingStorageSizes": "ストレージサイズを確認中", "moduleCheckRemoteSize.logCurrentStorageSize": "リモートストレージサイズ: ${measuredSize}", "moduleCheckRemoteSize.logExceededWarning": "リモートストレージサイズ: ${measuredSize} が ${notifySize} を超過しました", @@ -355,12 +361,12 @@ "obsidianLiveSyncSettingTab.okWwwAuth": "✔ httpd.WWW-Authenticateは正常です。", "obsidianLiveSyncSettingTab.optionApply": "適用", "obsidianLiveSyncSettingTab.optionCancel": "キャンセル", - "obsidianLiveSyncSettingTab.optionCouchDB": "CouchDB", + "obsidianLiveSyncSettingTab.optionCouchDB": "CouchDB サーバー", "obsidianLiveSyncSettingTab.optionDisableAllAutomatic": "すべての自動を無効化", "obsidianLiveSyncSettingTab.optionFetchFromRemote": "リモートからフェッチ", "obsidianLiveSyncSettingTab.optionHere": "ここ", - "obsidianLiveSyncSettingTab.optionLiveSync": "LiveSync", - "obsidianLiveSyncSettingTab.optionMinioS3R2": "Minio,S3,R2", + "obsidianLiveSyncSettingTab.optionLiveSync": "LiveSync 同期", + "obsidianLiveSyncSettingTab.optionMinioS3R2": "MinIO、S3、R2", "obsidianLiveSyncSettingTab.optionOkReadEverything": "OK、すべて読みました。", "obsidianLiveSyncSettingTab.optionOnEvents": "イベント時", "obsidianLiveSyncSettingTab.optionPeriodicAndEvents": "定期およびイベント時", @@ -377,7 +383,7 @@ "obsidianLiveSyncSettingTab.titleAppearance": "外観", "obsidianLiveSyncSettingTab.titleConflictResolution": "競合解決", "obsidianLiveSyncSettingTab.titleCongratulations": "おめでとうございます!", - "obsidianLiveSyncSettingTab.titleCouchDB": "CouchDB", + "obsidianLiveSyncSettingTab.titleCouchDB": "CouchDB サーバー", "obsidianLiveSyncSettingTab.titleDeletionPropagation": "削除の伝播", "obsidianLiveSyncSettingTab.titleEncryptionNotEnabled": "暗号化が有効になっていません", "obsidianLiveSyncSettingTab.titleEncryptionPassphraseInvalid": "暗号化パスフレーズが無効です", @@ -387,7 +393,7 @@ "obsidianLiveSyncSettingTab.titleFetchSettings": "設定の取得", "obsidianLiveSyncSettingTab.titleHiddenFiles": "隠しファイル", "obsidianLiveSyncSettingTab.titleLogging": "ログ", - "obsidianLiveSyncSettingTab.titleMinioS3R2": "Minio,S3,R2", + "obsidianLiveSyncSettingTab.titleMinioS3R2": "MinIO、S3、R2", "obsidianLiveSyncSettingTab.titleNotification": "通知", "obsidianLiveSyncSettingTab.titleOnlineTips": "オンラインヒント", "obsidianLiveSyncSettingTab.titleQuickSetup": "クイックセットアップ", @@ -428,6 +434,7 @@ "Path Obfuscation": "パスの難読化", "Per-file-saved customization sync": "ファイルごとのカスタマイズ同期", "Periodic Sync interval": "定時同期の感覚", + "Prepare the 'report' to create an issue": "Issue 作成用の「レポート」を準備", "Presets": "プリセット", "Process small files in the foreground": "小さいファイルを最前面で処理", "RedFlag.Fetch.Method.Desc": "どのようにフェッチしますか?\n- %{RedFlag.Fetch.Method.FetchSafer}\n **低トラフィック**, **高CPU負荷**, **低リスク**\n 推奨条件...\n - ファイルの整合性に不安がある\n - ファイル数がそれほど多くない\n- %{RedFlag.Fetch.Method.FetchSmoother}\n **低トラフィック**, **中程CPU負荷**, **低~中リスク**\n 推奨条件...\n - ファイルがおそらく整合している\n - ファイル数が多い\n- %{RedFlag.Fetch.Method.FetchTraditional}\n **高トラフィック**, **低CPU負荷**, **低~中リスク**\n\n>[!INFO]- 詳細\n> ## %{RedFlag.Fetch.Method.FetchSafer}\n> **低トラフィック**, **高CPU負荷**, **低リスク**\n> このオプションは、リモートからデータをフェッチする前に、既存のローカルファイルを使用してローカルデータベースを作成します。\n> ローカルとリモートの両方に一致するファイルがある場合、差分のみが転送されます。\n> ただし、両方の場所に存在するファイルは最初は競合ファイルとして処理されます。実際に競合していなければ自動的に解決されますが、この処理には時間がかかる場合があります。\n> これは一般的に最も安全な方法で、データ損失のリスクを最小限に抑えます。\n> ## %{RedFlag.Fetch.Method.FetchSmoother}\n> **低トラフィック**, **中程CPU負荷**, **低~中リスク**(操作による)\n> このオプションは、最初にローカルファイルからデータベース用のチャンクを作成し、その後データをフェッチします。そのため、ローカルにないチャンクのみが転送されます。ただし、すべてのメタデータはリモートから取得されます。\n> ローカルファイルは起動時にこのメタデータと比較されます。新しいと判断されたコンテンツ(更新日時による)が古いものを上書きします。この結果はリモートデータベースに同期されます。\n> ローカルファイルが本当に最新のタイムスタンプであれば一般的に安全です。ただし、ファイルのタイムスタンプが新しくてもコンテンツが古い場合(初期の`welcome.md`など)は問題が発生する可能性があります。\n> これは\"%{RedFlag.Fetch.Method.FetchSafer}\"よりCPU使用量が少なく高速ですが、注意しないとデータ損失につながる可能性があります。\n> ## %{RedFlag.Fetch.Method.FetchTraditional}\n> **高トラフィック**, **低CPU負荷**, **低~中リスク**(操作による)\n> すべてのデータがリモートからフェッチされます。\n> %{RedFlag.Fetch.Method.FetchSmoother}と似ていますが、すべてのチャンクがリモートからフェッチされます。\n> これは最も従来のフェッチ方法で、通常最もネットワークトラフィックと時間を消費します。'%{RedFlag.Fetch.Method.FetchSmoother}'オプションと同様のリモートファイル上書きのリスクがあります。\n> ただし、最も歴史があり簡単なアプローチであるため、最も安定した方法と見なされることが多いです。", @@ -457,6 +464,12 @@ "Replicator.Message.VersionUpFlash": "更新が検出されました。設定ダイアログを開いて変更ログを確認してください。レプリケーション(複製)はキャンセルされました。", "Requires restart of Obsidian": "Obsidianの再起動が必要です", "Requires restart of Obsidian.": "Obsidianの再起動が必要です。", + "Rerun Onboarding Wizard": "オンボーディングウィザードを再実行", + "Rerun the onboarding wizard to set up Self-hosted LiveSync again.": "オンボーディングウィザードを再実行して、Self-hosted LiveSync をもう一度設定します。", + "Rerun Wizard": "ウィザードを再実行", + "Reset notification threshold and check the remote database usage": "通知しきい値をリセットしてリモートデータベース使用量を確認", + "Reset the remote storage size threshold and check the remote storage size again.": "リモートストレージ容量のしきい値をリセットし、リモートストレージ容量を再確認します。", + "Run Doctor": "診断を実行", "Save settings to a markdown file. You will be notified when new settings arrive. You can set different files by the platform.": "Markdownファイルに設定を保存します。新しい設定が到着すると通知されます。プラットフォームごとに異なるファイルを設定できます。", "Saving will be performed forcefully after this number of seconds.": "この秒数後に強制的に保存されます。", "Scan changes on customization sync": "カスタマイズされた同期時に、変更をスキャンする", @@ -503,6 +516,7 @@ "Should we prompt you for every single merge, even if we can safely merge automatcially?": "自動的に安全にマージできる場合でも、すべてのマージについて確認を求めますか?", "Show only notifications": "通知のみ表示", "Show status as icons only": "ステータス表示をアイコンのみにする", + "Show status icon instead of file warnings banner": "ファイル警告バナーの代わりにステータスアイコンを表示", "Show status inside the editor": "ステータスをエディタ内に表示", "Show status on the status bar": "ステータスバーに、ステータスを表示", "Show verbose log. Please enable if you report an issue.": "エラー以外の詳細ログ項目も表示する。問題が発生した場合は有効にしてください。", @@ -525,6 +539,7 @@ "The maximum duration for which chunks can be incubated within the document. Chunks exceeding this period will graduate to independent chunks.": "ドキュメント内でチャンクを保持できる最大期間。この期間を超えたチャンクは独立したチャンクに昇格します。", "The maximum number of chunks that can be incubated within the document. Chunks exceeding this number will immediately graduate to independent chunks.": "ドキュメント内で保持できるチャンクの最大数。この数を超えたチャンクは即座に独立したチャンクに昇格します。", "The maximum total size of chunks that can be incubated within the document. Chunks exceeding this size will immediately graduate to independent chunks.": "ドキュメント内で保持できるチャンクの最大合計サイズ。このサイズを超えたチャンクは即座に独立したチャンクに昇格します。", + "The minimum interval for automatic synchronisation on event.": "イベント発生時の自動同期における最小間隔です。", "This passphrase will not be copied to another device. It will be set to `Default` until you configure it again.": "このパスフレーズは他のデバイスにコピーされません。再度設定するまで`Default`に設定されます。", "TweakMismatchResolve.Action.Dismiss": "無視", "TweakMismatchResolve.Action.UseConfigured": "設定済みの設定を使用", @@ -545,6 +560,71 @@ "TweakMismatchResolve.Title": "設定の不一致が検出されました", "TweakMismatchResolve.Title.TweakResolving": "設定の不一致が検出されました", "TweakMismatchResolve.Title.UseRemoteConfig": "リモート設定を使用", + "Ui.SetupWizard.Common.Back": "戻る", + "Ui.SetupWizard.Common.Cancel": "キャンセル", + "Ui.SetupWizard.Common.ProceedSelectOption": "オプションを選択してください", + "Ui.SetupWizard.Intro.ExistingOption": "サーバーはすでに設定済みです", + "Ui.SetupWizard.Intro.ExistingOptionDesc": "既存の LiveSync サーバーに接続する", + "Ui.SetupWizard.Intro.Guidance": "ようこそ!LiveSync をセットアップしましょう。LiveSync の新規ユーザーですか、それともリモートサーバーはすでに設定済みですか?", + "Ui.SetupWizard.Intro.NewOption": "LiveSync の新規ユーザーです", + "Ui.SetupWizard.Intro.NewOptionDesc": "LiveSync を初めてセットアップする", + "Ui.SetupWizard.Intro.ProceedExisting": "既存サーバーに接続", + "Ui.SetupWizard.Intro.ProceedNew": "新規セットアップ", + "Ui.SetupWizard.Intro.Question": "当てはまるのはどれですか?", + "Ui.SetupWizard.Intro.Title": "セットアップウィザード", + "Ui.SetupWizard.OutroAskUserMode.CompatibleOption": "互換モードを使用", + "Ui.SetupWizard.OutroAskUserMode.CompatibleOptionDesc": "リモートが旧バージョンの LiveSync でセットアップされている場合はこちらを選択してください。一部の機能が制限される場合があります。", + "Ui.SetupWizard.OutroAskUserMode.ExistingOption": "このデバイスには既存データがあります", + "Ui.SetupWizard.OutroAskUserMode.ExistingOptionDesc": "ローカルファイルをリモートとマージします。このボールトにすでにメモがある場合はこちらを選択してください。", + "Ui.SetupWizard.OutroAskUserMode.Guidance": "このデバイスの LiveSync での使用方法を選択してください。初期同期動作に影響します。", + "Ui.SetupWizard.OutroAskUserMode.NewOption": "新しいデバイスとしてセットアップ", + "Ui.SetupWizard.OutroAskUserMode.NewOptionDesc": "新しいボールトで開始します。セットアップ後にリモートファイルが取得されます。", + "Ui.SetupWizard.OutroAskUserMode.ProceedApplySettings": "設定を適用", + "Ui.SetupWizard.OutroAskUserMode.ProceedNext": "続行", + "Ui.SetupWizard.OutroAskUserMode.Question": "このデバイスのモードを選択:", + "Ui.SetupWizard.OutroAskUserMode.Title": "このデバイスをどのように使用しますか?", + "Ui.SetupWizard.OutroExisting.Guidance": "セットアップが完了しました。再起動後にリモートデータが取得されます。下のボタンをクリックして再起動し、同期を開始してください。", + "Ui.SetupWizard.OutroExisting.Proceed": "再起動してデータを取得", + "Ui.SetupWizard.OutroExisting.Question": "下のボタンをクリックして再起動し、データ取得の確認に進んでください。", + "Ui.SetupWizard.OutroExisting.Title": "セットアップ完了:同期データの取得準備中", + "Ui.SetupWizard.OutroNewUser.GuidancePrimary": "LiveSync の設定が完了しました。このダイアログを閉じると設定が適用されます。", + "Ui.SetupWizard.OutroNewUser.GuidanceWarning": "リモートボールトにデータがある場合、既存のファイルが上書きされます。空のボールトを使用しているか、バックアップがあることを確認してください。", + "Ui.SetupWizard.OutroNewUser.Important": "重要:", + "Ui.SetupWizard.OutroNewUser.Proceed": "適用して再起動", + "Ui.SetupWizard.OutroNewUser.Question": "設定を適用する準備はできましたか?", + "Ui.SetupWizard.OutroNewUser.Title": "セットアップ完了", + "Ui.SetupWizard.SelectExisting.Guidance": "既存の LiveSync サーバーへの接続方法を選択してください。", + "Ui.SetupWizard.SelectExisting.ManualOption": "手動で設定", + "Ui.SetupWizard.SelectExisting.ManualOptionDesc": "サーバーの詳細と認証情報を自分で入力", + "Ui.SetupWizard.SelectExisting.ProceedManual": "手動で設定", + "Ui.SetupWizard.SelectExisting.ProceedQr": "QR コードをスキャン", + "Ui.SetupWizard.SelectExisting.ProceedSetupUri": "セットアップ URI を使用", + "Ui.SetupWizard.SelectExisting.QrOption": "QR コードをスキャン", + "Ui.SetupWizard.SelectExisting.QrOptionDesc": "設定済みのデバイスから QR コードをスキャン", + "Ui.SetupWizard.SelectExisting.Question": "接続方法を選択:", + "Ui.SetupWizard.SelectExisting.SetupUriOption": "セットアップ URI を使用", + "Ui.SetupWizard.SelectExisting.SetupUriOptionDesc": "サーバーから提供されるセットアップ URI から設定をインポート", + "Ui.SetupWizard.SelectExisting.Title": "既存サーバーに接続", + "Ui.SetupWizard.SelectNew.Guidance": "新しい LiveSync 接続の設定方法を選択してください。", + "Ui.SetupWizard.SelectNew.ManualOption": "手動で設定", + "Ui.SetupWizard.SelectNew.ManualOptionDesc": "サーバーの詳細と認証情報を自分で入力", + "Ui.SetupWizard.SelectNew.ProceedManual": "手動で設定", + "Ui.SetupWizard.SelectNew.ProceedSetupUri": "セットアップ URI を使用", + "Ui.SetupWizard.SelectNew.Question": "設定方法を選択:", + "Ui.SetupWizard.SelectNew.SetupUriOption": "セットアップ URI を使用", + "Ui.SetupWizard.SelectNew.SetupUriOptionDesc": "サーバーから提供されるセットアップ URI から設定をインポート", + "Ui.SetupWizard.SelectNew.Title": "新しい接続をセットアップ", + "Ui.SetupWizard.SetupRemote.BucketOption": "LiveSync バケット", + "Ui.SetupWizard.SetupRemote.BucketOptionDesc": "LiveSync コンパニオンサービスに同梱されているバケットサーバーを使用", + "Ui.SetupWizard.SetupRemote.CouchDbOption": "CouchDB", + "Ui.SetupWizard.SetupRemote.CouchDbOptionDesc": "ご自身の CouchDB インスタンスを使用して、同期サーバーを完全に制御", + "Ui.SetupWizard.SetupRemote.Guidance": "使用するリモートサーバーの種類を選択してください:", + "Ui.SetupWizard.SetupRemote.P2POption": "ピアツーピア(実験的)", + "Ui.SetupWizard.SetupRemote.P2POptionDesc": "中央サーバーなしでデバイス間を直接同期", + "Ui.SetupWizard.SetupRemote.ProceedBucket": "バケットをセットアップ", + "Ui.SetupWizard.SetupRemote.ProceedCouchDb": "CouchDB をセットアップ", + "Ui.SetupWizard.SetupRemote.ProceedP2P": "P2P をセットアップ", + "Ui.SetupWizard.SetupRemote.Title": "リモートサーバーのセットアップ", "Unique name between all synchronized devices. To edit this setting, please disable customization sync once.": "同期するすべての端末間で重複しない(一意の)名前。この設定を変更する場合、カスタマイズ同期を無効にしてください。", "Use Custom HTTP Handler": "カスタムHTTPハンドラーの利用", "Use dynamic iteration count": "動的な繰り返し回数", diff --git a/src/common/messagesJson/ko.json b/src/common/messagesJson/ko.json index 751a627a..54730de6 100644 --- a/src/common/messagesJson/ko.json +++ b/src/common/messagesJson/ko.json @@ -9,6 +9,8 @@ "(Obsolete) Use an old adapter for compatibility": "(사용 중단) 호환성을 위해 이전 어댑터 사용", "Access Key": "액세스 키", "Always prompt merge conflicts": "항상 병합 충돌 알림", + "Analyse database usage": "데이터베이스 사용량 분석", + "Analyse database usage and generate a TSV report for diagnosis yourself. You can paste the generated report with any spreadsheet you like.": "데이터베이스 사용량을 분석하고 직접 진단할 수 있도록 TSV 보고서를 생성합니다. 생성된 보고서는 원하는 스프레드시트에 붙여 넣어 확인할 수 있습니다.", "Apply Latest Change if Conflicting": "충돌 시 최신 변경 사항 적용", "Apply preset configuration": "프리셋 구성 적용", "Automatically Sync all files when opening Obsidian.": "Obsidian을 열 때 모든 파일을 자동으로 동기화합니다.", @@ -18,9 +20,11 @@ "Batch size of on-demand fetching": "필요 시 가져올 청크 묶음 크기", "Before v0.17.16, we used an old adapter for the local database. Now the new adapter is preferred. However, it needs local database rebuilding. Please disable this toggle when you have enough time. If leave it enabled, also while fetching from the remote database, you will be asked to disable this.": "v0.17.16 이전에는 로컬 데이터베이스에 이전 어댑터를 사용했습니다. 이제는 새로운 어댑터를 권장합니다. 하지만 로컬 데이터베이스 재구축이 필요합니다. 충분한 시간이 있을 때 이 토글을 비활성화해 주세요. 활성화된 상태로 두면 원격 데이터베이스에서 가져올 때도 이를 비활성화하라는 메시지가 나타납니다.", "Bucket Name": "버킷 이름", + "Check": "확인", "cmdConfigSync.showCustomizationSync": "사용자 설정 동기화 표시", "Comma separated `.gitignore, .dockerignore`": "쉼표로 구분된 `.gitignore, .dockerignore`", "Compute revisions for chunks": "청크에 대한 리비전 계산", + "Copy Report to clipboard": "보고서를 클립보드에 복사", "Data Compression": "데이터 압축", "Database Name": "데이터베이스 이름", "Database suffix": "데이터베이스 접미사", @@ -78,6 +82,7 @@ "If enabled per-filed efficient customization sync will be used. We need a small migration when enabling this. And all devices should be updated to v0.23.18. Once we enabled this, we lost a compatibility with old versions.": "활성화하면 파일별 효율적인 사용자 설정 동기화가 사용됩니다. 이를 활성화할 때 소규모 데이터 구조 전환이 필요합니다. 모든 기기를 v0.23.18로 업데이트해야 합니다. 이를 활성화하면 이전 버전과의 호환성이 사라집니다.", "If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker.": "활성화하면 청크는 최대 100개 항목으로 분할됩니다. 하지만 중복 제거 기능이 약간 약해집니다.", "If enabled, newly created chunks are temporarily kept within the document, and graduated to become independent chunks once stabilised.": "활성화하면 새로 생성된 변경 기록(청크)은 문서 안에 임시로 보관되며, 일정 조건을 만족하면 자동으로 문서 밖으로 분리되어 저장됩니다.", + "If enabled, the ⛔ icon will be shown inside the status instead of the file warnings banner. No details will be shown.": "활성화하면 파일 경고 배너 대신 상태 영역에 ⛔ 아이콘만 표시됩니다. 자세한 내용은 표시되지 않습니다.", "If enabled, the file under 1kb will be processed in the UI thread.": "활성화하면 1kb 미만의 파일은 UI 스레드에서 처리됩니다.", "If enabled, the notification of hidden files change will be suppressed.": "활성화하면 숨겨진 파일 변경 알림이 억제됩니다.", "If this enabled, all chunks will be stored with the revision made from its content. (Previous behaviour)": "이 옵션이 활성화되면 모든 청크는 콘텐츠에서 생성된 리비전과 함께 저장됩니다. (이전 동작)", @@ -96,7 +101,7 @@ "K.short_p2p_sync": "P2P 동기화 (%{exp})", "K.title_p2p_sync": "피어 투 피어(P2P) 동기화", "Keep empty folder": "빈 폴더 유지", - "lang_def": "Default", + "lang_def": "기본값", "lang-de": "Deutsche", "lang-def": "%{lang_def}", "lang-es": "Español", @@ -146,6 +151,7 @@ "Memory cache size (by total characters)": "메모리 캐시 크기 (총 문자 수)", "Memory cache size (by total items)": "메모리 캐시 크기 (총 항목 수)", "Minimum delay for batch database updating": "일괄 데이터베이스 업데이트 최소 지연", + "Minimum interval for syncing": "동기화 최소 간격", "moduleCheckRemoteSize.logCheckingStorageSizes": "스토리지 크기 확인 중", "moduleCheckRemoteSize.logCurrentStorageSize": "원격 스토리지 크기: ${measuredSize}", "moduleCheckRemoteSize.logExceededWarning": "원격 스토리지 크기: ${measuredSize}가 ${notifySize}를 초과했습니다", @@ -182,6 +188,7 @@ "moduleLocalDatabase.logWaitingForReady": "준비 대기 중...", "moduleLog.showLog": "로그 표시", "moduleMigration.docUri": "https://github.com/vrtmrz/obsidian-livesync/blob/main/README.md#how-to-use", + "moduleMigration.fix0256.buttons.fix": "수정", "moduleMigration.logBulkSendCorrupted": "청크 일괄 전송이 활성화되었지만, 이 기능에 문제가 있었습니다. 불편을 드려 죄송합니다. 자동으로 비활성화되었습니다.", "moduleMigration.logFetchRemoteTweakFailed": "원격 조정 값을 가져오는데 실패했습니다", "moduleMigration.logLocalDatabaseNotReady": "문제가 발생했습니다! 로컬 데이터베이스가 준비되지 않았습니다", @@ -339,12 +346,12 @@ "obsidianLiveSyncSettingTab.okWwwAuth": "✔ httpd.WWW-Authenticate가 정상입니다.", "obsidianLiveSyncSettingTab.optionApply": "적용", "obsidianLiveSyncSettingTab.optionCancel": "취소", - "obsidianLiveSyncSettingTab.optionCouchDB": "CouchDB", + "obsidianLiveSyncSettingTab.optionCouchDB": "CouchDB 서버", "obsidianLiveSyncSettingTab.optionDisableAllAutomatic": "모든 자동 비활성화", "obsidianLiveSyncSettingTab.optionFetchFromRemote": "원격에서 가져오기", "obsidianLiveSyncSettingTab.optionHere": "여기", - "obsidianLiveSyncSettingTab.optionLiveSync": "LiveSync", - "obsidianLiveSyncSettingTab.optionMinioS3R2": "Minio,S3,R2", + "obsidianLiveSyncSettingTab.optionLiveSync": "LiveSync 동기화", + "obsidianLiveSyncSettingTab.optionMinioS3R2": "MinIO, S3, R2", "obsidianLiveSyncSettingTab.optionOkReadEverything": "네, 모든 것을 읽었습니다.", "obsidianLiveSyncSettingTab.optionOnEvents": "이벤트 시", "obsidianLiveSyncSettingTab.optionPeriodicAndEvents": "주기적 및 이벤트 시", @@ -359,7 +366,7 @@ "obsidianLiveSyncSettingTab.titleAppearance": "외관", "obsidianLiveSyncSettingTab.titleConflictResolution": "충돌 해결", "obsidianLiveSyncSettingTab.titleCongratulations": "축하합니다!", - "obsidianLiveSyncSettingTab.titleCouchDB": "CouchDB", + "obsidianLiveSyncSettingTab.titleCouchDB": "CouchDB 서버", "obsidianLiveSyncSettingTab.titleDeletionPropagation": "삭제 전파", "obsidianLiveSyncSettingTab.titleEncryptionNotEnabled": "암호화가 활성화되지 않음", "obsidianLiveSyncSettingTab.titleEncryptionPassphraseInvalid": "암호화 패스프레이즈 유효하지 않음", @@ -369,7 +376,7 @@ "obsidianLiveSyncSettingTab.titleFetchSettings": "설정 가져오기", "obsidianLiveSyncSettingTab.titleHiddenFiles": "숨김 파일", "obsidianLiveSyncSettingTab.titleLogging": "로깅", - "obsidianLiveSyncSettingTab.titleMinioS3R2": "Minio,S3,R2", + "obsidianLiveSyncSettingTab.titleMinioS3R2": "MinIO, S3, R2", "obsidianLiveSyncSettingTab.titleNotification": "알림", "obsidianLiveSyncSettingTab.titleOnlineTips": "온라인 팁", "obsidianLiveSyncSettingTab.titleQuickSetup": "빠른 설정", @@ -410,6 +417,7 @@ "Path Obfuscation": "경로 난독화", "Per-file-saved customization sync": "파일별 저장 사용자 설정 동기화", "Periodic Sync interval": "주기적 동기화 간격", + "Prepare the 'report' to create an issue": "이슈 생성을 위한 '보고서' 준비", "Presets": "프리셋", "Process small files in the foreground": "포그라운드에서 작은 파일 처리", "RedFlag.Fetch.Method.Desc": "어떻게 가져오시겠습니까?\n- %{RedFlag.Fetch.Method.FetchSafer}. (권장)\n **낮은 트래픽**, **높은 CPU**, **낮은 위험**\n- %{RedFlag.Fetch.Method.FetchSmoother}.\n **낮은 트래픽**, **보통 CPU**, **낮음에서 보통 위험**\n- %{RedFlag.Fetch.Method.FetchTraditional}.\n **높은 트래픽**, **낮은 CPU**, **낮음에서 보통 위험**\n\n>[!INFO]- 세부 사항\n> ## %{RedFlag.Fetch.Method.FetchSafer}. (권장)\n> **낮은 트래픽**, **높은 CPU**, **낮은 위험**\n> 이 옵션은 원격 소스에서 데이터를 가져오기 전에 기존 로컬 파일을 사용하여 로컬 데이터베이스를 먼저 생성합니다.\n> 로컬과 원격 모두에 일치하는 파일이 있으면 둘 사이의 차이점만 전송됩니다.\n> 하지만 두 위치 모두에 있는 파일은 초기에 충돌 파일로 처리됩니다. 실제로 충돌하지 않는다면 자동으로 해결되지만 이 과정은 시간이 걸릴 수 있습니다.\n> 이는 일반적으로 가장 안전한 방법으로 데이터 손실 위험을 최소화합니다.\n> ## %{RedFlag.Fetch.Method.FetchSmoother}.\n> **낮은 트래픽**, **보통 CPU**, **낮음에서 보통 위험** (작업에 따라)\n> 이 옵션은 먼저 로컬 파일에서 데이터베이스용 청크를 생성한 다음 데이터를 가져옵니다. 따라서 로컬에 없는 청크만 전송됩니다. 하지만 모든 메타데이터는 원격 소스에서 가져옵니다.\n> 그런 다음 로컬 파일이 시작 시 이 메타데이터와 비교됩니다. 더 새로운 것으로 간주되는 콘텐츠가 오래된 것을 덮어씁니다(수정 시간 기준). 이 결과는 원격 데이터베이스에 다시 동기화됩니다.\n> 로컬 파일이 실제로 최신 타임스탬프라면 일반적으로 안전합니다. 하지만 파일이 더 새로운 타임스탬프를 가지고 있지만 더 오래된 콘텐츠를 가지고 있다면(초기 `welcome.md`처럼) 문제가 발생할 수 있습니다.\n> 이는 \"%{RedFlag.Fetch.Method.FetchSafer}\"보다 CPU를 덜 사용하고 더 빠르지만 주의 깊게 사용하지 않으면 데이터 손실로 이어질 수 있습니다.\n> ## %{RedFlag.Fetch.Method.FetchTraditional}.\n> **높은 트래픽**, **낮은 CPU**, **낮음에서 보통 위험** (작업에 따라)\n> 모든 것이 원격에서 가져와집니다.\n> %{RedFlag.Fetch.Method.FetchSmoother}와 유사하지만 모든 청크가 원격 소스에서 가져와집니다.\n> 이는 가장 전통적인 가져오기 방법으로 일반적으로 가장 많은 네트워크 트래픽과 시간을 소모합니다. 또한 '%{RedFlag.Fetch.Method.FetchSmoother}' 옵션과 유사하게 원격 파일을 덮어쓸 위험이 있습니다.\n> 하지만 가장 오래되고 가장 직접적인 접근 방식이기 때문에 종종 가장 안정적인 방법으로 간주됩니다.", @@ -435,6 +443,12 @@ "Replicator.Message.VersionUpFlash": "설정을 열고 메시지를 확인해 주세요. 복제가 취소되었습니다.", "Requires restart of Obsidian": "Obsidian 재시작 필요", "Requires restart of Obsidian.": "Obsidian 재시작이 필요합니다.", + "Rerun Onboarding Wizard": "온보딩 마법사 다시 실행", + "Rerun the onboarding wizard to set up Self-hosted LiveSync again.": "온보딩 마법사를 다시 실행하여 Self-hosted LiveSync를 다시 설정합니다.", + "Rerun Wizard": "마법사 다시 실행", + "Reset notification threshold and check the remote database usage": "알림 임계값을 초기화하고 원격 데이터베이스 사용량 확인", + "Reset the remote storage size threshold and check the remote storage size again.": "원격 저장소 크기 임계값을 초기화하고 원격 저장소 크기를 다시 확인합니다.", + "Run Doctor": "진단 실행", "Save settings to a markdown file. You will be notified when new settings arrive. You can set different files by the platform.": "설정을 마크다운 파일에 저장합니다. 새로운 설정이 도착하면 알림을 받게 됩니다. 플랫폼별로 다른 파일을 설정할 수 있습니다.", "Saving will be performed forcefully after this number of seconds.": "이 시간(초) 후에 강제로 저장이 수행됩니다.", "Scan changes on customization sync": "사용자 설정 동기화 시 변경 사항 검색", @@ -453,6 +467,8 @@ "Setting.TroubleShooting": "문제 해결", "Setting.TroubleShooting.Doctor": "설정 진단 마법사", "Setting.TroubleShooting.Doctor.Desc": "최적화되지 않은 설정을 감지합니다. (데이터 구조 전환 시와 동일)", + "Setting.TroubleShooting.ScanBrokenFiles": "손상된 파일 검사", + "Setting.TroubleShooting.ScanBrokenFiles.Desc": "데이터베이스에 올바르게 저장되지 않은 파일을 검사합니다.", "SettingTab.Message.AskRebuild": "변경 사항을 적용하려면 원격 데이터베이스에서 가져와야 합니다. 계속 진행하시겠습니까?", "Setup.QRCode": "설정을 전송하기 위한 QR 코드를 생성했습니다. 휴대폰이나 다른 기기로 QR 코드를 스캔해 주세요.\n참고: QR 코드는 암호화되지 않았으므로 열 때 주의하세요.\n\n>[!FOR YOUR EYES ONLY]-\n>
${qr_image}
", "Setup.ShowQRCode": "QR 코드 표시", @@ -463,6 +479,7 @@ "Should we prompt you for every single merge, even if we can safely merge automatcially?": "안전하게 자동 병합할 수 있는 경우에도 모든 병합에 대해 알림을 받으시겠습니까?", "Show only notifications": "알림만 표시", "Show status as icons only": "아이콘으로만 상태 표시", + "Show status icon instead of file warnings banner": "파일 경고 배너 대신 상태 아이콘 표시", "Show status inside the editor": "편집기 내부에 상태 표시", "Show status on the status bar": "상태 바에 상태 표시", "Show verbose log. Please enable if you report an issue.": "자세한 로그를 표시합니다. 문제를 신고하는 경우 활성화해 주세요.", @@ -485,6 +502,7 @@ "The maximum duration for which chunks can be incubated within the document. Chunks exceeding this period will graduate to independent chunks.": "변경 기록이 문서에 함께 보관될 수 있는 최대 시간입니다. 초과 시 문서에서 분리되어 개별로 저장됩니다.", "The maximum number of chunks that can be incubated within the document. Chunks exceeding this number will immediately graduate to independent chunks.": "문서 안에 임시로 보관할 수 있는 변경 기록의 최대 개수입니다. 이 수를 초과하면 즉시 독립된 청크로 분리되어 저장됩니다.", "The maximum total size of chunks that can be incubated within the document. Chunks exceeding this size will immediately graduate to independent chunks.": "문서 안에 임시로 보관할 수 있는 변경 기록의 전체 크기 제한입니다. 초과 시 자동으로 분리됩니다.", + "The minimum interval for automatic synchronisation on event.": "이벤트 발생 시 자동 동기화의 최소 간격입니다.", "This passphrase will not be copied to another device. It will be set to `Default` until you configure it again.": "이 패스프레이즈는 다른 기기로 복사되지 않습니다. 다시 구성할 때까지 `기본값`으로 설정됩니다.", "TweakMismatchResolve.Action.Dismiss": "무시", "TweakMismatchResolve.Action.UseConfigured": "구성된 설정 사용", @@ -505,6 +523,71 @@ "TweakMismatchResolve.Title": "구성 불일치 감지", "TweakMismatchResolve.Title.TweakResolving": "구성 불일치 감지", "TweakMismatchResolve.Title.UseRemoteConfig": "원격 구성 사용", + "Ui.SetupWizard.Common.Back": "뒤로", + "Ui.SetupWizard.Common.Cancel": "취소", + "Ui.SetupWizard.Common.ProceedSelectOption": "옵션을 선택해 주세요", + "Ui.SetupWizard.Intro.ExistingOption": "이미 서버를 설정했습니다", + "Ui.SetupWizard.Intro.ExistingOptionDesc": "기존 LiveSync 서버에 연결하기", + "Ui.SetupWizard.Intro.Guidance": "환영합니다! LiveSync를 설정하겠습니다. LiveSync를 처음 사용하시나요, 아니면 이미 원격 서버를 설정하셨나요?", + "Ui.SetupWizard.Intro.NewOption": "LiveSync를 처음 사용합니다", + "Ui.SetupWizard.Intro.NewOptionDesc": "LiveSync를 처음으로 설정하기", + "Ui.SetupWizard.Intro.ProceedExisting": "기존 서버에 연결", + "Ui.SetupWizard.Intro.ProceedNew": "새로 설정", + "Ui.SetupWizard.Intro.Question": "어떤 상황에 해당하시나요?", + "Ui.SetupWizard.Intro.Title": "설정 마법사", + "Ui.SetupWizard.OutroAskUserMode.CompatibleOption": "호환 모드 사용", + "Ui.SetupWizard.OutroAskUserMode.CompatibleOptionDesc": "원격이 이전 버전의 LiveSync로 설정된 경우 이 옵션을 사용하세요. 일부 기능이 제한될 수 있습니다.", + "Ui.SetupWizard.OutroAskUserMode.ExistingOption": "이 장치에 기존 데이터가 있습니다", + "Ui.SetupWizard.OutroAskUserMode.ExistingOptionDesc": "로컬 파일을 원격과 병합합니다. 이 볼트에 이미 메모가 있는 경우 이 옵션을 사용하세요.", + "Ui.SetupWizard.OutroAskUserMode.Guidance": "이 장치의 LiveSync 사용 방법을 선택해 주세요. 초기 동기화 동작에 영향을 줍니다.", + "Ui.SetupWizard.OutroAskUserMode.NewOption": "새 장치로 설정", + "Ui.SetupWizard.OutroAskUserMode.NewOptionDesc": "새 볼트로 시작합니다. 설정 후 원격 파일을 가져옵니다.", + "Ui.SetupWizard.OutroAskUserMode.ProceedApplySettings": "설정 적용", + "Ui.SetupWizard.OutroAskUserMode.ProceedNext": "계속", + "Ui.SetupWizard.OutroAskUserMode.Question": "이 장치의 모드를 선택하세요:", + "Ui.SetupWizard.OutroAskUserMode.Title": "이 장치를 어떻게 사용하시겠습니까?", + "Ui.SetupWizard.OutroExisting.Guidance": "설정이 완료되었습니다. 재시작 후 원격 데이터를 가져옵니다. 아래 버튼을 클릭하여 재시작하고 동기화를 시작하세요.", + "Ui.SetupWizard.OutroExisting.Proceed": "재시작하고 데이터 가져오기", + "Ui.SetupWizard.OutroExisting.Question": "아래 버튼을 클릭하여 재시작하고 데이터 가져오기 확인으로 진행하세요.", + "Ui.SetupWizard.OutroExisting.Title": "설정 완료: 동기화 데이터 가져오기 준비 중", + "Ui.SetupWizard.OutroNewUser.GuidancePrimary": "LiveSync 구성이 완료되었습니다. 이 대화 상자를 닫으면 설정이 적용됩니다.", + "Ui.SetupWizard.OutroNewUser.GuidanceWarning": "원격 볼트에 데이터가 있으면 기존 파일이 덮어쓰여집니다. 빈 볼트를 사용하거나 백업이 있는지 확인해 주세요.", + "Ui.SetupWizard.OutroNewUser.Important": "중요:", + "Ui.SetupWizard.OutroNewUser.Proceed": "적용하고 재시작", + "Ui.SetupWizard.OutroNewUser.Question": "구성을 적용할 준비가 되셨나요?", + "Ui.SetupWizard.OutroNewUser.Title": "설정 완료", + "Ui.SetupWizard.SelectExisting.Guidance": "기존 LiveSync 서버에 연결하는 방법을 선택해 주세요.", + "Ui.SetupWizard.SelectExisting.ManualOption": "수동으로 설정", + "Ui.SetupWizard.SelectExisting.ManualOptionDesc": "서버 세부 정보와 자격 증명을 직접 입력", + "Ui.SetupWizard.SelectExisting.ProceedManual": "수동으로 설정", + "Ui.SetupWizard.SelectExisting.ProceedQr": "QR 코드 스캔", + "Ui.SetupWizard.SelectExisting.ProceedSetupUri": "설정 URI 사용", + "Ui.SetupWizard.SelectExisting.QrOption": "QR 코드 스캔", + "Ui.SetupWizard.SelectExisting.QrOptionDesc": "이미 구성된 장치에서 QR 코드 스캔", + "Ui.SetupWizard.SelectExisting.Question": "연결 방법 선택:", + "Ui.SetupWizard.SelectExisting.SetupUriOption": "설정 URI 사용", + "Ui.SetupWizard.SelectExisting.SetupUriOptionDesc": "서버에서 제공하는 설정 URI에서 구성 가져오기", + "Ui.SetupWizard.SelectExisting.Title": "기존 서버에 연결", + "Ui.SetupWizard.SelectNew.Guidance": "새 LiveSync 연결을 구성하는 방법을 선택해 주세요.", + "Ui.SetupWizard.SelectNew.ManualOption": "수동으로 설정", + "Ui.SetupWizard.SelectNew.ManualOptionDesc": "서버 세부 정보와 자격 증명을 직접 입력", + "Ui.SetupWizard.SelectNew.ProceedManual": "수동으로 설정", + "Ui.SetupWizard.SelectNew.ProceedSetupUri": "설정 URI 사용", + "Ui.SetupWizard.SelectNew.Question": "구성 방법 선택:", + "Ui.SetupWizard.SelectNew.SetupUriOption": "설정 URI 사용", + "Ui.SetupWizard.SelectNew.SetupUriOptionDesc": "서버에서 제공하는 설정 URI에서 구성 가져오기", + "Ui.SetupWizard.SelectNew.Title": "새 연결 설정", + "Ui.SetupWizard.SetupRemote.BucketOption": "LiveSync 버킷", + "Ui.SetupWizard.SetupRemote.BucketOptionDesc": "LiveSync 컴패니언 서비스에 포함된 버킷 서버 사용", + "Ui.SetupWizard.SetupRemote.CouchDbOption": "CouchDB", + "Ui.SetupWizard.SetupRemote.CouchDbOptionDesc": "자체 CouchDB 인스턴스를 사용하여 동기화 서버를 완전히 제어", + "Ui.SetupWizard.SetupRemote.Guidance": "사용할 원격 서버 유형을 선택해 주세요:", + "Ui.SetupWizard.SetupRemote.P2POption": "피어 투 피어 (실험적)", + "Ui.SetupWizard.SetupRemote.P2POptionDesc": "중앙 서버 없이 장치 간 직접 동기화", + "Ui.SetupWizard.SetupRemote.ProceedBucket": "버킷 설정", + "Ui.SetupWizard.SetupRemote.ProceedCouchDb": "CouchDB 설정", + "Ui.SetupWizard.SetupRemote.ProceedP2P": "P2P 설정", + "Ui.SetupWizard.SetupRemote.Title": "원격 서버 설정", "Unique name between all synchronized devices. To edit this setting, please disable customization sync once.": "모든 동기화된 기기 간 고유 이름입니다. 이 설정을 편집하려면 사용자 설정 동기화를 한 번 비활성화해 주세요.", "Use Custom HTTP Handler": "커스텀 HTTP 핸들러 사용", "Use dynamic iteration count": "동적 반복 횟수 사용", diff --git a/src/common/messagesJson/ru.json b/src/common/messagesJson/ru.json index e8df393b..3bfb3169 100644 --- a/src/common/messagesJson/ru.json +++ b/src/common/messagesJson/ru.json @@ -13,7 +13,7 @@ "Always prompt merge conflicts": "Всегда запрашивать разрешение конфликтов слияния", "Analyse": "Анализировать", "Analyse database usage": "Анализ использования базы данных", - "Analyse database usage and generate a TSV report for diagnosis yourself. You can paste the generated report with any spreadsheet you like.": "Analyse database usage and generate a TSV report for diagnosis yourself. You can paste the generated report with any spreadsheet you like.", + "Analyse database usage and generate a TSV report for diagnosis yourself. You can paste the generated report with any spreadsheet you like.": "Проанализируйте использование базы данных и создайте TSV-отчёт для самостоятельной диагностики. Полученный отчёт можно вставить в любую удобную для вас таблицу.", "Apply Latest Change if Conflicting": "Применить последнее изменение при конфликте", "Apply preset configuration": "Применить предустановленную конфигурацию", "Automatically Sync all files when opening Obsidian.": "Автоматически синхронизировать все файлы при открытии Obsidian.", @@ -269,13 +269,13 @@ "obsidianLiveSyncSettingTab.buttonFetch": "Загрузить", "obsidianLiveSyncSettingTab.buttonNext": "Далее", "obsidianLiveSyncSettingTab.defaultLanguage": "По умолчанию", - "obsidianLiveSyncSettingTab.descConnectSetupURI": "This is the recommended method to set up Self-hosted LiveSync with a Setup URI.", - "obsidianLiveSyncSettingTab.descCopySetupURI": "Perfect for setting up a new device!", - "obsidianLiveSyncSettingTab.descEnableLiveSync": "Only enable this after configuring either of the above two options or completing all configuration manually.", - "obsidianLiveSyncSettingTab.descFetchConfigFromRemote": "Fetch necessary settings from already configured remote server.", - "obsidianLiveSyncSettingTab.descManualSetup": "Not recommended, but useful if you don't have a Setup URI", - "obsidianLiveSyncSettingTab.descTestDatabaseConnection": "Open database connection. If the remote database is not found and you have permission to create a database, the database will be created.", - "obsidianLiveSyncSettingTab.descValidateDatabaseConfig": "Checks and fixes any potential issues with the database config.", + "obsidianLiveSyncSettingTab.descConnectSetupURI": "Это рекомендуемый способ настройки Self-hosted LiveSync с помощью Setup URI.", + "obsidianLiveSyncSettingTab.descCopySetupURI": "Идеально подходит для настройки нового устройства!", + "obsidianLiveSyncSettingTab.descEnableLiveSync": "Включайте это только после настройки одного из двух вариантов выше или после полного ручного завершения всей конфигурации.", + "obsidianLiveSyncSettingTab.descFetchConfigFromRemote": "Получить необходимые настройки с уже настроенного удалённого сервера.", + "obsidianLiveSyncSettingTab.descManualSetup": "Не рекомендуется, но полезно, если у вас нет Setup URI.", + "obsidianLiveSyncSettingTab.descTestDatabaseConnection": "Открыть подключение к базе данных. Если удалённая база данных не найдена и у вас есть право на её создание, база будет создана.", + "obsidianLiveSyncSettingTab.descValidateDatabaseConfig": "Проверяет и исправляет любые потенциальные проблемы в конфигурации базы данных.", "obsidianLiveSyncSettingTab.errAccessForbidden": "❗ Доступ запрещён.", "obsidianLiveSyncSettingTab.errCannotContinueTest": "Мы не можем продолжить тест.", "obsidianLiveSyncSettingTab.errCorsCredentials": "❗ cors.credentials неверно", @@ -376,12 +376,12 @@ "obsidianLiveSyncSettingTab.okWwwAuth": "✔ httpd.WWW-Authenticate в порядке.", "obsidianLiveSyncSettingTab.optionApply": "Применить", "obsidianLiveSyncSettingTab.optionCancel": "Отмена", - "obsidianLiveSyncSettingTab.optionCouchDB": "CouchDB", + "obsidianLiveSyncSettingTab.optionCouchDB": "Сервер CouchDB", "obsidianLiveSyncSettingTab.optionDisableAllAutomatic": "Отключить всё автоматическое", "obsidianLiveSyncSettingTab.optionFetchFromRemote": "Загрузить с удалённого", "obsidianLiveSyncSettingTab.optionHere": "ЗДЕСЬ", - "obsidianLiveSyncSettingTab.optionLiveSync": "LiveSync", - "obsidianLiveSyncSettingTab.optionMinioS3R2": "Minio,S3,R2", + "obsidianLiveSyncSettingTab.optionLiveSync": "Синхронизация LiveSync", + "obsidianLiveSyncSettingTab.optionMinioS3R2": "MinIO, S3, R2", "obsidianLiveSyncSettingTab.optionOkReadEverything": "ОК, я всё прочитал.", "obsidianLiveSyncSettingTab.optionOnEvents": "По событиям", "obsidianLiveSyncSettingTab.optionPeriodicAndEvents": "Периодически и по событиям", @@ -398,7 +398,7 @@ "obsidianLiveSyncSettingTab.titleAppearance": "Внешний вид", "obsidianLiveSyncSettingTab.titleConflictResolution": "Разрешение конфликтов", "obsidianLiveSyncSettingTab.titleCongratulations": "Поздравляем!", - "obsidianLiveSyncSettingTab.titleCouchDB": "CouchDB", + "obsidianLiveSyncSettingTab.titleCouchDB": "Сервер CouchDB", "obsidianLiveSyncSettingTab.titleDeletionPropagation": "Распространение удалений", "obsidianLiveSyncSettingTab.titleEncryptionNotEnabled": "Шифрование не включено", "obsidianLiveSyncSettingTab.titleEncryptionPassphraseInvalid": "Парольная фраза шифрования недействительна", @@ -408,7 +408,7 @@ "obsidianLiveSyncSettingTab.titleFetchSettings": "Загрузить настройки", "obsidianLiveSyncSettingTab.titleHiddenFiles": "Скрытые файлы", "obsidianLiveSyncSettingTab.titleLogging": "Логирование", - "obsidianLiveSyncSettingTab.titleMinioS3R2": "Minio,S3,R2", + "obsidianLiveSyncSettingTab.titleMinioS3R2": "MinIO, S3, R2", "obsidianLiveSyncSettingTab.titleNotification": "Уведомления", "obsidianLiveSyncSettingTab.titleOnlineTips": "Онлайн советы", "obsidianLiveSyncSettingTab.titleQuickSetup": "Быстрая настройка", @@ -581,6 +581,71 @@ "TweakMismatchResolve.Title": "Обнаружено несоответствие конфигурации", "TweakMismatchResolve.Title.TweakResolving": "Обнаружено несоответствие конфигурации", "TweakMismatchResolve.Title.UseRemoteConfig": "Использовать удалённую конфигурацию", + "Ui.SetupWizard.Common.Back": "Назад", + "Ui.SetupWizard.Common.Cancel": "Отмена", + "Ui.SetupWizard.Common.ProceedSelectOption": "Пожалуйста, выберите вариант", + "Ui.SetupWizard.Intro.ExistingOption": "У меня уже есть настроенный сервер", + "Ui.SetupWizard.Intro.ExistingOptionDesc": "Подключиться к существующему серверу LiveSync", + "Ui.SetupWizard.Intro.Guidance": "Добро пожаловать! Давайте настроим LiveSync. Вы новый пользователь LiveSync или у вас уже есть настроенный удалённый сервер?", + "Ui.SetupWizard.Intro.NewOption": "Я новый пользователь LiveSync", + "Ui.SetupWizard.Intro.NewOptionDesc": "Настроить LiveSync впервые", + "Ui.SetupWizard.Intro.ProceedExisting": "Подключиться к существующему", + "Ui.SetupWizard.Intro.ProceedNew": "Новая настройка", + "Ui.SetupWizard.Intro.Question": "Какая ситуация вам подходит?", + "Ui.SetupWizard.Intro.Title": "Мастер настройки", + "Ui.SetupWizard.OutroAskUserMode.CompatibleOption": "Использовать совместимый режим", + "Ui.SetupWizard.OutroAskUserMode.CompatibleOptionDesc": "Используйте это, если удалённый сервер был настроен со старой версией LiveSync. Некоторые функции могут быть ограничены.", + "Ui.SetupWizard.OutroAskUserMode.ExistingOption": "На этом устройстве есть существующие данные", + "Ui.SetupWizard.OutroAskUserMode.ExistingOptionDesc": "Объединить локальные файлы с удалёнными. Используйте это, если в хранилище уже есть заметки.", + "Ui.SetupWizard.OutroAskUserMode.Guidance": "Выберите, как это устройство будет использоваться с LiveSync. Это влияет на начальное поведение синхронизации.", + "Ui.SetupWizard.OutroAskUserMode.NewOption": "Настроить как новое устройство", + "Ui.SetupWizard.OutroAskUserMode.NewOptionDesc": "Начать с нового хранилища. Удалённые файлы будут получены после настройки.", + "Ui.SetupWizard.OutroAskUserMode.ProceedApplySettings": "Применить настройки", + "Ui.SetupWizard.OutroAskUserMode.ProceedNext": "Продолжить", + "Ui.SetupWizard.OutroAskUserMode.Question": "Выберите режим для этого устройства:", + "Ui.SetupWizard.OutroAskUserMode.Title": "Как вы будете использовать это устройство?", + "Ui.SetupWizard.OutroExisting.Guidance": "Настройка завершена. Удалённые данные будут получены после перезапуска. Нажмите кнопку ниже, чтобы перезапустить и начать синхронизацию.", + "Ui.SetupWizard.OutroExisting.Proceed": "Перезапустить и получить данные", + "Ui.SetupWizard.OutroExisting.Question": "Нажмите кнопку ниже, чтобы перезапустить и перейти к подтверждению получения данных.", + "Ui.SetupWizard.OutroExisting.Title": "Настройка завершена: Подготовка к получению данных синхронизации", + "Ui.SetupWizard.OutroNewUser.GuidancePrimary": "Ваша конфигурация LiveSync настроена. Настройки будут применены при закрытии этого диалога.", + "Ui.SetupWizard.OutroNewUser.GuidanceWarning": "Это перезапишет существующие файлы, если в удалённом хранилище есть данные. Убедитесь, что вы используете пустое хранилище или имеете резервные копии.", + "Ui.SetupWizard.OutroNewUser.Important": "Важно:", + "Ui.SetupWizard.OutroNewUser.Proceed": "Применить и перезапустить", + "Ui.SetupWizard.OutroNewUser.Question": "Готовы применить конфигурацию?", + "Ui.SetupWizard.OutroNewUser.Title": "Настройка завершена", + "Ui.SetupWizard.SelectExisting.Guidance": "Выберите способ подключения к существующему серверу LiveSync.", + "Ui.SetupWizard.SelectExisting.ManualOption": "Настроить вручную", + "Ui.SetupWizard.SelectExisting.ManualOptionDesc": "Введите данные сервера и учётные данные самостоятельно", + "Ui.SetupWizard.SelectExisting.ProceedManual": "Настроить вручную", + "Ui.SetupWizard.SelectExisting.ProceedQr": "Сканировать QR-код", + "Ui.SetupWizard.SelectExisting.ProceedSetupUri": "Использовать URI настройки", + "Ui.SetupWizard.SelectExisting.QrOption": "Сканировать QR-код", + "Ui.SetupWizard.SelectExisting.QrOptionDesc": "Сканировать QR-код с уже настроенного устройства", + "Ui.SetupWizard.SelectExisting.Question": "Выберите способ подключения:", + "Ui.SetupWizard.SelectExisting.SetupUriOption": "Использовать URI настройки", + "Ui.SetupWizard.SelectExisting.SetupUriOptionDesc": "Импортировать конфигурацию из URI, предоставленного сервером", + "Ui.SetupWizard.SelectExisting.Title": "Подключение к существующему серверу", + "Ui.SetupWizard.SelectNew.Guidance": "Выберите, как вы хотите настроить новое подключение LiveSync.", + "Ui.SetupWizard.SelectNew.ManualOption": "Настроить вручную", + "Ui.SetupWizard.SelectNew.ManualOptionDesc": "Введите данные сервера и учётные данные самостоятельно", + "Ui.SetupWizard.SelectNew.ProceedManual": "Настроить вручную", + "Ui.SetupWizard.SelectNew.ProceedSetupUri": "Использовать URI настройки", + "Ui.SetupWizard.SelectNew.Question": "Выберите метод настройки:", + "Ui.SetupWizard.SelectNew.SetupUriOption": "Использовать URI настройки", + "Ui.SetupWizard.SelectNew.SetupUriOptionDesc": "Импортировать конфигурацию из URI, предоставленного сервером", + "Ui.SetupWizard.SelectNew.Title": "Настройка нового подключения", + "Ui.SetupWizard.SetupRemote.BucketOption": "Хранилище LiveSync", + "Ui.SetupWizard.SetupRemote.BucketOptionDesc": "Используйте встроенный сервер хранилища, входящий в компаньон-сервис LiveSync", + "Ui.SetupWizard.SetupRemote.CouchDbOption": "CouchDB", + "Ui.SetupWizard.SetupRemote.CouchDbOptionDesc": "Используйте свой экземпляр CouchDB для полного контроля над сервером синхронизации", + "Ui.SetupWizard.SetupRemote.Guidance": "Выберите тип удалённого сервера, который хотите использовать:", + "Ui.SetupWizard.SetupRemote.P2POption": "Одноранговая сеть (Экспериментально)", + "Ui.SetupWizard.SetupRemote.P2POptionDesc": "Синхронизация напрямую между устройствами без центрального сервера", + "Ui.SetupWizard.SetupRemote.ProceedBucket": "Настроить хранилище", + "Ui.SetupWizard.SetupRemote.ProceedCouchDb": "Настроить CouchDB", + "Ui.SetupWizard.SetupRemote.ProceedP2P": "Настроить P2P", + "Ui.SetupWizard.SetupRemote.Title": "Настройка удалённого сервера", "Unique name between all synchronized devices. To edit this setting, please disable customization sync once.": "Уникальное имя между всеми синхронизируемыми устройствами.", "Use Custom HTTP Handler": "Использовать пользовательский HTTP обработчик", "Use dynamic iteration count": "Использовать динамическое количество итераций", diff --git a/src/common/messagesJson/zh-tw.json b/src/common/messagesJson/zh-tw.json index 0967ef42..bc7c8185 100644 --- a/src/common/messagesJson/zh-tw.json +++ b/src/common/messagesJson/zh-tw.json @@ -1 +1,67 @@ -{} +{ + "Ui.SetupWizard.Common.Back": "返回", + "Ui.SetupWizard.Common.Cancel": "取消", + "Ui.SetupWizard.Common.ProceedSelectOption": "請選擇一個選項", + "Ui.SetupWizard.Intro.ExistingOption": "我已經設定好伺服器", + "Ui.SetupWizard.Intro.ExistingOptionDesc": "連線到現有的 LiveSync 伺服器", + "Ui.SetupWizard.Intro.Guidance": "歡迎!讓我們設定 LiveSync。您是 LiveSync 新用戶,還是已經設定遠端伺服器?", + "Ui.SetupWizard.Intro.NewOption": "我是 LiveSync 新用戶", + "Ui.SetupWizard.Intro.NewOptionDesc": "首次設定 LiveSync", + "Ui.SetupWizard.Intro.ProceedExisting": "連線到現有伺服器", + "Ui.SetupWizard.Intro.ProceedNew": "新建設定", + "Ui.SetupWizard.Intro.Question": "您的情況是?", + "Ui.SetupWizard.Intro.Title": "設定精靈", + "Ui.SetupWizard.OutroAskUserMode.CompatibleOption": "使用相容模式", + "Ui.SetupWizard.OutroAskUserMode.CompatibleOptionDesc": "如果遠端是使用舊版 LiveSync 設定的,請使用此選項。某些功能可能受限。", + "Ui.SetupWizard.OutroAskUserMode.ExistingOption": "此裝置已有資料", + "Ui.SetupWizard.OutroAskUserMode.ExistingOptionDesc": "將本機檔案與遠端合併。如果此保險庫中已有筆記,請使用此選項。", + "Ui.SetupWizard.OutroAskUserMode.Guidance": "選擇此裝置在 LiveSync 中的使用方式。這會影響初始同步行為。", + "Ui.SetupWizard.OutroAskUserMode.NewOption": "設定為新裝置", + "Ui.SetupWizard.OutroAskUserMode.NewOptionDesc": "從新的保險庫開始。設定後將取得遠端檔案。", + "Ui.SetupWizard.OutroAskUserMode.ProceedApplySettings": "套用設定", + "Ui.SetupWizard.OutroAskUserMode.ProceedNext": "繼續", + "Ui.SetupWizard.OutroAskUserMode.Question": "選擇此裝置的模式:", + "Ui.SetupWizard.OutroAskUserMode.Title": "您將如何使用此裝置?", + "Ui.SetupWizard.OutroExisting.Guidance": "設定已完成。重新啟動後將取得遠端資料。點擊下方按鈕重新啟動並開始同步。", + "Ui.SetupWizard.OutroExisting.Proceed": "重新啟動並取得資料", + "Ui.SetupWizard.OutroExisting.Question": "請點擊下方按鈕重新啟動並進入資料取得確認。", + "Ui.SetupWizard.OutroExisting.Title": "設定完成:準備取得同步資料", + "Ui.SetupWizard.OutroNewUser.GuidancePrimary": "您的 LiveSync 設定已完成。關閉此對話方塊後將套用設定。", + "Ui.SetupWizard.OutroNewUser.GuidanceWarning": "如果遠端保險庫中有資料,這將覆蓋現有檔案。請確保您使用的是空保險庫或已做好備份。", + "Ui.SetupWizard.OutroNewUser.Important": "重要提示:", + "Ui.SetupWizard.OutroNewUser.Proceed": "套用並重新啟動", + "Ui.SetupWizard.OutroNewUser.Question": "準備好套用設定了嗎?", + "Ui.SetupWizard.OutroNewUser.Title": "設定完成", + "Ui.SetupWizard.SelectExisting.Guidance": "選擇如何連線到您現有的 LiveSync 伺服器。", + "Ui.SetupWizard.SelectExisting.ManualOption": "手動設定", + "Ui.SetupWizard.SelectExisting.ManualOptionDesc": "自行輸入伺服器詳細資料和憑證", + "Ui.SetupWizard.SelectExisting.ProceedManual": "手動設定", + "Ui.SetupWizard.SelectExisting.ProceedQr": "掃描 QR 碼", + "Ui.SetupWizard.SelectExisting.ProceedSetupUri": "使用設定 URI", + "Ui.SetupWizard.SelectExisting.QrOption": "掃描 QR 碼", + "Ui.SetupWizard.SelectExisting.QrOptionDesc": "從已設定的裝置掃描 QR 碼", + "Ui.SetupWizard.SelectExisting.Question": "選擇連線方式:", + "Ui.SetupWizard.SelectExisting.SetupUriOption": "使用設定 URI", + "Ui.SetupWizard.SelectExisting.SetupUriOptionDesc": "從伺服器提供的設定 URI 匯入設定", + "Ui.SetupWizard.SelectExisting.Title": "連線到現有伺服器", + "Ui.SetupWizard.SelectNew.Guidance": "選擇您想如何設定新的 LiveSync 連線。", + "Ui.SetupWizard.SelectNew.ManualOption": "手動設定", + "Ui.SetupWizard.SelectNew.ManualOptionDesc": "自行輸入伺服器詳細資料和憑證", + "Ui.SetupWizard.SelectNew.ProceedManual": "手動設定", + "Ui.SetupWizard.SelectNew.ProceedSetupUri": "使用設定 URI", + "Ui.SetupWizard.SelectNew.Question": "選擇設定方式:", + "Ui.SetupWizard.SelectNew.SetupUriOption": "使用設定 URI", + "Ui.SetupWizard.SelectNew.SetupUriOptionDesc": "從伺服器提供的設定 URI 匯入設定", + "Ui.SetupWizard.SelectNew.Title": "設定新連線", + "Ui.SetupWizard.SetupRemote.BucketOption": "LiveSync 儲存桶", + "Ui.SetupWizard.SetupRemote.BucketOptionDesc": "使用 LiveSync 配套服務內建的儲存桶伺服器", + "Ui.SetupWizard.SetupRemote.CouchDbOption": "CouchDB", + "Ui.SetupWizard.SetupRemote.CouchDbOptionDesc": "使用您自己的 CouchDB 執行個體,完全控制同步伺服器", + "Ui.SetupWizard.SetupRemote.Guidance": "選擇您要使用的遠端伺服器類型:", + "Ui.SetupWizard.SetupRemote.P2POption": "點對點(實驗性)", + "Ui.SetupWizard.SetupRemote.P2POptionDesc": "無需中央伺服器,直接在裝置之間同步", + "Ui.SetupWizard.SetupRemote.ProceedBucket": "設定儲存桶", + "Ui.SetupWizard.SetupRemote.ProceedCouchDb": "設定 CouchDB", + "Ui.SetupWizard.SetupRemote.ProceedP2P": "設定 P2P", + "Ui.SetupWizard.SetupRemote.Title": "設定遠端伺服器" +} diff --git a/src/common/messagesJson/zh.json b/src/common/messagesJson/zh.json index 97c3b507..5c30d6d5 100644 --- a/src/common/messagesJson/zh.json +++ b/src/common/messagesJson/zh.json @@ -563,6 +563,71 @@ "TweakMismatchResolve.Title": "Configuration Mismatch Detected", "TweakMismatchResolve.Title.TweakResolving": "Configuration Mismatch Detected", "TweakMismatchResolve.Title.UseRemoteConfig": "Use Remote Configuration", + "Ui.SetupWizard.Common.Back": "返回", + "Ui.SetupWizard.Common.Cancel": "取消", + "Ui.SetupWizard.Common.ProceedSelectOption": "请选择一个选项", + "Ui.SetupWizard.Intro.ExistingOption": "我已经配置了服务器", + "Ui.SetupWizard.Intro.ExistingOptionDesc": "连接到现有的 LiveSync 服务器", + "Ui.SetupWizard.Intro.Guidance": "欢迎!让我们设置 LiveSync。您是 LiveSync 新用户,还是已经配置了远程服务器?", + "Ui.SetupWizard.Intro.NewOption": "我是 LiveSync 新用户", + "Ui.SetupWizard.Intro.NewOptionDesc": "首次设置 LiveSync", + "Ui.SetupWizard.Intro.ProceedExisting": "连接到现有服务器", + "Ui.SetupWizard.Intro.ProceedNew": "新建设置", + "Ui.SetupWizard.Intro.Question": "您的情况是?", + "Ui.SetupWizard.Intro.Title": "设置向导", + "Ui.SetupWizard.OutroAskUserMode.CompatibleOption": "使用兼容模式", + "Ui.SetupWizard.OutroAskUserMode.CompatibleOptionDesc": "如果远程是使用旧版 LiveSync 设置的,请使用此选项。某些功能可能受限。", + "Ui.SetupWizard.OutroAskUserMode.ExistingOption": "此设备已有数据", + "Ui.SetupWizard.OutroAskUserMode.ExistingOptionDesc": "将本地文件与远程合并。如果此保险库中已有笔记,请使用此选项。", + "Ui.SetupWizard.OutroAskUserMode.Guidance": "选择此设备在 LiveSync 中的使用方式。这会影响初始同步行为。", + "Ui.SetupWizard.OutroAskUserMode.NewOption": "设置为新设备", + "Ui.SetupWizard.OutroAskUserMode.NewOptionDesc": "从新的保险库开始。设置后将获取远程文件。", + "Ui.SetupWizard.OutroAskUserMode.ProceedApplySettings": "应用设置", + "Ui.SetupWizard.OutroAskUserMode.ProceedNext": "继续", + "Ui.SetupWizard.OutroAskUserMode.Question": "选择此设备的模式:", + "Ui.SetupWizard.OutroAskUserMode.Title": "您将如何使用此设备?", + "Ui.SetupWizard.OutroExisting.Guidance": "设置已完成。重启后将获取远程数据。点击下方按钮重启并开始同步。", + "Ui.SetupWizard.OutroExisting.Proceed": "重启并获取数据", + "Ui.SetupWizard.OutroExisting.Question": "请点击下方按钮重启并进入数据获取确认。", + "Ui.SetupWizard.OutroExisting.Title": "设置完成:准备获取同步数据", + "Ui.SetupWizard.OutroNewUser.GuidancePrimary": "您的 LiveSync 配置已设置完成。关闭此对话框后将应用设置。", + "Ui.SetupWizard.OutroNewUser.GuidanceWarning": "如果远程保险库中有数据,这将覆盖现有文件。请确保您使用的是空保险库或已做好备份。", + "Ui.SetupWizard.OutroNewUser.Important": "重要提示:", + "Ui.SetupWizard.OutroNewUser.Proceed": "应用并重启", + "Ui.SetupWizard.OutroNewUser.Question": "准备好应用配置了吗?", + "Ui.SetupWizard.OutroNewUser.Title": "设置完成", + "Ui.SetupWizard.SelectExisting.Guidance": "选择如何连接到您现有的 LiveSync 服务器。", + "Ui.SetupWizard.SelectExisting.ManualOption": "手动配置", + "Ui.SetupWizard.SelectExisting.ManualOptionDesc": "自行输入服务器详细信息和凭据", + "Ui.SetupWizard.SelectExisting.ProceedManual": "手动配置", + "Ui.SetupWizard.SelectExisting.ProceedQr": "扫描二维码", + "Ui.SetupWizard.SelectExisting.ProceedSetupUri": "使用设置 URI", + "Ui.SetupWizard.SelectExisting.QrOption": "扫描二维码", + "Ui.SetupWizard.SelectExisting.QrOptionDesc": "从已配置的设备扫描二维码", + "Ui.SetupWizard.SelectExisting.Question": "选择连接方式:", + "Ui.SetupWizard.SelectExisting.SetupUriOption": "使用设置 URI", + "Ui.SetupWizard.SelectExisting.SetupUriOptionDesc": "从服务器提供的设置 URI 导入配置", + "Ui.SetupWizard.SelectExisting.Title": "连接到现有服务器", + "Ui.SetupWizard.SelectNew.Guidance": "选择您想如何配置新的 LiveSync 连接。", + "Ui.SetupWizard.SelectNew.ManualOption": "手动配置", + "Ui.SetupWizard.SelectNew.ManualOptionDesc": "自行输入服务器详细信息和凭据", + "Ui.SetupWizard.SelectNew.ProceedManual": "手动配置", + "Ui.SetupWizard.SelectNew.ProceedSetupUri": "使用设置 URI", + "Ui.SetupWizard.SelectNew.Question": "选择配置方式:", + "Ui.SetupWizard.SelectNew.SetupUriOption": "使用设置 URI", + "Ui.SetupWizard.SelectNew.SetupUriOptionDesc": "从服务器提供的设置 URI 导入配置", + "Ui.SetupWizard.SelectNew.Title": "设置新连接", + "Ui.SetupWizard.SetupRemote.BucketOption": "LiveSync 存储桶", + "Ui.SetupWizard.SetupRemote.BucketOptionDesc": "使用 LiveSync 配套服务内置的存储桶服务器", + "Ui.SetupWizard.SetupRemote.CouchDbOption": "CouchDB", + "Ui.SetupWizard.SetupRemote.CouchDbOptionDesc": "使用您自己的 CouchDB 实例,完全控制同步服务器", + "Ui.SetupWizard.SetupRemote.Guidance": "选择您要使用的远程服务器类型:", + "Ui.SetupWizard.SetupRemote.P2POption": "点对点(实验性)", + "Ui.SetupWizard.SetupRemote.P2POptionDesc": "无需中央服务器,直接在设备之间同步", + "Ui.SetupWizard.SetupRemote.ProceedBucket": "设置存储桶", + "Ui.SetupWizard.SetupRemote.ProceedCouchDb": "设置 CouchDB", + "Ui.SetupWizard.SetupRemote.ProceedP2P": "设置 P2P", + "Ui.SetupWizard.SetupRemote.Title": "设置远程服务器", "Unique name between all synchronized devices. To edit this setting, please disable customization sync once.": "所有同步设备之间的唯一名称。要编辑此设置,请首先禁用自定义同步", "Use Custom HTTP Handler": "使用自定义 HTTP 处理程序", "Use dynamic iteration count": "使用动态迭代次数", diff --git a/src/common/messagesYAML/de.yaml b/src/common/messagesYAML/de.yaml index 0967ef42..83a71542 100644 --- a/src/common/messagesYAML/de.yaml +++ b/src/common/messagesYAML/de.yaml @@ -1 +1,118 @@ -{} +{ + Ui: + { + SetupWizard: + { + Common: + { + Back: Zurück, + Cancel: Abbrechen, + ProceedSelectOption: Bitte wählen Sie eine Option + }, + Intro: + { + Title: Einrichtungsassistent, + Guidance: Willkommen! Lassen Sie uns LiveSync einrichten. Sind Sie neu bei + LiveSync oder haben Sie bereits einen Remote-Server + konfiguriert?, + Question: Was beschreibt Ihre Situation?, + NewOption: Ich bin neu bei LiveSync, + NewOptionDesc: LiveSync zum ersten Mal einrichten, + ExistingOption: Ich habe bereits einen konfigurierten Server, + ExistingOptionDesc: Mit einem bestehenden LiveSync-Server verbinden, + ProceedNew: Neu einrichten, + ProceedExisting: Mit Bestehendem verbinden + }, + OutroNewUser: + { + Title: Einrichtung abgeschlossen, + GuidancePrimary: Ihre LiveSync-Konfiguration wurde eingerichtet. Die + Einstellungen werden beim Schließen dieses Dialogs angewendet., + Important: "Wichtig:", + GuidanceWarning: "Dies überschreibt vorhandene Dateien, wenn der Remote-Tresor + Daten enthält. Stellen Sie sicher, dass Sie einen leeren Tresor + verwenden oder über Backups verfügen.", + Question: "Bereit, die Konfiguration anzuwenden?", + Proceed: Anwenden und neu starten + }, + OutroExisting: + { + Guidance: "Die Einrichtung ist abgeschlossen. Die Remote-Daten werden nach dem + Neustart abgerufen. Klicken Sie auf die Schaltfläche unten, um + neu zu starten und die Synchronisation zu beginnen.", + Title: "Einrichtung abgeschlossen: Vorbereitung zum Abrufen der + Synchronisationsdaten", + Question: "Klicken Sie auf die Schaltfläche unten, um neu zu starten und zur + Bestätigung des Datenabrufs fortzufahren.", + Proceed: Neu starten und Daten abrufen + }, + SetupRemote: + { + Title: Remote-Server einrichten, + Guidance: "Wählen Sie den Typ des Remote-Servers, den Sie verwenden möchten:", + CouchDbOptionDesc: Verwenden Sie Ihre eigene CouchDB-Instanz für die + vollständige Kontrolle über Ihren Sync-Server, + BucketOption: LiveSync-Bucket, + BucketOptionDesc: Verwenden Sie den mitgelieferten Bucket-Server des + LiveSync-Begleitdienstes, + P2POption: Peer-to-peer (Experimentell), + P2POptionDesc: Direkte Synchronisation zwischen Geräten ohne zentralen Server, + ProceedCouchDb: CouchDB einrichten, + ProceedBucket: Bucket einrichten, + ProceedP2P: P2P einrichten, + CouchDbOption: CouchDB + }, + OutroAskUserMode: + { + Title: Wie werden Sie dieses Gerät verwenden?, + Guidance: "Wählen Sie, wie dieses Gerät mit LiveSync verwendet wird. Dies + beeinflusst das anfängliche Synchronisationsverhalten.", + Question: "Wählen Sie den Modus für dieses Gerät:", + NewOption: Als neues Gerät einrichten, + NewOptionDesc: Mit einem neuen Tresor beginnen. Remote-Dateien werden nach der + Einrichtung abgerufen., + ExistingOption: Dieses Gerät hat vorhandene Daten, + ExistingOptionDesc: "Lokale Dateien mit den Remote-Dateien zusammenführen. + Verwenden Sie dies, wenn Sie bereits Notizen in diesem Tresor + haben.", + CompatibleOption: Kompatibilitätsmodus verwenden, + CompatibleOptionDesc: "Verwenden Sie dies, wenn der Remote-Server mit einer + älteren Version von LiveSync eingerichtet wurde. Einige + Funktionen können eingeschränkt sein.", + ProceedNext: Weiter, + ProceedApplySettings: Einstellungen anwenden + }, + SelectNew: + { + Title: Neue Verbindung einrichten, + Guidance: "Wählen Sie, wie Sie Ihre neue LiveSync-Verbindung konfigurieren + möchten.", + Question: "Konfigurationsmethode wählen:", + SetupUriOption: Setup-URI verwenden, + SetupUriOptionDesc: Konfiguration aus einem vom Server bereitgestellten + Setup-URI importieren, + ManualOption: Manuell konfigurieren, + ManualOptionDesc: Serverdetails und Anmeldedaten selbst eingeben, + ProceedSetupUri: Setup-URI verwenden, + ProceedManual: Manuell konfigurieren + }, + SelectExisting: + { + Title: Mit bestehendem Server verbinden, + Guidance: "Wählen Sie, wie Sie sich mit Ihrem bestehenden LiveSync-Server + verbinden möchten.", + Question: "Verbindungsmethode wählen:", + SetupUriOption: Setup-URI verwenden, + SetupUriOptionDesc: Konfiguration aus einem vom Server bereitgestellten + Setup-URI importieren, + QrOption: QR-Code scannen, + QrOptionDesc: QR-Code von einem bereits konfigurierten Gerät scannen, + ManualOption: Manuell konfigurieren, + ManualOptionDesc: Serverdetails und Anmeldedaten selbst eingeben, + ProceedSetupUri: Setup-URI verwenden, + ProceedManual: Manuell konfigurieren, + ProceedQr: QR-Code scannen + } + } + } +} diff --git a/src/common/messagesYAML/en.yaml b/src/common/messagesYAML/en.yaml index b5ec17a3..43c0ff2f 100644 --- a/src/common/messagesYAML/en.yaml +++ b/src/common/messagesYAML/en.yaml @@ -814,8 +814,8 @@ P2P: Note: description: >2- This replicator allows us to synchronise our vault with other devices - using a peer-to-peer connection. We can use this to synchronise our - vault with our other devices without using a cloud service. + using a peer-to-peer connection. We can use this to synchronise our vault + with our other devices without using a cloud service. This replicator is based on Trystero. It also uses a signalling server to establish a connection between devices. The signalling server is used to @@ -833,9 +833,10 @@ P2P: see the connection information of some of our devices. Please be aware of this. Also, be cautious when using the server provided by someone else. important_note: Peer-to-Peer Replicator. - important_note_sub: This feature is still on the bleeding edge. Please be - aware that ensure your data is backed up before using this feature. And, - we would be so happy if you could contribute to the development of this feature. + important_note_sub: This feature is still on the bleeding edge. Please be aware + that ensure your data is backed up before using this feature. And, we + would be so happy if you could contribute to the development of this + feature. Summary: What is this feature? (and some important notes, please read once) NotEnabled: "%{title_p2p_sync} is not enabled. We cannot open a new connection." @@ -1321,3 +1322,192 @@ Warning! This will have a serious impact on performance. And the logs will not b When you save a file in the editor, start a sync automatically: When you save a file in the editor, start a sync automatically Write credentials in the file: Write credentials in the file Write logs into the file: Write logs into the file +Ui: + SetupWizard: + Common: + Back: Back + Cancel: Cancel + ProceedSelectOption: Please select an option + AdvancedSettings: Advanced Settings + ExperimentalSettings: Experimental Settings + ContinueAnyway: Continue anyway + HttpsOnlyMobile: We can use only Secure (HTTPS) connections on Obsidian Mobile. + Intro: + Title: Setup Wizard + Guidance: Welcome! Let's set up LiveSync. Are you new to LiveSync, or do you + already have a remote server configured? + Question: Which describes your situation? + NewOption: I'm new to LiveSync + NewOptionDesc: Set up LiveSync for the first time + ExistingOption: I already have a configured server + ExistingOptionDesc: Connect to an existing LiveSync server + ProceedNew: Set up new + ProceedExisting: Connect to existing + OutroNewUser: + Title: Setup Complete + GuidancePrimary: Your LiveSync configuration has been set up. The settings will + be applied when you close this dialog. + Important: "Important:" + GuidanceWarning: This will overwrite existing files if the remote vault has + data. Make sure you are using an empty vault or have backups. + Question: Ready to apply the configuration? + Proceed: Apply and restart + OutroExisting: + Guidance: Setup is complete. The remote data will be fetched after restarting. + Click the button below to restart and begin synchronization. + Title: "Setup Complete: Preparing to Fetch Synchronisation Data" + Question: Please select the button below to restart and proceed to the data + fetching confirmation. + Proceed: Restart and Fetch Data + SetupRemote: + Title: Setup Remote + Guidance: "Choose the type of remote server you want to use:" + CouchDbOptionDesc: Use your own CouchDB instance for full control over your sync server + BucketOption: LiveSync Bucket + BucketOptionDesc: Use the bundled bucket server included with the LiveSync + companion service + P2POption: Peer-to-peer (Experimental) + P2POptionDesc: Synchronize directly between devices without a central server + ProceedCouchDb: Set up CouchDB + ProceedBucket: Set up Bucket + ProceedP2P: Set up P2P + CouchDbOption: CouchDB + OutroAskUserMode: + Title: How will you use this device? + Guidance: Choose how this device will be used with LiveSync. This affects + initial sync behavior. + Question: "Select the mode for this device:" + NewOption: Set up as a new device + NewOptionDesc: Start fresh with a new vault. Remote files will be fetched after setup. + ExistingOption: This device has existing data + ExistingOptionDesc: Merge local files with the remote. Use this if you already + have notes in this vault. + CompatibleOption: Use compatible mode + CompatibleOptionDesc: Use this if the remote was set up with an older version of + LiveSync. Some features may be limited. + ProceedNext: Continue + ProceedApplySettings: Apply settings + SelectNew: + Title: Set Up New Connection + Guidance: Choose how you want to configure your new LiveSync connection. + Question: "Select configuration method:" + SetupUriOption: Use Setup URI + SetupUriOptionDesc: Import configuration from a setup URI provided by your server + ManualOption: Configure manually + ManualOptionDesc: Enter server details and credentials yourself + ProceedSetupUri: Use Setup URI + ProceedManual: Configure manually + SelectExisting: + Title: Connect to Existing Server + Guidance: Choose how to connect to your existing LiveSync server. + Question: "Select connection method:" + SetupUriOption: Use Setup URI + SetupUriOptionDesc: Import configuration from a setup URI provided by your server + QrOption: Scan QR code + QrOptionDesc: Scan a QR code from an already configured device + ManualOption: Configure manually + ManualOptionDesc: Enter server details and credentials yourself + ProceedSetupUri: Use Setup URI + ProceedManual: Configure manually + ProceedQr: Scan QR code + Fetch: + Title: Reset Synchronisation on This Device + Guidance: This will rebuild the local database on this device using the most recent data from the server. This action is designed to resolve synchronisation inconsistencies and restore correct functionality. + ImportantTitle: Important Notice + ImportantBody: If you have unsynchronised changes in your Vault on this device, they will likely diverge from the server's versions after the reset. This may result in a large number of file conflicts. + ConflictNote: Furthermore, if conflicts are already present in the server data, they will be synchronised to this device as they are, and you will need to resolve them locally. + VaultQuestion: To minimise the creation of new conflicts, please select the option that best describes the current state of your Vault. The application will then check your files in the most appropriate way based on your selection. + VaultIdentical: The files in this Vault are almost identical to the server's. + VaultIdenticalDesc: "(e.g., immediately after restoring on another computer, or having recovered from a backup)" + VaultIndependent: This Vault is empty, or contains only new files that are not on the server. + VaultIndependentDesc: "(e.g., setting up for the first time on a new smartphone, starting from a clean slate)" + VaultUnbalanced: There may be differences between the files in this Vault and the server. + VaultUnbalancedDesc: "(e.g., after editing many files whilst offline)" + UnbalancedNote: In this scenario, Self-hosted LiveSync will recreate metadata for every file and deliberately generate conflicts. Where the file content is identical, these conflicts will be resolved automatically. + BackupQuestion: Have you created a backup before proceeding? + BackupRecommendation: We recommend that you copy your Vault folder to a safe location. This will provide a safeguard in case a large number of conflicts arise, or if you accidentally synchronise with an incorrect destination. + BackupDone: I have created a backup of my Vault. + BackupSkipped: I understand the risks and will proceed without a backup. + BackupUnable: I am unable to create a backup of my Vault. + BackupUnableWarning: It is strongly advised to create a backup before proceeding. Continuing without a backup may lead to data loss. + BackupUnableNote: If you understand the risks and still wish to proceed, select so. + PreventFetchConfig: Prevent fetching configuration from server + Proceed: Reset and Resume Synchronisation + Rebuild: + Title: "Final Confirmation: Overwrite Server Data with This Device's Files" + Guidance: This procedure will first delete all existing synchronisation data from the server. Following this, the server data will be completely rebuilt, using the current state of your Vault on this device as the single, authoritative master copy. + WhenToUse: You should perform this operation only in exceptional circumstances, such as when the server data is completely corrupted, when changes on all other devices are no longer needed, or when the database size has become unusually large in comparison to the Vault size. + ConfirmTitle: Please Confirm the Following + ConfirmDataLoss: I understand that all changes made on other smartphones or computers possibly could be lost. + ResolveOnOtherDevices: There is a way to resolve this on other devices. + BackupBeforeProceeding: Of course, we can back up the data before proceeding. + ConfirmSyncDisabled: I understand that other devices will no longer be able to synchronise, and will need to be reset the synchronisation information. + ResetNotifyOtherDevices: by resetting the remote, you will be informed on other devices. + ConfirmIrreversible: I understand that this action is irreversible once performed. + BackupQuestion: Have you created a backup before proceeding? + BackupWarning: This is an extremely powerful operation. We strongly recommend that you copy your Vault folder to a safe location. + BackupDone: I have created a backup of my Vault. + BackupSkipped: I understand the risks and will proceed without a backup. + BackupUnable: I am unable to create a backup of my Vaults. + BackupUnableAdvice: You should create a new synchronisation destination and rebuild your data there. After that, synchronise to a brand new vault on each other device with the new remote one by one. + PreventFetchConfig: Prevent fetching configuration from server + Proceed: I Understand, Overwrite Server + Bucket: + Title: S3/MinIO/R2 Configuration + CouchDB: + Title: CouchDB Configuration + P2P: + Title: P2P Configuration + UseDefaultRelay: Use vrtmrz's relay + CouchDBCheck: + DetectAndFix: Detect and Fix CouchDB Issues + Fix: Fix + ScanQRCode: + Title: Scan QR Code + Guidance: Please follow the steps below to import settings from your existing device. + Instruction: Please follow the steps below to import settings from your existing device. + Step1: On this device, please keep this Vault open. + Step2: On the source device, open Obsidian. + Step3: On the source device, from the command palette, run the 'Show settings as a QR code' command. + Step4: On this device, switch to the camera app or use a QR code scanner to scan the displayed QR code. + ButtonClose: Close this dialog + UseSetupURI: + Title: Enter Setup URI + Guidance: "Please enter the Setup URI that was generated during server installation or on another device, along with the vault passphrase." + Label: Setup-URI + LabelPassphrase: Passphrase + PlaceholderPassphrase: Enter your passphrase + ValidMessage: The Setup-URI is valid and ready to use. + InvalidInfo: The Setup-URI does not appear to be valid. Please check that you have copied it correctly. + ErrorPassphraseRequired: Passphrase is required. + ErrorFailedToParse: Failed to parse Setup-URI. + ButtonProceed: Test Settings and Continue + ButtonCancel: Cancel + RemoteE2EE: + Title: End-to-End Encryption + Guidance: Please configure your end-to-end encryption settings. + LabelEncrypt: End-to-End Encryption + LabelEncryptionAlgorithm: Encryption Algorithm + LabelObfuscateProperties: Obfuscate Properties + StronglyRecommendedTitle: Strongly Recommended + StronglyRecommendedLine1: Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server. + StronglyRecommendedLine2: Also, please note that if you are using Peer-to-Peer synchronization, this configuration will be used when you switch to other methods and connect to a remote server in the future. + StronglyRecommended: Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server. This means that even if someone gains access to the server, they won't be able to read your data without the passphrase. + MultiDestinationWarning: This setting must be the same even when connecting to multiple synchronisation destinations. + WarningSameSetting: This setting must be the same even when connecting to multiple synchronisation destinations. + ObfuscatePropertiesDesc: Obfuscating properties adds an additional layer of security by making it harder to identify the structure and names of your files and folders on the remote server. + AdvancedTitle: Advanced + DefaultAlgorithmDesc: In most cases, you should stick with the default algorithm. + AlgorithmWarning: Changing the encryption algorithm will prevent access to any data previously encrypted with a different algorithm. + PassphraseValidationLine1: Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences. + ManualWarning: Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences. This is a security measure designed to protect your data. + PassphraseValidationLine2: Therefore, we ask that you exercise extreme caution when configuring server information manually. + PlaceholderPassphrase: Enter your passphrase + ButtonProceed: Proceed + ButtonCancel: Cancel + Bucket: + Guidance: Please enter the details required to connect to your S3/MinIO/R2 compatible object storage service. + CouchDB: + Guidance: Please enter the CouchDB server information below. + P2P: + Guidance: Please enter the Peer-to-Peer Synchronisation information below. diff --git a/src/common/messagesYAML/es.yaml b/src/common/messagesYAML/es.yaml index d3c92247..6e190b13 100644 --- a/src/common/messagesYAML/es.yaml +++ b/src/common/messagesYAML/es.yaml @@ -711,3 +711,187 @@ Warning! This will have a serious impact on performance. And the logs will not b When you save a file in the editor, start a sync automatically: Iniciar sincronización automática al guardar en editor Write credentials in the file: Escribir credenciales en archivo Write logs into the file: Escribir logs en archivo +"": + Check: Verificar + Doctor: + Button: + Yes: Sí + If enabled, the ⛔ icon will be shown inside the status instead of the file warnings banner: + " No details will be shown": + "": Si se activa, se mostrará el icono ⛔ en el estado en lugar del banner de + advertencia de archivos. No se mostrarán detalles. + lang_def: Predeterminado + moduleMigration: + fix0256: + buttons: + fix: Corregir + obsidianLiveSyncSettingTab: + optionCouchDB: Servidor CouchDB + optionLiveSync: Sincronización LiveSync + optionMinioS3R2: MinIO, S3, R2 + titleCouchDB: Servidor CouchDB + titleMinioS3R2: MinIO, S3, R2 + Replicator: + Dialogue: + Locked: + Action: + Fetch: Restablecer sincronización en este dispositivo + Setting: + GenerateKeyPair: + Desc: >- + Hemos generado un par de claves. + + + Nota: Este par de claves no volverá a mostrarse. Guárdalo en un lugar + seguro. Si lo pierdes, tendrás que generar uno nuevo. + + Nota 2: La clave pública está en formato spki y la clave privada en + formato pkcs8. Para mayor comodidad, los saltos de línea de la clave + pública se convierten en `\n`. + + Nota 3: La clave pública debe configurarse en la base de datos remota y + la clave privada en los dispositivos locales. + + + >[!SOLO PARA TUS OJOS]- + + >
+ + > + + > ### Clave pública + + > ``` + + ${public_key} + + > ``` + + > + + > ### Clave privada + + > ``` + + ${private_key} + + > ``` + + > + + >
+ + + >[!Ambas para copiar]- + + > + + >
+ + > + + > ``` + + ${public_key} + + ${private_key} + + > ``` + + > + + >
+ Title: ¡Se ha generado un nuevo par de claves! + Show status icon instead of file warnings banner: Mostrar icono de estado en lugar del banner de advertencia de archivos + TweakMismatchResolve: + Action: + Dismiss: Descartar +Ui: + SetupWizard: + Common: + Back: Volver + Cancel: Cancelar + ProceedSelectOption: Por favor, seleccione una opción + Intro: + Title: Asistente de configuración + Guidance: ¡Bienvenido! Vamos a configurar LiveSync. ¿Es usted nuevo en LiveSync + o ya tiene un servidor remoto configurado? + Question: ¿Cuál describe su situación? + NewOption: Soy nuevo en LiveSync + NewOptionDesc: Configurar LiveSync por primera vez + ExistingOption: Ya tengo un servidor configurado + ExistingOptionDesc: Conectar a un servidor LiveSync existente + ProceedNew: Configurar nuevo + ProceedExisting: Conectar a existente + OutroNewUser: + Title: Configuración completada + GuidancePrimary: Su configuración de LiveSync se ha completado. Los ajustes se + aplicarán al cerrar este diálogo. + Important: "Importante:" + GuidanceWarning: Esto sobrescribirá los archivos existentes si la bóveda remota + tiene datos. Asegúrese de usar una bóveda vacía o tener copias de + seguridad. + Question: ¿Listo para aplicar la configuración? + Proceed: Aplicar y reiniciar + OutroExisting: + Guidance: La configuración se ha completado. Los datos remotos se obtendrán + después de reiniciar. Haga clic en el botón de abajo para reiniciar y + comenzar la sincronización. + Title: "Configuración completada: Preparando para obtener datos de + sincronización" + Question: Seleccione el botón de abajo para reiniciar y proceder a la + confirmación de obtención de datos. + Proceed: Reiniciar y obtener datos + SetupRemote: + Title: Configurar servidor remoto + Guidance: "Elija el tipo de servidor remoto que desea usar:" + CouchDbOptionDesc: Use su propia instancia de CouchDB para control total del + servidor de sincronización + BucketOption: Bucket de LiveSync + BucketOptionDesc: Use el servidor bucket incluido con el servicio complementario + de LiveSync + P2POption: Peer-to-peer (Experimental) + P2POptionDesc: Sincronice directamente entre dispositivos sin un servidor central + ProceedCouchDb: Configurar CouchDB + ProceedBucket: Configurar Bucket + ProceedP2P: Configurar P2P + CouchDbOption: CouchDB + OutroAskUserMode: + Title: ¿Cómo usará este dispositivo? + Guidance: Elija cómo se usará este dispositivo con LiveSync. Esto afecta el + comportamiento de sincronización inicial. + Question: "Seleccione el modo para este dispositivo:" + NewOption: Configurar como dispositivo nuevo + NewOptionDesc: Comenzar con una bóveda nueva. Los archivos remotos se obtendrán + después de la configuración. + ExistingOption: Este dispositivo tiene datos existentes + ExistingOptionDesc: Fusionar archivos locales con los remotos. Use esto si ya + tiene notas en esta bóveda. + CompatibleOption: Usar modo compatible + CompatibleOptionDesc: Use esto si el remoto se configuró con una versión + anterior de LiveSync. Algunas funciones pueden estar limitadas. + ProceedNext: Continuar + ProceedApplySettings: Aplicar ajustes + SelectNew: + Title: Configurar nueva conexión + Guidance: Elija cómo desea configurar su nueva conexión LiveSync. + Question: "Seleccione método de configuración:" + SetupUriOption: Usar URI de configuración + SetupUriOptionDesc: Importar configuración desde un URI proporcionado por su servidor + ManualOption: Configurar manualmente + ManualOptionDesc: Ingrese los detalles del servidor y las credenciales usted mismo + ProceedSetupUri: Usar URI de configuración + ProceedManual: Configurar manualmente + SelectExisting: + Title: Conectar a servidor existente + Guidance: Elija cómo conectarse a su servidor LiveSync existente. + Question: "Seleccione método de conexión:" + SetupUriOption: Usar URI de configuración + SetupUriOptionDesc: Importar configuración desde un URI proporcionado por su servidor + QrOption: Escanear código QR + QrOptionDesc: Escanear un código QR desde un dispositivo ya configurado + ManualOption: Configurar manualmente + ManualOptionDesc: Ingrese los detalles del servidor y las credenciales usted mismo + ProceedSetupUri: Usar URI de configuración + ProceedManual: Configurar manualmente + ProceedQr: Escanear código QR diff --git a/src/common/messagesYAML/ja.yaml b/src/common/messagesYAML/ja.yaml index d88cde67..6a41ae20 100644 --- a/src/common/messagesYAML/ja.yaml +++ b/src/common/messagesYAML/ja.yaml @@ -951,3 +951,108 @@ Warning! This will have a serious impact on performance. And the logs will not b When you save a file in the editor, start a sync automatically: エディタでファイルを保存すると、自動的に同期を開始します Write credentials in the file: 認証情報のファイル内保存 Write logs into the file: ファイルにログを記録 +"": + Analyse database usage: データベース使用状況を分析 + Analyse database usage and generate a TSV report for diagnosis yourself: + " You can paste the generated report with any spreadsheet you like": + "": データベース使用状況を分析し、自分で診断できるよう TSV レポートを生成します。生成したレポートは任意のスプレッドシートに貼り付けて確認できます。 + Check: 確認 + Copy Report to clipboard: レポートをクリップボードにコピー + If enabled, the ⛔ icon will be shown inside the status instead of the file warnings banner: + " No details will be shown": + "": 有効にすると、ファイル警告バナーの代わりにステータス内へ ⛔ アイコンのみを表示します。詳細は表示されません。 + lang_def: デフォルト + Minimum interval for syncing: 同期間隔の最小値 + obsidianLiveSyncSettingTab: + optionCouchDB: CouchDB サーバー + optionLiveSync: LiveSync 同期 + optionMinioS3R2: MinIO、S3、R2 + titleCouchDB: CouchDB サーバー + titleMinioS3R2: MinIO、S3、R2 + Prepare the 'report' to create an issue: Issue 作成用の「レポート」を準備 + Rerun Onboarding Wizard: オンボーディングウィザードを再実行 + Rerun the onboarding wizard to set up Self-hosted LiveSync again: + "": オンボーディングウィザードを再実行して、Self-hosted LiveSync をもう一度設定します。 + Rerun Wizard: ウィザードを再実行 + Reset notification threshold and check the remote database usage: 通知しきい値をリセットしてリモートデータベース使用量を確認 + Reset the remote storage size threshold and check the remote storage size again: + "": リモートストレージ容量のしきい値をリセットし、リモートストレージ容量を再確認します。 + Run Doctor: 診断を実行 + Show status icon instead of file warnings banner: ファイル警告バナーの代わりにステータスアイコンを表示 + The minimum interval for automatic synchronisation on event: + "": イベント発生時の自動同期における最小間隔です。 +Ui: + SetupWizard: + Common: + Back: 戻る + Cancel: キャンセル + ProceedSelectOption: オプションを選択してください + Intro: + Title: セットアップウィザード + Guidance: ようこそ!LiveSync をセットアップしましょう。LiveSync の新規ユーザーですか、それともリモートサーバーはすでに設定済みですか? + Question: 当てはまるのはどれですか? + NewOption: LiveSync の新規ユーザーです + NewOptionDesc: LiveSync を初めてセットアップする + ExistingOption: サーバーはすでに設定済みです + ExistingOptionDesc: 既存の LiveSync サーバーに接続する + ProceedNew: 新規セットアップ + ProceedExisting: 既存サーバーに接続 + OutroNewUser: + Title: セットアップ完了 + GuidancePrimary: LiveSync の設定が完了しました。このダイアログを閉じると設定が適用されます。 + Important: 重要: + GuidanceWarning: リモートボールトにデータがある場合、既存のファイルが上書きされます。空のボールトを使用しているか、バックアップがあることを確認してください。 + Question: 設定を適用する準備はできましたか? + Proceed: 適用して再起動 + OutroExisting: + Guidance: セットアップが完了しました。再起動後にリモートデータが取得されます。下のボタンをクリックして再起動し、同期を開始してください。 + Title: セットアップ完了:同期データの取得準備中 + Question: 下のボタンをクリックして再起動し、データ取得の確認に進んでください。 + Proceed: 再起動してデータを取得 + SetupRemote: + Title: リモートサーバーのセットアップ + Guidance: 使用するリモートサーバーの種類を選択してください: + CouchDbOptionDesc: ご自身の CouchDB インスタンスを使用して、同期サーバーを完全に制御 + BucketOption: LiveSync バケット + BucketOptionDesc: LiveSync コンパニオンサービスに同梱されているバケットサーバーを使用 + P2POption: ピアツーピア(実験的) + P2POptionDesc: 中央サーバーなしでデバイス間を直接同期 + ProceedCouchDb: CouchDB をセットアップ + ProceedBucket: バケットをセットアップ + ProceedP2P: P2P をセットアップ + CouchDbOption: CouchDB + OutroAskUserMode: + Title: このデバイスをどのように使用しますか? + Guidance: このデバイスの LiveSync での使用方法を選択してください。初期同期動作に影響します。 + Question: このデバイスのモードを選択: + NewOption: 新しいデバイスとしてセットアップ + NewOptionDesc: 新しいボールトで開始します。セットアップ後にリモートファイルが取得されます。 + ExistingOption: このデバイスには既存データがあります + ExistingOptionDesc: ローカルファイルをリモートとマージします。このボールトにすでにメモがある場合はこちらを選択してください。 + CompatibleOption: 互換モードを使用 + CompatibleOptionDesc: リモートが旧バージョンの LiveSync でセットアップされている場合はこちらを選択してください。一部の機能が制限される場合があります。 + ProceedNext: 続行 + ProceedApplySettings: 設定を適用 + SelectNew: + Title: 新しい接続をセットアップ + Guidance: 新しい LiveSync 接続の設定方法を選択してください。 + Question: 設定方法を選択: + SetupUriOption: セットアップ URI を使用 + SetupUriOptionDesc: サーバーから提供されるセットアップ URI から設定をインポート + ManualOption: 手動で設定 + ManualOptionDesc: サーバーの詳細と認証情報を自分で入力 + ProceedSetupUri: セットアップ URI を使用 + ProceedManual: 手動で設定 + SelectExisting: + Title: 既存サーバーに接続 + Guidance: 既存の LiveSync サーバーへの接続方法を選択してください。 + Question: 接続方法を選択: + SetupUriOption: セットアップ URI を使用 + SetupUriOptionDesc: サーバーから提供されるセットアップ URI から設定をインポート + QrOption: QR コードをスキャン + QrOptionDesc: 設定済みのデバイスから QR コードをスキャン + ManualOption: 手動で設定 + ManualOptionDesc: サーバーの詳細と認証情報を自分で入力 + ProceedSetupUri: セットアップ URI を使用 + ProceedManual: 手動で設定 + ProceedQr: QR コードをスキャン diff --git a/src/common/messagesYAML/ko.yaml b/src/common/messagesYAML/ko.yaml index 30b083ab..98b5902a 100644 --- a/src/common/messagesYAML/ko.yaml +++ b/src/common/messagesYAML/ko.yaml @@ -912,3 +912,118 @@ Warning! This will have a serious impact on performance. And the logs will not b When you save a file in the editor, start a sync automatically: 편집기에서 파일을 저장할 때 자동으로 동기화를 시작합니다 Write credentials in the file: 파일에 자격 증명 저장 Write logs into the file: 파일에 로그 기록 +"": + Analyse database usage: 데이터베이스 사용량 분석 + Analyse database usage and generate a TSV report for diagnosis yourself: + " You can paste the generated report with any spreadsheet you like": + "": 데이터베이스 사용량을 분석하고 직접 진단할 수 있도록 TSV 보고서를 생성합니다. 생성된 보고서는 원하는 스프레드시트에 붙여 넣어 확인할 + 수 있습니다. + Check: 확인 + Copy Report to clipboard: 보고서를 클립보드에 복사 + If enabled, the ⛔ icon will be shown inside the status instead of the file warnings banner: + " No details will be shown": + "": 활성화하면 파일 경고 배너 대신 상태 영역에 ⛔ 아이콘만 표시됩니다. 자세한 내용은 표시되지 않습니다. + lang_def: 기본값 + Minimum interval for syncing: 동기화 최소 간격 + moduleMigration: + fix0256: + buttons: + fix: 수정 + obsidianLiveSyncSettingTab: + optionCouchDB: CouchDB 서버 + optionLiveSync: LiveSync 동기화 + optionMinioS3R2: MinIO, S3, R2 + titleCouchDB: CouchDB 서버 + titleMinioS3R2: MinIO, S3, R2 + Prepare the 'report' to create an issue: 이슈 생성을 위한 '보고서' 준비 + Rerun Onboarding Wizard: 온보딩 마법사 다시 실행 + Rerun the onboarding wizard to set up Self-hosted LiveSync again: + "": 온보딩 마법사를 다시 실행하여 Self-hosted LiveSync를 다시 설정합니다. + Rerun Wizard: 마법사 다시 실행 + Reset notification threshold and check the remote database usage: 알림 임계값을 초기화하고 원격 데이터베이스 사용량 확인 + Reset the remote storage size threshold and check the remote storage size again: + "": 원격 저장소 크기 임계값을 초기화하고 원격 저장소 크기를 다시 확인합니다. + Run Doctor: 진단 실행 + Setting: + TroubleShooting: + ScanBrokenFiles: + _value: 손상된 파일 검사 + Desc: 데이터베이스에 올바르게 저장되지 않은 파일을 검사합니다. + Show status icon instead of file warnings banner: 파일 경고 배너 대신 상태 아이콘 표시 + The minimum interval for automatic synchronisation on event: + "": 이벤트 발생 시 자동 동기화의 최소 간격입니다. +Ui: + SetupWizard: + Common: + Back: 뒤로 + Cancel: 취소 + ProceedSelectOption: 옵션을 선택해 주세요 + Intro: + Title: 설정 마법사 + Guidance: 환영합니다! LiveSync를 설정하겠습니다. LiveSync를 처음 사용하시나요, 아니면 이미 원격 서버를 설정하셨나요? + Question: 어떤 상황에 해당하시나요? + NewOption: LiveSync를 처음 사용합니다 + NewOptionDesc: LiveSync를 처음으로 설정하기 + ExistingOption: 이미 서버를 설정했습니다 + ExistingOptionDesc: 기존 LiveSync 서버에 연결하기 + ProceedNew: 새로 설정 + ProceedExisting: 기존 서버에 연결 + OutroNewUser: + Title: 설정 완료 + GuidancePrimary: LiveSync 구성이 완료되었습니다. 이 대화 상자를 닫으면 설정이 적용됩니다. + Important: "중요:" + GuidanceWarning: 원격 볼트에 데이터가 있으면 기존 파일이 덮어쓰여집니다. 빈 볼트를 사용하거나 백업이 있는지 확인해 주세요. + Question: 구성을 적용할 준비가 되셨나요? + Proceed: 적용하고 재시작 + OutroExisting: + Guidance: 설정이 완료되었습니다. 재시작 후 원격 데이터를 가져옵니다. 아래 버튼을 클릭하여 재시작하고 동기화를 시작하세요. + Title: "설정 완료: 동기화 데이터 가져오기 준비 중" + Question: 아래 버튼을 클릭하여 재시작하고 데이터 가져오기 확인으로 진행하세요. + Proceed: 재시작하고 데이터 가져오기 + SetupRemote: + Title: 원격 서버 설정 + Guidance: "사용할 원격 서버 유형을 선택해 주세요:" + CouchDbOptionDesc: 자체 CouchDB 인스턴스를 사용하여 동기화 서버를 완전히 제어 + BucketOption: LiveSync 버킷 + BucketOptionDesc: LiveSync 컴패니언 서비스에 포함된 버킷 서버 사용 + P2POption: 피어 투 피어 (실험적) + P2POptionDesc: 중앙 서버 없이 장치 간 직접 동기화 + ProceedCouchDb: CouchDB 설정 + ProceedBucket: 버킷 설정 + ProceedP2P: P2P 설정 + CouchDbOption: CouchDB + OutroAskUserMode: + Title: 이 장치를 어떻게 사용하시겠습니까? + Guidance: 이 장치의 LiveSync 사용 방법을 선택해 주세요. 초기 동기화 동작에 영향을 줍니다. + Question: "이 장치의 모드를 선택하세요:" + NewOption: 새 장치로 설정 + NewOptionDesc: 새 볼트로 시작합니다. 설정 후 원격 파일을 가져옵니다. + ExistingOption: 이 장치에 기존 데이터가 있습니다 + ExistingOptionDesc: 로컬 파일을 원격과 병합합니다. 이 볼트에 이미 메모가 있는 경우 이 옵션을 사용하세요. + CompatibleOption: 호환 모드 사용 + CompatibleOptionDesc: 원격이 이전 버전의 LiveSync로 설정된 경우 이 옵션을 사용하세요. 일부 기능이 제한될 수 있습니다. + ProceedNext: 계속 + ProceedApplySettings: 설정 적용 + SelectNew: + Title: 새 연결 설정 + Guidance: 새 LiveSync 연결을 구성하는 방법을 선택해 주세요. + Question: "구성 방법 선택:" + SetupUriOption: 설정 URI 사용 + SetupUriOptionDesc: 서버에서 제공하는 설정 URI에서 구성 가져오기 + ManualOption: 수동으로 설정 + ManualOptionDesc: 서버 세부 정보와 자격 증명을 직접 입력 + ProceedSetupUri: 설정 URI 사용 + ProceedManual: 수동으로 설정 + SelectExisting: + Title: 기존 서버에 연결 + Guidance: 기존 LiveSync 서버에 연결하는 방법을 선택해 주세요. + Question: "연결 방법 선택:" + SetupUriOption: 설정 URI 사용 + SetupUriOptionDesc: 서버에서 제공하는 설정 URI에서 구성 가져오기 + QrOption: QR 코드 스캔 + QrOptionDesc: 이미 구성된 장치에서 QR 코드 스캔 + ManualOption: 수동으로 설정 + ManualOptionDesc: 서버 세부 정보와 자격 증명을 직접 입력 + ProceedSetupUri: 설정 URI 사용 + ProceedManual: 수동으로 설정 + ProceedQr: QR 코드 스캔 diff --git a/src/common/messagesYAML/ru.yaml b/src/common/messagesYAML/ru.yaml index 42065d71..3484d4f1 100644 --- a/src/common/messagesYAML/ru.yaml +++ b/src/common/messagesYAML/ru.yaml @@ -809,3 +809,115 @@ Warning! This will have a serious impact on performance. And the logs will not b When you save a file in the editor, start a sync automatically: Когда вы сохраняете файл в редакторе, автоматически запускать синхронизацию Write credentials in the file: Записывать учётные данные в файл Write logs into the file: Записывать логи в файл +"": + Analyse database usage and generate a TSV report for diagnosis yourself: + " You can paste the generated report with any spreadsheet you like": + "": Проанализируйте использование базы данных и создайте TSV-отчёт для + самостоятельной диагностики. Полученный отчёт можно вставить в любую + удобную для вас таблицу. + obsidianLiveSyncSettingTab: + descConnectSetupURI: Это рекомендуемый способ настройки Self-hosted LiveSync с + помощью Setup URI. + descCopySetupURI: Идеально подходит для настройки нового устройства! + descEnableLiveSync: Включайте это только после настройки одного из двух + вариантов выше или после полного ручного завершения всей конфигурации. + descFetchConfigFromRemote: Получить необходимые настройки с уже настроенного удалённого сервера. + descManualSetup: Не рекомендуется, но полезно, если у вас нет Setup URI. + descTestDatabaseConnection: Открыть подключение к базе данных. Если удалённая + база данных не найдена и у вас есть право на её создание, база будет + создана. + descValidateDatabaseConfig: Проверяет и исправляет любые потенциальные проблемы + в конфигурации базы данных. + optionCouchDB: Сервер CouchDB + optionLiveSync: Синхронизация LiveSync + optionMinioS3R2: MinIO, S3, R2 + titleCouchDB: Сервер CouchDB + titleMinioS3R2: MinIO, S3, R2 +Ui: + SetupWizard: + Common: + Back: Назад + Cancel: Отмена + ProceedSelectOption: Пожалуйста, выберите вариант + Intro: + Title: Мастер настройки + Guidance: Добро пожаловать! Давайте настроим LiveSync. Вы новый пользователь + LiveSync или у вас уже есть настроенный удалённый сервер? + Question: Какая ситуация вам подходит? + NewOption: Я новый пользователь LiveSync + NewOptionDesc: Настроить LiveSync впервые + ExistingOption: У меня уже есть настроенный сервер + ExistingOptionDesc: Подключиться к существующему серверу LiveSync + ProceedNew: Новая настройка + ProceedExisting: Подключиться к существующему + OutroNewUser: + Title: Настройка завершена + GuidancePrimary: Ваша конфигурация LiveSync настроена. Настройки будут применены + при закрытии этого диалога. + Important: "Важно:" + GuidanceWarning: Это перезапишет существующие файлы, если в удалённом хранилище + есть данные. Убедитесь, что вы используете пустое хранилище или имеете + резервные копии. + Question: Готовы применить конфигурацию? + Proceed: Применить и перезапустить + OutroExisting: + Guidance: Настройка завершена. Удалённые данные будут получены после + перезапуска. Нажмите кнопку ниже, чтобы перезапустить и начать + синхронизацию. + Title: "Настройка завершена: Подготовка к получению данных синхронизации" + Question: Нажмите кнопку ниже, чтобы перезапустить и перейти к подтверждению + получения данных. + Proceed: Перезапустить и получить данные + SetupRemote: + Title: Настройка удалённого сервера + Guidance: "Выберите тип удалённого сервера, который хотите использовать:" + CouchDbOptionDesc: Используйте свой экземпляр CouchDB для полного контроля над + сервером синхронизации + BucketOption: Хранилище LiveSync + BucketOptionDesc: Используйте встроенный сервер хранилища, входящий в + компаньон-сервис LiveSync + P2POption: Одноранговая сеть (Экспериментально) + P2POptionDesc: Синхронизация напрямую между устройствами без центрального сервера + ProceedCouchDb: Настроить CouchDB + ProceedBucket: Настроить хранилище + ProceedP2P: Настроить P2P + CouchDbOption: CouchDB + OutroAskUserMode: + Title: Как вы будете использовать это устройство? + Guidance: Выберите, как это устройство будет использоваться с LiveSync. Это + влияет на начальное поведение синхронизации. + Question: "Выберите режим для этого устройства:" + NewOption: Настроить как новое устройство + NewOptionDesc: Начать с нового хранилища. Удалённые файлы будут получены после + настройки. + ExistingOption: На этом устройстве есть существующие данные + ExistingOptionDesc: Объединить локальные файлы с удалёнными. Используйте это, + если в хранилище уже есть заметки. + CompatibleOption: Использовать совместимый режим + CompatibleOptionDesc: Используйте это, если удалённый сервер был настроен со + старой версией LiveSync. Некоторые функции могут быть ограничены. + ProceedNext: Продолжить + ProceedApplySettings: Применить настройки + SelectNew: + Title: Настройка нового подключения + Guidance: Выберите, как вы хотите настроить новое подключение LiveSync. + Question: "Выберите метод настройки:" + SetupUriOption: Использовать URI настройки + SetupUriOptionDesc: Импортировать конфигурацию из URI, предоставленного сервером + ManualOption: Настроить вручную + ManualOptionDesc: Введите данные сервера и учётные данные самостоятельно + ProceedSetupUri: Использовать URI настройки + ProceedManual: Настроить вручную + SelectExisting: + Title: Подключение к существующему серверу + Guidance: Выберите способ подключения к существующему серверу LiveSync. + Question: "Выберите способ подключения:" + SetupUriOption: Использовать URI настройки + SetupUriOptionDesc: Импортировать конфигурацию из URI, предоставленного сервером + QrOption: Сканировать QR-код + QrOptionDesc: Сканировать QR-код с уже настроенного устройства + ManualOption: Настроить вручную + ManualOptionDesc: Введите данные сервера и учётные данные самостоятельно + ProceedSetupUri: Использовать URI настройки + ProceedManual: Настроить вручную + ProceedQr: Сканировать QR-код diff --git a/src/common/messagesYAML/zh-tw.yaml b/src/common/messagesYAML/zh-tw.yaml index 0967ef42..bf08ca13 100644 --- a/src/common/messagesYAML/zh-tw.yaml +++ b/src/common/messagesYAML/zh-tw.yaml @@ -1 +1,92 @@ -{} +{ + Ui: + { + SetupWizard: + { + Common: { Back: 返回, Cancel: 取消, ProceedSelectOption: 請選擇一個選項 }, + Intro: + { + Title: 設定精靈, + Guidance: 歡迎!讓我們設定 LiveSync。您是 LiveSync 新用戶,還是已經設定遠端伺服器?, + Question: 您的情況是?, + NewOption: 我是 LiveSync 新用戶, + NewOptionDesc: 首次設定 LiveSync, + ExistingOption: 我已經設定好伺服器, + ExistingOptionDesc: 連線到現有的 LiveSync 伺服器, + ProceedNew: 新建設定, + ProceedExisting: 連線到現有伺服器 + }, + OutroNewUser: + { + Title: 設定完成, + GuidancePrimary: 您的 LiveSync 設定已完成。關閉此對話方塊後將套用設定。, + Important: 重要提示:, + GuidanceWarning: 如果遠端保險庫中有資料,這將覆蓋現有檔案。請確保您使用的是空保險庫或已做好備份。, + Question: 準備好套用設定了嗎?, + Proceed: 套用並重新啟動 + }, + OutroExisting: + { + Guidance: 設定已完成。重新啟動後將取得遠端資料。點擊下方按鈕重新啟動並開始同步。, + Title: 設定完成:準備取得同步資料, + Question: 請點擊下方按鈕重新啟動並進入資料取得確認。, + Proceed: 重新啟動並取得資料 + }, + SetupRemote: + { + Title: 設定遠端伺服器, + Guidance: 選擇您要使用的遠端伺服器類型:, + CouchDbOptionDesc: 使用您自己的 CouchDB 執行個體,完全控制同步伺服器, + BucketOption: LiveSync 儲存桶, + BucketOptionDesc: 使用 LiveSync 配套服務內建的儲存桶伺服器, + P2POption: 點對點(實驗性), + P2POptionDesc: 無需中央伺服器,直接在裝置之間同步, + ProceedCouchDb: 設定 CouchDB, + ProceedBucket: 設定儲存桶, + ProceedP2P: 設定 P2P, + CouchDbOption: CouchDB + }, + OutroAskUserMode: + { + Title: 您將如何使用此裝置?, + Guidance: 選擇此裝置在 LiveSync 中的使用方式。這會影響初始同步行為。, + Question: 選擇此裝置的模式:, + NewOption: 設定為新裝置, + NewOptionDesc: 從新的保險庫開始。設定後將取得遠端檔案。, + ExistingOption: 此裝置已有資料, + ExistingOptionDesc: 將本機檔案與遠端合併。如果此保險庫中已有筆記,請使用此選項。, + CompatibleOption: 使用相容模式, + CompatibleOptionDesc: 如果遠端是使用舊版 LiveSync 設定的,請使用此選項。某些功能可能受限。, + ProceedNext: 繼續, + ProceedApplySettings: 套用設定 + }, + SelectNew: + { + Title: 設定新連線, + Guidance: 選擇您想如何設定新的 LiveSync 連線。, + Question: 選擇設定方式:, + SetupUriOption: 使用設定 URI, + SetupUriOptionDesc: 從伺服器提供的設定 URI 匯入設定, + ManualOption: 手動設定, + ManualOptionDesc: 自行輸入伺服器詳細資料和憑證, + ProceedSetupUri: 使用設定 URI, + ProceedManual: 手動設定 + }, + SelectExisting: + { + Title: 連線到現有伺服器, + Guidance: 選擇如何連線到您現有的 LiveSync 伺服器。, + Question: 選擇連線方式:, + SetupUriOption: 使用設定 URI, + SetupUriOptionDesc: 從伺服器提供的設定 URI 匯入設定, + QrOption: 掃描 QR 碼, + QrOptionDesc: 從已設定的裝置掃描 QR 碼, + ManualOption: 手動設定, + ManualOptionDesc: 自行輸入伺服器詳細資料和憑證, + ProceedSetupUri: 使用設定 URI, + ProceedManual: 手動設定, + ProceedQr: 掃描 QR 碼 + } + } + } +} diff --git a/src/common/messagesYAML/zh.yaml b/src/common/messagesYAML/zh.yaml index 6257bc57..5e903d3c 100644 --- a/src/common/messagesYAML/zh.yaml +++ b/src/common/messagesYAML/zh.yaml @@ -1106,3 +1106,78 @@ Warning! This will have a serious impact on performance. And the logs will not b When you save a file in the editor, start a sync automatically: 当您在编辑器中保存文件时,自动开始同步 Write credentials in the file: 将凭据写入文件 Write logs into the file: 将日志写入文件 +Ui: + SetupWizard: + Common: + Back: 返回 + Cancel: 取消 + ProceedSelectOption: 请选择一个选项 + Intro: + Title: 设置向导 + Guidance: 欢迎!让我们设置 LiveSync。您是 LiveSync 新用户,还是已经配置了远程服务器? + Question: 您的情况是? + NewOption: 我是 LiveSync 新用户 + NewOptionDesc: 首次设置 LiveSync + ExistingOption: 我已经配置了服务器 + ExistingOptionDesc: 连接到现有的 LiveSync 服务器 + ProceedNew: 新建设置 + ProceedExisting: 连接到现有服务器 + OutroNewUser: + Title: 设置完成 + GuidancePrimary: 您的 LiveSync 配置已设置完成。关闭此对话框后将应用设置。 + Important: 重要提示: + GuidanceWarning: 如果远程保险库中有数据,这将覆盖现有文件。请确保您使用的是空保险库或已做好备份。 + Question: 准备好应用配置了吗? + Proceed: 应用并重启 + OutroExisting: + Guidance: 设置已完成。重启后将获取远程数据。点击下方按钮重启并开始同步。 + Title: 设置完成:准备获取同步数据 + Question: 请点击下方按钮重启并进入数据获取确认。 + Proceed: 重启并获取数据 + SetupRemote: + Title: 设置远程服务器 + Guidance: 选择您要使用的远程服务器类型: + CouchDbOptionDesc: 使用您自己的 CouchDB 实例,完全控制同步服务器 + BucketOption: LiveSync 存储桶 + BucketOptionDesc: 使用 LiveSync 配套服务内置的存储桶服务器 + P2POption: 点对点(实验性) + P2POptionDesc: 无需中央服务器,直接在设备之间同步 + ProceedCouchDb: 设置 CouchDB + ProceedBucket: 设置存储桶 + ProceedP2P: 设置 P2P + CouchDbOption: CouchDB + OutroAskUserMode: + Title: 您将如何使用此设备? + Guidance: 选择此设备在 LiveSync 中的使用方式。这会影响初始同步行为。 + Question: 选择此设备的模式: + NewOption: 设置为新设备 + NewOptionDesc: 从新的保险库开始。设置后将获取远程文件。 + ExistingOption: 此设备已有数据 + ExistingOptionDesc: 将本地文件与远程合并。如果此保险库中已有笔记,请使用此选项。 + CompatibleOption: 使用兼容模式 + CompatibleOptionDesc: 如果远程是使用旧版 LiveSync 设置的,请使用此选项。某些功能可能受限。 + ProceedNext: 继续 + ProceedApplySettings: 应用设置 + SelectNew: + Title: 设置新连接 + Guidance: 选择您想如何配置新的 LiveSync 连接。 + Question: 选择配置方式: + SetupUriOption: 使用设置 URI + SetupUriOptionDesc: 从服务器提供的设置 URI 导入配置 + ManualOption: 手动配置 + ManualOptionDesc: 自行输入服务器详细信息和凭据 + ProceedSetupUri: 使用设置 URI + ProceedManual: 手动配置 + SelectExisting: + Title: 连接到现有服务器 + Guidance: 选择如何连接到您现有的 LiveSync 服务器。 + Question: 选择连接方式: + SetupUriOption: 使用设置 URI + SetupUriOptionDesc: 从服务器提供的设置 URI 导入配置 + QrOption: 扫描二维码 + QrOptionDesc: 从已配置的设备扫描二维码 + ManualOption: 手动配置 + ManualOptionDesc: 自行输入服务器详细信息和凭据 + ProceedSetupUri: 使用设置 URI + ProceedManual: 手动配置 + ProceedQr: 扫描二维码 From 4c21e2d67a98810232d0a6c4f761deabc751bb8b Mon Sep 17 00:00:00 2001 From: 52sanmao <52sanmao@users.noreply.github.com> Date: Sat, 9 May 2026 05:13:29 +0800 Subject: [PATCH 2/4] i18n: add 106 missing Ui.Settings.* keys to all language files - Add all missing $msg() keys referenced by TS settings panes - Add better English values for common labels (Back, Delete, Configure, etc.) - All 841 en.json keys now cover all $msg() calls in codebase --- src/common/messages/combinedMessages.prod.ts | 954 +++++++++++++++++++ src/common/messagesJson/de.json | 110 ++- src/common/messagesJson/en.json | 110 ++- src/common/messagesJson/es.json | 110 ++- src/common/messagesJson/ja.json | 110 ++- src/common/messagesJson/ko.json | 110 ++- src/common/messagesJson/ru.json | 110 ++- src/common/messagesJson/zh-tw.json | 110 ++- src/common/messagesJson/zh.json | 110 ++- 9 files changed, 1818 insertions(+), 16 deletions(-) diff --git a/src/common/messages/combinedMessages.prod.ts b/src/common/messages/combinedMessages.prod.ts index ff3e37c3..6636214b 100644 --- a/src/common/messages/combinedMessages.prod.ts +++ b/src/common/messages/combinedMessages.prod.ts @@ -5961,6 +5961,960 @@ export const _allMessages = { ru: "Записывать логи в файл", zh: "将日志写入文件", }, + "Customization Sync (Beta3)": { + "def": "Customization Sync (Beta3)", + "es": "Customization Sync (Beta3)", + "ja": "Customization Sync (Beta3)", + "ko": "Customization Sync (Beta3)", + "ru": "Customization Sync (Beta3)", + "zh": "Customization Sync (Beta3)", + "zw-th": "Customization Sync (Beta3)" + }, + "Document History": { + "def": "Document History", + "es": "Document History", + "ja": "Document History", + "ko": "Document History", + "ru": "Document History", + "zh": "Document History", + "zw-th": "Document History" + }, + "Hide completely": { + "def": "Hide completely", + "es": "Hide completely", + "ja": "Hide completely", + "ko": "Hide completely", + "ru": "Hide completely", + "zh": "Hide completely", + "zw-th": "Hide completely" + }, + "Highlight diff": { + "def": "Highlight diff", + "es": "Highlight diff", + "ja": "Highlight diff", + "ko": "Highlight diff", + "ru": "Highlight diff", + "zh": "Highlight diff", + "zw-th": "Highlight diff" + }, + "Pick a file to resolve conflict": { + "def": "Pick a file to resolve conflict", + "es": "Pick a file to resolve conflict", + "ja": "Pick a file to resolve conflict", + "ko": "Pick a file to resolve conflict", + "ru": "Pick a file to resolve conflict", + "zh": "Pick a file to resolve conflict", + "zw-th": "Pick a file to resolve conflict" + }, + "Pick a file to show history": { + "def": "Pick a file to show history", + "es": "Pick a file to show history", + "ja": "Pick a file to show history", + "ko": "Pick a file to show history", + "ru": "Pick a file to show history", + "zh": "Pick a file to show history", + "zw-th": "Pick a file to show history" + }, + "Resolve all conflicted files": { + "def": "Resolve all conflicted files", + "es": "Resolve all conflicted files", + "ja": "Resolve all conflicted files", + "ko": "Resolve all conflicted files", + "ru": "Resolve all conflicted files", + "zh": "Resolve all conflicted files", + "zw-th": "Resolve all conflicted files" + }, + "Show full banner": { + "def": "Show full banner", + "es": "Show full banner", + "ja": "Show full banner", + "ko": "Show full banner", + "ru": "Show full banner", + "zh": "Show full banner", + "zw-th": "Show full banner" + }, + "Show history": { + "def": "Show history", + "es": "Show history", + "ja": "Show history", + "ko": "Show history", + "ru": "Show history", + "zh": "Show history", + "zw-th": "Show history" + }, + "Show icon only": { + "def": "Show icon only", + "es": "Show icon only", + "ja": "Show icon only", + "ko": "Show icon only", + "ru": "Show icon only", + "zh": "Show icon only", + "zw-th": "Show icon only" + }, + "Ui.ConflictResolver.FileToResolve": { + "def": "File To Resolve", + "es": "File To Resolve", + "ja": "File To Resolve", + "ko": "File To Resolve", + "ru": "File To Resolve", + "zh": "File To Resolve", + "zw-th": "File To Resolve" + }, + "Ui.History.FileToView": { + "def": "File To View", + "es": "File To View", + "ja": "File To View", + "ko": "File To View", + "ru": "File To View", + "zh": "File To View", + "zw-th": "File To View" + }, + "Ui.Settings.Common.Analyse": { + "def": "Analyse", + "es": "Analyse", + "ja": "Analyse", + "ko": "Analyse", + "ru": "Analyse", + "zh": "Analyse", + "zw-th": "Analyse" + }, + "Ui.Settings.Common.Back": { + "def": "Back", + "es": "Back", + "ja": "Back", + "ko": "Back", + "ru": "Back", + "zh": "Back", + "zw-th": "Back" + }, + "Ui.Settings.Common.Check": { + "def": "Check", + "es": "Check", + "ja": "Check", + "ko": "Check", + "ru": "Check", + "zh": "Check", + "zw-th": "Check" + }, + "Ui.Settings.Common.Configure": { + "def": "Configure", + "es": "Configure", + "ja": "Configure", + "ko": "Configure", + "ru": "Configure", + "zh": "Configure", + "zw-th": "Configure" + }, + "Ui.Settings.Common.Delete": { + "def": "Delete", + "es": "Delete", + "ja": "Delete", + "ko": "Delete", + "ru": "Delete", + "zh": "Delete", + "zw-th": "Delete" + }, + "Ui.Settings.Common.Lock": { + "def": "Lock", + "es": "Lock", + "ja": "Lock", + "ko": "Lock", + "ru": "Lock", + "zh": "Lock", + "zw-th": "Lock" + }, + "Ui.Settings.Common.Open": { + "def": "Open", + "es": "Open", + "ja": "Open", + "ko": "Open", + "ru": "Open", + "zh": "Open", + "zw-th": "Open" + }, + "Ui.Settings.Common.Perform": { + "def": "Perform", + "es": "Perform", + "ja": "Perform", + "ko": "Perform", + "ru": "Perform", + "zh": "Perform", + "zw-th": "Perform" + }, + "Ui.Settings.Common.ResetAll": { + "def": "Reset all", + "es": "Reset all", + "ja": "Reset all", + "ko": "Reset all", + "ru": "Reset all", + "zh": "Reset all", + "zw-th": "Reset all" + }, + "Ui.Settings.Common.ResolveAll": { + "def": "Resolve All", + "es": "Resolve All", + "ja": "Resolve All", + "ko": "Resolve All", + "ru": "Resolve All", + "zh": "Resolve All", + "zw-th": "Resolve All" + }, + "Ui.Settings.Common.Send": { + "def": "Send", + "es": "Send", + "ja": "Send", + "ko": "Send", + "ru": "Send", + "zh": "Send", + "zw-th": "Send" + }, + "Ui.Settings.Common.VerifyAll": { + "def": "Verify all", + "es": "Verify all", + "ja": "Verify all", + "ko": "Verify all", + "ru": "Verify all", + "zh": "Verify all", + "zw-th": "Verify all" + }, + "Ui.Settings.CustomizationSync.WarnChangeDeviceName": { + "def": "Warn Change Device Name", + "es": "Warn Change Device Name", + "ja": "Warn Change Device Name", + "ko": "Warn Change Device Name", + "ru": "Warn Change Device Name", + "zh": "Warn Change Device Name", + "zw-th": "Warn Change Device Name" + }, + "Ui.Settings.CustomizationSync.WarnSetDeviceName": { + "def": "Warn Set Device Name", + "es": "Warn Set Device Name", + "ja": "Warn Set Device Name", + "ko": "Warn Set Device Name", + "ru": "Warn Set Device Name", + "zh": "Warn Set Device Name", + "zw-th": "Warn Set Device Name" + }, + "Ui.Settings.Hatch.CopyIssueReport": { + "def": "Copy Report to clipboard", + "es": "Copy Report to clipboard", + "ja": "Copy Report to clipboard", + "ko": "Copy Report to clipboard", + "ru": "Copy Report to clipboard", + "zh": "Copy Report to clipboard", + "zw-th": "Copy Report to clipboard" + }, + "Ui.Settings.Hatch.DatabaseLabel": { + "def": "Database Label", + "es": "Database Label", + "ja": "Database Label", + "ko": "Database Label", + "ru": "Database Label", + "zh": "Database Label", + "zw-th": "Database Label" + }, + "Ui.Settings.Hatch.DatabaseToStorage": { + "def": "Database -> Storage", + "es": "Database -> Storage", + "ja": "Database -> Storage", + "ko": "Database -> Storage", + "ru": "Database -> Storage", + "zh": "Database -> Storage", + "zw-th": "Database -> Storage" + }, + "Ui.Settings.Hatch.GeneratedReport": { + "def": "Generated Report", + "es": "Generated Report", + "ja": "Generated Report", + "ko": "Generated Report", + "ru": "Generated Report", + "zh": "Generated Report", + "zw-th": "Generated Report" + }, + "Ui.Settings.Hatch.Missing": { + "def": "Missing", + "es": "Missing", + "ja": "Missing", + "ko": "Missing", + "ru": "Missing", + "zh": "Missing", + "zw-th": "Missing" + }, + "Ui.Settings.Hatch.ModifiedSize": { + "def": "Modified Size", + "es": "Modified Size", + "ja": "Modified Size", + "ko": "Modified Size", + "ru": "Modified Size", + "zh": "Modified Size", + "zw-th": "Modified Size" + }, + "Ui.Settings.Hatch.ModifiedSizeActual": { + "def": "Modified Size Actual", + "es": "Modified Size Actual", + "ja": "Modified Size Actual", + "ko": "Modified Size Actual", + "ru": "Modified Size Actual", + "zh": "Modified Size Actual", + "zw-th": "Modified Size Actual" + }, + "Ui.Settings.Hatch.RecreateAll": { + "def": "Recreate all", + "es": "Recreate all", + "ja": "Recreate all", + "ko": "Recreate all", + "ru": "Recreate all", + "zh": "Recreate all", + "zw-th": "Recreate all" + }, + "Ui.Settings.Hatch.RunDoctor": { + "def": "Run Doctor", + "es": "Run Doctor", + "ja": "Run Doctor", + "ko": "Run Doctor", + "ru": "Run Doctor", + "zh": "Run Doctor", + "zw-th": "Run Doctor" + }, + "Ui.Settings.Hatch.ScanBrokenFiles": { + "def": "Scan for Broken files", + "es": "Scan for Broken files", + "ja": "Scan for Broken files", + "ko": "Scan for Broken files", + "ru": "Scan for Broken files", + "zh": "Scan for Broken files", + "zw-th": "Scan for Broken files" + }, + "Ui.Settings.Hatch.ShowHistory": { + "def": "Show history", + "es": "Show history", + "ja": "Show history", + "ko": "Show history", + "ru": "Show history", + "zh": "Show history", + "zw-th": "Show history" + }, + "Ui.Settings.Hatch.StorageLabel": { + "def": "Storage Label", + "es": "Storage Label", + "ja": "Storage Label", + "ko": "Storage Label", + "ru": "Storage Label", + "zh": "Storage Label", + "zw-th": "Storage Label" + }, + "Ui.Settings.Hatch.StorageToDatabase": { + "def": "Storage -> Database", + "es": "Storage -> Database", + "ja": "Storage -> Database", + "ko": "Storage -> Database", + "ru": "Storage -> Database", + "zh": "Storage -> Database", + "zw-th": "Storage -> Database" + }, + "Ui.Settings.Maintenance.GarbageCollection": { + "def": "Garbage Collection V3 (Beta)", + "es": "Garbage Collection V3 (Beta)", + "ja": "Garbage Collection V3 (Beta)", + "ko": "Garbage Collection V3 (Beta)", + "ru": "Garbage Collection V3 (Beta)", + "zh": "Garbage Collection V3 (Beta)", + "zw-th": "Garbage Collection V3 (Beta)" + }, + "Ui.Settings.Maintenance.GarbageCollectionAction": { + "def": "Perform Garbage Collection", + "es": "Perform Garbage Collection", + "ja": "Perform Garbage Collection", + "ko": "Perform Garbage Collection", + "ru": "Perform Garbage Collection", + "zh": "Perform Garbage Collection", + "zw-th": "Perform Garbage Collection" + }, + "Ui.Settings.Maintenance.RebuildingOperations": { + "def": "Rebuilding Operations (Remote Only)", + "es": "Rebuilding Operations (Remote Only)", + "ja": "Rebuilding Operations (Remote Only)", + "ko": "Rebuilding Operations (Remote Only)", + "ru": "Rebuilding Operations (Remote Only)", + "zh": "Rebuilding Operations (Remote Only)", + "zw-th": "Rebuilding Operations (Remote Only)" + }, + "Ui.Settings.Maintenance.ResetReceived": { + "def": "Reset received", + "es": "Reset received", + "ja": "Reset received", + "ko": "Reset received", + "ru": "Reset received", + "zh": "Reset received", + "zw-th": "Reset received" + }, + "Ui.Settings.Maintenance.ResetSentHistory": { + "def": "Reset sent history", + "es": "Reset sent history", + "ja": "Reset sent history", + "ko": "Reset sent history", + "ru": "Reset sent history", + "zh": "Reset sent history", + "zw-th": "Reset sent history" + }, + "Ui.Settings.Maintenance.ScheduleAndRestart": { + "def": "Schedule and Restart", + "es": "Schedule and Restart", + "ja": "Schedule and Restart", + "ko": "Schedule and Restart", + "ru": "Schedule and Restart", + "zh": "Schedule and Restart", + "zw-th": "Schedule and Restart" + }, + "Ui.Settings.Maintenance.SendChunks": { + "def": "Send chunks", + "es": "Send chunks", + "ja": "Send chunks", + "ko": "Send chunks", + "ru": "Send chunks", + "zh": "Send chunks", + "zw-th": "Send chunks" + }, + "Ui.Settings.Maintenance.WarningLockedReadyAction": { + "def": "Warning Locked Ready Action", + "es": "Warning Locked Ready Action", + "ja": "Warning Locked Ready Action", + "ko": "Warning Locked Ready Action", + "ru": "Warning Locked Ready Action", + "zh": "Warning Locked Ready Action", + "zw-th": "Warning Locked Ready Action" + }, + "Ui.Settings.Maintenance.WarningLockedReadyText": { + "def": "Warning Locked Ready Text", + "es": "Warning Locked Ready Text", + "ja": "Warning Locked Ready Text", + "ko": "Warning Locked Ready Text", + "ru": "Warning Locked Ready Text", + "zh": "Warning Locked Ready Text", + "zw-th": "Warning Locked Ready Text" + }, + "Ui.Settings.Maintenance.WarningLockedResolveAction": { + "def": "Warning Locked Resolve Action", + "es": "Warning Locked Resolve Action", + "ja": "Warning Locked Resolve Action", + "ko": "Warning Locked Resolve Action", + "ru": "Warning Locked Resolve Action", + "zh": "Warning Locked Resolve Action", + "zw-th": "Warning Locked Resolve Action" + }, + "Ui.Settings.Maintenance.WarningLockedResolveText": { + "def": "Warning Locked Resolve Text", + "es": "Warning Locked Resolve Text", + "ja": "Warning Locked Resolve Text", + "ko": "Warning Locked Resolve Text", + "ru": "Warning Locked Resolve Text", + "zh": "Warning Locked Resolve Text", + "zw-th": "Warning Locked Resolve Text" + }, + "Ui.Settings.Maintenance.WriteRedFlagAndRestart": { + "def": "Flag and restart", + "es": "Flag and restart", + "ja": "Flag and restart", + "ko": "Flag and restart", + "ru": "Flag and restart", + "zh": "Flag and restart", + "zw-th": "Flag and restart" + }, + "Ui.Settings.Patches.CurrentAdapter": { + "def": "Current Adapter", + "es": "Current Adapter", + "ja": "Current Adapter", + "ko": "Current Adapter", + "ru": "Current Adapter", + "zh": "Current Adapter", + "zw-th": "Current Adapter" + }, + "Ui.Settings.Patches.IndexedDbWarning": { + "def": "Indexed Db Warning", + "es": "Indexed Db Warning", + "ja": "Indexed Db Warning", + "ko": "Indexed Db Warning", + "ru": "Indexed Db Warning", + "zh": "Indexed Db Warning", + "zw-th": "Indexed Db Warning" + }, + "Ui.Settings.Patches.MigratingToIdb": { + "def": "Migrating To Idb", + "es": "Migrating To Idb", + "ja": "Migrating To Idb", + "ko": "Migrating To Idb", + "ru": "Migrating To Idb", + "zh": "Migrating To Idb", + "zw-th": "Migrating To Idb" + }, + "Ui.Settings.Patches.MigratingToIndexedDb": { + "def": "Migrating To Indexed Db", + "es": "Migrating To Indexed Db", + "ja": "Migrating To Indexed Db", + "ko": "Migrating To Indexed Db", + "ru": "Migrating To Indexed Db", + "zh": "Migrating To Indexed Db", + "zw-th": "Migrating To Indexed Db" + }, + "Ui.Settings.Patches.MigrationIdbCompleted": { + "def": "Migration Idb Completed", + "es": "Migration Idb Completed", + "ja": "Migration Idb Completed", + "ko": "Migration Idb Completed", + "ru": "Migration Idb Completed", + "zh": "Migration Idb Completed", + "zw-th": "Migration Idb Completed" + }, + "Ui.Settings.Patches.MigrationIdbCompletedFollowUp": { + "def": "Migration Idb Completed Follow Up", + "es": "Migration Idb Completed Follow Up", + "ja": "Migration Idb Completed Follow Up", + "ko": "Migration Idb Completed Follow Up", + "ru": "Migration Idb Completed Follow Up", + "zh": "Migration Idb Completed Follow Up", + "zw-th": "Migration Idb Completed Follow Up" + }, + "Ui.Settings.Patches.MigrationIndexedDbCompleted": { + "def": "Migration Indexed Db Completed", + "es": "Migration Indexed Db Completed", + "ja": "Migration Indexed Db Completed", + "ko": "Migration Indexed Db Completed", + "ru": "Migration Indexed Db Completed", + "zh": "Migration Indexed Db Completed", + "zw-th": "Migration Indexed Db Completed" + }, + "Ui.Settings.Patches.MigrationIndexedDbCompletedFollowUp": { + "def": "Migration Indexed Db Completed Follow Up", + "es": "Migration Indexed Db Completed Follow Up", + "ja": "Migration Indexed Db Completed Follow Up", + "ko": "Migration Indexed Db Completed Follow Up", + "ru": "Migration Indexed Db Completed Follow Up", + "zh": "Migration Indexed Db Completed Follow Up", + "zw-th": "Migration Indexed Db Completed Follow Up" + }, + "Ui.Settings.Patches.MigrationWarning": { + "def": "Migration Warning", + "es": "Migration Warning", + "ja": "Migration Warning", + "ko": "Migration Warning", + "ru": "Migration Warning", + "zh": "Migration Warning", + "zw-th": "Migration Warning" + }, + "Ui.Settings.Patches.OperationToIdb": { + "def": "Operation To Idb", + "es": "Operation To Idb", + "ja": "Operation To Idb", + "ko": "Operation To Idb", + "ru": "Operation To Idb", + "zh": "Operation To Idb", + "zw-th": "Operation To Idb" + }, + "Ui.Settings.Patches.OperationToIndexedDb": { + "def": "Operation To Indexed Db", + "es": "Operation To Indexed Db", + "ja": "Operation To Indexed Db", + "ko": "Operation To Indexed Db", + "ru": "Operation To Indexed Db", + "zh": "Operation To Indexed Db", + "zw-th": "Operation To Indexed Db" + }, + "Ui.Settings.Patches.RemediationChanged": { + "def": "Remediation Changed", + "es": "Remediation Changed", + "ja": "Remediation Changed", + "ko": "Remediation Changed", + "ru": "Remediation Changed", + "zh": "Remediation Changed", + "zw-th": "Remediation Changed" + }, + "Ui.Settings.Patches.RemediationNoLimit": { + "def": "Remediation No Limit", + "es": "Remediation No Limit", + "ja": "Remediation No Limit", + "ko": "Remediation No Limit", + "ru": "Remediation No Limit", + "zh": "Remediation No Limit", + "zw-th": "Remediation No Limit" + }, + "Ui.Settings.Patches.RemediationRestartLater": { + "def": "Remediation Restart Later", + "es": "Remediation Restart Later", + "ja": "Remediation Restart Later", + "ko": "Remediation Restart Later", + "ru": "Remediation Restart Later", + "zh": "Remediation Restart Later", + "zw-th": "Remediation Restart Later" + }, + "Ui.Settings.Patches.RemediationRestartMessage": { + "def": "Remediation Restart Message", + "es": "Remediation Restart Message", + "ja": "Remediation Restart Message", + "ko": "Remediation Restart Message", + "ru": "Remediation Restart Message", + "zh": "Remediation Restart Message", + "zw-th": "Remediation Restart Message" + }, + "Ui.Settings.Patches.RemediationRestartNow": { + "def": "Remediation Restart Now", + "es": "Remediation Restart Now", + "ja": "Remediation Restart Now", + "ko": "Remediation Restart Now", + "ru": "Remediation Restart Now", + "zh": "Remediation Restart Now", + "zw-th": "Remediation Restart Now" + }, + "Ui.Settings.Patches.RemediationRestarting": { + "def": "Remediation Restarting", + "es": "Remediation Restarting", + "ja": "Remediation Restarting", + "ko": "Remediation Restarting", + "ru": "Remediation Restarting", + "zh": "Remediation Restarting", + "zw-th": "Remediation Restarting" + }, + "Ui.Settings.Patches.RemediationSuffixChanged": { + "def": "Remediation Suffix Changed", + "es": "Remediation Suffix Changed", + "ja": "Remediation Suffix Changed", + "ko": "Remediation Suffix Changed", + "ru": "Remediation Suffix Changed", + "zh": "Remediation Suffix Changed", + "zw-th": "Remediation Suffix Changed" + }, + "Ui.Settings.Patches.RemediationWithValue": { + "def": "Remediation With Value", + "es": "Remediation With Value", + "ja": "Remediation With Value", + "ko": "Remediation With Value", + "ru": "Remediation With Value", + "zh": "Remediation With Value", + "zw-th": "Remediation With Value" + }, + "Ui.Settings.Patches.SwitchToIDB": { + "def": "Switch To IDB", + "es": "Switch To IDB", + "ja": "Switch To IDB", + "ko": "Switch To IDB", + "ru": "Switch To IDB", + "zh": "Switch To IDB", + "zw-th": "Switch To IDB" + }, + "Ui.Settings.Patches.SwitchToIndexedDb": { + "def": "Switch To Indexed Db", + "es": "Switch To Indexed Db", + "ja": "Switch To Indexed Db", + "ko": "Switch To Indexed Db", + "ru": "Switch To Indexed Db", + "zh": "Switch To Indexed Db", + "zw-th": "Switch To Indexed Db" + }, + "Ui.Settings.PowerUsers.ConnectionTweakDesc": { + "def": "Connection Tweak Desc", + "es": "Connection Tweak Desc", + "ja": "Connection Tweak Desc", + "ko": "Connection Tweak Desc", + "ru": "Connection Tweak Desc", + "zh": "Connection Tweak Desc", + "zw-th": "Connection Tweak Desc" + }, + "Ui.Settings.PowerUsers.Default": { + "def": "Default", + "es": "Default", + "ja": "Default", + "ko": "Default", + "ru": "Default", + "zh": "Default", + "zw-th": "Default" + }, + "Ui.Settings.PowerUsers.PromptPassphraseEveryLaunch": { + "def": "Ask a passphrase at every launch", + "es": "Ask a passphrase at every launch", + "ja": "Ask a passphrase at every launch", + "ko": "Ask a passphrase at every launch", + "ru": "Ask a passphrase at every launch", + "zh": "Ask a passphrase at every launch", + "zw-th": "Ask a passphrase at every launch" + }, + "Ui.Settings.PowerUsers.UseCustomPassphrase": { + "def": "Use a custom passphrase", + "es": "Use a custom passphrase", + "ja": "Use a custom passphrase", + "ko": "Use a custom passphrase", + "ru": "Use a custom passphrase", + "zh": "Use a custom passphrase", + "zw-th": "Use a custom passphrase" + }, + "Ui.Settings.Remote.Activate": { + "def": "Activate", + "es": "Activate", + "ja": "Activate", + "ko": "Activate", + "ru": "Activate", + "zh": "Activate", + "zw-th": "Activate" + }, + "Ui.Settings.Remote.ActiveSuffix": { + "def": "Active Suffix", + "es": "Active Suffix", + "ja": "Active Suffix", + "ko": "Active Suffix", + "ru": "Active Suffix", + "zh": "Active Suffix", + "zw-th": "Active Suffix" + }, + "Ui.Settings.Remote.AddConnection": { + "def": "Add Connection", + "es": "Add Connection", + "ja": "Add Connection", + "ko": "Add Connection", + "ru": "Add Connection", + "zh": "Add Connection", + "zw-th": "Add Connection" + }, + "Ui.Settings.Remote.AddRemoteDefaultName": { + "def": "Add Remote Default Name", + "es": "Add Remote Default Name", + "ja": "Add Remote Default Name", + "ko": "Add Remote Default Name", + "ru": "Add Remote Default Name", + "zh": "Add Remote Default Name", + "zw-th": "Add Remote Default Name" + }, + "Ui.Settings.Remote.ConfigureAndChangeRemote": { + "def": "Configure And Change Remote", + "es": "Configure And Change Remote", + "ja": "Configure And Change Remote", + "ko": "Configure And Change Remote", + "ru": "Configure And Change Remote", + "zh": "Configure And Change Remote", + "zw-th": "Configure And Change Remote" + }, + "Ui.Settings.Remote.DeleteRemoteConfirm": { + "def": "Delete Remote Confirm", + "es": "Delete Remote Confirm", + "ja": "Delete Remote Confirm", + "ko": "Delete Remote Confirm", + "ru": "Delete Remote Confirm", + "zh": "Delete Remote Confirm", + "zw-th": "Delete Remote Confirm" + }, + "Ui.Settings.Remote.DeleteRemoteTitle": { + "def": "Delete Remote Title", + "es": "Delete Remote Title", + "ja": "Delete Remote Title", + "ko": "Delete Remote Title", + "ru": "Delete Remote Title", + "zh": "Delete Remote Title", + "zw-th": "Delete Remote Title" + }, + "Ui.Settings.Remote.DisplayName": { + "def": "Display Name", + "es": "Display Name", + "ja": "Display Name", + "ko": "Display Name", + "ru": "Display Name", + "zh": "Display Name", + "zw-th": "Display Name" + }, + "Ui.Settings.Remote.DuplicateRemote": { + "def": "Duplicate Remote", + "es": "Duplicate Remote", + "ja": "Duplicate Remote", + "ko": "Duplicate Remote", + "ru": "Duplicate Remote", + "zh": "Duplicate Remote", + "zw-th": "Duplicate Remote" + }, + "Ui.Settings.Remote.DuplicateRemoteSuffix": { + "def": "Duplicate Remote Suffix", + "es": "Duplicate Remote Suffix", + "ja": "Duplicate Remote Suffix", + "ko": "Duplicate Remote Suffix", + "ru": "Duplicate Remote Suffix", + "zh": "Duplicate Remote Suffix", + "zw-th": "Duplicate Remote Suffix" + }, + "Ui.Settings.Remote.Export": { + "def": "Export", + "es": "Export", + "ja": "Export", + "ko": "Export", + "ru": "Export", + "zh": "Export", + "zw-th": "Export" + }, + "Ui.Settings.Remote.FetchRemoteSettings": { + "def": "Fetch Remote Settings", + "es": "Fetch Remote Settings", + "ja": "Fetch Remote Settings", + "ko": "Fetch Remote Settings", + "ru": "Fetch Remote Settings", + "zh": "Fetch Remote Settings", + "zw-th": "Fetch Remote Settings" + }, + "Ui.Settings.Remote.ImportConnection": { + "def": "Import Connection", + "es": "Import Connection", + "ja": "Import Connection", + "ko": "Import Connection", + "ru": "Import Connection", + "zh": "Import Connection", + "zw-th": "Import Connection" + }, + "Ui.Settings.Remote.ImportConnectionPrompt": { + "def": "Import Connection Prompt", + "es": "Import Connection Prompt", + "ja": "Import Connection Prompt", + "ko": "Import Connection Prompt", + "ru": "Import Connection Prompt", + "zh": "Import Connection Prompt", + "zw-th": "Import Connection Prompt" + }, + "Ui.Settings.Remote.ImportedCouchDb": { + "def": "Imported Couch Db", + "es": "Imported Couch Db", + "ja": "Imported Couch Db", + "ko": "Imported Couch Db", + "ru": "Imported Couch Db", + "zh": "Imported Couch Db", + "zw-th": "Imported Couch Db" + }, + "Ui.Settings.Remote.ImportedRemote": { + "def": "Imported Remote", + "es": "Imported Remote", + "ja": "Imported Remote", + "ko": "Imported Remote", + "ru": "Imported Remote", + "zh": "Imported Remote", + "zw-th": "Imported Remote" + }, + "Ui.Settings.Remote.MoreActions": { + "def": "More Actions", + "es": "More Actions", + "ja": "More Actions", + "ko": "More Actions", + "ru": "More Actions", + "zh": "More Actions", + "zw-th": "More Actions" + }, + "Ui.Settings.Remote.RemoteConfigurationPrefix": { + "def": "Remote Configuration Prefix", + "es": "Remote Configuration Prefix", + "ja": "Remote Configuration Prefix", + "ko": "Remote Configuration Prefix", + "ru": "Remote Configuration Prefix", + "zh": "Remote Configuration Prefix", + "zw-th": "Remote Configuration Prefix" + }, + "Ui.Settings.Remote.RemoteName": { + "def": "Remote Name", + "es": "Remote Name", + "ja": "Remote Name", + "ko": "Remote Name", + "ru": "Remote Name", + "zh": "Remote Name", + "zw-th": "Remote Name" + }, + "Ui.Settings.Remote.RemoteNameCouchDb": { + "def": "Remote Name Couch Db", + "es": "Remote Name Couch Db", + "ja": "Remote Name Couch Db", + "ko": "Remote Name Couch Db", + "ru": "Remote Name Couch Db", + "zh": "Remote Name Couch Db", + "zw-th": "Remote Name Couch Db" + }, + "Ui.Settings.Remote.RemoteNameP2P": { + "def": "Remote Name P2P", + "es": "Remote Name P2P", + "ja": "Remote Name P2P", + "ko": "Remote Name P2P", + "ru": "Remote Name P2P", + "zh": "Remote Name P2P", + "zw-th": "Remote Name P2P" + }, + "Ui.Settings.Remote.RemoteNameS3": { + "def": "Remote Name S3", + "es": "Remote Name S3", + "ja": "Remote Name S3", + "ko": "Remote Name S3", + "ru": "Remote Name S3", + "zh": "Remote Name S3", + "zw-th": "Remote Name S3" + }, + "Ui.Settings.Remote.Rename": { + "def": "Rename", + "es": "Rename", + "ja": "Rename", + "ko": "Rename", + "ru": "Rename", + "zh": "Rename", + "zw-th": "Rename" + }, + "Ui.Settings.Selector.CrossPlatform": { + "def": "Cross-platform", + "es": "Cross-platform", + "ja": "Cross-platform", + "ko": "Cross-platform", + "ru": "Cross-platform", + "zh": "Cross-platform", + "zw-th": "Cross-platform" + }, + "Ui.Settings.Selector.Default": { + "def": "Default", + "es": "Default", + "ja": "Default", + "ko": "Default", + "ru": "Default", + "zh": "Default", + "zw-th": "Default" + }, + "Ui.Settings.Setup.RerunWizardButton": { + "def": "Rerun Wizard Button", + "es": "Rerun Wizard Button", + "ja": "Rerun Wizard Button", + "ko": "Rerun Wizard Button", + "ru": "Rerun Wizard Button", + "zh": "Rerun Wizard Button", + "zw-th": "Rerun Wizard Button" + }, + "Ui.Settings.SyncSettings.Fetch": { + "def": "Fetch", + "es": "Fetch", + "ja": "Fetch", + "ko": "Fetch", + "ru": "Fetch", + "zh": "Fetch", + "zw-th": "Fetch" + }, + "Ui.Settings.SyncSettings.Merge": { + "def": "Merge", + "es": "Merge", + "ja": "Merge", + "ko": "Merge", + "ru": "Merge", + "zh": "Merge", + "zw-th": "Merge" + }, + "Ui.Settings.SyncSettings.Overwrite": { + "def": "Overwrite", + "es": "Overwrite", + "ja": "Overwrite", + "ko": "Overwrite", + "ru": "Overwrite", + "zh": "Overwrite", + "zw-th": "Overwrite" + }, + "obsidianLiveSyncSettingTab.logServerConfigurationCheck": { + "def": "Log Server Configuration Check", + "es": "Log Server Configuration Check", + "ja": "Log Server Configuration Check", + "ko": "Log Server Configuration Check", + "ru": "Log Server Configuration Check", + "zh": "Log Server Configuration Check", + "zw-th": "Log Server Configuration Check" + }, "Compute revisions for chunks (Previous behaviour)": { es: "Calcular revisiones para chunks (comportamiento anterior)", }, diff --git a/src/common/messagesJson/de.json b/src/common/messagesJson/de.json index b53a0182..a1cad80d 100644 --- a/src/common/messagesJson/de.json +++ b/src/common/messagesJson/de.json @@ -63,5 +63,111 @@ "Ui.SetupWizard.SetupRemote.ProceedBucket": "Bucket einrichten", "Ui.SetupWizard.SetupRemote.ProceedCouchDb": "CouchDB einrichten", "Ui.SetupWizard.SetupRemote.ProceedP2P": "P2P einrichten", - "Ui.SetupWizard.SetupRemote.Title": "Remote-Server einrichten" -} + "Ui.SetupWizard.SetupRemote.Title": "Remote-Server einrichten", + "Customization Sync (Beta3)": "Customization Sync (Beta3)", + "Document History": "Document History", + "Hide completely": "Hide completely", + "Highlight diff": "Highlight diff", + "Pick a file to resolve conflict": "Pick a file to resolve conflict", + "Pick a file to show history": "Pick a file to show history", + "Resolve all conflicted files": "Resolve all conflicted files", + "Show full banner": "Show full banner", + "Show history": "Show history", + "Show icon only": "Show icon only", + "Ui.ConflictResolver.FileToResolve": "File To Resolve", + "Ui.History.FileToView": "File To View", + "Ui.Settings.Common.Analyse": "Analyse", + "Ui.Settings.Common.Back": "Back", + "Ui.Settings.Common.Check": "Check", + "Ui.Settings.Common.Configure": "Configure", + "Ui.Settings.Common.Delete": "Delete", + "Ui.Settings.Common.Lock": "Lock", + "Ui.Settings.Common.Open": "Open", + "Ui.Settings.Common.Perform": "Perform", + "Ui.Settings.Common.ResetAll": "Reset all", + "Ui.Settings.Common.ResolveAll": "Resolve All", + "Ui.Settings.Common.Send": "Send", + "Ui.Settings.Common.VerifyAll": "Verify all", + "Ui.Settings.CustomizationSync.WarnChangeDeviceName": "Warn Change Device Name", + "Ui.Settings.CustomizationSync.WarnSetDeviceName": "Warn Set Device Name", + "Ui.Settings.Hatch.CopyIssueReport": "Copy Report to clipboard", + "Ui.Settings.Hatch.DatabaseLabel": "Database Label", + "Ui.Settings.Hatch.DatabaseToStorage": "Database -> Storage", + "Ui.Settings.Hatch.GeneratedReport": "Generated Report", + "Ui.Settings.Hatch.Missing": "Missing", + "Ui.Settings.Hatch.ModifiedSize": "Modified Size", + "Ui.Settings.Hatch.ModifiedSizeActual": "Modified Size Actual", + "Ui.Settings.Hatch.RecreateAll": "Recreate all", + "Ui.Settings.Hatch.RunDoctor": "Run Doctor", + "Ui.Settings.Hatch.ScanBrokenFiles": "Scan for Broken files", + "Ui.Settings.Hatch.ShowHistory": "Show history", + "Ui.Settings.Hatch.StorageLabel": "Storage Label", + "Ui.Settings.Hatch.StorageToDatabase": "Storage -> Database", + "Ui.Settings.Maintenance.GarbageCollection": "Garbage Collection V3 (Beta)", + "Ui.Settings.Maintenance.GarbageCollectionAction": "Perform Garbage Collection", + "Ui.Settings.Maintenance.RebuildingOperations": "Rebuilding Operations (Remote Only)", + "Ui.Settings.Maintenance.ResetReceived": "Reset received", + "Ui.Settings.Maintenance.ResetSentHistory": "Reset sent history", + "Ui.Settings.Maintenance.ScheduleAndRestart": "Schedule and Restart", + "Ui.Settings.Maintenance.SendChunks": "Send chunks", + "Ui.Settings.Maintenance.WarningLockedReadyAction": "Warning Locked Ready Action", + "Ui.Settings.Maintenance.WarningLockedReadyText": "Warning Locked Ready Text", + "Ui.Settings.Maintenance.WarningLockedResolveAction": "Warning Locked Resolve Action", + "Ui.Settings.Maintenance.WarningLockedResolveText": "Warning Locked Resolve Text", + "Ui.Settings.Maintenance.WriteRedFlagAndRestart": "Flag and restart", + "Ui.Settings.Patches.CurrentAdapter": "Current Adapter", + "Ui.Settings.Patches.IndexedDbWarning": "Indexed Db Warning", + "Ui.Settings.Patches.MigratingToIdb": "Migrating To Idb", + "Ui.Settings.Patches.MigratingToIndexedDb": "Migrating To Indexed Db", + "Ui.Settings.Patches.MigrationIdbCompleted": "Migration Idb Completed", + "Ui.Settings.Patches.MigrationIdbCompletedFollowUp": "Migration Idb Completed Follow Up", + "Ui.Settings.Patches.MigrationIndexedDbCompleted": "Migration Indexed Db Completed", + "Ui.Settings.Patches.MigrationIndexedDbCompletedFollowUp": "Migration Indexed Db Completed Follow Up", + "Ui.Settings.Patches.MigrationWarning": "Migration Warning", + "Ui.Settings.Patches.OperationToIdb": "Operation To Idb", + "Ui.Settings.Patches.OperationToIndexedDb": "Operation To Indexed Db", + "Ui.Settings.Patches.RemediationChanged": "Remediation Changed", + "Ui.Settings.Patches.RemediationNoLimit": "Remediation No Limit", + "Ui.Settings.Patches.RemediationRestartLater": "Remediation Restart Later", + "Ui.Settings.Patches.RemediationRestartMessage": "Remediation Restart Message", + "Ui.Settings.Patches.RemediationRestartNow": "Remediation Restart Now", + "Ui.Settings.Patches.RemediationRestarting": "Remediation Restarting", + "Ui.Settings.Patches.RemediationSuffixChanged": "Remediation Suffix Changed", + "Ui.Settings.Patches.RemediationWithValue": "Remediation With Value", + "Ui.Settings.Patches.SwitchToIDB": "Switch To IDB", + "Ui.Settings.Patches.SwitchToIndexedDb": "Switch To Indexed Db", + "Ui.Settings.PowerUsers.ConnectionTweakDesc": "Connection Tweak Desc", + "Ui.Settings.PowerUsers.Default": "Default", + "Ui.Settings.PowerUsers.PromptPassphraseEveryLaunch": "Ask a passphrase at every launch", + "Ui.Settings.PowerUsers.UseCustomPassphrase": "Use a custom passphrase", + "Ui.Settings.Remote.Activate": "Activate", + "Ui.Settings.Remote.ActiveSuffix": "Active Suffix", + "Ui.Settings.Remote.AddConnection": "Add Connection", + "Ui.Settings.Remote.AddRemoteDefaultName": "Add Remote Default Name", + "Ui.Settings.Remote.ConfigureAndChangeRemote": "Configure And Change Remote", + "Ui.Settings.Remote.DeleteRemoteConfirm": "Delete Remote Confirm", + "Ui.Settings.Remote.DeleteRemoteTitle": "Delete Remote Title", + "Ui.Settings.Remote.DisplayName": "Display Name", + "Ui.Settings.Remote.DuplicateRemote": "Duplicate Remote", + "Ui.Settings.Remote.DuplicateRemoteSuffix": "Duplicate Remote Suffix", + "Ui.Settings.Remote.Export": "Export", + "Ui.Settings.Remote.FetchRemoteSettings": "Fetch Remote Settings", + "Ui.Settings.Remote.ImportConnection": "Import Connection", + "Ui.Settings.Remote.ImportConnectionPrompt": "Import Connection Prompt", + "Ui.Settings.Remote.ImportedCouchDb": "Imported Couch Db", + "Ui.Settings.Remote.ImportedRemote": "Imported Remote", + "Ui.Settings.Remote.MoreActions": "More Actions", + "Ui.Settings.Remote.RemoteConfigurationPrefix": "Remote Configuration Prefix", + "Ui.Settings.Remote.RemoteName": "Remote Name", + "Ui.Settings.Remote.RemoteNameCouchDb": "Remote Name Couch Db", + "Ui.Settings.Remote.RemoteNameP2P": "Remote Name P2P", + "Ui.Settings.Remote.RemoteNameS3": "Remote Name S3", + "Ui.Settings.Remote.Rename": "Rename", + "Ui.Settings.Selector.CrossPlatform": "Cross-platform", + "Ui.Settings.Selector.Default": "Default", + "Ui.Settings.Setup.RerunWizardButton": "Rerun Wizard Button", + "Ui.Settings.SyncSettings.Fetch": "Fetch", + "Ui.Settings.SyncSettings.Merge": "Merge", + "Ui.Settings.SyncSettings.Overwrite": "Overwrite", + "obsidianLiveSyncSettingTab.logServerConfigurationCheck": "Log Server Configuration Check" +} \ No newline at end of file diff --git a/src/common/messagesJson/en.json b/src/common/messagesJson/en.json index 1ab5002f..8119e154 100644 --- a/src/common/messagesJson/en.json +++ b/src/common/messagesJson/en.json @@ -734,5 +734,111 @@ "Warning! This will have a serious impact on performance. And the logs will not be synchronised under the default name. Please be careful with logs; they often contain your confidential information.": "Warning! This will have a serious impact on performance. And the logs will not be synchronised under the default name. Please be careful with logs; they often contain your confidential information.", "When you save a file in the editor, start a sync automatically": "When you save a file in the editor, start a sync automatically", "Write credentials in the file": "Write credentials in the file", - "Write logs into the file": "Write logs into the file" -} + "Write logs into the file": "Write logs into the file", + "Customization Sync (Beta3)": "Customization Sync (Beta3)", + "Document History": "Document History", + "Hide completely": "Hide completely", + "Highlight diff": "Highlight diff", + "Pick a file to resolve conflict": "Pick a file to resolve conflict", + "Pick a file to show history": "Pick a file to show history", + "Resolve all conflicted files": "Resolve all conflicted files", + "Show full banner": "Show full banner", + "Show history": "Show history", + "Show icon only": "Show icon only", + "Ui.ConflictResolver.FileToResolve": "File To Resolve", + "Ui.History.FileToView": "File To View", + "Ui.Settings.Common.Analyse": "Analyse", + "Ui.Settings.Common.Back": "Back", + "Ui.Settings.Common.Check": "Check", + "Ui.Settings.Common.Configure": "Configure", + "Ui.Settings.Common.Delete": "Delete", + "Ui.Settings.Common.Lock": "Lock", + "Ui.Settings.Common.Open": "Open", + "Ui.Settings.Common.Perform": "Perform", + "Ui.Settings.Common.ResetAll": "Reset all", + "Ui.Settings.Common.ResolveAll": "Resolve All", + "Ui.Settings.Common.Send": "Send", + "Ui.Settings.Common.VerifyAll": "Verify all", + "Ui.Settings.CustomizationSync.WarnChangeDeviceName": "Warn Change Device Name", + "Ui.Settings.CustomizationSync.WarnSetDeviceName": "Warn Set Device Name", + "Ui.Settings.Hatch.CopyIssueReport": "Copy Report to clipboard", + "Ui.Settings.Hatch.DatabaseLabel": "Database Label", + "Ui.Settings.Hatch.DatabaseToStorage": "Database -> Storage", + "Ui.Settings.Hatch.GeneratedReport": "Generated Report", + "Ui.Settings.Hatch.Missing": "Missing", + "Ui.Settings.Hatch.ModifiedSize": "Modified Size", + "Ui.Settings.Hatch.ModifiedSizeActual": "Modified Size Actual", + "Ui.Settings.Hatch.RecreateAll": "Recreate all", + "Ui.Settings.Hatch.RunDoctor": "Run Doctor", + "Ui.Settings.Hatch.ScanBrokenFiles": "Scan for Broken files", + "Ui.Settings.Hatch.ShowHistory": "Show history", + "Ui.Settings.Hatch.StorageLabel": "Storage Label", + "Ui.Settings.Hatch.StorageToDatabase": "Storage -> Database", + "Ui.Settings.Maintenance.GarbageCollection": "Garbage Collection V3 (Beta)", + "Ui.Settings.Maintenance.GarbageCollectionAction": "Perform Garbage Collection", + "Ui.Settings.Maintenance.RebuildingOperations": "Rebuilding Operations (Remote Only)", + "Ui.Settings.Maintenance.ResetReceived": "Reset received", + "Ui.Settings.Maintenance.ResetSentHistory": "Reset sent history", + "Ui.Settings.Maintenance.ScheduleAndRestart": "Schedule and Restart", + "Ui.Settings.Maintenance.SendChunks": "Send chunks", + "Ui.Settings.Maintenance.WarningLockedReadyAction": "Warning Locked Ready Action", + "Ui.Settings.Maintenance.WarningLockedReadyText": "Warning Locked Ready Text", + "Ui.Settings.Maintenance.WarningLockedResolveAction": "Warning Locked Resolve Action", + "Ui.Settings.Maintenance.WarningLockedResolveText": "Warning Locked Resolve Text", + "Ui.Settings.Maintenance.WriteRedFlagAndRestart": "Flag and restart", + "Ui.Settings.Patches.CurrentAdapter": "Current Adapter", + "Ui.Settings.Patches.IndexedDbWarning": "Indexed Db Warning", + "Ui.Settings.Patches.MigratingToIdb": "Migrating To Idb", + "Ui.Settings.Patches.MigratingToIndexedDb": "Migrating To Indexed Db", + "Ui.Settings.Patches.MigrationIdbCompleted": "Migration Idb Completed", + "Ui.Settings.Patches.MigrationIdbCompletedFollowUp": "Migration Idb Completed Follow Up", + "Ui.Settings.Patches.MigrationIndexedDbCompleted": "Migration Indexed Db Completed", + "Ui.Settings.Patches.MigrationIndexedDbCompletedFollowUp": "Migration Indexed Db Completed Follow Up", + "Ui.Settings.Patches.MigrationWarning": "Migration Warning", + "Ui.Settings.Patches.OperationToIdb": "Operation To Idb", + "Ui.Settings.Patches.OperationToIndexedDb": "Operation To Indexed Db", + "Ui.Settings.Patches.RemediationChanged": "Remediation Changed", + "Ui.Settings.Patches.RemediationNoLimit": "Remediation No Limit", + "Ui.Settings.Patches.RemediationRestartLater": "Remediation Restart Later", + "Ui.Settings.Patches.RemediationRestartMessage": "Remediation Restart Message", + "Ui.Settings.Patches.RemediationRestartNow": "Remediation Restart Now", + "Ui.Settings.Patches.RemediationRestarting": "Remediation Restarting", + "Ui.Settings.Patches.RemediationSuffixChanged": "Remediation Suffix Changed", + "Ui.Settings.Patches.RemediationWithValue": "Remediation With Value", + "Ui.Settings.Patches.SwitchToIDB": "Switch To IDB", + "Ui.Settings.Patches.SwitchToIndexedDb": "Switch To Indexed Db", + "Ui.Settings.PowerUsers.ConnectionTweakDesc": "Connection Tweak Desc", + "Ui.Settings.PowerUsers.Default": "Default", + "Ui.Settings.PowerUsers.PromptPassphraseEveryLaunch": "Ask a passphrase at every launch", + "Ui.Settings.PowerUsers.UseCustomPassphrase": "Use a custom passphrase", + "Ui.Settings.Remote.Activate": "Activate", + "Ui.Settings.Remote.ActiveSuffix": "Active Suffix", + "Ui.Settings.Remote.AddConnection": "Add Connection", + "Ui.Settings.Remote.AddRemoteDefaultName": "Add Remote Default Name", + "Ui.Settings.Remote.ConfigureAndChangeRemote": "Configure And Change Remote", + "Ui.Settings.Remote.DeleteRemoteConfirm": "Delete Remote Confirm", + "Ui.Settings.Remote.DeleteRemoteTitle": "Delete Remote Title", + "Ui.Settings.Remote.DisplayName": "Display Name", + "Ui.Settings.Remote.DuplicateRemote": "Duplicate Remote", + "Ui.Settings.Remote.DuplicateRemoteSuffix": "Duplicate Remote Suffix", + "Ui.Settings.Remote.Export": "Export", + "Ui.Settings.Remote.FetchRemoteSettings": "Fetch Remote Settings", + "Ui.Settings.Remote.ImportConnection": "Import Connection", + "Ui.Settings.Remote.ImportConnectionPrompt": "Import Connection Prompt", + "Ui.Settings.Remote.ImportedCouchDb": "Imported Couch Db", + "Ui.Settings.Remote.ImportedRemote": "Imported Remote", + "Ui.Settings.Remote.MoreActions": "More Actions", + "Ui.Settings.Remote.RemoteConfigurationPrefix": "Remote Configuration Prefix", + "Ui.Settings.Remote.RemoteName": "Remote Name", + "Ui.Settings.Remote.RemoteNameCouchDb": "Remote Name Couch Db", + "Ui.Settings.Remote.RemoteNameP2P": "Remote Name P2P", + "Ui.Settings.Remote.RemoteNameS3": "Remote Name S3", + "Ui.Settings.Remote.Rename": "Rename", + "Ui.Settings.Selector.CrossPlatform": "Cross-platform", + "Ui.Settings.Selector.Default": "Default", + "Ui.Settings.Setup.RerunWizardButton": "Rerun Wizard Button", + "Ui.Settings.SyncSettings.Fetch": "Fetch", + "Ui.Settings.SyncSettings.Merge": "Merge", + "Ui.Settings.SyncSettings.Overwrite": "Overwrite", + "obsidianLiveSyncSettingTab.logServerConfigurationCheck": "Log Server Configuration Check" +} \ No newline at end of file diff --git a/src/common/messagesJson/es.json b/src/common/messagesJson/es.json index 60fc1783..afb7e3e1 100644 --- a/src/common/messagesJson/es.json +++ b/src/common/messagesJson/es.json @@ -497,5 +497,111 @@ "Warning! This will have a serious impact on performance. And the logs will not be synchronised under the default name. Please be careful with logs; they often contain your confidential information.": "¡Advertencia! Impacta rendimiento. Los logs no se sincronizan con nombre predeterminado. Contienen información confidencial", "When you save a file in the editor, start a sync automatically": "Iniciar sincronización automática al guardar en editor", "Write credentials in the file": "Escribir credenciales en archivo", - "Write logs into the file": "Escribir logs en archivo" -} + "Write logs into the file": "Escribir logs en archivo", + "Customization Sync (Beta3)": "Customization Sync (Beta3)", + "Document History": "Document History", + "Hide completely": "Hide completely", + "Highlight diff": "Highlight diff", + "Pick a file to resolve conflict": "Pick a file to resolve conflict", + "Pick a file to show history": "Pick a file to show history", + "Resolve all conflicted files": "Resolve all conflicted files", + "Show full banner": "Show full banner", + "Show history": "Show history", + "Show icon only": "Show icon only", + "Ui.ConflictResolver.FileToResolve": "File To Resolve", + "Ui.History.FileToView": "File To View", + "Ui.Settings.Common.Analyse": "Analyse", + "Ui.Settings.Common.Back": "Back", + "Ui.Settings.Common.Check": "Check", + "Ui.Settings.Common.Configure": "Configure", + "Ui.Settings.Common.Delete": "Delete", + "Ui.Settings.Common.Lock": "Lock", + "Ui.Settings.Common.Open": "Open", + "Ui.Settings.Common.Perform": "Perform", + "Ui.Settings.Common.ResetAll": "Reset all", + "Ui.Settings.Common.ResolveAll": "Resolve All", + "Ui.Settings.Common.Send": "Send", + "Ui.Settings.Common.VerifyAll": "Verify all", + "Ui.Settings.CustomizationSync.WarnChangeDeviceName": "Warn Change Device Name", + "Ui.Settings.CustomizationSync.WarnSetDeviceName": "Warn Set Device Name", + "Ui.Settings.Hatch.CopyIssueReport": "Copy Report to clipboard", + "Ui.Settings.Hatch.DatabaseLabel": "Database Label", + "Ui.Settings.Hatch.DatabaseToStorage": "Database -> Storage", + "Ui.Settings.Hatch.GeneratedReport": "Generated Report", + "Ui.Settings.Hatch.Missing": "Missing", + "Ui.Settings.Hatch.ModifiedSize": "Modified Size", + "Ui.Settings.Hatch.ModifiedSizeActual": "Modified Size Actual", + "Ui.Settings.Hatch.RecreateAll": "Recreate all", + "Ui.Settings.Hatch.RunDoctor": "Run Doctor", + "Ui.Settings.Hatch.ScanBrokenFiles": "Scan for Broken files", + "Ui.Settings.Hatch.ShowHistory": "Show history", + "Ui.Settings.Hatch.StorageLabel": "Storage Label", + "Ui.Settings.Hatch.StorageToDatabase": "Storage -> Database", + "Ui.Settings.Maintenance.GarbageCollection": "Garbage Collection V3 (Beta)", + "Ui.Settings.Maintenance.GarbageCollectionAction": "Perform Garbage Collection", + "Ui.Settings.Maintenance.RebuildingOperations": "Rebuilding Operations (Remote Only)", + "Ui.Settings.Maintenance.ResetReceived": "Reset received", + "Ui.Settings.Maintenance.ResetSentHistory": "Reset sent history", + "Ui.Settings.Maintenance.ScheduleAndRestart": "Schedule and Restart", + "Ui.Settings.Maintenance.SendChunks": "Send chunks", + "Ui.Settings.Maintenance.WarningLockedReadyAction": "Warning Locked Ready Action", + "Ui.Settings.Maintenance.WarningLockedReadyText": "Warning Locked Ready Text", + "Ui.Settings.Maintenance.WarningLockedResolveAction": "Warning Locked Resolve Action", + "Ui.Settings.Maintenance.WarningLockedResolveText": "Warning Locked Resolve Text", + "Ui.Settings.Maintenance.WriteRedFlagAndRestart": "Flag and restart", + "Ui.Settings.Patches.CurrentAdapter": "Current Adapter", + "Ui.Settings.Patches.IndexedDbWarning": "Indexed Db Warning", + "Ui.Settings.Patches.MigratingToIdb": "Migrating To Idb", + "Ui.Settings.Patches.MigratingToIndexedDb": "Migrating To Indexed Db", + "Ui.Settings.Patches.MigrationIdbCompleted": "Migration Idb Completed", + "Ui.Settings.Patches.MigrationIdbCompletedFollowUp": "Migration Idb Completed Follow Up", + "Ui.Settings.Patches.MigrationIndexedDbCompleted": "Migration Indexed Db Completed", + "Ui.Settings.Patches.MigrationIndexedDbCompletedFollowUp": "Migration Indexed Db Completed Follow Up", + "Ui.Settings.Patches.MigrationWarning": "Migration Warning", + "Ui.Settings.Patches.OperationToIdb": "Operation To Idb", + "Ui.Settings.Patches.OperationToIndexedDb": "Operation To Indexed Db", + "Ui.Settings.Patches.RemediationChanged": "Remediation Changed", + "Ui.Settings.Patches.RemediationNoLimit": "Remediation No Limit", + "Ui.Settings.Patches.RemediationRestartLater": "Remediation Restart Later", + "Ui.Settings.Patches.RemediationRestartMessage": "Remediation Restart Message", + "Ui.Settings.Patches.RemediationRestartNow": "Remediation Restart Now", + "Ui.Settings.Patches.RemediationRestarting": "Remediation Restarting", + "Ui.Settings.Patches.RemediationSuffixChanged": "Remediation Suffix Changed", + "Ui.Settings.Patches.RemediationWithValue": "Remediation With Value", + "Ui.Settings.Patches.SwitchToIDB": "Switch To IDB", + "Ui.Settings.Patches.SwitchToIndexedDb": "Switch To Indexed Db", + "Ui.Settings.PowerUsers.ConnectionTweakDesc": "Connection Tweak Desc", + "Ui.Settings.PowerUsers.Default": "Default", + "Ui.Settings.PowerUsers.PromptPassphraseEveryLaunch": "Ask a passphrase at every launch", + "Ui.Settings.PowerUsers.UseCustomPassphrase": "Use a custom passphrase", + "Ui.Settings.Remote.Activate": "Activate", + "Ui.Settings.Remote.ActiveSuffix": "Active Suffix", + "Ui.Settings.Remote.AddConnection": "Add Connection", + "Ui.Settings.Remote.AddRemoteDefaultName": "Add Remote Default Name", + "Ui.Settings.Remote.ConfigureAndChangeRemote": "Configure And Change Remote", + "Ui.Settings.Remote.DeleteRemoteConfirm": "Delete Remote Confirm", + "Ui.Settings.Remote.DeleteRemoteTitle": "Delete Remote Title", + "Ui.Settings.Remote.DisplayName": "Display Name", + "Ui.Settings.Remote.DuplicateRemote": "Duplicate Remote", + "Ui.Settings.Remote.DuplicateRemoteSuffix": "Duplicate Remote Suffix", + "Ui.Settings.Remote.Export": "Export", + "Ui.Settings.Remote.FetchRemoteSettings": "Fetch Remote Settings", + "Ui.Settings.Remote.ImportConnection": "Import Connection", + "Ui.Settings.Remote.ImportConnectionPrompt": "Import Connection Prompt", + "Ui.Settings.Remote.ImportedCouchDb": "Imported Couch Db", + "Ui.Settings.Remote.ImportedRemote": "Imported Remote", + "Ui.Settings.Remote.MoreActions": "More Actions", + "Ui.Settings.Remote.RemoteConfigurationPrefix": "Remote Configuration Prefix", + "Ui.Settings.Remote.RemoteName": "Remote Name", + "Ui.Settings.Remote.RemoteNameCouchDb": "Remote Name Couch Db", + "Ui.Settings.Remote.RemoteNameP2P": "Remote Name P2P", + "Ui.Settings.Remote.RemoteNameS3": "Remote Name S3", + "Ui.Settings.Remote.Rename": "Rename", + "Ui.Settings.Selector.CrossPlatform": "Cross-platform", + "Ui.Settings.Selector.Default": "Default", + "Ui.Settings.Setup.RerunWizardButton": "Rerun Wizard Button", + "Ui.Settings.SyncSettings.Fetch": "Fetch", + "Ui.Settings.SyncSettings.Merge": "Merge", + "Ui.Settings.SyncSettings.Overwrite": "Overwrite", + "obsidianLiveSyncSettingTab.logServerConfigurationCheck": "Log Server Configuration Check" +} \ No newline at end of file diff --git a/src/common/messagesJson/ja.json b/src/common/messagesJson/ja.json index 4843bda5..e1a5eef8 100644 --- a/src/common/messagesJson/ja.json +++ b/src/common/messagesJson/ja.json @@ -638,5 +638,111 @@ "Warning! This will have a serious impact on performance. And the logs will not be synchronised under the default name. Please be careful with logs; they often contain your confidential information.": "警告!これはパフォーマンスに重大な影響を与えます。また、ログはデフォルト名では同期されません。ログには機密情報が含まれることが多いため、注意してください。", "When you save a file in the editor, start a sync automatically": "エディタでファイルを保存すると、自動的に同期を開始します", "Write credentials in the file": "認証情報のファイル内保存", - "Write logs into the file": "ファイルにログを記録" -} + "Write logs into the file": "ファイルにログを記録", + "Customization Sync (Beta3)": "Customization Sync (Beta3)", + "Document History": "Document History", + "Hide completely": "Hide completely", + "Highlight diff": "Highlight diff", + "Pick a file to resolve conflict": "Pick a file to resolve conflict", + "Pick a file to show history": "Pick a file to show history", + "Resolve all conflicted files": "Resolve all conflicted files", + "Show full banner": "Show full banner", + "Show history": "Show history", + "Show icon only": "Show icon only", + "Ui.ConflictResolver.FileToResolve": "File To Resolve", + "Ui.History.FileToView": "File To View", + "Ui.Settings.Common.Analyse": "Analyse", + "Ui.Settings.Common.Back": "Back", + "Ui.Settings.Common.Check": "Check", + "Ui.Settings.Common.Configure": "Configure", + "Ui.Settings.Common.Delete": "Delete", + "Ui.Settings.Common.Lock": "Lock", + "Ui.Settings.Common.Open": "Open", + "Ui.Settings.Common.Perform": "Perform", + "Ui.Settings.Common.ResetAll": "Reset all", + "Ui.Settings.Common.ResolveAll": "Resolve All", + "Ui.Settings.Common.Send": "Send", + "Ui.Settings.Common.VerifyAll": "Verify all", + "Ui.Settings.CustomizationSync.WarnChangeDeviceName": "Warn Change Device Name", + "Ui.Settings.CustomizationSync.WarnSetDeviceName": "Warn Set Device Name", + "Ui.Settings.Hatch.CopyIssueReport": "Copy Report to clipboard", + "Ui.Settings.Hatch.DatabaseLabel": "Database Label", + "Ui.Settings.Hatch.DatabaseToStorage": "Database -> Storage", + "Ui.Settings.Hatch.GeneratedReport": "Generated Report", + "Ui.Settings.Hatch.Missing": "Missing", + "Ui.Settings.Hatch.ModifiedSize": "Modified Size", + "Ui.Settings.Hatch.ModifiedSizeActual": "Modified Size Actual", + "Ui.Settings.Hatch.RecreateAll": "Recreate all", + "Ui.Settings.Hatch.RunDoctor": "Run Doctor", + "Ui.Settings.Hatch.ScanBrokenFiles": "Scan for Broken files", + "Ui.Settings.Hatch.ShowHistory": "Show history", + "Ui.Settings.Hatch.StorageLabel": "Storage Label", + "Ui.Settings.Hatch.StorageToDatabase": "Storage -> Database", + "Ui.Settings.Maintenance.GarbageCollection": "Garbage Collection V3 (Beta)", + "Ui.Settings.Maintenance.GarbageCollectionAction": "Perform Garbage Collection", + "Ui.Settings.Maintenance.RebuildingOperations": "Rebuilding Operations (Remote Only)", + "Ui.Settings.Maintenance.ResetReceived": "Reset received", + "Ui.Settings.Maintenance.ResetSentHistory": "Reset sent history", + "Ui.Settings.Maintenance.ScheduleAndRestart": "Schedule and Restart", + "Ui.Settings.Maintenance.SendChunks": "Send chunks", + "Ui.Settings.Maintenance.WarningLockedReadyAction": "Warning Locked Ready Action", + "Ui.Settings.Maintenance.WarningLockedReadyText": "Warning Locked Ready Text", + "Ui.Settings.Maintenance.WarningLockedResolveAction": "Warning Locked Resolve Action", + "Ui.Settings.Maintenance.WarningLockedResolveText": "Warning Locked Resolve Text", + "Ui.Settings.Maintenance.WriteRedFlagAndRestart": "Flag and restart", + "Ui.Settings.Patches.CurrentAdapter": "Current Adapter", + "Ui.Settings.Patches.IndexedDbWarning": "Indexed Db Warning", + "Ui.Settings.Patches.MigratingToIdb": "Migrating To Idb", + "Ui.Settings.Patches.MigratingToIndexedDb": "Migrating To Indexed Db", + "Ui.Settings.Patches.MigrationIdbCompleted": "Migration Idb Completed", + "Ui.Settings.Patches.MigrationIdbCompletedFollowUp": "Migration Idb Completed Follow Up", + "Ui.Settings.Patches.MigrationIndexedDbCompleted": "Migration Indexed Db Completed", + "Ui.Settings.Patches.MigrationIndexedDbCompletedFollowUp": "Migration Indexed Db Completed Follow Up", + "Ui.Settings.Patches.MigrationWarning": "Migration Warning", + "Ui.Settings.Patches.OperationToIdb": "Operation To Idb", + "Ui.Settings.Patches.OperationToIndexedDb": "Operation To Indexed Db", + "Ui.Settings.Patches.RemediationChanged": "Remediation Changed", + "Ui.Settings.Patches.RemediationNoLimit": "Remediation No Limit", + "Ui.Settings.Patches.RemediationRestartLater": "Remediation Restart Later", + "Ui.Settings.Patches.RemediationRestartMessage": "Remediation Restart Message", + "Ui.Settings.Patches.RemediationRestartNow": "Remediation Restart Now", + "Ui.Settings.Patches.RemediationRestarting": "Remediation Restarting", + "Ui.Settings.Patches.RemediationSuffixChanged": "Remediation Suffix Changed", + "Ui.Settings.Patches.RemediationWithValue": "Remediation With Value", + "Ui.Settings.Patches.SwitchToIDB": "Switch To IDB", + "Ui.Settings.Patches.SwitchToIndexedDb": "Switch To Indexed Db", + "Ui.Settings.PowerUsers.ConnectionTweakDesc": "Connection Tweak Desc", + "Ui.Settings.PowerUsers.Default": "Default", + "Ui.Settings.PowerUsers.PromptPassphraseEveryLaunch": "Ask a passphrase at every launch", + "Ui.Settings.PowerUsers.UseCustomPassphrase": "Use a custom passphrase", + "Ui.Settings.Remote.Activate": "Activate", + "Ui.Settings.Remote.ActiveSuffix": "Active Suffix", + "Ui.Settings.Remote.AddConnection": "Add Connection", + "Ui.Settings.Remote.AddRemoteDefaultName": "Add Remote Default Name", + "Ui.Settings.Remote.ConfigureAndChangeRemote": "Configure And Change Remote", + "Ui.Settings.Remote.DeleteRemoteConfirm": "Delete Remote Confirm", + "Ui.Settings.Remote.DeleteRemoteTitle": "Delete Remote Title", + "Ui.Settings.Remote.DisplayName": "Display Name", + "Ui.Settings.Remote.DuplicateRemote": "Duplicate Remote", + "Ui.Settings.Remote.DuplicateRemoteSuffix": "Duplicate Remote Suffix", + "Ui.Settings.Remote.Export": "Export", + "Ui.Settings.Remote.FetchRemoteSettings": "Fetch Remote Settings", + "Ui.Settings.Remote.ImportConnection": "Import Connection", + "Ui.Settings.Remote.ImportConnectionPrompt": "Import Connection Prompt", + "Ui.Settings.Remote.ImportedCouchDb": "Imported Couch Db", + "Ui.Settings.Remote.ImportedRemote": "Imported Remote", + "Ui.Settings.Remote.MoreActions": "More Actions", + "Ui.Settings.Remote.RemoteConfigurationPrefix": "Remote Configuration Prefix", + "Ui.Settings.Remote.RemoteName": "Remote Name", + "Ui.Settings.Remote.RemoteNameCouchDb": "Remote Name Couch Db", + "Ui.Settings.Remote.RemoteNameP2P": "Remote Name P2P", + "Ui.Settings.Remote.RemoteNameS3": "Remote Name S3", + "Ui.Settings.Remote.Rename": "Rename", + "Ui.Settings.Selector.CrossPlatform": "Cross-platform", + "Ui.Settings.Selector.Default": "Default", + "Ui.Settings.Setup.RerunWizardButton": "Rerun Wizard Button", + "Ui.Settings.SyncSettings.Fetch": "Fetch", + "Ui.Settings.SyncSettings.Merge": "Merge", + "Ui.Settings.SyncSettings.Overwrite": "Overwrite", + "obsidianLiveSyncSettingTab.logServerConfigurationCheck": "Log Server Configuration Check" +} \ No newline at end of file diff --git a/src/common/messagesJson/ko.json b/src/common/messagesJson/ko.json index 54730de6..bbfaa0cf 100644 --- a/src/common/messagesJson/ko.json +++ b/src/common/messagesJson/ko.json @@ -601,5 +601,111 @@ "Warning! This will have a serious impact on performance. And the logs will not be synchronised under the default name. Please be careful with logs; they often contain your confidential information.": "경고! 이는 성능에 심각한 영향을 미칩니다. 로그는 기본 이름으로 동기화되지 않습니다. 로그에는 종종 기밀 정보가 포함되어 있으므로 주의해 주세요.", "When you save a file in the editor, start a sync automatically": "편집기에서 파일을 저장할 때 자동으로 동기화를 시작합니다", "Write credentials in the file": "파일에 자격 증명 저장", - "Write logs into the file": "파일에 로그 기록" -} + "Write logs into the file": "파일에 로그 기록", + "Customization Sync (Beta3)": "Customization Sync (Beta3)", + "Document History": "Document History", + "Hide completely": "Hide completely", + "Highlight diff": "Highlight diff", + "Pick a file to resolve conflict": "Pick a file to resolve conflict", + "Pick a file to show history": "Pick a file to show history", + "Resolve all conflicted files": "Resolve all conflicted files", + "Show full banner": "Show full banner", + "Show history": "Show history", + "Show icon only": "Show icon only", + "Ui.ConflictResolver.FileToResolve": "File To Resolve", + "Ui.History.FileToView": "File To View", + "Ui.Settings.Common.Analyse": "Analyse", + "Ui.Settings.Common.Back": "Back", + "Ui.Settings.Common.Check": "Check", + "Ui.Settings.Common.Configure": "Configure", + "Ui.Settings.Common.Delete": "Delete", + "Ui.Settings.Common.Lock": "Lock", + "Ui.Settings.Common.Open": "Open", + "Ui.Settings.Common.Perform": "Perform", + "Ui.Settings.Common.ResetAll": "Reset all", + "Ui.Settings.Common.ResolveAll": "Resolve All", + "Ui.Settings.Common.Send": "Send", + "Ui.Settings.Common.VerifyAll": "Verify all", + "Ui.Settings.CustomizationSync.WarnChangeDeviceName": "Warn Change Device Name", + "Ui.Settings.CustomizationSync.WarnSetDeviceName": "Warn Set Device Name", + "Ui.Settings.Hatch.CopyIssueReport": "Copy Report to clipboard", + "Ui.Settings.Hatch.DatabaseLabel": "Database Label", + "Ui.Settings.Hatch.DatabaseToStorage": "Database -> Storage", + "Ui.Settings.Hatch.GeneratedReport": "Generated Report", + "Ui.Settings.Hatch.Missing": "Missing", + "Ui.Settings.Hatch.ModifiedSize": "Modified Size", + "Ui.Settings.Hatch.ModifiedSizeActual": "Modified Size Actual", + "Ui.Settings.Hatch.RecreateAll": "Recreate all", + "Ui.Settings.Hatch.RunDoctor": "Run Doctor", + "Ui.Settings.Hatch.ScanBrokenFiles": "Scan for Broken files", + "Ui.Settings.Hatch.ShowHistory": "Show history", + "Ui.Settings.Hatch.StorageLabel": "Storage Label", + "Ui.Settings.Hatch.StorageToDatabase": "Storage -> Database", + "Ui.Settings.Maintenance.GarbageCollection": "Garbage Collection V3 (Beta)", + "Ui.Settings.Maintenance.GarbageCollectionAction": "Perform Garbage Collection", + "Ui.Settings.Maintenance.RebuildingOperations": "Rebuilding Operations (Remote Only)", + "Ui.Settings.Maintenance.ResetReceived": "Reset received", + "Ui.Settings.Maintenance.ResetSentHistory": "Reset sent history", + "Ui.Settings.Maintenance.ScheduleAndRestart": "Schedule and Restart", + "Ui.Settings.Maintenance.SendChunks": "Send chunks", + "Ui.Settings.Maintenance.WarningLockedReadyAction": "Warning Locked Ready Action", + "Ui.Settings.Maintenance.WarningLockedReadyText": "Warning Locked Ready Text", + "Ui.Settings.Maintenance.WarningLockedResolveAction": "Warning Locked Resolve Action", + "Ui.Settings.Maintenance.WarningLockedResolveText": "Warning Locked Resolve Text", + "Ui.Settings.Maintenance.WriteRedFlagAndRestart": "Flag and restart", + "Ui.Settings.Patches.CurrentAdapter": "Current Adapter", + "Ui.Settings.Patches.IndexedDbWarning": "Indexed Db Warning", + "Ui.Settings.Patches.MigratingToIdb": "Migrating To Idb", + "Ui.Settings.Patches.MigratingToIndexedDb": "Migrating To Indexed Db", + "Ui.Settings.Patches.MigrationIdbCompleted": "Migration Idb Completed", + "Ui.Settings.Patches.MigrationIdbCompletedFollowUp": "Migration Idb Completed Follow Up", + "Ui.Settings.Patches.MigrationIndexedDbCompleted": "Migration Indexed Db Completed", + "Ui.Settings.Patches.MigrationIndexedDbCompletedFollowUp": "Migration Indexed Db Completed Follow Up", + "Ui.Settings.Patches.MigrationWarning": "Migration Warning", + "Ui.Settings.Patches.OperationToIdb": "Operation To Idb", + "Ui.Settings.Patches.OperationToIndexedDb": "Operation To Indexed Db", + "Ui.Settings.Patches.RemediationChanged": "Remediation Changed", + "Ui.Settings.Patches.RemediationNoLimit": "Remediation No Limit", + "Ui.Settings.Patches.RemediationRestartLater": "Remediation Restart Later", + "Ui.Settings.Patches.RemediationRestartMessage": "Remediation Restart Message", + "Ui.Settings.Patches.RemediationRestartNow": "Remediation Restart Now", + "Ui.Settings.Patches.RemediationRestarting": "Remediation Restarting", + "Ui.Settings.Patches.RemediationSuffixChanged": "Remediation Suffix Changed", + "Ui.Settings.Patches.RemediationWithValue": "Remediation With Value", + "Ui.Settings.Patches.SwitchToIDB": "Switch To IDB", + "Ui.Settings.Patches.SwitchToIndexedDb": "Switch To Indexed Db", + "Ui.Settings.PowerUsers.ConnectionTweakDesc": "Connection Tweak Desc", + "Ui.Settings.PowerUsers.Default": "Default", + "Ui.Settings.PowerUsers.PromptPassphraseEveryLaunch": "Ask a passphrase at every launch", + "Ui.Settings.PowerUsers.UseCustomPassphrase": "Use a custom passphrase", + "Ui.Settings.Remote.Activate": "Activate", + "Ui.Settings.Remote.ActiveSuffix": "Active Suffix", + "Ui.Settings.Remote.AddConnection": "Add Connection", + "Ui.Settings.Remote.AddRemoteDefaultName": "Add Remote Default Name", + "Ui.Settings.Remote.ConfigureAndChangeRemote": "Configure And Change Remote", + "Ui.Settings.Remote.DeleteRemoteConfirm": "Delete Remote Confirm", + "Ui.Settings.Remote.DeleteRemoteTitle": "Delete Remote Title", + "Ui.Settings.Remote.DisplayName": "Display Name", + "Ui.Settings.Remote.DuplicateRemote": "Duplicate Remote", + "Ui.Settings.Remote.DuplicateRemoteSuffix": "Duplicate Remote Suffix", + "Ui.Settings.Remote.Export": "Export", + "Ui.Settings.Remote.FetchRemoteSettings": "Fetch Remote Settings", + "Ui.Settings.Remote.ImportConnection": "Import Connection", + "Ui.Settings.Remote.ImportConnectionPrompt": "Import Connection Prompt", + "Ui.Settings.Remote.ImportedCouchDb": "Imported Couch Db", + "Ui.Settings.Remote.ImportedRemote": "Imported Remote", + "Ui.Settings.Remote.MoreActions": "More Actions", + "Ui.Settings.Remote.RemoteConfigurationPrefix": "Remote Configuration Prefix", + "Ui.Settings.Remote.RemoteName": "Remote Name", + "Ui.Settings.Remote.RemoteNameCouchDb": "Remote Name Couch Db", + "Ui.Settings.Remote.RemoteNameP2P": "Remote Name P2P", + "Ui.Settings.Remote.RemoteNameS3": "Remote Name S3", + "Ui.Settings.Remote.Rename": "Rename", + "Ui.Settings.Selector.CrossPlatform": "Cross-platform", + "Ui.Settings.Selector.Default": "Default", + "Ui.Settings.Setup.RerunWizardButton": "Rerun Wizard Button", + "Ui.Settings.SyncSettings.Fetch": "Fetch", + "Ui.Settings.SyncSettings.Merge": "Merge", + "Ui.Settings.SyncSettings.Overwrite": "Overwrite", + "obsidianLiveSyncSettingTab.logServerConfigurationCheck": "Log Server Configuration Check" +} \ No newline at end of file diff --git a/src/common/messagesJson/ru.json b/src/common/messagesJson/ru.json index 3bfb3169..703fc60f 100644 --- a/src/common/messagesJson/ru.json +++ b/src/common/messagesJson/ru.json @@ -660,5 +660,111 @@ "Warning! This will have a serious impact on performance. And the logs will not be synchronised under the default name. Please be careful with logs; they often contain your confidential information.": "Warning! This will have a serious impact on performance. And the logs will not be synchronised under the default name. Please be careful with logs; they often contain your confidential information.", "When you save a file in the editor, start a sync automatically": "Когда вы сохраняете файл в редакторе, автоматически запускать синхронизацию", "Write credentials in the file": "Записывать учётные данные в файл", - "Write logs into the file": "Записывать логи в файл" -} + "Write logs into the file": "Записывать логи в файл", + "Customization Sync (Beta3)": "Customization Sync (Beta3)", + "Document History": "Document History", + "Hide completely": "Hide completely", + "Highlight diff": "Highlight diff", + "Pick a file to resolve conflict": "Pick a file to resolve conflict", + "Pick a file to show history": "Pick a file to show history", + "Resolve all conflicted files": "Resolve all conflicted files", + "Show full banner": "Show full banner", + "Show history": "Show history", + "Show icon only": "Show icon only", + "Ui.ConflictResolver.FileToResolve": "File To Resolve", + "Ui.History.FileToView": "File To View", + "Ui.Settings.Common.Analyse": "Analyse", + "Ui.Settings.Common.Back": "Back", + "Ui.Settings.Common.Check": "Check", + "Ui.Settings.Common.Configure": "Configure", + "Ui.Settings.Common.Delete": "Delete", + "Ui.Settings.Common.Lock": "Lock", + "Ui.Settings.Common.Open": "Open", + "Ui.Settings.Common.Perform": "Perform", + "Ui.Settings.Common.ResetAll": "Reset all", + "Ui.Settings.Common.ResolveAll": "Resolve All", + "Ui.Settings.Common.Send": "Send", + "Ui.Settings.Common.VerifyAll": "Verify all", + "Ui.Settings.CustomizationSync.WarnChangeDeviceName": "Warn Change Device Name", + "Ui.Settings.CustomizationSync.WarnSetDeviceName": "Warn Set Device Name", + "Ui.Settings.Hatch.CopyIssueReport": "Copy Report to clipboard", + "Ui.Settings.Hatch.DatabaseLabel": "Database Label", + "Ui.Settings.Hatch.DatabaseToStorage": "Database -> Storage", + "Ui.Settings.Hatch.GeneratedReport": "Generated Report", + "Ui.Settings.Hatch.Missing": "Missing", + "Ui.Settings.Hatch.ModifiedSize": "Modified Size", + "Ui.Settings.Hatch.ModifiedSizeActual": "Modified Size Actual", + "Ui.Settings.Hatch.RecreateAll": "Recreate all", + "Ui.Settings.Hatch.RunDoctor": "Run Doctor", + "Ui.Settings.Hatch.ScanBrokenFiles": "Scan for Broken files", + "Ui.Settings.Hatch.ShowHistory": "Show history", + "Ui.Settings.Hatch.StorageLabel": "Storage Label", + "Ui.Settings.Hatch.StorageToDatabase": "Storage -> Database", + "Ui.Settings.Maintenance.GarbageCollection": "Garbage Collection V3 (Beta)", + "Ui.Settings.Maintenance.GarbageCollectionAction": "Perform Garbage Collection", + "Ui.Settings.Maintenance.RebuildingOperations": "Rebuilding Operations (Remote Only)", + "Ui.Settings.Maintenance.ResetReceived": "Reset received", + "Ui.Settings.Maintenance.ResetSentHistory": "Reset sent history", + "Ui.Settings.Maintenance.ScheduleAndRestart": "Schedule and Restart", + "Ui.Settings.Maintenance.SendChunks": "Send chunks", + "Ui.Settings.Maintenance.WarningLockedReadyAction": "Warning Locked Ready Action", + "Ui.Settings.Maintenance.WarningLockedReadyText": "Warning Locked Ready Text", + "Ui.Settings.Maintenance.WarningLockedResolveAction": "Warning Locked Resolve Action", + "Ui.Settings.Maintenance.WarningLockedResolveText": "Warning Locked Resolve Text", + "Ui.Settings.Maintenance.WriteRedFlagAndRestart": "Flag and restart", + "Ui.Settings.Patches.CurrentAdapter": "Current Adapter", + "Ui.Settings.Patches.IndexedDbWarning": "Indexed Db Warning", + "Ui.Settings.Patches.MigratingToIdb": "Migrating To Idb", + "Ui.Settings.Patches.MigratingToIndexedDb": "Migrating To Indexed Db", + "Ui.Settings.Patches.MigrationIdbCompleted": "Migration Idb Completed", + "Ui.Settings.Patches.MigrationIdbCompletedFollowUp": "Migration Idb Completed Follow Up", + "Ui.Settings.Patches.MigrationIndexedDbCompleted": "Migration Indexed Db Completed", + "Ui.Settings.Patches.MigrationIndexedDbCompletedFollowUp": "Migration Indexed Db Completed Follow Up", + "Ui.Settings.Patches.MigrationWarning": "Migration Warning", + "Ui.Settings.Patches.OperationToIdb": "Operation To Idb", + "Ui.Settings.Patches.OperationToIndexedDb": "Operation To Indexed Db", + "Ui.Settings.Patches.RemediationChanged": "Remediation Changed", + "Ui.Settings.Patches.RemediationNoLimit": "Remediation No Limit", + "Ui.Settings.Patches.RemediationRestartLater": "Remediation Restart Later", + "Ui.Settings.Patches.RemediationRestartMessage": "Remediation Restart Message", + "Ui.Settings.Patches.RemediationRestartNow": "Remediation Restart Now", + "Ui.Settings.Patches.RemediationRestarting": "Remediation Restarting", + "Ui.Settings.Patches.RemediationSuffixChanged": "Remediation Suffix Changed", + "Ui.Settings.Patches.RemediationWithValue": "Remediation With Value", + "Ui.Settings.Patches.SwitchToIDB": "Switch To IDB", + "Ui.Settings.Patches.SwitchToIndexedDb": "Switch To Indexed Db", + "Ui.Settings.PowerUsers.ConnectionTweakDesc": "Connection Tweak Desc", + "Ui.Settings.PowerUsers.Default": "Default", + "Ui.Settings.PowerUsers.PromptPassphraseEveryLaunch": "Ask a passphrase at every launch", + "Ui.Settings.PowerUsers.UseCustomPassphrase": "Use a custom passphrase", + "Ui.Settings.Remote.Activate": "Activate", + "Ui.Settings.Remote.ActiveSuffix": "Active Suffix", + "Ui.Settings.Remote.AddConnection": "Add Connection", + "Ui.Settings.Remote.AddRemoteDefaultName": "Add Remote Default Name", + "Ui.Settings.Remote.ConfigureAndChangeRemote": "Configure And Change Remote", + "Ui.Settings.Remote.DeleteRemoteConfirm": "Delete Remote Confirm", + "Ui.Settings.Remote.DeleteRemoteTitle": "Delete Remote Title", + "Ui.Settings.Remote.DisplayName": "Display Name", + "Ui.Settings.Remote.DuplicateRemote": "Duplicate Remote", + "Ui.Settings.Remote.DuplicateRemoteSuffix": "Duplicate Remote Suffix", + "Ui.Settings.Remote.Export": "Export", + "Ui.Settings.Remote.FetchRemoteSettings": "Fetch Remote Settings", + "Ui.Settings.Remote.ImportConnection": "Import Connection", + "Ui.Settings.Remote.ImportConnectionPrompt": "Import Connection Prompt", + "Ui.Settings.Remote.ImportedCouchDb": "Imported Couch Db", + "Ui.Settings.Remote.ImportedRemote": "Imported Remote", + "Ui.Settings.Remote.MoreActions": "More Actions", + "Ui.Settings.Remote.RemoteConfigurationPrefix": "Remote Configuration Prefix", + "Ui.Settings.Remote.RemoteName": "Remote Name", + "Ui.Settings.Remote.RemoteNameCouchDb": "Remote Name Couch Db", + "Ui.Settings.Remote.RemoteNameP2P": "Remote Name P2P", + "Ui.Settings.Remote.RemoteNameS3": "Remote Name S3", + "Ui.Settings.Remote.Rename": "Rename", + "Ui.Settings.Selector.CrossPlatform": "Cross-platform", + "Ui.Settings.Selector.Default": "Default", + "Ui.Settings.Setup.RerunWizardButton": "Rerun Wizard Button", + "Ui.Settings.SyncSettings.Fetch": "Fetch", + "Ui.Settings.SyncSettings.Merge": "Merge", + "Ui.Settings.SyncSettings.Overwrite": "Overwrite", + "obsidianLiveSyncSettingTab.logServerConfigurationCheck": "Log Server Configuration Check" +} \ No newline at end of file diff --git a/src/common/messagesJson/zh-tw.json b/src/common/messagesJson/zh-tw.json index bc7c8185..91459fca 100644 --- a/src/common/messagesJson/zh-tw.json +++ b/src/common/messagesJson/zh-tw.json @@ -63,5 +63,111 @@ "Ui.SetupWizard.SetupRemote.ProceedBucket": "設定儲存桶", "Ui.SetupWizard.SetupRemote.ProceedCouchDb": "設定 CouchDB", "Ui.SetupWizard.SetupRemote.ProceedP2P": "設定 P2P", - "Ui.SetupWizard.SetupRemote.Title": "設定遠端伺服器" -} + "Ui.SetupWizard.SetupRemote.Title": "設定遠端伺服器", + "Customization Sync (Beta3)": "Customization Sync (Beta3)", + "Document History": "Document History", + "Hide completely": "Hide completely", + "Highlight diff": "Highlight diff", + "Pick a file to resolve conflict": "Pick a file to resolve conflict", + "Pick a file to show history": "Pick a file to show history", + "Resolve all conflicted files": "Resolve all conflicted files", + "Show full banner": "Show full banner", + "Show history": "Show history", + "Show icon only": "Show icon only", + "Ui.ConflictResolver.FileToResolve": "File To Resolve", + "Ui.History.FileToView": "File To View", + "Ui.Settings.Common.Analyse": "Analyse", + "Ui.Settings.Common.Back": "Back", + "Ui.Settings.Common.Check": "Check", + "Ui.Settings.Common.Configure": "Configure", + "Ui.Settings.Common.Delete": "Delete", + "Ui.Settings.Common.Lock": "Lock", + "Ui.Settings.Common.Open": "Open", + "Ui.Settings.Common.Perform": "Perform", + "Ui.Settings.Common.ResetAll": "Reset all", + "Ui.Settings.Common.ResolveAll": "Resolve All", + "Ui.Settings.Common.Send": "Send", + "Ui.Settings.Common.VerifyAll": "Verify all", + "Ui.Settings.CustomizationSync.WarnChangeDeviceName": "Warn Change Device Name", + "Ui.Settings.CustomizationSync.WarnSetDeviceName": "Warn Set Device Name", + "Ui.Settings.Hatch.CopyIssueReport": "Copy Report to clipboard", + "Ui.Settings.Hatch.DatabaseLabel": "Database Label", + "Ui.Settings.Hatch.DatabaseToStorage": "Database -> Storage", + "Ui.Settings.Hatch.GeneratedReport": "Generated Report", + "Ui.Settings.Hatch.Missing": "Missing", + "Ui.Settings.Hatch.ModifiedSize": "Modified Size", + "Ui.Settings.Hatch.ModifiedSizeActual": "Modified Size Actual", + "Ui.Settings.Hatch.RecreateAll": "Recreate all", + "Ui.Settings.Hatch.RunDoctor": "Run Doctor", + "Ui.Settings.Hatch.ScanBrokenFiles": "Scan for Broken files", + "Ui.Settings.Hatch.ShowHistory": "Show history", + "Ui.Settings.Hatch.StorageLabel": "Storage Label", + "Ui.Settings.Hatch.StorageToDatabase": "Storage -> Database", + "Ui.Settings.Maintenance.GarbageCollection": "Garbage Collection V3 (Beta)", + "Ui.Settings.Maintenance.GarbageCollectionAction": "Perform Garbage Collection", + "Ui.Settings.Maintenance.RebuildingOperations": "Rebuilding Operations (Remote Only)", + "Ui.Settings.Maintenance.ResetReceived": "Reset received", + "Ui.Settings.Maintenance.ResetSentHistory": "Reset sent history", + "Ui.Settings.Maintenance.ScheduleAndRestart": "Schedule and Restart", + "Ui.Settings.Maintenance.SendChunks": "Send chunks", + "Ui.Settings.Maintenance.WarningLockedReadyAction": "Warning Locked Ready Action", + "Ui.Settings.Maintenance.WarningLockedReadyText": "Warning Locked Ready Text", + "Ui.Settings.Maintenance.WarningLockedResolveAction": "Warning Locked Resolve Action", + "Ui.Settings.Maintenance.WarningLockedResolveText": "Warning Locked Resolve Text", + "Ui.Settings.Maintenance.WriteRedFlagAndRestart": "Flag and restart", + "Ui.Settings.Patches.CurrentAdapter": "Current Adapter", + "Ui.Settings.Patches.IndexedDbWarning": "Indexed Db Warning", + "Ui.Settings.Patches.MigratingToIdb": "Migrating To Idb", + "Ui.Settings.Patches.MigratingToIndexedDb": "Migrating To Indexed Db", + "Ui.Settings.Patches.MigrationIdbCompleted": "Migration Idb Completed", + "Ui.Settings.Patches.MigrationIdbCompletedFollowUp": "Migration Idb Completed Follow Up", + "Ui.Settings.Patches.MigrationIndexedDbCompleted": "Migration Indexed Db Completed", + "Ui.Settings.Patches.MigrationIndexedDbCompletedFollowUp": "Migration Indexed Db Completed Follow Up", + "Ui.Settings.Patches.MigrationWarning": "Migration Warning", + "Ui.Settings.Patches.OperationToIdb": "Operation To Idb", + "Ui.Settings.Patches.OperationToIndexedDb": "Operation To Indexed Db", + "Ui.Settings.Patches.RemediationChanged": "Remediation Changed", + "Ui.Settings.Patches.RemediationNoLimit": "Remediation No Limit", + "Ui.Settings.Patches.RemediationRestartLater": "Remediation Restart Later", + "Ui.Settings.Patches.RemediationRestartMessage": "Remediation Restart Message", + "Ui.Settings.Patches.RemediationRestartNow": "Remediation Restart Now", + "Ui.Settings.Patches.RemediationRestarting": "Remediation Restarting", + "Ui.Settings.Patches.RemediationSuffixChanged": "Remediation Suffix Changed", + "Ui.Settings.Patches.RemediationWithValue": "Remediation With Value", + "Ui.Settings.Patches.SwitchToIDB": "Switch To IDB", + "Ui.Settings.Patches.SwitchToIndexedDb": "Switch To Indexed Db", + "Ui.Settings.PowerUsers.ConnectionTweakDesc": "Connection Tweak Desc", + "Ui.Settings.PowerUsers.Default": "Default", + "Ui.Settings.PowerUsers.PromptPassphraseEveryLaunch": "Ask a passphrase at every launch", + "Ui.Settings.PowerUsers.UseCustomPassphrase": "Use a custom passphrase", + "Ui.Settings.Remote.Activate": "Activate", + "Ui.Settings.Remote.ActiveSuffix": "Active Suffix", + "Ui.Settings.Remote.AddConnection": "Add Connection", + "Ui.Settings.Remote.AddRemoteDefaultName": "Add Remote Default Name", + "Ui.Settings.Remote.ConfigureAndChangeRemote": "Configure And Change Remote", + "Ui.Settings.Remote.DeleteRemoteConfirm": "Delete Remote Confirm", + "Ui.Settings.Remote.DeleteRemoteTitle": "Delete Remote Title", + "Ui.Settings.Remote.DisplayName": "Display Name", + "Ui.Settings.Remote.DuplicateRemote": "Duplicate Remote", + "Ui.Settings.Remote.DuplicateRemoteSuffix": "Duplicate Remote Suffix", + "Ui.Settings.Remote.Export": "Export", + "Ui.Settings.Remote.FetchRemoteSettings": "Fetch Remote Settings", + "Ui.Settings.Remote.ImportConnection": "Import Connection", + "Ui.Settings.Remote.ImportConnectionPrompt": "Import Connection Prompt", + "Ui.Settings.Remote.ImportedCouchDb": "Imported Couch Db", + "Ui.Settings.Remote.ImportedRemote": "Imported Remote", + "Ui.Settings.Remote.MoreActions": "More Actions", + "Ui.Settings.Remote.RemoteConfigurationPrefix": "Remote Configuration Prefix", + "Ui.Settings.Remote.RemoteName": "Remote Name", + "Ui.Settings.Remote.RemoteNameCouchDb": "Remote Name Couch Db", + "Ui.Settings.Remote.RemoteNameP2P": "Remote Name P2P", + "Ui.Settings.Remote.RemoteNameS3": "Remote Name S3", + "Ui.Settings.Remote.Rename": "Rename", + "Ui.Settings.Selector.CrossPlatform": "Cross-platform", + "Ui.Settings.Selector.Default": "Default", + "Ui.Settings.Setup.RerunWizardButton": "Rerun Wizard Button", + "Ui.Settings.SyncSettings.Fetch": "Fetch", + "Ui.Settings.SyncSettings.Merge": "Merge", + "Ui.Settings.SyncSettings.Overwrite": "Overwrite", + "obsidianLiveSyncSettingTab.logServerConfigurationCheck": "Log Server Configuration Check" +} \ No newline at end of file diff --git a/src/common/messagesJson/zh.json b/src/common/messagesJson/zh.json index 5c30d6d5..28683841 100644 --- a/src/common/messagesJson/zh.json +++ b/src/common/messagesJson/zh.json @@ -641,5 +641,111 @@ "Warning! This will have a serious impact on performance. And the logs will not be synchronised under the default name. Please be careful with logs; they often contain your confidential information.": "警告!这将严重影响性能。并且日志不会以默认名称同步。请小心处理日志;它们通常包含您的敏感信息 ", "When you save a file in the editor, start a sync automatically": "当您在编辑器中保存文件时,自动开始同步", "Write credentials in the file": "将凭据写入文件", - "Write logs into the file": "将日志写入文件" -} + "Write logs into the file": "将日志写入文件", + "Customization Sync (Beta3)": "Customization Sync (Beta3)", + "Document History": "Document History", + "Hide completely": "Hide completely", + "Highlight diff": "Highlight diff", + "Pick a file to resolve conflict": "Pick a file to resolve conflict", + "Pick a file to show history": "Pick a file to show history", + "Resolve all conflicted files": "Resolve all conflicted files", + "Show full banner": "Show full banner", + "Show history": "Show history", + "Show icon only": "Show icon only", + "Ui.ConflictResolver.FileToResolve": "File To Resolve", + "Ui.History.FileToView": "File To View", + "Ui.Settings.Common.Analyse": "Analyse", + "Ui.Settings.Common.Back": "Back", + "Ui.Settings.Common.Check": "Check", + "Ui.Settings.Common.Configure": "Configure", + "Ui.Settings.Common.Delete": "Delete", + "Ui.Settings.Common.Lock": "Lock", + "Ui.Settings.Common.Open": "Open", + "Ui.Settings.Common.Perform": "Perform", + "Ui.Settings.Common.ResetAll": "Reset all", + "Ui.Settings.Common.ResolveAll": "Resolve All", + "Ui.Settings.Common.Send": "Send", + "Ui.Settings.Common.VerifyAll": "Verify all", + "Ui.Settings.CustomizationSync.WarnChangeDeviceName": "Warn Change Device Name", + "Ui.Settings.CustomizationSync.WarnSetDeviceName": "Warn Set Device Name", + "Ui.Settings.Hatch.CopyIssueReport": "Copy Report to clipboard", + "Ui.Settings.Hatch.DatabaseLabel": "Database Label", + "Ui.Settings.Hatch.DatabaseToStorage": "Database -> Storage", + "Ui.Settings.Hatch.GeneratedReport": "Generated Report", + "Ui.Settings.Hatch.Missing": "Missing", + "Ui.Settings.Hatch.ModifiedSize": "Modified Size", + "Ui.Settings.Hatch.ModifiedSizeActual": "Modified Size Actual", + "Ui.Settings.Hatch.RecreateAll": "Recreate all", + "Ui.Settings.Hatch.RunDoctor": "Run Doctor", + "Ui.Settings.Hatch.ScanBrokenFiles": "Scan for Broken files", + "Ui.Settings.Hatch.ShowHistory": "Show history", + "Ui.Settings.Hatch.StorageLabel": "Storage Label", + "Ui.Settings.Hatch.StorageToDatabase": "Storage -> Database", + "Ui.Settings.Maintenance.GarbageCollection": "Garbage Collection V3 (Beta)", + "Ui.Settings.Maintenance.GarbageCollectionAction": "Perform Garbage Collection", + "Ui.Settings.Maintenance.RebuildingOperations": "Rebuilding Operations (Remote Only)", + "Ui.Settings.Maintenance.ResetReceived": "Reset received", + "Ui.Settings.Maintenance.ResetSentHistory": "Reset sent history", + "Ui.Settings.Maintenance.ScheduleAndRestart": "Schedule and Restart", + "Ui.Settings.Maintenance.SendChunks": "Send chunks", + "Ui.Settings.Maintenance.WarningLockedReadyAction": "Warning Locked Ready Action", + "Ui.Settings.Maintenance.WarningLockedReadyText": "Warning Locked Ready Text", + "Ui.Settings.Maintenance.WarningLockedResolveAction": "Warning Locked Resolve Action", + "Ui.Settings.Maintenance.WarningLockedResolveText": "Warning Locked Resolve Text", + "Ui.Settings.Maintenance.WriteRedFlagAndRestart": "Flag and restart", + "Ui.Settings.Patches.CurrentAdapter": "Current Adapter", + "Ui.Settings.Patches.IndexedDbWarning": "Indexed Db Warning", + "Ui.Settings.Patches.MigratingToIdb": "Migrating To Idb", + "Ui.Settings.Patches.MigratingToIndexedDb": "Migrating To Indexed Db", + "Ui.Settings.Patches.MigrationIdbCompleted": "Migration Idb Completed", + "Ui.Settings.Patches.MigrationIdbCompletedFollowUp": "Migration Idb Completed Follow Up", + "Ui.Settings.Patches.MigrationIndexedDbCompleted": "Migration Indexed Db Completed", + "Ui.Settings.Patches.MigrationIndexedDbCompletedFollowUp": "Migration Indexed Db Completed Follow Up", + "Ui.Settings.Patches.MigrationWarning": "Migration Warning", + "Ui.Settings.Patches.OperationToIdb": "Operation To Idb", + "Ui.Settings.Patches.OperationToIndexedDb": "Operation To Indexed Db", + "Ui.Settings.Patches.RemediationChanged": "Remediation Changed", + "Ui.Settings.Patches.RemediationNoLimit": "Remediation No Limit", + "Ui.Settings.Patches.RemediationRestartLater": "Remediation Restart Later", + "Ui.Settings.Patches.RemediationRestartMessage": "Remediation Restart Message", + "Ui.Settings.Patches.RemediationRestartNow": "Remediation Restart Now", + "Ui.Settings.Patches.RemediationRestarting": "Remediation Restarting", + "Ui.Settings.Patches.RemediationSuffixChanged": "Remediation Suffix Changed", + "Ui.Settings.Patches.RemediationWithValue": "Remediation With Value", + "Ui.Settings.Patches.SwitchToIDB": "Switch To IDB", + "Ui.Settings.Patches.SwitchToIndexedDb": "Switch To Indexed Db", + "Ui.Settings.PowerUsers.ConnectionTweakDesc": "Connection Tweak Desc", + "Ui.Settings.PowerUsers.Default": "Default", + "Ui.Settings.PowerUsers.PromptPassphraseEveryLaunch": "Ask a passphrase at every launch", + "Ui.Settings.PowerUsers.UseCustomPassphrase": "Use a custom passphrase", + "Ui.Settings.Remote.Activate": "Activate", + "Ui.Settings.Remote.ActiveSuffix": "Active Suffix", + "Ui.Settings.Remote.AddConnection": "Add Connection", + "Ui.Settings.Remote.AddRemoteDefaultName": "Add Remote Default Name", + "Ui.Settings.Remote.ConfigureAndChangeRemote": "Configure And Change Remote", + "Ui.Settings.Remote.DeleteRemoteConfirm": "Delete Remote Confirm", + "Ui.Settings.Remote.DeleteRemoteTitle": "Delete Remote Title", + "Ui.Settings.Remote.DisplayName": "Display Name", + "Ui.Settings.Remote.DuplicateRemote": "Duplicate Remote", + "Ui.Settings.Remote.DuplicateRemoteSuffix": "Duplicate Remote Suffix", + "Ui.Settings.Remote.Export": "Export", + "Ui.Settings.Remote.FetchRemoteSettings": "Fetch Remote Settings", + "Ui.Settings.Remote.ImportConnection": "Import Connection", + "Ui.Settings.Remote.ImportConnectionPrompt": "Import Connection Prompt", + "Ui.Settings.Remote.ImportedCouchDb": "Imported Couch Db", + "Ui.Settings.Remote.ImportedRemote": "Imported Remote", + "Ui.Settings.Remote.MoreActions": "More Actions", + "Ui.Settings.Remote.RemoteConfigurationPrefix": "Remote Configuration Prefix", + "Ui.Settings.Remote.RemoteName": "Remote Name", + "Ui.Settings.Remote.RemoteNameCouchDb": "Remote Name Couch Db", + "Ui.Settings.Remote.RemoteNameP2P": "Remote Name P2P", + "Ui.Settings.Remote.RemoteNameS3": "Remote Name S3", + "Ui.Settings.Remote.Rename": "Rename", + "Ui.Settings.Selector.CrossPlatform": "Cross-platform", + "Ui.Settings.Selector.Default": "Default", + "Ui.Settings.Setup.RerunWizardButton": "Rerun Wizard Button", + "Ui.Settings.SyncSettings.Fetch": "Fetch", + "Ui.Settings.SyncSettings.Merge": "Merge", + "Ui.Settings.SyncSettings.Overwrite": "Overwrite", + "obsidianLiveSyncSettingTab.logServerConfigurationCheck": "Log Server Configuration Check" +} \ No newline at end of file From fdcf9466fffc1230cf339a8c9dcbf1087d294eb2 Mon Sep 17 00:00:00 2001 From: 52sanmao <52sanmao@users.noreply.github.com> Date: Sat, 9 May 2026 10:33:15 +0800 Subject: [PATCH 3/4] i18n: fill all missing keys across all 7 non-English languages to 100% - zh: +93 keys - ja: +96 keys - ko: +133 keys - es: +238 keys - ru: +93 keys - de: +670 keys - zh-tw: +670 keys All 841 keys now present in every language file. Non-translated keys use English as placeholder. --- src/common/messages/combinedMessages.prod.ts | 9292 +++++++++++++++--- src/common/messagesJson/de.json | 672 +- src/common/messagesJson/es.json | 240 +- src/common/messagesJson/ja.json | 98 +- src/common/messagesJson/ko.json | 135 +- src/common/messagesJson/ru.json | 95 +- src/common/messagesJson/zh-tw.json | 672 +- src/common/messagesJson/zh.json | 95 +- 8 files changed, 9670 insertions(+), 1629 deletions(-) diff --git a/src/common/messages/combinedMessages.prod.ts b/src/common/messages/combinedMessages.prod.ts index 6636214b..f2e57ac7 100644 --- a/src/common/messages/combinedMessages.prod.ts +++ b/src/common/messages/combinedMessages.prod.ts @@ -1,5 +1,6 @@ export const _allMessages = { "(BETA) Always overwrite with a newer file": { +<<<<<<< HEAD def: "(BETA) Always overwrite with a newer file", es: "(BETA) Sobrescribir siempre con archivo más nuevo", fr: "(BÊTA) Toujours écraser avec un fichier plus récent", @@ -25,6 +26,51 @@ export const _allMessages = { ko: "(지난 일수, 0으로 설정하면 자동 삭제 비활성화)", ru: "(Дней прошло, 0 для отключения автоматического удаления)", zh: "(已过天数,0为禁用自动删除)", +======= + "def": "(BETA) Always overwrite with a newer file", + "es": "(BETA) Sobrescribir siempre con archivo más nuevo", + "ja": "(ベータ機能) 常に新しいファイルで上書きする", + "ko": "(베타) 항상 새로운 파일로 덮어쓰기", + "ru": "(БЕТА) Всегда перезаписывать более новым файлом", + "zh": "始终使用更新的文件覆盖(测试版)", + "zw-th": "(BETA) Always overwrite with a newer file" + }, + "(Beta) Use ignore files": { + "def": "(Beta) Use ignore files", + "es": "(Beta) Usar archivos de ignorar", + "ja": "(ベータ機能) 除外ファイル(ignore)の使用", + "ko": "(베타) 제외 규칙 파일 사용", + "ru": "(Бета) Использовать файлы игнорирования", + "zh": "(测试版)使用忽略文件", + "zw-th": "(Beta) Use ignore files" + }, + "(Days passed, 0 to disable automatic-deletion)": { + "def": "(Days passed, 0 to disable automatic-deletion)", + "es": "(Días transcurridos, 0 para desactivar)", + "ja": "(経過日数、0で自動削除を無効化)", + "ko": "(지난 일수, 0으로 설정하면 자동 삭제 비활성화)", + "ru": "(Дней прошло, 0 для отключения автоматического удаления)", + "zh": "(已过天数,0为禁用自动删除)", + "zw-th": "(Days passed, 0 to disable automatic-deletion)" + }, + "(ex. Read chunks online) If this option is enabled, LiveSync reads chunks online directly instead of replicating them locally. Increasing Custom chunk size is recommended.": { + "def": "(ex. Read chunks online) If this option is enabled, LiveSync reads chunks online directly instead of replicating them locally. Increasing Custom chunk size is recommended.", + "es": "(Ej: Leer chunks online) Lee chunks directamente en línea. Aumente tamaño de chunks personalizados", + "ja": "(例: チャンクをオンラインで読む) このオプションを有効にすると、LiveSyncはチャンクをローカルに複製せず、直接オンラインで読み込みます。カスタムチャンクサイズを増やすことをお勧めします。", + "ko": "(예: 청크를 원격에서 읽음) 이 옵션을 활성화하면, LiveSync는 청크를 로컬에 복제하지 않고 원격에서 직접 읽습니다. 커스텀 청크 크기를 키우는 것을 권장합니다.", + "ru": "(ex. Read chunks online) If this option is enabled, LiveSync reads chunks online directly instead of replicating them locally. Increasing Custom chunk size is recommended.", + "zh": "(例如,在线读取块)如果启用此选项,LiveSync 将直接在线读取块,而不是在本地复制块。建议增加自定义块大小", + "zw-th": "(ex. Read chunks online) If this option is enabled, LiveSync reads chunks online directly instead of replicating them locally. Increasing Custom chunk size is recommended." + }, + "(MB) If this is set, changes to local and remote files that are larger than this will be skipped. If the file becomes smaller again, a newer one will be used.": { + "def": "(MB) If this is set, changes to local and remote files that are larger than this will be skipped. If the file becomes smaller again, a newer one will be used.", + "es": "(MB) Saltar cambios en archivos locales/remotos mayores a este tamaño. Si se reduce, se usará versión nueva", + "ja": "(MB) この値を設定すると、これより大きいサイズのローカルファイルやリモートファイルの変更はスキップされます。ファイルが再び小さくなった場合は、新しいものが使用されます。", + "ko": "(MB) 이 값이 설정되면, 이보다 큰 로컬 및 원격 파일의 변경 사항은 건너뜁니다. 파일이 다시 작아지면 더 새로운 파일이 사용됩니다.", + "ru": "(MB) If this is set, changes to local and remote files that are larger than this will be skipped. If the file becomes smaller again, a newer one will be used.", + "zh": "(MB)如果设置了此项,大于此大小的本地和远程文件的更改将被跳过。如果文件再次变小,将使用更新的文件", + "zw-th": "(MB) If this is set, changes to local and remote files that are larger than this will be skipped. If the file becomes smaller again, a newer one will be used." +>>>>>>> 7a02c45 (i18n: fill all missing keys across all 7 non-English languages to 100%) }, "(ex. Read chunks online) If this option is enabled, LiveSync reads chunks online directly instead of replicating them locally. Increasing Custom chunk size is recommended.": { @@ -47,6 +93,7 @@ export const _allMessages = { zh: "(MB)如果设置了此项,大于此大小的本地和远程文件的更改将被跳过。如果文件再次变小,将使用更新的文件", }, "(Mega chars)": { +<<<<<<< HEAD def: "(Mega chars)", es: "(Millones de caracteres)", fr: "(Méga caractères)", @@ -110,6 +157,87 @@ export const _allMessages = { ko: "데이터베이스 사용량 분석", ru: "Анализ использования базы данных", zh: "分析数据库使用情况", +======= + "def": "(Mega chars)", + "es": "(Millones de caracteres)", + "ja": "(メガ文字)", + "ko": "(메가 문자)", + "ru": "(Мега символов)", + "zh": "(百万字符)", + "zw-th": "(Mega chars)" + }, + "(Not recommended) If set, credentials will be stored in the file.": { + "def": "(Not recommended) If set, credentials will be stored in the file.", + "es": "(No recomendado) Almacena credenciales en el archivo", + "ja": "(非推奨) 設定した場合、認証情報がファイルに保存されます。", + "ko": "(권장하지 않음) 설정한 경우 자격 증명이 파일에 저장됩니다.", + "ru": "(Not recommended) If set, credentials will be stored in the file.", + "zh": "(不建议)如果设置,凭据将存储在文件中", + "zw-th": "(Not recommended) If set, credentials will be stored in the file." + }, + "(Obsolete) Use an old adapter for compatibility": { + "def": "(Obsolete) Use an old adapter for compatibility", + "es": "(Obsoleto) Usar adaptador antiguo", + "ja": "(廃止済み)古いアダプターを互換性のために利用", + "ko": "(사용 중단) 호환성을 위해 이전 어댑터 사용", + "ru": "(Устарело) Использовать старый адаптер для совместимости", + "zh": "(已弃用)为兼容性使用旧适配器", + "zw-th": "(Obsolete) Use an old adapter for compatibility" + }, + "Access Key": { + "def": "Access Key", + "es": "Clave de acceso", + "ja": "アクセスキー", + "ko": "액세스 키", + "ru": "Ключ доступа", + "zh": "访问密钥", + "zw-th": "Access Key" + }, + "Active Remote Configuration": { + "def": "Active Remote Configuration", + "es": "Active Remote Configuration", + "ja": "Active Remote Configuration", + "ko": "Active Remote Configuration", + "ru": "Активная удалённая конфигурация", + "zh": "生效中的远程配置", + "zw-th": "Active Remote Configuration" + }, + "Always prompt merge conflicts": { + "def": "Always prompt merge conflicts", + "es": "Siempre preguntar en conflictos", + "ja": "常に競合は手動で解決する", + "ko": "항상 병합 충돌 알림", + "ru": "Всегда запрашивать разрешение конфликтов слияния", + "zh": "始终提示合并冲突", + "zw-th": "Always prompt merge conflicts" + }, + "Analyse": { + "def": "Analyse", + "es": "Analyse", + "ja": "Analyse", + "ko": "Analyse", + "ru": "Анализировать", + "zh": "立即分析", + "zw-th": "Analyse" + }, + "Analyse database usage": { + "def": "Analyse database usage", + "es": "Analyse database usage", + "ja": "データベース使用状況を分析", + "ko": "데이터베이스 사용량 분석", + "ru": "Анализ использования базы данных", + "zh": "分析数据库使用情况", + "zw-th": "Analyse database usage" + }, + "Analyse database usage and generate a TSV report for diagnosis yourself. You can paste the generated report with any spreadsheet you like.": { + "def": "Analyse database usage and generate a TSV report for diagnosis yourself. You can paste the generated report with any spreadsheet you like.", + "es": "Analyse database usage and generate a TSV report for diagnosis yourself. You can paste the generated report with any spreadsheet you like.", + "ja": "データベース使用状況を分析し、自分で診断できるよう TSV レポートを生成します。生成したレポートは任意のスプレッドシートに貼り付けて確認できます。", + "ko": "데이터베이스 사용량을 분석하고 직접 진단할 수 있도록 TSV 보고서를 생성합니다. 생성된 보고서는 원하는 스프레드시트에 붙여 넣어 확인할 수 있습니다.", + "ru": "Проанализируйте использование базы данных и создайте TSV-отчёт для самостоятельной диагностики. Полученный отчёт можно вставить в любую удобную для вас таблицу.", + "zh": "分析数据库使用情况并生成 TSV 报告以供您自行诊断。您可以将生成的报告粘贴到您喜欢的任何电子表格中。", + "zw-th": "Analyse database usage and generate a TSV report for diagnosis yourself. You can paste the generated report with any spreadsheet you like." +>>>>>>> 7a02c45 (i18n: fill all missing keys across all 7 non-English languages to 100%) }, "Analyse database usage and generate a TSV report for diagnosis yourself. You can paste the generated report with any spreadsheet you like.": { @@ -121,6 +249,7 @@ export const _allMessages = { zh: "分析数据库使用情况并生成 TSV 报告以供您自行诊断。您可以将生成的报告粘贴到您喜欢的任何电子表格中。", }, "Apply Latest Change if Conflicting": { +<<<<<<< HEAD def: "Apply Latest Change if Conflicting", es: "Aplicar último cambio en conflictos", fr: "Appliquer la dernière modification en cas de conflit", @@ -182,6 +311,78 @@ export const _allMessages = { ko: "필요 시 가져올 청크 묶음 크기", ru: "Размер пакета при запросе по требованию", zh: "按需获取的批量大小", +======= + "def": "Apply Latest Change if Conflicting", + "es": "Aplicar último cambio en conflictos", + "ja": "競合がある場合は最新の変更を適用する", + "ko": "충돌 시 최신 변경 사항 적용", + "ru": "Применить последнее изменение при конфликте", + "zh": "如果冲突则应用最新更改", + "zw-th": "Apply Latest Change if Conflicting" + }, + "Apply preset configuration": { + "def": "Apply preset configuration", + "es": "Aplicar configuración predefinida", + "ja": "プリセットを適用する", + "ko": "프리셋 구성 적용", + "ru": "Применить предустановленную конфигурацию", + "zh": "应用预设配置", + "zw-th": "Apply preset configuration" + }, + "Automatically Sync all files when opening Obsidian.": { + "def": "Automatically Sync all files when opening Obsidian.", + "es": "Sincronizar automáticamente todos los archivos al abrir Obsidian", + "ja": "Obsidian起動時にすべてのファイルを自動同期します。", + "ko": "Obsidian을 열 때 모든 파일을 자동으로 동기화합니다.", + "ru": "Автоматически синхронизировать все файлы при открытии Obsidian.", + "zh": "打开 Obsidian 时自动同步所有文件", + "zw-th": "Automatically Sync all files when opening Obsidian." + }, + "Batch database update": { + "def": "Batch database update", + "es": "Actualización por lotes de BD", + "ja": "データベースのバッチ更新", + "ko": "일괄 데이터베이스 업데이트", + "ru": "Пакетное обновление базы данных", + "zh": "批量数据库更新", + "zw-th": "Batch database update" + }, + "Batch limit": { + "def": "Batch limit", + "es": "Límite de lotes", + "ja": "バッチの上限", + "ko": "일괄 제한", + "ru": "Пакетный лимит", + "zh": "批量限制", + "zw-th": "Batch limit" + }, + "Batch size": { + "def": "Batch size", + "es": "Tamaño de lote", + "ja": "バッチ容量", + "ko": "일괄 크기", + "ru": "Размер пакета", + "zh": "批量大小", + "zw-th": "Batch size" + }, + "Batch size of on-demand fetching": { + "def": "Batch size of on-demand fetching", + "es": "Tamaño de lote para obtención bajo demanda", + "ja": "オンデマンド取得のバッチサイズ", + "ko": "필요 시 가져올 청크 묶음 크기", + "ru": "Размер пакета при запросе по требованию", + "zh": "按需获取的批量大小", + "zw-th": "Batch size of on-demand fetching" + }, + "Before v0.17.16, we used an old adapter for the local database. Now the new adapter is preferred. However, it needs local database rebuilding. Please disable this toggle when you have enough time. If leave it enabled, also while fetching from the remote database, you will be asked to disable this.": { + "def": "Before v0.17.16, we used an old adapter for the local database. Now the new adapter is preferred. However, it needs local database rebuilding. Please disable this toggle when you have enough time. If leave it enabled, also while fetching from the remote database, you will be asked to disable this.", + "es": "Antes de v0.17.16 usábamos adaptador antiguo. Nuevo adaptador requiere reconstruir BD local. Desactive cuando pueda", + "ja": "v0.17.6までは古いアダプターをローカル用のデータベースに使用していましたが、現在は新しいアダプターを推奨しています。しかし、新しいアダプターに変更するにはローカルデータベースの再構築が必要です。有効のままにしておくと、リモートデータベースからフェッチする場合に、この設定を無効にするかの質問が表示されます。", + "ko": "v0.17.16 이전에는 로컬 데이터베이스에 이전 어댑터를 사용했습니다. 이제는 새로운 어댑터를 권장합니다. 하지만 로컬 데이터베이스 재구축이 필요합니다. 충분한 시간이 있을 때 이 토글을 비활성화해 주세요. 활성화된 상태로 두면 원격 데이터베이스에서 가져올 때도 이를 비활성화하라는 메시지가 나타납니다.", + "ru": "Before v0.17.16, we used an old adapter for the local database. Now the new adapter is preferred. However, it needs local database rebuilding. Please disable this toggle when you have enough time. If leave it enabled, also while fetching from the remote database, you will be asked to disable this.", + "zh": "在 v0.17.16 之前,我们使用旧适配器作为本地数据库。现在首选新适配器。但是,它需要重建本地数据库。请在有足够时间时禁用此开关。如果保持启用状态,并且在从远程数据库获取时,系统将要求您禁用此开关。", + "zw-th": "Before v0.17.16, we used an old adapter for the local database. Now the new adapter is preferred. However, it needs local database rebuilding. Please disable this toggle when you have enough time. If leave it enabled, also while fetching from the remote database, you will be asked to disable this." +>>>>>>> 7a02c45 (i18n: fill all missing keys across all 7 non-English languages to 100%) }, "Before v0.17.16, we used an old adapter for the local database. Now the new adapter is preferred. However, it needs local database rebuilding. Please disable this toggle when you have enough time. If leave it enabled, also while fetching from the remote database, you will be asked to disable this.": { @@ -194,6 +395,7 @@ export const _allMessages = { zh: "在 v0.17.16 之前,我们使用旧适配器作为本地数据库。现在首选新适配器。但是,它需要重建本地数据库。请在有足够时间时禁用此开关。如果保持启用状态,并且在从远程数据库获取时,系统将要求您禁用此开关。", }, "Bucket Name": { +<<<<<<< HEAD def: "Bucket Name", es: "Nombre del bucket", fr: "Nom du bucket", @@ -608,6 +810,456 @@ export const _allMessages = { ko: "이 옵션을 활성화하면 충돌이 있어도 문서에 가장 최근 변경 사항을 자동으로 적용합니다", ru: "Включите эту опцию для автоматического применения последних изменений к документам даже при конфликте", zh: "启用此选项可在文档冲突时自动应用最新的更改", +======= + "def": "Bucket Name", + "es": "Nombre del bucket", + "ja": "バケット名", + "ko": "버킷 이름", + "ru": "Имя бакета", + "zh": "存储桶名称", + "zw-th": "Bucket Name" + }, + "Check": { + "def": "Check", + "es": "Verificar", + "ja": "確認", + "ko": "확인", + "ru": "Проверить", + "zh": "立即检查", + "zw-th": "Check" + }, + "cmdConfigSync.showCustomizationSync": { + "def": "Show Customization sync", + "es": "Mostrar sincronización de personalización", + "ja": "カスタマイズ同期を表示", + "ko": "사용자 설정 동기화 표시", + "ru": "Показать синхронизацию настроек", + "zh": "显示自定义同步", + "zw-th": "Show Customization sync" + }, + "Comma separated `.gitignore, .dockerignore`": { + "def": "Comma separated `.gitignore, .dockerignore`", + "es": "Separados por comas: `.gitignore, .dockerignore`", + "ja": "カンマ区切り `.gitignore, .dockerignore`", + "ko": "쉼표로 구분된 `.gitignore, .dockerignore`", + "ru": "Через запятую `.gitignore, .dockerignore`", + "zh": "用逗号分隔,例如 `.gitignore, .dockerignore`", + "zw-th": "Comma separated `.gitignore, .dockerignore`" + }, + "Compute revisions for chunks": { + "def": "Compute revisions for chunks", + "es": "Compute revisions for chunks", + "ja": "チャンクの修正(リビジョン)を計算", + "ko": "청크에 대한 리비전 계산", + "ru": "Вычислять ревизии для чанков", + "zh": "为 chunks 计算修订版本(以前的行为)", + "zw-th": "Compute revisions for chunks" + }, + "Copy Report to clipboard": { + "def": "Copy Report to clipboard", + "es": "Copy Report to clipboard", + "ja": "レポートをクリップボードにコピー", + "ko": "보고서를 클립보드에 복사", + "ru": "Копировать отчёт в буфер обмена", + "zh": "将报告复制到剪贴板", + "zw-th": "Copy Report to clipboard" + }, + "Data Compression": { + "def": "Data Compression", + "es": "Compresión de datos", + "ja": "データ圧縮", + "ko": "데이터 압축", + "ru": "Сжатие данных", + "zh": "数据压缩", + "zw-th": "Data Compression" + }, + "Database Name": { + "def": "Database Name", + "es": "Nombre de la base de datos", + "ja": "データベース名", + "ko": "데이터베이스 이름", + "ru": "Имя базы данных", + "zh": "数据库名称", + "zw-th": "Database Name" + }, + "Database suffix": { + "def": "Database suffix", + "es": "Sufijo de base de datos", + "ja": "データベースの接尾辞(suffix)", + "ko": "데이터베이스 접미사", + "ru": "Суффикс базы данных", + "zh": "数据库后缀", + "zw-th": "Database suffix" + }, + "Delay conflict resolution of inactive files": { + "def": "Delay conflict resolution of inactive files", + "es": "Retrasar resolución de conflictos en archivos inactivos", + "ja": "非アクティブなファイルは、競合解決を先送りする", + "ko": "비활성 파일의 충돌 해결 지연", + "ru": "Отложить разрешение конфликтов для неактивных файлов", + "zh": "推迟解决不活动文件", + "zw-th": "Delay conflict resolution of inactive files" + }, + "Delay merge conflict prompt for inactive files.": { + "def": "Delay merge conflict prompt for inactive files.", + "es": "Retrasar aviso de fusión para archivos inactivos", + "ja": "非アクティブなファイルの競合解決のプロンプトの表示を遅延させる", + "ko": "비활성 파일의 병합 충돌 프롬프트 지연.", + "ru": "Отложить запрос конфликта слияния для неактивных файлов.", + "zh": "推迟手动解决不活动文件", + "zw-th": "Delay merge conflict prompt for inactive files." + }, + "Delete old metadata of deleted files on start-up": { + "def": "Delete old metadata of deleted files on start-up", + "es": "Borrar metadatos viejos al iniciar", + "ja": "削除済みデータのメタデータをクリーンナップする", + "ko": "시작 시 삭제된 파일의 오래된 메타데이터 삭제", + "ru": "Удалять старые метаданные удалённых файлов при запуске", + "zh": "启动时删除已删除文件的旧元数据", + "zw-th": "Delete old metadata of deleted files on start-up" + }, + "Device name": { + "def": "Device name", + "es": "Nombre del dispositivo", + "ja": "デバイス名", + "ko": "기기 이름", + "ru": "Имя устройства", + "zh": "设备名称", + "zw-th": "Device name" + }, + "dialog.yourLanguageAvailable": { + "def": "Self-hosted LiveSync had translations for your language, so the %{Display language} setting was enabled.\n\nNote: Not all messages are translated. We are waiting for your contributions!\nNote 2: If you create an Issue, **please revert to %{lang-def}** and then take screenshots, messages and logs. This can be done in the setting dialogue.\nMay you find it easy to use!", + "es": "Self-hosted LiveSync had translations for your language, so the %{Display language} setting was enabled.\n\nNote: Not all messages are translated. We are waiting for your contributions!\nNote 2: If you create an Issue, **please revert to %{lang-def}** and then take screenshots, messages and logs. This can be done in the setting dialogue.\nMay you find it easy to use!", + "ja": "Self-hosted LiveSync に設定されている言語の翻訳がありましたので、%{Display Language}が適用されました。\n\n注意: 全てのメッセージは翻訳されていません。あなたの貢献をお待ちしています!\nGithubにIssueを作成する際には、 %{Display Language} を一旦 %{lang-def} に戻してから、スクショやメッセージ、ログを収集してください。これは設定から変更できます。\n\n便利に使用できれば幸いです。", + "ko": "Self-hosted LiveSync에서 귀하의 언어로 번역을 제공하므로 %{Display language} 설정이 활성화되었습니다.\n\n참고: 모든 메시지가 번역되지는 않습니다. 귀하의 기여를 기다리고 있습니다!\n참고 2: 이슈를 생성하는 경우 **%{lang-def}로 되돌린 후** 스크린샷, 메시지, 로그를 가져와 주세요. 이는 설정 대화 상자에서 할 수 있습니다.\n간편하게 사용하실 수 있었으면 좋겠습니다!", + "ru": "Self-hosted LiveSync имеет переводы для вашего языка, поэтому была включена настройка языка Display language.\n\nПримечание: Не все сообщения переведены. Мы ждём ваших предложений!\nПримечание 2: При создании Issue, пожалуйста, вернитесь к lang-def, затем сделайте скриншоты, сообщения и логи. Это можно сделать в настройках.\nНадеемся, вам будет удобно использовать!", + "zh": "Self-hosted LiveSync已提供您语言的翻译,因此启用了%{Display language}\n\n注意:并非所有消息都已翻译。我们期待您的贡献!\n注意 2:若您创建问题报告, **请切换回%{lang-def}** ,然后截取屏幕截图、消息和日志,此操作可在设置对话框中完成\n愿您使用顺心!", + "zw-th": "Self-hosted LiveSync had translations for your language, so the %{Display language} setting was enabled.\n\nNote: Not all messages are translated. We are waiting for your contributions!\nNote 2: If you create an Issue, **please revert to %{lang-def}** and then take screenshots, messages and logs. This can be done in the setting dialogue.\nMay you find it easy to use!" + }, + "dialog.yourLanguageAvailable.btnRevertToDefault": { + "def": "Keep %{lang-def}", + "es": "Keep %{lang-def}", + "ja": "Keep %{lang-def}", + "ko": "%{lang-def} 유지", + "ru": "Оставить lang-def", + "zh": "保持%{lang-def}", + "zw-th": "Keep %{lang-def}" + }, + "dialog.yourLanguageAvailable.Title": { + "def": " Translation is available!", + "es": " Translation is available!", + "ja": "翻訳が利用可能です!", + "ko": " 번역을 사용할 수 있습니다!", + "ru": "Доступен перевод!", + "zh": " 翻译可用!", + "zw-th": " Translation is available!" + }, + "Disables logging, only shows notifications. Please disable if you report an issue.": { + "def": "Disables logging, only shows notifications. Please disable if you report an issue.", + "es": "Desactiva registros, solo muestra notificaciones. Desactívelo si reporta un problema.", + "ja": "ログを無効にし、通知のみを表示します。Issueを報告する場合は無効にしてください。", + "ko": "로깅을 비활성화하고 알림만 표시합니다. 문제를 신고하는 경우 비활성화해 주세요.", + "ru": "Отключает логирование, показывает только уведомления. Пожалуйста, отключите при сообщении о проблеме.", + "zh": "禁用日志记录,仅显示通知。如果您报告问题,请禁用此选项", + "zw-th": "Disables logging, only shows notifications. Please disable if you report an issue." + }, + "Display Language": { + "def": "Display Language", + "es": "Idioma de visualización", + "ja": "インターフェースの表示言語", + "ko": "표시 언어", + "ru": "Язык интерфейса", + "zh": "显示语言", + "zw-th": "Display Language" + }, + "Do not check configuration mismatch before replication": { + "def": "Do not check configuration mismatch before replication", + "es": "No verificar incompatibilidades antes de replicar", + "ja": "サーバーから同期する前に設定の不一致を確認しない", + "ko": "복제 전 구성 불일치 확인 안 함", + "ru": "Не проверять несовпадение конфигурации перед репликацией", + "zh": "在复制前不检查配置不匹配", + "zw-th": "Do not check configuration mismatch before replication" + }, + "Do not keep metadata of deleted files.": { + "def": "Do not keep metadata of deleted files.", + "es": "No conservar metadatos de archivos borrados", + "ja": "削除済みファイルのメタデータを保持しない", + "ko": "삭제된 파일의 메타데이터를 보관하지 않습니다.", + "ru": "Не хранить метаданные удалённых файлов.", + "zh": "不保留已删除文件的元数据 ", + "zw-th": "Do not keep metadata of deleted files." + }, + "Do not split chunks in the background": { + "def": "Do not split chunks in the background", + "es": "No dividir chunks en segundo plano", + "ja": "バックグラウンドでチャンクを分割しない", + "ko": "백그라운드에서 청크 분할 안 함", + "ru": "Не разделять чанки в фоновом режиме", + "zh": "不在后台分割 chunks", + "zw-th": "Do not split chunks in the background" + }, + "Do not use internal API": { + "def": "Do not use internal API", + "es": "No usar API interna", + "ja": "内部APIを使用しない", + "ko": "내부 API 사용 안 함", + "ru": "Не использовать внутренний API", + "zh": "不使用内部 API", + "zw-th": "Do not use internal API" + }, + "Doctor.Button.DismissThisVersion": { + "def": "No, and do not ask again until the next release", + "es": "No, and do not ask again until the next release", + "ja": "いいえ、次のリリースまで再度確認しない", + "ko": "아니요, 다음 릴리스까지 다시 묻지 않음", + "ru": "Нет, и не спрашивать до следующего выпуска", + "zh": "拒绝,并且直到下个版本前不再询问", + "zw-th": "No, and do not ask again until the next release" + }, + "Doctor.Button.Fix": { + "def": "Fix it", + "es": "Fix it", + "ja": "修正する", + "ko": "수정", + "ru": "Исправить", + "zh": "修复", + "zw-th": "Fix it" + }, + "Doctor.Button.FixButNoRebuild": { + "def": "Fix it but no rebuild", + "es": "Fix it but no rebuild", + "ja": "修正するが再構築はしない", + "ko": "수정하지만 재구축하지 않음", + "ru": "Исправить без перестроения", + "zh": "修复但不重建", + "zw-th": "Fix it but no rebuild" + }, + "Doctor.Button.No": { + "def": "No", + "es": "No", + "ja": "いいえ", + "ko": "아니요", + "ru": "Нет", + "zh": "拒绝", + "zw-th": "No" + }, + "Doctor.Button.Skip": { + "def": "Leave it as is", + "es": "Leave it as is", + "ja": "そのままにする", + "ko": "그대로 두기", + "ru": "Оставить как есть", + "zh": "保持不变", + "zw-th": "Leave it as is" + }, + "Doctor.Button.Yes": { + "def": "Yes", + "es": "Sí", + "ja": "はい", + "ko": "예", + "ru": "Да", + "zh": "确定", + "zw-th": "Yes" + }, + "Doctor.Dialogue.Main": { + "def": "Hi! Config Doctor has been activated because of ${activateReason}!\nAnd, unfortunately some configurations were detected as potential problems.\nPlease be assured. Let's solve them one by one.\n\nTo let you know ahead of time, we will ask you about the following items.\n\n${issues}\n\nShall we get started?", + "es": "Hi! Config Doctor has been activated because of ${activateReason}!\nAnd, unfortunately some configurations were detected as potential problems.\nPlease be assured. Let's solve them one by one.\n\nTo let you know ahead of time, we will ask you about the following items.\n\n${issues}\n\nShall we get started?", + "ja": "こんにちは!${activateReason}のため、設定診断ツールが起動しました!\n残念ながら、いくつかの設定が潜在的な問題として検出されました。\nご安心ください。一つずつ解決していきましょう。\n\n事前にお知らせしますと、以下の項目についてお尋ねします。\n\n${issues}\n\n始めていいですか?", + "ko": "안녕하세요! ${activateReason} 로 인해 구성 진단 마법사가 활성화되었습니다!\n그리고 일부 구성이 잠재적인 문제로 감지되었습니다.\n안심하세요. 하나씩 해결해 봅시다.\n\n대상 항목은 다음과 같습니다.\n\n${issues}\n\n시작하시겠습니까?", + "ru": "Привет! Диагностика настроек активирована из-за activateReason!\nК сожалению, некоторые настройки были обнаружены как потенциальные проблемы.\nНе волнуйтесь. Давайте решим их по очереди.\n\nСообщаем вам заранее, мы спросим о следующих пунктах.\n\nissues\n\nНачнём?", + "zh": "您好!配置医生已根据您的要求启动(感谢您)!!遗憾的是,检测到部分配置存在潜在问题。请放心,我们将逐一解决这些问题。\n\n提前告知您,我们将就以下事项进行确认:\n\n为数据块计算修订版本(此前行为)\n增强块大小\n\n我们开始处理吗?", + "zw-th": "Hi! Config Doctor has been activated because of ${activateReason}!\nAnd, unfortunately some configurations were detected as potential problems.\nPlease be assured. Let's solve them one by one.\n\nTo let you know ahead of time, we will ask you about the following items.\n\n${issues}\n\nShall we get started?" + }, + "Doctor.Dialogue.MainFix": { + "def": "\n## ${name}\n\n| Current | Ideal |\n|:---:|:---:|\n| ${current} | ${ideal} |\n\n**Recommendation Level:** ${level}\n\n### Why this has been detected?\n\n${reason}\n\n${note}\n\nFix this to the ideal value?", + "es": "\n## ${name}\n\n| Current | Ideal |\n|:---:|:---:|\n| ${current} | ${ideal} |\n\n**Recommendation Level:** ${level}\n\n### Why this has been detected?\n\n${reason}\n\n${note}\n\nFix this to the ideal value?", + "ja": "\n## ${name}\n\n| 現在の値 | 理想値 |\n|:---:|:---:|\n| ${current} | ${ideal} |\n\n**推奨レベル:** ${level}\n\n### 診断理由?\n\n${reason}\n\n${note}\n\nこれを理想値に修正しますか?", + "ko": "**구성 이름:** `${name}`\n**현재 값:** `${current}`, **이상적인 값:** `${ideal}`\n**권장 수준:** ${level}\n**왜 이것이 감지되었나요?**\n${reason}\n\n\n${note}\n\n이상적인 값으로 수정하시겠습니까?", + "ru": "name\n\n| Текущее | Идеальное |\n|:---:|:---:|\n| current | ideal |\n\n**Уровень рекомендации:** level\n\n### Почему это было обнаружено?\n\nreason\n\nnote\n\nИсправить на идеальное значение?", + "zh": "\n## ${name}\n\n| Current | Ideal |\n|:---:|:---:|\n| ${current} | ${ideal} |\n\n**Recommendation Level:** ${level}\n\n### Why this has been detected?\n\n${reason}\n\n${note}\n\nFix this to the ideal value?", + "zw-th": "\n## ${name}\n\n| Current | Ideal |\n|:---:|:---:|\n| ${current} | ${ideal} |\n\n**Recommendation Level:** ${level}\n\n### Why this has been detected?\n\n${reason}\n\n${note}\n\nFix this to the ideal value?" + }, + "Doctor.Dialogue.Title": { + "def": "Self-hosted LiveSync Config Doctor", + "es": "Self-hosted LiveSync Config Doctor", + "ja": "Self-hosted LiveSync 設定診断ツール", + "ko": "Self-hosted LiveSync 구성 진단 마법사", + "ru": "Диагностика Self-hosted LiveSync", + "zh": "Self-hosted LiveSync 配置诊断", + "zw-th": "Self-hosted LiveSync Config Doctor" + }, + "Doctor.Dialogue.TitleAlmostDone": { + "def": "Almost done!", + "es": "Almost done!", + "ja": "あと少しです!", + "ko": "거의 완료되었습니다!", + "ru": "Почти готово!", + "zh": "全部完成!", + "zw-th": "Almost done!" + }, + "Doctor.Dialogue.TitleFix": { + "def": "Fix issue ${current}/${total}", + "es": "Fix issue ${current}/${total}", + "ja": "問題の修正 ${current}/${total}", + "ko": "문제 해결 ${current}/${total}", + "ru": "Исправление проблемы current/total", + "zh": "修复问题 ${current}/${total}", + "zw-th": "Fix issue ${current}/${total}" + }, + "Doctor.Level.Must": { + "def": "Must", + "es": "Must", + "ja": "必須", + "ko": "필수", + "ru": "Обязательно", + "zh": "必须", + "zw-th": "Must" + }, + "Doctor.Level.Necessary": { + "def": "Necessary", + "es": "Necessary", + "ja": "必要", + "ko": "필수", + "ru": "Необходимо", + "zh": "必要", + "zw-th": "Necessary" + }, + "Doctor.Level.Optional": { + "def": "Optional", + "es": "Optional", + "ja": "任意", + "ko": "선택사항", + "ru": "Опционально", + "zh": "可选", + "zw-th": "Optional" + }, + "Doctor.Level.Recommended": { + "def": "Recommended", + "es": "Recommended", + "ja": "推奨", + "ko": "권장", + "ru": "Рекомендуется", + "zh": "推荐", + "zw-th": "Recommended" + }, + "Doctor.Message.NoIssues": { + "def": "No issues detected!", + "es": "No issues detected!", + "ja": "問題は検出されませんでした!", + "ko": "문제가 감지되지 않았습니다!", + "ru": "Проблем не обнаружено!", + "zh": "未发现问题!", + "zw-th": "No issues detected!" + }, + "Doctor.Message.RebuildLocalRequired": { + "def": "Attention! A local database rebuild is required to apply this!", + "es": "Attention! A local database rebuild is required to apply this!", + "ja": "注意!これを適用するにはローカルデータベースの再構築が必要です!", + "ko": "주의! 이를 적용하려면 로컬 데이터베이스 재구축이 필요합니다!", + "ru": "Внимание! Для применения требуется перестроение локальной базы данных!", + "zh": "注意!需要重建本地数据库以应用此项!", + "zw-th": "Attention! A local database rebuild is required to apply this!" + }, + "Doctor.Message.RebuildRequired": { + "def": "Attention! A rebuild is required to apply this!", + "es": "Attention! A rebuild is required to apply this!", + "ja": "注意!これを適用するには再構築が必要です!", + "ko": "주의! 이를 적용하려면 재구축이 필요합니다!", + "ru": "Внимание! Для применения требуется перестроение!", + "zh": "注意!需要重建才能应用此项!", + "zw-th": "Attention! A rebuild is required to apply this!" + }, + "Doctor.Message.SomeSkipped": { + "def": "We left some issues as is. Shall I ask you again on next startup?", + "es": "We left some issues as is. Shall I ask you again on next startup?", + "ja": "いくつかの問題をそのままにしました。次回起動時に再度確認しますか?", + "ko": "일부 문제를 그대로 두었습니다. 다음 시작 시 다시 질문할까요?", + "ru": "Некоторые проблемы оставлены как есть. Спросить снова при следующем запуске?", + "zh": "我们将某些问题留给了以后处理。是否要在下次启动时再次询问您?", + "zw-th": "We left some issues as is. Shall I ask you again on next startup?" + }, + "Doctor.RULES.E2EE_V02500.REASON": { + "def": "The End-to-End Encryption has got now more robust and faster. Also because, the previous E2EE was found to be compromised in a re-conducted code review. It should be applied as soon as possible. Really apologises for your inconvenience. And, this setting is not forward compatible. All synchronised devices must be updated to v0.25.0 or higher. Rebuilds are not required and will be converted from the new transfer to the new format, However, it is recommended to rebuild whenever possible.", + "es": "The End-to-End Encryption has got now more robust and faster. Also because, the previous E2EE was found to be compromised in a re-conducted code review. It should be applied as soon as possible. Really apologises for your inconvenience. And, this setting is not forward compatible. All synchronised devices must be updated to v0.25.0 or higher. Rebuilds are not required and will be converted from the new transfer to the new format, However, it is recommended to rebuild whenever possible.", + "ja": "エンドツーエンド暗号化がより堅牢で高速になりました。また、以前のE2EEは再コードレビューにより脆弱性が発見されました。できるだけ早く適用することをお勧めします。ご不便をおかけして申し訳ありません。また、この設定は下位互換性がありません。すべての同期デバイスをv0.25.0以降にアップデートする必要があります。再構築は必須ではなく、新しい転送から新しいフォーマットに変換されますが、可能な限り再構築をお勧めします。", + "ko": "The End-to-End Encryption has got now more robust and faster. Also because, the previous E2EE was found to be compromised in a re-conducted code review. It should be applied as soon as possible. Really apologises for your inconvenience. And, this setting is not forward compatible. All synchronised devices must be updated to v0.25.0 or higher. Rebuilds are not required and will be converted from the new transfer to the new format, However, it is recommended to rebuild whenever possible.", + "ru": "Сквозное шифрование стало более надёжным и быстрым. Предыдущее E2EE было скомпрометировано. Следует применить как можно скорее.", + "zh": "The End-to-End Encryption has got now more robust and faster. Also because, the previous E2EE was found to be compromised in a re-conducted code review. It should be applied as soon as possible. Really apologises for your inconvenience. And, this setting is not forward compatible. All synchronised devices must be updated to v0.25.0 or higher. Rebuilds are not required and will be converted from the new transfer to the new format, However, it is recommended to rebuild whenever possible.", + "zw-th": "The End-to-End Encryption has got now more robust and faster. Also because, the previous E2EE was found to be compromised in a re-conducted code review. It should be applied as soon as possible. Really apologises for your inconvenience. And, this setting is not forward compatible. All synchronised devices must be updated to v0.25.0 or higher. Rebuilds are not required and will be converted from the new transfer to the new format, However, it is recommended to rebuild whenever possible." + }, + "Enable advanced features": { + "def": "Enable advanced features", + "es": "Habilitar características avanzadas", + "ja": "高度な機能を有効にする", + "ko": "고급 기능 활성화", + "ru": "Включить расширенные функции", + "zh": "启用高级功能", + "zw-th": "Enable advanced features" + }, + "Enable customization sync": { + "def": "Enable customization sync", + "es": "Habilitar sincronización de personalización", + "ja": "カスタマイズ同期を有効", + "ko": "사용자 설정 동기화 활성화", + "ru": "Включить синхронизацию настроек", + "zh": "启用自定义同步", + "zw-th": "Enable customization sync" + }, + "Enable Developers' Debug Tools.": { + "def": "Enable Developers' Debug Tools.", + "es": "Habilitar herramientas de depuración", + "ja": "開発者用デバッグツールを有効にする", + "ko": "개발자 디버그 도구 활성화", + "ru": "Включить инструменты разработчика.", + "zh": "启用开发者调试工具 ", + "zw-th": "Enable Developers' Debug Tools." + }, + "Enable edge case treatment features": { + "def": "Enable edge case treatment features", + "es": "Habilitar manejo de casos límite", + "ja": "エッジケース対応機能を有効にする", + "ko": "특수 사례 처리 기능 활성화", + "ru": "Включить функции обработки граничных случаев", + "zh": "启用边缘情况处理功能", + "zw-th": "Enable edge case treatment features" + }, + "Enable poweruser features": { + "def": "Enable poweruser features", + "es": "Habilitar funciones para usuarios avanzados", + "ja": "エキスパート機能を有効にする", + "ko": "파워 유저 기능 활성화", + "ru": "Включить функции для опытных пользователей", + "zh": "启用高级用户功能", + "zw-th": "Enable poweruser features" + }, + "Enable this if your Object Storage doesn't support CORS": { + "def": "Enable this if your Object Storage doesn't support CORS", + "es": "Habilitar si su almacenamiento no soporta CORS", + "ja": "オブジェクトストレージがCORSをサポートしていない場合は有効にしてください", + "ko": "객체 스토리지가 CORS를 지원하지 않는 경우 활성화하세요", + "ru": "Включите, если ваше объектное хранилище не поддерживает CORS", + "zh": "如果您的对象存储不支持 CORS,请启用此功能 ", + "zw-th": "Enable this if your Object Storage doesn't support CORS" + }, + "Enable this option to automatically apply the most recent change to documents even when it conflicts": { + "def": "Enable this option to automatically apply the most recent change to documents even when it conflicts", + "es": "Aplicar cambios recientes automáticamente aunque generen conflictos", + "ja": "このオプションを有効にすると、競合があっても最新の変更を自動的にドキュメントに適用します", + "ko": "이 옵션을 활성화하면 충돌이 있어도 문서에 가장 최근 변경 사항을 자동으로 적용합니다", + "ru": "Включите эту опцию для автоматического применения последних изменений к документам даже при конфликте", + "zh": "启用此选项可在文档冲突时自动应用最新的更改", + "zw-th": "Enable this option to automatically apply the most recent change to documents even when it conflicts" + }, + "Encrypt contents on the remote database. If you use the plugin's synchronization feature, enabling this is recommended.": { + "def": "Encrypt contents on the remote database. If you use the plugin's synchronization feature, enabling this is recommended.", + "es": "Cifrar contenido en la base de datos remota. Se recomienda habilitar si usa la sincronización del plugin.", + "ja": "リモートデータベースの暗号化(オンにすることを推奨)", + "ko": "원격 데이터베이스의 내용을 암호화합니다. 플러그인의 동기화 기능을 사용하는 경우 활성화를 권장합니다.", + "ru": "Шифровать содержимое на удалённой базе данных. Рекомендуется включить при использовании функции синхронизации плагина.", + "zh": "加密远程数据库中的内容。如果您使用插件的同步功能,则建议启用此功能 ", + "zw-th": "Encrypt contents on the remote database. If you use the plugin's synchronization feature, enabling this is recommended." +>>>>>>> 7a02c45 (i18n: fill all missing keys across all 7 non-English languages to 100%) }, "Encrypt contents on the remote database. If you use the plugin's synchronization feature, enabling this is recommended.": { @@ -620,6 +1272,7 @@ export const _allMessages = { zh: "加密远程数据库中的内容。如果您使用插件的同步功能,则建议启用此功能 ", }, "Encrypting sensitive configuration items": { +<<<<<<< HEAD def: "Encrypting sensitive configuration items", es: "Cifrando elementos sensibles", fr: "Chiffrement des éléments de configuration sensibles", @@ -717,6 +1370,114 @@ export const _allMessages = { ko: "비활성화(토글)되면 청크는 UI 스레드에서 분할됩니다 (이전 동작).", ru: "Если отключено, чанки будут разделяться в основном потоке.", zh: "如果禁用(切换),chunks 将在 UI 线程上分割(以前的行为)", +======= + "def": "Encrypting sensitive configuration items", + "es": "Cifrando elementos sensibles", + "ja": "機密性の高い設定項目の暗号化", + "ko": "민감한 구성 항목 암호화", + "ru": "Шифрование конфиденциальных настроек", + "zh": "加密敏感配置项", + "zw-th": "Encrypting sensitive configuration items" + }, + "Encryption phassphrase. If changed, you should overwrite the server's database with the new (encrypted) files.": { + "def": "Encryption phassphrase. If changed, you should overwrite the server's database with the new (encrypted) files.", + "es": "Frase de cifrado. Si la cambia, sobrescriba la base del servidor con los nuevos archivos cifrados.", + "ja": "暗号化パスフレーズ。変更した場合、新しい(暗号化された)ファイルでサーバーのデータベースを上書きする必要があります。", + "ko": "패스프레이즈는 암호화에 사용되는 긴 암호 문구입니다. 변경한 경우, 암호화된 새 파일로 서버의 데이터베이스를 덮어써야 합니다.", + "ru": "Парольная фраза шифрования. При изменении нужно перезаписать базу данных сервера новыми (зашифрованными) файлами.", + "zh": "加密密码。如果更改,您应该用新的(加密的)文件覆盖服务器的数据库 ", + "zw-th": "Encryption phassphrase. If changed, you should overwrite the server's database with the new (encrypted) files." + }, + "End-to-End Encryption": { + "def": "End-to-End Encryption", + "es": "Cifrado de extremo a extremo", + "ja": "E2E暗号化", + "ko": "종단간 암호화", + "ru": "Сквозное шифрование", + "zh": "端到端加密", + "zw-th": "End-to-End Encryption" + }, + "Endpoint URL": { + "def": "Endpoint URL", + "es": "URL del endpoint", + "ja": "エンドポイントURL", + "ko": "엔드포인트 URL", + "ru": "URL конечной точки", + "zh": "终端URL", + "zw-th": "Endpoint URL" + }, + "Enhance chunk size": { + "def": "Enhance chunk size", + "es": "Mejorar tamaño de chunks", + "ja": "チャンクサイズを最適化する", + "ko": "청크 크기 향상", + "ru": "Улучшить размер чанка", + "zh": "增大块大小", + "zw-th": "Enhance chunk size" + }, + "Fetch chunks on demand": { + "def": "Fetch chunks on demand", + "es": "Obtener chunks bajo demanda", + "ja": "ユーザーのタイミングでチャンクの更新を確認する", + "ko": "필요 시 청크 원격 가져오기", + "ru": "Загружать чанки по требованию", + "zh": "按需获取块", + "zw-th": "Fetch chunks on demand" + }, + "Fetch database with previous behaviour": { + "def": "Fetch database with previous behaviour", + "es": "Obtener BD con comportamiento anterior", + "ja": "以前の動作でデータベースを取得", + "ko": "이전 동작으로 데이터베이스 가져오기", + "ru": "Загрузить базу данных с предыдущим поведением", + "zh": "使用以前的行为获取数据库", + "zw-th": "Fetch database with previous behaviour" + }, + "Filename": { + "def": "Filename", + "es": "Nombre de archivo", + "ja": "ファイル名", + "ko": "파일명", + "ru": "Имя файла", + "zh": "文件名", + "zw-th": "Filename" + }, + "Forces the file to be synced when opened.": { + "def": "Forces the file to be synced when opened.", + "es": "Forzar sincronización al abrir archivo", + "ja": "ファイルを開いたときに強制的に同期します。", + "ko": "파일을 열 때 강제로 동기화합니다.", + "ru": "Принудительно синхронизировать файл при открытии.", + "zh": "打开文件时强制同步该文件 ", + "zw-th": "Forces the file to be synced when opened." + }, + "Handle files as Case-Sensitive": { + "def": "Handle files as Case-Sensitive", + "es": "Manejar archivos como sensibles a mayúsculas", + "ja": "ファイルの大文字・小文字を区別する", + "ko": "파일을 대소문자 구분으로 처리", + "ru": "Обрабатывать файлы с учётом регистра", + "zh": "将文件视为区分大小写", + "zw-th": "Handle files as Case-Sensitive" + }, + "If disabled(toggled), chunks will be split on the UI thread (Previous behaviour).": { + "def": "If disabled(toggled), chunks will be split on the UI thread (Previous behaviour).", + "es": "Si se desactiva, chunks se dividen en hilo UI (comportamiento anterior)", + "ja": "無効(トグル)にすると、チャンクはUIスレッドで分割されます(以前の動作)。", + "ko": "비활성화(토글)되면 청크는 UI 스레드에서 분할됩니다 (이전 동작).", + "ru": "Если отключено, чанки будут разделяться в основном потоке.", + "zh": "如果禁用(切换),chunks 将在 UI 线程上分割(以前的行为)", + "zw-th": "If disabled(toggled), chunks will be split on the UI thread (Previous behaviour)." + }, + "If enabled per-filed efficient customization sync will be used. We need a small migration when enabling this. And all devices should be updated to v0.23.18. Once we enabled this, we lost a compatibility with old versions.": { + "def": "If enabled per-filed efficient customization sync will be used. We need a small migration when enabling this. And all devices should be updated to v0.23.18. Once we enabled this, we lost a compatibility with old versions.", + "es": "Habilita sincronización eficiente por archivo. Requiere migración y actualizar todos dispositivos a v0.23.18. Pierde compatibilidad con versiones antiguas", + "ja": "有効にすると、ファイルごとの効率的なカスタマイズ同期が使用されます。有効化時に小規模な移行が必要です。また、すべてのデバイスをv0.23.18にアップデートする必要があります。一度有効にすると、古いバージョンとの互換性がなくなります。", + "ko": "활성화하면 파일별 효율적인 사용자 설정 동기화가 사용됩니다. 이를 활성화할 때 소규모 데이터 구조 전환이 필요합니다. 모든 기기를 v0.23.18로 업데이트해야 합니다. 이를 활성화하면 이전 버전과의 호환성이 사라집니다.", + "ru": "If enabled per-filed efficient customization sync will be used. We need a small migration when enabling this. And all devices should be updated to v0.23.18. Once we enabled this, we lost a compatibility with old versions.", + "zh": "如果启用,将使用基于文件的、高效的自定义同步。启用此功能需要进行一次小的迁移。所有设备都应更新到 v0.23.18。一旦启用此功能,我们将失去与旧版本的兼容性", + "zw-th": "If enabled per-filed efficient customization sync will be used. We need a small migration when enabling this. And all devices should be updated to v0.23.18. Once we enabled this, we lost a compatibility with old versions." +>>>>>>> 7a02c45 (i18n: fill all missing keys across all 7 non-English languages to 100%) }, "If enabled per-filed efficient customization sync will be used. We need a small migration when enabling this. And all devices should be updated to v0.23.18. Once we enabled this, we lost a compatibility with old versions.": { @@ -729,6 +1490,7 @@ export const _allMessages = { zh: "如果启用,将使用基于文件的、高效的自定义同步。启用此功能需要进行一次小的迁移。所有设备都应更新到 v0.23.18。一旦启用此功能,我们将失去与旧版本的兼容性", }, "If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker.": { +<<<<<<< HEAD def: "If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker.", es: "Divide chunks en máximo 100 ítems. Menos eficiente en deduplicación", fr: "Si activée, les fragments seront découpés en 100 éléments au maximum. Cependant, la déduplication est légèrement moins efficace.", @@ -736,6 +1498,33 @@ export const _allMessages = { ko: "활성화하면 청크는 최대 100개 항목으로 분할됩니다. 하지만 중복 제거 기능이 약간 약해집니다.", ru: "Если включено, чанки будут разделены не более чем на 100 элементов.", zh: "如果启用,数据块将被分割成不超过 100 项。但是,去重效果会稍弱", +======= + "def": "If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker.", + "es": "Divide chunks en máximo 100 ítems. Menos eficiente en deduplicación", + "ja": "有効にすると、チャンクは最大100項目に分割されます。ただし、重複除去の精度は落ちます。", + "ko": "활성화하면 청크는 최대 100개 항목으로 분할됩니다. 하지만 중복 제거 기능이 약간 약해집니다.", + "ru": "Если включено, чанки будут разделены не более чем на 100 элементов.", + "zh": "如果启用,数据块将被分割成不超过 100 项。但是,去重效果会稍弱", + "zw-th": "If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker." + }, + "If enabled, newly created chunks are temporarily kept within the document, and graduated to become independent chunks once stabilised.": { + "def": "If enabled, newly created chunks are temporarily kept within the document, and graduated to become independent chunks once stabilised.", + "es": "Chunks nuevos se mantienen temporalmente en el documento hasta estabilizarse", + "ja": "有効にすると、新しく作成されたチャンクはドキュメント内に一時的に保持され、安定したら独立したチャンクになります。", + "ko": "활성화하면 새로 생성된 변경 기록(청크)은 문서 안에 임시로 보관되며, 일정 조건을 만족하면 자동으로 문서 밖으로 분리되어 저장됩니다.", + "ru": "Если включено, вновь созданные чанки временно хранятся в документе.", + "zh": "如果启用,新创建的数据块将暂时保留在文档中,并在稳定后成为独立数据块", + "zw-th": "If enabled, newly created chunks are temporarily kept within the document, and graduated to become independent chunks once stabilised." + }, + "If enabled, the ⛔ icon will be shown inside the status instead of the file warnings banner. No details will be shown.": { + "def": "If enabled, the ⛔ icon will be shown inside the status instead of the file warnings banner. No details will be shown.", + "es": "Si se activa, se mostrará el icono ⛔ en el estado en lugar del banner de advertencia de archivos. No se mostrarán detalles.", + "ja": "有効にすると、ファイル警告バナーの代わりにステータス内へ ⛔ アイコンのみを表示します。詳細は表示されません。", + "ko": "활성화하면 파일 경고 배너 대신 상태 영역에 ⛔ 아이콘만 표시됩니다. 자세한 내용은 표시되지 않습니다.", + "ru": "Если включено, значок будет показан внутри статуса.", + "zh": "如果启用,状态栏内将显示 ⛔ 图标,而非文件警告横幅,不会显示任何详细信息。", + "zw-th": "If enabled, the ⛔ icon will be shown inside the status instead of the file warnings banner. No details will be shown." +>>>>>>> 7a02c45 (i18n: fill all missing keys across all 7 non-English languages to 100%) }, "If enabled, newly created chunks are temporarily kept within the document, and graduated to become independent chunks once stabilised.": { @@ -758,6 +1547,7 @@ export const _allMessages = { zh: "如果启用,状态栏内将显示 ⛔ 图标,而非文件警告横幅,不会显示任何详细信息。", }, "If enabled, the file under 1kb will be processed in the UI thread.": { +<<<<<<< HEAD def: "If enabled, the file under 1kb will be processed in the UI thread.", es: "Archivos <1kb se procesan en hilo UI", fr: "Si activée, les fichiers de moins de 1 Ko seront traités sur le thread UI.", @@ -792,6 +1582,69 @@ export const _allMessages = { ko: "이 옵션이 활성화되면 모든 파일이 대소문자를 구분하여 처리됩니다 (이전 동작).", ru: "Если включено, все файлы обрабатываются с учётом регистра.", zh: "如果启用,所有文件都将视为区分大小写(以前的行为)", +======= + "def": "If enabled, the file under 1kb will be processed in the UI thread.", + "es": "Archivos <1kb se procesan en hilo UI", + "ja": "有効にすると、1kb未満のファイルはUIスレッドで処理されます。", + "ko": "활성화하면 1kb 미만의 파일은 UI 스레드에서 처리됩니다.", + "ru": "Если включено, файлы меньше 1КБ будут обрабатываться в основном потоке.", + "zh": "如果启用,小于 1kb 的文件将在 UI 线程中处理", + "zw-th": "If enabled, the file under 1kb will be processed in the UI thread." + }, + "If enabled, the notification of hidden files change will be suppressed.": { + "def": "If enabled, the notification of hidden files change will be suppressed.", + "es": "Si se habilita, se suprimirá la notificación de cambios en archivos ocultos.", + "ja": "有効にすると、隠しファイルの変更通知が抑制されます。", + "ko": "활성화하면 숨겨진 파일 변경 알림이 억제됩니다.", + "ru": "Если включено, уведомление об изменении скрытых файлов будет подавлено.", + "zh": "如果启用,将不再通知隐藏文件被更改", + "zw-th": "If enabled, the notification of hidden files change will be suppressed." + }, + "If this enabled, all chunks will be stored with the revision made from its content. (Previous behaviour)": { + "def": "If this enabled, all chunks will be stored with the revision made from its content. (Previous behaviour)", + "es": "Si se habilita, todos los chunks se almacenan con la revisión hecha desde su contenido. (comportamiento anterior)", + "ja": "有効にすると、すべてのチャンクはコンテンツから作成されたリビジョンと共に保存されます(以前の動作)。", + "ko": "이 옵션이 활성화되면 모든 청크는 콘텐츠에서 생성된 리비전과 함께 저장됩니다. (이전 동작)", + "ru": "Если включено, все чанки будут храниться с ревизией из содержимого.", + "zh": "如果启用,所有 chunks 将使用根据其内容生成的修订版本存储(以前的行为)", + "zw-th": "If this enabled, all chunks will be stored with the revision made from its content. (Previous behaviour)" + }, + "If this enabled, All files are handled as case-Sensitive (Previous behaviour).": { + "def": "If this enabled, All files are handled as case-Sensitive (Previous behaviour).", + "es": "Si se habilita, todos los archivos se manejan como sensibles a mayúsculas (comportamiento anterior)", + "ja": "有効にすると、すべてのファイルは大文字小文字を区別して処理されます(以前の動作)。", + "ko": "이 옵션이 활성화되면 모든 파일이 대소문자를 구분하여 처리됩니다 (이전 동작).", + "ru": "Если включено, все файлы обрабатываются с учётом регистра.", + "zh": "如果启用,所有文件都将视为区分大小写(以前的行为)", + "zw-th": "If this enabled, All files are handled as case-Sensitive (Previous behaviour)." + }, + "If this enabled, chunks will be split into semantically meaningful segments. Not all platforms support this feature.": { + "def": "If this enabled, chunks will be split into semantically meaningful segments. Not all platforms support this feature.", + "es": "Divide chunks en segmentos semánticos. No todos los sistemas lo soportan", + "ja": "有効にすると、チャンクは意味的に有意なセグメントに分割されます。すべてのプラットフォームがこの機能をサポートしているわけではありません。", + "ko": "이 옵션을 활성화하면 청크가 문단이나 의미 단위로 나뉘어 저장됩니다. 단, 이 기능은 일부 플랫폼에서는 지원되지 않을 수 있습니다.", + "ru": "Если включено, чанки будут разделены на семантически значимые сегменты.", + "zh": "如果启用此功能,数据块将被分割成具有语义意义的段落。并非所有平台都支持此功能", + "zw-th": "If this enabled, chunks will be split into semantically meaningful segments. Not all platforms support this feature." + }, + "If this is set, changes to local files which are matched by the ignore files will be skipped. Remote changes are determined using local ignore files.": { + "def": "If this is set, changes to local files which are matched by the ignore files will be skipped. Remote changes are determined using local ignore files.", + "es": "Saltar cambios en archivos locales que coincidan con ignore files. Cambios remotos usan ignore files locales", + "ja": "これを設定すると、除外ファイルに一致するローカルファイルの変更はスキップされます。リモートの変更はローカルの無視ファイルを使用して判定されます。", + "ko": "이 옵션을 활성화하면, 제외 규칙 파일에 일치하는 로컬 파일의 변경 사항은 건너뜁니다. 원격 변경 여부 또한 로컬의 제외 규칙 파일에 따라 판단됩니다.", + "ru": "If this is set, changes to local files which are matched by the ignore files will be skipped. Remote changes are determined using local ignore files.", + "zh": "如果设置了此项,与忽略文件匹配的本地文件的更改将被跳过。远程更改使用本地忽略文件确定", + "zw-th": "If this is set, changes to local files which are matched by the ignore files will be skipped. Remote changes are determined using local ignore files." + }, + "If this option is enabled, PouchDB will hold the connection open for 60 seconds, and if no change arrives in that time, close and reopen the socket, instead of holding it open indefinitely. Useful when a proxy limits request duration but can increase resource usage.": { + "def": "If this option is enabled, PouchDB will hold the connection open for 60 seconds, and if no change arrives in that time, close and reopen the socket, instead of holding it open indefinitely. Useful when a proxy limits request duration but can increase resource usage.", + "es": "Mantiene conexión 60s. Si no hay cambios, reinicia socket. Útil con proxies limitantes", + "ja": "このオプションを有効にすると、PouchDBは接続を60秒間保持し、その間に通信がない場合、一度接続を閉じて再接続します。接続を無期限に保持する代わりにこの動作を行います。プロキシ(Cloudflareなど)がリクエストの持続時間を制限している場合に有用ですが、リソース使用量が増加する可能性があります。", + "ko": "이 옵션이 활성화되면 PouchDB는 연결을 더이상 무한히 열어두지 않고 60초 동안 유지합니다. 그 시간 내에 변경 사항이 없으면 소켓을 닫고 다시 엽니다. 프록시가 요청 지속 시간을 제한할 때 유용하지만 리소스 사용량이 증가할 수 있습니다.", + "ru": "If this option is enabled, PouchDB will hold the connection open for 60 seconds, and if no change arrives in that time, close and reopen the socket, instead of holding it open indefinitely. Useful when a proxy limits request duration but can increase resource usage.", + "zh": "如果启用此选项,PouchDB 将保持连接打开 60 秒,如果在此时间内没有更改到达,则关闭并重新打开套接字,而不是无限期保持打开。当代理限制请求持续时间时有用,但可能会增加资源使用ß", + "zw-th": "If this option is enabled, PouchDB will hold the connection open for 60 seconds, and if no change arrives in that time, close and reopen the socket, instead of holding it open indefinitely. Useful when a proxy limits request duration but can increase resource usage." +>>>>>>> 7a02c45 (i18n: fill all missing keys across all 7 non-English languages to 100%) }, "If this enabled, chunks will be split into semantically meaningful segments. Not all platforms support this feature.": { @@ -824,6 +1677,7 @@ export const _allMessages = { zh: "如果启用此选项,PouchDB 将保持连接打开 60 秒,如果在此时间内没有更改到达,则关闭并重新打开套接字,而不是无限期保持打开。当代理限制请求持续时间时有用,但可能会增加资源使用ß", }, "Ignore files": { +<<<<<<< HEAD def: "Ignore files", es: "Archivos a ignorar", fr: "Fichiers d'exclusion", @@ -1002,6 +1856,195 @@ export const _allMessages = { ko: "繁體中文", ru: "繁體中文", zh: "繁體中文", +======= + "def": "Ignore files", + "es": "Archivos a ignorar", + "ja": "除外ファイル", + "ko": "제외 규칙 파일", + "ru": "Файлы для игнорирования", + "zh": "忽略文件", + "zw-th": "Ignore files" + }, + "Incubate Chunks in Document": { + "def": "Incubate Chunks in Document", + "es": "Incubar chunks en documento", + "ja": "ドキュメント内でチャンクを一時保管する", + "ko": "문서 내 변경 기록 임시 보관", + "ru": "Инкубировать чанки в документе", + "zh": "在文档中孵化块", + "zw-th": "Incubate Chunks in Document" + }, + "Interval (sec)": { + "def": "Interval (sec)", + "es": "Intervalo (segundos)", + "ja": "秒", + "ko": "간격 (초)", + "ru": "Интервал (сек)", + "zh": "间隔(秒)", + "zw-th": "Interval (sec)" + }, + "K.exp": { + "def": "Experimental", + "es": "Experimental", + "ja": "試験機能", + "ko": "실험 기능", + "ru": "Экспериментальная", + "zh": "实验性", + "zw-th": "Experimental" + }, + "K.long_p2p_sync": { + "def": "%{title_p2p_sync}", + "es": "%{title_p2p_sync}", + "ja": "%{title_p2p_sync} (%{exp})", + "ko": "%{title_p2p_sync} (%{exp})", + "ru": "title_p2p_sync", + "zh": "%{title_p2p_sync} (%{exp})", + "zw-th": "%{title_p2p_sync}" + }, + "K.P2P": { + "def": "%{Peer}-to-%{Peer}", + "es": "%{Peer}-to-%{Peer}", + "ja": "%{Peer}-to-%{Peer}", + "ko": "%{Peer}-to-%{Peer}", + "ru": "Peer-к-Peer", + "zh": "%{Peer}-to-%{Peer}", + "zw-th": "%{Peer}-to-%{Peer}" + }, + "K.Peer": { + "def": "Peer", + "es": "Peer", + "ja": "Peer", + "ko": "피어", + "ru": "Устройство", + "zh": "Peer", + "zw-th": "Peer" + }, + "K.ScanCustomization": { + "def": "Scan customization", + "es": "Scan customization", + "ja": "Scan customization", + "ko": "사용자 설정 검색", + "ru": "Scan customization", + "zh": "扫描自定义", + "zw-th": "Scan customization" + }, + "K.short_p2p_sync": { + "def": "P2P Sync", + "es": "P2P Sync", + "ja": "P2P Sync (%{exp})", + "ko": "P2P 동기화 (%{exp})", + "ru": "P2P Синхр.", + "zh": "P2P同步(%{exp})", + "zw-th": "P2P Sync" + }, + "K.title_p2p_sync": { + "def": "Peer-to-Peer Sync", + "es": "Peer-to-Peer Sync", + "ja": "Peer-to-Peer Sync", + "ko": "피어 투 피어(P2P) 동기화", + "ru": "Синхронизация между устройствами", + "zh": "Peer-to-Peer同步", + "zw-th": "Peer-to-Peer Sync" + }, + "Keep empty folder": { + "def": "Keep empty folder", + "es": "Mantener carpetas vacías", + "ja": "空フォルダの維持", + "ko": "빈 폴더 유지", + "ru": "Сохранять пустые папки", + "zh": "保留空文件夹", + "zw-th": "Keep empty folder" + }, + "lang_def": { + "def": "Default", + "es": "Predeterminado", + "ja": "デフォルト", + "ko": "기본값", + "ru": "По умолчанию", + "zh": "Default", + "zw-th": "Default" + }, + "lang-de": { + "def": "Deutsche", + "es": "Alemán", + "ja": "Deutsche", + "ko": "Deutsche", + "ru": "Deutsch", + "zh": "Deutsche", + "zw-th": "Deutsche" + }, + "lang-def": { + "def": "%{lang_def}", + "es": "%{lang_def}", + "ja": "%{lang_def}", + "ko": "%{lang_def}", + "ru": "lang_def", + "zh": "%{lang_def}", + "zw-th": "%{lang_def}" + }, + "lang-es": { + "def": "Español", + "es": "Español", + "ja": "Español", + "ko": "Español", + "ru": "Español", + "zh": "Español", + "zw-th": "Español" + }, + "lang-ja": { + "def": "日本語", + "es": "Japonés", + "ja": "日本語", + "ko": "日本語", + "ru": "日本語", + "zh": "日本語", + "zw-th": "日本語" + }, + "lang-ko": { + "def": "한국어", + "es": "한국어", + "ja": "한국어", + "ko": "한국어", + "ru": "한국어", + "zh": "한국어", + "zw-th": "한국어" + }, + "lang-ru": { + "def": "Русский", + "es": "Ruso", + "ja": "Русский", + "ko": "Русский", + "ru": "Русский", + "zh": "Русский", + "zw-th": "Русский" + }, + "lang-zh": { + "def": "简体中文", + "es": "Chino simplificado", + "ja": "简体中文", + "ko": "简体中文", + "ru": "简体中文", + "zh": "简体中文", + "zw-th": "简体中文" + }, + "lang-zh-tw": { + "def": "繁體中文", + "es": "Chino tradicional", + "ja": "繁體中文", + "ko": "繁體中文", + "ru": "繁體中文", + "zh": "繁體中文", + "zw-th": "繁體中文" + }, + "LiveSync could not handle multiple vaults which have same name without different prefix, This should be automatically configured.": { + "def": "LiveSync could not handle multiple vaults which have same name without different prefix, This should be automatically configured.", + "es": "LiveSync no puede manejar múltiples bóvedas con mismo nombre sin prefijo. Se configura automáticamente", + "ja": "LiveSyncは、接頭辞(プレフィックス)のない同名の保管庫(Vault)を扱うことができません。これは自動的に設定されます。", + "ko": "LiveSync는 서로 다른 접두사 없이 동일한 이름을 가진 여러 볼트를 처리할 수 없습니다. 이는 자동으로 구성되어야 합니다.", + "ru": "LiveSync не может обработать несколько хранилищ с одинаковым именем без разных префиксов.", + "zh": "LiveSync 无法处理具有相同名称但没有不同前缀的多个库。这应该自动配置", + "zw-th": "LiveSync could not handle multiple vaults which have same name without different prefix, This should be automatically configured." +>>>>>>> 7a02c45 (i18n: fill all missing keys across all 7 non-English languages to 100%) }, "LiveSync could not handle multiple vaults which have same name without different prefix, This should be automatically configured.": { @@ -1014,6 +2057,7 @@ export const _allMessages = { zh: "LiveSync 无法处理具有相同名称但没有不同前缀的多个库。这应该自动配置", }, "liveSyncReplicator.beforeLiveSync": { +<<<<<<< HEAD def: "Before LiveSync, start OneShot once...", es: "Antes de LiveSync, inicia OneShot...", fr: "Avant LiveSync, lancement d'un OneShot initial...", @@ -2104,2051 +3148,5283 @@ export const _allMessages = { ko: "시작 시 예상 원격 스토리지 크기가 초과되면 알림", ru: "Уведомлять, когда оценочный размер удалённого хранилища превышает при запуске", zh: "启动时当估计的远程存储大小超出时通知", +======= + "def": "Before LiveSync, start OneShot once...", + "es": "Antes de LiveSync, inicia OneShot...", + "ja": "LiveSyncの前に、まずOneShotを開始します...", + "ko": "LiveSync 전에 OneShot을 먼저 시작합니다...", + "ru": "Перед LiveSync запускаем OneShot...", + "zh": "在LiveSync前,先启动OneShot一次...", + "zw-th": "Before LiveSync, start OneShot once..." }, - "Number of batches to process at a time. Defaults to 40. Minimum is 2. This along with batch size controls how many docs are kept in memory at a time.": - { - def: "Number of batches to process at a time. Defaults to 40. Minimum is 2. This along with batch size controls how many docs are kept in memory at a time.", - es: "Número de lotes a procesar. Default 40, mínimo 2. Controla documentos en memoria", - fr: "Nombre de lots à traiter à la fois. Par défaut 40. Minimum 2. Ceci, avec la taille de lot, contrôle le nombre de documents conservés en mémoire à la fois.", - ja: "1度に処理するバッチの数。デフォルトは40、最小は2。この数値は、どれだけの容量の書類がメモリに保存されるかも定義します。", - ko: "한 번에 처리할 일괄 처리 수입니다. 기본값은 40입니다. 최소값은 2입니다. 이는 일괄 크기와 함께 메모리에 보관되는 문서 수를 제어합니다.", - ru: "Number of batches to process at a time. Defaults to 40. Minimum is 2. This along with batch size controls how many docs are kept in memory at a time.", - zh: "一次处理的批量数量。默认为 40。最小为 2。此设置与批量大小一起控制一次在内存中保留多少文档", - }, - "Number of changes to sync at a time. Defaults to 50. Minimum is 2.": { - def: "Number of changes to sync at a time. Defaults to 50. Minimum is 2.", - es: "Número de cambios a sincronizar simultáneamente. Default 50, mínimo 2", - fr: "Nombre de modifications à synchroniser à la fois. Par défaut 50. Minimum 2.", - ja: "一度に同期する変更の数。デフォルトは50、最小は2。", - ko: "한 번에 동기화할 변경 사항의 수입니다. 기본값은 50입니다. 최소값은 2입니다.", - ru: "Количество изменений для синхронизации за раз. По умолчанию 50. Минимум 2.", - zh: "一次同步的更改数量。默认为 50。最小为 2。", + "liveSyncReplicator.cantReplicateLowerValue": { + "def": "We can't replicate more lower value.", + "es": "No podemos replicar un valor más bajo.", + "ja": "これ以上低い値ではレプリケーション(複製)できません。", + "ko": "더 낮은 값으로 복제할 수 없습니다.", + "ru": "Нельзя реплицировать с меньшим значением.", + "zh": "我们无法复制更小的值", + "zw-th": "We can't replicate more lower value." }, - "obsidianLiveSyncSettingTab.btnApply": { - def: "Apply", - es: "Aplicar", - fr: "Appliquer", - ja: "適用", - ko: "적용", - ru: "Применить", - zh: "应用", + "liveSyncReplicator.checkingLastSyncPoint": { + "def": "Looking for the point last synchronized point.", + "es": "Buscando el último punto sincronizado.", + "ja": "最後に同期したポイントを探しています。", + "ko": "마지막으로 동기화된 지점을 찾고 있습니다.", + "ru": "Поиск последней точки синхронизации.", + "zh": "查找上次同步点", + "zw-th": "Looking for the point last synchronized point." }, - "obsidianLiveSyncSettingTab.btnCheck": { - def: "Check", - es: "Verificar", - fr: "Vérifier", - ja: "確認", - ko: "확인", - ru: "Проверить", - zh: "检查", + "liveSyncReplicator.couldNotConnectTo": { + "def": "Could not connect to ${uri} : ${name}\n(${db})", + "es": "No se pudo conectar a ${uri} : ${name} \n(${db})", + "ja": "${uri} : ${name}に接続できませんでした\n(${db})", + "ko": "${uri}에 연결할 수 없습니다: ${name} \n(${db})", + "ru": "Не удалось подключиться к uri : name\n(db)", + "zh": "无法连接到 ${uri} : ${name}\n(${db})", + "zw-th": "Could not connect to ${uri} : ${name}\n(${db})" }, - "obsidianLiveSyncSettingTab.btnCopy": { - def: "Copy", - es: "Copiar", - fr: "Copier", - ja: "コピー", - ko: "복사", - ru: "Копировать", - zh: "复制", + "liveSyncReplicator.couldNotConnectToRemoteDb": { + "def": "Could not connect to remote database: ${d}", + "es": "No se pudo conectar a base de datos remota: ${d}", + "ja": "リモートデータベースに接続できませんでした: ${d}", + "ko": "원격 데이터베이스에 연결할 수 없습니다: ${d}", + "ru": "Не удалось подключиться к удалённой базе данных: d", + "zh": "无法连接到远程数据库:${d}", + "zw-th": "Could not connect to remote database: ${d}" }, - "obsidianLiveSyncSettingTab.btnDisable": { - def: "Disable", - es: "Desactivar", - fr: "Désactiver", - ja: "無効化", - ko: "비활성화", - ru: "Отключить", - zh: "禁用", + "liveSyncReplicator.couldNotConnectToServer": { + "def": "Could not connect to server.", + "es": "No se pudo conectar al servidor.", + "ja": "サーバーに接続できませんでした。", + "ko": "서버에 연결할 수 없습니다.", + "ru": "Не удалось подключиться к серверу.", + "zh": "无法连接到服务器", + "zw-th": "Could not connect to server." }, - "obsidianLiveSyncSettingTab.btnDiscard": { - def: "Discard", - es: "Descartar", - fr: "Abandonner", - ja: "破棄", - ko: "삭제", + "liveSyncReplicator.couldNotConnectToURI": { + "def": "Could not connect to ${uri}:${dbRet}", + "es": "No se pudo conectar a ${uri}:${dbRet}", + "ja": "${uri}に接続できませんでした: ${dbRet}", + "ko": "${uri}에 연결할 수 없습니다: ${dbRet}", + "ru": "Не удалось подключиться к uri:dbRet", + "zh": "无法连接到 ${uri}:${dbRet}", + "zw-th": "Could not connect to ${uri}:${dbRet}" + }, + "liveSyncReplicator.couldNotMarkResolveRemoteDb": { + "def": "Could not mark resolve remote database.", + "es": "No se pudo marcar como resuelta la base de datos remota.", + "ja": "リモートデータベースを解決済みとしてマークできませんでした。", + "ko": "원격 데이터베이스를 해결됨으로 표시할 수 없습니다.", + "ru": "Не удалось отметить удалённую базу данных как разрешённую.", + "zh": "无法标记并解决远程数据库", + "zw-th": "Could not mark resolve remote database." + }, + "liveSyncReplicator.liveSyncBegin": { + "def": "LiveSync begin...", + "es": "Inicio de LiveSync...", + "ja": "LiveSyncを開始...", + "ko": "LiveSync 시작...", + "ru": "Начало LiveSync...", + "zh": "LiveSync 开始...", + "zw-th": "LiveSync begin..." + }, + "liveSyncReplicator.lockRemoteDb": { + "def": "Lock remote database to prevent data corruption", + "es": "Bloquear base de datos remota para prevenir corrupción de datos", + "ja": "データ破損を防ぐためリモートデータベースをロック", + "ko": "데이터 손상을 방지하기 위해 원격 데이터베이스를 잠급니다", + "ru": "Блокировка удалённой базы данных для предотвращения повреждения данных", + "zh": "锁定远程数据库以防止数据损坏", + "zw-th": "Lock remote database to prevent data corruption" + }, + "liveSyncReplicator.markDeviceResolved": { + "def": "Mark this device as 'resolved'.", + "es": "Marcar este dispositivo como 'resuelto'.", + "ja": "このデバイスを『解決済み』としてマーク。", + "ko": "이 기기를 '해결됨'으로 표시합니다.", + "ru": "Отметить это устройство как «разрешённое».", + "zh": "将此设备标记为“已解决”", + "zw-th": "Mark this device as 'resolved'." + }, + "liveSyncReplicator.oneShotSyncBegin": { + "def": "OneShot Sync begin... (${syncMode})", + "es": "Inicio de sincronización OneShot... (${syncMode})", + "ja": "OneShot同期を開始... (${syncMode})", + "ko": "OneShot 동기화 시작... (${syncMode})", + "ru": "Начало OneShot синхронизации... (syncMode)", + "zh": "OneShot同步开始...(${syncMode})", + "zw-th": "OneShot Sync begin... (${syncMode})" + }, + "liveSyncReplicator.remoteDbCorrupted": { + "def": "Remote database is newer or corrupted, make sure to latest version of self-hosted-livesync installed", + "es": "La base de datos remota es más nueva o está dañada, asegúrese de tener la última versión de self-hosted-livesync instalada", + "ja": "リモートデータベースが新しいか破損しています。self-hosted-livesyncの最新バージョンがインストールされていることを確認してください", + "ko": "원격 데이터베이스가 더 최신이거나 손상되었습니다. 최신 버전의 self-hosted-livesync가 설치되어 있는지 확인하세요", + "ru": "Удалённая база данных новее или повреждена, убедитесь, что установлена последняя версия self-hosted-livesync", + "zh": "远程数据库较新或已损坏,请确保已安装最新版本的self-hosted-livesync", + "zw-th": "Remote database is newer or corrupted, make sure to latest version of self-hosted-livesync installed" + }, + "liveSyncReplicator.remoteDbCreatedOrConnected": { + "def": "Remote Database Created or Connected", + "es": "Base de datos remota creada o conectada", + "ja": "リモートデータベースが作成または接続されました", + "ko": "원격 데이터베이스가 생성되거나 연결되었습니다", + "ru": "Удалённая база данных создана или подключена", + "zh": "远程数据库已创建或连接", + "zw-th": "Remote Database Created or Connected" + }, + "liveSyncReplicator.remoteDbDestroyed": { + "def": "Remote Database Destroyed", + "es": "Base de datos remota destruida", + "ja": "リモートデータベースが削除されました", + "ko": "원격 데이터베이스가 삭제되었습니다", + "ru": "Удалённая база данных уничтожена", + "zh": "远程数据库已销毁", + "zw-th": "Remote Database Destroyed" + }, + "liveSyncReplicator.remoteDbDestroyError": { + "def": "Something happened on Remote Database Destroy:", + "es": "Algo ocurrió al destruir base de datos remota:", + "ja": "リモートデータベースの削除中に問題が発生しました:", + "ko": "원격 데이터베이스 삭제 중 오류가 발생했습니다:", + "ru": "Произошла ошибка при уничтожении удалённой базы данных:", + "zh": "远程数据库销毁时发生错误:", + "zw-th": "Something happened on Remote Database Destroy:" + }, + "liveSyncReplicator.remoteDbMarkedResolved": { + "def": "Remote database has been marked resolved.", + "es": "Base de datos remota marcada como resuelta.", + "ja": "リモートデータベースが解決済みとしてマークされました。", + "ko": "원격 데이터베이스가 해결됨으로 표시되었습니다.", + "ru": "Удалённая база данных отмечена как разрешённая.", + "zh": "远程数据库已标记为已解决", + "zw-th": "Remote database has been marked resolved." + }, + "liveSyncReplicator.replicationClosed": { + "def": "Replication closed", + "es": "Replicación cerrada", + "ja": "レプリケーション(複製)が終了しました", + "ko": "복제가 종료되었습니다", + "ru": "Репликация закрыта", + "zh": "同步已关闭", + "zw-th": "Replication closed" + }, + "liveSyncReplicator.replicationInProgress": { + "def": "Replication is already in progress", + "es": "Replicación en curso", + "ja": "レプリケーション(複製)は既に進行中です", + "ko": "복제가 이미 진행 중입니다", + "ru": "Репликация уже выполняется", + "zh": "同步正在进行中", + "zw-th": "Replication is already in progress" + }, + "liveSyncReplicator.retryLowerBatchSize": { + "def": "Retry with lower batch size:${batch_size}/${batches_limit}", + "es": "Reintentar con tamaño de lote más bajo:${batch_size}/${batches_limit}", + "ja": "より小さいバッチサイズで再試行: ${batch_size}/${batches_limit}", + "ko": "더 낮은 일괄 크기로 재시도: ${batch_size}/${batches_limit}", + "ru": "Повтор с меньшим размером пакета: batch_size/batches_limit", + "zh": "使用更小的批量大小重试:${batch_size}/${batches_limit}", + "zw-th": "Retry with lower batch size:${batch_size}/${batches_limit}" + }, + "liveSyncReplicator.unlockRemoteDb": { + "def": "Unlock remote database to prevent data corruption", + "es": "Desbloquear base de datos remota para prevenir corrupción de datos", + "ja": "データ破損を防ぐためリモートデータベースをアンロック", + "ko": "데이터 손상을 방지하기 위해 원격 데이터베이스를 잠금 해제합니다", + "ru": "Разблокировка удалённой базы данных для предотвращения повреждения данных", + "zh": "解锁远程数据库以防止数据损坏", + "zw-th": "Unlock remote database to prevent data corruption" + }, + "liveSyncSetting.errorNoSuchSettingItem": { + "def": "No such setting item: ${key}", + "es": "No existe el ajuste: ${key}", + "ja": "その設定項目は存在しません: ${key}", + "ko": "해당 설정 항목이 없습니다: ${key}", + "ru": "Такого параметра настройки не существует: key", + "zh": "没有此设置项:${key}", + "zw-th": "No such setting item: ${key}" + }, + "liveSyncSetting.originalValue": { + "def": "Original: ${value}", + "es": "Original: ${value}", + "ja": "元の値: ${value}", + "ko": "원본: ${value}", + "ru": "Оригинал: value", + "zh": "原始值:${value}", + "zw-th": "Original: ${value}" + }, + "liveSyncSetting.valueShouldBeInRange": { + "def": "The value should ${min} < value < ${max}", + "es": "El valor debe estar entre ${min} y ${max}", + "ja": "値は ${min} < 値 < ${max} の範囲である必要があります", + "ko": "값은 ${min} < 값 < ${max} 범위에 있어야 합니다", + "ru": "Значение должно быть min < значение < max", + "zh": "值应该在 ${min} < value < ${max} 之间", + "zw-th": "The value should ${min} < value < ${max}" + }, + "liveSyncSettings.btnApply": { + "def": "Apply", + "es": "Aplicar", + "ja": "適用", + "ko": "적용", + "ru": "Применить", + "zh": "应用", + "zw-th": "Apply" + }, + "logPane.autoScroll": { + "def": "Auto scroll", + "es": "Autodesplazamiento", + "ja": "自動スクロール", + "ko": "자동 스크롤", + "ru": "Автопрокрутка", + "zh": "自动滚动", + "zw-th": "Auto scroll" + }, + "logPane.logWindowOpened": { + "def": "Log window opened", + "es": "Ventana de registro abierta", + "ja": "ログウィンドウが開かれました", + "ko": "로그 창이 열렸습니다", + "ru": "Окно лога открыто", + "zh": "日志窗口已打开", + "zw-th": "Log window opened" + }, + "logPane.pause": { + "def": "Pause", + "es": "Pausar", + "ja": "一時停止", + "ko": "일시 중단", + "ru": "Пауза", + "zh": "暂停", + "zw-th": "Pause" + }, + "logPane.title": { + "def": "Self-hosted LiveSync Log", + "es": "Registro de Self-hosted LiveSync", + "ja": "Self-hosted LiveSync ログ", + "ko": "Self-hosted LiveSync 로그", + "ru": "Лог Self-hosted LiveSync", + "zh": "Self-hosted LiveSync 日志", + "zw-th": "Self-hosted LiveSync Log" + }, + "logPane.wrap": { + "def": "Wrap", + "es": "Ajustar", + "ja": "折り返し", + "ko": "줄 바꿈", + "ru": "Перенос", + "zh": "自动换行", + "zw-th": "Wrap" + }, + "Maximum delay for batch database updating": { + "def": "Maximum delay for batch database updating", + "es": "Retraso máximo para actualización por lotes", + "ja": "バッチデータベース更新の最大遅延", + "ko": "일괄 데이터베이스 업데이트 최대 지연", + "ru": "Максимальная задержка пакетного обновления базы данных", + "zh": "批量数据库更新的最大延迟", + "zw-th": "Maximum delay for batch database updating" + }, + "Maximum file size": { + "def": "Maximum file size", + "es": "Tamaño máximo de archivo", + "ja": "最大ファイル容量", + "ko": "최대 파일 크기", + "ru": "Максимальный размер файла", + "zh": "最大文件大小", + "zw-th": "Maximum file size" + }, + "Maximum Incubating Chunk Size": { + "def": "Maximum Incubating Chunk Size", + "es": "Tamaño máximo de chunks incubados", + "ja": "保持するチャンクの最大サイズ", + "ko": "임시 보관 변경 기록의 최대 크기", + "ru": "Максимальный размер инкубируемого чанка", + "zh": "最大孵化块大小", + "zw-th": "Maximum Incubating Chunk Size" + }, + "Maximum Incubating Chunks": { + "def": "Maximum Incubating Chunks", + "es": "Máximo de chunks incubados", + "ja": "一時保管する最大チャンク数", + "ko": "임시 보관 중인 변경 기록 최대 수", + "ru": "Максимальное количество инкубируемых чанков", + "zh": "最大孵化块数", + "zw-th": "Maximum Incubating Chunks" + }, + "Maximum Incubation Period": { + "def": "Maximum Incubation Period", + "es": "Periodo máximo de incubación", + "ja": "最大保持期限", + "ko": "변경 기록 임시 보관 최대 시간", + "ru": "Максимальный период инкубации", + "zh": "最大孵化期", + "zw-th": "Maximum Incubation Period" + }, + "MB (0 to disable).": { + "def": "MB (0 to disable).", + "es": "MB (0 para desactivar)", + "ja": "MB (0で無効化)。", + "ko": "MB (0으로 설정하면 비활성화).", + "ru": "МБ (0 для отключения).", + "zh": "MB(0为禁用)", + "zw-th": "MB (0 to disable)." + }, + "Memory cache size (by total characters)": { + "def": "Memory cache size (by total characters)", + "es": "Tamaño caché memoria (por caracteres)", + "ja": "全体でキャッシュする文字数", + "ko": "메모리 캐시 크기 (총 문자 수)", + "ru": "Размер кэша памяти (по общему количеству символов)", + "zh": "内存缓存大小(按总字符数)", + "zw-th": "Memory cache size (by total characters)" + }, + "Memory cache size (by total items)": { + "def": "Memory cache size (by total items)", + "es": "Tamaño caché memoria (por ítems)", + "ja": "全体のキャッシュサイズ", + "ko": "메모리 캐시 크기 (총 항목 수)", + "ru": "Размер кэша памяти (по общему количеству элементов)", + "zh": "内存缓存大小(按总项目数)", + "zw-th": "Memory cache size (by total items)" + }, + "Minimum delay for batch database updating": { + "def": "Minimum delay for batch database updating", + "es": "Retraso mínimo para actualización por lotes", + "ja": "バッチデータベース更新の最小遅延", + "ko": "일괄 데이터베이스 업데이트 최소 지연", + "ru": "Минимальная задержка пакетного обновления базы данных", + "zh": "批量数据库更新的最小延迟", + "zw-th": "Minimum delay for batch database updating" + }, + "Minimum interval for syncing": { + "def": "Minimum interval for syncing", + "es": "Minimum interval for syncing", + "ja": "同期間隔の最小値", + "ko": "동기화 최소 간격", + "ru": "Минимальный интервал синхронизации", + "zh": "同步最小间隔", + "zw-th": "Minimum interval for syncing" + }, + "moduleCheckRemoteSize.logCheckingStorageSizes": { + "def": "Checking storage sizes", + "es": "Comprobando tamaños de almacenamiento", + "ja": "ストレージサイズを確認中", + "ko": "스토리지 크기 확인 중", + "ru": "Проверка размеров хранилища", + "zh": "正在检查存储大小", + "zw-th": "Checking storage sizes" + }, + "moduleCheckRemoteSize.logCurrentStorageSize": { + "def": "Remote storage size: ${measuredSize}", + "es": "Tamaño del almacenamiento remoto: ${measuredSize}", + "ja": "リモートストレージサイズ: ${measuredSize}", + "ko": "원격 스토리지 크기: ${measuredSize}", + "ru": "Размер удалённого хранилища: measuredSize", + "zh": "远程存储大小:${measuredSize}", + "zw-th": "Remote storage size: ${measuredSize}" + }, + "moduleCheckRemoteSize.logExceededWarning": { + "def": "Remote storage size: ${measuredSize} exceeded ${notifySize}", + "es": "Tamaño del almacenamiento remoto: ${measuredSize} superó ${notifySize}", + "ja": "リモートストレージサイズ: ${measuredSize} が ${notifySize} を超過しました", + "ko": "원격 스토리지 크기: ${measuredSize}가 ${notifySize}를 초과했습니다", + "ru": "Размер удалённого хранилища: measuredSize превысил notifySize", + "zh": "远程存储大小:${measuredSize} 超过 ${notifySize}", + "zw-th": "Remote storage size: ${measuredSize} exceeded ${notifySize}" + }, + "moduleCheckRemoteSize.logThresholdEnlarged": { + "def": "Threshold has been enlarged to ${size}MB", + "es": "El umbral se ha ampliado a ${size}MB", + "ja": "しきい値が ${size}MB に設定されました", + "ko": "임계값이 ${size}MB로 증가되었습니다", + "ru": "Порог увеличен до sizeМБ", + "zh": "阈值已扩大到 ${size}MB", + "zw-th": "Threshold has been enlarged to ${size}MB" + }, + "moduleCheckRemoteSize.msgConfirmRebuild": { + "def": "This may take a bit of a long time. Do you really want to rebuild everything now?", + "es": "Esto puede llevar un poco de tiempo. ¿Realmente quieres reconstruir todo ahora?", + "ja": "これは少し時間がかかる場合があります。本当に今すべてを再構築しますか?", + "ko": "시간이 꽤 오래 걸릴 수 있습니다. 정말 지금 모든 것을 재구축하시겠습니까?", + "ru": "Это может занять некоторое время. Вы действительно хотите перестроить всё сейчас?", + "zh": "这可能需要一些时间。您真的想现在重建所有内容吗?", + "zw-th": "This may take a bit of a long time. Do you really want to rebuild everything now?" + }, + "moduleCheckRemoteSize.msgDatabaseGrowing": { + "def": "**Your database is getting larger!** But do not worry, we can address it now. The time before running out of space on the remote storage.\n\n| Measured size | Configured size |\n| --- | --- |\n| ${estimatedSize} | ${maxSize} |\n\n> [!MORE]-\n> If you have been using it for many years, there may be unreferenced chunks - that is, garbage - accumulating in the database. Therefore, we recommend rebuilding everything. It will probably become much smaller.\n>\n> If the volume of your vault is simply increasing, it is better to rebuild everything after organizing the files. Self-hosted LiveSync does not delete the actual data even if you delete it to speed up the process. It is roughly [documented](https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/tech_info.md).\n>\n> If you don't mind the increase, you can increase the notification limit by 100MB. This is the case if you are running it on your own server. However, it is better to rebuild everything from time to time.\n>\n\n> [!WARNING]\n> If you perform rebuild everything, make sure all devices are synchronised. The plug-in will merge as much as possible, though.\n", + "es": "**¡Tu base de datos está creciendo!** Pero no te preocupes, podemos abordarlo ahora. El tiempo antes de quedarse sin espacio en el almacenamiento remoto.\n\n| Tamaño medido | Tamaño configurado |\n| --- | --- |\n| ${estimatedSize} | ${maxSize} |\n\n> [!MORE]-\n> Si lo has estado utilizando durante muchos años, puede haber fragmentos no referenciados - es decir, basura - acumulándose en la base de datos. Por lo tanto, recomendamos reconstruir todo. Probablemente se volverá mucho más pequeño.\n>\n> Si el volumen de tu bóveda simplemente está aumentando, es mejor reconstruir todo después de organizar los archivos. Self-hosted LiveSync no elimina los datos reales incluso si los eliminas para acelerar el proceso. Está aproximadamente [documentado](https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/tech_info.md).\n>\n> Si no te importa el aumento, puedes aumentar el límite de notificación en 100 MB. Este es el caso si lo estás ejecutando en tu propio servidor. Sin embargo, es mejor reconstruir todo de vez en cuando.\n>\n\n> [!WARNING]\n> Si realizas la reconstrucción completa, asegúrate de que todos los dispositivos estén sincronizados. El complemento fusionará tanto como sea posible, sin embargo.\n", + "ja": "**データベースが大きくなっています!** でも心配しないでください。リモートストレージの容量が不足する前に対応できます。\n\n| 測定サイズ | 設定サイズ |\n| --- | --- |\n| ${estimatedSize} | ${maxSize} |\n\n> [!MORE]-\n> 長年使用している場合、参照されていないチャンク(つまりゴミ)がデータベースに蓄積している可能性があります。そのため、すべてを再構築することをお勧めします。おそらくかなり小さくなるでしょう。\n>\n> 単純に保管庫の容量が増えている場合は、事前にファイルを整理してからすべてを再構築するのが良いでしょう。Self-hosted LiveSyncは処理速度を上げるため、削除しても実際のデータを削除しません。これはおおまかに[documentation](https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/tech_info.md)に記載されています。\n>\n> 増加を気にしない場合は、通知制限を100MB単位で増やすことができます。これは自分のサーバーで実行している場合に適しています。ただし、定期的にすべてを再構築する方が良いでしょう。\n>\n\n> [!WARNING]\n> すべてを再構築する場合は、すべてのデバイスが同期されていることを確認してください。もちろん、プラグインは可能な限り解決しようと努力はしますけど...\n", + "ko": "**데이터베이스 용량이 점점 커지고 있습니다!** 하지만 걱정하지 마세요. 아직 원격 스토리지 공간이 완전히 부족해진 건 아닙니다.\n\n| 측정된 크기 | 설정된 한도 |\n| --- | --- |\n| ${estimatedSize} | ${maxSize} |\n\n> [!MORE]-\n> 오랜 기간 사용했다면 참조되지 않는 청크, 즉 '쓰레기 데이터'가 쌓였을 수 있습니다. 이 경우 전체 재구성을 권장합니다. 용량이 훨씬 줄어들 수 있습니다.\n> \n> 단순히 볼트 자체 용량이 커지고 있는 것이라면, 먼저 파일을 정리한 후 전체를 재구성하는 것이 좋습니다. Self-hosted LiveSync는 처리 속도를 위해 삭제해도 실제 데이터를 바로 지우지 않습니다. 이 내용은 [기술 문서](https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/tech_info.md)에 간략히 정리되어 있습니다.\n> \n> 용량 증가가 괜찮다면 알림 임계치를 100MB 단위로 높일 수 있습니다. 직접 서버를 운영하는 경우에 적합한 방법입니다. 다만, 가끔은 전체 재구성을 해주는 것이 바람직합니다.\n\n> [!WARNING]\n> 전체 재구성을 실행할 경우, 모든 기기가 반드시 동기화되어 있어야 합니다. 플러그인이 최대한 병합하려고 시도하긴 하지만 완전하지 않을 수 있습니다.", + "ru": "Ваша база данных увеличивается! Но не волнуйтесь, мы можем решить это сейчас.", + "zh": "**您的数据库正在变大!** 但别担心,我们现在可以解决它。在远程存储空间用完之前还有时间。\n\n| 测量大小 | 配置大小 |\n| --- | --- |\n| ${estimatedSize} | ${maxSize} |\n\n> [!MORE]-\n> 如果您已经使用了很多年,数据库中可能会积累未引用的 chunks——也就是垃圾。因此,我们建议重建所有内容。它可能会变得小得多。\n> \n> 如果您的库容量只是在增加,最好在整理文件后重建所有内容。即使您为了加速过程删除了文件,Self-hosted LiveSync 也不会删除实际数据。这大致[有文档记录](https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/tech_info.md)。\n> \n> 如果您不介意增加,可以将通知限制增加 100MB。如果您在自己的服务器上运行,就是这种情况。但是,最好还是不时地重建所有内容。\n> \n\n> [!WARNING]\n> 如果您执行重建所有内容,请确保所有设备都已同步。尽管如此,插件会尽可能地合并\n", + "zw-th": "**Your database is getting larger!** But do not worry, we can address it now. The time before running out of space on the remote storage.\n\n| Measured size | Configured size |\n| --- | --- |\n| ${estimatedSize} | ${maxSize} |\n\n> [!MORE]-\n> If you have been using it for many years, there may be unreferenced chunks - that is, garbage - accumulating in the database. Therefore, we recommend rebuilding everything. It will probably become much smaller.\n>\n> If the volume of your vault is simply increasing, it is better to rebuild everything after organizing the files. Self-hosted LiveSync does not delete the actual data even if you delete it to speed up the process. It is roughly [documented](https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/tech_info.md).\n>\n> If you don't mind the increase, you can increase the notification limit by 100MB. This is the case if you are running it on your own server. However, it is better to rebuild everything from time to time.\n>\n\n> [!WARNING]\n> If you perform rebuild everything, make sure all devices are synchronised. The plug-in will merge as much as possible, though.\n" + }, + "moduleCheckRemoteSize.msgSetDBCapacity": { + "def": "We can set a maximum database capacity warning, **to take action before running out of space on the remote storage**.\nDo you want to enable this?\n\n> [!MORE]-\n> - 0: Do not warn about storage size.\n> This is recommended if you have enough space on the remote storage especially you have self-hosted. And you can check the storage size and rebuild manually.\n> - 800: Warn if the remote storage size exceeds 800MB.\n> This is recommended if you are using fly.io with 1GB limit or IBM Cloudant.\n> - 2000: Warn if the remote storage size exceeds 2GB.\n\nIf we have reached the limit, we will be asked to enlarge the limit step by step.\n", + "es": "Podemos configurar una advertencia de capacidad máxima de base de datos, **para tomar medidas antes de quedarse sin espacio en el almacenamiento remoto**.\n¿Quieres habilitar esto?\n\n> [!MORE]-\n> - 0: No advertir sobre el tamaño del almacenamiento.\n> Esto es recomendado si tienes suficiente espacio en el almacenamiento remoto, especialmente si lo tienes autoalojado. Y puedes comprobar el tamaño del almacenamiento y reconstruir manualmente.\n> - 800: Advertir si el tamaño del almacenamiento remoto supera los 800 MB.\n> Esto es recomendado si estás usando fly.io con un límite de 1 GB o IBM Cloudant.\n> - 2000: Advertir si el tamaño del almacenamiento remoto supera los 2 GB.\n\nSi hemos alcanzado el límite, se nos pedirá que aumentemos el límite paso a paso.\n", + "ja": "リモートストレージの容量が不足する前に対策を講じるため、**最大データベース容量の警告**を設定できます。\nこれを有効にしますか?\n\n> [!MORE]-\n> - 0: ストレージサイズについて警告しない。\n> 自宅サーバーなど、リモートストレージに十分な容量がある場合に推奨されます。ストレージサイズを確認し、手動で再構築できます。\n> - 800: リモートストレージサイズが800MBを超えたら警告。\n> 1GB制限のfly.ioやIBM Cloudantを使用している場合に推奨されます。\n> - 2000: リモートストレージサイズが2GBを超えたら警告。\n\n制限に達した場合、段階的に制限を増やすよう求められます。\n", + "ko": "**원격 스토리지 공간이 부족해지기 전에 미리 조치할 수 있도록** 데이터베이스 용량 경고를 설정할 수 있습니다.\n이 기능을 활성화하시겠습니까?\n\n> [!MORE]-\n> - 0: 스토리지 용량에 대한 경고 없음\n> 자체 서버를 사용하는 등 여유 공간이 충분한 경우에 권장됩니다. 스토리지 용량을 직접 확인하고 수동으로 재구성할 수 있습니다.\n> - 800: 원격 스토리지 용량이 800MB를 초과하면 경고\n> 1GB 제한이 있는 fly.io나 IBM Cloudant 사용 시 권장됩니다.\n> - 2000: 원격 스토리지 용량이 2GB를 초과하면 경고\n\n설정한 용량 한도에 도달하면, 단계적으로 경고 한도를 늘릴지 여부를 묻게 됩니다.\n", + "ru": "Можно установить предупреждение о максимальной ёмкости базы данных.", + "zh": "我们可以设置一个最大数据库容量警告,**以便在远程存储空间耗尽前采取行动**。\n您想启用这个功能吗?\n\n> [!MORE]-\n> - 0: 不警告存储大小。\n> 如果您在远程存储(尤其是自托管)上有足够的空间,则推荐此选项。您可以手动检查存储大小并重建。\n> - 800: 如果远程存储大小超过 800MB 则发出警告。\n> 如果您使用的是 fly.io(1GB 限制) 或 IBM Cloudant,则推荐此选项。\n> - 2000: 如果远程存储大小超过 2GB 则发出警告。\n\n如果达到限制,系统会要求我们逐步增大限制\n", + "zw-th": "We can set a maximum database capacity warning, **to take action before running out of space on the remote storage**.\nDo you want to enable this?\n\n> [!MORE]-\n> - 0: Do not warn about storage size.\n> This is recommended if you have enough space on the remote storage especially you have self-hosted. And you can check the storage size and rebuild manually.\n> - 800: Warn if the remote storage size exceeds 800MB.\n> This is recommended if you are using fly.io with 1GB limit or IBM Cloudant.\n> - 2000: Warn if the remote storage size exceeds 2GB.\n\nIf we have reached the limit, we will be asked to enlarge the limit step by step.\n" + }, + "moduleCheckRemoteSize.option2GB": { + "def": "2GB (Standard)", + "es": "2GB (Estándar)", + "ja": "2GB (標準)", + "ko": "2GB (표준)", + "ru": "2ГБ (Стандарт)", + "zh": "2GB (标准)", + "zw-th": "2GB (Standard)" + }, + "moduleCheckRemoteSize.option800MB": { + "def": "800MB (Cloudant, fly.io)", + "es": "800MB (Cloudant, fly.io)", + "ja": "800MB (Cloudant, fly.io)", + "ko": "800MB (Cloudant, fly.io)", + "ru": "800МБ (Cloudant, fly.io)", + "zh": "800MB (Cloudant, fly.io)", + "zw-th": "800MB (Cloudant, fly.io)" + }, + "moduleCheckRemoteSize.optionAskMeLater": { + "def": "Ask me later", + "es": "Pregúntame más tarde", + "ja": "後で確認する", + "ko": "나중에 물어보기", + "ru": "Спросить позже", + "zh": "稍后问我", + "zw-th": "Ask me later" + }, + "moduleCheckRemoteSize.optionDismiss": { + "def": "Dismiss", + "es": "Descartar", + "ja": "無視", + "ko": "무시", + "ru": "Отклонить", + "zh": "忽略", + "zw-th": "Dismiss" + }, + "moduleCheckRemoteSize.optionIncreaseLimit": { + "def": "increase to ${newMax}MB", + "es": "aumentar a ${newMax}MB", + "ja": "${newMax}MBに設定", + "ko": "${newMax}MB로 증가", + "ru": "увеличить до newMaxМБ", + "zh": "增加到 ${newMax}MB", + "zw-th": "increase to ${newMax}MB" + }, + "moduleCheckRemoteSize.optionNoWarn": { + "def": "No, never warn please", + "es": "No, nunca advertir por favor", + "ja": "いいえ、警告しないでください", + "ko": "아니요, 경고하지 마세요", + "ru": "Нет, не уведомлять", + "zh": "不,请永远不要警告", + "zw-th": "No, never warn please" + }, + "moduleCheckRemoteSize.optionRebuildAll": { + "def": "Rebuild Everything Now", + "es": "Reconstruir todo ahora", + "ja": "今すべてを再構築", + "ko": "지금 모든 것 재구축", + "ru": "Перестроить всё сейчас", + "zh": "立即重建所有内容", + "zw-th": "Rebuild Everything Now" + }, + "moduleCheckRemoteSize.titleDatabaseSizeLimitExceeded": { + "def": "Remote storage size exceeded the limit", + "es": "El tamaño del almacenamiento remoto superó el límite", + "ja": "リモートストレージサイズが制限を超過しました", + "ko": "원격 스토리지 크기가 제한을 초과했습니다", + "ru": "Размер удалённого хранилища превысил лимит", + "zh": "远程存储大小超出限制", + "zw-th": "Remote storage size exceeded the limit" + }, + "moduleCheckRemoteSize.titleDatabaseSizeNotify": { + "def": "Setting up database size notification", + "es": "Configuración de notificación de tamaño de base de datos", + "ja": "データベースサイズ通知の設定", + "ko": "데이터베이스 크기 알림 설정", + "ru": "Настройка уведомления о размере базы данных", + "zh": "设置数据库大小通知", + "zw-th": "Setting up database size notification" + }, + "moduleInputUIObsidian.defaultTitleConfirmation": { + "def": "Confirmation", + "es": "Confirmación", + "ja": "確認", + "ko": "확인", + "ru": "Подтверждение", + "zh": "确认", + "zw-th": "Confirmation" + }, + "moduleInputUIObsidian.defaultTitleSelect": { + "def": "Select", + "es": "Seleccionar", + "ja": "選択", + "ko": "선택", + "ru": "Выбор", + "zh": "选择", + "zw-th": "Select" + }, + "moduleInputUIObsidian.optionNo": { + "def": "No", + "es": "No", + "ja": "いいえ", + "ko": "아니요", + "ru": "Нет", + "zh": "否", + "zw-th": "No" + }, + "moduleInputUIObsidian.optionYes": { + "def": "Yes", + "es": "Sí", + "ja": "はい", + "ko": "예", + "ru": "Да", + "zh": "是", + "zw-th": "Yes" + }, + "moduleLiveSyncMain.logAdditionalSafetyScan": { + "def": "Additional safety scan...", + "es": "Escanéo de seguridad adicional...", + "ja": "追加の安全スキャン中...", + "ko": "추가 안전 검사 중...", + "ru": "Дополнительная проверка безопасности...", + "zh": "额外的安全扫描...", + "zw-th": "Additional safety scan..." + }, + "moduleLiveSyncMain.logLoadingPlugin": { + "def": "Loading plugin...", + "es": "Cargando complemento...", + "ja": "プラグインをロード中...", + "ko": "플러그인 로딩 중...", + "ru": "Загрузка плагина...", + "zh": "正在加载插件...", + "zw-th": "Loading plugin..." + }, + "moduleLiveSyncMain.logPluginInitCancelled": { + "def": "Plugin initialisation was cancelled by a module", + "es": "La inicialización del complemento fue cancelada por un módulo", + "ja": "プラグインの初期化がモジュールによってキャンセルされました", + "ko": "모듈에 의해 플러그인 초기화가 취소되었습니다", + "ru": "Инициализация плагина отменена модулем", + "zh": "插件初始化被某个模块取消", + "zw-th": "Plugin initialisation was cancelled by a module" + }, + "moduleLiveSyncMain.logPluginVersion": { + "def": "Self-hosted LiveSync v${manifestVersion} ${packageVersion}", + "es": "Self-hosted LiveSync v${manifestVersion} ${packageVersion}", + "ja": "Self-hosted LiveSync v${manifestVersion} ${packageVersion}", + "ko": "Self-hosted LiveSync v${manifestVersion} ${packageVersion}", + "ru": "Self-hosted LiveSync vmanifestVersion packageVersion", + "zh": "Self-hosted LiveSync v${manifestVersion} ${packageVersion}", + "zw-th": "Self-hosted LiveSync v${manifestVersion} ${packageVersion}" + }, + "moduleLiveSyncMain.logReadChangelog": { + "def": "LiveSync has updated, please read the changelog!", + "es": "LiveSync se ha actualizado, ¡por favor lee el registro de cambios!", + "ja": "LiveSyncが更新されました。変更履歴をお読みください!", + "ko": "LiveSync가 업데이트되었습니다. 변경사항을 읽어보세요!", + "ru": "LiveSync обновлён, пожалуйста, прочитайте список изменений!", + "zh": "LiveSync 已更新,请阅读更新日志!", + "zw-th": "LiveSync has updated, please read the changelog!" + }, + "moduleLiveSyncMain.logSafetyScanCompleted": { + "def": "Additional safety scan completed", + "es": "Escanéo de seguridad adicional completado", + "ja": "追加の安全スキャンが完了しました", + "ko": "추가 안전 검사가 완료되었습니다", + "ru": "Дополнительная проверка безопасности завершена", + "zh": "额外的安全扫描完成", + "zw-th": "Additional safety scan completed" + }, + "moduleLiveSyncMain.logSafetyScanFailed": { + "def": "Additional safety scan has failed on a module", + "es": "El escaneo de seguridad adicional ha fallado en un módulo", + "ja": "モジュールで追加の安全スキャンが失敗しました", + "ko": "모듈에서 추가 안전 검사가 실패했습니다", + "ru": "Дополнительная проверка безопасности не удалась в модуле", + "zh": "额外的安全扫描在某个模块上失败", + "zw-th": "Additional safety scan has failed on a module" + }, + "moduleLiveSyncMain.logUnloadingPlugin": { + "def": "Unloading plugin...", + "es": "Descargando complemento...", + "ja": "プラグインをアンロード中...", + "ko": "플러그인 언로딩 중...", + "ru": "Выгрузка плагина...", + "zh": "正在卸载插件...", + "zw-th": "Unloading plugin..." + }, + "moduleLiveSyncMain.logVersionUpdate": { + "def": "LiveSync has been updated, In case of breaking updates, all automatic synchronization has been temporarily disabled. Ensure that all devices are up to date before enabling.", + "es": "LiveSync se ha actualizado, en caso de actualizaciones que rompan, toda la sincronización automática se ha desactivado temporalmente. Asegúrate de que todos los dispositivos estén actualizados antes de habilitar.", + "ja": "LiveSyncが更新されました。互換性のない更新の場合、すべての自動同期が一時的に無効化されています。有効にする前に、すべてのデバイスが最新の状態であることを確認してください。", + "ko": "LiveSync가 업데이트되었습니다. 호환성 문제가 있는 업데이트의 경우 모든 자동 동기화가 일시적으로 비활성화되었습니다. 활성화하기 전에 모든 기기가 최신 상태인지 확인하세요.", + "ru": "LiveSync обновлён. В случае критических изменений автоматическая синхронизация временно отключена. Убедитесь, что все устройства обновлены перед включением.", + "zh": "LiveSync 已更新,如果存在破坏性更新,所有自动同步已暂时禁用。请确保所有设备都更新到最新版本后再启用", + "zw-th": "LiveSync has been updated, In case of breaking updates, all automatic synchronization has been temporarily disabled. Ensure that all devices are up to date before enabling." + }, + "moduleLiveSyncMain.msgScramEnabled": { + "def": "Self-hosted LiveSync has been configured to ignore some events. Is this correct?\n\n| Type | Status | Note |\n|:---:|:---:|---|\n| Storage Events | ${fileWatchingStatus} | Every modification will be ignored |\n| Database Events | ${parseReplicationStatus} | Every synchronised change will be postponed |\n\nDo you want to resume them and restart Obsidian?\n\n> [!DETAILS]-\n> These flags are set by the plug-in while rebuilding, or fetching. If the process ends abnormally, it may be kept unintended.\n> If you are not sure, you can try to rerun these processes. Make sure to back your vault up.\n", + "es": "Self-hosted LiveSync se ha configurado para ignorar algunos eventos. ¿Es esto correcto?\n\n| Tipo | Estado | Nota |\n|:---:|:---:|---|\n| Eventos de almacenamiento | ${fileWatchingStatus} | Se ignorará cada modificación |\n| Eventos de base de datos | ${parseReplicationStatus} | Cada cambio sincronizado se pospondrá |\n\n¿Quieres reanudarlos y reiniciar Obsidian?\n\n> [!DETAILS]-\n> Estas banderas son establecidas por el complemento mientras se reconstruye o se obtiene. Si el proceso termina de forma anormal, puede mantenerse sin querer.\n> Si no estás seguro, puedes intentar volver a ejecutar estos procesos. Asegúrate de hacer una copia de seguridad de tu bóveda.\n", + "ja": "Self-hosted LiveSyncは一部のイベントを無視するように設定されています。これは正しいですか?\n\n| タイプ | ステータス | メモ |\n|:---:|:---:|---|\n| ストレージイベント | ${fileWatchingStatus} | すべての変更が無視されます |\n| データベースイベント | ${parseReplicationStatus} | すべての同期された変更が延期されます |\n\nこれらを再開してObsidianを再起動しますか?\n\n> [!DETAILS]-\n> これらのフラグは、プラグインが再構築またはフェッチ中に設定されます。プロセスが異常終了した場合、意図せず保持されることがあります。\n> 不明な場合は、これらのプロセスを再実行してみてください。必ず保管庫をバックアップしてください。\n", + "ko": "Self-hosted LiveSync가 일부 이벤트를 무시하도록 설정되어 있습니다. 이 설정이 맞습니까?\n\n| 유형 | 상태 | 설명 |\n|:---:|:---:|---|\n| 스토리지 이벤트 | ${fileWatchingStatus} | 모든 수정 사항이 무시됩니다 |\n| 데이터베이스 이벤트 | ${parseReplicationStatus} | 모든 동기화 변경이 지연됩니다 |\n\n이벤트 감지를 다시 활성화하고 Obsidian을 재시작하시겠습니까?\n\n> [!DETAILS]-\n> 이러한 설정은 플러그인이 재구성 또는 데이터 가져오기 중에 자동으로 설정한 것입니다. 프로세스가 비정상적으로 종료되면 이 상태가 의도치 않게 유지될 수 있습니다.\n> 상태가 확실하지 않다면 이 과정을 다시 실행해 보세요. 재시작 전에 반드시 볼트를 백업해 주세요.", + "ru": "Self-hosted LiveSync has been configured to ignore some events. Is this correct?\n\n| Type | Status | Note |\n|:---:|:---:|---|\n| Storage Events | ${fileWatchingStatus} | Every modification will be ignored |\n| Database Events | ${parseReplicationStatus} | Every synchronised change will be postponed |\n\nDo you want to resume them and restart Obsidian?\n\n> [!DETAILS]-\n> These flags are set by the plug-in while rebuilding, or fetching. If the process ends abnormally, it may be kept unintended.\n> If you are not sure, you can try to rerun these processes. Make sure to back your vault up.\n", + "zh": "Self-hosted LiveSync 已被配置为忽略某些事件。这样对吗?\n\n| 类型 | 状态 | 说明 |\n|:---:|:---:|---|\n| 存储事件 | ${fileWatchingStatus} | 所有修改都将被忽略 |\n| 数据库事件 | ${parseReplicationStatus} | 所有同步的更改都将被推迟 |\n\n您想恢复它们并重启 Obsidian 吗?\n\n> [!DETAILS]-\n> 这些标志是在重建或获取时由插件设置的。如果过程异常结束,它们可能会被无意中保留。\n> 如果您不确定,可以尝试重新运行这些过程。请确保备份您的库。\n", + "zw-th": "Self-hosted LiveSync has been configured to ignore some events. Is this correct?\n\n| Type | Status | Note |\n|:---:|:---:|---|\n| Storage Events | ${fileWatchingStatus} | Every modification will be ignored |\n| Database Events | ${parseReplicationStatus} | Every synchronised change will be postponed |\n\nDo you want to resume them and restart Obsidian?\n\n> [!DETAILS]-\n> These flags are set by the plug-in while rebuilding, or fetching. If the process ends abnormally, it may be kept unintended.\n> If you are not sure, you can try to rerun these processes. Make sure to back your vault up.\n" + }, + "moduleLiveSyncMain.optionKeepLiveSyncDisabled": { + "def": "Keep LiveSync disabled", + "es": "Mantener LiveSync desactivado", + "ja": "LiveSyncを無効のままにする", + "ko": "LiveSync 비활성화 유지", + "ru": "Оставить LiveSync отключённым", + "zh": "保持 LiveSync 禁用", + "zw-th": "Keep LiveSync disabled" + }, + "moduleLiveSyncMain.optionResumeAndRestart": { + "def": "Resume and restart Obsidian", + "es": "Reanudar y reiniciar Obsidian", + "ja": "再開してObsidianを再起動", + "ko": "재개 후 Obsidian 재시작", + "ru": "Продолжить и перезапустить Obsidian", + "zh": "恢复并重启 Obsidian", + "zw-th": "Resume and restart Obsidian" + }, + "moduleLiveSyncMain.titleScramEnabled": { + "def": "Scram Enabled", + "es": "Scram habilitado", + "ja": "緊急停止(Scram)が有効", + "ko": "Scram 활성화됨", + "ru": "Экстренная остановка включена", + "zh": "紧急停止已启用", + "zw-th": "Scram Enabled" + }, + "moduleLocalDatabase.logWaitingForReady": { + "def": "Waiting for ready...", + "es": "Esperando a que la base de datos esté lista...", + "ja": "しばらくお待ちください...", + "ko": "준비 대기 중...", + "ru": "Ожидание готовности...", + "zh": "等待就绪...", + "zw-th": "Waiting for ready..." + }, + "moduleLog.showLog": { + "def": "Show Log", + "es": "Mostrar registro", + "ja": "ログを表示", + "ko": "로그 표시", + "ru": "Показать лог", + "zh": "显示日志", + "zw-th": "Show Log" + }, + "moduleMigration.docUri": { + "def": "https://github.com/vrtmrz/obsidian-livesync/blob/main/README.md#how-to-use", + "es": "https://github.com/vrtmrz/obsidian-livesync/blob/main/README_ES.md#how-to-use", + "ja": "https://github.com/vrtmrz/obsidian-livesync/blob/main/README.md#how-to-use", + "ko": "https://github.com/vrtmrz/obsidian-livesync/blob/main/README.md#how-to-use", + "ru": "https://github.com/vrtmrz/obsidian-livesync/blob/main/README.md#how-to-use", + "zh": "https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/zh/README_zh.md#%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8", + "zw-th": "https://github.com/vrtmrz/obsidian-livesync/blob/main/README.md#how-to-use" + }, + "moduleMigration.fix0256.buttons.checkItLater": { + "def": "Check it later", + "es": "Check it later", + "ja": "後で確認する", + "ko": "Check it later", + "ru": "Проверить позже", + "zh": "稍后检查", + "zw-th": "Check it later" + }, + "moduleMigration.fix0256.buttons.DismissForever": { + "def": "I have fixed it, and do not ask again", + "es": "I have fixed it, and do not ask again", + "ja": "修正済み、今後確認しない", + "ko": "I have fixed it, and do not ask again", + "ru": "Исправлено, больше не спрашивать", + "zh": "我已经修复了,不再询问", + "zw-th": "I have fixed it, and do not ask again" + }, + "moduleMigration.fix0256.buttons.fix": { + "def": "Fix", + "es": "Corregir", + "ja": "修正", + "ko": "수정", + "ru": "Исправить", + "zh": "修复", + "zw-th": "Fix" + }, + "moduleMigration.fix0256.message": { + "def": "Due to a recent bug (in v0.25.6), some files may not have been saved correctly in the sync database.\nWe have scanned our files and found some that need to be fixed.\n\n**Files ready to be fixed:**\n\n${files}\n\nThese files have size-matched original file on the storage, and are likely to be recoverable.\nWe can use them to fix the database, please click the \"Fix\" button below to fix them.\n\n${messageUnrecoverable}\n\nIf you want to run it again, you can do so from Hatch.\n", + "es": "Due to a recent bug (in v0.25.6), some files may not have been saved correctly in the sync database.\nWe have scanned our files and found some that need to be fixed.\n\n**Files ready to be fixed:**\n\n${files}\n\nThese files have size-matched original file on the storage, and are likely to be recoverable.\nWe can use them to fix the database, please click the \"Fix\" button below to fix them.\n\n${messageUnrecoverable}\n\nIf you want to run it again, you can do so from Hatch.\n", + "ja": "最近のバグ(v0.25.6)により、一部のファイルが同期データベースに正しく保存されていない可能性があります。\nファイルをスキャンし、修正が必要なものが見つかりました。\n\n**修正準備ができたファイル:**\n\n${files}\n\nこれらのファイルはストレージ上の元ファイルとサイズが一致しており、復元可能です。\n「修正」ボタンをクリックしてデータベースを修正できます。\n\n${messageUnrecoverable}\n\n再実行したい場合は、Hatchから実行できます。\n", + "ko": "Due to a recent bug (in v0.25.6), some files may not have been saved correctly in the sync database.\nWe have scanned our files and found some that need to be fixed.\n\n**Files ready to be fixed:**\n\n${files}\n\nThese files have size-matched original file on the storage, and are likely to be recoverable.\nWe can use them to fix the database, please click the \"Fix\" button below to fix them.\n\n${messageUnrecoverable}\n\nIf you want to run it again, you can do so from Hatch.\n", + "ru": "Из-за недавней ошибки некоторые файлы могут быть неправильно сохранены.", + "zh": "由于最近的一个 bug(在 v0.25.6 版本中),某些文件可能未正确保存到同步数据库中\n我们已经扫描了文件,并发现一些需要修复的文件\n\n**准备修复的文件:**\n\n${files}\n\n这些文件在存储中与原文件的大小匹配,可能是可恢复的\n我们可以使用它们修复数据库,请点击下方的“修复”按钮进行修复\n\n${messageUnrecoverable}\n\n\n如果你希望再次执行此操作,可以前往 Hatch 页面进行操作\n", + "zw-th": "Due to a recent bug (in v0.25.6), some files may not have been saved correctly in the sync database.\nWe have scanned our files and found some that need to be fixed.\n\n**Files ready to be fixed:**\n\n${files}\n\nThese files have size-matched original file on the storage, and are likely to be recoverable.\nWe can use them to fix the database, please click the \"Fix\" button below to fix them.\n\n${messageUnrecoverable}\n\nIf you want to run it again, you can do so from Hatch.\n" + }, + "moduleMigration.fix0256.messageUnrecoverable": { + "def": "**Files cannot be fixed on this device:**\n\n${filesNotRecoverable}\n\nThese files have inconsistent metadata, and cannot be fixed on this device (mostly we cannot determine which is correct).\nTo restore them, please check your other devices (also by this feature) or restore them manually from a backup.\n", + "es": "**Files cannot be fixed on this device:**\n\n${filesNotRecoverable}\n\nThese files have inconsistent metadata, and cannot be fixed on this device (mostly we cannot determine which is correct).\nTo restore them, please check your other devices (also by this feature) or restore them manually from a backup.\n", + "ja": "**このデバイスで修正できないファイル:**\n\n${filesNotRecoverable}\n\nこれらのファイルはメタデータに不整合があり、このデバイスでは修正できません(ほとんどの場合、どちらが正しいか判定できません)。\n復元するには、他のデバイスで確認するか、バックアップから手動で復元してください。\n", + "ko": "**Files cannot be fixed on this device:**\n\n${filesNotRecoverable}\n\nThese files have inconsistent metadata, and cannot be fixed on this device (mostly we cannot determine which is correct).\nTo restore them, please check your other devices (also by this feature) or restore them manually from a backup.\n", + "ru": "Файлы не могут быть исправлены на этом устройстве:", + "zh": "**无法在此设备上修复的文件:**\n\n${filesNotRecoverable}\n\n这些文件的元数据不一致,无法在此设备上修复(大多数情况下我们无法确定哪一个是正确的)\n要恢复它们,请检查你的其他设备(同样使用此功能),或从备份中手动恢复\n", + "zw-th": "**Files cannot be fixed on this device:**\n\n${filesNotRecoverable}\n\nThese files have inconsistent metadata, and cannot be fixed on this device (mostly we cannot determine which is correct).\nTo restore them, please check your other devices (also by this feature) or restore them manually from a backup.\n" + }, + "moduleMigration.fix0256.title": { + "def": "Broken files has been detected", + "es": "Broken files has been detected", + "ja": "破損ファイルが検出されました", + "ko": "Broken files has been detected", + "ru": "Обнаружены повреждённые файлы", + "zh": "检测到损坏的文件", + "zw-th": "Broken files has been detected" + }, + "moduleMigration.insecureChunkExist.buttons.fetch": { + "def": "I already rebuilt the remote. Fetch from the remote", + "es": "I already rebuilt the remote. Fetch from the remote", + "ja": "リモートを既に再構築した。リモートからフェッチ", + "ko": "I already rebuilt the remote. Fetch from the remote", + "ru": "Я уже перестроил удалённую. Загрузить с удалённой", + "zh": "我已经重建了远程数据库,将从远程获取", + "zw-th": "I already rebuilt the remote. Fetch from the remote" + }, + "moduleMigration.insecureChunkExist.buttons.later": { + "def": "I will do it later", + "es": "I will do it later", + "ja": "後で行う", + "ko": "I will do it later", + "ru": "Сделаю позже", + "zh": "我稍后再做", + "zw-th": "I will do it later" + }, + "moduleMigration.insecureChunkExist.buttons.rebuild": { + "def": "Rebuild Everything", + "es": "Rebuild Everything", + "ja": "すべてを再構築", + "ko": "Rebuild Everything", + "ru": "Перестроить всё", + "zh": "重建所有内容", + "zw-th": "Rebuild Everything" + }, + "moduleMigration.insecureChunkExist.laterMessage": { + "def": "We strongly recommend to treat this as soon as possible!", + "es": "We strongly recommend to treat this as soon as possible!", + "ja": "できるだけ早く対処することを強くお勧めします!", + "ko": "We strongly recommend to treat this as soon as possible!", + "ru": "Мы настоятельно рекомендуем обработать это как можно скорее!", + "zh": "我们强烈建议尽快处理此问题!", + "zw-th": "We strongly recommend to treat this as soon as possible!" + }, + "moduleMigration.insecureChunkExist.message": { + "def": "Some chunks are not securely stored and are not encrypted in databases.\n**Please rebuild the database to fix this issue**.\n\nIf your Remote Database is not configured with SSL, or using less-secure credentials, **you are at risk of exposing sensitive data**.\n\nNote: Please upgrade your Self-hosted LiveSync v0.25.6 or higher on all your devices, and back your vault up surely.\nNote2: Rebuild Everything and Fetch consumes a bit of time and traffic, please do it in off-peak hours and ensure a stable network connection.\n", + "es": "Some chunks are not securely stored and are not encrypted in databases.\n**Please rebuild the database to fix this issue**.\n\nIf your Remote Database is not configured with SSL, or using less-secure credentials, **you are at risk of exposing sensitive data**.\n\nNote: Please upgrade your Self-hosted LiveSync v0.25.6 or higher on all your devices, and back your vault up surely.\nNote2: Rebuild Everything and Fetch consumes a bit of time and traffic, please do it in off-peak hours and ensure a stable network connection.\n", + "ja": "一部のチャンクが安全に保存されておらず、データベースで暗号化されていません。\n**この問題を修正するにはデータベースを再構築してください**。\n\nリモートデータベースがSSLで設定されていない、または安全性の低い認証情報を使用している場合、**機密データが漏洩するリスクがあります**。\n\n注意: すべてのデバイスでSelf-hosted LiveSync v0.25.6以降にアップグレードし、必ず保管庫をバックアップしてください。\n注意2: すべてを再構築とフェッチは時間とトラフィックを消費します。オフピーク時間に安定したネットワークで実行してください。\n", + "ko": "Some chunks are not securely stored and are not encrypted in databases.\n**Please rebuild the database to fix this issue**.\n\nIf your Remote Database is not configured with SSL, or using less-secure credentials, **you are at risk of exposing sensitive data**.\n\nNote: Please upgrade your Self-hosted LiveSync v0.25.6 or higher on all your devices, and back your vault up surely.\nNote2: Rebuild Everything and Fetch consumes a bit of time and traffic, please do it in off-peak hours and ensure a stable network connection.\n", + "ru": "Некоторые чанки хранятся небезопасно. Пожалуйста, перестройте базу данных.", + "zh": "一些块未安全存储,并且在数据库中未加密\n**请重建数据库以修复此问题**.\n\n如果你的远程数据库未配置 SSL,或者使用了不安全的凭据 **你可能面临暴露敏感数据的风险**.\n\n注意:请在所有设备上将 Self-hosted LiveSync 升级到 v0.25.6 或更高版本,并确保备份你的保险库\n\n注意2:重建所有内容和获取操作会消耗一些时间和流量,请在非高峰时段进行,并确保网络连接稳定\n", + "zw-th": "Some chunks are not securely stored and are not encrypted in databases.\n**Please rebuild the database to fix this issue**.\n\nIf your Remote Database is not configured with SSL, or using less-secure credentials, **you are at risk of exposing sensitive data**.\n\nNote: Please upgrade your Self-hosted LiveSync v0.25.6 or higher on all your devices, and back your vault up surely.\nNote2: Rebuild Everything and Fetch consumes a bit of time and traffic, please do it in off-peak hours and ensure a stable network connection.\n" + }, + "moduleMigration.insecureChunkExist.title": { + "def": "Insecure chunks found!", + "es": "Insecure chunks found!", + "ja": "安全でないチャンクが見つかりました!", + "ko": "Insecure chunks found!", + "ru": "Обнаружены небезопасные чанки!", + "zh": "发现不安全的块!", + "zw-th": "Insecure chunks found!" + }, + "moduleMigration.logBulkSendCorrupted": { + "def": "Send chunks in bulk has been enabled, however, this feature had been corrupted. Sorry for your inconvenience. Automatically disabled.", + "es": "El envío de fragmentos en bloque se ha habilitado, sin embargo, esta función se ha corrompido. Disculpe las molestias. Deshabilitado automáticamente.", + "ja": "チャンクの一括送信が有効にされていましたが、この機能に問題がありました。ご不便をおかけして申し訳ありません。自動的に無効化されました。", + "ko": "청크 일괄 전송이 활성화되었지만, 이 기능에 문제가 있었습니다. 불편을 드려 죄송합니다. 자동으로 비활성화되었습니다.", + "ru": "Отправка чанков пакетами была включена, но эта функция была повреждена. Приносим извинения. Автоматически отключено.", + "zh": "已启用批量发送 chunks,但此功能已损坏。给您带来不便,我们深表歉意。已自动禁用", + "zw-th": "Send chunks in bulk has been enabled, however, this feature had been corrupted. Sorry for your inconvenience. Automatically disabled." + }, + "moduleMigration.logFetchRemoteTweakFailed": { + "def": "Failed to fetch remote tweak values", + "es": "Error al obtener los valores de ajuste remoto", + "ja": "リモートの調整値の取得に失敗しました", + "ko": "원격 조정 값을 가져오는데 실패했습니다", + "ru": "Не удалось загрузить удалённые настройки", + "zh": "获取远程调整值失败", + "zw-th": "Failed to fetch remote tweak values" + }, + "moduleMigration.logLocalDatabaseNotReady": { + "def": "Something went wrong! The local database is not ready", + "es": "¡Algo salió mal! La base de datos local no está lista", + "ja": "何か問題が発生しました!ローカルデータベースが準備できていません", + "ko": "문제가 발생했습니다! 로컬 데이터베이스가 준비되지 않았습니다", + "ru": "Что-то пошло не так! Локальная база данных не готова", + "zh": "出错了!本地数据库尚未准备好", + "zw-th": "Something went wrong! The local database is not ready" + }, + "moduleMigration.logMigratedSameBehaviour": { + "def": "Migrated to db:${current} with the same behaviour as before", + "es": "Migrado a db:${current} con el mismo comportamiento que antes", + "ja": "以前と同じ動作でdb:${current}に移行しました", + "ko": "이전과 같은 방식으로 동작하도록 db:${current}로 데이터 구조 전환이 완료되었습니다", + "ru": "Миграция на db:current с тем же поведением, что и раньше", + "zh": "已迁移到 db:${current},行为与之前相同", + "zw-th": "Migrated to db:${current} with the same behaviour as before" + }, + "moduleMigration.logMigrationFailed": { + "def": "Migration failed or cancelled from ${old} to ${current}", + "es": "La migración falló o se canceló de ${old} a ${current}", + "ja": "${old}から${current}への移行が失敗またはキャンセルされました", + "ko": "${old}에서 ${current}로의 데이터 구조 전환이 실패했거나 중단되었습니다", + "ru": "Миграция не удалась или отменена с old на current", + "zh": "从 ${old} 到 ${current} 的迁移失败或已取消", + "zw-th": "Migration failed or cancelled from ${old} to ${current}" + }, + "moduleMigration.logRedflag2CreationFail": { + "def": "Failed to create redflag2", + "es": "Error al crear redflag2", + "ja": "redflag2の作成に失敗しました", + "ko": "redflag2 생성에 실패했습니다", + "ru": "Не удалось создать redflag2", + "zh": "创建 redflag2 失败", + "zw-th": "Failed to create redflag2" + }, + "moduleMigration.logRemoteTweakUnavailable": { + "def": "Could not get remote tweak values", + "es": "No se pudieron obtener los valores de ajuste remoto", + "ja": "リモートの調整値を取得できませんでした", + "ko": "원격 조정 값을 가져올 수 없습니다", + "ru": "Не удалось получить удалённые настройки", + "zh": "无法获取远程调整值", + "zw-th": "Could not get remote tweak values" + }, + "moduleMigration.logSetupCancelled": { + "def": "The setup has been cancelled, Self-hosted LiveSync waiting for your setup!", + "es": "La configuración ha sido cancelada, ¡Self-hosted LiveSync está esperando tu configuración!", + "ja": "セットアップがキャンセルされました。Self-hosted LiveSyncはセットアップを待っています!", + "ko": "설정이 취소되었습니다. Self-hosted LiveSync가 설정을 기다리고 있습니다!", + "ru": "Настройка отменена, Self-hosted LiveSync ожидает вашей настройки!", + "zh": "设置已取消,Self-hosted LiveSync 正在等待您的设置!", + "zw-th": "The setup has been cancelled, Self-hosted LiveSync waiting for your setup!" + }, + "moduleMigration.msgFetchRemoteAgain": { + "def": "As you may already know, the self-hosted LiveSync has changed its default behaviour and database structure.\n\nAnd thankfully, with your time and efforts, the remote database appears to have already been migrated. Congratulations!\n\nHowever, we need a bit more. The configuration of this device is not compatible with the remote database. We will need to fetch the remote database again. Should we fetch from the remote again now?\n\n___Note: We cannot synchronise until the configuration has been changed and the database has been fetched again.___\n___Note2: The chunks are completely immutable, we can fetch only the metadata and difference.___", + "es": "Como ya sabrás, Self-hosted LiveSync ha cambiado su comportamiento predeterminado y la estructura de la base de datos.\n\nAfortunadamente, con tu tiempo y esfuerzo, la base de datos remota parece haber sido ya migrada. ¡Felicidades!\n\nSin embargo, necesitamos un poco más. La configuración de este dispositivo no es compatible con la base de datos remota. Necesitaremos volver a obtener la base de datos remota. ¿Debemos obtenerla nuevamente ahora?\n\n___Nota: No podemos sincronizar hasta que la configuración haya sido cambiada y la base de datos haya sido obtenida nuevamente.___\n___Nota2: Los fragmentos son completamente inmutables, solo podemos obtener los metadatos y diferencias.___", + "ja": "ご存知のとおり、self-hosted LiveSyncはデフォルトの動作とデータベース構造を変更しました。\n\nご協力のおかげで、リモートデータベースはすでに移行されているようです。おめでとうございます!\n\nしかし、もう少し必要です。このデバイスの設定はリモートデータベースと互換性がありません。リモートデータベースを再度フェッチする必要があります。今すぐリモートから再フェッチしますか?\n\n___注意: 設定が変更され、データベースが再フェッチされるまで同期できません。___\n___注意2: チャンクは完全に不変なので、メタデータと差分のみフェッチできます。___", + "ko": "이미 알고 계시겠지만, Self-hosted LiveSync의 기본 동작 방식과 데이터베이스 구조가 변경되었습니다.\n\n다행히도 여러분의 노력 덕분에 원격 데이터베이스는 이미 성공적으로 데이터 구조 전환이 완료된 것으로 보입니다. 축하드립니다!\n\n하지만 아직 일부 추가 작업이 필요합니다. 이 기기의 설정이 원격 데이터베이스와 호환되지 않으므로, 원격 데이터를 다시 가져와야 합니다. 지금 원격 데이터베이스를 다시 가져오시겠습니까?\n\n___참고: 설정이 변경되고 데이터베이스를 다시 불러오기 전까지는 동기화가 불가능합니다.___\n___참고2: 청크는 변경이 불가능한 구조이므로, 메타데이터와 차이점만 가져올 수 있습니다.___", + "ru": "Удалённая база данных, похоже, уже была мигрирована. Конфигурация этого устройства несовместима.", + "zh": "您可能已经知道,Self-hosted LiveSync 更改了其默认行为和数据库结构。\n\n值得庆幸的是,在您的时间和努力下,远程数据库似乎已经迁移完成。恭喜!\n\n但是,我们还需要一点点操作。此设备的配置与远程数据库不兼容。我们需要再次从远程数据库获取。我们现在应该再次从远程获取吗?\n\n___注意:在更改配置并再次获取数据库之前,我们无法进行同步。___\n___注意2:chunks 是完全不可变的,我们只能获取元数据和差异", + "zw-th": "As you may already know, the self-hosted LiveSync has changed its default behaviour and database structure.\n\nAnd thankfully, with your time and efforts, the remote database appears to have already been migrated. Congratulations!\n\nHowever, we need a bit more. The configuration of this device is not compatible with the remote database. We will need to fetch the remote database again. Should we fetch from the remote again now?\n\n___Note: We cannot synchronise until the configuration has been changed and the database has been fetched again.___\n___Note2: The chunks are completely immutable, we can fetch only the metadata and difference.___" + }, + "moduleMigration.msgInitialSetup": { + "def": "Your device has **not been set up yet**. Let me guide you through the setup process.\n\nPlease keep in mind that every dialogue content can be copied to the clipboard. If you need to refer to it later, you can paste it into a note in Obsidian. You can also translate it into your language using a translation tool.\n\nFirst, do you have **Setup URI**?\n\nNote: If you do not know what it is, please refer to the [documentation](${URI_DOC}).", + "es": "Tu dispositivo **aún no ha sido configurado**. Permíteme guiarte a través del proceso de configuración.\n\nTen en cuenta que todo el contenido del diálogo se puede copiar al portapapeles. Si necesitas consultarlo más tarde, puedes pegarlo en una nota en Obsidian. También puedes traducirlo a tu idioma utilizando una herramienta de traducción.\n\nPrimero, ¿tienes **URI de configuración**?\n\nNota: Si no sabes qué es, consulta la [documentación](${URI_DOC}).", + "ja": "このデバイスは**まだセットアップされていません**。セットアッププロセスをご案内します。\n\nすべてのダイアログの内容はクリップボードにコピーできます。後で参照する必要があれば、Obsidianのノートに貼り付けてください。翻訳ツールを使ってお使いの言語に翻訳することもできます。\n\nまず、**セットアップURI**をお持ちですか?\n\n注意: それが何か分からない場合は、[documentation](${URI_DOC})を参照してください。", + "ko": "이 기기는 **아직 초기 설정이 완료되지 않았습니다**. 지금부터 설정 과정을 안내해 드리겠습니다.\n\n모든 대화 내용은 클립보드에 복사할 수 있습니다. 나중에 참고하려면 Obsidian 노트에 붙여넣거나 번역 도구를 활용해 번역하셔도 됩니다.\n\n먼저, **Setup URI**를 가지고 계신가요?\n\n참고: Setup URI가 무엇인지 잘 모르시겠다면 [문서](${URI_DOC})를 참고해 주세요.", + "ru": "Ваше устройство ещё не настроено. У вас есть Setup URI?", + "zh": "您的设备**尚未设置**。让我引导您完成设置过程。\n\n请记住,每个对话框内容都可以复制到剪贴板。如果以后需要参考,可以将其粘贴到 Obsidian 的笔记中。您也可以使用翻译工具将其翻译成您的语言。\n\n首先,您有**设置 URI** 吗?\n\n注意:如果您不知道这是什么,请参阅[文档](${URI_DOC})", + "zw-th": "Your device has **not been set up yet**. Let me guide you through the setup process.\n\nPlease keep in mind that every dialogue content can be copied to the clipboard. If you need to refer to it later, you can paste it into a note in Obsidian. You can also translate it into your language using a translation tool.\n\nFirst, do you have **Setup URI**?\n\nNote: If you do not know what it is, please refer to the [documentation](${URI_DOC})." + }, + "moduleMigration.msgRecommendSetupUri": { + "def": "We strongly recommend that you generate a set-up URI and use it.\nIf you do not have knowledge about it, please refer to the [documentation](${URI_DOC}) (Sorry again, but it is important).\n\nHow do you want to set it up manually?", + "es": "Te recomendamos encarecidamente que generes una URI de configuración y la utilices.\nSi no tienes conocimientos al respecto, consulta la [documentación](${URI_DOC}) (Lo siento de nuevo, pero es importante).\n\n¿Cómo quieres configurarlo manualmente?", + "ja": "セットアップURIを生成して使用することを強くお勧めします。\nこれについて知識がない場合は、[documentation](${URI_DOC})を参照してください(重要です)。\n\n手動でセットアップしますか?", + "ko": "Setup URI를 생성해 사용하는 것을 강력히 권장합니다.\nSetup URI가 무엇인지 잘 모르시겠다면 [문서](${URI_DOC})를 참고해 주세요. 중요한 내용이니 꼭 확인하시기 바랍니다.\n\n직접 수동 설정을 진행하시겠습니까?", + "ru": "Мы рекомендуем сгенерировать Setup URI.", + "zh": "我们强烈建议您生成一个设置 URI 并使用它。\n如果您对此不了解,请参阅[文档](${URI_DOC})(再次抱歉,但这很重要)。\n\n您想如何手动设置?", + "zw-th": "We strongly recommend that you generate a set-up URI and use it.\nIf you do not have knowledge about it, please refer to the [documentation](${URI_DOC}) (Sorry again, but it is important).\n\nHow do you want to set it up manually?" + }, + "moduleMigration.msgSinceV02321": { + "def": "Since v0.23.21, the self-hosted LiveSync has changed the default behaviour and database structure. The following changes have been made:\n\n1. **Case sensitivity of filenames**\n The handling of filenames is now case-insensitive. This is a beneficial change for most platforms, other than Linux and iOS, which do not manage filename case sensitivity effectively.\n (On These, a warning will be displayed for files with the same name but different cases).\n\n2. **Revision handling of the chunks**\n Chunks are immutable, which allows their revisions to be fixed. This change will enhance the performance of file saving.\n\n___However, to enable either of these changes, both remote and local databases need to be rebuilt. This process takes a few minutes, and we recommend doing it when you have ample time.___\n\n- If you wish to maintain the previous behaviour, you can skip this process by using `${KEEP}`.\n- If you do not have enough time, please choose `${DISMISS}`. You will be prompted again later.\n- If you have rebuilt the database on another device, please select `${DISMISS}` and try synchronizing again. Since a difference has been detected, you will be prompted again.", + "es": "Desde la versión v0.23.21, Self-hosted LiveSync ha cambiado el comportamiento predeterminado y la estructura de la base de datos. Se han realizado los siguientes cambios:\n\n1. **Sensibilidad a mayúsculas de los nombres de archivo**\n El manejo de los nombres de archivo ahora no distingue entre mayúsculas y minúsculas. Este cambio es beneficioso para la mayoría de las plataformas, excepto Linux y iOS, que no gestionan efectivamente la sensibilidad a mayúsculas de los nombres de archivo.\n (En estos, se mostrará una advertencia para archivos con el mismo nombre pero diferentes mayúsculas).\n\n2. **Manejo de revisiones de los fragmentos**\n Los fragmentos son inmutables, lo que permite que sus revisiones sean fijas. Este cambio mejorará el rendimiento al guardar archivos.\n\n___Sin embargo, para habilitar cualquiera de estos cambios, es necesario reconstruir tanto las bases de datos remota como la local. Este proceso toma unos minutos, y recomendamos hacerlo cuando tengas tiempo suficiente.___\n\n- Si deseas mantener el comportamiento anterior, puedes omitir este proceso usando `${KEEP}`.\n- Si no tienes suficiente tiempo, por favor elige `${DISMISS}`. Se te pedirá nuevamente más tarde.\n- Si has reconstruido la base de datos en otro dispositivo, selecciona `${DISMISS}` e intenta sincronizar nuevamente. Dado que se ha detectado una diferencia, se te solicitará nuevamente.", + "ja": "v0.23.21以降、self-hosted LiveSyncはデフォルトの動作とデータベース構造を変更しました。以下の変更が行われました:\n\n1. **ファイル名の大文字小文字の区別**\n ファイル名の処理が大文字小文字を区別しなくなりました。これは、ファイル名の大文字小文字を効果的に管理しないLinuxとiOS以外のほとんどのプラットフォームにとって有益な変更です。\n (これらの環境では、同じ名前で大文字小文字が異なるファイルに対して警告が表示されます)。\n\n2. **チャンクのリビジョン処理**\n チャンクは不変であり、リビジョンを固定できます。この変更により、ファイル保存のパフォーマンスが向上します。\n\n___しかし、これらの変更を有効にするには、リモートとローカルの両方のデータベースを再構築する必要があります。このプロセスは数分かかります。時間に余裕があるときに行うことをお勧めします。___\n\n- 以前の動作を維持したい場合は、`${KEEP}`を使用してこのプロセスをスキップできます。\n- 時間がない場合は、`${DISMISS}`を選択してください。後で再度確認されます。\n- 別のデバイスでデータベースを再構築した場合は、`${DISMISS}`を選択して再度同期してみてください。差異が検出されたため、再度確認されます。", + "ko": "v0.23.21부터 Self-hosted LiveSync의 기본 동작 방식과 데이터베이스 구조가 변경되었습니다. 주요 변경사항은 다음과 같습니다:\n\n1. **파일명 대소문자 구분 처리**\n 이제 파일명은 대소문자를 구분하지 않고 처리됩니다. 이는 파일명 구분을 제대로 지원하지 않는 Linux 및 iOS를 제외한 대부분의 플랫폼에서 유리한 변화입니다.\n (Linux나 iOS에서는 대소문자만 다른 파일이 존재할 경우 경고가 표시됩니다)\n\n2. **청크 리비전 관리 방식 개선**\n 청크는 변경 불가능한(immutable) 구조로 고정되며, 이를 통해 리비전 처리가 안정화되고 파일 저장 성능이 향상됩니다.\n\n___단, 위 기능을 활성화하려면 원격 및 로컬 데이터베이스를 모두 재구성해야 합니다. 이 과정은 수 분이 소요되므로 여유가 있을 때 실행하시는 것을 권장합니다.___\n\n- 기존 방식대로 유지하려면 `${KEEP}`을 선택해 이 과정을 건너뛸 수 있습니다.\n- 시간이 부족하다면 `${DISMISS}`를 눌러주시면 나중에 다시 안내드리겠습니다.\n- 이미 다른 기기에서 데이터베이스를 재구성하셨다면 `${DISMISS}`를 선택한 뒤 다시 동기화해 보세요. 차이점이 감지되면 다시 안내드리겠습니다.", + "ru": "Начиная с v0.23.21, self-hosted LiveSync изменил поведение и структуру базы данных.", + "zh": "自 v0.23.21 起,Self-hosted LiveSync 更改了默认行为和数据库结构。进行了以下更改:\n\n1. **文件名的区分大小写** \n现在处理文件名时不区分大小写。这对于大多数平台来说是一个有益的更改,除了 Linux 和 iOS,它们不能有效地管理文件名的大小写敏感性。\n(在这些平台上,对于名称相同但大小写不同的文件将显示警告)。\n\n2. **chunks 的版本处理** \nchunks 是不可变的,这使得它们的版本可以固定。此更改将提高文件保存的性能。\n\n___然而,要启用这些更改中的任何一个,都需要重建远程和本地数据库。这个过程需要几分钟,我们建议您在有充足时间时进行。___\n\n- 如果您希望保持以前的行为,可以使用 `${KEEP}` 跳过此过程。\n- 如果您没有足够的时间,请选择 `${DISMISS}`。稍后会再次提示您。\n- 如果您已在另一台设备上重建了数据库,请选择 `${DISMISS}` 并尝试再次同步。由于检测到差异,系统会再次提示您", + "zw-th": "Since v0.23.21, the self-hosted LiveSync has changed the default behaviour and database structure. The following changes have been made:\n\n1. **Case sensitivity of filenames**\n The handling of filenames is now case-insensitive. This is a beneficial change for most platforms, other than Linux and iOS, which do not manage filename case sensitivity effectively.\n (On These, a warning will be displayed for files with the same name but different cases).\n\n2. **Revision handling of the chunks**\n Chunks are immutable, which allows their revisions to be fixed. This change will enhance the performance of file saving.\n\n___However, to enable either of these changes, both remote and local databases need to be rebuilt. This process takes a few minutes, and we recommend doing it when you have ample time.___\n\n- If you wish to maintain the previous behaviour, you can skip this process by using `${KEEP}`.\n- If you do not have enough time, please choose `${DISMISS}`. You will be prompted again later.\n- If you have rebuilt the database on another device, please select `${DISMISS}` and try synchronizing again. Since a difference has been detected, you will be prompted again." + }, + "moduleMigration.optionAdjustRemote": { + "def": "Adjust to remote", + "es": "Ajustar al remoto", + "ja": "リモートに合わせる", + "ko": "원격에 맞추기", + "ru": "Настроить под удалённую", + "zh": "调整到远程设置", + "zw-th": "Adjust to remote" + }, + "moduleMigration.optionDecideLater": { + "def": "Decide it later", + "es": "Decidirlo más tarde", + "ja": "後で決める", + "ko": "나중에 결정하기", + "ru": "Решить позже", + "zh": "稍后决定", + "zw-th": "Decide it later" + }, + "moduleMigration.optionEnableBoth": { + "def": "Enable both", + "es": "Habilitar ambos", + "ja": "両方を有効にする", + "ko": "둘 다 활성화", + "ru": "Включить оба", + "zh": "启用两者", + "zw-th": "Enable both" + }, + "moduleMigration.optionEnableFilenameCaseInsensitive": { + "def": "Enable only #1", + "es": "Habilitar solo #1", + "ja": "#1のみ有効にする", + "ko": "#1만 활성화", + "ru": "Включить только #1", + "zh": "仅启用 #1", + "zw-th": "Enable only #1" + }, + "moduleMigration.optionEnableFixedRevisionForChunks": { + "def": "Enable only #2", + "es": "Habilitar solo #2", + "ja": "#2のみ有効にする", + "ko": "#2만 활성화", + "ru": "Включить только #2", + "zh": "仅启用 #2", + "zw-th": "Enable only #2" + }, + "moduleMigration.optionHaveSetupUri": { + "def": "Yes, I have", + "es": "Sí, tengo", + "ja": "はい、持っています", + "ko": "예, 있습니다", + "ru": "Да, есть", + "zh": "是的,我有", + "zw-th": "Yes, I have" + }, + "moduleMigration.optionKeepPreviousBehaviour": { + "def": "Keep previous behaviour", + "es": "Mantener comportamiento anterior", + "ja": "以前の動作を維持", + "ko": "이전 동작 유지", + "ru": "Сохранить предыдущее поведение", + "zh": "保持以前的行为", + "zw-th": "Keep previous behaviour" + }, + "moduleMigration.optionManualSetup": { + "def": "Set it up all manually", + "es": "Configurarlo todo manualmente", + "ja": "すべて手動でセットアップ", + "ko": "모든 것을 수동으로 설정", + "ru": "Настроить всё вручную", + "zh": "全部手动设置", + "zw-th": "Set it up all manually" + }, + "moduleMigration.optionNoAskAgain": { + "def": "No, please ask again", + "es": "No, por favor pregúntame de nuevo", + "ja": "いいえ、後で確認する", + "ko": "아니요 (나중에 다시 물어보기)", + "ru": "Нет, спросить снова", + "zh": "不,请稍后再次询问", + "zw-th": "No, please ask again" + }, + "moduleMigration.optionNoSetupUri": { + "def": "No, I do not have", + "es": "No, no tengo", + "ja": "いいえ、持っていません", + "ko": "아니요, 없습니다", + "ru": "Нет, нет", + "zh": "不,我没有", + "zw-th": "No, I do not have" + }, + "moduleMigration.optionRemindNextLaunch": { + "def": "Remind me at the next launch", + "es": "Recordármelo en el próximo inicio", + "ja": "次回起動時にリマインド", + "ko": "다음 시작 시 알림", + "ru": "Напомнить при следующем запуске", + "zh": "下次启动时提醒我", + "zw-th": "Remind me at the next launch" + }, + "moduleMigration.optionSetupViaP2P": { + "def": "Use %{short_p2p_sync} to set up", + "es": "Use %{short_p2p_sync} to set up", + "ja": "%{short_p2p_sync}を使ってセットアップ", + "ko": "%{short_p2p_sync}를 사용하여 설정", + "ru": "Использовать short_p2p_sync для настройки", + "zh": "Use %{short_p2p_sync} to set up", + "zw-th": "Use %{short_p2p_sync} to set up" + }, + "moduleMigration.optionSetupWizard": { + "def": "Take me into the setup wizard", + "es": "Llévame al asistente de configuración", + "ja": "セットアップウィザードへ", + "ko": "설정 마법사로 안내", + "ru": "Перейти в мастер настройки", + "zh": "带我进入设置向导", + "zw-th": "Take me into the setup wizard" + }, + "moduleMigration.optionYesFetchAgain": { + "def": "Yes, fetch again", + "es": "Sí, obtener nuevamente", + "ja": "はい、再フェッチする", + "ko": "예 (다시 가져오기)", + "ru": "Да, загрузить снова", + "zh": "是的,再次获取", + "zw-th": "Yes, fetch again" + }, + "moduleMigration.titleCaseSensitivity": { + "def": "Case Sensitivity", + "es": "Sensibilidad a mayúsculas", + "ja": "大文字小文字の区別", + "ko": "대소문자 구분", + "ru": "Чувствительность к регистру", + "zh": "大小写敏感性", + "zw-th": "Case Sensitivity" + }, + "moduleMigration.titleRecommendSetupUri": { + "def": "Recommendation to use Setup URI", + "es": "Recomendación de uso de URI de configuración", + "ja": "セットアップURIの使用を推奨", + "ko": "Setup URI 사용 권장", + "ru": "Рекомендация использовать Setup URI", + "zh": "推荐使用设置 URI", + "zw-th": "Recommendation to use Setup URI" + }, + "moduleMigration.titleWelcome": { + "def": "Welcome to Self-hosted LiveSync", + "es": "Bienvenido a Self-hosted LiveSync", + "ja": "Self-hosted LiveSyncへようこそ", + "ko": "Self-hosted LiveSync에 오신 것을 환영합니다", + "ru": "Добро пожаловать в Self-hosted LiveSync", + "zh": "欢迎使用 Self-hosted LiveSync", + "zw-th": "Welcome to Self-hosted LiveSync" + }, + "moduleObsidianMenu.replicate": { + "def": "Replicate", + "es": "Replicar", + "ja": "レプリケート", + "ko": "복제", + "ru": "Реплицировать", + "zh": "复制", + "zw-th": "Replicate" + }, + "Move remotely deleted files to the trash, instead of deleting.": { + "def": "Move remotely deleted files to the trash, instead of deleting.", + "es": "Mover archivos borrados remotos a papelera en lugar de eliminarlos", + "ja": "リモートで削除されたファイルを削除せずにゴミ箱に移動する。", + "ko": "원격에서 삭제된 파일을 삭제하는 대신 휴지통으로 이동합니다.", + "ru": "Перемещать удалённые на удалённом сервере файлы в корзину вместо удаления.", + "zh": "将远程删除的文件移至回收站,而不是直接删除", + "zw-th": "Move remotely deleted files to the trash, instead of deleting." + }, + "Not all messages have been translated. And, please revert to \"Default\" when reporting errors.": { + "def": "Not all messages have been translated. And, please revert to \"Default\" when reporting errors.", + "es": "No todos los mensajes están traducidos. Por favor, vuelva a \"Predeterminado\" al reportar errores.", + "ja": "すべてのメッセージが翻訳されているわけではありません。また、Issue報告の際にはいったん\"Default\"に戻してください", + "ko": "모든 메시지가 번역되지 않았습니다. 오류 신고 시 \"기본값\"으로 되돌려 주세요.", + "ru": "Не все сообщения переведены. И, пожалуйста, вернитесь к «По умолчанию» при сообщении об ошибках.", + "zh": "并非所有消息都已翻译。请在报告错误时恢复为\"默认\"", + "zw-th": "Not all messages have been translated. And, please revert to \"Default\" when reporting errors." + }, + "Notify all setting files": { + "def": "Notify all setting files", + "es": "Notificar todos los archivos de configuración", + "ja": "すべての設定を通知", + "ko": "모든 설정 파일 알림", + "ru": "Уведомлять обо всех файлах настроек", + "zh": "通知所有设置文件", + "zw-th": "Notify all setting files" + }, + "Notify customized": { + "def": "Notify customized", + "es": "Notificar personalizaciones", + "ja": "カスタマイズが行われたら通知する", + "ko": "사용자 설정 알림", + "ru": "Уведомлять о настройках", + "zh": "通知自定义设置", + "zw-th": "Notify customized" + }, + "Notify when other device has newly customized.": { + "def": "Notify when other device has newly customized.", + "es": "Notificar cuando otro dispositivo personalice", + "ja": "別の端末がカスタマイズを行なったら通知する", + "ko": "다른 기기에서 새로운 사용자 설정이 있을 때 알림을 받습니다.", + "ru": "Уведомлять, когда другое устройство изменило настройки.", + "zh": "当其他设备有新的自定义设置时通知 ", + "zw-th": "Notify when other device has newly customized." + }, + "Notify when the estimated remote storage size exceeds on start up": { + "def": "Notify when the estimated remote storage size exceeds on start up", + "es": "Notificar cuando el tamaño estimado del almacenamiento remoto exceda al iniciar", + "ja": "起動時に予想リモートストレージサイズを超えたら通知", + "ko": "시작 시 예상 원격 스토리지 크기가 초과되면 알림", + "ru": "Уведомлять, когда оценочный размер удалённого хранилища превышает при запуске", + "zh": "启动时当估计的远程存储大小超出时通知", + "zw-th": "Notify when the estimated remote storage size exceeds on start up" + }, + "Number of batches to process at a time. Defaults to 40. Minimum is 2. This along with batch size controls how many docs are kept in memory at a time.": { + "def": "Number of batches to process at a time. Defaults to 40. Minimum is 2. This along with batch size controls how many docs are kept in memory at a time.", + "es": "Número de lotes a procesar. Default 40, mínimo 2. Controla documentos en memoria", + "ja": "1度に処理するバッチの数。デフォルトは40、最小は2。この数値は、どれだけの容量の書類がメモリに保存されるかも定義します。", + "ko": "한 번에 처리할 일괄 처리 수입니다. 기본값은 40입니다. 최소값은 2입니다. 이는 일괄 크기와 함께 메모리에 보관되는 문서 수를 제어합니다.", + "ru": "Number of batches to process at a time. Defaults to 40. Minimum is 2. This along with batch size controls how many docs are kept in memory at a time.", + "zh": "一次处理的批量数量。默认为 40。最小为 2。此设置与批量大小一起控制一次在内存中保留多少文档", + "zw-th": "Number of batches to process at a time. Defaults to 40. Minimum is 2. This along with batch size controls how many docs are kept in memory at a time." +>>>>>>> 7a02c45 (i18n: fill all missing keys across all 7 non-English languages to 100%) + }, + "Number of batches to process at a time. Defaults to 40. Minimum is 2. This along with batch size controls how many docs are kept in memory at a time.": + { + def: "Number of batches to process at a time. Defaults to 40. Minimum is 2. This along with batch size controls how many docs are kept in memory at a time.", + es: "Número de lotes a procesar. Default 40, mínimo 2. Controla documentos en memoria", + fr: "Nombre de lots à traiter à la fois. Par défaut 40. Minimum 2. Ceci, avec la taille de lot, contrôle le nombre de documents conservés en mémoire à la fois.", + ja: "1度に処理するバッチの数。デフォルトは40、最小は2。この数値は、どれだけの容量の書類がメモリに保存されるかも定義します。", + ko: "한 번에 처리할 일괄 처리 수입니다. 기본값은 40입니다. 최소값은 2입니다. 이는 일괄 크기와 함께 메모리에 보관되는 문서 수를 제어합니다.", + ru: "Number of batches to process at a time. Defaults to 40. Minimum is 2. This along with batch size controls how many docs are kept in memory at a time.", + zh: "一次处理的批量数量。默认为 40。最小为 2。此设置与批量大小一起控制一次在内存中保留多少文档", + }, + "Number of changes to sync at a time. Defaults to 50. Minimum is 2.": { +<<<<<<< HEAD + def: "Number of changes to sync at a time. Defaults to 50. Minimum is 2.", + es: "Número de cambios a sincronizar simultáneamente. Default 50, mínimo 2", + fr: "Nombre de modifications à synchroniser à la fois. Par défaut 50. Minimum 2.", + ja: "一度に同期する変更の数。デフォルトは50、最小は2。", + ko: "한 번에 동기화할 변경 사항의 수입니다. 기본값은 50입니다. 최소값은 2입니다.", + ru: "Количество изменений для синхронизации за раз. По умолчанию 50. Минимум 2.", + zh: "一次同步的更改数量。默认为 50。最小为 2。", + }, + "obsidianLiveSyncSettingTab.btnApply": { + def: "Apply", + es: "Aplicar", + fr: "Appliquer", + ja: "適用", + ko: "적용", + ru: "Применить", + zh: "应用", + }, + "obsidianLiveSyncSettingTab.btnCheck": { + def: "Check", + es: "Verificar", + fr: "Vérifier", + ja: "確認", + ko: "확인", + ru: "Проверить", + zh: "检查", + }, + "obsidianLiveSyncSettingTab.btnCopy": { + def: "Copy", + es: "Copiar", + fr: "Copier", + ja: "コピー", + ko: "복사", + ru: "Копировать", + zh: "复制", + }, + "obsidianLiveSyncSettingTab.btnDisable": { + def: "Disable", + es: "Desactivar", + fr: "Désactiver", + ja: "無効化", + ko: "비활성화", + ru: "Отключить", + zh: "禁用", + }, + "obsidianLiveSyncSettingTab.btnDiscard": { + def: "Discard", + es: "Descartar", + fr: "Abandonner", + ja: "破棄", + ko: "삭제", ru: "Отменить", zh: "丢弃", }, "obsidianLiveSyncSettingTab.btnEnable": { - def: "Enable", - es: "Activar", - fr: "Activer", - ja: "有効化", - ko: "활성화", - ru: "Включить", - zh: "启用", + def: "Enable", + es: "Activar", + fr: "Activer", + ja: "有効化", + ko: "활성화", + ru: "Включить", + zh: "启用", + }, + "obsidianLiveSyncSettingTab.btnFix": { + def: "Fix", + es: "Corregir", + fr: "Corriger", + ja: "修正", + ko: "수정", + ru: "Исправить", + zh: "修复", + }, + "obsidianLiveSyncSettingTab.btnGotItAndUpdated": { + def: "I got it and updated.", + es: "Lo entendí y actualicé.", + fr: "J'ai compris et mis à jour.", + ja: "理解しました、更新しました。", + ko: "알겠습니다. 업데이트했습니다.", + ru: "Понял и обновил.", + zh: "我明白了并且已更新", + }, + "obsidianLiveSyncSettingTab.btnNext": { + def: "Next", + es: "Siguiente", + fr: "Suivant", + ja: "次へ", + ko: "다음", + ru: "Далее", + zh: "下一步", + }, + "obsidianLiveSyncSettingTab.btnStart": { + def: "Start", + es: "Iniciar", + fr: "Démarrer", + ja: "開始", + ko: "시작", + ru: "Старт", + zh: "开始", + }, + "obsidianLiveSyncSettingTab.btnTest": { + def: "Test", + es: "Probar", + fr: "Tester", + ja: "テスト", + ko: "테스트", + ru: "Тест", + zh: "测试", + }, + "obsidianLiveSyncSettingTab.btnUse": { + def: "Use", + es: "Usar", + fr: "Utiliser", + ja: "使用", + ko: "사용", + ru: "Использовать", + zh: "使用", + }, + "obsidianLiveSyncSettingTab.buttonFetch": { + def: "Fetch", + es: "Obtener", + fr: "Récupérer", + ja: "フェッチ", + ko: "가져오기", + ru: "Загрузить", + zh: "获取", + }, + "obsidianLiveSyncSettingTab.buttonNext": { + def: "Next", + es: "Siguiente", + fr: "Suivant", + ja: "次へ", + ko: "다음", + ru: "Далее", + zh: "下一步", + }, + "obsidianLiveSyncSettingTab.defaultLanguage": { + def: "Default", + es: "Predeterminado", + fr: "Par défaut", + ja: "デフォルト", + ko: "기본값", + ru: "По умолчанию", + zh: "默认", + }, + "obsidianLiveSyncSettingTab.descConnectSetupURI": { + def: "This is the recommended method to set up Self-hosted LiveSync with a Setup URI.", + es: "Este es el método recomendado para configurar Self-hosted LiveSync con una URI de configuración.", + fr: "Méthode recommandée pour configurer Self-hosted LiveSync avec une URI de configuration.", + ja: "セットアップURIを使用してSelf-hosted LiveSyncをセットアップする推奨方法です。", + ko: "이것은 Setup URI로 Self-hosted LiveSync를 설정하는 권장 방법입니다.", + ru: "Это рекомендуемый способ настройки Self-hosted LiveSync с помощью Setup URI.", + zh: "这是使用设置 URI 设置 Self-hosted LiveSync 的推荐方法", + }, + "obsidianLiveSyncSettingTab.descCopySetupURI": { + def: "Perfect for setting up a new device!", + es: "¡Perfecto para configurar un nuevo dispositivo!", + fr: "Parfait pour configurer un nouvel appareil !", + ja: "新しいデバイスのセットアップにおすすめ!", + ko: "새 기기 설정에 완벽합니다!", + ru: "Идеально подходит для настройки нового устройства!", + zh: "非常适合设置新设备!", + }, + "obsidianLiveSyncSettingTab.descEnableLiveSync": { + def: "Only enable this after configuring either of the above two options or completing all configuration manually.", + es: "Solo habilita esto después de configurar cualquiera de las dos opciones anteriores o completar toda la configuración manualmente.", + fr: "N'activez ceci qu'après avoir configuré l'une des deux options ci-dessus ou terminé toute la configuration manuellement.", + ja: "上記の2つのオプションのいずれかを設定するか、すべての設定を手動で完了した後にのみ有効にしてください。", + ko: "위의 두 옵션 중 하나를 구성하거나 모든 구성을 수동으로 완료한 후에만 활성화하세요.", + ru: "Включайте это только после настройки одного из двух вариантов выше или после полного ручного завершения всей конфигурации.", + zh: "仅在配置了上述两个选项之一或手动完成所有配置后启用此选项", + }, + "obsidianLiveSyncSettingTab.descFetchConfigFromRemote": { + def: "Fetch necessary settings from already configured remote server.", + es: "Obtener las configuraciones necesarias del servidor remoto ya configurado.", + fr: "Récupérer les paramètres nécessaires depuis un serveur distant déjà configuré.", + ja: "既に設定済みのリモートサーバーから必要な設定を取得します。", + ko: "이미 구성된 원격 서버에서 필요한 설정을 가져옵니다.", + ru: "Получить необходимые настройки с уже настроенного удалённого сервера.", + zh: "从已配置的远程服务器获取必要的设置", + }, + "obsidianLiveSyncSettingTab.descManualSetup": { + def: "Not recommended, but useful if you don't have a Setup URI", + es: "No recomendado, pero útil si no tienes una URI de configuración", + fr: "Non recommandé, mais utile si vous n'avez pas d'URI de configuration", + ja: "推奨しませんが、セットアップURIがない場合に便利です", + ko: "권장하지 않지만 Setup URI가 없는 경우에 유용합니다", + ru: "Не рекомендуется, но полезно, если у вас нет Setup URI.", + zh: "不推荐,但如果您没有设置 URI 则很有用", + }, + "obsidianLiveSyncSettingTab.descTestDatabaseConnection": { + def: "Open database connection. If the remote database is not found and you have permission to create a database, the database will be created.", + es: "Abrir conexión a la base de datos. Si no se encuentra la base de datos remota y tienes permiso para crear una base de datos, se creará la base de datos.", + fr: "Ouvrir la connexion à la base de données. Si la base distante est introuvable et que vous avez l'autorisation de créer une base, elle sera créée.", + ja: "データベース接続を開きます。リモートデータベースが見つからず、データベースを作成する権限がある場合は、データベースが作成されます。", + ko: "데이터베이스 연결을 엽니다. 원격 데이터베이스를 찾을 수 없고 데이터베이스 생성 권한이 있는 경우, 데이터베이스가 생성됩니다.", + ru: "Открыть подключение к базе данных. Если удалённая база данных не найдена и у вас есть право на её создание, база будет создана.", + zh: "打开数据库连接。如果未找到远程数据库并且您有创建数据库的权限,则将创建数据库", + }, + "obsidianLiveSyncSettingTab.descValidateDatabaseConfig": { + def: "Checks and fixes any potential issues with the database config.", + es: "Verifica y soluciona cualquier problema potencial con la configuración de la base de datos.", + fr: "Vérifie et corrige les problèmes potentiels de la configuration de la base.", + ja: "データベース設定の潜在的な問題を確認し、修正します。", + ko: "데이터베이스 구성의 잠재적 문제를 확인하고 수정합니다.", + ru: "Проверяет и исправляет любые потенциальные проблемы в конфигурации базы данных.", + zh: "检查并修复数据库配置中的任何潜在问题", + }, + "obsidianLiveSyncSettingTab.errAccessForbidden": { + def: "❗ Access forbidden.", + es: "Acceso prohibido.", + fr: "❗ Accès interdit.", + ja: "❗ アクセスが禁止されています。", + ko: "❗ 액세스가 금지되었습니다.", + ru: "❗ Доступ запрещён.", + zh: "❗ 访问被禁止", + }, + "obsidianLiveSyncSettingTab.errCannotContinueTest": { + def: "We could not continue the test.", + es: "No se pudo continuar con la prueba.", + fr: "Impossible de poursuivre le test.", + ja: "テストを続行できませんでした。", + ko: "테스트를 계속할 수 없습니다.", + ru: "Мы не можем продолжить тест.", + zh: "我们无法继续测试。", + }, + "obsidianLiveSyncSettingTab.errCorsCredentials": { + def: "❗ cors.credentials is wrong", + es: "❗ cors.credentials es incorrecto", + fr: "❗ cors.credentials est incorrect", + ja: "❗ cors.credentialsが不正です", + ko: "❗ cors.credentials가 잘못되었습니다", + ru: "❗ cors.credentials неверно", + zh: "❗ cors.credentials 设置错误", + }, + "obsidianLiveSyncSettingTab.errCorsNotAllowingCredentials": { + def: "❗ CORS is not allowing credentials", + es: "CORS no permite credenciales", + fr: "❗ CORS n'autorise pas les identifiants", + ja: "❗ CORSが認証情報を許可していません", + ko: "❗ CORS에서 자격 증명을 허용하지 않습니다", + ru: "❗ CORS не разрешает учётные данные", + zh: "❗ CORS 不允许凭据", + }, + "obsidianLiveSyncSettingTab.errCorsOrigins": { + def: "❗ cors.origins is wrong", + es: "❗ cors.origins es incorrecto", + fr: "❗ cors.origins est incorrect", + ja: "❗ cors.originsが不正です", + ko: "❗ cors.origins가 잘못되었습니다", + ru: "❗ cors.origins неверно", + zh: "❗ cors.origins 设置错误", + }, + "obsidianLiveSyncSettingTab.errEnableCors": { + def: "❗ httpd.enable_cors is wrong", + es: "❗ httpd.enable_cors es incorrecto", + fr: "❗ httpd.enable_cors est incorrect", + ja: "❗ httpd.enable_corsが不正です", + ko: "❗ httpd.enable_cors가 잘못되었습니다", + ru: "❗ httpd.enable_cors неверно", + zh: "❗ httpd.enable_cors 设置错误", + }, + "obsidianLiveSyncSettingTab.errEnableCorsChttpd": { + def: "❗ chttpd.enable_cors is wrong", + fr: "❗ chttpd.enable_cors est incorrect", + ja: "❗ chttpd.enable_corsが不正です", + ru: "❗ chttpd.enable_cors неверно", + zh: "❗ chttpd.enable_cors 设置错误", + }, + "obsidianLiveSyncSettingTab.errMaxDocumentSize": { + def: "❗ couchdb.max_document_size is low)", + es: "❗ couchdb.max_document_size es bajo)", + fr: "❗ couchdb.max_document_size est trop bas)", + ja: "❗ couchdb.max_document_sizeが低すぎます", + ko: "❗ couchdb.max_document_size가 낮습니다)", + ru: "❗ couchdb.max_document_size низкое", + zh: "❗ couchdb.max_document_size 设置过低)", + }, + "obsidianLiveSyncSettingTab.errMaxRequestSize": { + def: "❗ chttpd.max_http_request_size is low)", + es: "❗ chttpd.max_http_request_size es bajo)", + fr: "❗ chttpd.max_http_request_size est trop bas)", + ja: "❗ chttpd.max_http_request_sizeが低すぎます", + ko: "❗ chttpd.max_http_request_size가 낮습니다)", + ru: "❗ chttpd.max_http_request_size низкое", + zh: "❗ chttpd.max_http_request_size 设置过低)", + }, + "obsidianLiveSyncSettingTab.errMissingWwwAuth": { + def: "❗ httpd.WWW-Authenticate is missing", + es: "❗ httpd.WWW-Authenticate falta", + fr: "❗ httpd.WWW-Authenticate est manquant", + ja: "❗ httpd.WWW-Authenticateが不足しています", + ko: "❗ httpd.WWW-Authenticate가 누락되었습니다", + ru: "❗ httpd.WWW-Authenticate отсутствует", + zh: "❗ 缺少 httpd.WWW-Authenticate 设置", + }, + "obsidianLiveSyncSettingTab.errRequireValidUser": { + def: "❗ chttpd.require_valid_user is wrong.", + es: "❗ chttpd.require_valid_user es incorrecto.", + fr: "❗ chttpd.require_valid_user est incorrect.", + ja: "❗ chttpd.require_valid_userが不正です。", + ko: "❗ chttpd.require_valid_user가 잘못되었습니다.", + ru: "❗ chttpd.require_valid_user неверно.", + zh: "❗ chttpd.require_valid_user 设置错误", + }, + "obsidianLiveSyncSettingTab.errRequireValidUserAuth": { + def: "❗ chttpd_auth.require_valid_user is wrong.", + es: "❗ chttpd_auth.require_valid_user es incorrecto.", + fr: "❗ chttpd_auth.require_valid_user est incorrect.", + ja: "❗ chttpd_auth.require_valid_userが不正です。", + ko: "❗ chttpd_auth.require_valid_user가 잘못되었습니다.", + ru: "❗ chttpd_auth.require_valid_user неверно.", + zh: "❗ chttpd_auth.require_valid_user 设置错误", + }, + "obsidianLiveSyncSettingTab.labelDisabled": { + def: "⏹️ : Disabled", + es: "⏹️ : Desactivado", + fr: "⏹️ : Désactivé", + ja: "⏹️ : 無効", + ko: "⏹️ : 비활성화됨", + ru: "⏹️ : Отключено", + zh: "⏹️ : 已禁用", + }, + "obsidianLiveSyncSettingTab.labelEnabled": { + def: "🔁 : Enabled", + es: "🔁 : Activado", + fr: "🔁 : Activé", + ja: "🔁 : 有効", + ko: "🔁 : 활성화됨", + ru: "🔁 : Включено", + zh: "🔁 : 已启用", + }, + "obsidianLiveSyncSettingTab.levelAdvanced": { + def: " (Advanced)", + es: " (avanzado)", + fr: " (Avancé)", + ja: " (上級)", + ko: " (고급)", + ru: " (Расширенные)", + zh: "(进阶)", + }, + "obsidianLiveSyncSettingTab.levelEdgeCase": { + def: " (Edge Case)", + es: " (excepción)", + fr: " (Cas particulier)", + ja: " (エッジケース)", + ko: " (특수 사례)", + ru: " (Граничные случаи)", + zh: "(边缘情况)", + }, + "obsidianLiveSyncSettingTab.levelPowerUser": { + def: " (Power User)", + es: " (experto)", + fr: " (Utilisateur avancé)", + ja: " (エキスパート)", + ko: " (파워 유저)", + ru: " (Опытный пользователь)", + zh: "(高级用户)", + }, + "obsidianLiveSyncSettingTab.linkOpenInBrowser": { + def: "Open in browser", + es: "Abrir en el navegador", + fr: "Ouvrir dans le navigateur", + ja: "ブラウザで開く", + ko: "브라우저에서 열기", + ru: "Открыть в браузере", + zh: "在浏览器中打开", + }, + "obsidianLiveSyncSettingTab.linkPageTop": { + def: "Page Top", + es: "Ir arriba", + fr: "Haut de la page", + ja: "ページトップ", + ko: "페이지 상단", + ru: "В начало страницы", + zh: "页面顶部", + }, + "obsidianLiveSyncSettingTab.linkTipsAndTroubleshooting": { + def: "Tips and Troubleshooting", + es: "Consejos y solución de problemas", + fr: "Conseils et dépannage", + ja: "ヒントとトラブルシューティング", + ko: "팁 및 문제 해결", + ru: "Советы и устранение неполадок", + zh: "提示和故障排除", + }, + "obsidianLiveSyncSettingTab.linkTroubleshooting": { + def: "/docs/troubleshooting.md", + es: "/docs/es/troubleshooting.md", + fr: "/docs/troubleshooting.md", + ja: "/docs/troubleshooting.md", + ko: "/docs/troubleshooting.md", + ru: "/docs/troubleshooting.md", + zh: "/docs/troubleshooting.md", + }, + "obsidianLiveSyncSettingTab.logCannotUseCloudant": { + def: "This feature cannot be used with IBM Cloudant.", + es: "Esta función no se puede utilizar con IBM Cloudant.", + fr: "Cette fonctionnalité ne peut pas être utilisée avec IBM Cloudant.", + ja: "この機能はIBM Cloudantでは使用できません。", + ko: "이 기능은 IBM Cloudant와 함께 사용할 수 없습니다.", + ru: "Эта функция недоступна для IBM Cloudant.", + zh: "此功能不能与 IBM Cloudant 一起使用 ", + }, + "obsidianLiveSyncSettingTab.logCheckingConfigDone": { + def: "Checking configuration done", + es: "Verificación de configuración completada", + fr: "Vérification de la configuration terminée", + ja: "設定の確認が完了しました", + ko: "구성 확인 완료", + ru: "Проверка конфигурации завершена", + zh: "配置检查完成", + }, + "obsidianLiveSyncSettingTab.logCheckingConfigFailed": { + def: "Checking configuration failed", + es: "La verificación de configuración falló", + fr: "Échec de la vérification de la configuration", + ja: "設定の確認に失敗しました", + ko: "구성 확인 실패", + ru: "Проверка конфигурации не удалась", + zh: "配置检查失败", + }, + "obsidianLiveSyncSettingTab.logCheckingDbConfig": { + def: "Checking database configuration", + es: "Verificando la configuración de la base de datos", + fr: "Vérification de la configuration de la base", + ja: "データベース設定を確認中", + ko: "데이터베이스 구성 확인 중", + ru: "Проверка конфигурации базы данных", + zh: "正在检查数据库配置", + }, + "obsidianLiveSyncSettingTab.logCheckPassphraseFailed": { + def: "ERROR: Failed to check passphrase with the remote server:\n${db}.", + es: "ERROR: Error al comprobar la frase de contraseña con el servidor remoto: \n${db}.", + fr: "ERREUR : Échec de la vérification de la phrase secrète avec le serveur distant :\n${db}.", + ja: "エラー: リモートサーバーとのパスフレーズ確認に失敗しました:\n${db}。", + ko: "오류: 원격 서버와 패스프레이즈 확인에 실패했습니다: \n${db}.", + ru: "ОШИБКА: Не удалось проверить пароль с удалённым сервером: db.", + zh: "错误:无法使用远程服务器检查密码:\n${db} ", + }, + "obsidianLiveSyncSettingTab.logConfiguredDisabled": { + def: "Configured synchronization mode: DISABLED", + es: "Modo de sincronización configurado: DESACTIVADO", + fr: "Mode de synchronisation configuré : DÉSACTIVÉ", + ja: "設定された同期モード: 無効", + ko: "구성된 동기화 모드: 비활성화됨", + ru: "Настроенный режим синхронизации: ОТКЛЮЧЕН", + zh: "配置的同步模式:已禁用", + }, + "obsidianLiveSyncSettingTab.logConfiguredLiveSync": { + def: "Configured synchronization mode: LiveSync", + es: "Modo de sincronización configurado: Sincronización en Vivo", + fr: "Mode de synchronisation configuré : LiveSync", + ja: "設定された同期モード: LiveSync", + ko: "구성된 동기화 모드: LiveSync", + ru: "Настроенный режим синхронизации: LiveSync", + zh: "配置的同步模式:LiveSync", + }, + "obsidianLiveSyncSettingTab.logConfiguredPeriodic": { + def: "Configured synchronization mode: Periodic", + es: "Modo de sincronización configurado: Periódico", + fr: "Mode de synchronisation configuré : Périodique", + ja: "設定された同期モード: 定期", + ko: "구성된 동기화 모드: 주기적", + ru: "Настроенный режим синхронизации: Периодический", + zh: "配置的同步模式:定期", + }, + "obsidianLiveSyncSettingTab.logCouchDbConfigFail": { + def: "CouchDB Configuration: ${title} failed", + es: "Configuración de CouchDB: ${title} falló", + fr: "Configuration CouchDB : échec de ${title}", + ja: "CouchDB設定: ${title} 失敗", + ko: "CouchDB 구성: ${title} 실패", + ru: "Конфигурация CouchDB: title не удалась", + zh: "CouchDB 配置:${title} 失败", + }, + "obsidianLiveSyncSettingTab.logCouchDbConfigSet": { + def: "CouchDB Configuration: ${title} -> Set ${key} to ${value}", + es: "Configuración de CouchDB: ${title} -> Establecer ${key} en ${value}", + fr: "Configuration CouchDB : ${title} -> ${key} défini à ${value}", + ja: "CouchDB設定: ${title} -> ${key}を${value}に設定", + ko: "CouchDB 구성: ${title} -> ${key}를 ${value}로 설정", + ru: "Конфигурация CouchDB: title -> Установить key в value", + zh: "CouchDB 配置:${title} -> 设置 ${key} 为 ${value}", + }, + "obsidianLiveSyncSettingTab.logCouchDbConfigUpdated": { + def: "CouchDB Configuration: ${title} successfully updated", + es: "Configuración de CouchDB: ${title} actualizado correctamente", + fr: "Configuration CouchDB : ${title} mise à jour avec succès", + ja: "CouchDB設定: ${title} 正常に更新されました", + ko: "CouchDB 구성: ${title} 성공적으로 업데이트됨", + ru: "Конфигурация CouchDB: title успешно обновлена", + zh: "CouchDB 配置:${title} 成功更新", + }, + "obsidianLiveSyncSettingTab.logDatabaseConnected": { + def: "Database connected", + es: "Base de datos conectada", + fr: "Base de données connectée", + ja: "データベースに接続しました", + ko: "데이터베이스 연결됨", + ru: "База данных подключена", + zh: "数据库已连接", + }, + "obsidianLiveSyncSettingTab.logEncryptionNoPassphrase": { + def: "You cannot enable encryption without a passphrase", + es: "No puedes habilitar el cifrado sin una frase de contraseña", + fr: "Impossible d'activer le chiffrement sans phrase secrète", + ja: "パスフレーズなしでは暗号化を有効にできません", + ko: "패스프레이즈 없이는 암호화를 활성화할 수 없습니다", + ru: "Вы не можете включить шифрование без парольной фразы", + zh: "没有密码无法启用加密", + }, + "obsidianLiveSyncSettingTab.logEncryptionNoSupport": { + def: "Your device does not support encryption.", + es: "Tu dispositivo no admite el cifrado.", + fr: "Votre appareil ne prend pas en charge le chiffrement.", + ja: "お使いのデバイスは暗号化をサポートしていません。", + ko: "기기가 암호화를 지원하지 않습니다.", + ru: "Ваше устройство не поддерживает шифрование.", + zh: "您的设备不支持加密 ", + }, + "obsidianLiveSyncSettingTab.logErrorOccurred": { + def: "An error occurred!!", + es: "¡Ocurrió un error!", + fr: "Une erreur s'est produite !!", + ja: "エラーが発生しました!!", + ko: "오류가 발생했습니다!", + ru: "Произошла ошибка!!", + zh: "发生错误!!", + }, + "obsidianLiveSyncSettingTab.logEstimatedSize": { + def: "Estimated size: ${size}", + es: "Tamaño estimado: ${size}", + fr: "Taille estimée : ${size}", + ja: "推定サイズ: ${size}", + ko: "예상 크기: ${size}", + ru: "Примерный размер: size", + zh: "估计大小:${size}", + }, + "obsidianLiveSyncSettingTab.logPassphraseInvalid": { + def: "Passphrase is not valid, please fix it.", + es: "La frase de contraseña no es válida, por favor corrígela.", + fr: "La phrase secrète est invalide, veuillez la corriger.", + ja: "パスフレーズが無効です、修正してください。", + ko: "패스프레이즈가 유효하지 않습니다. 수정해 주세요.", + ru: "Парольная фраза недействительна, пожалуйста, исправьте.", + zh: "密码无效,请修正", + }, + "obsidianLiveSyncSettingTab.logPassphraseNotCompatible": { + def: "ERROR: Passphrase is not compatible with the remote server! Please check it again!", + es: "ERROR: ¡La frase de contraseña no es compatible con el servidor remoto! ¡Por favor, revísala de nuevo!", + fr: "ERREUR : la phrase secrète n'est pas compatible avec le serveur distant ! Veuillez vérifier à nouveau !", + ja: "エラー: パスフレーズがリモートサーバーと適合しません!再度確認してください!", + ko: "오류: 패스프레이즈가 원격 서버와 호환되지 않습니다! 다시 확인해 주세요!", + ru: "ОШИБКА: Парольная фраза несовместима с удалённым сервером!", + zh: "错误:密码与远程服务器不兼容!请再次检查!", + }, + "obsidianLiveSyncSettingTab.logRebuildNote": { + def: "Syncing has been disabled, fetch and re-enabled if desired.", + es: "La sincronización ha sido desactivada, obtén y vuelve a activar si lo deseas.", + fr: "La synchronisation a été désactivée, récupérez et réactivez si souhaité.", + ja: "同期が無効になりました。必要に応じてフェッチして再有効化してください。", + ko: "동기화가 비활성화되었습니다. 원하는 경우 가져오기 후 다시 활성화하세요.", + ru: "Синхронизация отключена, загрузите и включите снова при желании.", + zh: "同步已禁用,如果需要,请获取并重新启用", + }, + "obsidianLiveSyncSettingTab.logSelectAnyPreset": { + def: "Select any preset.", + es: "Selecciona cualquier preestablecido.", + fr: "Sélectionnez un préréglage.", + ja: "プリセットを選択してください。", + ko: "프리셋을 선택하세요.", + ru: "Выберите любой пресет.", + zh: "选择任何预设", + }, + "obsidianLiveSyncSettingTab.msgAreYouSureProceed": { + def: "Are you sure to proceed?", + es: "¿Estás seguro de proceder?", + fr: "Êtes-vous sûr de vouloir continuer ?", + ja: "本当に続行しますか?", + ko: "정말로 진행하시겠습니까?", + ru: "Вы уверены, что хотите продолжить?", + zh: "您确定要继续吗?", + }, + "obsidianLiveSyncSettingTab.msgChangesNeedToBeApplied": { + def: "Changes need to be applied!", + es: "¡Los cambios deben aplicarse!", + fr: "Des modifications doivent être appliquées !", + ja: "変更を適用する必要があります!", + ko: "변경사항을 적용해야 합니다!", + ru: "Изменения нужно применить!", + zh: "需要应用更改!", + }, + "obsidianLiveSyncSettingTab.msgConfigCheck": { + def: "--Config check--", + es: "--Verificación de configuración--", + fr: "--Vérification de la configuration--", + ja: "--設定確認--", + ko: "--구성 확인--", + ru: "--Проверка конфигурации--", + zh: "--配置检查--", + }, + "obsidianLiveSyncSettingTab.msgConfigCheckFailed": { + def: "The configuration check has failed. Do you want to continue anyway?", + es: "La verificación de configuración ha fallado. ¿Quieres continuar de todos modos?", + fr: "La vérification de la configuration a échoué. Voulez-vous continuer malgré tout ?", + ja: "設定確認に失敗しました。それでも続行しますか?", + ko: "구성 확인에 실패했습니다. 그래도 계속하시겠습니까?", + ru: "Проверка конфигурации не удалась. Вы всё равно хотите продолжить?", + zh: "配置检查失败。您仍要继续吗?", + }, + "obsidianLiveSyncSettingTab.msgConnectionCheck": { + def: "--Connection check--", + es: "--Verificación de conexión--", + fr: "--Vérification de la connexion--", + ja: "--接続確認--", + ko: "--연결 확인--", + ru: "--Проверка подключения--", + zh: "--连接检查--", + }, + "obsidianLiveSyncSettingTab.msgConnectionProxyNote": { + def: "If you're having trouble with the Connection-check (even after checking config), please check your reverse proxy configuration.", + es: "Si tienes problemas con la verificación de conexión (incluso después de verificar la configuración), por favor verifica la configuración de tu proxy reverso.", + fr: "Si vous rencontrez des problèmes de vérification de connexion (même après avoir vérifié la configuration), veuillez vérifier votre configuration de reverse proxy.", + ja: "設定確認後も接続確認に問題がある場合は、リバースプロキシの設定を確認してください。", + ko: "구성 확인 후에도 연결 확인에 문제가 있는 경우, 리버스 프록시 구성을 확인해 주세요.", + ru: "Если у вас проблемы с проверкой подключения, проверьте конфигурацию обратного прокси.", + zh: "如果您在连接检查时遇到问题(即使检查了配置后),请检查您的反向代理配置", + }, + "obsidianLiveSyncSettingTab.msgCurrentOrigin": { + def: "Current origin: ${origin}", + es: "Origen actual: {origin}", + fr: "Origine actuelle : ${origin}", + ja: "現在のオリジン: ${origin}", + ko: "현재 원점: {origin}", + ru: "Текущий origin: origin", + zh: "当前源: {origin}", + }, + "obsidianLiveSyncSettingTab.msgDiscardConfirmation": { + def: "Do you really want to discard existing settings and databases?", + es: "¿Realmente deseas descartar las configuraciones y bases de datos existentes?", + fr: "Voulez-vous vraiment abandonner les paramètres et bases existants ?", + ja: "本当に既存の設定とデータベースを破棄しますか?", + ko: "정말로 기존 설정과 데이터베이스를 삭제하시겠습니까?", + ru: "Вы действительно хотите отменить существующие настройки и базы данных?", + zh: "您真的要丢弃现有的设置和数据库吗?", + }, + "obsidianLiveSyncSettingTab.msgDone": { + def: "--Done--", + es: "--Hecho--", + fr: "--Terminé--", + ja: "--完了--", + ko: "--완료--", + ru: "--Готово--", + zh: "--完成--", + }, + "obsidianLiveSyncSettingTab.msgEnableCors": { + def: "Set httpd.enable_cors", + es: "Configurar httpd.enable_cors", + fr: "Définir httpd.enable_cors", + ja: "httpd.enable_corsを設定", + ko: "httpd.enable_cors 설정", + ru: "Установить httpd.enable_cors", + zh: "设置 httpd.enable_cors", + }, + "obsidianLiveSyncSettingTab.msgEnableCorsChttpd": { + def: "Set chttpd.enable_cors", + fr: "Définir chttpd.enable_cors", + ja: "chttpd.enable_corsを設定", + ru: "Установить chttpd.enable_cors", + zh: "设置 chttpd.enable_cors", + }, + "obsidianLiveSyncSettingTab.msgEnableEncryptionRecommendation": { + def: "We recommend enabling End-To-End Encryption, and Path Obfuscation. Are you sure you want to continue without encryption?", + es: "Recomendamos habilitar el cifrado de extremo a extremo y la obfuscación de ruta. ¿Estás seguro de querer continuar sin cifrado?", + fr: "Nous recommandons d'activer le chiffrement de bout en bout et l'obfuscation des chemins. Êtes-vous sûr de vouloir continuer sans chiffrement ?", + ja: "エンドツーエンド暗号化とパス難読化を有効にすることをお勧めします。暗号化なしで続行してもよろしいですか?", + ko: "종단간 암호화와 경로 난독화를 활성화하는 것을 권장합니다. 정말로 암호화 없이 계속하시겠습니까?", + ru: "Мы рекомендуем включить сквозное шифрование. Вы уверены, что хотите продолжить без шифрования?", + zh: "我们建议启用端到端加密和路径混淆。您确定要在没有加密的情况下继续吗?", + }, + "obsidianLiveSyncSettingTab.msgFetchConfigFromRemote": { + def: "Do you want to fetch the config from the remote server?", + es: "¿Quieres obtener la configuración del servidor remoto?", + fr: "Voulez-vous récupérer la configuration depuis le serveur distant ?", + ja: "リモートサーバーから設定を取得しますか?", + ko: "원격 서버에서 구성을 가져오시겠습니까?", + ru: "Вы хотите загрузить конфигурацию с удалённого сервера?", + zh: "您想从远程服务器获取配置吗?", + }, + "obsidianLiveSyncSettingTab.msgGenerateSetupURI": { + def: "All done! Do you want to generate a setup URI to set up other devices?", + es: "¡Todo listo! ¿Quieres generar un URI de configuración para configurar otros dispositivos?", + fr: "Tout est prêt ! Voulez-vous générer une URI de configuration pour configurer d'autres appareils ?", + ja: "完了!他のデバイスをセットアップするためのセットアップURIを生成しますか?", + ko: "모든 작업이 완료되었습니다! 다른 기기를 설정하기 위해 Setup URI를 생성하시겠습니까?", + ru: "Всё готово! Вы хотите сгенерировать Setup URI для настройки других устройств?", + zh: "全部完成!您想生成一个设置 URI 来设置其他设备吗?", + }, + "obsidianLiveSyncSettingTab.msgIfConfigNotPersistent": { + def: "If the server configuration is not persistent (e.g., running on docker), the values here may change. Once you are able to connect, please update the settings in the server's local.ini.", + es: "Si la configuración del servidor no es persistente (por ejemplo, ejecutándose en docker), los valores aquí pueden cambiar. Una vez que puedas conectarte, por favor actualiza las configuraciones en el local.ini del servidor.", + fr: "Si la configuration du serveur n'est pas persistante (par ex. fonctionnant sur Docker), les valeurs peuvent changer. Une fois la connexion établie, mettez à jour les paramètres dans le local.ini du serveur.", + ja: "サーバー設定が永続的でない場合(例: Dockerで実行中)、ここの値は変更される可能性があります。接続できるようになったら、サーバーのlocal.iniの設定を更新してください。", + ko: "서버 설정이 영구적으로 저장되지 않는 환경(예: Docker에서 실행 중)에서는 이곳의 값들이 변경될 수 있습니다. 연결이 가능해지면 서버의 local.ini 파일에서 설정을 수동으로 업데이트해 주세요.", + ru: "Если конфигурация сервера непостоянна, значения здесь могут измениться.", + zh: "如果服务器配置不是持久的(例如,在 docker 上运行),此处的值可能会更改。一旦能够连接,请更新服务器 local.ini 中的设置", + }, + "obsidianLiveSyncSettingTab.msgInvalidPassphrase": { + def: "Your encryption passphrase might be invalid. Are you sure you want to continue?", + es: "Tu frase de contraseña de cifrado podría ser inválida. ¿Estás seguro de querer continuar?", + fr: "Votre phrase secrète de chiffrement peut être invalide. Êtes-vous sûr de vouloir continuer ?", + ja: "暗号化パスフレーズが無効かもしれません。続行してもよろしいですか?", + ko: "암호화 패스프레이즈가 유효하지 않을 수 있습니다. 정말로 계속하시겠습니까?", + ru: "Ваша парольная фраза шифрования может быть недействительна.", + zh: "您的加密密码可能无效。您确定要继续吗?", + }, + "obsidianLiveSyncSettingTab.msgNewVersionNote": { + def: "Here due to an upgrade notification? Please review the version history. If you're satisfied, click the button. A new update will prompt this again.", + es: "¿Aquí debido a una notificación de actualización? Por favor, revise el historial de versiones. Si está satisfecho, haga clic en el botón. Una nueva actualización volverá a mostrar esto.", + fr: "Arrivé ici suite à une notification de mise à jour ? Consultez l'historique des versions. Si vous êtes satisfait, cliquez sur le bouton. Une nouvelle mise à jour reproposera ceci.", + ja: "アップグレード通知でここに来ましたか?バージョン履歴を確認してください。納得したらボタンをクリックしてください。新しい更新があると再度確認されます。", + ko: "업그레이드 알림으로 여기에 오셨나요? 버전 기록을 검토해 주세요. 만족하신다면 버튼을 클릭하세요. 새로운 업데이트 시 다시 안내됩니다.", + ru: "Вы пришли из-за уведомления об обновлении? Просмотрите историю версий.", + zh: "因为升级通知来到这里?请查看版本历史。如果您满意,请点击按钮。新的更新将再次提示此信息", + }, + "obsidianLiveSyncSettingTab.msgNonHTTPSInfo": { + def: "Configured as non-HTTPS URI. Be warned that this may not work on mobile devices.", + es: "Configurado como URI que no es HTTPS. Ten en cuenta que esto puede no funcionar en dispositivos móviles.", + fr: "Configuré avec une URI non HTTPS. Attention, ceci peut ne pas fonctionner sur les appareils mobiles.", + ja: "非HTTPS URIとして設定されています。モバイルデバイスでは動作しない可能性があります。", + ko: "비 HTTPS URI로 구성되었습니다. 모바일 기기에서는 작동하지 않을 수 있으니 주의하세요.", + ru: "Настроено как не-HTTPS URI. Это может не работать на мобильных устройствах.", + zh: "配置为非 HTTPS URI。请注意,这可能在移动设备上无法工作", + }, + "obsidianLiveSyncSettingTab.msgNonHTTPSWarning": { + def: "Cannot connect to non-HTTPS URI. Please update your config and try again.", + es: "No se puede conectar a URI que no sean HTTPS. Por favor, actualiza tu configuración y vuelve a intentarlo.", + fr: "Connexion impossible à une URI non HTTPS. Mettez à jour votre configuration et réessayez.", + ja: "非HTTPS URIに接続できません。設定を更新して再試行してください。", + ko: "비 HTTPS URI에 연결할 수 없습니다. 구성을 업데이트하고 다시 시도해 주세요.", + ru: "Не удаётся подключиться к не-HTTPS URI. Обновите конфигурацию.", + zh: "无法连接到非 HTTPS URI。请更新您的配置并重试", + }, + "obsidianLiveSyncSettingTab.msgNotice": { + def: "---Notice---", + es: "---Aviso---", + fr: "---Avis---", + ja: "---お知らせ---", + ko: "---공지사항---", + ru: "---Уведомление---", + zh: "---注意---", + }, + "obsidianLiveSyncSettingTab.msgObjectStorageWarning": { + def: "WARNING: This feature is a Work In Progress, so please keep in mind the following:\n- Append only architecture. A rebuild is required to shrink the storage.\n- A bit fragile.\n- When first syncing, all history will be transferred from the remote. Be mindful of data caps and slow speeds.\n- Only differences are synced live.\n\nIf you run into any issues, or have ideas about this feature, please create a issue on GitHub.\nI appreciate you for your great dedication.", + es: "ADVERTENCIA: Esta característica está en desarrollo, así que por favor ten en cuenta lo siguiente:\n- Arquitectura de solo anexado. Se requiere una reconstrucción para reducir el almacenamiento.\n- Un poco frágil.\n- Al sincronizar por primera vez, todo el historial será transferido desde el remoto. Ten en cuenta los límites de datos y las velocidades lentas.\n- Solo las diferencias se sincronizan en vivo.\n\nSi encuentras algún problema o tienes ideas sobre esta característica, por favor crea un issue en GitHub.\nAprecio mucho tu gran dedicación.", + fr: "AVERTISSEMENT : cette fonctionnalité est en cours de développement, gardez à l'esprit ce qui suit :\n- Architecture en ajout seul. Une reconstruction est nécessaire pour réduire le stockage.\n- Un peu fragile.\n- Lors de la première synchronisation, tout l'historique sera transféré depuis le distant. Attention aux limites de données et aux débits lents.\n- Seules les différences sont synchronisées en direct.\n\nSi vous rencontrez des problèmes ou avez des idées sur cette fonctionnalité, merci d'ouvrir un ticket sur GitHub.\nMerci pour votre grand dévouement.", + ja: "警告: この機能は開発中です。以下の点にご注意ください:\n- 追記専用アーキテクチャ。ストレージを縮小するには再構築が必要です。\n- やや不安定です。\n- 初回同期時、すべての履歴がリモートから転送されます。データ制限と速度に注意してください。\n- ライブ同期は差分のみです。\n\n問題があれば、またはこの機能についてアイデアがあれば、GitHubにIssueを作成してください。\nご協力に感謝します。", + ko: "⚠️ 주의: 이 기능은 아직 개발 중(WIP)입니다. 다음 사항을 유의해 주세요:\n- 추가 전용 구조(append-only)로 동작합니다. 저장 용량을 줄이려면 데이터 재구성이 필요합니다.\n- 기능이 다소 불안정할 수 있습니다.\n- 최초 동기화 시, 전체 히스토리가 원격 서버에서 전송됩니다. 데이터 용량 제한 및 느린 속도에 유의해 주세요.\n- 실시간 동기화는 변경된 부분만 처리됩니다.\n\n문제가 발생했거나 개선 아이디어가 있으시면 GitHub에 이슈를 등록해 주세요.\n기여에 깊이 감사드립니다.", + ru: "ПРЕДУПРЕЖДЕНИЕ: Эта функция в разработке.", + zh: "警告:此功能仍在开发中,请注意以下几点:\n- 仅追加架构。需要重建才能缩小存储空间。\n- 有点脆弱。\n- 首次同步时,所有历史记录将从远程传输。注意数据上限和慢速。\n- 只有差异会实时同步。\n\n如果您遇到任何问题,或对此功能有任何想法,请在 GitHub 上创建 issue。\n感谢您的巨大贡献", + }, + "obsidianLiveSyncSettingTab.msgOriginCheck": { + def: "Origin check: ${org}", + es: "Verificación de origen: {org}", + fr: "Vérification d'origine : ${org}", + ja: "オリジン確認: ${org}", + ko: "원점 확인: {org}", + ru: "Проверка origin: org", + zh: "源检查: {org}", + }, + "obsidianLiveSyncSettingTab.msgRebuildRequired": { + def: "Rebuilding Databases are required to apply the changes.. Please select the method to apply the changes.\n\n
\nLegends\n\n| Symbol | Meaning |\n|: ------ :| ------- |\n| ⇔ | Up to Date |\n| ⇄ | Synchronise to balance |\n| ⇐,⇒ | Transfer to overwrite |\n| ⇠,⇢ | Transfer to overwrite from other side |\n\n
\n\n## ${OPTION_REBUILD_BOTH}\nAt a glance: 📄 ⇒¹ 💻 ⇒² 🛰️ ⇢ⁿ 💻 ⇄ⁿ⁺¹ 📄\nReconstruct both the local and remote databases using existing files from this device.\nThis causes a lockout other devices, and they need to perform fetching.\n## ${OPTION_FETCH}\nAt a glance: 📄 ⇄² 💻 ⇐¹ 🛰️ ⇔ 💻 ⇔ 📄\nInitialise the local database and reconstruct it using data fetched from the remote database.\nThis case includes the case which you have rebuilt the remote database.\n## ${OPTION_ONLY_SETTING}\nStore only the settings. **Caution: This may lead to data corruption**; database reconstruction is generally necessary.", + es: "Es necesario reconstruir las bases de datos para aplicar los cambios. Por favor selecciona el método para aplicar los cambios.\n\n
\nLegendas\n\n| Símbolo | Significado |\n|: ------ :| ------- |\n| ⇔ | Actualizado |\n| ⇄ | Sincronizar para equilibrar |\n| ⇐,⇒ | Transferir para sobrescribir |\n| ⇠,⇢ | Transferir para sobrescribir desde otro lado |\n\n
\n\n## ${OPTION_REBUILD_BOTH}\nA simple vista: 📄 ⇒¹ 💻 ⇒² 🛰️ ⇢ⁿ 💻 ⇄ⁿ⁺¹ 📄\nReconstruir tanto la base de datos local como la remota utilizando los archivos existentes de este dispositivo.\nEsto bloquea a otros dispositivos, y necesitan realizar la obtención.\n## ${OPTION_FETCH}\nA simple vista: 📄 ⇄² 💻 ⇐¹ 🛰️ ⇔ 💻 ⇔ 📄\nInicializa la base de datos local y la reconstruye utilizando los datos obtenidos de la base de datos remota.\nEste caso incluye el caso en el que has reconstruido la base de datos remota.\n## ${OPTION_ONLY_SETTING}\nAlmacena solo la configuración. **Precaución: esto puede provocar corrupción de datos**; generalmente es necesario reconstruir la base de datos.", + fr: "La reconstruction des bases de données est nécessaire pour appliquer les changements. Veuillez sélectionner la méthode d'application.\n\n
\nLégende\n\n| Symbole | Signification |\n|: ------ :| ------- |\n| ⇔ | À jour |\n| ⇄ | Synchroniser pour équilibrer |\n| ⇐,⇒ | Transférer pour écraser |\n| ⇠,⇢ | Transférer pour écraser depuis l'autre côté |\n\n
\n\n## ${OPTION_REBUILD_BOTH}\nEn bref : 📄 ⇒¹ 💻 ⇒² 🛰️ ⇢ⁿ 💻 ⇄ⁿ⁺¹ 📄\nReconstruit les bases locale et distante à partir des fichiers existants de cet appareil.\nCeci provoque un verrouillage des autres appareils, qui devront effectuer une récupération.\n## ${OPTION_FETCH}\nEn bref : 📄 ⇄² 💻 ⇐¹ 🛰️ ⇔ 💻 ⇔ 📄\nInitialise la base locale et la reconstruit à partir des données récupérées depuis la base distante.\nCe cas inclut également celui où vous avez reconstruit la base distante.\n## ${OPTION_ONLY_SETTING}\nNe stocker que les paramètres. **Attention : cela peut entraîner une corruption des données** ; une reconstruction de la base est généralement nécessaire.", + ja: "変更を適用するにはデータベースの再構築が必要です。変更を適用する方法を選択してください。\n\n
\n凡例\n\n| 記号 | 意味 |\n|: ------ :| ------- |\n| ⇔ | 最新 |\n| ⇄ | 同期してバランスを取る |\n| ⇐,⇒ | 上書きするため転送 |\n| ⇠,⇢ | 反対側から上書きするため転送 |\n\n
\n\n## ${OPTION_REBUILD_BOTH}\n概要: 📄 ⇒¹ 💻 ⇒² 🛰️ ⇢ⁿ 💻 ⇄ⁿ⁺¹ 📄\nこのデバイスの既存ファイルを使用してローカルとリモートの両方のデータベースを再構築します。\n他のデバイスはロックアウトされ、フェッチが必要です。\n## ${OPTION_FETCH}\n概要: 📄 ⇄² 💻 ⇐¹ 🛰️ ⇔ 💻 ⇔ 📄\nローカルデータベースを初期化し、リモートデータベースから取得したデータを使用して再構築します。\nリモートデータベースを再構築した場合も含まれます。\n## ${OPTION_ONLY_SETTING}\n設定のみを保存します。**注意: データ破損につながる可能性があります**。通常、データベースの再構築が必要です。", + ko: "변경사항을 적용하려면 데이터베이스를 재구축해야 합니다. 아래 중 한 가지 방법을 선택해 주세요.\n\n
\n범례\n\n| 기호 | 의미 |\n|: ------ :| ------- |\n| ⇔ | 최신 상태 |\n| ⇄ | 동기화 균형 유지 |\n| ⇐,⇒ | 덮어쓰기 방식의 전송 |\n| ⇠,⇢ | 상대편에서 가져와 덮어쓰기 |\n\n
\n\n## ${OPTION_REBUILD_BOTH}\n개요: 📄 ⇒¹ 💻 ⇒² 🛰️ ⇢ⁿ 💻 ⇄ⁿ⁺¹ 📄\n이 기기의 기존 파일을 기반으로 로컬과 원격 데이터베이스를 모두 재구축합니다.\n이 과정에서 다른 기기는 일시적으로 접근이 제한되며, 가져오기 작업을 별도로 수행해야 합니다.\n\n## ${OPTION_FETCH}\n개요: 📄 ⇄² 💻 ⇐¹ 🛰️ ⇔ 💻 ⇔ 📄\n로컬 데이터베이스를 초기화한 후, 원격 데이터베이스에서 데이터를 가져와 재구축합니다.\n이는 원격 측에서 데이터베이스를 먼저 재구축한 경우에도 해당됩니다.\n\n## ${OPTION_ONLY_SETTING}\n설정만 저장합니다. **⚠️ 주의: 이 방법은 데이터 손상을 일으킬 수 있습니다.** 일반적으로는 전체 데이터베이스 재구축이 필요합니다.", + ru: "Требуется перестроение баз данных для применения изменений.", + zh: "需要重建数据库以应用更改。请选择应用更改的方法。\n\n
\n图例\n\n| 符号 | 含义 |\n|: ------ :| ------- |\n| ⇔ | 最新 |\n| ⇄ | 同步以平衡 |\n| ⇐,⇒ | 传输以覆盖 |\n| ⇠,⇢ | 从另一侧传输以覆盖 |\n\n
\n\n## ${OPTION_REBUILD_BOTH}\n概览:📄 ⇒¹ 💻 ⇒² 🛰️ ⇢ⁿ 💻 ⇄ⁿ⁺¹ 📄\n使用此设备的现有文件重建本地和远程数据库。\n这将导致其他设备被锁定,并且它们需要执行获取操作。\n## ${OPTION_FETCH}\n概览:📄 ⇄² 💻 ⇐¹ 🛰️ ⇔ 💻 ⇔ 📄\n初始化本地数据库并使用从远程数据库获取的数据重建它。\n这种情况包括您已经重建了远程数据库的情况。\n## ${OPTION_ONLY_SETTING}\n仅存储设置。**注意:这可能导致数据损坏**;通常需要重建数据库", + }, + "obsidianLiveSyncSettingTab.msgSelectAndApplyPreset": { + def: "Please select and apply any preset item to complete the wizard.", + es: "Por favor, selecciona y aplica cualquier elemento preestablecido para completar el asistente.", + fr: "Veuillez sélectionner et appliquer un préréglage pour terminer l'assistant.", + ja: "ウィザードを完了するには、プリセット項目を選択して適用してください。", + ko: "마법사를 완료하려면 프리셋 항목을 선택하고 적용해 주세요.", + ru: "Выберите и примените любой пресет для завершения мастера.", + zh: "请选择并应用任何预设项以完成向导", + }, + "obsidianLiveSyncSettingTab.msgSetCorsCredentials": { + def: "Set cors.credentials", + es: "Configurar cors.credentials", + fr: "Définir cors.credentials", + ja: "cors.credentialsを設定", + ko: "cors.credentials 설정", + ru: "Установить cors.credentials", + zh: "设置 cors.credentials", + }, + "obsidianLiveSyncSettingTab.msgSetCorsOrigins": { + def: "Set cors.origins", + es: "Configurar cors.origins", + fr: "Définir cors.origins", + ja: "cors.originsを設定", + ko: "cors.origins 설정", + ru: "Установить cors.origins", + zh: "设置 cors.origins", + }, + "obsidianLiveSyncSettingTab.msgSetMaxDocSize": { + def: "Set couchdb.max_document_size", + es: "Configurar couchdb.max_document_size", + fr: "Définir couchdb.max_document_size", + ja: "couchdb.max_document_sizeを設定", + ko: "couchdb.max_document_size 설정", + ru: "Установить couchdb.max_document_size", + zh: "设置 couchdb.max_document_size", + }, + "obsidianLiveSyncSettingTab.msgSetMaxRequestSize": { + def: "Set chttpd.max_http_request_size", + es: "Configurar chttpd.max_http_request_size", + fr: "Définir chttpd.max_http_request_size", + ja: "chttpd.max_http_request_sizeを設定", + ko: "chttpd.max_http_request_size 설정", + ru: "Установить chttpd.max_http_request_size", + zh: "设置 chttpd.max_http_request_size", + }, + "obsidianLiveSyncSettingTab.msgSetRequireValidUser": { + def: "Set chttpd.require_valid_user = true", + es: "Configurar chttpd.require_valid_user = true", + fr: "Définir chttpd.require_valid_user = true", + ja: "chttpd.require_valid_user = trueを設定", + ko: "chttpd.require_valid_user = true로 설정", + ru: "Установить chttpd.require_valid_user = true", + zh: "设置 chttpd.require_valid_user = true", + }, + "obsidianLiveSyncSettingTab.msgSetRequireValidUserAuth": { + def: "Set chttpd_auth.require_valid_user = true", + es: "Configurar chttpd_auth.require_valid_user = true", + fr: "Définir chttpd_auth.require_valid_user = true", + ja: "chttpd_auth.require_valid_user = trueを設定", + ko: "chttpd_auth.require_valid_user = true로 설정", + ru: "Установить chttpd_auth.require_valid_user = true", + zh: "设置 chttpd_auth.require_valid_user = true", + }, + "obsidianLiveSyncSettingTab.msgSettingModified": { + def: 'The setting "${setting}" was modified from another device. Click {HERE} to reload settings. Click elsewhere to ignore changes.', + es: 'La configuración "${setting}" fue modificada desde otro dispositivo. Haz clic {HERE} para recargar la configuración. Haz clic en otro lugar para ignorar los cambios.', + fr: "Le paramètre « ${setting} » a été modifié depuis un autre appareil. Cliquez sur {HERE} pour recharger les paramètres. Cliquez ailleurs pour ignorer les modifications.", + ja: '設定"${setting}"が別のデバイスから変更されました。{HERE}をクリックして設定を再読み込みしてください。変更を無視するには他の場所をクリックしてください。', + ko: '"${setting}" 설정이 다른 기기에서 수정되었습니다. 설정을 다시 로드하려면 {HERE}를 클릭하세요. 변경사항을 무시하려면 다른 곳을 클릭하세요.', + ru: "Настройка setting была изменена с другого устройства.", + zh: '设置 "${setting}" 已从另一台设备修改。点击 {HERE} 重新加载设置。点击其他地方忽略更改', + }, + "obsidianLiveSyncSettingTab.msgSettingsUnchangeableDuringSync": { + def: 'These settings are unable to be changed during synchronization. Please disable all syncing in the "Sync Settings" to unlock.', + es: 'Estas configuraciones no se pueden cambiar durante la sincronización. Por favor, deshabilita toda la sincronización en las "Configuraciones de Sincronización" para desbloquear.', + fr: "Ces paramètres ne peuvent pas être modifiés durant la synchronisation. Désactivez toute synchronisation dans « Paramètres de synchronisation » pour déverrouiller.", + ja: 'これらの設定は同期中に変更できません。ロックを解除するには、"同期設定"ですべての同期を無効にしてください。', + ko: '동기화 중에는 이 설정들을 변경할 수 없습니다. 잠금을 해제하려면 "동기화 설정"에서 모든 동기화를 비활성화해 주세요.', + ru: "Эти настройки нельзя изменить во время синхронизации.", + zh: "这些设置在同步期间无法更改。请在“同步设置”中禁用所有同步以解锁", + }, + "obsidianLiveSyncSettingTab.msgSetWwwAuth": { + def: "Set httpd.WWW-Authenticate", + es: "Configurar httpd.WWW-Authenticate", + fr: "Définir httpd.WWW-Authenticate", + ja: "httpd.WWW-Authenticateを設定", + ko: "httpd.WWW-Authenticate 설정", + ru: "Установить httpd.WWW-Authenticate", + zh: "设置 httpd.WWW-Authenticate", + }, + "obsidianLiveSyncSettingTab.nameApplySettings": { + def: "Apply Settings", + es: "Aplicar configuraciones", + fr: "Appliquer les paramètres", + ja: "設定を適用", + ko: "설정 적용", + ru: "Применить настройки", + zh: "应用设置", + }, + "obsidianLiveSyncSettingTab.nameConnectSetupURI": { + def: "Connect with Setup URI", + es: "Conectar con URI de configuración", + fr: "Se connecter avec une URI de configuration", + ja: "セットアップURIで接続", + ko: "Setup URI로 연결", + ru: "Подключиться через Setup URI", + zh: "使用设置 URI 连接", + }, + "obsidianLiveSyncSettingTab.nameCopySetupURI": { + def: "Copy the current settings to a Setup URI", + es: "Copiar la configuración actual a una URI de configuración", + fr: "Copier les paramètres actuels vers une URI de configuration", + ja: "現在の設定をセットアップURIにコピー", + ko: "현재 설정을 Setup URI로 복사", + ru: "Копировать текущие настройки в Setup URI", + zh: "将当前设置复制为设置 URI", + }, + "obsidianLiveSyncSettingTab.nameDisableHiddenFileSync": { + def: "Disable Hidden files sync", + es: "Desactivar sincronización de archivos ocultos", + fr: "Désactiver la synchronisation des fichiers cachés", + ja: "隠しファイル同期を無効化", + ko: "숨김 파일 동기화 비활성화", + ru: "Отключить синхронизацию скрытых файлов", + zh: "禁用隐藏文件同步", + }, + "obsidianLiveSyncSettingTab.nameDiscardSettings": { + def: "Discard existing settings and databases", + es: "Descartar configuraciones y bases de datos existentes", + fr: "Abandonner les paramètres et bases existants", + ja: "既存の設定とデータベースを破棄", + ko: "기존 설정 및 데이터베이스 삭제", + ru: "Отменить существующие настройки и базы данных", + zh: "丢弃现有设置和数据库", + }, + "obsidianLiveSyncSettingTab.nameEnableHiddenFileSync": { + def: "Enable Hidden files sync", + es: "Activar sincronización de archivos ocultos", + fr: "Activer la synchronisation des fichiers cachés", + ja: "隠しファイル同期を有効化", + ko: "숨김 파일 동기화 활성화", + ru: "Включить синхронизацию скрытых файлов", + zh: "启用隐藏文件同步", + }, + "obsidianLiveSyncSettingTab.nameEnableLiveSync": { + def: "Enable LiveSync", + es: "Activar LiveSync", + fr: "Activer LiveSync", + ja: "LiveSyncを有効化", + ko: "LiveSync 활성화", + ru: "Включить LiveSync", + zh: "启用 LiveSync", + }, + "obsidianLiveSyncSettingTab.nameHiddenFileSynchronization": { + def: "Hidden file synchronization", + es: "Sincronización de archivos ocultos", + fr: "Synchronisation des fichiers cachés", + ja: "隠しファイル同期", + ko: "숨김 파일 동기화", + ru: "Синхронизация скрытых файлов", + zh: "隐藏文件同步", + }, + "obsidianLiveSyncSettingTab.nameManualSetup": { + def: "Manual Setup", + es: "Configuración manual", + fr: "Configuration manuelle", + ja: "手動セットアップ", + ko: "수동 설정", + ru: "Ручная настройка", + zh: "手动设置", + }, + "obsidianLiveSyncSettingTab.nameTestConnection": { + def: "Test Connection", + es: "Probar conexión", + fr: "Tester la connexion", + ja: "接続テスト", + ko: "연결 테스트", + ru: "Тест подключения", + zh: "测试连接", + }, + "obsidianLiveSyncSettingTab.nameTestDatabaseConnection": { + def: "Test Database Connection", + es: "Probar Conexión de Base de Datos", + fr: "Tester la connexion à la base de données", + ja: "データベース接続テスト", + ko: "데이터베이스 연결 테스트", + ru: "Тест подключения к базе данных", + zh: "测试数据库连接", + }, + "obsidianLiveSyncSettingTab.nameValidateDatabaseConfig": { + def: "Validate Database Configuration", + es: "Validar Configuración de la Base de Datos", + fr: "Valider la configuration de la base de données", + ja: "データベース設定を検証", + ko: "데이터베이스 구성 검증", + ru: "Проверить конфигурацию базы данных", + zh: "验证数据库配置", + }, + "obsidianLiveSyncSettingTab.okAdminPrivileges": { + def: "✔ You have administrator privileges.", + es: "✔ Tienes privilegios de administrador.", + fr: "✔ Vous disposez des privilèges administrateur.", + ja: "✔ 管理者権限があります。", + ko: "✔ 관리자 권한이 있습니다.", + ru: "✔ У вас есть права администратора.", + zh: "✔ 您拥有管理员权限", + }, + "obsidianLiveSyncSettingTab.okCorsCredentials": { + def: "✔ cors.credentials is ok.", + es: "✔ cors.credentials está correcto.", + fr: "✔ cors.credentials est correct.", + ja: "✔ cors.credentialsは正常です。", + ko: "✔ cors.credentials가 정상입니다.", + ru: "✔ cors.credentials в порядке.", + zh: "✔ cors.credentials 设置正确", + }, + "obsidianLiveSyncSettingTab.okCorsCredentialsForOrigin": { + def: "CORS credentials OK", + es: "CORS credenciales OK", + fr: "Identifiants CORS OK", + ja: "CORS認証情報OK", + ko: "CORS 자격 증명 정상", + ru: "CORS учётные данные в порядке", + zh: "CORS 凭据正常", + }, + "obsidianLiveSyncSettingTab.okCorsOriginMatched": { + def: "✔ CORS origin OK", + es: "✔ Origen de CORS correcto", + fr: "✔ Origine CORS OK", + ja: "✔ CORSオリジンOK", + ko: "✔ CORS 원점 정상", + ru: "✔ CORS origin в порядке", + zh: "✔ CORS 源正常", + }, + "obsidianLiveSyncSettingTab.okCorsOrigins": { + def: "✔ cors.origins is ok.", + es: "✔ cors.origins está correcto.", + fr: "✔ cors.origins est correct.", + ja: "✔ cors.originsは正常です。", + ko: "✔ cors.origins가 정상입니다.", + ru: "✔ cors.origins в порядке.", + zh: "✔ cors.origins 设置正确", + }, + "obsidianLiveSyncSettingTab.okEnableCors": { + def: "✔ httpd.enable_cors is ok.", + es: "✔ httpd.enable_cors está correcto.", + fr: "✔ httpd.enable_cors est correct.", + ja: "✔ httpd.enable_corsは正常です。", + ko: "✔ httpd.enable_cors가 정상입니다.", + ru: "✔ httpd.enable_cors в порядке.", + zh: "✔ httpd.enable_cors 设置正确", + }, + "obsidianLiveSyncSettingTab.okEnableCorsChttpd": { + def: "✔ chttpd.enable_cors is ok.", + fr: "✔ chttpd.enable_cors est correct.", + ja: "✔ chttpd.enable_corsは正常です。", + ru: "✔ chttpd.enable_cors в порядке.", + zh: "✔ chttpd.enable_cors is ok.", + }, + "obsidianLiveSyncSettingTab.okMaxDocumentSize": { + def: "✔ couchdb.max_document_size is ok.", + es: "✔ couchdb.max_document_size está correcto.", + fr: "✔ couchdb.max_document_size est correct.", + ja: "✔ couchdb.max_document_sizeは正常です。", + ko: "✔ couchdb.max_document_size가 정상입니다.", + ru: "✔ couchdb.max_document_size в порядке.", + zh: "✔ couchdb.max_document_size 设置正确", + }, + "obsidianLiveSyncSettingTab.okMaxRequestSize": { + def: "✔ chttpd.max_http_request_size is ok.", + es: "✔ chttpd.max_http_request_size está correcto.", + fr: "✔ chttpd.max_http_request_size est correct.", + ja: "✔ chttpd.max_http_request_sizeは正常です。", + ko: "✔ chttpd.max_http_request_size가 정상입니다.", + ru: "✔ chttpd.max_http_request_size в порядке.", + zh: "✔ chttpd.max_http_request_size 设置正确", + }, + "obsidianLiveSyncSettingTab.okRequireValidUser": { + def: "✔ chttpd.require_valid_user is ok.", + es: "✔ chttpd.require_valid_user está correcto.", + fr: "✔ chttpd.require_valid_user est correct.", + ja: "✔ chttpd.require_valid_userは正常です。", + ko: "✔ chttpd.require_valid_user가 정상입니다.", + ru: "✔ chttpd.require_valid_user в порядке.", + zh: "✔ chttpd.require_valid_user 设置正确", + }, + "obsidianLiveSyncSettingTab.okRequireValidUserAuth": { + def: "✔ chttpd_auth.require_valid_user is ok.", + es: "✔ chttpd_auth.require_valid_user está correcto.", + fr: "✔ chttpd_auth.require_valid_user est correct.", + ja: "✔ chttpd_auth.require_valid_userは正常です。", + ko: "✔ chttpd_auth.require_valid_user가 정상입니다.", + ru: "✔ chttpd_auth.require_valid_user в порядке.", + zh: "✔ chttpd_auth.require_valid_user 设置正确", + }, + "obsidianLiveSyncSettingTab.okWwwAuth": { + def: "✔ httpd.WWW-Authenticate is ok.", + es: "✔ httpd.WWW-Authenticate está correcto.", + fr: "✔ httpd.WWW-Authenticate est correct.", + ja: "✔ httpd.WWW-Authenticateは正常です。", + ko: "✔ httpd.WWW-Authenticate가 정상입니다.", + ru: "✔ httpd.WWW-Authenticate в порядке.", + zh: "✔ httpd.WWW-Authenticate 设置正确", + }, + "obsidianLiveSyncSettingTab.optionApply": { + def: "Apply", + es: "Aplicar", + fr: "Appliquer", + ja: "適用", + ko: "적용", + ru: "Применить", + zh: "应用", + }, + "obsidianLiveSyncSettingTab.optionCancel": { + def: "Cancel", + es: "Cancelar", + fr: "Annuler", + ja: "キャンセル", + ko: "취소", + ru: "Отмена", + zh: "取消", + }, + "obsidianLiveSyncSettingTab.optionCouchDB": { + def: "CouchDB", + es: "Servidor CouchDB", + fr: "CouchDB", + ja: "CouchDB サーバー", + ko: "CouchDB 서버", + ru: "Сервер CouchDB", + zh: "CouchDB", + }, + "obsidianLiveSyncSettingTab.optionDisableAllAutomatic": { + def: "Disable all automatic", + es: "Desactivar lo automático", + fr: "Désactiver toute automatisation", + ja: "すべての自動を無効化", + ko: "모든 자동 비활성화", + ru: "Отключить всё автоматическое", + zh: "禁用所有自动同步", + }, + "obsidianLiveSyncSettingTab.optionFetchFromRemote": { + def: "Fetch from Remote", + es: "Obtener del remoto", + fr: "Récupérer depuis le distant", + ja: "リモートからフェッチ", + ko: "원격에서 가져오기", + ru: "Загрузить с удалённого", + zh: "从远程获取", + }, + "obsidianLiveSyncSettingTab.optionHere": { + def: "HERE", + es: "AQUÍ", + fr: "ICI", + ja: "ここ", + ko: "여기", + ru: "ЗДЕСЬ", + zh: "这里", + }, + "obsidianLiveSyncSettingTab.optionLiveSync": { + def: "LiveSync", + es: "Sincronización LiveSync", + fr: "LiveSync", + ja: "LiveSync 同期", + ko: "LiveSync 동기화", + ru: "Синхронизация LiveSync", + zh: "LiveSync", + }, + "obsidianLiveSyncSettingTab.optionMinioS3R2": { + def: "Minio,S3,R2", + es: "MinIO, S3, R2", + fr: "Minio, S3, R2", + ja: "MinIO、S3、R2", + ko: "MinIO, S3, R2", + ru: "MinIO, S3, R2", + zh: "Minio, S3, R2", + }, + "obsidianLiveSyncSettingTab.optionOkReadEverything": { + def: "OK, I have read everything.", + es: "OK, he leído todo.", + fr: "OK, j'ai tout lu.", + ja: "OK、すべて読みました。", + ko: "네, 모든 것을 읽었습니다.", + ru: "ОК, я всё прочитал.", + zh: "好的,我已经阅读了所有内容 ", + }, + "obsidianLiveSyncSettingTab.optionOnEvents": { + def: "On events", + es: "En eventos", + fr: "Sur événements", + ja: "イベント時", + ko: "이벤트 시", + ru: "По событиям", + zh: "基于事件", + }, + "obsidianLiveSyncSettingTab.optionPeriodicAndEvents": { + def: "Periodic and on events", + es: "Periódico y en eventos", + fr: "Périodique et sur événements", + ja: "定期およびイベント時", + ko: "주기적 및 이벤트 시", + ru: "Периодически и по событиям", + zh: "定期和基于事件", + }, + "obsidianLiveSyncSettingTab.optionPeriodicWithBatch": { + def: "Periodic w/ batch", + es: "Periódico con lote", + fr: "Périodique avec lot", + ja: "バッチ付き定期", + ko: "주기적 w/ 일괄", + ru: "Периодически с пакетами", + zh: "定期与批量", + }, + "obsidianLiveSyncSettingTab.optionRebuildBoth": { + def: "Rebuild Both from This Device", + es: "Reconstructuir ambos desde este dispositivo", + fr: "Tout reconstruire depuis cet appareil", + ja: "このデバイスから両方を再構築", + ko: "이 기기에서 둘 다 재구축", + ru: "Перестроить оба с этого устройства", + zh: "从此设备重建两者", + }, + "obsidianLiveSyncSettingTab.optionSaveOnlySettings": { + def: "(Danger) Save Only Settings", + es: "(Peligro) Guardar solo configuración", + fr: "(Danger) N'enregistrer que les paramètres", + ja: "(危険) 設定のみ保存", + ko: "(위험) 설정만 저장", + ru: "(Опасно) Сохранить только настройки", + zh: "(危险)仅保存设置", + }, + "obsidianLiveSyncSettingTab.panelChangeLog": { + def: "Change Log", + es: "Registro de cambios", + fr: "Journal des modifications", + ja: "変更履歴", + ko: "변경 로그", + ru: "История изменений", + zh: "更新日志", + }, + "obsidianLiveSyncSettingTab.panelGeneralSettings": { + def: "General Settings", + es: "Configuraciones Generales", + fr: "Paramètres généraux", + ja: "一般設定", + ko: "일반 설정", + ru: "Основные настройки", + zh: "常规设置", + }, + "obsidianLiveSyncSettingTab.panelPrivacyEncryption": { + def: "Privacy & Encryption", + es: "Privacidad y Cifrado", + fr: "Confidentialité et chiffrement", + ja: "プライバシーと暗号化", + ko: "개인정보 보호 및 암호화", + ru: "Конфиденциальность и шифрование", + zh: "隐私与加密", + }, + "obsidianLiveSyncSettingTab.panelRemoteConfiguration": { + def: "Remote Configuration", + es: "Configuración remota", + fr: "Configuration distante", + ja: "リモート設定", + ko: "원격 구성", + ru: "Удалённая конфигурация", + zh: "远程配置", + }, + "obsidianLiveSyncSettingTab.panelSetup": { + def: "Setup", + es: "Configuración", + fr: "Configuration", + ja: "セットアップ", + ko: "설정", + ru: "Настройка", + zh: "设置", + }, + "obsidianLiveSyncSettingTab.serverVersion": { + def: "Server info: ${info}", + fr: "Infos serveur : ${info}", + ja: "サーバー情報: ${info}", + ru: "Информация о сервере: info", + zh: "服务器信息: ${info}", + }, + "obsidianLiveSyncSettingTab.titleActiveRemoteServer": { + def: "Active Remote Server", + fr: "Serveur distant actif", + ja: "アクティブなリモートサーバー", + ru: "Активный удалённый сервер", + zh: "活动远程服务器", + }, + "obsidianLiveSyncSettingTab.titleAppearance": { + def: "Appearance", + es: "Apariencia", + fr: "Apparence", + ja: "外観", + ko: "외관", + ru: "Внешний вид", + zh: "外观", + }, + "obsidianLiveSyncSettingTab.titleConflictResolution": { + def: "Conflict resolution", + es: "Resolución de conflictos", + fr: "Résolution des conflits", + ja: "競合解決", + ko: "충돌 해결", + ru: "Разрешение конфликтов", + zh: "冲突解决", + }, + "obsidianLiveSyncSettingTab.titleCongratulations": { + def: "Congratulations!", + es: "¡Felicidades!", + fr: "Félicitations !", + ja: "おめでとうございます!", + ko: "축하합니다!", + ru: "Поздравляем!", + zh: "恭喜!", + }, + "obsidianLiveSyncSettingTab.titleCouchDB": { + def: "CouchDB", + es: "Servidor CouchDB", + fr: "CouchDB", + ja: "CouchDB サーバー", + ko: "CouchDB 서버", + ru: "Сервер CouchDB", + zh: "CouchDB", + }, + "obsidianLiveSyncSettingTab.titleDeletionPropagation": { + def: "Deletion Propagation", + es: "Propagación de eliminación", + fr: "Propagation des suppressions", + ja: "削除の伝播", + ko: "삭제 전파", + ru: "Распространение удалений", + zh: "删除传播", + }, + "obsidianLiveSyncSettingTab.titleEncryptionNotEnabled": { + def: "Encryption is not enabled", + es: "El cifrado no está habilitado", + fr: "Le chiffrement n'est pas activé", + ja: "暗号化が有効になっていません", + ko: "암호화가 활성화되지 않음", + ru: "Шифрование не включено", + zh: "未启用加密", + }, + "obsidianLiveSyncSettingTab.titleEncryptionPassphraseInvalid": { + def: "Encryption Passphrase Invalid", + es: "La frase de contraseña de cifrado es inválida", + fr: "Phrase secrète de chiffrement invalide", + ja: "暗号化パスフレーズが無効です", + ko: "암호화 패스프레이즈 유효하지 않음", + ru: "Парольная фраза шифрования недействительна", + zh: "加密密码无效", + }, + "obsidianLiveSyncSettingTab.titleExtraFeatures": { + def: "Enable extra and advanced features", + es: "Habilitar funciones extras y avanzadas", + fr: "Activer les fonctionnalités supplémentaires et avancées", + ja: "追加および上級機能を有効化", + ko: "추가 및 고급 기능 활성화", + ru: "Включить дополнительные и расширенные функции", + zh: "启用额外和高级功能", + }, + "obsidianLiveSyncSettingTab.titleFetchConfig": { + def: "Fetch Config", + es: "Obtener configuración", + fr: "Récupérer la configuration", + ja: "設定を取得", + ko: "구성 가져오기", + ru: "Загрузить конфигурацию", + zh: "获取配置", + }, + "obsidianLiveSyncSettingTab.titleFetchConfigFromRemote": { + def: "Fetch config from remote server", + es: "Obtener configuración del servidor remoto", + fr: "Récupérer la configuration depuis le serveur distant", + ja: "リモートサーバーから設定を取得", + ko: "원격 서버에서 구성 가져오기", + ru: "Загрузить конфигурацию с удалённого сервера", + zh: "从远程服务器获取配置", + }, + "obsidianLiveSyncSettingTab.titleFetchSettings": { + def: "Fetch Settings", + es: "Obtener configuraciones", + fr: "Récupérer les paramètres", + ja: "設定の取得", + ko: "설정 가져오기", + ru: "Загрузить настройки", + zh: "获取设置", + }, + "obsidianLiveSyncSettingTab.titleHiddenFiles": { + def: "Hidden Files", + es: "Archivos ocultos", + fr: "Fichiers cachés", + ja: "隠しファイル", + ko: "숨김 파일", + ru: "Скрытые файлы", + zh: "隐藏文件", + }, + "obsidianLiveSyncSettingTab.titleLogging": { + def: "Logging", + es: "Registro", + fr: "Journalisation", + ja: "ログ", + ko: "로깅", + ru: "Логирование", + zh: "日志记录", + }, + "obsidianLiveSyncSettingTab.titleMinioS3R2": { + def: "Minio,S3,R2", + es: "MinIO, S3, R2", + fr: "Minio, S3, R2", + ja: "MinIO、S3、R2", + ko: "MinIO, S3, R2", + ru: "MinIO, S3, R2", + zh: "Minio, S3, R2", + }, + "obsidianLiveSyncSettingTab.titleNotification": { + def: "Notification", + es: "Notificación", + fr: "Notification", + ja: "通知", + ko: "알림", + ru: "Уведомления", + zh: "通知", + }, + "obsidianLiveSyncSettingTab.titleOnlineTips": { + def: "Online Tips", + es: "Consejos en línea", + fr: "Conseils en ligne", + ja: "オンラインヒント", + ko: "온라인 팁", + ru: "Онлайн советы", + zh: "在线提示", + }, + "obsidianLiveSyncSettingTab.titleQuickSetup": { + def: "Quick Setup", + es: "Configuración rápida", + fr: "Configuration rapide", + ja: "クイックセットアップ", + ko: "빠른 설정", + ru: "Быстрая настройка", + zh: "快速设置", + }, + "obsidianLiveSyncSettingTab.titleRebuildRequired": { + def: "Rebuild Required", + es: "Reconstrucción necesaria", + fr: "Reconstruction requise", + ja: "再構築が必要", + ko: "재구축 필요", + ru: "Требуется перестроение", + zh: "需要重建", + }, + "obsidianLiveSyncSettingTab.titleRemoteConfigCheckFailed": { + def: "Remote Configuration Check Failed", + es: "La verificación de configuración remota falló", + fr: "Échec de la vérification de la configuration distante", + ja: "リモート設定の確認に失敗", + ko: "원격 구성 확인 실패", + ru: "Проверка удалённой конфигурации не удалась", + zh: "远程配置检查失败", + }, + "obsidianLiveSyncSettingTab.titleRemoteServer": { + def: "Remote Server", + es: "Servidor remoto", + fr: "Serveur distant", + ja: "リモートサーバー", + ko: "원격 서버", + ru: "Удалённый сервер", + zh: "远程服务器", + }, + "obsidianLiveSyncSettingTab.titleReset": { + def: "Reset", + es: "Reiniciar", + fr: "Réinitialiser", + ja: "リセット", + ko: "리셋", + ru: "Сброс", + zh: "重置", + }, + "obsidianLiveSyncSettingTab.titleSetupOtherDevices": { + def: "To setup other devices", + es: "Para configurar otros dispositivos", + fr: "Pour configurer d'autres appareils", + ja: "他のデバイスのセットアップ", + ko: "다른 기기 설정", + ru: "Для настройки других устройств", + zh: "设置其他设备", + }, + "obsidianLiveSyncSettingTab.titleSynchronizationMethod": { + def: "Synchronization Method", + es: "Método de sincronización", + fr: "Méthode de synchronisation", + ja: "同期方法", + ko: "동기화 방법", + ru: "Метод синхронизации", + zh: "同步方法", + }, + "obsidianLiveSyncSettingTab.titleSynchronizationPreset": { + def: "Synchronization Preset", + es: "Preestablecimiento de sincronización", + fr: "Préréglage de synchronisation", + ja: "同期プリセット", + ko: "동기화 프리셋", + ru: "Пресет синхронизации", + zh: "同步预设", + }, + "obsidianLiveSyncSettingTab.titleSyncSettings": { + def: "Sync Settings", + es: "Configuraciones de Sincronización", + fr: "Paramètres de synchronisation", + ja: "同期設定", + ko: "동기화 설정", + ru: "Настройки синхронизации", + zh: "同步设置", + }, + "obsidianLiveSyncSettingTab.titleSyncSettingsViaMarkdown": { + def: "Sync Settings via Markdown", + es: "Configuración de sincronización a través de Markdown", + fr: "Synchroniser les paramètres via Markdown", + ja: "Markdown経由で設定を同期", + ko: "마크다운을 통한 동기화 설정", + ru: "Синхронизация настроек через Markdown", + zh: "通过 Markdown 同步设置", + }, + "obsidianLiveSyncSettingTab.titleUpdateThinning": { + def: "Update Thinning", + es: "Actualización de adelgazamiento", + fr: "Lissage des mises à jour", + ja: "更新の間引き", + ko: "업데이트 솎아내기", + ru: "Оптимизация обновлений", + zh: "更新频率限制", + }, + "obsidianLiveSyncSettingTab.warnCorsOriginUnmatched": { + def: "⚠ CORS Origin is unmatched ${from}->${to}", + es: "⚠ El origen de CORS no coincide: {from}->{to}", + fr: "⚠ L'origine CORS ne correspond pas ${from}->${to}", + ja: "⚠ CORS Originが一致しません ${from}->${to}", + ko: "⚠ CORS 원점이 일치하지 않습니다 {from}->{to}", + ru: "⚠ CORS Origin не совпадает from->to", + zh: "⚠ CORS 源不匹配 {from}->{to}", + }, + "obsidianLiveSyncSettingTab.warnNoAdmin": { + def: "⚠ You do not have administrator privileges.", + es: "⚠ No tienes privilegios de administrador.", + fr: "⚠ Vous n'avez pas les privilèges administrateur.", + ja: "⚠ 管理者権限がありません。", + ko: "⚠ 관리자 권한이 없습니다.", + ru: "⚠ У вас нет прав администратора.", + zh: "⚠ 您没有管理员权限", + }, + "P2P.AskPassphraseForDecrypt": { + def: "The remote peer shared the configuration. Please input the passphrase to decrypt the configuration.", + fr: "Le pair distant a partagé la configuration. Veuillez saisir la phrase secrète pour déchiffrer la configuration.", + ja: "リモートピアから設定が共有されました。設定を復号するためのパスフレーズを入力してください。", + ko: "원격 피어가 구성을 공유했습니다. 구성을 복호화하려면 패스프레이즈를 입력해 주세요.", + ru: "Удалённое устройство предоставило конфигурацию. Введите пароль для расшифровки.", + zh: "远程对等方共享了配置,请输入密码短语以解密配置", + }, + "P2P.AskPassphraseForShare": { + def: "The remote peer requested this device configuration. Please input the passphrase to share the configuration. You can ignore the request by cancelling this dialogue.", + fr: "Le pair distant a demandé la configuration de cet appareil. Veuillez saisir la phrase secrète pour partager la configuration. Vous pouvez ignorer la demande en annulant cette boîte de dialogue.", + ja: "リモートピアからこのデバイスの設定が要求されました。設定を共有するためのパスフレーズを入力してください。このダイアログをキャンセルすることでリクエストを無視できます。", + ko: "원격 피어가 이 기기의 구성을 요청했습니다. 구성을 공유하려면 패스프레이즈를 입력해 주세요. 이 대화상자를 취소하여 요청을 무시할 수 있습니다.", + ru: "Удалённое устройство запрашивает эту конфигурацию. Введите пароль для передачи.", + zh: "远程对等方请求此设备配置,请输入密码短语以共享配置。你可以通过取消此对话框来忽略此请求", + }, + "P2P.DisabledButNeed": { + def: "%{title_p2p_sync} is disabled. Do you really want to enable it?", + fr: "%{title_p2p_sync} est désactivé. Voulez-vous vraiment l'activer ?", + ja: "%{title_p2p_sync}は無効になっています。本当に有効にしますか?", + ko: "%{title_p2p_sync}가 비활성화되어 있습니다. 정말로 활성화하시겠습니까?", + ru: "title_p2p_sync отключён. Вы действительно хотите включить?", + zh: "%{title_p2p_sync} 已禁用。你确定要启用它吗?", + }, + "P2P.FailedToOpen": { + def: "Failed to open P2P connection to the signalling server.", + fr: "Échec d'ouverture de la connexion P2P vers le serveur de signalisation.", + ja: "シグナリングサーバーへのP2P接続を開けませんでした。", + ko: "시그널링 서버에 P2P 연결을 열 수 없습니다.", + ru: "Не удалось открыть P2P подключение к серверу сигнализации.", + zh: "无法打开 P2P 连接到信令服务器", + }, + "P2P.NoAutoSyncPeers": { + def: "No auto-sync peers found. Please set peers on the %{long_p2p_sync} pane.", + fr: "Aucun pair de synchronisation automatique trouvé. Veuillez définir des pairs dans le panneau %{long_p2p_sync}.", + ja: "自動同期ピアが見つかりません。%{long_p2p_sync}ペインでピアを設定してください。", + ko: "자동 동기화 피어를 찾을 수 없습니다. %{long_p2p_sync} 창에서 피어를 설정해 주세요.", + ru: "Автосинхронизируемые устройства не найдены.", + zh: "未找到自动同步的对等方,请在 %{long_p2p_sync} 面板中设置对等方", + }, + "P2P.NoKnownPeers": { + def: "No peers has been detected, waiting incoming other peers...", + fr: "Aucun pair détecté, en attente d'autres pairs entrants...", + ja: "ピアが検出されていません。他のピアからの接続を待機中...", + ko: "피어가 감지되지 않았습니다. 다른 피어의 접속을 기다리고 있습니다...", + ru: "Устройства не обнаружены, ожидаем другие устройства...", + zh: "未检测到对等方,正在等待其他对等方的连接...", + }, + "P2P.Note.description": { + def: " This replicator allows us to synchronise our vault with other devices\nusing a peer-to-peer connection. We can use this to synchronise our vault with our other devices without using a cloud service.\nThis replicator is based on Trystero. It also uses a signalling server to establish a connection between devices. The signalling server is used to exchange connection information between devices. It does (or,should) not know or store any of our data.\n\nThe signalling server can be hosted by anyone. This is just a Nostr relay. For the sake of simplicity and checking the behaviour of the replicator, an instance of the signalling server is hosted by vrtmrz. You can use the experimental server provided by vrtmrz, or you can use any other server.\n\nBy the way, even if the signalling server does not store our data, it can see the connection information of some of our devices. Please be aware of this. Also, be cautious when using the server provided by someone else.", + fr: " Ce réplicateur permet de synchroniser notre coffre avec d'autres\nappareils via une connexion pair-à-pair. Nous pouvons l'utiliser pour synchroniser notre coffre avec nos autres appareils sans recourir à un service cloud.\nCe réplicateur est basé sur Trystero. Il utilise également un serveur de signalisation pour établir une connexion entre les appareils. Le serveur de signalisation sert à échanger les informations de connexion entre appareils. Il ne connaît (ou ne devrait connaître) ni ne stocke aucune de nos données.\n\nLe serveur de signalisation peut être hébergé par n'importe qui. Il s'agit simplement d'un relais Nostr. Par souci de simplicité et pour vérifier le comportement du réplicateur, une instance du serveur de signalisation est hébergée par vrtmrz. Vous pouvez utiliser le serveur expérimental fourni par vrtmrz, ou tout autre serveur.\n\nAu passage, même si le serveur de signalisation ne stocke pas nos données, il peut voir les informations de connexion de certains de nos appareils. Soyez-en conscient. Soyez également prudent avec un serveur fourni par quelqu'un d'autre.", + ja: "このレプリケーターは、ピアツーピア接続を使用して、Vaultを他のデバイスと同期することができます。クラウドサービスを使用せずに、他のデバイスとVaultを同期することができます。\nこのレプリケーターはTrysteroをベースにしています。デバイス間の接続を確立するためにシグナリングサーバーを使用します。シグナリングサーバーはデバイス間で接続情報を交換するために使用されます。私たちのデータを知ったり保存したりすることはありません(または、そうあるべきではありません)。\n\nシグナリングサーバーは誰でもホストできます。これは単なるNostrリレーです。簡便さとレプリケーターの動作確認のために、vrtmrzがシグナリングサーバーのインスタンスをホストしています。vrtmrzが提供する実験用サーバーを使用することも、他のサーバーを使用することもできます。\n\nなお、シグナリングサーバーが私たちのデータを保存しなくても、一部のデバイスの接続情報を見ることができます。これにご注意ください。また、他の人が提供するサーバーを使用する場合は注意してください。", + ko: "이 복제기는 피어 투 피어(P2P) 연결을 통해 다른 기기들과 볼트를 동기화할 수 있도록 합니다. 클라우드 서비스를 거치지 않고도 기기간 동기화를 구현할 수 있습니다.\n\n이 복제기는 Trystero를 기반으로 하며, 기기 간 연결을 설정하기 위해 시그널링 서버를 사용합니다. 시그널링 서버는 단순히 연결 정보를 교환하는 용도로만 사용되며, 사용자 데이터를 저장하거나 접근하지 않습니다 (또는 그래야만 합니다).\n\n시그널링 서버는 누구나 운영할 수 있으며, 이는 단순한 Nostr 릴레이입니다. 편의성과 복제기의 작동 확인을 위해 `vrtmrz`가 자체적으로 시그널링 서버 인스턴스를 운영 중입니다. 사용자는 `vrtmrz`가 제공하는 실험용 서버를 사용할 수도 있고, 별도로 자신만의 서버를 설정할 수도 있습니다.\n\n참고로, 시그널링 서버는 사용자 데이터를 저장하지 않더라도 일부 기기의 연결 정보는 볼 수 있습니다. 이 점을 유의해 주세요. 특히 타인이 운영하는 서버를 사용할 경우 주의가 필요합니다.", + ru: "Этот репликатор позволяет синхронизировать хранилище с другими устройствами с использованием однорангового соединения.", + zh: " This replicator allows us to synchronise our vault with other devices\nusing a peer-to-peer connection. We can use this to synchronise our vault with our other devices without using a cloud service.\nThis replicator is based on Trystero. It also uses a signaling server to establish a connection between devices. The signaling server is used to exchange connection information between devices. It does (or,should) not know or store any of our data.\n\nThe signaling server can be hosted by anyone. This is just a Nostr relay. For the sake of simplicity and checking the behaviour of the replicator, an instance of the signaling server is hosted by vrtmrz. You can use the experimental server provided by vrtmrz, or you can use any other server.\n\nBy the way, even if the signaling server does not store our data, it can see the connection information of some of our devices. Please be aware of this. Also, be cautious when using the server provided by someone else.", + }, + "P2P.Note.important_note": { + def: "Peer-to-Peer Replicator.", + fr: "Réplicateur pair-à-pair.", + ja: "ピアツーピアレプリケーターの実験的実装", + ko: "피어 투 피어(P2P) 복제기의 실험적 구현입니다.", + ru: "P2P репликатор.", + zh: "The Experimental Implementation of the Peer-to-Peer Replicator.", + }, + "P2P.Note.important_note_sub": { + def: "This feature is still on the bleeding edge. Please be aware that ensure your data is backed up before using this feature. And, we would be so happy if you could contribute to the development of this feature.", + fr: "Cette fonctionnalité est encore en tout début de développement. Veillez à sauvegarder vos données avant de l'utiliser. Nous serions très heureux si vous contribuiez au développement de cette fonctionnalité.", + ja: "この機能はまだ実験段階です。期待通りに動作しない可能性があることにご注意ください。さらに、バグ、セキュリティの問題、その他の問題がある可能性があります。この機能は自己責任でご使用ください。この機能の開発にご協力ください。", + ko: "이 기능은 아직 실험 단계에 있습니다. 이 기능이 예상대로 작동하지 않을 수 있음을 알아주세요. 또한 버그, 보안 문제 및 기타 문제가 있을 수 있습니다. 이 기능을 사용할 때는 본인의 책임 하에 사용하세요. 이 기능의 개발에 기여해 주세요.", + ru: "Эта функция всё ещё на стадии разработки. Пожалуйста, убедитесь, что ваши данные зарезервированы.", + zh: "This feature is still in the experimental stage. Please be aware that this feature may not work as expected. Furthermore, it may have some bugs, security issues, and other issues. Please use this feature at your own risk. Please contribute to the development of this feature.", + }, + "P2P.Note.Summary": { + def: "What is this feature? (and some important notes, please read once)", + fr: "Qu'est-ce que cette fonctionnalité ? (et quelques notes importantes, à lire)", + ja: "この機能について(重要な注意事項を含む、一度お読みください)", + ko: "이 기능은 무엇인가요? (설명과 참고사항이 적혀있습니다. 한 번 읽어보세요!)", + ru: "Что это за функция? (важные замечания)", + zh: "What is this feature? (and some important notes, please read once)", + }, + "P2P.NotEnabled": { + def: "%{title_p2p_sync} is not enabled. We cannot open a new connection.", + fr: "%{title_p2p_sync} n'est pas activé. Nous ne pouvons pas ouvrir de nouvelle connexion.", + ja: "%{title_p2p_sync}が有効になっていません。新しい接続を開くことができません。", + ko: "%{title_p2p_sync}가 활성화되지 않았습니다. 새로운 연결을 열 수 없습니다.", + ru: "title_p2p_sync не включён. Мы не можем открыть новое подключение.", + zh: "%{title_p2p_sync} is not enabled. We cannot open a new connection.", + }, + "P2P.P2PReplication": { + def: "%{P2P} Replication", + fr: "Réplication %{P2P}", + ja: "%{P2P}レプリケーション(複製)", + ko: "%{P2P} 복제", + ru: "P2P Репликация", + zh: "%{P2P} Replication", + }, + "P2P.PaneTitle": { + def: "%{long_p2p_sync}", + fr: "%{long_p2p_sync}", + ja: "%{long_p2p_sync}", + ko: "%{long_p2p_sync}", + ru: "long_p2p_sync", + zh: "%{long_p2p_sync}", + }, + "P2P.ReplicatorInstanceMissing": { + def: "P2P Sync replicator is not found, possibly not have been configured or enabled.", + fr: "Le réplicateur Sync P2P est introuvable, peut-être non configuré ou non activé.", + ja: "P2P同期レプリケーターが見つかりません。設定または有効化されていない可能性があります。", + ko: "P2P 동기화 복제기를 찾을 수 없습니다. 구성되지 않았거나 활성화되지 않았을 수 있습니다.", + ru: "P2P Sync репликатор не найден, возможно, не настроен.", + zh: "P2P Sync replicator is not found, possibly not have been configured or enabled.", + }, + "P2P.SeemsOffline": { + def: "Peer ${name} seems offline, skipped.", + fr: "Le pair ${name} semble hors ligne, ignoré.", + ja: "ピア${name}はオフラインのようです。スキップしました。", + ko: "피어 ${name}이(가) 오프라인인 것 같습니다. 건너뜁니다.", + ru: "Устройство name офлайн, пропущено.", + zh: "Peer ${name} seems offline, skipped.", + }, + "P2P.SyncAlreadyRunning": { + def: "P2P Sync is already running.", + fr: "La Sync P2P est déjà en cours.", + ja: "P2P同期はすでに実行中です。", + ko: "P2P 동기화가 이미 실행 중입니다.", + ru: "P2P Sync уже запущен.", + zh: "P2P Sync is already running.", + }, + "P2P.SyncCompleted": { + def: "P2P Sync completed.", + fr: "Sync P2P terminée.", + ja: "P2P同期が完了しました。", + ko: "P2P 동기화가 완료되었습니다.", + ru: "P2P Sync завершён.", + zh: "P2P Sync completed.", + }, + "P2P.SyncStartedWith": { + def: "P2P Sync with ${name} have been started.", + fr: "La Sync P2P avec ${name} a démarré.", + ja: "${name}とのP2P同期を開始しました。", + ko: "${name}과의 P2P 동기화가 시작되었습니다.", + ru: "P2P Sync с name начат.", + zh: "P2P Sync with ${name} have been started.", + }, + Passphrase: { + def: "Passphrase", + es: "Frase de contraseña", + fr: "Phrase secrète", + ja: "パスフレーズ", + ko: "패스프레이즈", + ru: "Парольная фраза", + zh: "密码", + }, + "Passphrase of sensitive configuration items": { + def: "Passphrase of sensitive configuration items", + es: "Frase para elementos sensibles", + fr: "Phrase secrète des éléments de configuration sensibles", + ja: "機密性の高い設定項目にパスフレーズを使用", + ko: "민감한 구성 항목의 패스프레이즈", + ru: "Парольная фраза для конфиденциальных настроек", + zh: "敏感配置项的密码", + }, + password: { + def: "password", + es: "contraseña", + fr: "mot de passe", + ja: "パスワード", + ko: "비밀번호", + ru: "пароль", + zh: "密码", + }, + Password: { + def: "Password", + es: "Contraseña", + fr: "Mot de passe", + ja: "パスワード", + ko: "비밀번호", + ru: "Пароль", + zh: "密码", + }, + "Path Obfuscation": { + def: "Path Obfuscation", + es: "Ofuscación de rutas", + fr: "Obfuscation des chemins", + ja: "パスの難読化", + ko: "경로 난독화", + ru: "Обфускация путей", + zh: "路径混淆", + }, + "Per-file-saved customization sync": { + def: "Per-file-saved customization sync", + es: "Sincronización de personalización por archivo", + fr: "Synchronisation de personnalisation enregistrée par fichier", + ja: "ファイルごとのカスタマイズ同期", + ko: "파일별 저장 사용자 설정 동기화", + ru: "Синхронизация настроек для каждого файла", + zh: "按文件保存的自定义同步", + }, + "Periodic Sync interval": { + def: "Periodic Sync interval", + es: "Intervalo de sincronización periódica", + fr: "Intervalle de synchronisation périodique", + ja: "定時同期の感覚", + ko: "주기적 동기화 간격", + ru: "Интервал периодической синхронизации", + zh: "定期同步间隔", + }, + "Prepare the 'report' to create an issue": { + def: "Prepare the 'report' to create an issue", + fr: "Préparer le « rapport » pour créer un ticket", + ja: "Issue 作成用の「レポート」を準備", + ko: "이슈 생성을 위한 '보고서' 준비", + ru: "Подготовить «отчёт» для создания Issue", + zh: "准备 '报告' 以创建问题单", + }, + Presets: { + def: "Presets", + es: "Preconfiguraciones", + fr: "Préréglages", + ja: "プリセット", + ko: "프리셋", + ru: "Пресеты", + zh: "预设", + }, + "Process small files in the foreground": { + def: "Process small files in the foreground", + es: "Procesar archivos pequeños en primer plano", + fr: "Traiter les petits fichiers au premier plan", + ja: "小さいファイルを最前面で処理", + ko: "포그라운드에서 작은 파일 처리", + ru: "Обрабатывать маленькие файлы в основном потоке", + zh: "在前台处理小文件", + }, + "Property Encryption": { + def: "Property Encryption", + fr: "Chiffrement des propriétés", + ru: "Шифрование свойств", + zh: "属性加密", + }, + "RedFlag.Fetch.Method.Desc": { + def: "How do you want to fetch?\n- %{RedFlag.Fetch.Method.FetchSafer}.\n **Low Traffic**, **High CPU**, **Low Risk**\n Recommended if ...\n - Files possibly inconsistent\n - Files were not so much\n- %{RedFlag.Fetch.Method.FetchSmoother}.\n **Low Traffic**, **Moderate CPU**, **Low to Moderate Risk**\n Recommended if ...\n - Files probably consistent\n - You have a lot of files.\n- %{RedFlag.Fetch.Method.FetchTraditional}.\n **High Traffic**, **Low CPU**, **Low to Moderate Risk**\n\n>[!INFO]- Details\n> ## %{RedFlag.Fetch.Method.FetchSafer}.\n> **Low Traffic**, **High CPU**, **Low Risk**\n> This option first creates a local database using existing local files before fetching data from the remote source.\n> If matching files exist both locally and remotely, only the differences between them will be transferred.\n> However, files present in both locations will initially be handled as conflicted files. They will be resolved automatically if they are not actually conflicted, but this process may take time.\n> This is generally the safest method, minimizing data loss risk.\n> ## %{RedFlag.Fetch.Method.FetchSmoother}.\n> **Low Traffic**, **Moderate CPU**, **Low to Moderate Risk** (depending operation)\n> This option first creates chunks from local files for the database, then fetches data. Consequently, only chunks missing locally are transferred. However, all metadata is taken from the remote source.\n> Local files are then compared against this metadata at launch. The content considered newer will overwrite the older one (by modified time). This outcome is then synchronised back to the remote database.\n> This is generally safe if local files are genuinely the latest timestamp. However, it can cause problems if a file has a newer timestamp but older content (like the initial `welcome.md`).\n> This uses less CPU and faster than \"%{RedFlag.Fetch.Method.FetchSafer}\", but it may lead to data loss if not used carefully.\n> ## %{RedFlag.Fetch.Method.FetchTraditional}.\n> **High Traffic**, **Low CPU**, **Low to Moderate Risk** (depending operation)\n> All things will be fetched from the remote.\n> Similar to the %{RedFlag.Fetch.Method.FetchSmoother}, but all chunks are fetched from the remote source.\n> This is the most traditional way to fetch, typically consuming the most network traffic and time. It also carries a similar risk of overwriting remote files to the '%{RedFlag.Fetch.Method.FetchSmoother}' option.\n> However, it is often considered the most stable method because it is the longest-established and most straightforward approach.", + fr: "Comment voulez-vous récupérer ?\n- %{RedFlag.Fetch.Method.FetchSafer}.\n **Trafic faible**, **CPU élevé**, **Risque faible**\n Recommandé si ...\n - Fichiers possiblement incohérents\n - Fichiers peu nombreux\n- %{RedFlag.Fetch.Method.FetchSmoother}.\n **Trafic faible**, **CPU modéré**, **Risque faible à modéré**\n Recommandé si ...\n - Fichiers probablement cohérents\n - Vous avez beaucoup de fichiers.\n- %{RedFlag.Fetch.Method.FetchTraditional}.\n **Trafic élevé**, **CPU faible**, **Risque faible à modéré**\n\n>[!INFO]- Détails\n> ## %{RedFlag.Fetch.Method.FetchSafer}.\n> **Trafic faible**, **CPU élevé**, **Risque faible**\n> Cette option crée d'abord une base locale à partir des fichiers locaux existants avant de récupérer les données depuis la source distante.\n> Si des fichiers correspondants existent à la fois localement et à distance, seules les différences entre eux seront transférées.\n> Toutefois, les fichiers présents aux deux emplacements seront initialement traités comme en conflit. Ils seront résolus automatiquement s'ils ne le sont pas réellement, mais ce processus peut prendre du temps.\n> C'est généralement la méthode la plus sûre, minimisant le risque de perte de données.\n> ## %{RedFlag.Fetch.Method.FetchSmoother}.\n> **Trafic faible**, **CPU modéré**, **Risque faible à modéré** (selon l'opération)\n> Cette option crée d'abord des fragments à partir des fichiers locaux pour la base, puis récupère les données. Par conséquent, seuls les fragments manquants localement sont transférés. Cependant, toutes les métadonnées sont prises de la source distante.\n> Les fichiers locaux sont ensuite comparés à ces métadonnées au lancement. Le contenu considéré comme plus récent écrasera le plus ancien (selon la date de modification). Le résultat est ensuite synchronisé vers la base distante.\n> C'est généralement sûr si les fichiers locaux ont bien l'horodatage le plus récent. Cela peut toutefois poser problème si un fichier a un horodatage plus récent mais un contenu plus ancien (comme le `welcome.md` initial).\n> Cette méthode utilise moins de CPU et est plus rapide que « %{RedFlag.Fetch.Method.FetchSafer} », mais peut entraîner une perte de données si elle n'est pas utilisée avec précaution.\n> ## %{RedFlag.Fetch.Method.FetchTraditional}.\n> **Trafic élevé**, **CPU faible**, **Risque faible à modéré** (selon l'opération)\n> Tout sera récupéré depuis le distant.\n> Similaire à %{RedFlag.Fetch.Method.FetchSmoother}, mais tous les fragments sont récupérés depuis la source distante.\n> C'est la façon la plus traditionnelle de récupérer, consommant généralement le plus de trafic réseau et de temps. Elle comporte également un risque similaire d'écraser les fichiers distants à l'option « %{RedFlag.Fetch.Method.FetchSmoother} ».\n> Elle est toutefois souvent considérée comme la méthode la plus stable car c'est la plus ancienne et la plus directe.", + ja: "どのようにフェッチしますか?\n- %{RedFlag.Fetch.Method.FetchSafer}\n **低トラフィック**, **高CPU負荷**, **低リスク**\n 推奨条件...\n - ファイルの整合性に不安がある\n - ファイル数がそれほど多くない\n- %{RedFlag.Fetch.Method.FetchSmoother}\n **低トラフィック**, **中程CPU負荷**, **低~中リスク**\n 推奨条件...\n - ファイルがおそらく整合している\n - ファイル数が多い\n- %{RedFlag.Fetch.Method.FetchTraditional}\n **高トラフィック**, **低CPU負荷**, **低~中リスク**\n\n>[!INFO]- 詳細\n> ## %{RedFlag.Fetch.Method.FetchSafer}\n> **低トラフィック**, **高CPU負荷**, **低リスク**\n> このオプションは、リモートからデータをフェッチする前に、既存のローカルファイルを使用してローカルデータベースを作成します。\n> ローカルとリモートの両方に一致するファイルがある場合、差分のみが転送されます。\n> ただし、両方の場所に存在するファイルは最初は競合ファイルとして処理されます。実際に競合していなければ自動的に解決されますが、この処理には時間がかかる場合があります。\n> これは一般的に最も安全な方法で、データ損失のリスクを最小限に抑えます。\n> ## %{RedFlag.Fetch.Method.FetchSmoother}\n> **低トラフィック**, **中程CPU負荷**, **低~中リスク**(操作による)\n> このオプションは、最初にローカルファイルからデータベース用のチャンクを作成し、その後データをフェッチします。そのため、ローカルにないチャンクのみが転送されます。ただし、すべてのメタデータはリモートから取得されます。\n> ローカルファイルは起動時にこのメタデータと比較されます。新しいと判断されたコンテンツ(更新日時による)が古いものを上書きします。この結果はリモートデータベースに同期されます。\n> ローカルファイルが本当に最新のタイムスタンプであれば一般的に安全です。ただし、ファイルのタイムスタンプが新しくてもコンテンツが古い場合(初期の`welcome.md`など)は問題が発生する可能性があります。\n> これは\"%{RedFlag.Fetch.Method.FetchSafer}\"よりCPU使用量が少なく高速ですが、注意しないとデータ損失につながる可能性があります。\n> ## %{RedFlag.Fetch.Method.FetchTraditional}\n> **高トラフィック**, **低CPU負荷**, **低~中リスク**(操作による)\n> すべてのデータがリモートからフェッチされます。\n> %{RedFlag.Fetch.Method.FetchSmoother}と似ていますが、すべてのチャンクがリモートからフェッチされます。\n> これは最も従来のフェッチ方法で、通常最もネットワークトラフィックと時間を消費します。'%{RedFlag.Fetch.Method.FetchSmoother}'オプションと同様のリモートファイル上書きのリスクがあります。\n> ただし、最も歴史があり簡単なアプローチであるため、最も安定した方法と見なされることが多いです。", + ko: "어떻게 가져오시겠습니까?\n- %{RedFlag.Fetch.Method.FetchSafer}. (권장)\n **낮은 트래픽**, **높은 CPU**, **낮은 위험**\n- %{RedFlag.Fetch.Method.FetchSmoother}.\n **낮은 트래픽**, **보통 CPU**, **낮음에서 보통 위험**\n- %{RedFlag.Fetch.Method.FetchTraditional}.\n **높은 트래픽**, **낮은 CPU**, **낮음에서 보통 위험**\n\n>[!INFO]- 세부 사항\n> ## %{RedFlag.Fetch.Method.FetchSafer}. (권장)\n> **낮은 트래픽**, **높은 CPU**, **낮은 위험**\n> 이 옵션은 원격 소스에서 데이터를 가져오기 전에 기존 로컬 파일을 사용하여 로컬 데이터베이스를 먼저 생성합니다.\n> 로컬과 원격 모두에 일치하는 파일이 있으면 둘 사이의 차이점만 전송됩니다.\n> 하지만 두 위치 모두에 있는 파일은 초기에 충돌 파일로 처리됩니다. 실제로 충돌하지 않는다면 자동으로 해결되지만 이 과정은 시간이 걸릴 수 있습니다.\n> 이는 일반적으로 가장 안전한 방법으로 데이터 손실 위험을 최소화합니다.\n> ## %{RedFlag.Fetch.Method.FetchSmoother}.\n> **낮은 트래픽**, **보통 CPU**, **낮음에서 보통 위험** (작업에 따라)\n> 이 옵션은 먼저 로컬 파일에서 데이터베이스용 청크를 생성한 다음 데이터를 가져옵니다. 따라서 로컬에 없는 청크만 전송됩니다. 하지만 모든 메타데이터는 원격 소스에서 가져옵니다.\n> 그런 다음 로컬 파일이 시작 시 이 메타데이터와 비교됩니다. 더 새로운 것으로 간주되는 콘텐츠가 오래된 것을 덮어씁니다(수정 시간 기준). 이 결과는 원격 데이터베이스에 다시 동기화됩니다.\n> 로컬 파일이 실제로 최신 타임스탬프라면 일반적으로 안전합니다. 하지만 파일이 더 새로운 타임스탬프를 가지고 있지만 더 오래된 콘텐츠를 가지고 있다면(초기 `welcome.md`처럼) 문제가 발생할 수 있습니다.\n> 이는 \"%{RedFlag.Fetch.Method.FetchSafer}\"보다 CPU를 덜 사용하고 더 빠르지만 주의 깊게 사용하지 않으면 데이터 손실로 이어질 수 있습니다.\n> ## %{RedFlag.Fetch.Method.FetchTraditional}.\n> **높은 트래픽**, **낮은 CPU**, **낮음에서 보통 위험** (작업에 따라)\n> 모든 것이 원격에서 가져와집니다.\n> %{RedFlag.Fetch.Method.FetchSmoother}와 유사하지만 모든 청크가 원격 소스에서 가져와집니다.\n> 이는 가장 전통적인 가져오기 방법으로 일반적으로 가장 많은 네트워크 트래픽과 시간을 소모합니다. 또한 '%{RedFlag.Fetch.Method.FetchSmoother}' 옵션과 유사하게 원격 파일을 덮어쓸 위험이 있습니다.\n> 하지만 가장 오래되고 가장 직접적인 접근 방식이기 때문에 종종 가장 안정적인 방법으로 간주됩니다.", + ru: "Как вы хотите загрузить?", + zh: "How do you want to fetch?\n- %{RedFlag.Fetch.Method.FetchSafer}.\n **Low Traffic**, **High CPU**, **Low Risk**\n Recommended if ...\n - Files possibly inconsistent\n - Files were not so much\n- %{RedFlag.Fetch.Method.FetchSmoother}.\n **Low Traffic**, **Moderate CPU**, **Low to Moderate Risk**\n Recommended if ...\n - Files probably consistent\n - You have a lot of files.\n- %{RedFlag.Fetch.Method.FetchTraditional}.\n **High Traffic**, **Low CPU**, **Low to Moderate Risk**\n\n>[!INFO]- Details\n> ## %{RedFlag.Fetch.Method.FetchSafer}.\n> **Low Traffic**, **High CPU**, **Low Risk**\n> This option first creates a local database using existing local files before fetching data from the remote source.\n> If matching files exist both locally and remotely, only the differences between them will be transferred.\n> However, files present in both locations will initially be handled as conflicted files. They will be resolved automatically if they are not actually conflicted, but this process may take time.\n> This is generally the safest method, minimizing data loss risk.\n> ## %{RedFlag.Fetch.Method.FetchSmoother}.\n> **Low Traffic**, **Moderate CPU**, **Low to Moderate Risk** (depending operation)\n> This option first creates chunks from local files for the database, then fetches data. Consequently, only chunks missing locally are transferred. However, all metadata is taken from the remote source.\n> Local files are then compared against this metadata at launch. The content considered newer will overwrite the older one (by modified time). This outcome is then synchronised back to the remote database.\n> This is generally safe if local files are genuinely the latest timestamp. However, it can cause problems if a file has a newer timestamp but older content (like the initial `welcome.md`).\n> This uses less CPU and faster than \"%{RedFlag.Fetch.Method.FetchSafer}\", but it may lead to data loss if not used carefully.\n> ## %{RedFlag.Fetch.Method.FetchTraditional}.\n> **High Traffic**, **Low CPU**, **Low to Moderate Risk** (depending operation)\n> All things will be fetched from the remote.\n> Similar to the %{RedFlag.Fetch.Method.FetchSmoother}, but all chunks are fetched from the remote source.\n> This is the most traditional way to fetch, typically consuming the most network traffic and time. It also carries a similar risk of overwriting remote files to the '%{RedFlag.Fetch.Method.FetchSmoother}' option.\n> However, it is often considered the most stable method because it is the longest-established and most straightforward approach.", + }, + "RedFlag.Fetch.Method.FetchSafer": { + def: "Create a local database once before fetching", + fr: "Créer une base locale avant de récupérer", + ja: "フェッチ前にローカルデータベースを作成", + ko: "가져오기 전에 로컬 데이터베이스를 한 번 생성", + ru: "Создать локальную базу данных перед загрузкой", + zh: "Create a local database once before fetching", + }, + "RedFlag.Fetch.Method.FetchSmoother": { + def: "Create local file chunks before fetching", + fr: "Créer des fragments de fichiers locaux avant de récupérer", + ja: "フェッチ前にローカルファイルチャンクを作成", + ko: "가져오기 전에 로컬 파일 청크 생성", + ru: "Создать локальные чанки перед загрузкой", + zh: "Create local file chunks before fetching", + }, + "RedFlag.Fetch.Method.FetchTraditional": { + def: "Fetch everything from the remote", + fr: "Tout récupérer depuis le distant", + ja: "リモートからすべてをフェッチ", + ko: "원격에서 모든 것 가져오기", + ru: "Загрузить всё с удалённого", + zh: "Fetch everything from the remote", + }, + "RedFlag.Fetch.Method.Title": { + def: "How do you want to fetch?", + fr: "Comment voulez-vous récupérer ?", + ja: "どのようにフェッチしますか?", + ko: "어떻게 가져오시겠습니까?", + ru: "Как вы хотите загрузить?", + zh: "How do you want to fetch?", + }, + "RedFlag.FetchRemoteConfig.Buttons.Cancel": { + def: "No, use local settings", + fr: "Non, utiliser les paramètres locaux", + ja: "いいえ、ローカル設定を使用", + ru: "Нет, использовать локальные настройки", + zh: "No, use local settings", + }, + "RedFlag.FetchRemoteConfig.Buttons.Fetch": { + def: "Yes, fetch and apply remote settings", + fr: "Oui, récupérer et appliquer les paramètres distants", + ja: "はい、リモート設定を取得して適用", + ru: "Да, загрузить и применить удалённые настройки", + zh: "Yes, fetch and apply remote settings", + }, + "RedFlag.FetchRemoteConfig.Message": { + def: "Do you want to fetch and apply remotely stored preference settings to the device?", + fr: "Voulez-vous récupérer et appliquer les préférences stockées à distance sur cet appareil ?", + ja: "リモートに保存された設定を取得して、このデバイスに適用しますか?", + ru: "Вы хотите загрузить и применить удалённые настройки?", + zh: "Do you want to fetch and apply remotely stored preference settings to the device?", + }, + "RedFlag.FetchRemoteConfig.Title": { + def: "Fetch Remote Configuration", + fr: "Récupérer la configuration distante", + ja: "リモート設定の取得", + ru: "Загрузить удалённую конфигурацию", + zh: "Fetch Remote Configuration", + }, + "Reducing the frequency with which on-disk changes are reflected into the DB": { + def: "Reducing the frequency with which on-disk changes are reflected into the DB", + es: "Reducir frecuencia de actualizaciones de disco a BD", + fr: "Réduire la fréquence à laquelle les modifications sur disque sont reflétées dans la base", + ja: "ローカルでの変更がデータベースに反映される頻度を下げる(所定の回数まとめて同期する、逐一反映しない)", + ko: "디스크 변경 사항이 데이터베이스에 반영되는 빈도를 줄입니다", + ru: "Уменьшение частоты отражения изменений с диска в БД", + zh: "降低将磁盘上的更改反映到数据库中的频率", + }, + Region: { + def: "Region", + es: "Región", + fr: "Région", + ja: "リージョン", + ko: "지역", + ru: "Регион", + zh: "区域", + }, + "Remote server type": { + def: "Remote server type", + es: "Tipo de servidor remoto", + fr: "Type de serveur distant", + ja: "リモートの種別", + ko: "원격 서버 유형", + ru: "Тип удалённого сервера", + zh: "远程服务器类型", + }, + "Remote Type": { + def: "Remote Type", + es: "Tipo de remoto", + fr: "Type de distant", + ja: "同期方式", + ko: "원격 유형", + ru: "Удалённый тип", + zh: "远程类型", + }, + "Replicator.Dialogue.Locked.Action.Dismiss": { + def: "Cancel for reconfirmation", + fr: "Annuler pour reconfirmer", + ja: "再確認のためキャンセル", + ko: "재확인을 위해 취소", + ru: "Отмена для подтверждения", + zh: "Cancel for reconfirmation", + }, + "Replicator.Dialogue.Locked.Action.Fetch": { + def: "Reset Synchronisation on This Device", + es: "Restablecer sincronización en este dispositivo", + fr: "Réinitialiser la synchronisation sur cet appareil", + ja: "このデバイスの同期をリセット", + ko: "원격 데이터베이스에서 모든 것을 다시 가져오기", + ru: "Сбросить синхронизацию на этом устройстве", + zh: "Reset Synchronisation on This Device", + }, + "Replicator.Dialogue.Locked.Action.Unlock": { + def: "Unlock the remote database", + fr: "Déverrouiller la base distante", + ja: "リモートデータベースのロックを解除", + ko: "원격 데이터베이스 잠금 해제", + ru: "Разблокировать удалённую базу данных", + zh: "Unlock the remote database", + }, + "Replicator.Dialogue.Locked.Message": { + def: "Remote database is locked. This is due to a rebuild on one of the terminals.\nThe device is therefore asked to withhold the connection to avoid database corruption.\n\nThere are three options that we can do:\n\n- %{Replicator.Dialogue.Locked.Action.Fetch}\n The most preferred and reliable way. This will dispose the local database once, and reset all synchronisation information from the remote database again, In most case, we can perform this safely. However, it takes some time and should be done in stable network.\n- %{Replicator.Dialogue.Locked.Action.Unlock}\n This method can only be used if we are already reliably synchronised by other replication methods. This does not simply mean that we have the same files. If you are not sure, you should avoid it.\n- %{Replicator.Dialogue.Locked.Action.Dismiss}\n This will cancel the operation. And we will asked again on next request.\n", + fr: "La base distante est verrouillée. Ceci est dû à une reconstruction sur l'un des terminaux.\nL'appareil est donc prié de suspendre la connexion pour éviter la corruption de la base.\n\nTrois options sont possibles :\n\n- %{Replicator.Dialogue.Locked.Action.Fetch}\n La méthode la plus recommandée et fiable. Elle supprime la base locale puis réinitialise toutes les informations de synchronisation depuis la base distante. Dans la plupart des cas, c'est sûr. Cela prend cependant du temps et devrait se faire sur un réseau stable.\n- %{Replicator.Dialogue.Locked.Action.Unlock}\n Cette méthode ne peut être utilisée que si nous sommes déjà synchronisés de manière fiable par d'autres méthodes de réplication. Cela ne signifie pas simplement que nous avons les mêmes fichiers. Dans le doute, évitez.\n- %{Replicator.Dialogue.Locked.Action.Dismiss}\n Ceci annule l'opération. Vous serez à nouveau interrogé à la prochaine requête.\n", + ja: "リモートデータベースがロックされています。これはいずれかの端末での再構築が原因です。\nデータベースの破損を避けるため、このデバイスは接続を保留するよう求められています。\n\n3つのオプションがあります:\n\n- %{Replicator.Dialogue.Locked.Action.Fetch}\n 最も推奨される信頼性の高い方法です。ローカルデータベースを一度破棄し、リモートデータベースからすべての同期情報を再取得します。ほとんどの場合、これは安全に実行できます。ただし、時間がかかり、安定したネットワークで実行する必要があります。\n- %{Replicator.Dialogue.Locked.Action.Unlock}\n この方法は、他のレプリケーション(複製)方法ですでに確実に同期されている場合のみ使用できます。単に同じファイルがあるという意味ではありません。確信がない場合は避けてください。\n- %{Replicator.Dialogue.Locked.Action.Dismiss}\n 操作をキャンセルします。次回のリクエスト時に再度確認されます。\n", + ko: "원격 데이터베이스가 잠겨 있습니다. 이는 일부 터미널에서 데이터베이스를 재구축했기 때문입니다.\n따라서 현재 기기는 데이터베이스 손상을 방지하기 위해 연결을 일시적으로 보류해야 합니다.\n\n선택할 수 있는 세 가지 방법이 있습니다:\n\n- %{Replicator.Dialogue.Locked.Action.Fetch}\n 가장 권장되고 신뢰할 수 있는 방법입니다. 로컬 데이터베이스를 초기화한 뒤, 원격 데이터베이스의 전체 데이터를 다시 가져옵니다. 대부분의 경우 안전하게 수행할 수 있으나, 시간이 다소 걸리며 안정적인 네트워크 환경에서 진행해야 합니다.\n- %{Replicator.Dialogue.Locked.Action.Unlock}\n 이 방법은 다른 동기화 방식으로 이미 완전하고 안정적으로 동기화된 경우에만 사용할 수 있습니다. 단순히 파일이 같다는 의미가 아니므로, 확신이 없다면 사용을 피하는 것이 좋습니다.\n- %{Replicator.Dialogue.Locked.Action.Dismiss}\n 이번 작업을 취소하고, 다음 요청 시 다시 안내받습니다.\n", + ru: "Удалённая база данных заблокирована. Это связано с перестроением на одном из устройств.", + zh: "Remote database is locked. This is due to a rebuild on one of the terminals.\nThe device is therefore asked to withhold the connection to avoid database corruption.\n\nThere are three options that we can do:\n\n- %{Replicator.Dialogue.Locked.Action.Fetch}\n The most preferred and reliable way. This will dispose the local database once, and fetch all from the remote database again, In most case, we can perform this safely. However, it takes some time and should be done in stable network.\n- %{Replicator.Dialogue.Locked.Action.Unlock}\n This method can only be used if we are already reliably synchronised by other replication methods. This does not simply mean that we have the same files. If you are not sure, you should avoid it.\n- %{Replicator.Dialogue.Locked.Action.Dismiss}\n This will cancel the operation. And we will asked again on next request.\n", + }, + "Replicator.Dialogue.Locked.Message.Fetch": { + def: "Fetch all has been scheduled. Plug-in will be restarted to perform it.", + fr: "Tout récupérer a été planifié. Le plug-in sera redémarré pour l'exécuter.", + ja: "全フェッチがスケジュールされました。プラグインは実行のために再起動されます。", + ko: "모든 것 가져오기가 예약되었습니다. 이를 수행하기 위해 플러그인이 재시작됩니다.", + ru: "Загрузка всего запланирована. Плагин будет перезапущен.", + zh: "Fetch all has been scheduled. Plug-in will be restarted to perform it.", + }, + "Replicator.Dialogue.Locked.Message.Unlocked": { + def: "The remote database has been unlocked. Please retry the operation.", + fr: "La base distante a été déverrouillée. Veuillez réessayer l'opération.", + ja: "リモートデータベースのロックが解除されました。操作を再試行してください。", + ko: "원격 데이터베이스 잠금이 해제되었습니다. 작업을 다시 시도해 주세요.", + ru: "Удалённая база данных разблокирована. Повторите операцию.", + zh: "The remote database has been unlocked. Please retry the operation.", + }, + "Replicator.Dialogue.Locked.Title": { + def: "Locked", + fr: "Verrouillée", + ja: "ロック中", + ko: "잠김", + ru: "Заблокировано", + zh: "Locked", + }, + "Replicator.Message.Cleaned": { + def: "Database cleaning up is in process. replication has been cancelled", + fr: "Nettoyage de la base en cours. La réplication a été annulée", + ja: "データベースのクリーナップ中です。レプリケーション(複製)はキャンセルされました。", + ko: "데이터베이스 정리가 진행 중입니다. 복제가 취소되었습니다", + ru: "Очистка базы данных в процессе. Репликация отменена", + zh: "Database cleaning up is in process. replication has been cancelled", + }, + "Replicator.Message.InitialiseFatalError": { + def: "No replicator is available, this is the fatal error.", + fr: "Aucun réplicateur disponible, il s'agit d'une erreur fatale.", + ja: "レプリケーターが利用できません。これは致命的なエラーです。", + ko: "사용 가능한 복제기가 없습니다. 치명적인 오류입니다.", + ru: "Репликатор недоступен, это фатальная ошибка.", + zh: "No replicator is available, this is the fatal error.", + }, + "Replicator.Message.Pending": { + def: "Some file events are pending. Replication has been cancelled.", + fr: "Des événements de fichier sont en attente. La réplication a été annulée.", + ja: "ファイルイベントが保留中です。レプリケーション(複製)はキャンセルされました。", + ko: "일부 파일 이벤트가 대기 중입니다. 복제가 취소되었습니다.", + ru: "Некоторые события файлов ожидают. Репликация отменена.", + zh: "Some file events are pending. Replication has been cancelled.", + }, + "Replicator.Message.SomeModuleFailed": { + def: "Replication has been cancelled by some module failure", + fr: "La réplication a été annulée suite à l'échec d'un module", + ja: "一部のモジュールの失敗によりレプリケーション(複製)がキャンセルされました。", + ko: "일부 모듈 실패로 복제가 취소되었습니다", + ru: "Репликация отменена из-за сбоя модуля", + zh: "Replication has been cancelled by some module failure", + }, + "Replicator.Message.VersionUpFlash": { + def: "An update has been detected. Please open the Settings dialogue and check the Change Log. Replication has been cancelled.", + fr: "Une mise à jour a été détectée. Veuillez ouvrir la boîte de dialogue des paramètres et consulter le journal des modifications. La réplication a été annulée.", + ja: "更新が検出されました。設定ダイアログを開いて変更ログを確認してください。レプリケーション(複製)はキャンセルされました。", + ko: "설정을 열고 메시지를 확인해 주세요. 복제가 취소되었습니다.", + ru: "Обновление обнаружено. Откройте настройки и проверьте историю изменений.", + zh: "An update has been detected. Please open the Settings dialogue and check the Change Log. Replication has been cancelled.", + }, + "Requires restart of Obsidian": { + def: "Requires restart of Obsidian", + es: "Requiere reiniciar Obsidian", + fr: "Nécessite un redémarrage d'Obsidian", + ja: "Obsidianの再起動が必要です", + ko: "Obsidian 재시작 필요", + ru: "Требуется перезапуск Obsidian", + zh: "需要重启 Obsidian", + }, + "Requires restart of Obsidian.": { + def: "Requires restart of Obsidian.", + es: "Requiere reiniciar Obsidian", + fr: "Nécessite un redémarrage d'Obsidian.", + ja: "Obsidianの再起動が必要です。", + ko: "Obsidian 재시작이 필요합니다.", + ru: "Требуется перезапуск Obsidian.", + zh: "需要重启 Obsidian ", + }, + "Rerun Onboarding Wizard": { + def: "Rerun Onboarding Wizard", + fr: "Relancer l'assistant d'intégration", + ja: "オンボーディングウィザードを再実行", + ko: "온보딩 마법사 다시 실행", + ru: "Перезапустить мастер настройки", + zh: "重新运行引导向导", + }, + "Rerun the onboarding wizard to set up Self-hosted LiveSync again.": { + def: "Rerun the onboarding wizard to set up Self-hosted LiveSync again.", + fr: "Relancer l'assistant d'intégration pour reconfigurer Self-hosted LiveSync.", + ja: "オンボーディングウィザードを再実行して、Self-hosted LiveSync をもう一度設定します。", + ko: "온보딩 마법사를 다시 실행하여 Self-hosted LiveSync를 다시 설정합니다.", + ru: "Перезапустить мастер настройки для повторной настройки Self-hosted LiveSync.", + zh: "重新运行引导向导以再次设置 Self-hosted LiveSync。", + }, + "Rerun Wizard": { + def: "Rerun Wizard", + fr: "Relancer l'assistant", + ja: "ウィザードを再実行", + ko: "마법사 다시 실행", + ru: "Перезапустить мастер", + zh: "重新运行向导", + }, + "Reset notification threshold and check the remote database usage": { + def: "Reset notification threshold and check the remote database usage", + fr: "Réinitialiser le seuil de notification et vérifier l'utilisation de la base distante", + ja: "通知しきい値をリセットしてリモートデータベース使用量を確認", + ko: "알림 임계값을 초기화하고 원격 데이터베이스 사용량 확인", + ru: "Сбросить порог уведомления и проверить использование удалённой базы данных", + zh: "重置通知阈值并检查远程数据库使用情况", + }, + "Reset the remote storage size threshold and check the remote storage size again.": { + def: "Reset the remote storage size threshold and check the remote storage size again.", + fr: "Réinitialiser le seuil de taille du stockage distant et vérifier à nouveau la taille du stockage distant.", + ja: "リモートストレージ容量のしきい値をリセットし、リモートストレージ容量を再確認します。", + ko: "원격 저장소 크기 임계값을 초기화하고 원격 저장소 크기를 다시 확인합니다.", + ru: "Сбросить порог размера удалённого хранилища и проверить размер хранилища снова.", + zh: "重置远程存储大小阈值并再次检查远程存储大小。", + }, + "Run Doctor": { + def: "Run Doctor", + fr: "Lancer le Docteur", + ja: "診断を実行", + ko: "진단 실행", + ru: "Запустить диагностику", + zh: "立即诊断", +======= + "def": "Number of changes to sync at a time. Defaults to 50. Minimum is 2.", + "es": "Número de cambios a sincronizar simultáneamente. Default 50, mínimo 2", + "ja": "一度に同期する変更の数。デフォルトは50、最小は2。", + "ko": "한 번에 동기화할 변경 사항의 수입니다. 기본값은 50입니다. 최소값은 2입니다.", + "ru": "Количество изменений для синхронизации за раз. По умолчанию 50. Минимум 2.", + "zh": "一次同步的更改数量。默认为 50。最小为 2。", + "zw-th": "Number of changes to sync at a time. Defaults to 50. Minimum is 2." + }, + "obsidianLiveSyncSettingTab.btnApply": { + "def": "Apply", + "es": "Aplicar", + "ja": "適用", + "ko": "적용", + "ru": "Применить", + "zh": "应用", + "zw-th": "Apply" + }, + "obsidianLiveSyncSettingTab.btnCheck": { + "def": "Check", + "es": "Verificar", + "ja": "確認", + "ko": "확인", + "ru": "Проверить", + "zh": "检查", + "zw-th": "Check" + }, + "obsidianLiveSyncSettingTab.btnCopy": { + "def": "Copy", + "es": "Copiar", + "ja": "コピー", + "ko": "복사", + "ru": "Копировать", + "zh": "复制", + "zw-th": "Copy" + }, + "obsidianLiveSyncSettingTab.btnDisable": { + "def": "Disable", + "es": "Desactivar", + "ja": "無効化", + "ko": "비활성화", + "ru": "Отключить", + "zh": "禁用", + "zw-th": "Disable" + }, + "obsidianLiveSyncSettingTab.btnDiscard": { + "def": "Discard", + "es": "Descartar", + "ja": "破棄", + "ko": "삭제", + "ru": "Отменить", + "zh": "丢弃", + "zw-th": "Discard" + }, + "obsidianLiveSyncSettingTab.btnEnable": { + "def": "Enable", + "es": "Activar", + "ja": "有効化", + "ko": "활성화", + "ru": "Включить", + "zh": "启用", + "zw-th": "Enable" }, "obsidianLiveSyncSettingTab.btnFix": { - def: "Fix", - es: "Corregir", - fr: "Corriger", - ja: "修正", - ko: "수정", - ru: "Исправить", - zh: "修复", + "def": "Fix", + "es": "Corregir", + "ja": "修正", + "ko": "수정", + "ru": "Исправить", + "zh": "修复", + "zw-th": "Fix" }, "obsidianLiveSyncSettingTab.btnGotItAndUpdated": { - def: "I got it and updated.", - es: "Lo entendí y actualicé.", - fr: "J'ai compris et mis à jour.", - ja: "理解しました、更新しました。", - ko: "알겠습니다. 업데이트했습니다.", - ru: "Понял и обновил.", - zh: "我明白了并且已更新", + "def": "I got it and updated.", + "es": "Lo entendí y actualicé.", + "ja": "理解しました、更新しました。", + "ko": "알겠습니다. 업데이트했습니다.", + "ru": "Понял и обновил.", + "zh": "我明白了并且已更新", + "zw-th": "I got it and updated." }, "obsidianLiveSyncSettingTab.btnNext": { - def: "Next", - es: "Siguiente", - fr: "Suivant", - ja: "次へ", - ko: "다음", - ru: "Далее", - zh: "下一步", + "def": "Next", + "es": "Siguiente", + "ja": "次へ", + "ko": "다음", + "ru": "Далее", + "zh": "下一步", + "zw-th": "Next" }, "obsidianLiveSyncSettingTab.btnStart": { - def: "Start", - es: "Iniciar", - fr: "Démarrer", - ja: "開始", - ko: "시작", - ru: "Старт", - zh: "开始", + "def": "Start", + "es": "Iniciar", + "ja": "開始", + "ko": "시작", + "ru": "Старт", + "zh": "开始", + "zw-th": "Start" }, "obsidianLiveSyncSettingTab.btnTest": { - def: "Test", - es: "Probar", - fr: "Tester", - ja: "テスト", - ko: "테스트", - ru: "Тест", - zh: "测试", + "def": "Test", + "es": "Probar", + "ja": "テスト", + "ko": "테스트", + "ru": "Тест", + "zh": "测试", + "zw-th": "Test" }, "obsidianLiveSyncSettingTab.btnUse": { - def: "Use", - es: "Usar", - fr: "Utiliser", - ja: "使用", - ko: "사용", - ru: "Использовать", - zh: "使用", + "def": "Use", + "es": "Usar", + "ja": "使用", + "ko": "사용", + "ru": "Использовать", + "zh": "使用", + "zw-th": "Use" }, "obsidianLiveSyncSettingTab.buttonFetch": { - def: "Fetch", - es: "Obtener", - fr: "Récupérer", - ja: "フェッチ", - ko: "가져오기", - ru: "Загрузить", - zh: "获取", + "def": "Fetch", + "es": "Obtener", + "ja": "フェッチ", + "ko": "가져오기", + "ru": "Загрузить", + "zh": "获取", + "zw-th": "Fetch" }, "obsidianLiveSyncSettingTab.buttonNext": { - def: "Next", - es: "Siguiente", - fr: "Suivant", - ja: "次へ", - ko: "다음", - ru: "Далее", - zh: "下一步", + "def": "Next", + "es": "Siguiente", + "ja": "次へ", + "ko": "다음", + "ru": "Далее", + "zh": "下一步", + "zw-th": "Next" }, "obsidianLiveSyncSettingTab.defaultLanguage": { - def: "Default", - es: "Predeterminado", - fr: "Par défaut", - ja: "デフォルト", - ko: "기본값", - ru: "По умолчанию", - zh: "默认", + "def": "Default", + "es": "Predeterminado", + "ja": "デフォルト", + "ko": "기본값", + "ru": "По умолчанию", + "zh": "默认", + "zw-th": "Default" }, "obsidianLiveSyncSettingTab.descConnectSetupURI": { - def: "This is the recommended method to set up Self-hosted LiveSync with a Setup URI.", - es: "Este es el método recomendado para configurar Self-hosted LiveSync con una URI de configuración.", - fr: "Méthode recommandée pour configurer Self-hosted LiveSync avec une URI de configuration.", - ja: "セットアップURIを使用してSelf-hosted LiveSyncをセットアップする推奨方法です。", - ko: "이것은 Setup URI로 Self-hosted LiveSync를 설정하는 권장 방법입니다.", - ru: "Это рекомендуемый способ настройки Self-hosted LiveSync с помощью Setup URI.", - zh: "这是使用设置 URI 设置 Self-hosted LiveSync 的推荐方法", + "def": "This is the recommended method to set up Self-hosted LiveSync with a Setup URI.", + "es": "Este es el método recomendado para configurar Self-hosted LiveSync con una URI de configuración.", + "ja": "セットアップURIを使用してSelf-hosted LiveSyncをセットアップする推奨方法です。", + "ko": "이것은 Setup URI로 Self-hosted LiveSync를 설정하는 권장 방법입니다.", + "ru": "Это рекомендуемый способ настройки Self-hosted LiveSync с помощью Setup URI.", + "zh": "这是使用设置 URI 设置 Self-hosted LiveSync 的推荐方法", + "zw-th": "This is the recommended method to set up Self-hosted LiveSync with a Setup URI." }, "obsidianLiveSyncSettingTab.descCopySetupURI": { - def: "Perfect for setting up a new device!", - es: "¡Perfecto para configurar un nuevo dispositivo!", - fr: "Parfait pour configurer un nouvel appareil !", - ja: "新しいデバイスのセットアップにおすすめ!", - ko: "새 기기 설정에 완벽합니다!", - ru: "Идеально подходит для настройки нового устройства!", - zh: "非常适合设置新设备!", + "def": "Perfect for setting up a new device!", + "es": "¡Perfecto para configurar un nuevo dispositivo!", + "ja": "新しいデバイスのセットアップにおすすめ!", + "ko": "새 기기 설정에 완벽합니다!", + "ru": "Идеально подходит для настройки нового устройства!", + "zh": "非常适合设置新设备!", + "zw-th": "Perfect for setting up a new device!" }, "obsidianLiveSyncSettingTab.descEnableLiveSync": { - def: "Only enable this after configuring either of the above two options or completing all configuration manually.", - es: "Solo habilita esto después de configurar cualquiera de las dos opciones anteriores o completar toda la configuración manualmente.", - fr: "N'activez ceci qu'après avoir configuré l'une des deux options ci-dessus ou terminé toute la configuration manuellement.", - ja: "上記の2つのオプションのいずれかを設定するか、すべての設定を手動で完了した後にのみ有効にしてください。", - ko: "위의 두 옵션 중 하나를 구성하거나 모든 구성을 수동으로 완료한 후에만 활성화하세요.", - ru: "Включайте это только после настройки одного из двух вариантов выше или после полного ручного завершения всей конфигурации.", - zh: "仅在配置了上述两个选项之一或手动完成所有配置后启用此选项", + "def": "Only enable this after configuring either of the above two options or completing all configuration manually.", + "es": "Solo habilita esto después de configurar cualquiera de las dos opciones anteriores o completar toda la configuración manualmente.", + "ja": "上記の2つのオプションのいずれかを設定するか、すべての設定を手動で完了した後にのみ有効にしてください。", + "ko": "위의 두 옵션 중 하나를 구성하거나 모든 구성을 수동으로 완료한 후에만 활성화하세요.", + "ru": "Включайте это только после настройки одного из двух вариантов выше или после полного ручного завершения всей конфигурации.", + "zh": "仅在配置了上述两个选项之一或手动完成所有配置后启用此选项", + "zw-th": "Only enable this after configuring either of the above two options or completing all configuration manually." }, "obsidianLiveSyncSettingTab.descFetchConfigFromRemote": { - def: "Fetch necessary settings from already configured remote server.", - es: "Obtener las configuraciones necesarias del servidor remoto ya configurado.", - fr: "Récupérer les paramètres nécessaires depuis un serveur distant déjà configuré.", - ja: "既に設定済みのリモートサーバーから必要な設定を取得します。", - ko: "이미 구성된 원격 서버에서 필요한 설정을 가져옵니다.", - ru: "Получить необходимые настройки с уже настроенного удалённого сервера.", - zh: "从已配置的远程服务器获取必要的设置", + "def": "Fetch necessary settings from already configured remote server.", + "es": "Obtener las configuraciones necesarias del servidor remoto ya configurado.", + "ja": "既に設定済みのリモートサーバーから必要な設定を取得します。", + "ko": "이미 구성된 원격 서버에서 필요한 설정을 가져옵니다.", + "ru": "Получить необходимые настройки с уже настроенного удалённого сервера.", + "zh": "从已配置的远程服务器获取必要的设置", + "zw-th": "Fetch necessary settings from already configured remote server." }, "obsidianLiveSyncSettingTab.descManualSetup": { - def: "Not recommended, but useful if you don't have a Setup URI", - es: "No recomendado, pero útil si no tienes una URI de configuración", - fr: "Non recommandé, mais utile si vous n'avez pas d'URI de configuration", - ja: "推奨しませんが、セットアップURIがない場合に便利です", - ko: "권장하지 않지만 Setup URI가 없는 경우에 유용합니다", - ru: "Не рекомендуется, но полезно, если у вас нет Setup URI.", - zh: "不推荐,但如果您没有设置 URI 则很有用", + "def": "Not recommended, but useful if you don't have a Setup URI", + "es": "No recomendado, pero útil si no tienes una URI de configuración", + "ja": "推奨しませんが、セットアップURIがない場合に便利です", + "ko": "권장하지 않지만 Setup URI가 없는 경우에 유용합니다", + "ru": "Не рекомендуется, но полезно, если у вас нет Setup URI.", + "zh": "不推荐,但如果您没有设置 URI 则很有用", + "zw-th": "Not recommended, but useful if you don't have a Setup URI" }, "obsidianLiveSyncSettingTab.descTestDatabaseConnection": { - def: "Open database connection. If the remote database is not found and you have permission to create a database, the database will be created.", - es: "Abrir conexión a la base de datos. Si no se encuentra la base de datos remota y tienes permiso para crear una base de datos, se creará la base de datos.", - fr: "Ouvrir la connexion à la base de données. Si la base distante est introuvable et que vous avez l'autorisation de créer une base, elle sera créée.", - ja: "データベース接続を開きます。リモートデータベースが見つからず、データベースを作成する権限がある場合は、データベースが作成されます。", - ko: "데이터베이스 연결을 엽니다. 원격 데이터베이스를 찾을 수 없고 데이터베이스 생성 권한이 있는 경우, 데이터베이스가 생성됩니다.", - ru: "Открыть подключение к базе данных. Если удалённая база данных не найдена и у вас есть право на её создание, база будет создана.", - zh: "打开数据库连接。如果未找到远程数据库并且您有创建数据库的权限,则将创建数据库", + "def": "Open database connection. If the remote database is not found and you have permission to create a database, the database will be created.", + "es": "Abrir conexión a la base de datos. Si no se encuentra la base de datos remota y tienes permiso para crear una base de datos, se creará la base de datos.", + "ja": "データベース接続を開きます。リモートデータベースが見つからず、データベースを作成する権限がある場合は、データベースが作成されます。", + "ko": "데이터베이스 연결을 엽니다. 원격 데이터베이스를 찾을 수 없고 데이터베이스 생성 권한이 있는 경우, 데이터베이스가 생성됩니다.", + "ru": "Открыть подключение к базе данных. Если удалённая база данных не найдена и у вас есть право на её создание, база будет создана.", + "zh": "打开数据库连接。如果未找到远程数据库并且您有创建数据库的权限,则将创建数据库", + "zw-th": "Open database connection. If the remote database is not found and you have permission to create a database, the database will be created." }, "obsidianLiveSyncSettingTab.descValidateDatabaseConfig": { - def: "Checks and fixes any potential issues with the database config.", - es: "Verifica y soluciona cualquier problema potencial con la configuración de la base de datos.", - fr: "Vérifie et corrige les problèmes potentiels de la configuration de la base.", - ja: "データベース設定の潜在的な問題を確認し、修正します。", - ko: "데이터베이스 구성의 잠재적 문제를 확인하고 수정합니다.", - ru: "Проверяет и исправляет любые потенциальные проблемы в конфигурации базы данных.", - zh: "检查并修复数据库配置中的任何潜在问题", + "def": "Checks and fixes any potential issues with the database config.", + "es": "Verifica y soluciona cualquier problema potencial con la configuración de la base de datos.", + "ja": "データベース設定の潜在的な問題を確認し、修正します。", + "ko": "데이터베이스 구성의 잠재적 문제를 확인하고 수정합니다.", + "ru": "Проверяет и исправляет любые потенциальные проблемы в конфигурации базы данных.", + "zh": "检查并修复数据库配置中的任何潜在问题", + "zw-th": "Checks and fixes any potential issues with the database config." }, "obsidianLiveSyncSettingTab.errAccessForbidden": { - def: "❗ Access forbidden.", - es: "Acceso prohibido.", - fr: "❗ Accès interdit.", - ja: "❗ アクセスが禁止されています。", - ko: "❗ 액세스가 금지되었습니다.", - ru: "❗ Доступ запрещён.", - zh: "❗ 访问被禁止", + "def": "❗ Access forbidden.", + "es": "Acceso prohibido.", + "ja": "❗ アクセスが禁止されています。", + "ko": "❗ 액세스가 금지되었습니다.", + "ru": "❗ Доступ запрещён.", + "zh": "❗ 访问被禁止", + "zw-th": "❗ Access forbidden." }, "obsidianLiveSyncSettingTab.errCannotContinueTest": { - def: "We could not continue the test.", - es: "No se pudo continuar con la prueba.", - fr: "Impossible de poursuivre le test.", - ja: "テストを続行できませんでした。", - ko: "테스트를 계속할 수 없습니다.", - ru: "Мы не можем продолжить тест.", - zh: "我们无法继续测试。", + "def": "We could not continue the test.", + "es": "No se pudo continuar con la prueba.", + "ja": "テストを続行できませんでした。", + "ko": "테스트를 계속할 수 없습니다.", + "ru": "Мы не можем продолжить тест.", + "zh": "我们无法继续测试。", + "zw-th": "We could not continue the test." }, "obsidianLiveSyncSettingTab.errCorsCredentials": { - def: "❗ cors.credentials is wrong", - es: "❗ cors.credentials es incorrecto", - fr: "❗ cors.credentials est incorrect", - ja: "❗ cors.credentialsが不正です", - ko: "❗ cors.credentials가 잘못되었습니다", - ru: "❗ cors.credentials неверно", - zh: "❗ cors.credentials 设置错误", + "def": "❗ cors.credentials is wrong", + "es": "❗ cors.credentials es incorrecto", + "ja": "❗ cors.credentialsが不正です", + "ko": "❗ cors.credentials가 잘못되었습니다", + "ru": "❗ cors.credentials неверно", + "zh": "❗ cors.credentials 设置错误", + "zw-th": "❗ cors.credentials is wrong" }, "obsidianLiveSyncSettingTab.errCorsNotAllowingCredentials": { - def: "❗ CORS is not allowing credentials", - es: "CORS no permite credenciales", - fr: "❗ CORS n'autorise pas les identifiants", - ja: "❗ CORSが認証情報を許可していません", - ko: "❗ CORS에서 자격 증명을 허용하지 않습니다", - ru: "❗ CORS не разрешает учётные данные", - zh: "❗ CORS 不允许凭据", + "def": "❗ CORS is not allowing credentials", + "es": "CORS no permite credenciales", + "ja": "❗ CORSが認証情報を許可していません", + "ko": "❗ CORS에서 자격 증명을 허용하지 않습니다", + "ru": "❗ CORS не разрешает учётные данные", + "zh": "❗ CORS 不允许凭据", + "zw-th": "❗ CORS is not allowing credentials" }, "obsidianLiveSyncSettingTab.errCorsOrigins": { - def: "❗ cors.origins is wrong", - es: "❗ cors.origins es incorrecto", - fr: "❗ cors.origins est incorrect", - ja: "❗ cors.originsが不正です", - ko: "❗ cors.origins가 잘못되었습니다", - ru: "❗ cors.origins неверно", - zh: "❗ cors.origins 设置错误", - }, - "obsidianLiveSyncSettingTab.errEnableCors": { - def: "❗ httpd.enable_cors is wrong", - es: "❗ httpd.enable_cors es incorrecto", - fr: "❗ httpd.enable_cors est incorrect", - ja: "❗ httpd.enable_corsが不正です", - ko: "❗ httpd.enable_cors가 잘못되었습니다", - ru: "❗ httpd.enable_cors неверно", - zh: "❗ httpd.enable_cors 设置错误", + "def": "❗ cors.origins is wrong", + "es": "❗ cors.origins es incorrecto", + "ja": "❗ cors.originsが不正です", + "ko": "❗ cors.origins가 잘못되었습니다", + "ru": "❗ cors.origins неверно", + "zh": "❗ cors.origins 设置错误", + "zw-th": "❗ cors.origins is wrong" }, - "obsidianLiveSyncSettingTab.errEnableCorsChttpd": { - def: "❗ chttpd.enable_cors is wrong", - fr: "❗ chttpd.enable_cors est incorrect", - ja: "❗ chttpd.enable_corsが不正です", - ru: "❗ chttpd.enable_cors неверно", - zh: "❗ chttpd.enable_cors 设置错误", + "obsidianLiveSyncSettingTab.errEnableCors": { + "def": "❗ httpd.enable_cors is wrong", + "es": "❗ httpd.enable_cors es incorrecto", + "ja": "❗ httpd.enable_corsが不正です", + "ko": "❗ httpd.enable_cors가 잘못되었습니다", + "ru": "❗ httpd.enable_cors неверно", + "zh": "❗ httpd.enable_cors 设置错误", + "zw-th": "❗ httpd.enable_cors is wrong" + }, + "obsidianLiveSyncSettingTab.errEnableCorsChttpd": { + "def": "❗ chttpd.enable_cors is wrong", + "es": "❗ chttpd.enable_cors is wrong", + "ja": "❗ chttpd.enable_corsが不正です", + "ko": "❗ chttpd.enable_cors is wrong", + "ru": "❗ chttpd.enable_cors неверно", + "zh": "❗ chttpd.enable_cors 设置错误", + "zw-th": "❗ chttpd.enable_cors is wrong" }, "obsidianLiveSyncSettingTab.errMaxDocumentSize": { - def: "❗ couchdb.max_document_size is low)", - es: "❗ couchdb.max_document_size es bajo)", - fr: "❗ couchdb.max_document_size est trop bas)", - ja: "❗ couchdb.max_document_sizeが低すぎます", - ko: "❗ couchdb.max_document_size가 낮습니다)", - ru: "❗ couchdb.max_document_size низкое", - zh: "❗ couchdb.max_document_size 设置过低)", + "def": "❗ couchdb.max_document_size is low)", + "es": "❗ couchdb.max_document_size es bajo)", + "ja": "❗ couchdb.max_document_sizeが低すぎます", + "ko": "❗ couchdb.max_document_size가 낮습니다)", + "ru": "❗ couchdb.max_document_size низкое", + "zh": "❗ couchdb.max_document_size 设置过低)", + "zw-th": "❗ couchdb.max_document_size is low)" }, "obsidianLiveSyncSettingTab.errMaxRequestSize": { - def: "❗ chttpd.max_http_request_size is low)", - es: "❗ chttpd.max_http_request_size es bajo)", - fr: "❗ chttpd.max_http_request_size est trop bas)", - ja: "❗ chttpd.max_http_request_sizeが低すぎます", - ko: "❗ chttpd.max_http_request_size가 낮습니다)", - ru: "❗ chttpd.max_http_request_size низкое", - zh: "❗ chttpd.max_http_request_size 设置过低)", + "def": "❗ chttpd.max_http_request_size is low)", + "es": "❗ chttpd.max_http_request_size es bajo)", + "ja": "❗ chttpd.max_http_request_sizeが低すぎます", + "ko": "❗ chttpd.max_http_request_size가 낮습니다)", + "ru": "❗ chttpd.max_http_request_size низкое", + "zh": "❗ chttpd.max_http_request_size 设置过低)", + "zw-th": "❗ chttpd.max_http_request_size is low)" }, "obsidianLiveSyncSettingTab.errMissingWwwAuth": { - def: "❗ httpd.WWW-Authenticate is missing", - es: "❗ httpd.WWW-Authenticate falta", - fr: "❗ httpd.WWW-Authenticate est manquant", - ja: "❗ httpd.WWW-Authenticateが不足しています", - ko: "❗ httpd.WWW-Authenticate가 누락되었습니다", - ru: "❗ httpd.WWW-Authenticate отсутствует", - zh: "❗ 缺少 httpd.WWW-Authenticate 设置", + "def": "❗ httpd.WWW-Authenticate is missing", + "es": "❗ httpd.WWW-Authenticate falta", + "ja": "❗ httpd.WWW-Authenticateが不足しています", + "ko": "❗ httpd.WWW-Authenticate가 누락되었습니다", + "ru": "❗ httpd.WWW-Authenticate отсутствует", + "zh": "❗ 缺少 httpd.WWW-Authenticate 设置", + "zw-th": "❗ httpd.WWW-Authenticate is missing" }, "obsidianLiveSyncSettingTab.errRequireValidUser": { - def: "❗ chttpd.require_valid_user is wrong.", - es: "❗ chttpd.require_valid_user es incorrecto.", - fr: "❗ chttpd.require_valid_user est incorrect.", - ja: "❗ chttpd.require_valid_userが不正です。", - ko: "❗ chttpd.require_valid_user가 잘못되었습니다.", - ru: "❗ chttpd.require_valid_user неверно.", - zh: "❗ chttpd.require_valid_user 设置错误", + "def": "❗ chttpd.require_valid_user is wrong.", + "es": "❗ chttpd.require_valid_user es incorrecto.", + "ja": "❗ chttpd.require_valid_userが不正です。", + "ko": "❗ chttpd.require_valid_user가 잘못되었습니다.", + "ru": "❗ chttpd.require_valid_user неверно.", + "zh": "❗ chttpd.require_valid_user 设置错误", + "zw-th": "❗ chttpd.require_valid_user is wrong." }, "obsidianLiveSyncSettingTab.errRequireValidUserAuth": { - def: "❗ chttpd_auth.require_valid_user is wrong.", - es: "❗ chttpd_auth.require_valid_user es incorrecto.", - fr: "❗ chttpd_auth.require_valid_user est incorrect.", - ja: "❗ chttpd_auth.require_valid_userが不正です。", - ko: "❗ chttpd_auth.require_valid_user가 잘못되었습니다.", - ru: "❗ chttpd_auth.require_valid_user неверно.", - zh: "❗ chttpd_auth.require_valid_user 设置错误", + "def": "❗ chttpd_auth.require_valid_user is wrong.", + "es": "❗ chttpd_auth.require_valid_user es incorrecto.", + "ja": "❗ chttpd_auth.require_valid_userが不正です。", + "ko": "❗ chttpd_auth.require_valid_user가 잘못되었습니다.", + "ru": "❗ chttpd_auth.require_valid_user неверно.", + "zh": "❗ chttpd_auth.require_valid_user 设置错误", + "zw-th": "❗ chttpd_auth.require_valid_user is wrong." }, "obsidianLiveSyncSettingTab.labelDisabled": { - def: "⏹️ : Disabled", - es: "⏹️ : Desactivado", - fr: "⏹️ : Désactivé", - ja: "⏹️ : 無効", - ko: "⏹️ : 비활성화됨", - ru: "⏹️ : Отключено", - zh: "⏹️ : 已禁用", + "def": "⏹️ : Disabled", + "es": "⏹️ : Desactivado", + "ja": "⏹️ : 無効", + "ko": "⏹️ : 비활성화됨", + "ru": "⏹️ : Отключено", + "zh": "⏹️ : 已禁用", + "zw-th": "⏹️ : Disabled" }, "obsidianLiveSyncSettingTab.labelEnabled": { - def: "🔁 : Enabled", - es: "🔁 : Activado", - fr: "🔁 : Activé", - ja: "🔁 : 有効", - ko: "🔁 : 활성화됨", - ru: "🔁 : Включено", - zh: "🔁 : 已启用", + "def": "🔁 : Enabled", + "es": "🔁 : Activado", + "ja": "🔁 : 有効", + "ko": "🔁 : 활성화됨", + "ru": "🔁 : Включено", + "zh": "🔁 : 已启用", + "zw-th": "🔁 : Enabled" }, "obsidianLiveSyncSettingTab.levelAdvanced": { - def: " (Advanced)", - es: " (avanzado)", - fr: " (Avancé)", - ja: " (上級)", - ko: " (고급)", - ru: " (Расширенные)", - zh: "(进阶)", + "def": " (Advanced)", + "es": " (avanzado)", + "ja": " (上級)", + "ko": " (고급)", + "ru": " (Расширенные)", + "zh": "(进阶)", + "zw-th": " (Advanced)" }, "obsidianLiveSyncSettingTab.levelEdgeCase": { - def: " (Edge Case)", - es: " (excepción)", - fr: " (Cas particulier)", - ja: " (エッジケース)", - ko: " (특수 사례)", - ru: " (Граничные случаи)", - zh: "(边缘情况)", + "def": " (Edge Case)", + "es": " (excepción)", + "ja": " (エッジケース)", + "ko": " (특수 사례)", + "ru": " (Граничные случаи)", + "zh": "(边缘情况)", + "zw-th": " (Edge Case)" }, "obsidianLiveSyncSettingTab.levelPowerUser": { - def: " (Power User)", - es: " (experto)", - fr: " (Utilisateur avancé)", - ja: " (エキスパート)", - ko: " (파워 유저)", - ru: " (Опытный пользователь)", - zh: "(高级用户)", + "def": " (Power User)", + "es": " (experto)", + "ja": " (エキスパート)", + "ko": " (파워 유저)", + "ru": " (Опытный пользователь)", + "zh": "(高级用户)", + "zw-th": " (Power User)" }, "obsidianLiveSyncSettingTab.linkOpenInBrowser": { - def: "Open in browser", - es: "Abrir en el navegador", - fr: "Ouvrir dans le navigateur", - ja: "ブラウザで開く", - ko: "브라우저에서 열기", - ru: "Открыть в браузере", - zh: "在浏览器中打开", + "def": "Open in browser", + "es": "Abrir en el navegador", + "ja": "ブラウザで開く", + "ko": "브라우저에서 열기", + "ru": "Открыть в браузере", + "zh": "在浏览器中打开", + "zw-th": "Open in browser" }, "obsidianLiveSyncSettingTab.linkPageTop": { - def: "Page Top", - es: "Ir arriba", - fr: "Haut de la page", - ja: "ページトップ", - ko: "페이지 상단", - ru: "В начало страницы", - zh: "页面顶部", + "def": "Page Top", + "es": "Ir arriba", + "ja": "ページトップ", + "ko": "페이지 상단", + "ru": "В начало страницы", + "zh": "页面顶部", + "zw-th": "Page Top" }, "obsidianLiveSyncSettingTab.linkTipsAndTroubleshooting": { - def: "Tips and Troubleshooting", - es: "Consejos y solución de problemas", - fr: "Conseils et dépannage", - ja: "ヒントとトラブルシューティング", - ko: "팁 및 문제 해결", - ru: "Советы и устранение неполадок", - zh: "提示和故障排除", + "def": "Tips and Troubleshooting", + "es": "Consejos y solución de problemas", + "ja": "ヒントとトラブルシューティング", + "ko": "팁 및 문제 해결", + "ru": "Советы и устранение неполадок", + "zh": "提示和故障排除", + "zw-th": "Tips and Troubleshooting" }, "obsidianLiveSyncSettingTab.linkTroubleshooting": { - def: "/docs/troubleshooting.md", - es: "/docs/es/troubleshooting.md", - fr: "/docs/troubleshooting.md", - ja: "/docs/troubleshooting.md", - ko: "/docs/troubleshooting.md", - ru: "/docs/troubleshooting.md", - zh: "/docs/troubleshooting.md", + "def": "/docs/troubleshooting.md", + "es": "/docs/es/troubleshooting.md", + "ja": "/docs/troubleshooting.md", + "ko": "/docs/troubleshooting.md", + "ru": "/docs/troubleshooting.md", + "zh": "/docs/troubleshooting.md", + "zw-th": "/docs/troubleshooting.md" }, "obsidianLiveSyncSettingTab.logCannotUseCloudant": { - def: "This feature cannot be used with IBM Cloudant.", - es: "Esta función no se puede utilizar con IBM Cloudant.", - fr: "Cette fonctionnalité ne peut pas être utilisée avec IBM Cloudant.", - ja: "この機能はIBM Cloudantでは使用できません。", - ko: "이 기능은 IBM Cloudant와 함께 사용할 수 없습니다.", - ru: "Эта функция недоступна для IBM Cloudant.", - zh: "此功能不能与 IBM Cloudant 一起使用 ", + "def": "This feature cannot be used with IBM Cloudant.", + "es": "Esta función no se puede utilizar con IBM Cloudant.", + "ja": "この機能はIBM Cloudantでは使用できません。", + "ko": "이 기능은 IBM Cloudant와 함께 사용할 수 없습니다.", + "ru": "Эта функция недоступна для IBM Cloudant.", + "zh": "此功能不能与 IBM Cloudant 一起使用 ", + "zw-th": "This feature cannot be used with IBM Cloudant." }, "obsidianLiveSyncSettingTab.logCheckingConfigDone": { - def: "Checking configuration done", - es: "Verificación de configuración completada", - fr: "Vérification de la configuration terminée", - ja: "設定の確認が完了しました", - ko: "구성 확인 완료", - ru: "Проверка конфигурации завершена", - zh: "配置检查完成", + "def": "Checking configuration done", + "es": "Verificación de configuración completada", + "ja": "設定の確認が完了しました", + "ko": "구성 확인 완료", + "ru": "Проверка конфигурации завершена", + "zh": "配置检查完成", + "zw-th": "Checking configuration done" }, "obsidianLiveSyncSettingTab.logCheckingConfigFailed": { - def: "Checking configuration failed", - es: "La verificación de configuración falló", - fr: "Échec de la vérification de la configuration", - ja: "設定の確認に失敗しました", - ko: "구성 확인 실패", - ru: "Проверка конфигурации не удалась", - zh: "配置检查失败", + "def": "Checking configuration failed", + "es": "La verificación de configuración falló", + "ja": "設定の確認に失敗しました", + "ko": "구성 확인 실패", + "ru": "Проверка конфигурации не удалась", + "zh": "配置检查失败", + "zw-th": "Checking configuration failed" }, "obsidianLiveSyncSettingTab.logCheckingDbConfig": { - def: "Checking database configuration", - es: "Verificando la configuración de la base de datos", - fr: "Vérification de la configuration de la base", - ja: "データベース設定を確認中", - ko: "데이터베이스 구성 확인 중", - ru: "Проверка конфигурации базы данных", - zh: "正在检查数据库配置", + "def": "Checking database configuration", + "es": "Verificando la configuración de la base de datos", + "ja": "データベース設定を確認中", + "ko": "데이터베이스 구성 확인 중", + "ru": "Проверка конфигурации базы данных", + "zh": "正在检查数据库配置", + "zw-th": "Checking database configuration" }, "obsidianLiveSyncSettingTab.logCheckPassphraseFailed": { - def: "ERROR: Failed to check passphrase with the remote server:\n${db}.", - es: "ERROR: Error al comprobar la frase de contraseña con el servidor remoto: \n${db}.", - fr: "ERREUR : Échec de la vérification de la phrase secrète avec le serveur distant :\n${db}.", - ja: "エラー: リモートサーバーとのパスフレーズ確認に失敗しました:\n${db}。", - ko: "오류: 원격 서버와 패스프레이즈 확인에 실패했습니다: \n${db}.", - ru: "ОШИБКА: Не удалось проверить пароль с удалённым сервером: db.", - zh: "错误:无法使用远程服务器检查密码:\n${db} ", + "def": "ERROR: Failed to check passphrase with the remote server:\n${db}.", + "es": "ERROR: Error al comprobar la frase de contraseña con el servidor remoto: \n${db}.", + "ja": "エラー: リモートサーバーとのパスフレーズ確認に失敗しました:\n${db}。", + "ko": "오류: 원격 서버와 패스프레이즈 확인에 실패했습니다: \n${db}.", + "ru": "ОШИБКА: Не удалось проверить пароль с удалённым сервером: db.", + "zh": "错误:无法使用远程服务器检查密码:\n${db} ", + "zw-th": "ERROR: Failed to check passphrase with the remote server:\n${db}." }, "obsidianLiveSyncSettingTab.logConfiguredDisabled": { - def: "Configured synchronization mode: DISABLED", - es: "Modo de sincronización configurado: DESACTIVADO", - fr: "Mode de synchronisation configuré : DÉSACTIVÉ", - ja: "設定された同期モード: 無効", - ko: "구성된 동기화 모드: 비활성화됨", - ru: "Настроенный режим синхронизации: ОТКЛЮЧЕН", - zh: "配置的同步模式:已禁用", + "def": "Configured synchronization mode: DISABLED", + "es": "Modo de sincronización configurado: DESACTIVADO", + "ja": "設定された同期モード: 無効", + "ko": "구성된 동기화 모드: 비활성화됨", + "ru": "Настроенный режим синхронизации: ОТКЛЮЧЕН", + "zh": "配置的同步模式:已禁用", + "zw-th": "Configured synchronization mode: DISABLED" }, "obsidianLiveSyncSettingTab.logConfiguredLiveSync": { - def: "Configured synchronization mode: LiveSync", - es: "Modo de sincronización configurado: Sincronización en Vivo", - fr: "Mode de synchronisation configuré : LiveSync", - ja: "設定された同期モード: LiveSync", - ko: "구성된 동기화 모드: LiveSync", - ru: "Настроенный режим синхронизации: LiveSync", - zh: "配置的同步模式:LiveSync", + "def": "Configured synchronization mode: LiveSync", + "es": "Modo de sincronización configurado: Sincronización en Vivo", + "ja": "設定された同期モード: LiveSync", + "ko": "구성된 동기화 모드: LiveSync", + "ru": "Настроенный режим синхронизации: LiveSync", + "zh": "配置的同步模式:LiveSync", + "zw-th": "Configured synchronization mode: LiveSync" }, "obsidianLiveSyncSettingTab.logConfiguredPeriodic": { - def: "Configured synchronization mode: Periodic", - es: "Modo de sincronización configurado: Periódico", - fr: "Mode de synchronisation configuré : Périodique", - ja: "設定された同期モード: 定期", - ko: "구성된 동기화 모드: 주기적", - ru: "Настроенный режим синхронизации: Периодический", - zh: "配置的同步模式:定期", + "def": "Configured synchronization mode: Periodic", + "es": "Modo de sincronización configurado: Periódico", + "ja": "設定された同期モード: 定期", + "ko": "구성된 동기화 모드: 주기적", + "ru": "Настроенный режим синхронизации: Периодический", + "zh": "配置的同步模式:定期", + "zw-th": "Configured synchronization mode: Periodic" }, "obsidianLiveSyncSettingTab.logCouchDbConfigFail": { - def: "CouchDB Configuration: ${title} failed", - es: "Configuración de CouchDB: ${title} falló", - fr: "Configuration CouchDB : échec de ${title}", - ja: "CouchDB設定: ${title} 失敗", - ko: "CouchDB 구성: ${title} 실패", - ru: "Конфигурация CouchDB: title не удалась", - zh: "CouchDB 配置:${title} 失败", + "def": "CouchDB Configuration: ${title} failed", + "es": "Configuración de CouchDB: ${title} falló", + "ja": "CouchDB設定: ${title} 失敗", + "ko": "CouchDB 구성: ${title} 실패", + "ru": "Конфигурация CouchDB: title не удалась", + "zh": "CouchDB 配置:${title} 失败", + "zw-th": "CouchDB Configuration: ${title} failed" }, "obsidianLiveSyncSettingTab.logCouchDbConfigSet": { - def: "CouchDB Configuration: ${title} -> Set ${key} to ${value}", - es: "Configuración de CouchDB: ${title} -> Establecer ${key} en ${value}", - fr: "Configuration CouchDB : ${title} -> ${key} défini à ${value}", - ja: "CouchDB設定: ${title} -> ${key}を${value}に設定", - ko: "CouchDB 구성: ${title} -> ${key}를 ${value}로 설정", - ru: "Конфигурация CouchDB: title -> Установить key в value", - zh: "CouchDB 配置:${title} -> 设置 ${key} 为 ${value}", + "def": "CouchDB Configuration: ${title} -> Set ${key} to ${value}", + "es": "Configuración de CouchDB: ${title} -> Establecer ${key} en ${value}", + "ja": "CouchDB設定: ${title} -> ${key}を${value}に設定", + "ko": "CouchDB 구성: ${title} -> ${key}를 ${value}로 설정", + "ru": "Конфигурация CouchDB: title -> Установить key в value", + "zh": "CouchDB 配置:${title} -> 设置 ${key} 为 ${value}", + "zw-th": "CouchDB Configuration: ${title} -> Set ${key} to ${value}" }, "obsidianLiveSyncSettingTab.logCouchDbConfigUpdated": { - def: "CouchDB Configuration: ${title} successfully updated", - es: "Configuración de CouchDB: ${title} actualizado correctamente", - fr: "Configuration CouchDB : ${title} mise à jour avec succès", - ja: "CouchDB設定: ${title} 正常に更新されました", - ko: "CouchDB 구성: ${title} 성공적으로 업데이트됨", - ru: "Конфигурация CouchDB: title успешно обновлена", - zh: "CouchDB 配置:${title} 成功更新", + "def": "CouchDB Configuration: ${title} successfully updated", + "es": "Configuración de CouchDB: ${title} actualizado correctamente", + "ja": "CouchDB設定: ${title} 正常に更新されました", + "ko": "CouchDB 구성: ${title} 성공적으로 업데이트됨", + "ru": "Конфигурация CouchDB: title успешно обновлена", + "zh": "CouchDB 配置:${title} 成功更新", + "zw-th": "CouchDB Configuration: ${title} successfully updated" }, "obsidianLiveSyncSettingTab.logDatabaseConnected": { - def: "Database connected", - es: "Base de datos conectada", - fr: "Base de données connectée", - ja: "データベースに接続しました", - ko: "데이터베이스 연결됨", - ru: "База данных подключена", - zh: "数据库已连接", + "def": "Database connected", + "es": "Base de datos conectada", + "ja": "データベースに接続しました", + "ko": "데이터베이스 연결됨", + "ru": "База данных подключена", + "zh": "数据库已连接", + "zw-th": "Database connected" }, "obsidianLiveSyncSettingTab.logEncryptionNoPassphrase": { - def: "You cannot enable encryption without a passphrase", - es: "No puedes habilitar el cifrado sin una frase de contraseña", - fr: "Impossible d'activer le chiffrement sans phrase secrète", - ja: "パスフレーズなしでは暗号化を有効にできません", - ko: "패스프레이즈 없이는 암호화를 활성화할 수 없습니다", - ru: "Вы не можете включить шифрование без парольной фразы", - zh: "没有密码无法启用加密", + "def": "You cannot enable encryption without a passphrase", + "es": "No puedes habilitar el cifrado sin una frase de contraseña", + "ja": "パスフレーズなしでは暗号化を有効にできません", + "ko": "패스프레이즈 없이는 암호화를 활성화할 수 없습니다", + "ru": "Вы не можете включить шифрование без парольной фразы", + "zh": "没有密码无法启用加密", + "zw-th": "You cannot enable encryption without a passphrase" }, "obsidianLiveSyncSettingTab.logEncryptionNoSupport": { - def: "Your device does not support encryption.", - es: "Tu dispositivo no admite el cifrado.", - fr: "Votre appareil ne prend pas en charge le chiffrement.", - ja: "お使いのデバイスは暗号化をサポートしていません。", - ko: "기기가 암호화를 지원하지 않습니다.", - ru: "Ваше устройство не поддерживает шифрование.", - zh: "您的设备不支持加密 ", + "def": "Your device does not support encryption.", + "es": "Tu dispositivo no admite el cifrado.", + "ja": "お使いのデバイスは暗号化をサポートしていません。", + "ko": "기기가 암호화를 지원하지 않습니다.", + "ru": "Ваше устройство не поддерживает шифрование.", + "zh": "您的设备不支持加密 ", + "zw-th": "Your device does not support encryption." }, "obsidianLiveSyncSettingTab.logErrorOccurred": { - def: "An error occurred!!", - es: "¡Ocurrió un error!", - fr: "Une erreur s'est produite !!", - ja: "エラーが発生しました!!", - ko: "오류가 발생했습니다!", - ru: "Произошла ошибка!!", - zh: "发生错误!!", + "def": "An error occurred!!", + "es": "¡Ocurrió un error!", + "ja": "エラーが発生しました!!", + "ko": "오류가 발생했습니다!", + "ru": "Произошла ошибка!!", + "zh": "发生错误!!", + "zw-th": "An error occurred!!" }, "obsidianLiveSyncSettingTab.logEstimatedSize": { - def: "Estimated size: ${size}", - es: "Tamaño estimado: ${size}", - fr: "Taille estimée : ${size}", - ja: "推定サイズ: ${size}", - ko: "예상 크기: ${size}", - ru: "Примерный размер: size", - zh: "估计大小:${size}", + "def": "Estimated size: ${size}", + "es": "Tamaño estimado: ${size}", + "ja": "推定サイズ: ${size}", + "ko": "예상 크기: ${size}", + "ru": "Примерный размер: size", + "zh": "估计大小:${size}", + "zw-th": "Estimated size: ${size}" }, "obsidianLiveSyncSettingTab.logPassphraseInvalid": { - def: "Passphrase is not valid, please fix it.", - es: "La frase de contraseña no es válida, por favor corrígela.", - fr: "La phrase secrète est invalide, veuillez la corriger.", - ja: "パスフレーズが無効です、修正してください。", - ko: "패스프레이즈가 유효하지 않습니다. 수정해 주세요.", - ru: "Парольная фраза недействительна, пожалуйста, исправьте.", - zh: "密码无效,请修正", + "def": "Passphrase is not valid, please fix it.", + "es": "La frase de contraseña no es válida, por favor corrígela.", + "ja": "パスフレーズが無効です、修正してください。", + "ko": "패스프레이즈가 유효하지 않습니다. 수정해 주세요.", + "ru": "Парольная фраза недействительна, пожалуйста, исправьте.", + "zh": "密码无效,请修正", + "zw-th": "Passphrase is not valid, please fix it." }, "obsidianLiveSyncSettingTab.logPassphraseNotCompatible": { - def: "ERROR: Passphrase is not compatible with the remote server! Please check it again!", - es: "ERROR: ¡La frase de contraseña no es compatible con el servidor remoto! ¡Por favor, revísala de nuevo!", - fr: "ERREUR : la phrase secrète n'est pas compatible avec le serveur distant ! Veuillez vérifier à nouveau !", - ja: "エラー: パスフレーズがリモートサーバーと適合しません!再度確認してください!", - ko: "오류: 패스프레이즈가 원격 서버와 호환되지 않습니다! 다시 확인해 주세요!", - ru: "ОШИБКА: Парольная фраза несовместима с удалённым сервером!", - zh: "错误:密码与远程服务器不兼容!请再次检查!", + "def": "ERROR: Passphrase is not compatible with the remote server! Please check it again!", + "es": "ERROR: ¡La frase de contraseña no es compatible con el servidor remoto! ¡Por favor, revísala de nuevo!", + "ja": "エラー: パスフレーズがリモートサーバーと適合しません!再度確認してください!", + "ko": "오류: 패스프레이즈가 원격 서버와 호환되지 않습니다! 다시 확인해 주세요!", + "ru": "ОШИБКА: Парольная фраза несовместима с удалённым сервером!", + "zh": "错误:密码与远程服务器不兼容!请再次检查!", + "zw-th": "ERROR: Passphrase is not compatible with the remote server! Please check it again!" }, "obsidianLiveSyncSettingTab.logRebuildNote": { - def: "Syncing has been disabled, fetch and re-enabled if desired.", - es: "La sincronización ha sido desactivada, obtén y vuelve a activar si lo deseas.", - fr: "La synchronisation a été désactivée, récupérez et réactivez si souhaité.", - ja: "同期が無効になりました。必要に応じてフェッチして再有効化してください。", - ko: "동기화가 비활성화되었습니다. 원하는 경우 가져오기 후 다시 활성화하세요.", - ru: "Синхронизация отключена, загрузите и включите снова при желании.", - zh: "同步已禁用,如果需要,请获取并重新启用", + "def": "Syncing has been disabled, fetch and re-enabled if desired.", + "es": "La sincronización ha sido desactivada, obtén y vuelve a activar si lo deseas.", + "ja": "同期が無効になりました。必要に応じてフェッチして再有効化してください。", + "ko": "동기화가 비활성화되었습니다. 원하는 경우 가져오기 후 다시 활성화하세요.", + "ru": "Синхронизация отключена, загрузите и включите снова при желании.", + "zh": "同步已禁用,如果需要,请获取并重新启用", + "zw-th": "Syncing has been disabled, fetch and re-enabled if desired." }, "obsidianLiveSyncSettingTab.logSelectAnyPreset": { - def: "Select any preset.", - es: "Selecciona cualquier preestablecido.", - fr: "Sélectionnez un préréglage.", - ja: "プリセットを選択してください。", - ko: "프리셋을 선택하세요.", - ru: "Выберите любой пресет.", - zh: "选择任何预设", + "def": "Select any preset.", + "es": "Selecciona cualquier preestablecido.", + "ja": "プリセットを選択してください。", + "ko": "프리셋을 선택하세요.", + "ru": "Выберите любой пресет.", + "zh": "选择任何预设", + "zw-th": "Select any preset." }, "obsidianLiveSyncSettingTab.msgAreYouSureProceed": { - def: "Are you sure to proceed?", - es: "¿Estás seguro de proceder?", - fr: "Êtes-vous sûr de vouloir continuer ?", - ja: "本当に続行しますか?", - ko: "정말로 진행하시겠습니까?", - ru: "Вы уверены, что хотите продолжить?", - zh: "您确定要继续吗?", + "def": "Are you sure to proceed?", + "es": "¿Estás seguro de proceder?", + "ja": "本当に続行しますか?", + "ko": "정말로 진행하시겠습니까?", + "ru": "Вы уверены, что хотите продолжить?", + "zh": "您确定要继续吗?", + "zw-th": "Are you sure to proceed?" }, - "obsidianLiveSyncSettingTab.msgChangesNeedToBeApplied": { - def: "Changes need to be applied!", - es: "¡Los cambios deben aplicarse!", - fr: "Des modifications doivent être appliquées !", - ja: "変更を適用する必要があります!", - ko: "변경사항을 적용해야 합니다!", - ru: "Изменения нужно применить!", - zh: "需要应用更改!", + "obsidianLiveSyncSettingTab.msgChangesNeedToBeApplied": { + "def": "Changes need to be applied!", + "es": "¡Los cambios deben aplicarse!", + "ja": "変更を適用する必要があります!", + "ko": "변경사항을 적용해야 합니다!", + "ru": "Изменения нужно применить!", + "zh": "需要应用更改!", + "zw-th": "Changes need to be applied!" }, "obsidianLiveSyncSettingTab.msgConfigCheck": { - def: "--Config check--", - es: "--Verificación de configuración--", - fr: "--Vérification de la configuration--", - ja: "--設定確認--", - ko: "--구성 확인--", - ru: "--Проверка конфигурации--", - zh: "--配置检查--", + "def": "--Config check--", + "es": "--Verificación de configuración--", + "ja": "--設定確認--", + "ko": "--구성 확인--", + "ru": "--Проверка конфигурации--", + "zh": "--配置检查--", + "zw-th": "--Config check--" }, "obsidianLiveSyncSettingTab.msgConfigCheckFailed": { - def: "The configuration check has failed. Do you want to continue anyway?", - es: "La verificación de configuración ha fallado. ¿Quieres continuar de todos modos?", - fr: "La vérification de la configuration a échoué. Voulez-vous continuer malgré tout ?", - ja: "設定確認に失敗しました。それでも続行しますか?", - ko: "구성 확인에 실패했습니다. 그래도 계속하시겠습니까?", - ru: "Проверка конфигурации не удалась. Вы всё равно хотите продолжить?", - zh: "配置检查失败。您仍要继续吗?", + "def": "The configuration check has failed. Do you want to continue anyway?", + "es": "La verificación de configuración ha fallado. ¿Quieres continuar de todos modos?", + "ja": "設定確認に失敗しました。それでも続行しますか?", + "ko": "구성 확인에 실패했습니다. 그래도 계속하시겠습니까?", + "ru": "Проверка конфигурации не удалась. Вы всё равно хотите продолжить?", + "zh": "配置检查失败。您仍要继续吗?", + "zw-th": "The configuration check has failed. Do you want to continue anyway?" }, "obsidianLiveSyncSettingTab.msgConnectionCheck": { - def: "--Connection check--", - es: "--Verificación de conexión--", - fr: "--Vérification de la connexion--", - ja: "--接続確認--", - ko: "--연결 확인--", - ru: "--Проверка подключения--", - zh: "--连接检查--", + "def": "--Connection check--", + "es": "--Verificación de conexión--", + "ja": "--接続確認--", + "ko": "--연결 확인--", + "ru": "--Проверка подключения--", + "zh": "--连接检查--", + "zw-th": "--Connection check--" }, "obsidianLiveSyncSettingTab.msgConnectionProxyNote": { - def: "If you're having trouble with the Connection-check (even after checking config), please check your reverse proxy configuration.", - es: "Si tienes problemas con la verificación de conexión (incluso después de verificar la configuración), por favor verifica la configuración de tu proxy reverso.", - fr: "Si vous rencontrez des problèmes de vérification de connexion (même après avoir vérifié la configuration), veuillez vérifier votre configuration de reverse proxy.", - ja: "設定確認後も接続確認に問題がある場合は、リバースプロキシの設定を確認してください。", - ko: "구성 확인 후에도 연결 확인에 문제가 있는 경우, 리버스 프록시 구성을 확인해 주세요.", - ru: "Если у вас проблемы с проверкой подключения, проверьте конфигурацию обратного прокси.", - zh: "如果您在连接检查时遇到问题(即使检查了配置后),请检查您的反向代理配置", + "def": "If you're having trouble with the Connection-check (even after checking config), please check your reverse proxy configuration.", + "es": "Si tienes problemas con la verificación de conexión (incluso después de verificar la configuración), por favor verifica la configuración de tu proxy reverso.", + "ja": "設定確認後も接続確認に問題がある場合は、リバースプロキシの設定を確認してください。", + "ko": "구성 확인 후에도 연결 확인에 문제가 있는 경우, 리버스 프록시 구성을 확인해 주세요.", + "ru": "Если у вас проблемы с проверкой подключения, проверьте конфигурацию обратного прокси.", + "zh": "如果您在连接检查时遇到问题(即使检查了配置后),请检查您的反向代理配置", + "zw-th": "If you're having trouble with the Connection-check (even after checking config), please check your reverse proxy configuration." }, "obsidianLiveSyncSettingTab.msgCurrentOrigin": { - def: "Current origin: ${origin}", - es: "Origen actual: {origin}", - fr: "Origine actuelle : ${origin}", - ja: "現在のオリジン: ${origin}", - ko: "현재 원점: {origin}", - ru: "Текущий origin: origin", - zh: "当前源: {origin}", + "def": "Current origin: ${origin}", + "es": "Origen actual: {origin}", + "ja": "現在のオリジン: ${origin}", + "ko": "현재 원점: {origin}", + "ru": "Текущий origin: origin", + "zh": "当前源: {origin}", + "zw-th": "Current origin: ${origin}" }, "obsidianLiveSyncSettingTab.msgDiscardConfirmation": { - def: "Do you really want to discard existing settings and databases?", - es: "¿Realmente deseas descartar las configuraciones y bases de datos existentes?", - fr: "Voulez-vous vraiment abandonner les paramètres et bases existants ?", - ja: "本当に既存の設定とデータベースを破棄しますか?", - ko: "정말로 기존 설정과 데이터베이스를 삭제하시겠습니까?", - ru: "Вы действительно хотите отменить существующие настройки и базы данных?", - zh: "您真的要丢弃现有的设置和数据库吗?", + "def": "Do you really want to discard existing settings and databases?", + "es": "¿Realmente deseas descartar las configuraciones y bases de datos existentes?", + "ja": "本当に既存の設定とデータベースを破棄しますか?", + "ko": "정말로 기존 설정과 데이터베이스를 삭제하시겠습니까?", + "ru": "Вы действительно хотите отменить существующие настройки и базы данных?", + "zh": "您真的要丢弃现有的设置和数据库吗?", + "zw-th": "Do you really want to discard existing settings and databases?" }, "obsidianLiveSyncSettingTab.msgDone": { - def: "--Done--", - es: "--Hecho--", - fr: "--Terminé--", - ja: "--完了--", - ko: "--완료--", - ru: "--Готово--", - zh: "--完成--", + "def": "--Done--", + "es": "--Hecho--", + "ja": "--完了--", + "ko": "--완료--", + "ru": "--Готово--", + "zh": "--完成--", + "zw-th": "--Done--" }, "obsidianLiveSyncSettingTab.msgEnableCors": { - def: "Set httpd.enable_cors", - es: "Configurar httpd.enable_cors", - fr: "Définir httpd.enable_cors", - ja: "httpd.enable_corsを設定", - ko: "httpd.enable_cors 설정", - ru: "Установить httpd.enable_cors", - zh: "设置 httpd.enable_cors", + "def": "Set httpd.enable_cors", + "es": "Configurar httpd.enable_cors", + "ja": "httpd.enable_corsを設定", + "ko": "httpd.enable_cors 설정", + "ru": "Установить httpd.enable_cors", + "zh": "设置 httpd.enable_cors", + "zw-th": "Set httpd.enable_cors" }, "obsidianLiveSyncSettingTab.msgEnableCorsChttpd": { - def: "Set chttpd.enable_cors", - fr: "Définir chttpd.enable_cors", - ja: "chttpd.enable_corsを設定", - ru: "Установить chttpd.enable_cors", - zh: "设置 chttpd.enable_cors", + "def": "Set chttpd.enable_cors", + "es": "Set chttpd.enable_cors", + "ja": "chttpd.enable_corsを設定", + "ko": "Set chttpd.enable_cors", + "ru": "Установить chttpd.enable_cors", + "zh": "设置 chttpd.enable_cors", + "zw-th": "Set chttpd.enable_cors" }, "obsidianLiveSyncSettingTab.msgEnableEncryptionRecommendation": { - def: "We recommend enabling End-To-End Encryption, and Path Obfuscation. Are you sure you want to continue without encryption?", - es: "Recomendamos habilitar el cifrado de extremo a extremo y la obfuscación de ruta. ¿Estás seguro de querer continuar sin cifrado?", - fr: "Nous recommandons d'activer le chiffrement de bout en bout et l'obfuscation des chemins. Êtes-vous sûr de vouloir continuer sans chiffrement ?", - ja: "エンドツーエンド暗号化とパス難読化を有効にすることをお勧めします。暗号化なしで続行してもよろしいですか?", - ko: "종단간 암호화와 경로 난독화를 활성화하는 것을 권장합니다. 정말로 암호화 없이 계속하시겠습니까?", - ru: "Мы рекомендуем включить сквозное шифрование. Вы уверены, что хотите продолжить без шифрования?", - zh: "我们建议启用端到端加密和路径混淆。您确定要在没有加密的情况下继续吗?", + "def": "We recommend enabling End-To-End Encryption, and Path Obfuscation. Are you sure you want to continue without encryption?", + "es": "Recomendamos habilitar el cifrado de extremo a extremo y la obfuscación de ruta. ¿Estás seguro de querer continuar sin cifrado?", + "ja": "エンドツーエンド暗号化とパス難読化を有効にすることをお勧めします。暗号化なしで続行してもよろしいですか?", + "ko": "종단간 암호화와 경로 난독화를 활성화하는 것을 권장합니다. 정말로 암호화 없이 계속하시겠습니까?", + "ru": "Мы рекомендуем включить сквозное шифрование. Вы уверены, что хотите продолжить без шифрования?", + "zh": "我们建议启用端到端加密和路径混淆。您确定要在没有加密的情况下继续吗?", + "zw-th": "We recommend enabling End-To-End Encryption, and Path Obfuscation. Are you sure you want to continue without encryption?" }, "obsidianLiveSyncSettingTab.msgFetchConfigFromRemote": { - def: "Do you want to fetch the config from the remote server?", - es: "¿Quieres obtener la configuración del servidor remoto?", - fr: "Voulez-vous récupérer la configuration depuis le serveur distant ?", - ja: "リモートサーバーから設定を取得しますか?", - ko: "원격 서버에서 구성을 가져오시겠습니까?", - ru: "Вы хотите загрузить конфигурацию с удалённого сервера?", - zh: "您想从远程服务器获取配置吗?", + "def": "Do you want to fetch the config from the remote server?", + "es": "¿Quieres obtener la configuración del servidor remoto?", + "ja": "リモートサーバーから設定を取得しますか?", + "ko": "원격 서버에서 구성을 가져오시겠습니까?", + "ru": "Вы хотите загрузить конфигурацию с удалённого сервера?", + "zh": "您想从远程服务器获取配置吗?", + "zw-th": "Do you want to fetch the config from the remote server?" }, "obsidianLiveSyncSettingTab.msgGenerateSetupURI": { - def: "All done! Do you want to generate a setup URI to set up other devices?", - es: "¡Todo listo! ¿Quieres generar un URI de configuración para configurar otros dispositivos?", - fr: "Tout est prêt ! Voulez-vous générer une URI de configuration pour configurer d'autres appareils ?", - ja: "完了!他のデバイスをセットアップするためのセットアップURIを生成しますか?", - ko: "모든 작업이 완료되었습니다! 다른 기기를 설정하기 위해 Setup URI를 생성하시겠습니까?", - ru: "Всё готово! Вы хотите сгенерировать Setup URI для настройки других устройств?", - zh: "全部完成!您想生成一个设置 URI 来设置其他设备吗?", + "def": "All done! Do you want to generate a setup URI to set up other devices?", + "es": "¡Todo listo! ¿Quieres generar un URI de configuración para configurar otros dispositivos?", + "ja": "完了!他のデバイスをセットアップするためのセットアップURIを生成しますか?", + "ko": "모든 작업이 완료되었습니다! 다른 기기를 설정하기 위해 Setup URI를 생성하시겠습니까?", + "ru": "Всё готово! Вы хотите сгенерировать Setup URI для настройки других устройств?", + "zh": "全部完成!您想生成一个设置 URI 来设置其他设备吗?", + "zw-th": "All done! Do you want to generate a setup URI to set up other devices?" }, "obsidianLiveSyncSettingTab.msgIfConfigNotPersistent": { - def: "If the server configuration is not persistent (e.g., running on docker), the values here may change. Once you are able to connect, please update the settings in the server's local.ini.", - es: "Si la configuración del servidor no es persistente (por ejemplo, ejecutándose en docker), los valores aquí pueden cambiar. Una vez que puedas conectarte, por favor actualiza las configuraciones en el local.ini del servidor.", - fr: "Si la configuration du serveur n'est pas persistante (par ex. fonctionnant sur Docker), les valeurs peuvent changer. Une fois la connexion établie, mettez à jour les paramètres dans le local.ini du serveur.", - ja: "サーバー設定が永続的でない場合(例: Dockerで実行中)、ここの値は変更される可能性があります。接続できるようになったら、サーバーのlocal.iniの設定を更新してください。", - ko: "서버 설정이 영구적으로 저장되지 않는 환경(예: Docker에서 실행 중)에서는 이곳의 값들이 변경될 수 있습니다. 연결이 가능해지면 서버의 local.ini 파일에서 설정을 수동으로 업데이트해 주세요.", - ru: "Если конфигурация сервера непостоянна, значения здесь могут измениться.", - zh: "如果服务器配置不是持久的(例如,在 docker 上运行),此处的值可能会更改。一旦能够连接,请更新服务器 local.ini 中的设置", + "def": "If the server configuration is not persistent (e.g., running on docker), the values here may change. Once you are able to connect, please update the settings in the server's local.ini.", + "es": "Si la configuración del servidor no es persistente (por ejemplo, ejecutándose en docker), los valores aquí pueden cambiar. Una vez que puedas conectarte, por favor actualiza las configuraciones en el local.ini del servidor.", + "ja": "サーバー設定が永続的でない場合(例: Dockerで実行中)、ここの値は変更される可能性があります。接続できるようになったら、サーバーのlocal.iniの設定を更新してください。", + "ko": "서버 설정이 영구적으로 저장되지 않는 환경(예: Docker에서 실행 중)에서는 이곳의 값들이 변경될 수 있습니다. 연결이 가능해지면 서버의 local.ini 파일에서 설정을 수동으로 업데이트해 주세요.", + "ru": "Если конфигурация сервера непостоянна, значения здесь могут измениться.", + "zh": "如果服务器配置不是持久的(例如,在 docker 上运行),此处的值可能会更改。一旦能够连接,请更新服务器 local.ini 中的设置", + "zw-th": "If the server configuration is not persistent (e.g., running on docker), the values here may change. Once you are able to connect, please update the settings in the server's local.ini." }, "obsidianLiveSyncSettingTab.msgInvalidPassphrase": { - def: "Your encryption passphrase might be invalid. Are you sure you want to continue?", - es: "Tu frase de contraseña de cifrado podría ser inválida. ¿Estás seguro de querer continuar?", - fr: "Votre phrase secrète de chiffrement peut être invalide. Êtes-vous sûr de vouloir continuer ?", - ja: "暗号化パスフレーズが無効かもしれません。続行してもよろしいですか?", - ko: "암호화 패스프레이즈가 유효하지 않을 수 있습니다. 정말로 계속하시겠습니까?", - ru: "Ваша парольная фраза шифрования может быть недействительна.", - zh: "您的加密密码可能无效。您确定要继续吗?", + "def": "Your encryption passphrase might be invalid. Are you sure you want to continue?", + "es": "Tu frase de contraseña de cifrado podría ser inválida. ¿Estás seguro de querer continuar?", + "ja": "暗号化パスフレーズが無効かもしれません。続行してもよろしいですか?", + "ko": "암호화 패스프레이즈가 유효하지 않을 수 있습니다. 정말로 계속하시겠습니까?", + "ru": "Ваша парольная фраза шифрования может быть недействительна.", + "zh": "您的加密密码可能无效。您确定要继续吗?", + "zw-th": "Your encryption passphrase might be invalid. Are you sure you want to continue?" }, "obsidianLiveSyncSettingTab.msgNewVersionNote": { - def: "Here due to an upgrade notification? Please review the version history. If you're satisfied, click the button. A new update will prompt this again.", - es: "¿Aquí debido a una notificación de actualización? Por favor, revise el historial de versiones. Si está satisfecho, haga clic en el botón. Una nueva actualización volverá a mostrar esto.", - fr: "Arrivé ici suite à une notification de mise à jour ? Consultez l'historique des versions. Si vous êtes satisfait, cliquez sur le bouton. Une nouvelle mise à jour reproposera ceci.", - ja: "アップグレード通知でここに来ましたか?バージョン履歴を確認してください。納得したらボタンをクリックしてください。新しい更新があると再度確認されます。", - ko: "업그레이드 알림으로 여기에 오셨나요? 버전 기록을 검토해 주세요. 만족하신다면 버튼을 클릭하세요. 새로운 업데이트 시 다시 안내됩니다.", - ru: "Вы пришли из-за уведомления об обновлении? Просмотрите историю версий.", - zh: "因为升级通知来到这里?请查看版本历史。如果您满意,请点击按钮。新的更新将再次提示此信息", + "def": "Here due to an upgrade notification? Please review the version history. If you're satisfied, click the button. A new update will prompt this again.", + "es": "¿Aquí debido a una notificación de actualización? Por favor, revise el historial de versiones. Si está satisfecho, haga clic en el botón. Una nueva actualización volverá a mostrar esto.", + "ja": "アップグレード通知でここに来ましたか?バージョン履歴を確認してください。納得したらボタンをクリックしてください。新しい更新があると再度確認されます。", + "ko": "업그레이드 알림으로 여기에 오셨나요? 버전 기록을 검토해 주세요. 만족하신다면 버튼을 클릭하세요. 새로운 업데이트 시 다시 안내됩니다.", + "ru": "Вы пришли из-за уведомления об обновлении? Просмотрите историю версий.", + "zh": "因为升级通知来到这里?请查看版本历史。如果您满意,请点击按钮。新的更新将再次提示此信息", + "zw-th": "Here due to an upgrade notification? Please review the version history. If you're satisfied, click the button. A new update will prompt this again." }, "obsidianLiveSyncSettingTab.msgNonHTTPSInfo": { - def: "Configured as non-HTTPS URI. Be warned that this may not work on mobile devices.", - es: "Configurado como URI que no es HTTPS. Ten en cuenta que esto puede no funcionar en dispositivos móviles.", - fr: "Configuré avec une URI non HTTPS. Attention, ceci peut ne pas fonctionner sur les appareils mobiles.", - ja: "非HTTPS URIとして設定されています。モバイルデバイスでは動作しない可能性があります。", - ko: "비 HTTPS URI로 구성되었습니다. 모바일 기기에서는 작동하지 않을 수 있으니 주의하세요.", - ru: "Настроено как не-HTTPS URI. Это может не работать на мобильных устройствах.", - zh: "配置为非 HTTPS URI。请注意,这可能在移动设备上无法工作", + "def": "Configured as non-HTTPS URI. Be warned that this may not work on mobile devices.", + "es": "Configurado como URI que no es HTTPS. Ten en cuenta que esto puede no funcionar en dispositivos móviles.", + "ja": "非HTTPS URIとして設定されています。モバイルデバイスでは動作しない可能性があります。", + "ko": "비 HTTPS URI로 구성되었습니다. 모바일 기기에서는 작동하지 않을 수 있으니 주의하세요.", + "ru": "Настроено как не-HTTPS URI. Это может не работать на мобильных устройствах.", + "zh": "配置为非 HTTPS URI。请注意,这可能在移动设备上无法工作", + "zw-th": "Configured as non-HTTPS URI. Be warned that this may not work on mobile devices." }, "obsidianLiveSyncSettingTab.msgNonHTTPSWarning": { - def: "Cannot connect to non-HTTPS URI. Please update your config and try again.", - es: "No se puede conectar a URI que no sean HTTPS. Por favor, actualiza tu configuración y vuelve a intentarlo.", - fr: "Connexion impossible à une URI non HTTPS. Mettez à jour votre configuration et réessayez.", - ja: "非HTTPS URIに接続できません。設定を更新して再試行してください。", - ko: "비 HTTPS URI에 연결할 수 없습니다. 구성을 업데이트하고 다시 시도해 주세요.", - ru: "Не удаётся подключиться к не-HTTPS URI. Обновите конфигурацию.", - zh: "无法连接到非 HTTPS URI。请更新您的配置并重试", + "def": "Cannot connect to non-HTTPS URI. Please update your config and try again.", + "es": "No se puede conectar a URI que no sean HTTPS. Por favor, actualiza tu configuración y vuelve a intentarlo.", + "ja": "非HTTPS URIに接続できません。設定を更新して再試行してください。", + "ko": "비 HTTPS URI에 연결할 수 없습니다. 구성을 업데이트하고 다시 시도해 주세요.", + "ru": "Не удаётся подключиться к не-HTTPS URI. Обновите конфигурацию.", + "zh": "无法连接到非 HTTPS URI。请更新您的配置并重试", + "zw-th": "Cannot connect to non-HTTPS URI. Please update your config and try again." }, "obsidianLiveSyncSettingTab.msgNotice": { - def: "---Notice---", - es: "---Aviso---", - fr: "---Avis---", - ja: "---お知らせ---", - ko: "---공지사항---", - ru: "---Уведомление---", - zh: "---注意---", + "def": "---Notice---", + "es": "---Aviso---", + "ja": "---お知らせ---", + "ko": "---공지사항---", + "ru": "---Уведомление---", + "zh": "---注意---", + "zw-th": "---Notice---" }, "obsidianLiveSyncSettingTab.msgObjectStorageWarning": { - def: "WARNING: This feature is a Work In Progress, so please keep in mind the following:\n- Append only architecture. A rebuild is required to shrink the storage.\n- A bit fragile.\n- When first syncing, all history will be transferred from the remote. Be mindful of data caps and slow speeds.\n- Only differences are synced live.\n\nIf you run into any issues, or have ideas about this feature, please create a issue on GitHub.\nI appreciate you for your great dedication.", - es: "ADVERTENCIA: Esta característica está en desarrollo, así que por favor ten en cuenta lo siguiente:\n- Arquitectura de solo anexado. Se requiere una reconstrucción para reducir el almacenamiento.\n- Un poco frágil.\n- Al sincronizar por primera vez, todo el historial será transferido desde el remoto. Ten en cuenta los límites de datos y las velocidades lentas.\n- Solo las diferencias se sincronizan en vivo.\n\nSi encuentras algún problema o tienes ideas sobre esta característica, por favor crea un issue en GitHub.\nAprecio mucho tu gran dedicación.", - fr: "AVERTISSEMENT : cette fonctionnalité est en cours de développement, gardez à l'esprit ce qui suit :\n- Architecture en ajout seul. Une reconstruction est nécessaire pour réduire le stockage.\n- Un peu fragile.\n- Lors de la première synchronisation, tout l'historique sera transféré depuis le distant. Attention aux limites de données et aux débits lents.\n- Seules les différences sont synchronisées en direct.\n\nSi vous rencontrez des problèmes ou avez des idées sur cette fonctionnalité, merci d'ouvrir un ticket sur GitHub.\nMerci pour votre grand dévouement.", - ja: "警告: この機能は開発中です。以下の点にご注意ください:\n- 追記専用アーキテクチャ。ストレージを縮小するには再構築が必要です。\n- やや不安定です。\n- 初回同期時、すべての履歴がリモートから転送されます。データ制限と速度に注意してください。\n- ライブ同期は差分のみです。\n\n問題があれば、またはこの機能についてアイデアがあれば、GitHubにIssueを作成してください。\nご協力に感謝します。", - ko: "⚠️ 주의: 이 기능은 아직 개발 중(WIP)입니다. 다음 사항을 유의해 주세요:\n- 추가 전용 구조(append-only)로 동작합니다. 저장 용량을 줄이려면 데이터 재구성이 필요합니다.\n- 기능이 다소 불안정할 수 있습니다.\n- 최초 동기화 시, 전체 히스토리가 원격 서버에서 전송됩니다. 데이터 용량 제한 및 느린 속도에 유의해 주세요.\n- 실시간 동기화는 변경된 부분만 처리됩니다.\n\n문제가 발생했거나 개선 아이디어가 있으시면 GitHub에 이슈를 등록해 주세요.\n기여에 깊이 감사드립니다.", - ru: "ПРЕДУПРЕЖДЕНИЕ: Эта функция в разработке.", - zh: "警告:此功能仍在开发中,请注意以下几点:\n- 仅追加架构。需要重建才能缩小存储空间。\n- 有点脆弱。\n- 首次同步时,所有历史记录将从远程传输。注意数据上限和慢速。\n- 只有差异会实时同步。\n\n如果您遇到任何问题,或对此功能有任何想法,请在 GitHub 上创建 issue。\n感谢您的巨大贡献", + "def": "WARNING: This feature is a Work In Progress, so please keep in mind the following:\n- Append only architecture. A rebuild is required to shrink the storage.\n- A bit fragile.\n- When first syncing, all history will be transferred from the remote. Be mindful of data caps and slow speeds.\n- Only differences are synced live.\n\nIf you run into any issues, or have ideas about this feature, please create a issue on GitHub.\nI appreciate you for your great dedication.", + "es": "ADVERTENCIA: Esta característica está en desarrollo, así que por favor ten en cuenta lo siguiente:\n- Arquitectura de solo anexado. Se requiere una reconstrucción para reducir el almacenamiento.\n- Un poco frágil.\n- Al sincronizar por primera vez, todo el historial será transferido desde el remoto. Ten en cuenta los límites de datos y las velocidades lentas.\n- Solo las diferencias se sincronizan en vivo.\n\nSi encuentras algún problema o tienes ideas sobre esta característica, por favor crea un issue en GitHub.\nAprecio mucho tu gran dedicación.", + "ja": "警告: この機能は開発中です。以下の点にご注意ください:\n- 追記専用アーキテクチャ。ストレージを縮小するには再構築が必要です。\n- やや不安定です。\n- 初回同期時、すべての履歴がリモートから転送されます。データ制限と速度に注意してください。\n- ライブ同期は差分のみです。\n\n問題があれば、またはこの機能についてアイデアがあれば、GitHubにIssueを作成してください。\nご協力に感謝します。", + "ko": "⚠️ 주의: 이 기능은 아직 개발 중(WIP)입니다. 다음 사항을 유의해 주세요:\n- 추가 전용 구조(append-only)로 동작합니다. 저장 용량을 줄이려면 데이터 재구성이 필요합니다.\n- 기능이 다소 불안정할 수 있습니다.\n- 최초 동기화 시, 전체 히스토리가 원격 서버에서 전송됩니다. 데이터 용량 제한 및 느린 속도에 유의해 주세요.\n- 실시간 동기화는 변경된 부분만 처리됩니다.\n\n문제가 발생했거나 개선 아이디어가 있으시면 GitHub에 이슈를 등록해 주세요.\n기여에 깊이 감사드립니다.", + "ru": "ПРЕДУПРЕЖДЕНИЕ: Эта функция в разработке.", + "zh": "警告:此功能仍在开发中,请注意以下几点:\n- 仅追加架构。需要重建才能缩小存储空间。\n- 有点脆弱。\n- 首次同步时,所有历史记录将从远程传输。注意数据上限和慢速。\n- 只有差异会实时同步。\n\n如果您遇到任何问题,或对此功能有任何想法,请在 GitHub 上创建 issue。\n感谢您的巨大贡献", + "zw-th": "WARNING: This feature is a Work In Progress, so please keep in mind the following:\n- Append only architecture. A rebuild is required to shrink the storage.\n- A bit fragile.\n- When first syncing, all history will be transferred from the remote. Be mindful of data caps and slow speeds.\n- Only differences are synced live.\n\nIf you run into any issues, or have ideas about this feature, please create a issue on GitHub.\nI appreciate you for your great dedication." }, "obsidianLiveSyncSettingTab.msgOriginCheck": { - def: "Origin check: ${org}", - es: "Verificación de origen: {org}", - fr: "Vérification d'origine : ${org}", - ja: "オリジン確認: ${org}", - ko: "원점 확인: {org}", - ru: "Проверка origin: org", - zh: "源检查: {org}", + "def": "Origin check: ${org}", + "es": "Verificación de origen: {org}", + "ja": "オリジン確認: ${org}", + "ko": "원점 확인: {org}", + "ru": "Проверка origin: org", + "zh": "源检查: {org}", + "zw-th": "Origin check: ${org}" }, "obsidianLiveSyncSettingTab.msgRebuildRequired": { - def: "Rebuilding Databases are required to apply the changes.. Please select the method to apply the changes.\n\n
\nLegends\n\n| Symbol | Meaning |\n|: ------ :| ------- |\n| ⇔ | Up to Date |\n| ⇄ | Synchronise to balance |\n| ⇐,⇒ | Transfer to overwrite |\n| ⇠,⇢ | Transfer to overwrite from other side |\n\n
\n\n## ${OPTION_REBUILD_BOTH}\nAt a glance: 📄 ⇒¹ 💻 ⇒² 🛰️ ⇢ⁿ 💻 ⇄ⁿ⁺¹ 📄\nReconstruct both the local and remote databases using existing files from this device.\nThis causes a lockout other devices, and they need to perform fetching.\n## ${OPTION_FETCH}\nAt a glance: 📄 ⇄² 💻 ⇐¹ 🛰️ ⇔ 💻 ⇔ 📄\nInitialise the local database and reconstruct it using data fetched from the remote database.\nThis case includes the case which you have rebuilt the remote database.\n## ${OPTION_ONLY_SETTING}\nStore only the settings. **Caution: This may lead to data corruption**; database reconstruction is generally necessary.", - es: "Es necesario reconstruir las bases de datos para aplicar los cambios. Por favor selecciona el método para aplicar los cambios.\n\n
\nLegendas\n\n| Símbolo | Significado |\n|: ------ :| ------- |\n| ⇔ | Actualizado |\n| ⇄ | Sincronizar para equilibrar |\n| ⇐,⇒ | Transferir para sobrescribir |\n| ⇠,⇢ | Transferir para sobrescribir desde otro lado |\n\n
\n\n## ${OPTION_REBUILD_BOTH}\nA simple vista: 📄 ⇒¹ 💻 ⇒² 🛰️ ⇢ⁿ 💻 ⇄ⁿ⁺¹ 📄\nReconstruir tanto la base de datos local como la remota utilizando los archivos existentes de este dispositivo.\nEsto bloquea a otros dispositivos, y necesitan realizar la obtención.\n## ${OPTION_FETCH}\nA simple vista: 📄 ⇄² 💻 ⇐¹ 🛰️ ⇔ 💻 ⇔ 📄\nInicializa la base de datos local y la reconstruye utilizando los datos obtenidos de la base de datos remota.\nEste caso incluye el caso en el que has reconstruido la base de datos remota.\n## ${OPTION_ONLY_SETTING}\nAlmacena solo la configuración. **Precaución: esto puede provocar corrupción de datos**; generalmente es necesario reconstruir la base de datos.", - fr: "La reconstruction des bases de données est nécessaire pour appliquer les changements. Veuillez sélectionner la méthode d'application.\n\n
\nLégende\n\n| Symbole | Signification |\n|: ------ :| ------- |\n| ⇔ | À jour |\n| ⇄ | Synchroniser pour équilibrer |\n| ⇐,⇒ | Transférer pour écraser |\n| ⇠,⇢ | Transférer pour écraser depuis l'autre côté |\n\n
\n\n## ${OPTION_REBUILD_BOTH}\nEn bref : 📄 ⇒¹ 💻 ⇒² 🛰️ ⇢ⁿ 💻 ⇄ⁿ⁺¹ 📄\nReconstruit les bases locale et distante à partir des fichiers existants de cet appareil.\nCeci provoque un verrouillage des autres appareils, qui devront effectuer une récupération.\n## ${OPTION_FETCH}\nEn bref : 📄 ⇄² 💻 ⇐¹ 🛰️ ⇔ 💻 ⇔ 📄\nInitialise la base locale et la reconstruit à partir des données récupérées depuis la base distante.\nCe cas inclut également celui où vous avez reconstruit la base distante.\n## ${OPTION_ONLY_SETTING}\nNe stocker que les paramètres. **Attention : cela peut entraîner une corruption des données** ; une reconstruction de la base est généralement nécessaire.", - ja: "変更を適用するにはデータベースの再構築が必要です。変更を適用する方法を選択してください。\n\n
\n凡例\n\n| 記号 | 意味 |\n|: ------ :| ------- |\n| ⇔ | 最新 |\n| ⇄ | 同期してバランスを取る |\n| ⇐,⇒ | 上書きするため転送 |\n| ⇠,⇢ | 反対側から上書きするため転送 |\n\n
\n\n## ${OPTION_REBUILD_BOTH}\n概要: 📄 ⇒¹ 💻 ⇒² 🛰️ ⇢ⁿ 💻 ⇄ⁿ⁺¹ 📄\nこのデバイスの既存ファイルを使用してローカルとリモートの両方のデータベースを再構築します。\n他のデバイスはロックアウトされ、フェッチが必要です。\n## ${OPTION_FETCH}\n概要: 📄 ⇄² 💻 ⇐¹ 🛰️ ⇔ 💻 ⇔ 📄\nローカルデータベースを初期化し、リモートデータベースから取得したデータを使用して再構築します。\nリモートデータベースを再構築した場合も含まれます。\n## ${OPTION_ONLY_SETTING}\n設定のみを保存します。**注意: データ破損につながる可能性があります**。通常、データベースの再構築が必要です。", - ko: "변경사항을 적용하려면 데이터베이스를 재구축해야 합니다. 아래 중 한 가지 방법을 선택해 주세요.\n\n
\n범례\n\n| 기호 | 의미 |\n|: ------ :| ------- |\n| ⇔ | 최신 상태 |\n| ⇄ | 동기화 균형 유지 |\n| ⇐,⇒ | 덮어쓰기 방식의 전송 |\n| ⇠,⇢ | 상대편에서 가져와 덮어쓰기 |\n\n
\n\n## ${OPTION_REBUILD_BOTH}\n개요: 📄 ⇒¹ 💻 ⇒² 🛰️ ⇢ⁿ 💻 ⇄ⁿ⁺¹ 📄\n이 기기의 기존 파일을 기반으로 로컬과 원격 데이터베이스를 모두 재구축합니다.\n이 과정에서 다른 기기는 일시적으로 접근이 제한되며, 가져오기 작업을 별도로 수행해야 합니다.\n\n## ${OPTION_FETCH}\n개요: 📄 ⇄² 💻 ⇐¹ 🛰️ ⇔ 💻 ⇔ 📄\n로컬 데이터베이스를 초기화한 후, 원격 데이터베이스에서 데이터를 가져와 재구축합니다.\n이는 원격 측에서 데이터베이스를 먼저 재구축한 경우에도 해당됩니다.\n\n## ${OPTION_ONLY_SETTING}\n설정만 저장합니다. **⚠️ 주의: 이 방법은 데이터 손상을 일으킬 수 있습니다.** 일반적으로는 전체 데이터베이스 재구축이 필요합니다.", - ru: "Требуется перестроение баз данных для применения изменений.", - zh: "需要重建数据库以应用更改。请选择应用更改的方法。\n\n
\n图例\n\n| 符号 | 含义 |\n|: ------ :| ------- |\n| ⇔ | 最新 |\n| ⇄ | 同步以平衡 |\n| ⇐,⇒ | 传输以覆盖 |\n| ⇠,⇢ | 从另一侧传输以覆盖 |\n\n
\n\n## ${OPTION_REBUILD_BOTH}\n概览:📄 ⇒¹ 💻 ⇒² 🛰️ ⇢ⁿ 💻 ⇄ⁿ⁺¹ 📄\n使用此设备的现有文件重建本地和远程数据库。\n这将导致其他设备被锁定,并且它们需要执行获取操作。\n## ${OPTION_FETCH}\n概览:📄 ⇄² 💻 ⇐¹ 🛰️ ⇔ 💻 ⇔ 📄\n初始化本地数据库并使用从远程数据库获取的数据重建它。\n这种情况包括您已经重建了远程数据库的情况。\n## ${OPTION_ONLY_SETTING}\n仅存储设置。**注意:这可能导致数据损坏**;通常需要重建数据库", + "def": "Rebuilding Databases are required to apply the changes.. Please select the method to apply the changes.\n\n
\nLegends\n\n| Symbol | Meaning |\n|: ------ :| ------- |\n| ⇔ | Up to Date |\n| ⇄ | Synchronise to balance |\n| ⇐,⇒ | Transfer to overwrite |\n| ⇠,⇢ | Transfer to overwrite from other side |\n\n
\n\n## ${OPTION_REBUILD_BOTH}\nAt a glance: 📄 ⇒¹ 💻 ⇒² 🛰️ ⇢ⁿ 💻 ⇄ⁿ⁺¹ 📄\nReconstruct both the local and remote databases using existing files from this device.\nThis causes a lockout other devices, and they need to perform fetching.\n## ${OPTION_FETCH}\nAt a glance: 📄 ⇄² 💻 ⇐¹ 🛰️ ⇔ 💻 ⇔ 📄\nInitialise the local database and reconstruct it using data fetched from the remote database.\nThis case includes the case which you have rebuilt the remote database.\n## ${OPTION_ONLY_SETTING}\nStore only the settings. **Caution: This may lead to data corruption**; database reconstruction is generally necessary.", + "es": "Es necesario reconstruir las bases de datos para aplicar los cambios. Por favor selecciona el método para aplicar los cambios.\n\n
\nLegendas\n\n| Símbolo | Significado |\n|: ------ :| ------- |\n| ⇔ | Actualizado |\n| ⇄ | Sincronizar para equilibrar |\n| ⇐,⇒ | Transferir para sobrescribir |\n| ⇠,⇢ | Transferir para sobrescribir desde otro lado |\n\n
\n\n## ${OPTION_REBUILD_BOTH}\nA simple vista: 📄 ⇒¹ 💻 ⇒² 🛰️ ⇢ⁿ 💻 ⇄ⁿ⁺¹ 📄\nReconstruir tanto la base de datos local como la remota utilizando los archivos existentes de este dispositivo.\nEsto bloquea a otros dispositivos, y necesitan realizar la obtención.\n## ${OPTION_FETCH}\nA simple vista: 📄 ⇄² 💻 ⇐¹ 🛰️ ⇔ 💻 ⇔ 📄\nInicializa la base de datos local y la reconstruye utilizando los datos obtenidos de la base de datos remota.\nEste caso incluye el caso en el que has reconstruido la base de datos remota.\n## ${OPTION_ONLY_SETTING}\nAlmacena solo la configuración. **Precaución: esto puede provocar corrupción de datos**; generalmente es necesario reconstruir la base de datos.", + "ja": "変更を適用するにはデータベースの再構築が必要です。変更を適用する方法を選択してください。\n\n
\n凡例\n\n| 記号 | 意味 |\n|: ------ :| ------- |\n| ⇔ | 最新 |\n| ⇄ | 同期してバランスを取る |\n| ⇐,⇒ | 上書きするため転送 |\n| ⇠,⇢ | 反対側から上書きするため転送 |\n\n
\n\n## ${OPTION_REBUILD_BOTH}\n概要: 📄 ⇒¹ 💻 ⇒² 🛰️ ⇢ⁿ 💻 ⇄ⁿ⁺¹ 📄\nこのデバイスの既存ファイルを使用してローカルとリモートの両方のデータベースを再構築します。\n他のデバイスはロックアウトされ、フェッチが必要です。\n## ${OPTION_FETCH}\n概要: 📄 ⇄² 💻 ⇐¹ 🛰️ ⇔ 💻 ⇔ 📄\nローカルデータベースを初期化し、リモートデータベースから取得したデータを使用して再構築します。\nリモートデータベースを再構築した場合も含まれます。\n## ${OPTION_ONLY_SETTING}\n設定のみを保存します。**注意: データ破損につながる可能性があります**。通常、データベースの再構築が必要です。", + "ko": "변경사항을 적용하려면 데이터베이스를 재구축해야 합니다. 아래 중 한 가지 방법을 선택해 주세요.\n\n
\n범례\n\n| 기호 | 의미 |\n|: ------ :| ------- |\n| ⇔ | 최신 상태 |\n| ⇄ | 동기화 균형 유지 |\n| ⇐,⇒ | 덮어쓰기 방식의 전송 |\n| ⇠,⇢ | 상대편에서 가져와 덮어쓰기 |\n\n
\n\n## ${OPTION_REBUILD_BOTH}\n개요: 📄 ⇒¹ 💻 ⇒² 🛰️ ⇢ⁿ 💻 ⇄ⁿ⁺¹ 📄\n이 기기의 기존 파일을 기반으로 로컬과 원격 데이터베이스를 모두 재구축합니다.\n이 과정에서 다른 기기는 일시적으로 접근이 제한되며, 가져오기 작업을 별도로 수행해야 합니다.\n\n## ${OPTION_FETCH}\n개요: 📄 ⇄² 💻 ⇐¹ 🛰️ ⇔ 💻 ⇔ 📄\n로컬 데이터베이스를 초기화한 후, 원격 데이터베이스에서 데이터를 가져와 재구축합니다.\n이는 원격 측에서 데이터베이스를 먼저 재구축한 경우에도 해당됩니다.\n\n## ${OPTION_ONLY_SETTING}\n설정만 저장합니다. **⚠️ 주의: 이 방법은 데이터 손상을 일으킬 수 있습니다.** 일반적으로는 전체 데이터베이스 재구축이 필요합니다.", + "ru": "Требуется перестроение баз данных для применения изменений.", + "zh": "需要重建数据库以应用更改。请选择应用更改的方法。\n\n
\n图例\n\n| 符号 | 含义 |\n|: ------ :| ------- |\n| ⇔ | 最新 |\n| ⇄ | 同步以平衡 |\n| ⇐,⇒ | 传输以覆盖 |\n| ⇠,⇢ | 从另一侧传输以覆盖 |\n\n
\n\n## ${OPTION_REBUILD_BOTH}\n概览:📄 ⇒¹ 💻 ⇒² 🛰️ ⇢ⁿ 💻 ⇄ⁿ⁺¹ 📄\n使用此设备的现有文件重建本地和远程数据库。\n这将导致其他设备被锁定,并且它们需要执行获取操作。\n## ${OPTION_FETCH}\n概览:📄 ⇄² 💻 ⇐¹ 🛰️ ⇔ 💻 ⇔ 📄\n初始化本地数据库并使用从远程数据库获取的数据重建它。\n这种情况包括您已经重建了远程数据库的情况。\n## ${OPTION_ONLY_SETTING}\n仅存储设置。**注意:这可能导致数据损坏**;通常需要重建数据库", + "zw-th": "Rebuilding Databases are required to apply the changes.. Please select the method to apply the changes.\n\n
\nLegends\n\n| Symbol | Meaning |\n|: ------ :| ------- |\n| ⇔ | Up to Date |\n| ⇄ | Synchronise to balance |\n| ⇐,⇒ | Transfer to overwrite |\n| ⇠,⇢ | Transfer to overwrite from other side |\n\n
\n\n## ${OPTION_REBUILD_BOTH}\nAt a glance: 📄 ⇒¹ 💻 ⇒² 🛰️ ⇢ⁿ 💻 ⇄ⁿ⁺¹ 📄\nReconstruct both the local and remote databases using existing files from this device.\nThis causes a lockout other devices, and they need to perform fetching.\n## ${OPTION_FETCH}\nAt a glance: 📄 ⇄² 💻 ⇐¹ 🛰️ ⇔ 💻 ⇔ 📄\nInitialise the local database and reconstruct it using data fetched from the remote database.\nThis case includes the case which you have rebuilt the remote database.\n## ${OPTION_ONLY_SETTING}\nStore only the settings. **Caution: This may lead to data corruption**; database reconstruction is generally necessary." }, "obsidianLiveSyncSettingTab.msgSelectAndApplyPreset": { - def: "Please select and apply any preset item to complete the wizard.", - es: "Por favor, selecciona y aplica cualquier elemento preestablecido para completar el asistente.", - fr: "Veuillez sélectionner et appliquer un préréglage pour terminer l'assistant.", - ja: "ウィザードを完了するには、プリセット項目を選択して適用してください。", - ko: "마법사를 완료하려면 프리셋 항목을 선택하고 적용해 주세요.", - ru: "Выберите и примените любой пресет для завершения мастера.", - zh: "请选择并应用任何预设项以完成向导", + "def": "Please select and apply any preset item to complete the wizard.", + "es": "Por favor, selecciona y aplica cualquier elemento preestablecido para completar el asistente.", + "ja": "ウィザードを完了するには、プリセット項目を選択して適用してください。", + "ko": "마법사를 완료하려면 프리셋 항목을 선택하고 적용해 주세요.", + "ru": "Выберите и примените любой пресет для завершения мастера.", + "zh": "请选择并应用任何预设项以完成向导", + "zw-th": "Please select and apply any preset item to complete the wizard." }, "obsidianLiveSyncSettingTab.msgSetCorsCredentials": { - def: "Set cors.credentials", - es: "Configurar cors.credentials", - fr: "Définir cors.credentials", - ja: "cors.credentialsを設定", - ko: "cors.credentials 설정", - ru: "Установить cors.credentials", - zh: "设置 cors.credentials", + "def": "Set cors.credentials", + "es": "Configurar cors.credentials", + "ja": "cors.credentialsを設定", + "ko": "cors.credentials 설정", + "ru": "Установить cors.credentials", + "zh": "设置 cors.credentials", + "zw-th": "Set cors.credentials" }, "obsidianLiveSyncSettingTab.msgSetCorsOrigins": { - def: "Set cors.origins", - es: "Configurar cors.origins", - fr: "Définir cors.origins", - ja: "cors.originsを設定", - ko: "cors.origins 설정", - ru: "Установить cors.origins", - zh: "设置 cors.origins", + "def": "Set cors.origins", + "es": "Configurar cors.origins", + "ja": "cors.originsを設定", + "ko": "cors.origins 설정", + "ru": "Установить cors.origins", + "zh": "设置 cors.origins", + "zw-th": "Set cors.origins" }, "obsidianLiveSyncSettingTab.msgSetMaxDocSize": { - def: "Set couchdb.max_document_size", - es: "Configurar couchdb.max_document_size", - fr: "Définir couchdb.max_document_size", - ja: "couchdb.max_document_sizeを設定", - ko: "couchdb.max_document_size 설정", - ru: "Установить couchdb.max_document_size", - zh: "设置 couchdb.max_document_size", + "def": "Set couchdb.max_document_size", + "es": "Configurar couchdb.max_document_size", + "ja": "couchdb.max_document_sizeを設定", + "ko": "couchdb.max_document_size 설정", + "ru": "Установить couchdb.max_document_size", + "zh": "设置 couchdb.max_document_size", + "zw-th": "Set couchdb.max_document_size" }, "obsidianLiveSyncSettingTab.msgSetMaxRequestSize": { - def: "Set chttpd.max_http_request_size", - es: "Configurar chttpd.max_http_request_size", - fr: "Définir chttpd.max_http_request_size", - ja: "chttpd.max_http_request_sizeを設定", - ko: "chttpd.max_http_request_size 설정", - ru: "Установить chttpd.max_http_request_size", - zh: "设置 chttpd.max_http_request_size", + "def": "Set chttpd.max_http_request_size", + "es": "Configurar chttpd.max_http_request_size", + "ja": "chttpd.max_http_request_sizeを設定", + "ko": "chttpd.max_http_request_size 설정", + "ru": "Установить chttpd.max_http_request_size", + "zh": "设置 chttpd.max_http_request_size", + "zw-th": "Set chttpd.max_http_request_size" }, "obsidianLiveSyncSettingTab.msgSetRequireValidUser": { - def: "Set chttpd.require_valid_user = true", - es: "Configurar chttpd.require_valid_user = true", - fr: "Définir chttpd.require_valid_user = true", - ja: "chttpd.require_valid_user = trueを設定", - ko: "chttpd.require_valid_user = true로 설정", - ru: "Установить chttpd.require_valid_user = true", - zh: "设置 chttpd.require_valid_user = true", + "def": "Set chttpd.require_valid_user = true", + "es": "Configurar chttpd.require_valid_user = true", + "ja": "chttpd.require_valid_user = trueを設定", + "ko": "chttpd.require_valid_user = true로 설정", + "ru": "Установить chttpd.require_valid_user = true", + "zh": "设置 chttpd.require_valid_user = true", + "zw-th": "Set chttpd.require_valid_user = true" }, "obsidianLiveSyncSettingTab.msgSetRequireValidUserAuth": { - def: "Set chttpd_auth.require_valid_user = true", - es: "Configurar chttpd_auth.require_valid_user = true", - fr: "Définir chttpd_auth.require_valid_user = true", - ja: "chttpd_auth.require_valid_user = trueを設定", - ko: "chttpd_auth.require_valid_user = true로 설정", - ru: "Установить chttpd_auth.require_valid_user = true", - zh: "设置 chttpd_auth.require_valid_user = true", + "def": "Set chttpd_auth.require_valid_user = true", + "es": "Configurar chttpd_auth.require_valid_user = true", + "ja": "chttpd_auth.require_valid_user = trueを設定", + "ko": "chttpd_auth.require_valid_user = true로 설정", + "ru": "Установить chttpd_auth.require_valid_user = true", + "zh": "设置 chttpd_auth.require_valid_user = true", + "zw-th": "Set chttpd_auth.require_valid_user = true" }, "obsidianLiveSyncSettingTab.msgSettingModified": { - def: 'The setting "${setting}" was modified from another device. Click {HERE} to reload settings. Click elsewhere to ignore changes.', - es: 'La configuración "${setting}" fue modificada desde otro dispositivo. Haz clic {HERE} para recargar la configuración. Haz clic en otro lugar para ignorar los cambios.', - fr: "Le paramètre « ${setting} » a été modifié depuis un autre appareil. Cliquez sur {HERE} pour recharger les paramètres. Cliquez ailleurs pour ignorer les modifications.", - ja: '設定"${setting}"が別のデバイスから変更されました。{HERE}をクリックして設定を再読み込みしてください。変更を無視するには他の場所をクリックしてください。', - ko: '"${setting}" 설정이 다른 기기에서 수정되었습니다. 설정을 다시 로드하려면 {HERE}를 클릭하세요. 변경사항을 무시하려면 다른 곳을 클릭하세요.', - ru: "Настройка setting была изменена с другого устройства.", - zh: '设置 "${setting}" 已从另一台设备修改。点击 {HERE} 重新加载设置。点击其他地方忽略更改', + "def": "The setting \"${setting}\" was modified from another device. Click {HERE} to reload settings. Click elsewhere to ignore changes.", + "es": "La configuración \"${setting}\" fue modificada desde otro dispositivo. Haz clic {HERE} para recargar la configuración. Haz clic en otro lugar para ignorar los cambios.", + "ja": "設定\"${setting}\"が別のデバイスから変更されました。{HERE}をクリックして設定を再読み込みしてください。変更を無視するには他の場所をクリックしてください。", + "ko": "\"${setting}\" 설정이 다른 기기에서 수정되었습니다. 설정을 다시 로드하려면 {HERE}를 클릭하세요. 변경사항을 무시하려면 다른 곳을 클릭하세요.", + "ru": "Настройка setting была изменена с другого устройства.", + "zh": "设置 \"${setting}\" 已从另一台设备修改。点击 {HERE} 重新加载设置。点击其他地方忽略更改", + "zw-th": "The setting \"${setting}\" was modified from another device. Click {HERE} to reload settings. Click elsewhere to ignore changes." }, "obsidianLiveSyncSettingTab.msgSettingsUnchangeableDuringSync": { - def: 'These settings are unable to be changed during synchronization. Please disable all syncing in the "Sync Settings" to unlock.', - es: 'Estas configuraciones no se pueden cambiar durante la sincronización. Por favor, deshabilita toda la sincronización en las "Configuraciones de Sincronización" para desbloquear.', - fr: "Ces paramètres ne peuvent pas être modifiés durant la synchronisation. Désactivez toute synchronisation dans « Paramètres de synchronisation » pour déverrouiller.", - ja: 'これらの設定は同期中に変更できません。ロックを解除するには、"同期設定"ですべての同期を無効にしてください。', - ko: '동기화 중에는 이 설정들을 변경할 수 없습니다. 잠금을 해제하려면 "동기화 설정"에서 모든 동기화를 비활성화해 주세요.', - ru: "Эти настройки нельзя изменить во время синхронизации.", - zh: "这些设置在同步期间无法更改。请在“同步设置”中禁用所有同步以解锁", + "def": "These settings are unable to be changed during synchronization. Please disable all syncing in the \"Sync Settings\" to unlock.", + "es": "Estas configuraciones no se pueden cambiar durante la sincronización. Por favor, deshabilita toda la sincronización en las \"Configuraciones de Sincronización\" para desbloquear.", + "ja": "これらの設定は同期中に変更できません。ロックを解除するには、\"同期設定\"ですべての同期を無効にしてください。", + "ko": "동기화 중에는 이 설정들을 변경할 수 없습니다. 잠금을 해제하려면 \"동기화 설정\"에서 모든 동기화를 비활성화해 주세요.", + "ru": "Эти настройки нельзя изменить во время синхронизации.", + "zh": "这些设置在同步期间无法更改。请在“同步设置”中禁用所有同步以解锁", + "zw-th": "These settings are unable to be changed during synchronization. Please disable all syncing in the \"Sync Settings\" to unlock." }, "obsidianLiveSyncSettingTab.msgSetWwwAuth": { - def: "Set httpd.WWW-Authenticate", - es: "Configurar httpd.WWW-Authenticate", - fr: "Définir httpd.WWW-Authenticate", - ja: "httpd.WWW-Authenticateを設定", - ko: "httpd.WWW-Authenticate 설정", - ru: "Установить httpd.WWW-Authenticate", - zh: "设置 httpd.WWW-Authenticate", + "def": "Set httpd.WWW-Authenticate", + "es": "Configurar httpd.WWW-Authenticate", + "ja": "httpd.WWW-Authenticateを設定", + "ko": "httpd.WWW-Authenticate 설정", + "ru": "Установить httpd.WWW-Authenticate", + "zh": "设置 httpd.WWW-Authenticate", + "zw-th": "Set httpd.WWW-Authenticate" }, "obsidianLiveSyncSettingTab.nameApplySettings": { - def: "Apply Settings", - es: "Aplicar configuraciones", - fr: "Appliquer les paramètres", - ja: "設定を適用", - ko: "설정 적용", - ru: "Применить настройки", - zh: "应用设置", + "def": "Apply Settings", + "es": "Aplicar configuraciones", + "ja": "設定を適用", + "ko": "설정 적용", + "ru": "Применить настройки", + "zh": "应用设置", + "zw-th": "Apply Settings" }, "obsidianLiveSyncSettingTab.nameConnectSetupURI": { - def: "Connect with Setup URI", - es: "Conectar con URI de configuración", - fr: "Se connecter avec une URI de configuration", - ja: "セットアップURIで接続", - ko: "Setup URI로 연결", - ru: "Подключиться через Setup URI", - zh: "使用设置 URI 连接", - }, - "obsidianLiveSyncSettingTab.nameCopySetupURI": { - def: "Copy the current settings to a Setup URI", - es: "Copiar la configuración actual a una URI de configuración", - fr: "Copier les paramètres actuels vers une URI de configuration", - ja: "現在の設定をセットアップURIにコピー", - ko: "현재 설정을 Setup URI로 복사", - ru: "Копировать текущие настройки в Setup URI", - zh: "将当前设置复制为设置 URI", - }, - "obsidianLiveSyncSettingTab.nameDisableHiddenFileSync": { - def: "Disable Hidden files sync", - es: "Desactivar sincronización de archivos ocultos", - fr: "Désactiver la synchronisation des fichiers cachés", - ja: "隠しファイル同期を無効化", - ko: "숨김 파일 동기화 비활성화", - ru: "Отключить синхронизацию скрытых файлов", - zh: "禁用隐藏文件同步", + "def": "Connect with Setup URI", + "es": "Conectar con URI de configuración", + "ja": "セットアップURIで接続", + "ko": "Setup URI로 연결", + "ru": "Подключиться через Setup URI", + "zh": "使用设置 URI 连接", + "zw-th": "Connect with Setup URI" }, - "obsidianLiveSyncSettingTab.nameDiscardSettings": { - def: "Discard existing settings and databases", - es: "Descartar configuraciones y bases de datos existentes", - fr: "Abandonner les paramètres et bases existants", - ja: "既存の設定とデータベースを破棄", - ko: "기존 설정 및 데이터베이스 삭제", - ru: "Отменить существующие настройки и базы данных", - zh: "丢弃现有设置和数据库", + "obsidianLiveSyncSettingTab.nameCopySetupURI": { + "def": "Copy the current settings to a Setup URI", + "es": "Copiar la configuración actual a una URI de configuración", + "ja": "現在の設定をセットアップURIにコピー", + "ko": "현재 설정을 Setup URI로 복사", + "ru": "Копировать текущие настройки в Setup URI", + "zh": "将当前设置复制为设置 URI", + "zw-th": "Copy the current settings to a Setup URI" + }, + "obsidianLiveSyncSettingTab.nameDisableHiddenFileSync": { + "def": "Disable Hidden files sync", + "es": "Desactivar sincronización de archivos ocultos", + "ja": "隠しファイル同期を無効化", + "ko": "숨김 파일 동기화 비활성화", + "ru": "Отключить синхронизацию скрытых файлов", + "zh": "禁用隐藏文件同步", + "zw-th": "Disable Hidden files sync" + }, + "obsidianLiveSyncSettingTab.nameDiscardSettings": { + "def": "Discard existing settings and databases", + "es": "Descartar configuraciones y bases de datos existentes", + "ja": "既存の設定とデータベースを破棄", + "ko": "기존 설정 및 데이터베이스 삭제", + "ru": "Отменить существующие настройки и базы данных", + "zh": "丢弃现有设置和数据库", + "zw-th": "Discard existing settings and databases" }, "obsidianLiveSyncSettingTab.nameEnableHiddenFileSync": { - def: "Enable Hidden files sync", - es: "Activar sincronización de archivos ocultos", - fr: "Activer la synchronisation des fichiers cachés", - ja: "隠しファイル同期を有効化", - ko: "숨김 파일 동기화 활성화", - ru: "Включить синхронизацию скрытых файлов", - zh: "启用隐藏文件同步", + "def": "Enable Hidden files sync", + "es": "Activar sincronización de archivos ocultos", + "ja": "隠しファイル同期を有効化", + "ko": "숨김 파일 동기화 활성화", + "ru": "Включить синхронизацию скрытых файлов", + "zh": "启用隐藏文件同步", + "zw-th": "Enable Hidden files sync" }, "obsidianLiveSyncSettingTab.nameEnableLiveSync": { - def: "Enable LiveSync", - es: "Activar LiveSync", - fr: "Activer LiveSync", - ja: "LiveSyncを有効化", - ko: "LiveSync 활성화", - ru: "Включить LiveSync", - zh: "启用 LiveSync", + "def": "Enable LiveSync", + "es": "Activar LiveSync", + "ja": "LiveSyncを有効化", + "ko": "LiveSync 활성화", + "ru": "Включить LiveSync", + "zh": "启用 LiveSync", + "zw-th": "Enable LiveSync" }, "obsidianLiveSyncSettingTab.nameHiddenFileSynchronization": { - def: "Hidden file synchronization", - es: "Sincronización de archivos ocultos", - fr: "Synchronisation des fichiers cachés", - ja: "隠しファイル同期", - ko: "숨김 파일 동기화", - ru: "Синхронизация скрытых файлов", - zh: "隐藏文件同步", + "def": "Hidden file synchronization", + "es": "Sincronización de archivos ocultos", + "ja": "隠しファイル同期", + "ko": "숨김 파일 동기화", + "ru": "Синхронизация скрытых файлов", + "zh": "隐藏文件同步", + "zw-th": "Hidden file synchronization" }, "obsidianLiveSyncSettingTab.nameManualSetup": { - def: "Manual Setup", - es: "Configuración manual", - fr: "Configuration manuelle", - ja: "手動セットアップ", - ko: "수동 설정", - ru: "Ручная настройка", - zh: "手动设置", + "def": "Manual Setup", + "es": "Configuración manual", + "ja": "手動セットアップ", + "ko": "수동 설정", + "ru": "Ручная настройка", + "zh": "手动设置", + "zw-th": "Manual Setup" }, "obsidianLiveSyncSettingTab.nameTestConnection": { - def: "Test Connection", - es: "Probar conexión", - fr: "Tester la connexion", - ja: "接続テスト", - ko: "연결 테스트", - ru: "Тест подключения", - zh: "测试连接", + "def": "Test Connection", + "es": "Probar conexión", + "ja": "接続テスト", + "ko": "연결 테스트", + "ru": "Тест подключения", + "zh": "测试连接", + "zw-th": "Test Connection" }, "obsidianLiveSyncSettingTab.nameTestDatabaseConnection": { - def: "Test Database Connection", - es: "Probar Conexión de Base de Datos", - fr: "Tester la connexion à la base de données", - ja: "データベース接続テスト", - ko: "데이터베이스 연결 테스트", - ru: "Тест подключения к базе данных", - zh: "测试数据库连接", + "def": "Test Database Connection", + "es": "Probar Conexión de Base de Datos", + "ja": "データベース接続テスト", + "ko": "데이터베이스 연결 테스트", + "ru": "Тест подключения к базе данных", + "zh": "测试数据库连接", + "zw-th": "Test Database Connection" }, "obsidianLiveSyncSettingTab.nameValidateDatabaseConfig": { - def: "Validate Database Configuration", - es: "Validar Configuración de la Base de Datos", - fr: "Valider la configuration de la base de données", - ja: "データベース設定を検証", - ko: "데이터베이스 구성 검증", - ru: "Проверить конфигурацию базы данных", - zh: "验证数据库配置", + "def": "Validate Database Configuration", + "es": "Validar Configuración de la Base de Datos", + "ja": "データベース設定を検証", + "ko": "데이터베이스 구성 검증", + "ru": "Проверить конфигурацию базы данных", + "zh": "验证数据库配置", + "zw-th": "Validate Database Configuration" }, "obsidianLiveSyncSettingTab.okAdminPrivileges": { - def: "✔ You have administrator privileges.", - es: "✔ Tienes privilegios de administrador.", - fr: "✔ Vous disposez des privilèges administrateur.", - ja: "✔ 管理者権限があります。", - ko: "✔ 관리자 권한이 있습니다.", - ru: "✔ У вас есть права администратора.", - zh: "✔ 您拥有管理员权限", + "def": "✔ You have administrator privileges.", + "es": "✔ Tienes privilegios de administrador.", + "ja": "✔ 管理者権限があります。", + "ko": "✔ 관리자 권한이 있습니다.", + "ru": "✔ У вас есть права администратора.", + "zh": "✔ 您拥有管理员权限", + "zw-th": "✔ You have administrator privileges." }, "obsidianLiveSyncSettingTab.okCorsCredentials": { - def: "✔ cors.credentials is ok.", - es: "✔ cors.credentials está correcto.", - fr: "✔ cors.credentials est correct.", - ja: "✔ cors.credentialsは正常です。", - ko: "✔ cors.credentials가 정상입니다.", - ru: "✔ cors.credentials в порядке.", - zh: "✔ cors.credentials 设置正确", + "def": "✔ cors.credentials is ok.", + "es": "✔ cors.credentials está correcto.", + "ja": "✔ cors.credentialsは正常です。", + "ko": "✔ cors.credentials가 정상입니다.", + "ru": "✔ cors.credentials в порядке.", + "zh": "✔ cors.credentials 设置正确", + "zw-th": "✔ cors.credentials is ok." }, "obsidianLiveSyncSettingTab.okCorsCredentialsForOrigin": { - def: "CORS credentials OK", - es: "CORS credenciales OK", - fr: "Identifiants CORS OK", - ja: "CORS認証情報OK", - ko: "CORS 자격 증명 정상", - ru: "CORS учётные данные в порядке", - zh: "CORS 凭据正常", + "def": "CORS credentials OK", + "es": "CORS credenciales OK", + "ja": "CORS認証情報OK", + "ko": "CORS 자격 증명 정상", + "ru": "CORS учётные данные в порядке", + "zh": "CORS 凭据正常", + "zw-th": "CORS credentials OK" }, "obsidianLiveSyncSettingTab.okCorsOriginMatched": { - def: "✔ CORS origin OK", - es: "✔ Origen de CORS correcto", - fr: "✔ Origine CORS OK", - ja: "✔ CORSオリジンOK", - ko: "✔ CORS 원점 정상", - ru: "✔ CORS origin в порядке", - zh: "✔ CORS 源正常", + "def": "✔ CORS origin OK", + "es": "✔ Origen de CORS correcto", + "ja": "✔ CORSオリジンOK", + "ko": "✔ CORS 원점 정상", + "ru": "✔ CORS origin в порядке", + "zh": "✔ CORS 源正常", + "zw-th": "✔ CORS origin OK" }, "obsidianLiveSyncSettingTab.okCorsOrigins": { - def: "✔ cors.origins is ok.", - es: "✔ cors.origins está correcto.", - fr: "✔ cors.origins est correct.", - ja: "✔ cors.originsは正常です。", - ko: "✔ cors.origins가 정상입니다.", - ru: "✔ cors.origins в порядке.", - zh: "✔ cors.origins 设置正确", + "def": "✔ cors.origins is ok.", + "es": "✔ cors.origins está correcto.", + "ja": "✔ cors.originsは正常です。", + "ko": "✔ cors.origins가 정상입니다.", + "ru": "✔ cors.origins в порядке.", + "zh": "✔ cors.origins 设置正确", + "zw-th": "✔ cors.origins is ok." }, "obsidianLiveSyncSettingTab.okEnableCors": { - def: "✔ httpd.enable_cors is ok.", - es: "✔ httpd.enable_cors está correcto.", - fr: "✔ httpd.enable_cors est correct.", - ja: "✔ httpd.enable_corsは正常です。", - ko: "✔ httpd.enable_cors가 정상입니다.", - ru: "✔ httpd.enable_cors в порядке.", - zh: "✔ httpd.enable_cors 设置正确", + "def": "✔ httpd.enable_cors is ok.", + "es": "✔ httpd.enable_cors está correcto.", + "ja": "✔ httpd.enable_corsは正常です。", + "ko": "✔ httpd.enable_cors가 정상입니다.", + "ru": "✔ httpd.enable_cors в порядке.", + "zh": "✔ httpd.enable_cors 设置正确", + "zw-th": "✔ httpd.enable_cors is ok." }, "obsidianLiveSyncSettingTab.okEnableCorsChttpd": { - def: "✔ chttpd.enable_cors is ok.", - fr: "✔ chttpd.enable_cors est correct.", - ja: "✔ chttpd.enable_corsは正常です。", - ru: "✔ chttpd.enable_cors в порядке.", - zh: "✔ chttpd.enable_cors is ok.", + "def": "✔ chttpd.enable_cors is ok.", + "es": "✔ chttpd.enable_cors is ok.", + "ja": "✔ chttpd.enable_corsは正常です。", + "ko": "✔ chttpd.enable_cors is ok.", + "ru": "✔ chttpd.enable_cors в порядке.", + "zh": "✔ chttpd.enable_cors is ok.", + "zw-th": "✔ chttpd.enable_cors is ok." }, "obsidianLiveSyncSettingTab.okMaxDocumentSize": { - def: "✔ couchdb.max_document_size is ok.", - es: "✔ couchdb.max_document_size está correcto.", - fr: "✔ couchdb.max_document_size est correct.", - ja: "✔ couchdb.max_document_sizeは正常です。", - ko: "✔ couchdb.max_document_size가 정상입니다.", - ru: "✔ couchdb.max_document_size в порядке.", - zh: "✔ couchdb.max_document_size 设置正确", + "def": "✔ couchdb.max_document_size is ok.", + "es": "✔ couchdb.max_document_size está correcto.", + "ja": "✔ couchdb.max_document_sizeは正常です。", + "ko": "✔ couchdb.max_document_size가 정상입니다.", + "ru": "✔ couchdb.max_document_size в порядке.", + "zh": "✔ couchdb.max_document_size 设置正确", + "zw-th": "✔ couchdb.max_document_size is ok." }, "obsidianLiveSyncSettingTab.okMaxRequestSize": { - def: "✔ chttpd.max_http_request_size is ok.", - es: "✔ chttpd.max_http_request_size está correcto.", - fr: "✔ chttpd.max_http_request_size est correct.", - ja: "✔ chttpd.max_http_request_sizeは正常です。", - ko: "✔ chttpd.max_http_request_size가 정상입니다.", - ru: "✔ chttpd.max_http_request_size в порядке.", - zh: "✔ chttpd.max_http_request_size 设置正确", + "def": "✔ chttpd.max_http_request_size is ok.", + "es": "✔ chttpd.max_http_request_size está correcto.", + "ja": "✔ chttpd.max_http_request_sizeは正常です。", + "ko": "✔ chttpd.max_http_request_size가 정상입니다.", + "ru": "✔ chttpd.max_http_request_size в порядке.", + "zh": "✔ chttpd.max_http_request_size 设置正确", + "zw-th": "✔ chttpd.max_http_request_size is ok." }, "obsidianLiveSyncSettingTab.okRequireValidUser": { - def: "✔ chttpd.require_valid_user is ok.", - es: "✔ chttpd.require_valid_user está correcto.", - fr: "✔ chttpd.require_valid_user est correct.", - ja: "✔ chttpd.require_valid_userは正常です。", - ko: "✔ chttpd.require_valid_user가 정상입니다.", - ru: "✔ chttpd.require_valid_user в порядке.", - zh: "✔ chttpd.require_valid_user 设置正确", + "def": "✔ chttpd.require_valid_user is ok.", + "es": "✔ chttpd.require_valid_user está correcto.", + "ja": "✔ chttpd.require_valid_userは正常です。", + "ko": "✔ chttpd.require_valid_user가 정상입니다.", + "ru": "✔ chttpd.require_valid_user в порядке.", + "zh": "✔ chttpd.require_valid_user 设置正确", + "zw-th": "✔ chttpd.require_valid_user is ok." }, "obsidianLiveSyncSettingTab.okRequireValidUserAuth": { - def: "✔ chttpd_auth.require_valid_user is ok.", - es: "✔ chttpd_auth.require_valid_user está correcto.", - fr: "✔ chttpd_auth.require_valid_user est correct.", - ja: "✔ chttpd_auth.require_valid_userは正常です。", - ko: "✔ chttpd_auth.require_valid_user가 정상입니다.", - ru: "✔ chttpd_auth.require_valid_user в порядке.", - zh: "✔ chttpd_auth.require_valid_user 设置正确", + "def": "✔ chttpd_auth.require_valid_user is ok.", + "es": "✔ chttpd_auth.require_valid_user está correcto.", + "ja": "✔ chttpd_auth.require_valid_userは正常です。", + "ko": "✔ chttpd_auth.require_valid_user가 정상입니다.", + "ru": "✔ chttpd_auth.require_valid_user в порядке.", + "zh": "✔ chttpd_auth.require_valid_user 设置正确", + "zw-th": "✔ chttpd_auth.require_valid_user is ok." }, "obsidianLiveSyncSettingTab.okWwwAuth": { - def: "✔ httpd.WWW-Authenticate is ok.", - es: "✔ httpd.WWW-Authenticate está correcto.", - fr: "✔ httpd.WWW-Authenticate est correct.", - ja: "✔ httpd.WWW-Authenticateは正常です。", - ko: "✔ httpd.WWW-Authenticate가 정상입니다.", - ru: "✔ httpd.WWW-Authenticate в порядке.", - zh: "✔ httpd.WWW-Authenticate 设置正确", + "def": "✔ httpd.WWW-Authenticate is ok.", + "es": "✔ httpd.WWW-Authenticate está correcto.", + "ja": "✔ httpd.WWW-Authenticateは正常です。", + "ko": "✔ httpd.WWW-Authenticate가 정상입니다.", + "ru": "✔ httpd.WWW-Authenticate в порядке.", + "zh": "✔ httpd.WWW-Authenticate 设置正确", + "zw-th": "✔ httpd.WWW-Authenticate is ok." }, "obsidianLiveSyncSettingTab.optionApply": { - def: "Apply", - es: "Aplicar", - fr: "Appliquer", - ja: "適用", - ko: "적용", - ru: "Применить", - zh: "应用", + "def": "Apply", + "es": "Aplicar", + "ja": "適用", + "ko": "적용", + "ru": "Применить", + "zh": "应用", + "zw-th": "Apply" }, "obsidianLiveSyncSettingTab.optionCancel": { - def: "Cancel", - es: "Cancelar", - fr: "Annuler", - ja: "キャンセル", - ko: "취소", - ru: "Отмена", - zh: "取消", + "def": "Cancel", + "es": "Cancelar", + "ja": "キャンセル", + "ko": "취소", + "ru": "Отмена", + "zh": "取消", + "zw-th": "Cancel" }, "obsidianLiveSyncSettingTab.optionCouchDB": { - def: "CouchDB", - es: "Servidor CouchDB", - fr: "CouchDB", - ja: "CouchDB サーバー", - ko: "CouchDB 서버", - ru: "Сервер CouchDB", - zh: "CouchDB", + "def": "CouchDB", + "es": "Servidor CouchDB", + "ja": "CouchDB サーバー", + "ko": "CouchDB 서버", + "ru": "Сервер CouchDB", + "zh": "CouchDB", + "zw-th": "CouchDB" }, "obsidianLiveSyncSettingTab.optionDisableAllAutomatic": { - def: "Disable all automatic", - es: "Desactivar lo automático", - fr: "Désactiver toute automatisation", - ja: "すべての自動を無効化", - ko: "모든 자동 비활성화", - ru: "Отключить всё автоматическое", - zh: "禁用所有自动同步", + "def": "Disable all automatic", + "es": "Desactivar lo automático", + "ja": "すべての自動を無効化", + "ko": "모든 자동 비활성화", + "ru": "Отключить всё автоматическое", + "zh": "禁用所有自动同步", + "zw-th": "Disable all automatic" }, "obsidianLiveSyncSettingTab.optionFetchFromRemote": { - def: "Fetch from Remote", - es: "Obtener del remoto", - fr: "Récupérer depuis le distant", - ja: "リモートからフェッチ", - ko: "원격에서 가져오기", - ru: "Загрузить с удалённого", - zh: "从远程获取", + "def": "Fetch from Remote", + "es": "Obtener del remoto", + "ja": "リモートからフェッチ", + "ko": "원격에서 가져오기", + "ru": "Загрузить с удалённого", + "zh": "从远程获取", + "zw-th": "Fetch from Remote" }, "obsidianLiveSyncSettingTab.optionHere": { - def: "HERE", - es: "AQUÍ", - fr: "ICI", - ja: "ここ", - ko: "여기", - ru: "ЗДЕСЬ", - zh: "这里", + "def": "HERE", + "es": "AQUÍ", + "ja": "ここ", + "ko": "여기", + "ru": "ЗДЕСЬ", + "zh": "这里", + "zw-th": "HERE" }, "obsidianLiveSyncSettingTab.optionLiveSync": { - def: "LiveSync", - es: "Sincronización LiveSync", - fr: "LiveSync", - ja: "LiveSync 同期", - ko: "LiveSync 동기화", - ru: "Синхронизация LiveSync", - zh: "LiveSync", + "def": "LiveSync", + "es": "Sincronización LiveSync", + "ja": "LiveSync 同期", + "ko": "LiveSync 동기화", + "ru": "Синхронизация LiveSync", + "zh": "LiveSync", + "zw-th": "LiveSync" }, "obsidianLiveSyncSettingTab.optionMinioS3R2": { - def: "Minio,S3,R2", - es: "MinIO, S3, R2", - fr: "Minio, S3, R2", - ja: "MinIO、S3、R2", - ko: "MinIO, S3, R2", - ru: "MinIO, S3, R2", - zh: "Minio, S3, R2", + "def": "Minio,S3,R2", + "es": "MinIO, S3, R2", + "ja": "MinIO、S3、R2", + "ko": "MinIO, S3, R2", + "ru": "MinIO, S3, R2", + "zh": "Minio, S3, R2", + "zw-th": "Minio,S3,R2" }, "obsidianLiveSyncSettingTab.optionOkReadEverything": { - def: "OK, I have read everything.", - es: "OK, he leído todo.", - fr: "OK, j'ai tout lu.", - ja: "OK、すべて読みました。", - ko: "네, 모든 것을 읽었습니다.", - ru: "ОК, я всё прочитал.", - zh: "好的,我已经阅读了所有内容 ", + "def": "OK, I have read everything.", + "es": "OK, he leído todo.", + "ja": "OK、すべて読みました。", + "ko": "네, 모든 것을 읽었습니다.", + "ru": "ОК, я всё прочитал.", + "zh": "好的,我已经阅读了所有内容 ", + "zw-th": "OK, I have read everything." }, "obsidianLiveSyncSettingTab.optionOnEvents": { - def: "On events", - es: "En eventos", - fr: "Sur événements", - ja: "イベント時", - ko: "이벤트 시", - ru: "По событиям", - zh: "基于事件", + "def": "On events", + "es": "En eventos", + "ja": "イベント時", + "ko": "이벤트 시", + "ru": "По событиям", + "zh": "基于事件", + "zw-th": "On events" }, "obsidianLiveSyncSettingTab.optionPeriodicAndEvents": { - def: "Periodic and on events", - es: "Periódico y en eventos", - fr: "Périodique et sur événements", - ja: "定期およびイベント時", - ko: "주기적 및 이벤트 시", - ru: "Периодически и по событиям", - zh: "定期和基于事件", + "def": "Periodic and on events", + "es": "Periódico y en eventos", + "ja": "定期およびイベント時", + "ko": "주기적 및 이벤트 시", + "ru": "Периодически и по событиям", + "zh": "定期和基于事件", + "zw-th": "Periodic and on events" }, "obsidianLiveSyncSettingTab.optionPeriodicWithBatch": { - def: "Periodic w/ batch", - es: "Periódico con lote", - fr: "Périodique avec lot", - ja: "バッチ付き定期", - ko: "주기적 w/ 일괄", - ru: "Периодически с пакетами", - zh: "定期与批量", + "def": "Periodic w/ batch", + "es": "Periódico con lote", + "ja": "バッチ付き定期", + "ko": "주기적 w/ 일괄", + "ru": "Периодически с пакетами", + "zh": "定期与批量", + "zw-th": "Periodic w/ batch" }, "obsidianLiveSyncSettingTab.optionRebuildBoth": { - def: "Rebuild Both from This Device", - es: "Reconstructuir ambos desde este dispositivo", - fr: "Tout reconstruire depuis cet appareil", - ja: "このデバイスから両方を再構築", - ko: "이 기기에서 둘 다 재구축", - ru: "Перестроить оба с этого устройства", - zh: "从此设备重建两者", + "def": "Rebuild Both from This Device", + "es": "Reconstructuir ambos desde este dispositivo", + "ja": "このデバイスから両方を再構築", + "ko": "이 기기에서 둘 다 재구축", + "ru": "Перестроить оба с этого устройства", + "zh": "从此设备重建两者", + "zw-th": "Rebuild Both from This Device" }, "obsidianLiveSyncSettingTab.optionSaveOnlySettings": { - def: "(Danger) Save Only Settings", - es: "(Peligro) Guardar solo configuración", - fr: "(Danger) N'enregistrer que les paramètres", - ja: "(危険) 設定のみ保存", - ko: "(위험) 설정만 저장", - ru: "(Опасно) Сохранить только настройки", - zh: "(危险)仅保存设置", + "def": "(Danger) Save Only Settings", + "es": "(Peligro) Guardar solo configuración", + "ja": "(危険) 設定のみ保存", + "ko": "(위험) 설정만 저장", + "ru": "(Опасно) Сохранить только настройки", + "zh": "(危险)仅保存设置", + "zw-th": "(Danger) Save Only Settings" }, "obsidianLiveSyncSettingTab.panelChangeLog": { - def: "Change Log", - es: "Registro de cambios", - fr: "Journal des modifications", - ja: "変更履歴", - ko: "변경 로그", - ru: "История изменений", - zh: "更新日志", + "def": "Change Log", + "es": "Registro de cambios", + "ja": "変更履歴", + "ko": "변경 로그", + "ru": "История изменений", + "zh": "更新日志", + "zw-th": "Change Log" }, "obsidianLiveSyncSettingTab.panelGeneralSettings": { - def: "General Settings", - es: "Configuraciones Generales", - fr: "Paramètres généraux", - ja: "一般設定", - ko: "일반 설정", - ru: "Основные настройки", - zh: "常规设置", + "def": "General Settings", + "es": "Configuraciones Generales", + "ja": "一般設定", + "ko": "일반 설정", + "ru": "Основные настройки", + "zh": "常规设置", + "zw-th": "General Settings" }, - "obsidianLiveSyncSettingTab.panelPrivacyEncryption": { - def: "Privacy & Encryption", - es: "Privacidad y Cifrado", - fr: "Confidentialité et chiffrement", - ja: "プライバシーと暗号化", - ko: "개인정보 보호 및 암호화", - ru: "Конфиденциальность и шифрование", - zh: "隐私与加密", + "obsidianLiveSyncSettingTab.panelPrivacyEncryption": { + "def": "Privacy & Encryption", + "es": "Privacidad y Cifrado", + "ja": "プライバシーと暗号化", + "ko": "개인정보 보호 및 암호화", + "ru": "Конфиденциальность и шифрование", + "zh": "隐私与加密", + "zw-th": "Privacy & Encryption" }, "obsidianLiveSyncSettingTab.panelRemoteConfiguration": { - def: "Remote Configuration", - es: "Configuración remota", - fr: "Configuration distante", - ja: "リモート設定", - ko: "원격 구성", - ru: "Удалённая конфигурация", - zh: "远程配置", + "def": "Remote Configuration", + "es": "Configuración remota", + "ja": "リモート設定", + "ko": "원격 구성", + "ru": "Удалённая конфигурация", + "zh": "远程配置", + "zw-th": "Remote Configuration" }, "obsidianLiveSyncSettingTab.panelSetup": { - def: "Setup", - es: "Configuración", - fr: "Configuration", - ja: "セットアップ", - ko: "설정", - ru: "Настройка", - zh: "设置", + "def": "Setup", + "es": "Configuración", + "ja": "セットアップ", + "ko": "설정", + "ru": "Настройка", + "zh": "设置", + "zw-th": "Setup" }, "obsidianLiveSyncSettingTab.serverVersion": { - def: "Server info: ${info}", - fr: "Infos serveur : ${info}", - ja: "サーバー情報: ${info}", - ru: "Информация о сервере: info", - zh: "服务器信息: ${info}", + "def": "Server info: ${info}", + "es": "Server info: ${info}", + "ja": "サーバー情報: ${info}", + "ko": "Server info: ${info}", + "ru": "Информация о сервере: info", + "zh": "服务器信息: ${info}", + "zw-th": "Server info: ${info}" }, "obsidianLiveSyncSettingTab.titleActiveRemoteServer": { - def: "Active Remote Server", - fr: "Serveur distant actif", - ja: "アクティブなリモートサーバー", - ru: "Активный удалённый сервер", - zh: "活动远程服务器", + "def": "Active Remote Server", + "es": "Active Remote Server", + "ja": "アクティブなリモートサーバー", + "ko": "Active Remote Server", + "ru": "Активный удалённый сервер", + "zh": "活动远程服务器", + "zw-th": "Active Remote Server" }, "obsidianLiveSyncSettingTab.titleAppearance": { - def: "Appearance", - es: "Apariencia", - fr: "Apparence", - ja: "外観", - ko: "외관", - ru: "Внешний вид", - zh: "外观", + "def": "Appearance", + "es": "Apariencia", + "ja": "外観", + "ko": "외관", + "ru": "Внешний вид", + "zh": "外观", + "zw-th": "Appearance" }, "obsidianLiveSyncSettingTab.titleConflictResolution": { - def: "Conflict resolution", - es: "Resolución de conflictos", - fr: "Résolution des conflits", - ja: "競合解決", - ko: "충돌 해결", - ru: "Разрешение конфликтов", - zh: "冲突解决", + "def": "Conflict resolution", + "es": "Resolución de conflictos", + "ja": "競合解決", + "ko": "충돌 해결", + "ru": "Разрешение конфликтов", + "zh": "冲突解决", + "zw-th": "Conflict resolution" }, "obsidianLiveSyncSettingTab.titleCongratulations": { - def: "Congratulations!", - es: "¡Felicidades!", - fr: "Félicitations !", - ja: "おめでとうございます!", - ko: "축하합니다!", - ru: "Поздравляем!", - zh: "恭喜!", + "def": "Congratulations!", + "es": "¡Felicidades!", + "ja": "おめでとうございます!", + "ko": "축하합니다!", + "ru": "Поздравляем!", + "zh": "恭喜!", + "zw-th": "Congratulations!" }, "obsidianLiveSyncSettingTab.titleCouchDB": { - def: "CouchDB", - es: "Servidor CouchDB", - fr: "CouchDB", - ja: "CouchDB サーバー", - ko: "CouchDB 서버", - ru: "Сервер CouchDB", - zh: "CouchDB", + "def": "CouchDB", + "es": "Servidor CouchDB", + "ja": "CouchDB サーバー", + "ko": "CouchDB 서버", + "ru": "Сервер CouchDB", + "zh": "CouchDB", + "zw-th": "CouchDB" }, "obsidianLiveSyncSettingTab.titleDeletionPropagation": { - def: "Deletion Propagation", - es: "Propagación de eliminación", - fr: "Propagation des suppressions", - ja: "削除の伝播", - ko: "삭제 전파", - ru: "Распространение удалений", - zh: "删除传播", + "def": "Deletion Propagation", + "es": "Propagación de eliminación", + "ja": "削除の伝播", + "ko": "삭제 전파", + "ru": "Распространение удалений", + "zh": "删除传播", + "zw-th": "Deletion Propagation" }, "obsidianLiveSyncSettingTab.titleEncryptionNotEnabled": { - def: "Encryption is not enabled", - es: "El cifrado no está habilitado", - fr: "Le chiffrement n'est pas activé", - ja: "暗号化が有効になっていません", - ko: "암호화가 활성화되지 않음", - ru: "Шифрование не включено", - zh: "未启用加密", + "def": "Encryption is not enabled", + "es": "El cifrado no está habilitado", + "ja": "暗号化が有効になっていません", + "ko": "암호화가 활성화되지 않음", + "ru": "Шифрование не включено", + "zh": "未启用加密", + "zw-th": "Encryption is not enabled" }, "obsidianLiveSyncSettingTab.titleEncryptionPassphraseInvalid": { - def: "Encryption Passphrase Invalid", - es: "La frase de contraseña de cifrado es inválida", - fr: "Phrase secrète de chiffrement invalide", - ja: "暗号化パスフレーズが無効です", - ko: "암호화 패스프레이즈 유효하지 않음", - ru: "Парольная фраза шифрования недействительна", - zh: "加密密码无效", + "def": "Encryption Passphrase Invalid", + "es": "La frase de contraseña de cifrado es inválida", + "ja": "暗号化パスフレーズが無効です", + "ko": "암호화 패스프레이즈 유효하지 않음", + "ru": "Парольная фраза шифрования недействительна", + "zh": "加密密码无效", + "zw-th": "Encryption Passphrase Invalid" }, "obsidianLiveSyncSettingTab.titleExtraFeatures": { - def: "Enable extra and advanced features", - es: "Habilitar funciones extras y avanzadas", - fr: "Activer les fonctionnalités supplémentaires et avancées", - ja: "追加および上級機能を有効化", - ko: "추가 및 고급 기능 활성화", - ru: "Включить дополнительные и расширенные функции", - zh: "启用额外和高级功能", + "def": "Enable extra and advanced features", + "es": "Habilitar funciones extras y avanzadas", + "ja": "追加および上級機能を有効化", + "ko": "추가 및 고급 기능 활성화", + "ru": "Включить дополнительные и расширенные функции", + "zh": "启用额外和高级功能", + "zw-th": "Enable extra and advanced features" }, "obsidianLiveSyncSettingTab.titleFetchConfig": { - def: "Fetch Config", - es: "Obtener configuración", - fr: "Récupérer la configuration", - ja: "設定を取得", - ko: "구성 가져오기", - ru: "Загрузить конфигурацию", - zh: "获取配置", + "def": "Fetch Config", + "es": "Obtener configuración", + "ja": "設定を取得", + "ko": "구성 가져오기", + "ru": "Загрузить конфигурацию", + "zh": "获取配置", + "zw-th": "Fetch Config" }, "obsidianLiveSyncSettingTab.titleFetchConfigFromRemote": { - def: "Fetch config from remote server", - es: "Obtener configuración del servidor remoto", - fr: "Récupérer la configuration depuis le serveur distant", - ja: "リモートサーバーから設定を取得", - ko: "원격 서버에서 구성 가져오기", - ru: "Загрузить конфигурацию с удалённого сервера", - zh: "从远程服务器获取配置", + "def": "Fetch config from remote server", + "es": "Obtener configuración del servidor remoto", + "ja": "リモートサーバーから設定を取得", + "ko": "원격 서버에서 구성 가져오기", + "ru": "Загрузить конфигурацию с удалённого сервера", + "zh": "从远程服务器获取配置", + "zw-th": "Fetch config from remote server" }, "obsidianLiveSyncSettingTab.titleFetchSettings": { - def: "Fetch Settings", - es: "Obtener configuraciones", - fr: "Récupérer les paramètres", - ja: "設定の取得", - ko: "설정 가져오기", - ru: "Загрузить настройки", - zh: "获取设置", + "def": "Fetch Settings", + "es": "Obtener configuraciones", + "ja": "設定の取得", + "ko": "설정 가져오기", + "ru": "Загрузить настройки", + "zh": "获取设置", + "zw-th": "Fetch Settings" }, "obsidianLiveSyncSettingTab.titleHiddenFiles": { - def: "Hidden Files", - es: "Archivos ocultos", - fr: "Fichiers cachés", - ja: "隠しファイル", - ko: "숨김 파일", - ru: "Скрытые файлы", - zh: "隐藏文件", + "def": "Hidden Files", + "es": "Archivos ocultos", + "ja": "隠しファイル", + "ko": "숨김 파일", + "ru": "Скрытые файлы", + "zh": "隐藏文件", + "zw-th": "Hidden Files" }, "obsidianLiveSyncSettingTab.titleLogging": { - def: "Logging", - es: "Registro", - fr: "Journalisation", - ja: "ログ", - ko: "로깅", - ru: "Логирование", - zh: "日志记录", + "def": "Logging", + "es": "Registro", + "ja": "ログ", + "ko": "로깅", + "ru": "Логирование", + "zh": "日志记录", + "zw-th": "Logging" }, "obsidianLiveSyncSettingTab.titleMinioS3R2": { - def: "Minio,S3,R2", - es: "MinIO, S3, R2", - fr: "Minio, S3, R2", - ja: "MinIO、S3、R2", - ko: "MinIO, S3, R2", - ru: "MinIO, S3, R2", - zh: "Minio, S3, R2", + "def": "Minio,S3,R2", + "es": "MinIO, S3, R2", + "ja": "MinIO、S3、R2", + "ko": "MinIO, S3, R2", + "ru": "MinIO, S3, R2", + "zh": "Minio, S3, R2", + "zw-th": "Minio,S3,R2" }, "obsidianLiveSyncSettingTab.titleNotification": { - def: "Notification", - es: "Notificación", - fr: "Notification", - ja: "通知", - ko: "알림", - ru: "Уведомления", - zh: "通知", + "def": "Notification", + "es": "Notificación", + "ja": "通知", + "ko": "알림", + "ru": "Уведомления", + "zh": "通知", + "zw-th": "Notification" }, "obsidianLiveSyncSettingTab.titleOnlineTips": { - def: "Online Tips", - es: "Consejos en línea", - fr: "Conseils en ligne", - ja: "オンラインヒント", - ko: "온라인 팁", - ru: "Онлайн советы", - zh: "在线提示", + "def": "Online Tips", + "es": "Consejos en línea", + "ja": "オンラインヒント", + "ko": "온라인 팁", + "ru": "Онлайн советы", + "zh": "在线提示", + "zw-th": "Online Tips" }, "obsidianLiveSyncSettingTab.titleQuickSetup": { - def: "Quick Setup", - es: "Configuración rápida", - fr: "Configuration rapide", - ja: "クイックセットアップ", - ko: "빠른 설정", - ru: "Быстрая настройка", - zh: "快速设置", + "def": "Quick Setup", + "es": "Configuración rápida", + "ja": "クイックセットアップ", + "ko": "빠른 설정", + "ru": "Быстрая настройка", + "zh": "快速设置", + "zw-th": "Quick Setup" }, "obsidianLiveSyncSettingTab.titleRebuildRequired": { - def: "Rebuild Required", - es: "Reconstrucción necesaria", - fr: "Reconstruction requise", - ja: "再構築が必要", - ko: "재구축 필요", - ru: "Требуется перестроение", - zh: "需要重建", + "def": "Rebuild Required", + "es": "Reconstrucción necesaria", + "ja": "再構築が必要", + "ko": "재구축 필요", + "ru": "Требуется перестроение", + "zh": "需要重建", + "zw-th": "Rebuild Required" }, "obsidianLiveSyncSettingTab.titleRemoteConfigCheckFailed": { - def: "Remote Configuration Check Failed", - es: "La verificación de configuración remota falló", - fr: "Échec de la vérification de la configuration distante", - ja: "リモート設定の確認に失敗", - ko: "원격 구성 확인 실패", - ru: "Проверка удалённой конфигурации не удалась", - zh: "远程配置检查失败", + "def": "Remote Configuration Check Failed", + "es": "La verificación de configuración remota falló", + "ja": "リモート設定の確認に失敗", + "ko": "원격 구성 확인 실패", + "ru": "Проверка удалённой конфигурации не удалась", + "zh": "远程配置检查失败", + "zw-th": "Remote Configuration Check Failed" }, "obsidianLiveSyncSettingTab.titleRemoteServer": { - def: "Remote Server", - es: "Servidor remoto", - fr: "Serveur distant", - ja: "リモートサーバー", - ko: "원격 서버", - ru: "Удалённый сервер", - zh: "远程服务器", + "def": "Remote Server", + "es": "Servidor remoto", + "ja": "リモートサーバー", + "ko": "원격 서버", + "ru": "Удалённый сервер", + "zh": "远程服务器", + "zw-th": "Remote Server" }, "obsidianLiveSyncSettingTab.titleReset": { - def: "Reset", - es: "Reiniciar", - fr: "Réinitialiser", - ja: "リセット", - ko: "리셋", - ru: "Сброс", - zh: "重置", + "def": "Reset", + "es": "Reiniciar", + "ja": "リセット", + "ko": "리셋", + "ru": "Сброс", + "zh": "重置", + "zw-th": "Reset" }, "obsidianLiveSyncSettingTab.titleSetupOtherDevices": { - def: "To setup other devices", - es: "Para configurar otros dispositivos", - fr: "Pour configurer d'autres appareils", - ja: "他のデバイスのセットアップ", - ko: "다른 기기 설정", - ru: "Для настройки других устройств", - zh: "设置其他设备", + "def": "To setup other devices", + "es": "Para configurar otros dispositivos", + "ja": "他のデバイスのセットアップ", + "ko": "다른 기기 설정", + "ru": "Для настройки других устройств", + "zh": "设置其他设备", + "zw-th": "To setup other devices" }, "obsidianLiveSyncSettingTab.titleSynchronizationMethod": { - def: "Synchronization Method", - es: "Método de sincronización", - fr: "Méthode de synchronisation", - ja: "同期方法", - ko: "동기화 방법", - ru: "Метод синхронизации", - zh: "同步方法", + "def": "Synchronization Method", + "es": "Método de sincronización", + "ja": "同期方法", + "ko": "동기화 방법", + "ru": "Метод синхронизации", + "zh": "同步方法", + "zw-th": "Synchronization Method" }, "obsidianLiveSyncSettingTab.titleSynchronizationPreset": { - def: "Synchronization Preset", - es: "Preestablecimiento de sincronización", - fr: "Préréglage de synchronisation", - ja: "同期プリセット", - ko: "동기화 프리셋", - ru: "Пресет синхронизации", - zh: "同步预设", + "def": "Synchronization Preset", + "es": "Preestablecimiento de sincronización", + "ja": "同期プリセット", + "ko": "동기화 프리셋", + "ru": "Пресет синхронизации", + "zh": "同步预设", + "zw-th": "Synchronization Preset" }, "obsidianLiveSyncSettingTab.titleSyncSettings": { - def: "Sync Settings", - es: "Configuraciones de Sincronización", - fr: "Paramètres de synchronisation", - ja: "同期設定", - ko: "동기화 설정", - ru: "Настройки синхронизации", - zh: "同步设置", + "def": "Sync Settings", + "es": "Configuraciones de Sincronización", + "ja": "同期設定", + "ko": "동기화 설정", + "ru": "Настройки синхронизации", + "zh": "同步设置", + "zw-th": "Sync Settings" }, "obsidianLiveSyncSettingTab.titleSyncSettingsViaMarkdown": { - def: "Sync Settings via Markdown", - es: "Configuración de sincronización a través de Markdown", - fr: "Synchroniser les paramètres via Markdown", - ja: "Markdown経由で設定を同期", - ko: "마크다운을 통한 동기화 설정", - ru: "Синхронизация настроек через Markdown", - zh: "通过 Markdown 同步设置", + "def": "Sync Settings via Markdown", + "es": "Configuración de sincronización a través de Markdown", + "ja": "Markdown経由で設定を同期", + "ko": "마크다운을 통한 동기화 설정", + "ru": "Синхронизация настроек через Markdown", + "zh": "通过 Markdown 同步设置", + "zw-th": "Sync Settings via Markdown" }, "obsidianLiveSyncSettingTab.titleUpdateThinning": { - def: "Update Thinning", - es: "Actualización de adelgazamiento", - fr: "Lissage des mises à jour", - ja: "更新の間引き", - ko: "업데이트 솎아내기", - ru: "Оптимизация обновлений", - zh: "更新频率限制", + "def": "Update Thinning", + "es": "Actualización de adelgazamiento", + "ja": "更新の間引き", + "ko": "업데이트 솎아내기", + "ru": "Оптимизация обновлений", + "zh": "更新频率限制", + "zw-th": "Update Thinning" }, "obsidianLiveSyncSettingTab.warnCorsOriginUnmatched": { - def: "⚠ CORS Origin is unmatched ${from}->${to}", - es: "⚠ El origen de CORS no coincide: {from}->{to}", - fr: "⚠ L'origine CORS ne correspond pas ${from}->${to}", - ja: "⚠ CORS Originが一致しません ${from}->${to}", - ko: "⚠ CORS 원점이 일치하지 않습니다 {from}->{to}", - ru: "⚠ CORS Origin не совпадает from->to", - zh: "⚠ CORS 源不匹配 {from}->{to}", + "def": "⚠ CORS Origin is unmatched ${from}->${to}", + "es": "⚠ El origen de CORS no coincide: {from}->{to}", + "ja": "⚠ CORS Originが一致しません ${from}->${to}", + "ko": "⚠ CORS 원점이 일치하지 않습니다 {from}->{to}", + "ru": "⚠ CORS Origin не совпадает from->to", + "zh": "⚠ CORS 源不匹配 {from}->{to}", + "zw-th": "⚠ CORS Origin is unmatched ${from}->${to}" }, "obsidianLiveSyncSettingTab.warnNoAdmin": { - def: "⚠ You do not have administrator privileges.", - es: "⚠ No tienes privilegios de administrador.", - fr: "⚠ Vous n'avez pas les privilèges administrateur.", - ja: "⚠ 管理者権限がありません。", - ko: "⚠ 관리자 권한이 없습니다.", - ru: "⚠ У вас нет прав администратора.", - zh: "⚠ 您没有管理员权限", + "def": "⚠ You do not have administrator privileges.", + "es": "⚠ No tienes privilegios de administrador.", + "ja": "⚠ 管理者権限がありません。", + "ko": "⚠ 관리자 권한이 없습니다.", + "ru": "⚠ У вас нет прав администратора.", + "zh": "⚠ 您没有管理员权限", + "zw-th": "⚠ You do not have administrator privileges." }, "P2P.AskPassphraseForDecrypt": { - def: "The remote peer shared the configuration. Please input the passphrase to decrypt the configuration.", - fr: "Le pair distant a partagé la configuration. Veuillez saisir la phrase secrète pour déchiffrer la configuration.", - ja: "リモートピアから設定が共有されました。設定を復号するためのパスフレーズを入力してください。", - ko: "원격 피어가 구성을 공유했습니다. 구성을 복호화하려면 패스프레이즈를 입력해 주세요.", - ru: "Удалённое устройство предоставило конфигурацию. Введите пароль для расшифровки.", - zh: "远程对等方共享了配置,请输入密码短语以解密配置", + "def": "The remote peer shared the configuration. Please input the passphrase to decrypt the configuration.", + "es": "The remote peer shared the configuration. Please input the passphrase to decrypt the configuration.", + "ja": "リモートピアから設定が共有されました。設定を復号するためのパスフレーズを入力してください。", + "ko": "원격 피어가 구성을 공유했습니다. 구성을 복호화하려면 패스프레이즈를 입력해 주세요.", + "ru": "Удалённое устройство предоставило конфигурацию. Введите пароль для расшифровки.", + "zh": "远程对等方共享了配置,请输入密码短语以解密配置", + "zw-th": "The remote peer shared the configuration. Please input the passphrase to decrypt the configuration." }, "P2P.AskPassphraseForShare": { - def: "The remote peer requested this device configuration. Please input the passphrase to share the configuration. You can ignore the request by cancelling this dialogue.", - fr: "Le pair distant a demandé la configuration de cet appareil. Veuillez saisir la phrase secrète pour partager la configuration. Vous pouvez ignorer la demande en annulant cette boîte de dialogue.", - ja: "リモートピアからこのデバイスの設定が要求されました。設定を共有するためのパスフレーズを入力してください。このダイアログをキャンセルすることでリクエストを無視できます。", - ko: "원격 피어가 이 기기의 구성을 요청했습니다. 구성을 공유하려면 패스프레이즈를 입력해 주세요. 이 대화상자를 취소하여 요청을 무시할 수 있습니다.", - ru: "Удалённое устройство запрашивает эту конфигурацию. Введите пароль для передачи.", - zh: "远程对等方请求此设备配置,请输入密码短语以共享配置。你可以通过取消此对话框来忽略此请求", - }, - "P2P.DisabledButNeed": { - def: "%{title_p2p_sync} is disabled. Do you really want to enable it?", - fr: "%{title_p2p_sync} est désactivé. Voulez-vous vraiment l'activer ?", - ja: "%{title_p2p_sync}は無効になっています。本当に有効にしますか?", - ko: "%{title_p2p_sync}가 비활성화되어 있습니다. 정말로 활성화하시겠습니까?", - ru: "title_p2p_sync отключён. Вы действительно хотите включить?", - zh: "%{title_p2p_sync} 已禁用。你确定要启用它吗?", - }, - "P2P.FailedToOpen": { - def: "Failed to open P2P connection to the signalling server.", - fr: "Échec d'ouverture de la connexion P2P vers le serveur de signalisation.", - ja: "シグナリングサーバーへのP2P接続を開けませんでした。", - ko: "시그널링 서버에 P2P 연결을 열 수 없습니다.", - ru: "Не удалось открыть P2P подключение к серверу сигнализации.", - zh: "无法打开 P2P 连接到信令服务器", + "def": "The remote peer requested this device configuration. Please input the passphrase to share the configuration. You can ignore the request by cancelling this dialogue.", + "es": "The remote peer requested this device configuration. Please input the passphrase to share the configuration. You can ignore the request by cancelling this dialogue.", + "ja": "リモートピアからこのデバイスの設定が要求されました。設定を共有するためのパスフレーズを入力してください。このダイアログをキャンセルすることでリクエストを無視できます。", + "ko": "원격 피어가 이 기기의 구성을 요청했습니다. 구성을 공유하려면 패스프레이즈를 입력해 주세요. 이 대화상자를 취소하여 요청을 무시할 수 있습니다.", + "ru": "Удалённое устройство запрашивает эту конфигурацию. Введите пароль для передачи.", + "zh": "远程对等方请求此设备配置,请输入密码短语以共享配置。你可以通过取消此对话框来忽略此请求", + "zw-th": "The remote peer requested this device configuration. Please input the passphrase to share the configuration. You can ignore the request by cancelling this dialogue." + }, + "P2P.DisabledButNeed": { + "def": "%{title_p2p_sync} is disabled. Do you really want to enable it?", + "es": "%{title_p2p_sync} is disabled. Do you really want to enable it?", + "ja": "%{title_p2p_sync}は無効になっています。本当に有効にしますか?", + "ko": "%{title_p2p_sync}가 비활성화되어 있습니다. 정말로 활성화하시겠습니까?", + "ru": "title_p2p_sync отключён. Вы действительно хотите включить?", + "zh": "%{title_p2p_sync} 已禁用。你确定要启用它吗?", + "zw-th": "%{title_p2p_sync} is disabled. Do you really want to enable it?" + }, + "P2P.FailedToOpen": { + "def": "Failed to open P2P connection to the signalling server.", + "es": "Failed to open P2P connection to the signalling server.", + "ja": "シグナリングサーバーへのP2P接続を開けませんでした。", + "ko": "시그널링 서버에 P2P 연결을 열 수 없습니다.", + "ru": "Не удалось открыть P2P подключение к серверу сигнализации.", + "zh": "无法打开 P2P 连接到信令服务器", + "zw-th": "Failed to open P2P connection to the signalling server." }, "P2P.NoAutoSyncPeers": { - def: "No auto-sync peers found. Please set peers on the %{long_p2p_sync} pane.", - fr: "Aucun pair de synchronisation automatique trouvé. Veuillez définir des pairs dans le panneau %{long_p2p_sync}.", - ja: "自動同期ピアが見つかりません。%{long_p2p_sync}ペインでピアを設定してください。", - ko: "자동 동기화 피어를 찾을 수 없습니다. %{long_p2p_sync} 창에서 피어를 설정해 주세요.", - ru: "Автосинхронизируемые устройства не найдены.", - zh: "未找到自动同步的对等方,请在 %{long_p2p_sync} 面板中设置对等方", + "def": "No auto-sync peers found. Please set peers on the %{long_p2p_sync} pane.", + "es": "No auto-sync peers found. Please set peers on the %{long_p2p_sync} pane.", + "ja": "自動同期ピアが見つかりません。%{long_p2p_sync}ペインでピアを設定してください。", + "ko": "자동 동기화 피어를 찾을 수 없습니다. %{long_p2p_sync} 창에서 피어를 설정해 주세요.", + "ru": "Автосинхронизируемые устройства не найдены.", + "zh": "未找到自动同步的对等方,请在 %{long_p2p_sync} 面板中设置对等方", + "zw-th": "No auto-sync peers found. Please set peers on the %{long_p2p_sync} pane." }, "P2P.NoKnownPeers": { - def: "No peers has been detected, waiting incoming other peers...", - fr: "Aucun pair détecté, en attente d'autres pairs entrants...", - ja: "ピアが検出されていません。他のピアからの接続を待機中...", - ko: "피어가 감지되지 않았습니다. 다른 피어의 접속을 기다리고 있습니다...", - ru: "Устройства не обнаружены, ожидаем другие устройства...", - zh: "未检测到对等方,正在等待其他对等方的连接...", + "def": "No peers has been detected, waiting incoming other peers...", + "es": "No peers has been detected, waiting incoming other peers...", + "ja": "ピアが検出されていません。他のピアからの接続を待機中...", + "ko": "피어가 감지되지 않았습니다. 다른 피어의 접속을 기다리고 있습니다...", + "ru": "Устройства не обнаружены, ожидаем другие устройства...", + "zh": "未检测到对等方,正在等待其他对等方的连接...", + "zw-th": "No peers has been detected, waiting incoming other peers..." }, "P2P.Note.description": { - def: " This replicator allows us to synchronise our vault with other devices\nusing a peer-to-peer connection. We can use this to synchronise our vault with our other devices without using a cloud service.\nThis replicator is based on Trystero. It also uses a signalling server to establish a connection between devices. The signalling server is used to exchange connection information between devices. It does (or,should) not know or store any of our data.\n\nThe signalling server can be hosted by anyone. This is just a Nostr relay. For the sake of simplicity and checking the behaviour of the replicator, an instance of the signalling server is hosted by vrtmrz. You can use the experimental server provided by vrtmrz, or you can use any other server.\n\nBy the way, even if the signalling server does not store our data, it can see the connection information of some of our devices. Please be aware of this. Also, be cautious when using the server provided by someone else.", - fr: " Ce réplicateur permet de synchroniser notre coffre avec d'autres\nappareils via une connexion pair-à-pair. Nous pouvons l'utiliser pour synchroniser notre coffre avec nos autres appareils sans recourir à un service cloud.\nCe réplicateur est basé sur Trystero. Il utilise également un serveur de signalisation pour établir une connexion entre les appareils. Le serveur de signalisation sert à échanger les informations de connexion entre appareils. Il ne connaît (ou ne devrait connaître) ni ne stocke aucune de nos données.\n\nLe serveur de signalisation peut être hébergé par n'importe qui. Il s'agit simplement d'un relais Nostr. Par souci de simplicité et pour vérifier le comportement du réplicateur, une instance du serveur de signalisation est hébergée par vrtmrz. Vous pouvez utiliser le serveur expérimental fourni par vrtmrz, ou tout autre serveur.\n\nAu passage, même si le serveur de signalisation ne stocke pas nos données, il peut voir les informations de connexion de certains de nos appareils. Soyez-en conscient. Soyez également prudent avec un serveur fourni par quelqu'un d'autre.", - ja: "このレプリケーターは、ピアツーピア接続を使用して、Vaultを他のデバイスと同期することができます。クラウドサービスを使用せずに、他のデバイスとVaultを同期することができます。\nこのレプリケーターはTrysteroをベースにしています。デバイス間の接続を確立するためにシグナリングサーバーを使用します。シグナリングサーバーはデバイス間で接続情報を交換するために使用されます。私たちのデータを知ったり保存したりすることはありません(または、そうあるべきではありません)。\n\nシグナリングサーバーは誰でもホストできます。これは単なるNostrリレーです。簡便さとレプリケーターの動作確認のために、vrtmrzがシグナリングサーバーのインスタンスをホストしています。vrtmrzが提供する実験用サーバーを使用することも、他のサーバーを使用することもできます。\n\nなお、シグナリングサーバーが私たちのデータを保存しなくても、一部のデバイスの接続情報を見ることができます。これにご注意ください。また、他の人が提供するサーバーを使用する場合は注意してください。", - ko: "이 복제기는 피어 투 피어(P2P) 연결을 통해 다른 기기들과 볼트를 동기화할 수 있도록 합니다. 클라우드 서비스를 거치지 않고도 기기간 동기화를 구현할 수 있습니다.\n\n이 복제기는 Trystero를 기반으로 하며, 기기 간 연결을 설정하기 위해 시그널링 서버를 사용합니다. 시그널링 서버는 단순히 연결 정보를 교환하는 용도로만 사용되며, 사용자 데이터를 저장하거나 접근하지 않습니다 (또는 그래야만 합니다).\n\n시그널링 서버는 누구나 운영할 수 있으며, 이는 단순한 Nostr 릴레이입니다. 편의성과 복제기의 작동 확인을 위해 `vrtmrz`가 자체적으로 시그널링 서버 인스턴스를 운영 중입니다. 사용자는 `vrtmrz`가 제공하는 실험용 서버를 사용할 수도 있고, 별도로 자신만의 서버를 설정할 수도 있습니다.\n\n참고로, 시그널링 서버는 사용자 데이터를 저장하지 않더라도 일부 기기의 연결 정보는 볼 수 있습니다. 이 점을 유의해 주세요. 특히 타인이 운영하는 서버를 사용할 경우 주의가 필요합니다.", - ru: "Этот репликатор позволяет синхронизировать хранилище с другими устройствами с использованием однорангового соединения.", - zh: " This replicator allows us to synchronise our vault with other devices\nusing a peer-to-peer connection. We can use this to synchronise our vault with our other devices without using a cloud service.\nThis replicator is based on Trystero. It also uses a signaling server to establish a connection between devices. The signaling server is used to exchange connection information between devices. It does (or,should) not know or store any of our data.\n\nThe signaling server can be hosted by anyone. This is just a Nostr relay. For the sake of simplicity and checking the behaviour of the replicator, an instance of the signaling server is hosted by vrtmrz. You can use the experimental server provided by vrtmrz, or you can use any other server.\n\nBy the way, even if the signaling server does not store our data, it can see the connection information of some of our devices. Please be aware of this. Also, be cautious when using the server provided by someone else.", + "def": " This replicator allows us to synchronise our vault with other devices\nusing a peer-to-peer connection. We can use this to synchronise our vault with our other devices without using a cloud service.\nThis replicator is based on Trystero. It also uses a signalling server to establish a connection between devices. The signalling server is used to exchange connection information between devices. It does (or,should) not know or store any of our data.\n\nThe signalling server can be hosted by anyone. This is just a Nostr relay. For the sake of simplicity and checking the behaviour of the replicator, an instance of the signalling server is hosted by vrtmrz. You can use the experimental server provided by vrtmrz, or you can use any other server.\n\nBy the way, even if the signalling server does not store our data, it can see the connection information of some of our devices. Please be aware of this. Also, be cautious when using the server provided by someone else.", + "es": " This replicator allows us to synchronise our vault with other devices\nusing a peer-to-peer connection. We can use this to synchronise our vault with our other devices without using a cloud service.\nThis replicator is based on Trystero. It also uses a signalling server to establish a connection between devices. The signalling server is used to exchange connection information between devices. It does (or,should) not know or store any of our data.\n\nThe signalling server can be hosted by anyone. This is just a Nostr relay. For the sake of simplicity and checking the behaviour of the replicator, an instance of the signalling server is hosted by vrtmrz. You can use the experimental server provided by vrtmrz, or you can use any other server.\n\nBy the way, even if the signalling server does not store our data, it can see the connection information of some of our devices. Please be aware of this. Also, be cautious when using the server provided by someone else.", + "ja": "このレプリケーターは、ピアツーピア接続を使用して、Vaultを他のデバイスと同期することができます。クラウドサービスを使用せずに、他のデバイスとVaultを同期することができます。\nこのレプリケーターはTrysteroをベースにしています。デバイス間の接続を確立するためにシグナリングサーバーを使用します。シグナリングサーバーはデバイス間で接続情報を交換するために使用されます。私たちのデータを知ったり保存したりすることはありません(または、そうあるべきではありません)。\n\nシグナリングサーバーは誰でもホストできます。これは単なるNostrリレーです。簡便さとレプリケーターの動作確認のために、vrtmrzがシグナリングサーバーのインスタンスをホストしています。vrtmrzが提供する実験用サーバーを使用することも、他のサーバーを使用することもできます。\n\nなお、シグナリングサーバーが私たちのデータを保存しなくても、一部のデバイスの接続情報を見ることができます。これにご注意ください。また、他の人が提供するサーバーを使用する場合は注意してください。", + "ko": "이 복제기는 피어 투 피어(P2P) 연결을 통해 다른 기기들과 볼트를 동기화할 수 있도록 합니다. 클라우드 서비스를 거치지 않고도 기기간 동기화를 구현할 수 있습니다.\n\n이 복제기는 Trystero를 기반으로 하며, 기기 간 연결을 설정하기 위해 시그널링 서버를 사용합니다. 시그널링 서버는 단순히 연결 정보를 교환하는 용도로만 사용되며, 사용자 데이터를 저장하거나 접근하지 않습니다 (또는 그래야만 합니다).\n\n시그널링 서버는 누구나 운영할 수 있으며, 이는 단순한 Nostr 릴레이입니다. 편의성과 복제기의 작동 확인을 위해 `vrtmrz`가 자체적으로 시그널링 서버 인스턴스를 운영 중입니다. 사용자는 `vrtmrz`가 제공하는 실험용 서버를 사용할 수도 있고, 별도로 자신만의 서버를 설정할 수도 있습니다.\n\n참고로, 시그널링 서버는 사용자 데이터를 저장하지 않더라도 일부 기기의 연결 정보는 볼 수 있습니다. 이 점을 유의해 주세요. 특히 타인이 운영하는 서버를 사용할 경우 주의가 필요합니다.", + "ru": "Этот репликатор позволяет синхронизировать хранилище с другими устройствами с использованием однорангового соединения.", + "zh": " This replicator allows us to synchronise our vault with other devices\nusing a peer-to-peer connection. We can use this to synchronise our vault with our other devices without using a cloud service.\nThis replicator is based on Trystero. It also uses a signaling server to establish a connection between devices. The signaling server is used to exchange connection information between devices. It does (or,should) not know or store any of our data.\n\nThe signaling server can be hosted by anyone. This is just a Nostr relay. For the sake of simplicity and checking the behaviour of the replicator, an instance of the signaling server is hosted by vrtmrz. You can use the experimental server provided by vrtmrz, or you can use any other server.\n\nBy the way, even if the signaling server does not store our data, it can see the connection information of some of our devices. Please be aware of this. Also, be cautious when using the server provided by someone else.", + "zw-th": " This replicator allows us to synchronise our vault with other devices\nusing a peer-to-peer connection. We can use this to synchronise our vault with our other devices without using a cloud service.\nThis replicator is based on Trystero. It also uses a signalling server to establish a connection between devices. The signalling server is used to exchange connection information between devices. It does (or,should) not know or store any of our data.\n\nThe signalling server can be hosted by anyone. This is just a Nostr relay. For the sake of simplicity and checking the behaviour of the replicator, an instance of the signalling server is hosted by vrtmrz. You can use the experimental server provided by vrtmrz, or you can use any other server.\n\nBy the way, even if the signalling server does not store our data, it can see the connection information of some of our devices. Please be aware of this. Also, be cautious when using the server provided by someone else." }, "P2P.Note.important_note": { - def: "Peer-to-Peer Replicator.", - fr: "Réplicateur pair-à-pair.", - ja: "ピアツーピアレプリケーターの実験的実装", - ko: "피어 투 피어(P2P) 복제기의 실험적 구현입니다.", - ru: "P2P репликатор.", - zh: "The Experimental Implementation of the Peer-to-Peer Replicator.", + "def": "Peer-to-Peer Replicator.", + "es": "Peer-to-Peer Replicator.", + "ja": "ピアツーピアレプリケーターの実験的実装", + "ko": "피어 투 피어(P2P) 복제기의 실험적 구현입니다.", + "ru": "P2P репликатор.", + "zh": "The Experimental Implementation of the Peer-to-Peer Replicator.", + "zw-th": "Peer-to-Peer Replicator." }, "P2P.Note.important_note_sub": { - def: "This feature is still on the bleeding edge. Please be aware that ensure your data is backed up before using this feature. And, we would be so happy if you could contribute to the development of this feature.", - fr: "Cette fonctionnalité est encore en tout début de développement. Veillez à sauvegarder vos données avant de l'utiliser. Nous serions très heureux si vous contribuiez au développement de cette fonctionnalité.", - ja: "この機能はまだ実験段階です。期待通りに動作しない可能性があることにご注意ください。さらに、バグ、セキュリティの問題、その他の問題がある可能性があります。この機能は自己責任でご使用ください。この機能の開発にご協力ください。", - ko: "이 기능은 아직 실험 단계에 있습니다. 이 기능이 예상대로 작동하지 않을 수 있음을 알아주세요. 또한 버그, 보안 문제 및 기타 문제가 있을 수 있습니다. 이 기능을 사용할 때는 본인의 책임 하에 사용하세요. 이 기능의 개발에 기여해 주세요.", - ru: "Эта функция всё ещё на стадии разработки. Пожалуйста, убедитесь, что ваши данные зарезервированы.", - zh: "This feature is still in the experimental stage. Please be aware that this feature may not work as expected. Furthermore, it may have some bugs, security issues, and other issues. Please use this feature at your own risk. Please contribute to the development of this feature.", + "def": "This feature is still on the bleeding edge. Please be aware that ensure your data is backed up before using this feature. And, we would be so happy if you could contribute to the development of this feature.", + "es": "This feature is still on the bleeding edge. Please be aware that ensure your data is backed up before using this feature. And, we would be so happy if you could contribute to the development of this feature.", + "ja": "この機能はまだ実験段階です。期待通りに動作しない可能性があることにご注意ください。さらに、バグ、セキュリティの問題、その他の問題がある可能性があります。この機能は自己責任でご使用ください。この機能の開発にご協力ください。", + "ko": "이 기능은 아직 실험 단계에 있습니다. 이 기능이 예상대로 작동하지 않을 수 있음을 알아주세요. 또한 버그, 보안 문제 및 기타 문제가 있을 수 있습니다. 이 기능을 사용할 때는 본인의 책임 하에 사용하세요. 이 기능의 개발에 기여해 주세요.", + "ru": "Эта функция всё ещё на стадии разработки. Пожалуйста, убедитесь, что ваши данные зарезервированы.", + "zh": "This feature is still in the experimental stage. Please be aware that this feature may not work as expected. Furthermore, it may have some bugs, security issues, and other issues. Please use this feature at your own risk. Please contribute to the development of this feature.", + "zw-th": "This feature is still on the bleeding edge. Please be aware that ensure your data is backed up before using this feature. And, we would be so happy if you could contribute to the development of this feature." }, "P2P.Note.Summary": { - def: "What is this feature? (and some important notes, please read once)", - fr: "Qu'est-ce que cette fonctionnalité ? (et quelques notes importantes, à lire)", - ja: "この機能について(重要な注意事項を含む、一度お読みください)", - ko: "이 기능은 무엇인가요? (설명과 참고사항이 적혀있습니다. 한 번 읽어보세요!)", - ru: "Что это за функция? (важные замечания)", - zh: "What is this feature? (and some important notes, please read once)", + "def": "What is this feature? (and some important notes, please read once)", + "es": "What is this feature? (and some important notes, please read once)", + "ja": "この機能について(重要な注意事項を含む、一度お読みください)", + "ko": "이 기능은 무엇인가요? (설명과 참고사항이 적혀있습니다. 한 번 읽어보세요!)", + "ru": "Что это за функция? (важные замечания)", + "zh": "What is this feature? (and some important notes, please read once)", + "zw-th": "What is this feature? (and some important notes, please read once)" }, "P2P.NotEnabled": { - def: "%{title_p2p_sync} is not enabled. We cannot open a new connection.", - fr: "%{title_p2p_sync} n'est pas activé. Nous ne pouvons pas ouvrir de nouvelle connexion.", - ja: "%{title_p2p_sync}が有効になっていません。新しい接続を開くことができません。", - ko: "%{title_p2p_sync}가 활성화되지 않았습니다. 새로운 연결을 열 수 없습니다.", - ru: "title_p2p_sync не включён. Мы не можем открыть новое подключение.", - zh: "%{title_p2p_sync} is not enabled. We cannot open a new connection.", + "def": "%{title_p2p_sync} is not enabled. We cannot open a new connection.", + "es": "%{title_p2p_sync} is not enabled. We cannot open a new connection.", + "ja": "%{title_p2p_sync}が有効になっていません。新しい接続を開くことができません。", + "ko": "%{title_p2p_sync}가 활성화되지 않았습니다. 새로운 연결을 열 수 없습니다.", + "ru": "title_p2p_sync не включён. Мы не можем открыть новое подключение.", + "zh": "%{title_p2p_sync} is not enabled. We cannot open a new connection.", + "zw-th": "%{title_p2p_sync} is not enabled. We cannot open a new connection." }, "P2P.P2PReplication": { - def: "%{P2P} Replication", - fr: "Réplication %{P2P}", - ja: "%{P2P}レプリケーション(複製)", - ko: "%{P2P} 복제", - ru: "P2P Репликация", - zh: "%{P2P} Replication", + "def": "%{P2P} Replication", + "es": "%{P2P} Replication", + "ja": "%{P2P}レプリケーション(複製)", + "ko": "%{P2P} 복제", + "ru": "P2P Репликация", + "zh": "%{P2P} Replication", + "zw-th": "%{P2P} Replication" }, "P2P.PaneTitle": { - def: "%{long_p2p_sync}", - fr: "%{long_p2p_sync}", - ja: "%{long_p2p_sync}", - ko: "%{long_p2p_sync}", - ru: "long_p2p_sync", - zh: "%{long_p2p_sync}", + "def": "%{long_p2p_sync}", + "es": "%{long_p2p_sync}", + "ja": "%{long_p2p_sync}", + "ko": "%{long_p2p_sync}", + "ru": "long_p2p_sync", + "zh": "%{long_p2p_sync}", + "zw-th": "%{long_p2p_sync}" }, "P2P.ReplicatorInstanceMissing": { - def: "P2P Sync replicator is not found, possibly not have been configured or enabled.", - fr: "Le réplicateur Sync P2P est introuvable, peut-être non configuré ou non activé.", - ja: "P2P同期レプリケーターが見つかりません。設定または有効化されていない可能性があります。", - ko: "P2P 동기화 복제기를 찾을 수 없습니다. 구성되지 않았거나 활성화되지 않았을 수 있습니다.", - ru: "P2P Sync репликатор не найден, возможно, не настроен.", - zh: "P2P Sync replicator is not found, possibly not have been configured or enabled.", + "def": "P2P Sync replicator is not found, possibly not have been configured or enabled.", + "es": "P2P Sync replicator is not found, possibly not have been configured or enabled.", + "ja": "P2P同期レプリケーターが見つかりません。設定または有効化されていない可能性があります。", + "ko": "P2P 동기화 복제기를 찾을 수 없습니다. 구성되지 않았거나 활성화되지 않았을 수 있습니다.", + "ru": "P2P Sync репликатор не найден, возможно, не настроен.", + "zh": "P2P Sync replicator is not found, possibly not have been configured or enabled.", + "zw-th": "P2P Sync replicator is not found, possibly not have been configured or enabled." }, "P2P.SeemsOffline": { - def: "Peer ${name} seems offline, skipped.", - fr: "Le pair ${name} semble hors ligne, ignoré.", - ja: "ピア${name}はオフラインのようです。スキップしました。", - ko: "피어 ${name}이(가) 오프라인인 것 같습니다. 건너뜁니다.", - ru: "Устройство name офлайн, пропущено.", - zh: "Peer ${name} seems offline, skipped.", + "def": "Peer ${name} seems offline, skipped.", + "es": "Peer ${name} seems offline, skipped.", + "ja": "ピア${name}はオフラインのようです。スキップしました。", + "ko": "피어 ${name}이(가) 오프라인인 것 같습니다. 건너뜁니다.", + "ru": "Устройство name офлайн, пропущено.", + "zh": "Peer ${name} seems offline, skipped.", + "zw-th": "Peer ${name} seems offline, skipped." }, "P2P.SyncAlreadyRunning": { - def: "P2P Sync is already running.", - fr: "La Sync P2P est déjà en cours.", - ja: "P2P同期はすでに実行中です。", - ko: "P2P 동기화가 이미 실행 중입니다.", - ru: "P2P Sync уже запущен.", - zh: "P2P Sync is already running.", + "def": "P2P Sync is already running.", + "es": "P2P Sync is already running.", + "ja": "P2P同期はすでに実行中です。", + "ko": "P2P 동기화가 이미 실행 중입니다.", + "ru": "P2P Sync уже запущен.", + "zh": "P2P Sync is already running.", + "zw-th": "P2P Sync is already running." }, "P2P.SyncCompleted": { - def: "P2P Sync completed.", - fr: "Sync P2P terminée.", - ja: "P2P同期が完了しました。", - ko: "P2P 동기화가 완료되었습니다.", - ru: "P2P Sync завершён.", - zh: "P2P Sync completed.", + "def": "P2P Sync completed.", + "es": "P2P Sync completed.", + "ja": "P2P同期が完了しました。", + "ko": "P2P 동기화가 완료되었습니다.", + "ru": "P2P Sync завершён.", + "zh": "P2P Sync completed.", + "zw-th": "P2P Sync completed." }, "P2P.SyncStartedWith": { - def: "P2P Sync with ${name} have been started.", - fr: "La Sync P2P avec ${name} a démarré.", - ja: "${name}とのP2P同期を開始しました。", - ko: "${name}과의 P2P 동기화가 시작되었습니다.", - ru: "P2P Sync с name начат.", - zh: "P2P Sync with ${name} have been started.", - }, - Passphrase: { - def: "Passphrase", - es: "Frase de contraseña", - fr: "Phrase secrète", - ja: "パスフレーズ", - ko: "패스프레이즈", - ru: "Парольная фраза", - zh: "密码", + "def": "P2P Sync with ${name} have been started.", + "es": "P2P Sync with ${name} have been started.", + "ja": "${name}とのP2P同期を開始しました。", + "ko": "${name}과의 P2P 동기화가 시작되었습니다.", + "ru": "P2P Sync с name начат.", + "zh": "P2P Sync with ${name} have been started.", + "zw-th": "P2P Sync with ${name} have been started." + }, + "Passphrase": { + "def": "Passphrase", + "es": "Frase de contraseña", + "ja": "パスフレーズ", + "ko": "패스프레이즈", + "ru": "Парольная фраза", + "zh": "密码", + "zw-th": "Passphrase" }, "Passphrase of sensitive configuration items": { - def: "Passphrase of sensitive configuration items", - es: "Frase para elementos sensibles", - fr: "Phrase secrète des éléments de configuration sensibles", - ja: "機密性の高い設定項目にパスフレーズを使用", - ko: "민감한 구성 항목의 패스프레이즈", - ru: "Парольная фраза для конфиденциальных настроек", - zh: "敏感配置项的密码", - }, - password: { - def: "password", - es: "contraseña", - fr: "mot de passe", - ja: "パスワード", - ko: "비밀번호", - ru: "пароль", - zh: "密码", - }, - Password: { - def: "Password", - es: "Contraseña", - fr: "Mot de passe", - ja: "パスワード", - ko: "비밀번호", - ru: "Пароль", - zh: "密码", + "def": "Passphrase of sensitive configuration items", + "es": "Frase para elementos sensibles", + "ja": "機密性の高い設定項目にパスフレーズを使用", + "ko": "민감한 구성 항목의 패스프레이즈", + "ru": "Парольная фраза для конфиденциальных настроек", + "zh": "敏感配置项的密码", + "zw-th": "Passphrase of sensitive configuration items" + }, + "password": { + "def": "password", + "es": "contraseña", + "ja": "パスワード", + "ko": "비밀번호", + "ru": "пароль", + "zh": "密码", + "zw-th": "password" + }, + "Password": { + "def": "Password", + "es": "Contraseña", + "ja": "パスワード", + "ko": "비밀번호", + "ru": "Пароль", + "zh": "密码", + "zw-th": "Password" }, "Path Obfuscation": { - def: "Path Obfuscation", - es: "Ofuscación de rutas", - fr: "Obfuscation des chemins", - ja: "パスの難読化", - ko: "경로 난독화", - ru: "Обфускация путей", - zh: "路径混淆", + "def": "Path Obfuscation", + "es": "Ofuscación de rutas", + "ja": "パスの難読化", + "ko": "경로 난독화", + "ru": "Обфускация путей", + "zh": "路径混淆", + "zw-th": "Path Obfuscation" }, "Per-file-saved customization sync": { - def: "Per-file-saved customization sync", - es: "Sincronización de personalización por archivo", - fr: "Synchronisation de personnalisation enregistrée par fichier", - ja: "ファイルごとのカスタマイズ同期", - ko: "파일별 저장 사용자 설정 동기화", - ru: "Синхронизация настроек для каждого файла", - zh: "按文件保存的自定义同步", + "def": "Per-file-saved customization sync", + "es": "Sincronización de personalización por archivo", + "ja": "ファイルごとのカスタマイズ同期", + "ko": "파일별 저장 사용자 설정 동기화", + "ru": "Синхронизация настроек для каждого файла", + "zh": "按文件保存的自定义同步", + "zw-th": "Per-file-saved customization sync" }, "Periodic Sync interval": { - def: "Periodic Sync interval", - es: "Intervalo de sincronización periódica", - fr: "Intervalle de synchronisation périodique", - ja: "定時同期の感覚", - ko: "주기적 동기화 간격", - ru: "Интервал периодической синхронизации", - zh: "定期同步间隔", + "def": "Periodic Sync interval", + "es": "Intervalo de sincronización periódica", + "ja": "定時同期の感覚", + "ko": "주기적 동기화 간격", + "ru": "Интервал периодической синхронизации", + "zh": "定期同步间隔", + "zw-th": "Periodic Sync interval" }, "Prepare the 'report' to create an issue": { - def: "Prepare the 'report' to create an issue", - fr: "Préparer le « rapport » pour créer un ticket", - ja: "Issue 作成用の「レポート」を準備", - ko: "이슈 생성을 위한 '보고서' 준비", - ru: "Подготовить «отчёт» для создания Issue", - zh: "准备 '报告' 以创建问题单", - }, - Presets: { - def: "Presets", - es: "Preconfiguraciones", - fr: "Préréglages", - ja: "プリセット", - ko: "프리셋", - ru: "Пресеты", - zh: "预设", + "def": "Prepare the 'report' to create an issue", + "es": "Prepare the 'report' to create an issue", + "ja": "Issue 作成用の「レポート」を準備", + "ko": "이슈 생성을 위한 '보고서' 준비", + "ru": "Подготовить «отчёт» для создания Issue", + "zh": "准备 '报告' 以创建问题单", + "zw-th": "Prepare the 'report' to create an issue" + }, + "Presets": { + "def": "Presets", + "es": "Preconfiguraciones", + "ja": "プリセット", + "ko": "프리셋", + "ru": "Пресеты", + "zh": "预设", + "zw-th": "Presets" }, "Process small files in the foreground": { - def: "Process small files in the foreground", - es: "Procesar archivos pequeños en primer plano", - fr: "Traiter les petits fichiers au premier plan", - ja: "小さいファイルを最前面で処理", - ko: "포그라운드에서 작은 파일 처리", - ru: "Обрабатывать маленькие файлы в основном потоке", - zh: "在前台处理小文件", + "def": "Process small files in the foreground", + "es": "Procesar archivos pequeños en primer plano", + "ja": "小さいファイルを最前面で処理", + "ko": "포그라운드에서 작은 파일 처리", + "ru": "Обрабатывать маленькие файлы в основном потоке", + "zh": "在前台处理小文件", + "zw-th": "Process small files in the foreground" }, "Property Encryption": { - def: "Property Encryption", - fr: "Chiffrement des propriétés", - ru: "Шифрование свойств", - zh: "属性加密", + "def": "Property Encryption", + "es": "Property Encryption", + "ja": "Property Encryption", + "ko": "Property Encryption", + "ru": "Шифрование свойств", + "zh": "属性加密", + "zw-th": "Property Encryption" }, "RedFlag.Fetch.Method.Desc": { - def: "How do you want to fetch?\n- %{RedFlag.Fetch.Method.FetchSafer}.\n **Low Traffic**, **High CPU**, **Low Risk**\n Recommended if ...\n - Files possibly inconsistent\n - Files were not so much\n- %{RedFlag.Fetch.Method.FetchSmoother}.\n **Low Traffic**, **Moderate CPU**, **Low to Moderate Risk**\n Recommended if ...\n - Files probably consistent\n - You have a lot of files.\n- %{RedFlag.Fetch.Method.FetchTraditional}.\n **High Traffic**, **Low CPU**, **Low to Moderate Risk**\n\n>[!INFO]- Details\n> ## %{RedFlag.Fetch.Method.FetchSafer}.\n> **Low Traffic**, **High CPU**, **Low Risk**\n> This option first creates a local database using existing local files before fetching data from the remote source.\n> If matching files exist both locally and remotely, only the differences between them will be transferred.\n> However, files present in both locations will initially be handled as conflicted files. They will be resolved automatically if they are not actually conflicted, but this process may take time.\n> This is generally the safest method, minimizing data loss risk.\n> ## %{RedFlag.Fetch.Method.FetchSmoother}.\n> **Low Traffic**, **Moderate CPU**, **Low to Moderate Risk** (depending operation)\n> This option first creates chunks from local files for the database, then fetches data. Consequently, only chunks missing locally are transferred. However, all metadata is taken from the remote source.\n> Local files are then compared against this metadata at launch. The content considered newer will overwrite the older one (by modified time). This outcome is then synchronised back to the remote database.\n> This is generally safe if local files are genuinely the latest timestamp. However, it can cause problems if a file has a newer timestamp but older content (like the initial `welcome.md`).\n> This uses less CPU and faster than \"%{RedFlag.Fetch.Method.FetchSafer}\", but it may lead to data loss if not used carefully.\n> ## %{RedFlag.Fetch.Method.FetchTraditional}.\n> **High Traffic**, **Low CPU**, **Low to Moderate Risk** (depending operation)\n> All things will be fetched from the remote.\n> Similar to the %{RedFlag.Fetch.Method.FetchSmoother}, but all chunks are fetched from the remote source.\n> This is the most traditional way to fetch, typically consuming the most network traffic and time. It also carries a similar risk of overwriting remote files to the '%{RedFlag.Fetch.Method.FetchSmoother}' option.\n> However, it is often considered the most stable method because it is the longest-established and most straightforward approach.", - fr: "Comment voulez-vous récupérer ?\n- %{RedFlag.Fetch.Method.FetchSafer}.\n **Trafic faible**, **CPU élevé**, **Risque faible**\n Recommandé si ...\n - Fichiers possiblement incohérents\n - Fichiers peu nombreux\n- %{RedFlag.Fetch.Method.FetchSmoother}.\n **Trafic faible**, **CPU modéré**, **Risque faible à modéré**\n Recommandé si ...\n - Fichiers probablement cohérents\n - Vous avez beaucoup de fichiers.\n- %{RedFlag.Fetch.Method.FetchTraditional}.\n **Trafic élevé**, **CPU faible**, **Risque faible à modéré**\n\n>[!INFO]- Détails\n> ## %{RedFlag.Fetch.Method.FetchSafer}.\n> **Trafic faible**, **CPU élevé**, **Risque faible**\n> Cette option crée d'abord une base locale à partir des fichiers locaux existants avant de récupérer les données depuis la source distante.\n> Si des fichiers correspondants existent à la fois localement et à distance, seules les différences entre eux seront transférées.\n> Toutefois, les fichiers présents aux deux emplacements seront initialement traités comme en conflit. Ils seront résolus automatiquement s'ils ne le sont pas réellement, mais ce processus peut prendre du temps.\n> C'est généralement la méthode la plus sûre, minimisant le risque de perte de données.\n> ## %{RedFlag.Fetch.Method.FetchSmoother}.\n> **Trafic faible**, **CPU modéré**, **Risque faible à modéré** (selon l'opération)\n> Cette option crée d'abord des fragments à partir des fichiers locaux pour la base, puis récupère les données. Par conséquent, seuls les fragments manquants localement sont transférés. Cependant, toutes les métadonnées sont prises de la source distante.\n> Les fichiers locaux sont ensuite comparés à ces métadonnées au lancement. Le contenu considéré comme plus récent écrasera le plus ancien (selon la date de modification). Le résultat est ensuite synchronisé vers la base distante.\n> C'est généralement sûr si les fichiers locaux ont bien l'horodatage le plus récent. Cela peut toutefois poser problème si un fichier a un horodatage plus récent mais un contenu plus ancien (comme le `welcome.md` initial).\n> Cette méthode utilise moins de CPU et est plus rapide que « %{RedFlag.Fetch.Method.FetchSafer} », mais peut entraîner une perte de données si elle n'est pas utilisée avec précaution.\n> ## %{RedFlag.Fetch.Method.FetchTraditional}.\n> **Trafic élevé**, **CPU faible**, **Risque faible à modéré** (selon l'opération)\n> Tout sera récupéré depuis le distant.\n> Similaire à %{RedFlag.Fetch.Method.FetchSmoother}, mais tous les fragments sont récupérés depuis la source distante.\n> C'est la façon la plus traditionnelle de récupérer, consommant généralement le plus de trafic réseau et de temps. Elle comporte également un risque similaire d'écraser les fichiers distants à l'option « %{RedFlag.Fetch.Method.FetchSmoother} ».\n> Elle est toutefois souvent considérée comme la méthode la plus stable car c'est la plus ancienne et la plus directe.", - ja: "どのようにフェッチしますか?\n- %{RedFlag.Fetch.Method.FetchSafer}\n **低トラフィック**, **高CPU負荷**, **低リスク**\n 推奨条件...\n - ファイルの整合性に不安がある\n - ファイル数がそれほど多くない\n- %{RedFlag.Fetch.Method.FetchSmoother}\n **低トラフィック**, **中程CPU負荷**, **低~中リスク**\n 推奨条件...\n - ファイルがおそらく整合している\n - ファイル数が多い\n- %{RedFlag.Fetch.Method.FetchTraditional}\n **高トラフィック**, **低CPU負荷**, **低~中リスク**\n\n>[!INFO]- 詳細\n> ## %{RedFlag.Fetch.Method.FetchSafer}\n> **低トラフィック**, **高CPU負荷**, **低リスク**\n> このオプションは、リモートからデータをフェッチする前に、既存のローカルファイルを使用してローカルデータベースを作成します。\n> ローカルとリモートの両方に一致するファイルがある場合、差分のみが転送されます。\n> ただし、両方の場所に存在するファイルは最初は競合ファイルとして処理されます。実際に競合していなければ自動的に解決されますが、この処理には時間がかかる場合があります。\n> これは一般的に最も安全な方法で、データ損失のリスクを最小限に抑えます。\n> ## %{RedFlag.Fetch.Method.FetchSmoother}\n> **低トラフィック**, **中程CPU負荷**, **低~中リスク**(操作による)\n> このオプションは、最初にローカルファイルからデータベース用のチャンクを作成し、その後データをフェッチします。そのため、ローカルにないチャンクのみが転送されます。ただし、すべてのメタデータはリモートから取得されます。\n> ローカルファイルは起動時にこのメタデータと比較されます。新しいと判断されたコンテンツ(更新日時による)が古いものを上書きします。この結果はリモートデータベースに同期されます。\n> ローカルファイルが本当に最新のタイムスタンプであれば一般的に安全です。ただし、ファイルのタイムスタンプが新しくてもコンテンツが古い場合(初期の`welcome.md`など)は問題が発生する可能性があります。\n> これは\"%{RedFlag.Fetch.Method.FetchSafer}\"よりCPU使用量が少なく高速ですが、注意しないとデータ損失につながる可能性があります。\n> ## %{RedFlag.Fetch.Method.FetchTraditional}\n> **高トラフィック**, **低CPU負荷**, **低~中リスク**(操作による)\n> すべてのデータがリモートからフェッチされます。\n> %{RedFlag.Fetch.Method.FetchSmoother}と似ていますが、すべてのチャンクがリモートからフェッチされます。\n> これは最も従来のフェッチ方法で、通常最もネットワークトラフィックと時間を消費します。'%{RedFlag.Fetch.Method.FetchSmoother}'オプションと同様のリモートファイル上書きのリスクがあります。\n> ただし、最も歴史があり簡単なアプローチであるため、最も安定した方法と見なされることが多いです。", - ko: "어떻게 가져오시겠습니까?\n- %{RedFlag.Fetch.Method.FetchSafer}. (권장)\n **낮은 트래픽**, **높은 CPU**, **낮은 위험**\n- %{RedFlag.Fetch.Method.FetchSmoother}.\n **낮은 트래픽**, **보통 CPU**, **낮음에서 보통 위험**\n- %{RedFlag.Fetch.Method.FetchTraditional}.\n **높은 트래픽**, **낮은 CPU**, **낮음에서 보통 위험**\n\n>[!INFO]- 세부 사항\n> ## %{RedFlag.Fetch.Method.FetchSafer}. (권장)\n> **낮은 트래픽**, **높은 CPU**, **낮은 위험**\n> 이 옵션은 원격 소스에서 데이터를 가져오기 전에 기존 로컬 파일을 사용하여 로컬 데이터베이스를 먼저 생성합니다.\n> 로컬과 원격 모두에 일치하는 파일이 있으면 둘 사이의 차이점만 전송됩니다.\n> 하지만 두 위치 모두에 있는 파일은 초기에 충돌 파일로 처리됩니다. 실제로 충돌하지 않는다면 자동으로 해결되지만 이 과정은 시간이 걸릴 수 있습니다.\n> 이는 일반적으로 가장 안전한 방법으로 데이터 손실 위험을 최소화합니다.\n> ## %{RedFlag.Fetch.Method.FetchSmoother}.\n> **낮은 트래픽**, **보통 CPU**, **낮음에서 보통 위험** (작업에 따라)\n> 이 옵션은 먼저 로컬 파일에서 데이터베이스용 청크를 생성한 다음 데이터를 가져옵니다. 따라서 로컬에 없는 청크만 전송됩니다. 하지만 모든 메타데이터는 원격 소스에서 가져옵니다.\n> 그런 다음 로컬 파일이 시작 시 이 메타데이터와 비교됩니다. 더 새로운 것으로 간주되는 콘텐츠가 오래된 것을 덮어씁니다(수정 시간 기준). 이 결과는 원격 데이터베이스에 다시 동기화됩니다.\n> 로컬 파일이 실제로 최신 타임스탬프라면 일반적으로 안전합니다. 하지만 파일이 더 새로운 타임스탬프를 가지고 있지만 더 오래된 콘텐츠를 가지고 있다면(초기 `welcome.md`처럼) 문제가 발생할 수 있습니다.\n> 이는 \"%{RedFlag.Fetch.Method.FetchSafer}\"보다 CPU를 덜 사용하고 더 빠르지만 주의 깊게 사용하지 않으면 데이터 손실로 이어질 수 있습니다.\n> ## %{RedFlag.Fetch.Method.FetchTraditional}.\n> **높은 트래픽**, **낮은 CPU**, **낮음에서 보통 위험** (작업에 따라)\n> 모든 것이 원격에서 가져와집니다.\n> %{RedFlag.Fetch.Method.FetchSmoother}와 유사하지만 모든 청크가 원격 소스에서 가져와집니다.\n> 이는 가장 전통적인 가져오기 방법으로 일반적으로 가장 많은 네트워크 트래픽과 시간을 소모합니다. 또한 '%{RedFlag.Fetch.Method.FetchSmoother}' 옵션과 유사하게 원격 파일을 덮어쓸 위험이 있습니다.\n> 하지만 가장 오래되고 가장 직접적인 접근 방식이기 때문에 종종 가장 안정적인 방법으로 간주됩니다.", - ru: "Как вы хотите загрузить?", - zh: "How do you want to fetch?\n- %{RedFlag.Fetch.Method.FetchSafer}.\n **Low Traffic**, **High CPU**, **Low Risk**\n Recommended if ...\n - Files possibly inconsistent\n - Files were not so much\n- %{RedFlag.Fetch.Method.FetchSmoother}.\n **Low Traffic**, **Moderate CPU**, **Low to Moderate Risk**\n Recommended if ...\n - Files probably consistent\n - You have a lot of files.\n- %{RedFlag.Fetch.Method.FetchTraditional}.\n **High Traffic**, **Low CPU**, **Low to Moderate Risk**\n\n>[!INFO]- Details\n> ## %{RedFlag.Fetch.Method.FetchSafer}.\n> **Low Traffic**, **High CPU**, **Low Risk**\n> This option first creates a local database using existing local files before fetching data from the remote source.\n> If matching files exist both locally and remotely, only the differences between them will be transferred.\n> However, files present in both locations will initially be handled as conflicted files. They will be resolved automatically if they are not actually conflicted, but this process may take time.\n> This is generally the safest method, minimizing data loss risk.\n> ## %{RedFlag.Fetch.Method.FetchSmoother}.\n> **Low Traffic**, **Moderate CPU**, **Low to Moderate Risk** (depending operation)\n> This option first creates chunks from local files for the database, then fetches data. Consequently, only chunks missing locally are transferred. However, all metadata is taken from the remote source.\n> Local files are then compared against this metadata at launch. The content considered newer will overwrite the older one (by modified time). This outcome is then synchronised back to the remote database.\n> This is generally safe if local files are genuinely the latest timestamp. However, it can cause problems if a file has a newer timestamp but older content (like the initial `welcome.md`).\n> This uses less CPU and faster than \"%{RedFlag.Fetch.Method.FetchSafer}\", but it may lead to data loss if not used carefully.\n> ## %{RedFlag.Fetch.Method.FetchTraditional}.\n> **High Traffic**, **Low CPU**, **Low to Moderate Risk** (depending operation)\n> All things will be fetched from the remote.\n> Similar to the %{RedFlag.Fetch.Method.FetchSmoother}, but all chunks are fetched from the remote source.\n> This is the most traditional way to fetch, typically consuming the most network traffic and time. It also carries a similar risk of overwriting remote files to the '%{RedFlag.Fetch.Method.FetchSmoother}' option.\n> However, it is often considered the most stable method because it is the longest-established and most straightforward approach.", + "def": "How do you want to fetch?\n- %{RedFlag.Fetch.Method.FetchSafer}.\n **Low Traffic**, **High CPU**, **Low Risk**\n Recommended if ...\n - Files possibly inconsistent\n - Files were not so much\n- %{RedFlag.Fetch.Method.FetchSmoother}.\n **Low Traffic**, **Moderate CPU**, **Low to Moderate Risk**\n Recommended if ...\n - Files probably consistent\n - You have a lot of files.\n- %{RedFlag.Fetch.Method.FetchTraditional}.\n **High Traffic**, **Low CPU**, **Low to Moderate Risk**\n\n>[!INFO]- Details\n> ## %{RedFlag.Fetch.Method.FetchSafer}.\n> **Low Traffic**, **High CPU**, **Low Risk**\n> This option first creates a local database using existing local files before fetching data from the remote source.\n> If matching files exist both locally and remotely, only the differences between them will be transferred.\n> However, files present in both locations will initially be handled as conflicted files. They will be resolved automatically if they are not actually conflicted, but this process may take time.\n> This is generally the safest method, minimizing data loss risk.\n> ## %{RedFlag.Fetch.Method.FetchSmoother}.\n> **Low Traffic**, **Moderate CPU**, **Low to Moderate Risk** (depending operation)\n> This option first creates chunks from local files for the database, then fetches data. Consequently, only chunks missing locally are transferred. However, all metadata is taken from the remote source.\n> Local files are then compared against this metadata at launch. The content considered newer will overwrite the older one (by modified time). This outcome is then synchronised back to the remote database.\n> This is generally safe if local files are genuinely the latest timestamp. However, it can cause problems if a file has a newer timestamp but older content (like the initial `welcome.md`).\n> This uses less CPU and faster than \"%{RedFlag.Fetch.Method.FetchSafer}\", but it may lead to data loss if not used carefully.\n> ## %{RedFlag.Fetch.Method.FetchTraditional}.\n> **High Traffic**, **Low CPU**, **Low to Moderate Risk** (depending operation)\n> All things will be fetched from the remote.\n> Similar to the %{RedFlag.Fetch.Method.FetchSmoother}, but all chunks are fetched from the remote source.\n> This is the most traditional way to fetch, typically consuming the most network traffic and time. It also carries a similar risk of overwriting remote files to the '%{RedFlag.Fetch.Method.FetchSmoother}' option.\n> However, it is often considered the most stable method because it is the longest-established and most straightforward approach.", + "es": "How do you want to fetch?\n- %{RedFlag.Fetch.Method.FetchSafer}.\n **Low Traffic**, **High CPU**, **Low Risk**\n Recommended if ...\n - Files possibly inconsistent\n - Files were not so much\n- %{RedFlag.Fetch.Method.FetchSmoother}.\n **Low Traffic**, **Moderate CPU**, **Low to Moderate Risk**\n Recommended if ...\n - Files probably consistent\n - You have a lot of files.\n- %{RedFlag.Fetch.Method.FetchTraditional}.\n **High Traffic**, **Low CPU**, **Low to Moderate Risk**\n\n>[!INFO]- Details\n> ## %{RedFlag.Fetch.Method.FetchSafer}.\n> **Low Traffic**, **High CPU**, **Low Risk**\n> This option first creates a local database using existing local files before fetching data from the remote source.\n> If matching files exist both locally and remotely, only the differences between them will be transferred.\n> However, files present in both locations will initially be handled as conflicted files. They will be resolved automatically if they are not actually conflicted, but this process may take time.\n> This is generally the safest method, minimizing data loss risk.\n> ## %{RedFlag.Fetch.Method.FetchSmoother}.\n> **Low Traffic**, **Moderate CPU**, **Low to Moderate Risk** (depending operation)\n> This option first creates chunks from local files for the database, then fetches data. Consequently, only chunks missing locally are transferred. However, all metadata is taken from the remote source.\n> Local files are then compared against this metadata at launch. The content considered newer will overwrite the older one (by modified time). This outcome is then synchronised back to the remote database.\n> This is generally safe if local files are genuinely the latest timestamp. However, it can cause problems if a file has a newer timestamp but older content (like the initial `welcome.md`).\n> This uses less CPU and faster than \"%{RedFlag.Fetch.Method.FetchSafer}\", but it may lead to data loss if not used carefully.\n> ## %{RedFlag.Fetch.Method.FetchTraditional}.\n> **High Traffic**, **Low CPU**, **Low to Moderate Risk** (depending operation)\n> All things will be fetched from the remote.\n> Similar to the %{RedFlag.Fetch.Method.FetchSmoother}, but all chunks are fetched from the remote source.\n> This is the most traditional way to fetch, typically consuming the most network traffic and time. It also carries a similar risk of overwriting remote files to the '%{RedFlag.Fetch.Method.FetchSmoother}' option.\n> However, it is often considered the most stable method because it is the longest-established and most straightforward approach.", + "ja": "どのようにフェッチしますか?\n- %{RedFlag.Fetch.Method.FetchSafer}\n **低トラフィック**, **高CPU負荷**, **低リスク**\n 推奨条件...\n - ファイルの整合性に不安がある\n - ファイル数がそれほど多くない\n- %{RedFlag.Fetch.Method.FetchSmoother}\n **低トラフィック**, **中程CPU負荷**, **低~中リスク**\n 推奨条件...\n - ファイルがおそらく整合している\n - ファイル数が多い\n- %{RedFlag.Fetch.Method.FetchTraditional}\n **高トラフィック**, **低CPU負荷**, **低~中リスク**\n\n>[!INFO]- 詳細\n> ## %{RedFlag.Fetch.Method.FetchSafer}\n> **低トラフィック**, **高CPU負荷**, **低リスク**\n> このオプションは、リモートからデータをフェッチする前に、既存のローカルファイルを使用してローカルデータベースを作成します。\n> ローカルとリモートの両方に一致するファイルがある場合、差分のみが転送されます。\n> ただし、両方の場所に存在するファイルは最初は競合ファイルとして処理されます。実際に競合していなければ自動的に解決されますが、この処理には時間がかかる場合があります。\n> これは一般的に最も安全な方法で、データ損失のリスクを最小限に抑えます。\n> ## %{RedFlag.Fetch.Method.FetchSmoother}\n> **低トラフィック**, **中程CPU負荷**, **低~中リスク**(操作による)\n> このオプションは、最初にローカルファイルからデータベース用のチャンクを作成し、その後データをフェッチします。そのため、ローカルにないチャンクのみが転送されます。ただし、すべてのメタデータはリモートから取得されます。\n> ローカルファイルは起動時にこのメタデータと比較されます。新しいと判断されたコンテンツ(更新日時による)が古いものを上書きします。この結果はリモートデータベースに同期されます。\n> ローカルファイルが本当に最新のタイムスタンプであれば一般的に安全です。ただし、ファイルのタイムスタンプが新しくてもコンテンツが古い場合(初期の`welcome.md`など)は問題が発生する可能性があります。\n> これは\"%{RedFlag.Fetch.Method.FetchSafer}\"よりCPU使用量が少なく高速ですが、注意しないとデータ損失につながる可能性があります。\n> ## %{RedFlag.Fetch.Method.FetchTraditional}\n> **高トラフィック**, **低CPU負荷**, **低~中リスク**(操作による)\n> すべてのデータがリモートからフェッチされます。\n> %{RedFlag.Fetch.Method.FetchSmoother}と似ていますが、すべてのチャンクがリモートからフェッチされます。\n> これは最も従来のフェッチ方法で、通常最もネットワークトラフィックと時間を消費します。'%{RedFlag.Fetch.Method.FetchSmoother}'オプションと同様のリモートファイル上書きのリスクがあります。\n> ただし、最も歴史があり簡単なアプローチであるため、最も安定した方法と見なされることが多いです。", + "ko": "어떻게 가져오시겠습니까?\n- %{RedFlag.Fetch.Method.FetchSafer}. (권장)\n **낮은 트래픽**, **높은 CPU**, **낮은 위험**\n- %{RedFlag.Fetch.Method.FetchSmoother}.\n **낮은 트래픽**, **보통 CPU**, **낮음에서 보통 위험**\n- %{RedFlag.Fetch.Method.FetchTraditional}.\n **높은 트래픽**, **낮은 CPU**, **낮음에서 보통 위험**\n\n>[!INFO]- 세부 사항\n> ## %{RedFlag.Fetch.Method.FetchSafer}. (권장)\n> **낮은 트래픽**, **높은 CPU**, **낮은 위험**\n> 이 옵션은 원격 소스에서 데이터를 가져오기 전에 기존 로컬 파일을 사용하여 로컬 데이터베이스를 먼저 생성합니다.\n> 로컬과 원격 모두에 일치하는 파일이 있으면 둘 사이의 차이점만 전송됩니다.\n> 하지만 두 위치 모두에 있는 파일은 초기에 충돌 파일로 처리됩니다. 실제로 충돌하지 않는다면 자동으로 해결되지만 이 과정은 시간이 걸릴 수 있습니다.\n> 이는 일반적으로 가장 안전한 방법으로 데이터 손실 위험을 최소화합니다.\n> ## %{RedFlag.Fetch.Method.FetchSmoother}.\n> **낮은 트래픽**, **보통 CPU**, **낮음에서 보통 위험** (작업에 따라)\n> 이 옵션은 먼저 로컬 파일에서 데이터베이스용 청크를 생성한 다음 데이터를 가져옵니다. 따라서 로컬에 없는 청크만 전송됩니다. 하지만 모든 메타데이터는 원격 소스에서 가져옵니다.\n> 그런 다음 로컬 파일이 시작 시 이 메타데이터와 비교됩니다. 더 새로운 것으로 간주되는 콘텐츠가 오래된 것을 덮어씁니다(수정 시간 기준). 이 결과는 원격 데이터베이스에 다시 동기화됩니다.\n> 로컬 파일이 실제로 최신 타임스탬프라면 일반적으로 안전합니다. 하지만 파일이 더 새로운 타임스탬프를 가지고 있지만 더 오래된 콘텐츠를 가지고 있다면(초기 `welcome.md`처럼) 문제가 발생할 수 있습니다.\n> 이는 \"%{RedFlag.Fetch.Method.FetchSafer}\"보다 CPU를 덜 사용하고 더 빠르지만 주의 깊게 사용하지 않으면 데이터 손실로 이어질 수 있습니다.\n> ## %{RedFlag.Fetch.Method.FetchTraditional}.\n> **높은 트래픽**, **낮은 CPU**, **낮음에서 보통 위험** (작업에 따라)\n> 모든 것이 원격에서 가져와집니다.\n> %{RedFlag.Fetch.Method.FetchSmoother}와 유사하지만 모든 청크가 원격 소스에서 가져와집니다.\n> 이는 가장 전통적인 가져오기 방법으로 일반적으로 가장 많은 네트워크 트래픽과 시간을 소모합니다. 또한 '%{RedFlag.Fetch.Method.FetchSmoother}' 옵션과 유사하게 원격 파일을 덮어쓸 위험이 있습니다.\n> 하지만 가장 오래되고 가장 직접적인 접근 방식이기 때문에 종종 가장 안정적인 방법으로 간주됩니다.", + "ru": "Как вы хотите загрузить?", + "zh": "How do you want to fetch?\n- %{RedFlag.Fetch.Method.FetchSafer}.\n **Low Traffic**, **High CPU**, **Low Risk**\n Recommended if ...\n - Files possibly inconsistent\n - Files were not so much\n- %{RedFlag.Fetch.Method.FetchSmoother}.\n **Low Traffic**, **Moderate CPU**, **Low to Moderate Risk**\n Recommended if ...\n - Files probably consistent\n - You have a lot of files.\n- %{RedFlag.Fetch.Method.FetchTraditional}.\n **High Traffic**, **Low CPU**, **Low to Moderate Risk**\n\n>[!INFO]- Details\n> ## %{RedFlag.Fetch.Method.FetchSafer}.\n> **Low Traffic**, **High CPU**, **Low Risk**\n> This option first creates a local database using existing local files before fetching data from the remote source.\n> If matching files exist both locally and remotely, only the differences between them will be transferred.\n> However, files present in both locations will initially be handled as conflicted files. They will be resolved automatically if they are not actually conflicted, but this process may take time.\n> This is generally the safest method, minimizing data loss risk.\n> ## %{RedFlag.Fetch.Method.FetchSmoother}.\n> **Low Traffic**, **Moderate CPU**, **Low to Moderate Risk** (depending operation)\n> This option first creates chunks from local files for the database, then fetches data. Consequently, only chunks missing locally are transferred. However, all metadata is taken from the remote source.\n> Local files are then compared against this metadata at launch. The content considered newer will overwrite the older one (by modified time). This outcome is then synchronised back to the remote database.\n> This is generally safe if local files are genuinely the latest timestamp. However, it can cause problems if a file has a newer timestamp but older content (like the initial `welcome.md`).\n> This uses less CPU and faster than \"%{RedFlag.Fetch.Method.FetchSafer}\", but it may lead to data loss if not used carefully.\n> ## %{RedFlag.Fetch.Method.FetchTraditional}.\n> **High Traffic**, **Low CPU**, **Low to Moderate Risk** (depending operation)\n> All things will be fetched from the remote.\n> Similar to the %{RedFlag.Fetch.Method.FetchSmoother}, but all chunks are fetched from the remote source.\n> This is the most traditional way to fetch, typically consuming the most network traffic and time. It also carries a similar risk of overwriting remote files to the '%{RedFlag.Fetch.Method.FetchSmoother}' option.\n> However, it is often considered the most stable method because it is the longest-established and most straightforward approach.", + "zw-th": "How do you want to fetch?\n- %{RedFlag.Fetch.Method.FetchSafer}.\n **Low Traffic**, **High CPU**, **Low Risk**\n Recommended if ...\n - Files possibly inconsistent\n - Files were not so much\n- %{RedFlag.Fetch.Method.FetchSmoother}.\n **Low Traffic**, **Moderate CPU**, **Low to Moderate Risk**\n Recommended if ...\n - Files probably consistent\n - You have a lot of files.\n- %{RedFlag.Fetch.Method.FetchTraditional}.\n **High Traffic**, **Low CPU**, **Low to Moderate Risk**\n\n>[!INFO]- Details\n> ## %{RedFlag.Fetch.Method.FetchSafer}.\n> **Low Traffic**, **High CPU**, **Low Risk**\n> This option first creates a local database using existing local files before fetching data from the remote source.\n> If matching files exist both locally and remotely, only the differences between them will be transferred.\n> However, files present in both locations will initially be handled as conflicted files. They will be resolved automatically if they are not actually conflicted, but this process may take time.\n> This is generally the safest method, minimizing data loss risk.\n> ## %{RedFlag.Fetch.Method.FetchSmoother}.\n> **Low Traffic**, **Moderate CPU**, **Low to Moderate Risk** (depending operation)\n> This option first creates chunks from local files for the database, then fetches data. Consequently, only chunks missing locally are transferred. However, all metadata is taken from the remote source.\n> Local files are then compared against this metadata at launch. The content considered newer will overwrite the older one (by modified time). This outcome is then synchronised back to the remote database.\n> This is generally safe if local files are genuinely the latest timestamp. However, it can cause problems if a file has a newer timestamp but older content (like the initial `welcome.md`).\n> This uses less CPU and faster than \"%{RedFlag.Fetch.Method.FetchSafer}\", but it may lead to data loss if not used carefully.\n> ## %{RedFlag.Fetch.Method.FetchTraditional}.\n> **High Traffic**, **Low CPU**, **Low to Moderate Risk** (depending operation)\n> All things will be fetched from the remote.\n> Similar to the %{RedFlag.Fetch.Method.FetchSmoother}, but all chunks are fetched from the remote source.\n> This is the most traditional way to fetch, typically consuming the most network traffic and time. It also carries a similar risk of overwriting remote files to the '%{RedFlag.Fetch.Method.FetchSmoother}' option.\n> However, it is often considered the most stable method because it is the longest-established and most straightforward approach." }, "RedFlag.Fetch.Method.FetchSafer": { - def: "Create a local database once before fetching", - fr: "Créer une base locale avant de récupérer", - ja: "フェッチ前にローカルデータベースを作成", - ko: "가져오기 전에 로컬 데이터베이스를 한 번 생성", - ru: "Создать локальную базу данных перед загрузкой", - zh: "Create a local database once before fetching", + "def": "Create a local database once before fetching", + "es": "Create a local database once before fetching", + "ja": "フェッチ前にローカルデータベースを作成", + "ko": "가져오기 전에 로컬 데이터베이스를 한 번 생성", + "ru": "Создать локальную базу данных перед загрузкой", + "zh": "Create a local database once before fetching", + "zw-th": "Create a local database once before fetching" }, "RedFlag.Fetch.Method.FetchSmoother": { - def: "Create local file chunks before fetching", - fr: "Créer des fragments de fichiers locaux avant de récupérer", - ja: "フェッチ前にローカルファイルチャンクを作成", - ko: "가져오기 전에 로컬 파일 청크 생성", - ru: "Создать локальные чанки перед загрузкой", - zh: "Create local file chunks before fetching", + "def": "Create local file chunks before fetching", + "es": "Create local file chunks before fetching", + "ja": "フェッチ前にローカルファイルチャンクを作成", + "ko": "가져오기 전에 로컬 파일 청크 생성", + "ru": "Создать локальные чанки перед загрузкой", + "zh": "Create local file chunks before fetching", + "zw-th": "Create local file chunks before fetching" }, "RedFlag.Fetch.Method.FetchTraditional": { - def: "Fetch everything from the remote", - fr: "Tout récupérer depuis le distant", - ja: "リモートからすべてをフェッチ", - ko: "원격에서 모든 것 가져오기", - ru: "Загрузить всё с удалённого", - zh: "Fetch everything from the remote", + "def": "Fetch everything from the remote", + "es": "Fetch everything from the remote", + "ja": "リモートからすべてをフェッチ", + "ko": "원격에서 모든 것 가져오기", + "ru": "Загрузить всё с удалённого", + "zh": "Fetch everything from the remote", + "zw-th": "Fetch everything from the remote" }, "RedFlag.Fetch.Method.Title": { - def: "How do you want to fetch?", - fr: "Comment voulez-vous récupérer ?", - ja: "どのようにフェッチしますか?", - ko: "어떻게 가져오시겠습니까?", - ru: "Как вы хотите загрузить?", - zh: "How do you want to fetch?", + "def": "How do you want to fetch?", + "es": "How do you want to fetch?", + "ja": "どのようにフェッチしますか?", + "ko": "어떻게 가져오시겠습니까?", + "ru": "Как вы хотите загрузить?", + "zh": "How do you want to fetch?", + "zw-th": "How do you want to fetch?" }, "RedFlag.FetchRemoteConfig.Buttons.Cancel": { - def: "No, use local settings", - fr: "Non, utiliser les paramètres locaux", - ja: "いいえ、ローカル設定を使用", - ru: "Нет, использовать локальные настройки", - zh: "No, use local settings", + "def": "No, use local settings", + "es": "No, use local settings", + "ja": "いいえ、ローカル設定を使用", + "ko": "No, use local settings", + "ru": "Нет, использовать локальные настройки", + "zh": "No, use local settings", + "zw-th": "No, use local settings" }, "RedFlag.FetchRemoteConfig.Buttons.Fetch": { - def: "Yes, fetch and apply remote settings", - fr: "Oui, récupérer et appliquer les paramètres distants", - ja: "はい、リモート設定を取得して適用", - ru: "Да, загрузить и применить удалённые настройки", - zh: "Yes, fetch and apply remote settings", + "def": "Yes, fetch and apply remote settings", + "es": "Yes, fetch and apply remote settings", + "ja": "はい、リモート設定を取得して適用", + "ko": "Yes, fetch and apply remote settings", + "ru": "Да, загрузить и применить удалённые настройки", + "zh": "Yes, fetch and apply remote settings", + "zw-th": "Yes, fetch and apply remote settings" }, "RedFlag.FetchRemoteConfig.Message": { - def: "Do you want to fetch and apply remotely stored preference settings to the device?", - fr: "Voulez-vous récupérer et appliquer les préférences stockées à distance sur cet appareil ?", - ja: "リモートに保存された設定を取得して、このデバイスに適用しますか?", - ru: "Вы хотите загрузить и применить удалённые настройки?", - zh: "Do you want to fetch and apply remotely stored preference settings to the device?", + "def": "Do you want to fetch and apply remotely stored preference settings to the device?", + "es": "Do you want to fetch and apply remotely stored preference settings to the device?", + "ja": "リモートに保存された設定を取得して、このデバイスに適用しますか?", + "ko": "Do you want to fetch and apply remotely stored preference settings to the device?", + "ru": "Вы хотите загрузить и применить удалённые настройки?", + "zh": "Do you want to fetch and apply remotely stored preference settings to the device?", + "zw-th": "Do you want to fetch and apply remotely stored preference settings to the device?" }, "RedFlag.FetchRemoteConfig.Title": { - def: "Fetch Remote Configuration", - fr: "Récupérer la configuration distante", - ja: "リモート設定の取得", - ru: "Загрузить удалённую конфигурацию", - zh: "Fetch Remote Configuration", + "def": "Fetch Remote Configuration", + "es": "Fetch Remote Configuration", + "ja": "リモート設定の取得", + "ko": "Fetch Remote Configuration", + "ru": "Загрузить удалённую конфигурацию", + "zh": "Fetch Remote Configuration", + "zw-th": "Fetch Remote Configuration" }, "Reducing the frequency with which on-disk changes are reflected into the DB": { - def: "Reducing the frequency with which on-disk changes are reflected into the DB", - es: "Reducir frecuencia de actualizaciones de disco a BD", - fr: "Réduire la fréquence à laquelle les modifications sur disque sont reflétées dans la base", - ja: "ローカルでの変更がデータベースに反映される頻度を下げる(所定の回数まとめて同期する、逐一反映しない)", - ko: "디스크 변경 사항이 데이터베이스에 반영되는 빈도를 줄입니다", - ru: "Уменьшение частоты отражения изменений с диска в БД", - zh: "降低将磁盘上的更改反映到数据库中的频率", - }, - Region: { - def: "Region", - es: "Región", - fr: "Région", - ja: "リージョン", - ko: "지역", - ru: "Регион", - zh: "区域", + "def": "Reducing the frequency with which on-disk changes are reflected into the DB", + "es": "Reducir frecuencia de actualizaciones de disco a BD", + "ja": "ローカルでの変更がデータベースに反映される頻度を下げる(所定の回数まとめて同期する、逐一反映しない)", + "ko": "디스크 변경 사항이 데이터베이스에 반영되는 빈도를 줄입니다", + "ru": "Уменьшение частоты отражения изменений с диска в БД", + "zh": "降低将磁盘上的更改反映到数据库中的频率", + "zw-th": "Reducing the frequency with which on-disk changes are reflected into the DB" + }, + "Region": { + "def": "Region", + "es": "Región", + "ja": "リージョン", + "ko": "지역", + "ru": "Регион", + "zh": "区域", + "zw-th": "Region" }, "Remote server type": { - def: "Remote server type", - es: "Tipo de servidor remoto", - fr: "Type de serveur distant", - ja: "リモートの種別", - ko: "원격 서버 유형", - ru: "Тип удалённого сервера", - zh: "远程服务器类型", + "def": "Remote server type", + "es": "Tipo de servidor remoto", + "ja": "リモートの種別", + "ko": "원격 서버 유형", + "ru": "Тип удалённого сервера", + "zh": "远程服务器类型", + "zw-th": "Remote server type" }, "Remote Type": { - def: "Remote Type", - es: "Tipo de remoto", - fr: "Type de distant", - ja: "同期方式", - ko: "원격 유형", - ru: "Удалённый тип", - zh: "远程类型", + "def": "Remote Type", + "es": "Tipo de remoto", + "ja": "同期方式", + "ko": "원격 유형", + "ru": "Удалённый тип", + "zh": "远程类型", + "zw-th": "Remote Type" }, - "Replicator.Dialogue.Locked.Action.Dismiss": { - def: "Cancel for reconfirmation", - fr: "Annuler pour reconfirmer", - ja: "再確認のためキャンセル", - ko: "재확인을 위해 취소", - ru: "Отмена для подтверждения", - zh: "Cancel for reconfirmation", + "Replicator.Dialogue.Locked.Action.Dismiss": { + "def": "Cancel for reconfirmation", + "es": "Cancel for reconfirmation", + "ja": "再確認のためキャンセル", + "ko": "재확인을 위해 취소", + "ru": "Отмена для подтверждения", + "zh": "Cancel for reconfirmation", + "zw-th": "Cancel for reconfirmation" }, "Replicator.Dialogue.Locked.Action.Fetch": { - def: "Reset Synchronisation on This Device", - es: "Restablecer sincronización en este dispositivo", - fr: "Réinitialiser la synchronisation sur cet appareil", - ja: "このデバイスの同期をリセット", - ko: "원격 데이터베이스에서 모든 것을 다시 가져오기", - ru: "Сбросить синхронизацию на этом устройстве", - zh: "Reset Synchronisation on This Device", + "def": "Reset Synchronisation on This Device", + "es": "Restablecer sincronización en este dispositivo", + "ja": "このデバイスの同期をリセット", + "ko": "원격 데이터베이스에서 모든 것을 다시 가져오기", + "ru": "Сбросить синхронизацию на этом устройстве", + "zh": "Reset Synchronisation on This Device", + "zw-th": "Reset Synchronisation on This Device" }, "Replicator.Dialogue.Locked.Action.Unlock": { - def: "Unlock the remote database", - fr: "Déverrouiller la base distante", - ja: "リモートデータベースのロックを解除", - ko: "원격 데이터베이스 잠금 해제", - ru: "Разблокировать удалённую базу данных", - zh: "Unlock the remote database", + "def": "Unlock the remote database", + "es": "Unlock the remote database", + "ja": "リモートデータベースのロックを解除", + "ko": "원격 데이터베이스 잠금 해제", + "ru": "Разблокировать удалённую базу данных", + "zh": "Unlock the remote database", + "zw-th": "Unlock the remote database" }, "Replicator.Dialogue.Locked.Message": { - def: "Remote database is locked. This is due to a rebuild on one of the terminals.\nThe device is therefore asked to withhold the connection to avoid database corruption.\n\nThere are three options that we can do:\n\n- %{Replicator.Dialogue.Locked.Action.Fetch}\n The most preferred and reliable way. This will dispose the local database once, and reset all synchronisation information from the remote database again, In most case, we can perform this safely. However, it takes some time and should be done in stable network.\n- %{Replicator.Dialogue.Locked.Action.Unlock}\n This method can only be used if we are already reliably synchronised by other replication methods. This does not simply mean that we have the same files. If you are not sure, you should avoid it.\n- %{Replicator.Dialogue.Locked.Action.Dismiss}\n This will cancel the operation. And we will asked again on next request.\n", - fr: "La base distante est verrouillée. Ceci est dû à une reconstruction sur l'un des terminaux.\nL'appareil est donc prié de suspendre la connexion pour éviter la corruption de la base.\n\nTrois options sont possibles :\n\n- %{Replicator.Dialogue.Locked.Action.Fetch}\n La méthode la plus recommandée et fiable. Elle supprime la base locale puis réinitialise toutes les informations de synchronisation depuis la base distante. Dans la plupart des cas, c'est sûr. Cela prend cependant du temps et devrait se faire sur un réseau stable.\n- %{Replicator.Dialogue.Locked.Action.Unlock}\n Cette méthode ne peut être utilisée que si nous sommes déjà synchronisés de manière fiable par d'autres méthodes de réplication. Cela ne signifie pas simplement que nous avons les mêmes fichiers. Dans le doute, évitez.\n- %{Replicator.Dialogue.Locked.Action.Dismiss}\n Ceci annule l'opération. Vous serez à nouveau interrogé à la prochaine requête.\n", - ja: "リモートデータベースがロックされています。これはいずれかの端末での再構築が原因です。\nデータベースの破損を避けるため、このデバイスは接続を保留するよう求められています。\n\n3つのオプションがあります:\n\n- %{Replicator.Dialogue.Locked.Action.Fetch}\n 最も推奨される信頼性の高い方法です。ローカルデータベースを一度破棄し、リモートデータベースからすべての同期情報を再取得します。ほとんどの場合、これは安全に実行できます。ただし、時間がかかり、安定したネットワークで実行する必要があります。\n- %{Replicator.Dialogue.Locked.Action.Unlock}\n この方法は、他のレプリケーション(複製)方法ですでに確実に同期されている場合のみ使用できます。単に同じファイルがあるという意味ではありません。確信がない場合は避けてください。\n- %{Replicator.Dialogue.Locked.Action.Dismiss}\n 操作をキャンセルします。次回のリクエスト時に再度確認されます。\n", - ko: "원격 데이터베이스가 잠겨 있습니다. 이는 일부 터미널에서 데이터베이스를 재구축했기 때문입니다.\n따라서 현재 기기는 데이터베이스 손상을 방지하기 위해 연결을 일시적으로 보류해야 합니다.\n\n선택할 수 있는 세 가지 방법이 있습니다:\n\n- %{Replicator.Dialogue.Locked.Action.Fetch}\n 가장 권장되고 신뢰할 수 있는 방법입니다. 로컬 데이터베이스를 초기화한 뒤, 원격 데이터베이스의 전체 데이터를 다시 가져옵니다. 대부분의 경우 안전하게 수행할 수 있으나, 시간이 다소 걸리며 안정적인 네트워크 환경에서 진행해야 합니다.\n- %{Replicator.Dialogue.Locked.Action.Unlock}\n 이 방법은 다른 동기화 방식으로 이미 완전하고 안정적으로 동기화된 경우에만 사용할 수 있습니다. 단순히 파일이 같다는 의미가 아니므로, 확신이 없다면 사용을 피하는 것이 좋습니다.\n- %{Replicator.Dialogue.Locked.Action.Dismiss}\n 이번 작업을 취소하고, 다음 요청 시 다시 안내받습니다.\n", - ru: "Удалённая база данных заблокирована. Это связано с перестроением на одном из устройств.", - zh: "Remote database is locked. This is due to a rebuild on one of the terminals.\nThe device is therefore asked to withhold the connection to avoid database corruption.\n\nThere are three options that we can do:\n\n- %{Replicator.Dialogue.Locked.Action.Fetch}\n The most preferred and reliable way. This will dispose the local database once, and fetch all from the remote database again, In most case, we can perform this safely. However, it takes some time and should be done in stable network.\n- %{Replicator.Dialogue.Locked.Action.Unlock}\n This method can only be used if we are already reliably synchronised by other replication methods. This does not simply mean that we have the same files. If you are not sure, you should avoid it.\n- %{Replicator.Dialogue.Locked.Action.Dismiss}\n This will cancel the operation. And we will asked again on next request.\n", + "def": "Remote database is locked. This is due to a rebuild on one of the terminals.\nThe device is therefore asked to withhold the connection to avoid database corruption.\n\nThere are three options that we can do:\n\n- %{Replicator.Dialogue.Locked.Action.Fetch}\n The most preferred and reliable way. This will dispose the local database once, and reset all synchronisation information from the remote database again, In most case, we can perform this safely. However, it takes some time and should be done in stable network.\n- %{Replicator.Dialogue.Locked.Action.Unlock}\n This method can only be used if we are already reliably synchronised by other replication methods. This does not simply mean that we have the same files. If you are not sure, you should avoid it.\n- %{Replicator.Dialogue.Locked.Action.Dismiss}\n This will cancel the operation. And we will asked again on next request.\n", + "es": "Remote database is locked. This is due to a rebuild on one of the terminals.\nThe device is therefore asked to withhold the connection to avoid database corruption.\n\nThere are three options that we can do:\n\n- %{Replicator.Dialogue.Locked.Action.Fetch}\n The most preferred and reliable way. This will dispose the local database once, and reset all synchronisation information from the remote database again, In most case, we can perform this safely. However, it takes some time and should be done in stable network.\n- %{Replicator.Dialogue.Locked.Action.Unlock}\n This method can only be used if we are already reliably synchronised by other replication methods. This does not simply mean that we have the same files. If you are not sure, you should avoid it.\n- %{Replicator.Dialogue.Locked.Action.Dismiss}\n This will cancel the operation. And we will asked again on next request.\n", + "ja": "リモートデータベースがロックされています。これはいずれかの端末での再構築が原因です。\nデータベースの破損を避けるため、このデバイスは接続を保留するよう求められています。\n\n3つのオプションがあります:\n\n- %{Replicator.Dialogue.Locked.Action.Fetch}\n 最も推奨される信頼性の高い方法です。ローカルデータベースを一度破棄し、リモートデータベースからすべての同期情報を再取得します。ほとんどの場合、これは安全に実行できます。ただし、時間がかかり、安定したネットワークで実行する必要があります。\n- %{Replicator.Dialogue.Locked.Action.Unlock}\n この方法は、他のレプリケーション(複製)方法ですでに確実に同期されている場合のみ使用できます。単に同じファイルがあるという意味ではありません。確信がない場合は避けてください。\n- %{Replicator.Dialogue.Locked.Action.Dismiss}\n 操作をキャンセルします。次回のリクエスト時に再度確認されます。\n", + "ko": "원격 데이터베이스가 잠겨 있습니다. 이는 일부 터미널에서 데이터베이스를 재구축했기 때문입니다.\n따라서 현재 기기는 데이터베이스 손상을 방지하기 위해 연결을 일시적으로 보류해야 합니다.\n\n선택할 수 있는 세 가지 방법이 있습니다:\n\n- %{Replicator.Dialogue.Locked.Action.Fetch}\n 가장 권장되고 신뢰할 수 있는 방법입니다. 로컬 데이터베이스를 초기화한 뒤, 원격 데이터베이스의 전체 데이터를 다시 가져옵니다. 대부분의 경우 안전하게 수행할 수 있으나, 시간이 다소 걸리며 안정적인 네트워크 환경에서 진행해야 합니다.\n- %{Replicator.Dialogue.Locked.Action.Unlock}\n 이 방법은 다른 동기화 방식으로 이미 완전하고 안정적으로 동기화된 경우에만 사용할 수 있습니다. 단순히 파일이 같다는 의미가 아니므로, 확신이 없다면 사용을 피하는 것이 좋습니다.\n- %{Replicator.Dialogue.Locked.Action.Dismiss}\n 이번 작업을 취소하고, 다음 요청 시 다시 안내받습니다.\n", + "ru": "Удалённая база данных заблокирована. Это связано с перестроением на одном из устройств.", + "zh": "Remote database is locked. This is due to a rebuild on one of the terminals.\nThe device is therefore asked to withhold the connection to avoid database corruption.\n\nThere are three options that we can do:\n\n- %{Replicator.Dialogue.Locked.Action.Fetch}\n The most preferred and reliable way. This will dispose the local database once, and fetch all from the remote database again, In most case, we can perform this safely. However, it takes some time and should be done in stable network.\n- %{Replicator.Dialogue.Locked.Action.Unlock}\n This method can only be used if we are already reliably synchronised by other replication methods. This does not simply mean that we have the same files. If you are not sure, you should avoid it.\n- %{Replicator.Dialogue.Locked.Action.Dismiss}\n This will cancel the operation. And we will asked again on next request.\n", + "zw-th": "Remote database is locked. This is due to a rebuild on one of the terminals.\nThe device is therefore asked to withhold the connection to avoid database corruption.\n\nThere are three options that we can do:\n\n- %{Replicator.Dialogue.Locked.Action.Fetch}\n The most preferred and reliable way. This will dispose the local database once, and reset all synchronisation information from the remote database again, In most case, we can perform this safely. However, it takes some time and should be done in stable network.\n- %{Replicator.Dialogue.Locked.Action.Unlock}\n This method can only be used if we are already reliably synchronised by other replication methods. This does not simply mean that we have the same files. If you are not sure, you should avoid it.\n- %{Replicator.Dialogue.Locked.Action.Dismiss}\n This will cancel the operation. And we will asked again on next request.\n" }, "Replicator.Dialogue.Locked.Message.Fetch": { - def: "Fetch all has been scheduled. Plug-in will be restarted to perform it.", - fr: "Tout récupérer a été planifié. Le plug-in sera redémarré pour l'exécuter.", - ja: "全フェッチがスケジュールされました。プラグインは実行のために再起動されます。", - ko: "모든 것 가져오기가 예약되었습니다. 이를 수행하기 위해 플러그인이 재시작됩니다.", - ru: "Загрузка всего запланирована. Плагин будет перезапущен.", - zh: "Fetch all has been scheduled. Plug-in will be restarted to perform it.", + "def": "Fetch all has been scheduled. Plug-in will be restarted to perform it.", + "es": "Fetch all has been scheduled. Plug-in will be restarted to perform it.", + "ja": "全フェッチがスケジュールされました。プラグインは実行のために再起動されます。", + "ko": "모든 것 가져오기가 예약되었습니다. 이를 수행하기 위해 플러그인이 재시작됩니다.", + "ru": "Загрузка всего запланирована. Плагин будет перезапущен.", + "zh": "Fetch all has been scheduled. Plug-in will be restarted to perform it.", + "zw-th": "Fetch all has been scheduled. Plug-in will be restarted to perform it." }, "Replicator.Dialogue.Locked.Message.Unlocked": { - def: "The remote database has been unlocked. Please retry the operation.", - fr: "La base distante a été déverrouillée. Veuillez réessayer l'opération.", - ja: "リモートデータベースのロックが解除されました。操作を再試行してください。", - ko: "원격 데이터베이스 잠금이 해제되었습니다. 작업을 다시 시도해 주세요.", - ru: "Удалённая база данных разблокирована. Повторите операцию.", - zh: "The remote database has been unlocked. Please retry the operation.", + "def": "The remote database has been unlocked. Please retry the operation.", + "es": "The remote database has been unlocked. Please retry the operation.", + "ja": "リモートデータベースのロックが解除されました。操作を再試行してください。", + "ko": "원격 데이터베이스 잠금이 해제되었습니다. 작업을 다시 시도해 주세요.", + "ru": "Удалённая база данных разблокирована. Повторите операцию.", + "zh": "The remote database has been unlocked. Please retry the operation.", + "zw-th": "The remote database has been unlocked. Please retry the operation." }, "Replicator.Dialogue.Locked.Title": { - def: "Locked", - fr: "Verrouillée", - ja: "ロック中", - ko: "잠김", - ru: "Заблокировано", - zh: "Locked", + "def": "Locked", + "es": "Locked", + "ja": "ロック中", + "ko": "잠김", + "ru": "Заблокировано", + "zh": "Locked", + "zw-th": "Locked" }, "Replicator.Message.Cleaned": { - def: "Database cleaning up is in process. replication has been cancelled", - fr: "Nettoyage de la base en cours. La réplication a été annulée", - ja: "データベースのクリーナップ中です。レプリケーション(複製)はキャンセルされました。", - ko: "데이터베이스 정리가 진행 중입니다. 복제가 취소되었습니다", - ru: "Очистка базы данных в процессе. Репликация отменена", - zh: "Database cleaning up is in process. replication has been cancelled", + "def": "Database cleaning up is in process. replication has been cancelled", + "es": "Database cleaning up is in process. replication has been cancelled", + "ja": "データベースのクリーナップ中です。レプリケーション(複製)はキャンセルされました。", + "ko": "데이터베이스 정리가 진행 중입니다. 복제가 취소되었습니다", + "ru": "Очистка базы данных в процессе. Репликация отменена", + "zh": "Database cleaning up is in process. replication has been cancelled", + "zw-th": "Database cleaning up is in process. replication has been cancelled" }, "Replicator.Message.InitialiseFatalError": { - def: "No replicator is available, this is the fatal error.", - fr: "Aucun réplicateur disponible, il s'agit d'une erreur fatale.", - ja: "レプリケーターが利用できません。これは致命的なエラーです。", - ko: "사용 가능한 복제기가 없습니다. 치명적인 오류입니다.", - ru: "Репликатор недоступен, это фатальная ошибка.", - zh: "No replicator is available, this is the fatal error.", + "def": "No replicator is available, this is the fatal error.", + "es": "No replicator is available, this is the fatal error.", + "ja": "レプリケーターが利用できません。これは致命的なエラーです。", + "ko": "사용 가능한 복제기가 없습니다. 치명적인 오류입니다.", + "ru": "Репликатор недоступен, это фатальная ошибка.", + "zh": "No replicator is available, this is the fatal error.", + "zw-th": "No replicator is available, this is the fatal error." }, "Replicator.Message.Pending": { - def: "Some file events are pending. Replication has been cancelled.", - fr: "Des événements de fichier sont en attente. La réplication a été annulée.", - ja: "ファイルイベントが保留中です。レプリケーション(複製)はキャンセルされました。", - ko: "일부 파일 이벤트가 대기 중입니다. 복제가 취소되었습니다.", - ru: "Некоторые события файлов ожидают. Репликация отменена.", - zh: "Some file events are pending. Replication has been cancelled.", + "def": "Some file events are pending. Replication has been cancelled.", + "es": "Some file events are pending. Replication has been cancelled.", + "ja": "ファイルイベントが保留中です。レプリケーション(複製)はキャンセルされました。", + "ko": "일부 파일 이벤트가 대기 중입니다. 복제가 취소되었습니다.", + "ru": "Некоторые события файлов ожидают. Репликация отменена.", + "zh": "Some file events are pending. Replication has been cancelled.", + "zw-th": "Some file events are pending. Replication has been cancelled." }, "Replicator.Message.SomeModuleFailed": { - def: "Replication has been cancelled by some module failure", - fr: "La réplication a été annulée suite à l'échec d'un module", - ja: "一部のモジュールの失敗によりレプリケーション(複製)がキャンセルされました。", - ko: "일부 모듈 실패로 복제가 취소되었습니다", - ru: "Репликация отменена из-за сбоя модуля", - zh: "Replication has been cancelled by some module failure", + "def": "Replication has been cancelled by some module failure", + "es": "Replication has been cancelled by some module failure", + "ja": "一部のモジュールの失敗によりレプリケーション(複製)がキャンセルされました。", + "ko": "일부 모듈 실패로 복제가 취소되었습니다", + "ru": "Репликация отменена из-за сбоя модуля", + "zh": "Replication has been cancelled by some module failure", + "zw-th": "Replication has been cancelled by some module failure" }, "Replicator.Message.VersionUpFlash": { - def: "An update has been detected. Please open the Settings dialogue and check the Change Log. Replication has been cancelled.", - fr: "Une mise à jour a été détectée. Veuillez ouvrir la boîte de dialogue des paramètres et consulter le journal des modifications. La réplication a été annulée.", - ja: "更新が検出されました。設定ダイアログを開いて変更ログを確認してください。レプリケーション(複製)はキャンセルされました。", - ko: "설정을 열고 메시지를 확인해 주세요. 복제가 취소되었습니다.", - ru: "Обновление обнаружено. Откройте настройки и проверьте историю изменений.", - zh: "An update has been detected. Please open the Settings dialogue and check the Change Log. Replication has been cancelled.", + "def": "An update has been detected. Please open the Settings dialogue and check the Change Log. Replication has been cancelled.", + "es": "An update has been detected. Please open the Settings dialogue and check the Change Log. Replication has been cancelled.", + "ja": "更新が検出されました。設定ダイアログを開いて変更ログを確認してください。レプリケーション(複製)はキャンセルされました。", + "ko": "설정을 열고 메시지를 확인해 주세요. 복제가 취소되었습니다.", + "ru": "Обновление обнаружено. Откройте настройки и проверьте историю изменений.", + "zh": "An update has been detected. Please open the Settings dialogue and check the Change Log. Replication has been cancelled.", + "zw-th": "An update has been detected. Please open the Settings dialogue and check the Change Log. Replication has been cancelled." }, "Requires restart of Obsidian": { - def: "Requires restart of Obsidian", - es: "Requiere reiniciar Obsidian", - fr: "Nécessite un redémarrage d'Obsidian", - ja: "Obsidianの再起動が必要です", - ko: "Obsidian 재시작 필요", - ru: "Требуется перезапуск Obsidian", - zh: "需要重启 Obsidian", + "def": "Requires restart of Obsidian", + "es": "Requiere reiniciar Obsidian", + "ja": "Obsidianの再起動が必要です", + "ko": "Obsidian 재시작 필요", + "ru": "Требуется перезапуск Obsidian", + "zh": "需要重启 Obsidian", + "zw-th": "Requires restart of Obsidian" }, "Requires restart of Obsidian.": { - def: "Requires restart of Obsidian.", - es: "Requiere reiniciar Obsidian", - fr: "Nécessite un redémarrage d'Obsidian.", - ja: "Obsidianの再起動が必要です。", - ko: "Obsidian 재시작이 필요합니다.", - ru: "Требуется перезапуск Obsidian.", - zh: "需要重启 Obsidian ", + "def": "Requires restart of Obsidian.", + "es": "Requiere reiniciar Obsidian", + "ja": "Obsidianの再起動が必要です。", + "ko": "Obsidian 재시작이 필요합니다.", + "ru": "Требуется перезапуск Obsidian.", + "zh": "需要重启 Obsidian ", + "zw-th": "Requires restart of Obsidian." }, "Rerun Onboarding Wizard": { - def: "Rerun Onboarding Wizard", - fr: "Relancer l'assistant d'intégration", - ja: "オンボーディングウィザードを再実行", - ko: "온보딩 마법사 다시 실행", - ru: "Перезапустить мастер настройки", - zh: "重新运行引导向导", + "def": "Rerun Onboarding Wizard", + "es": "Rerun Onboarding Wizard", + "ja": "オンボーディングウィザードを再実行", + "ko": "온보딩 마법사 다시 실행", + "ru": "Перезапустить мастер настройки", + "zh": "重新运行引导向导", + "zw-th": "Rerun Onboarding Wizard" }, "Rerun the onboarding wizard to set up Self-hosted LiveSync again.": { - def: "Rerun the onboarding wizard to set up Self-hosted LiveSync again.", - fr: "Relancer l'assistant d'intégration pour reconfigurer Self-hosted LiveSync.", - ja: "オンボーディングウィザードを再実行して、Self-hosted LiveSync をもう一度設定します。", - ko: "온보딩 마법사를 다시 실행하여 Self-hosted LiveSync를 다시 설정합니다.", - ru: "Перезапустить мастер настройки для повторной настройки Self-hosted LiveSync.", - zh: "重新运行引导向导以再次设置 Self-hosted LiveSync。", + "def": "Rerun the onboarding wizard to set up Self-hosted LiveSync again.", + "es": "Rerun the onboarding wizard to set up Self-hosted LiveSync again.", + "ja": "オンボーディングウィザードを再実行して、Self-hosted LiveSync をもう一度設定します。", + "ko": "온보딩 마법사를 다시 실행하여 Self-hosted LiveSync를 다시 설정합니다.", + "ru": "Перезапустить мастер настройки для повторной настройки Self-hosted LiveSync.", + "zh": "重新运行引导向导以再次设置 Self-hosted LiveSync。", + "zw-th": "Rerun the onboarding wizard to set up Self-hosted LiveSync again." }, "Rerun Wizard": { - def: "Rerun Wizard", - fr: "Relancer l'assistant", - ja: "ウィザードを再実行", - ko: "마법사 다시 실행", - ru: "Перезапустить мастер", - zh: "重新运行向导", + "def": "Rerun Wizard", + "es": "Rerun Wizard", + "ja": "ウィザードを再実行", + "ko": "마법사 다시 실행", + "ru": "Перезапустить мастер", + "zh": "重新运行向导", + "zw-th": "Rerun Wizard" }, "Reset notification threshold and check the remote database usage": { - def: "Reset notification threshold and check the remote database usage", - fr: "Réinitialiser le seuil de notification et vérifier l'utilisation de la base distante", - ja: "通知しきい値をリセットしてリモートデータベース使用量を確認", - ko: "알림 임계값을 초기화하고 원격 데이터베이스 사용량 확인", - ru: "Сбросить порог уведомления и проверить использование удалённой базы данных", - zh: "重置通知阈值并检查远程数据库使用情况", + "def": "Reset notification threshold and check the remote database usage", + "es": "Reset notification threshold and check the remote database usage", + "ja": "通知しきい値をリセットしてリモートデータベース使用量を確認", + "ko": "알림 임계값을 초기화하고 원격 데이터베이스 사용량 확인", + "ru": "Сбросить порог уведомления и проверить использование удалённой базы данных", + "zh": "重置通知阈值并检查远程数据库使用情况", + "zw-th": "Reset notification threshold and check the remote database usage" }, "Reset the remote storage size threshold and check the remote storage size again.": { - def: "Reset the remote storage size threshold and check the remote storage size again.", - fr: "Réinitialiser le seuil de taille du stockage distant et vérifier à nouveau la taille du stockage distant.", - ja: "リモートストレージ容量のしきい値をリセットし、リモートストレージ容量を再確認します。", - ko: "원격 저장소 크기 임계값을 초기화하고 원격 저장소 크기를 다시 확인합니다.", - ru: "Сбросить порог размера удалённого хранилища и проверить размер хранилища снова.", - zh: "重置远程存储大小阈值并再次检查远程存储大小。", + "def": "Reset the remote storage size threshold and check the remote storage size again.", + "es": "Reset the remote storage size threshold and check the remote storage size again.", + "ja": "リモートストレージ容量のしきい値をリセットし、リモートストレージ容量を再確認します。", + "ko": "원격 저장소 크기 임계값을 초기화하고 원격 저장소 크기를 다시 확인합니다.", + "ru": "Сбросить порог размера удалённого хранилища и проверить размер хранилища снова.", + "zh": "重置远程存储大小阈值并再次检查远程存储大小。", + "zw-th": "Reset the remote storage size threshold and check the remote storage size again." }, "Run Doctor": { - def: "Run Doctor", - fr: "Lancer le Docteur", - ja: "診断を実行", - ko: "진단 실행", - ru: "Запустить диагностику", - zh: "立即诊断", + "def": "Run Doctor", + "es": "Run Doctor", + "ja": "診断を実行", + "ko": "진단 실행", + "ru": "Запустить диагностику", + "zh": "立即诊断", + "zw-th": "Run Doctor" + }, + "Save settings to a markdown file. You will be notified when new settings arrive. You can set different files by the platform.": { + "def": "Save settings to a markdown file. You will be notified when new settings arrive. You can set different files by the platform.", + "es": "Guardar configuración en archivo markdown. Se notificarán nuevos ajustes. Puede definir diferentes archivos por plataforma", + "ja": "Markdownファイルに設定を保存します。新しい設定が到着すると通知されます。プラットフォームごとに異なるファイルを設定できます。", + "ko": "설정을 마크다운 파일에 저장합니다. 새로운 설정이 도착하면 알림을 받게 됩니다. 플랫폼별로 다른 파일을 설정할 수 있습니다.", + "ru": "Save settings to a markdown file. You will be notified when new settings arrive. You can set different files by the platform.", + "zh": "将设置保存到一个 Markdown 文件中。当新设置到达时,您将收到通知。您可以根据平台设置不同的文件 ", + "zw-th": "Save settings to a markdown file. You will be notified when new settings arrive. You can set different files by the platform." +>>>>>>> 7a02c45 (i18n: fill all missing keys across all 7 non-English languages to 100%) }, "Save settings to a markdown file. You will be notified when new settings arrive. You can set different files by the platform.": { @@ -4161,6 +8437,7 @@ export const _allMessages = { zh: "将设置保存到一个 Markdown 文件中。当新设置到达时,您将收到通知。您可以根据平台设置不同的文件 ", }, "Saving will be performed forcefully after this number of seconds.": { +<<<<<<< HEAD def: "Saving will be performed forcefully after this number of seconds.", es: "Guardado forzado tras esta cantidad de segundos", fr: "L'enregistrement sera forcé au bout de ce nombre de secondes.", @@ -4660,22 +8937,589 @@ export const _allMessages = { zh: "打开文件时同步", }, "Sync on Save": { - def: "Sync on Save", - es: "Sincronizar al guardar", - fr: "Synchroniser à l'enregistrement", - ja: "保存時に同期", - ko: "저장 시 동기화", - ru: "Синхронизация при сохранении", - zh: "保存时同步", + def: "Sync on Save", + es: "Sincronizar al guardar", + fr: "Synchroniser à l'enregistrement", + ja: "保存時に同期", + ko: "저장 시 동기화", + ru: "Синхронизация при сохранении", + zh: "保存时同步", + }, + "Sync on Startup": { + def: "Sync on Startup", + es: "Sincronizar al iniciar", + fr: "Synchroniser au démarrage", + ja: "起動時同期", + ko: "시작 시 동기화", + ru: "Синхронизация при запуске", + zh: "启动时同步", +======= + "def": "Saving will be performed forcefully after this number of seconds.", + "es": "Guardado forzado tras esta cantidad de segundos", + "ja": "この秒数後に強制的に保存されます。", + "ko": "이 시간(초) 후에 강제로 저장이 수행됩니다.", + "ru": "Сохранение будет принудительно выполнено после этого количества секунд.", + "zh": "在此秒数后将强制执行保存 ", + "zw-th": "Saving will be performed forcefully after this number of seconds." + }, + "Scan changes on customization sync": { + "def": "Scan changes on customization sync", + "es": "Escanear cambios en sincronización de personalización", + "ja": "カスタマイズされた同期時に、変更をスキャンする", + "ko": "사용자 설정 동기화 시 변경 사항 검색", + "ru": "Сканировать изменения при синхронизации настроек", + "zh": "在自定义同步时扫描更改", + "zw-th": "Scan changes on customization sync" + }, + "Scan customization automatically": { + "def": "Scan customization automatically", + "es": "Escanear personalización automáticamente", + "ja": "自動的にカスタマイズをスキャン", + "ko": "사용자 설정 자동 검색", + "ru": "Сканировать настройки автоматически", + "zh": "自动扫描自定义设置", + "zw-th": "Scan customization automatically" + }, + "Scan customization before replicating.": { + "def": "Scan customization before replicating.", + "es": "Escanear personalización antes de replicar", + "ja": "レプリケーション(複製)前に、カスタマイズをスキャン", + "ko": "복제하기 전에 사용자 설정을 검색합니다.", + "ru": "Сканировать настройки перед репликацией.", + "zh": "在复制前扫描自定义设置 ", + "zw-th": "Scan customization before replicating." + }, + "Scan customization every 1 minute.": { + "def": "Scan customization every 1 minute.", + "es": "Escanear personalización cada 1 minuto", + "ja": "カスタマイズのスキャンを1分ごとに行う", + "ko": "1분마다 사용자 설정을 검색합니다.", + "ru": "Сканировать настройки каждую минуту.", + "zh": "每1分钟扫描自定义设置 ", + "zw-th": "Scan customization every 1 minute." + }, + "Scan customization periodically": { + "def": "Scan customization periodically", + "es": "Escanear personalización periódicamente", + "ja": "定期的にカスタマイズをスキャン", + "ko": "주기적으로 사용자 설정 검색", + "ru": "Сканировать настройки периодически", + "zh": "定期扫描自定义设置", + "zw-th": "Scan customization periodically" + }, + "Scan for hidden files before replication": { + "def": "Scan for hidden files before replication", + "es": "Escanear archivos ocultos antes de replicar", + "ja": "レプリケーション(複製)開始前に、隠しファイルのスキャンを行う", + "ko": "복제 전 숨겨진 파일 검색", + "ru": "Сканировать скрытые файлы перед репликацией", + "zh": "复制前扫描隐藏文件", + "zw-th": "Scan for hidden files before replication" + }, + "Scan hidden files periodically": { + "def": "Scan hidden files periodically", + "es": "Escanear archivos ocultos periódicamente", + "ja": "定期的に隠しファイルのスキャンを行う", + "ko": "주기적으로 숨겨진 파일 검색", + "ru": "Сканировать скрытые файлы периодически", + "zh": "定期扫描隐藏文件", + "zw-th": "Scan hidden files periodically" + }, + "Seconds, 0 to disable": { + "def": "Seconds, 0 to disable", + "es": "Segundos, 0 para desactivar", + "ja": "秒数、0で無効", + "ko": "초 단위, 0으로 설정하면 비활성화", + "ru": "Секунд, 0 для отключения", + "zh": "秒,0为禁用", + "zw-th": "Seconds, 0 to disable" + }, + "Seconds. Saving to the local database will be delayed until this value after we stop typing or saving.": { + "def": "Seconds. Saving to the local database will be delayed until this value after we stop typing or saving.", + "es": "Segundos. Guardado en BD local se retrasará hasta este valor tras dejar de escribir/guardar", + "ja": "秒。入力や保存を停止してからこの値の間、ローカルデータベースへの保存が遅延されます。", + "ko": "초 단위입니다. 타이핑이나 저장을 중단한 후 이 시간동안 로컬 데이터베이스 저장이 지연됩니다.", + "ru": "Секунды. Сохранение в локальную базу данных будет отложено.", + "zh": "秒。在我们停止输入或保存后,保存到本地数据库将延迟此值 ", + "zw-th": "Seconds. Saving to the local database will be delayed until this value after we stop typing or saving." + }, + "Secret Key": { + "def": "Secret Key", + "es": "Clave secreta", + "ja": "シークレットキー", + "ko": "시크릿 키", + "ru": "Секретный ключ", + "zh": "Secret Key", + "zw-th": "Secret Key" + }, + "Server URI": { + "def": "Server URI", + "es": "URI del servidor", + "ja": "URI", + "ko": "서버 URI", + "ru": "URI сервера", + "zh": "服务器 URI", + "zw-th": "Server URI" + }, + "Setting.GenerateKeyPair.Desc": { + "def": "We have generated a key pair!\n\nNote: This key pair will never be shown again. Please save it in a safe place. If you have lost it, you need to generate a new key pair.\nNote 2: The public key is in spki format, and the Private key is in pkcs8 format. For the sake of convenience, newlines are converted to `\\n` in public key.\nNote 3: The public key should be configured in the remote database, and the private key should be configured in local devices.\n\n>[!FOR YOUR EYES ONLY]-\n>
\n>\n> ### Public Key\n> ```\n${public_key}\n> ```\n>\n> ### Private Key\n> ```\n${private_key}\n> ```\n>\n>
\n\n>[!Both for copying]-\n>\n>
\n>\n> ```\n${public_key}\n${private_key}\n> ```\n>\n>
\n\n", + "es": "Hemos generado un par de claves.\n\nNota: Este par de claves no volverá a mostrarse. Guárdalo en un lugar seguro. Si lo pierdes, tendrás que generar uno nuevo.\nNota 2: La clave pública está en formato spki y la clave privada en formato pkcs8. Para mayor comodidad, los saltos de línea de la clave pública se convierten en `\\n`.\nNota 3: La clave pública debe configurarse en la base de datos remota y la clave privada en los dispositivos locales.\n\n>[!SOLO PARA TUS OJOS]-\n>
\n>\n> ### Clave pública\n> ```\n${public_key}\n> ```\n>\n> ### Clave privada\n> ```\n${private_key}\n> ```\n>\n>
\n\n>[!Ambas para copiar]-\n>\n>
\n>\n> ```\n${public_key}\n${private_key}\n> ```\n>\n>
", + "ja": "キーペアを生成しました!\n\n注意: このキーペアは再度表示されません。安全な場所に保存してください。紛失した場合は、新しいキーペアを生成する必要があります。\n注意2: 公開鍵はspki形式、秘密鍵はpkcs8形式です。利便性のため、公開鍵の改行は`\\n`に変換されています。\n注意3: 公開鍵はリモートデータベースに、秘密鍵はローカルデバイスに設定してください。\n\n>[!FOR YOUR EYES ONLY]-\n>
\n>\n> ### 公開鍵\n> ```\n${public_key}\n> ```\n>\n> ### 秘密鍵\n> ```\n${private_key}\n> ```\n>\n>
\n\n>[!Both for copying]-\n>\n>
\n>\n> ```\n${public_key}\n${private_key}\n> ```\n>\n>
\n\n", + "ko": "키 페어를 생성했습니다!\n\n참고: 이 키 페어는 다시 표시되지 않습니다. 안전한 곳에 저장해 주세요. 분실하면 새 키 페어를 생성해야 합니다.\n참고 2: 공개 키는 spki 형식이고, 개인 키는 pkcs8 형식입니다. 편의상 공개 키의 줄 바꿈은 `\\n`으로 변환됩니다.\n참고 3: 공개 키는 원격 데이터베이스에서 구성되어야 하고, 개인 키는 로컬 기기에서 구성되어야 합니다.\n\n>[!FOR YOUR EYES ONLY]-\n>
\n>\n> ### 공개 키\n> ```\n${public_key}\n> ```\n>\n> ### 개인 키\n> ```\n${private_key}\n> ```\n>\n>
\n\n>[!Both for copying]-\n>\n>
\n>\n> ```\n${public_key}\n${private_key}\n> ```\n>\n>
\n\n\n", + "ru": "Мы сгенерировали пару ключей!", + "zh": "We have generated a key pair!\n\nNote: This key pair will never be shown again. Please save it in a safe place. If you have lost it, you need to generate a new key pair.\nNote 2: The public key is in spki format, and the Private key is in pkcs8 format. For the sake of convenience, newlines are converted to `\\n` in public key.\nNote 3: The public key should be configured in the remote database, and the private key should be configured in local devices.\n\n>[!FOR YOUR EYES ONLY]-\n>
\n>\n> ### Public Key\n> ```\n${public_key}\n> ```\n>\n> ### Private Key\n> ```\n${private_key}\n> ```\n>\n>
\n\n>[!Both for copying]-\n>\n>
\n>\n> ```\n${public_key}\n${private_key}\n> ```\n>\n>
\n\n", + "zw-th": "We have generated a key pair!\n\nNote: This key pair will never be shown again. Please save it in a safe place. If you have lost it, you need to generate a new key pair.\nNote 2: The public key is in spki format, and the Private key is in pkcs8 format. For the sake of convenience, newlines are converted to `\\n` in public key.\nNote 3: The public key should be configured in the remote database, and the private key should be configured in local devices.\n\n>[!FOR YOUR EYES ONLY]-\n>
\n>\n> ### Public Key\n> ```\n${public_key}\n> ```\n>\n> ### Private Key\n> ```\n${private_key}\n> ```\n>\n>
\n\n>[!Both for copying]-\n>\n>
\n>\n> ```\n${public_key}\n${private_key}\n> ```\n>\n>
\n\n" + }, + "Setting.GenerateKeyPair.Title": { + "def": "New key pair has been generated!", + "es": "¡Se ha generado un nuevo par de claves!", + "ja": "新しいキーペアが生成されました!", + "ko": "새 키 페어가 생성되었습니다!", + "ru": "Новая пара ключей сгенерирована!", + "zh": "New key pair has been generated!", + "zw-th": "New key pair has been generated!" + }, + "Setting.TroubleShooting": { + "def": "TroubleShooting", + "es": "TroubleShooting", + "ja": "トラブルシューティング", + "ko": "문제 해결", + "ru": "Устранение неполадок", + "zh": "故障排除", + "zw-th": "TroubleShooting" + }, + "Setting.TroubleShooting.Doctor": { + "def": "Setting Doctor", + "es": "Setting Doctor", + "ja": "設定診断ツール", + "ko": "설정 진단 마법사", + "ru": "Диагностика настроек", + "zh": "设置诊断", + "zw-th": "Setting Doctor" + }, + "Setting.TroubleShooting.Doctor.Desc": { + "def": "Detects non optimal settings. (Same as during migration)", + "es": "Detects non optimal settings. (Same as during migration)", + "ja": "最適でない設定を検出します。(マイグレーション時と同じ)", + "ko": "최적화되지 않은 설정을 감지합니다. (데이터 구조 전환 시와 동일)", + "ru": "Обнаруживает неоптимальные настройки.", + "zh": "检测系统中不合理的设置。(与迁移期间逻辑相同)", + "zw-th": "Detects non optimal settings. (Same as during migration)" + }, + "Setting.TroubleShooting.ScanBrokenFiles": { + "def": "Scan for broken files", + "es": "Scan for broken files", + "ja": "破損ファイルのスキャン", + "ko": "손상된 파일 검사", + "ru": "Сканировать повреждённые файлы", + "zh": "扫描损坏或异常的文件", + "zw-th": "Scan for broken files" + }, + "Setting.TroubleShooting.ScanBrokenFiles.Desc": { + "def": "Scans for files that are not stored correctly in the database.", + "es": "Scans for files that are not stored correctly in the database.", + "ja": "データベースに正しく保存されていないファイルをスキャンします。", + "ko": "데이터베이스에 올바르게 저장되지 않은 파일을 검사합니다.", + "ru": "Сканирует файлы, которые неправильно хранятся в базе данных.", + "zh": "扫描数据库中未正确存储的文件。", + "zw-th": "Scans for files that are not stored correctly in the database." + }, + "SettingTab.Message.AskRebuild": { + "def": "Your changes require fetching from the remote database. Do you want to proceed?", + "es": "Your changes require fetching from the remote database. Do you want to proceed?", + "ja": "変更にはリモートデータベースからのフェッチが必要です。続行しますか?", + "ko": "변경 사항을 적용하려면 원격 데이터베이스에서 가져와야 합니다. 계속 진행하시겠습니까?", + "ru": "Ваши изменения требуют загрузки из удалённой базы данных. Хотите продолжить?", + "zh": "Your changes require fetching from the remote database. Do you want to proceed?", + "zw-th": "Your changes require fetching from the remote database. Do you want to proceed?" + }, + "Setup.Apply.Buttons.ApplyAndFetch": { + "def": "Apply and Fetch", + "es": "Apply and Fetch", + "ja": "適用してフェッチ", + "ko": "Apply and Fetch", + "ru": "Применить и загрузить", + "zh": "Apply and Fetch", + "zw-th": "Apply and Fetch" + }, + "Setup.Apply.Buttons.ApplyAndMerge": { + "def": "Apply and Merge", + "es": "Apply and Merge", + "ja": "適用してマージ", + "ko": "Apply and Merge", + "ru": "Применить и объединить", + "zh": "Apply and Merge", + "zw-th": "Apply and Merge" + }, + "Setup.Apply.Buttons.ApplyAndRebuild": { + "def": "Apply and Rebuild", + "es": "Apply and Rebuild", + "ja": "適用して再構築", + "ko": "Apply and Rebuild", + "ru": "Применить и перестроить", + "zh": "Apply and Rebuild", + "zw-th": "Apply and Rebuild" + }, + "Setup.Apply.Buttons.Cancel": { + "def": "Discard and Cancel", + "es": "Discard and Cancel", + "ja": "破棄してキャンセル", + "ko": "Discard and Cancel", + "ru": "Отменить и отменить", + "zh": "Discard and Cancel", + "zw-th": "Discard and Cancel" + }, + "Setup.Apply.Buttons.OnlyApply": { + "def": "Only Apply", + "es": "Only Apply", + "ja": "適用のみ", + "ko": "Only Apply", + "ru": "Только применить", + "zh": "Only Apply", + "zw-th": "Only Apply" + }, + "Setup.Apply.Message": { + "def": "The new configuration is ready. Let us proceed to apply it.\nThere are several ways to apply this:\n\n- Apply and Fetch\n Configure this device as a new client. After applying, synchronise from the remote server.\n- Apply and Merge\n Configure on a device that already has the file. It processes the local files and transfers the differences. Conflicts may arise.\n- Apply and Rebuild\n Rebuild the remote using local files. This is typically done if the server becomes corrupted or we wish to start from scratch.\n Other devices will be locked and required to re-fetch.\n- Only Apply\n Apply only. Conflicts may arise if a rebuild is required.", + "es": "The new configuration is ready. Let us proceed to apply it.\nThere are several ways to apply this:\n\n- Apply and Fetch\n Configure this device as a new client. After applying, synchronise from the remote server.\n- Apply and Merge\n Configure on a device that already has the file. It processes the local files and transfers the differences. Conflicts may arise.\n- Apply and Rebuild\n Rebuild the remote using local files. This is typically done if the server becomes corrupted or we wish to start from scratch.\n Other devices will be locked and required to re-fetch.\n- Only Apply\n Apply only. Conflicts may arise if a rebuild is required.", + "ja": "新しい設定の準備ができました。適用に進みましょう。\n適用方法はいくつかあります:\n\n- 適用してフェッチ\n このデバイスを新しいクライアントとして設定します。適用後、リモートサーバーから同期します。\n- 適用してマージ\n 既にファイルがあるデバイスで設定します。ローカルファイルを処理し、差分を転送します。競合が発生する場合があります。\n- 適用して再構築\n ローカルファイルを使用してリモートを再構築します。これは通常、サーバーが破損した場合や最初からやり直したい場合に行います。\n 他のデバイスはロックされ、再フェッチが必要になります。\n- 適用のみ\n 適用のみを行います。再構築が必要な場合、競合が発生する可能性があります。", + "ko": "The new configuration is ready. Let us proceed to apply it.\nThere are several ways to apply this:\n\n- Apply and Fetch\n Configure this device as a new client. After applying, synchronise from the remote server.\n- Apply and Merge\n Configure on a device that already has the file. It processes the local files and transfers the differences. Conflicts may arise.\n- Apply and Rebuild\n Rebuild the remote using local files. This is typically done if the server becomes corrupted or we wish to start from scratch.\n Other devices will be locked and required to re-fetch.\n- Only Apply\n Apply only. Conflicts may arise if a rebuild is required.", + "ru": "Новая конфигурация готова. Есть несколько способов применить её.", + "zh": "The new configuration is ready. Let us proceed to apply it.\nThere are several ways to apply this:\n\n- Apply and Fetch\n Configure this device as a new client. After applying, synchronise from the remote server.\n- Apply and Merge\n Configure on a device that already has the file. It processes the local files and transfers the differences. Conflicts may arise.\n- Apply and Rebuild\n Rebuild the remote using local files. This is typically done if the server becomes corrupted or we wish to start from scratch.\n Other devices will be locked and required to re-fetch.\n- Only Apply\n Apply only. Conflicts may arise if a rebuild is required.", + "zw-th": "The new configuration is ready. Let us proceed to apply it.\nThere are several ways to apply this:\n\n- Apply and Fetch\n Configure this device as a new client. After applying, synchronise from the remote server.\n- Apply and Merge\n Configure on a device that already has the file. It processes the local files and transfers the differences. Conflicts may arise.\n- Apply and Rebuild\n Rebuild the remote using local files. This is typically done if the server becomes corrupted or we wish to start from scratch.\n Other devices will be locked and required to re-fetch.\n- Only Apply\n Apply only. Conflicts may arise if a rebuild is required." + }, + "Setup.Apply.Title": { + "def": "Apply new configuration from the ${method}", + "es": "Apply new configuration from the ${method}", + "ja": "${method}からの新しい設定を適用", + "ko": "Apply new configuration from the ${method}", + "ru": "Применить новую конфигурацию из method", + "zh": "Apply new configuration from the ${method}", + "zw-th": "Apply new configuration from the ${method}" + }, + "Setup.Apply.WarningRebuildRecommended": { + "def": "NOTE: after adjusting the settings, it has been determined that a rebuild is required; Just Import is not recommended.", + "es": "NOTE: after adjusting the settings, it has been determined that a rebuild is required; Just Import is not recommended.", + "ja": "注意: 設定の調整後、再構築が必要と判断されました。インポートのみは推奨されません。", + "ko": "NOTE: after adjusting the settings, it has been determined that a rebuild is required; Just Import is not recommended.", + "ru": "ПРИМЕЧАНИЕ: после настройки изменений определено, что требуется перестроение.", + "zh": "NOTE: after adjusting the settings, it has been determined that a rebuild is required; Just Import is not recommended.", + "zw-th": "NOTE: after adjusting the settings, it has been determined that a rebuild is required; Just Import is not recommended." + }, + "Setup.Doctor.Buttons.No": { + "def": "No, please use the settings in the URI as is", + "es": "No, please use the settings in the URI as is", + "ja": "いいえ、URIの設定をそのまま使用", + "ko": "No, please use the settings in the URI as is", + "ru": "Нет, использовать настройки из URI как есть", + "zh": "No, please use the settings in the URI as is", + "zw-th": "No, please use the settings in the URI as is" + }, + "Setup.Doctor.Buttons.Yes": { + "def": "Yes, please consult the doctor", + "es": "Yes, please consult the doctor", + "ja": "はい、診断ツールに相談する", + "ko": "Yes, please consult the doctor", + "ru": "Да, пожалуйста, запустить диагностику", + "zh": "Yes, please consult the doctor", + "zw-th": "Yes, please consult the doctor" + }, + "Setup.Doctor.Message": { + "def": "Self-hosted LiveSync has gradually become longer in history and some recommended settings have changed.\n\nNow, setup is a very good time to do this.\n\nDo you want to run Doctor to check if the imported settings are optimal compared to the latest state?", + "es": "Self-hosted LiveSync has gradually become longer in history and some recommended settings have changed.\n\nNow, setup is a very good time to do this.\n\nDo you want to run Doctor to check if the imported settings are optimal compared to the latest state?", + "ja": "Self-hosted LiveSyncは徐々に歴史が長くなり、一部の推奨設定が変更されています。\n\nセットアップは、これを行う非常に良い機会です。\n\nインポートされた設定が最新の状態と比較して最適かどうかを確認するために、診断ツールを実行しますか?", + "ko": "Self-hosted LiveSync has gradually become longer in history and some recommended settings have changed.\n\nNow, setup is a very good time to do this.\n\nDo you want to run Doctor to check if the imported settings are optimal compared to the latest state?", + "ru": "Self-hosted LiveSync постепенно набрал историю и некоторые рекомендуемые настройки изменились.", + "zh": "Self-hosted LiveSync has gradually become longer in history and some recommended settings have changed.\n\nNow, setup is a very good time to do this.\n\nDo you want to run Doctor to check if the imported settings are optimal compared to the latest state?", + "zw-th": "Self-hosted LiveSync has gradually become longer in history and some recommended settings have changed.\n\nNow, setup is a very good time to do this.\n\nDo you want to run Doctor to check if the imported settings are optimal compared to the latest state?" + }, + "Setup.Doctor.Title": { + "def": "Do you want to consult the doctor?", + "es": "Do you want to consult the doctor?", + "ja": "診断ツールに相談しますか?", + "ko": "Do you want to consult the doctor?", + "ru": "Хотите запустить диагностику?", + "zh": "Do you want to consult the doctor?", + "zw-th": "Do you want to consult the doctor?" + }, + "Setup.FetchRemoteConf.Buttons.Fetch": { + "def": "Yes, please fetch the configuration", + "es": "Yes, please fetch the configuration", + "ja": "はい、設定を取得", + "ko": "Yes, please fetch the configuration", + "ru": "Да, загрузить конфигурацию", + "zh": "Yes, please fetch the configuration", + "zw-th": "Yes, please fetch the configuration" + }, + "Setup.FetchRemoteConf.Buttons.Skip": { + "def": "No, please use the settings in the URI", + "es": "No, please use the settings in the URI", + "ja": "いいえ、URIの設定を使用", + "ko": "No, please use the settings in the URI", + "ru": "Нет, использовать настройки из URI", + "zh": "No, please use the settings in the URI", + "zw-th": "No, please use the settings in the URI" + }, + "Setup.FetchRemoteConf.Message": { + "def": "If we have already synchronised once with another device, the remote database stores the suitable configuration values between the synchronised devices. The plug-in would like to retrieve them for robust configuration.\n\nHowever, we have to make sure the one thing. Are we currently in a situation where we can access the network safely and retrieve the settings?\n\nNote: Mostly, you are safe to do this, that your remote database is hosted with a SSL certificate, and your network is not compromised.", + "es": "If we have already synchronised once with another device, the remote database stores the suitable configuration values between the synchronised devices. The plug-in would like to retrieve them for robust configuration.\n\nHowever, we have to make sure the one thing. Are we currently in a situation where we can access the network safely and retrieve the settings?\n\nNote: Mostly, you are safe to do this, that your remote database is hosted with a SSL certificate, and your network is not compromised.", + "ja": "既に他のデバイスと同期したことがある場合、リモートデータベースには同期されたデバイス間の適切な設定値が保存されています。プラグインは堅牢な設定のためにそれらを取得したいと考えています。\n\nただし、1つ確認が必要です。現在、ネットワークに安全にアクセスして設定を取得できる状況ですか?\n\n注意: リモートデータベースがSSL証明書でホストされており、ネットワークが侵害されていなければ、ほとんどの場合安全に実行できます。", + "ko": "If we have already synchronised once with another device, the remote database stores the suitable configuration values between the synchronised devices. The plug-in would like to retrieve them for robust configuration.\n\nHowever, we have to make sure the one thing. Are we currently in a situation where we can access the network safely and retrieve the settings?\n\nNote: Mostly, you are safe to do this, that your remote database is hosted with a SSL certificate, and your network is not compromised.", + "ru": "Если мы уже синхронизировались с другим устройством, удалённая база данных хранит подходящие значения конфигурации.", + "zh": "If we have already synchronised once with another device, the remote database stores the suitable configuration values between the synchronised devices. The plug-in would like to retrieve them for robust configuration.\n\nHowever, we have to make sure the one thing. Are we currently in a situation where we can access the network safely and retrieve the settings?\n\nNote: Mostly, you are safe to do this, that your remote database is hosted with a SSL certificate, and your network is not compromised.", + "zw-th": "If we have already synchronised once with another device, the remote database stores the suitable configuration values between the synchronised devices. The plug-in would like to retrieve them for robust configuration.\n\nHowever, we have to make sure the one thing. Are we currently in a situation where we can access the network safely and retrieve the settings?\n\nNote: Mostly, you are safe to do this, that your remote database is hosted with a SSL certificate, and your network is not compromised." + }, + "Setup.FetchRemoteConf.Title": { + "def": "Fetch configuration from remote database?", + "es": "Fetch configuration from remote database?", + "ja": "リモートデータベースから設定を取得しますか?", + "ko": "Fetch configuration from remote database?", + "ru": "Загрузить конфигурацию с удалённой базы данных?", + "zh": "Fetch configuration from remote database?", + "zw-th": "Fetch configuration from remote database?" + }, + "Setup.QRCode": { + "def": "We have generated a QR code to transfer the settings. Please scan the QR code with your phone or other device.\nNote: The QR code is not encrypted, so be careful to open this.\n\n>[!FOR YOUR EYES ONLY]-\n>
${qr_image}
", + "es": "We have generated a QR code to transfer the settings. Please scan the QR code with your phone or other device.\nNote: The QR code is not encrypted, so be careful to open this.\n\n>[!FOR YOUR EYES ONLY]-\n>
${qr_image}
", + "ja": "設定を転送するためのQRコードを生成しました。スマートフォンや他のデバイスでQRコードをスキャンしてください。\n注意: QRコードは暗号化されていないため、開く際は注意してください。\n\n>[!FOR YOUR EYES ONLY]-\n>
${qr_image}
", + "ko": "설정을 전송하기 위한 QR 코드를 생성했습니다. 휴대폰이나 다른 기기로 QR 코드를 스캔해 주세요.\n참고: QR 코드는 암호화되지 않았으므로 열 때 주의하세요.\n\n>[!FOR YOUR EYES ONLY]-\n>
${qr_image}
", + "ru": "Мы сгенерировали QR-код для передачи настроек. Отсканируйте QR-код телефоном.", + "zh": "We have generated a QR code to transfer the settings. Please scan the QR code with your phone or other device.\nNote: The QR code is not encrypted, so be careful to open this.\n\n>[!FOR YOUR EYES ONLY]-\n>
${qr_image}
", + "zw-th": "We have generated a QR code to transfer the settings. Please scan the QR code with your phone or other device.\nNote: The QR code is not encrypted, so be careful to open this.\n\n>[!FOR YOUR EYES ONLY]-\n>
${qr_image}
" + }, + "Setup.ShowQRCode": { + "def": "Show QR code", + "es": "Show QR code", + "ja": "QRコードを表示", + "ko": "QR 코드 표시", + "ru": "Показать QR код", + "zh": "使用QR码", + "zw-th": "Show QR code" + }, + "Setup.ShowQRCode.Desc": { + "def": "Show QR code to transfer the settings.", + "es": "Show QR code to transfer the settings.", + "ja": "設定を転送するためのQRコードを表示します。", + "ko": "설정을 전송하기 위한 QR 코드를 표시합니다.", + "ru": "Показать QR код для передачи настроек.", + "zh": "使用QR码来传递配置", + "zw-th": "Show QR code to transfer the settings." + }, + "Should we keep folders that don't have any files inside?": { + "def": "Should we keep folders that don't have any files inside?", + "es": "¿Mantener carpetas vacías?", + "ja": "中にファイルがないフォルダーを保持しますか?", + "ko": "내부에 파일이 없는 폴더를 유지하시겠습니까?", + "ru": "Сохранять папки без файлов?", + "zh": "我们是否应该保留内部没有任何文件的文件夹?", + "zw-th": "Should we keep folders that don't have any files inside?" + }, + "Should we only check for conflicts when a file is opened?": { + "def": "Should we only check for conflicts when a file is opened?", + "es": "¿Solo comprobar conflictos al abrir archivo?", + "ja": "ファイルを開いたときのみ競合をチェックしますか?", + "ko": "파일을 열 때만 충돌을 확인하시겠습니까?", + "ru": "Проверять конфликты только при открытии файла?", + "zh": "我们是否应该仅在文件打开时检查冲突?", + "zw-th": "Should we only check for conflicts when a file is opened?" + }, + "Should we prompt you about conflicting files when a file is opened?": { + "def": "Should we prompt you about conflicting files when a file is opened?", + "es": "¿Notificar sobre conflictos al abrir archivo?", + "ja": "ファイルを開いたときに競合ファイルについて確認を求めますか?", + "ko": "파일을 열 때 충돌하는 파일에 대해 알림을 표시하시겠습니까?", + "ru": "Спрашивать о конфликтующих файлах при открытии файла?", + "zh": "当文件打开时,是否提示冲突文件?", + "zw-th": "Should we prompt you about conflicting files when a file is opened?" + }, + "Should we prompt you for every single merge, even if we can safely merge automatcially?": { + "def": "Should we prompt you for every single merge, even if we can safely merge automatcially?", + "es": "¿Preguntar en cada fusión aunque sea automática?", + "ja": "自動的に安全にマージできる場合でも、すべてのマージについて確認を求めますか?", + "ko": "안전하게 자동 병합할 수 있는 경우에도 모든 병합에 대해 알림을 받으시겠습니까?", + "ru": "Спрашивать о каждом слиянии, даже если мы можем безопасно слить автоматически?", + "zh": "即使我们可以安全地自动合并,是否也应该为每一次合并提示您?", + "zw-th": "Should we prompt you for every single merge, even if we can safely merge automatcially?" + }, + "Show only notifications": { + "def": "Show only notifications", + "es": "Mostrar solo notificaciones", + "ja": "通知のみ表示", + "ko": "알림만 표시", + "ru": "Показывать только уведомления", + "zh": "仅显示通知", + "zw-th": "Show only notifications" + }, + "Show status as icons only": { + "def": "Show status as icons only", + "es": "Mostrar estado solo con íconos", + "ja": "ステータス表示をアイコンのみにする", + "ko": "아이콘으로만 상태 표시", + "ru": "Показывать статус только иконками", + "zh": "仅以图标显示状态", + "zw-th": "Show status as icons only" + }, + "Show status icon instead of file warnings banner": { + "def": "Show status icon instead of file warnings banner", + "es": "Mostrar icono de estado en lugar del banner de advertencia de archivos", + "ja": "ファイル警告バナーの代わりにステータスアイコンを表示", + "ko": "파일 경고 배너 대신 상태 아이콘 표시", + "ru": "Показывать иконку статуса вместо предупреждения о файлах", + "zh": "显示状态图标,而非文件警告横幅", + "zw-th": "Show status icon instead of file warnings banner" + }, + "Show status inside the editor": { + "def": "Show status inside the editor", + "es": "Mostrar estado dentro del editor", + "ja": "ステータスをエディタ内に表示", + "ko": "편집기 내부에 상태 표시", + "ru": "Показывать статус внутри редактора", + "zh": "在编辑器内显示状态", + "zw-th": "Show status inside the editor" + }, + "Show status on the status bar": { + "def": "Show status on the status bar", + "es": "Mostrar estado en la barra de estado", + "ja": "ステータスバーに、ステータスを表示", + "ko": "상태 바에 상태 표시", + "ru": "Показывать статус в строке состояния", + "zh": "在状态栏上显示状态", + "zw-th": "Show status on the status bar" + }, + "Show verbose log. Please enable if you report an issue.": { + "def": "Show verbose log. Please enable if you report an issue.", + "es": "Mostrar registro detallado. Actívelo si reporta un problema.", + "ja": "エラー以外の詳細ログ項目も表示する。問題が発生した場合は有効にしてください。", + "ko": "자세한 로그를 표시합니다. 문제를 신고하는 경우 활성화해 주세요.", + "ru": "Показывать подробный лог. Пожалуйста, включите при сообщении о проблеме.", + "zh": "显示详细日志。如果您报告问题,请启用此选项 ", + "zw-th": "Show verbose log. Please enable if you report an issue." + }, + "Starts synchronisation when a file is saved.": { + "def": "Starts synchronisation when a file is saved.", + "es": "Inicia sincronización al guardar un archivo", + "ja": "ファイルが保存されたときに同期を開始します。", + "ko": "파일이 저장될 때 동기화를 시작합니다.", + "ru": "Запускать синхронизацию при сохранении файла.", + "zh": "当文件保存时启动同步 ", + "zw-th": "Starts synchronisation when a file is saved." + }, + "Stop reflecting database changes to storage files.": { + "def": "Stop reflecting database changes to storage files.", + "es": "Dejar de reflejar cambios de BD en archivos", + "ja": "データベースの変更をストレージファイルに反映させない", + "ko": "데이터베이스 변경 사항을 스토리지 파일에 반영하는 것을 중단합니다.", + "ru": "Остановить отражение изменений базы данных в файлы хранилища.", + "zh": "停止将数据库更改反映到存储文件 ", + "zw-th": "Stop reflecting database changes to storage files." + }, + "Stop watching for file changes.": { + "def": "Stop watching for file changes.", + "es": "Dejar de monitorear cambios en archivos", + "ja": "監視の停止", + "ko": "파일 변경 사항 감시를 중단합니다.", + "ru": "Остановить отслеживание изменений файлов.", + "zh": "停止监视文件更改 ", + "zw-th": "Stop watching for file changes." + }, + "Suppress notification of hidden files change": { + "def": "Suppress notification of hidden files change", + "es": "Suprimir notificaciones de cambios en archivos ocultos", + "ja": "隠しファイルの変更通知を抑制", + "ko": "숨겨진 파일 변경 알림 억제", + "ru": "Подавлять уведомления об изменении скрытых файлов", + "zh": "暂停隐藏文件更改的通知", + "zw-th": "Suppress notification of hidden files change" + }, + "Suspend database reflecting": { + "def": "Suspend database reflecting", + "es": "Suspender reflejo de base de datos", + "ja": "データベース反映の一時停止", + "ko": "데이터베이스 반영 일시 중단", + "ru": "Приостановить отражение базы данных", + "zh": "暂停数据库反映", + "zw-th": "Suspend database reflecting" + }, + "Suspend file watching": { + "def": "Suspend file watching", + "es": "Suspender monitorización de archivos", + "ja": "監視の一時停止", + "ko": "파일 감시 일시 중단", + "ru": "Приостановить отслеживание файлов", + "zh": "暂停文件监视", + "zw-th": "Suspend file watching" + }, + "Sync after merging file": { + "def": "Sync after merging file", + "es": "Sincronizar tras fusionar archivo", + "ja": "ファイルがマージ(統合)された時に同期", + "ko": "파일 병합 후 동기화", + "ru": "Синхронизировать после слияния файла", + "zh": "合并文件后同步", + "zw-th": "Sync after merging file" + }, + "Sync automatically after merging files": { + "def": "Sync automatically after merging files", + "es": "Sincronizar automáticamente tras fusionar archivos", + "ja": "ファイルのマージ後に自動的に同期", + "ko": "파일 병합 후 자동으로 동기화", + "ru": "Синхронизировать автоматически после слияния файлов", + "zh": "合并文件后自动同步", + "zw-th": "Sync automatically after merging files" + }, + "Sync Mode": { + "def": "Sync Mode", + "es": "Modo de sincronización", + "ja": "同期モード", + "ko": "동기화 모드", + "ru": "Режим синхронизации", + "zh": "同步模式", + "zw-th": "Sync Mode" + }, + "Sync on Editor Save": { + "def": "Sync on Editor Save", + "es": "Sincronizar al guardar en editor", + "ja": "エディタでの保存時に、同期されます", + "ko": "편집기 저장 시 동기화", + "ru": "Синхронизация при сохранении в редакторе", + "zh": "编辑器保存时同步", + "zw-th": "Sync on Editor Save" + }, + "Sync on File Open": { + "def": "Sync on File Open", + "es": "Sincronizar al abrir archivo", + "ja": "ファイルを開いた時に同期", + "ko": "파일 열기 시 동기화", + "ru": "Синхронизация при открытии файла", + "zh": "打开文件时同步", + "zw-th": "Sync on File Open" + }, + "Sync on Save": { + "def": "Sync on Save", + "es": "Sincronizar al guardar", + "ja": "保存時に同期", + "ko": "저장 시 동기화", + "ru": "Синхронизация при сохранении", + "zh": "保存时同步", + "zw-th": "Sync on Save" }, "Sync on Startup": { - def: "Sync on Startup", - es: "Sincronizar al iniciar", - fr: "Synchroniser au démarrage", - ja: "起動時同期", - ko: "시작 시 동기화", - ru: "Синхронизация при запуске", - zh: "启动时同步", + "def": "Sync on Startup", + "es": "Sincronizar al iniciar", + "ja": "起動時同期", + "ko": "시작 시 동기화", + "ru": "Синхронизация при запуске", + "zh": "启动时同步", + "zw-th": "Sync on Startup" + }, + "Testing only - Resolve file conflicts by syncing newer copies of the file, this can overwrite modified files. Be Warned.": { + "def": "Testing only - Resolve file conflicts by syncing newer copies of the file, this can overwrite modified files. Be Warned.", + "es": "Solo pruebas - Resolver conflictos sincronizando copias nuevas (puede sobrescribir modificaciones)", + "ja": "テスト用 - ファイルの新しいコピーを同期してファイル競合を解決します。これにより変更されたファイルが上書きされる可能性があります。注意してください。", + "ko": "테스트 전용 - 파일의 새로운 사본을 동기화하여 파일 충돌을 해결하며, 수정된 파일을 덮어쓸 수 있습니다. 주의하세요.", + "ru": "Только для тестирования - разрешать конфликты файлов синхронизацией новых копий.", + "zh": "仅供测试 - 通过同步文件的较新副本来解决文件冲突,这可能会覆盖修改过的文件。请注意 ", + "zw-th": "Testing only - Resolve file conflicts by syncing newer copies of the file, this can overwrite modified files. Be Warned." +>>>>>>> 7a02c45 (i18n: fill all missing keys across all 7 non-English languages to 100%) }, "Testing only - Resolve file conflicts by syncing newer copies of the file, this can overwrite modified files. Be Warned.": { @@ -4688,6 +9532,7 @@ export const _allMessages = { zh: "仅供测试 - 通过同步文件的较新副本来解决文件冲突,这可能会覆盖修改过的文件。请注意 ", }, "The delay for consecutive on-demand fetches": { +<<<<<<< HEAD def: "The delay for consecutive on-demand fetches", es: "Retraso entre obtenciones consecutivas", fr: "Le délai entre récupérations consécutives à la demande", @@ -4704,6 +9549,51 @@ export const _allMessages = { ko: "청크 ID용 해시 알고리즘", ru: "Хэш-алгоритм для ID чанков", zh: "块 ID 的哈希算法(实验性)", +======= + "def": "The delay for consecutive on-demand fetches", + "es": "Retraso entre obtenciones consecutivas", + "ja": "連続したオンデマンドフェッチの遅延", + "ko": "연속 청크 요청 간 대기 시간", + "ru": "Задержка для последовательных запросов по требованию", + "zh": "连续按需获取的延迟", + "zw-th": "The delay for consecutive on-demand fetches" + }, + "The Hash algorithm for chunk IDs": { + "def": "The Hash algorithm for chunk IDs", + "es": "Algoritmo hash para IDs de chunks", + "ja": "チャンクIDのハッシュアルゴリズム", + "ko": "청크 ID용 해시 알고리즘", + "ru": "Хэш-алгоритм для ID чанков", + "zh": "块 ID 的哈希算法(实验性)", + "zw-th": "The Hash algorithm for chunk IDs" + }, + "The maximum duration for which chunks can be incubated within the document. Chunks exceeding this period will graduate to independent chunks.": { + "def": "The maximum duration for which chunks can be incubated within the document. Chunks exceeding this period will graduate to independent chunks.", + "es": "Duración máxima para incubar chunks. Excedentes se independizan", + "ja": "ドキュメント内でチャンクを保持できる最大期間。この期間を超えたチャンクは独立したチャンクに昇格します。", + "ko": "변경 기록이 문서에 함께 보관될 수 있는 최대 시간입니다. 초과 시 문서에서 분리되어 개별로 저장됩니다.", + "ru": "The maximum duration for which chunks can be incubated within the document. Chunks exceeding this period will graduate to independent chunks.", + "zh": "文档中可以孵化的数据块的最大持续时间。超过此时间的数据块将成为独立数据块 ", + "zw-th": "The maximum duration for which chunks can be incubated within the document. Chunks exceeding this period will graduate to independent chunks." + }, + "The maximum number of chunks that can be incubated within the document. Chunks exceeding this number will immediately graduate to independent chunks.": { + "def": "The maximum number of chunks that can be incubated within the document. Chunks exceeding this number will immediately graduate to independent chunks.", + "es": "Número máximo de chunks que pueden incubarse en el documento. Excedentes se independizan", + "ja": "ドキュメント内で保持できるチャンクの最大数。この数を超えたチャンクは即座に独立したチャンクに昇格します。", + "ko": "문서 안에 임시로 보관할 수 있는 변경 기록의 최대 개수입니다. 이 수를 초과하면 즉시 독립된 청크로 분리되어 저장됩니다.", + "ru": "The maximum number of chunks that can be incubated within the document. Chunks exceeding this number will immediately graduate to independent chunks.", + "zh": "文档中可以孵化的数据块的最大数量。超过此数量的数据块将立即成为独立数据块 ", + "zw-th": "The maximum number of chunks that can be incubated within the document. Chunks exceeding this number will immediately graduate to independent chunks." + }, + "The maximum total size of chunks that can be incubated within the document. Chunks exceeding this size will immediately graduate to independent chunks.": { + "def": "The maximum total size of chunks that can be incubated within the document. Chunks exceeding this size will immediately graduate to independent chunks.", + "es": "Tamaño total máximo de chunks incubados. Excedentes se independizan", + "ja": "ドキュメント内で保持できるチャンクの最大合計サイズ。このサイズを超えたチャンクは即座に独立したチャンクに昇格します。", + "ko": "문서 안에 임시로 보관할 수 있는 변경 기록의 전체 크기 제한입니다. 초과 시 자동으로 분리됩니다.", + "ru": "The maximum total size of chunks that can be incubated within the document. Chunks exceeding this size will immediately graduate to independent chunks.", + "zh": "文档中可以孵化的数据块的最大总大小。超过此大小的数据块将立即成为独立数据块 ", + "zw-th": "The maximum total size of chunks that can be incubated within the document. Chunks exceeding this size will immediately graduate to independent chunks." +>>>>>>> 7a02c45 (i18n: fill all missing keys across all 7 non-English languages to 100%) }, "The maximum duration for which chunks can be incubated within the document. Chunks exceeding this period will graduate to independent chunks.": { @@ -4736,6 +9626,7 @@ export const _allMessages = { zh: "文档中可以孵化的数据块的最大总大小。超过此大小的数据块将立即成为独立数据块 ", }, "The minimum interval for automatic synchronisation on event.": { +<<<<<<< HEAD def: "The minimum interval for automatic synchronisation on event.", fr: "L'intervalle minimum pour la synchronisation automatique sur événement.", ja: "イベント発生時の自動同期における最小間隔です。", @@ -5006,6 +9897,501 @@ export const _allMessages = { }, "Ui.SetupWizard.Common.AdvancedSettings": { def: "Advanced Settings", +======= + "def": "The minimum interval for automatic synchronisation on event.", + "es": "The minimum interval for automatic synchronisation on event.", + "ja": "イベント発生時の自動同期における最小間隔です。", + "ko": "이벤트 발생 시 자동 동기화의 최소 간격입니다.", + "ru": "Минимальный интервал автоматической синхронизации по событию.", + "zh": "基于事件自动同步的最小间隔。", + "zw-th": "The minimum interval for automatic synchronisation on event." + }, + "This passphrase will not be copied to another device. It will be set to `Default` until you configure it again.": { + "def": "This passphrase will not be copied to another device. It will be set to `Default` until you configure it again.", + "es": "Esta frase no se copia a otros dispositivos. Usará `Default` hasta reconfigurar", + "ja": "このパスフレーズは他のデバイスにコピーされません。再度設定するまで`Default`に設定されます。", + "ko": "이 패스프레이즈는 다른 기기로 복사되지 않습니다. 다시 구성할 때까지 `기본값`으로 설정됩니다.", + "ru": "This passphrase will not be copied to another device. It will be set to `Default` until you configure it again.", + "zh": "此密码不会复制到另一台设备。在您再次配置之前,它将设置为 `Default` ", + "zw-th": "This passphrase will not be copied to another device. It will be set to `Default` until you configure it again." + }, + "TweakMismatchResolve.Action.Dismiss": { + "def": "Dismiss", + "es": "Descartar", + "ja": "無視", + "ko": "무시", + "ru": "Отмена", + "zh": "Dismiss", + "zw-th": "Dismiss" + }, + "TweakMismatchResolve.Action.UseConfigured": { + "def": "Use configured settings", + "es": "Use configured settings", + "ja": "設定済みの設定を使用", + "ko": "구성된 설정 사용", + "ru": "Использовать настроенные параметры", + "zh": "Use configured settings", + "zw-th": "Use configured settings" + }, + "TweakMismatchResolve.Action.UseMine": { + "def": "Update remote database settings", + "es": "Update remote database settings", + "ja": "リモートデータベースの設定を更新", + "ko": "원격 데이터베이스 설정 업데이트", + "ru": "Обновить настройки удалённой базы данных", + "zh": "Update remote database settings", + "zw-th": "Update remote database settings" + }, + "TweakMismatchResolve.Action.UseMineAcceptIncompatible": { + "def": "Update remote database settings but keep as is", + "es": "Update remote database settings but keep as is", + "ja": "リモートデータベースの設定を更新するがそのまま維持", + "ko": "원격 데이터베이스 설정 업데이트하지만 그대로 유지", + "ru": "Обновить настройки, но оставить как есть", + "zh": "Update remote database settings but keep as is", + "zw-th": "Update remote database settings but keep as is" + }, + "TweakMismatchResolve.Action.UseMineWithRebuild": { + "def": "Update remote database settings and rebuild again", + "es": "Update remote database settings and rebuild again", + "ja": "リモートデータベースの設定を更新して再構築", + "ko": "원격 데이터베이스 설정 업데이트하고 다시 재구축", + "ru": "Обновить настройки и перестроить снова", + "zh": "Update remote database settings and rebuild again", + "zw-th": "Update remote database settings and rebuild again" + }, + "TweakMismatchResolve.Action.UseRemote": { + "def": "Apply settings to this device", + "es": "Apply settings to this device", + "ja": "このデバイスに設定を適用", + "ko": "이 기기에 설정 적용", + "ru": "Применить настройки к этому устройству", + "zh": "Apply settings to this device", + "zw-th": "Apply settings to this device" + }, + "TweakMismatchResolve.Action.UseRemoteAcceptIncompatible": { + "def": "Apply settings to this device, but and ignore incompatibility", + "es": "Apply settings to this device, but and ignore incompatibility", + "ja": "このデバイスに設定を適用し、非互換性を無視", + "ko": "이 기기에 설정 적용하지만 호환성 문제 무시", + "ru": "Применить настройки, но игнорировать несовместимость", + "zh": "Apply settings to this device, but and ignore incompatibility", + "zw-th": "Apply settings to this device, but and ignore incompatibility" + }, + "TweakMismatchResolve.Action.UseRemoteWithRebuild": { + "def": "Apply settings to this device, and fetch again", + "es": "Apply settings to this device, and fetch again", + "ja": "このデバイスに設定を適用し、再フェッチ", + "ko": "이 기기에 설정 적용하고 다시 가져오기", + "ru": "Применить настройки и загрузить снова", + "zh": "Apply settings to this device, and fetch again", + "zw-th": "Apply settings to this device, and fetch again" + }, + "TweakMismatchResolve.Message.Main": { + "def": "\nThe settings in the remote database are as follows. These values are configured by other devices, which are synchronised with this device at least once.\n\nIf you want to use these settings, please select %{TweakMismatchResolve.Action.UseConfigured}.\nIf you want to keep the settings of this device, please select %{TweakMismatchResolve.Action.Dismiss}.\n\n${table}\n\n>[!TIP]\n> If you want to synchronise all settings, please use `Sync settings via markdown` after applying minimal configuration with this feature.\n\n${additionalMessage}", + "es": "\nThe settings in the remote database are as follows. These values are configured by other devices, which are synchronised with this device at least once.\n\nIf you want to use these settings, please select %{TweakMismatchResolve.Action.UseConfigured}.\nIf you want to keep the settings of this device, please select %{TweakMismatchResolve.Action.Dismiss}.\n\n${table}\n\n>[!TIP]\n> If you want to synchronise all settings, please use `Sync settings via markdown` after applying minimal configuration with this feature.\n\n${additionalMessage}", + "ja": "\nリモートデータベースの設定は以下の通りです。これらの値は、このデバイスと少なくとも1回同期された他のデバイスによって設定されています。\n\nこれらの設定を使用する場合は、%{TweakMismatchResolve.Action.UseConfigured}を選択してください。\nこのデバイスの設定を維持する場合は、%{TweakMismatchResolve.Action.Dismiss}を選択してください。\n\n${table}\n\n>[!TIP]\n> すべての設定を同期したい場合は、この機能で最小限の設定を適用した後、`Sync settings via markdown`を使用してください。\n\n${additionalMessage}", + "ko": "\n원격 데이터베이스의 설정은 다음과 같습니다. 이 값들은 이 기기와 최소 한 번 동기화된 다른 기기에서 구성된 것입니다.\n\n이 설정을 사용하려면 %{TweakMismatchResolve.Action.UseConfigured}를 선택해 주세요.\n이 기기의 설정을 유지하려면 %{TweakMismatchResolve.Action.Dismiss}를 선택해 주세요.\n\n${table}\n\n>[!TIP]\n> 모든 설정을 동기화하려면 이 기능으로 최소 구성을 적용한 후 `마크다운을 통한 설정 동기화`를 사용해 주세요.\n\n${additionalMessage}", + "ru": "Настройки в удалённой базе данных следующие. Эти значения настроены другими устройствами.", + "zh": "\nThe settings in the remote database are as follows. These values are configured by other devices, which are synchronised with this device at least once.\n\nIf you want to use these settings, please select %{TweakMismatchResolve.Action.UseConfigured}.\nIf you want to keep the settings of this device, please select %{TweakMismatchResolve.Action.Dismiss}.\n\n${table}\n\n>[!TIP]\n> If you want to synchronise all settings, please use `Sync settings via markdown` after applying minimal configuration with this feature.\n\n${additionalMessage}", + "zw-th": "\nThe settings in the remote database are as follows. These values are configured by other devices, which are synchronised with this device at least once.\n\nIf you want to use these settings, please select %{TweakMismatchResolve.Action.UseConfigured}.\nIf you want to keep the settings of this device, please select %{TweakMismatchResolve.Action.Dismiss}.\n\n${table}\n\n>[!TIP]\n> If you want to synchronise all settings, please use `Sync settings via markdown` after applying minimal configuration with this feature.\n\n${additionalMessage}" + }, + "TweakMismatchResolve.Message.MainTweakResolving": { + "def": "Your configuration has not been matched with the one on the remote server.\n\nFollowing configuration should be matched:\n\n${table}\n\nLet us know your decision.\n\n${additionalMessage}", + "es": "Your configuration has not been matched with the one on the remote server.\n\nFollowing configuration should be matched:\n\n${table}\n\nLet us know your decision.\n\n${additionalMessage}", + "ja": "設定がリモートサーバーの設定と一致しません。\n\n以下の設定が一致している必要があります:\n\n${table}\n\n判断をお知らせください。\n\n${additionalMessage}", + "ko": "구성이 원격 서버의 것과 일치하지 않습니다.\n\n다음 구성이 일치해야 합니다:\n\n${table}\n\n결정을 알려주세요.\n\n${additionalMessage}", + "ru": "Ваша конфигурация не совпадает с удалённым сервером.", + "zh": "Your configuration has not been matched with the one on the remote server.\n\nFollowing configuration should be matched:\n\n${table}\n\nLet us know your decision.\n\n${additionalMessage}", + "zw-th": "Your configuration has not been matched with the one on the remote server.\n\nFollowing configuration should be matched:\n\n${table}\n\nLet us know your decision.\n\n${additionalMessage}" + }, + "TweakMismatchResolve.Message.UseRemote.WarningRebuildRecommended": { + "def": "\n>[!NOTICE]\n> Some changes are compatible but may consume extra storage and transfer volumes. A rebuild is recommended. However, a rebuild may not be performed at present, but may be implemented in future maintenance.\n> ***Please ensure that you have time and are connected to a stable network to apply!***", + "es": "\n>[!NOTICE]\n> Some changes are compatible but may consume extra storage and transfer volumes. A rebuild is recommended. However, a rebuild may not be performed at present, but may be implemented in future maintenance.\n> ***Please ensure that you have time and are connected to a stable network to apply!***", + "ja": "\n>[!NOTICE]\n> 一部の変更は互換性がありますが、追加のストレージと転送量を消費する可能性があります。再構築をお勧めします。ただし、再構築は現時点では実行されない場合がありますが、将来のメンテナンスで実装される可能性があります。\n> ***適用には時間と安定したネットワーク接続が必要です!***", + "ko": "\n>[!NOTICE]\n> 일부 변경사항은 호환 가능하지만 추가 스토리지 및 전송량을 소모할 수 있습니다. 재구축을 권장합니다. 하지만 현재 재구축을 수행하지 않더라도 향후 유지보수에서 구현될 수 있습니다.\n> ***시간적 여유가 있고 안정적인 네트워크에 연결된 상태에서 적용해 주세요!***", + "ru": "Некоторые изменения совместимы, но могут потребовать дополнительного хранилища. Рекомендуется перестроение.", + "zh": "\n>[!NOTICE]\n> Some changes are compatible but may consume extra storage and transfer volumes. A rebuild is recommended. However, a rebuild may not be performed at present, but may be implemented in future maintenance.\n> ***Please ensure that you have time and are connected to a stable network to apply!***", + "zw-th": "\n>[!NOTICE]\n> Some changes are compatible but may consume extra storage and transfer volumes. A rebuild is recommended. However, a rebuild may not be performed at present, but may be implemented in future maintenance.\n> ***Please ensure that you have time and are connected to a stable network to apply!***" + }, + "TweakMismatchResolve.Message.UseRemote.WarningRebuildRequired": { + "def": "\n>[!WARNING]\n> Some remote configurations are not compatible with the local database of this device. Rebuilding the local database will be required.\n> ***Please ensure that you have time and are connected to a stable network to apply!***", + "es": "\n>[!WARNING]\n> Some remote configurations are not compatible with the local database of this device. Rebuilding the local database will be required.\n> ***Please ensure that you have time and are connected to a stable network to apply!***", + "ja": "\n>[!WARNING]\n> 一部のリモート設定はこのデバイスのローカルデータベースと互換性がありません。ローカルデータベースの再構築が必要です。\n> ***適用には時間と安定したネットワーク接続が必要です!***", + "ko": "\n>[!WARNING]\n> 일부 원격 구성이 이 기기의 로컬 데이터베이스와 호환되지 않습니다. 로컬 데이터베이스 재구축이 필요합니다.\n> ***시간적 여유가 있고 안정적인 네트워크에 연결된 상태에서 적용해 주세요!***", + "ru": "Некоторые удалённые конфигурации несовместимы с локальной базой данных. Требуется перестроение.", + "zh": "\n>[!WARNING]\n> Some remote configurations are not compatible with the local database of this device. Rebuilding the local database will be required.\n> ***Please ensure that you have time and are connected to a stable network to apply!***", + "zw-th": "\n>[!WARNING]\n> Some remote configurations are not compatible with the local database of this device. Rebuilding the local database will be required.\n> ***Please ensure that you have time and are connected to a stable network to apply!***" + }, + "TweakMismatchResolve.Message.WarningIncompatibleRebuildRecommended": { + "def": "\n>[!NOTICE]\n> We have detected that some of the values are different to make incompatible the local database with the remote database.\n> Some changes are compatible but may consume extra storage and transfer volumes. A rebuild is recommended. However, a rebuild may not be performed at present, but may be implemented in future maintenance.\n> If you want to rebuild, it takes a few minutes or more. **Make sure it is safe to perform it now.**", + "es": "\n>[!NOTICE]\n> We have detected that some of the values are different to make incompatible the local database with the remote database.\n> Some changes are compatible but may consume extra storage and transfer volumes. A rebuild is recommended. However, a rebuild may not be performed at present, but may be implemented in future maintenance.\n> If you want to rebuild, it takes a few minutes or more. **Make sure it is safe to perform it now.**", + "ja": "\n>[!NOTICE]\n> ローカルデータベースとリモートデータベースの非互換性を引き起こす値の違いが検出されました。\n> 一部の変更は互換性がありますが、追加のストレージと転送量を消費する可能性があります。再構築をお勧めします。ただし、再構築は現時点では実行されない場合がありますが、将来のメンテナンスで実装される可能性があります。\n> 再構築を行う場合は数分以上かかります。**今実行しても安全か確認してください。**", + "ko": "\n>[!NOTICE]\n> 로컬 데이터베이스와 원격 데이터베이스가 호환되지 않도록 만드는 값들이 다른 것을 감지했습니다.\n> 일부 변경사항은 호환 가능하지만 추가 스토리지 및 전송량을 소모할 수 있습니다. 재구축을 권장합니다. 하지만 현재 재구축을 수행하지 않더라도 향후 유지보수에서 구현될 수 있습니다.\n> 재구축을 원한다면 몇 분 이상 소요됩니다. **지금 수행해도 안전한지 확인해 주세요.**", + "ru": "Обнаружены значения, несовместимые с удалённой базой данных. Рекомендуется перестроение.", + "zh": "\n>[!NOTICE]\n> We have detected that some of the values are different to make incompatible the local database with the remote database.\n> Some changes are compatible but may consume extra storage and transfer volumes. A rebuild is recommended. However, a rebuild may not be performed at present, but may be implemented in future maintenance.\n> If you want to rebuild, it takes a few minutes or more. **Make sure it is safe to perform it now.**", + "zw-th": "\n>[!NOTICE]\n> We have detected that some of the values are different to make incompatible the local database with the remote database.\n> Some changes are compatible but may consume extra storage and transfer volumes. A rebuild is recommended. However, a rebuild may not be performed at present, but may be implemented in future maintenance.\n> If you want to rebuild, it takes a few minutes or more. **Make sure it is safe to perform it now.**" + }, + "TweakMismatchResolve.Message.WarningIncompatibleRebuildRequired": { + "def": "\n>[!WARNING]\n> We have detected that some of the values are different to make incompatible the local database with the remote database.\n> Either local or remote rebuilds are required. Both of them takes a few minutes or more. **Make sure it is safe to perform it now.**", + "es": "\n>[!WARNING]\n> We have detected that some of the values are different to make incompatible the local database with the remote database.\n> Either local or remote rebuilds are required. Both of them takes a few minutes or more. **Make sure it is safe to perform it now.**", + "ja": "\n>[!WARNING]\n> ローカルデータベースとリモートデータベースの非互換性を引き起こす値の違いが検出されました。\n> ローカルまたはリモートの再構築が必要です。どちらも数分以上かかります。**今実行しても安全か確認してください。**", + "ko": "\n>[!WARNING]\n> 로컬 데이터베이스와 원격 데이터베이스가 호환되지 않도록 만드는 값들이 다른 것을 감지했습니다.\n> 로컬 또는 원격 재구축이 필요합니다. 둘 다 몇 분 이상 소요됩니다. **지금 수행해도 안전한지 확인해 주세요.**", + "ru": "Обнаружены значения, несовместимые с удалённой базой данных. Требуется перестроение.", + "zh": "\n>[!WARNING]\n> We have detected that some of the values are different to make incompatible the local database with the remote database.\n> Either local or remote rebuilds are required. Both of them takes a few minutes or more. **Make sure it is safe to perform it now.**", + "zw-th": "\n>[!WARNING]\n> We have detected that some of the values are different to make incompatible the local database with the remote database.\n> Either local or remote rebuilds are required. Both of them takes a few minutes or more. **Make sure it is safe to perform it now.**" + }, + "TweakMismatchResolve.Table": { + "def": "| Value name | This device | On Remote |\n|: --- |: ---- :|: ---- :|\n${rows}\n\n", + "es": "| Value name | This device | On Remote |\n|: --- |: ---- :|: ---- :|\n${rows}\n\n", + "ja": "| 値の名前 | このデバイス | リモート |\n|: --- |: ---- :|: ---- :|\n${rows}\n\n", + "ko": "| 값 이름 | 이 기기 | 원격 |\n|: --- |: ---- :|: ---- :|\n${rows}\n\n", + "ru": "| Имя значения | Это устройство | На удалённом |\n|: --- |: ---- :|: ---- :|", + "zh": "| Value name | This device | On Remote |\n|: --- |: ---- :|: ---- :|\n${rows}\n\n", + "zw-th": "| Value name | This device | On Remote |\n|: --- |: ---- :|: ---- :|\n${rows}\n\n" + }, + "TweakMismatchResolve.Table.Row": { + "def": "| ${name} | ${self} | ${remote} |", + "es": "| ${name} | ${self} | ${remote} |", + "ja": "| ${name} | ${self} | ${remote} |", + "ko": "| ${name} | ${self} | ${remote} |", + "ru": "| name | self | remote |", + "zh": "| ${name} | ${self} | ${remote} |", + "zw-th": "| ${name} | ${self} | ${remote} |" + }, + "TweakMismatchResolve.Title": { + "def": "Configuration Mismatch Detected", + "es": "Configuration Mismatch Detected", + "ja": "設定の不一致が検出されました", + "ko": "구성 불일치 감지", + "ru": "Обнаружено несоответствие конфигурации", + "zh": "Configuration Mismatch Detected", + "zw-th": "Configuration Mismatch Detected" + }, + "TweakMismatchResolve.Title.TweakResolving": { + "def": "Configuration Mismatch Detected", + "es": "Configuration Mismatch Detected", + "ja": "設定の不一致が検出されました", + "ko": "구성 불일치 감지", + "ru": "Обнаружено несоответствие конфигурации", + "zh": "Configuration Mismatch Detected", + "zw-th": "Configuration Mismatch Detected" + }, + "TweakMismatchResolve.Title.UseRemoteConfig": { + "def": "Use Remote Configuration", + "es": "Use Remote Configuration", + "ja": "リモート設定を使用", + "ko": "원격 구성 사용", + "ru": "Использовать удалённую конфигурацию", + "zh": "Use Remote Configuration", + "zw-th": "Use Remote Configuration" + }, + "Ui.Bucket.Guidance": { + "def": "Please enter the details required to connect to your S3/MinIO/R2 compatible object storage service.", + "es": "Please enter the details required to connect to your S3/MinIO/R2 compatible object storage service.", + "ja": "Please enter the details required to connect to your S3/MinIO/R2 compatible object storage service.", + "ko": "Please enter the details required to connect to your S3/MinIO/R2 compatible object storage service.", + "ru": "Please enter the details required to connect to your S3/MinIO/R2 compatible object storage service.", + "zh": "Please enter the details required to connect to your S3/MinIO/R2 compatible object storage service.", + "zw-th": "Please enter the details required to connect to your S3/MinIO/R2 compatible object storage service." + }, + "Ui.CouchDB.Guidance": { + "def": "Please enter the CouchDB server information below.", + "es": "Please enter the CouchDB server information below.", + "ja": "Please enter the CouchDB server information below.", + "ko": "Please enter the CouchDB server information below.", + "ru": "Please enter the CouchDB server information below.", + "zh": "Please enter the CouchDB server information below.", + "zw-th": "Please enter the CouchDB server information below." + }, + "Ui.P2P.Guidance": { + "def": "Please enter the Peer-to-Peer Synchronisation information below.", + "es": "Please enter the Peer-to-Peer Synchronisation information below.", + "ja": "Please enter the Peer-to-Peer Synchronisation information below.", + "ko": "Please enter the Peer-to-Peer Synchronisation information below.", + "ru": "Please enter the Peer-to-Peer Synchronisation information below.", + "zh": "Please enter the Peer-to-Peer Synchronisation information below.", + "zw-th": "Please enter the Peer-to-Peer Synchronisation information below." + }, + "Ui.RemoteE2EE.AdvancedTitle": { + "def": "Advanced", + "es": "Advanced", + "ja": "Advanced", + "ko": "Advanced", + "ru": "Advanced", + "zh": "Advanced", + "zw-th": "Advanced" + }, + "Ui.RemoteE2EE.AlgorithmWarning": { + "def": "Changing the encryption algorithm will prevent access to any data previously encrypted with a different algorithm.", + "es": "Changing the encryption algorithm will prevent access to any data previously encrypted with a different algorithm.", + "ja": "Changing the encryption algorithm will prevent access to any data previously encrypted with a different algorithm.", + "ko": "Changing the encryption algorithm will prevent access to any data previously encrypted with a different algorithm.", + "ru": "Changing the encryption algorithm will prevent access to any data previously encrypted with a different algorithm.", + "zh": "Changing the encryption algorithm will prevent access to any data previously encrypted with a different algorithm.", + "zw-th": "Changing the encryption algorithm will prevent access to any data previously encrypted with a different algorithm." + }, + "Ui.RemoteE2EE.ButtonCancel": { + "def": "Cancel", + "es": "Cancel", + "ja": "Cancel", + "ko": "Cancel", + "ru": "Cancel", + "zh": "Cancel", + "zw-th": "Cancel" + }, + "Ui.RemoteE2EE.ButtonProceed": { + "def": "Proceed", + "es": "Proceed", + "ja": "Proceed", + "ko": "Proceed", + "ru": "Proceed", + "zh": "Proceed", + "zw-th": "Proceed" + }, + "Ui.RemoteE2EE.DefaultAlgorithmDesc": { + "def": "In most cases, you should stick with the default algorithm.", + "es": "In most cases, you should stick with the default algorithm.", + "ja": "In most cases, you should stick with the default algorithm.", + "ko": "In most cases, you should stick with the default algorithm.", + "ru": "In most cases, you should stick with the default algorithm.", + "zh": "In most cases, you should stick with the default algorithm.", + "zw-th": "In most cases, you should stick with the default algorithm." + }, + "Ui.RemoteE2EE.Guidance": { + "def": "Please configure your end-to-end encryption settings.", + "es": "Please configure your end-to-end encryption settings.", + "ja": "Please configure your end-to-end encryption settings.", + "ko": "Please configure your end-to-end encryption settings.", + "ru": "Please configure your end-to-end encryption settings.", + "zh": "Please configure your end-to-end encryption settings.", + "zw-th": "Please configure your end-to-end encryption settings." + }, + "Ui.RemoteE2EE.LabelEncrypt": { + "def": "End-to-End Encryption", + "es": "End-to-End Encryption", + "ja": "End-to-End Encryption", + "ko": "End-to-End Encryption", + "ru": "End-to-End Encryption", + "zh": "End-to-End Encryption", + "zw-th": "End-to-End Encryption" + }, + "Ui.RemoteE2EE.LabelEncryptionAlgorithm": { + "def": "Encryption Algorithm", + "es": "Encryption Algorithm", + "ja": "Encryption Algorithm", + "ko": "Encryption Algorithm", + "ru": "Encryption Algorithm", + "zh": "Encryption Algorithm", + "zw-th": "Encryption Algorithm" + }, + "Ui.RemoteE2EE.LabelObfuscateProperties": { + "def": "Obfuscate Properties", + "es": "Obfuscate Properties", + "ja": "Obfuscate Properties", + "ko": "Obfuscate Properties", + "ru": "Obfuscate Properties", + "zh": "Obfuscate Properties", + "zw-th": "Obfuscate Properties" + }, + "Ui.RemoteE2EE.ManualWarning": { + "def": "Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences. This is a security measure designed to protect your data.", + "es": "Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences. This is a security measure designed to protect your data.", + "ja": "Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences. This is a security measure designed to protect your data.", + "ko": "Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences. This is a security measure designed to protect your data.", + "ru": "Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences. This is a security measure designed to protect your data.", + "zh": "Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences. This is a security measure designed to protect your data.", + "zw-th": "Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences. This is a security measure designed to protect your data." + }, + "Ui.RemoteE2EE.MultiDestinationWarning": { + "def": "This setting must be the same even when connecting to multiple synchronisation destinations.", + "es": "This setting must be the same even when connecting to multiple synchronisation destinations.", + "ja": "This setting must be the same even when connecting to multiple synchronisation destinations.", + "ko": "This setting must be the same even when connecting to multiple synchronisation destinations.", + "ru": "This setting must be the same even when connecting to multiple synchronisation destinations.", + "zh": "This setting must be the same even when connecting to multiple synchronisation destinations.", + "zw-th": "This setting must be the same even when connecting to multiple synchronisation destinations." + }, + "Ui.RemoteE2EE.ObfuscatePropertiesDesc": { + "def": "Obfuscating properties adds an additional layer of security by making it harder to identify the structure and names of your files and folders on the remote server.", + "es": "Obfuscating properties adds an additional layer of security by making it harder to identify the structure and names of your files and folders on the remote server.", + "ja": "Obfuscating properties adds an additional layer of security by making it harder to identify the structure and names of your files and folders on the remote server.", + "ko": "Obfuscating properties adds an additional layer of security by making it harder to identify the structure and names of your files and folders on the remote server.", + "ru": "Obfuscating properties adds an additional layer of security by making it harder to identify the structure and names of your files and folders on the remote server.", + "zh": "Obfuscating properties adds an additional layer of security by making it harder to identify the structure and names of your files and folders on the remote server.", + "zw-th": "Obfuscating properties adds an additional layer of security by making it harder to identify the structure and names of your files and folders on the remote server." + }, + "Ui.RemoteE2EE.PassphraseValidationLine1": { + "def": "Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences.", + "es": "Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences.", + "ja": "Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences.", + "ko": "Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences.", + "ru": "Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences.", + "zh": "Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences.", + "zw-th": "Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences." + }, + "Ui.RemoteE2EE.PassphraseValidationLine2": { + "def": "Therefore, we ask that you exercise extreme caution when configuring server information manually.", + "es": "Therefore, we ask that you exercise extreme caution when configuring server information manually.", + "ja": "Therefore, we ask that you exercise extreme caution when configuring server information manually.", + "ko": "Therefore, we ask that you exercise extreme caution when configuring server information manually.", + "ru": "Therefore, we ask that you exercise extreme caution when configuring server information manually.", + "zh": "Therefore, we ask that you exercise extreme caution when configuring server information manually.", + "zw-th": "Therefore, we ask that you exercise extreme caution when configuring server information manually." + }, + "Ui.RemoteE2EE.PlaceholderPassphrase": { + "def": "Enter your passphrase", + "es": "Enter your passphrase", + "ja": "Enter your passphrase", + "ko": "Enter your passphrase", + "ru": "Enter your passphrase", + "zh": "Enter your passphrase", + "zw-th": "Enter your passphrase" + }, + "Ui.RemoteE2EE.StronglyRecommended": { + "def": "Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server. This means that even if someone gains access to the server, they won't be able to read your data without the passphrase.", + "es": "Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server. This means that even if someone gains access to the server, they won't be able to read your data without the passphrase.", + "ja": "Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server. This means that even if someone gains access to the server, they won't be able to read your data without the passphrase.", + "ko": "Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server. This means that even if someone gains access to the server, they won't be able to read your data without the passphrase.", + "ru": "Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server. This means that even if someone gains access to the server, they won't be able to read your data without the passphrase.", + "zh": "Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server. This means that even if someone gains access to the server, they won't be able to read your data without the passphrase.", + "zw-th": "Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server. This means that even if someone gains access to the server, they won't be able to read your data without the passphrase." + }, + "Ui.RemoteE2EE.StronglyRecommendedLine1": { + "def": "Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server.", + "es": "Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server.", + "ja": "Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server.", + "ko": "Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server.", + "ru": "Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server.", + "zh": "Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server.", + "zw-th": "Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server." + }, + "Ui.RemoteE2EE.StronglyRecommendedLine2": { + "def": "Also, please note that if you are using Peer-to-Peer synchronization, this configuration will be used when you switch to other methods and connect to a remote server in the future.", + "es": "Also, please note that if you are using Peer-to-Peer synchronization, this configuration will be used when you switch to other methods and connect to a remote server in the future.", + "ja": "Also, please note that if you are using Peer-to-Peer synchronization, this configuration will be used when you switch to other methods and connect to a remote server in the future.", + "ko": "Also, please note that if you are using Peer-to-Peer synchronization, this configuration will be used when you switch to other methods and connect to a remote server in the future.", + "ru": "Also, please note that if you are using Peer-to-Peer synchronization, this configuration will be used when you switch to other methods and connect to a remote server in the future.", + "zh": "Also, please note that if you are using Peer-to-Peer synchronization, this configuration will be used when you switch to other methods and connect to a remote server in the future.", + "zw-th": "Also, please note that if you are using Peer-to-Peer synchronization, this configuration will be used when you switch to other methods and connect to a remote server in the future." + }, + "Ui.RemoteE2EE.StronglyRecommendedTitle": { + "def": "Strongly Recommended", + "es": "Strongly Recommended", + "ja": "Strongly Recommended", + "ko": "Strongly Recommended", + "ru": "Strongly Recommended", + "zh": "Strongly Recommended", + "zw-th": "Strongly Recommended" + }, + "Ui.RemoteE2EE.Title": { + "def": "End-to-End Encryption", + "es": "End-to-End Encryption", + "ja": "End-to-End Encryption", + "ko": "End-to-End Encryption", + "ru": "End-to-End Encryption", + "zh": "End-to-End Encryption", + "zw-th": "End-to-End Encryption" + }, + "Ui.RemoteE2EE.WarningSameSetting": { + "def": "This setting must be the same even when connecting to multiple synchronisation destinations.", + "es": "This setting must be the same even when connecting to multiple synchronisation destinations.", + "ja": "This setting must be the same even when connecting to multiple synchronisation destinations.", + "ko": "This setting must be the same even when connecting to multiple synchronisation destinations.", + "ru": "This setting must be the same even when connecting to multiple synchronisation destinations.", + "zh": "This setting must be the same even when connecting to multiple synchronisation destinations.", + "zw-th": "This setting must be the same even when connecting to multiple synchronisation destinations." + }, + "Ui.ScanQRCode.ButtonClose": { + "def": "Close this dialog", + "es": "Close this dialog", + "ja": "Close this dialog", + "ko": "Close this dialog", + "ru": "Close this dialog", + "zh": "Close this dialog", + "zw-th": "Close this dialog" + }, + "Ui.ScanQRCode.Guidance": { + "def": "Please follow the steps below to import settings from your existing device.", + "es": "Please follow the steps below to import settings from your existing device.", + "ja": "Please follow the steps below to import settings from your existing device.", + "ko": "Please follow the steps below to import settings from your existing device.", + "ru": "Please follow the steps below to import settings from your existing device.", + "zh": "Please follow the steps below to import settings from your existing device.", + "zw-th": "Please follow the steps below to import settings from your existing device." + }, + "Ui.ScanQRCode.Instruction": { + "def": "Please follow the steps below to import settings from your existing device.", + "es": "Please follow the steps below to import settings from your existing device.", + "ja": "Please follow the steps below to import settings from your existing device.", + "ko": "Please follow the steps below to import settings from your existing device.", + "ru": "Please follow the steps below to import settings from your existing device.", + "zh": "Please follow the steps below to import settings from your existing device.", + "zw-th": "Please follow the steps below to import settings from your existing device." + }, + "Ui.ScanQRCode.Step1": { + "def": "On this device, please keep this Vault open.", + "es": "On this device, please keep this Vault open.", + "ja": "On this device, please keep this Vault open.", + "ko": "On this device, please keep this Vault open.", + "ru": "On this device, please keep this Vault open.", + "zh": "On this device, please keep this Vault open.", + "zw-th": "On this device, please keep this Vault open." + }, + "Ui.ScanQRCode.Step2": { + "def": "On the source device, open Obsidian.", + "es": "On the source device, open Obsidian.", + "ja": "On the source device, open Obsidian.", + "ko": "On the source device, open Obsidian.", + "ru": "On the source device, open Obsidian.", + "zh": "On the source device, open Obsidian.", + "zw-th": "On the source device, open Obsidian." + }, + "Ui.ScanQRCode.Step3": { + "def": "On the source device, from the command palette, run the 'Show settings as a QR code' command.", + "es": "On the source device, from the command palette, run the 'Show settings as a QR code' command.", + "ja": "On the source device, from the command palette, run the 'Show settings as a QR code' command.", + "ko": "On the source device, from the command palette, run the 'Show settings as a QR code' command.", + "ru": "On the source device, from the command palette, run the 'Show settings as a QR code' command.", + "zh": "On the source device, from the command palette, run the 'Show settings as a QR code' command.", + "zw-th": "On the source device, from the command palette, run the 'Show settings as a QR code' command." + }, + "Ui.ScanQRCode.Step4": { + "def": "On this device, switch to the camera app or use a QR code scanner to scan the displayed QR code.", + "es": "On this device, switch to the camera app or use a QR code scanner to scan the displayed QR code.", + "ja": "On this device, switch to the camera app or use a QR code scanner to scan the displayed QR code.", + "ko": "On this device, switch to the camera app or use a QR code scanner to scan the displayed QR code.", + "ru": "On this device, switch to the camera app or use a QR code scanner to scan the displayed QR code.", + "zh": "On this device, switch to the camera app or use a QR code scanner to scan the displayed QR code.", + "zw-th": "On this device, switch to the camera app or use a QR code scanner to scan the displayed QR code." + }, + "Ui.ScanQRCode.Title": { + "def": "Scan QR Code", + "es": "Scan QR Code", + "ja": "Scan QR Code", + "ko": "Scan QR Code", + "ru": "Scan QR Code", + "zh": "Scan QR Code", + "zw-th": "Scan QR Code" + }, + "Ui.SetupWizard.Bucket.Title": { + "def": "S3/MinIO/R2 Configuration", + "es": "S3/MinIO/R2 Configuration", + "ja": "S3/MinIO/R2 Configuration", + "ko": "S3/MinIO/R2 Configuration", + "ru": "S3/MinIO/R2 Configuration", + "zh": "S3/MinIO/R2 Configuration", + "zw-th": "S3/MinIO/R2 Configuration" + }, + "Ui.SetupWizard.Common.AdvancedSettings": { + "def": "Advanced Settings", + "es": "Advanced Settings", + "ja": "Advanced Settings", + "ko": "Advanced Settings", + "ru": "Advanced Settings", + "zh": "Advanced Settings", + "zw-th": "Advanced Settings" +>>>>>>> 7a02c45 (i18n: fill all missing keys across all 7 non-English languages to 100%) }, "Ui.SetupWizard.Common.Back": { def: "Back", @@ -5028,6 +10414,7 @@ export const _allMessages = { "zw-th": "取消", }, "Ui.SetupWizard.Common.ContinueAnyway": { +<<<<<<< HEAD def: "Continue anyway", }, "Ui.SetupWizard.Common.ExperimentalSettings": { @@ -5035,6 +10422,33 @@ export const _allMessages = { }, "Ui.SetupWizard.Common.HttpsOnlyMobile": { def: "We can use only Secure (HTTPS) connections on Obsidian Mobile.", +======= + "def": "Continue anyway", + "es": "Continue anyway", + "ja": "Continue anyway", + "ko": "Continue anyway", + "ru": "Continue anyway", + "zh": "Continue anyway", + "zw-th": "Continue anyway" + }, + "Ui.SetupWizard.Common.ExperimentalSettings": { + "def": "Experimental Settings", + "es": "Experimental Settings", + "ja": "Experimental Settings", + "ko": "Experimental Settings", + "ru": "Experimental Settings", + "zh": "Experimental Settings", + "zw-th": "Experimental Settings" + }, + "Ui.SetupWizard.Common.HttpsOnlyMobile": { + "def": "We can use only Secure (HTTPS) connections on Obsidian Mobile.", + "es": "We can use only Secure (HTTPS) connections on Obsidian Mobile.", + "ja": "We can use only Secure (HTTPS) connections on Obsidian Mobile.", + "ko": "We can use only Secure (HTTPS) connections on Obsidian Mobile.", + "ru": "We can use only Secure (HTTPS) connections on Obsidian Mobile.", + "zh": "We can use only Secure (HTTPS) connections on Obsidian Mobile.", + "zw-th": "We can use only Secure (HTTPS) connections on Obsidian Mobile." +>>>>>>> 7a02c45 (i18n: fill all missing keys across all 7 non-English languages to 100%) }, "Ui.SetupWizard.Common.ProceedSelectOption": { def: "Please select an option", @@ -5047,6 +10461,7 @@ export const _allMessages = { "zw-th": "請選擇一個選項", }, "Ui.SetupWizard.CouchDB.Title": { +<<<<<<< HEAD def: "CouchDB Configuration", }, "Ui.SetupWizard.CouchDBCheck.DetectAndFix": { @@ -5120,6 +10535,231 @@ export const _allMessages = { }, "Ui.SetupWizard.Fetch.VaultUnbalancedDesc": { def: "(e.g., after editing many files whilst offline)", +======= + "def": "CouchDB Configuration", + "es": "CouchDB Configuration", + "ja": "CouchDB Configuration", + "ko": "CouchDB Configuration", + "ru": "CouchDB Configuration", + "zh": "CouchDB Configuration", + "zw-th": "CouchDB Configuration" + }, + "Ui.SetupWizard.CouchDBCheck.DetectAndFix": { + "def": "Detect and Fix CouchDB Issues", + "es": "Detect and Fix CouchDB Issues", + "ja": "Detect and Fix CouchDB Issues", + "ko": "Detect and Fix CouchDB Issues", + "ru": "Detect and Fix CouchDB Issues", + "zh": "Detect and Fix CouchDB Issues", + "zw-th": "Detect and Fix CouchDB Issues" + }, + "Ui.SetupWizard.CouchDBCheck.Fix": { + "def": "Fix", + "es": "Fix", + "ja": "Fix", + "ko": "Fix", + "ru": "Fix", + "zh": "Fix", + "zw-th": "Fix" + }, + "Ui.SetupWizard.Fetch.BackupDone": { + "def": "I have created a backup of my Vault.", + "es": "I have created a backup of my Vault.", + "ja": "I have created a backup of my Vault.", + "ko": "I have created a backup of my Vault.", + "ru": "I have created a backup of my Vault.", + "zh": "I have created a backup of my Vault.", + "zw-th": "I have created a backup of my Vault." + }, + "Ui.SetupWizard.Fetch.BackupQuestion": { + "def": "Have you created a backup before proceeding?", + "es": "Have you created a backup before proceeding?", + "ja": "Have you created a backup before proceeding?", + "ko": "Have you created a backup before proceeding?", + "ru": "Have you created a backup before proceeding?", + "zh": "Have you created a backup before proceeding?", + "zw-th": "Have you created a backup before proceeding?" + }, + "Ui.SetupWizard.Fetch.BackupRecommendation": { + "def": "We recommend that you copy your Vault folder to a safe location. This will provide a safeguard in case a large number of conflicts arise, or if you accidentally synchronise with an incorrect destination.", + "es": "We recommend that you copy your Vault folder to a safe location. This will provide a safeguard in case a large number of conflicts arise, or if you accidentally synchronise with an incorrect destination.", + "ja": "We recommend that you copy your Vault folder to a safe location. This will provide a safeguard in case a large number of conflicts arise, or if you accidentally synchronise with an incorrect destination.", + "ko": "We recommend that you copy your Vault folder to a safe location. This will provide a safeguard in case a large number of conflicts arise, or if you accidentally synchronise with an incorrect destination.", + "ru": "We recommend that you copy your Vault folder to a safe location. This will provide a safeguard in case a large number of conflicts arise, or if you accidentally synchronise with an incorrect destination.", + "zh": "We recommend that you copy your Vault folder to a safe location. This will provide a safeguard in case a large number of conflicts arise, or if you accidentally synchronise with an incorrect destination.", + "zw-th": "We recommend that you copy your Vault folder to a safe location. This will provide a safeguard in case a large number of conflicts arise, or if you accidentally synchronise with an incorrect destination." + }, + "Ui.SetupWizard.Fetch.BackupSkipped": { + "def": "I understand the risks and will proceed without a backup.", + "es": "I understand the risks and will proceed without a backup.", + "ja": "I understand the risks and will proceed without a backup.", + "ko": "I understand the risks and will proceed without a backup.", + "ru": "I understand the risks and will proceed without a backup.", + "zh": "I understand the risks and will proceed without a backup.", + "zw-th": "I understand the risks and will proceed without a backup." + }, + "Ui.SetupWizard.Fetch.BackupUnable": { + "def": "I am unable to create a backup of my Vault.", + "es": "I am unable to create a backup of my Vault.", + "ja": "I am unable to create a backup of my Vault.", + "ko": "I am unable to create a backup of my Vault.", + "ru": "I am unable to create a backup of my Vault.", + "zh": "I am unable to create a backup of my Vault.", + "zw-th": "I am unable to create a backup of my Vault." + }, + "Ui.SetupWizard.Fetch.BackupUnableNote": { + "def": "If you understand the risks and still wish to proceed, select so.", + "es": "If you understand the risks and still wish to proceed, select so.", + "ja": "If you understand the risks and still wish to proceed, select so.", + "ko": "If you understand the risks and still wish to proceed, select so.", + "ru": "If you understand the risks and still wish to proceed, select so.", + "zh": "If you understand the risks and still wish to proceed, select so.", + "zw-th": "If you understand the risks and still wish to proceed, select so." + }, + "Ui.SetupWizard.Fetch.BackupUnableWarning": { + "def": "It is strongly advised to create a backup before proceeding. Continuing without a backup may lead to data loss.", + "es": "It is strongly advised to create a backup before proceeding. Continuing without a backup may lead to data loss.", + "ja": "It is strongly advised to create a backup before proceeding. Continuing without a backup may lead to data loss.", + "ko": "It is strongly advised to create a backup before proceeding. Continuing without a backup may lead to data loss.", + "ru": "It is strongly advised to create a backup before proceeding. Continuing without a backup may lead to data loss.", + "zh": "It is strongly advised to create a backup before proceeding. Continuing without a backup may lead to data loss.", + "zw-th": "It is strongly advised to create a backup before proceeding. Continuing without a backup may lead to data loss." + }, + "Ui.SetupWizard.Fetch.ConflictNote": { + "def": "Furthermore, if conflicts are already present in the server data, they will be synchronised to this device as they are, and you will need to resolve them locally.", + "es": "Furthermore, if conflicts are already present in the server data, they will be synchronised to this device as they are, and you will need to resolve them locally.", + "ja": "Furthermore, if conflicts are already present in the server data, they will be synchronised to this device as they are, and you will need to resolve them locally.", + "ko": "Furthermore, if conflicts are already present in the server data, they will be synchronised to this device as they are, and you will need to resolve them locally.", + "ru": "Furthermore, if conflicts are already present in the server data, they will be synchronised to this device as they are, and you will need to resolve them locally.", + "zh": "Furthermore, if conflicts are already present in the server data, they will be synchronised to this device as they are, and you will need to resolve them locally.", + "zw-th": "Furthermore, if conflicts are already present in the server data, they will be synchronised to this device as they are, and you will need to resolve them locally." + }, + "Ui.SetupWizard.Fetch.Guidance": { + "def": "This will rebuild the local database on this device using the most recent data from the server. This action is designed to resolve synchronisation inconsistencies and restore correct functionality.", + "es": "This will rebuild the local database on this device using the most recent data from the server. This action is designed to resolve synchronisation inconsistencies and restore correct functionality.", + "ja": "This will rebuild the local database on this device using the most recent data from the server. This action is designed to resolve synchronisation inconsistencies and restore correct functionality.", + "ko": "This will rebuild the local database on this device using the most recent data from the server. This action is designed to resolve synchronisation inconsistencies and restore correct functionality.", + "ru": "This will rebuild the local database on this device using the most recent data from the server. This action is designed to resolve synchronisation inconsistencies and restore correct functionality.", + "zh": "This will rebuild the local database on this device using the most recent data from the server. This action is designed to resolve synchronisation inconsistencies and restore correct functionality.", + "zw-th": "This will rebuild the local database on this device using the most recent data from the server. This action is designed to resolve synchronisation inconsistencies and restore correct functionality." + }, + "Ui.SetupWizard.Fetch.ImportantBody": { + "def": "If you have unsynchronised changes in your Vault on this device, they will likely diverge from the server's versions after the reset. This may result in a large number of file conflicts.", + "es": "If you have unsynchronised changes in your Vault on this device, they will likely diverge from the server's versions after the reset. This may result in a large number of file conflicts.", + "ja": "If you have unsynchronised changes in your Vault on this device, they will likely diverge from the server's versions after the reset. This may result in a large number of file conflicts.", + "ko": "If you have unsynchronised changes in your Vault on this device, they will likely diverge from the server's versions after the reset. This may result in a large number of file conflicts.", + "ru": "If you have unsynchronised changes in your Vault on this device, they will likely diverge from the server's versions after the reset. This may result in a large number of file conflicts.", + "zh": "If you have unsynchronised changes in your Vault on this device, they will likely diverge from the server's versions after the reset. This may result in a large number of file conflicts.", + "zw-th": "If you have unsynchronised changes in your Vault on this device, they will likely diverge from the server's versions after the reset. This may result in a large number of file conflicts." + }, + "Ui.SetupWizard.Fetch.ImportantTitle": { + "def": "Important Notice", + "es": "Important Notice", + "ja": "Important Notice", + "ko": "Important Notice", + "ru": "Important Notice", + "zh": "Important Notice", + "zw-th": "Important Notice" + }, + "Ui.SetupWizard.Fetch.PreventFetchConfig": { + "def": "Prevent fetching configuration from server", + "es": "Prevent fetching configuration from server", + "ja": "Prevent fetching configuration from server", + "ko": "Prevent fetching configuration from server", + "ru": "Prevent fetching configuration from server", + "zh": "Prevent fetching configuration from server", + "zw-th": "Prevent fetching configuration from server" + }, + "Ui.SetupWizard.Fetch.Proceed": { + "def": "Reset and Resume Synchronisation", + "es": "Reset and Resume Synchronisation", + "ja": "Reset and Resume Synchronisation", + "ko": "Reset and Resume Synchronisation", + "ru": "Reset and Resume Synchronisation", + "zh": "Reset and Resume Synchronisation", + "zw-th": "Reset and Resume Synchronisation" + }, + "Ui.SetupWizard.Fetch.Title": { + "def": "Reset Synchronisation on This Device", + "es": "Reset Synchronisation on This Device", + "ja": "Reset Synchronisation on This Device", + "ko": "Reset Synchronisation on This Device", + "ru": "Reset Synchronisation on This Device", + "zh": "Reset Synchronisation on This Device", + "zw-th": "Reset Synchronisation on This Device" + }, + "Ui.SetupWizard.Fetch.UnbalancedNote": { + "def": "In this scenario, Self-hosted LiveSync will recreate metadata for every file and deliberately generate conflicts. Where the file content is identical, these conflicts will be resolved automatically.", + "es": "In this scenario, Self-hosted LiveSync will recreate metadata for every file and deliberately generate conflicts. Where the file content is identical, these conflicts will be resolved automatically.", + "ja": "In this scenario, Self-hosted LiveSync will recreate metadata for every file and deliberately generate conflicts. Where the file content is identical, these conflicts will be resolved automatically.", + "ko": "In this scenario, Self-hosted LiveSync will recreate metadata for every file and deliberately generate conflicts. Where the file content is identical, these conflicts will be resolved automatically.", + "ru": "In this scenario, Self-hosted LiveSync will recreate metadata for every file and deliberately generate conflicts. Where the file content is identical, these conflicts will be resolved automatically.", + "zh": "In this scenario, Self-hosted LiveSync will recreate metadata for every file and deliberately generate conflicts. Where the file content is identical, these conflicts will be resolved automatically.", + "zw-th": "In this scenario, Self-hosted LiveSync will recreate metadata for every file and deliberately generate conflicts. Where the file content is identical, these conflicts will be resolved automatically." + }, + "Ui.SetupWizard.Fetch.VaultIdentical": { + "def": "The files in this Vault are almost identical to the server's.", + "es": "The files in this Vault are almost identical to the server's.", + "ja": "The files in this Vault are almost identical to the server's.", + "ko": "The files in this Vault are almost identical to the server's.", + "ru": "The files in this Vault are almost identical to the server's.", + "zh": "The files in this Vault are almost identical to the server's.", + "zw-th": "The files in this Vault are almost identical to the server's." + }, + "Ui.SetupWizard.Fetch.VaultIdenticalDesc": { + "def": "(e.g., immediately after restoring on another computer, or having recovered from a backup)", + "es": "(e.g., immediately after restoring on another computer, or having recovered from a backup)", + "ja": "(e.g., immediately after restoring on another computer, or having recovered from a backup)", + "ko": "(e.g., immediately after restoring on another computer, or having recovered from a backup)", + "ru": "(e.g., immediately after restoring on another computer, or having recovered from a backup)", + "zh": "(e.g., immediately after restoring on another computer, or having recovered from a backup)", + "zw-th": "(e.g., immediately after restoring on another computer, or having recovered from a backup)" + }, + "Ui.SetupWizard.Fetch.VaultIndependent": { + "def": "This Vault is empty, or contains only new files that are not on the server.", + "es": "This Vault is empty, or contains only new files that are not on the server.", + "ja": "This Vault is empty, or contains only new files that are not on the server.", + "ko": "This Vault is empty, or contains only new files that are not on the server.", + "ru": "This Vault is empty, or contains only new files that are not on the server.", + "zh": "This Vault is empty, or contains only new files that are not on the server.", + "zw-th": "This Vault is empty, or contains only new files that are not on the server." + }, + "Ui.SetupWizard.Fetch.VaultIndependentDesc": { + "def": "(e.g., setting up for the first time on a new smartphone, starting from a clean slate)", + "es": "(e.g., setting up for the first time on a new smartphone, starting from a clean slate)", + "ja": "(e.g., setting up for the first time on a new smartphone, starting from a clean slate)", + "ko": "(e.g., setting up for the first time on a new smartphone, starting from a clean slate)", + "ru": "(e.g., setting up for the first time on a new smartphone, starting from a clean slate)", + "zh": "(e.g., setting up for the first time on a new smartphone, starting from a clean slate)", + "zw-th": "(e.g., setting up for the first time on a new smartphone, starting from a clean slate)" + }, + "Ui.SetupWizard.Fetch.VaultQuestion": { + "def": "To minimise the creation of new conflicts, please select the option that best describes the current state of your Vault. The application will then check your files in the most appropriate way based on your selection.", + "es": "To minimise the creation of new conflicts, please select the option that best describes the current state of your Vault. The application will then check your files in the most appropriate way based on your selection.", + "ja": "To minimise the creation of new conflicts, please select the option that best describes the current state of your Vault. The application will then check your files in the most appropriate way based on your selection.", + "ko": "To minimise the creation of new conflicts, please select the option that best describes the current state of your Vault. The application will then check your files in the most appropriate way based on your selection.", + "ru": "To minimise the creation of new conflicts, please select the option that best describes the current state of your Vault. The application will then check your files in the most appropriate way based on your selection.", + "zh": "To minimise the creation of new conflicts, please select the option that best describes the current state of your Vault. The application will then check your files in the most appropriate way based on your selection.", + "zw-th": "To minimise the creation of new conflicts, please select the option that best describes the current state of your Vault. The application will then check your files in the most appropriate way based on your selection." + }, + "Ui.SetupWizard.Fetch.VaultUnbalanced": { + "def": "There may be differences between the files in this Vault and the server.", + "es": "There may be differences between the files in this Vault and the server.", + "ja": "There may be differences between the files in this Vault and the server.", + "ko": "There may be differences between the files in this Vault and the server.", + "ru": "There may be differences between the files in this Vault and the server.", + "zh": "There may be differences between the files in this Vault and the server.", + "zw-th": "There may be differences between the files in this Vault and the server." + }, + "Ui.SetupWizard.Fetch.VaultUnbalancedDesc": { + "def": "(e.g., after editing many files whilst offline)", + "es": "(e.g., after editing many files whilst offline)", + "ja": "(e.g., after editing many files whilst offline)", + "ko": "(e.g., after editing many files whilst offline)", + "ru": "(e.g., after editing many files whilst offline)", + "zh": "(e.g., after editing many files whilst offline)", + "zw-th": "(e.g., after editing many files whilst offline)" +>>>>>>> 7a02c45 (i18n: fill all missing keys across all 7 non-English languages to 100%) }, "Ui.SetupWizard.Intro.ExistingOption": { def: "I already have a configured server", @@ -5422,6 +11062,7 @@ export const _allMessages = { "zw-th": "設定完成", }, "Ui.SetupWizard.P2P.Title": { +<<<<<<< HEAD def: "P2P Configuration", }, "Ui.SetupWizard.P2P.UseDefaultRelay": { @@ -5480,6 +11121,186 @@ export const _allMessages = { }, "Ui.SetupWizard.Rebuild.WhenToUse": { def: "You should perform this operation only in exceptional circumstances, such as when the server data is completely corrupted, when changes on all other devices are no longer needed, or when the database size has become unusually large in comparison to the Vault size.", +======= + "def": "P2P Configuration", + "es": "P2P Configuration", + "ja": "P2P Configuration", + "ko": "P2P Configuration", + "ru": "P2P Configuration", + "zh": "P2P Configuration", + "zw-th": "P2P Configuration" + }, + "Ui.SetupWizard.P2P.UseDefaultRelay": { + "def": "Use vrtmrz's relay", + "es": "Use vrtmrz's relay", + "ja": "Use vrtmrz's relay", + "ko": "Use vrtmrz's relay", + "ru": "Use vrtmrz's relay", + "zh": "Use vrtmrz's relay", + "zw-th": "Use vrtmrz's relay" + }, + "Ui.SetupWizard.Rebuild.BackupBeforeProceeding": { + "def": "Of course, we can back up the data before proceeding.", + "es": "Of course, we can back up the data before proceeding.", + "ja": "Of course, we can back up the data before proceeding.", + "ko": "Of course, we can back up the data before proceeding.", + "ru": "Of course, we can back up the data before proceeding.", + "zh": "Of course, we can back up the data before proceeding.", + "zw-th": "Of course, we can back up the data before proceeding." + }, + "Ui.SetupWizard.Rebuild.BackupDone": { + "def": "I have created a backup of my Vault.", + "es": "I have created a backup of my Vault.", + "ja": "I have created a backup of my Vault.", + "ko": "I have created a backup of my Vault.", + "ru": "I have created a backup of my Vault.", + "zh": "I have created a backup of my Vault.", + "zw-th": "I have created a backup of my Vault." + }, + "Ui.SetupWizard.Rebuild.BackupQuestion": { + "def": "Have you created a backup before proceeding?", + "es": "Have you created a backup before proceeding?", + "ja": "Have you created a backup before proceeding?", + "ko": "Have you created a backup before proceeding?", + "ru": "Have you created a backup before proceeding?", + "zh": "Have you created a backup before proceeding?", + "zw-th": "Have you created a backup before proceeding?" + }, + "Ui.SetupWizard.Rebuild.BackupSkipped": { + "def": "I understand the risks and will proceed without a backup.", + "es": "I understand the risks and will proceed without a backup.", + "ja": "I understand the risks and will proceed without a backup.", + "ko": "I understand the risks and will proceed without a backup.", + "ru": "I understand the risks and will proceed without a backup.", + "zh": "I understand the risks and will proceed without a backup.", + "zw-th": "I understand the risks and will proceed without a backup." + }, + "Ui.SetupWizard.Rebuild.BackupUnable": { + "def": "I am unable to create a backup of my Vaults.", + "es": "I am unable to create a backup of my Vaults.", + "ja": "I am unable to create a backup of my Vaults.", + "ko": "I am unable to create a backup of my Vaults.", + "ru": "I am unable to create a backup of my Vaults.", + "zh": "I am unable to create a backup of my Vaults.", + "zw-th": "I am unable to create a backup of my Vaults." + }, + "Ui.SetupWizard.Rebuild.BackupUnableAdvice": { + "def": "You should create a new synchronisation destination and rebuild your data there. After that, synchronise to a brand new vault on each other device with the new remote one by one.", + "es": "You should create a new synchronisation destination and rebuild your data there. After that, synchronise to a brand new vault on each other device with the new remote one by one.", + "ja": "You should create a new synchronisation destination and rebuild your data there. After that, synchronise to a brand new vault on each other device with the new remote one by one.", + "ko": "You should create a new synchronisation destination and rebuild your data there. After that, synchronise to a brand new vault on each other device with the new remote one by one.", + "ru": "You should create a new synchronisation destination and rebuild your data there. After that, synchronise to a brand new vault on each other device with the new remote one by one.", + "zh": "You should create a new synchronisation destination and rebuild your data there. After that, synchronise to a brand new vault on each other device with the new remote one by one.", + "zw-th": "You should create a new synchronisation destination and rebuild your data there. After that, synchronise to a brand new vault on each other device with the new remote one by one." + }, + "Ui.SetupWizard.Rebuild.BackupWarning": { + "def": "This is an extremely powerful operation. We strongly recommend that you copy your Vault folder to a safe location.", + "es": "This is an extremely powerful operation. We strongly recommend that you copy your Vault folder to a safe location.", + "ja": "This is an extremely powerful operation. We strongly recommend that you copy your Vault folder to a safe location.", + "ko": "This is an extremely powerful operation. We strongly recommend that you copy your Vault folder to a safe location.", + "ru": "This is an extremely powerful operation. We strongly recommend that you copy your Vault folder to a safe location.", + "zh": "This is an extremely powerful operation. We strongly recommend that you copy your Vault folder to a safe location.", + "zw-th": "This is an extremely powerful operation. We strongly recommend that you copy your Vault folder to a safe location." + }, + "Ui.SetupWizard.Rebuild.ConfirmDataLoss": { + "def": "I understand that all changes made on other smartphones or computers possibly could be lost.", + "es": "I understand that all changes made on other smartphones or computers possibly could be lost.", + "ja": "I understand that all changes made on other smartphones or computers possibly could be lost.", + "ko": "I understand that all changes made on other smartphones or computers possibly could be lost.", + "ru": "I understand that all changes made on other smartphones or computers possibly could be lost.", + "zh": "I understand that all changes made on other smartphones or computers possibly could be lost.", + "zw-th": "I understand that all changes made on other smartphones or computers possibly could be lost." + }, + "Ui.SetupWizard.Rebuild.ConfirmIrreversible": { + "def": "I understand that this action is irreversible once performed.", + "es": "I understand that this action is irreversible once performed.", + "ja": "I understand that this action is irreversible once performed.", + "ko": "I understand that this action is irreversible once performed.", + "ru": "I understand that this action is irreversible once performed.", + "zh": "I understand that this action is irreversible once performed.", + "zw-th": "I understand that this action is irreversible once performed." + }, + "Ui.SetupWizard.Rebuild.ConfirmSyncDisabled": { + "def": "I understand that other devices will no longer be able to synchronise, and will need to be reset the synchronisation information.", + "es": "I understand that other devices will no longer be able to synchronise, and will need to be reset the synchronisation information.", + "ja": "I understand that other devices will no longer be able to synchronise, and will need to be reset the synchronisation information.", + "ko": "I understand that other devices will no longer be able to synchronise, and will need to be reset the synchronisation information.", + "ru": "I understand that other devices will no longer be able to synchronise, and will need to be reset the synchronisation information.", + "zh": "I understand that other devices will no longer be able to synchronise, and will need to be reset the synchronisation information.", + "zw-th": "I understand that other devices will no longer be able to synchronise, and will need to be reset the synchronisation information." + }, + "Ui.SetupWizard.Rebuild.ConfirmTitle": { + "def": "Please Confirm the Following", + "es": "Please Confirm the Following", + "ja": "Please Confirm the Following", + "ko": "Please Confirm the Following", + "ru": "Please Confirm the Following", + "zh": "Please Confirm the Following", + "zw-th": "Please Confirm the Following" + }, + "Ui.SetupWizard.Rebuild.Guidance": { + "def": "This procedure will first delete all existing synchronisation data from the server. Following this, the server data will be completely rebuilt, using the current state of your Vault on this device as the single, authoritative master copy.", + "es": "This procedure will first delete all existing synchronisation data from the server. Following this, the server data will be completely rebuilt, using the current state of your Vault on this device as the single, authoritative master copy.", + "ja": "This procedure will first delete all existing synchronisation data from the server. Following this, the server data will be completely rebuilt, using the current state of your Vault on this device as the single, authoritative master copy.", + "ko": "This procedure will first delete all existing synchronisation data from the server. Following this, the server data will be completely rebuilt, using the current state of your Vault on this device as the single, authoritative master copy.", + "ru": "This procedure will first delete all existing synchronisation data from the server. Following this, the server data will be completely rebuilt, using the current state of your Vault on this device as the single, authoritative master copy.", + "zh": "This procedure will first delete all existing synchronisation data from the server. Following this, the server data will be completely rebuilt, using the current state of your Vault on this device as the single, authoritative master copy.", + "zw-th": "This procedure will first delete all existing synchronisation data from the server. Following this, the server data will be completely rebuilt, using the current state of your Vault on this device as the single, authoritative master copy." + }, + "Ui.SetupWizard.Rebuild.PreventFetchConfig": { + "def": "Prevent fetching configuration from server", + "es": "Prevent fetching configuration from server", + "ja": "Prevent fetching configuration from server", + "ko": "Prevent fetching configuration from server", + "ru": "Prevent fetching configuration from server", + "zh": "Prevent fetching configuration from server", + "zw-th": "Prevent fetching configuration from server" + }, + "Ui.SetupWizard.Rebuild.Proceed": { + "def": "I Understand, Overwrite Server", + "es": "I Understand, Overwrite Server", + "ja": "I Understand, Overwrite Server", + "ko": "I Understand, Overwrite Server", + "ru": "I Understand, Overwrite Server", + "zh": "I Understand, Overwrite Server", + "zw-th": "I Understand, Overwrite Server" + }, + "Ui.SetupWizard.Rebuild.ResetNotifyOtherDevices": { + "def": "by resetting the remote, you will be informed on other devices.", + "es": "by resetting the remote, you will be informed on other devices.", + "ja": "by resetting the remote, you will be informed on other devices.", + "ko": "by resetting the remote, you will be informed on other devices.", + "ru": "by resetting the remote, you will be informed on other devices.", + "zh": "by resetting the remote, you will be informed on other devices.", + "zw-th": "by resetting the remote, you will be informed on other devices." + }, + "Ui.SetupWizard.Rebuild.ResolveOnOtherDevices": { + "def": "There is a way to resolve this on other devices.", + "es": "There is a way to resolve this on other devices.", + "ja": "There is a way to resolve this on other devices.", + "ko": "There is a way to resolve this on other devices.", + "ru": "There is a way to resolve this on other devices.", + "zh": "There is a way to resolve this on other devices.", + "zw-th": "There is a way to resolve this on other devices." + }, + "Ui.SetupWizard.Rebuild.Title": { + "def": "Final Confirmation: Overwrite Server Data with This Device's Files", + "es": "Final Confirmation: Overwrite Server Data with This Device's Files", + "ja": "Final Confirmation: Overwrite Server Data with This Device's Files", + "ko": "Final Confirmation: Overwrite Server Data with This Device's Files", + "ru": "Final Confirmation: Overwrite Server Data with This Device's Files", + "zh": "Final Confirmation: Overwrite Server Data with This Device's Files", + "zw-th": "Final Confirmation: Overwrite Server Data with This Device's Files" + }, + "Ui.SetupWizard.Rebuild.WhenToUse": { + "def": "You should perform this operation only in exceptional circumstances, such as when the server data is completely corrupted, when changes on all other devices are no longer needed, or when the database size has become unusually large in comparison to the Vault size.", + "es": "You should perform this operation only in exceptional circumstances, such as when the server data is completely corrupted, when changes on all other devices are no longer needed, or when the database size has become unusually large in comparison to the Vault size.", + "ja": "You should perform this operation only in exceptional circumstances, such as when the server data is completely corrupted, when changes on all other devices are no longer needed, or when the database size has become unusually large in comparison to the Vault size.", + "ko": "You should perform this operation only in exceptional circumstances, such as when the server data is completely corrupted, when changes on all other devices are no longer needed, or when the database size has become unusually large in comparison to the Vault size.", + "ru": "You should perform this operation only in exceptional circumstances, such as when the server data is completely corrupted, when changes on all other devices are no longer needed, or when the database size has become unusually large in comparison to the Vault size.", + "zh": "You should perform this operation only in exceptional circumstances, such as when the server data is completely corrupted, when changes on all other devices are no longer needed, or when the database size has become unusually large in comparison to the Vault size.", + "zw-th": "You should perform this operation only in exceptional circumstances, such as when the server data is completely corrupted, when changes on all other devices are no longer needed, or when the database size has become unusually large in comparison to the Vault size." +>>>>>>> 7a02c45 (i18n: fill all missing keys across all 7 non-English languages to 100%) }, "Ui.SetupWizard.SelectExisting.Guidance": { def: "Choose how to connect to your existing LiveSync server.", @@ -5802,6 +11623,7 @@ export const _allMessages = { "zw-th": "設定遠端伺服器", }, "Ui.UseSetupURI.ButtonCancel": { +<<<<<<< HEAD def: "Cancel", }, "Ui.UseSetupURI.ButtonProceed": { @@ -5923,6 +11745,204 @@ export const _allMessages = { ko: "자세한 로그", ru: "Подробный лог", zh: "详细日志", +======= + "def": "Cancel", + "es": "Cancel", + "ja": "Cancel", + "ko": "Cancel", + "ru": "Cancel", + "zh": "Cancel", + "zw-th": "Cancel" + }, + "Ui.UseSetupURI.ButtonProceed": { + "def": "Test Settings and Continue", + "es": "Test Settings and Continue", + "ja": "Test Settings and Continue", + "ko": "Test Settings and Continue", + "ru": "Test Settings and Continue", + "zh": "Test Settings and Continue", + "zw-th": "Test Settings and Continue" + }, + "Ui.UseSetupURI.ErrorFailedToParse": { + "def": "Failed to parse Setup-URI.", + "es": "Failed to parse Setup-URI.", + "ja": "Failed to parse Setup-URI.", + "ko": "Failed to parse Setup-URI.", + "ru": "Failed to parse Setup-URI.", + "zh": "Failed to parse Setup-URI.", + "zw-th": "Failed to parse Setup-URI." + }, + "Ui.UseSetupURI.ErrorPassphraseRequired": { + "def": "Passphrase is required.", + "es": "Passphrase is required.", + "ja": "Passphrase is required.", + "ko": "Passphrase is required.", + "ru": "Passphrase is required.", + "zh": "Passphrase is required.", + "zw-th": "Passphrase is required." + }, + "Ui.UseSetupURI.Guidance": { + "def": "Please enter the Setup URI that was generated during server installation or on another device, along with the vault passphrase.", + "es": "Please enter the Setup URI that was generated during server installation or on another device, along with the vault passphrase.", + "ja": "Please enter the Setup URI that was generated during server installation or on another device, along with the vault passphrase.", + "ko": "Please enter the Setup URI that was generated during server installation or on another device, along with the vault passphrase.", + "ru": "Please enter the Setup URI that was generated during server installation or on another device, along with the vault passphrase.", + "zh": "Please enter the Setup URI that was generated during server installation or on another device, along with the vault passphrase.", + "zw-th": "Please enter the Setup URI that was generated during server installation or on another device, along with the vault passphrase." + }, + "Ui.UseSetupURI.InvalidInfo": { + "def": "The Setup-URI does not appear to be valid. Please check that you have copied it correctly.", + "es": "The Setup-URI does not appear to be valid. Please check that you have copied it correctly.", + "ja": "The Setup-URI does not appear to be valid. Please check that you have copied it correctly.", + "ko": "The Setup-URI does not appear to be valid. Please check that you have copied it correctly.", + "ru": "The Setup-URI does not appear to be valid. Please check that you have copied it correctly.", + "zh": "The Setup-URI does not appear to be valid. Please check that you have copied it correctly.", + "zw-th": "The Setup-URI does not appear to be valid. Please check that you have copied it correctly." + }, + "Ui.UseSetupURI.Label": { + "def": "Setup-URI", + "es": "Setup-URI", + "ja": "Setup-URI", + "ko": "Setup-URI", + "ru": "Setup-URI", + "zh": "Setup-URI", + "zw-th": "Setup-URI" + }, + "Ui.UseSetupURI.LabelPassphrase": { + "def": "Passphrase", + "es": "Passphrase", + "ja": "Passphrase", + "ko": "Passphrase", + "ru": "Passphrase", + "zh": "Passphrase", + "zw-th": "Passphrase" + }, + "Ui.UseSetupURI.PlaceholderPassphrase": { + "def": "Enter your passphrase", + "es": "Enter your passphrase", + "ja": "Enter your passphrase", + "ko": "Enter your passphrase", + "ru": "Enter your passphrase", + "zh": "Enter your passphrase", + "zw-th": "Enter your passphrase" + }, + "Ui.UseSetupURI.Title": { + "def": "Enter Setup URI", + "es": "Enter Setup URI", + "ja": "Enter Setup URI", + "ko": "Enter Setup URI", + "ru": "Enter Setup URI", + "zh": "Enter Setup URI", + "zw-th": "Enter Setup URI" + }, + "Ui.UseSetupURI.ValidMessage": { + "def": "The Setup-URI is valid and ready to use.", + "es": "The Setup-URI is valid and ready to use.", + "ja": "The Setup-URI is valid and ready to use.", + "ko": "The Setup-URI is valid and ready to use.", + "ru": "The Setup-URI is valid and ready to use.", + "zh": "The Setup-URI is valid and ready to use.", + "zw-th": "The Setup-URI is valid and ready to use." + }, + "Unique name between all synchronized devices. To edit this setting, please disable customization sync once.": { + "def": "Unique name between all synchronized devices. To edit this setting, please disable customization sync once.", + "es": "Nombre único entre dispositivos sincronizados. Para editarlo, desactive sincronización de personalización", + "ja": "同期するすべての端末間で重複しない(一意の)名前。この設定を変更する場合、カスタマイズ同期を無効にしてください。", + "ko": "모든 동기화된 기기 간 고유 이름입니다. 이 설정을 편집하려면 사용자 설정 동기화를 한 번 비활성화해 주세요.", + "ru": "Уникальное имя между всеми синхронизируемыми устройствами.", + "zh": "所有同步设备之间的唯一名称。要编辑此设置,请首先禁用自定义同步", + "zw-th": "Unique name between all synchronized devices. To edit this setting, please disable customization sync once." + }, + "Use Custom HTTP Handler": { + "def": "Use Custom HTTP Handler", + "es": "Usar manejador HTTP personalizado", + "ja": "カスタムHTTPハンドラーの利用", + "ko": "커스텀 HTTP 핸들러 사용", + "ru": "Использовать пользовательский HTTP обработчик", + "zh": "使用自定义 HTTP 处理程序", + "zw-th": "Use Custom HTTP Handler" + }, + "Use dynamic iteration count": { + "def": "Use dynamic iteration count", + "es": "Usar conteo de iteraciones dinámico", + "ja": "動的な繰り返し回数", + "ko": "동적 반복 횟수 사용", + "ru": "Использовать динамическое количество итераций", + "zh": "使用动态迭代次数", + "zw-th": "Use dynamic iteration count" + }, + "Use Segmented-splitter": { + "def": "Use Segmented-splitter", + "es": "Usar divisor segmentado", + "ja": "セグメント分割を使用", + "ko": "의미 기반 분할 사용", + "ru": "Использовать сегментный разделитель", + "zh": "使用分段分割器", + "zw-th": "Use Segmented-splitter" + }, + "Use splitting-limit-capped chunk splitter": { + "def": "Use splitting-limit-capped chunk splitter", + "es": "Usar divisor de chunks con límite", + "ja": "分割制限付きチャンク分割を使用", + "ko": "분할 제한 상한 청크 분할기 사용", + "ru": "Использовать разделитель чанков с ограничением", + "zh": "使用分割限制上限的块分割器", + "zw-th": "Use splitting-limit-capped chunk splitter" + }, + "Use the trash bin": { + "def": "Use the trash bin", + "es": "Usar papelera", + "ja": "ゴミ箱を使用", + "ko": "휴지통 사용", + "ru": "Использовать корзину", + "zh": "使用回收站", + "zw-th": "Use the trash bin" + }, + "Use timeouts instead of heartbeats": { + "def": "Use timeouts instead of heartbeats", + "es": "Usar timeouts en lugar de latidos", + "ja": "ハートビートの代わりにタイムアウトを使用", + "ko": "하트비트 대신 타임아웃 사용", + "ru": "Использовать таймауты вместо пульса", + "zh": "使用超时而不是心跳", + "zw-th": "Use timeouts instead of heartbeats" + }, + "username": { + "def": "username", + "es": "nombre de usuario", + "ja": "ユーザー名", + "ko": "사용자명", + "ru": "имя пользователя", + "zh": "用户名", + "zw-th": "username" + }, + "Username": { + "def": "Username", + "es": "Usuario", + "ja": "ユーザー名", + "ko": "사용자명", + "ru": "Имя пользователя", + "zh": "用户名", + "zw-th": "Username" + }, + "Verbose Log": { + "def": "Verbose Log", + "es": "Registro detallado", + "ja": "エラー以外のログ項目", + "ko": "자세한 로그", + "ru": "Подробный лог", + "zh": "详细日志", + "zw-th": "Verbose Log" + }, + "Warning! This will have a serious impact on performance. And the logs will not be synchronised under the default name. Please be careful with logs; they often contain your confidential information.": { + "def": "Warning! This will have a serious impact on performance. And the logs will not be synchronised under the default name. Please be careful with logs; they often contain your confidential information.", + "es": "¡Advertencia! Impacta rendimiento. Los logs no se sincronizan con nombre predeterminado. Contienen información confidencial", + "ja": "警告!これはパフォーマンスに重大な影響を与えます。また、ログはデフォルト名では同期されません。ログには機密情報が含まれることが多いため、注意してください。", + "ko": "경고! 이는 성능에 심각한 영향을 미칩니다. 로그는 기본 이름으로 동기화되지 않습니다. 로그에는 종종 기밀 정보가 포함되어 있으므로 주의해 주세요.", + "ru": "Warning! This will have a serious impact on performance. And the logs will not be synchronised under the default name. Please be careful with logs; they often contain your confidential information.", + "zh": "警告!这将严重影响性能。并且日志不会以默认名称同步。请小心处理日志;它们通常包含您的敏感信息 ", + "zw-th": "Warning! This will have a serious impact on performance. And the logs will not be synchronised under the default name. Please be careful with logs; they often contain your confidential information." +>>>>>>> 7a02c45 (i18n: fill all missing keys across all 7 non-English languages to 100%) }, "Warning! This will have a serious impact on performance. And the logs will not be synchronised under the default name. Please be careful with logs; they often contain your confidential information.": { @@ -5935,6 +11955,7 @@ export const _allMessages = { zh: "警告!这将严重影响性能。并且日志不会以默认名称同步。请小心处理日志;它们通常包含您的敏感信息 ", }, "When you save a file in the editor, start a sync automatically": { +<<<<<<< HEAD def: "When you save a file in the editor, start a sync automatically", es: "Iniciar sincronización automática al guardar en editor", fr: "À l'enregistrement d'un fichier dans l'éditeur, démarrer automatiquement une synchronisation", @@ -5960,6 +11981,33 @@ export const _allMessages = { ko: "파일에 로그 기록", ru: "Записывать логи в файл", zh: "将日志写入文件", +======= + "def": "When you save a file in the editor, start a sync automatically", + "es": "Iniciar sincronización automática al guardar en editor", + "ja": "エディタでファイルを保存すると、自動的に同期を開始します", + "ko": "편집기에서 파일을 저장할 때 자동으로 동기화를 시작합니다", + "ru": "Когда вы сохраняете файл в редакторе, автоматически запускать синхронизацию", + "zh": "当您在编辑器中保存文件时,自动开始同步", + "zw-th": "When you save a file in the editor, start a sync automatically" + }, + "Write credentials in the file": { + "def": "Write credentials in the file", + "es": "Escribir credenciales en archivo", + "ja": "認証情報のファイル内保存", + "ko": "파일에 자격 증명 저장", + "ru": "Записывать учётные данные в файл", + "zh": "将凭据写入文件", + "zw-th": "Write credentials in the file" + }, + "Write logs into the file": { + "def": "Write logs into the file", + "es": "Escribir logs en archivo", + "ja": "ファイルにログを記録", + "ko": "파일에 로그 기록", + "ru": "Записывать логи в файл", + "zh": "将日志写入文件", + "zw-th": "Write logs into the file" +>>>>>>> 7a02c45 (i18n: fill all missing keys across all 7 non-English languages to 100%) }, "Customization Sync (Beta3)": { "def": "Customization Sync (Beta3)", diff --git a/src/common/messagesJson/de.json b/src/common/messagesJson/de.json index a1cad80d..fbdf192b 100644 --- a/src/common/messagesJson/de.json +++ b/src/common/messagesJson/de.json @@ -169,5 +169,675 @@ "Ui.Settings.SyncSettings.Fetch": "Fetch", "Ui.Settings.SyncSettings.Merge": "Merge", "Ui.Settings.SyncSettings.Overwrite": "Overwrite", - "obsidianLiveSyncSettingTab.logServerConfigurationCheck": "Log Server Configuration Check" + "obsidianLiveSyncSettingTab.logServerConfigurationCheck": "Log Server Configuration Check", + "lang-ja": "日本語", + "obsidianLiveSyncSettingTab.msgDiscardConfirmation": "Do you really want to discard existing settings and databases?", + "Setting.GenerateKeyPair.Desc": "We have generated a key pair!\n\nNote: This key pair will never be shown again. Please save it in a safe place. If you have lost it, you need to generate a new key pair.\nNote 2: The public key is in spki format, and the Private key is in pkcs8 format. For the sake of convenience, newlines are converted to `\\n` in public key.\nNote 3: The public key should be configured in the remote database, and the private key should be configured in local devices.\n\n>[!FOR YOUR EYES ONLY]-\n>
\n>\n> ### Public Key\n> ```\n${public_key}\n> ```\n>\n> ### Private Key\n> ```\n${private_key}\n> ```\n>\n>
\n\n>[!Both for copying]-\n>\n>
\n>\n> ```\n${public_key}\n${private_key}\n> ```\n>\n>
\n\n", + "Ui.SetupWizard.Fetch.PreventFetchConfig": "Prevent fetching configuration from server", + "Doctor.Dialogue.Title": "Self-hosted LiveSync Config Doctor", + "moduleLiveSyncMain.logUnloadingPlugin": "Unloading plugin...", + "P2P.Note.Summary": "What is this feature? (and some important notes, please read once)", + "Ui.UseSetupURI.LabelPassphrase": "Passphrase", + "Do not split chunks in the background": "Do not split chunks in the background", + "obsidianLiveSyncSettingTab.optionPeriodicAndEvents": "Periodic and on events", + "Ui.SetupWizard.Fetch.ImportantBody": "If you have unsynchronised changes in your Vault on this device, they will likely diverge from the server's versions after the reset. This may result in a large number of file conflicts.", + "TweakMismatchResolve.Action.UseConfigured": "Use configured settings", + "obsidianLiveSyncSettingTab.titleRebuildRequired": "Rebuild Required", + "obsidianLiveSyncSettingTab.levelEdgeCase": " (Edge Case)", + "Access Key": "Access Key", + "liveSyncReplicator.lockRemoteDb": "Lock remote database to prevent data corruption", + "P2P.ReplicatorInstanceMissing": "P2P Sync replicator is not found, possibly not have been configured or enabled.", + "TweakMismatchResolve.Title.UseRemoteConfig": "Use Remote Configuration", + "Setting.TroubleShooting": "TroubleShooting", + "RedFlag.Fetch.Method.Title": "How do you want to fetch?", + "obsidianLiveSyncSettingTab.okCorsCredentialsForOrigin": "CORS credentials OK", + "Batch size": "Batch size", + "obsidianLiveSyncSettingTab.logCheckingConfigFailed": "Checking configuration failed", + "(ex. Read chunks online) If this option is enabled, LiveSync reads chunks online directly instead of replicating them locally. Increasing Custom chunk size is recommended.": "(ex. Read chunks online) If this option is enabled, LiveSync reads chunks online directly instead of replicating them locally. Increasing Custom chunk size is recommended.", + "Not all messages have been translated. And, please revert to \"Default\" when reporting errors.": "Not all messages have been translated. And, please revert to \"Default\" when reporting errors.", + "Setup.FetchRemoteConf.Message": "If we have already synchronised once with another device, the remote database stores the suitable configuration values between the synchronised devices. The plug-in would like to retrieve them for robust configuration.\n\nHowever, we have to make sure the one thing. Are we currently in a situation where we can access the network safely and retrieve the settings?\n\nNote: Mostly, you are safe to do this, that your remote database is hosted with a SSL certificate, and your network is not compromised.", + "Maximum Incubating Chunk Size": "Maximum Incubating Chunk Size", + "obsidianLiveSyncSettingTab.linkPageTop": "Page Top", + "obsidianLiveSyncSettingTab.logCouchDbConfigUpdated": "CouchDB Configuration: ${title} successfully updated", + "Replicator.Dialogue.Locked.Message.Fetch": "Fetch all has been scheduled. Plug-in will be restarted to perform it.", + "SettingTab.Message.AskRebuild": "Your changes require fetching from the remote database. Do you want to proceed?", + "(Days passed, 0 to disable automatic-deletion)": "(Days passed, 0 to disable automatic-deletion)", + "obsidianLiveSyncSettingTab.btnTest": "Test", + "Ui.SetupWizard.Rebuild.BackupDone": "I have created a backup of my Vault.", + "Automatically Sync all files when opening Obsidian.": "Automatically Sync all files when opening Obsidian.", + "obsidianLiveSyncSettingTab.titleDeletionPropagation": "Deletion Propagation", + "Scan customization automatically": "Scan customization automatically", + "obsidianLiveSyncSettingTab.optionLiveSync": "LiveSync", + "Ui.RemoteE2EE.LabelEncryptionAlgorithm": "Encryption Algorithm", + "moduleLiveSyncMain.titleScramEnabled": "Scram Enabled", + "obsidianLiveSyncSettingTab.titleQuickSetup": "Quick Setup", + "Replicator.Dialogue.Locked.Action.Unlock": "Unlock the remote database", + "Server URI": "Server URI", + "Show status as icons only": "Show status as icons only", + "Enhance chunk size": "Enhance chunk size", + "Always prompt merge conflicts": "Always prompt merge conflicts", + "Path Obfuscation": "Path Obfuscation", + "Rerun Wizard": "Rerun Wizard", + "K.P2P": "%{Peer}-to-%{Peer}", + "liveSyncReplicator.remoteDbCorrupted": "Remote database is newer or corrupted, make sure to latest version of self-hosted-livesync installed", + "P2P.SyncCompleted": "P2P Sync completed.", + "Passphrase of sensitive configuration items": "Passphrase of sensitive configuration items", + "Starts synchronisation when a file is saved.": "Starts synchronisation when a file is saved.", + "moduleInputUIObsidian.defaultTitleConfirmation": "Confirmation", + "moduleMigration.fix0256.messageUnrecoverable": "**Files cannot be fixed on this device:**\n\n${filesNotRecoverable}\n\nThese files have inconsistent metadata, and cannot be fixed on this device (mostly we cannot determine which is correct).\nTo restore them, please check your other devices (also by this feature) or restore them manually from a backup.\n", + "obsidianLiveSyncSettingTab.btnNext": "Next", + "obsidianLiveSyncSettingTab.errEnableCors": "❗ httpd.enable_cors is wrong", + "obsidianLiveSyncSettingTab.linkTipsAndTroubleshooting": "Tips and Troubleshooting", + "TweakMismatchResolve.Table": "| Value name | This device | On Remote |\n|: --- |: ---- :|: ---- :|\n${rows}\n\n", + "Ui.UseSetupURI.PlaceholderPassphrase": "Enter your passphrase", + "Doctor.Level.Optional": "Optional", + "Maximum Incubation Period": "Maximum Incubation Period", + "obsidianLiveSyncSettingTab.linkTroubleshooting": "/docs/troubleshooting.md", + "moduleLiveSyncMain.logAdditionalSafetyScan": "Additional safety scan...", + "If this enabled, all chunks will be stored with the revision made from its content. (Previous behaviour)": "If this enabled, all chunks will be stored with the revision made from its content. (Previous behaviour)", + "obsidianLiveSyncSettingTab.okCorsOriginMatched": "✔ CORS origin OK", + "lang-es": "Español", + "Ui.RemoteE2EE.PlaceholderPassphrase": "Enter your passphrase", + "Maximum file size": "Maximum file size", + "obsidianLiveSyncSettingTab.okEnableCorsChttpd": "✔ chttpd.enable_cors is ok.", + "obsidianLiveSyncSettingTab.buttonFetch": "Fetch", + "obsidianLiveSyncSettingTab.descTestDatabaseConnection": "Open database connection. If the remote database is not found and you have permission to create a database, the database will be created.", + "moduleMigration.insecureChunkExist.buttons.later": "I will do it later", + "moduleMigration.logRemoteTweakUnavailable": "Could not get remote tweak values", + "obsidianLiveSyncSettingTab.msgChangesNeedToBeApplied": "Changes need to be applied!", + "Ui.ScanQRCode.Step2": "On the source device, open Obsidian.", + "Write logs into the file": "Write logs into the file", + "P2P.Note.important_note_sub": "This feature is still on the bleeding edge. Please be aware that ensure your data is backed up before using this feature. And, we would be so happy if you could contribute to the development of this feature.", + "Delay conflict resolution of inactive files": "Delay conflict resolution of inactive files", + "Ui.RemoteE2EE.ButtonProceed": "Proceed", + "Show verbose log. Please enable if you report an issue.": "Show verbose log. Please enable if you report an issue.", + "moduleMigration.logFetchRemoteTweakFailed": "Failed to fetch remote tweak values", + "obsidianLiveSyncSettingTab.okCorsCredentials": "✔ cors.credentials is ok.", + "Sync automatically after merging files": "Sync automatically after merging files", + "Notify customized": "Notify customized", + "obsidianLiveSyncSettingTab.titleUpdateThinning": "Update Thinning", + "Apply preset configuration": "Apply preset configuration", + "moduleCheckRemoteSize.logExceededWarning": "Remote storage size: ${measuredSize} exceeded ${notifySize}", + "obsidianLiveSyncSettingTab.titleSynchronizationPreset": "Synchronization Preset", + "P2P.Note.important_note": "Peer-to-Peer Replicator.", + "Setup.FetchRemoteConf.Buttons.Fetch": "Yes, please fetch the configuration", + "Show only notifications": "Show only notifications", + "Ui.SetupWizard.Fetch.UnbalancedNote": "In this scenario, Self-hosted LiveSync will recreate metadata for every file and deliberately generate conflicts. Where the file content is identical, these conflicts will be resolved automatically.", + "Doctor.Button.Yes": "Yes", + "obsidianLiveSyncSettingTab.nameTestConnection": "Test Connection", + "Memory cache size (by total items)": "Memory cache size (by total items)", + "If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker.": "If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker.", + "lang-de": "Deutsche", + "moduleCheckRemoteSize.optionIncreaseLimit": "increase to ${newMax}MB", + "Reset notification threshold and check the remote database usage": "Reset notification threshold and check the remote database usage", + "Scan for hidden files before replication": "Scan for hidden files before replication", + "obsidianLiveSyncSettingTab.btnDisable": "Disable", + "If enabled, the ⛔ icon will be shown inside the status instead of the file warnings banner. No details will be shown.": "If enabled, the ⛔ icon will be shown inside the status instead of the file warnings banner. No details will be shown.", + "moduleLiveSyncMain.optionResumeAndRestart": "Resume and restart Obsidian", + "Replicator.Dialogue.Locked.Action.Fetch": "Reset Synchronisation on This Device", + "Presets": "Presets", + "End-to-End Encryption": "End-to-End Encryption", + "If this enabled, All files are handled as case-Sensitive (Previous behaviour).": "If this enabled, All files are handled as case-Sensitive (Previous behaviour).", + "Setting.GenerateKeyPair.Title": "New key pair has been generated!", + "Database suffix": "Database suffix", + "Enable this option to automatically apply the most recent change to documents even when it conflicts": "Enable this option to automatically apply the most recent change to documents even when it conflicts", + "obsidianLiveSyncSettingTab.titleSyncSettings": "Sync Settings", + "Use Custom HTTP Handler": "Use Custom HTTP Handler", + "Show status on the status bar": "Show status on the status bar", + "K.title_p2p_sync": "Peer-to-Peer Sync", + "moduleInputUIObsidian.defaultTitleSelect": "Select", + "obsidianLiveSyncSettingTab.buttonNext": "Next", + "moduleMigration.insecureChunkExist.message": "Some chunks are not securely stored and are not encrypted in databases.\n**Please rebuild the database to fix this issue**.\n\nIf your Remote Database is not configured with SSL, or using less-secure credentials, **you are at risk of exposing sensitive data**.\n\nNote: Please upgrade your Self-hosted LiveSync v0.25.6 or higher on all your devices, and back your vault up surely.\nNote2: Rebuild Everything and Fetch consumes a bit of time and traffic, please do it in off-peak hours and ensure a stable network connection.\n", + "RedFlag.Fetch.Method.FetchSafer": "Create a local database once before fetching", + "obsidianLiveSyncSettingTab.btnDiscard": "Discard", + "obsidianLiveSyncSettingTab.logEncryptionNoPassphrase": "You cannot enable encryption without a passphrase", + "Setting.TroubleShooting.ScanBrokenFiles.Desc": "Scans for files that are not stored correctly in the database.", + "RedFlag.Fetch.Method.Desc": "How do you want to fetch?\n- %{RedFlag.Fetch.Method.FetchSafer}.\n **Low Traffic**, **High CPU**, **Low Risk**\n Recommended if ...\n - Files possibly inconsistent\n - Files were not so much\n- %{RedFlag.Fetch.Method.FetchSmoother}.\n **Low Traffic**, **Moderate CPU**, **Low to Moderate Risk**\n Recommended if ...\n - Files probably consistent\n - You have a lot of files.\n- %{RedFlag.Fetch.Method.FetchTraditional}.\n **High Traffic**, **Low CPU**, **Low to Moderate Risk**\n\n>[!INFO]- Details\n> ## %{RedFlag.Fetch.Method.FetchSafer}.\n> **Low Traffic**, **High CPU**, **Low Risk**\n> This option first creates a local database using existing local files before fetching data from the remote source.\n> If matching files exist both locally and remotely, only the differences between them will be transferred.\n> However, files present in both locations will initially be handled as conflicted files. They will be resolved automatically if they are not actually conflicted, but this process may take time.\n> This is generally the safest method, minimizing data loss risk.\n> ## %{RedFlag.Fetch.Method.FetchSmoother}.\n> **Low Traffic**, **Moderate CPU**, **Low to Moderate Risk** (depending operation)\n> This option first creates chunks from local files for the database, then fetches data. Consequently, only chunks missing locally are transferred. However, all metadata is taken from the remote source.\n> Local files are then compared against this metadata at launch. The content considered newer will overwrite the older one (by modified time). This outcome is then synchronised back to the remote database.\n> This is generally safe if local files are genuinely the latest timestamp. However, it can cause problems if a file has a newer timestamp but older content (like the initial `welcome.md`).\n> This uses less CPU and faster than \"%{RedFlag.Fetch.Method.FetchSafer}\", but it may lead to data loss if not used carefully.\n> ## %{RedFlag.Fetch.Method.FetchTraditional}.\n> **High Traffic**, **Low CPU**, **Low to Moderate Risk** (depending operation)\n> All things will be fetched from the remote.\n> Similar to the %{RedFlag.Fetch.Method.FetchSmoother}, but all chunks are fetched from the remote source.\n> This is the most traditional way to fetch, typically consuming the most network traffic and time. It also carries a similar risk of overwriting remote files to the '%{RedFlag.Fetch.Method.FetchSmoother}' option.\n> However, it is often considered the most stable method because it is the longest-established and most straightforward approach.", + "The maximum duration for which chunks can be incubated within the document. Chunks exceeding this period will graduate to independent chunks.": "The maximum duration for which chunks can be incubated within the document. Chunks exceeding this period will graduate to independent chunks.", + "Ui.SetupWizard.Rebuild.ConfirmTitle": "Please Confirm the Following", + "Stop watching for file changes.": "Stop watching for file changes.", + "moduleLocalDatabase.logWaitingForReady": "Waiting for ready...", + "liveSyncReplicator.couldNotConnectToURI": "Could not connect to ${uri}:${dbRet}", + "moduleMigration.titleRecommendSetupUri": "Recommendation to use Setup URI", + "obsidianLiveSyncSettingTab.okMaxDocumentSize": "✔ couchdb.max_document_size is ok.", + "Analyse database usage": "Analyse database usage", + "Ui.SetupWizard.Fetch.VaultIdenticalDesc": "(e.g., immediately after restoring on another computer, or having recovered from a backup)", + "Ui.RemoteE2EE.PassphraseValidationLine2": "Therefore, we ask that you exercise extreme caution when configuring server information manually.", + "Scan hidden files periodically": "Scan hidden files periodically", + "Ui.SetupWizard.Fetch.Title": "Reset Synchronisation on This Device", + "obsidianLiveSyncSettingTab.msgEnableEncryptionRecommendation": "We recommend enabling End-To-End Encryption, and Path Obfuscation. Are you sure you want to continue without encryption?", + "P2P.NoAutoSyncPeers": "No auto-sync peers found. Please set peers on the %{long_p2p_sync} pane.", + "Ui.RemoteE2EE.Guidance": "Please configure your end-to-end encryption settings.", + "logPane.logWindowOpened": "Log window opened", + "obsidianLiveSyncSettingTab.btnApply": "Apply", + "obsidianLiveSyncSettingTab.msgConnectionProxyNote": "If you're having trouble with the Connection-check (even after checking config), please check your reverse proxy configuration.", + "If this option is enabled, PouchDB will hold the connection open for 60 seconds, and if no change arrives in that time, close and reopen the socket, instead of holding it open indefinitely. Useful when a proxy limits request duration but can increase resource usage.": "If this option is enabled, PouchDB will hold the connection open for 60 seconds, and if no change arrives in that time, close and reopen the socket, instead of holding it open indefinitely. Useful when a proxy limits request duration but can increase resource usage.", + "obsidianLiveSyncSettingTab.nameCopySetupURI": "Copy the current settings to a Setup URI", + "Show status inside the editor": "Show status inside the editor", + "obsidianLiveSyncSettingTab.okCorsOrigins": "✔ cors.origins is ok.", + "Sync Mode": "Sync Mode", + "Setup.Apply.Buttons.ApplyAndFetch": "Apply and Fetch", + "moduleCheckRemoteSize.option800MB": "800MB (Cloudant, fly.io)", + "Apply Latest Change if Conflicting": "Apply Latest Change if Conflicting", + "Ui.SetupWizard.Rebuild.Title": "Final Confirmation: Overwrite Server Data with This Device's Files", + "RedFlag.FetchRemoteConfig.Buttons.Fetch": "Yes, fetch and apply remote settings", + "Enable advanced features": "Enable advanced features", + "moduleMigration.insecureChunkExist.laterMessage": "We strongly recommend to treat this as soon as possible!", + "Ui.SetupWizard.Rebuild.Proceed": "I Understand, Overwrite Server", + "Doctor.Button.No": "No", + "Ui.ScanQRCode.Step1": "On this device, please keep this Vault open.", + "Rerun the onboarding wizard to set up Self-hosted LiveSync again.": "Rerun the onboarding wizard to set up Self-hosted LiveSync again.", + "Active Remote Configuration": "Active Remote Configuration", + "Ui.SetupWizard.Fetch.ConflictNote": "Furthermore, if conflicts are already present in the server data, they will be synchronised to this device as they are, and you will need to resolve them locally.", + "Setup.Doctor.Message": "Self-hosted LiveSync has gradually become longer in history and some recommended settings have changed.\n\nNow, setup is a very good time to do this.\n\nDo you want to run Doctor to check if the imported settings are optimal compared to the latest state?", + "moduleLiveSyncMain.optionKeepLiveSyncDisabled": "Keep LiveSync disabled", + "Warning! This will have a serious impact on performance. And the logs will not be synchronised under the default name. Please be careful with logs; they often contain your confidential information.": "Warning! This will have a serious impact on performance. And the logs will not be synchronised under the default name. Please be careful with logs; they often contain your confidential information.", + "Remote Type": "Remote Type", + "RedFlag.FetchRemoteConfig.Title": "Fetch Remote Configuration", + "Ui.RemoteE2EE.Title": "End-to-End Encryption", + "obsidianLiveSyncSettingTab.errAccessForbidden": "❗ Access forbidden.", + "Delay merge conflict prompt for inactive files.": "Delay merge conflict prompt for inactive files.", + "obsidianLiveSyncSettingTab.msgNewVersionNote": "Here due to an upgrade notification? Please review the version history. If you're satisfied, click the button. A new update will prompt this again.", + "Prepare the 'report' to create an issue": "Prepare the 'report' to create an issue", + "Setup.Doctor.Buttons.Yes": "Yes, please consult the doctor", + "Ui.RemoteE2EE.StronglyRecommendedLine2": "Also, please note that if you are using Peer-to-Peer synchronization, this configuration will be used when you switch to other methods and connect to a remote server in the future.", + "The minimum interval for automatic synchronisation on event.": "The minimum interval for automatic synchronisation on event.", + "moduleMigration.logRedflag2CreationFail": "Failed to create redflag2", + "K.ScanCustomization": "Scan customization", + "Disables logging, only shows notifications. Please disable if you report an issue.": "Disables logging, only shows notifications. Please disable if you report an issue.", + "moduleMigration.fix0256.message": "Due to a recent bug (in v0.25.6), some files may not have been saved correctly in the sync database.\nWe have scanned our files and found some that need to be fixed.\n\n**Files ready to be fixed:**\n\n${files}\n\nThese files have size-matched original file on the storage, and are likely to be recoverable.\nWe can use them to fix the database, please click the \"Fix\" button below to fix them.\n\n${messageUnrecoverable}\n\nIf you want to run it again, you can do so from Hatch.\n", + "Saving will be performed forcefully after this number of seconds.": "Saving will be performed forcefully after this number of seconds.", + "Database Name": "Database Name", + "Doctor.Button.Fix": "Fix it", + "moduleMigration.fix0256.title": "Broken files has been detected", + "obsidianLiveSyncSettingTab.optionCouchDB": "CouchDB", + "Setting.TroubleShooting.Doctor": "Setting Doctor", + "Setting.TroubleShooting.Doctor.Desc": "Detects non optimal settings. (Same as during migration)", + "Ui.RemoteE2EE.MultiDestinationWarning": "This setting must be the same even when connecting to multiple synchronisation destinations.", + "obsidianLiveSyncSettingTab.descValidateDatabaseConfig": "Checks and fixes any potential issues with the database config.", + "obsidianLiveSyncSettingTab.msgEnableCors": "Set httpd.enable_cors", + "Show status icon instead of file warnings banner": "Show status icon instead of file warnings banner", + "Doctor.Dialogue.MainFix": "\n## ${name}\n\n| Current | Ideal |\n|:---:|:---:|\n| ${current} | ${ideal} |\n\n**Recommendation Level:** ${level}\n\n### Why this has been detected?\n\n${reason}\n\n${note}\n\nFix this to the ideal value?", + "Doctor.RULES.E2EE_V02500.REASON": "The End-to-End Encryption has got now more robust and faster. Also because, the previous E2EE was found to be compromised in a re-conducted code review. It should be applied as soon as possible. Really apologises for your inconvenience. And, this setting is not forward compatible. All synchronised devices must be updated to v0.25.0 or higher. Rebuilds are not required and will be converted from the new transfer to the new format, However, it is recommended to rebuild whenever possible.", + "moduleCheckRemoteSize.logCurrentStorageSize": "Remote storage size: ${measuredSize}", + "P2P.P2PReplication": "%{P2P} Replication", + "obsidianLiveSyncSettingTab.optionDisableAllAutomatic": "Disable all automatic", + "Ui.RemoteE2EE.ManualWarning": "Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences. This is a security measure designed to protect your data.", + "Remote server type": "Remote server type", + "obsidianLiveSyncSettingTab.errMaxRequestSize": "❗ chttpd.max_http_request_size is low)", + "Ui.UseSetupURI.Title": "Enter Setup URI", + "(Mega chars)": "(Mega chars)", + "Ui.UseSetupURI.ErrorFailedToParse": "Failed to parse Setup-URI.", + "moduleMigration.optionAdjustRemote": "Adjust to remote", + "obsidianLiveSyncSettingTab.titleAppearance": "Appearance", + "TweakMismatchResolve.Action.UseMineAcceptIncompatible": "Update remote database settings but keep as is", + "Ui.UseSetupURI.Label": "Setup-URI", + "moduleLiveSyncMain.logPluginInitCancelled": "Plugin initialisation was cancelled by a module", + "moduleCheckRemoteSize.optionDismiss": "Dismiss", + "moduleMigration.optionSetupViaP2P": "Use %{short_p2p_sync} to set up", + "moduleMigration.optionSetupWizard": "Take me into the setup wizard", + "obsidianLiveSyncSettingTab.serverVersion": "Server info: ${info}", + "moduleMigration.fix0256.buttons.fix": "Fix", + "obsidianLiveSyncSettingTab.msgObjectStorageWarning": "WARNING: This feature is a Work In Progress, so please keep in mind the following:\n- Append only architecture. A rebuild is required to shrink the storage.\n- A bit fragile.\n- When first syncing, all history will be transferred from the remote. Be mindful of data caps and slow speeds.\n- Only differences are synced live.\n\nIf you run into any issues, or have ideas about this feature, please create a issue on GitHub.\nI appreciate you for your great dedication.", + "obsidianLiveSyncSettingTab.msgSetRequireValidUser": "Set chttpd.require_valid_user = true", + "Ui.SetupWizard.P2P.UseDefaultRelay": "Use vrtmrz's relay", + "obsidianLiveSyncSettingTab.logConfiguredDisabled": "Configured synchronization mode: DISABLED", + "moduleMigration.insecureChunkExist.buttons.fetch": "I already rebuilt the remote. Fetch from the remote", + "obsidianLiveSyncSettingTab.btnGotItAndUpdated": "I got it and updated.", + "Region": "Region", + "obsidianLiveSyncSettingTab.nameApplySettings": "Apply Settings", + "RedFlag.Fetch.Method.FetchSmoother": "Create local file chunks before fetching", + "moduleMigration.msgRecommendSetupUri": "We strongly recommend that you generate a set-up URI and use it.\nIf you do not have knowledge about it, please refer to the [documentation](${URI_DOC}) (Sorry again, but it is important).\n\nHow do you want to set it up manually?", + "Ui.RemoteE2EE.WarningSameSetting": "This setting must be the same even when connecting to multiple synchronisation destinations.", + "If enabled, the notification of hidden files change will be suppressed.": "If enabled, the notification of hidden files change will be suppressed.", + "obsidianLiveSyncSettingTab.errCannotContinueTest": "We could not continue the test.", + "moduleMigration.msgFetchRemoteAgain": "As you may already know, the self-hosted LiveSync has changed its default behaviour and database structure.\n\nAnd thankfully, with your time and efforts, the remote database appears to have already been migrated. Congratulations!\n\nHowever, we need a bit more. The configuration of this device is not compatible with the remote database. We will need to fetch the remote database again. Should we fetch from the remote again now?\n\n___Note: We cannot synchronise until the configuration has been changed and the database has been fetched again.___\n___Note2: The chunks are completely immutable, we can fetch only the metadata and difference.___", + "Setup.FetchRemoteConf.Title": "Fetch configuration from remote database?", + "Ui.Bucket.Guidance": "Please enter the details required to connect to your S3/MinIO/R2 compatible object storage service.", + "Ui.UseSetupURI.ValidMessage": "The Setup-URI is valid and ready to use.", + "obsidianLiveSyncSettingTab.errRequireValidUserAuth": "❗ chttpd_auth.require_valid_user is wrong.", + "Property Encryption": "Property Encryption", + "Ui.SetupWizard.Common.HttpsOnlyMobile": "We can use only Secure (HTTPS) connections on Obsidian Mobile.", + "Ui.SetupWizard.Rebuild.PreventFetchConfig": "Prevent fetching configuration from server", + "obsidianLiveSyncSettingTab.descManualSetup": "Not recommended, but useful if you don't have a Setup URI", + "Verbose Log": "Verbose Log", + "Handle files as Case-Sensitive": "Handle files as Case-Sensitive", + "Interval (sec)": "Interval (sec)", + "liveSyncReplicator.couldNotConnectToServer": "Could not connect to server.", + "Minimum delay for batch database updating": "Minimum delay for batch database updating", + "obsidianLiveSyncSettingTab.optionOnEvents": "On events", + "Stop reflecting database changes to storage files.": "Stop reflecting database changes to storage files.", + "Setup.Apply.Buttons.Cancel": "Discard and Cancel", + "Setup.QRCode": "We have generated a QR code to transfer the settings. Please scan the QR code with your phone or other device.\nNote: The QR code is not encrypted, so be careful to open this.\n\n>[!FOR YOUR EYES ONLY]-\n>
${qr_image}
", + "Ui.RemoteE2EE.StronglyRecommendedLine1": "Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server.", + "Enable poweruser features": "Enable poweruser features", + "obsidianLiveSyncSettingTab.descCopySetupURI": "Perfect for setting up a new device!", + "Ui.RemoteE2EE.LabelObfuscateProperties": "Obfuscate Properties", + "Ui.RemoteE2EE.PassphraseValidationLine1": "Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences.", + "Move remotely deleted files to the trash, instead of deleting.": "Move remotely deleted files to the trash, instead of deleting.", + "Replicator.Message.Pending": "Some file events are pending. Replication has been cancelled.", + "Replicator.Dialogue.Locked.Action.Dismiss": "Cancel for reconfirmation", + "obsidianLiveSyncSettingTab.logErrorOccurred": "An error occurred!!", + "moduleLog.showLog": "Show Log", + "moduleMigration.optionEnableFixedRevisionForChunks": "Enable only #2", + "Doctor.Message.RebuildLocalRequired": "Attention! A local database rebuild is required to apply this!", + "moduleMigration.optionNoAskAgain": "No, please ask again", + "moduleLiveSyncMain.logSafetyScanFailed": "Additional safety scan has failed on a module", + "Copy Report to clipboard": "Copy Report to clipboard", + "moduleMigration.titleCaseSensitivity": "Case Sensitivity", + "Ui.UseSetupURI.Guidance": "Please enter the Setup URI that was generated during server installation or on another device, along with the vault passphrase.", + "moduleMigration.logLocalDatabaseNotReady": "Something went wrong! The local database is not ready", + "obsidianLiveSyncSettingTab.nameConnectSetupURI": "Connect with Setup URI", + "obsidianLiveSyncSettingTab.okEnableCors": "✔ httpd.enable_cors is ok.", + "TweakMismatchResolve.Message.MainTweakResolving": "Your configuration has not been matched with the one on the remote server.\n\nFollowing configuration should be matched:\n\n${table}\n\nLet us know your decision.\n\n${additionalMessage}", + "obsidianLiveSyncSettingTab.nameTestDatabaseConnection": "Test Database Connection", + "Ui.SetupWizard.Fetch.ImportantTitle": "Important Notice", + "obsidianLiveSyncSettingTab.titleMinioS3R2": "Minio,S3,R2", + "moduleLiveSyncMain.logVersionUpdate": "LiveSync has been updated, In case of breaking updates, all automatic synchronization has been temporarily disabled. Ensure that all devices are up to date before enabling.", + "obsidianLiveSyncSettingTab.okWwwAuth": "✔ httpd.WWW-Authenticate is ok.", + "obsidianLiveSyncSettingTab.nameDisableHiddenFileSync": "Disable Hidden files sync", + "(BETA) Always overwrite with a newer file": "(BETA) Always overwrite with a newer file", + "obsidianLiveSyncSettingTab.msgSetMaxRequestSize": "Set chttpd.max_http_request_size", + "Setup.Apply.Buttons.OnlyApply": "Only Apply", + "This passphrase will not be copied to another device. It will be set to `Default` until you configure it again.": "This passphrase will not be copied to another device. It will be set to `Default` until you configure it again.", + "moduleLiveSyncMain.logReadChangelog": "LiveSync has updated, please read the changelog!", + "MB (0 to disable).": "MB (0 to disable).", + "P2P.NotEnabled": "%{title_p2p_sync} is not enabled. We cannot open a new connection.", + "Reducing the frequency with which on-disk changes are reflected into the DB": "Reducing the frequency with which on-disk changes are reflected into the DB", + "obsidianLiveSyncSettingTab.optionSaveOnlySettings": "(Danger) Save Only Settings", + "Notify when the estimated remote storage size exceeds on start up": "Notify when the estimated remote storage size exceeds on start up", + "Enable customization sync": "Enable customization sync", + "lang_def": "Default", + "Ui.SetupWizard.CouchDBCheck.DetectAndFix": "Detect and Fix CouchDB Issues", + "obsidianLiveSyncSettingTab.logSelectAnyPreset": "Select any preset.", + "Ignore files": "Ignore files", + "obsidianLiveSyncSettingTab.btnUse": "Use", + "obsidianLiveSyncSettingTab.titleSetupOtherDevices": "To setup other devices", + "obsidianLiveSyncSettingTab.msgCurrentOrigin": "Current origin: ${origin}", + "Device name": "Device name", + "liveSyncReplicator.retryLowerBatchSize": "Retry with lower batch size:${batch_size}/${batches_limit}", + "Ui.SetupWizard.Fetch.VaultUnbalanced": "There may be differences between the files in this Vault and the server.", + "obsidianLiveSyncSettingTab.levelPowerUser": " (Power User)", + "Save settings to a markdown file. You will be notified when new settings arrive. You can set different files by the platform.": "Save settings to a markdown file. You will be notified when new settings arrive. You can set different files by the platform.", + "Memory cache size (by total characters)": "Memory cache size (by total characters)", + "Per-file-saved customization sync": "Per-file-saved customization sync", + "moduleCheckRemoteSize.titleDatabaseSizeNotify": "Setting up database size notification", + "Seconds, 0 to disable": "Seconds, 0 to disable", + "obsidianLiveSyncSettingTab.panelRemoteConfiguration": "Remote Configuration", + "liveSyncReplicator.remoteDbCreatedOrConnected": "Remote Database Created or Connected", + "When you save a file in the editor, start a sync automatically": "When you save a file in the editor, start a sync automatically", + "obsidianLiveSyncSettingTab.msgIfConfigNotPersistent": "If the server configuration is not persistent (e.g., running on docker), the values here may change. Once you are able to connect, please update the settings in the server's local.ini.", + "If this enabled, chunks will be split into semantically meaningful segments. Not all platforms support this feature.": "If this enabled, chunks will be split into semantically meaningful segments. Not all platforms support this feature.", + "Setup.Apply.WarningRebuildRecommended": "NOTE: after adjusting the settings, it has been determined that a rebuild is required; Just Import is not recommended.", + "Display Language": "Display Language", + "Doctor.Button.DismissThisVersion": "No, and do not ask again until the next release", + "Should we keep folders that don't have any files inside?": "Should we keep folders that don't have any files inside?", + "Ui.SetupWizard.Rebuild.ConfirmDataLoss": "I understand that all changes made on other smartphones or computers possibly could be lost.", + "obsidianLiveSyncSettingTab.okMaxRequestSize": "✔ chttpd.max_http_request_size is ok.", + "Ui.SetupWizard.Rebuild.ResetNotifyOtherDevices": "by resetting the remote, you will be informed on other devices.", + "obsidianLiveSyncSettingTab.msgNonHTTPSInfo": "Configured as non-HTTPS URI. Be warned that this may not work on mobile devices.", + "Setup.FetchRemoteConf.Buttons.Skip": "No, please use the settings in the URI", + "moduleInputUIObsidian.optionNo": "No", + "K.long_p2p_sync": "%{title_p2p_sync}", + "obsidianLiveSyncSettingTab.errCorsCredentials": "❗ cors.credentials is wrong", + "moduleMigration.optionHaveSetupUri": "Yes, I have", + "TweakMismatchResolve.Message.WarningIncompatibleRebuildRecommended": "\n>[!NOTICE]\n> We have detected that some of the values are different to make incompatible the local database with the remote database.\n> Some changes are compatible but may consume extra storage and transfer volumes. A rebuild is recommended. However, a rebuild may not be performed at present, but may be implemented in future maintenance.\n> If you want to rebuild, it takes a few minutes or more. **Make sure it is safe to perform it now.**", + "obsidianLiveSyncSettingTab.panelChangeLog": "Change Log", + "Ui.SetupWizard.Fetch.BackupUnableNote": "If you understand the risks and still wish to proceed, select so.", + "Number of batches to process at a time. Defaults to 40. Minimum is 2. This along with batch size controls how many docs are kept in memory at a time.": "Number of batches to process at a time. Defaults to 40. Minimum is 2. This along with batch size controls how many docs are kept in memory at a time.", + "dialog.yourLanguageAvailable.btnRevertToDefault": "Keep %{lang-def}", + "P2P.SeemsOffline": "Peer ${name} seems offline, skipped.", + "Ui.SetupWizard.Fetch.Guidance": "This will rebuild the local database on this device using the most recent data from the server. This action is designed to resolve synchronisation inconsistencies and restore correct functionality.", + "Do not check configuration mismatch before replication": "Do not check configuration mismatch before replication", + "P2P.AskPassphraseForShare": "The remote peer requested this device configuration. Please input the passphrase to share the configuration. You can ignore the request by cancelling this dialogue.", + "moduleMigration.msgSinceV02321": "Since v0.23.21, the self-hosted LiveSync has changed the default behaviour and database structure. The following changes have been made:\n\n1. **Case sensitivity of filenames**\n The handling of filenames is now case-insensitive. This is a beneficial change for most platforms, other than Linux and iOS, which do not manage filename case sensitivity effectively.\n (On These, a warning will be displayed for files with the same name but different cases).\n\n2. **Revision handling of the chunks**\n Chunks are immutable, which allows their revisions to be fixed. This change will enhance the performance of file saving.\n\n___However, to enable either of these changes, both remote and local databases need to be rebuilt. This process takes a few minutes, and we recommend doing it when you have ample time.___\n\n- If you wish to maintain the previous behaviour, you can skip this process by using `${KEEP}`.\n- If you do not have enough time, please choose `${DISMISS}`. You will be prompted again later.\n- If you have rebuilt the database on another device, please select `${DISMISS}` and try synchronizing again. Since a difference has been detected, you will be prompted again.", + "obsidianLiveSyncSettingTab.logConfiguredLiveSync": "Configured synchronization mode: LiveSync", + "LiveSync could not handle multiple vaults which have same name without different prefix, This should be automatically configured.": "LiveSync could not handle multiple vaults which have same name without different prefix, This should be automatically configured.", + "obsidianLiveSyncSettingTab.logPassphraseNotCompatible": "ERROR: Passphrase is not compatible with the remote server! Please check it again!", + "liveSyncReplicator.unlockRemoteDb": "Unlock remote database to prevent data corruption", + "Incubate Chunks in Document": "Incubate Chunks in Document", + "liveSyncSettings.btnApply": "Apply", + "obsidianLiveSyncSettingTab.nameHiddenFileSynchronization": "Hidden file synchronization", + "obsidianLiveSyncSettingTab.titleNotification": "Notification", + "If enabled, the file under 1kb will be processed in the UI thread.": "If enabled, the file under 1kb will be processed in the UI thread.", + "Replicator.Dialogue.Locked.Title": "Locked", + "obsidianLiveSyncSettingTab.msgSettingModified": "The setting \"${setting}\" was modified from another device. Click {HERE} to reload settings. Click elsewhere to ignore changes.", + "moduleCheckRemoteSize.msgConfirmRebuild": "This may take a bit of a long time. Do you really want to rebuild everything now?", + "Ui.UseSetupURI.ErrorPassphraseRequired": "Passphrase is required.", + "(Obsolete) Use an old adapter for compatibility": "(Obsolete) Use an old adapter for compatibility", + "moduleMigration.optionYesFetchAgain": "Yes, fetch again", + "obsidianLiveSyncSettingTab.msgSetRequireValidUserAuth": "Set chttpd_auth.require_valid_user = true", + "obsidianLiveSyncSettingTab.errCorsNotAllowingCredentials": "❗ CORS is not allowing credentials", + "obsidianLiveSyncSettingTab.titleCongratulations": "Congratulations!", + "Ui.SetupWizard.Fetch.VaultIndependentDesc": "(e.g., setting up for the first time on a new smartphone, starting from a clean slate)", + "Ui.SetupWizard.P2P.Title": "P2P Configuration", + "Ui.ScanQRCode.Instruction": "Please follow the steps below to import settings from your existing device.", + "liveSyncReplicator.replicationClosed": "Replication closed", + "Comma separated `.gitignore, .dockerignore`": "Comma separated `.gitignore, .dockerignore`", + "moduleMigration.msgInitialSetup": "Your device has **not been set up yet**. Let me guide you through the setup process.\n\nPlease keep in mind that every dialogue content can be copied to the clipboard. If you need to refer to it later, you can paste it into a note in Obsidian. You can also translate it into your language using a translation tool.\n\nFirst, do you have **Setup URI**?\n\nNote: If you do not know what it is, please refer to the [documentation](${URI_DOC}).", + "obsidianLiveSyncSettingTab.btnCopy": "Copy", + "Doctor.Button.Skip": "Leave it as is", + "obsidianLiveSyncSettingTab.msgEnableCorsChttpd": "Set chttpd.enable_cors", + "obsidianLiveSyncSettingTab.msgRebuildRequired": "Rebuilding Databases are required to apply the changes.. Please select the method to apply the changes.\n\n
\nLegends\n\n| Symbol | Meaning |\n|: ------ :| ------- |\n| ⇔ | Up to Date |\n| ⇄ | Synchronise to balance |\n| ⇐,⇒ | Transfer to overwrite |\n| ⇠,⇢ | Transfer to overwrite from other side |\n\n
\n\n## ${OPTION_REBUILD_BOTH}\nAt a glance: 📄 ⇒¹ 💻 ⇒² 🛰️ ⇢ⁿ 💻 ⇄ⁿ⁺¹ 📄\nReconstruct both the local and remote databases using existing files from this device.\nThis causes a lockout other devices, and they need to perform fetching.\n## ${OPTION_FETCH}\nAt a glance: 📄 ⇄² 💻 ⇐¹ 🛰️ ⇔ 💻 ⇔ 📄\nInitialise the local database and reconstruct it using data fetched from the remote database.\nThis case includes the case which you have rebuilt the remote database.\n## ${OPTION_ONLY_SETTING}\nStore only the settings. **Caution: This may lead to data corruption**; database reconstruction is generally necessary.", + "P2P.PaneTitle": "%{long_p2p_sync}", + "moduleMigration.optionDecideLater": "Decide it later", + "Ui.SetupWizard.Common.AdvancedSettings": "Advanced Settings", + "Do not use internal API": "Do not use internal API", + "liveSyncReplicator.couldNotConnectTo": "Could not connect to ${uri} : ${name}\n(${db})", + "dialog.yourLanguageAvailable": "Self-hosted LiveSync had translations for your language, so the %{Display language} setting was enabled.\n\nNote: Not all messages are translated. We are waiting for your contributions!\nNote 2: If you create an Issue, **please revert to %{lang-def}** and then take screenshots, messages and logs. This can be done in the setting dialogue.\nMay you find it easy to use!", + "Maximum delay for batch database updating": "Maximum delay for batch database updating", + "TweakMismatchResolve.Action.Dismiss": "Dismiss", + "obsidianLiveSyncSettingTab.logCheckingDbConfig": "Checking database configuration", + "Ui.SetupWizard.Fetch.BackupUnableWarning": "It is strongly advised to create a backup before proceeding. Continuing without a backup may lead to data loss.", + "Ui.UseSetupURI.ButtonProceed": "Test Settings and Continue", + "obsidianLiveSyncSettingTab.btnEnable": "Enable", + "username": "username", + "moduleLiveSyncMain.logPluginVersion": "Self-hosted LiveSync v${manifestVersion} ${packageVersion}", + "Setup.Apply.Title": "Apply new configuration from the ${method}", + "obsidianLiveSyncSettingTab.labelDisabled": "⏹️ : Disabled", + "Ui.ScanQRCode.Step4": "On this device, switch to the camera app or use a QR code scanner to scan the displayed QR code.", + "TweakMismatchResolve.Action.UseRemoteWithRebuild": "Apply settings to this device, and fetch again", + "Testing only - Resolve file conflicts by syncing newer copies of the file, this can overwrite modified files. Be Warned.": "Testing only - Resolve file conflicts by syncing newer copies of the file, this can overwrite modified files. Be Warned.", + "Delete old metadata of deleted files on start-up": "Delete old metadata of deleted files on start-up", + "TweakMismatchResolve.Title": "Configuration Mismatch Detected", + "obsidianLiveSyncSettingTab.okRequireValidUserAuth": "✔ chttpd_auth.require_valid_user is ok.", + "Enable Developers' Debug Tools.": "Enable Developers' Debug Tools.", + "cmdConfigSync.showCustomizationSync": "Show Customization sync", + "moduleCheckRemoteSize.logThresholdEnlarged": "Threshold has been enlarged to ${size}MB", + "Ui.SetupWizard.Rebuild.Guidance": "This procedure will first delete all existing synchronisation data from the server. Following this, the server data will be completely rebuilt, using the current state of your Vault on this device as the single, authoritative master copy.", + "Keep empty folder": "Keep empty folder", + "Replicator.Message.Cleaned": "Database cleaning up is in process. replication has been cancelled", + "obsidianLiveSyncSettingTab.logPassphraseInvalid": "Passphrase is not valid, please fix it.", + "Setup.Doctor.Buttons.No": "No, please use the settings in the URI as is", + "moduleMigration.titleWelcome": "Welcome to Self-hosted LiveSync", + "Ui.ScanQRCode.Guidance": "Please follow the steps below to import settings from your existing device.", + "obsidianLiveSyncSettingTab.titleHiddenFiles": "Hidden Files", + "Compute revisions for chunks": "Compute revisions for chunks", + "Notify when other device has newly customized.": "Notify when other device has newly customized.", + "obsidianLiveSyncSettingTab.btnStart": "Start", + "Ui.ScanQRCode.ButtonClose": "Close this dialog", + "moduleCheckRemoteSize.msgDatabaseGrowing": "**Your database is getting larger!** But do not worry, we can address it now. The time before running out of space on the remote storage.\n\n| Measured size | Configured size |\n| --- | --- |\n| ${estimatedSize} | ${maxSize} |\n\n> [!MORE]-\n> If you have been using it for many years, there may be unreferenced chunks - that is, garbage - accumulating in the database. Therefore, we recommend rebuilding everything. It will probably become much smaller.\n>\n> If the volume of your vault is simply increasing, it is better to rebuild everything after organizing the files. Self-hosted LiveSync does not delete the actual data even if you delete it to speed up the process. It is roughly [documented](https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/tech_info.md).\n>\n> If you don't mind the increase, you can increase the notification limit by 100MB. This is the case if you are running it on your own server. However, it is better to rebuild everything from time to time.\n>\n\n> [!WARNING]\n> If you perform rebuild everything, make sure all devices are synchronised. The plug-in will merge as much as possible, though.\n", + "obsidianLiveSyncSettingTab.descConnectSetupURI": "This is the recommended method to set up Self-hosted LiveSync with a Setup URI.", + "Use the trash bin": "Use the trash bin", + "obsidianLiveSyncSettingTab.titleEncryptionPassphraseInvalid": "Encryption Passphrase Invalid", + "Ui.SetupWizard.Common.ContinueAnyway": "Continue anyway", + "K.exp": "Experimental", + "obsidianLiveSyncSettingTab.titleExtraFeatures": "Enable extra and advanced features", + "Ui.P2P.Guidance": "Please enter the Peer-to-Peer Synchronisation information below.", + "liveSyncReplicator.cantReplicateLowerValue": "We can't replicate more lower value.", + "moduleMigration.optionRemindNextLaunch": "Remind me at the next launch", + "K.Peer": "Peer", + "moduleMigration.logBulkSendCorrupted": "Send chunks in bulk has been enabled, however, this feature had been corrupted. Sorry for your inconvenience. Automatically disabled.", + "obsidianLiveSyncSettingTab.nameEnableLiveSync": "Enable LiveSync", + "Ui.SetupWizard.Fetch.VaultIndependent": "This Vault is empty, or contains only new files that are not on the server.", + "Sync on Startup": "Sync on Startup", + "obsidianLiveSyncSettingTab.errMissingWwwAuth": "❗ httpd.WWW-Authenticate is missing", + "logPane.title": "Self-hosted LiveSync Log", + "Ui.SetupWizard.Rebuild.BackupBeforeProceeding": "Of course, we can back up the data before proceeding.", + "Unique name between all synchronized devices. To edit this setting, please disable customization sync once.": "Unique name between all synchronized devices. To edit this setting, please disable customization sync once.", + "Check": "Check", + "Ui.CouchDB.Guidance": "Please enter the CouchDB server information below.", + "obsidianLiveSyncSettingTab.titleFetchConfigFromRemote": "Fetch config from remote server", + "Fetch database with previous behaviour": "Fetch database with previous behaviour", + "Maximum Incubating Chunks": "Maximum Incubating Chunks", + "Run Doctor": "Run Doctor", + "logPane.wrap": "Wrap", + "moduleMigration.insecureChunkExist.buttons.rebuild": "Rebuild Everything", + "Ui.SetupWizard.Rebuild.WhenToUse": "You should perform this operation only in exceptional circumstances, such as when the server data is completely corrupted, when changes on all other devices are no longer needed, or when the database size has become unusually large in comparison to the Vault size.", + "moduleMigration.fix0256.buttons.DismissForever": "I have fixed it, and do not ask again", + "obsidianLiveSyncSettingTab.nameEnableHiddenFileSync": "Enable Hidden files sync", + "obsidianLiveSyncSettingTab.optionHere": "HERE", + "Should we only check for conflicts when a file is opened?": "Should we only check for conflicts when a file is opened?", + "Requires restart of Obsidian": "Requires restart of Obsidian", + "Suppress notification of hidden files change": "Suppress notification of hidden files change", + "liveSyncSetting.valueShouldBeInRange": "The value should ${min} < value < ${max}", + "moduleCheckRemoteSize.optionAskMeLater": "Ask me later", + "liveSyncReplicator.markDeviceResolved": "Mark this device as 'resolved'.", + "P2P.Note.description": " This replicator allows us to synchronise our vault with other devices\nusing a peer-to-peer connection. We can use this to synchronise our vault with our other devices without using a cloud service.\nThis replicator is based on Trystero. It also uses a signalling server to establish a connection between devices. The signalling server is used to exchange connection information between devices. It does (or,should) not know or store any of our data.\n\nThe signalling server can be hosted by anyone. This is just a Nostr relay. For the sake of simplicity and checking the behaviour of the replicator, an instance of the signalling server is hosted by vrtmrz. You can use the experimental server provided by vrtmrz, or you can use any other server.\n\nBy the way, even if the signalling server does not store our data, it can see the connection information of some of our devices. Please be aware of this. Also, be cautious when using the server provided by someone else.", + "liveSyncReplicator.couldNotConnectToRemoteDb": "Could not connect to remote database: ${d}", + "obsidianLiveSyncSettingTab.titleSynchronizationMethod": "Synchronization Method", + "obsidianLiveSyncSettingTab.titleConflictResolution": "Conflict resolution", + "lang-def": "%{lang_def}", + "liveSyncReplicator.remoteDbDestroyError": "Something happened on Remote Database Destroy:", + "obsidianLiveSyncSettingTab.msgConfigCheck": "--Config check--", + "Replicator.Message.SomeModuleFailed": "Replication has been cancelled by some module failure", + "moduleCheckRemoteSize.titleDatabaseSizeLimitExceeded": "Remote storage size exceeded the limit", + "(MB) If this is set, changes to local and remote files that are larger than this will be skipped. If the file becomes smaller again, a newer one will be used.": "(MB) If this is set, changes to local and remote files that are larger than this will be skipped. If the file becomes smaller again, a newer one will be used.", + "obsidianLiveSyncSettingTab.logCannotUseCloudant": "This feature cannot be used with IBM Cloudant.", + "moduleMigration.logMigratedSameBehaviour": "Migrated to db:${current} with the same behaviour as before", + "Batch limit": "Batch limit", + "obsidianLiveSyncSettingTab.btnFix": "Fix", + "K.short_p2p_sync": "P2P Sync", + "Passphrase": "Passphrase", + "Use splitting-limit-capped chunk splitter": "Use splitting-limit-capped chunk splitter", + "Reset the remote storage size threshold and check the remote storage size again.": "Reset the remote storage size threshold and check the remote storage size again.", + "Ui.SetupWizard.Rebuild.BackupWarning": "This is an extremely powerful operation. We strongly recommend that you copy your Vault folder to a safe location.", + "lang-zh-tw": "繁體中文", + "The maximum total size of chunks that can be incubated within the document. Chunks exceeding this size will immediately graduate to independent chunks.": "The maximum total size of chunks that can be incubated within the document. Chunks exceeding this size will immediately graduate to independent chunks.", + "(Beta) Use ignore files": "(Beta) Use ignore files", + "obsidianLiveSyncSettingTab.msgSetCorsOrigins": "Set cors.origins", + "moduleLiveSyncMain.msgScramEnabled": "Self-hosted LiveSync has been configured to ignore some events. Is this correct?\n\n| Type | Status | Note |\n|:---:|:---:|---|\n| Storage Events | ${fileWatchingStatus} | Every modification will be ignored |\n| Database Events | ${parseReplicationStatus} | Every synchronised change will be postponed |\n\nDo you want to resume them and restart Obsidian?\n\n> [!DETAILS]-\n> These flags are set by the plug-in while rebuilding, or fetching. If the process ends abnormally, it may be kept unintended.\n> If you are not sure, you can try to rerun these processes. Make sure to back your vault up.\n", + "Ui.RemoteE2EE.StronglyRecommended": "Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server. This means that even if someone gains access to the server, they won't be able to read your data without the passphrase.", + "obsidianLiveSyncSettingTab.msgConnectionCheck": "--Connection check--", + "Doctor.Button.FixButNoRebuild": "Fix it but no rebuild", + "Do not keep metadata of deleted files.": "Do not keep metadata of deleted files.", + "Batch database update": "Batch database update", + "Doctor.Dialogue.Main": "Hi! Config Doctor has been activated because of ${activateReason}!\nAnd, unfortunately some configurations were detected as potential problems.\nPlease be assured. Let's solve them one by one.\n\nTo let you know ahead of time, we will ask you about the following items.\n\n${issues}\n\nShall we get started?", + "obsidianLiveSyncSettingTab.msgOriginCheck": "Origin check: ${org}", + "Username": "Username", + "Ui.ScanQRCode.Title": "Scan QR Code", + "TweakMismatchResolve.Message.WarningIncompatibleRebuildRequired": "\n>[!WARNING]\n> We have detected that some of the values are different to make incompatible the local database with the remote database.\n> Either local or remote rebuilds are required. Both of them takes a few minutes or more. **Make sure it is safe to perform it now.**", + "Doctor.Message.RebuildRequired": "Attention! A rebuild is required to apply this!", + "Ui.SetupWizard.Bucket.Title": "S3/MinIO/R2 Configuration", + "obsidianLiveSyncSettingTab.defaultLanguage": "Default", + "Ui.SetupWizard.Fetch.BackupDone": "I have created a backup of my Vault.", + "Ui.SetupWizard.Rebuild.BackupUnableAdvice": "You should create a new synchronisation destination and rebuild your data there. After that, synchronise to a brand new vault on each other device with the new remote one by one.", + "Ui.SetupWizard.Fetch.Proceed": "Reset and Resume Synchronisation", + "obsidianLiveSyncSettingTab.msgSettingsUnchangeableDuringSync": "These settings are unable to be changed during synchronization. Please disable all syncing in the \"Sync Settings\" to unlock.", + "obsidianLiveSyncSettingTab.msgNonHTTPSWarning": "Cannot connect to non-HTTPS URI. Please update your config and try again.", + "obsidianLiveSyncSettingTab.errRequireValidUser": "❗ chttpd.require_valid_user is wrong.", + "obsidianLiveSyncSettingTab.msgSelectAndApplyPreset": "Please select and apply any preset item to complete the wizard.", + "obsidianLiveSyncSettingTab.titleCouchDB": "CouchDB", + "If enabled, newly created chunks are temporarily kept within the document, and graduated to become independent chunks once stabilised.": "If enabled, newly created chunks are temporarily kept within the document, and graduated to become independent chunks once stabilised.", + "P2P.FailedToOpen": "Failed to open P2P connection to the signalling server.", + "Ui.UseSetupURI.InvalidInfo": "The Setup-URI does not appear to be valid. Please check that you have copied it correctly.", + "Ui.RemoteE2EE.AlgorithmWarning": "Changing the encryption algorithm will prevent access to any data previously encrypted with a different algorithm.", + "Ui.SetupWizard.CouchDBCheck.Fix": "Fix", + "P2P.NoKnownPeers": "No peers has been detected, waiting incoming other peers...", + "obsidianLiveSyncSettingTab.logCheckPassphraseFailed": "ERROR: Failed to check passphrase with the remote server:\n${db}.", + "Ui.SetupWizard.Fetch.VaultIdentical": "The files in this Vault are almost identical to the server's.", + "Ui.SetupWizard.Rebuild.ConfirmSyncDisabled": "I understand that other devices will no longer be able to synchronise, and will need to be reset the synchronisation information.", + "Ui.RemoteE2EE.ButtonCancel": "Cancel", + "obsidianLiveSyncSettingTab.okRequireValidUser": "✔ chttpd.require_valid_user is ok.", + "The Hash algorithm for chunk IDs": "The Hash algorithm for chunk IDs", + "obsidianLiveSyncSettingTab.titleLogging": "Logging", + "Suspend database reflecting": "Suspend database reflecting", + "obsidianLiveSyncSettingTab.titleRemoteServer": "Remote Server", + "obsidianLiveSyncSettingTab.optionCancel": "Cancel", + "Doctor.Dialogue.TitleFix": "Fix issue ${current}/${total}", + "obsidianLiveSyncSettingTab.optionMinioS3R2": "Minio,S3,R2", + "obsidianLiveSyncSettingTab.btnCheck": "Check", + "Batch size of on-demand fetching": "Batch size of on-demand fetching", + "moduleMigration.logMigrationFailed": "Migration failed or cancelled from ${old} to ${current}", + "obsidianLiveSyncSettingTab.optionFetchFromRemote": "Fetch from Remote", + "obsidianLiveSyncSettingTab.nameValidateDatabaseConfig": "Validate Database Configuration", + "password": "password", + "Ui.RemoteE2EE.StronglyRecommendedTitle": "Strongly Recommended", + "Process small files in the foreground": "Process small files in the foreground", + "obsidianLiveSyncSettingTab.optionOkReadEverything": "OK, I have read everything.", + "Ui.SetupWizard.Rebuild.BackupSkipped": "I understand the risks and will proceed without a backup.", + "obsidianLiveSyncSettingTab.levelAdvanced": " (Advanced)", + "P2P.AskPassphraseForDecrypt": "The remote peer shared the configuration. Please input the passphrase to decrypt the configuration.", + "Password": "Password", + "obsidianLiveSyncSettingTab.titleSyncSettingsViaMarkdown": "Sync Settings via Markdown", + "Setup.Doctor.Title": "Do you want to consult the doctor?", + "moduleMigration.optionEnableBoth": "Enable both", + "obsidianLiveSyncSettingTab.descFetchConfigFromRemote": "Fetch necessary settings from already configured remote server.", + "Setup.Apply.Buttons.ApplyAndMerge": "Apply and Merge", + "Doctor.Level.Necessary": "Necessary", + "moduleMigration.docUri": "https://github.com/vrtmrz/obsidian-livesync/blob/main/README.md#how-to-use", + "obsidianLiveSyncSettingTab.logEstimatedSize": "Estimated size: ${size}", + "obsidianLiveSyncSettingTab.logConfiguredPeriodic": "Configured synchronization mode: Periodic", + "obsidianLiveSyncSettingTab.okAdminPrivileges": "✔ You have administrator privileges.", + "TweakMismatchResolve.Message.UseRemote.WarningRebuildRequired": "\n>[!WARNING]\n> Some remote configurations are not compatible with the local database of this device. Rebuilding the local database will be required.\n> ***Please ensure that you have time and are connected to a stable network to apply!***", + "moduleCheckRemoteSize.option2GB": "2GB (Standard)", + "obsidianLiveSyncSettingTab.logCouchDbConfigSet": "CouchDB Configuration: ${title} -> Set ${key} to ${value}", + "TweakMismatchResolve.Action.UseRemote": "Apply settings to this device", + "Doctor.Message.NoIssues": "No issues detected!", + "obsidianLiveSyncSettingTab.logDatabaseConnected": "Database connected", + "Endpoint URL": "Endpoint URL", + "obsidianLiveSyncSettingTab.labelEnabled": "🔁 : Enabled", + "Scan changes on customization sync": "Scan changes on customization sync", + "Setup.ShowQRCode.Desc": "Show QR code to transfer the settings.", + "Ui.UseSetupURI.ButtonCancel": "Cancel", + "moduleCheckRemoteSize.logCheckingStorageSizes": "Checking storage sizes", + "Ui.SetupWizard.Common.ExperimentalSettings": "Experimental Settings", + "obsidianLiveSyncSettingTab.optionRebuildBoth": "Rebuild Both from This Device", + "Should we prompt you about conflicting files when a file is opened?": "Should we prompt you about conflicting files when a file is opened?", + "obsidianLiveSyncSettingTab.nameDiscardSettings": "Discard existing settings and databases", + "obsidianLiveSyncSettingTab.msgAreYouSureProceed": "Are you sure to proceed?", + "lang-ko": "한국어", + "obsidianLiveSyncSettingTab.optionApply": "Apply", + "obsidianLiveSyncSettingTab.warnNoAdmin": "⚠ You do not have administrator privileges.", + "obsidianLiveSyncSettingTab.msgFetchConfigFromRemote": "Do you want to fetch the config from the remote server?", + "obsidianLiveSyncSettingTab.descEnableLiveSync": "Only enable this after configuring either of the above two options or completing all configuration manually.", + "obsidianLiveSyncSettingTab.optionPeriodicWithBatch": "Periodic w/ batch", + "Replicator.Message.VersionUpFlash": "An update has been detected. Please open the Settings dialogue and check the Change Log. Replication has been cancelled.", + "Enable this if your Object Storage doesn't support CORS": "Enable this if your Object Storage doesn't support CORS", + "(Not recommended) If set, credentials will be stored in the file.": "(Not recommended) If set, credentials will be stored in the file.", + "Replicator.Message.InitialiseFatalError": "No replicator is available, this is the fatal error.", + "moduleCheckRemoteSize.optionNoWarn": "No, never warn please", + "Filename": "Filename", + "Encrypt contents on the remote database. If you use the plugin's synchronization feature, enabling this is recommended.": "Encrypt contents on the remote database. If you use the plugin's synchronization feature, enabling this is recommended.", + "Ui.SetupWizard.CouchDB.Title": "CouchDB Configuration", + "Setup.ShowQRCode": "Show QR code", + "moduleMigration.logSetupCancelled": "The setup has been cancelled, Self-hosted LiveSync waiting for your setup!", + "liveSyncReplicator.remoteDbMarkedResolved": "Remote database has been marked resolved.", + "If enabled per-filed efficient customization sync will be used. We need a small migration when enabling this. And all devices should be updated to v0.23.18. Once we enabled this, we lost a compatibility with old versions.": "If enabled per-filed efficient customization sync will be used. We need a small migration when enabling this. And all devices should be updated to v0.23.18. Once we enabled this, we lost a compatibility with old versions.", + "obsidianLiveSyncSettingTab.msgSetCorsCredentials": "Set cors.credentials", + "Setting.TroubleShooting.ScanBrokenFiles": "Scan for broken files", + "TweakMismatchResolve.Title.TweakResolving": "Configuration Mismatch Detected", + "Suspend file watching": "Suspend file watching", + "obsidianLiveSyncSettingTab.panelSetup": "Setup", + "Encrypting sensitive configuration items": "Encrypting sensitive configuration items", + "Doctor.Level.Must": "Must", + "liveSyncReplicator.replicationInProgress": "Replication is already in progress", + "Before v0.17.16, we used an old adapter for the local database. Now the new adapter is preferred. However, it needs local database rebuilding. Please disable this toggle when you have enough time. If leave it enabled, also while fetching from the remote database, you will be asked to disable this.": "Before v0.17.16, we used an old adapter for the local database. Now the new adapter is preferred. However, it needs local database rebuilding. Please disable this toggle when you have enough time. If leave it enabled, also while fetching from the remote database, you will be asked to disable this.", + "TweakMismatchResolve.Action.UseRemoteAcceptIncompatible": "Apply settings to this device, but and ignore incompatibility", + "Analyse database usage and generate a TSV report for diagnosis yourself. You can paste the generated report with any spreadsheet you like.": "Analyse database usage and generate a TSV report for diagnosis yourself. You can paste the generated report with any spreadsheet you like.", + "obsidianLiveSyncSettingTab.titleFetchSettings": "Fetch Settings", + "Sync on Save": "Sync on Save", + "Requires restart of Obsidian.": "Requires restart of Obsidian.", + "obsidianLiveSyncSettingTab.panelPrivacyEncryption": "Privacy & Encryption", + "obsidianLiveSyncSettingTab.titleRemoteConfigCheckFailed": "Remote Configuration Check Failed", + "obsidianLiveSyncSettingTab.logCouchDbConfigFail": "CouchDB Configuration: ${title} failed", + "obsidianLiveSyncSettingTab.titleReset": "Reset", + "Setup.Apply.Message": "The new configuration is ready. Let us proceed to apply it.\nThere are several ways to apply this:\n\n- Apply and Fetch\n Configure this device as a new client. After applying, synchronise from the remote server.\n- Apply and Merge\n Configure on a device that already has the file. It processes the local files and transfers the differences. Conflicts may arise.\n- Apply and Rebuild\n Rebuild the remote using local files. This is typically done if the server becomes corrupted or we wish to start from scratch.\n Other devices will be locked and required to re-fetch.\n- Only Apply\n Apply only. Conflicts may arise if a rebuild is required.", + "Use dynamic iteration count": "Use dynamic iteration count", + "Ui.SetupWizard.Rebuild.BackupUnable": "I am unable to create a backup of my Vaults.", + "Enable edge case treatment features": "Enable edge case treatment features", + "Analyse": "Analyse", + "moduleMigration.fix0256.buttons.checkItLater": "Check it later", + "Ui.SetupWizard.Rebuild.BackupQuestion": "Have you created a backup before proceeding?", + "Scan customization before replicating.": "Scan customization before replicating.", + "moduleMigration.optionEnableFilenameCaseInsensitive": "Enable only #1", + "The delay for consecutive on-demand fetches": "The delay for consecutive on-demand fetches", + "Setup.Apply.Buttons.ApplyAndRebuild": "Apply and Rebuild", + "obsidianLiveSyncSettingTab.titleFetchConfig": "Fetch Config", + "Replicator.Dialogue.Locked.Message": "Remote database is locked. This is due to a rebuild on one of the terminals.\nThe device is therefore asked to withhold the connection to avoid database corruption.\n\nThere are three options that we can do:\n\n- %{Replicator.Dialogue.Locked.Action.Fetch}\n The most preferred and reliable way. This will dispose the local database once, and reset all synchronisation information from the remote database again, In most case, we can perform this safely. However, it takes some time and should be done in stable network.\n- %{Replicator.Dialogue.Locked.Action.Unlock}\n This method can only be used if we are already reliably synchronised by other replication methods. This does not simply mean that we have the same files. If you are not sure, you should avoid it.\n- %{Replicator.Dialogue.Locked.Action.Dismiss}\n This will cancel the operation. And we will asked again on next request.\n", + "Ui.RemoteE2EE.DefaultAlgorithmDesc": "In most cases, you should stick with the default algorithm.", + "moduleLiveSyncMain.logLoadingPlugin": "Loading plugin...", + "obsidianLiveSyncSettingTab.titleOnlineTips": "Online Tips", + "Notify all setting files": "Notify all setting files", + "Ui.SetupWizard.Fetch.BackupRecommendation": "We recommend that you copy your Vault folder to a safe location. This will provide a safeguard in case a large number of conflicts arise, or if you accidentally synchronise with an incorrect destination.", + "Use timeouts instead of heartbeats": "Use timeouts instead of heartbeats", + "Secret Key": "Secret Key", + "liveSyncReplicator.checkingLastSyncPoint": "Looking for the point last synchronized point.", + "Ui.RemoteE2EE.AdvancedTitle": "Advanced", + "Sync on File Open": "Sync on File Open", + "The maximum number of chunks that can be incubated within the document. Chunks exceeding this number will immediately graduate to independent chunks.": "The maximum number of chunks that can be incubated within the document. Chunks exceeding this number will immediately graduate to independent chunks.", + "obsidianLiveSyncSettingTab.msgInvalidPassphrase": "Your encryption passphrase might be invalid. Are you sure you want to continue?", + "Write credentials in the file": "Write credentials in the file", + "moduleObsidianMenu.replicate": "Replicate", + "Scan customization every 1 minute.": "Scan customization every 1 minute.", + "TweakMismatchResolve.Message.Main": "\nThe settings in the remote database are as follows. These values are configured by other devices, which are synchronised with this device at least once.\n\nIf you want to use these settings, please select %{TweakMismatchResolve.Action.UseConfigured}.\nIf you want to keep the settings of this device, please select %{TweakMismatchResolve.Action.Dismiss}.\n\n${table}\n\n>[!TIP]\n> If you want to synchronise all settings, please use `Sync settings via markdown` after applying minimal configuration with this feature.\n\n${additionalMessage}", + "Ui.SetupWizard.Fetch.BackupQuestion": "Have you created a backup before proceeding?", + "obsidianLiveSyncSettingTab.logRebuildNote": "Syncing has been disabled, fetch and re-enabled if desired.", + "moduleMigration.insecureChunkExist.title": "Insecure chunks found!", + "Ui.RemoteE2EE.ObfuscatePropertiesDesc": "Obfuscating properties adds an additional layer of security by making it harder to identify the structure and names of your files and folders on the remote server.", + "Bucket Name": "Bucket Name", + "TweakMismatchResolve.Action.UseMineWithRebuild": "Update remote database settings and rebuild again", + "Encryption phassphrase. If changed, you should overwrite the server's database with the new (encrypted) files.": "Encryption phassphrase. If changed, you should overwrite the server's database with the new (encrypted) files.", + "liveSyncReplicator.beforeLiveSync": "Before LiveSync, start OneShot once...", + "RedFlag.FetchRemoteConfig.Message": "Do you want to fetch and apply remotely stored preference settings to the device?", + "Should we prompt you for every single merge, even if we can safely merge automatcially?": "Should we prompt you for every single merge, even if we can safely merge automatcially?", + "TweakMismatchResolve.Message.UseRemote.WarningRebuildRecommended": "\n>[!NOTICE]\n> Some changes are compatible but may consume extra storage and transfer volumes. A rebuild is recommended. However, a rebuild may not be performed at present, but may be implemented in future maintenance.\n> ***Please ensure that you have time and are connected to a stable network to apply!***", + "TweakMismatchResolve.Action.UseMine": "Update remote database settings", + "obsidianLiveSyncSettingTab.titleEncryptionNotEnabled": "Encryption is not enabled", + "obsidianLiveSyncSettingTab.logCheckingConfigDone": "Checking configuration done", + "obsidianLiveSyncSettingTab.linkOpenInBrowser": "Open in browser", + "P2P.DisabledButNeed": "%{title_p2p_sync} is disabled. Do you really want to enable it?", + "obsidianLiveSyncSettingTab.msgGenerateSetupURI": "All done! Do you want to generate a setup URI to set up other devices?", + "Scan customization periodically": "Scan customization periodically", + "obsidianLiveSyncSettingTab.msgSetMaxDocSize": "Set couchdb.max_document_size", + "liveSyncReplicator.couldNotMarkResolveRemoteDb": "Could not mark resolve remote database.", + "Doctor.Message.SomeSkipped": "We left some issues as is. Shall I ask you again on next startup?", + "Seconds. Saving to the local database will be delayed until this value after we stop typing or saving.": "Seconds. Saving to the local database will be delayed until this value after we stop typing or saving.", + "obsidianLiveSyncSettingTab.warnCorsOriginUnmatched": "⚠ CORS Origin is unmatched ${from}->${to}", + "moduleCheckRemoteSize.optionRebuildAll": "Rebuild Everything Now", + "RedFlag.Fetch.Method.FetchTraditional": "Fetch everything from the remote", + "liveSyncReplicator.liveSyncBegin": "LiveSync begin...", + "liveSyncReplicator.oneShotSyncBegin": "OneShot Sync begin... (${syncMode})", + "obsidianLiveSyncSettingTab.logEncryptionNoSupport": "Your device does not support encryption.", + "Sync after merging file": "Sync after merging file", + "Ui.SetupWizard.Rebuild.ResolveOnOtherDevices": "There is a way to resolve this on other devices.", + "If disabled(toggled), chunks will be split on the UI thread (Previous behaviour).": "If disabled(toggled), chunks will be split on the UI thread (Previous behaviour).", + "moduleLiveSyncMain.logSafetyScanCompleted": "Additional safety scan completed", + "If this is set, changes to local files which are matched by the ignore files will be skipped. Remote changes are determined using local ignore files.": "If this is set, changes to local files which are matched by the ignore files will be skipped. Remote changes are determined using local ignore files.", + "obsidianLiveSyncSettingTab.errMaxDocumentSize": "❗ couchdb.max_document_size is low)", + "TweakMismatchResolve.Table.Row": "| ${name} | ${self} | ${remote} |", + "Ui.SetupWizard.Rebuild.ConfirmIrreversible": "I understand that this action is irreversible once performed.", + "Ui.ScanQRCode.Step3": "On the source device, from the command palette, run the 'Show settings as a QR code' command.", + "Sync on Editor Save": "Sync on Editor Save", + "Ui.SetupWizard.Fetch.VaultQuestion": "To minimise the creation of new conflicts, please select the option that best describes the current state of your Vault. The application will then check your files in the most appropriate way based on your selection.", + "obsidianLiveSyncSettingTab.msgDone": "--Done--", + "moduleMigration.optionKeepPreviousBehaviour": "Keep previous behaviour", + "Number of changes to sync at a time. Defaults to 50. Minimum is 2.": "Number of changes to sync at a time. Defaults to 50. Minimum is 2.", + "P2P.SyncStartedWith": "P2P Sync with ${name} have been started.", + "liveSyncSetting.originalValue": "Original: ${value}", + "Doctor.Dialogue.TitleAlmostDone": "Almost done!", + "Ui.RemoteE2EE.LabelEncrypt": "End-to-End Encryption", + "obsidianLiveSyncSettingTab.panelGeneralSettings": "General Settings", + "obsidianLiveSyncSettingTab.errCorsOrigins": "❗ cors.origins is wrong", + "dialog.yourLanguageAvailable.Title": " Translation is available!", + "Rerun Onboarding Wizard": "Rerun Onboarding Wizard", + "Fetch chunks on demand": "Fetch chunks on demand", + "liveSyncSetting.errorNoSuchSettingItem": "No such setting item: ${key}", + "obsidianLiveSyncSettingTab.msgConfigCheckFailed": "The configuration check has failed. Do you want to continue anyway?", + "obsidianLiveSyncSettingTab.msgSetWwwAuth": "Set httpd.WWW-Authenticate", + "logPane.pause": "Pause", + "logPane.autoScroll": "Auto scroll", + "moduleMigration.optionNoSetupUri": "No, I do not have", + "lang-zh": "简体中文", + "Replicator.Dialogue.Locked.Message.Unlocked": "The remote database has been unlocked. Please retry the operation.", + "Periodic Sync interval": "Periodic Sync interval", + "Doctor.Level.Recommended": "Recommended", + "Use Segmented-splitter": "Use Segmented-splitter", + "Data Compression": "Data Compression", + "Ui.SetupWizard.Fetch.BackupUnable": "I am unable to create a backup of my Vault.", + "moduleInputUIObsidian.optionYes": "Yes", + "Ui.SetupWizard.Fetch.BackupSkipped": "I understand the risks and will proceed without a backup.", + "P2P.SyncAlreadyRunning": "P2P Sync is already running.", + "liveSyncReplicator.remoteDbDestroyed": "Remote Database Destroyed", + "obsidianLiveSyncSettingTab.titleActiveRemoteServer": "Active Remote Server", + "Minimum interval for syncing": "Minimum interval for syncing", + "moduleCheckRemoteSize.msgSetDBCapacity": "We can set a maximum database capacity warning, **to take action before running out of space on the remote storage**.\nDo you want to enable this?\n\n> [!MORE]-\n> - 0: Do not warn about storage size.\n> This is recommended if you have enough space on the remote storage especially you have self-hosted. And you can check the storage size and rebuild manually.\n> - 800: Warn if the remote storage size exceeds 800MB.\n> This is recommended if you are using fly.io with 1GB limit or IBM Cloudant.\n> - 2000: Warn if the remote storage size exceeds 2GB.\n\nIf we have reached the limit, we will be asked to enlarge the limit step by step.\n", + "Ui.SetupWizard.Fetch.VaultUnbalancedDesc": "(e.g., after editing many files whilst offline)", + "Forces the file to be synced when opened.": "Forces the file to be synced when opened.", + "obsidianLiveSyncSettingTab.nameManualSetup": "Manual Setup", + "moduleMigration.optionManualSetup": "Set it up all manually", + "RedFlag.FetchRemoteConfig.Buttons.Cancel": "No, use local settings", + "obsidianLiveSyncSettingTab.msgNotice": "---Notice---", + "lang-ru": "Русский", + "obsidianLiveSyncSettingTab.errEnableCorsChttpd": "❗ chttpd.enable_cors is wrong" } \ No newline at end of file diff --git a/src/common/messagesJson/es.json b/src/common/messagesJson/es.json index afb7e3e1..4dbc10ad 100644 --- a/src/common/messagesJson/es.json +++ b/src/common/messagesJson/es.json @@ -603,5 +603,243 @@ "Ui.Settings.SyncSettings.Fetch": "Fetch", "Ui.Settings.SyncSettings.Merge": "Merge", "Ui.Settings.SyncSettings.Overwrite": "Overwrite", - "obsidianLiveSyncSettingTab.logServerConfigurationCheck": "Log Server Configuration Check" + "obsidianLiveSyncSettingTab.logServerConfigurationCheck": "Log Server Configuration Check", + "Ui.SetupWizard.Fetch.PreventFetchConfig": "Prevent fetching configuration from server", + "TweakMismatchResolve.Title": "Configuration Mismatch Detected", + "Doctor.Dialogue.Title": "Self-hosted LiveSync Config Doctor", + "Ui.UseSetupURI.LabelPassphrase": "Passphrase", + "P2P.Note.Summary": "What is this feature? (and some important notes, please read once)", + "Setting.TroubleShooting.Doctor.Desc": "Detects non optimal settings. (Same as during migration)", + "Ui.SetupWizard.Rebuild.Guidance": "This procedure will first delete all existing synchronisation data from the server. Following this, the server data will be completely rebuilt, using the current state of your Vault on this device as the single, authoritative master copy.", + "Replicator.Message.VersionUpFlash": "An update has been detected. Please open the Settings dialogue and check the Change Log. Replication has been cancelled.", + "Ui.SetupWizard.Fetch.ImportantBody": "If you have unsynchronised changes in your Vault on this device, they will likely diverge from the server's versions after the reset. This may result in a large number of file conflicts.", + "Ui.RemoteE2EE.MultiDestinationWarning": "This setting must be the same even when connecting to multiple synchronisation destinations.", + "TweakMismatchResolve.Action.UseConfigured": "Use configured settings", + "Replicator.Message.InitialiseFatalError": "No replicator is available, this is the fatal error.", + "Replicator.Message.Cleaned": "Database cleaning up is in process. replication has been cancelled", + "Setup.Doctor.Buttons.No": "No, please use the settings in the URI as is", + "Doctor.Dialogue.MainFix": "\n## ${name}\n\n| Current | Ideal |\n|:---:|:---:|\n| ${current} | ${ideal} |\n\n**Recommendation Level:** ${level}\n\n### Why this has been detected?\n\n${reason}\n\n${note}\n\nFix this to the ideal value?", + "Ui.SetupWizard.CouchDB.Title": "CouchDB Configuration", + "P2P.ReplicatorInstanceMissing": "P2P Sync replicator is not found, possibly not have been configured or enabled.", + "Doctor.RULES.E2EE_V02500.REASON": "The End-to-End Encryption has got now more robust and faster. Also because, the previous E2EE was found to be compromised in a re-conducted code review. It should be applied as soon as possible. Really apologises for your inconvenience. And, this setting is not forward compatible. All synchronised devices must be updated to v0.25.0 or higher. Rebuilds are not required and will be converted from the new transfer to the new format, However, it is recommended to rebuild whenever possible.", + "Ui.ScanQRCode.Guidance": "Please follow the steps below to import settings from your existing device.", + "Setup.ShowQRCode": "Show QR code", + "P2P.P2PReplication": "%{P2P} Replication", + "Compute revisions for chunks": "Compute revisions for chunks", + "Ui.RemoteE2EE.ManualWarning": "Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences. This is a security measure designed to protect your data.", + "TweakMismatchResolve.Title.UseRemoteConfig": "Use Remote Configuration", + "Setting.TroubleShooting": "TroubleShooting", + "Ui.ScanQRCode.ButtonClose": "Close this dialog", + "RedFlag.Fetch.Method.Title": "How do you want to fetch?", + "Ui.UseSetupURI.Title": "Enter Setup URI", + "Ui.UseSetupURI.ErrorFailedToParse": "Failed to parse Setup-URI.", + "Setting.TroubleShooting.ScanBrokenFiles": "Scan for broken files", + "TweakMismatchResolve.Title.TweakResolving": "Configuration Mismatch Detected", + "Setup.FetchRemoteConf.Message": "If we have already synchronised once with another device, the remote database stores the suitable configuration values between the synchronised devices. The plug-in would like to retrieve them for robust configuration.\n\nHowever, we have to make sure the one thing. Are we currently in a situation where we can access the network safely and retrieve the settings?\n\nNote: Mostly, you are safe to do this, that your remote database is hosted with a SSL certificate, and your network is not compromised.", + "TweakMismatchResolve.Action.UseMineAcceptIncompatible": "Update remote database settings but keep as is", + "Ui.UseSetupURI.Label": "Setup-URI", + "Replicator.Dialogue.Locked.Message.Fetch": "Fetch all has been scheduled. Plug-in will be restarted to perform it.", + "SettingTab.Message.AskRebuild": "Your changes require fetching from the remote database. Do you want to proceed?", + "moduleMigration.optionSetupViaP2P": "Use %{short_p2p_sync} to set up", + "obsidianLiveSyncSettingTab.serverVersion": "Server info: ${info}", + "Ui.SetupWizard.Common.ContinueAnyway": "Continue anyway", + "Ui.SetupWizard.Rebuild.BackupDone": "I have created a backup of my Vault.", + "K.exp": "Experimental", + "Doctor.Level.Must": "Must", + "Ui.SetupWizard.P2P.UseDefaultRelay": "Use vrtmrz's relay", + "Ui.P2P.Guidance": "Please enter the Peer-to-Peer Synchronisation information below.", + "Ui.RemoteE2EE.LabelEncryptionAlgorithm": "Encryption Algorithm", + "moduleMigration.insecureChunkExist.buttons.fetch": "I already rebuilt the remote. Fetch from the remote", + "K.Peer": "Peer", + "TweakMismatchResolve.Action.UseRemoteAcceptIncompatible": "Apply settings to this device, but and ignore incompatibility", + "Analyse database usage and generate a TSV report for diagnosis yourself. You can paste the generated report with any spreadsheet you like.": "Analyse database usage and generate a TSV report for diagnosis yourself. You can paste the generated report with any spreadsheet you like.", + "Replicator.Dialogue.Locked.Action.Unlock": "Unlock the remote database", + "RedFlag.Fetch.Method.FetchSmoother": "Create local file chunks before fetching", + "Rerun Wizard": "Rerun Wizard", + "Ui.RemoteE2EE.WarningSameSetting": "This setting must be the same even when connecting to multiple synchronisation destinations.", + "K.P2P": "%{Peer}-to-%{Peer}", + "Setup.FetchRemoteConf.Title": "Fetch configuration from remote database?", + "Ui.Bucket.Guidance": "Please enter the details required to connect to your S3/MinIO/R2 compatible object storage service.", + "Ui.UseSetupURI.ValidMessage": "The Setup-URI is valid and ready to use.", + "P2P.SyncCompleted": "P2P Sync completed.", + "Ui.SetupWizard.Rebuild.BackupBeforeProceeding": "Of course, we can back up the data before proceeding.", + "moduleMigration.fix0256.messageUnrecoverable": "**Files cannot be fixed on this device:**\n\n${filesNotRecoverable}\n\nThese files have inconsistent metadata, and cannot be fixed on this device (mostly we cannot determine which is correct).\nTo restore them, please check your other devices (also by this feature) or restore them manually from a backup.\n", + "Property Encryption": "Property Encryption", + "Ui.SetupWizard.Common.HttpsOnlyMobile": "We can use only Secure (HTTPS) connections on Obsidian Mobile.", + "Ui.SetupWizard.Rebuild.PreventFetchConfig": "Prevent fetching configuration from server", + "Setup.Apply.Message": "The new configuration is ready. Let us proceed to apply it.\nThere are several ways to apply this:\n\n- Apply and Fetch\n Configure this device as a new client. After applying, synchronise from the remote server.\n- Apply and Merge\n Configure on a device that already has the file. It processes the local files and transfers the differences. Conflicts may arise.\n- Apply and Rebuild\n Rebuild the remote using local files. This is typically done if the server becomes corrupted or we wish to start from scratch.\n Other devices will be locked and required to re-fetch.\n- Only Apply\n Apply only. Conflicts may arise if a rebuild is required.", + "TweakMismatchResolve.Table": "| Value name | This device | On Remote |\n|: --- |: ---- :|: ---- :|\n${rows}\n\n", + "Ui.CouchDB.Guidance": "Please enter the CouchDB server information below.", + "Ui.UseSetupURI.PlaceholderPassphrase": "Enter your passphrase", + "Ui.SetupWizard.Rebuild.BackupUnable": "I am unable to create a backup of my Vaults.", + "Doctor.Level.Optional": "Optional", + "Analyse": "Analyse", + "moduleMigration.fix0256.buttons.checkItLater": "Check it later", + "Ui.SetupWizard.Rebuild.BackupQuestion": "Have you created a backup before proceeding?", + "Run Doctor": "Run Doctor", + "moduleMigration.insecureChunkExist.buttons.rebuild": "Rebuild Everything", + "Ui.SetupWizard.Rebuild.WhenToUse": "You should perform this operation only in exceptional circumstances, such as when the server data is completely corrupted, when changes on all other devices are no longer needed, or when the database size has become unusually large in comparison to the Vault size.", + "Setup.Apply.Buttons.Cancel": "Discard and Cancel", + "Ui.RemoteE2EE.PlaceholderPassphrase": "Enter your passphrase", + "obsidianLiveSyncSettingTab.okEnableCorsChttpd": "✔ chttpd.enable_cors is ok.", + "Setup.QRCode": "We have generated a QR code to transfer the settings. Please scan the QR code with your phone or other device.\nNote: The QR code is not encrypted, so be careful to open this.\n\n>[!FOR YOUR EYES ONLY]-\n>
${qr_image}
", + "Ui.RemoteE2EE.StronglyRecommendedLine1": "Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server.", + "moduleMigration.fix0256.buttons.DismissForever": "I have fixed it, and do not ask again", + "Setup.Apply.Buttons.ApplyAndRebuild": "Apply and Rebuild", + "moduleMigration.insecureChunkExist.buttons.later": "I will do it later", + "Ui.ScanQRCode.Step2": "On the source device, open Obsidian.", + "Ui.RemoteE2EE.LabelObfuscateProperties": "Obfuscate Properties", + "P2P.Note.important_note_sub": "This feature is still on the bleeding edge. Please be aware that ensure your data is backed up before using this feature. And, we would be so happy if you could contribute to the development of this feature.", + "Ui.RemoteE2EE.PassphraseValidationLine1": "Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences.", + "Replicator.Dialogue.Locked.Message": "Remote database is locked. This is due to a rebuild on one of the terminals.\nThe device is therefore asked to withhold the connection to avoid database corruption.\n\nThere are three options that we can do:\n\n- %{Replicator.Dialogue.Locked.Action.Fetch}\n The most preferred and reliable way. This will dispose the local database once, and reset all synchronisation information from the remote database again, In most case, we can perform this safely. However, it takes some time and should be done in stable network.\n- %{Replicator.Dialogue.Locked.Action.Unlock}\n This method can only be used if we are already reliably synchronised by other replication methods. This does not simply mean that we have the same files. If you are not sure, you should avoid it.\n- %{Replicator.Dialogue.Locked.Action.Dismiss}\n This will cancel the operation. And we will asked again on next request.\n", + "Replicator.Message.Pending": "Some file events are pending. Replication has been cancelled.", + "Replicator.Dialogue.Locked.Action.Dismiss": "Cancel for reconfirmation", + "Ui.RemoteE2EE.DefaultAlgorithmDesc": "In most cases, you should stick with the default algorithm.", + "Doctor.Message.RebuildLocalRequired": "Attention! A local database rebuild is required to apply this!", + "Ui.SetupWizard.Fetch.BackupRecommendation": "We recommend that you copy your Vault folder to a safe location. This will provide a safeguard in case a large number of conflicts arise, or if you accidentally synchronise with an incorrect destination.", + "Copy Report to clipboard": "Copy Report to clipboard", + "Ui.RemoteE2EE.ButtonProceed": "Proceed", + "Ui.UseSetupURI.Guidance": "Please enter the Setup URI that was generated during server installation or on another device, along with the vault passphrase.", + "P2P.Note.description": " This replicator allows us to synchronise our vault with other devices\nusing a peer-to-peer connection. We can use this to synchronise our vault with our other devices without using a cloud service.\nThis replicator is based on Trystero. It also uses a signalling server to establish a connection between devices. The signalling server is used to exchange connection information between devices. It does (or,should) not know or store any of our data.\n\nThe signalling server can be hosted by anyone. This is just a Nostr relay. For the sake of simplicity and checking the behaviour of the replicator, an instance of the signalling server is hosted by vrtmrz. You can use the experimental server provided by vrtmrz, or you can use any other server.\n\nBy the way, even if the signalling server does not store our data, it can see the connection information of some of our devices. Please be aware of this. Also, be cautious when using the server provided by someone else.", + "Ui.RemoteE2EE.AdvancedTitle": "Advanced", + "TweakMismatchResolve.Message.MainTweakResolving": "Your configuration has not been matched with the one on the remote server.\n\nFollowing configuration should be matched:\n\n${table}\n\nLet us know your decision.\n\n${additionalMessage}", + "Ui.SetupWizard.Fetch.ImportantTitle": "Important Notice", + "lang-def": "%{lang_def}", + "Replicator.Message.SomeModuleFailed": "Replication has been cancelled by some module failure", + "P2P.Note.important_note": "Peer-to-Peer Replicator.", + "Setup.FetchRemoteConf.Buttons.Fetch": "Yes, please fetch the configuration", + "Ui.SetupWizard.Fetch.UnbalancedNote": "In this scenario, Self-hosted LiveSync will recreate metadata for every file and deliberately generate conflicts. Where the file content is identical, these conflicts will be resolved automatically.", + "TweakMismatchResolve.Message.Main": "\nThe settings in the remote database are as follows. These values are configured by other devices, which are synchronised with this device at least once.\n\nIf you want to use these settings, please select %{TweakMismatchResolve.Action.UseConfigured}.\nIf you want to keep the settings of this device, please select %{TweakMismatchResolve.Action.Dismiss}.\n\n${table}\n\n>[!TIP]\n> If you want to synchronise all settings, please use `Sync settings via markdown` after applying minimal configuration with this feature.\n\n${additionalMessage}", + "Reset notification threshold and check the remote database usage": "Reset notification threshold and check the remote database usage", + "K.short_p2p_sync": "P2P Sync", + "Ui.SetupWizard.Fetch.BackupQuestion": "Have you created a backup before proceeding?", + "Setup.Apply.Buttons.OnlyApply": "Only Apply", + "moduleMigration.insecureChunkExist.title": "Insecure chunks found!", + "Ui.RemoteE2EE.ObfuscatePropertiesDesc": "Obfuscating properties adds an additional layer of security by making it harder to identify the structure and names of your files and folders on the remote server.", + "P2P.NotEnabled": "%{title_p2p_sync} is not enabled. We cannot open a new connection.", + "Reset the remote storage size threshold and check the remote storage size again.": "Reset the remote storage size threshold and check the remote storage size again.", + "Ui.SetupWizard.Rebuild.BackupWarning": "This is an extremely powerful operation. We strongly recommend that you copy your Vault folder to a safe location.", + "Ui.RemoteE2EE.StronglyRecommended": "Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server. This means that even if someone gains access to the server, they won't be able to read your data without the passphrase.", + "TweakMismatchResolve.Action.UseMineWithRebuild": "Update remote database settings and rebuild again", + "Ui.SetupWizard.CouchDBCheck.DetectAndFix": "Detect and Fix CouchDB Issues", + "Doctor.Button.FixButNoRebuild": "Fix it but no rebuild", + "RedFlag.FetchRemoteConfig.Message": "Do you want to fetch and apply remotely stored preference settings to the device?", + "TweakMismatchResolve.Message.UseRemote.WarningRebuildRecommended": "\n>[!NOTICE]\n> Some changes are compatible but may consume extra storage and transfer volumes. A rebuild is recommended. However, a rebuild may not be performed at present, but may be implemented in future maintenance.\n> ***Please ensure that you have time and are connected to a stable network to apply!***", + "TweakMismatchResolve.Action.UseMine": "Update remote database settings", + "Ui.SetupWizard.Fetch.VaultUnbalanced": "There may be differences between the files in this Vault and the server.", + "P2P.DisabledButNeed": "%{title_p2p_sync} is disabled. Do you really want to enable it?", + "Doctor.Dialogue.Main": "Hi! Config Doctor has been activated because of ${activateReason}!\nAnd, unfortunately some configurations were detected as potential problems.\nPlease be assured. Let's solve them one by one.\n\nTo let you know ahead of time, we will ask you about the following items.\n\n${issues}\n\nShall we get started?", + "K.title_p2p_sync": "Peer-to-Peer Sync", + "Ui.ScanQRCode.Title": "Scan QR Code", + "Doctor.Message.SomeSkipped": "We left some issues as is. Shall I ask you again on next startup?", + "TweakMismatchResolve.Message.WarningIncompatibleRebuildRequired": "\n>[!WARNING]\n> We have detected that some of the values are different to make incompatible the local database with the remote database.\n> Either local or remote rebuilds are required. Both of them takes a few minutes or more. **Make sure it is safe to perform it now.**", + "Doctor.Message.RebuildRequired": "Attention! A rebuild is required to apply this!", + "moduleMigration.insecureChunkExist.message": "Some chunks are not securely stored and are not encrypted in databases.\n**Please rebuild the database to fix this issue**.\n\nIf your Remote Database is not configured with SSL, or using less-secure credentials, **you are at risk of exposing sensitive data**.\n\nNote: Please upgrade your Self-hosted LiveSync v0.25.6 or higher on all your devices, and back your vault up surely.\nNote2: Rebuild Everything and Fetch consumes a bit of time and traffic, please do it in off-peak hours and ensure a stable network connection.\n", + "RedFlag.Fetch.Method.FetchSafer": "Create a local database once before fetching", + "Setting.TroubleShooting.ScanBrokenFiles.Desc": "Scans for files that are not stored correctly in the database.", + "Ui.SetupWizard.Bucket.Title": "S3/MinIO/R2 Configuration", + "RedFlag.Fetch.Method.FetchTraditional": "Fetch everything from the remote", + "Ui.SetupWizard.Fetch.BackupDone": "I have created a backup of my Vault.", + "RedFlag.Fetch.Method.Desc": "How do you want to fetch?\n- %{RedFlag.Fetch.Method.FetchSafer}.\n **Low Traffic**, **High CPU**, **Low Risk**\n Recommended if ...\n - Files possibly inconsistent\n - Files were not so much\n- %{RedFlag.Fetch.Method.FetchSmoother}.\n **Low Traffic**, **Moderate CPU**, **Low to Moderate Risk**\n Recommended if ...\n - Files probably consistent\n - You have a lot of files.\n- %{RedFlag.Fetch.Method.FetchTraditional}.\n **High Traffic**, **Low CPU**, **Low to Moderate Risk**\n\n>[!INFO]- Details\n> ## %{RedFlag.Fetch.Method.FetchSafer}.\n> **Low Traffic**, **High CPU**, **Low Risk**\n> This option first creates a local database using existing local files before fetching data from the remote source.\n> If matching files exist both locally and remotely, only the differences between them will be transferred.\n> However, files present in both locations will initially be handled as conflicted files. They will be resolved automatically if they are not actually conflicted, but this process may take time.\n> This is generally the safest method, minimizing data loss risk.\n> ## %{RedFlag.Fetch.Method.FetchSmoother}.\n> **Low Traffic**, **Moderate CPU**, **Low to Moderate Risk** (depending operation)\n> This option first creates chunks from local files for the database, then fetches data. Consequently, only chunks missing locally are transferred. However, all metadata is taken from the remote source.\n> Local files are then compared against this metadata at launch. The content considered newer will overwrite the older one (by modified time). This outcome is then synchronised back to the remote database.\n> This is generally safe if local files are genuinely the latest timestamp. However, it can cause problems if a file has a newer timestamp but older content (like the initial `welcome.md`).\n> This uses less CPU and faster than \"%{RedFlag.Fetch.Method.FetchSafer}\", but it may lead to data loss if not used carefully.\n> ## %{RedFlag.Fetch.Method.FetchTraditional}.\n> **High Traffic**, **Low CPU**, **Low to Moderate Risk** (depending operation)\n> All things will be fetched from the remote.\n> Similar to the %{RedFlag.Fetch.Method.FetchSmoother}, but all chunks are fetched from the remote source.\n> This is the most traditional way to fetch, typically consuming the most network traffic and time. It also carries a similar risk of overwriting remote files to the '%{RedFlag.Fetch.Method.FetchSmoother}' option.\n> However, it is often considered the most stable method because it is the longest-established and most straightforward approach.", + "Ui.SetupWizard.Rebuild.BackupUnableAdvice": "You should create a new synchronisation destination and rebuild your data there. After that, synchronise to a brand new vault on each other device with the new remote one by one.", + "Ui.SetupWizard.Rebuild.ConfirmTitle": "Please Confirm the Following", + "Ui.SetupWizard.Fetch.Proceed": "Reset and Resume Synchronisation", + "Setup.Apply.WarningRebuildRecommended": "NOTE: after adjusting the settings, it has been determined that a rebuild is required; Just Import is not recommended.", + "Ui.SetupWizard.Rebuild.ResolveOnOtherDevices": "There is a way to resolve this on other devices.", + "Doctor.Button.DismissThisVersion": "No, and do not ask again until the next release", + "Ui.SetupWizard.Rebuild.ConfirmDataLoss": "I understand that all changes made on other smartphones or computers possibly could be lost.", + "Analyse database usage": "Analyse database usage", + "Ui.SetupWizard.Rebuild.ResetNotifyOtherDevices": "by resetting the remote, you will be informed on other devices.", + "Ui.SetupWizard.Fetch.VaultIdenticalDesc": "(e.g., immediately after restoring on another computer, or having recovered from a backup)", + "Setup.FetchRemoteConf.Buttons.Skip": "No, please use the settings in the URI", + "Ui.RemoteE2EE.PassphraseValidationLine2": "Therefore, we ask that you exercise extreme caution when configuring server information manually.", + "P2P.FailedToOpen": "Failed to open P2P connection to the signalling server.", + "Ui.SetupWizard.Fetch.BackupUnableNote": "If you understand the risks and still wish to proceed, select so.", + "K.long_p2p_sync": "%{title_p2p_sync}", + "Ui.UseSetupURI.InvalidInfo": "The Setup-URI does not appear to be valid. Please check that you have copied it correctly.", + "TweakMismatchResolve.Message.WarningIncompatibleRebuildRecommended": "\n>[!NOTICE]\n> We have detected that some of the values are different to make incompatible the local database with the remote database.\n> Some changes are compatible but may consume extra storage and transfer volumes. A rebuild is recommended. However, a rebuild may not be performed at present, but may be implemented in future maintenance.\n> If you want to rebuild, it takes a few minutes or more. **Make sure it is safe to perform it now.**", + "Ui.RemoteE2EE.AlgorithmWarning": "Changing the encryption algorithm will prevent access to any data previously encrypted with a different algorithm.", + "Ui.SetupWizard.CouchDBCheck.Fix": "Fix", + "P2P.NoKnownPeers": "No peers has been detected, waiting incoming other peers...", + "Ui.SetupWizard.Fetch.Title": "Reset Synchronisation on This Device", + "dialog.yourLanguageAvailable.btnRevertToDefault": "Keep %{lang-def}", + "TweakMismatchResolve.Table.Row": "| ${name} | ${self} | ${remote} |", + "P2P.NoAutoSyncPeers": "No auto-sync peers found. Please set peers on the %{long_p2p_sync} pane.", + "Ui.RemoteE2EE.Guidance": "Please configure your end-to-end encryption settings.", + "P2P.SeemsOffline": "Peer ${name} seems offline, skipped.", + "Ui.SetupWizard.Fetch.Guidance": "This will rebuild the local database on this device using the most recent data from the server. This action is designed to resolve synchronisation inconsistencies and restore correct functionality.", + "Ui.SetupWizard.Fetch.VaultIdentical": "The files in this Vault are almost identical to the server's.", + "Ui.SetupWizard.Rebuild.ConfirmSyncDisabled": "I understand that other devices will no longer be able to synchronise, and will need to be reset the synchronisation information.", + "P2P.AskPassphraseForShare": "The remote peer requested this device configuration. Please input the passphrase to share the configuration. You can ignore the request by cancelling this dialogue.", + "Ui.SetupWizard.Rebuild.ConfirmIrreversible": "I understand that this action is irreversible once performed.", + "Ui.ScanQRCode.Step3": "On the source device, from the command palette, run the 'Show settings as a QR code' command.", + "Ui.RemoteE2EE.ButtonCancel": "Cancel", + "Ui.SetupWizard.Fetch.VaultQuestion": "To minimise the creation of new conflicts, please select the option that best describes the current state of your Vault. The application will then check your files in the most appropriate way based on your selection.", + "P2P.SyncStartedWith": "P2P Sync with ${name} have been started.", + "Setup.Apply.Buttons.ApplyAndFetch": "Apply and Fetch", + "Doctor.Dialogue.TitleFix": "Fix issue ${current}/${total}", + "Doctor.Dialogue.TitleAlmostDone": "Almost done!", + "Ui.SetupWizard.Rebuild.Title": "Final Confirmation: Overwrite Server Data with This Device's Files", + "RedFlag.FetchRemoteConfig.Buttons.Fetch": "Yes, fetch and apply remote settings", + "moduleMigration.insecureChunkExist.laterMessage": "We strongly recommend to treat this as soon as possible!", + "Ui.RemoteE2EE.StronglyRecommendedTitle": "Strongly Recommended", + "Ui.RemoteE2EE.LabelEncrypt": "End-to-End Encryption", + "Ui.SetupWizard.Rebuild.Proceed": "I Understand, Overwrite Server", + "Replicator.Dialogue.Locked.Title": "Locked", + "Doctor.Button.No": "No", + "Ui.ScanQRCode.Step1": "On this device, please keep this Vault open.", + "dialog.yourLanguageAvailable.Title": " Translation is available!", + "Ui.SetupWizard.Rebuild.BackupSkipped": "I understand the risks and will proceed without a backup.", + "Rerun the onboarding wizard to set up Self-hosted LiveSync again.": "Rerun the onboarding wizard to set up Self-hosted LiveSync again.", + "Active Remote Configuration": "Active Remote Configuration", + "Ui.SetupWizard.Fetch.ConflictNote": "Furthermore, if conflicts are already present in the server data, they will be synchronised to this device as they are, and you will need to resolve them locally.", + "Setup.Doctor.Message": "Self-hosted LiveSync has gradually become longer in history and some recommended settings have changed.\n\nNow, setup is a very good time to do this.\n\nDo you want to run Doctor to check if the imported settings are optimal compared to the latest state?", + "Ui.UseSetupURI.ErrorPassphraseRequired": "Passphrase is required.", + "P2P.AskPassphraseForDecrypt": "The remote peer shared the configuration. Please input the passphrase to decrypt the configuration.", + "Rerun Onboarding Wizard": "Rerun Onboarding Wizard", + "Setup.Doctor.Title": "Do you want to consult the doctor?", + "Setup.Apply.Buttons.ApplyAndMerge": "Apply and Merge", + "Ui.SetupWizard.Fetch.VaultIndependentDesc": "(e.g., setting up for the first time on a new smartphone, starting from a clean slate)", + "Ui.SetupWizard.P2P.Title": "P2P Configuration", + "Ui.ScanQRCode.Instruction": "Please follow the steps below to import settings from your existing device.", + "Doctor.Level.Necessary": "Necessary", + "RedFlag.FetchRemoteConfig.Title": "Fetch Remote Configuration", + "Ui.RemoteE2EE.Title": "End-to-End Encryption", + "Replicator.Dialogue.Locked.Message.Unlocked": "The remote database has been unlocked. Please retry the operation.", + "Doctor.Level.Recommended": "Recommended", + "Doctor.Button.Skip": "Leave it as is", + "Ui.SetupWizard.Fetch.BackupUnable": "I am unable to create a backup of my Vault.", + "obsidianLiveSyncSettingTab.msgEnableCorsChttpd": "Set chttpd.enable_cors", + "Prepare the 'report' to create an issue": "Prepare the 'report' to create an issue", + "P2P.PaneTitle": "%{long_p2p_sync}", + "TweakMismatchResolve.Message.UseRemote.WarningRebuildRequired": "\n>[!WARNING]\n> Some remote configurations are not compatible with the local database of this device. Rebuilding the local database will be required.\n> ***Please ensure that you have time and are connected to a stable network to apply!***", + "Setup.Doctor.Buttons.Yes": "Yes, please consult the doctor", + "Ui.SetupWizard.Fetch.BackupSkipped": "I understand the risks and will proceed without a backup.", + "Ui.RemoteE2EE.StronglyRecommendedLine2": "Also, please note that if you are using Peer-to-Peer synchronization, this configuration will be used when you switch to other methods and connect to a remote server in the future.", + "TweakMismatchResolve.Action.UseRemote": "Apply settings to this device", + "P2P.SyncAlreadyRunning": "P2P Sync is already running.", + "Ui.SetupWizard.Common.AdvancedSettings": "Advanced Settings", + "The minimum interval for automatic synchronisation on event.": "The minimum interval for automatic synchronisation on event.", + "Doctor.Message.NoIssues": "No issues detected!", + "K.ScanCustomization": "Scan customization", + "dialog.yourLanguageAvailable": "Self-hosted LiveSync had translations for your language, so the %{Display language} setting was enabled.\n\nNote: Not all messages are translated. We are waiting for your contributions!\nNote 2: If you create an Issue, **please revert to %{lang-def}** and then take screenshots, messages and logs. This can be done in the setting dialogue.\nMay you find it easy to use!", + "Ui.UseSetupURI.ButtonCancel": "Cancel", + "Setup.ShowQRCode.Desc": "Show QR code to transfer the settings.", + "Ui.SetupWizard.Fetch.BackupUnableWarning": "It is strongly advised to create a backup before proceeding. Continuing without a backup may lead to data loss.", + "moduleMigration.fix0256.message": "Due to a recent bug (in v0.25.6), some files may not have been saved correctly in the sync database.\nWe have scanned our files and found some that need to be fixed.\n\n**Files ready to be fixed:**\n\n${files}\n\nThese files have size-matched original file on the storage, and are likely to be recoverable.\nWe can use them to fix the database, please click the \"Fix\" button below to fix them.\n\n${messageUnrecoverable}\n\nIf you want to run it again, you can do so from Hatch.\n", + "Ui.UseSetupURI.ButtonProceed": "Test Settings and Continue", + "Ui.SetupWizard.Common.ExperimentalSettings": "Experimental Settings", + "obsidianLiveSyncSettingTab.titleActiveRemoteServer": "Active Remote Server", + "Minimum interval for syncing": "Minimum interval for syncing", + "Ui.SetupWizard.Fetch.VaultUnbalancedDesc": "(e.g., after editing many files whilst offline)", + "Setup.Apply.Title": "Apply new configuration from the ${method}", + "Doctor.Button.Fix": "Fix it", + "RedFlag.FetchRemoteConfig.Buttons.Cancel": "No, use local settings", + "Ui.ScanQRCode.Step4": "On this device, switch to the camera app or use a QR code scanner to scan the displayed QR code.", + "lang-ko": "한국어", + "moduleMigration.fix0256.title": "Broken files has been detected", + "TweakMismatchResolve.Action.UseRemoteWithRebuild": "Apply settings to this device, and fetch again", + "Setting.TroubleShooting.Doctor": "Setting Doctor", + "Ui.SetupWizard.Fetch.VaultIndependent": "This Vault is empty, or contains only new files that are not on the server.", + "obsidianLiveSyncSettingTab.errEnableCorsChttpd": "❗ chttpd.enable_cors is wrong" } \ No newline at end of file diff --git a/src/common/messagesJson/ja.json b/src/common/messagesJson/ja.json index e1a5eef8..9d194e11 100644 --- a/src/common/messagesJson/ja.json +++ b/src/common/messagesJson/ja.json @@ -744,5 +744,101 @@ "Ui.Settings.SyncSettings.Fetch": "Fetch", "Ui.Settings.SyncSettings.Merge": "Merge", "Ui.Settings.SyncSettings.Overwrite": "Overwrite", - "obsidianLiveSyncSettingTab.logServerConfigurationCheck": "Log Server Configuration Check" + "obsidianLiveSyncSettingTab.logServerConfigurationCheck": "Log Server Configuration Check", + "Ui.SetupWizard.Fetch.PreventFetchConfig": "Prevent fetching configuration from server", + "Ui.UseSetupURI.LabelPassphrase": "Passphrase", + "Ui.SetupWizard.Rebuild.Guidance": "This procedure will first delete all existing synchronisation data from the server. Following this, the server data will be completely rebuilt, using the current state of your Vault on this device as the single, authoritative master copy.", + "Ui.SetupWizard.Fetch.ImportantBody": "If you have unsynchronised changes in your Vault on this device, they will likely diverge from the server's versions after the reset. This may result in a large number of file conflicts.", + "Ui.RemoteE2EE.MultiDestinationWarning": "This setting must be the same even when connecting to multiple synchronisation destinations.", + "Ui.SetupWizard.CouchDB.Title": "CouchDB Configuration", + "Ui.ScanQRCode.Guidance": "Please follow the steps below to import settings from your existing device.", + "Ui.RemoteE2EE.ManualWarning": "Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences. This is a security measure designed to protect your data.", + "Ui.ScanQRCode.ButtonClose": "Close this dialog", + "Ui.UseSetupURI.Title": "Enter Setup URI", + "Ui.UseSetupURI.ErrorFailedToParse": "Failed to parse Setup-URI.", + "Ui.UseSetupURI.Label": "Setup-URI", + "Ui.SetupWizard.Common.ContinueAnyway": "Continue anyway", + "Ui.SetupWizard.Rebuild.BackupDone": "I have created a backup of my Vault.", + "Ui.SetupWizard.P2P.UseDefaultRelay": "Use vrtmrz's relay", + "Ui.P2P.Guidance": "Please enter the Peer-to-Peer Synchronisation information below.", + "Ui.RemoteE2EE.LabelEncryptionAlgorithm": "Encryption Algorithm", + "Ui.RemoteE2EE.WarningSameSetting": "This setting must be the same even when connecting to multiple synchronisation destinations.", + "Ui.Bucket.Guidance": "Please enter the details required to connect to your S3/MinIO/R2 compatible object storage service.", + "Ui.UseSetupURI.ValidMessage": "The Setup-URI is valid and ready to use.", + "Ui.SetupWizard.Rebuild.BackupBeforeProceeding": "Of course, we can back up the data before proceeding.", + "Property Encryption": "Property Encryption", + "Ui.SetupWizard.Common.HttpsOnlyMobile": "We can use only Secure (HTTPS) connections on Obsidian Mobile.", + "Ui.SetupWizard.Rebuild.PreventFetchConfig": "Prevent fetching configuration from server", + "Ui.CouchDB.Guidance": "Please enter the CouchDB server information below.", + "Ui.UseSetupURI.PlaceholderPassphrase": "Enter your passphrase", + "Ui.SetupWizard.Rebuild.BackupUnable": "I am unable to create a backup of my Vaults.", + "Analyse": "Analyse", + "Ui.SetupWizard.Rebuild.BackupQuestion": "Have you created a backup before proceeding?", + "Ui.SetupWizard.Rebuild.WhenToUse": "You should perform this operation only in exceptional circumstances, such as when the server data is completely corrupted, when changes on all other devices are no longer needed, or when the database size has become unusually large in comparison to the Vault size.", + "Ui.RemoteE2EE.PlaceholderPassphrase": "Enter your passphrase", + "Ui.RemoteE2EE.StronglyRecommendedLine1": "Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server.", + "Ui.ScanQRCode.Step2": "On the source device, open Obsidian.", + "Ui.RemoteE2EE.LabelObfuscateProperties": "Obfuscate Properties", + "Ui.RemoteE2EE.PassphraseValidationLine1": "Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences.", + "Ui.RemoteE2EE.DefaultAlgorithmDesc": "In most cases, you should stick with the default algorithm.", + "Ui.SetupWizard.Fetch.BackupRecommendation": "We recommend that you copy your Vault folder to a safe location. This will provide a safeguard in case a large number of conflicts arise, or if you accidentally synchronise with an incorrect destination.", + "Ui.RemoteE2EE.ButtonProceed": "Proceed", + "Ui.UseSetupURI.Guidance": "Please enter the Setup URI that was generated during server installation or on another device, along with the vault passphrase.", + "Ui.RemoteE2EE.AdvancedTitle": "Advanced", + "Ui.SetupWizard.Fetch.ImportantTitle": "Important Notice", + "Ui.SetupWizard.Fetch.UnbalancedNote": "In this scenario, Self-hosted LiveSync will recreate metadata for every file and deliberately generate conflicts. Where the file content is identical, these conflicts will be resolved automatically.", + "Ui.SetupWizard.Fetch.BackupQuestion": "Have you created a backup before proceeding?", + "Ui.RemoteE2EE.ObfuscatePropertiesDesc": "Obfuscating properties adds an additional layer of security by making it harder to identify the structure and names of your files and folders on the remote server.", + "Ui.SetupWizard.Rebuild.BackupWarning": "This is an extremely powerful operation. We strongly recommend that you copy your Vault folder to a safe location.", + "Ui.RemoteE2EE.StronglyRecommended": "Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server. This means that even if someone gains access to the server, they won't be able to read your data without the passphrase.", + "Ui.SetupWizard.CouchDBCheck.DetectAndFix": "Detect and Fix CouchDB Issues", + "Ui.SetupWizard.Fetch.VaultUnbalanced": "There may be differences between the files in this Vault and the server.", + "Ui.ScanQRCode.Title": "Scan QR Code", + "Ui.SetupWizard.Bucket.Title": "S3/MinIO/R2 Configuration", + "Ui.SetupWizard.Fetch.BackupDone": "I have created a backup of my Vault.", + "Ui.SetupWizard.Rebuild.BackupUnableAdvice": "You should create a new synchronisation destination and rebuild your data there. After that, synchronise to a brand new vault on each other device with the new remote one by one.", + "Ui.SetupWizard.Rebuild.ConfirmTitle": "Please Confirm the Following", + "Ui.SetupWizard.Fetch.Proceed": "Reset and Resume Synchronisation", + "Ui.SetupWizard.Rebuild.ResolveOnOtherDevices": "There is a way to resolve this on other devices.", + "Ui.SetupWizard.Rebuild.ConfirmDataLoss": "I understand that all changes made on other smartphones or computers possibly could be lost.", + "Ui.SetupWizard.Rebuild.ResetNotifyOtherDevices": "by resetting the remote, you will be informed on other devices.", + "Ui.SetupWizard.Fetch.VaultIdenticalDesc": "(e.g., immediately after restoring on another computer, or having recovered from a backup)", + "Ui.RemoteE2EE.PassphraseValidationLine2": "Therefore, we ask that you exercise extreme caution when configuring server information manually.", + "Ui.UseSetupURI.InvalidInfo": "The Setup-URI does not appear to be valid. Please check that you have copied it correctly.", + "Ui.SetupWizard.Fetch.BackupUnableNote": "If you understand the risks and still wish to proceed, select so.", + "Ui.RemoteE2EE.AlgorithmWarning": "Changing the encryption algorithm will prevent access to any data previously encrypted with a different algorithm.", + "Ui.SetupWizard.CouchDBCheck.Fix": "Fix", + "Ui.SetupWizard.Fetch.Title": "Reset Synchronisation on This Device", + "Ui.SetupWizard.Rebuild.ConfirmIrreversible": "I understand that this action is irreversible once performed.", + "Ui.RemoteE2EE.Guidance": "Please configure your end-to-end encryption settings.", + "Ui.SetupWizard.Fetch.Guidance": "This will rebuild the local database on this device using the most recent data from the server. This action is designed to resolve synchronisation inconsistencies and restore correct functionality.", + "Ui.ScanQRCode.Step3": "On the source device, from the command palette, run the 'Show settings as a QR code' command.", + "Ui.SetupWizard.Fetch.VaultIdentical": "The files in this Vault are almost identical to the server's.", + "Ui.SetupWizard.Rebuild.ConfirmSyncDisabled": "I understand that other devices will no longer be able to synchronise, and will need to be reset the synchronisation information.", + "Ui.SetupWizard.Fetch.VaultQuestion": "To minimise the creation of new conflicts, please select the option that best describes the current state of your Vault. The application will then check your files in the most appropriate way based on your selection.", + "Ui.RemoteE2EE.ButtonCancel": "Cancel", + "Ui.SetupWizard.Rebuild.Title": "Final Confirmation: Overwrite Server Data with This Device's Files", + "Ui.RemoteE2EE.StronglyRecommendedTitle": "Strongly Recommended", + "Ui.RemoteE2EE.LabelEncrypt": "End-to-End Encryption", + "Ui.SetupWizard.Rebuild.Proceed": "I Understand, Overwrite Server", + "Ui.ScanQRCode.Step1": "On this device, please keep this Vault open.", + "Ui.SetupWizard.Rebuild.BackupSkipped": "I understand the risks and will proceed without a backup.", + "Ui.SetupWizard.Fetch.ConflictNote": "Furthermore, if conflicts are already present in the server data, they will be synchronised to this device as they are, and you will need to resolve them locally.", + "Active Remote Configuration": "Active Remote Configuration", + "Ui.UseSetupURI.ErrorPassphraseRequired": "Passphrase is required.", + "Ui.SetupWizard.Fetch.VaultIndependentDesc": "(e.g., setting up for the first time on a new smartphone, starting from a clean slate)", + "Ui.SetupWizard.P2P.Title": "P2P Configuration", + "Ui.ScanQRCode.Instruction": "Please follow the steps below to import settings from your existing device.", + "Ui.RemoteE2EE.Title": "End-to-End Encryption", + "Ui.SetupWizard.Fetch.BackupUnable": "I am unable to create a backup of my Vault.", + "Ui.SetupWizard.Fetch.BackupSkipped": "I understand the risks and will proceed without a backup.", + "Ui.RemoteE2EE.StronglyRecommendedLine2": "Also, please note that if you are using Peer-to-Peer synchronization, this configuration will be used when you switch to other methods and connect to a remote server in the future.", + "Ui.SetupWizard.Common.AdvancedSettings": "Advanced Settings", + "Ui.UseSetupURI.ButtonCancel": "Cancel", + "Ui.SetupWizard.Fetch.BackupUnableWarning": "It is strongly advised to create a backup before proceeding. Continuing without a backup may lead to data loss.", + "Ui.UseSetupURI.ButtonProceed": "Test Settings and Continue", + "Ui.SetupWizard.Common.ExperimentalSettings": "Experimental Settings", + "Ui.SetupWizard.Fetch.VaultUnbalancedDesc": "(e.g., after editing many files whilst offline)", + "Ui.ScanQRCode.Step4": "On this device, switch to the camera app or use a QR code scanner to scan the displayed QR code.", + "Ui.SetupWizard.Fetch.VaultIndependent": "This Vault is empty, or contains only new files that are not on the server." } \ No newline at end of file diff --git a/src/common/messagesJson/ko.json b/src/common/messagesJson/ko.json index bbfaa0cf..d5dd36a7 100644 --- a/src/common/messagesJson/ko.json +++ b/src/common/messagesJson/ko.json @@ -707,5 +707,138 @@ "Ui.Settings.SyncSettings.Fetch": "Fetch", "Ui.Settings.SyncSettings.Merge": "Merge", "Ui.Settings.SyncSettings.Overwrite": "Overwrite", - "obsidianLiveSyncSettingTab.logServerConfigurationCheck": "Log Server Configuration Check" + "obsidianLiveSyncSettingTab.logServerConfigurationCheck": "Log Server Configuration Check", + "Ui.SetupWizard.Fetch.PreventFetchConfig": "Prevent fetching configuration from server", + "Ui.UseSetupURI.LabelPassphrase": "Passphrase", + "Ui.SetupWizard.Rebuild.Guidance": "This procedure will first delete all existing synchronisation data from the server. Following this, the server data will be completely rebuilt, using the current state of your Vault on this device as the single, authoritative master copy.", + "Ui.SetupWizard.Fetch.ImportantBody": "If you have unsynchronised changes in your Vault on this device, they will likely diverge from the server's versions after the reset. This may result in a large number of file conflicts.", + "Ui.RemoteE2EE.MultiDestinationWarning": "This setting must be the same even when connecting to multiple synchronisation destinations.", + "Setup.Doctor.Buttons.No": "No, please use the settings in the URI as is", + "Ui.SetupWizard.CouchDB.Title": "CouchDB Configuration", + "Doctor.RULES.E2EE_V02500.REASON": "The End-to-End Encryption has got now more robust and faster. Also because, the previous E2EE was found to be compromised in a re-conducted code review. It should be applied as soon as possible. Really apologises for your inconvenience. And, this setting is not forward compatible. All synchronised devices must be updated to v0.25.0 or higher. Rebuilds are not required and will be converted from the new transfer to the new format, However, it is recommended to rebuild whenever possible.", + "Ui.ScanQRCode.Guidance": "Please follow the steps below to import settings from your existing device.", + "Ui.RemoteE2EE.ManualWarning": "Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences. This is a security measure designed to protect your data.", + "Ui.ScanQRCode.ButtonClose": "Close this dialog", + "Ui.UseSetupURI.Title": "Enter Setup URI", + "Ui.UseSetupURI.ErrorFailedToParse": "Failed to parse Setup-URI.", + "Setup.FetchRemoteConf.Message": "If we have already synchronised once with another device, the remote database stores the suitable configuration values between the synchronised devices. The plug-in would like to retrieve them for robust configuration.\n\nHowever, we have to make sure the one thing. Are we currently in a situation where we can access the network safely and retrieve the settings?\n\nNote: Mostly, you are safe to do this, that your remote database is hosted with a SSL certificate, and your network is not compromised.", + "Ui.UseSetupURI.Label": "Setup-URI", + "obsidianLiveSyncSettingTab.serverVersion": "Server info: ${info}", + "Ui.SetupWizard.Common.ContinueAnyway": "Continue anyway", + "Ui.SetupWizard.Rebuild.BackupDone": "I have created a backup of my Vault.", + "Ui.SetupWizard.P2P.UseDefaultRelay": "Use vrtmrz's relay", + "Ui.P2P.Guidance": "Please enter the Peer-to-Peer Synchronisation information below.", + "Ui.RemoteE2EE.LabelEncryptionAlgorithm": "Encryption Algorithm", + "moduleMigration.insecureChunkExist.buttons.fetch": "I already rebuilt the remote. Fetch from the remote", + "Ui.RemoteE2EE.WarningSameSetting": "This setting must be the same even when connecting to multiple synchronisation destinations.", + "Setup.FetchRemoteConf.Title": "Fetch configuration from remote database?", + "Ui.Bucket.Guidance": "Please enter the details required to connect to your S3/MinIO/R2 compatible object storage service.", + "Ui.UseSetupURI.ValidMessage": "The Setup-URI is valid and ready to use.", + "Ui.SetupWizard.Rebuild.BackupBeforeProceeding": "Of course, we can back up the data before proceeding.", + "Property Encryption": "Property Encryption", + "moduleMigration.fix0256.messageUnrecoverable": "**Files cannot be fixed on this device:**\n\n${filesNotRecoverable}\n\nThese files have inconsistent metadata, and cannot be fixed on this device (mostly we cannot determine which is correct).\nTo restore them, please check your other devices (also by this feature) or restore them manually from a backup.\n", + "Ui.SetupWizard.Common.HttpsOnlyMobile": "We can use only Secure (HTTPS) connections on Obsidian Mobile.", + "Ui.SetupWizard.Rebuild.PreventFetchConfig": "Prevent fetching configuration from server", + "Setup.Apply.Message": "The new configuration is ready. Let us proceed to apply it.\nThere are several ways to apply this:\n\n- Apply and Fetch\n Configure this device as a new client. After applying, synchronise from the remote server.\n- Apply and Merge\n Configure on a device that already has the file. It processes the local files and transfers the differences. Conflicts may arise.\n- Apply and Rebuild\n Rebuild the remote using local files. This is typically done if the server becomes corrupted or we wish to start from scratch.\n Other devices will be locked and required to re-fetch.\n- Only Apply\n Apply only. Conflicts may arise if a rebuild is required.", + "Ui.CouchDB.Guidance": "Please enter the CouchDB server information below.", + "Ui.UseSetupURI.PlaceholderPassphrase": "Enter your passphrase", + "Ui.SetupWizard.Rebuild.BackupUnable": "I am unable to create a backup of my Vaults.", + "moduleMigration.fix0256.buttons.checkItLater": "Check it later", + "Analyse": "Analyse", + "Ui.SetupWizard.Rebuild.BackupQuestion": "Have you created a backup before proceeding?", + "moduleMigration.insecureChunkExist.buttons.rebuild": "Rebuild Everything", + "Ui.SetupWizard.Rebuild.WhenToUse": "You should perform this operation only in exceptional circumstances, such as when the server data is completely corrupted, when changes on all other devices are no longer needed, or when the database size has become unusually large in comparison to the Vault size.", + "Setup.Apply.Buttons.Cancel": "Discard and Cancel", + "Ui.RemoteE2EE.PlaceholderPassphrase": "Enter your passphrase", + "obsidianLiveSyncSettingTab.okEnableCorsChttpd": "✔ chttpd.enable_cors is ok.", + "Ui.RemoteE2EE.StronglyRecommendedLine1": "Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server.", + "moduleMigration.fix0256.buttons.DismissForever": "I have fixed it, and do not ask again", + "Setup.Apply.Buttons.ApplyAndRebuild": "Apply and Rebuild", + "moduleMigration.insecureChunkExist.buttons.later": "I will do it later", + "Ui.ScanQRCode.Step2": "On the source device, open Obsidian.", + "Ui.RemoteE2EE.LabelObfuscateProperties": "Obfuscate Properties", + "Ui.RemoteE2EE.PassphraseValidationLine1": "Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences.", + "Ui.RemoteE2EE.DefaultAlgorithmDesc": "In most cases, you should stick with the default algorithm.", + "Ui.SetupWizard.Fetch.BackupRecommendation": "We recommend that you copy your Vault folder to a safe location. This will provide a safeguard in case a large number of conflicts arise, or if you accidentally synchronise with an incorrect destination.", + "Ui.RemoteE2EE.ButtonProceed": "Proceed", + "Ui.UseSetupURI.Guidance": "Please enter the Setup URI that was generated during server installation or on another device, along with the vault passphrase.", + "Ui.RemoteE2EE.AdvancedTitle": "Advanced", + "Ui.SetupWizard.Fetch.ImportantTitle": "Important Notice", + "Setup.FetchRemoteConf.Buttons.Fetch": "Yes, please fetch the configuration", + "Ui.SetupWizard.Fetch.UnbalancedNote": "In this scenario, Self-hosted LiveSync will recreate metadata for every file and deliberately generate conflicts. Where the file content is identical, these conflicts will be resolved automatically.", + "Ui.SetupWizard.Fetch.BackupQuestion": "Have you created a backup before proceeding?", + "Setup.Apply.Buttons.OnlyApply": "Only Apply", + "moduleMigration.insecureChunkExist.title": "Insecure chunks found!", + "Ui.RemoteE2EE.ObfuscatePropertiesDesc": "Obfuscating properties adds an additional layer of security by making it harder to identify the structure and names of your files and folders on the remote server.", + "Ui.SetupWizard.Rebuild.BackupWarning": "This is an extremely powerful operation. We strongly recommend that you copy your Vault folder to a safe location.", + "Ui.RemoteE2EE.StronglyRecommended": "Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server. This means that even if someone gains access to the server, they won't be able to read your data without the passphrase.", + "Ui.SetupWizard.CouchDBCheck.DetectAndFix": "Detect and Fix CouchDB Issues", + "RedFlag.FetchRemoteConfig.Message": "Do you want to fetch and apply remotely stored preference settings to the device?", + "Ui.SetupWizard.Fetch.VaultUnbalanced": "There may be differences between the files in this Vault and the server.", + "Ui.ScanQRCode.Title": "Scan QR Code", + "moduleMigration.insecureChunkExist.message": "Some chunks are not securely stored and are not encrypted in databases.\n**Please rebuild the database to fix this issue**.\n\nIf your Remote Database is not configured with SSL, or using less-secure credentials, **you are at risk of exposing sensitive data**.\n\nNote: Please upgrade your Self-hosted LiveSync v0.25.6 or higher on all your devices, and back your vault up surely.\nNote2: Rebuild Everything and Fetch consumes a bit of time and traffic, please do it in off-peak hours and ensure a stable network connection.\n", + "Ui.SetupWizard.Bucket.Title": "S3/MinIO/R2 Configuration", + "Ui.SetupWizard.Fetch.BackupDone": "I have created a backup of my Vault.", + "Ui.SetupWizard.Rebuild.BackupUnableAdvice": "You should create a new synchronisation destination and rebuild your data there. After that, synchronise to a brand new vault on each other device with the new remote one by one.", + "Ui.SetupWizard.Rebuild.ConfirmTitle": "Please Confirm the Following", + "Ui.SetupWizard.Fetch.Proceed": "Reset and Resume Synchronisation", + "Setup.Apply.WarningRebuildRecommended": "NOTE: after adjusting the settings, it has been determined that a rebuild is required; Just Import is not recommended.", + "Ui.SetupWizard.Rebuild.ResolveOnOtherDevices": "There is a way to resolve this on other devices.", + "Ui.SetupWizard.Rebuild.ConfirmDataLoss": "I understand that all changes made on other smartphones or computers possibly could be lost.", + "Ui.SetupWizard.Rebuild.ResetNotifyOtherDevices": "by resetting the remote, you will be informed on other devices.", + "Ui.SetupWizard.Fetch.VaultIdenticalDesc": "(e.g., immediately after restoring on another computer, or having recovered from a backup)", + "Setup.FetchRemoteConf.Buttons.Skip": "No, please use the settings in the URI", + "Ui.RemoteE2EE.PassphraseValidationLine2": "Therefore, we ask that you exercise extreme caution when configuring server information manually.", + "Ui.UseSetupURI.InvalidInfo": "The Setup-URI does not appear to be valid. Please check that you have copied it correctly.", + "Ui.SetupWizard.Fetch.BackupUnableNote": "If you understand the risks and still wish to proceed, select so.", + "Ui.RemoteE2EE.AlgorithmWarning": "Changing the encryption algorithm will prevent access to any data previously encrypted with a different algorithm.", + "Ui.SetupWizard.CouchDBCheck.Fix": "Fix", + "Ui.SetupWizard.Fetch.Title": "Reset Synchronisation on This Device", + "Ui.SetupWizard.Rebuild.ConfirmIrreversible": "I understand that this action is irreversible once performed.", + "Ui.RemoteE2EE.Guidance": "Please configure your end-to-end encryption settings.", + "Ui.SetupWizard.Fetch.Guidance": "This will rebuild the local database on this device using the most recent data from the server. This action is designed to resolve synchronisation inconsistencies and restore correct functionality.", + "Ui.ScanQRCode.Step3": "On the source device, from the command palette, run the 'Show settings as a QR code' command.", + "Ui.SetupWizard.Fetch.VaultIdentical": "The files in this Vault are almost identical to the server's.", + "Ui.SetupWizard.Rebuild.ConfirmSyncDisabled": "I understand that other devices will no longer be able to synchronise, and will need to be reset the synchronisation information.", + "Ui.SetupWizard.Fetch.VaultQuestion": "To minimise the creation of new conflicts, please select the option that best describes the current state of your Vault. The application will then check your files in the most appropriate way based on your selection.", + "Ui.RemoteE2EE.ButtonCancel": "Cancel", + "Setup.Apply.Buttons.ApplyAndFetch": "Apply and Fetch", + "Ui.SetupWizard.Rebuild.Title": "Final Confirmation: Overwrite Server Data with This Device's Files", + "RedFlag.FetchRemoteConfig.Buttons.Fetch": "Yes, fetch and apply remote settings", + "moduleMigration.insecureChunkExist.laterMessage": "We strongly recommend to treat this as soon as possible!", + "Ui.RemoteE2EE.StronglyRecommendedTitle": "Strongly Recommended", + "Ui.RemoteE2EE.LabelEncrypt": "End-to-End Encryption", + "Ui.SetupWizard.Rebuild.Proceed": "I Understand, Overwrite Server", + "Ui.ScanQRCode.Step1": "On this device, please keep this Vault open.", + "Ui.SetupWizard.Rebuild.BackupSkipped": "I understand the risks and will proceed without a backup.", + "Ui.SetupWizard.Fetch.ConflictNote": "Furthermore, if conflicts are already present in the server data, they will be synchronised to this device as they are, and you will need to resolve them locally.", + "Active Remote Configuration": "Active Remote Configuration", + "Ui.UseSetupURI.ErrorPassphraseRequired": "Passphrase is required.", + "Setup.Doctor.Message": "Self-hosted LiveSync has gradually become longer in history and some recommended settings have changed.\n\nNow, setup is a very good time to do this.\n\nDo you want to run Doctor to check if the imported settings are optimal compared to the latest state?", + "Setup.Doctor.Title": "Do you want to consult the doctor?", + "Setup.Apply.Buttons.ApplyAndMerge": "Apply and Merge", + "Ui.SetupWizard.Fetch.VaultIndependentDesc": "(e.g., setting up for the first time on a new smartphone, starting from a clean slate)", + "Ui.SetupWizard.P2P.Title": "P2P Configuration", + "Ui.ScanQRCode.Instruction": "Please follow the steps below to import settings from your existing device.", + "RedFlag.FetchRemoteConfig.Title": "Fetch Remote Configuration", + "Ui.RemoteE2EE.Title": "End-to-End Encryption", + "Ui.SetupWizard.Fetch.BackupUnable": "I am unable to create a backup of my Vault.", + "obsidianLiveSyncSettingTab.msgEnableCorsChttpd": "Set chttpd.enable_cors", + "Setup.Doctor.Buttons.Yes": "Yes, please consult the doctor", + "Ui.SetupWizard.Fetch.BackupSkipped": "I understand the risks and will proceed without a backup.", + "Ui.RemoteE2EE.StronglyRecommendedLine2": "Also, please note that if you are using Peer-to-Peer synchronization, this configuration will be used when you switch to other methods and connect to a remote server in the future.", + "Ui.SetupWizard.Common.AdvancedSettings": "Advanced Settings", + "Ui.UseSetupURI.ButtonCancel": "Cancel", + "Ui.SetupWizard.Fetch.BackupUnableWarning": "It is strongly advised to create a backup before proceeding. Continuing without a backup may lead to data loss.", + "moduleMigration.fix0256.message": "Due to a recent bug (in v0.25.6), some files may not have been saved correctly in the sync database.\nWe have scanned our files and found some that need to be fixed.\n\n**Files ready to be fixed:**\n\n${files}\n\nThese files have size-matched original file on the storage, and are likely to be recoverable.\nWe can use them to fix the database, please click the \"Fix\" button below to fix them.\n\n${messageUnrecoverable}\n\nIf you want to run it again, you can do so from Hatch.\n", + "Ui.UseSetupURI.ButtonProceed": "Test Settings and Continue", + "Ui.SetupWizard.Common.ExperimentalSettings": "Experimental Settings", + "obsidianLiveSyncSettingTab.titleActiveRemoteServer": "Active Remote Server", + "Ui.SetupWizard.Fetch.VaultUnbalancedDesc": "(e.g., after editing many files whilst offline)", + "Setup.Apply.Title": "Apply new configuration from the ${method}", + "RedFlag.FetchRemoteConfig.Buttons.Cancel": "No, use local settings", + "Ui.ScanQRCode.Step4": "On this device, switch to the camera app or use a QR code scanner to scan the displayed QR code.", + "moduleMigration.fix0256.title": "Broken files has been detected", + "Ui.SetupWizard.Fetch.VaultIndependent": "This Vault is empty, or contains only new files that are not on the server.", + "obsidianLiveSyncSettingTab.errEnableCorsChttpd": "❗ chttpd.enable_cors is wrong" } \ No newline at end of file diff --git a/src/common/messagesJson/ru.json b/src/common/messagesJson/ru.json index 703fc60f..134e1916 100644 --- a/src/common/messagesJson/ru.json +++ b/src/common/messagesJson/ru.json @@ -766,5 +766,98 @@ "Ui.Settings.SyncSettings.Fetch": "Fetch", "Ui.Settings.SyncSettings.Merge": "Merge", "Ui.Settings.SyncSettings.Overwrite": "Overwrite", - "obsidianLiveSyncSettingTab.logServerConfigurationCheck": "Log Server Configuration Check" + "obsidianLiveSyncSettingTab.logServerConfigurationCheck": "Log Server Configuration Check", + "Ui.SetupWizard.Fetch.PreventFetchConfig": "Prevent fetching configuration from server", + "Ui.UseSetupURI.LabelPassphrase": "Passphrase", + "Ui.SetupWizard.Rebuild.Guidance": "This procedure will first delete all existing synchronisation data from the server. Following this, the server data will be completely rebuilt, using the current state of your Vault on this device as the single, authoritative master copy.", + "Ui.SetupWizard.Fetch.ImportantBody": "If you have unsynchronised changes in your Vault on this device, they will likely diverge from the server's versions after the reset. This may result in a large number of file conflicts.", + "Ui.RemoteE2EE.MultiDestinationWarning": "This setting must be the same even when connecting to multiple synchronisation destinations.", + "Ui.SetupWizard.CouchDB.Title": "CouchDB Configuration", + "Ui.ScanQRCode.Guidance": "Please follow the steps below to import settings from your existing device.", + "Ui.RemoteE2EE.ManualWarning": "Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences. This is a security measure designed to protect your data.", + "Ui.ScanQRCode.ButtonClose": "Close this dialog", + "Ui.UseSetupURI.Title": "Enter Setup URI", + "Ui.UseSetupURI.ErrorFailedToParse": "Failed to parse Setup-URI.", + "Ui.UseSetupURI.Label": "Setup-URI", + "Ui.SetupWizard.Common.ContinueAnyway": "Continue anyway", + "Ui.SetupWizard.Rebuild.BackupDone": "I have created a backup of my Vault.", + "Ui.SetupWizard.P2P.UseDefaultRelay": "Use vrtmrz's relay", + "Ui.P2P.Guidance": "Please enter the Peer-to-Peer Synchronisation information below.", + "Ui.RemoteE2EE.LabelEncryptionAlgorithm": "Encryption Algorithm", + "Ui.RemoteE2EE.WarningSameSetting": "This setting must be the same even when connecting to multiple synchronisation destinations.", + "Ui.Bucket.Guidance": "Please enter the details required to connect to your S3/MinIO/R2 compatible object storage service.", + "Ui.UseSetupURI.ValidMessage": "The Setup-URI is valid and ready to use.", + "Ui.SetupWizard.Rebuild.BackupBeforeProceeding": "Of course, we can back up the data before proceeding.", + "Ui.SetupWizard.Common.HttpsOnlyMobile": "We can use only Secure (HTTPS) connections on Obsidian Mobile.", + "Ui.SetupWizard.Rebuild.PreventFetchConfig": "Prevent fetching configuration from server", + "Ui.CouchDB.Guidance": "Please enter the CouchDB server information below.", + "Ui.UseSetupURI.PlaceholderPassphrase": "Enter your passphrase", + "Ui.SetupWizard.Rebuild.BackupUnable": "I am unable to create a backup of my Vaults.", + "Ui.SetupWizard.Rebuild.BackupQuestion": "Have you created a backup before proceeding?", + "Ui.SetupWizard.Rebuild.WhenToUse": "You should perform this operation only in exceptional circumstances, such as when the server data is completely corrupted, when changes on all other devices are no longer needed, or when the database size has become unusually large in comparison to the Vault size.", + "Ui.RemoteE2EE.PlaceholderPassphrase": "Enter your passphrase", + "Ui.RemoteE2EE.StronglyRecommendedLine1": "Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server.", + "Ui.ScanQRCode.Step2": "On the source device, open Obsidian.", + "Ui.RemoteE2EE.LabelObfuscateProperties": "Obfuscate Properties", + "Ui.RemoteE2EE.PassphraseValidationLine1": "Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences.", + "Ui.RemoteE2EE.DefaultAlgorithmDesc": "In most cases, you should stick with the default algorithm.", + "Ui.SetupWizard.Fetch.BackupRecommendation": "We recommend that you copy your Vault folder to a safe location. This will provide a safeguard in case a large number of conflicts arise, or if you accidentally synchronise with an incorrect destination.", + "Ui.RemoteE2EE.ButtonProceed": "Proceed", + "Ui.UseSetupURI.Guidance": "Please enter the Setup URI that was generated during server installation or on another device, along with the vault passphrase.", + "Ui.RemoteE2EE.AdvancedTitle": "Advanced", + "Ui.SetupWizard.Fetch.ImportantTitle": "Important Notice", + "Ui.SetupWizard.Fetch.UnbalancedNote": "In this scenario, Self-hosted LiveSync will recreate metadata for every file and deliberately generate conflicts. Where the file content is identical, these conflicts will be resolved automatically.", + "Ui.SetupWizard.Fetch.BackupQuestion": "Have you created a backup before proceeding?", + "Ui.RemoteE2EE.ObfuscatePropertiesDesc": "Obfuscating properties adds an additional layer of security by making it harder to identify the structure and names of your files and folders on the remote server.", + "Ui.SetupWizard.Rebuild.BackupWarning": "This is an extremely powerful operation. We strongly recommend that you copy your Vault folder to a safe location.", + "Ui.RemoteE2EE.StronglyRecommended": "Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server. This means that even if someone gains access to the server, they won't be able to read your data without the passphrase.", + "Ui.SetupWizard.CouchDBCheck.DetectAndFix": "Detect and Fix CouchDB Issues", + "Ui.SetupWizard.Fetch.VaultUnbalanced": "There may be differences between the files in this Vault and the server.", + "Ui.ScanQRCode.Title": "Scan QR Code", + "Ui.SetupWizard.Bucket.Title": "S3/MinIO/R2 Configuration", + "Ui.SetupWizard.Fetch.BackupDone": "I have created a backup of my Vault.", + "Ui.SetupWizard.Rebuild.BackupUnableAdvice": "You should create a new synchronisation destination and rebuild your data there. After that, synchronise to a brand new vault on each other device with the new remote one by one.", + "Ui.SetupWizard.Rebuild.ConfirmTitle": "Please Confirm the Following", + "Ui.SetupWizard.Fetch.Proceed": "Reset and Resume Synchronisation", + "Ui.SetupWizard.Rebuild.ResolveOnOtherDevices": "There is a way to resolve this on other devices.", + "Ui.SetupWizard.Rebuild.ConfirmDataLoss": "I understand that all changes made on other smartphones or computers possibly could be lost.", + "Ui.SetupWizard.Rebuild.ResetNotifyOtherDevices": "by resetting the remote, you will be informed on other devices.", + "Ui.SetupWizard.Fetch.VaultIdenticalDesc": "(e.g., immediately after restoring on another computer, or having recovered from a backup)", + "Ui.RemoteE2EE.PassphraseValidationLine2": "Therefore, we ask that you exercise extreme caution when configuring server information manually.", + "Ui.UseSetupURI.InvalidInfo": "The Setup-URI does not appear to be valid. Please check that you have copied it correctly.", + "Ui.SetupWizard.Fetch.BackupUnableNote": "If you understand the risks and still wish to proceed, select so.", + "Ui.RemoteE2EE.AlgorithmWarning": "Changing the encryption algorithm will prevent access to any data previously encrypted with a different algorithm.", + "Ui.SetupWizard.CouchDBCheck.Fix": "Fix", + "Ui.SetupWizard.Fetch.Title": "Reset Synchronisation on This Device", + "Ui.SetupWizard.Rebuild.ConfirmIrreversible": "I understand that this action is irreversible once performed.", + "Ui.RemoteE2EE.Guidance": "Please configure your end-to-end encryption settings.", + "Ui.SetupWizard.Fetch.Guidance": "This will rebuild the local database on this device using the most recent data from the server. This action is designed to resolve synchronisation inconsistencies and restore correct functionality.", + "Ui.ScanQRCode.Step3": "On the source device, from the command palette, run the 'Show settings as a QR code' command.", + "Ui.SetupWizard.Fetch.VaultIdentical": "The files in this Vault are almost identical to the server's.", + "Ui.SetupWizard.Rebuild.ConfirmSyncDisabled": "I understand that other devices will no longer be able to synchronise, and will need to be reset the synchronisation information.", + "Ui.SetupWizard.Fetch.VaultQuestion": "To minimise the creation of new conflicts, please select the option that best describes the current state of your Vault. The application will then check your files in the most appropriate way based on your selection.", + "Ui.RemoteE2EE.ButtonCancel": "Cancel", + "Ui.SetupWizard.Rebuild.Title": "Final Confirmation: Overwrite Server Data with This Device's Files", + "Ui.RemoteE2EE.StronglyRecommendedTitle": "Strongly Recommended", + "Ui.RemoteE2EE.LabelEncrypt": "End-to-End Encryption", + "Ui.SetupWizard.Rebuild.Proceed": "I Understand, Overwrite Server", + "Ui.ScanQRCode.Step1": "On this device, please keep this Vault open.", + "Ui.SetupWizard.Rebuild.BackupSkipped": "I understand the risks and will proceed without a backup.", + "Ui.SetupWizard.Fetch.ConflictNote": "Furthermore, if conflicts are already present in the server data, they will be synchronised to this device as they are, and you will need to resolve them locally.", + "Ui.UseSetupURI.ErrorPassphraseRequired": "Passphrase is required.", + "Ui.SetupWizard.Fetch.VaultIndependentDesc": "(e.g., setting up for the first time on a new smartphone, starting from a clean slate)", + "Ui.SetupWizard.P2P.Title": "P2P Configuration", + "Ui.ScanQRCode.Instruction": "Please follow the steps below to import settings from your existing device.", + "Ui.RemoteE2EE.Title": "End-to-End Encryption", + "Ui.SetupWizard.Fetch.BackupUnable": "I am unable to create a backup of my Vault.", + "Ui.SetupWizard.Fetch.BackupSkipped": "I understand the risks and will proceed without a backup.", + "Ui.RemoteE2EE.StronglyRecommendedLine2": "Also, please note that if you are using Peer-to-Peer synchronization, this configuration will be used when you switch to other methods and connect to a remote server in the future.", + "Ui.SetupWizard.Common.AdvancedSettings": "Advanced Settings", + "Ui.UseSetupURI.ButtonCancel": "Cancel", + "Ui.SetupWizard.Fetch.BackupUnableWarning": "It is strongly advised to create a backup before proceeding. Continuing without a backup may lead to data loss.", + "Ui.UseSetupURI.ButtonProceed": "Test Settings and Continue", + "Ui.SetupWizard.Common.ExperimentalSettings": "Experimental Settings", + "Ui.SetupWizard.Fetch.VaultUnbalancedDesc": "(e.g., after editing many files whilst offline)", + "Ui.ScanQRCode.Step4": "On this device, switch to the camera app or use a QR code scanner to scan the displayed QR code.", + "Ui.SetupWizard.Fetch.VaultIndependent": "This Vault is empty, or contains only new files that are not on the server." } \ No newline at end of file diff --git a/src/common/messagesJson/zh-tw.json b/src/common/messagesJson/zh-tw.json index 91459fca..ecf7f159 100644 --- a/src/common/messagesJson/zh-tw.json +++ b/src/common/messagesJson/zh-tw.json @@ -169,5 +169,675 @@ "Ui.Settings.SyncSettings.Fetch": "Fetch", "Ui.Settings.SyncSettings.Merge": "Merge", "Ui.Settings.SyncSettings.Overwrite": "Overwrite", - "obsidianLiveSyncSettingTab.logServerConfigurationCheck": "Log Server Configuration Check" + "obsidianLiveSyncSettingTab.logServerConfigurationCheck": "Log Server Configuration Check", + "lang-ja": "日本語", + "obsidianLiveSyncSettingTab.msgDiscardConfirmation": "Do you really want to discard existing settings and databases?", + "Setting.GenerateKeyPair.Desc": "We have generated a key pair!\n\nNote: This key pair will never be shown again. Please save it in a safe place. If you have lost it, you need to generate a new key pair.\nNote 2: The public key is in spki format, and the Private key is in pkcs8 format. For the sake of convenience, newlines are converted to `\\n` in public key.\nNote 3: The public key should be configured in the remote database, and the private key should be configured in local devices.\n\n>[!FOR YOUR EYES ONLY]-\n>
\n>\n> ### Public Key\n> ```\n${public_key}\n> ```\n>\n> ### Private Key\n> ```\n${private_key}\n> ```\n>\n>
\n\n>[!Both for copying]-\n>\n>
\n>\n> ```\n${public_key}\n${private_key}\n> ```\n>\n>
\n\n", + "Ui.SetupWizard.Fetch.PreventFetchConfig": "Prevent fetching configuration from server", + "Doctor.Dialogue.Title": "Self-hosted LiveSync Config Doctor", + "moduleLiveSyncMain.logUnloadingPlugin": "Unloading plugin...", + "P2P.Note.Summary": "What is this feature? (and some important notes, please read once)", + "Ui.UseSetupURI.LabelPassphrase": "Passphrase", + "Do not split chunks in the background": "Do not split chunks in the background", + "obsidianLiveSyncSettingTab.optionPeriodicAndEvents": "Periodic and on events", + "Ui.SetupWizard.Fetch.ImportantBody": "If you have unsynchronised changes in your Vault on this device, they will likely diverge from the server's versions after the reset. This may result in a large number of file conflicts.", + "TweakMismatchResolve.Action.UseConfigured": "Use configured settings", + "obsidianLiveSyncSettingTab.titleRebuildRequired": "Rebuild Required", + "obsidianLiveSyncSettingTab.levelEdgeCase": " (Edge Case)", + "Access Key": "Access Key", + "liveSyncReplicator.lockRemoteDb": "Lock remote database to prevent data corruption", + "P2P.ReplicatorInstanceMissing": "P2P Sync replicator is not found, possibly not have been configured or enabled.", + "TweakMismatchResolve.Title.UseRemoteConfig": "Use Remote Configuration", + "Setting.TroubleShooting": "TroubleShooting", + "RedFlag.Fetch.Method.Title": "How do you want to fetch?", + "obsidianLiveSyncSettingTab.okCorsCredentialsForOrigin": "CORS credentials OK", + "Batch size": "Batch size", + "obsidianLiveSyncSettingTab.logCheckingConfigFailed": "Checking configuration failed", + "(ex. Read chunks online) If this option is enabled, LiveSync reads chunks online directly instead of replicating them locally. Increasing Custom chunk size is recommended.": "(ex. Read chunks online) If this option is enabled, LiveSync reads chunks online directly instead of replicating them locally. Increasing Custom chunk size is recommended.", + "Not all messages have been translated. And, please revert to \"Default\" when reporting errors.": "Not all messages have been translated. And, please revert to \"Default\" when reporting errors.", + "Setup.FetchRemoteConf.Message": "If we have already synchronised once with another device, the remote database stores the suitable configuration values between the synchronised devices. The plug-in would like to retrieve them for robust configuration.\n\nHowever, we have to make sure the one thing. Are we currently in a situation where we can access the network safely and retrieve the settings?\n\nNote: Mostly, you are safe to do this, that your remote database is hosted with a SSL certificate, and your network is not compromised.", + "Maximum Incubating Chunk Size": "Maximum Incubating Chunk Size", + "obsidianLiveSyncSettingTab.linkPageTop": "Page Top", + "obsidianLiveSyncSettingTab.logCouchDbConfigUpdated": "CouchDB Configuration: ${title} successfully updated", + "Replicator.Dialogue.Locked.Message.Fetch": "Fetch all has been scheduled. Plug-in will be restarted to perform it.", + "SettingTab.Message.AskRebuild": "Your changes require fetching from the remote database. Do you want to proceed?", + "(Days passed, 0 to disable automatic-deletion)": "(Days passed, 0 to disable automatic-deletion)", + "obsidianLiveSyncSettingTab.btnTest": "Test", + "Ui.SetupWizard.Rebuild.BackupDone": "I have created a backup of my Vault.", + "Automatically Sync all files when opening Obsidian.": "Automatically Sync all files when opening Obsidian.", + "obsidianLiveSyncSettingTab.titleDeletionPropagation": "Deletion Propagation", + "Scan customization automatically": "Scan customization automatically", + "obsidianLiveSyncSettingTab.optionLiveSync": "LiveSync", + "Ui.RemoteE2EE.LabelEncryptionAlgorithm": "Encryption Algorithm", + "moduleLiveSyncMain.titleScramEnabled": "Scram Enabled", + "obsidianLiveSyncSettingTab.titleQuickSetup": "Quick Setup", + "Replicator.Dialogue.Locked.Action.Unlock": "Unlock the remote database", + "Server URI": "Server URI", + "Show status as icons only": "Show status as icons only", + "Enhance chunk size": "Enhance chunk size", + "Always prompt merge conflicts": "Always prompt merge conflicts", + "Path Obfuscation": "Path Obfuscation", + "Rerun Wizard": "Rerun Wizard", + "K.P2P": "%{Peer}-to-%{Peer}", + "liveSyncReplicator.remoteDbCorrupted": "Remote database is newer or corrupted, make sure to latest version of self-hosted-livesync installed", + "P2P.SyncCompleted": "P2P Sync completed.", + "Passphrase of sensitive configuration items": "Passphrase of sensitive configuration items", + "Starts synchronisation when a file is saved.": "Starts synchronisation when a file is saved.", + "moduleInputUIObsidian.defaultTitleConfirmation": "Confirmation", + "moduleMigration.fix0256.messageUnrecoverable": "**Files cannot be fixed on this device:**\n\n${filesNotRecoverable}\n\nThese files have inconsistent metadata, and cannot be fixed on this device (mostly we cannot determine which is correct).\nTo restore them, please check your other devices (also by this feature) or restore them manually from a backup.\n", + "obsidianLiveSyncSettingTab.btnNext": "Next", + "obsidianLiveSyncSettingTab.errEnableCors": "❗ httpd.enable_cors is wrong", + "obsidianLiveSyncSettingTab.linkTipsAndTroubleshooting": "Tips and Troubleshooting", + "TweakMismatchResolve.Table": "| Value name | This device | On Remote |\n|: --- |: ---- :|: ---- :|\n${rows}\n\n", + "Ui.UseSetupURI.PlaceholderPassphrase": "Enter your passphrase", + "Doctor.Level.Optional": "Optional", + "Maximum Incubation Period": "Maximum Incubation Period", + "obsidianLiveSyncSettingTab.linkTroubleshooting": "/docs/troubleshooting.md", + "moduleLiveSyncMain.logAdditionalSafetyScan": "Additional safety scan...", + "If this enabled, all chunks will be stored with the revision made from its content. (Previous behaviour)": "If this enabled, all chunks will be stored with the revision made from its content. (Previous behaviour)", + "obsidianLiveSyncSettingTab.okCorsOriginMatched": "✔ CORS origin OK", + "lang-es": "Español", + "Ui.RemoteE2EE.PlaceholderPassphrase": "Enter your passphrase", + "Maximum file size": "Maximum file size", + "obsidianLiveSyncSettingTab.okEnableCorsChttpd": "✔ chttpd.enable_cors is ok.", + "obsidianLiveSyncSettingTab.buttonFetch": "Fetch", + "obsidianLiveSyncSettingTab.descTestDatabaseConnection": "Open database connection. If the remote database is not found and you have permission to create a database, the database will be created.", + "moduleMigration.insecureChunkExist.buttons.later": "I will do it later", + "moduleMigration.logRemoteTweakUnavailable": "Could not get remote tweak values", + "obsidianLiveSyncSettingTab.msgChangesNeedToBeApplied": "Changes need to be applied!", + "Ui.ScanQRCode.Step2": "On the source device, open Obsidian.", + "Write logs into the file": "Write logs into the file", + "P2P.Note.important_note_sub": "This feature is still on the bleeding edge. Please be aware that ensure your data is backed up before using this feature. And, we would be so happy if you could contribute to the development of this feature.", + "Delay conflict resolution of inactive files": "Delay conflict resolution of inactive files", + "Ui.RemoteE2EE.ButtonProceed": "Proceed", + "Show verbose log. Please enable if you report an issue.": "Show verbose log. Please enable if you report an issue.", + "moduleMigration.logFetchRemoteTweakFailed": "Failed to fetch remote tweak values", + "obsidianLiveSyncSettingTab.okCorsCredentials": "✔ cors.credentials is ok.", + "Sync automatically after merging files": "Sync automatically after merging files", + "Notify customized": "Notify customized", + "obsidianLiveSyncSettingTab.titleUpdateThinning": "Update Thinning", + "Apply preset configuration": "Apply preset configuration", + "moduleCheckRemoteSize.logExceededWarning": "Remote storage size: ${measuredSize} exceeded ${notifySize}", + "obsidianLiveSyncSettingTab.titleSynchronizationPreset": "Synchronization Preset", + "P2P.Note.important_note": "Peer-to-Peer Replicator.", + "Setup.FetchRemoteConf.Buttons.Fetch": "Yes, please fetch the configuration", + "Show only notifications": "Show only notifications", + "Ui.SetupWizard.Fetch.UnbalancedNote": "In this scenario, Self-hosted LiveSync will recreate metadata for every file and deliberately generate conflicts. Where the file content is identical, these conflicts will be resolved automatically.", + "Doctor.Button.Yes": "Yes", + "obsidianLiveSyncSettingTab.nameTestConnection": "Test Connection", + "Memory cache size (by total items)": "Memory cache size (by total items)", + "If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker.": "If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker.", + "lang-de": "Deutsche", + "moduleCheckRemoteSize.optionIncreaseLimit": "increase to ${newMax}MB", + "Reset notification threshold and check the remote database usage": "Reset notification threshold and check the remote database usage", + "Scan for hidden files before replication": "Scan for hidden files before replication", + "obsidianLiveSyncSettingTab.btnDisable": "Disable", + "If enabled, the ⛔ icon will be shown inside the status instead of the file warnings banner. No details will be shown.": "If enabled, the ⛔ icon will be shown inside the status instead of the file warnings banner. No details will be shown.", + "moduleLiveSyncMain.optionResumeAndRestart": "Resume and restart Obsidian", + "Replicator.Dialogue.Locked.Action.Fetch": "Reset Synchronisation on This Device", + "Presets": "Presets", + "End-to-End Encryption": "End-to-End Encryption", + "If this enabled, All files are handled as case-Sensitive (Previous behaviour).": "If this enabled, All files are handled as case-Sensitive (Previous behaviour).", + "Setting.GenerateKeyPair.Title": "New key pair has been generated!", + "Database suffix": "Database suffix", + "Enable this option to automatically apply the most recent change to documents even when it conflicts": "Enable this option to automatically apply the most recent change to documents even when it conflicts", + "obsidianLiveSyncSettingTab.titleSyncSettings": "Sync Settings", + "Use Custom HTTP Handler": "Use Custom HTTP Handler", + "Show status on the status bar": "Show status on the status bar", + "K.title_p2p_sync": "Peer-to-Peer Sync", + "moduleInputUIObsidian.defaultTitleSelect": "Select", + "obsidianLiveSyncSettingTab.buttonNext": "Next", + "moduleMigration.insecureChunkExist.message": "Some chunks are not securely stored and are not encrypted in databases.\n**Please rebuild the database to fix this issue**.\n\nIf your Remote Database is not configured with SSL, or using less-secure credentials, **you are at risk of exposing sensitive data**.\n\nNote: Please upgrade your Self-hosted LiveSync v0.25.6 or higher on all your devices, and back your vault up surely.\nNote2: Rebuild Everything and Fetch consumes a bit of time and traffic, please do it in off-peak hours and ensure a stable network connection.\n", + "RedFlag.Fetch.Method.FetchSafer": "Create a local database once before fetching", + "obsidianLiveSyncSettingTab.btnDiscard": "Discard", + "obsidianLiveSyncSettingTab.logEncryptionNoPassphrase": "You cannot enable encryption without a passphrase", + "Setting.TroubleShooting.ScanBrokenFiles.Desc": "Scans for files that are not stored correctly in the database.", + "RedFlag.Fetch.Method.Desc": "How do you want to fetch?\n- %{RedFlag.Fetch.Method.FetchSafer}.\n **Low Traffic**, **High CPU**, **Low Risk**\n Recommended if ...\n - Files possibly inconsistent\n - Files were not so much\n- %{RedFlag.Fetch.Method.FetchSmoother}.\n **Low Traffic**, **Moderate CPU**, **Low to Moderate Risk**\n Recommended if ...\n - Files probably consistent\n - You have a lot of files.\n- %{RedFlag.Fetch.Method.FetchTraditional}.\n **High Traffic**, **Low CPU**, **Low to Moderate Risk**\n\n>[!INFO]- Details\n> ## %{RedFlag.Fetch.Method.FetchSafer}.\n> **Low Traffic**, **High CPU**, **Low Risk**\n> This option first creates a local database using existing local files before fetching data from the remote source.\n> If matching files exist both locally and remotely, only the differences between them will be transferred.\n> However, files present in both locations will initially be handled as conflicted files. They will be resolved automatically if they are not actually conflicted, but this process may take time.\n> This is generally the safest method, minimizing data loss risk.\n> ## %{RedFlag.Fetch.Method.FetchSmoother}.\n> **Low Traffic**, **Moderate CPU**, **Low to Moderate Risk** (depending operation)\n> This option first creates chunks from local files for the database, then fetches data. Consequently, only chunks missing locally are transferred. However, all metadata is taken from the remote source.\n> Local files are then compared against this metadata at launch. The content considered newer will overwrite the older one (by modified time). This outcome is then synchronised back to the remote database.\n> This is generally safe if local files are genuinely the latest timestamp. However, it can cause problems if a file has a newer timestamp but older content (like the initial `welcome.md`).\n> This uses less CPU and faster than \"%{RedFlag.Fetch.Method.FetchSafer}\", but it may lead to data loss if not used carefully.\n> ## %{RedFlag.Fetch.Method.FetchTraditional}.\n> **High Traffic**, **Low CPU**, **Low to Moderate Risk** (depending operation)\n> All things will be fetched from the remote.\n> Similar to the %{RedFlag.Fetch.Method.FetchSmoother}, but all chunks are fetched from the remote source.\n> This is the most traditional way to fetch, typically consuming the most network traffic and time. It also carries a similar risk of overwriting remote files to the '%{RedFlag.Fetch.Method.FetchSmoother}' option.\n> However, it is often considered the most stable method because it is the longest-established and most straightforward approach.", + "The maximum duration for which chunks can be incubated within the document. Chunks exceeding this period will graduate to independent chunks.": "The maximum duration for which chunks can be incubated within the document. Chunks exceeding this period will graduate to independent chunks.", + "Ui.SetupWizard.Rebuild.ConfirmTitle": "Please Confirm the Following", + "Stop watching for file changes.": "Stop watching for file changes.", + "moduleLocalDatabase.logWaitingForReady": "Waiting for ready...", + "liveSyncReplicator.couldNotConnectToURI": "Could not connect to ${uri}:${dbRet}", + "moduleMigration.titleRecommendSetupUri": "Recommendation to use Setup URI", + "obsidianLiveSyncSettingTab.okMaxDocumentSize": "✔ couchdb.max_document_size is ok.", + "Analyse database usage": "Analyse database usage", + "Ui.SetupWizard.Fetch.VaultIdenticalDesc": "(e.g., immediately after restoring on another computer, or having recovered from a backup)", + "Ui.RemoteE2EE.PassphraseValidationLine2": "Therefore, we ask that you exercise extreme caution when configuring server information manually.", + "Scan hidden files periodically": "Scan hidden files periodically", + "Ui.SetupWizard.Fetch.Title": "Reset Synchronisation on This Device", + "obsidianLiveSyncSettingTab.msgEnableEncryptionRecommendation": "We recommend enabling End-To-End Encryption, and Path Obfuscation. Are you sure you want to continue without encryption?", + "P2P.NoAutoSyncPeers": "No auto-sync peers found. Please set peers on the %{long_p2p_sync} pane.", + "Ui.RemoteE2EE.Guidance": "Please configure your end-to-end encryption settings.", + "logPane.logWindowOpened": "Log window opened", + "obsidianLiveSyncSettingTab.btnApply": "Apply", + "obsidianLiveSyncSettingTab.msgConnectionProxyNote": "If you're having trouble with the Connection-check (even after checking config), please check your reverse proxy configuration.", + "If this option is enabled, PouchDB will hold the connection open for 60 seconds, and if no change arrives in that time, close and reopen the socket, instead of holding it open indefinitely. Useful when a proxy limits request duration but can increase resource usage.": "If this option is enabled, PouchDB will hold the connection open for 60 seconds, and if no change arrives in that time, close and reopen the socket, instead of holding it open indefinitely. Useful when a proxy limits request duration but can increase resource usage.", + "obsidianLiveSyncSettingTab.nameCopySetupURI": "Copy the current settings to a Setup URI", + "Show status inside the editor": "Show status inside the editor", + "obsidianLiveSyncSettingTab.okCorsOrigins": "✔ cors.origins is ok.", + "Sync Mode": "Sync Mode", + "Setup.Apply.Buttons.ApplyAndFetch": "Apply and Fetch", + "moduleCheckRemoteSize.option800MB": "800MB (Cloudant, fly.io)", + "Apply Latest Change if Conflicting": "Apply Latest Change if Conflicting", + "Ui.SetupWizard.Rebuild.Title": "Final Confirmation: Overwrite Server Data with This Device's Files", + "RedFlag.FetchRemoteConfig.Buttons.Fetch": "Yes, fetch and apply remote settings", + "Enable advanced features": "Enable advanced features", + "moduleMigration.insecureChunkExist.laterMessage": "We strongly recommend to treat this as soon as possible!", + "Ui.SetupWizard.Rebuild.Proceed": "I Understand, Overwrite Server", + "Doctor.Button.No": "No", + "Ui.ScanQRCode.Step1": "On this device, please keep this Vault open.", + "Rerun the onboarding wizard to set up Self-hosted LiveSync again.": "Rerun the onboarding wizard to set up Self-hosted LiveSync again.", + "Active Remote Configuration": "Active Remote Configuration", + "Ui.SetupWizard.Fetch.ConflictNote": "Furthermore, if conflicts are already present in the server data, they will be synchronised to this device as they are, and you will need to resolve them locally.", + "Setup.Doctor.Message": "Self-hosted LiveSync has gradually become longer in history and some recommended settings have changed.\n\nNow, setup is a very good time to do this.\n\nDo you want to run Doctor to check if the imported settings are optimal compared to the latest state?", + "moduleLiveSyncMain.optionKeepLiveSyncDisabled": "Keep LiveSync disabled", + "Warning! This will have a serious impact on performance. And the logs will not be synchronised under the default name. Please be careful with logs; they often contain your confidential information.": "Warning! This will have a serious impact on performance. And the logs will not be synchronised under the default name. Please be careful with logs; they often contain your confidential information.", + "Remote Type": "Remote Type", + "RedFlag.FetchRemoteConfig.Title": "Fetch Remote Configuration", + "Ui.RemoteE2EE.Title": "End-to-End Encryption", + "obsidianLiveSyncSettingTab.errAccessForbidden": "❗ Access forbidden.", + "Delay merge conflict prompt for inactive files.": "Delay merge conflict prompt for inactive files.", + "obsidianLiveSyncSettingTab.msgNewVersionNote": "Here due to an upgrade notification? Please review the version history. If you're satisfied, click the button. A new update will prompt this again.", + "Prepare the 'report' to create an issue": "Prepare the 'report' to create an issue", + "Setup.Doctor.Buttons.Yes": "Yes, please consult the doctor", + "Ui.RemoteE2EE.StronglyRecommendedLine2": "Also, please note that if you are using Peer-to-Peer synchronization, this configuration will be used when you switch to other methods and connect to a remote server in the future.", + "The minimum interval for automatic synchronisation on event.": "The minimum interval for automatic synchronisation on event.", + "moduleMigration.logRedflag2CreationFail": "Failed to create redflag2", + "K.ScanCustomization": "Scan customization", + "Disables logging, only shows notifications. Please disable if you report an issue.": "Disables logging, only shows notifications. Please disable if you report an issue.", + "moduleMigration.fix0256.message": "Due to a recent bug (in v0.25.6), some files may not have been saved correctly in the sync database.\nWe have scanned our files and found some that need to be fixed.\n\n**Files ready to be fixed:**\n\n${files}\n\nThese files have size-matched original file on the storage, and are likely to be recoverable.\nWe can use them to fix the database, please click the \"Fix\" button below to fix them.\n\n${messageUnrecoverable}\n\nIf you want to run it again, you can do so from Hatch.\n", + "Saving will be performed forcefully after this number of seconds.": "Saving will be performed forcefully after this number of seconds.", + "Database Name": "Database Name", + "Doctor.Button.Fix": "Fix it", + "moduleMigration.fix0256.title": "Broken files has been detected", + "obsidianLiveSyncSettingTab.optionCouchDB": "CouchDB", + "Setting.TroubleShooting.Doctor": "Setting Doctor", + "Setting.TroubleShooting.Doctor.Desc": "Detects non optimal settings. (Same as during migration)", + "Ui.RemoteE2EE.MultiDestinationWarning": "This setting must be the same even when connecting to multiple synchronisation destinations.", + "obsidianLiveSyncSettingTab.descValidateDatabaseConfig": "Checks and fixes any potential issues with the database config.", + "obsidianLiveSyncSettingTab.msgEnableCors": "Set httpd.enable_cors", + "Show status icon instead of file warnings banner": "Show status icon instead of file warnings banner", + "Doctor.Dialogue.MainFix": "\n## ${name}\n\n| Current | Ideal |\n|:---:|:---:|\n| ${current} | ${ideal} |\n\n**Recommendation Level:** ${level}\n\n### Why this has been detected?\n\n${reason}\n\n${note}\n\nFix this to the ideal value?", + "Doctor.RULES.E2EE_V02500.REASON": "The End-to-End Encryption has got now more robust and faster. Also because, the previous E2EE was found to be compromised in a re-conducted code review. It should be applied as soon as possible. Really apologises for your inconvenience. And, this setting is not forward compatible. All synchronised devices must be updated to v0.25.0 or higher. Rebuilds are not required and will be converted from the new transfer to the new format, However, it is recommended to rebuild whenever possible.", + "moduleCheckRemoteSize.logCurrentStorageSize": "Remote storage size: ${measuredSize}", + "P2P.P2PReplication": "%{P2P} Replication", + "obsidianLiveSyncSettingTab.optionDisableAllAutomatic": "Disable all automatic", + "Ui.RemoteE2EE.ManualWarning": "Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences. This is a security measure designed to protect your data.", + "Remote server type": "Remote server type", + "obsidianLiveSyncSettingTab.errMaxRequestSize": "❗ chttpd.max_http_request_size is low)", + "Ui.UseSetupURI.Title": "Enter Setup URI", + "(Mega chars)": "(Mega chars)", + "Ui.UseSetupURI.ErrorFailedToParse": "Failed to parse Setup-URI.", + "moduleMigration.optionAdjustRemote": "Adjust to remote", + "obsidianLiveSyncSettingTab.titleAppearance": "Appearance", + "TweakMismatchResolve.Action.UseMineAcceptIncompatible": "Update remote database settings but keep as is", + "Ui.UseSetupURI.Label": "Setup-URI", + "moduleLiveSyncMain.logPluginInitCancelled": "Plugin initialisation was cancelled by a module", + "moduleCheckRemoteSize.optionDismiss": "Dismiss", + "moduleMigration.optionSetupViaP2P": "Use %{short_p2p_sync} to set up", + "moduleMigration.optionSetupWizard": "Take me into the setup wizard", + "obsidianLiveSyncSettingTab.serverVersion": "Server info: ${info}", + "moduleMigration.fix0256.buttons.fix": "Fix", + "obsidianLiveSyncSettingTab.msgObjectStorageWarning": "WARNING: This feature is a Work In Progress, so please keep in mind the following:\n- Append only architecture. A rebuild is required to shrink the storage.\n- A bit fragile.\n- When first syncing, all history will be transferred from the remote. Be mindful of data caps and slow speeds.\n- Only differences are synced live.\n\nIf you run into any issues, or have ideas about this feature, please create a issue on GitHub.\nI appreciate you for your great dedication.", + "obsidianLiveSyncSettingTab.msgSetRequireValidUser": "Set chttpd.require_valid_user = true", + "Ui.SetupWizard.P2P.UseDefaultRelay": "Use vrtmrz's relay", + "obsidianLiveSyncSettingTab.logConfiguredDisabled": "Configured synchronization mode: DISABLED", + "moduleMigration.insecureChunkExist.buttons.fetch": "I already rebuilt the remote. Fetch from the remote", + "obsidianLiveSyncSettingTab.btnGotItAndUpdated": "I got it and updated.", + "Region": "Region", + "obsidianLiveSyncSettingTab.nameApplySettings": "Apply Settings", + "RedFlag.Fetch.Method.FetchSmoother": "Create local file chunks before fetching", + "moduleMigration.msgRecommendSetupUri": "We strongly recommend that you generate a set-up URI and use it.\nIf you do not have knowledge about it, please refer to the [documentation](${URI_DOC}) (Sorry again, but it is important).\n\nHow do you want to set it up manually?", + "Ui.RemoteE2EE.WarningSameSetting": "This setting must be the same even when connecting to multiple synchronisation destinations.", + "If enabled, the notification of hidden files change will be suppressed.": "If enabled, the notification of hidden files change will be suppressed.", + "obsidianLiveSyncSettingTab.errCannotContinueTest": "We could not continue the test.", + "moduleMigration.msgFetchRemoteAgain": "As you may already know, the self-hosted LiveSync has changed its default behaviour and database structure.\n\nAnd thankfully, with your time and efforts, the remote database appears to have already been migrated. Congratulations!\n\nHowever, we need a bit more. The configuration of this device is not compatible with the remote database. We will need to fetch the remote database again. Should we fetch from the remote again now?\n\n___Note: We cannot synchronise until the configuration has been changed and the database has been fetched again.___\n___Note2: The chunks are completely immutable, we can fetch only the metadata and difference.___", + "Setup.FetchRemoteConf.Title": "Fetch configuration from remote database?", + "Ui.Bucket.Guidance": "Please enter the details required to connect to your S3/MinIO/R2 compatible object storage service.", + "Ui.UseSetupURI.ValidMessage": "The Setup-URI is valid and ready to use.", + "obsidianLiveSyncSettingTab.errRequireValidUserAuth": "❗ chttpd_auth.require_valid_user is wrong.", + "Property Encryption": "Property Encryption", + "Ui.SetupWizard.Common.HttpsOnlyMobile": "We can use only Secure (HTTPS) connections on Obsidian Mobile.", + "Ui.SetupWizard.Rebuild.PreventFetchConfig": "Prevent fetching configuration from server", + "obsidianLiveSyncSettingTab.descManualSetup": "Not recommended, but useful if you don't have a Setup URI", + "Verbose Log": "Verbose Log", + "Handle files as Case-Sensitive": "Handle files as Case-Sensitive", + "Interval (sec)": "Interval (sec)", + "liveSyncReplicator.couldNotConnectToServer": "Could not connect to server.", + "Minimum delay for batch database updating": "Minimum delay for batch database updating", + "obsidianLiveSyncSettingTab.optionOnEvents": "On events", + "Stop reflecting database changes to storage files.": "Stop reflecting database changes to storage files.", + "Setup.Apply.Buttons.Cancel": "Discard and Cancel", + "Setup.QRCode": "We have generated a QR code to transfer the settings. Please scan the QR code with your phone or other device.\nNote: The QR code is not encrypted, so be careful to open this.\n\n>[!FOR YOUR EYES ONLY]-\n>
${qr_image}
", + "Ui.RemoteE2EE.StronglyRecommendedLine1": "Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server.", + "Enable poweruser features": "Enable poweruser features", + "obsidianLiveSyncSettingTab.descCopySetupURI": "Perfect for setting up a new device!", + "Ui.RemoteE2EE.LabelObfuscateProperties": "Obfuscate Properties", + "Ui.RemoteE2EE.PassphraseValidationLine1": "Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences.", + "Move remotely deleted files to the trash, instead of deleting.": "Move remotely deleted files to the trash, instead of deleting.", + "Replicator.Message.Pending": "Some file events are pending. Replication has been cancelled.", + "Replicator.Dialogue.Locked.Action.Dismiss": "Cancel for reconfirmation", + "obsidianLiveSyncSettingTab.logErrorOccurred": "An error occurred!!", + "moduleLog.showLog": "Show Log", + "moduleMigration.optionEnableFixedRevisionForChunks": "Enable only #2", + "Doctor.Message.RebuildLocalRequired": "Attention! A local database rebuild is required to apply this!", + "moduleMigration.optionNoAskAgain": "No, please ask again", + "moduleLiveSyncMain.logSafetyScanFailed": "Additional safety scan has failed on a module", + "Copy Report to clipboard": "Copy Report to clipboard", + "moduleMigration.titleCaseSensitivity": "Case Sensitivity", + "Ui.UseSetupURI.Guidance": "Please enter the Setup URI that was generated during server installation or on another device, along with the vault passphrase.", + "moduleMigration.logLocalDatabaseNotReady": "Something went wrong! The local database is not ready", + "obsidianLiveSyncSettingTab.nameConnectSetupURI": "Connect with Setup URI", + "obsidianLiveSyncSettingTab.okEnableCors": "✔ httpd.enable_cors is ok.", + "TweakMismatchResolve.Message.MainTweakResolving": "Your configuration has not been matched with the one on the remote server.\n\nFollowing configuration should be matched:\n\n${table}\n\nLet us know your decision.\n\n${additionalMessage}", + "obsidianLiveSyncSettingTab.nameTestDatabaseConnection": "Test Database Connection", + "Ui.SetupWizard.Fetch.ImportantTitle": "Important Notice", + "obsidianLiveSyncSettingTab.titleMinioS3R2": "Minio,S3,R2", + "moduleLiveSyncMain.logVersionUpdate": "LiveSync has been updated, In case of breaking updates, all automatic synchronization has been temporarily disabled. Ensure that all devices are up to date before enabling.", + "obsidianLiveSyncSettingTab.okWwwAuth": "✔ httpd.WWW-Authenticate is ok.", + "obsidianLiveSyncSettingTab.nameDisableHiddenFileSync": "Disable Hidden files sync", + "(BETA) Always overwrite with a newer file": "(BETA) Always overwrite with a newer file", + "obsidianLiveSyncSettingTab.msgSetMaxRequestSize": "Set chttpd.max_http_request_size", + "Setup.Apply.Buttons.OnlyApply": "Only Apply", + "This passphrase will not be copied to another device. It will be set to `Default` until you configure it again.": "This passphrase will not be copied to another device. It will be set to `Default` until you configure it again.", + "moduleLiveSyncMain.logReadChangelog": "LiveSync has updated, please read the changelog!", + "MB (0 to disable).": "MB (0 to disable).", + "P2P.NotEnabled": "%{title_p2p_sync} is not enabled. We cannot open a new connection.", + "Reducing the frequency with which on-disk changes are reflected into the DB": "Reducing the frequency with which on-disk changes are reflected into the DB", + "obsidianLiveSyncSettingTab.optionSaveOnlySettings": "(Danger) Save Only Settings", + "Notify when the estimated remote storage size exceeds on start up": "Notify when the estimated remote storage size exceeds on start up", + "Enable customization sync": "Enable customization sync", + "lang_def": "Default", + "Ui.SetupWizard.CouchDBCheck.DetectAndFix": "Detect and Fix CouchDB Issues", + "obsidianLiveSyncSettingTab.logSelectAnyPreset": "Select any preset.", + "Ignore files": "Ignore files", + "obsidianLiveSyncSettingTab.btnUse": "Use", + "obsidianLiveSyncSettingTab.titleSetupOtherDevices": "To setup other devices", + "obsidianLiveSyncSettingTab.msgCurrentOrigin": "Current origin: ${origin}", + "Device name": "Device name", + "liveSyncReplicator.retryLowerBatchSize": "Retry with lower batch size:${batch_size}/${batches_limit}", + "Ui.SetupWizard.Fetch.VaultUnbalanced": "There may be differences between the files in this Vault and the server.", + "obsidianLiveSyncSettingTab.levelPowerUser": " (Power User)", + "Save settings to a markdown file. You will be notified when new settings arrive. You can set different files by the platform.": "Save settings to a markdown file. You will be notified when new settings arrive. You can set different files by the platform.", + "Memory cache size (by total characters)": "Memory cache size (by total characters)", + "Per-file-saved customization sync": "Per-file-saved customization sync", + "moduleCheckRemoteSize.titleDatabaseSizeNotify": "Setting up database size notification", + "Seconds, 0 to disable": "Seconds, 0 to disable", + "obsidianLiveSyncSettingTab.panelRemoteConfiguration": "Remote Configuration", + "liveSyncReplicator.remoteDbCreatedOrConnected": "Remote Database Created or Connected", + "When you save a file in the editor, start a sync automatically": "When you save a file in the editor, start a sync automatically", + "obsidianLiveSyncSettingTab.msgIfConfigNotPersistent": "If the server configuration is not persistent (e.g., running on docker), the values here may change. Once you are able to connect, please update the settings in the server's local.ini.", + "If this enabled, chunks will be split into semantically meaningful segments. Not all platforms support this feature.": "If this enabled, chunks will be split into semantically meaningful segments. Not all platforms support this feature.", + "Setup.Apply.WarningRebuildRecommended": "NOTE: after adjusting the settings, it has been determined that a rebuild is required; Just Import is not recommended.", + "Display Language": "Display Language", + "Doctor.Button.DismissThisVersion": "No, and do not ask again until the next release", + "Should we keep folders that don't have any files inside?": "Should we keep folders that don't have any files inside?", + "Ui.SetupWizard.Rebuild.ConfirmDataLoss": "I understand that all changes made on other smartphones or computers possibly could be lost.", + "obsidianLiveSyncSettingTab.okMaxRequestSize": "✔ chttpd.max_http_request_size is ok.", + "Ui.SetupWizard.Rebuild.ResetNotifyOtherDevices": "by resetting the remote, you will be informed on other devices.", + "obsidianLiveSyncSettingTab.msgNonHTTPSInfo": "Configured as non-HTTPS URI. Be warned that this may not work on mobile devices.", + "Setup.FetchRemoteConf.Buttons.Skip": "No, please use the settings in the URI", + "moduleInputUIObsidian.optionNo": "No", + "K.long_p2p_sync": "%{title_p2p_sync}", + "obsidianLiveSyncSettingTab.errCorsCredentials": "❗ cors.credentials is wrong", + "moduleMigration.optionHaveSetupUri": "Yes, I have", + "TweakMismatchResolve.Message.WarningIncompatibleRebuildRecommended": "\n>[!NOTICE]\n> We have detected that some of the values are different to make incompatible the local database with the remote database.\n> Some changes are compatible but may consume extra storage and transfer volumes. A rebuild is recommended. However, a rebuild may not be performed at present, but may be implemented in future maintenance.\n> If you want to rebuild, it takes a few minutes or more. **Make sure it is safe to perform it now.**", + "obsidianLiveSyncSettingTab.panelChangeLog": "Change Log", + "Ui.SetupWizard.Fetch.BackupUnableNote": "If you understand the risks and still wish to proceed, select so.", + "Number of batches to process at a time. Defaults to 40. Minimum is 2. This along with batch size controls how many docs are kept in memory at a time.": "Number of batches to process at a time. Defaults to 40. Minimum is 2. This along with batch size controls how many docs are kept in memory at a time.", + "dialog.yourLanguageAvailable.btnRevertToDefault": "Keep %{lang-def}", + "P2P.SeemsOffline": "Peer ${name} seems offline, skipped.", + "Ui.SetupWizard.Fetch.Guidance": "This will rebuild the local database on this device using the most recent data from the server. This action is designed to resolve synchronisation inconsistencies and restore correct functionality.", + "Do not check configuration mismatch before replication": "Do not check configuration mismatch before replication", + "P2P.AskPassphraseForShare": "The remote peer requested this device configuration. Please input the passphrase to share the configuration. You can ignore the request by cancelling this dialogue.", + "moduleMigration.msgSinceV02321": "Since v0.23.21, the self-hosted LiveSync has changed the default behaviour and database structure. The following changes have been made:\n\n1. **Case sensitivity of filenames**\n The handling of filenames is now case-insensitive. This is a beneficial change for most platforms, other than Linux and iOS, which do not manage filename case sensitivity effectively.\n (On These, a warning will be displayed for files with the same name but different cases).\n\n2. **Revision handling of the chunks**\n Chunks are immutable, which allows their revisions to be fixed. This change will enhance the performance of file saving.\n\n___However, to enable either of these changes, both remote and local databases need to be rebuilt. This process takes a few minutes, and we recommend doing it when you have ample time.___\n\n- If you wish to maintain the previous behaviour, you can skip this process by using `${KEEP}`.\n- If you do not have enough time, please choose `${DISMISS}`. You will be prompted again later.\n- If you have rebuilt the database on another device, please select `${DISMISS}` and try synchronizing again. Since a difference has been detected, you will be prompted again.", + "obsidianLiveSyncSettingTab.logConfiguredLiveSync": "Configured synchronization mode: LiveSync", + "LiveSync could not handle multiple vaults which have same name without different prefix, This should be automatically configured.": "LiveSync could not handle multiple vaults which have same name without different prefix, This should be automatically configured.", + "obsidianLiveSyncSettingTab.logPassphraseNotCompatible": "ERROR: Passphrase is not compatible with the remote server! Please check it again!", + "liveSyncReplicator.unlockRemoteDb": "Unlock remote database to prevent data corruption", + "Incubate Chunks in Document": "Incubate Chunks in Document", + "liveSyncSettings.btnApply": "Apply", + "obsidianLiveSyncSettingTab.nameHiddenFileSynchronization": "Hidden file synchronization", + "obsidianLiveSyncSettingTab.titleNotification": "Notification", + "If enabled, the file under 1kb will be processed in the UI thread.": "If enabled, the file under 1kb will be processed in the UI thread.", + "Replicator.Dialogue.Locked.Title": "Locked", + "obsidianLiveSyncSettingTab.msgSettingModified": "The setting \"${setting}\" was modified from another device. Click {HERE} to reload settings. Click elsewhere to ignore changes.", + "moduleCheckRemoteSize.msgConfirmRebuild": "This may take a bit of a long time. Do you really want to rebuild everything now?", + "Ui.UseSetupURI.ErrorPassphraseRequired": "Passphrase is required.", + "(Obsolete) Use an old adapter for compatibility": "(Obsolete) Use an old adapter for compatibility", + "moduleMigration.optionYesFetchAgain": "Yes, fetch again", + "obsidianLiveSyncSettingTab.msgSetRequireValidUserAuth": "Set chttpd_auth.require_valid_user = true", + "obsidianLiveSyncSettingTab.errCorsNotAllowingCredentials": "❗ CORS is not allowing credentials", + "obsidianLiveSyncSettingTab.titleCongratulations": "Congratulations!", + "Ui.SetupWizard.Fetch.VaultIndependentDesc": "(e.g., setting up for the first time on a new smartphone, starting from a clean slate)", + "Ui.SetupWizard.P2P.Title": "P2P Configuration", + "Ui.ScanQRCode.Instruction": "Please follow the steps below to import settings from your existing device.", + "liveSyncReplicator.replicationClosed": "Replication closed", + "Comma separated `.gitignore, .dockerignore`": "Comma separated `.gitignore, .dockerignore`", + "moduleMigration.msgInitialSetup": "Your device has **not been set up yet**. Let me guide you through the setup process.\n\nPlease keep in mind that every dialogue content can be copied to the clipboard. If you need to refer to it later, you can paste it into a note in Obsidian. You can also translate it into your language using a translation tool.\n\nFirst, do you have **Setup URI**?\n\nNote: If you do not know what it is, please refer to the [documentation](${URI_DOC}).", + "obsidianLiveSyncSettingTab.btnCopy": "Copy", + "Doctor.Button.Skip": "Leave it as is", + "obsidianLiveSyncSettingTab.msgEnableCorsChttpd": "Set chttpd.enable_cors", + "obsidianLiveSyncSettingTab.msgRebuildRequired": "Rebuilding Databases are required to apply the changes.. Please select the method to apply the changes.\n\n
\nLegends\n\n| Symbol | Meaning |\n|: ------ :| ------- |\n| ⇔ | Up to Date |\n| ⇄ | Synchronise to balance |\n| ⇐,⇒ | Transfer to overwrite |\n| ⇠,⇢ | Transfer to overwrite from other side |\n\n
\n\n## ${OPTION_REBUILD_BOTH}\nAt a glance: 📄 ⇒¹ 💻 ⇒² 🛰️ ⇢ⁿ 💻 ⇄ⁿ⁺¹ 📄\nReconstruct both the local and remote databases using existing files from this device.\nThis causes a lockout other devices, and they need to perform fetching.\n## ${OPTION_FETCH}\nAt a glance: 📄 ⇄² 💻 ⇐¹ 🛰️ ⇔ 💻 ⇔ 📄\nInitialise the local database and reconstruct it using data fetched from the remote database.\nThis case includes the case which you have rebuilt the remote database.\n## ${OPTION_ONLY_SETTING}\nStore only the settings. **Caution: This may lead to data corruption**; database reconstruction is generally necessary.", + "P2P.PaneTitle": "%{long_p2p_sync}", + "moduleMigration.optionDecideLater": "Decide it later", + "Ui.SetupWizard.Common.AdvancedSettings": "Advanced Settings", + "Do not use internal API": "Do not use internal API", + "liveSyncReplicator.couldNotConnectTo": "Could not connect to ${uri} : ${name}\n(${db})", + "dialog.yourLanguageAvailable": "Self-hosted LiveSync had translations for your language, so the %{Display language} setting was enabled.\n\nNote: Not all messages are translated. We are waiting for your contributions!\nNote 2: If you create an Issue, **please revert to %{lang-def}** and then take screenshots, messages and logs. This can be done in the setting dialogue.\nMay you find it easy to use!", + "Maximum delay for batch database updating": "Maximum delay for batch database updating", + "TweakMismatchResolve.Action.Dismiss": "Dismiss", + "obsidianLiveSyncSettingTab.logCheckingDbConfig": "Checking database configuration", + "Ui.SetupWizard.Fetch.BackupUnableWarning": "It is strongly advised to create a backup before proceeding. Continuing without a backup may lead to data loss.", + "Ui.UseSetupURI.ButtonProceed": "Test Settings and Continue", + "obsidianLiveSyncSettingTab.btnEnable": "Enable", + "username": "username", + "moduleLiveSyncMain.logPluginVersion": "Self-hosted LiveSync v${manifestVersion} ${packageVersion}", + "Setup.Apply.Title": "Apply new configuration from the ${method}", + "obsidianLiveSyncSettingTab.labelDisabled": "⏹️ : Disabled", + "Ui.ScanQRCode.Step4": "On this device, switch to the camera app or use a QR code scanner to scan the displayed QR code.", + "TweakMismatchResolve.Action.UseRemoteWithRebuild": "Apply settings to this device, and fetch again", + "Testing only - Resolve file conflicts by syncing newer copies of the file, this can overwrite modified files. Be Warned.": "Testing only - Resolve file conflicts by syncing newer copies of the file, this can overwrite modified files. Be Warned.", + "Delete old metadata of deleted files on start-up": "Delete old metadata of deleted files on start-up", + "TweakMismatchResolve.Title": "Configuration Mismatch Detected", + "obsidianLiveSyncSettingTab.okRequireValidUserAuth": "✔ chttpd_auth.require_valid_user is ok.", + "Enable Developers' Debug Tools.": "Enable Developers' Debug Tools.", + "cmdConfigSync.showCustomizationSync": "Show Customization sync", + "moduleCheckRemoteSize.logThresholdEnlarged": "Threshold has been enlarged to ${size}MB", + "Ui.SetupWizard.Rebuild.Guidance": "This procedure will first delete all existing synchronisation data from the server. Following this, the server data will be completely rebuilt, using the current state of your Vault on this device as the single, authoritative master copy.", + "Keep empty folder": "Keep empty folder", + "Replicator.Message.Cleaned": "Database cleaning up is in process. replication has been cancelled", + "obsidianLiveSyncSettingTab.logPassphraseInvalid": "Passphrase is not valid, please fix it.", + "Setup.Doctor.Buttons.No": "No, please use the settings in the URI as is", + "moduleMigration.titleWelcome": "Welcome to Self-hosted LiveSync", + "Ui.ScanQRCode.Guidance": "Please follow the steps below to import settings from your existing device.", + "obsidianLiveSyncSettingTab.titleHiddenFiles": "Hidden Files", + "Compute revisions for chunks": "Compute revisions for chunks", + "Notify when other device has newly customized.": "Notify when other device has newly customized.", + "obsidianLiveSyncSettingTab.btnStart": "Start", + "Ui.ScanQRCode.ButtonClose": "Close this dialog", + "moduleCheckRemoteSize.msgDatabaseGrowing": "**Your database is getting larger!** But do not worry, we can address it now. The time before running out of space on the remote storage.\n\n| Measured size | Configured size |\n| --- | --- |\n| ${estimatedSize} | ${maxSize} |\n\n> [!MORE]-\n> If you have been using it for many years, there may be unreferenced chunks - that is, garbage - accumulating in the database. Therefore, we recommend rebuilding everything. It will probably become much smaller.\n>\n> If the volume of your vault is simply increasing, it is better to rebuild everything after organizing the files. Self-hosted LiveSync does not delete the actual data even if you delete it to speed up the process. It is roughly [documented](https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/tech_info.md).\n>\n> If you don't mind the increase, you can increase the notification limit by 100MB. This is the case if you are running it on your own server. However, it is better to rebuild everything from time to time.\n>\n\n> [!WARNING]\n> If you perform rebuild everything, make sure all devices are synchronised. The plug-in will merge as much as possible, though.\n", + "obsidianLiveSyncSettingTab.descConnectSetupURI": "This is the recommended method to set up Self-hosted LiveSync with a Setup URI.", + "Use the trash bin": "Use the trash bin", + "obsidianLiveSyncSettingTab.titleEncryptionPassphraseInvalid": "Encryption Passphrase Invalid", + "Ui.SetupWizard.Common.ContinueAnyway": "Continue anyway", + "K.exp": "Experimental", + "obsidianLiveSyncSettingTab.titleExtraFeatures": "Enable extra and advanced features", + "Ui.P2P.Guidance": "Please enter the Peer-to-Peer Synchronisation information below.", + "liveSyncReplicator.cantReplicateLowerValue": "We can't replicate more lower value.", + "moduleMigration.optionRemindNextLaunch": "Remind me at the next launch", + "K.Peer": "Peer", + "moduleMigration.logBulkSendCorrupted": "Send chunks in bulk has been enabled, however, this feature had been corrupted. Sorry for your inconvenience. Automatically disabled.", + "obsidianLiveSyncSettingTab.nameEnableLiveSync": "Enable LiveSync", + "Ui.SetupWizard.Fetch.VaultIndependent": "This Vault is empty, or contains only new files that are not on the server.", + "Sync on Startup": "Sync on Startup", + "obsidianLiveSyncSettingTab.errMissingWwwAuth": "❗ httpd.WWW-Authenticate is missing", + "logPane.title": "Self-hosted LiveSync Log", + "Ui.SetupWizard.Rebuild.BackupBeforeProceeding": "Of course, we can back up the data before proceeding.", + "Unique name between all synchronized devices. To edit this setting, please disable customization sync once.": "Unique name between all synchronized devices. To edit this setting, please disable customization sync once.", + "Check": "Check", + "Ui.CouchDB.Guidance": "Please enter the CouchDB server information below.", + "obsidianLiveSyncSettingTab.titleFetchConfigFromRemote": "Fetch config from remote server", + "Fetch database with previous behaviour": "Fetch database with previous behaviour", + "Maximum Incubating Chunks": "Maximum Incubating Chunks", + "Run Doctor": "Run Doctor", + "logPane.wrap": "Wrap", + "moduleMigration.insecureChunkExist.buttons.rebuild": "Rebuild Everything", + "Ui.SetupWizard.Rebuild.WhenToUse": "You should perform this operation only in exceptional circumstances, such as when the server data is completely corrupted, when changes on all other devices are no longer needed, or when the database size has become unusually large in comparison to the Vault size.", + "moduleMigration.fix0256.buttons.DismissForever": "I have fixed it, and do not ask again", + "obsidianLiveSyncSettingTab.nameEnableHiddenFileSync": "Enable Hidden files sync", + "obsidianLiveSyncSettingTab.optionHere": "HERE", + "Should we only check for conflicts when a file is opened?": "Should we only check for conflicts when a file is opened?", + "Requires restart of Obsidian": "Requires restart of Obsidian", + "Suppress notification of hidden files change": "Suppress notification of hidden files change", + "liveSyncSetting.valueShouldBeInRange": "The value should ${min} < value < ${max}", + "moduleCheckRemoteSize.optionAskMeLater": "Ask me later", + "liveSyncReplicator.markDeviceResolved": "Mark this device as 'resolved'.", + "P2P.Note.description": " This replicator allows us to synchronise our vault with other devices\nusing a peer-to-peer connection. We can use this to synchronise our vault with our other devices without using a cloud service.\nThis replicator is based on Trystero. It also uses a signalling server to establish a connection between devices. The signalling server is used to exchange connection information between devices. It does (or,should) not know or store any of our data.\n\nThe signalling server can be hosted by anyone. This is just a Nostr relay. For the sake of simplicity and checking the behaviour of the replicator, an instance of the signalling server is hosted by vrtmrz. You can use the experimental server provided by vrtmrz, or you can use any other server.\n\nBy the way, even if the signalling server does not store our data, it can see the connection information of some of our devices. Please be aware of this. Also, be cautious when using the server provided by someone else.", + "liveSyncReplicator.couldNotConnectToRemoteDb": "Could not connect to remote database: ${d}", + "obsidianLiveSyncSettingTab.titleSynchronizationMethod": "Synchronization Method", + "obsidianLiveSyncSettingTab.titleConflictResolution": "Conflict resolution", + "lang-def": "%{lang_def}", + "liveSyncReplicator.remoteDbDestroyError": "Something happened on Remote Database Destroy:", + "obsidianLiveSyncSettingTab.msgConfigCheck": "--Config check--", + "Replicator.Message.SomeModuleFailed": "Replication has been cancelled by some module failure", + "moduleCheckRemoteSize.titleDatabaseSizeLimitExceeded": "Remote storage size exceeded the limit", + "(MB) If this is set, changes to local and remote files that are larger than this will be skipped. If the file becomes smaller again, a newer one will be used.": "(MB) If this is set, changes to local and remote files that are larger than this will be skipped. If the file becomes smaller again, a newer one will be used.", + "obsidianLiveSyncSettingTab.logCannotUseCloudant": "This feature cannot be used with IBM Cloudant.", + "moduleMigration.logMigratedSameBehaviour": "Migrated to db:${current} with the same behaviour as before", + "Batch limit": "Batch limit", + "obsidianLiveSyncSettingTab.btnFix": "Fix", + "K.short_p2p_sync": "P2P Sync", + "Passphrase": "Passphrase", + "Use splitting-limit-capped chunk splitter": "Use splitting-limit-capped chunk splitter", + "Reset the remote storage size threshold and check the remote storage size again.": "Reset the remote storage size threshold and check the remote storage size again.", + "Ui.SetupWizard.Rebuild.BackupWarning": "This is an extremely powerful operation. We strongly recommend that you copy your Vault folder to a safe location.", + "lang-zh-tw": "繁體中文", + "The maximum total size of chunks that can be incubated within the document. Chunks exceeding this size will immediately graduate to independent chunks.": "The maximum total size of chunks that can be incubated within the document. Chunks exceeding this size will immediately graduate to independent chunks.", + "(Beta) Use ignore files": "(Beta) Use ignore files", + "obsidianLiveSyncSettingTab.msgSetCorsOrigins": "Set cors.origins", + "moduleLiveSyncMain.msgScramEnabled": "Self-hosted LiveSync has been configured to ignore some events. Is this correct?\n\n| Type | Status | Note |\n|:---:|:---:|---|\n| Storage Events | ${fileWatchingStatus} | Every modification will be ignored |\n| Database Events | ${parseReplicationStatus} | Every synchronised change will be postponed |\n\nDo you want to resume them and restart Obsidian?\n\n> [!DETAILS]-\n> These flags are set by the plug-in while rebuilding, or fetching. If the process ends abnormally, it may be kept unintended.\n> If you are not sure, you can try to rerun these processes. Make sure to back your vault up.\n", + "Ui.RemoteE2EE.StronglyRecommended": "Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server. This means that even if someone gains access to the server, they won't be able to read your data without the passphrase.", + "obsidianLiveSyncSettingTab.msgConnectionCheck": "--Connection check--", + "Doctor.Button.FixButNoRebuild": "Fix it but no rebuild", + "Do not keep metadata of deleted files.": "Do not keep metadata of deleted files.", + "Batch database update": "Batch database update", + "Doctor.Dialogue.Main": "Hi! Config Doctor has been activated because of ${activateReason}!\nAnd, unfortunately some configurations were detected as potential problems.\nPlease be assured. Let's solve them one by one.\n\nTo let you know ahead of time, we will ask you about the following items.\n\n${issues}\n\nShall we get started?", + "obsidianLiveSyncSettingTab.msgOriginCheck": "Origin check: ${org}", + "Username": "Username", + "Ui.ScanQRCode.Title": "Scan QR Code", + "TweakMismatchResolve.Message.WarningIncompatibleRebuildRequired": "\n>[!WARNING]\n> We have detected that some of the values are different to make incompatible the local database with the remote database.\n> Either local or remote rebuilds are required. Both of them takes a few minutes or more. **Make sure it is safe to perform it now.**", + "Doctor.Message.RebuildRequired": "Attention! A rebuild is required to apply this!", + "Ui.SetupWizard.Bucket.Title": "S3/MinIO/R2 Configuration", + "obsidianLiveSyncSettingTab.defaultLanguage": "Default", + "Ui.SetupWizard.Fetch.BackupDone": "I have created a backup of my Vault.", + "Ui.SetupWizard.Rebuild.BackupUnableAdvice": "You should create a new synchronisation destination and rebuild your data there. After that, synchronise to a brand new vault on each other device with the new remote one by one.", + "Ui.SetupWizard.Fetch.Proceed": "Reset and Resume Synchronisation", + "obsidianLiveSyncSettingTab.msgSettingsUnchangeableDuringSync": "These settings are unable to be changed during synchronization. Please disable all syncing in the \"Sync Settings\" to unlock.", + "obsidianLiveSyncSettingTab.msgNonHTTPSWarning": "Cannot connect to non-HTTPS URI. Please update your config and try again.", + "obsidianLiveSyncSettingTab.errRequireValidUser": "❗ chttpd.require_valid_user is wrong.", + "obsidianLiveSyncSettingTab.msgSelectAndApplyPreset": "Please select and apply any preset item to complete the wizard.", + "obsidianLiveSyncSettingTab.titleCouchDB": "CouchDB", + "If enabled, newly created chunks are temporarily kept within the document, and graduated to become independent chunks once stabilised.": "If enabled, newly created chunks are temporarily kept within the document, and graduated to become independent chunks once stabilised.", + "P2P.FailedToOpen": "Failed to open P2P connection to the signalling server.", + "Ui.UseSetupURI.InvalidInfo": "The Setup-URI does not appear to be valid. Please check that you have copied it correctly.", + "Ui.RemoteE2EE.AlgorithmWarning": "Changing the encryption algorithm will prevent access to any data previously encrypted with a different algorithm.", + "Ui.SetupWizard.CouchDBCheck.Fix": "Fix", + "P2P.NoKnownPeers": "No peers has been detected, waiting incoming other peers...", + "obsidianLiveSyncSettingTab.logCheckPassphraseFailed": "ERROR: Failed to check passphrase with the remote server:\n${db}.", + "Ui.SetupWizard.Fetch.VaultIdentical": "The files in this Vault are almost identical to the server's.", + "Ui.SetupWizard.Rebuild.ConfirmSyncDisabled": "I understand that other devices will no longer be able to synchronise, and will need to be reset the synchronisation information.", + "Ui.RemoteE2EE.ButtonCancel": "Cancel", + "obsidianLiveSyncSettingTab.okRequireValidUser": "✔ chttpd.require_valid_user is ok.", + "The Hash algorithm for chunk IDs": "The Hash algorithm for chunk IDs", + "obsidianLiveSyncSettingTab.titleLogging": "Logging", + "Suspend database reflecting": "Suspend database reflecting", + "obsidianLiveSyncSettingTab.titleRemoteServer": "Remote Server", + "obsidianLiveSyncSettingTab.optionCancel": "Cancel", + "Doctor.Dialogue.TitleFix": "Fix issue ${current}/${total}", + "obsidianLiveSyncSettingTab.optionMinioS3R2": "Minio,S3,R2", + "obsidianLiveSyncSettingTab.btnCheck": "Check", + "Batch size of on-demand fetching": "Batch size of on-demand fetching", + "moduleMigration.logMigrationFailed": "Migration failed or cancelled from ${old} to ${current}", + "obsidianLiveSyncSettingTab.optionFetchFromRemote": "Fetch from Remote", + "obsidianLiveSyncSettingTab.nameValidateDatabaseConfig": "Validate Database Configuration", + "password": "password", + "Ui.RemoteE2EE.StronglyRecommendedTitle": "Strongly Recommended", + "Process small files in the foreground": "Process small files in the foreground", + "obsidianLiveSyncSettingTab.optionOkReadEverything": "OK, I have read everything.", + "Ui.SetupWizard.Rebuild.BackupSkipped": "I understand the risks and will proceed without a backup.", + "obsidianLiveSyncSettingTab.levelAdvanced": " (Advanced)", + "P2P.AskPassphraseForDecrypt": "The remote peer shared the configuration. Please input the passphrase to decrypt the configuration.", + "Password": "Password", + "obsidianLiveSyncSettingTab.titleSyncSettingsViaMarkdown": "Sync Settings via Markdown", + "Setup.Doctor.Title": "Do you want to consult the doctor?", + "moduleMigration.optionEnableBoth": "Enable both", + "obsidianLiveSyncSettingTab.descFetchConfigFromRemote": "Fetch necessary settings from already configured remote server.", + "Setup.Apply.Buttons.ApplyAndMerge": "Apply and Merge", + "Doctor.Level.Necessary": "Necessary", + "moduleMigration.docUri": "https://github.com/vrtmrz/obsidian-livesync/blob/main/README.md#how-to-use", + "obsidianLiveSyncSettingTab.logEstimatedSize": "Estimated size: ${size}", + "obsidianLiveSyncSettingTab.logConfiguredPeriodic": "Configured synchronization mode: Periodic", + "obsidianLiveSyncSettingTab.okAdminPrivileges": "✔ You have administrator privileges.", + "TweakMismatchResolve.Message.UseRemote.WarningRebuildRequired": "\n>[!WARNING]\n> Some remote configurations are not compatible with the local database of this device. Rebuilding the local database will be required.\n> ***Please ensure that you have time and are connected to a stable network to apply!***", + "moduleCheckRemoteSize.option2GB": "2GB (Standard)", + "obsidianLiveSyncSettingTab.logCouchDbConfigSet": "CouchDB Configuration: ${title} -> Set ${key} to ${value}", + "TweakMismatchResolve.Action.UseRemote": "Apply settings to this device", + "Doctor.Message.NoIssues": "No issues detected!", + "obsidianLiveSyncSettingTab.logDatabaseConnected": "Database connected", + "Endpoint URL": "Endpoint URL", + "obsidianLiveSyncSettingTab.labelEnabled": "🔁 : Enabled", + "Scan changes on customization sync": "Scan changes on customization sync", + "Setup.ShowQRCode.Desc": "Show QR code to transfer the settings.", + "Ui.UseSetupURI.ButtonCancel": "Cancel", + "moduleCheckRemoteSize.logCheckingStorageSizes": "Checking storage sizes", + "Ui.SetupWizard.Common.ExperimentalSettings": "Experimental Settings", + "obsidianLiveSyncSettingTab.optionRebuildBoth": "Rebuild Both from This Device", + "Should we prompt you about conflicting files when a file is opened?": "Should we prompt you about conflicting files when a file is opened?", + "obsidianLiveSyncSettingTab.nameDiscardSettings": "Discard existing settings and databases", + "obsidianLiveSyncSettingTab.msgAreYouSureProceed": "Are you sure to proceed?", + "lang-ko": "한국어", + "obsidianLiveSyncSettingTab.optionApply": "Apply", + "obsidianLiveSyncSettingTab.warnNoAdmin": "⚠ You do not have administrator privileges.", + "obsidianLiveSyncSettingTab.msgFetchConfigFromRemote": "Do you want to fetch the config from the remote server?", + "obsidianLiveSyncSettingTab.descEnableLiveSync": "Only enable this after configuring either of the above two options or completing all configuration manually.", + "obsidianLiveSyncSettingTab.optionPeriodicWithBatch": "Periodic w/ batch", + "Replicator.Message.VersionUpFlash": "An update has been detected. Please open the Settings dialogue and check the Change Log. Replication has been cancelled.", + "Enable this if your Object Storage doesn't support CORS": "Enable this if your Object Storage doesn't support CORS", + "(Not recommended) If set, credentials will be stored in the file.": "(Not recommended) If set, credentials will be stored in the file.", + "Replicator.Message.InitialiseFatalError": "No replicator is available, this is the fatal error.", + "moduleCheckRemoteSize.optionNoWarn": "No, never warn please", + "Filename": "Filename", + "Encrypt contents on the remote database. If you use the plugin's synchronization feature, enabling this is recommended.": "Encrypt contents on the remote database. If you use the plugin's synchronization feature, enabling this is recommended.", + "Ui.SetupWizard.CouchDB.Title": "CouchDB Configuration", + "Setup.ShowQRCode": "Show QR code", + "moduleMigration.logSetupCancelled": "The setup has been cancelled, Self-hosted LiveSync waiting for your setup!", + "liveSyncReplicator.remoteDbMarkedResolved": "Remote database has been marked resolved.", + "If enabled per-filed efficient customization sync will be used. We need a small migration when enabling this. And all devices should be updated to v0.23.18. Once we enabled this, we lost a compatibility with old versions.": "If enabled per-filed efficient customization sync will be used. We need a small migration when enabling this. And all devices should be updated to v0.23.18. Once we enabled this, we lost a compatibility with old versions.", + "obsidianLiveSyncSettingTab.msgSetCorsCredentials": "Set cors.credentials", + "Setting.TroubleShooting.ScanBrokenFiles": "Scan for broken files", + "TweakMismatchResolve.Title.TweakResolving": "Configuration Mismatch Detected", + "Suspend file watching": "Suspend file watching", + "obsidianLiveSyncSettingTab.panelSetup": "Setup", + "Encrypting sensitive configuration items": "Encrypting sensitive configuration items", + "Doctor.Level.Must": "Must", + "liveSyncReplicator.replicationInProgress": "Replication is already in progress", + "Before v0.17.16, we used an old adapter for the local database. Now the new adapter is preferred. However, it needs local database rebuilding. Please disable this toggle when you have enough time. If leave it enabled, also while fetching from the remote database, you will be asked to disable this.": "Before v0.17.16, we used an old adapter for the local database. Now the new adapter is preferred. However, it needs local database rebuilding. Please disable this toggle when you have enough time. If leave it enabled, also while fetching from the remote database, you will be asked to disable this.", + "TweakMismatchResolve.Action.UseRemoteAcceptIncompatible": "Apply settings to this device, but and ignore incompatibility", + "Analyse database usage and generate a TSV report for diagnosis yourself. You can paste the generated report with any spreadsheet you like.": "Analyse database usage and generate a TSV report for diagnosis yourself. You can paste the generated report with any spreadsheet you like.", + "obsidianLiveSyncSettingTab.titleFetchSettings": "Fetch Settings", + "Sync on Save": "Sync on Save", + "Requires restart of Obsidian.": "Requires restart of Obsidian.", + "obsidianLiveSyncSettingTab.panelPrivacyEncryption": "Privacy & Encryption", + "obsidianLiveSyncSettingTab.titleRemoteConfigCheckFailed": "Remote Configuration Check Failed", + "obsidianLiveSyncSettingTab.logCouchDbConfigFail": "CouchDB Configuration: ${title} failed", + "obsidianLiveSyncSettingTab.titleReset": "Reset", + "Setup.Apply.Message": "The new configuration is ready. Let us proceed to apply it.\nThere are several ways to apply this:\n\n- Apply and Fetch\n Configure this device as a new client. After applying, synchronise from the remote server.\n- Apply and Merge\n Configure on a device that already has the file. It processes the local files and transfers the differences. Conflicts may arise.\n- Apply and Rebuild\n Rebuild the remote using local files. This is typically done if the server becomes corrupted or we wish to start from scratch.\n Other devices will be locked and required to re-fetch.\n- Only Apply\n Apply only. Conflicts may arise if a rebuild is required.", + "Use dynamic iteration count": "Use dynamic iteration count", + "Ui.SetupWizard.Rebuild.BackupUnable": "I am unable to create a backup of my Vaults.", + "Enable edge case treatment features": "Enable edge case treatment features", + "Analyse": "Analyse", + "moduleMigration.fix0256.buttons.checkItLater": "Check it later", + "Ui.SetupWizard.Rebuild.BackupQuestion": "Have you created a backup before proceeding?", + "Scan customization before replicating.": "Scan customization before replicating.", + "moduleMigration.optionEnableFilenameCaseInsensitive": "Enable only #1", + "The delay for consecutive on-demand fetches": "The delay for consecutive on-demand fetches", + "Setup.Apply.Buttons.ApplyAndRebuild": "Apply and Rebuild", + "obsidianLiveSyncSettingTab.titleFetchConfig": "Fetch Config", + "Replicator.Dialogue.Locked.Message": "Remote database is locked. This is due to a rebuild on one of the terminals.\nThe device is therefore asked to withhold the connection to avoid database corruption.\n\nThere are three options that we can do:\n\n- %{Replicator.Dialogue.Locked.Action.Fetch}\n The most preferred and reliable way. This will dispose the local database once, and reset all synchronisation information from the remote database again, In most case, we can perform this safely. However, it takes some time and should be done in stable network.\n- %{Replicator.Dialogue.Locked.Action.Unlock}\n This method can only be used if we are already reliably synchronised by other replication methods. This does not simply mean that we have the same files. If you are not sure, you should avoid it.\n- %{Replicator.Dialogue.Locked.Action.Dismiss}\n This will cancel the operation. And we will asked again on next request.\n", + "Ui.RemoteE2EE.DefaultAlgorithmDesc": "In most cases, you should stick with the default algorithm.", + "moduleLiveSyncMain.logLoadingPlugin": "Loading plugin...", + "obsidianLiveSyncSettingTab.titleOnlineTips": "Online Tips", + "Notify all setting files": "Notify all setting files", + "Ui.SetupWizard.Fetch.BackupRecommendation": "We recommend that you copy your Vault folder to a safe location. This will provide a safeguard in case a large number of conflicts arise, or if you accidentally synchronise with an incorrect destination.", + "Use timeouts instead of heartbeats": "Use timeouts instead of heartbeats", + "Secret Key": "Secret Key", + "liveSyncReplicator.checkingLastSyncPoint": "Looking for the point last synchronized point.", + "Ui.RemoteE2EE.AdvancedTitle": "Advanced", + "Sync on File Open": "Sync on File Open", + "The maximum number of chunks that can be incubated within the document. Chunks exceeding this number will immediately graduate to independent chunks.": "The maximum number of chunks that can be incubated within the document. Chunks exceeding this number will immediately graduate to independent chunks.", + "obsidianLiveSyncSettingTab.msgInvalidPassphrase": "Your encryption passphrase might be invalid. Are you sure you want to continue?", + "Write credentials in the file": "Write credentials in the file", + "moduleObsidianMenu.replicate": "Replicate", + "Scan customization every 1 minute.": "Scan customization every 1 minute.", + "TweakMismatchResolve.Message.Main": "\nThe settings in the remote database are as follows. These values are configured by other devices, which are synchronised with this device at least once.\n\nIf you want to use these settings, please select %{TweakMismatchResolve.Action.UseConfigured}.\nIf you want to keep the settings of this device, please select %{TweakMismatchResolve.Action.Dismiss}.\n\n${table}\n\n>[!TIP]\n> If you want to synchronise all settings, please use `Sync settings via markdown` after applying minimal configuration with this feature.\n\n${additionalMessage}", + "Ui.SetupWizard.Fetch.BackupQuestion": "Have you created a backup before proceeding?", + "obsidianLiveSyncSettingTab.logRebuildNote": "Syncing has been disabled, fetch and re-enabled if desired.", + "moduleMigration.insecureChunkExist.title": "Insecure chunks found!", + "Ui.RemoteE2EE.ObfuscatePropertiesDesc": "Obfuscating properties adds an additional layer of security by making it harder to identify the structure and names of your files and folders on the remote server.", + "Bucket Name": "Bucket Name", + "TweakMismatchResolve.Action.UseMineWithRebuild": "Update remote database settings and rebuild again", + "Encryption phassphrase. If changed, you should overwrite the server's database with the new (encrypted) files.": "Encryption phassphrase. If changed, you should overwrite the server's database with the new (encrypted) files.", + "liveSyncReplicator.beforeLiveSync": "Before LiveSync, start OneShot once...", + "RedFlag.FetchRemoteConfig.Message": "Do you want to fetch and apply remotely stored preference settings to the device?", + "Should we prompt you for every single merge, even if we can safely merge automatcially?": "Should we prompt you for every single merge, even if we can safely merge automatcially?", + "TweakMismatchResolve.Message.UseRemote.WarningRebuildRecommended": "\n>[!NOTICE]\n> Some changes are compatible but may consume extra storage and transfer volumes. A rebuild is recommended. However, a rebuild may not be performed at present, but may be implemented in future maintenance.\n> ***Please ensure that you have time and are connected to a stable network to apply!***", + "TweakMismatchResolve.Action.UseMine": "Update remote database settings", + "obsidianLiveSyncSettingTab.titleEncryptionNotEnabled": "Encryption is not enabled", + "obsidianLiveSyncSettingTab.logCheckingConfigDone": "Checking configuration done", + "obsidianLiveSyncSettingTab.linkOpenInBrowser": "Open in browser", + "P2P.DisabledButNeed": "%{title_p2p_sync} is disabled. Do you really want to enable it?", + "obsidianLiveSyncSettingTab.msgGenerateSetupURI": "All done! Do you want to generate a setup URI to set up other devices?", + "Scan customization periodically": "Scan customization periodically", + "obsidianLiveSyncSettingTab.msgSetMaxDocSize": "Set couchdb.max_document_size", + "liveSyncReplicator.couldNotMarkResolveRemoteDb": "Could not mark resolve remote database.", + "Doctor.Message.SomeSkipped": "We left some issues as is. Shall I ask you again on next startup?", + "Seconds. Saving to the local database will be delayed until this value after we stop typing or saving.": "Seconds. Saving to the local database will be delayed until this value after we stop typing or saving.", + "obsidianLiveSyncSettingTab.warnCorsOriginUnmatched": "⚠ CORS Origin is unmatched ${from}->${to}", + "moduleCheckRemoteSize.optionRebuildAll": "Rebuild Everything Now", + "RedFlag.Fetch.Method.FetchTraditional": "Fetch everything from the remote", + "liveSyncReplicator.liveSyncBegin": "LiveSync begin...", + "liveSyncReplicator.oneShotSyncBegin": "OneShot Sync begin... (${syncMode})", + "obsidianLiveSyncSettingTab.logEncryptionNoSupport": "Your device does not support encryption.", + "Sync after merging file": "Sync after merging file", + "Ui.SetupWizard.Rebuild.ResolveOnOtherDevices": "There is a way to resolve this on other devices.", + "If disabled(toggled), chunks will be split on the UI thread (Previous behaviour).": "If disabled(toggled), chunks will be split on the UI thread (Previous behaviour).", + "moduleLiveSyncMain.logSafetyScanCompleted": "Additional safety scan completed", + "If this is set, changes to local files which are matched by the ignore files will be skipped. Remote changes are determined using local ignore files.": "If this is set, changes to local files which are matched by the ignore files will be skipped. Remote changes are determined using local ignore files.", + "obsidianLiveSyncSettingTab.errMaxDocumentSize": "❗ couchdb.max_document_size is low)", + "TweakMismatchResolve.Table.Row": "| ${name} | ${self} | ${remote} |", + "Ui.SetupWizard.Rebuild.ConfirmIrreversible": "I understand that this action is irreversible once performed.", + "Ui.ScanQRCode.Step3": "On the source device, from the command palette, run the 'Show settings as a QR code' command.", + "Sync on Editor Save": "Sync on Editor Save", + "Ui.SetupWizard.Fetch.VaultQuestion": "To minimise the creation of new conflicts, please select the option that best describes the current state of your Vault. The application will then check your files in the most appropriate way based on your selection.", + "obsidianLiveSyncSettingTab.msgDone": "--Done--", + "moduleMigration.optionKeepPreviousBehaviour": "Keep previous behaviour", + "Number of changes to sync at a time. Defaults to 50. Minimum is 2.": "Number of changes to sync at a time. Defaults to 50. Minimum is 2.", + "P2P.SyncStartedWith": "P2P Sync with ${name} have been started.", + "liveSyncSetting.originalValue": "Original: ${value}", + "Doctor.Dialogue.TitleAlmostDone": "Almost done!", + "Ui.RemoteE2EE.LabelEncrypt": "End-to-End Encryption", + "obsidianLiveSyncSettingTab.panelGeneralSettings": "General Settings", + "obsidianLiveSyncSettingTab.errCorsOrigins": "❗ cors.origins is wrong", + "dialog.yourLanguageAvailable.Title": " Translation is available!", + "Rerun Onboarding Wizard": "Rerun Onboarding Wizard", + "Fetch chunks on demand": "Fetch chunks on demand", + "liveSyncSetting.errorNoSuchSettingItem": "No such setting item: ${key}", + "obsidianLiveSyncSettingTab.msgConfigCheckFailed": "The configuration check has failed. Do you want to continue anyway?", + "obsidianLiveSyncSettingTab.msgSetWwwAuth": "Set httpd.WWW-Authenticate", + "logPane.pause": "Pause", + "logPane.autoScroll": "Auto scroll", + "moduleMigration.optionNoSetupUri": "No, I do not have", + "lang-zh": "简体中文", + "Replicator.Dialogue.Locked.Message.Unlocked": "The remote database has been unlocked. Please retry the operation.", + "Periodic Sync interval": "Periodic Sync interval", + "Doctor.Level.Recommended": "Recommended", + "Use Segmented-splitter": "Use Segmented-splitter", + "Data Compression": "Data Compression", + "Ui.SetupWizard.Fetch.BackupUnable": "I am unable to create a backup of my Vault.", + "moduleInputUIObsidian.optionYes": "Yes", + "Ui.SetupWizard.Fetch.BackupSkipped": "I understand the risks and will proceed without a backup.", + "P2P.SyncAlreadyRunning": "P2P Sync is already running.", + "liveSyncReplicator.remoteDbDestroyed": "Remote Database Destroyed", + "obsidianLiveSyncSettingTab.titleActiveRemoteServer": "Active Remote Server", + "Minimum interval for syncing": "Minimum interval for syncing", + "moduleCheckRemoteSize.msgSetDBCapacity": "We can set a maximum database capacity warning, **to take action before running out of space on the remote storage**.\nDo you want to enable this?\n\n> [!MORE]-\n> - 0: Do not warn about storage size.\n> This is recommended if you have enough space on the remote storage especially you have self-hosted. And you can check the storage size and rebuild manually.\n> - 800: Warn if the remote storage size exceeds 800MB.\n> This is recommended if you are using fly.io with 1GB limit or IBM Cloudant.\n> - 2000: Warn if the remote storage size exceeds 2GB.\n\nIf we have reached the limit, we will be asked to enlarge the limit step by step.\n", + "Ui.SetupWizard.Fetch.VaultUnbalancedDesc": "(e.g., after editing many files whilst offline)", + "Forces the file to be synced when opened.": "Forces the file to be synced when opened.", + "obsidianLiveSyncSettingTab.nameManualSetup": "Manual Setup", + "moduleMigration.optionManualSetup": "Set it up all manually", + "RedFlag.FetchRemoteConfig.Buttons.Cancel": "No, use local settings", + "obsidianLiveSyncSettingTab.msgNotice": "---Notice---", + "lang-ru": "Русский", + "obsidianLiveSyncSettingTab.errEnableCorsChttpd": "❗ chttpd.enable_cors is wrong" } \ No newline at end of file diff --git a/src/common/messagesJson/zh.json b/src/common/messagesJson/zh.json index 28683841..a082aa96 100644 --- a/src/common/messagesJson/zh.json +++ b/src/common/messagesJson/zh.json @@ -747,5 +747,98 @@ "Ui.Settings.SyncSettings.Fetch": "Fetch", "Ui.Settings.SyncSettings.Merge": "Merge", "Ui.Settings.SyncSettings.Overwrite": "Overwrite", - "obsidianLiveSyncSettingTab.logServerConfigurationCheck": "Log Server Configuration Check" + "obsidianLiveSyncSettingTab.logServerConfigurationCheck": "Log Server Configuration Check", + "Ui.SetupWizard.Fetch.PreventFetchConfig": "Prevent fetching configuration from server", + "Ui.UseSetupURI.LabelPassphrase": "Passphrase", + "Ui.SetupWizard.Rebuild.Guidance": "This procedure will first delete all existing synchronisation data from the server. Following this, the server data will be completely rebuilt, using the current state of your Vault on this device as the single, authoritative master copy.", + "Ui.SetupWizard.Fetch.ImportantBody": "If you have unsynchronised changes in your Vault on this device, they will likely diverge from the server's versions after the reset. This may result in a large number of file conflicts.", + "Ui.RemoteE2EE.MultiDestinationWarning": "This setting must be the same even when connecting to multiple synchronisation destinations.", + "Ui.SetupWizard.CouchDB.Title": "CouchDB Configuration", + "Ui.ScanQRCode.Guidance": "Please follow the steps below to import settings from your existing device.", + "Ui.RemoteE2EE.ManualWarning": "Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences. This is a security measure designed to protect your data.", + "Ui.ScanQRCode.ButtonClose": "Close this dialog", + "Ui.UseSetupURI.Title": "Enter Setup URI", + "Ui.UseSetupURI.ErrorFailedToParse": "Failed to parse Setup-URI.", + "Ui.UseSetupURI.Label": "Setup-URI", + "Ui.SetupWizard.Common.ContinueAnyway": "Continue anyway", + "Ui.SetupWizard.Rebuild.BackupDone": "I have created a backup of my Vault.", + "Ui.SetupWizard.P2P.UseDefaultRelay": "Use vrtmrz's relay", + "Ui.P2P.Guidance": "Please enter the Peer-to-Peer Synchronisation information below.", + "Ui.RemoteE2EE.LabelEncryptionAlgorithm": "Encryption Algorithm", + "Ui.RemoteE2EE.WarningSameSetting": "This setting must be the same even when connecting to multiple synchronisation destinations.", + "Ui.Bucket.Guidance": "Please enter the details required to connect to your S3/MinIO/R2 compatible object storage service.", + "Ui.UseSetupURI.ValidMessage": "The Setup-URI is valid and ready to use.", + "Ui.SetupWizard.Rebuild.BackupBeforeProceeding": "Of course, we can back up the data before proceeding.", + "Ui.SetupWizard.Common.HttpsOnlyMobile": "We can use only Secure (HTTPS) connections on Obsidian Mobile.", + "Ui.SetupWizard.Rebuild.PreventFetchConfig": "Prevent fetching configuration from server", + "Ui.CouchDB.Guidance": "Please enter the CouchDB server information below.", + "Ui.UseSetupURI.PlaceholderPassphrase": "Enter your passphrase", + "Ui.SetupWizard.Rebuild.BackupUnable": "I am unable to create a backup of my Vaults.", + "Ui.SetupWizard.Rebuild.BackupQuestion": "Have you created a backup before proceeding?", + "Ui.SetupWizard.Rebuild.WhenToUse": "You should perform this operation only in exceptional circumstances, such as when the server data is completely corrupted, when changes on all other devices are no longer needed, or when the database size has become unusually large in comparison to the Vault size.", + "Ui.RemoteE2EE.PlaceholderPassphrase": "Enter your passphrase", + "Ui.RemoteE2EE.StronglyRecommendedLine1": "Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server.", + "Ui.ScanQRCode.Step2": "On the source device, open Obsidian.", + "Ui.RemoteE2EE.LabelObfuscateProperties": "Obfuscate Properties", + "Ui.RemoteE2EE.PassphraseValidationLine1": "Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences.", + "Ui.RemoteE2EE.DefaultAlgorithmDesc": "In most cases, you should stick with the default algorithm.", + "Ui.SetupWizard.Fetch.BackupRecommendation": "We recommend that you copy your Vault folder to a safe location. This will provide a safeguard in case a large number of conflicts arise, or if you accidentally synchronise with an incorrect destination.", + "Ui.RemoteE2EE.ButtonProceed": "Proceed", + "Ui.UseSetupURI.Guidance": "Please enter the Setup URI that was generated during server installation or on another device, along with the vault passphrase.", + "Ui.RemoteE2EE.AdvancedTitle": "Advanced", + "Ui.SetupWizard.Fetch.ImportantTitle": "Important Notice", + "Ui.SetupWizard.Fetch.UnbalancedNote": "In this scenario, Self-hosted LiveSync will recreate metadata for every file and deliberately generate conflicts. Where the file content is identical, these conflicts will be resolved automatically.", + "Ui.SetupWizard.Fetch.BackupQuestion": "Have you created a backup before proceeding?", + "Ui.RemoteE2EE.ObfuscatePropertiesDesc": "Obfuscating properties adds an additional layer of security by making it harder to identify the structure and names of your files and folders on the remote server.", + "Ui.SetupWizard.Rebuild.BackupWarning": "This is an extremely powerful operation. We strongly recommend that you copy your Vault folder to a safe location.", + "Ui.RemoteE2EE.StronglyRecommended": "Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server. This means that even if someone gains access to the server, they won't be able to read your data without the passphrase.", + "Ui.SetupWizard.CouchDBCheck.DetectAndFix": "Detect and Fix CouchDB Issues", + "Ui.SetupWizard.Fetch.VaultUnbalanced": "There may be differences between the files in this Vault and the server.", + "Ui.ScanQRCode.Title": "Scan QR Code", + "Ui.SetupWizard.Bucket.Title": "S3/MinIO/R2 Configuration", + "Ui.SetupWizard.Fetch.BackupDone": "I have created a backup of my Vault.", + "Ui.SetupWizard.Rebuild.BackupUnableAdvice": "You should create a new synchronisation destination and rebuild your data there. After that, synchronise to a brand new vault on each other device with the new remote one by one.", + "Ui.SetupWizard.Rebuild.ConfirmTitle": "Please Confirm the Following", + "Ui.SetupWizard.Fetch.Proceed": "Reset and Resume Synchronisation", + "Ui.SetupWizard.Rebuild.ResolveOnOtherDevices": "There is a way to resolve this on other devices.", + "Ui.SetupWizard.Rebuild.ConfirmDataLoss": "I understand that all changes made on other smartphones or computers possibly could be lost.", + "Ui.SetupWizard.Rebuild.ResetNotifyOtherDevices": "by resetting the remote, you will be informed on other devices.", + "Ui.SetupWizard.Fetch.VaultIdenticalDesc": "(e.g., immediately after restoring on another computer, or having recovered from a backup)", + "Ui.RemoteE2EE.PassphraseValidationLine2": "Therefore, we ask that you exercise extreme caution when configuring server information manually.", + "Ui.UseSetupURI.InvalidInfo": "The Setup-URI does not appear to be valid. Please check that you have copied it correctly.", + "Ui.SetupWizard.Fetch.BackupUnableNote": "If you understand the risks and still wish to proceed, select so.", + "Ui.RemoteE2EE.AlgorithmWarning": "Changing the encryption algorithm will prevent access to any data previously encrypted with a different algorithm.", + "Ui.SetupWizard.CouchDBCheck.Fix": "Fix", + "Ui.SetupWizard.Fetch.Title": "Reset Synchronisation on This Device", + "Ui.SetupWizard.Rebuild.ConfirmIrreversible": "I understand that this action is irreversible once performed.", + "Ui.RemoteE2EE.Guidance": "Please configure your end-to-end encryption settings.", + "Ui.SetupWizard.Fetch.Guidance": "This will rebuild the local database on this device using the most recent data from the server. This action is designed to resolve synchronisation inconsistencies and restore correct functionality.", + "Ui.ScanQRCode.Step3": "On the source device, from the command palette, run the 'Show settings as a QR code' command.", + "Ui.SetupWizard.Fetch.VaultIdentical": "The files in this Vault are almost identical to the server's.", + "Ui.SetupWizard.Rebuild.ConfirmSyncDisabled": "I understand that other devices will no longer be able to synchronise, and will need to be reset the synchronisation information.", + "Ui.SetupWizard.Fetch.VaultQuestion": "To minimise the creation of new conflicts, please select the option that best describes the current state of your Vault. The application will then check your files in the most appropriate way based on your selection.", + "Ui.RemoteE2EE.ButtonCancel": "Cancel", + "Ui.SetupWizard.Rebuild.Title": "Final Confirmation: Overwrite Server Data with This Device's Files", + "Ui.RemoteE2EE.StronglyRecommendedTitle": "Strongly Recommended", + "Ui.RemoteE2EE.LabelEncrypt": "End-to-End Encryption", + "Ui.SetupWizard.Rebuild.Proceed": "I Understand, Overwrite Server", + "Ui.ScanQRCode.Step1": "On this device, please keep this Vault open.", + "Ui.SetupWizard.Rebuild.BackupSkipped": "I understand the risks and will proceed without a backup.", + "Ui.SetupWizard.Fetch.ConflictNote": "Furthermore, if conflicts are already present in the server data, they will be synchronised to this device as they are, and you will need to resolve them locally.", + "Ui.UseSetupURI.ErrorPassphraseRequired": "Passphrase is required.", + "Ui.SetupWizard.Fetch.VaultIndependentDesc": "(e.g., setting up for the first time on a new smartphone, starting from a clean slate)", + "Ui.SetupWizard.P2P.Title": "P2P Configuration", + "Ui.ScanQRCode.Instruction": "Please follow the steps below to import settings from your existing device.", + "Ui.RemoteE2EE.Title": "End-to-End Encryption", + "Ui.SetupWizard.Fetch.BackupUnable": "I am unable to create a backup of my Vault.", + "Ui.SetupWizard.Fetch.BackupSkipped": "I understand the risks and will proceed without a backup.", + "Ui.RemoteE2EE.StronglyRecommendedLine2": "Also, please note that if you are using Peer-to-Peer synchronization, this configuration will be used when you switch to other methods and connect to a remote server in the future.", + "Ui.SetupWizard.Common.AdvancedSettings": "Advanced Settings", + "Ui.UseSetupURI.ButtonCancel": "Cancel", + "Ui.SetupWizard.Fetch.BackupUnableWarning": "It is strongly advised to create a backup before proceeding. Continuing without a backup may lead to data loss.", + "Ui.UseSetupURI.ButtonProceed": "Test Settings and Continue", + "Ui.SetupWizard.Common.ExperimentalSettings": "Experimental Settings", + "Ui.SetupWizard.Fetch.VaultUnbalancedDesc": "(e.g., after editing many files whilst offline)", + "Ui.ScanQRCode.Step4": "On this device, switch to the camera app or use a QR code scanner to scan the displayed QR code.", + "Ui.SetupWizard.Fetch.VaultIndependent": "This Vault is empty, or contains only new files that are not on the server." } \ No newline at end of file From 9e377ffbb0cbf91af9ff64ccbaa2724677da09f1 Mon Sep 17 00:00:00 2001 From: 52sanmao <56877770+52sanmao@users.noreply.github.com> Date: Sat, 9 May 2026 23:09:54 +0800 Subject: [PATCH 4/4] i18n: refresh shared UI translations --- _tools/check-ui-zh.mjs | 51 + src/UI/components/Check.svelte | 5 +- src/UI/components/Decision.svelte | 4 +- src/UI/components/DialogHeader.svelte | 15 +- src/UI/components/ExtraItems.svelte | 5 +- src/UI/components/Guidance.svelte | 9 +- src/UI/components/InfoNote.svelte | 8 +- src/UI/components/InputRow.svelte | 7 +- src/UI/components/Instruction.svelte | 4 +- src/UI/components/Option.svelte | 4 +- src/UI/components/Password.svelte | 4 +- src/common/messages/combinedMessages.prod.ts | 16164 ++++++++--------- src/common/messages/zh-tw.ts | 4 +- src/common/messagesJson/de.json | 1886 +- src/common/messagesJson/en.json | 450 +- src/common/messagesJson/es.json | 945 +- src/common/messagesJson/ja.json | 660 +- src/common/messagesJson/ko.json | 744 +- src/common/messagesJson/ru.json | 803 +- src/common/messagesJson/zh-tw.json | 1790 +- src/common/messagesJson/zh.json | 808 +- src/common/messagesYAML/de.yaml | 2286 ++- src/common/messagesYAML/en.yaml | 857 +- src/common/messagesYAML/es.yaml | 1492 +- src/common/messagesYAML/ja.yaml | 715 +- src/common/messagesYAML/ko.yaml | 828 +- src/common/messagesYAML/ru.yaml | 1455 +- src/common/messagesYAML/zh-tw.yaml | 1625 +- src/common/messagesYAML/zh.yaml | 1091 +- src/common/rosetta.ts | 1 + 30 files changed, 21274 insertions(+), 13446 deletions(-) create mode 100644 _tools/check-ui-zh.mjs diff --git a/_tools/check-ui-zh.mjs b/_tools/check-ui-zh.mjs new file mode 100644 index 00000000..cd0581a0 --- /dev/null +++ b/_tools/check-ui-zh.mjs @@ -0,0 +1,51 @@ +import { readFileSync } from "node:fs"; +import { resolve } from "node:path"; + +const root = resolve(import.meta.dirname, ".."); +const messageDir = resolve(root, "src/common/messagesJson"); +const en = JSON.parse(readFileSync(resolve(messageDir, "en.json"), "utf8")); +const zh = JSON.parse(readFileSync(resolve(messageDir, "zh.json"), "utf8")); +const zhTw = JSON.parse(readFileSync(resolve(messageDir, "zh-tw.json"), "utf8")); +const placeholderRe = /(%\{[^}]+\}|\$\{[^}]+\})/g; +const tokens = (value) => Array.from(String(value).matchAll(placeholderRe), (match) => match[1]).sort(); + +const allowedFallbackKey = /^(lang-.*|K\.long_p2p_sync|K\.short_p2p_sync|moduleLiveSyncMain\.logPluginVersion|obsidianLiveSyncSettingTab\.linkTroubleshooting|obsidianLiveSyncSettingTab\.(optionCouchDB|optionLiveSync|titleCouchDB)|P2P\.PaneTitle|TweakMismatchResolve\.Table\.Row|Ui\.SetupWizard\.SetupRemote\.CouchDbOption|Ui\.UseSetupURI\.Label|moduleMigration\.docUri|Setup\.QRCode)$/; +const allowedFallbackValue = /^(MB|CouchDB|P2P|S3|MinIO|R2|JWT|IndexedDB|IDB|E2EE|Hatch|Vault|Obsidian|LiveSync|Self-hosted LiveSync|PouchDB|WebRTC|WebSocket|HTTP|HTTPS|Red Flag)$/; + +function checkLanguage(lang, messages) { + const issues = []; + for (const [key, enValue] of Object.entries(en)) { + if (!(key in messages)) { + issues.push(`${lang}: missing key ${key}`); + continue; + } + const value = String(messages[key]); + if (/[?]{2,}|�/.test(value)) { + issues.push(`${lang}: damaged value ${key}=${JSON.stringify(value)}`); + } + if ( + value === enValue && + !allowedFallbackKey.test(key) && + !allowedFallbackValue.test(String(enValue)) + ) { + issues.push(`${lang}: untranslated value ${key}`); + } + const expectedTokens = JSON.stringify(tokens(enValue)); + const actualTokens = JSON.stringify(tokens(value)); + if (expectedTokens !== actualTokens) { + issues.push(`${lang}: placeholder mismatch ${key}: expected ${expectedTokens}, got ${actualTokens}`); + } + } + return issues; +} + +const issues = [...checkLanguage("zh", zh), ...checkLanguage("zh-tw", zhTw)]; +if (issues.length > 0) { + console.error(issues.slice(0, 50).join("\n")); + if (issues.length > 50) { + console.error(`...and ${issues.length - 50} more issues`); + } + process.exit(1); +} + +console.log("Chinese UI i18n check passed"); diff --git a/src/UI/components/Check.svelte b/src/UI/components/Check.svelte index 886bd995..44e0ba4a 100644 --- a/src/UI/components/Check.svelte +++ b/src/UI/components/Check.svelte @@ -1,4 +1,6 @@
diff --git a/src/UI/components/Decision.svelte b/src/UI/components/Decision.svelte index c5a7be03..6bc8b13f 100644 --- a/src/UI/components/Decision.svelte +++ b/src/UI/components/Decision.svelte @@ -1,5 +1,6 @@
-

{title}

- {#if subtitle} -

{subtitle}

+

{displayTitle}

+ {#if displaySubtitle} +

{displaySubtitle}

{/if}
diff --git a/src/UI/components/ExtraItems.svelte b/src/UI/components/ExtraItems.svelte index f2c038e7..82806faa 100644 --- a/src/UI/components/ExtraItems.svelte +++ b/src/UI/components/ExtraItems.svelte @@ -1,13 +1,16 @@
- {title} + {displayTitle}
{@render children?.()}
diff --git a/src/UI/components/Guidance.svelte b/src/UI/components/Guidance.svelte index a8e77e81..0dbd3c9b 100644 --- a/src/UI/components/Guidance.svelte +++ b/src/UI/components/Guidance.svelte @@ -1,5 +1,5 @@
- {#if title} -

{title}

+ {#if translatedTitle} +

{translatedTitle}

{/if} {#if translatedMessage}

{translatedMessage}

diff --git a/src/UI/components/InfoNote.svelte b/src/UI/components/InfoNote.svelte index edfb92dd..aa26b0e3 100644 --- a/src/UI/components/InfoNote.svelte +++ b/src/UI/components/InfoNote.svelte @@ -1,6 +1,8 @@ {#if visible === undefined || visible === true}
- {#if title}

{title}

{/if} + {#if displayTitle}

{displayTitle}

{/if} + {#if displayMessage}

{displayMessage}

{/if} {@render children?.()}
{/if} diff --git a/src/UI/components/InputRow.svelte b/src/UI/components/InputRow.svelte index 4b4be661..5cd041c5 100644 --- a/src/UI/components/InputRow.svelte +++ b/src/UI/components/InputRow.svelte @@ -1,12 +1,15 @@ \ No newline at end of file + diff --git a/src/UI/components/Instruction.svelte b/src/UI/components/Instruction.svelte index d093f4a2..f229f5e6 100644 --- a/src/UI/components/Instruction.svelte +++ b/src/UI/components/Instruction.svelte @@ -1,13 +1,13 @@
diff --git a/src/UI/components/Option.svelte b/src/UI/components/Option.svelte index a7c653fd..cbcbfb1d 100644 --- a/src/UI/components/Option.svelte +++ b/src/UI/components/Option.svelte @@ -1,5 +1,6 @@