diff --git a/_tools/check-ui-zh.mjs b/_tools/check-ui-zh.mjs index 7436fc0e..cd0581a0 100644 --- a/_tools/check-ui-zh.mjs +++ b/_tools/check-ui-zh.mjs @@ -1,30 +1,51 @@ import { readFileSync } from "node:fs"; +import { resolve } from "node:path"; -const files = [ - "src/modules/features/SettingDialogue/PaneHatch.ts", - "src/modules/features/SettingDialogue/PaneMaintenance.ts", - "src/modules/features/SettingDialogue/PaneRemoteConfig.ts", - "src/modules/features/SettingDialogue/PanePatches.ts", -]; +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 pattern = - /(setName|setDesc|setButtonText|appendText|setTitle|promptCopyToClipboard|askString|askYesNoDialog)\(".*[A-Za-z].*"\)/; +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)$/; -let hasFinding = false; - -for (const file of files) { - const lines = readFileSync(file, "utf8").split(/\r?\n/); - lines.forEach((line, index) => { - if (line.trimStart().startsWith("//")) return; - if (pattern.test(line)) { - hasFinding = true; - console.log(`${file}:${index + 1}:${line.trim()}`); +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; } -if (hasFinding) { - process.exitCode = 1; -} else { - console.log("No direct English UI string patterns found in targeted panes."); +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/common/messages/combinedMessages.dev.ts b/src/common/messages/combinedMessages.dev.ts index a183046e..93fdb5e5 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 he } from "./he.ts"; @@ -13,6 +14,7 @@ type MessageKeys = keyof typeof def.def; const messages = { ...def, + ...de, ...es, ...fr, ...he, diff --git a/src/common/messages/combinedMessages.prod.ts b/src/common/messages/combinedMessages.prod.ts index f27af89e..364b7fa9 100644 --- a/src/common/messages/combinedMessages.prod.ts +++ b/src/common/messages/combinedMessages.prod.ts @@ -1,6 +1,7 @@ export const allMessages = { "(Active)": { def: "(Active)", + de: "(Aktiv)", es: "(Activo)", ja: "(有効)", ko: "(활성)", @@ -10,6 +11,7 @@ export const allMessages = { }, "(BETA) Always overwrite with a newer file": { def: "(BETA) Always overwrite with a newer file", + de: "(BETA) Immer überschreiben mit einer neueren Datei", es: "(BETA) Sobrescribir siempre con archivo más nuevo", fr: "(BÊTA) Toujours écraser avec un fichier plus récent", he: "(BETA) תמיד לדרוס עם קובץ חדש יותר", @@ -17,9 +19,11 @@ export const allMessages = { ko: "(베타) 항상 새로운 파일로 덮어쓰기", ru: "(БЕТА) Всегда перезаписывать более новым файлом", zh: "始终使用更新的文件覆盖(测试版)", + "zh-tw": "始終使用更新的檔案覆蓋(測試版)", }, "(Beta) Use ignore files": { def: "(Beta) Use ignore files", + de: "(Beta) Verwenden Sie ignorierende Dateien", es: "(Beta) Usar archivos de ignorar", fr: "(Bêta) Utiliser les fichiers d'exclusion", he: "(בטא) שימוש בקבצי התעלמות", @@ -27,9 +31,11 @@ export const allMessages = { ko: "(베타) 제외 규칙 파일 사용", ru: "(Бета) Использовать файлы игнорирования", zh: "(测试版)使用忽略文件", + "zh-tw": "(測試版)使用忽略檔案", }, "(Days passed, 0 to disable automatic-deletion)": { def: "(Days passed, 0 to disable automatic-deletion)", + de: "(Days übergeben, 0 zum Deaktivieren von Automatik-Auslöschung)", es: "(Días transcurridos, 0 para desactivar)", fr: "(Jours écoulés, 0 pour désactiver la suppression automatique)", he: "(ימים שעברו; 0 לביטול מחיקה אוטומטית)", @@ -37,31 +43,38 @@ export const allMessages = { ko: "(지난 일수, 0으로 설정하면 자동 삭제 비활성화)", ru: "(Дней прошло, 0 для отключения автоматического удаления)", zh: "(已过天数,0为禁用自动删除)", + "zh-tw": "(已過天數,0為禁用自動刪除)", }, "(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.", + de: "(z.B. Stücke online lesen) Wenn diese Option aktiviert ist, liest LiveSync online Brocken statt sie lokal zu replizieren. Es wird empfohlen, die kundenspezifische Größe zu erhöhen.", es: "(Ej: Leer chunks online) Lee chunks directamente en línea. Aumente tamaño de chunks personalizados", fr: "(ex. Lire les fragments en ligne) Si cette option est activée, LiveSync lit les fragments directement en ligne au lieu de les répliquer localement. L'augmentation de la taille personnalisée des fragments est recommandée.", he: "(לדוגמה: קריאת נתחים אונליין) אם אפשרות זו מופעלת, LiveSync קורא נתחים ישירות מהשרת מבלי לשכפל אותם מקומית. מומלץ להגדיל את גודל הנתח המותאם אישית.", 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.", + ru: "(например, читать чанки онлайн) Если эта опция включена, LiveSync будет читать чанки напрямую онлайн вместо локальной репликации. Рекомендуется увеличить пользовательский размер чанка.", zh: "(例如,在线读取块)如果启用此选项,LiveSync 将直接在线读取块,而不是在本地复制块。建议增加自定义块大小", + "zh-tw": + "(例如,線上讀取塊)如果啟用此選項,LiveSync 將直接線上讀取塊,而不是在本地複製塊。建議增加自定義塊大小", }, "(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.", + de: "(MB) Wenn dies eingestellt ist, werden Änderungen an lokalen und Remote-Dateien, die größer als dies sind, übersprungen. Wenn die Datei wieder kleiner wird, wird eine neuere verwendet.", es: "(MB) Saltar cambios en archivos locales/remotos mayores a este tamaño. Si se reduce, se usará versión nueva", fr: "(Mo) Si cette valeur est définie, les modifications des fichiers locaux et distants plus grands que cette taille seront ignorées. Si le fichier redevient plus petit, une version plus récente sera utilisée.", he: "(MB) אם ערך זה מוגדר, שינויים בקבצים מקומיים ומרוחקים הגדולים מגודל זה יידלגו. אם הקובץ יקטן שוב, ייעשה שימוש בגרסה החדשה יותר.", 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.", + ru: "(МБ) Если задано это значение, изменения локальных и удалённых файлов, размер которых превышает его, будут пропускаться. Если файл снова станет меньше, будет использована более новая версия.", zh: "(MB)如果设置了此项,大于此大小的本地和远程文件的更改将被跳过。如果文件再次变小,将使用更新的文件", + "zh-tw": "(MB)如果設定了此項,大於此大小的本地和遠端檔案的更改將被跳過。如果檔案再次變小,將使用更新的檔案", }, "(Mega chars)": { def: "(Mega chars)", + de: "(Mega Chars)", es: "(Millones de caracteres)", fr: "(Méga caractères)", he: "(מגה תווים)", @@ -69,19 +82,23 @@ export const allMessages = { ko: "(메가 문자)", ru: "(Мега символов)", zh: "(百万字符)", + "zh-tw": "(百萬字元)", }, "(Not recommended) If set, credentials will be stored in the file.": { def: "(Not recommended) If set, credentials will be stored in the file.", + de: "(Nicht empfohlen) Wenn gesetzt, werden Anmeldeinformationen in der Datei gespeichert.", es: "(No recomendado) Almacena credenciales en el archivo", fr: "(Non recommandé) Si activé, les identifiants seront stockés dans le fichier.", he: "(לא מומלץ) אם מוגדר, פרטי הגישה יישמרו בקובץ.", ja: "(非推奨) 設定した場合、認証情報がファイルに保存されます。", ko: "(권장하지 않음) 설정한 경우 자격 증명이 파일에 저장됩니다.", - ru: "(Not recommended) If set, credentials will be stored in the file.", + ru: "(Не рекомендуется) Если включено, учётные данные будут сохранены в файле.", zh: "(不建议)如果设置,凭据将存储在文件中", + "zh-tw": "(不建議)如果設定,憑據將儲存在檔案中", }, "(Obsolete) Use an old adapter for compatibility": { def: "(Obsolete) Use an old adapter for compatibility", + de: "(Obsolete) Verwenden Sie einen alten Adapter für Kompatibilität", es: "(Obsoleto) Usar adaptador antiguo", fr: "(Obsolète) Utiliser un ancien adaptateur pour la compatibilité", he: "(מיושן) שימוש במתאם ישן לתאימות לאחור", @@ -89,9 +106,11 @@ export const allMessages = { ko: "(사용 중단) 호환성을 위해 이전 어댑터 사용", ru: "(Устарело) Использовать старый адаптер для совместимости", zh: "(已弃用)为兼容性使用旧适配器", + "zh-tw": "(已棄用)為相容性使用舊介面卡", }, "(RegExp) Empty to sync all files. Set filter as a regular expression to limit synchronising files.": { def: "(RegExp) Empty to sync all files. Set filter as a regular expression to limit synchronising files.", + de: "(RegExp) Leer lassen, um alle Dateien zu synchronisieren. Legen Sie einen Filter als regulären Ausdruck fest, um die zu synchronisierenden Dateien einzuschränken.", es: "(RegExp) Déjelo vacío para sincronizar todos los archivos. Defina un filtro como expresión regular para limitar los archivos que se sincronizan.", ja: "(正規表現)空欄で全ファイルを同期します。正規表現を指定すると、同期対象のファイルを絞り込めます。", ko: "(정규식) 비워 두면 모든 파일을 동기화합니다. 정규식을 지정하면 동기화할 파일을 제한할 수 있습니다.", @@ -101,6 +120,7 @@ export const allMessages = { }, "(RegExp) If this is set, any changes to local and remote files that match this will be skipped.": { def: "(RegExp) If this is set, any changes to local and remote files that match this will be skipped.", + de: "(RegExp) Wenn dies gesetzt ist, werden alle Änderungen an lokalen und Remote-Dateien übersprungen, die diesem Muster entsprechen.", es: "(RegExp) Si se establece, se omitirá cualquier cambio en archivos locales y remotos que coincida con este patrón.", ja: "(正規表現)設定すると、これに一致するローカル/リモートファイルの変更はすべてスキップされます。", ko: "(정규식) 설정하면 이 패턴과 일치하는 로컬 및 원격 파일 변경은 모두 건너뜁니다.", @@ -111,6 +131,7 @@ export const allMessages = { "(Select this if you are already using synchronisation on another computer or smartphone.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": { def: "(Select this if you are already using synchronisation on another computer or smartphone.) This option is suitable if you are new to LiveSync and want to set it up from scratch.", + de: "(Wählen Sie dies, wenn Sie die Synchronisation bereits auf einem anderen Computer oder Smartphone verwenden.) Diese Option ist geeignet, wenn Sie dieses Gerät zu einer bestehenden LiveSync-Einrichtung hinzufügen möchten.", es: "(Seleccione esto si ya utiliza la sincronización en otro ordenador o teléfono). Esta opción es adecuada si desea añadir este dispositivo a una configuración de LiveSync existente。", ja: "(別の PC やスマートフォンですでに同期を利用している場合に選択してください。)この端末を既存の LiveSync 構成に追加する場合に適しています。", ko: "(다른 컴퓨터나 스마트폰에서 이미 동기화를 사용 중인 경우 선택하세요.) 이 장치를 기존 LiveSync 구성에 추가하려는 경우에 적합합니다。", @@ -122,6 +143,7 @@ export const allMessages = { "(Select this if you are configuring this device as the first synchronisation device.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": { def: "(Select this if you are configuring this device as the first synchronisation device.) This option is suitable if you are new to LiveSync and want to set it up from scratch.", + de: "(Wählen Sie dies, wenn Sie dieses Gerät als erstes Synchronisationsgerät einrichten.) Diese Option ist geeignet, wenn Sie LiveSync neu verwenden und von Grund auf einrichten möchten.", es: "(Seleccione esto si está configurando este dispositivo como el primer dispositivo de sincronización). Esta opción es adecuada si es nuevo en LiveSync y desea configurarlo desde cero。", ja: "(この端末を最初の同期端末として設定する場合に選択してください。)LiveSync を初めて利用し、最初から設定したい場合に適しています。", ko: "(이 장치를 첫 번째 동기화 장치로 설정하는 경우 선택하세요.) LiveSync를 처음 사용하며 처음부터 설정하려는 경우에 적합합니다。", @@ -132,6 +154,7 @@ export const allMessages = { }, "> [!INFO]- The connected devices have been detected as follows:\n${devices}": { def: "> [!INFO]- The connected devices have been detected as follows:\n${devices}", + de: "> [!INFO]- Die folgenden verbundenen Geräte wurden erkannt:\n${devices}", ja: "> [!INFO]- 次の接続済みデバイスが検出されました:\n${devices}", ko: "> [!INFO]- 다음 연결된 기기가 감지되었습니다:\n${devices}", ru: "> [!INFO]- Обнаружены следующие подключённые устройства:\n${devices}", @@ -141,6 +164,7 @@ export const allMessages = { "A Setup URI is a single string of text containing your server address and authentication details. Using a URI, if one was generated by your server installation script, provides a simple and secure configuration.": { def: "A Setup URI is a single string of text containing your server address and authentication details. Using a URI, if one was generated by your server installation script, provides a simple and secure configuration.", + de: "Eine Setup-URI ist eine einzelne Zeichenfolge, die Ihre Serveradresse und Authentifizierungsdaten enthält. Wenn Ihre Serverinstallation eine URI erzeugt hat, bietet deren Verwendung eine einfache und sichere Konfiguration。", es: "Un URI de configuración es una única cadena de texto que contiene la dirección del servidor y los datos de autenticación. Si el script de instalación de su servidor generó un URI, usarlo proporciona una configuración sencilla y segura。", ja: "Setup URI は、サーバーアドレスと認証情報を含む 1 本の文字列です。サーバーのインストールスクリプトで生成された URI がある場合は、それを使うと簡単かつ安全に設定できます。", ko: "설정 URI는 서버 주소와 인증 정보를 포함한 단일 문자열입니다. 서버 설치 스크립트가 URI를 생성했다면 이를 사용하면 간단하고 안전하게 구성할 수 있습니다。", @@ -151,6 +175,7 @@ export const allMessages = { }, "Access Key": { def: "Access Key", + de: "Zugang zum Schlüssel", es: "Clave de acceso", fr: "Clé d'accès", he: "מפתח גישה", @@ -158,9 +183,11 @@ export const allMessages = { ko: "액세스 키", ru: "Ключ доступа", zh: "访问密钥", + "zh-tw": "訪問金鑰", }, Activate: { def: "Activate", + de: "Aktivieren", es: "Activar", ja: "有効化", ko: "활성화", @@ -170,14 +197,29 @@ export const allMessages = { }, "Active Remote Configuration": { def: "Active Remote Configuration", + de: "Active Remote Konfiguration", + es: "Configuración remota activa", fr: "Configuration distante active", he: "תצורת שרת מרוחק פעיל", + ja: "有効なリモート設定", + ko: "활성 원격 구성", ru: "Активная удалённая конфигурация", zh: "生效中的远程配置", - "zh-tw": "目前啟用的遠端設定", + "zh-tw": "生效中的遠端配置", + }, + "Active Remote Type": { + def: "Active Remote Type", + de: "Aktiver entfernter Typ", + es: "Tipo remoto activo", + ja: "有効なリモートタイプ", + ko: "활성 원격 유형", + ru: "Активный тип удаленного подключения", + zh: "活动远程类型", + "zh-tw": "作用中的遠端類型", }, "Add default patterns": { def: "Add default patterns", + de: "Standardmuster hinzufügen", es: "Añadir patrones predeterminados", ja: "デフォルトパターンを追加", ko: "기본 패턴 추가", @@ -187,6 +229,7 @@ export const allMessages = { }, "Add new connection": { def: "Add new connection", + de: "Neue Verbindung hinzufügen", es: "Añadir conexión", ja: "接続を追加", ko: "연결 추가", @@ -194,9 +237,20 @@ export const allMessages = { zh: "新增连接", "zh-tw": "新增連線", }, + Advanced: { + def: "Advanced", + de: "Erweitert", + es: "Avanzado", + ja: "詳細設定", + ko: "고급", + ru: "Дополнительно", + zh: "高级", + "zh-tw": "進階", + }, "All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.": { def: "All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.", + de: "Alle Geräte haben denselben Fortschrittswert (${progress}). Ihre Geräte scheinen synchronisiert zu sein. Die Garbage Collection kann fortgesetzt werden.", ja: "すべてのデバイスで進捗値が同じです(${progress})。デバイスは同期されているようなので、Garbage Collection を続行できます。", ko: "모든 기기의 진행 값이 동일합니다(${progress}). 기기들이 동기화된 것으로 보이므로 Garbage Collection을 진행할 수 있습니다.", ru: "У всех устройств одинаковое значение прогресса (${progress}). Похоже, ваши устройства синхронизированы, и можно продолжать Garbage Collection.", @@ -205,6 +259,7 @@ export const allMessages = { }, "Always prompt merge conflicts": { def: "Always prompt merge conflicts", + de: "Immer schnelle Zusammenführung von Konflikten", es: "Siempre preguntar en conflictos", fr: "Toujours demander pour les conflits de fusion", he: "תמיד להציג בקשת אישור לקונפליקטי מיזוג", @@ -212,18 +267,24 @@ export const allMessages = { ko: "항상 병합 충돌 알림", ru: "Всегда запрашивать разрешение конфликтов слияния", zh: "始终提示合并冲突", - "zh-tw": "總是提示合併衝突", + "zh-tw": "始終提示合併衝突", }, Analyse: { def: "Analyse", + de: "Analysieren", + es: "Analizar", fr: "Analyser", he: "ניתוח", + ja: "解析", + ko: "분석", ru: "Анализировать", zh: "立即分析", - "zh-tw": "分析", + "zh-tw": "立即分析", }, "Analyse database usage": { def: "Analyse database usage", + de: "Nutzung der Datenbank", + es: "Analizar el uso de la base de datos", fr: "Analyser l'utilisation de la base de données", he: "ניתוח שימוש במסד נתונים", ja: "データベース使用状況を分析", @@ -235,17 +296,20 @@ export const allMessages = { "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.", + de: "Analyse der Datenbanknutzung und Erstellung eines TSV-Berichts zur Diagnose selbst. Sie können den generierten Bericht mit jedem Tabellenblatt einfügen, das Sie möchten.", + es: "Analice el uso de la base de datos y genere un informe TSV para diagnosticarlo usted mismo. Puede pegar el informe generado en cualquier hoja de cálculo que prefiera.", 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.", he: 'נתח שימוש במסד הנתונים וצור דו"ח TSV לאבחון עצמי. ניתן להדביק את הדו"ח שנוצר בכל גיליון אלקטרוני.', ja: "データベース使用状況を分析し、自分で診断できるよう TSV レポートを生成します。生成したレポートは任意のスプレッドシートに貼り付けて確認できます。", - ko: "데이터베이스 사용량을 분석하고 직접 진단할 수 있도록 TSV 보고서를 생성합니다. 생성된 보고서는 원하는 스프레드시트에 붙여 넣어 확인할 수 있습니다.", + ko: "데이터베이스 사용량을 분석하고 직접 진단할 수 있는 TSV 보고서를 생성합니다. 생성된 보고서를 원하는 스프레드시트에 붙여 넣을 수 있습니다.", ru: "Проанализируйте использование базы данных и создайте TSV-отчёт для самостоятельной диагностики. Полученный отчёт можно вставить в любую удобную для вас таблицу.", zh: "分析数据库使用情况并生成 TSV 报告以供您自行诊断。您可以将生成的报告粘贴到您喜欢的任何电子表格中。", "zh-tw": - "分析資料庫使用情況並產生 TSV 報告,方便你自行診斷。你可以將產生的報告貼到任何慣用的試算表中查看。", + "分析資料庫使用情況並生成 TSV 報告以供您自行診斷。您可以將生成的報告貼上到您喜歡的任何電子表格中。", }, "Apply Latest Change if Conflicting": { def: "Apply Latest Change if Conflicting", + de: "Neueste Änderung anwenden, wenn Konflikte", es: "Aplicar último cambio en conflictos", fr: "Appliquer la dernière modification en cas de conflit", he: "החל שינוי אחרון בעת קונפליקט", @@ -253,10 +317,11 @@ export const allMessages = { ko: "충돌 시 최신 변경 사항 적용", ru: "Применить последнее изменение при конфликте", zh: "如果冲突则应用最新更改", - "zh-tw": "發生衝突時套用最新變更", + "zh-tw": "如果衝突則應用最新更改", }, "Apply preset configuration": { def: "Apply preset configuration", + de: "Voreingestellte Konfiguration anwenden", es: "Aplicar configuración predefinida", fr: "Appliquer une configuration prédéfinie", he: "החל תצורה קבועה מראש", @@ -264,7 +329,7 @@ export const allMessages = { ko: "프리셋 구성 적용", ru: "Применить предустановленную конфигурацию", zh: "应用预设配置", - "zh-tw": "套用預設配置", + "zh-tw": "應用預設配置", }, "Ask a passphrase at every launch": { def: "Ask a passphrase at every launch", @@ -275,8 +340,29 @@ export const allMessages = { zh: "每次启动时询问密码短语", "zh-tw": "每次啟動時都詢問密語", }, + "Automatically broadcast changes to connected peers": { + def: "Automatically broadcast changes to connected peers", + de: "Änderungen automatisch an verbundene Peers senden", + es: "Difundir cambios automáticamente a pares conectados", + ja: "接続済みピアへ変更を自動ブロードキャスト", + ko: "연결된 피어에 변경 사항 자동 브로드캐스트", + ru: "Автоматически рассылать изменения подключенным пирам", + zh: "自动向已连接的对等设备广播更改", + "zh-tw": "自動向已連線的對等裝置廣播變更", + }, + "Automatically start P2P connection on launch": { + def: "Automatically start P2P connection on launch", + de: "P2P-Verbindung beim Start automatisch starten", + es: "Iniciar conexión P2P automáticamente al arrancar", + ja: "起動時に P2P 接続を自動開始", + ko: "시작 시 P2P 연결 자동 시작", + ru: "Автоматически запускать P2P-подключение при запуске", + zh: "启动时自动开始 P2P 连接", + "zh-tw": "啟動時自動開始 P2P 連線", + }, "Automatically Sync all files when opening Obsidian.": { def: "Automatically Sync all files when opening Obsidian.", + de: "Synchronisieren Sie automatisch alle Dateien, wenn Sie Obsidian öffnen.", es: "Sincronizar automáticamente todos los archivos al abrir Obsidian", fr: "Synchroniser automatiquement tous les fichiers à l'ouverture d'Obsidian.", he: "סנכרן את כל הקבצים אוטומטית עם פתיחת Obsidian.", @@ -284,10 +370,11 @@ export const allMessages = { ko: "Obsidian을 열 때 모든 파일을 자동으로 동기화합니다.", ru: "Автоматически синхронизировать все файлы при открытии Obsidian.", zh: "打开 Obsidian 时自动同步所有文件", - "zh-tw": "開啟 Obsidian 時自動同步所有檔案。", + "zh-tw": "開啟 Obsidian 時自動同步所有檔案", }, Back: { def: "Back", + de: "Zurück", es: "Volver", ja: "戻る", ko: "뒤로", @@ -297,6 +384,7 @@ export const allMessages = { }, "Back to non-configured": { def: "Back to non-configured", + de: "Zurück auf nicht konfiguriert", es: "Volver a no configurado", ja: "未設定状態に戻す", ko: "미구성 상태로 되돌리기", @@ -306,6 +394,7 @@ export const allMessages = { }, "Batch database update": { def: "Batch database update", + de: "Update der Batch-Datenbank", es: "Actualización por lotes de BD", fr: "Mise à jour groupée de la base de données", he: "עדכון אצווה למסד נתונים", @@ -313,10 +402,11 @@ export const allMessages = { ko: "일괄 데이터베이스 업데이트", ru: "Пакетное обновление базы данных", zh: "批量数据库更新", - "zh-tw": "批次更新資料庫", + "zh-tw": "批次資料庫更新", }, "Batch limit": { def: "Batch limit", + de: "Batch-Grenz", es: "Límite de lotes", fr: "Limite de lot", he: "מגבלת אצווה", @@ -324,10 +414,11 @@ export const allMessages = { ko: "일괄 제한", ru: "Пакетный лимит", zh: "批量限制", - "zh-tw": "批次上限", + "zh-tw": "批次限制", }, "Batch size": { def: "Batch size", + de: "Stapelgröße", es: "Tamaño de lote", fr: "Taille de lot", he: "גודל אצווה", @@ -339,6 +430,7 @@ export const allMessages = { }, "Batch size of on-demand fetching": { def: "Batch size of on-demand fetching", + de: "Batch Größe des On-Demand-Fetchings", es: "Tamaño de lote para obtención bajo demanda", fr: "Taille de lot pour la récupération à la demande", he: "גודל אצווה במשיכה לפי דרישה", @@ -346,21 +438,25 @@ export const allMessages = { ko: "필요 시 가져올 청크 묶음 크기", ru: "Размер пакета при запросе по требованию", zh: "按需获取的批量大小", - "zh-tw": "按需抓取的批次大小", + "zh-tw": "按需獲取的批次大小", }, "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.", + de: "Vor v0.17.16 haben wir einen alten Adapter für die lokale Datenbank verwendet. Nun wird der neue Adapter bevorzugt. Es braucht jedoch lokale Datenbank-Umbau. Bitte deaktivieren Sie diese Taste, wenn Sie genug Zeit haben. Wenn Sie es aktiviert lassen, auch beim Abrufen aus der Remote-Datenbank, werden Sie aufgefordert, diese zu deaktivieren.", es: "Antes de v0.17.16 usábamos adaptador antiguo. Nuevo adaptador requiere reconstruir BD local. Desactive cuando pueda", fr: "Avant la version v0.17.16, nous utilisions un ancien adaptateur pour la base de données locale. Le nouvel adaptateur est désormais recommandé. Cependant, il nécessite une reconstruction de la base locale. Veuillez désactiver cette option lorsque vous aurez suffisamment de temps. Si elle reste activée, il vous sera également demandé de la désactiver lors de la récupération depuis la base distante.", he: "לפני גרסה 0.17.16, השתמשנו במתאם ישן למסד הנתונים המקומי. כעת המתאם החדש מועדף. עם זאת, הדבר מצריך בנייה מחדש של מסד הנתונים המקומי. אנא כבה אפשרות זו כשיש לך זמן פנוי. אם תשאיר אותה מופעלת, גם בעת משיכה ממסד הנתונים המרוחק, תתבקש לכבות אותה.", 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.", + ru: "До v0.17.16 для локальной базы данных использовался старый адаптер. Теперь предпочтителен новый адаптер. Однако для него требуется перестроение локальной базы данных. Отключите этот переключатель, когда у вас будет достаточно времени. Если оставить его включённым, при получении данных из удалённой базы вам также будет предложено его отключить.", zh: "在 v0.17.16 之前,我们使用旧适配器作为本地数据库。现在首选新适配器。但是,它需要重建本地数据库。请在有足够时间时禁用此开关。如果保持启用状态,并且在从远程数据库获取时,系统将要求您禁用此开关。", + "zh-tw": + "在 v0.17.16 之前,我們使用舊介面卡作為本地資料庫。現在首選新介面卡。但是,它需要重建本地資料庫。請在有足夠時間時禁用此開關。如果保持啟用狀態,並且在從遠端資料庫獲取時,系統將要求您禁用此開關。", }, "Bucket Name": { def: "Bucket Name", + de: "Name des Buckers", es: "Nombre del bucket", fr: "Nom du bucket", he: "שם דלי (Bucket)", @@ -372,6 +468,7 @@ export const allMessages = { }, Cancel: { def: "Cancel", + de: "Abbrechen", es: "Cancelar", ja: "キャンセル", ko: "취소", @@ -381,6 +478,7 @@ export const allMessages = { }, "Cancel Garbage Collection": { def: "Cancel Garbage Collection", + de: "Garbage Collection abbrechen", ja: "Garbage Collection をキャンセル", ko: "Garbage Collection 취소", ru: "Отменить Garbage Collection", @@ -393,14 +491,19 @@ export const allMessages = { }, Check: { def: "Check", + de: "Überprüfung", + es: "Verificar", fr: "Vérifier", he: "בדוק", + ja: "確認", + ko: "확인", ru: "Проверить", zh: "立即检查", - "zh-tw": "檢查", + "zh-tw": "立即檢查", }, "Check and convert non-path-obfuscated files": { def: "Check and convert non-path-obfuscated files", + de: "Nicht pfadverschleierte Dateien prüfen und konvertieren", es: "Comprobar y convertir archivos sin ofuscación de ruta", ja: "パス難読化されていないファイルを確認して変換", ko: "경로 난독화되지 않은 파일 검사 및 변환", @@ -410,6 +513,7 @@ export const allMessages = { }, "Check for documents that have not been converted to path-obfuscated IDs and convert them if necessary.": { def: "Check for documents that have not been converted to path-obfuscated IDs and convert them if necessary.", + de: "Prüft Dokumente, die noch nicht in pfadverschleierte IDs umgewandelt wurden, und konvertiert sie bei Bedarf.", es: "Comprueba los documentos que aún no se hayan convertido a identificadores con ruta ofuscada y conviértelos si es necesario.", ja: "まだパス難読化 ID に変換されていないドキュメントを確認し、必要に応じて変換します。", ko: "아직 경로 난독화 ID로 변환되지 않은 문서를 확인하고 필요하면 변환합니다.", @@ -417,8 +521,19 @@ export const allMessages = { zh: "检查尚未转换为路径混淆 ID 的文档,并在需要时将其转换。", "zh-tw": "檢查尚未轉換為路徑混淆 ID 的文件,並在需要時進行轉換。", }, + "Chunk Splitter": { + def: "Chunk Splitter", + de: "Chunk-Splitter", + es: "Divisor de fragmentos", + ja: "チャンク分割器", + ko: "청크 분할기", + ru: "Разделитель фрагментов", + zh: "数据块分割器", + "zh-tw": "資料區塊分割器", + }, "cmdConfigSync.showCustomizationSync": { def: "Show Customization sync", + de: "Anpassungssynchronisierung anzeigen", es: "Mostrar sincronización de personalización", fr: "Afficher la synchronisation de personnalisation", he: "הצג סנכרון התאמה אישית", @@ -426,10 +541,11 @@ export const allMessages = { ko: "사용자 설정 동기화 표시", ru: "Показать синхронизацию настроек", zh: "显示自定义同步", - "zh-tw": "顯示自訂同步", + "zh-tw": "顯示自定義同步", }, "Comma separated `.gitignore, .dockerignore`": { def: "Comma separated `.gitignore, .dockerignore`", + de: "Comma trennte `.gitignore, .dockerignore`", es: "Separados por comas: `.gitignore, .dockerignore`", fr: "Séparés par des virgules `.gitignore, .dockerignore`", he: "רשימה מופרדת בפסיקים `.gitignore, .dockerignore`", @@ -437,9 +553,11 @@ export const allMessages = { ko: "쉼표로 구분된 `.gitignore, .dockerignore`", ru: "Через запятую `.gitignore, .dockerignore`", zh: "用逗号分隔,例如 `.gitignore, .dockerignore`", + "zh-tw": "用逗號分隔,例如 `.gitignore, .dockerignore`", }, "Compaction in progress on remote database...": { def: "Compaction in progress on remote database...", + de: "Komprimierung auf der Remote-Datenbank läuft...", ja: "リモートデータベースでコンパクションを実行中です...", ko: "원격 데이터베이스에서 압축을 진행 중입니다...", ru: "Выполняется компакция удалённой базы данных...", @@ -448,6 +566,7 @@ export const allMessages = { }, "Compaction on remote database completed successfully.": { def: "Compaction on remote database completed successfully.", + de: "Die Komprimierung auf der Remote-Datenbank wurde erfolgreich abgeschlossen.", ja: "リモートデータベースでのコンパクションが正常に完了しました。", ko: "원격 데이터베이스 압축이 성공적으로 완료되었습니다.", ru: "Компакция удалённой базы данных успешно завершена.", @@ -456,6 +575,7 @@ export const allMessages = { }, "Compaction on remote database failed.": { def: "Compaction on remote database failed.", + de: "Die Komprimierung auf der Remote-Datenbank ist fehlgeschlagen.", ja: "リモートデータベースでのコンパクションに失敗しました。", ko: "원격 데이터베이스 압축에 실패했습니다.", ru: "Компакция удалённой базы данных завершилась ошибкой.", @@ -464,6 +584,7 @@ export const allMessages = { }, "Compaction on remote database timed out.": { def: "Compaction on remote database timed out.", + de: "Die Komprimierung auf der Remote-Datenbank hat eine Zeitüberschreitung erreicht.", ja: "リモートデータベースでのコンパクションがタイムアウトしました。", ko: "원격 데이터베이스 압축 시간이 초과되었습니다.", ru: "Время ожидания компакции удалённой базы данных истекло.", @@ -473,6 +594,7 @@ export const allMessages = { "Compare the content of files between on local database and storage. If not matched, you will be asked which one you want to keep.": { def: "Compare the content of files between on local database and storage. If not matched, you will be asked which one you want to keep.", + de: "Vergleicht den Inhalt der Dateien zwischen lokaler Datenbank und Speicher. Bei Abweichungen werden Sie gefragt, welche Version behalten werden soll.", es: "Compara el contenido de los archivos entre la base de datos local y el almacenamiento. Si no coinciden, se te preguntará cuál deseas conservar.", ja: "ローカルデータベースとストレージ上のファイル内容を比較します。一致しない場合は、どちらを残すか選択できます。", ko: "로컬 데이터베이스와 저장소 간의 파일 내용을 비교합니다. 일치하지 않으면 어떤 쪽을 유지할지 묻게 됩니다.", @@ -482,6 +604,7 @@ export const allMessages = { }, "Compatibility (Conflict Behaviour)": { def: "Compatibility (Conflict Behaviour)", + de: "Kompatibilität (Konfliktverhalten)", es: "Compatibilidad (comportamiento de conflictos)", ja: "互換性(競合時の挙動)", ko: "호환성 (충돌 동작)", @@ -491,6 +614,7 @@ export const allMessages = { }, "Compatibility (Database structure)": { def: "Compatibility (Database structure)", + de: "Kompatibilität (Datenbankstruktur)", es: "Compatibilidad (estructura de la base de datos)", ja: "互換性(データベース構造)", ko: "호환성 (데이터베이스 구조)", @@ -500,6 +624,7 @@ export const allMessages = { }, "Compatibility (Internal API Usage)": { def: "Compatibility (Internal API Usage)", + de: "Kompatibilität (interne API-Nutzung)", es: "Compatibilidad (uso de la API interna)", ja: "互換性(内部 API の利用)", ko: "호환성 (내부 API 사용)", @@ -509,6 +634,7 @@ export const allMessages = { }, "Compatibility (Metadata)": { def: "Compatibility (Metadata)", + de: "Kompatibilität (Metadaten)", es: "Compatibilidad (metadatos)", ja: "互換性(メタデータ)", ko: "호환성 (메타데이터)", @@ -518,6 +644,7 @@ export const allMessages = { }, "Compatibility (Remote Database)": { def: "Compatibility (Remote Database)", + de: "Kompatibilität (Remote-Datenbank)", es: "Compatibilidad (base de datos remota)", ja: "互換性(リモートデータベース)", ko: "호환성 (원격 데이터베이스)", @@ -527,6 +654,7 @@ export const allMessages = { }, "Compatibility (Trouble addressed)": { def: "Compatibility (Trouble addressed)", + de: "Kompatibilität (Problembehebung)", es: "Compatibilidad (problemas corregidos)", ja: "互換性(対処済みの問題)", ko: "호환성 (문제 대응)", @@ -536,12 +664,15 @@ export const allMessages = { }, "Compute revisions for chunks": { def: "Compute revisions for chunks", + de: "Revisionen für Stücke berechnen", + es: "Calcular revisiones para los chunks", fr: "Calculer les révisions pour les fragments", he: "חשב גרסאות לנתחים", ja: "チャンクの修正(リビジョン)を計算", ko: "청크에 대한 리비전 계산", ru: "Вычислять ревизии для чанков", zh: "为 chunks 计算修订版本(以前的行为)", + "zh-tw": "為 chunks 計算修訂版本(以前的行為)", }, "Configuration Encryption": { def: "Configuration Encryption", @@ -554,6 +685,7 @@ export const allMessages = { }, Configure: { def: "Configure", + de: "Konfigurieren", es: "Configurar", ja: "設定", ko: "설정", @@ -563,6 +695,7 @@ export const allMessages = { }, "Configure And Change Remote": { def: "Configure And Change Remote", + de: "Remote konfigurieren und wechseln", es: "Configurar y cambiar remoto", ja: "リモートを設定して切り替える", ko: "원격 구성 및 변경", @@ -572,6 +705,7 @@ export const allMessages = { }, "Configure E2EE": { def: "Configure E2EE", + de: "E2EE konfigurieren", es: "Configurar E2EE", ja: "E2EE を設定", ko: "E2EE 구성", @@ -581,6 +715,7 @@ export const allMessages = { }, "Configure Remote": { def: "Configure Remote", + de: "Remote konfigurieren", es: "Configurar remoto", ja: "リモートを設定", ko: "원격 구성", @@ -590,6 +725,7 @@ export const allMessages = { }, "Configure the same server information as your other devices again, manually, very advanced users only.": { def: "Configure the same server information as your other devices again, manually, very advanced users only.", + de: "Geben Sie dieselben Serverinformationen wie auf Ihren anderen Geräten erneut manuell ein. Nur für sehr erfahrene Benutzer。", es: "Configure manualmente la misma información del servidor que en sus otros dispositivos. Solo para usuarios muy avanzados。", ja: "他の端末と同じサーバー情報を手動で再入力します。上級者向けの方法です。", ko: "다른 장치와 동일한 서버 정보를 다시 수동으로 입력합니다. 고급 사용자 전용입니다。", @@ -599,6 +735,7 @@ export const allMessages = { }, "Connection Method": { def: "Connection Method", + de: "Verbindungsmethode", es: "Método de conexión", ja: "接続方法", ko: "연결 방법", @@ -608,6 +745,7 @@ export const allMessages = { }, "Continue to CouchDB setup": { def: "Continue to CouchDB setup", + de: "Weiter zur CouchDB-Einrichtung", es: "Continuar con la configuración de CouchDB", ja: "CouchDB 設定へ進む", ko: "CouchDB 설정으로 계속", @@ -617,6 +755,7 @@ export const allMessages = { }, "Continue to Peer-to-Peer only setup": { def: "Continue to Peer-to-Peer only setup", + de: "Weiter zur reinen Peer-to-Peer-Einrichtung", es: "Continuar con la configuración solo Peer-to-Peer", ja: "Peer-to-Peer 専用設定へ進む", ko: "Peer-to-Peer 전용 설정으로 계속", @@ -626,6 +765,7 @@ export const allMessages = { }, "Continue to S3/MinIO/R2 setup": { def: "Continue to S3/MinIO/R2 setup", + de: "Weiter zur S3/MinIO/R2-Einrichtung", es: "Continuar con la configuración de S3/MinIO/R2", ja: "S3/MinIO/R2 設定へ進む", ko: "S3/MinIO/R2 설정으로 계속", @@ -635,6 +775,7 @@ export const allMessages = { }, Copy: { def: "Copy", + de: "Kopieren", es: "Copiar", ja: "コピー", ko: "복사", @@ -644,6 +785,8 @@ export const allMessages = { }, "Copy Report to clipboard": { def: "Copy Report to clipboard", + de: "Bericht an die Zwischenablage kopieren", + es: "Copiar el informe al portapapeles", fr: "Copier le rapport dans le presse-papiers", he: 'העתק דו"ח ללוח', ja: "レポートをクリップボードにコピー", @@ -663,6 +806,7 @@ export const allMessages = { }, "Cross-platform": { def: "Cross-platform", + de: "Plattformübergreifend", es: "Multiplataforma", ja: "クロスプラットフォーム", ko: "크로스 플랫폼", @@ -672,6 +816,7 @@ export const allMessages = { }, "Current adapter: {adapter}": { def: "Current adapter: {adapter}", + de: "Aktueller Adapter: {adapter}", es: "Adaptador actual: {adapter}", ja: "現在のアダプター: {adapter}", ko: "현재 어댑터: {adapter}", @@ -679,6 +824,16 @@ export const allMessages = { zh: "当前适配器:{adapter}", "zh-tw": "目前的適配器:{adapter}", }, + "Customization sync": { + def: "Customization sync", + de: "Anpassungssynchronisierung", + es: "Sincronizacion de personalizacion", + ja: "カスタマイズ同期", + ko: "사용자 지정 동기화", + ru: "Синхронизация настроек", + zh: "自定义同步", + "zh-tw": "自訂同步", + }, "Customization Sync": { def: "Customization Sync", es: "Sincronización de personalización", @@ -690,15 +845,17 @@ export const allMessages = { }, "Customization Sync (Beta3)": { def: "Customization Sync (Beta3)", + de: "Anpassung Sync (Beta3)", es: "Sincronización de personalización (Beta3)", ja: "カスタマイズ同期 (Beta3)", ko: "사용자 지정 동기화 (Beta3)", ru: "Синхронизация настроек (Beta3)", zh: "自定义同步(Beta3)", - "zh-tw": "自訂同步(Beta3)", + "zh-tw": "自定義同步(Beta3)", }, "Data Compression": { def: "Data Compression", + de: "Datenkompression", es: "Compresión de datos", fr: "Compression des données", he: "דחיסת נתונים", @@ -714,6 +871,7 @@ export const allMessages = { }, "Database Adapter": { def: "Database Adapter", + de: "Datenbankadapter", es: "Adaptador de base de datos", ja: "データベースアダプター", ko: "데이터베이스 어댑터", @@ -723,6 +881,7 @@ export const allMessages = { }, "Database Name": { def: "Database Name", + de: "Datenbankname", es: "Nombre de la base de datos", fr: "Nom de la base de données", he: "שם מסד נתונים", @@ -734,6 +893,7 @@ export const allMessages = { }, "Database suffix": { def: "Database suffix", + de: "Datenbank suffix", es: "Sufijo de base de datos", fr: "Suffixe de la base de données", he: "סיומת מסד נתונים", @@ -741,10 +901,11 @@ export const allMessages = { ko: "데이터베이스 접미사", ru: "Суффикс базы данных", zh: "数据库后缀", - "zh-tw": "資料庫後綴", + "zh-tw": "資料庫字尾", }, Default: { def: "Default", + de: "Standard", es: "Predeterminado", ja: "デフォルト", ko: "기본값", @@ -754,6 +915,7 @@ export const allMessages = { }, "Delay conflict resolution of inactive files": { def: "Delay conflict resolution of inactive files", + de: "Konfliktauflösung inaktiver Dateien verschieben", es: "Retrasar resolución de conflictos en archivos inactivos", fr: "Différer la résolution des conflits pour les fichiers inactifs", he: "עכב פתרון קונפליקטים לקבצים לא פעילים", @@ -761,10 +923,11 @@ export const allMessages = { ko: "비활성 파일의 충돌 해결 지연", ru: "Отложить разрешение конфликтов для неактивных файлов", zh: "推迟解决不活动文件", - "zh-tw": "延後處理非活動檔案的衝突", + "zh-tw": "推遲解決不活動檔案", }, "Delay merge conflict prompt for inactive files.": { def: "Delay merge conflict prompt for inactive files.", + de: "Verzögern Sie die Zusammenführung von Konflikten für inaktive Dateien.", es: "Retrasar aviso de fusión para archivos inactivos", fr: "Différer l'invite de conflit de fusion pour les fichiers inactifs.", he: "עכב הצגת בקשת מיזוג לקבצים לא פעילים.", @@ -772,10 +935,11 @@ export const allMessages = { ko: "비활성 파일의 병합 충돌 프롬프트 지연.", ru: "Отложить запрос конфликта слияния для неактивных файлов.", zh: "推迟手动解决不活动文件", - "zh-tw": "延後顯示非活動檔案的合併衝突提示。", + "zh-tw": "推遲手動解決不活動檔案", }, Delete: { def: "Delete", + de: "Löschen", es: "Eliminar", ja: "削除", ko: "삭제", @@ -785,6 +949,7 @@ export const allMessages = { }, "Delete all customization sync data": { def: "Delete all customization sync data", + de: "Alle Anpassungssynchronisationsdaten löschen", es: "Eliminar todos los datos de sincronización de personalización", ja: "カスタマイズ同期データをすべて削除", ko: "모든 사용자 정의 동기화 데이터 삭제", @@ -794,6 +959,7 @@ export const allMessages = { }, "Delete all data on the remote server.": { def: "Delete all data on the remote server.", + de: "Alle Daten auf dem Remote-Server löschen.", es: "Eliminar todos los datos del servidor remoto.", ja: "リモートサーバー上のすべてのデータを削除します。", ko: "원격 서버의 모든 데이터를 삭제합니다.", @@ -803,6 +969,7 @@ export const allMessages = { }, "Delete local database to reset or uninstall Self-hosted LiveSync": { def: "Delete local database to reset or uninstall Self-hosted LiveSync", + de: "Lokale Datenbank löschen, um Self-hosted LiveSync zurückzusetzen oder zu deinstallieren", es: "Eliminar la base de datos local para restablecer o desinstalar Self-hosted LiveSync", ja: "Self-hosted LiveSync をリセットまたはアンインストールするため、ローカルデータベースを削除", ko: "Self-hosted LiveSync를 초기화하거나 제거하기 위해 로컬 데이터베이스를 삭제", @@ -812,6 +979,7 @@ export const allMessages = { }, "Delete old metadata of deleted files on start-up": { def: "Delete old metadata of deleted files on start-up", + de: "Löschen Sie alte Metadaten gelöschter Dateien beim Start-up", es: "Borrar metadatos viejos al iniciar", fr: "Supprimer les anciennes métadonnées des fichiers effacés au démarrage", he: "מחק מטה-נתונים ישנים של קבצים שנמחקו בעת הפעלה", @@ -819,10 +987,11 @@ export const allMessages = { ko: "시작 시 삭제된 파일의 오래된 메타데이터 삭제", ru: "Удалять старые метаданные удалённых файлов при запуске", zh: "启动时删除已删除文件的旧元数据", - "zh-tw": "啟動時刪除已刪除檔案的舊中繼資料", + "zh-tw": "啟動時刪除已刪除檔案的舊後設資料", }, "Delete Remote Configuration": { def: "Delete Remote Configuration", + de: "Remote-Konfiguration löschen", es: "Eliminar configuración remota", ja: "リモート設定を削除", ko: "원격 구성 삭제", @@ -832,6 +1001,7 @@ export const allMessages = { }, "Delete remote configuration '{name}'?": { def: "Delete remote configuration '{name}'?", + de: "Remote-Konfiguration „{name}“ löschen?", es: "¿Eliminar la configuración remota '{name}'?", ja: "リモート設定 '{name}' を削除しますか?", ko: "'{name}' 원격 구성을 삭제할까요?", @@ -841,6 +1011,7 @@ export const allMessages = { }, desktop: { def: "desktop", + de: "Desktop", es: "equipo de escritorio", ja: "デスクトップ", ko: "데스크톱", @@ -859,6 +1030,7 @@ export const allMessages = { }, Device: { def: "Device", + de: "Gerät", ja: "デバイス", ko: "기기", ru: "Устройство", @@ -867,6 +1039,7 @@ export const allMessages = { }, "Device name": { def: "Device name", + de: "Bezeichnung des Geräts", es: "Nombre del dispositivo", fr: "Nom de l'appareil", he: "שם מכשיר", @@ -878,6 +1051,7 @@ export const allMessages = { }, "Device Setup Method": { def: "Device Setup Method", + de: "Einrichtungsmethode für das Gerät", es: "Método de configuración del dispositivo", ja: "端末の設定方法", ko: "장치 설정 방법", @@ -887,37 +1061,44 @@ export const allMessages = { }, "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 Default** and then take screenshots, messages and logs. This can be done in the setting dialogue.\nMay you find it easy to use!", + de: "Self-hosted LiveSync verfügt über Übersetzungen für deine Sprache, daher wurde die Einstellung %{Display language} aktiviert.\n\nHinweis: Noch sind nicht alle Meldungen übersetzt. Beiträge sind willkommen!\nHinweis 2: Wenn du ein Issue erstellst, **wechsle bitte zuerst zurück zu %{lang-def}** und erstelle danach Screenshots, Meldungen und Logs. Das kannst du im Einstellungsdialog erledigen.\nWir hoffen, dass die Nutzung angenehm ist!", + es: "LiveSync autohospedado tenía traducciones para su idioma, por lo que se habilitó la configuración %{Display language}.\n\nNota: No todos los mensajes están traducidos. ¡Esperamos tus aportes!\nNota 2: Si crea un problema, **vuelva a Predeterminado** y luego tome capturas de pantalla, mensajes y registros. Esto se puede hacer en el diálogo de configuración.\n¡Que te resulte fácil de usar!", fr: "Self-hosted LiveSync dispose d'une traduction pour votre langue, le paramètre %{Display language} a donc été activé.\n\nNote : Tous les messages ne sont pas traduits. Nous attendons vos contributions !\nNote 2 : Si vous créez un ticket, **veuillez revenir à Par défaut** puis prendre des captures d'écran, messages et journaux. Cela peut être fait dans la boîte de dialogue des paramètres.\nBonne utilisation !", he: "ל-Self-hosted LiveSync יש תרגום לשפתך, ולכן הגדרת %{Display language} הופעלה.\n\nהערה: לא כל ההודעות מתורגמות. אנחנו ממתינים לתרומותיך!\nהערה 2: אם אתה פותח Issue, **אנא חזור ל-%{lang-def}** ואז צלם צילומי מסך, הודעות ויומנים. ניתן לעשות זאת בדיאלוג ההגדרות.\nנקווה שתמצא/י את הפלאגין נוח לשימוש!", - ja: "Self-hosted LiveSync に設定されている言語の翻訳がありましたので、インターフェースの表示言語が適用されました。\n\n注意: 全てのメッセージは翻訳されていません。あなたの貢献をお待ちしています!\nGithubにIssueを作成する際には、 インターフェースの表示言語 を一旦 Default に戻してから、スクショやメッセージ、ログを収集してください。これは設定から変更できます。\n\n便利に使用できれば幸いです。", - ko: "Self-hosted LiveSync에서 귀하의 언어로 번역을 제공하므로 %{Display language} 설정이 활성화되었습니다.\n\n참고: 모든 메시지가 번역되지는 않습니다. 귀하의 기여를 기다리고 있습니다!\n참고 2: 이슈를 생성하는 경우 **Default로 되돌린 후** 스크린샷, 메시지, 로그를 가져와 주세요. 이는 설정 대화 상자에서 할 수 있습니다.\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:若您创建问题报告, **请切换回Default** ,然后截取屏幕截图、消息和日志,此操作可在设置对话框中完成\n愿您使用顺心!", + ja: "Self-hosted LiveSync にはあなたの言語の翻訳があるため、%{Display language} 設定を有効にしました。\n\n注意: すべてのメッセージが翻訳されているわけではありません。翻訳へのご協力をお待ちしています!\n注意 2: Issue を作成する場合は、**デフォルト に戻してから**スクリーンショット、メッセージ、ログを取得してください。これは設定ダイアログで変更できます。\n使いやすく感じていただければ幸いです!", + ko: "Self-hosted LiveSync에서 귀하의 언어로 번역을 제공하므로 %{Display language} 설정이 활성화되었습니다.\n\n참고: 모든 메시지가 번역되지는 않습니다. 귀하의 기여를 기다리고 있습니다!\n참고 2: 이슈를 생성하는 경우 **기본값로 되돌린 후** 스크린샷, 메시지, 로그를 가져와 주세요. 이는 설정 대화 상자에서 할 수 있습니다.\n간편하게 사용하실 수 있었으면 좋겠습니다!", + ru: "Self-hosted LiveSync имеет переводы для вашего языка, поэтому была включена настройка %{Display language}.\n\nПримечание: не все сообщения переведены. Мы ждём ваших предложений!\nПримечание 2: если вы создаёте Issue, **сначала вернитесь к По умолчанию**, а затем сделайте скриншоты, сообщения и логи. Это можно сделать в диалоге настроек.\nНадеемся, вам будет удобно пользоваться!", + zh: "Self-hosted LiveSync已提供您语言的翻译,因此启用了%{Display language}\n\n注意:并非所有消息都已翻译。我们期待您的贡献!\n注意 2:若您创建问题报告, **请切换回默认** ,然后截取屏幕截图、消息和日志,此操作可在设置对话框中完成\n愿您使用顺心!", "zh-tw": - "Self-hosted LiveSync 已提供你目前語言的翻譯,因此已啟用顯示語言設定。\n\n注意:並非所有訊息都已完成翻譯,歡迎協助補充!\n注意 2:如果你要回報問題,請先切回預設語言,再附上截圖、訊息與日誌。\n\n希望你使用愉快!", + "Self-hosted LiveSync已提供您語言的翻譯,因此啟用了%{Display language}\n\n注意:並非所有訊息都已翻譯。我們期待您的貢獻!\n注意 2:若您建立問題報告, **請切換回預設** ,然後擷取螢幕截圖、訊息和日誌,此操作可在設定對話方塊中完成\n願您使用順心!", }, "dialog.yourLanguageAvailable.btnRevertToDefault": { def: "Keep Default", + de: "%{lang-def} beibehalten", + es: "Mantener Predeterminado", fr: "Conserver Par défaut", he: "השאר %{lang-def}", - ja: "Keep Default", - ko: "Default 유지", - ru: "Оставить lang-def", - zh: "保持Default", - "zh-tw": "恢復為預設語言", + ja: "デフォルトを維持", + ko: "기본값 유지", + ru: "Оставить По умолчанию", + zh: "保持默认", + "zh-tw": "保留預設", }, "dialog.yourLanguageAvailable.Title": { def: " Translation is available!", + de: " Übersetzung ist verfügbar!", + es: " ¡La traducción está disponible!", fr: " Une traduction est disponible !", he: " תרגום זמין!", ja: "翻訳が利用可能です!", ko: " 번역을 사용할 수 있습니다!", ru: "Доступен перевод!", zh: " 翻译可用!", - "zh-tw": "已提供你的語言翻譯!", + "zh-tw": " 翻譯可用!", }, "Disables all synchronization and restart.": { def: "Disables all synchronization and restart.", + de: "Deaktiviert die gesamte Synchronisation und startet neu.", es: "Desactiva toda la sincronización y reinicia la aplicación.", ja: "すべての同期を無効にして再起動します。", ko: "모든 동기화를 비활성화하고 재시작합니다.", @@ -927,6 +1108,7 @@ export const allMessages = { }, "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.", + de: "Deaktiviert Protokollierung, zeigt nur Benachrichtigungen. Bitte deaktivieren Sie, wenn Sie ein Problem melden.", es: "Desactiva registros, solo muestra notificaciones. Desactívelo si reporta un problema.", fr: "Désactive la journalisation, n'affiche que les notifications. Veuillez désactiver si vous signalez un problème.", he: "מכבה רישום יומן, מציג התראות בלבד. אנא כבה אם אתה מדווח על בעיה.", @@ -934,10 +1116,11 @@ export const allMessages = { ko: "로깅을 비활성화하고 알림만 표시합니다. 문제를 신고하는 경우 비활성화해 주세요.", ru: "Отключает логирование, показывает только уведомления. Пожалуйста, отключите при сообщении о проблеме.", zh: "禁用日志记录,仅显示通知。如果您报告问题,请禁用此选项", - "zh-tw": "停用日誌記錄,只顯示通知。如果你要回報問題,請關閉此選項。", + "zh-tw": "禁用日誌記錄,僅顯示通知。如果您報告問題,請禁用此選項", }, "Display Language": { def: "Display Language", + de: "Sprache anzeigen", es: "Idioma de visualización", fr: "Langue d'affichage", he: "שפת תצוגה", @@ -949,6 +1132,7 @@ export const allMessages = { }, "Display name": { def: "Display name", + de: "Anzeigename", es: "Nombre para mostrar", ja: "表示名", ko: "표시 이름", @@ -958,6 +1142,7 @@ export const allMessages = { }, "Do not check configuration mismatch before replication": { def: "Do not check configuration mismatch before replication", + de: "Überprüfen Sie die Konfigurationsfehlanpassung vor der Replikation", es: "No verificar incompatibilidades antes de replicar", fr: "Ne pas vérifier les incohérences de configuration avant la réplication", he: "אל תבדוק אי-התאמה בתצורה לפני שכפול", @@ -965,10 +1150,11 @@ export const allMessages = { ko: "복제 전 구성 불일치 확인 안 함", ru: "Не проверять несовпадение конфигурации перед репликацией", zh: "在复制前不检查配置不匹配", - "zh-tw": "複寫前不檢查設定是否不一致", + "zh-tw": "在複製前不檢查配置不匹配", }, "Do not keep metadata of deleted files.": { def: "Do not keep metadata of deleted files.", + de: "Halten Sie keine Metadaten von gelöschten Dateien.", es: "No conservar metadatos de archivos borrados", fr: "Ne pas conserver les métadonnées des fichiers supprimés.", he: "אל תשמור מטה-נתונים של קבצים שנמחקו.", @@ -976,10 +1162,11 @@ export const allMessages = { ko: "삭제된 파일의 메타데이터를 보관하지 않습니다.", ru: "Не хранить метаданные удалённых файлов.", zh: "不保留已删除文件的元数据 ", - "zh-tw": "不保留已刪除檔案的中繼資料。", + "zh-tw": "不保留已刪除檔案的後設資料 ", }, "Do not split chunks in the background": { def: "Do not split chunks in the background", + de: "Nicht teilen Stücke im Hintergrund", es: "No dividir chunks en segundo plano", fr: "Ne pas fragmenter en arrière-plan", he: "אל תפצל נתחים ברקע", @@ -987,10 +1174,11 @@ export const allMessages = { ko: "백그라운드에서 청크 분할 안 함", ru: "Не разделять чанки в фоновом режиме", zh: "不在后台分割 chunks", - "zh-tw": "不在背景分割 chunks", + "zh-tw": "不在後臺分割 chunks", }, "Do not use internal API": { def: "Do not use internal API", + de: "Verwenden Sie nicht interne API", es: "No usar API interna", fr: "Ne pas utiliser l'API interne", he: "אל תשתמש ב-API פנימי", @@ -1002,189 +1190,260 @@ export const allMessages = { }, "Doctor.Button.DismissThisVersion": { def: "No, and do not ask again until the next release", + de: "Nein, und fragen Sie nicht wieder bis zum nächsten Release", + es: "No, y no volver a preguntar hasta la próxima versión", fr: "Non, et ne plus demander jusqu'à la prochaine version", he: "לא, ואל תשאל שוב עד לגרסה הבאה", ja: "いいえ、次のリリースまで再度確認しない", ko: "아니요, 다음 릴리스까지 다시 묻지 않음", ru: "Нет, и не спрашивать до следующего выпуска", zh: "拒绝,并且直到下个版本前不再询问", + "zh-tw": "拒絕,並且直到下個版本前不再詢問", }, "Doctor.Button.Fix": { def: "Fix it", + de: "Beheben Sie es", + es: "Corregir", fr: "Corriger", he: "תקן", ja: "修正する", ko: "수정", ru: "Исправить", zh: "修复", + "zh-tw": "修復", }, "Doctor.Button.FixButNoRebuild": { def: "Fix it but no rebuild", + de: "Reparieren Sie es, aber kein Rebuild", + es: "Corregir sin reconstruir", fr: "Corriger mais sans reconstruction", he: "תקן ללא בנייה מחדש", ja: "修正するが再構築はしない", ko: "수정하지만 재구축하지 않음", ru: "Исправить без перестроения", zh: "修复但不重建", + "zh-tw": "修復但不重建", }, "Doctor.Button.No": { def: "No", + de: "Nein", + es: "No", fr: "Non", he: "לא", ja: "いいえ", ko: "아니요", ru: "Нет", - zh: "拒绝", + zh: "?", + "zh-tw": "?", }, "Doctor.Button.Skip": { def: "Leave it as is", + de: "Lassen Sie es wie", + es: "Dejar como está", fr: "Laisser tel quel", he: "השאר כפי שהוא", ja: "そのままにする", ko: "그대로 두기", ru: "Оставить как есть", zh: "保持不变", + "zh-tw": "保持不變", }, "Doctor.Button.Yes": { def: "Yes", + de: "Ja", + es: "Si", fr: "Oui", he: "כן", ja: "はい", - ko: "예", + ko: "?", ru: "Да", - zh: "确定", + zh: "?", + "zh-tw": "?", }, "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?", + de: "Hi! Config Doctor wurde wegen ${activateReason} aktiviert!\nUnd leider wurden einige Konfigurationen als mögliche Probleme erkannt.\nBitte seien Sie versichert. Wir lösen sie einzeln.\n\nUm Sie vor der Zeit wissen zu lassen, werden wir Sie über die folgenden Artikel fragen.\n\n${issues}\n\nSollen wir anfangen?", + es: "¡Hola! ¡Config Doctor se ha activado debido a ${activateReason}!\nY, lamentablemente, se detectaron algunas configuraciones como posibles problemas.\nTenga la seguridad. Resolvámoslos uno por uno.\n\nPara informarle con anticipación, le preguntaremos sobre los siguientes elementos.\n\n${issues}\n\n¿Empezamos?", fr: "Bonjour ! Config Doctor a été activé en raison de ${activateReason} !\nEt, malheureusement, certaines configurations ont été détectées comme des problèmes potentiels.\nPas d'inquiétude. Résolvons-les un par un.\n\nPour information, nous allons vous interroger sur les éléments suivants.\n\n${issues}\n\nVoulez-vous commencer ?", he: "שלום! רופא התצורה הופעל בגלל ${activateReason}!\nולמרבה הצער, זוהו תצורות שעשויות להיות בעייתיות.\nהיה רגוע/ה. בואו נפתור אותן אחת אחת.\n\nלידיעתך מראש, נשאל אותך על הפריטים הבאים.\n\n${issues}\n\nהאם להתחיל?", 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我们开始处理吗?", + ru: "Здравствуйте! Диагностика настроек была активирована по причине: ${activateReason}!\nК сожалению, некоторые настройки были определены как потенциальные проблемы.\nНе волнуйтесь. Давайте решим их по очереди.\n\nЧтобы заранее сообщить вам, мы спросим о следующих пунктах.\n\n${issues}\n\nНачнём?", + zh: "你好!由于 ${activateReason},Config Doctor 已启动!\n遗憾的是,检测到某些配置可能存在问题。\n请放心,我们会逐项解决。\n\n提前说明一下,我们将询问以下项目。\n\n${issues}\n\n现在开始吗?", + "zh-tw": + "你好!由於 ${activateReason},Config Doctor 已啟動!\n很遺憾,偵測到某些設定可能存在問題。\n請放心,我們會逐項解決。\n\n先讓你知道,我們將詢問以下項目。\n\n${issues}\n\n現在開始嗎?", }, "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?", + de: "\n## ${name}\n\n| Aktuell | Ideal |\n|:---:|:---:|\n| ${current} | ${ideal} |\n\n**Empfehlungsstufe:** ${level}\n\n### Warum wurde dies erkannt?\n\n${reason}\n\n${note}\n\nAuf den idealen Wert korrigieren?", + es: "\n## ${name}\n\n| Actual | ideales |\n|:---:|:---:|\n| ${current} | ${ideal} |\n\n**Nivel de recomendación:** ${level}\n\n### ¿Por qué se ha detectado esto?\n\n${reason}\n\n${note}\n\n¿Fijar esto al valor ideal?", fr: "\n## ${name}\n\n| Actuel | Idéal |\n|:---:|:---:|\n| ${current} | ${ideal} |\n\n**Niveau de recommandation :** ${level}\n\n### Pourquoi ceci a-t-il été détecté ?\n\n${reason}\n\n${note}\n\nCorriger à la valeur idéale ?", he: "\n## ${name}\n\n| נוכחי | אידאלי |\n|:---:|:---:|\n| ${current} | ${ideal} |\n\n**רמת המלצה:** ${level}\n\n### מדוע זה זוהה?\n\n${reason}\n\n${note}\n\nלתקן לערך האידאלי?", 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?", + ru: "\n## ${name}\n\n| Текущее | Рекомендуемое |\n|:---:|:---:|\n| ${current} | ${ideal} |\n\n**Уровень рекомендации:** ${level}\n\n### Почему это было обнаружено?\n\n${reason}\n\n${note}\n\nИсправить до рекомендуемого значения?", + zh: "\n## ${name}\n\n| 当前 | 理想 |\n|:---:|:---:|\n| ${current} | ${ideal} |\n\n**推荐级别:** ${level}\n\n### 为什么会检测到这个问题?\n\n${reason}\n\n${note}\n\n是否修复为理想值?", + "zh-tw": + "\n## ${name}\n\n| 當前 | 理想 |\n|:---:|:---:|\n| ${current} | ${ideal} |\n\n**推薦級別:** ${level}\n\n### 為什麼會檢測到這個問題?\n\n${reason}\n\n${note}\n\n是否修復為理想值?", }, "Doctor.Dialogue.Title": { def: "Self-hosted LiveSync Config Doctor", + de: "Selbstgehostete LiveSync Config Doctor", + es: "Doctor de configuración de LiveSync autohospedado", fr: "Docteur Config Self-hosted LiveSync", he: "Self-hosted LiveSync Config Doctor", ja: "Self-hosted LiveSync 設定診断ツール", ko: "Self-hosted LiveSync 구성 진단 마법사", ru: "Диагностика Self-hosted LiveSync", zh: "Self-hosted LiveSync 配置诊断", + "zh-tw": "Self-hosted LiveSync 配置診斷", }, "Doctor.Dialogue.TitleAlmostDone": { def: "Almost done!", + de: "Fast fertig!", + es: "¡Casi terminado!", fr: "Presque terminé !", he: "כמעט סיימנו!", ja: "あと少しです!", ko: "거의 완료되었습니다!", ru: "Почти готово!", zh: "全部完成!", + "zh-tw": "全部完成!", }, "Doctor.Dialogue.TitleFix": { def: "Fix issue ${current}/${total}", + de: "Problem behoben ${current}/${total}", + es: "Solucionar el problema ${current}/${total}", fr: "Corriger le problème ${current}/${total}", he: "תקן בעיה ${current}/${total}", ja: "問題の修正 ${current}/${total}", ko: "문제 해결 ${current}/${total}", - ru: "Исправление проблемы current/total", + ru: "Исправление проблемы ${current}/${total}", zh: "修复问题 ${current}/${total}", + "zh-tw": "修復問題 ${current}/${total}", }, "Doctor.Level.Must": { def: "Must", + de: "müssen.", + es: "Obligatorio", fr: "Obligatoire", he: "חובה", ja: "必須", ko: "필수", ru: "Обязательно", zh: "必须", + "zh-tw": "必須", }, "Doctor.Level.Necessary": { def: "Necessary", + de: "Notwendig", + es: "Necesario", fr: "Nécessaire", he: "נדרש", ja: "必要", ko: "필수", ru: "Необходимо", zh: "必要", + "zh-tw": "必要", }, "Doctor.Level.Optional": { def: "Optional", + de: "Optional", + es: "Opcional", fr: "Optionnel", he: "אופציונלי", ja: "任意", ko: "선택사항", ru: "Опционально", zh: "可选", + "zh-tw": "可選", }, "Doctor.Level.Recommended": { def: "Recommended", + de: "Empfohlen", + es: "Recomendado", fr: "Recommandé", he: "מומלץ", ja: "推奨", ko: "권장", ru: "Рекомендуется", zh: "推荐", + "zh-tw": "推薦", }, "Doctor.Message.NoIssues": { def: "No issues detected!", + de: "Keine Probleme erkannt!", + es: "¡No se detectaron problemas!", fr: "Aucun problème détecté !", he: "לא זוהו בעיות!", ja: "問題は検出されませんでした!", ko: "문제가 감지되지 않았습니다!", ru: "Проблем не обнаружено!", zh: "未发现问题!", + "zh-tw": "未發現問題!", }, "Doctor.Message.RebuildLocalRequired": { def: "Attention! A local database rebuild is required to apply this!", + de: "Achtung! Eine lokale Datenbank-Wiederaufbau ist erforderlich, um dies anzuwenden!", + es: "¡Atención! ¡Se requiere una reconstrucción de la base de datos local para aplicar esto!", fr: "Attention ! Une reconstruction de la base locale est requise pour appliquer ceci !", he: "שים לב! נדרשת בנייה מחדש של מסד הנתונים המקומי כדי להחיל זאת!", ja: "注意!これを適用するにはローカルデータベースの再構築が必要です!", ko: "주의! 이를 적용하려면 로컬 데이터베이스 재구축이 필요합니다!", ru: "Внимание! Для применения требуется перестроение локальной базы данных!", zh: "注意!需要重建本地数据库以应用此项!", + "zh-tw": "注意!需要重建本地資料庫以應用此項!", }, "Doctor.Message.RebuildRequired": { def: "Attention! A rebuild is required to apply this!", + de: "Achtung! Um dies anzuwenden, ist ein Umbau erforderlich!", + es: "¡Atención! ¡Se requiere una reconstrucción para aplicar esto!", fr: "Attention ! Une reconstruction est requise pour appliquer ceci !", he: "שים לב! נדרשת בנייה מחדש כדי להחיל זאת!", ja: "注意!これを適用するには再構築が必要です!", ko: "주의! 이를 적용하려면 재구축이 필요합니다!", ru: "Внимание! Для применения требуется перестроение!", zh: "注意!需要重建才能应用此项!", + "zh-tw": "注意!需要重建才能應用此項!", }, "Doctor.Message.SomeSkipped": { def: "We left some issues as is. Shall I ask you again on next startup?", + de: "Wir haben einige Probleme hinterlassen. Soll ich dich beim nächsten Start wieder fragen?", + es: "Dejamos algunos problemas como están. ¿Te lo pregunto de nuevo en la próxima puesta en marcha?", fr: "Nous avons laissé certains problèmes en l'état. Dois-je vous demander à nouveau au prochain démarrage ?", he: "השארנו כמה בעיות כפי שהן. האם לשאול שוב בהפעלה הבאה?", ja: "いくつかの問題をそのままにしました。次回起動時に再度確認しますか?", ko: "일부 문제를 그대로 두었습니다. 다음 시작 시 다시 질문할까요?", ru: "Некоторые проблемы оставлены как есть. Спросить снова при следующем запуске?", zh: "我们将某些问题留给了以后处理。是否要在下次启动时再次询问您?", + "zh-tw": "我們將某些問題留給了以後處理。是否要在下次啟動時再次詢問您?", }, "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.", + de: "Die End-to-End-Verschlüsselung ist jetzt robuster und schneller. Auch weil sich die bisherige E2EE in einer erneut umgesetzten Code-Review als kompromittiert erwiesen hat. Es sollte so schnell wie möglich angewendet werden. Entschuldigt euch wirklich für eure Unannehmlichkeiten. Und diese Einstellung ist nicht nach vorne kompatibel. Alle synchronisierten Geräte müssen auf v0.25.0 oder höher aktualisiert werden. Rebuilds sind nicht erforderlich und wird von der neuen Übertragung in das neue Format umgewandelt werden, Es wird jedoch empfohlen, wieder aufzubauen, wann immer möglich.", + es: "El cifrado de extremo a extremo ahora es más robusto y rápido. También porque se descubrió que el E2EE anterior estaba comprometido en una revisión de código realizada nuevamente. Se debe aplicar lo antes posible. Realmente se disculpa por las molestias. Y esta configuración no es compatible con versiones posteriores. Todos los dispositivos sincronizados deben estar actualizados a la versión 0.25.0 o superior. No se requieren reconstrucciones y se convertirán de la nueva transferencia al nuevo formato. Sin embargo, se recomienda reconstruir siempre que sea posible.", fr: "Le chiffrement de bout en bout est désormais plus robuste et plus rapide. Aussi parce que le précédent E2EE s'est révélé compromis lors d'une nouvelle revue de code. Il doit être appliqué dès que possible. Nous nous excusons sincèrement pour la gêne occasionnée. Ce paramètre n'est pas compatible avec les versions antérieures. Tous les appareils synchronisés doivent être mis à jour en v0.25.0 ou supérieur. Les reconstructions ne sont pas requises et seront converties du nouveau transfert vers le nouveau format. Il est toutefois recommandé de reconstruire dans la mesure du possible.", he: "ההצפנה מקצה לקצה עודכנה לגרסה חזקה ומהירה יותר. בנוסף, בסקירת קוד שנערכה מחדש הוסבר שההצפנה הקודמת נפרצת. יש להחיל זאת בהקדם האפשרי. מתנצלים על אי הנוחות. שים לב שהגדרה זו אינה תואמת לאחור. כל המכשירים המסונכרנים חייבים להיות מעודכנים לגרסה 0.25.0 ומעלה. אין צורך בבנייה מחדש והנתונים יומרו בהדרגה לפורמט החדש, אך מומלץ לבנות מחדש בהזדמנות הראשונה.", ja: "エンドツーエンド暗号化がより堅牢で高速になりました。また、以前のE2EEは再コードレビューにより脆弱性が発見されました。できるだけ早く適用することをお勧めします。ご不便をおかけして申し訳ありません。また、この設定は下位互換性がありません。すべての同期デバイスをv0.25.0以降にアップデートする必要があります。再構築は必須ではなく、新しい転送から新しいフォーマットに変換されますが、可能な限り再構築をお勧めします。", + ko: "종단 간 암호화(E2EE)가 더 견고하고 빨라졌습니다. 또한 이전 E2EE가 재검토에서 취약한 것으로 확인되었습니다. 가능한 한 빨리 적용해야 합니다. 불편을 드려 죄송합니다. 이 설정은 이전 방식과 호환되지 않습니다. 동기화된 모든 기기는 v0.25.0 이상으로 업데이트해야 합니다. 재구축은 필수는 아니며 새 전송 방식에서 새 형식으로 변환됩니다. 가능하면 재구축하는 것을 권장합니다.", 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.", + zh: "端到端加密(E2EE)现已更加强大和快速。此外,之前的 E2EE 在重新进行的代码审查中被发现存在安全问题。应尽快应用此更新。对于给您带来的不便深表歉意。请注意,此设置不向前兼容。所有已同步的设备必须更新至 v0.25.0 或更高版本。不需要重建,系统会自动从新的传输转换为新格式,但建议在可能的情况下进行重建。", + "zh-tw": + "端到端加密(E2EE)現已更加強大和快速。此外,之前的 E2EE 在重新進行的程式碼審查中被發現存在安全問題。應儘快應用此更新。對於給您帶來的不便深表歉意。請注意,此設定不向前相容。所有已同步的裝置必須更新至 v0.25.0 或更高版本。不需要重建,系統會自動從新的傳輸轉換為新格式,但建議在可能的情況下進行重建。", }, "Document History": { def: "Document History", - "zh-tw": "文件歷程", + de: "Geschichte des Dokuments", + es: "Historial del documento", + ja: "ドキュメント履歴", + ko: "문서 기록", + ru: "История документа", + zh: "文档历史", + "zh-tw": "文件歷史", }, Duplicate: { def: "Duplicate", + de: "Duplizieren", es: "Duplicar", ja: "複製", ko: "복제", @@ -1194,6 +1453,7 @@ export const allMessages = { }, "Duplicate remote": { def: "Duplicate remote", + de: "Remote duplizieren", es: "Duplicar remoto", ja: "リモート設定を複製", ko: "원격 구성 복제", @@ -1203,6 +1463,7 @@ export const allMessages = { }, "E2EE Configuration": { def: "E2EE Configuration", + de: "E2EE-Konfiguration", es: "Configuración de E2EE", ja: "E2EE 設定", ko: "E2EE 구성", @@ -1212,6 +1473,7 @@ export const allMessages = { }, "Edge case addressing (Behaviour)": { def: "Edge case addressing (Behaviour)", + de: "Behandlung von Randfällen (Verhalten)", es: "Tratamiento de casos límite (comportamiento)", ja: "特殊なケースへの対応(動作)", ko: "특수 상황 처리 (동작)", @@ -1221,6 +1483,7 @@ export const allMessages = { }, "Edge case addressing (Database)": { def: "Edge case addressing (Database)", + de: "Behandlung von Randfällen (Datenbank)", es: "Tratamiento de casos límite (base de datos)", ja: "特殊なケースへの対応(データベース)", ko: "특수 상황 처리 (데이터베이스)", @@ -1230,6 +1493,7 @@ export const allMessages = { }, "Edge case addressing (Processing)": { def: "Edge case addressing (Processing)", + de: "Behandlung von Randfällen (Verarbeitung)", es: "Tratamiento de casos límite (procesamiento)", ja: "特殊なケースへの対応(処理)", ko: "특수 상황 처리 (처리)", @@ -1237,8 +1501,19 @@ export const allMessages = { zh: "边缘情况处理(处理)", "zh-tw": "邊緣情況處理(處理)", }, + "Effectively a directory. Should end with `/`. e.g., `vault-name/`.": { + def: "Effectively a directory. Should end with `/`. e.g., `vault-name/`.", + de: "Entspricht einem Verzeichnis. Sollte mit `/` enden, z. B. `vault-name/`.", + es: "Equivale a un directorio. Debe terminar con `/`, por ejemplo `vault-name/`.", + ja: "実質的にはディレクトリです。`/` で終わる必要があります。例: `vault-name/`。", + ko: "사실상 디렉터리입니다. `/`로 끝나야 합니다. 예: `vault-name/`.", + ru: "Фактически это каталог. Должен заканчиваться на `/`, например `vault-name/`.", + zh: "相当于目录。应以 `/` 结尾,例如 `vault-name/`。", + "zh-tw": "相當於目錄。應以 `/` 結尾,例如 `vault-name/`。", + }, "Emergency restart": { def: "Emergency restart", + de: "Notfallneustart", es: "Reinicio de emergencia", ja: "緊急再起動", ko: "긴급 재시작", @@ -1248,6 +1523,7 @@ export const allMessages = { }, "Enable advanced features": { def: "Enable advanced features", + de: "Ermöglichen Sie erweiterte Funktionen", es: "Habilitar características avanzadas", fr: "Activer les fonctionnalités avancées", he: "הפעל תכונות מתקדמות", @@ -1255,10 +1531,21 @@ export const allMessages = { ko: "고급 기능 활성화", ru: "Включить расширенные функции", zh: "启用高级功能", - "zh-tw": "啟用進階功能", + "zh-tw": "啟用高階功能", + }, + "Enable advanced mode": { + def: "Enable advanced mode", + de: "Erweiterten Modus aktivieren", + es: "Activar modo avanzado", + ja: "詳細モードを有効化", + ko: "고급 모드 사용", + ru: "Включить расширенный режим", + zh: "启用高级模式", + "zh-tw": "啟用進階模式", }, "Enable customization sync": { def: "Enable customization sync", + de: "Anpassungssynchronisation aktivieren", es: "Habilitar sincronización de personalización", fr: "Activer la synchronisation de personnalisation", he: "הפעל סנכרון התאמה אישית", @@ -1266,10 +1553,11 @@ export const allMessages = { ko: "사용자 설정 동기화 활성화", ru: "Включить синхронизацию настроек", zh: "启用自定义同步", - "zh-tw": "啟用自訂同步", + "zh-tw": "啟用自定義同步", }, "Enable Developers' Debug Tools.": { def: "Enable Developers' Debug Tools.", + de: "Aktiviere Debug Tools von Entwicklern.", es: "Habilitar herramientas de depuración", fr: "Activer les outils de débogage pour développeurs.", he: "הפעל כלי ניפוי באגים למפתחים.", @@ -1277,10 +1565,11 @@ export const allMessages = { ko: "개발자 디버그 도구 활성화", ru: "Включить инструменты разработчика.", zh: "启用开发者调试工具 ", - "zh-tw": "啟用開發者除錯工具。", + "zh-tw": "啟用開發者除錯工具 ", }, "Enable edge case treatment features": { def: "Enable edge case treatment features", + de: "Ermöglichen Sie Kantengehäusebehandlungsmerkmale", es: "Habilitar manejo de casos límite", fr: "Activer les fonctionnalités pour cas particuliers", he: "הפעל תכונות לטיפול במקרי קצה", @@ -1290,8 +1579,49 @@ export const allMessages = { zh: "启用边缘情况处理功能", "zh-tw": "啟用邊緣情況處理功能", }, + "Enable forcePathStyle": { + def: "Enable forcePathStyle", + de: "forcePathStyle aktivieren", + es: "Activar forcePathStyle", + ja: "forcePathStyle を有効化", + ko: "forcePathStyle 사용", + ru: "Включить forcePathStyle", + zh: "启用 forcePathStyle", + "zh-tw": "啟用 forcePathStyle", + }, + "Enable P2P Synchronization": { + def: "Enable P2P Synchronization", + de: "P2P-Synchronisierung aktivieren", + es: "Activar sincronización P2P", + ja: "P2P 同期を有効化", + ko: "P2P 동기화 사용", + ru: "Включить P2P-синхронизацию", + zh: "启用 P2P 同步", + "zh-tw": "啟用 P2P 同步", + }, + "Enable per-file customization sync": { + def: "Enable per-file customization sync", + de: "Anpassungssynchronisierung pro Datei aktivieren", + es: "Activar sincronización de personalización por archivo", + ja: "ファイル単位のカスタマイズ同期を有効化", + ko: "파일별 사용자 지정 동기화 사용", + ru: "Включить синхронизацию настроек по файлам", + zh: "启用按文件自定义同步", + "zh-tw": "啟用逐檔自訂同步", + }, + "Enable power user mode": { + def: "Enable power user mode", + de: "Power-User-Modus aktivieren", + es: "Activar modo para usuarios avanzados", + ja: "パワーユーザーモードを有効化", + ko: "고급 사용자 모드 사용", + ru: "Включить режим опытного пользователя", + zh: "启用高级用户模式", + "zh-tw": "啟用進階使用者模式", + }, "Enable poweruser features": { def: "Enable poweruser features", + de: "Enable poweruser Features", es: "Habilitar funciones para usuarios avanzados", fr: "Activer les fonctionnalités pour utilisateurs avancés", he: "הפעל תכונות למשתמש מתקדם", @@ -1299,10 +1629,11 @@ export const allMessages = { ko: "파워 유저 기능 활성화", ru: "Включить функции для опытных пользователей", zh: "启用高级用户功能", - "zh-tw": "啟用進階使用者功能", + "zh-tw": "啟用高階使用者功能", }, "Enable this if your Object Storage doesn't support CORS": { def: "Enable this if your Object Storage doesn't support CORS", + de: "Aktivieren Sie dies, wenn Ihr Objektspeicher CORS nicht unterstützt", es: "Habilitar si su almacenamiento no soporta CORS", fr: "Activer ceci si votre stockage objet ne prend pas en charge CORS", he: "הפעל אם אחסון האובייקטים שלך לא תומך ב-CORS", @@ -1310,10 +1641,11 @@ export const allMessages = { ko: "객체 스토리지가 CORS를 지원하지 않는 경우 활성화하세요", ru: "Включите, если ваше объектное хранилище не поддерживает CORS", zh: "如果您的对象存储不支持 CORS,请启用此功能 ", - "zh-tw": "如果你的物件儲存不支援 CORS,請啟用此選項", + "zh-tw": "如果您的物件儲存不支援 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", + de: "Ermöglichen Sie diese Option, selbst bei Konflikten automatisch die jüngste Änderung der Dokumente anzuwenden", es: "Aplicar cambios recientes automáticamente aunque generen conflictos", fr: "Activer cette option pour appliquer automatiquement la modification la plus récente aux documents même en cas de conflit", he: "הפעל אפשרות זו כדי להחיל אוטומטית את השינוי האחרון במסמכים גם כשיש קונפליקט", @@ -1321,11 +1653,12 @@ export const allMessages = { ko: "이 옵션을 활성화하면 충돌이 있어도 문서에 가장 최근 변경 사항을 자동으로 적용합니다", ru: "Включите эту опцию для автоматического применения последних изменений к документам даже при конфликте", zh: "启用此选项可在文档冲突时自动应用最新的更改", - "zh-tw": "啟用此選項後,即使發生衝突也會自動套用文件的最新變更", + "zh-tw": "啟用此選項可在文件衝突時自動應用最新的更改", }, "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.", + de: "Verschlüsseln Sie Inhalte auf der Remote-Datenbank. Wenn Sie die Synchronisationsfunktion des Plugins verwenden, wird dies empfohlen.", es: "Cifrar contenido en la base de datos remota. Se recomienda habilitar si usa la sincronización del plugin.", fr: "Chiffrer le contenu sur la base de données distante. Si vous utilisez la fonction de synchronisation du plugin, l'activation est recommandée.", he: "הצפן תוכן במסד הנתונים המרוחק. אם אתה משתמש בתכונת הסנכרון של התוסף, מומלץ להפעיל זאת.", @@ -1333,10 +1666,11 @@ export const allMessages = { ko: "원격 데이터베이스의 내용을 암호화합니다. 플러그인의 동기화 기능을 사용하는 경우 활성화를 권장합니다.", ru: "Шифровать содержимое на удалённой базе данных. Рекомендуется включить при использовании функции синхронизации плагина.", zh: "加密远程数据库中的内容。如果您使用插件的同步功能,则建议启用此功能 ", - "zh-tw": "加密遠端資料庫中的內容。如果你使用外掛的同步功能,建議啟用此選項。", + "zh-tw": "加密遠端資料庫中的內容。如果您使用外掛的同步功能,則建議啟用此功能 ", }, "Encrypting sensitive configuration items": { def: "Encrypting sensitive configuration items", + de: "Verschlüsselung sensibler Konfigurationselemente", es: "Cifrando elementos sensibles", fr: "Chiffrement des éléments de configuration sensibles", he: "הצפן פריטי תצורה רגישים", @@ -1344,10 +1678,21 @@ export const allMessages = { ko: "민감한 구성 항목 암호화", ru: "Шифрование конфиденциальных настроек", zh: "加密敏感配置项", - "zh-tw": "加密敏感設定項目", + "zh-tw": "加密敏感配置項", + }, + "Encryption passphrase. If changed, you should overwrite the server's database with the new (encrypted) files.": { + def: "Encryption passphrase. If changed, you should overwrite the server's database with the new (encrypted) files.", + de: "Verschlüsselungs-Passphrase. Wenn sie geändert wird, solltest du die Serverdatenbank mit den neuen verschlüsselten Dateien überschreiben.", + es: "Frase de contraseña de cifrado. Si se cambia, debes sobrescribir la base de datos del servidor con los nuevos archivos cifrados.", + ja: "暗号化パスフレーズ。変更した場合は、新しい暗号化済みファイルでサーバーのデータベースを上書きしてください。", + ko: "암호화 암호문입니다. 변경한 경우 새로 암호화된 파일로 서버 데이터베이스를 덮어써야 합니다.", + ru: "Парольная фраза шифрования. Если она изменена, следует перезаписать базу данных сервера новыми зашифрованными файлами.", + zh: "加密密码短语。如果更改了它,应使用新的加密文件覆盖服务器数据库。", + "zh-tw": "加密密碼短語。如果變更了它,應使用新的加密檔案覆寫伺服器資料庫。", }, "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.", + de: "Verschlüsselung phassphrase. Wenn Sie sich geändert haben, sollten Sie die Datenbank des Servers mit den neuen (verschlüsselten) Dateien überschreiben.", es: "Frase de cifrado. Si la cambia, sobrescriba la base del servidor con los nuevos archivos cifrados.", fr: "Phrase secrète de chiffrement. Si modifiée, vous devriez écraser la base de données du serveur avec les nouveaux fichiers (chiffrés).", he: "ביטוי סיסמה להצפנה. אם שונה, יש לדרוס את מסד הנתונים של השרת בקבצים החדשים (המוצפנים).", @@ -1355,10 +1700,11 @@ export const allMessages = { ko: "패스프레이즈는 암호화에 사용되는 긴 암호 문구입니다. 변경한 경우, 암호화된 새 파일로 서버의 데이터베이스를 덮어써야 합니다.", ru: "Парольная фраза шифрования. При изменении нужно перезаписать базу данных сервера новыми (зашифрованными) файлами.", zh: "加密密码。如果更改,您应该用新的(加密的)文件覆盖服务器的数据库 ", - "zh-tw": "加密密語。如果變更了它,你應以新的(已加密)檔案覆寫伺服器上的資料庫。", + "zh-tw": "加密密碼。如果更改,您應該用新的(加密的)檔案覆蓋伺服器的資料庫 ", }, "End-to-End Encryption": { def: "End-to-End Encryption", + de: "End-to-End-Verschlüsselung", es: "Cifrado de extremo a extremo", fr: "Chiffrement de bout en bout", he: "הצפנה מקצה לקצה", @@ -1366,10 +1712,11 @@ export const allMessages = { ko: "종단간 암호화", ru: "Сквозное шифрование", zh: "端到端加密", - "zh-tw": "端對端加密", + "zh-tw": "端到端加密", }, "Endpoint URL": { def: "Endpoint URL", + de: "Endpunkt-URL", es: "URL del endpoint", fr: "URL du point de terminaison", he: "כתובת נקודת קצה (Endpoint URL)", @@ -1377,10 +1724,11 @@ export const allMessages = { ko: "엔드포인트 URL", ru: "URL конечной точки", zh: "终端URL", - "zh-tw": "端點 URL", + "zh-tw": "終端URL", }, "Enhance chunk size": { def: "Enhance chunk size", + de: "Verbessern Sie die Stückgröße", es: "Mejorar tamaño de chunks", fr: "Améliorer la taille des fragments", he: "הגדל גודל נתח", @@ -1388,10 +1736,11 @@ export const allMessages = { ko: "청크 크기 향상", ru: "Улучшить размер чанка", zh: "增大块大小", - "zh-tw": "擴大 chunk 大小", + "zh-tw": "增大塊大小", }, "Enter Server Information": { def: "Enter Server Information", + de: "Serverinformationen eingeben", es: "Introducir información del servidor", ja: "サーバー情報の入力", ko: "서버 정보 입력", @@ -1401,6 +1750,7 @@ export const allMessages = { }, "Enter the server information manually": { def: "Enter the server information manually", + de: "Serverinformationen manuell eingeben", es: "Introducir manualmente la información del servidor", ja: "サーバー情報を手動で入力する", ko: "서버 정보를 수동으로 입력", @@ -1410,6 +1760,7 @@ export const allMessages = { }, Export: { def: "Export", + de: "Exportieren", es: "Exportar", ja: "エクスポート", ko: "내보내기", @@ -1419,6 +1770,7 @@ export const allMessages = { }, "Failed to connect to remote for compaction.": { def: "Failed to connect to remote for compaction.", + de: "Verbindung zur Remote-Datenbank für die Komprimierung fehlgeschlagen.", ja: "リモートデータベースに接続できず、コンパクションを実行できませんでした。", ko: "압축을 위해 원격 데이터베이스에 연결하지 못했습니다.", ru: "Не удалось подключиться к удалённой базе данных для компакции.", @@ -1427,6 +1779,7 @@ export const allMessages = { }, "Failed to connect to remote for compaction. ${reason}": { def: "Failed to connect to remote for compaction. ${reason}", + de: "Verbindung zur Remote-Datenbank für die Komprimierung fehlgeschlagen. ${reason}", ja: "リモートデータベースに接続できず、コンパクションを実行できませんでした。${reason}", ko: "압축을 위해 원격 데이터베이스에 연결하지 못했습니다. ${reason}", ru: "Не удалось подключиться к удалённой базе данных для компакции. ${reason}", @@ -1435,6 +1788,7 @@ export const allMessages = { }, "Failed to start one-shot replication before Garbage Collection. Garbage Collection Cancelled.": { def: "Failed to start one-shot replication before Garbage Collection. Garbage Collection Cancelled.", + de: "Die Einmal-Replikation vor der Garbage Collection konnte nicht gestartet werden. Die Garbage Collection wurde abgebrochen.", ja: "Garbage Collection 前にワンショットレプリケーションを開始できませんでした。Garbage Collection はキャンセルされました。", ko: "Garbage Collection 전에 일회성 복제를 시작하지 못했습니다. Garbage Collection을 취소합니다.", ru: "Не удалось запустить одноразовую репликацию перед Garbage Collection. Garbage Collection отменена.", @@ -1443,6 +1797,7 @@ export const allMessages = { }, "Failed to start replication after Garbage Collection.": { def: "Failed to start replication after Garbage Collection.", + de: "Die Replikation nach der Garbage Collection konnte nicht gestartet werden.", ja: "Garbage Collection 後にレプリケーションを開始できませんでした。", ko: "Garbage Collection 후 복제를 시작하지 못했습니다.", ru: "Не удалось запустить репликацию после Garbage Collection.", @@ -1460,6 +1815,7 @@ export const allMessages = { }, "Fetch chunks on demand": { def: "Fetch chunks on demand", + de: "Fetch-Kissen auf Anfrage", es: "Obtener chunks bajo demanda", fr: "Récupérer les fragments à la demande", he: "משוך נתחים לפי דרישה", @@ -1467,10 +1823,11 @@ export const allMessages = { ko: "필요 시 청크 원격 가져오기", ru: "Загружать чанки по требованию", zh: "按需获取块", - "zh-tw": "按需抓取 chunks", + "zh-tw": "按需獲取塊", }, "Fetch database with previous behaviour": { def: "Fetch database with previous behaviour", + de: "Fetch-Datenbank mit vorherigem Verhalten", es: "Obtener BD con comportamiento anterior", fr: "Récupérer la base de données avec le comportement précédent", he: "משוך מסד נתונים עם התנהגות קודמת", @@ -1478,10 +1835,11 @@ export const allMessages = { ko: "이전 동작으로 데이터베이스 가져오기", ru: "Загрузить базу данных с предыдущим поведением", zh: "使用以前的行为获取数据库", - "zh-tw": "以前一種行為抓取資料庫", + "zh-tw": "使用以前的行為獲取資料庫", }, "Fetch remote settings": { def: "Fetch remote settings", + de: "Remote-Einstellungen abrufen", es: "Obtener ajustes remotos", ja: "リモート設定を取得", ko: "원격 설정 가져오기", @@ -1489,8 +1847,19 @@ export const allMessages = { zh: "获取远端设置", "zh-tw": "抓取遠端設定", }, + "File prefix on the bucket": { + def: "File prefix on the bucket", + de: "Dateipräfix im Bucket", + es: "Prefijo de archivo en el bucket", + ja: "バケット内のファイルプレフィックス", + ko: "버킷의 파일 접두사", + ru: "Префикс файлов в бакете", + zh: "存储桶中的文件前缀", + "zh-tw": "儲存桶中的檔案前綴", + }, "File to resolve conflict": { def: "File to resolve conflict", + de: "Datei zur Konfliktlösung", es: "Archivo para resolver el conflicto", ja: "競合を解決するファイル", ko: "충돌을 해결할 파일", @@ -1504,6 +1873,7 @@ export const allMessages = { }, Filename: { def: "Filename", + de: "Dateiname", es: "Nombre de archivo", fr: "Nom de fichier", he: "שם קובץ", @@ -1513,8 +1883,20 @@ export const allMessages = { zh: "文件名", "zh-tw": "檔名", }, + "Files with modification times greater than this value (in seconds since the Unix epoch) will not have their events reflected. Set to 0 to disable this limit.": + { + def: "Files with modification times greater than this value (in seconds since the Unix epoch) will not have their events reflected. Set to 0 to disable this limit.", + de: "Dateien mit Änderungszeiten größer als dieser Wert (Sekunden seit Unix-Epoch) werden nicht reflektiert. Setze 0, um diese Begrenzung zu deaktivieren.", + es: "Los archivos con tiempos de modificación mayores que este valor (segundos desde la época Unix) no reflejarán sus eventos. Usa 0 para desactivar este límite.", + ja: "この値(Unix エポックからの秒数)より大きい更新時刻のファイルイベントは反映されません。0 に設定するとこの制限を無効にします。", + ko: "수정 시간이 이 값(Unix epoch 이후 초)보다 큰 파일은 이벤트가 반영되지 않습니다. 0으로 설정하면 이 제한을 비활성화합니다.", + ru: "События файлов со временем изменения больше этого значения (в секундах с эпохи Unix) не будут отражаться. Установите 0, чтобы отключить ограничение.", + zh: "修改时间大于此值(Unix 纪元以来的秒数)的文件,其事件不会被反映。设为 0 可禁用此限制。", + "zh-tw": "修改時間大於此值(Unix Epoch 以來秒數)的檔案,其事件不會被反映。設為 0 可停用此限制。", + }, "First, please select the option that best describes your current situation.": { def: "First, please select the option that best describes your current situation.", + de: "Wählen Sie bitte zuerst die Option aus, die Ihre aktuelle Situation am besten beschreibt.", es: "Primero, seleccione la opción que describa mejor su situación actual。", ja: "まず、現在の状況に最も近い項目を選択してください。", ko: "먼저 현재 상황에 가장 잘 맞는 항목을 선택해 주세요。", @@ -1524,6 +1906,7 @@ export const allMessages = { }, "Flag and restart": { def: "Flag and restart", + de: "Markieren und neu starten", es: "Marcar y reiniciar", ja: "フラグを立てて再起動", ko: "표시 후 재시작", @@ -1533,6 +1916,7 @@ export const allMessages = { }, "Forces the file to be synced when opened.": { def: "Forces the file to be synced when opened.", + de: "Erzwingt die zu synchronisierende Datei beim Öffnen.", es: "Forzar sincronización al abrir archivo", fr: "Force la synchronisation du fichier à son ouverture.", he: "מכריח סנכרון הקובץ בעת פתיחתו.", @@ -1540,10 +1924,11 @@ export const allMessages = { ko: "파일을 열 때 강제로 동기화합니다.", ru: "Принудительно синхронизировать файл при открытии.", zh: "打开文件时强制同步该文件 ", - "zh-tw": "開啟檔案時強制同步該檔案。", + "zh-tw": "開啟檔案時強制同步該檔案 ", }, "Fresh Start Wipe": { def: "Fresh Start Wipe", + de: "Für Neustart vollständig bereinigen", es: "Borrado para reinicio completo", ja: "初期化ワイプ", ko: "새로 시작 지우기", @@ -1553,6 +1938,7 @@ export const allMessages = { }, "Garbage Collection cancelled by user.": { def: "Garbage Collection cancelled by user.", + de: "Garbage Collection wurde vom Benutzer abgebrochen.", ja: "ユーザーによって Garbage Collection がキャンセルされました。", ko: "사용자가 Garbage Collection을 취소했습니다.", ru: "Пользователь отменил Garbage Collection.", @@ -1562,6 +1948,7 @@ export const allMessages = { "Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.": { def: "Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.", + de: "Garbage Collection abgeschlossen. Gelöschte Chunks: ${deletedChunks} / ${totalChunks}. Benötigte Zeit: ${seconds} Sekunden.", ja: "Garbage Collection が完了しました。削除したチャンク: ${deletedChunks} / ${totalChunks}。所要時間: ${seconds} 秒。", ko: "Garbage Collection이 완료되었습니다. 삭제된 청크: ${deletedChunks} / ${totalChunks}. 소요 시간: ${seconds}초.", ru: "Garbage Collection завершена. Удалено чанков: ${deletedChunks} / ${totalChunks}. Затраченное время: ${seconds} сек.", @@ -1570,6 +1957,7 @@ export const allMessages = { }, "Garbage Collection Confirmation": { def: "Garbage Collection Confirmation", + de: "Bestätigung der Garbage Collection", ja: "Garbage Collection の確認", ko: "Garbage Collection 확인", ru: "Подтверждение Garbage Collection", @@ -1578,6 +1966,7 @@ export const allMessages = { }, "Garbage Collection V3 (Beta)": { def: "Garbage Collection V3 (Beta)", + de: "Datenbereinigung V3 (Beta)", es: "Recolección de basura V3 (Beta)", ja: "ガーベジコレクション V3 (Beta)", ko: "가비지 컬렉션 V3 (Beta)", @@ -1587,6 +1976,7 @@ export const allMessages = { }, "Garbage Collection: Found ${unusedChunks} unused chunks to delete.": { def: "Garbage Collection: Found ${unusedChunks} unused chunks to delete.", + de: "Garbage Collection: ${unusedChunks} ungenutzte Chunks zum Löschen gefunden.", ja: "Garbage Collection: 削除対象の未使用チャンクが ${unusedChunks} 件見つかりました。", ko: "Garbage Collection: 삭제할 미사용 청크 ${unusedChunks}개를 찾았습니다.", ru: "Garbage Collection: найдено ${unusedChunks} неиспользуемых чанков для удаления.", @@ -1595,6 +1985,7 @@ export const allMessages = { }, "Garbage Collection: Scanned ${scanned} / ~${docCount}": { def: "Garbage Collection: Scanned ${scanned} / ~${docCount}", + de: "Garbage Collection: ${scanned} / ~${docCount} gescannt", ja: "Garbage Collection: ${scanned} / ~${docCount} をスキャン済み", ko: "Garbage Collection: ${scanned} / ~${docCount} 스캔됨", ru: "Garbage Collection: просканировано ${scanned} / ~${docCount}", @@ -1603,6 +1994,7 @@ export const allMessages = { }, "Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": { def: "Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}", + de: "Garbage Collection: Scan abgeschlossen. Gesamtzahl der Chunks: ${totalChunks}, verwendete Chunks: ${usedChunks}", ja: "Garbage Collection: スキャン完了。総チャンク数: ${totalChunks}、使用中チャンク数: ${usedChunks}", ko: "Garbage Collection: 스캔 완료. 전체 청크 수: ${totalChunks}, 사용 중인 청크 수: ${usedChunks}", ru: "Garbage Collection: сканирование завершено. Всего чанков: ${totalChunks}, используемых чанков: ${usedChunks}", @@ -1611,6 +2003,7 @@ export const allMessages = { }, "Handle files as Case-Sensitive": { def: "Handle files as Case-Sensitive", + de: "Handle Dateien als Case-Sensitive", es: "Manejar archivos como sensibles a mayúsculas", fr: "Gérer les fichiers en respectant la casse", he: "טפל בקבצים כתלויי רישיות", @@ -1620,8 +2013,19 @@ export const allMessages = { zh: "将文件视为区分大小写", "zh-tw": "將檔案視為區分大小寫", }, + Hatch: { + def: "Hatch", + de: "Werkzeuge", + es: "Herramientas", + ja: "ツール", + ko: "도구", + ru: "Инструменты", + zh: "工具箱", + "zh-tw": "工具箱", + }, "Hidden Files": { def: "Hidden Files", + de: "Versteckte Dateien", es: "Archivos ocultos", ja: "隠しファイル", ko: "숨김 파일", @@ -1631,24 +2035,37 @@ export const allMessages = { }, "Hide completely": { def: "Hide completely", + de: "Verstecken vollständig", + es: "Ocultar por completo", + ja: "完全に非表示", + ko: "완전히 숨기기", + ru: "Полностью скрыть", zh: "完全隐藏", "zh-tw": "完全隱藏", }, "Highlight diff": { def: "Highlight diff", - "zh-tw": "醒目顯示差異", + de: "Unterschiede hervorheben", + es: "Resaltar diferencias", + ja: "差分を強調表示", + ko: "차이점 강조", + ru: "Подсветить различия", + zh: "高亮差异", + "zh-tw": "高亮差異", }, "How to display network errors when the sync server is unreachable.": { def: "How to display network errors when the sync server is unreachable.", - es: "Cómo mostrar los errores de red cuando el servidor de sincronización no está disponible.", - ja: "同期サーバーに到達できない場合のネットワークエラーの表示方法を設定します。", - ko: "동기화 서버에 연결할 수 없을 때 네트워크 오류를 어떻게 표시할지 설정합니다.", - ru: "Определяет, как отображать сетевые ошибки, если сервер синхронизации недоступен.", - zh: "当同步服务器不可达时,如何显示网络错误。", - "zh-tw": "當同步伺服器無法連線時,如何顯示網路錯誤。", + de: "Legt fest, wie Netzwerkfehler angezeigt werden, wenn der Synchronisierungsserver nicht erreichbar ist.", + es: "Cómo mostrar los errores de red cuando no se puede alcanzar el servidor de sincronización.", + ja: "同期サーバーに到達できないときのネットワークエラーの表示方法。", + ko: "동기화 서버에 연결할 수 없을 때 네트워크 오류를 표시하는 방식입니다.", + ru: "Как показывать сетевые ошибки, когда сервер синхронизации недоступен.", + zh: "同步服务器无法访问时,如何显示网络错误。", + "zh-tw": "同步伺服器無法連線時,如何顯示網路錯誤。", }, "How would you like to configure the connection to your server?": { def: "How would you like to configure the connection to your server?", + de: "Wie möchten Sie die Verbindung zu Ihrem Server konfigurieren?", es: "¿Cómo desea configurar la conexión con su servidor?", ja: "サーバー接続をどのように設定しますか?", ko: "서버 연결을 어떻게 구성하시겠습니까?", @@ -1658,6 +2075,7 @@ export const allMessages = { }, "I am adding a device to an existing synchronisation setup": { def: "I am adding a device to an existing synchronisation setup", + de: "Ich füge ein Gerät zu einer bestehenden Synchronisationseinrichtung hinzu", es: "Estoy agregando un dispositivo a una configuración de sincronización existente", ja: "既存の同期構成に端末を追加します", ko: "기존 동기화 구성에 장치를 추가합니다", @@ -1667,6 +2085,7 @@ export const allMessages = { }, "I am setting this up for the first time": { def: "I am setting this up for the first time", + de: "Ich richte dies zum ersten Mal ein", es: "Estoy configurando esto por primera vez", ja: "はじめて設定します", ko: "처음으로 설정합니다", @@ -1676,6 +2095,7 @@ export const allMessages = { }, "I know my server details, let me enter them": { def: "I know my server details, let me enter them", + de: "Ich kenne meine Serverdaten, ich gebe sie selbst ein", es: "Conozco los datos de mi servidor; permítame introducirlos", ja: "サーバー情報を把握しているので、自分で入力します", ko: "서버 정보를 알고 있으니 직접 입력하겠습니다", @@ -1685,6 +2105,7 @@ export const allMessages = { }, "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).", + de: "Wenn deaktiviert (geknallt), werden Stücke auf dem UI-Gewinde aufgeteilt (Vorheriges Verhalten).", es: "Si se desactiva, chunks se dividen en hilo UI (comportamiento anterior)", fr: "Si désactivé, les fragments seront découpés sur le thread UI (comportement précédent).", he: "אם מכובה, נתחים יפוצלו בשרשור ממשק המשתמש (התנהגות קודמת).", @@ -1692,23 +2113,36 @@ export const allMessages = { ko: "비활성화(토글)되면 청크는 UI 스레드에서 분할됩니다 (이전 동작).", ru: "Если отключено, чанки будут разделяться в основном потоке.", zh: "如果禁用(切换),chunks 将在 UI 线程上分割(以前的行为)", - "zh-tw": "若停用(關閉)此選項,chunks 會在 UI 執行緒上分割(舊有行為)。", + "zh-tw": "如果禁用(切換),chunks 將在 UI 執行緒上分割(以前的行為)", }, "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.", + de: "Wenn per-filed effiziente Anpassungssynchronisation verwendet wird. Wir brauchen eine kleine Migration, wenn wir dies ermöglichen. Und alle Geräte sollten auf v0.23.18 aktualisiert werden. Sobald wir dies aktiviert haben, haben wir eine Kompatibilität mit alten Versionen verloren.", es: "Habilita sincronización eficiente por archivo. Requiere migración y actualizar todos dispositivos a v0.23.18. Pierde compatibilidad con versiones antiguas", fr: "Si activée, la synchronisation de personnalisation efficace par fichier sera utilisée. Une petite migration est nécessaire lors de l'activation. Tous les appareils doivent être à jour en v0.23.18. Une fois cette option activée, la compatibilité avec les anciennes versions est perdue.", he: "אם מופעל, ייעשה שימוש בסנכרון התאמה אישית יעיל לפי קובץ. נדרשת הגירה קטנה בעת ההפעלה. כל המכשירים צריכים להיות מעודכנים לגרסה 0.23.18. לאחר ההפעלה, התאימות לגרסאות ישנות תיפגע.", 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.", + ru: "Если включено, будет использоваться эффективная синхронизация настроек для каждого файла. При включении потребуется небольшая миграция. Все устройства также должны быть обновлены до v0.23.18. После включения совместимость со старыми версиями будет утрачена.", zh: "如果启用,将使用基于文件的、高效的自定义同步。启用此功能需要进行一次小的迁移。所有设备都应更新到 v0.23.18。一旦启用此功能,我们将失去与旧版本的兼容性", "zh-tw": - "啟用後會使用以每個檔案為單位的高效率自訂同步。啟用時需要進行一次小型遷移,且所有裝置都應升級到 v0.23.18。啟用後將不再相容舊版本。", + "如果啟用,將使用基於檔案的、高效的自定義同步。啟用此功能需要進行一次小的遷移。所有裝置都應更新到 v0.23.18。一旦啟用此功能,我們將失去與舊版本的相容性", + }, + "If enabled, changes will be automatically broadcasted to all connected peers. Notified peers will start fetching the changes.": + { + def: "If enabled, changes will be automatically broadcasted to all connected peers. Notified peers will start fetching the changes.", + de: "Wenn aktiviert, werden Änderungen automatisch an alle verbundenen Peers gesendet. Benachrichtigte Peers beginnen dann mit dem Abrufen der Änderungen.", + es: "Si se activa, los cambios se difundirán automáticamente a todos los pares conectados. Los pares notificados empezarán a obtener los cambios.", + ja: "有効にすると、変更は接続済みのすべてのピアへ自動的にブロードキャストされます。通知されたピアは変更の取得を開始します。", + ko: "활성화하면 변경 사항이 연결된 모든 피어에 자동으로 브로드캐스트됩니다. 알림을 받은 피어는 변경 사항 가져오기를 시작합니다.", + ru: "Если включено, изменения будут автоматически рассылаться всем подключенным пирам. Уведомленные пиры начнут получать изменения.", + zh: "启用后,更改会自动广播给所有已连接的对等设备。收到通知的设备会开始获取这些更改。", + "zh-tw": "啟用後,變更會自動廣播給所有已連線的對等裝置。收到通知的裝置會開始取得這些變更。", }, "If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker.": { def: "If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker.", + de: "Wenn aktiviert, werden Stücke in höchstens 100 Stück aufgeteilt. Dedupe ist jedoch etwas schwächer.", 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.", he: "אם מופעל, נתחים יפוצלו לא ליותר מ-100 פריטים. עם זאת, ביטול כפילויות יהיה חלש מעט יותר.", @@ -1716,11 +2150,24 @@ export const allMessages = { ko: "활성화하면 청크는 최대 100개 항목으로 분할됩니다. 하지만 중복 제거 기능이 약간 약해집니다.", ru: "Если включено, чанки будут разделены не более чем на 100 элементов.", zh: "如果启用,数据块将被分割成不超过 100 项。但是,去重效果会稍弱", - "zh-tw": "啟用後,chunks 最多會分成 100 個項目,但去重效果會稍微變弱。", + "zh-tw": "如果啟用,資料塊將被分割成不超過 100 項。但是,去重效果會稍弱", }, + "If enabled, efficient per-file customization sync will be used. A minor migration is required when enabling this feature, and all devices must be updated to v0.23.18. Enabling this feature will result in losing compatibility with older versions.": + { + def: "If enabled, efficient per-file customization sync will be used. A minor migration is required when enabling this feature, and all devices must be updated to v0.23.18. Enabling this feature will result in losing compatibility with older versions.", + de: "Wenn aktiviert, wird eine effiziente Anpassungssynchronisierung pro Datei verwendet. Beim Aktivieren ist eine kleine Migration erforderlich und alle Geräte müssen auf v0.23.18 aktualisiert sein. Danach geht die Kompatibilität mit älteren Versionen verloren.", + es: "Si se activa, se usará una sincronización de personalización eficiente por archivo. Al activar esta función se requiere una pequeña migración y todos los dispositivos deben actualizarse a v0.23.18. Al activarla se pierde compatibilidad con versiones anteriores.", + ja: "有効にすると、効率的なファイル単位のカスタマイズ同期を使用します。この機能を有効にする際は小さな移行が必要で、すべてのデバイスを v0.23.18 に更新する必要があります。有効にすると古いバージョンとの互換性は失われます。", + ko: "활성화하면 효율적인 파일별 사용자 지정 동기화를 사용합니다. 이 기능을 활성화할 때 작은 마이그레이션이 필요하며 모든 장치를 v0.23.18로 업데이트해야 합니다. 활성화하면 이전 버전과의 호환성이 사라집니다.", + ru: "Если включено, будет использоваться эффективная синхронизация настроек по файлам. При включении требуется небольшая миграция, а все устройства должны быть обновлены до v0.23.18. После включения совместимость со старыми версиями будет потеряна.", + zh: "启用后,将使用更高效的按文件自定义同步。启用此功能时需要一次小迁移,且所有设备都必须更新到 v0.23.18。启用后将失去与旧版本的兼容性。", + "zh-tw": + "啟用後,將使用更有效率的逐檔自訂同步。啟用此功能時需要一次小型遷移,且所有裝置都必須更新到 v0.23.18。啟用後將失去與舊版本的相容性。", + }, "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.", + de: "Wenn aktiviert, werden neu geschaffene Stücke vorübergehend innerhalb des Dokuments gehalten, und Absolventen, um unabhängige Stücke zu werden, sobald stabilisiert.", es: "Chunks nuevos se mantienen temporalmente en el documento hasta estabilizarse", fr: "Si activée, les fragments nouvellement créés sont temporairement conservés dans le document et promus en fragments indépendants une fois stabilisés.", he: "אם מופעל, נתחים שנוצרו לאחרונה נשמרים זמנית בתוך המסמך, ומוסמכים לנתחים עצמאיים לאחר יציבות.", @@ -1728,11 +2175,12 @@ export const allMessages = { ko: "활성화하면 새로 생성된 변경 기록(청크)은 문서 안에 임시로 보관되며, 일정 조건을 만족하면 자동으로 문서 밖으로 분리되어 저장됩니다.", ru: "Если включено, вновь созданные чанки временно хранятся в документе.", zh: "如果启用,新创建的数据块将暂时保留在文档中,并在稳定后成为独立数据块", - "zh-tw": "啟用後,新建立的 chunks 會暫時保留在文件中,待穩定後再獨立出去。", + "zh-tw": "如果啟用,新建立的資料塊將暫時保留在文件中,並在穩定後成為獨立資料塊", }, "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.", + de: "Wenn aktiviert, wird das ⛔-Symbol innerhalb des Status angezeigt, anstatt der Datei warnt Banner. Es werden keine Details angezeigt.", 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é.", he: "אם מופעל, אייקון ⛔ יוצג בסטטוס במקום פס האזהרות. לא יוצגו פרטים.", @@ -1740,10 +2188,11 @@ export const allMessages = { ko: "활성화하면 파일 경고 배너 대신 상태 영역에 ⛔ 아이콘만 표시됩니다. 자세한 내용은 표시되지 않습니다.", ru: "Если включено, значок будет показан внутри статуса.", zh: "如果启用,状态栏内将显示 ⛔ 图标,而非文件警告横幅,不会显示任何详细信息。", - "zh-tw": "啟用後,將在狀態列中顯示 ⛔ 圖示,而不是檔案警告橫幅,且不會顯示詳細資訊。", + "zh-tw": "如果啟用,狀態列內將顯示 ⛔ 圖示,而非檔案警告橫幅,不會顯示任何詳細資訊。", }, "If enabled, the file under 1kb will be processed in the UI thread.": { def: "If enabled, the file under 1kb will be processed in the UI thread.", + de: "Wenn aktiviert, wird die Datei unter 1kb im UI-Gewinde verarbeitet.", 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.", he: "אם מופעל, קבצים קטנים מ-1KB יעובדו בשרשור ממשק המשתמש.", @@ -1751,10 +2200,21 @@ export const allMessages = { ko: "활성화하면 1kb 미만의 파일은 UI 스레드에서 처리됩니다.", ru: "Если включено, файлы меньше 1КБ будут обрабатываться в основном потоке.", zh: "如果启用,小于 1kb 的文件将在 UI 线程中处理", - "zh-tw": "啟用後,小於 1KB 的檔案會在 UI 執行緒中處理。", + "zh-tw": "如果啟用,小於 1kb 的檔案將在 UI 執行緒中處理", + }, + "If enabled, the forcePathStyle option will be used for bucket operations.": { + def: "If enabled, the forcePathStyle option will be used for bucket operations.", + de: "Wenn aktiviert, wird forcePathStyle für Bucket-Operationen verwendet.", + es: "Si se activa, se usará la opción forcePathStyle para operaciones de bucket.", + ja: "有効にすると、バケット操作で forcePathStyle オプションを使用します。", + ko: "활성화하면 버킷 작업에 forcePathStyle 옵션을 사용합니다.", + ru: "Если включено, для операций с бакетом будет использоваться forcePathStyle.", + zh: "启用后,存储桶操作将使用 forcePathStyle 选项。", + "zh-tw": "啟用後,儲存桶操作將使用 forcePathStyle 選項。", }, "If enabled, the notification of hidden files change will be suppressed.": { def: "If enabled, the notification of hidden files change will be suppressed.", + de: "Wenn aktiviert, wird die Benachrichtigung über versteckte Dateien ändern unterdrückt.", es: "Si se habilita, se suprimirá la notificación de cambios en archivos ocultos.", fr: "Si activée, les notifications de modifications des fichiers cachés seront supprimées.", he: "אם מופעל, התראות על שינוי בקבצים נסתרים יודחקו.", @@ -1762,10 +2222,54 @@ export const allMessages = { ko: "활성화하면 숨겨진 파일 변경 알림이 억제됩니다.", ru: "Если включено, уведомление об изменении скрытых файлов будет подавлено.", zh: "如果启用,将不再通知隐藏文件被更改", - "zh-tw": "啟用後,將不再通知隱藏檔案變更。", + "zh-tw": "如果啟用,將不再通知隱藏檔案被更改", + }, + "If enabled, the P2P connection will be automatically started when the application launches.": { + def: "If enabled, the P2P connection will be automatically started when the application launches.", + de: "Wenn aktiviert, wird die P2P-Verbindung beim Start der Anwendung automatisch gestartet.", + es: "Si se activa, la conexión P2P se iniciará automáticamente al arrancar la aplicación.", + ja: "有効にすると、アプリケーション起動時に P2P 接続を自動的に開始します。", + ko: "활성화하면 애플리케이션 시작 시 P2P 연결이 자동으로 시작됩니다.", + ru: "Если включено, P2P-подключение будет автоматически запускаться при запуске приложения.", + zh: "启用后,应用启动时会自动开始 P2P 连接。", + "zh-tw": "啟用後,應用程式啟動時會自動開始 P2P 連線。", + }, + "If enabled, the plugin will not attempt to connect to the remote database even if the chunk was not found locally.": + { + def: "If enabled, the plugin will not attempt to connect to the remote database even if the chunk was not found locally.", + de: "Wenn aktiviert, versucht das Plugin nicht, eine Verbindung zur Remote-Datenbank herzustellen, auch wenn der Chunk lokal nicht gefunden wurde.", + es: "Si se activa, el complemento no intentara conectarse a la base de datos remota aunque el chunk no se encuentre localmente.", + ja: "有効にすると、チャンクがローカルに見つからない場合でも、プラグインはリモートデータベースへの接続を試みません。", + ko: "활성화하면 청크를 로컬에서 찾지 못해도 플러그인이 원격 데이터베이스에 연결을 시도하지 않습니다.", + ru: "Если включено, плагин не будет пытаться подключаться к удаленной базе данных, даже если чанк не найден локально.", + zh: "启用后,即使本地找不到该块,插件也不会尝试连接远程数据库。", + "zh-tw": "啟用後,即使本機找不到該區塊,外掛也不會嘗試連線到遠端資料庫。", + }, + "If enabled, the request API will be used to avoid `inevitable` CORS problems. This is a workaround and may not work in all cases. PLEASE READ THE DOCUMENTATION BEFORE USING THIS OPTION. This is a less-secure option.": + { + def: "If enabled, the request API will be used to avoid `inevitable` CORS problems. This is a workaround and may not work in all cases. PLEASE READ THE DOCUMENTATION BEFORE USING THIS OPTION. This is a less-secure option.", + de: "Wenn aktiviert, wird die request API verwendet, um unvermeidliche CORS-Probleme zu umgehen. Dies ist ein Workaround und funktioniert möglicherweise nicht immer. BITTE LIES DIE DOKUMENTATION, BEVOR DU DIESE OPTION VERWENDEST. Diese Option ist weniger sicher.", + es: "Si se activa, se usará la API request para evitar problemas CORS inevitables. Es una solución alternativa y puede no funcionar en todos los casos. LEE LA DOCUMENTACIÓN ANTES DE USAR ESTA OPCIÓN. Es una opción menos segura.", + ja: "有効にすると、避けられない CORS 問題を回避するために request API を使用します。これは回避策であり、すべてのケースで動作するとは限りません。このオプションを使用する前に必ずドキュメントを読んでください。安全性は低くなります。", + ko: "활성화하면 피할 수 없는 CORS 문제를 피하기 위해 request API를 사용합니다. 이는 우회 방법이며 모든 경우에 동작하지 않을 수 있습니다. 이 옵션을 사용하기 전에 반드시 문서를 읽어 주세요. 보안성이 낮은 옵션입니다.", + ru: "Если включено, request API будет использоваться для обхода «неизбежных» проблем CORS. Это обходной путь и он может работать не во всех случаях. ОБЯЗАТЕЛЬНО ПРОЧИТАЙТЕ ДОКУМЕНТАЦИЮ ПЕРЕД ИСПОЛЬЗОВАНИЕМ. Этот вариант менее безопасен.", + zh: "启用后,将使用 request API 避免“不可避免”的 CORS 问题。这是一个变通方案,并不一定适用于所有情况。使用此选项前请务必阅读文档。这是安全性较低的选项。", + "zh-tw": + "啟用後,將使用 request API 避免「不可避免」的 CORS 問題。這是變通方案,不一定適用於所有情況。使用此選項前請務必閱讀文件。這是安全性較低的選項。", + }, + "If this enabled, all chunks will be stored with the revision made from its content.": { + def: "If this enabled, all chunks will be stored with the revision made from its content.", + de: "Wenn aktiviert, werden alle Chunks mit einer aus ihrem Inhalt erzeugten Revision gespeichert.", + es: "Si se activa, todos los fragmentos se almacenarán con una revisión generada a partir de su contenido.", + ja: "有効にすると、すべてのチャンクは内容から生成されたリビジョンとともに保存されます。", + ko: "활성화하면 모든 청크가 내용에서 생성된 리비전과 함께 저장됩니다.", + ru: "Если включено, все фрагменты будут сохраняться с ревизией, созданной из их содержимого.", + zh: "启用后,所有数据块都会使用由其内容生成的修订版本存储。", + "zh-tw": "啟用後,所有資料區塊都會使用由其內容產生的修訂版本儲存。", }, "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)", + de: "Wenn dies aktiviert ist, werden alle Stücke mit der Überarbeitung aus ihrem Inhalt gespeichert. (Vorheriges Verhalten)", es: "Si se habilita, todos los chunks se almacenan con la revisión hecha desde su contenido. (comportamiento anterior)", fr: "Si activée, tous les fragments seront stockés avec la révision issue de leur contenu. (Comportement précédent)", he: "אם מופעל, כל הנתחים יישמרו עם גרסה המבוססת על תוכנם. (התנהגות קודמת)", @@ -1773,10 +2277,11 @@ export const allMessages = { ko: "이 옵션이 활성화되면 모든 청크는 콘텐츠에서 생성된 리비전과 함께 저장됩니다. (이전 동작)", ru: "Если включено, все чанки будут храниться с ревизией из содержимого.", zh: "如果启用,所有 chunks 将使用根据其内容生成的修订版本存储(以前的行为)", - "zh-tw": "啟用後,所有 chunks 都會以其內容產生的修訂版本儲存(舊有行為)。", + "zh-tw": "如果啟用,所有 chunks 將使用根據其內容生成的修訂版本儲存(以前的行為)", }, "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).", + de: "Wenn dies aktiviert ist, werden alle Dateien als case-Sensitive (Previous Verhalten) behandelt.", es: "Si se habilita, todos los archivos se manejan como sensibles a mayúsculas (comportamiento anterior)", fr: "Si activée, tous les fichiers sont gérés en respectant la casse (comportement précédent).", he: "אם מופעל, כל הקבצים מטופלים כתלויי רישיות (התנהגות קודמת).", @@ -1784,11 +2289,12 @@ export const allMessages = { ko: "이 옵션이 활성화되면 모든 파일이 대소문자를 구분하여 처리됩니다 (이전 동작).", ru: "Если включено, все файлы обрабатываются с учётом регистра.", zh: "如果启用,所有文件都将视为区分大小写(以前的行为)", - "zh-tw": "啟用後,所有檔案都會以區分大小寫方式處理(舊有行為)。", + "zh-tw": "如果啟用,所有檔案都將視為區分大小寫(以前的行為)", }, "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.", + de: "Wenn dies aktiviert ist, werden Stücke in semantisch aussagekräftige Segmente aufgeteilt. Nicht alle Plattformen unterstützen diese Funktion.", es: "Divide chunks en segmentos semánticos. No todos los sistemas lo soportan", fr: "Si activée, les fragments seront découpés en segments sémantiquement signifiants. Toutes les plateformes ne prennent pas en charge cette fonctionnalité.", he: "אם מופעל, נתחים יפוצלו לחלקים עם משמעות סמנטית. לא כל הפלטפורמות תומכות בתכונה זו.", @@ -1796,29 +2302,34 @@ export const allMessages = { ko: "이 옵션을 활성화하면 청크가 문단이나 의미 단위로 나뉘어 저장됩니다. 단, 이 기능은 일부 플랫폼에서는 지원되지 않을 수 있습니다.", ru: "Если включено, чанки будут разделены на семантически значимые сегменты.", zh: "如果启用此功能,数据块将被分割成具有语义意义的段落。并非所有平台都支持此功能", - "zh-tw": "啟用後,chunks 會依語意切分成有意義的區段,並非所有平台都支援此功能。", + "zh-tw": "如果啟用此功能,資料塊將被分割成具有語義意義的段落。並非所有平臺都支援此功能", }, "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.", + de: "Wenn dies eingestellt ist, werden Änderungen an lokalen Dateien, die von den ignorierten Dateien angepasst werden, übersprungen. Remote-Änderungen werden mit lokalen ignorierten Dateien ermittelt.", es: "Saltar cambios en archivos locales que coincidan con ignore files. Cambios remotos usan ignore files locales", fr: "Si défini, les modifications des fichiers locaux correspondant aux fichiers d'exclusion seront ignorées. Les changements distants sont déterminés à l'aide des fichiers d'exclusion locaux.", he: "אם מוגדר, שינויים בקבצים מקומיים התואמים לקבצי ההתעלמות יידלגו. שינויים מרוחקים נקבעים לפי קבצי ההתעלמות המקומיים.", 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.", + ru: "Если задано это значение, изменения локальных файлов, соответствующих файлам игнорирования, будут пропускаться. Удалённые изменения определяются с использованием локальных файлов игнорирования.", zh: "如果设置了此项,与忽略文件匹配的本地文件的更改将被跳过。远程更改使用本地忽略文件确定", + "zh-tw": "如果設定了此項,與忽略檔案匹配的本地檔案的更改將被跳過。遠端更改使用本地忽略檔案確定", }, "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.", + de: "Wenn diese Option aktiviert ist, hält PouchDB die Verbindung für 60 Sekunden offen, und wenn keine Änderung in dieser Zeit ankommt, schließt und öffnet die Steckdose, anstatt sie unbestimmt offen zu halten. Nützlich, wenn ein Proxy die Anforderungsdauer begrenzt, aber die Ressourcennutzung erhöhen kann.", es: "Mantiene conexión 60s. Si no hay cambios, reinicia socket. Útil con proxies limitantes", fr: "Si cette option est activée, PouchDB maintiendra la connexion ouverte pendant 60 secondes, et si aucun changement n'arrive durant cette période, fermera et rouvrira la socket au lieu de la garder ouverte indéfiniment. Utile lorsqu'un proxy limite la durée des requêtes, mais peut augmenter l'utilisation des ressources.", he: "אם אפשרות זו מופעלת, PouchDB ישמור את החיבור פתוח ל-60 שניות, ואם אין שינוי בפרק זמן זה, יסגור ויפתח מחדש את השקע, במקום להחזיק אותו פתוח ללא הגבלה. שימושי כשפרוקסי מגביל משך בקשות, אך עשוי להגביר שימוש במשאבים.", 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.", + ru: "Если эта опция включена, PouchDB будет удерживать соединение открытым 60 секунд, а если за это время не поступит изменений, закроет и снова откроет сокет вместо того, чтобы держать соединение открытым бесконечно. Это полезно, если прокси ограничивает длительность запросов, но может увеличить потребление ресурсов.", zh: "如果启用此选项,PouchDB 将保持连接打开 60 秒,如果在此时间内没有更改到达,则关闭并重新打开套接字,而不是无限期保持打开。当代理限制请求持续时间时有用,但可能会增加资源使用ß", + "zh-tw": + "如果啟用此選項,PouchDB 將保持連線開啟 60 秒,如果在此時間內沒有更改到達,則關閉並重新開啟套接字,而不是無限期保持開啟。當代理限制請求持續時間時有用,但可能會增加資源使用ß", }, "If you reached the payload size limit when using IBM Cloudant, please decrease batch size and batch limit to a lower value.": { @@ -1827,6 +2338,7 @@ export const allMessages = { }, "Ignore and Proceed": { def: "Ignore and Proceed", + de: "Ignorieren und fortfahren", ja: "無視して続行", ko: "무시하고 계속", ru: "Игнорировать и продолжить", @@ -1835,6 +2347,7 @@ export const allMessages = { }, "Ignore files": { def: "Ignore files", + de: "Dateien ignorieren", es: "Archivos a ignorar", fr: "Fichiers d'exclusion", he: "קבצי התעלמות", @@ -1842,9 +2355,11 @@ export const allMessages = { ko: "제외 규칙 파일", ru: "Файлы для игнорирования", zh: "忽略文件", + "zh-tw": "忽略檔案", }, "Ignore patterns": { def: "Ignore patterns", + de: "Ausschlussmuster", es: "Patrones de exclusión", ja: "除外パターン", ko: "무시 패턴", @@ -1854,6 +2369,7 @@ export const allMessages = { }, "Import connection": { def: "Import connection", + de: "Verbindung importieren", es: "Importar conexión", ja: "接続をインポート", ko: "연결 가져오기", @@ -1863,6 +2379,7 @@ export const allMessages = { }, "Incubate Chunks in Document": { def: "Incubate Chunks in Document", + de: "Inkubieren von Chunks in Dokument", es: "Incubar chunks en documento", fr: "Incuber les fragments dans le document", he: "בשל נתחים בתוך המסמך", @@ -1870,9 +2387,11 @@ export const allMessages = { ko: "문서 내 변경 기록 임시 보관", ru: "Инкубировать чанки в документе", zh: "在文档中孵化块", + "zh-tw": "在文件中孵化塊", }, "Initialise all journal history, On the next sync, every item will be received and sent.": { def: "Initialise all journal history, On the next sync, every item will be received and sent.", + de: "Gesamte Journal-Historie initialisieren. Beim nächsten Sync werden alle Elemente empfangen und gesendet.", es: "Restablece todo el historial del diario. En la próxima sincronización se recibirán y enviarán todos los elementos.", ja: "すべてのジャーナル履歴を初期化します。次回の同期時に、すべての項目が再受信・再送信されます。", ko: "모든 저널 기록을 초기화합니다. 다음 동기화 때 모든 항목을 다시 받고 다시 보냅니다.", @@ -1891,6 +2410,7 @@ export const allMessages = { }, "Interval (sec)": { def: "Interval (sec)", + de: "Intervall (Sek.)", es: "Intervalo (segundos)", fr: "Intervalle (sec)", he: "מרווח (שניות)", @@ -1898,72 +2418,95 @@ export const allMessages = { ko: "간격 (초)", ru: "Интервал (сек)", zh: "间隔(秒)", + "zh-tw": "間隔(秒)", }, "K.exp": { def: "Experimental", + de: "Experimentelle", + es: "Experimental", fr: "Expérimental", he: "ניסיוני", ja: "試験機能", ko: "실험 기능", ru: "Экспериментальная", zh: "实验性", + "zh-tw": "實驗性", }, "K.long_p2p_sync": { def: "Peer-to-Peer Sync", + de: "%{title_p2p_sync}", + es: "Sincronización Peer-to-Peer", fr: "Synchronisation pair-à-pair", he: "%{title_p2p_sync}", - ja: "Peer-to-Peer Sync (試験機能)", - ko: "피어 투 피어(P2P) 동기화 (실험 기능)", - ru: "title_p2p_sync", - zh: "Peer-to-Peer同步 (实验性)", + ja: "P2P同期", + ko: "피어 투 피어(P2P) 동기화", + ru: "Синхронизация между устройствами", + zh: "Peer-to-Peer同步", + "zh-tw": "Peer-to-Peer同步", }, "K.P2P": { def: "Peer-to-Peer", + de: "%{Peer}-zu-%{Peer}", + es: "Par a Par", fr: "Pair-à-Pair", he: "%{Peer}-ל-%{Peer}", - ja: "Peer-to-Peer", - ko: "피어-to-피어", - ru: "Peer-к-Peer", - zh: "Peer-to-Peer", + ja: "ピア対ピア", + ko: "피어 ? 피어", + ru: "Узел-Узел", + zh: "节点-对-节点", + "zh-tw": "節點對節點", }, "K.Peer": { def: "Peer", + de: "Pestizid", + es: "Par", fr: "Pair", he: "עמית", - ja: "Peer", + ja: "ピア", ko: "피어", - ru: "Устройство", - zh: "Peer", + ru: "Узел", + zh: "节点", + "zh-tw": "節點", }, "K.ScanCustomization": { def: "Scan customization", + de: "Scannen Anpassung", + es: "Analizar personalización", fr: "Analyser la personnalisation", he: "סרוק התאמה אישית", - ja: "Scan customization", + ja: "カスタマイズ同期をスキャン", ko: "사용자 설정 검색", - ru: "Scan customization", + ru: "Сканировать настройки", zh: "扫描自定义", + "zh-tw": "掃描自定義", }, "K.short_p2p_sync": { def: "P2P Sync", + de: "P2P Synthesizer", + es: "Sincronización P2P", fr: "Sync P2P", he: "סנכרון P2P", - ja: "P2P Sync (試験機能)", - ko: "P2P 동기화 (실험 기능)", + ja: "P2P Sync", + ko: "P2P Sync", ru: "P2P Синхр.", - zh: "P2P同步(实验性)", + zh: "P2P Sync", + "zh-tw": "P2P Sync", }, "K.title_p2p_sync": { def: "Peer-to-Peer Sync", + de: "Peer-to-Peer-Synchronisierung", + es: "Sincronización Peer-to-Peer", fr: "Synchronisation pair-à-pair", he: "סנכרון עמית-לעמית", - ja: "Peer-to-Peer Sync", + ja: "P2P同期", ko: "피어 투 피어(P2P) 동기화", ru: "Синхронизация между устройствами", zh: "Peer-to-Peer同步", + "zh-tw": "Peer-to-Peer同步", }, "Keep empty folder": { def: "Keep empty folder", + de: "leeren Ordner", es: "Mantener carpetas vacías", fr: "Conserver les dossiers vides", he: "שמור תיקייה ריקה", @@ -1971,37 +2514,47 @@ export const allMessages = { ko: "빈 폴더 유지", ru: "Сохранять пустые папки", zh: "保留空文件夹", + "zh-tw": "保留空資料夾", }, lang_def: { def: "Default", + de: "Fehler", + es: "Predeterminado", fr: "Par défaut", he: "ברירת מחדל", - ja: "Default", - ko: "Default", + ja: "デフォルト", + ko: "기본값", ru: "По умолчанию", - zh: "Default", + zh: "默认", + "zh-tw": "預設", }, "lang-de": { def: "Deutsche", + de: "Deutsch", es: "Alemán", fr: "Deutsche", he: "Deutsche", - ja: "Deutsche", - ko: "Deutsche", + ja: "Deutsch", + ko: "Deutsch", ru: "Deutsch", - zh: "Deutsche", + zh: "Deutsch", + "zh-tw": "Deutsch", }, "lang-def": { def: "Default", + de: "%{lang_def}", + es: "Predeterminado", fr: "Par défaut", he: "%{lang_def}", - ja: "Default", - ko: "Default", - ru: "lang_def", - zh: "Default", + ja: "デフォルト", + ko: "기본값", + ru: "По умолчанию", + zh: "默认", + "zh-tw": "預設", }, "lang-es": { def: "Español", + de: "Español", es: "Español", fr: "Español", he: "Español", @@ -2009,6 +2562,7 @@ export const allMessages = { ko: "Español", ru: "Español", zh: "Español", + "zh-tw": "Español", }, "lang-fr": { def: "Français", @@ -2026,6 +2580,7 @@ export const allMessages = { }, "lang-ja": { def: "日本語", + de: "日本語", es: "Japonés", fr: "日本語", he: "日本語", @@ -2033,18 +2588,23 @@ export const allMessages = { ko: "日本語", ru: "日本語", zh: "日本語", + "zh-tw": "日本語", }, "lang-ko": { def: "한국어", + de: "한국어", + es: "한국어", fr: "한국어", he: "한국어", ja: "한국어", ko: "한국어", ru: "한국어", zh: "한국어", + "zh-tw": "한국어", }, "lang-ru": { def: "Русский", + de: "Русский", es: "Ruso", fr: "Русский", he: "Русский", @@ -2052,9 +2612,11 @@ export const allMessages = { ko: "Русский", ru: "Русский", zh: "Русский", + "zh-tw": "Русский", }, "lang-zh": { def: "简体中文", + de: "简体中文", es: "Chino simplificado", fr: "简体中文", he: "简体中文", @@ -2062,9 +2624,11 @@ export const allMessages = { ko: "简体中文", ru: "简体中文", zh: "简体中文", + "zh-tw": "簡體中文", }, "lang-zh-tw": { def: "繁體中文", + de: "繁體中文", es: "Chino tradicional", fr: "繁體中文", he: "繁體中文", @@ -2072,9 +2636,11 @@ export const allMessages = { ko: "繁體中文", ru: "繁體中文", zh: "繁體中文", + "zh-tw": "繁體中文", }, Later: { def: "Later", + de: "Später", es: "Más tarde", ja: "後で", ko: "나중에", @@ -2084,6 +2650,7 @@ export const allMessages = { }, "Limit: {datetime} ({timestamp})": { def: "Limit: {datetime} ({timestamp})", + de: "Grenze: {datetime} ({timestamp})", es: "Límite: {datetime} ({timestamp})", ja: "制限: {datetime} ({timestamp})", ko: "제한: {datetime} ({timestamp})", @@ -2094,6 +2661,7 @@ export const allMessages = { "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.", + de: "LiveSync konnte nicht mehrere Gewölbe behandeln, die denselben Namen ohne verschiedene Präfix haben, Dies sollte automatisch konfiguriert werden.", es: "LiveSync no puede manejar múltiples bóvedas con mismo nombre sin prefijo. Se configura automáticamente", fr: "LiveSync ne peut pas gérer plusieurs coffres portant le même nom sans préfixe distinct. Ceci devrait être configuré automatiquement.", he: "LiveSync אינו יכול לטפל במספר כספות עם אותו שם ללא קידומת שונה. הדבר אמור להיות מוגדר אוטומטית.", @@ -2101,9 +2669,11 @@ export const allMessages = { ko: "LiveSync는 서로 다른 접두사 없이 동일한 이름을 가진 여러 볼트를 처리할 수 없습니다. 이는 자동으로 구성되어야 합니다.", ru: "LiveSync не может обработать несколько хранилищ с одинаковым именем без разных префиксов.", zh: "LiveSync 无法处理具有相同名称但没有不同前缀的多个库。这应该自动配置", + "zh-tw": "LiveSync 無法處理具有相同名稱但沒有不同字首的多個庫。這應該自動配置", }, "liveSyncReplicator.beforeLiveSync": { def: "Before LiveSync, start OneShot once...", + de: "Vor LiveSync, starten Sie OneShot einmal...", es: "Antes de LiveSync, inicia OneShot...", fr: "Avant LiveSync, lancement d'un OneShot initial...", he: "לפני LiveSync, התחל OneShot פעם אחת...", @@ -2111,9 +2681,11 @@ export const allMessages = { ko: "LiveSync 전에 OneShot을 먼저 시작합니다...", ru: "Перед LiveSync запускаем OneShot...", zh: "在LiveSync前,先启动OneShot一次...", + "zh-tw": "在LiveSync前,先啟動OneShot一次...", }, "liveSyncReplicator.cantReplicateLowerValue": { def: "We can't replicate more lower value.", + de: "Wir können den niedrigeren Wert nicht replizieren.", es: "No podemos replicar un valor más bajo.", fr: "Impossible de répliquer une valeur inférieure.", he: "לא ניתן לשכפל ערך נמוך יותר.", @@ -2121,9 +2693,11 @@ export const allMessages = { ko: "더 낮은 값으로 복제할 수 없습니다.", ru: "Нельзя реплицировать с меньшим значением.", zh: "我们无法复制更小的值", + "zh-tw": "我們無法複製更小的值", }, "liveSyncReplicator.checkingLastSyncPoint": { def: "Looking for the point last synchronized point.", + de: "Auf der Suche nach dem Punkt letzten synchronisierten Punkt.", es: "Buscando el último punto sincronizado.", fr: "Recherche du dernier point de synchronisation.", he: "מחפש נקודת הסנכרון האחרונה.", @@ -2131,29 +2705,35 @@ export const allMessages = { ko: "마지막으로 동기화된 지점을 찾고 있습니다.", ru: "Поиск последней точки синхронизации.", zh: "查找上次同步点", + "zh-tw": "查詢上次同步點", }, "liveSyncReplicator.couldNotConnectTo": { def: "Could not connect to ${uri} : ${name}\n(${db})", - es: "No se pudo conectar a ${uri} : ${name} \n(${db})", + de: "Konnte nicht mit ${uri} verbinden: ${name}\n(${db}", + es: "No se pudo conectar a ${uri} : ${name}\n(${db})", fr: "Connexion impossible à ${uri} : ${name}\n(${db})", he: "לא ניתן להתחבר אל ${uri} : ${name}\n(${db})", ja: "${uri} : ${name}に接続できませんでした\n(${db})", - ko: "${uri}에 연결할 수 없습니다: ${name} \n(${db})", - ru: "Не удалось подключиться к uri : name\n(db)", + ko: "${uri}에 연결할 수 없습니다: ${name}\n(${db})", + ru: "Не удалось подключиться к ${uri} : ${name}\n(${db})", zh: "无法连接到 ${uri} : ${name}\n(${db})", + "zh-tw": "無法連線到 ${uri} : ${name}\n(${db})", }, "liveSyncReplicator.couldNotConnectToRemoteDb": { def: "Could not connect to remote database: ${d}", + de: "Konnte nicht mit Remote-Datenbank verbinden: ${d}", es: "No se pudo conectar a base de datos remota: ${d}", fr: "Connexion à la base distante impossible : ${d}", he: "לא ניתן להתחבר למסד הנתונים המרוחק: ${d}", ja: "リモートデータベースに接続できませんでした: ${d}", ko: "원격 데이터베이스에 연결할 수 없습니다: ${d}", - ru: "Не удалось подключиться к удалённой базе данных: d", + ru: "Не удалось подключиться к удалённой базе данных: ${d}", zh: "无法连接到远程数据库:${d}", + "zh-tw": "無法連線到遠端資料庫:${d}", }, "liveSyncReplicator.couldNotConnectToServer": { def: "The connection to the remote has been prevented, or failed.", + de: "Konnte sich nicht mit dem Server verbinden.", es: "No se pudo conectar al servidor.", fr: "Connexion au serveur impossible.", he: "לא ניתן להתחבר לשרת.", @@ -2161,19 +2741,23 @@ export const allMessages = { ko: "서버에 연결할 수 없습니다.", ru: "Не удалось подключиться к серверу.", zh: "无法连接到服务器", + "zh-tw": "無法連線到伺服器", }, "liveSyncReplicator.couldNotConnectToURI": { def: "Could not connect to ${uri}:${dbRet}", + de: "Konnte nicht mit ${uri} verbinden:${dbRet}", es: "No se pudo conectar a ${uri}:${dbRet}", fr: "Connexion impossible à ${uri}:${dbRet}", he: "לא ניתן להתחבר אל ${uri}:${dbRet}", ja: "${uri}に接続できませんでした: ${dbRet}", ko: "${uri}에 연결할 수 없습니다: ${dbRet}", - ru: "Не удалось подключиться к uri:dbRet", + ru: "Не удалось подключиться к ${uri}:${dbRet}", zh: "无法连接到 ${uri}:${dbRet}", + "zh-tw": "無法連線到 ${uri}:${dbRet}", }, "liveSyncReplicator.couldNotMarkResolveRemoteDb": { def: "Could not mark resolve remote database.", + de: "Kann nicht markieren Remote-Datenbank zu lösen.", es: "No se pudo marcar como resuelta la base de datos remota.", fr: "Impossible de marquer la résolution de la base distante.", he: "לא ניתן לסמן פתרון למסד הנתונים המרוחק.", @@ -2181,9 +2765,11 @@ export const allMessages = { ko: "원격 데이터베이스를 해결됨으로 표시할 수 없습니다.", ru: "Не удалось отметить удалённую базу данных как разрешённую.", zh: "无法标记并解决远程数据库", + "zh-tw": "無法標記並解決遠端資料庫", }, "liveSyncReplicator.liveSyncBegin": { def: "LiveSync begin...", + de: "LiveSync beginnt...", es: "Inicio de LiveSync...", fr: "Démarrage de LiveSync...", he: "LiveSync מתחיל...", @@ -2191,9 +2777,11 @@ export const allMessages = { ko: "LiveSync 시작...", ru: "Начало LiveSync...", zh: "LiveSync 开始...", + "zh-tw": "LiveSync 開始...", }, "liveSyncReplicator.lockRemoteDb": { def: "Lock remote database to prevent data corruption", + de: "Sperren Sie Remote-Datenbank, um Daten Korruption zu verhindern", es: "Bloquear base de datos remota para prevenir corrupción de datos", fr: "Verrouillage de la base distante pour éviter la corruption des données", he: "נועל מסד נתונים מרוחק למניעת פגיעה בנתונים", @@ -2201,9 +2789,11 @@ export const allMessages = { ko: "데이터 손상을 방지하기 위해 원격 데이터베이스를 잠급니다", ru: "Блокировка удалённой базы данных для предотвращения повреждения данных", zh: "锁定远程数据库以防止数据损坏", + "zh-tw": "鎖定遠端資料庫以防止資料損壞", }, "liveSyncReplicator.markDeviceResolved": { def: "Mark this device as 'resolved'.", + de: 'Markieren Sie dieses Gerät als "aufgelöst".', es: "Marcar este dispositivo como 'resuelto'.", fr: "Marquer cet appareil comme « résolu ».", he: "סמן מכשיר זה כ'נפתר'.", @@ -2211,22 +2801,26 @@ export const allMessages = { ko: "이 기기를 '해결됨'으로 표시합니다.", ru: "Отметить это устройство как «разрешённое».", zh: "将此设备标记为“已解决”", + "zh-tw": "將此裝置標記為“已解決”", }, "liveSyncReplicator.mismatchedTweakDetected": { def: "Some mismatches have been detected in the configuration between devices. Running a manual replication will attempt to resolve this issue.", }, "liveSyncReplicator.oneShotSyncBegin": { def: "OneShot Sync begin... (${syncMode})", + de: "OneShot Sync beginnt... (${syncMode})", es: "Inicio de sincronización OneShot... (${syncMode})", fr: "Démarrage de la synchronisation OneShot... (${syncMode})", he: "סנכרון OneShot מתחיל... (${syncMode})", ja: "OneShot同期を開始... (${syncMode})", ko: "OneShot 동기화 시작... (${syncMode})", - ru: "Начало OneShot синхронизации... (syncMode)", + ru: "Начало OneShot Sync... (${syncMode})", zh: "OneShot同步开始...(${syncMode})", + "zh-tw": "OneShot同步開始...(${syncMode})", }, "liveSyncReplicator.remoteDbCorrupted": { def: "Remote database is newer or corrupted, make sure to latest version of self-hosted-livesync installed", + de: "Remote-Datenbank ist neuer oder beschädigt, stellen Sie sicher, dass die neueste Version von self-hosted-livesync installiert", 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", fr: "La base distante est plus récente ou corrompue, assurez-vous d'avoir installé la dernière version de self-hosted-livesync", he: "מסד הנתונים המרוחק חדש יותר או פגום, ודא שגרסת self-hosted-livesync המותקנת היא העדכנית ביותר", @@ -2234,9 +2828,11 @@ export const allMessages = { ko: "원격 데이터베이스가 더 최신이거나 손상되었습니다. 최신 버전의 self-hosted-livesync가 설치되어 있는지 확인하세요", ru: "Удалённая база данных новее или повреждена, убедитесь, что установлена последняя версия self-hosted-livesync", zh: "远程数据库较新或已损坏,请确保已安装最新版本的self-hosted-livesync", + "zh-tw": "遠端資料庫較新或已損壞,請確保已安裝最新版本的self-hosted-livesync", }, "liveSyncReplicator.remoteDbCreatedOrConnected": { def: "Remote Database Created or Connected", + de: "Remote Datenbank erstellt oder vernetzt", es: "Base de datos remota creada o conectada", fr: "Base distante créée ou connectée", he: "מסד הנתונים המרוחק נוצר או חובר", @@ -2244,9 +2840,11 @@ export const allMessages = { ko: "원격 데이터베이스가 생성되거나 연결되었습니다", ru: "Удалённая база данных создана или подключена", zh: "远程数据库已创建或连接", + "zh-tw": "遠端資料庫已建立或連線", }, "liveSyncReplicator.remoteDbDestroyed": { def: "Remote Database Destroyed", + de: "Remote Datenbank zerstört", es: "Base de datos remota destruida", fr: "Base distante détruite", he: "מסד הנתונים המרוחק נהרס", @@ -2254,9 +2852,11 @@ export const allMessages = { ko: "원격 데이터베이스가 삭제되었습니다", ru: "Удалённая база данных уничтожена", zh: "远程数据库已销毁", + "zh-tw": "遠端資料庫已銷燬", }, "liveSyncReplicator.remoteDbDestroyError": { def: "Something happened on Remote Database Destroy:", + de: "Etwas passierte auf Remote Database Destroy:", es: "Algo ocurrió al destruir base de datos remota:", fr: "Un problème est survenu lors de la destruction de la base distante :", he: "אירעה שגיאה בהריסת מסד הנתונים המרוחק:", @@ -2264,9 +2864,11 @@ export const allMessages = { ko: "원격 데이터베이스 삭제 중 오류가 발생했습니다:", ru: "Произошла ошибка при уничтожении удалённой базы данных:", zh: "远程数据库销毁时发生错误:", + "zh-tw": "遠端資料庫銷燬時發生錯誤:", }, "liveSyncReplicator.remoteDbMarkedResolved": { def: "Remote database has been marked resolved.", + de: "Die Remote-Datenbank wurde aufgelöst.", es: "Base de datos remota marcada como resuelta.", fr: "La base distante a été marquée comme résolue.", he: "מסד הנתונים המרוחק סומן כנפתר.", @@ -2274,9 +2876,11 @@ export const allMessages = { ko: "원격 데이터베이스가 해결됨으로 표시되었습니다.", ru: "Удалённая база данных отмечена как разрешённая.", zh: "远程数据库已标记为已解决", + "zh-tw": "遠端資料庫已標記為已解決", }, "liveSyncReplicator.replicationClosed": { def: "Replication closed", + de: "Zurück zur Übersicht", es: "Replicación cerrada", fr: "Réplication fermée", he: "השכפול נסגר", @@ -2284,9 +2888,11 @@ export const allMessages = { ko: "복제가 종료되었습니다", ru: "Репликация закрыта", zh: "同步已关闭", + "zh-tw": "同步已關閉", }, "liveSyncReplicator.replicationInProgress": { def: "Replication is already in progress", + de: "Die Replikation ist bereits im Gange", es: "Replicación en curso", fr: "Une réplication est déjà en cours", he: "שכפול כבר מתבצע", @@ -2294,19 +2900,23 @@ export const allMessages = { ko: "복제가 이미 진행 중입니다", ru: "Репликация уже выполняется", zh: "同步正在进行中", + "zh-tw": "同步正在進行中", }, "liveSyncReplicator.retryLowerBatchSize": { def: "Retry with lower batch size:${batch_size}/${batches_limit}", + de: "Erneuter Versuch mit kleinerer Stapelgröße:${batch_size}/${batches_limit}", es: "Reintentar con tamaño de lote más bajo:${batch_size}/${batches_limit}", fr: "Nouvelle tentative avec une taille de lot réduite :${batch_size}/${batches_limit}", he: "מנסה שוב עם גודל אצווה קטן יותר:${batch_size}/${batches_limit}", ja: "より小さいバッチサイズで再試行: ${batch_size}/${batches_limit}", ko: "더 낮은 일괄 크기로 재시도: ${batch_size}/${batches_limit}", - ru: "Повтор с меньшим размером пакета: batch_size/batches_limit", + ru: "Повтор с меньшим размером пакета: ${batch_size}/${batches_limit}", zh: "使用更小的批量大小重试:${batch_size}/${batches_limit}", + "zh-tw": "使用更小的批次大小重試:${batch_size}/${batches_limit}", }, "liveSyncReplicator.unlockRemoteDb": { def: "Unlock remote database to prevent data corruption", + de: "Entsperren Sie Remote-Datenbank, um Daten Korruption zu verhindern", es: "Desbloquear base de datos remota para prevenir corrupción de datos", fr: "Déverrouillage de la base distante pour éviter la corruption des données", he: "מבטל נעילת מסד הנתונים המרוחק למניעת פגיעה בנתונים", @@ -2314,39 +2924,47 @@ export const allMessages = { ko: "데이터 손상을 방지하기 위해 원격 데이터베이스를 잠금 해제합니다", ru: "Разблокировка удалённой базы данных для предотвращения повреждения данных", zh: "解锁远程数据库以防止数据损坏", + "zh-tw": "解鎖遠端資料庫以防止資料損壞", }, "liveSyncSetting.errorNoSuchSettingItem": { def: "No such setting item: ${key}", + de: "Kein solcher Einstellungsartikel: ${key}", es: "No existe el ajuste: ${key}", fr: "Élément de paramètre inexistant : ${key}", he: "פריט הגדרה לא קיים: ${key}", ja: "その設定項目は存在しません: ${key}", ko: "해당 설정 항목이 없습니다: ${key}", - ru: "Такого параметра настройки не существует: key", + ru: "Такого элемента настройки не существует: ${key}", zh: "没有此设置项:${key}", + "zh-tw": "沒有此設定項:${key}", }, "liveSyncSetting.originalValue": { def: "Original: ${value}", - es: "Original: ${value}", + de: "Ursprünglich: ${value}", + es: "Valor original: ${value}", fr: "Original : ${value}", he: "ערך מקורי: ${value}", ja: "元の値: ${value}", ko: "원본: ${value}", - ru: "Оригинал: value", + ru: "Исходное значение: ${value}", zh: "原始值:${value}", + "zh-tw": "原始值:${value}", }, "liveSyncSetting.valueShouldBeInRange": { def: "The value should ${min} < value < ${max}", + de: "Der Wert sollte ${min} < Wert < ${max}", es: "El valor debe estar entre ${min} y ${max}", fr: "La valeur doit être ${min} < valeur < ${max}", he: "הערך צריך להיות ${min} < ערך < ${max}", ja: "値は ${min} < 値 < ${max} の範囲である必要があります", ko: "값은 ${min} < 값 < ${max} 범위에 있어야 합니다", - ru: "Значение должно быть min < значение < max", + ru: "Значение должно быть в диапазоне ${min} < значение < ${max}", zh: "值应该在 ${min} < value < ${max} 之间", + "zh-tw": "值應該在 ${min} < value < ${max} 之間", }, "liveSyncSettings.btnApply": { def: "Apply", + de: "Anwendung", es: "Aplicar", fr: "Appliquer", he: "החל", @@ -2354,6 +2972,7 @@ export const allMessages = { ko: "적용", ru: "Применить", zh: "应用", + "zh-tw": "應用", }, "Local Database Tweak": { def: "Local Database Tweak", @@ -2364,6 +2983,7 @@ export const allMessages = { }, Lock: { def: "Lock", + de: "Sperren", es: "Bloquear", ja: "ロック", ko: "잠금", @@ -2373,6 +2993,7 @@ export const allMessages = { }, "Lock Server": { def: "Lock Server", + de: "Server sperren", es: "Bloquear servidor", ja: "サーバーをロック", ko: "서버 잠금", @@ -2382,6 +3003,7 @@ export const allMessages = { }, "Lock the remote server to prevent synchronization with other devices.": { def: "Lock the remote server to prevent synchronization with other devices.", + de: "Sperrt den Remote-Server, um die Synchronisation mit anderen Geräten zu verhindern.", es: "Bloquea el servidor remoto para impedir la sincronización con otros dispositivos.", ja: "他のデバイスとの同期を防ぐため、リモートサーバーをロックします。", ko: "다른 기기와의 동기화를 방지하기 위해 원격 서버를 잠급니다.", @@ -2391,6 +3013,7 @@ export const allMessages = { }, "logPane.autoScroll": { def: "Auto scroll", + de: "Auto Scroll", es: "Autodesplazamiento", fr: "Défilement automatique", he: "גלילה אוטומטית", @@ -2398,9 +3021,11 @@ export const allMessages = { ko: "자동 스크롤", ru: "Автопрокрутка", zh: "自动滚动", + "zh-tw": "自動滾動", }, "logPane.logWindowOpened": { def: "Log window opened", + de: "Fenster öffnen", es: "Ventana de registro abierta", fr: "Fenêtre des journaux ouverte", he: "חלון יומן נפתח", @@ -2408,9 +3033,11 @@ export const allMessages = { ko: "로그 창이 열렸습니다", ru: "Окно лога открыто", zh: "日志窗口已打开", + "zh-tw": "日誌視窗已開啟", }, "logPane.pause": { def: "Pause", + de: "Pausieren", es: "Pausar", fr: "Pause", he: "השהה", @@ -2418,9 +3045,11 @@ export const allMessages = { ko: "일시 중단", ru: "Пауза", zh: "暂停", + "zh-tw": "暫停", }, "logPane.title": { def: "Self-hosted LiveSync Log", + de: "Selbstgehostetes LiveSync Log", es: "Registro de Self-hosted LiveSync", fr: "Journaux Self-hosted LiveSync", he: "יומן Self-hosted LiveSync", @@ -2428,9 +3057,11 @@ export const allMessages = { ko: "Self-hosted LiveSync 로그", ru: "Лог Self-hosted LiveSync", zh: "Self-hosted LiveSync 日志", + "zh-tw": "Self-hosted LiveSync 日誌", }, "logPane.wrap": { def: "Wrap", + de: "Zeilenumbruch", es: "Ajustar", fr: "Retour à la ligne", he: "גלישת שורות", @@ -2438,9 +3069,21 @@ export const allMessages = { ko: "줄 바꿈", ru: "Перенос", zh: "自动换行", + "zh-tw": "自動換行", + }, + Maintenance: { + def: "Maintenance", + de: "Wartung", + es: "Mantenimiento", + ja: "メンテナンス", + ko: "유지보수", + ru: "Обслуживание", + zh: "维护", + "zh-tw": "維護", }, "Maximum delay for batch database updating": { def: "Maximum delay for batch database updating", + de: "Maximale Verzögerung bei der Aktualisierung der Chargendatenbank", es: "Retraso máximo para actualización por lotes", fr: "Délai maximum pour la mise à jour groupée de la base", he: "עיכוב מקסימלי לעדכון אצווה של מסד נתונים", @@ -2448,9 +3091,21 @@ export const allMessages = { ko: "일괄 데이터베이스 업데이트 최대 지연", ru: "Максимальная задержка пакетного обновления базы данных", zh: "批量数据库更新的最大延迟", + "zh-tw": "批次資料庫更新的最大延遲", + }, + "Maximum file modification time for reflected file events": { + def: "Maximum file modification time for reflected file events", + de: "Maximale Dateiänderungszeit für reflektierte Dateiereignisse", + es: "Tiempo máximo de modificación para eventos de archivo reflejados", + ja: "反映するファイルイベントの最大更新時刻", + ko: "반영할 파일 이벤트의 최대 파일 수정 시간", + ru: "Максимальное время изменения файла для отражаемых событий", + zh: "反映文件事件的最大文件修改时间", + "zh-tw": "反映檔案事件的最大檔案修改時間", }, "Maximum file size": { def: "Maximum file size", + de: "Maximale Dateigröße", es: "Tamaño máximo de archivo", fr: "Taille maximale de fichier", he: "גודל קובץ מקסימלי", @@ -2458,9 +3113,11 @@ export const allMessages = { ko: "최대 파일 크기", ru: "Максимальный размер файла", zh: "最大文件大小", + "zh-tw": "最大檔案大小", }, "Maximum Incubating Chunk Size": { def: "Maximum Incubating Chunk Size", + de: "Maximale Inkubation Chunk-Größe", es: "Tamaño máximo de chunks incubados", fr: "Taille maximale des fragments en incubation", he: "גודל מקסימלי לנתח בבישול", @@ -2468,9 +3125,11 @@ export const allMessages = { ko: "임시 보관 변경 기록의 최대 크기", ru: "Максимальный размер инкубируемого чанка", zh: "最大孵化块大小", + "zh-tw": "最大孵化塊大小", }, "Maximum Incubating Chunks": { def: "Maximum Incubating Chunks", + de: "Maximale Inkubation von Chunks", es: "Máximo de chunks incubados", fr: "Nombre maximum de fragments en incubation", he: "מספר מקסימלי של נתחים בבישול", @@ -2478,9 +3137,11 @@ export const allMessages = { ko: "임시 보관 중인 변경 기록 최대 수", ru: "Максимальное количество инкубируемых чанков", zh: "最大孵化块数", + "zh-tw": "最大孵化塊數", }, "Maximum Incubation Period": { def: "Maximum Incubation Period", + de: "Maximale Inkubationsdauer", es: "Periodo máximo de incubación", fr: "Période maximale d'incubation", he: "תקופת בישול מקסימלית", @@ -2488,9 +3149,31 @@ export const allMessages = { ko: "변경 기록 임시 보관 최대 시간", ru: "Максимальный период инкубации", zh: "最大孵化期", + "zh-tw": "最大孵化期", + }, + "Maximum size of chunks to send in one request": { + def: "Maximum size of chunks to send in one request", + de: "Maximale Chunk-Größe pro Anfrage", + es: "Tamaño máximo de fragmentos enviados en una solicitud", + ja: "1 回のリクエストで送信するチャンクの最大サイズ", + ko: "한 요청에서 보낼 청크의 최대 크기", + ru: "Максимальный размер фрагментов, отправляемых за один запрос", + zh: "单次请求发送数据块的最大大小", + "zh-tw": "單次請求傳送資料區塊的最大大小", + }, + MB: { + def: "MB", + de: "MB", + es: "MB", + ja: "MB", + ko: "MB", + ru: "MB", + zh: "MB", + "zh-tw": "MB", }, "MB (0 to disable).": { def: "MB (0 to disable).", + de: "MB (0 zu deaktivieren).", es: "MB (0 para desactivar)", fr: "Mo (0 pour désactiver).", he: "MB (0 לביטול).", @@ -2498,6 +3181,7 @@ export const allMessages = { ko: "MB (0으로 설정하면 비활성화).", ru: "МБ (0 для отключения).", zh: "MB(0为禁用)", + "zh-tw": "MB(0為禁用)", }, "Memory cache": { def: "Memory cache", @@ -2508,6 +3192,7 @@ export const allMessages = { }, "Memory cache size (by total characters)": { def: "Memory cache size (by total characters)", + de: "Speicher Cache Größe (nach Gesamtzeichen)", es: "Tamaño caché memoria (por caracteres)", fr: "Taille du cache mémoire (par nombre total de caractères)", he: 'גודל מטמון זיכרון (לפי סה"כ תווים)', @@ -2515,9 +3200,11 @@ export const allMessages = { ko: "메모리 캐시 크기 (총 문자 수)", ru: "Размер кэша памяти (по общему количеству символов)", zh: "内存缓存大小(按总字符数)", + "zh-tw": "記憶體快取大小(按總字元數)", }, "Memory cache size (by total items)": { def: "Memory cache size (by total items)", + de: "Speicher Cache-Größe (nach Gesamtelementen)", es: "Tamaño caché memoria (por ítems)", fr: "Taille du cache mémoire (par nombre total d'éléments)", he: 'גודל מטמון זיכרון (לפי סה"כ פריטים)', @@ -2525,6 +3212,7 @@ export const allMessages = { ko: "메모리 캐시 크기 (총 항목 수)", ru: "Размер кэша памяти (по общему количеству элементов)", zh: "内存缓存大小(按总项目数)", + "zh-tw": "記憶體快取大小(按總專案數)", }, Merge: { def: "Merge", @@ -2536,6 +3224,7 @@ export const allMessages = { }, "Minimum delay for batch database updating": { def: "Minimum delay for batch database updating", + de: "Mindestverzögerung bei der Aktualisierung der Chargendatenbank", es: "Retraso mínimo para actualización por lotes", fr: "Délai minimum pour la mise à jour groupée de la base", he: "עיכוב מינימלי לעדכון אצווה של מסד נתונים", @@ -2543,9 +3232,12 @@ export const allMessages = { ko: "일괄 데이터베이스 업데이트 최소 지연", ru: "Минимальная задержка пакетного обновления базы данных", zh: "批量数据库更新的最小延迟", + "zh-tw": "批次資料庫更新的最小延遲", }, "Minimum interval for syncing": { def: "Minimum interval for syncing", + de: "Mindestintervall für die Synchronisierung", + es: "Intervalo mínimo para sincronizar", fr: "Intervalle minimum pour la synchronisation", he: "מרווח מינימלי לסנכרון", ja: "同期間隔の最小値", @@ -2556,6 +3248,7 @@ export const allMessages = { }, "moduleCheckRemoteSize.logCheckingStorageSizes": { def: "Checking storage sizes", + de: "Überprüfen der Speichergrößen", es: "Comprobando tamaños de almacenamiento", fr: "Vérification des tailles de stockage", he: "בודק גדלי אחסון", @@ -2563,39 +3256,47 @@ export const allMessages = { ko: "스토리지 크기 확인 중", ru: "Проверка размеров хранилища", zh: "正在检查存储大小", + "zh-tw": "正在檢查儲存大小", }, "moduleCheckRemoteSize.logCurrentStorageSize": { def: "Remote storage size: ${measuredSize}", + de: "Größe des entfernten Speichers: ${measuredSize}", es: "Tamaño del almacenamiento remoto: ${measuredSize}", fr: "Taille du stockage distant : ${measuredSize}", he: "גודל אחסון מרוחק: ${measuredSize}", ja: "リモートストレージサイズ: ${measuredSize}", ko: "원격 스토리지 크기: ${measuredSize}", - ru: "Размер удалённого хранилища: measuredSize", + ru: "Размер удалённого хранилища: ${measuredSize}", zh: "远程存储大小:${measuredSize}", + "zh-tw": "遠端儲存大小:${measuredSize}", }, "moduleCheckRemoteSize.logExceededWarning": { def: "Remote storage size: ${measuredSize} exceeded ${notifySize}", + de: "Größe des entfernten Speichers ${measuredSize} überschreitet ${notifySize}", es: "Tamaño del almacenamiento remoto: ${measuredSize} superó ${notifySize}", fr: "Taille du stockage distant : ${measuredSize} a dépassé ${notifySize}", he: "גודל אחסון מרוחק: ${measuredSize} עלה על ${notifySize}", ja: "リモートストレージサイズ: ${measuredSize} が ${notifySize} を超過しました", ko: "원격 스토리지 크기: ${measuredSize}가 ${notifySize}를 초과했습니다", - ru: "Размер удалённого хранилища: measuredSize превысил notifySize", + ru: "Размер удалённого хранилища ${measuredSize} превысил ${notifySize}", zh: "远程存储大小:${measuredSize} 超过 ${notifySize}", + "zh-tw": "遠端儲存大小:${measuredSize} 超過 ${notifySize}", }, "moduleCheckRemoteSize.logThresholdEnlarged": { def: "Threshold has been enlarged to ${size}MB", + de: "Schwelle wurde auf ${size}MB erweitert", es: "El umbral se ha ampliado a ${size}MB", fr: "Le seuil a été augmenté à ${size} Mo", he: "הסף הורחב ל-${size}MB", ja: "しきい値が ${size}MB に設定されました", ko: "임계값이 ${size}MB로 증가되었습니다", - ru: "Порог увеличен до sizeМБ", + ru: "Порог увеличен до ${size}MB", zh: "阈值已扩大到 ${size}MB", + "zh-tw": "閾值已擴大到 ${size}MB", }, "moduleCheckRemoteSize.msgConfirmRebuild": { def: "This may take a bit of a long time. Do you really want to rebuild everything now?", + de: "Das kann ein bisschen lange dauern. Willst du jetzt wirklich alles wieder aufbauen?", es: "Esto puede llevar un poco de tiempo. ¿Realmente quieres reconstruir todo ahora?", fr: "Cela peut prendre un certain temps. Voulez-vous vraiment tout reconstruire maintenant ?", he: "פעולה זו עשויה לקחת זמן מה. האם אתה בטוח שברצונך לבנות מחדש עכשיו?", @@ -2603,19 +3304,24 @@ export const allMessages = { ko: "시간이 꽤 오래 걸릴 수 있습니다. 정말 지금 모든 것을 재구축하시겠습니까?", ru: "Это может занять некоторое время. Вы действительно хотите перестроить всё сейчас?", zh: "这可能需要一些时间。您真的想现在重建所有内容吗?", + "zh-tw": "這可能需要一些時間。您真的想現在重建所有內容嗎?", }, "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", + de: "**Ihre Datenbank wird größer!** Aber keine Sorge, wir können es jetzt ansprechen. Die Zeit vor dem Auslaufen aus dem Raum auf dem Remote-Speicher.\n\n| Gemessene Größe | Konfigurierte Größe |\n--- | --- |\n| ${estimatedSize} | ${maxSize}\n\n> [!MORE]-\n> Wenn Sie es schon seit vielen Jahren verwenden, kann es unreferenzierte Stücke - d.h. Müll - in der Datenbank ansammeln. Deshalb empfehlen wir, alles neu aufzubauen. Es wird wahrscheinlich viel kleiner werden.\n>\n> Wenn das Volumen Ihres Tresors einfach zunimmt, ist es besser, alles nach der Organisation der Dateien wieder aufzubauen. Self-hosted LiveSync löscht die tatsächlichen Daten nicht, auch wenn Sie sie löschen, um den Prozess zu beschleunigen. Es ist grob [documented](https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/tech info.md).\n>\n> Wenn Sie die Zunahme nicht ausmachen, können Sie die Benachrichtigungsgrenze um 100MB erhöhen. Dies ist der Fall, wenn Sie es auf Ihrem eigenen Server ausführen. Es ist jedoch besser, alles von Zeit zu Zeit wieder aufzubauen.\n>\n\n> (! WARNEN)\n> Wenn Sie alles neu aufbauen, stellen Sie sicher, dass alle Geräte synchronisiert sind. Das Plug-in wird jedoch so viel wie möglich verschmelzen.\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", fr: "**Votre base de données grossit !** Pas d'inquiétude, nous pouvons y remédier dès maintenant, avant de manquer d'espace sur le stockage distant.\n\n| Taille mesurée | Taille configurée |\n| --- | --- |\n| ${estimatedSize} | ${maxSize} |\n\n> [!MORE]-\n> Si vous l'utilisez depuis de nombreuses années, il peut y avoir des fragments non référencés — des déchets, en somme — accumulés dans la base. Nous recommandons donc de tout reconstruire. Cela réduira probablement beaucoup la taille.\n>\n> Si le volume de votre coffre augmente simplement, il est préférable de tout reconstruire après avoir organisé les fichiers. Self-hosted LiveSync ne supprime pas réellement les données même si vous les effacez, afin d'accélérer le processus. Ceci est documenté grossièrement [ici](https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/tech_info.md).\n>\n> Si cela ne vous dérange pas, vous pouvez augmenter la limite de notification de 100 Mo. C'est le cas si vous l'exécutez sur votre propre serveur. Il reste toutefois préférable de tout reconstruire de temps en temps.\n>\n\n> [!WARNING]\n> Si vous tout reconstruisez, assurez-vous que tous les appareils sont synchronisés. Le plug-in fusionnera autant que possible cependant.\n", he: "**מסד הנתונים שלך הולך וגדל!** אל תדאג, אנחנו יכולים לטפל בזה עכשיו. הזמן שנשאר עד לאזול המקום באחסון המרוחק.\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\n> [!WARNING]\n> אם תבנה מחדש, ודא שכל המכשירים מסונכרנים. הפלאגין ינסה למזג כמה שניתן.\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", + 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: "**Ваша база данных становится больше!** Но не беспокойтесь, это можно исправить сейчас, до того как закончится место в удаленном хранилище.\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\n> [!WARNING]\n> Перед полной перестройкой убедитесь, что все устройства синхронизированы. Плагин постарается выполнить слияние насколько возможно.\n", + 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", + "zh-tw": + "**您的資料庫正在變大!** 但別擔心,我們現在可以解決它。在遠端儲存空間用完之前還有時間。\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", }, "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", + de: "Wir können eine maximale Datenbank-Kapazitätswarnung festlegen, ** um Maßnahmen zu ergreifen, bevor Sie auf dem Remote-Speicher aus dem Raum laufen**.\nWollen Sie das aktivieren?\n\n> [!MORE]-\n> - 0: Warnen Sie nicht über die Speichergröße.\n> Dies wird empfohlen, wenn Sie genügend Platz auf dem Remote-Speicher haben, vor allem Sie selbst gehostet haben. Und Sie können die Speichergröße überprüfen und manuell wieder aufbauen.\n> - 800: Warnen, wenn die Speichergröße 800MB überschreitet.\n> Dies wird empfohlen, wenn Sie fly.io mit 1 GB Limit oder IBM Cloudant verwenden.\n> - 2000: Warnung, wenn die Speichergröße 2GB überschreitet.\n\nWenn wir die Grenze erreicht haben, werden wir aufgefordert, den Grenzwert Schritt für Schritt zu vergrößern.\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", fr: "Nous pouvons définir un avertissement de capacité maximale de la base de données, **afin d'agir avant de manquer d'espace sur le stockage distant**.\nVoulez-vous activer ceci ?\n\n> [!MORE]-\n> - 0 : Ne pas avertir sur la taille de stockage.\n> Recommandé si vous avez suffisamment d'espace sur le stockage distant, surtout en auto-hébergement. Vous pouvez vérifier la taille et reconstruire manuellement.\n> - 800 : Avertir si la taille du stockage distant dépasse 800 Mo.\n> Recommandé si vous utilisez fly.io avec une limite de 1 Go ou IBM Cloudant.\n> - 2000 : Avertir si la taille du stockage distant dépasse 2 Go.\n\nSi la limite est atteinte, il nous sera proposé de l'augmenter étape par étape.\n", he: "ניתן להגדיר אזהרת קיבולת מקסימלית של מסד הנתונים, **כדי לנקוט פעולה לפני שנגמר המקום באחסון המרוחד**.\nהאם להפעיל זאת?\n\n> [!MORE]-\n> - 0: אל תזהיר על גודל האחסון.\n> מומלץ אם יש לך מספיק מקום באחסון המרוחד, בעיקר אם השרת הוא שלך. ניתן לבדוק את גודל האחסון ולבנות מחדש ידנית.\n> - 800: הזהר אם גודל האחסון המרוחד עולה על 800MB.\n> מומלץ אם אתה משתמש ב-fly.io עם מגבלת 1GB או ב-IBM Cloudant.\n> - 2000: הזהר אם גודל האחסון המרוחד עולה על 2GB.\n\nאם הגענו למגבלה, תתבקש להרחיב את הסף בהדרגה.\n", @@ -2623,9 +3329,12 @@ export const allMessages = { 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", + "zh-tw": + "我們可以設定一個最大資料庫容量警告,**以便在遠端儲存空間耗盡前採取行動**。\n您想啟用這個功能嗎?\n\n> [!MORE]-\n> - 0: 不警告儲存大小。\n> 如果您在遠端儲存(尤其是自託管)上有足夠的空間,則推薦此選項。您可以手動檢查儲存大小並重建。\n> - 800: 如果遠端儲存大小超過 800MB 則發出警告。\n> 如果您使用的是 fly.io(1GB 限制) 或 IBM Cloudant,則推薦此選項。\n> - 2000: 如果遠端儲存大小超過 2GB 則發出警告。\n\n如果達到限制,系統會要求我們逐步增大限制\n", }, "moduleCheckRemoteSize.option2GB": { def: "2GB (Standard)", + de: "2GB (Standard)", es: "2GB (Estándar)", fr: "2 Go (Standard)", he: "2GB (סטנדרטי)", @@ -2633,19 +3342,23 @@ export const allMessages = { ko: "2GB (표준)", ru: "2ГБ (Стандарт)", zh: "2GB (标准)", + "zh-tw": "2GB (標準)", }, "moduleCheckRemoteSize.option800MB": { def: "800MB (Cloudant, fly.io)", + de: "800MB (Cloudant, fly.io)", es: "800MB (Cloudant, fly.io)", fr: "800 Mo (Cloudant, fly.io)", he: "800MB (Cloudant, fly.io)", ja: "800MB (Cloudant, fly.io)", - ko: "800MB (Cloudant, fly.io)", + ko: "800MB", ru: "800МБ (Cloudant, fly.io)", - zh: "800MB (Cloudant, fly.io)", + zh: "800MB(Cloudant, fly.io)", + "zh-tw": "800MB(Cloudant, fly.io)", }, "moduleCheckRemoteSize.optionAskMeLater": { def: "Ask me later", + de: "Fragen Sie mich später", es: "Pregúntame más tarde", fr: "Me demander plus tard", he: "שאל מאוחר יותר", @@ -2653,9 +3366,11 @@ export const allMessages = { ko: "나중에 물어보기", ru: "Спросить позже", zh: "稍后问我", + "zh-tw": "稍後問我", }, "moduleCheckRemoteSize.optionDismiss": { def: "Dismiss", + de: "Entlassung", es: "Descartar", fr: "Ignorer", he: "דחה", @@ -2663,19 +3378,23 @@ export const allMessages = { ko: "무시", ru: "Отклонить", zh: "忽略", + "zh-tw": "忽略", }, "moduleCheckRemoteSize.optionIncreaseLimit": { def: "increase to ${newMax}MB", + de: "erhöhen auf ${newMax}MB", es: "aumentar a ${newMax}MB", fr: "augmenter à ${newMax} Mo", he: "הגדל ל-${newMax}MB", ja: "${newMax}MBに設定", ko: "${newMax}MB로 증가", - ru: "увеличить до newMaxМБ", + ru: "увеличить до ${newMax}MB", zh: "增加到 ${newMax}MB", + "zh-tw": "增加到 ${newMax}MB", }, "moduleCheckRemoteSize.optionNoWarn": { def: "No, never warn please", + de: "Nein, nie warnen bitte", es: "No, nunca advertir por favor", fr: "Non, ne jamais avertir", he: "לא, אל תזהיר בכלל", @@ -2683,9 +3402,11 @@ export const allMessages = { ko: "아니요, 경고하지 마세요", ru: "Нет, не уведомлять", zh: "不,请永远不要警告", + "zh-tw": "不,請永遠不要警告", }, "moduleCheckRemoteSize.optionRebuildAll": { def: "Rebuild Everything Now", + de: "Alles neu aufbauen", es: "Reconstruir todo ahora", fr: "Tout reconstruire maintenant", he: "בנה הכל מחדש עכשיו", @@ -2693,9 +3414,11 @@ export const allMessages = { ko: "지금 모든 것 재구축", ru: "Перестроить всё сейчас", zh: "立即重建所有内容", + "zh-tw": "立即重建所有內容", }, "moduleCheckRemoteSize.titleDatabaseSizeLimitExceeded": { def: "Remote storage size exceeded the limit", + de: "Remote-Speichergröße überschritten die Grenze", es: "El tamaño del almacenamiento remoto superó el límite", fr: "Taille du stockage distant au-delà de la limite", he: "גודל האחסון המרוחד חרג מהמגבלה", @@ -2703,9 +3426,11 @@ export const allMessages = { ko: "원격 스토리지 크기가 제한을 초과했습니다", ru: "Размер удалённого хранилища превысил лимит", zh: "远程存储大小超出限制", + "zh-tw": "遠端儲存大小超出限制", }, "moduleCheckRemoteSize.titleDatabaseSizeNotify": { def: "Setting up database size notification", + de: "Einrichtung der Datenbankgröße", es: "Configuración de notificación de tamaño de base de datos", fr: "Configuration de la notification de taille de base", he: "הגדרת התראה על גודל מסד נתונים", @@ -2713,9 +3438,11 @@ export const allMessages = { ko: "데이터베이스 크기 알림 설정", ru: "Настройка уведомления о размере базы данных", zh: "设置数据库大小通知", + "zh-tw": "設定資料庫大小通知", }, "moduleInputUIObsidian.defaultTitleConfirmation": { def: "Confirmation", + de: "Bestätigung", es: "Confirmación", fr: "Confirmation", he: "אישור", @@ -2723,9 +3450,11 @@ export const allMessages = { ko: "확인", ru: "Подтверждение", zh: "确认", + "zh-tw": "確認", }, "moduleInputUIObsidian.defaultTitleSelect": { def: "Select", + de: "Wählen", es: "Seleccionar", fr: "Sélection", he: "בחר", @@ -2733,9 +3462,11 @@ export const allMessages = { ko: "선택", ru: "Выбор", zh: "选择", + "zh-tw": "選擇", }, "moduleInputUIObsidian.optionNo": { def: "No", + de: "Nein", es: "No", fr: "Non", he: "לא", @@ -2743,9 +3474,11 @@ export const allMessages = { ko: "아니요", ru: "Нет", zh: "否", + "zh-tw": "否", }, "moduleInputUIObsidian.optionYes": { def: "Yes", + de: "Ja.", es: "Sí", fr: "Oui", he: "כן", @@ -2753,9 +3486,11 @@ export const allMessages = { ko: "예", ru: "Да", zh: "是", + "zh-tw": "是", }, "moduleLiveSyncMain.logAdditionalSafetyScan": { def: "Additional safety scan...", + de: "Zusätzliche Sicherheitsscan...", es: "Escanéo de seguridad adicional...", fr: "Analyse de sécurité supplémentaire...", he: "סריקת בטיחות נוספת...", @@ -2763,9 +3498,11 @@ export const allMessages = { ko: "추가 안전 검사 중...", ru: "Дополнительная проверка безопасности...", zh: "额外的安全扫描...", + "zh-tw": "額外的安全掃描...", }, "moduleLiveSyncMain.logLoadingPlugin": { def: "Loading plugin...", + de: "Das Plugin wird geladen...", es: "Cargando complemento...", fr: "Chargement du plugin...", he: "טוען תוסף...", @@ -2773,9 +3510,11 @@ export const allMessages = { ko: "플러그인 로딩 중...", ru: "Загрузка плагина...", zh: "正在加载插件...", + "zh-tw": "正在載入外掛...", }, "moduleLiveSyncMain.logPluginInitCancelled": { def: "Plugin initialisation was cancelled by a module", + de: "Plugin Initialisierung wurde durch ein Modul aufgehoben", es: "La inicialización del complemento fue cancelada por un módulo", fr: "L'initialisation du plugin a été annulée par un module", he: "אתחול התוסף בוטל על ידי מודול", @@ -2783,19 +3522,23 @@ export const allMessages = { ko: "모듈에 의해 플러그인 초기화가 취소되었습니다", ru: "Инициализация плагина отменена модулем", zh: "插件初始化被某个模块取消", + "zh-tw": "外掛初始化被某個模組取消", }, "moduleLiveSyncMain.logPluginVersion": { def: "Self-hosted LiveSync v${manifestVersion} ${packageVersion}", + de: "Selbstgehostete LiveSync v${manifestVersion} ${packageVersion}", es: "Self-hosted LiveSync v${manifestVersion} ${packageVersion}", fr: "Self-hosted LiveSync v${manifestVersion} ${packageVersion}", he: "Self-hosted LiveSync גרסה ${manifestVersion} ${packageVersion}", ja: "Self-hosted LiveSync v${manifestVersion} ${packageVersion}", ko: "Self-hosted LiveSync v${manifestVersion} ${packageVersion}", - ru: "Self-hosted LiveSync vmanifestVersion packageVersion", + ru: "Self-hosted LiveSync v${manifestVersion} ${packageVersion}", zh: "Self-hosted LiveSync v${manifestVersion} ${packageVersion}", + "zh-tw": "Self-hosted LiveSync v${manifestVersion} ${packageVersion}", }, "moduleLiveSyncMain.logReadChangelog": { def: "LiveSync has updated, please read the changelog!", + de: "LiveSync hat aktualisiert, lesen Sie bitte das Changelog!", es: "LiveSync se ha actualizado, ¡por favor lee el registro de cambios!", fr: "LiveSync a été mis à jour, veuillez lire le journal des modifications !", he: "LiveSync עודכן, אנא קרא את יומן השינויים!", @@ -2803,9 +3546,11 @@ export const allMessages = { ko: "LiveSync가 업데이트되었습니다. 변경사항을 읽어보세요!", ru: "LiveSync обновлён, пожалуйста, прочитайте список изменений!", zh: "LiveSync 已更新,请阅读更新日志!", + "zh-tw": "LiveSync 已更新,請閱讀更新日誌!", }, "moduleLiveSyncMain.logSafetyScanCompleted": { def: "Additional safety scan completed", + de: "Zusätzliche Sicherheitsprüfung abgeschlossen", es: "Escanéo de seguridad adicional completado", fr: "Analyse de sécurité supplémentaire terminée", he: "סריקת הבטיחות הנוספת הושלמה", @@ -2813,9 +3558,11 @@ export const allMessages = { ko: "추가 안전 검사가 완료되었습니다", ru: "Дополнительная проверка безопасности завершена", zh: "额外的安全扫描完成", + "zh-tw": "額外的安全掃描完成", }, "moduleLiveSyncMain.logSafetyScanFailed": { def: "Additional safety scan has failed on a module", + de: "Zusätzlicher Sicherheitsscan ist auf einem Modul gescheitert", es: "El escaneo de seguridad adicional ha fallado en un módulo", fr: "L'analyse de sécurité supplémentaire a échoué sur un module", he: "סריקת הבטיחות הנוספת נכשלה במודול", @@ -2823,9 +3570,11 @@ export const allMessages = { ko: "모듈에서 추가 안전 검사가 실패했습니다", ru: "Дополнительная проверка безопасности не удалась в модуле", zh: "额外的安全扫描在某个模块上失败", + "zh-tw": "額外的安全掃描在某個模組上失敗", }, "moduleLiveSyncMain.logUnloadingPlugin": { def: "Unloading plugin...", + de: "Ausladen des Plugins...", es: "Descargando complemento...", fr: "Déchargement du plugin...", he: "מסיר תוסף...", @@ -2833,9 +3582,11 @@ export const allMessages = { ko: "플러그인 언로딩 중...", ru: "Выгрузка плагина...", zh: "正在卸载插件...", + "zh-tw": "正在解除安裝外掛...", }, "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.", + de: "LiveSync wurde aktualisiert, Im Falle von Updates wurde die automatische Synchronisation vorübergehend deaktiviert. Stellen Sie sicher, dass alle Geräte aktuell sind, bevor Sie diese aktivieren.", 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.", fr: "LiveSync a été mis à jour. En cas de mises à jour non rétrocompatibles, toute synchronisation automatique a été temporairement désactivée. Assurez-vous que tous les appareils sont à jour avant d'activer.", he: "LiveSync עודכן. במקרה של עדכונים משמעותיים, כל הסנכרון האוטומטי הושבת זמנית. ודא שכל המכשירים מעודכנים לפני ההפעלה.", @@ -2843,19 +3594,24 @@ export const allMessages = { ko: "LiveSync가 업데이트되었습니다. 호환성 문제가 있는 업데이트의 경우 모든 자동 동기화가 일시적으로 비활성화되었습니다. 활성화하기 전에 모든 기기가 최신 상태인지 확인하세요.", ru: "LiveSync обновлён. В случае критических изменений автоматическая синхронизация временно отключена. Убедитесь, что все устройства обновлены перед включением.", zh: "LiveSync 已更新,如果存在破坏性更新,所有自动同步已暂时禁用。请确保所有设备都更新到最新版本后再启用", + "zh-tw": "LiveSync 已更新,如果存在破壞性更新,所有自動同步已暫時禁用。請確保所有裝置都更新到最新版本後再啟用", }, "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", + de: "Self-hosted LiveSync wurde konfiguriert, um einige Ereignisse zu ignorieren. Ist das richtig?\n\n| Typ | Status | Hinweis |\n|:---:::---:----\n| Speicherereignisse | ${fileWatchingStatus} | Jede Änderung wird | | | | | | | | | |\n| Datenbank Events | ${parseReplicationStatus} | Jede synchronisierte Änderung wird verschoben |\n\nWillst du sie wieder aufnehmen und Obsidian neu starten?\n\n> [!DETAILS]-\n> Diese Fahnen werden vom Plug-in beim Umbau oder beim Abruf gesetzt. Wenn der Prozess abnormal endet, kann er unbeabsichtigt gehalten werden.\n> Wenn Sie sich nicht sicher sind, können Sie versuchen, diese Prozesse zu wiederholen. Achten Sie darauf, Ihren Tresor zu sichern.\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", fr: "Self-hosted LiveSync a été configuré pour ignorer certains événements. Est-ce correct ?\n\n| Type | Statut | Note |\n|:---:|:---:|---|\n| Événements de stockage | ${fileWatchingStatus} | Toute modification sera ignorée |\n| Événements de base | ${parseReplicationStatus} | Tout changement synchronisé sera reporté |\n\nVoulez-vous les reprendre et redémarrer Obsidian ?\n\n> [!DETAILS]-\n> Ces indicateurs sont définis par le plug-in lors d'une reconstruction ou d'une récupération. Si le processus se termine anormalement, ils peuvent rester activés involontairement.\n> Si vous n'êtes pas certain, vous pouvez relancer ces processus. Veillez à sauvegarder votre coffre.\n", he: "Self-hosted LiveSync הוגדר להתעלם מאירועים מסוימים. האם זה נכון?\n\n| סוג | סטטוס | הערה |\n|:---:|:---:|---|\n| אירועי אחסון | ${fileWatchingStatus} | כל שינוי יתעלם |\n| אירועי מסד נתונים | ${parseReplicationStatus} | כל שינוי מסונכרן יידחה |\n\nהאם לחדש אותם ולהפעיל מחדש את Obsidian?\n\n> [!DETAILS]-\n> דגלים אלה מוגדרים על ידי הפלאגין במהלך בנייה מחדש או משיכה. אם התהליך הסתיים בצורה לא תקינה, ייתכן שהם נשארו כלא מכוון.\n> אם אינך בטוח, ניתן לנסות להריץ מחדש את התהליכים. ודא שיש לך גיבוי של הכספת.\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", + ru: "Self-hosted LiveSync настроен так, чтобы игнорировать некоторые события. Это верно?\n\n| Тип | Статус | Примечание |\n|:---:|:---:|---|\n| События хранилища | ${fileWatchingStatus} | Каждое изменение будет игнорироваться |\n| События базы данных | ${parseReplicationStatus} | Каждое синхронизированное изменение будет отложено |\n\nХотите возобновить их и перезапустить Obsidian?\n\n> [!DETAILS]-\n> Эти флаги устанавливаются плагином во время перестроения или получения данных. Если процесс завершится ненормально, они могут остаться включёнными непреднамеренно.\n> Если вы не уверены, попробуйте повторно запустить эти процессы. Обязательно сделайте резервную копию своего Vault.", zh: "Self-hosted LiveSync 已被配置为忽略某些事件。这样对吗?\n\n| 类型 | 状态 | 说明 |\n|:---:|:---:|---|\n| 存储事件 | ${fileWatchingStatus} | 所有修改都将被忽略 |\n| 数据库事件 | ${parseReplicationStatus} | 所有同步的更改都将被推迟 |\n\n您想恢复它们并重启 Obsidian 吗?\n\n> [!DETAILS]-\n> 这些标志是在重建或获取时由插件设置的。如果过程异常结束,它们可能会被无意中保留。\n> 如果您不确定,可以尝试重新运行这些过程。请确保备份您的库。\n", + "zh-tw": + "Self-hosted LiveSync 已被配置為忽略某些事件。這樣對嗎?\n\n| 型別 | 狀態 | 說明 |\n|:---:|:---:|---|\n| 儲存事件 | ${fileWatchingStatus} | 所有修改都將被忽略 |\n| 資料庫事件 | ${parseReplicationStatus} | 所有同步的更改都將被推遲 |\n\n您想恢復它們並重啟 Obsidian 嗎?\n\n> [!DETAILS]-\n> 這些標誌是在重建或獲取時由外掛設定的。如果過程異常結束,它們可能會被無意中保留。\n> 如果您不確定,可以嘗試重新執行這些過程。請確保備份您的庫。\n", }, "moduleLiveSyncMain.optionKeepLiveSyncDisabled": { def: "Keep LiveSync disabled", + de: "LiveSync deaktiviert halten", es: "Mantener LiveSync desactivado", fr: "Garder LiveSync désactivé", he: "השאר LiveSync מנוטרל", @@ -2863,9 +3619,11 @@ export const allMessages = { ko: "LiveSync 비활성화 유지", ru: "Оставить LiveSync отключённым", zh: "保持 LiveSync 禁用", + "zh-tw": "保持 LiveSync 禁用", }, "moduleLiveSyncMain.optionResumeAndRestart": { def: "Resume and restart Obsidian", + de: "Wiederaufnahme von Obsidian", es: "Reanudar y reiniciar Obsidian", fr: "Reprendre et redémarrer Obsidian", he: "חדש והפעל מחדש את Obsidian", @@ -2873,9 +3631,11 @@ export const allMessages = { ko: "재개 후 Obsidian 재시작", ru: "Продолжить и перезапустить Obsidian", zh: "恢复并重启 Obsidian", + "zh-tw": "恢復並重啟 Obsidian", }, "moduleLiveSyncMain.titleScramEnabled": { def: "Scram Enabled", + de: "Scram aktivieren", es: "Scram habilitado", fr: "Mode Scram activé", he: "מצב בלימה פעיל", @@ -2883,9 +3643,11 @@ export const allMessages = { ko: "Scram 활성화됨", ru: "Экстренная остановка включена", zh: "紧急停止已启用", + "zh-tw": "緊急停止已啟用", }, "moduleLocalDatabase.logWaitingForReady": { def: "Waiting for ready...", + de: "Warten auf bereit...", es: "Esperando a que la base de datos esté lista...", fr: "En attente de disponibilité...", he: "ממתין לכשירות...", @@ -2893,9 +3655,11 @@ export const allMessages = { ko: "준비 대기 중...", ru: "Ожидание готовности...", zh: "等待就绪...", + "zh-tw": "等待就緒...", }, "moduleLog.showLog": { def: "Show Log", + de: "Wir zeigen uns", es: "Mostrar registro", fr: "Afficher le journal", he: "הצג יומן", @@ -2903,115 +3667,171 @@ export const allMessages = { ko: "로그 표시", ru: "Показать лог", zh: "显示日志", + "zh-tw": "顯示日誌", }, "moduleMigration.docUri": { def: "https://github.com/vrtmrz/obsidian-livesync/blob/main/README.md#how-to-use", + de: "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", fr: "https://github.com/vrtmrz/obsidian-livesync/blob/main/README.md#how-to-use", he: "https://github.com/vrtmrz/obsidian-livesync/blob/main/README.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", + ko: "https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/troubleshooting.md", 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", + "zh-tw": + "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", }, "moduleMigration.fix0256.buttons.checkItLater": { def: "Check it later", + de: "Überprüfen Sie es später", + es: "Revisarlo más tarde", fr: "Vérifier plus tard", he: "בדוק מאוחר יותר", ja: "後で確認する", + ko: "나중에 확인", ru: "Проверить позже", zh: "稍后检查", + "zh-tw": "稍後檢查", }, "moduleMigration.fix0256.buttons.DismissForever": { def: "I have fixed it, and do not ask again", + de: "Ich habe es repariert und frage mich nicht wieder", + es: "Ya lo corregí, y no volver a preguntar", fr: "J'ai corrigé, et ne plus demander", he: "תיקנתי, ואל תשאל שוב", ja: "修正済み、今後確認しない", + ko: "수정했으며 다시 묻지 않음", ru: "Исправлено, больше не спрашивать", zh: "我已经修复了,不再询问", + "zh-tw": "我已經修復了,不再詢問", }, "moduleMigration.fix0256.buttons.fix": { def: "Fix", + de: "Fehler", + es: "Corregir", fr: "Corriger", he: "תקן", ja: "修正", + ko: "수정", ru: "Исправить", zh: "修复", + "zh-tw": "修復", }, "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', + de: 'Aufgrund eines kürzlichen Fehlers (in v0.25.6) wurden einige Dateien möglicherweise nicht korrekt in der Synchronisierungsdatenbank gespeichert.\nWir haben die Dateien geprüft und einige gefunden, die repariert werden müssen.\n\n**Dateien, die repariert werden können:**\n\n${files}\n\nFür diese Dateien gibt es im Speicher eine größenmäßig passende Originaldatei, daher sind sie wahrscheinlich wiederherstellbar.\nWir können sie verwenden, um die Datenbank zu reparieren. Klicke unten auf "Reparieren".\n\n${messageUnrecoverable}\n\nWenn du dies erneut ausführen möchtest, kannst du das in Hatch tun.\n', + es: 'Debido a un error reciente (en v0.25.6), es posible que algunos archivos no se hayan guardado correctamente en la base de datos de sincronización.\nEscaneamos nuestros archivos y encontramos algunos que necesitan ser reparados.\n\n**Archivos listos para ser reparados:**\n\n${files}\n\nEstos archivos tienen el mismo tamaño que el archivo original en el almacenamiento y es probable que sean recuperables.\nPodemos usarlos para arreglar la base de datos, haga clic en el botón "Reparar" a continuación para arreglarlos.\n\n${messageUnrecoverable}\n\nSi desea ejecutarlo nuevamente, puede hacerlo desde Hatch.\n', fr: "En raison d'un bug récent (en v0.25.6), certains fichiers peuvent ne pas avoir été enregistrés correctement dans la base de synchronisation.\nNous avons analysé vos fichiers et trouvé ceux à corriger.\n\n**Fichiers prêts à être corrigés :**\n\n${files}\n\nCes fichiers ont un original de taille correspondante sur le stockage, et sont probablement récupérables.\nNous pouvons les utiliser pour corriger la base, veuillez cliquer sur le bouton « Corriger » ci-dessous pour les réparer.\n\n${messageUnrecoverable}\n\nSi vous voulez relancer l'opération, vous pouvez le faire depuis Hatch.\n", he: 'בשל באג אחרון (בגרסה 0.25.6), ייתכן שחלק מהקבצים לא נשמרו כהלכה במסד הנתונים לסנכרון.\nסרקנו את הקבצים ומצאנו כאלה שיש לתקן.\n\n**קבצים מוכנים לתיקון:**\n\n${files}\n\nלקבצים אלה יש קובץ מקורי תואם גודל באחסון, וסביר שניתן לשחזרם.\nניתן להשתמש בהם לתיקון מסד הנתונים. לחץ על כפתור "תקן" למטה לתיקון.\n\n${messageUnrecoverable}\n\nאם ברצונך להריץ שוב, ניתן לעשות זאת מ-Hatch.\n', ja: "最近のバグ(v0.25.6)により、一部のファイルが同期データベースに正しく保存されていない可能性があります。\nファイルをスキャンし、修正が必要なものが見つかりました。\n\n**修正準備ができたファイル:**\n\n${files}\n\nこれらのファイルはストレージ上の元ファイルとサイズが一致しており、復元可能です。\n「修正」ボタンをクリックしてデータベースを修正できます。\n\n${messageUnrecoverable}\n\n再実行したい場合は、Hatchから実行できます。\n", - ru: "Из-за недавней ошибки некоторые файлы могут быть неправильно сохранены.", + ko: '최근 버그(v0.25.6)로 인해 일부 파일이 동기화 데이터베이스에 올바르게 저장되지 않았을 수 있습니다.\n파일을 스캔하여 수정이 필요한 항목을 찾았습니다.\n\n**수정할 수 있는 파일:**\n\n${files}\n\n이 파일들은 스토리지에 크기가 일치하는 원본 파일이 있어 복구 가능성이 높습니다.\n이를 사용하여 데이터베이스를 수정할 수 있습니다. 아래의 "Fix" 버튼을 눌러 수정하세요.\n\n${messageUnrecoverable}\n\n다시 실행하려면 Hatch에서 실행할 수 있습니다.\n', + ru: 'Из-за недавней ошибки (в v0.25.6) некоторые файлы могли быть неправильно сохранены в базе данных синхронизации.\nМы просканировали файлы и нашли те, которые нужно исправить.\n\n**Файлы, готовые к исправлению:**\n\n${files}\n\nУ этих файлов есть совпадающий по размеру исходный файл в хранилище, поэтому они, скорее всего, восстановимы.\nМы можем использовать их для исправления базы данных. Нажмите кнопку "Исправить" ниже.\n\n${messageUnrecoverable}\n\nЕсли вы хотите запустить проверку снова, это можно сделать из Hatch.\n', zh: "由于最近的一个 bug(在 v0.25.6 版本中),某些文件可能未正确保存到同步数据库中\n我们已经扫描了文件,并发现一些需要修复的文件\n\n**准备修复的文件:**\n\n${files}\n\n这些文件在存储中与原文件的大小匹配,可能是可恢复的\n我们可以使用它们修复数据库,请点击下方的“修复”按钮进行修复\n\n${messageUnrecoverable}\n\n\n如果你希望再次执行此操作,可以前往 Hatch 页面进行操作\n", + "zh-tw": + "由於最近的一個 bug(在 v0.25.6 版本中),某些檔案可能未正確儲存到同步資料庫中\n我們已經掃描了檔案,並發現一些需要修復的檔案\n\n**準備修復的檔案:**\n\n${files}\n\n這些檔案在儲存中與原檔案的大小匹配,可能是可恢復的\n我們可以使用它們修復資料庫,請點選下方的“修復”按鈕進行修復\n\n${messageUnrecoverable}\n\n\n如果你希望再次執行此操作,可以前往 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", + de: "**Files können auf diesem Gerät nicht fixiert werden:**\n\n${filesNotRecoverable}\n\nDiese Dateien haben inkonsistente Metadaten und können auf diesem Gerät nicht fixiert werden (vor allem können wir nicht festlegen, welche korrekt ist).\nUm sie wiederherzustellen, überprüfen Sie bitte Ihre anderen Geräte (auch durch diese Funktion) oder wiederherstellen sie manuell von einem Backup.\n", + es: "**Los archivos no se pueden reparar en este dispositivo:**\n\n${filesNotRecoverable}\n\nEstos archivos tienen metadatos inconsistentes y no se pueden reparar en este dispositivo (en general, no podemos determinar cuál es el correcto).\nPara restaurarlos, verifique sus otros dispositivos (también mediante esta función) o restáurelos manualmente desde una copia de seguridad.\n", fr: "**Fichiers non réparables sur cet appareil :**\n\n${filesNotRecoverable}\n\nCes fichiers ont des métadonnées incohérentes et ne peuvent être corrigés sur cet appareil (le plus souvent, nous ne pouvons déterminer lequel est correct).\nPour les restaurer, vérifiez vos autres appareils (par cette même fonction) ou restaurez-les manuellement depuis une sauvegarde.\n", he: "**קבצים שלא ניתן לתקן במכשיר זה:**\n\n${filesNotRecoverable}\n\nלקבצים אלה יש מטה-נתונים לא עקביים, ולא ניתן לתקנם במכשיר זה (לרוב לא ניתן לקבוע מה נכון). לשחזורם, אנא בדוק מכשירים אחרים שלך (גם בתכונה זו) או שחזר ידנית מגיבוי.\n", ja: "**このデバイスで修正できないファイル:**\n\n${filesNotRecoverable}\n\nこれらのファイルはメタデータに不整合があり、このデバイスでは修正できません(ほとんどの場合、どちらが正しいか判定できません)。\n復元するには、他のデバイスで確認するか、バックアップから手動で復元してください。\n", - ru: "Файлы не могут быть исправлены на этом устройстве:", + ko: "**이 기기에서 수정할 수 없는 파일:**\n\n${filesNotRecoverable}\n\n이 파일들은 메타데이터가 일치하지 않아 이 기기에서 수정할 수 없습니다(대부분 어떤 것이 올바른지 판단할 수 없습니다).\n복원하려면 다른 기기에서도 이 기능으로 확인하거나 백업에서 수동으로 복원하세요.\n", + ru: "**Файлы, которые нельзя исправить на этом устройстве:**\n\n${filesNotRecoverable}\n\nУ этих файлов несогласованные метаданные, поэтому их нельзя исправить на этом устройстве (чаще всего невозможно определить, какая версия правильная).\nЧтобы восстановить их, проверьте другие устройства с помощью этой функции или восстановите файлы вручную из резервной копии.\n", zh: "**无法在此设备上修复的文件:**\n\n${filesNotRecoverable}\n\n这些文件的元数据不一致,无法在此设备上修复(大多数情况下我们无法确定哪一个是正确的)\n要恢复它们,请检查你的其他设备(同样使用此功能),或从备份中手动恢复\n", + "zh-tw": + "**無法在此裝置上修復的檔案:**\n\n${filesNotRecoverable}\n\n這些檔案的後設資料不一致,無法在此裝置上修復(大多數情況下我們無法確定哪一個是正確的)\n要恢復它們,請檢查你的其他裝置(同樣使用此功能),或從備份中手動恢復\n", }, "moduleMigration.fix0256.title": { def: "Broken files has been detected", + de: "Gebrochene Dateien wurden erkannt", + es: "Se han detectado archivos rotos", fr: "Fichiers corrompus détectés", he: "זוהו קבצים פגומים", ja: "破損ファイルが検出されました", + ko: "손상된 파일이 감지되었습니다", ru: "Обнаружены повреждённые файлы", zh: "检测到损坏的文件", + "zh-tw": "檢測到損壞的檔案", }, "moduleMigration.insecureChunkExist.buttons.fetch": { def: "I already rebuilt the remote. Fetch from the remote", + de: "Ich habe die Fernbedienung schon wieder aufgebaut. Fetch aus der Ferne", + es: "Ya reconstruí el control remoto. Obtener desde el control remoto", fr: "J'ai déjà reconstruit le distant. Récupérer depuis le distant", he: "כבר בניתי מחדש את השרת המרוחק. משוך מהשרת המרוחד", ja: "リモートを既に再構築した。リモートからフェッチ", + ko: "원격을 이미 재구축했습니다. 원격에서 가져오기", ru: "Я уже перестроил удалённую. Загрузить с удалённой", zh: "我已经重建了远程数据库,将从远程获取", + "zh-tw": "我已經重建了遠端資料庫,將從遠端獲取", }, "moduleMigration.insecureChunkExist.buttons.later": { def: "I will do it later", + de: "ich werde es später tun", + es: "lo haré más tarde", fr: "Je le ferai plus tard", he: "אטפל בזה מאוחר יותר", ja: "後で行う", + ko: "나중에 처리", ru: "Сделаю позже", zh: "我稍后再做", + "zh-tw": "我稍後再做", }, "moduleMigration.insecureChunkExist.buttons.rebuild": { def: "Rebuild Everything", + de: "Alles neu aufbauen", + es: "Reconstruir todo", fr: "Tout reconstruire", he: "בנה הכל מחדש", ja: "すべてを再構築", + ko: "전체 재구축", ru: "Перестроить всё", zh: "重建所有内容", + "zh-tw": "重建所有內容", }, "moduleMigration.insecureChunkExist.laterMessage": { def: "We strongly recommend to treat this as soon as possible!", + de: "Wir empfehlen dringend, dies so schnell wie möglich zu behandeln!", + es: "¡Recomendamos encarecidamente tratar esto lo antes posible!", fr: "Nous recommandons fortement de traiter ceci dès que possible !", he: "אנו ממליצים בחום לטפל בזה בהקדם האפשרי!", ja: "できるだけ早く対処することを強くお勧めします!", + ko: "가능한 한 빨리 처리하는 것을 강력히 권장합니다!", ru: "Мы настоятельно рекомендуем обработать это как можно скорее!", zh: "我们强烈建议尽快处理此问题!", + "zh-tw": "我們強烈建議儘快處理此問題!", }, "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", + de: "Einige Stücke werden nicht sicher gespeichert und nicht in Datenbanken verschlüsselt.\n**Bitte die Datenbank neu aufbauen, um dieses Problem zu beheben**.\n\nWenn Ihre Remote-Datenbank nicht mit SSL konfiguriert ist, oder mit weniger sicheren Anmeldeinformationen, ** Sie sind in Gefahr, sensible Daten zu entwerfen*.\n\nHinweis: Bitte aktualisieren Sie Ihren Self-hosted LiveSync v0.25.6 oder höher auf alle Ihre Geräte und sichern Sie Ihren Tresor sicher.\nHinweis2: Wiederherstellen Alles und Fetch verbraucht etwas Zeit und Verkehr, bitte tun Sie es in Off-peak Stunden und stellen Sie eine stabile Netzwerkverbindung.\n", + es: "Algunos fragmentos no se almacenan de forma segura y no están cifrados en bases de datos.\n**Reconstruya la base de datos para solucionar este problema**.\n\nSi su base de datos remota no está configurada con SSL o utiliza credenciales menos seguras, **corre el riesgo de exponer datos confidenciales**.\n\nNota: actualice su LiveSync v0.25.6 o superior en todos sus dispositivos y haga una copia de seguridad de su bóveda.\nNota 2: Reconstruir todo y recuperar consume un poco de tiempo y tráfico; hágalo en horas de menor actividad y garantice una conexión de red estable.\n", fr: "Certains fragments ne sont pas stockés de façon sécurisée et ne sont pas chiffrés dans les bases.\n**Veuillez reconstruire la base pour corriger ce problème.**\n\nSi votre base distante n'est pas configurée avec SSL, ou utilise des identifiants peu sûrs, **vous risquez d'exposer des données sensibles**.\n\nNote : Veuillez mettre à jour Self-hosted LiveSync en v0.25.6 ou supérieur sur tous vos appareils, et sauvegardez votre coffre avec soin.\nNote 2 : Tout reconstruire et Récupérer consomme un peu de temps et de bande passante, veuillez le faire hors des heures de pointe et avec une connexion réseau stable.\n", he: "חלק מהנתחים לא מאוחסנים בצורה מאובטחת ואינם מוצפנים במסד הנתונים.\n**אנא בנה מחדש את מסד הנתונים כדי לתקן בעיה זו**.\n\nאם מסד הנתונים המרוחד אינו מוגדר עם SSL, או משתמש בפרטי גישה פחות מאובטחים, **אתה בסיכון של חשיפת מידע רגיש**.\n\nהערה: אנא שדרג את Self-hosted LiveSync לגרסה 0.25.6 ומעלה על כל מכשיריך, וגבה את הכספת שלך.\nהערה 2: בנייה מחדש ומשיכה דורשות זמן ותעבורת רשת. אנא עשה זאת בשעות שיא נמוך וודא חיבור רשת יציב.\n", ja: "一部のチャンクが安全に保存されておらず、データベースで暗号化されていません。\n**この問題を修正するにはデータベースを再構築してください**。\n\nリモートデータベースがSSLで設定されていない、または安全性の低い認証情報を使用している場合、**機密データが漏洩するリスクがあります**。\n\n注意: すべてのデバイスでSelf-hosted LiveSync v0.25.6以降にアップグレードし、必ず保管庫をバックアップしてください。\n注意2: すべてを再構築とフェッチは時間とトラフィックを消費します。オフピーク時間に安定したネットワークで実行してください。\n", + ko: "일부 청크가 안전하게 저장되지 않았으며 데이터베이스에서 암호화되지 않았습니다.\n**이 문제를 해결하려면 데이터베이스를 재구축하세요**.\n\n원격 데이터베이스가 SSL로 구성되어 있지 않거나 보안이 낮은 자격 증명을 사용하는 경우, **민감한 데이터가 노출될 위험이 있습니다**.\n\n참고: 모든 기기에서 Self-hosted LiveSync를 v0.25.6 이상으로 업그레이드하고 Vault를 반드시 백업하세요.\n참고 2: 전체 재구축과 가져오기는 시간과 트래픽을 어느 정도 사용하므로, 사용량이 적은 시간대에 안정적인 네트워크에서 실행하세요.\n", ru: "Некоторые чанки хранятся небезопасно. Пожалуйста, перестройте базу данных.", zh: "一些块未安全存储,并且在数据库中未加密\n**请重建数据库以修复此问题**.\n\n如果你的远程数据库未配置 SSL,或者使用了不安全的凭据 **你可能面临暴露敏感数据的风险**.\n\n注意:请在所有设备上将 Self-hosted LiveSync 升级到 v0.25.6 或更高版本,并确保备份你的保险库\n\n注意2:重建所有内容和获取操作会消耗一些时间和流量,请在非高峰时段进行,并确保网络连接稳定\n", + "zh-tw": + "一些塊未安全儲存,並且在資料庫中未加密\n**請重建資料庫以修復此問題**.\n\n如果你的遠端資料庫未配置 SSL,或者使用了不安全的憑據 **你可能面臨暴露敏感資料的風險**.\n\n注意:請在所有裝置上將 Self-hosted LiveSync 升級到 v0.25.6 或更高版本,並確保備份你的保險庫\n\n注意2:重建所有內容和獲取操作會消耗一些時間和流量,請在非高峰時段進行,並確保網路連線穩定\n", }, "moduleMigration.insecureChunkExist.title": { def: "Insecure chunks found!", + de: "Unsichere Stücke gefunden!", + es: "¡Se encontraron trozos inseguros!", fr: "Fragments non sécurisés détectés !", he: "נמצאו נתחים לא מאובטחים!", ja: "安全でないチャンクが見つかりました!", + ko: "안전하지 않은 청크 발견!", ru: "Обнаружены небезопасные чанки!", zh: "发现不安全的块!", + "zh-tw": "發現不安全的塊!", }, "moduleMigration.logBulkSendCorrupted": { def: "Send chunks in bulk has been enabled, however, this feature had been corrupted. Sorry for your inconvenience. Automatically disabled.", + de: "Senden Sie Stücke in Masse wurde aktiviert, aber diese Funktion war beschädigt. Tut mir leid für Ihre Unannehmlichkeiten. automatisch deaktiviert.", 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.", fr: "L'envoi groupé de fragments a été activé, mais cette fonctionnalité était corrompue. Désolé pour la gêne. Désactivée automatiquement.", he: "שליחת נתחים באצווה הופעלה, אך תכונה זו הייתה פגועה. מתנצלים על אי הנוחות. נוטרלה אוטומטית.", @@ -3019,9 +3839,11 @@ export const allMessages = { ko: "청크 일괄 전송이 활성화되었지만, 이 기능에 문제가 있었습니다. 불편을 드려 죄송합니다. 자동으로 비활성화되었습니다.", ru: "Отправка чанков пакетами была включена, но эта функция была повреждена. Приносим извинения. Автоматически отключено.", zh: "已启用批量发送 chunks,但此功能已损坏。给您带来不便,我们深表歉意。已自动禁用", + "zh-tw": "已啟用批次傳送 chunks,但此功能已損壞。給您帶來不便,我們深表歉意。已自動禁用", }, "moduleMigration.logFetchRemoteTweakFailed": { def: "Failed to fetch remote tweak values", + de: "Versäumt, Remote-Tweak-Werte zu holen", es: "Error al obtener los valores de ajuste remoto", fr: "Échec de la récupération des valeurs d'ajustement distantes", he: "נכשל במשיכת ערכי כיוונון מרוחקים", @@ -3029,9 +3851,11 @@ export const allMessages = { ko: "원격 조정 값을 가져오는데 실패했습니다", ru: "Не удалось загрузить удалённые настройки", zh: "获取远程调整值失败", + "zh-tw": "獲取遠端調整值失敗", }, "moduleMigration.logLocalDatabaseNotReady": { def: "Something went wrong! The local database is not ready", + de: "Etwas ging schief! Die lokale Datenbank ist nicht bereit", es: "¡Algo salió mal! La base de datos local no está lista", fr: "Un problème est survenu ! La base locale n'est pas prête", he: "משהו השתבש! מסד הנתונים המקומי אינו מוכן", @@ -3039,29 +3863,35 @@ export const allMessages = { ko: "문제가 발생했습니다! 로컬 데이터베이스가 준비되지 않았습니다", ru: "Что-то пошло не так! Локальная база данных не готова", zh: "出错了!本地数据库尚未准备好", + "zh-tw": "出錯了!本地資料庫尚未準備好", }, "moduleMigration.logMigratedSameBehaviour": { def: "Migrated to db:${current} with the same behaviour as before", + de: "Zu db:${current} mit dem gleichen Verhalten wie zuvor", es: "Migrado a db:${current} con el mismo comportamiento que antes", fr: "Migration vers db:${current} avec le même comportement qu'auparavant", he: "הוגר ל-db:${current} עם אותה התנהגות כמקודם", ja: "以前と同じ動作でdb:${current}に移行しました", ko: "이전과 같은 방식으로 동작하도록 db:${current}로 데이터 구조 전환이 완료되었습니다", - ru: "Миграция на db:current с тем же поведением, что и раньше", + ru: "Выполнена миграция на db:${current} с тем же поведением, что и раньше", zh: "已迁移到 db:${current},行为与之前相同", + "zh-tw": "已遷移到 db:${current},行為與之前相同", }, "moduleMigration.logMigrationFailed": { def: "Migration failed or cancelled from ${old} to ${current}", + de: "Migration fehlgeschlagen oder von ${old} auf ${current} storniert", es: "La migración falló o se canceló de ${old} a ${current}", fr: "Migration échouée ou annulée de ${old} vers ${current}", he: "הגירה נכשלה או בוטלה מ-${old} ל-${current}", ja: "${old}から${current}への移行が失敗またはキャンセルされました", ko: "${old}에서 ${current}로의 데이터 구조 전환이 실패했거나 중단되었습니다", - ru: "Миграция не удалась или отменена с old на current", + ru: "Миграция с ${old} на ${current} не выполнена или отменена", zh: "从 ${old} 到 ${current} 的迁移失败或已取消", + "zh-tw": "從 ${old} 到 ${current} 的遷移失敗或已取消", }, "moduleMigration.logRedflag2CreationFail": { def: "Failed to create redflag2", + de: "Nicht zu schaffen redflag2", es: "Error al crear redflag2", fr: "Échec de création de redflag2", he: "יצירת redflag2 נכשלה", @@ -3069,9 +3899,11 @@ export const allMessages = { ko: "redflag2 생성에 실패했습니다", ru: "Не удалось создать redflag2", zh: "创建 redflag2 失败", + "zh-tw": "建立 redflag2 失敗", }, "moduleMigration.logRemoteTweakUnavailable": { def: "Could not get remote tweak values", + de: "Kann nicht Remote-Tweak-Werte erhalten", es: "No se pudieron obtener los valores de ajuste remoto", fr: "Impossible d'obtenir les valeurs d'ajustement distantes", he: "לא ניתן לקבל ערכי כיוונון מרוחקים", @@ -3079,9 +3911,11 @@ export const allMessages = { ko: "원격 조정 값을 가져올 수 없습니다", ru: "Не удалось получить удалённые настройки", zh: "无法获取远程调整值", + "zh-tw": "無法獲取遠端調整值", }, "moduleMigration.logSetupCancelled": { def: "The setup has been cancelled, Self-hosted LiveSync waiting for your setup!", + de: "Das Setup wurde abgesagt, Self-hosted LiveSync wartet auf Ihr Setup!", es: "La configuración ha sido cancelada, ¡Self-hosted LiveSync está esperando tu configuración!", fr: "La configuration a été annulée, Self-hosted LiveSync attend votre configuration !", he: "ההגדרה בוטלה, Self-hosted LiveSync ממתין להגדרתך!", @@ -3089,9 +3923,11 @@ export const allMessages = { ko: "설정이 취소되었습니다. Self-hosted LiveSync가 설정을 기다리고 있습니다!", ru: "Настройка отменена, Self-hosted LiveSync ожидает вашей настройки!", zh: "设置已取消,Self-hosted LiveSync 正在等待您的设置!", + "zh-tw": "設定已取消,Self-hosted LiveSync 正在等待您的設定!", }, "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.___", + de: "Wie Sie vielleicht schon wissen, hat der selbstgehostete LiveSync sein Standardverhalten und seine Datenbankstruktur verändert.\n\nUnd dank Ihrer Zeit und Mühe scheint die Remote-Datenbank bereits ausgewandert zu sein. Glückwunsch!\n\nAber wir brauchen etwas mehr. Die Konfiguration dieses Gerätes ist nicht mit der Remote-Datenbank kompatibel. Wir müssen die Remote-Datenbank wieder holen. Sollen wir jetzt wieder von der Fernbedienung holen?\n\n Anmerkung: Wir können nicht synchronisieren, bis die Konfiguration geändert wurde und die Datenbank wieder gestartet wurde.\n Note2: Die Stücke sind völlig unveränderlich, wir können nur die Metadaten und Differenz holen.", 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.___", fr: "Comme vous le savez peut-être déjà, Self-hosted LiveSync a modifié son comportement par défaut et la structure de sa base de données.\n\nEt, grâce à votre temps et vos efforts, la base distante semble déjà avoir été migrée. Félicitations !\n\nCependant, il faut encore un peu plus. La configuration de cet appareil n'est pas compatible avec la base distante. Nous devrons récupérer à nouveau la base distante. Devons-nous récupérer depuis le distant maintenant ?\n\n___Note : Nous ne pouvons pas synchroniser tant que la configuration n'a pas été modifiée et que la base n'a pas été récupérée à nouveau.___\n___Note 2 : Les fragments sont complètement immuables, nous ne pouvons récupérer que les métadonnées et les différences.___", he: "כפי שייתכן שכבר ידוע לך, Self-hosted LiveSync שינה את התנהגות ברירת המחדל ומבנה מסד הנתונים.\n\nובזכות זמנך ומאמציך, מסד הנתונים המרוחד נראה כבר הוגר. ברכות!\n\nעם זאת, נדרש עוד קצת. תצורת מכשיר זה אינה תואמת למסד הנתונים המרוחד. נצטרך למשוך את מסד הנתונים המרוחד שוב. האם למשוך מהשרת המרוחד עכשיו?\n\n___הערה: לא ניתן לסנכרן עד שהתצורה תשתנה ומסד הנתונים יימשך שוב.___\n___הערה 2: הנתחים הם בלתי-ניתנים לשינוי לחלוטין, ניתן למשוך רק את המטה-נתונים וההפרש.___", @@ -3099,39 +3935,51 @@ export const allMessages = { 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 是完全不可变的,我们只能获取元数据和差异", + "zh-tw": + "您可能已經知道,Self-hosted LiveSync 更改了其預設行為和資料庫結構。\n\n值得慶幸的是,在您的時間和努力下,遠端資料庫似乎已經遷移完成。恭喜!\n\n但是,我們還需要一點點操作。此裝置的配置與遠端資料庫不相容。我們需要再次從遠端資料庫獲取。我們現在應該再次從遠端獲取嗎?\n\n___注意:在更改配置並再次獲取資料庫之前,我們無法進行同步。___\n___注意2:chunks 是完全不可變的,我們只能獲取後設資料和差異", }, "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}).", + de: "Dein Gerät wurde **noch nicht eingerichtet**. Ich führe dich durch die Einrichtung.\n\nBitte beachte, dass jeder Dialoginhalt in die Zwischenablage kopiert werden kann. Wenn du ihn später brauchst, kannst du ihn in eine Obsidian-Notiz einfügen. Du kannst ihn auch mit einem Übersetzungstool in deine Sprache übersetzen.\n\nZuerst: Hast du eine **Setup URI**?\n\nHinweis: Wenn du nicht weißt, was das ist, lies bitte die [Dokumentation](${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}).", fr: "Votre appareil n'a **pas encore été configuré**. Laissez-moi vous guider dans le processus de configuration.\n\nVeuillez noter que chaque contenu de boîte de dialogue peut être copié dans le presse-papiers. Si vous souhaitez vous y référer plus tard, vous pouvez le coller dans une note d'Obsidian. Vous pouvez également le traduire dans votre langue via un outil de traduction.\n\nTout d'abord, disposez-vous d'une **URI de configuration** ?\n\nNote : Si vous ne savez pas ce que c'est, consultez la [documentation](${URI_DOC}).", he: "המכשיר שלך **טרם הוגדר**. אנחנו כאן לעזור לך בתהליך ההגדרה.\n\nשים לב שניתן להעתיק את תוכן כל דיאלוג ללוח. אם צריך לחזור אליו מאוחר יותר, ניתן להדביק אותו כפתק ב-Obsidian. ניתן גם לתרגם לשפתך בעזרת כלי תרגום.\n\nראשית, האם יש לך **Setup URI**?\n\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?", + ru: "Ваше устройство **еще не настроено**. Я проведу вас через процесс настройки.\n\nПомните, что содержимое каждого диалога можно скопировать в буфер обмена. Если оно понадобится позже, вставьте его в заметку Obsidian. Также его можно перевести на ваш язык с помощью переводчика.\n\nСначала: у вас есть **Setup URI**?\n\nПримечание: если вы не знаете, что это такое, обратитесь к [документации](${URI_DOC}).", zh: "您的设备**尚未设置**。让我引导您完成设置过程。\n\n请记住,每个对话框内容都可以复制到剪贴板。如果以后需要参考,可以将其粘贴到 Obsidian 的笔记中。您也可以使用翻译工具将其翻译成您的语言。\n\n首先,您有**设置 URI** 吗?\n\n注意:如果您不知道这是什么,请参阅[文档](${URI_DOC})", + "zh-tw": + "您的裝置**尚未設定**。讓我引導您完成設定過程。\n\n請記住,每個對話方塊內容都可以複製到剪貼簿。如果以後需要參考,可以將其貼上到 Obsidian 的筆記中。您也可以使用翻譯工具將其翻譯成您的語言。\n\n首先,您有**設定 URI** 嗎?\n\n注意:如果您不知道這是什麼,請參閱[文件](${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?", + de: "Wir empfehlen dringend, eine Setup URI zu erzeugen und zu verwenden.\nWenn du damit nicht vertraut bist, lies bitte die [Dokumentation](${URI_DOC}) (nochmals Entschuldigung, aber das ist wichtig).\n\nWie möchtest du die Verbindung manuell einrichten?", 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?", fr: "Nous recommandons vivement de générer une URI de configuration et de l'utiliser.\nSi vous ne connaissez pas, veuillez consulter la [documentation](${URI_DOC}) (Désolé encore, mais c'est important).\n\nComment souhaitez-vous effectuer la configuration manuellement ?", he: "אנו ממליצים בחום לייצר Setup URI ולהשתמש בו.\nאם אין לך ידע בנושא, אנא עיין ב[תיעוד](${URI_DOC}) (מתנצלים שוב, אך זה חשוב).\n\nכיצד ברצונך להגדיר ידנית?", ja: "セットアップURIを生成して使用することを強くお勧めします。\nこれについて知識がない場合は、[documentation](${URI_DOC})を参照してください(重要です)。\n\n手動でセットアップしますか?", ko: "Setup URI를 생성해 사용하는 것을 강력히 권장합니다.\nSetup URI가 무엇인지 잘 모르시겠다면 [문서](${URI_DOC})를 참고해 주세요. 중요한 내용이니 꼭 확인하시기 바랍니다.\n\n직접 수동 설정을 진행하시겠습니까?", - ru: "Мы рекомендуем сгенерировать Setup URI.", + ru: "Мы настоятельно рекомендуем создать и использовать Setup URI.\nЕсли вы не знакомы с этим, обратитесь к [документации](${URI_DOC}) (извините, но это действительно важно).\n\nКак вы хотите настроить подключение вручную?", zh: "我们强烈建议您生成一个设置 URI 并使用它。\n如果您对此不了解,请参阅[文档](${URI_DOC})(再次抱歉,但这很重要)。\n\n您想如何手动设置?", + "zh-tw": + "我們強烈建議您生成一個設定 URI 並使用它。\n如果您對此不瞭解,請參閱[文件](${URI_DOC})(再次抱歉,但這很重要)。\n\n您想如何手動設定?", }, "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.", + de: "Seit v0.23.21 hat der selbstgehostete LiveSync das Standardverhalten und die Datenbankstruktur verändert. Es wurden folgende Änderungen vorgenommen:\n\n1. **Case Empfindlichkeit der Dateinamen*\nDer Umgang mit Dateinamen ist jetzt case-insensitive. Dies ist eine günstige Änderung für die meisten Plattformen, andere als Linux und iOS, die nicht verwalten Dateiname Fall Sensibilität effektiv.\n(Bei diesen wird eine Warnung für Dateien mit dem gleichen Namen angezeigt, aber verschiedene Fälle).\n\n2. **Bearbeitung der Stücke*\nChunks sind unveränderlich, wodurch ihre Revisionen behoben werden können. Diese Änderung wird die Leistung der Dateisparen verbessern.\n\n Um diese Änderungen zu aktivieren, müssen sowohl Remote- als auch lokale Datenbanken wieder aufgebaut werden. Dieser Prozess dauert ein paar Minuten, und wir empfehlen, es zu tun, wenn Sie viel Zeit haben.\n\n- Wenn Sie das bisherige Verhalten beibehalten möchten, können Sie diesen Prozess mit `${KEEP}` überspringen.\n- Wenn Sie nicht genug Zeit haben, wählen Sie bitte `${DISMISS}`. Sie werden später wieder aufgefordert.\n- Wenn Sie die Datenbank auf einem anderen Gerät wieder aufgebaut haben, wählen Sie bitte `${DISMISS}` aus und versuchen Sie erneut zu synchronisieren. Da ein Unterschied erkannt wurde, werden Sie erneut aufgefordert.", 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.", fr: "Depuis la v0.23.21, Self-hosted LiveSync a modifié son comportement par défaut et la structure de sa base. Les changements suivants ont été effectués :\n\n1. **Sensibilité à la casse des noms de fichiers**\n La gestion des noms de fichiers est désormais insensible à la casse. C'est un changement bénéfique pour la plupart des plateformes, hormis Linux et iOS, qui ne gèrent pas efficacement la casse des noms de fichiers.\n (Sur celles-ci, un avertissement s'affichera pour les fichiers portant le même nom avec une casse différente).\n\n2. **Gestion des révisions des fragments**\n Les fragments sont immuables, ce qui permet de fixer leurs révisions. Ce changement améliore les performances d'enregistrement des fichiers.\n\n___Cependant, pour activer l'un ou l'autre de ces changements, les bases locale et distante doivent être reconstruites. Ce processus prend quelques minutes, et nous recommandons de le faire quand vous avez le temps.___\n\n- Si vous souhaitez conserver le comportement précédent, vous pouvez ignorer ce processus via `${KEEP}`.\n- Si vous n'avez pas le temps, choisissez `${DISMISS}`. Vous serez invité à nouveau plus tard.\n- Si vous avez reconstruit la base sur un autre appareil, sélectionnez `${DISMISS}` et réessayez la synchronisation. Une différence étant détectée, vous serez invité à nouveau.", he: "מאז גרסה 0.23.21, Self-hosted LiveSync שינה את התנהגות ברירת המחדל ומבנה מסד הנתונים. השינויים הבאים בוצעו:\n\n1. **תלות רישיות בשמות קבצים**\n הטיפול בשמות קבצים הוא כעת ללא תלות רישיות. זהו שינוי מועיל לרוב הפלטפורמות,\n פרט ל-Linux ו-iOS שאינן מנהלות תלות רישיות בקבצים ביעילות.\n (בפלטפורמות אלה, תוצג אזהרה עבור קבצים עם אותו שם אך רישיות שונה).\n\n2. **טיפול בגרסאות של נתחים**\n נתחים הם בלתי-ניתנים לשינוי, מה שמאפשר גרסאות קבועות. שינוי זה ישפר את\n ביצועי שמירת הקבצים.\n\n___עם זאת, כדי להפעיל אחד מהשינויים הללו, יש לבנות מחדש גם את מסד הנתונים המרוחד וגם את המקומי. תהליך זה לוקח כמה דקות, ואנו ממליצים לעשות זאת כשיש לך זמן פנוי.___\n\n- אם ברצונך לשמור את ההתנהגות הקודמת, ניתן לדלג על תהליך זה באמצעות `${KEEP}`.\n- אם אין לך מספיק זמן, אנא בחר `${DISMISS}`. תקבל תזכורת בהמשך.\n- אם בנית מחדש את מסד הנתונים במכשיר אחר, אנא בחר `${DISMISS}` ונסה לסנכרן שוב. מאחר שזוהה הפרש, תקבל תזכורת שוב.", 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}` 并尝试再次同步。由于检测到差异,系统会再次提示您", + ru: "Начиная с v0.23.21, Self-hosted LiveSync изменил поведение по умолчанию и структуру базы данных. Были внесены следующие изменения:\n\n1. **Чувствительность имен файлов к регистру**\n Обработка имен файлов теперь не чувствительна к регистру. Это полезно для большинства платформ, кроме Linux и iOS, где регистр имен файлов обрабатывается иначе.\n (На таких платформах будет показано предупреждение для файлов с одинаковым именем, но разным регистром.)\n\n2. **Обработка ревизий фрагментов**\n Фрагменты стали неизменяемыми, что позволяет фиксировать их ревизии. Это повышает производительность сохранения файлов.\n\n___Однако, чтобы включить любое из этих изменений, нужно перестроить и удаленную, и локальную базы данных. Этот процесс занимает несколько минут, поэтому лучше делать это, когда у вас достаточно времени.___\n\n- Если вы хотите сохранить прежнее поведение, пропустите процесс с помощью `${KEEP}`.\n- Если у вас сейчас недостаточно времени, выберите `${DISMISS}`. Позже появится повторный запрос.\n- Если вы уже перестроили базу данных на другом устройстве, выберите `${DISMISS}` и попробуйте синхронизироваться снова. Так как обнаружено различие, запрос появится повторно.", + 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}` 并尝试再次同步。由于检测到差异,系统会再次提示您", + "zh-tw": + "自 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}` 並嘗試再次同步。由於檢測到差異,系統會再次提示您", }, "moduleMigration.optionAdjustRemote": { def: "Adjust to remote", + de: "Anpassen der Fernbedienung", es: "Ajustar al remoto", fr: "Ajuster au distant", he: "התאם לשרת המרוחד", @@ -3139,9 +3987,11 @@ export const allMessages = { ko: "원격에 맞추기", ru: "Настроить под удалённую", zh: "调整到远程设置", + "zh-tw": "調整到遠端設定", }, "moduleMigration.optionDecideLater": { def: "Decide it later", + de: "Entscheiden Sie es später", es: "Decidirlo más tarde", fr: "Décider plus tard", he: "החלט מאוחר יותר", @@ -3149,9 +3999,11 @@ export const allMessages = { ko: "나중에 결정하기", ru: "Решить позже", zh: "稍后决定", + "zh-tw": "稍後決定", }, "moduleMigration.optionEnableBoth": { def: "Enable both", + de: "Ermöglicht beide", es: "Habilitar ambos", fr: "Activer les deux", he: "הפעל את שניהם", @@ -3159,9 +4011,11 @@ export const allMessages = { ko: "둘 다 활성화", ru: "Включить оба", zh: "启用两者", + "zh-tw": "啟用兩者", }, "moduleMigration.optionEnableFilenameCaseInsensitive": { def: "Enable only #1", + de: "Nur #1 aktivieren", es: "Habilitar solo #1", fr: "Activer seulement #1", he: "הפעל רק #1", @@ -3169,9 +4023,11 @@ export const allMessages = { ko: "#1만 활성화", ru: "Включить только #1", zh: "仅启用 #1", + "zh-tw": "僅啟用 #1", }, "moduleMigration.optionEnableFixedRevisionForChunks": { def: "Enable only #2", + de: "Nur #2 aktivieren", es: "Habilitar solo #2", fr: "Activer seulement #2", he: "הפעל רק #2", @@ -3179,9 +4035,11 @@ export const allMessages = { ko: "#2만 활성화", ru: "Включить только #2", zh: "仅启用 #2", + "zh-tw": "僅啟用 #2", }, "moduleMigration.optionHaveSetupUri": { def: "Yes, I have", + de: "Ja, ich habe", es: "Sí, tengo", fr: "Oui, j'en ai une", he: "כן, יש לי", @@ -3189,9 +4047,11 @@ export const allMessages = { ko: "예, 있습니다", ru: "Да, есть", zh: "是的,我有", + "zh-tw": "是的,我有", }, "moduleMigration.optionKeepPreviousBehaviour": { def: "Keep previous behaviour", + de: "Vorheriges Verhalten", es: "Mantener comportamiento anterior", fr: "Conserver le comportement précédent", he: "שמור על התנהגות קודמת", @@ -3199,9 +4059,11 @@ export const allMessages = { ko: "이전 동작 유지", ru: "Сохранить предыдущее поведение", zh: "保持以前的行为", + "zh-tw": "保持以前的行為", }, "moduleMigration.optionManualSetup": { def: "Set it up all manually", + de: "Alle manuell einrichten", es: "Configurarlo todo manualmente", fr: "Tout configurer manuellement", he: "הגדר הכל ידנית", @@ -3209,9 +4071,11 @@ export const allMessages = { ko: "모든 것을 수동으로 설정", ru: "Настроить всё вручную", zh: "全部手动设置", + "zh-tw": "全部手動設定", }, "moduleMigration.optionNoAskAgain": { def: "No, please ask again", + de: "Nein, bitte noch mal fragen", es: "No, por favor pregúntame de nuevo", fr: "Non, demandez à nouveau", he: "לא, אנא שאל שוב", @@ -3219,81 +4083,100 @@ export const allMessages = { ko: "아니요 (나중에 다시 물어보기)", ru: "Нет, спросить снова", zh: "不,请稍后再次询问", + "zh-tw": "不,請稍後再次詢問", }, "moduleMigration.optionNoSetupUri": { def: "No, I do not have", + de: "Nein, ich habe nicht", fr: "Non, je n'en ai pas", he: "לא, אין לי", ja: "いいえ、持っていません", ko: "아니요, 없습니다", ru: "Нет, нет", zh: "不,我没有", + "zh-tw": "不,我沒有", }, "moduleMigration.optionRemindNextLaunch": { def: "Remind me at the next launch", + de: "Erinnern Sie mich an den nächsten Start", fr: "Me rappeler au prochain lancement", he: "הזכר לי בהפעלה הבאה", ja: "次回起動時にリマインド", ko: "다음 시작 시 알림", ru: "Напомнить при следующем запуске", zh: "下次启动时提醒我", + "zh-tw": "下次啟動時提醒我", }, "moduleMigration.optionSetupViaP2P": { def: "Use P2P Sync to set up", + de: "Mit %{short_p2p_sync} einrichten", + es: "Usar Sincronización P2P para configurar", fr: "Utiliser Sync P2P pour configurer", he: "השתמש ב-%{short_p2p_sync} להגדרה", - ja: "P2P Sync (試験機能)を使ってセットアップ", - ko: "P2P 동기화 (실험 기능)를 사용하여 설정", - ru: "Использовать short_p2p_sync для настройки", - zh: "Use P2P同步(实验性) to set up", + ja: "P2P Syncを使ってセットアップ", + ko: "P2P Sync를 사용하여 설정", + ru: "Настроить через P2P Синхр.", + zh: "使用 P2P Sync 进行设置", + "zh-tw": "使用 P2P Sync 進行設定", }, "moduleMigration.optionSetupWizard": { def: "Take me into the setup wizard", + de: "Bring mich in den Setup-Assistenten", fr: "Ouvrir l'assistant de configuration", he: "קח אותי לאשף ההגדרה", ja: "セットアップウィザードへ", ko: "설정 마법사로 안내", ru: "Перейти в мастер настройки", zh: "带我进入设置向导", + "zh-tw": "帶我進入設定嚮導", }, "moduleMigration.optionYesFetchAgain": { def: "Yes, fetch again", + de: "Ja, wieder holen.", fr: "Oui, récupérer à nouveau", he: "כן, משוך שוב", ja: "はい、再フェッチする", ko: "예 (다시 가져오기)", ru: "Да, загрузить снова", zh: "是的,再次获取", + "zh-tw": "是的,再次獲取", }, "moduleMigration.titleCaseSensitivity": { def: "Case Sensitivity", + de: "Fallempfindlichkeit", fr: "Sensibilité à la casse", he: "תלות רישיות", ja: "大文字小文字の区別", ko: "대소문자 구분", ru: "Чувствительность к регистру", zh: "大小写敏感性", + "zh-tw": "大小寫敏感性", }, "moduleMigration.titleRecommendSetupUri": { def: "Recommendation to use Setup URI", + de: "Empfehlung zur Verwendung Setup-URI", fr: "Recommandation d'utilisation de l'URI de configuration", he: "המלצה לשימוש ב-Setup URI", ja: "セットアップURIの使用を推奨", ko: "Setup URI 사용 권장", ru: "Рекомендация использовать Setup URI", zh: "推荐使用设置 URI", + "zh-tw": "推薦使用設定 URI", }, "moduleMigration.titleWelcome": { def: "Welcome to Self-hosted LiveSync", + de: "Willkommen bei Self-hosted LiveSync", fr: "Bienvenue dans Self-hosted LiveSync", he: "ברוך הבא ל-Self-hosted LiveSync", ja: "Self-hosted LiveSyncへようこそ", ko: "Self-hosted LiveSync에 오신 것을 환영합니다", ru: "Добро пожаловать в Self-hosted LiveSync", zh: "欢迎使用 Self-hosted LiveSync", + "zh-tw": "歡迎使用 Self-hosted LiveSync", }, "moduleObsidianMenu.replicate": { def: "Replicate", + de: "Replika", es: "Replicar", fr: "Répliquer", he: "שכפל", @@ -3301,9 +4184,11 @@ export const allMessages = { ko: "복제", ru: "Реплицировать", zh: "复制", + "zh-tw": "複製", }, "More actions": { def: "More actions", + de: "Weitere Aktionen", es: "Más acciones", ja: "その他の操作", ko: "추가 작업", @@ -3313,6 +4198,7 @@ export const allMessages = { }, "Move remotely deleted files to the trash, instead of deleting.": { def: "Move remotely deleted files to the trash, instead of deleting.", + de: "Bewegen Sie entfernt gelöschte Dateien in den Müll, anstatt zu löschen.", es: "Mover archivos borrados remotos a papelera en lugar de eliminarlos", fr: "Déplacer les fichiers supprimés à distance vers la corbeille, au lieu de les supprimer.", he: "העבר קבצים שנמחקו מרחוק לאשפה, במקום למחוק.", @@ -3320,18 +4206,21 @@ export const allMessages = { ko: "원격에서 삭제된 파일을 삭제하는 대신 휴지통으로 이동합니다.", ru: "Перемещать удалённые на удалённом сервере файлы в корзину вместо удаления.", zh: "将远程删除的文件移至回收站,而不是直接删除", + "zh-tw": "將遠端刪除的檔案移至回收站,而不是直接刪除", }, "Network warning style": { def: "Network warning style", + de: "Stil der Netzwerkwarnung", es: "Estilo de advertencia de red", - ja: "ネットワーク警告の表示方式", + ja: "ネットワーク警告の表示形式", ko: "네트워크 경고 표시 방식", - ru: "Стиль сетевого предупреждения", + ru: "Стиль сетевых предупреждений", zh: "网络警告样式", "zh-tw": "網路警告樣式", }, "New Remote": { def: "New Remote", + de: "Neues Remote", es: "Nuevo remoto", ja: "新しいリモート", ko: "새 원격", @@ -3341,6 +4230,7 @@ export const allMessages = { }, "No connected device information found. Cancelling Garbage Collection.": { def: "No connected device information found. Cancelling Garbage Collection.", + de: "Keine Informationen zu verbundenen Geräten gefunden. Garbage Collection wird abgebrochen.", ja: "接続済みデバイスの情報が見つかりませんでした。Garbage Collection をキャンセルします。", ko: "연결된 기기 정보를 찾을 수 없습니다. Garbage Collection을 취소합니다.", ru: "Не найдена информация о подключённых устройствах. Garbage Collection отменяется.", @@ -3349,6 +4239,7 @@ export const allMessages = { }, "No limit configured": { def: "No limit configured", + de: "Kein Limit konfiguriert", es: "Sin límite configurado", ja: "制限は設定されていません", ko: "제한이 설정되지 않음", @@ -3358,6 +4249,7 @@ export const allMessages = { }, "No, please take me back": { def: "No, please take me back", + de: "Nein, bitte zurück", es: "No, volver atrás", ja: "いいえ、前に戻ります", ko: "아니요, 이전으로 돌아가겠습니다", @@ -3367,6 +4259,7 @@ export const allMessages = { }, "Node ID": { def: "Node ID", + de: "Knoten-ID", ja: "ノード ID", ko: "노드 ID", ru: "ID узла", @@ -3375,6 +4268,7 @@ export const allMessages = { }, "Node Information Missing": { def: "Node Information Missing", + de: "Knoteninformationen fehlen", ja: "ノード情報がありません", ko: "노드 정보 누락", ru: "Отсутствует информация об узле", @@ -3383,6 +4277,7 @@ export const allMessages = { }, "Non-Synchronising files": { def: "Non-Synchronising files", + de: "Nicht zu synchronisierende Dateien", es: "Archivos no sincronizados", ja: "同期しないファイル", ko: "동기화하지 않는 파일", @@ -3392,6 +4287,7 @@ export const allMessages = { }, "Normal Files": { def: "Normal Files", + de: "Normale Dateien", es: "Archivos normales", ja: "通常ファイル", ko: "일반 파일", @@ -3401,6 +4297,7 @@ export const allMessages = { }, '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.', + de: 'Nicht alle Nachrichten wurden übersetzt. Wenn Sie Fehler melden, wenden Sie sich bitte an "Default".', es: 'No todos los mensajes están traducidos. Por favor, vuelva a "Predeterminado" al reportar errores.', fr: "Tous les messages n'ont pas été traduits. Et veuillez revenir à « Par défaut » lorsque vous signalez des erreurs.", he: 'לא כל ההודעות תורגמו. בנוסף, אנא חזור ל"ברירת מחדל" בעת דיווח על שגיאות.', @@ -3408,9 +4305,11 @@ export const allMessages = { ko: '모든 메시지가 번역되지 않았습니다. 오류 신고 시 "기본값"으로 되돌려 주세요.', ru: "Не все сообщения переведены. И, пожалуйста, вернитесь к «По умолчанию» при сообщении об ошибках.", zh: '并非所有消息都已翻译。请在报告错误时恢复为"默认"', + "zh-tw": '並非所有訊息都已翻譯。請在報告錯誤時恢復為"預設"', }, "Notify all setting files": { def: "Notify all setting files", + de: "Benachrichtigen Sie alle Einstellungsdateien", es: "Notificar todos los archivos de configuración", fr: "Notifier tous les fichiers de paramètres", he: "הודע על כל קבצי ההגדרות", @@ -3418,9 +4317,11 @@ export const allMessages = { ko: "모든 설정 파일 알림", ru: "Уведомлять обо всех файлах настроек", zh: "通知所有设置文件", + "zh-tw": "通知所有設定檔案", }, "Notify customized": { def: "Notify customized", + de: "Benachrichtigen Sie uns", es: "Notificar personalizaciones", fr: "Notifier les personnalisations", he: "הודע על התאמות אישיות", @@ -3428,9 +4329,11 @@ export const allMessages = { ko: "사용자 설정 알림", ru: "Уведомлять о настройках", zh: "通知自定义设置", + "zh-tw": "通知自定義設定", }, "Notify when other device has newly customized.": { def: "Notify when other device has newly customized.", + de: "Benachrichtigen, wenn ein anderes Gerät neu angepasst ist.", es: "Notificar cuando otro dispositivo personalice", fr: "Notifier lorsqu'un autre appareil a une nouvelle personnalisation.", he: "הודע כאשר מכשיר אחר הוסיף התאמה אישית חדשה.", @@ -3438,9 +4341,11 @@ export const allMessages = { ko: "다른 기기에서 새로운 사용자 설정이 있을 때 알림을 받습니다.", ru: "Уведомлять, когда другое устройство изменило настройки.", zh: "当其他设备有新的自定义设置时通知 ", + "zh-tw": "當其他裝置有新的自定義設定時通知 ", }, "Notify when the estimated remote storage size exceeds on start up": { def: "Notify when the estimated remote storage size exceeds on start up", + de: "Benachrichtigen, wenn die geschätzte Remote-Speichergröße beim Start übersteigt", es: "Notificar cuando el tamaño estimado del almacenamiento remoto exceda al iniciar", fr: "Notifier quand la taille estimée du stockage distant est dépassée au démarrage", he: "הודע כשגודל האחסון המרוחד המשוער עולה על הסף בעת הפעלה", @@ -3448,20 +4353,35 @@ export const allMessages = { ko: "시작 시 예상 원격 스토리지 크기가 초과되면 알림", ru: "Уведомлять, когда оценочный размер удалённого хранилища превышает при запуске", zh: "启动时当估计的远程存储大小超出时通知", + "zh-tw": "啟動時當估計的遠端儲存大小超出時通知", }, + "Now we can choose how to split the chunks; V3 is the most efficient. If you have troubled, please make this Default or Legacy.": + { + def: "Now we can choose how to split the chunks; V3 is the most efficient. If you have troubled, please make this Default or Legacy.", + de: "Jetzt kann ausgewählt werden, wie Chunks geteilt werden; V3 ist am effizientesten. Bei Problemen wähle Default oder Legacy.", + es: "Ahora puedes elegir cómo dividir los fragmentos; V3 es lo más eficiente. Si tienes problemas, usa Default o Legacy.", + ja: "チャンクの分割方法を選択できます。V3 が最も効率的です。問題がある場合は Default または Legacy にしてください。", + ko: "청크를 분할하는 방식을 선택할 수 있습니다. V3가 가장 효율적입니다. 문제가 있으면 Default 또는 Legacy로 설정하세요.", + ru: "Теперь можно выбрать способ разделения фрагментов; V3 наиболее эффективен. Если возникнут проблемы, используйте Default или Legacy.", + zh: "现在可以选择如何分割数据块;V3 效率最高。如果遇到问题,请改为 Default 或 Legacy。", + "zh-tw": "現在可以選擇如何分割資料區塊;V3 效率最高。如果遇到問題,請改為 Default 或 Legacy。", + }, "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.", + de: "Anzahl der Chargen zu einem Zeitpunkt zu verarbeiten. Defaults auf 40. Mindestens 2. Dies zusammen mit der Batch-Größe steuert, wie viele Doks zu einer Zeit im Speicher gehalten werden.", 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.", he: "מספר האצוות לעיבוד בכל פעם. ברירת מחדל 40, מינימום 2. יחד עם גודל האצווה קובע כמה מסמכים נשמרים בזיכרון בו-זמנית.", 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.", + ru: "Количество пакетов, обрабатываемых за один раз. По умолчанию — 40. Минимум — 2. Этот параметр вместе с размером пакета определяет, сколько документов одновременно хранится в памяти.", zh: "一次处理的批量数量。默认为 40。最小为 2。此设置与批量大小一起控制一次在内存中保留多少文档", + "zh-tw": "一次處理的批次數量。預設為 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.", + de: "Anzahl der Änderungen beim Synchronisieren zu einer Zeit. Defaults zu 50. Mindestens 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.", he: "מספר השינויים לסנכרון בכל פעם. ברירת מחדל 50, מינימום 2.", @@ -3469,9 +4389,11 @@ export const allMessages = { ko: "한 번에 동기화할 변경 사항의 수입니다. 기본값은 50입니다. 최소값은 2입니다.", ru: "Количество изменений для синхронизации за раз. По умолчанию 50. Минимум 2.", zh: "一次同步的更改数量。默认为 50。最小为 2。", + "zh-tw": "一次同步的更改數量。預設為 50。最小為 2。", }, "Obsidian version": { def: "Obsidian version", + de: "Obsidian-Version", ja: "Obsidian バージョン", ko: "Obsidian 버전", ru: "Версия Obsidian", @@ -3480,6 +4402,7 @@ export const allMessages = { }, "obsidianLiveSyncSettingTab.btnApply": { def: "Apply", + de: "Anwendung", es: "Aplicar", fr: "Appliquer", he: "החל", @@ -3487,10 +4410,11 @@ export const allMessages = { ko: "적용", ru: "Применить", zh: "应用", - "zh-tw": "套用", + "zh-tw": "應用", }, "obsidianLiveSyncSettingTab.btnCheck": { def: "Check", + de: "Überprüfung", es: "Verificar", fr: "Vérifier", he: "בדוק", @@ -3498,9 +4422,11 @@ export const allMessages = { ko: "확인", ru: "Проверить", zh: "检查", + "zh-tw": "檢查", }, "obsidianLiveSyncSettingTab.btnCopy": { def: "Copy", + de: "Kopie", es: "Copiar", fr: "Copier", he: "העתק", @@ -3508,9 +4434,11 @@ export const allMessages = { ko: "복사", ru: "Копировать", zh: "复制", + "zh-tw": "複製", }, "obsidianLiveSyncSettingTab.btnDisable": { def: "Disable", + de: "Nicht verfügbar", es: "Desactivar", fr: "Désactiver", he: "נטרל", @@ -3518,10 +4446,11 @@ export const allMessages = { ko: "비활성화", ru: "Отключить", zh: "禁用", - "zh-tw": "停用", + "zh-tw": "禁用", }, "obsidianLiveSyncSettingTab.btnDiscard": { def: "Discard", + de: "Verwerfen", es: "Descartar", fr: "Abandonner", he: "ביטול שינויים", @@ -3529,9 +4458,11 @@ export const allMessages = { ko: "삭제", ru: "Отменить", zh: "丢弃", + "zh-tw": "丟棄", }, "obsidianLiveSyncSettingTab.btnEnable": { def: "Enable", + de: "Ermöglichen", es: "Activar", fr: "Activer", he: "הפעל", @@ -3539,9 +4470,11 @@ export const allMessages = { ko: "활성화", ru: "Включить", zh: "启用", + "zh-tw": "啟用", }, "obsidianLiveSyncSettingTab.btnFix": { def: "Fix", + de: "Fehler", es: "Corregir", fr: "Corriger", he: "תקן", @@ -3549,9 +4482,11 @@ export const allMessages = { ko: "수정", ru: "Исправить", zh: "修复", + "zh-tw": "修復", }, "obsidianLiveSyncSettingTab.btnGotItAndUpdated": { def: "I got it and updated.", + de: "Ich habe es und aktualisiert.", es: "Lo entendí y actualicé.", fr: "J'ai compris et mis à jour.", he: "הבנתי ועדכנתי.", @@ -3559,9 +4494,11 @@ export const allMessages = { ko: "알겠습니다. 업데이트했습니다.", ru: "Понял и обновил.", zh: "我明白了并且已更新", + "zh-tw": "我明白了並且已更新", }, "obsidianLiveSyncSettingTab.btnNext": { def: "Next", + de: "Nächste", es: "Siguiente", fr: "Suivant", he: "הבא", @@ -3573,6 +4510,7 @@ export const allMessages = { }, "obsidianLiveSyncSettingTab.btnStart": { def: "Start", + de: "Starten", es: "Iniciar", fr: "Démarrer", he: "התחל", @@ -3580,9 +4518,11 @@ export const allMessages = { ko: "시작", ru: "Старт", zh: "开始", + "zh-tw": "開始", }, "obsidianLiveSyncSettingTab.btnTest": { def: "Test", + de: "Prüfung", es: "Probar", fr: "Tester", he: "בדוק", @@ -3590,9 +4530,11 @@ export const allMessages = { ko: "테스트", ru: "Тест", zh: "测试", + "zh-tw": "測試", }, "obsidianLiveSyncSettingTab.btnUse": { def: "Use", + de: "Verwendung", es: "Usar", fr: "Utiliser", he: "השתמש", @@ -3600,9 +4542,11 @@ export const allMessages = { ko: "사용", ru: "Использовать", zh: "使用", + "zh-tw": "使用", }, "obsidianLiveSyncSettingTab.buttonFetch": { def: "Fetch", + de: "Gebühren", es: "Obtener", fr: "Récupérer", he: "משוך", @@ -3610,9 +4554,11 @@ export const allMessages = { ko: "가져오기", ru: "Загрузить", zh: "获取", + "zh-tw": "獲取", }, "obsidianLiveSyncSettingTab.buttonNext": { def: "Next", + de: "Nächste", es: "Siguiente", fr: "Suivant", he: "הבא", @@ -3624,6 +4570,7 @@ export const allMessages = { }, "obsidianLiveSyncSettingTab.defaultLanguage": { def: "Default", + de: "Fehler", es: "Predeterminado", fr: "Par défaut", he: "ברירת מחדל", @@ -3631,10 +4578,11 @@ export const allMessages = { ko: "기본값", ru: "По умолчанию", zh: "默认语言", - "zh-tw": "預設語言", + "zh-tw": "預設", }, "obsidianLiveSyncSettingTab.descConnectSetupURI": { def: "This is the recommended method to set up Self-hosted LiveSync with a Setup URI.", + de: "Dies ist die empfohlene Methode, Self-hosted LiveSync mit einem Setup-URI einzurichten.", 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.", he: "זוהי השיטה המומלצת להגדרת Self-hosted LiveSync עם Setup URI.", @@ -3642,9 +4590,11 @@ export const allMessages = { ko: "이것은 Setup URI로 Self-hosted LiveSync를 설정하는 권장 방법입니다.", ru: "Это рекомендуемый способ настройки Self-hosted LiveSync с помощью Setup URI.", zh: "这是使用设置 URI 设置 Self-hosted LiveSync 的推荐方法", + "zh-tw": "這是使用設定 URI 設定 Self-hosted LiveSync 的推薦方法", }, "obsidianLiveSyncSettingTab.descCopySetupURI": { def: "Perfect for setting up a new device!", + de: "Perfekt für die Einrichtung eines neuen Gerätes!", es: "¡Perfecto para configurar un nuevo dispositivo!", fr: "Parfait pour configurer un nouvel appareil !", he: "מושלם להגדרת מכשיר חדש!", @@ -3652,9 +4602,11 @@ export const allMessages = { ko: "새 기기 설정에 완벽합니다!", ru: "Идеально подходит для настройки нового устройства!", zh: "非常适合设置新设备!", + "zh-tw": "非常適合設定新裝置!", }, "obsidianLiveSyncSettingTab.descEnableLiveSync": { def: "Only enable this after configuring either of the above two options or completing all configuration manually.", + de: "Nur aktivieren Sie dies nach der Konfiguration entweder der beiden oben genannten Optionen oder beenden Sie alle Konfiguration manuell.", 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.", he: "הפעל רק לאחר הגדרת אחת משתי האפשרויות לעיל, או לאחר השלמת כל ההגדרות ידנית.", @@ -3662,9 +4614,11 @@ export const allMessages = { ko: "위의 두 옵션 중 하나를 구성하거나 모든 구성을 수동으로 완료한 후에만 활성화하세요.", ru: "Включайте это только после настройки одного из двух вариантов выше или после полного ручного завершения всей конфигурации.", zh: "仅在配置了上述两个选项之一或手动完成所有配置后启用此选项", + "zh-tw": "僅在配置了上述兩個選項之一或手動完成所有配置後啟用此選項", }, "obsidianLiveSyncSettingTab.descFetchConfigFromRemote": { def: "Fetch necessary settings from already configured remote server.", + de: "Fetch notwendige Einstellungen von bereits konfigurierten 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é.", he: "משוך הגדרות נדרשות מהשרת המרוחד שהוגדר כבר.", @@ -3672,9 +4626,11 @@ export const allMessages = { ko: "이미 구성된 원격 서버에서 필요한 설정을 가져옵니다.", ru: "Получить необходимые настройки с уже настроенного удалённого сервера.", zh: "从已配置的远程服务器获取必要的设置", + "zh-tw": "從已配置的遠端伺服器獲取必要的設定", }, "obsidianLiveSyncSettingTab.descManualSetup": { def: "Not recommended, but useful if you don't have a Setup URI", + de: "Nicht empfohlen, aber nützlich, wenn Sie kein Setup-URI haben", 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", he: "לא מומלץ, אך שימושי אם אין לך Setup URI", @@ -3682,9 +4638,11 @@ export const allMessages = { ko: "권장하지 않지만 Setup URI가 없는 경우에 유용합니다", ru: "Не рекомендуется, но полезно, если у вас нет Setup URI.", zh: "不推荐,但如果您没有设置 URI 则很有用", + "zh-tw": "不推薦,但如果您沒有設定 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.", + de: "Datenbankverbindung öffnen. Wird die Remote-Datenbank nicht gefunden und Sie haben die Erlaubnis, eine Datenbank zu erstellen, wird die Datenbank erstellt.", 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.", he: "פתח חיבור למסד נתונים. אם מסד הנתונים המרוחד לא נמצא ויש לך הרשאה ליצור אחד, הוא ייצור.", @@ -3692,9 +4650,11 @@ export const allMessages = { ko: "데이터베이스 연결을 엽니다. 원격 데이터베이스를 찾을 수 없고 데이터베이스 생성 권한이 있는 경우, 데이터베이스가 생성됩니다.", ru: "Открыть подключение к базе данных. Если удалённая база данных не найдена и у вас есть право на её создание, база будет создана.", zh: "打开数据库连接。如果未找到远程数据库并且您有创建数据库的权限,则将创建数据库", + "zh-tw": "開啟資料庫連線。如果未找到遠端資料庫並且您有建立資料庫的許可權,則將建立資料庫", }, "obsidianLiveSyncSettingTab.descValidateDatabaseConfig": { def: "Checks and fixes any potential issues with the database config.", + de: "Überprüfen und beheben Sie alle möglichen Probleme mit der Datenbank 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.", he: "בודק ומתקן בעיות אפשריות בתצורת מסד הנתונים.", @@ -3702,9 +4662,11 @@ export const allMessages = { ko: "데이터베이스 구성의 잠재적 문제를 확인하고 수정합니다.", ru: "Проверяет и исправляет любые потенциальные проблемы в конфигурации базы данных.", zh: "检查并修复数据库配置中的任何潜在问题", + "zh-tw": "檢查並修復資料庫配置中的任何潛在問題", }, "obsidianLiveSyncSettingTab.errAccessForbidden": { def: "❗ Access forbidden.", + de: "❗ Zugang verboten.", es: "Acceso prohibido.", fr: "❗ Accès interdit.", he: "❗ גישה נדחתה.", @@ -3712,9 +4674,11 @@ export const allMessages = { ko: "❗ 액세스가 금지되었습니다.", ru: "❗ Доступ запрещён.", zh: "❗ 访问被禁止", + "zh-tw": "❗ 訪問被禁止", }, "obsidianLiveSyncSettingTab.errCannotContinueTest": { def: "We could not continue the test.", + de: "Wir konnten den Test nicht fortsetzen.", es: "No se pudo continuar con la prueba.", fr: "Impossible de poursuivre le test.", he: "לא ניתן להמשיך בבדיקה.", @@ -3722,9 +4686,11 @@ export const allMessages = { ko: "테스트를 계속할 수 없습니다.", ru: "Мы не можем продолжить тест.", zh: "我们无法继续测试。", + "zh-tw": "我們無法繼續測試。", }, "obsidianLiveSyncSettingTab.errCorsCredentials": { def: "❗ cors.credentials is wrong", + de: "❗ cors.credentials ist falsch", es: "❗ cors.credentials es incorrecto", fr: "❗ cors.credentials est incorrect", he: "❗ cors.credentials שגוי", @@ -3732,9 +4698,11 @@ export const allMessages = { ko: "❗ cors.credentials가 잘못되었습니다", ru: "❗ cors.credentials неверно", zh: "❗ cors.credentials 设置错误", + "zh-tw": "❗ cors.credentials 設定錯誤", }, "obsidianLiveSyncSettingTab.errCorsNotAllowingCredentials": { def: "❗ CORS is not allowing credentials", + de: "❗ CORS erlaubt keine Anmeldeinformationen", es: "CORS no permite credenciales", fr: "❗ CORS n'autorise pas les identifiants", he: "❗ CORS אינו מאפשר פרטי גישה", @@ -3742,9 +4710,11 @@ export const allMessages = { ko: "❗ CORS에서 자격 증명을 허용하지 않습니다", ru: "❗ CORS не разрешает учётные данные", zh: "❗ CORS 不允许凭据", + "zh-tw": "❗ CORS 不允許憑據", }, "obsidianLiveSyncSettingTab.errCorsOrigins": { def: "❗ cors.origins is wrong", + de: "❗ cors.origins ist falsch", es: "❗ cors.origins es incorrecto", fr: "❗ cors.origins est incorrect", he: "❗ cors.origins שגוי", @@ -3752,9 +4722,11 @@ export const allMessages = { ko: "❗ cors.origins가 잘못되었습니다", ru: "❗ cors.origins неверно", zh: "❗ cors.origins 设置错误", + "zh-tw": "❗ cors.origins 設定錯誤", }, "obsidianLiveSyncSettingTab.errEnableCors": { def: "❗ httpd.enable_cors is wrong", + de: "❗ httpd.enable cors ist falsch", es: "❗ httpd.enable_cors es incorrecto", fr: "❗ httpd.enable_cors est incorrect", he: "❗ httpd.enable_cors שגוי", @@ -3762,17 +4734,23 @@ export const allMessages = { ko: "❗ httpd.enable_cors가 잘못되었습니다", ru: "❗ httpd.enable_cors неверно", zh: "❗ httpd.enable_cors 设置错误", + "zh-tw": "❗ httpd.enable_cors 設定錯誤", }, "obsidianLiveSyncSettingTab.errEnableCorsChttpd": { def: "❗ chttpd.enable_cors is wrong", + de: "❗ chttpd.enable cors ist falsch", + es: "✖ chttpd.enable_cors es incorrecto", fr: "❗ chttpd.enable_cors est incorrect", he: "❗ chttpd.enable_cors שגוי", ja: "❗ chttpd.enable_corsが不正です", + ko: "❗ chttpd.enable_cors가 잘못되었습니다", ru: "❗ chttpd.enable_cors неверно", zh: "❗ chttpd.enable_cors 设置错误", + "zh-tw": "❗ chttpd.enable_cors 設定錯誤", }, "obsidianLiveSyncSettingTab.errMaxDocumentSize": { def: "❗ couchdb.max_document_size is low)", + de: "❗ codb.max document size ist niedrig)", es: "❗ couchdb.max_document_size es bajo)", fr: "❗ couchdb.max_document_size est trop bas)", he: "❗ couchdb.max_document_size נמוך)", @@ -3780,9 +4758,11 @@ export const allMessages = { ko: "❗ couchdb.max_document_size가 낮습니다)", ru: "❗ couchdb.max_document_size низкое", zh: "❗ couchdb.max_document_size 设置过低)", + "zh-tw": "❗ couchdb.max_document_size 設定過低)", }, "obsidianLiveSyncSettingTab.errMaxRequestSize": { def: "❗ chttpd.max_http_request_size is low)", + de: "❗ chttpd.max http request size ist niedrig)", es: "❗ chttpd.max_http_request_size es bajo)", fr: "❗ chttpd.max_http_request_size est trop bas)", he: "❗ chttpd.max_http_request_size נמוך)", @@ -3790,9 +4770,11 @@ export const allMessages = { ko: "❗ chttpd.max_http_request_size가 낮습니다)", ru: "❗ chttpd.max_http_request_size низкое", zh: "❗ chttpd.max_http_request_size 设置过低)", + "zh-tw": "❗ chttpd.max_http_request_size 設定過低)", }, "obsidianLiveSyncSettingTab.errMissingWwwAuth": { def: "❗ httpd.WWW-Authenticate is missing", + de: "❗ httpd. WWW-Authenticate fehlt", es: "❗ httpd.WWW-Authenticate falta", fr: "❗ httpd.WWW-Authenticate est manquant", he: "❗ httpd.WWW-Authenticate חסר", @@ -3800,9 +4782,11 @@ export const allMessages = { ko: "❗ httpd.WWW-Authenticate가 누락되었습니다", ru: "❗ httpd.WWW-Authenticate отсутствует", zh: "❗ 缺少 httpd.WWW-Authenticate 设置", + "zh-tw": "❗ 缺少 httpd.WWW-Authenticate 設定", }, "obsidianLiveSyncSettingTab.errRequireValidUser": { def: "❗ chttpd.require_valid_user is wrong.", + de: "❗ chttpd.require valid user ist falsch.", es: "❗ chttpd.require_valid_user es incorrecto.", fr: "❗ chttpd.require_valid_user est incorrect.", he: "❗ chttpd.require_valid_user שגוי.", @@ -3810,9 +4794,11 @@ export const allMessages = { ko: "❗ chttpd.require_valid_user가 잘못되었습니다.", ru: "❗ chttpd.require_valid_user неверно.", zh: "❗ chttpd.require_valid_user 设置错误", + "zh-tw": "❗ chttpd.require_valid_user 設定錯誤", }, "obsidianLiveSyncSettingTab.errRequireValidUserAuth": { def: "❗ chttpd_auth.require_valid_user is wrong.", + de: "❗ chttpd auth.require valid user ist falsch.", es: "❗ chttpd_auth.require_valid_user es incorrecto.", fr: "❗ chttpd_auth.require_valid_user est incorrect.", he: "❗ chttpd_auth.require_valid_user שגוי.", @@ -3820,9 +4806,11 @@ export const allMessages = { ko: "❗ chttpd_auth.require_valid_user가 잘못되었습니다.", ru: "❗ chttpd_auth.require_valid_user неверно.", zh: "❗ chttpd_auth.require_valid_user 设置错误", + "zh-tw": "❗ chttpd_auth.require_valid_user 設定錯誤", }, "obsidianLiveSyncSettingTab.labelDisabled": { def: "⏹️ : Disabled", + de: "⏹️ : Behinderte", es: "⏹️ : Desactivado", fr: "⏹️ : Désactivé", he: "⏹️ : מנוטרל", @@ -3830,10 +4818,11 @@ export const allMessages = { ko: "⏹️ : 비활성화됨", ru: "⏹️ : Отключено", zh: "⏹️:已禁用", - "zh-tw": "⏹️ : 已停用", + "zh-tw": "⏹️ : 已禁用", }, "obsidianLiveSyncSettingTab.labelEnabled": { def: "🔁 : Enabled", + de: "🔁 : Ermöglicht", es: "🔁 : Activado", fr: "🔁 : Activé", he: "🔁 : מופעל", @@ -3845,6 +4834,7 @@ export const allMessages = { }, "obsidianLiveSyncSettingTab.levelAdvanced": { def: " (Advanced)", + de: " (Erweitert)", es: " (avanzado)", fr: " (Avancé)", he: " (מתקדם)", @@ -3852,9 +4842,11 @@ export const allMessages = { ko: " (고급)", ru: " (Расширенные)", zh: "(进阶)", + "zh-tw": "(進階)", }, "obsidianLiveSyncSettingTab.levelEdgeCase": { def: " (Edge Case)", + de: "(Edge Case)", es: " (excepción)", fr: " (Cas particulier)", he: " (מקרה קצה)", @@ -3862,9 +4854,11 @@ export const allMessages = { ko: " (특수 사례)", ru: " (Граничные случаи)", zh: "(边缘情况)", + "zh-tw": "(邊緣情況)", }, "obsidianLiveSyncSettingTab.levelPowerUser": { def: " (Power User)", + de: "(Power User)", es: " (experto)", fr: " (Utilisateur avancé)", he: " (משתמש מתקדם)", @@ -3872,9 +4866,11 @@ export const allMessages = { ko: " (파워 유저)", ru: " (Опытный пользователь)", zh: "(高级用户)", + "zh-tw": "(高階使用者)", }, "obsidianLiveSyncSettingTab.linkOpenInBrowser": { def: "Open in browser", + de: "Öffnen im Browser", es: "Abrir en el navegador", fr: "Ouvrir dans le navigateur", he: "פתח בדפדפן", @@ -3882,9 +4878,11 @@ export const allMessages = { ko: "브라우저에서 열기", ru: "Открыть в браузере", zh: "在浏览器中打开", + "zh-tw": "在瀏覽器中開啟", }, "obsidianLiveSyncSettingTab.linkPageTop": { def: "Page Top", + de: "Seite oben", es: "Ir arriba", fr: "Haut de la page", he: "ראש העמוד", @@ -3892,9 +4890,11 @@ export const allMessages = { ko: "페이지 상단", ru: "В начало страницы", zh: "页面顶部", + "zh-tw": "頁面頂部", }, "obsidianLiveSyncSettingTab.linkTipsAndTroubleshooting": { def: "Tips and Troubleshooting", + de: "Tipps und Fehlerbehebung", es: "Consejos y solución de problemas", fr: "Conseils et dépannage", he: "טיפים ופתרון בעיות", @@ -3902,9 +4902,11 @@ export const allMessages = { ko: "팁 및 문제 해결", ru: "Советы и устранение неполадок", zh: "提示和故障排除", + "zh-tw": "提示和故障排除", }, "obsidianLiveSyncSettingTab.linkTroubleshooting": { def: "/docs/troubleshooting.md", + de: "/docs/troubleshooting.md", es: "/docs/es/troubleshooting.md", fr: "/docs/troubleshooting.md", he: "/docs/troubleshooting.md", @@ -3912,9 +4914,11 @@ export const allMessages = { ko: "/docs/troubleshooting.md", ru: "/docs/troubleshooting.md", zh: "/docs/troubleshooting.md", + "zh-tw": "/docs/troubleshooting.md", }, "obsidianLiveSyncSettingTab.logCannotUseCloudant": { def: "This feature cannot be used with IBM Cloudant.", + de: "Diese Funktion kann nicht mit IBM Cloudant verwendet werden.", es: "Esta función no se puede utilizar con IBM Cloudant.", fr: "Cette fonctionnalité ne peut pas être utilisée avec IBM Cloudant.", he: "לא ניתן להשתמש בתכונה זו עם IBM Cloudant.", @@ -3922,9 +4926,11 @@ export const allMessages = { ko: "이 기능은 IBM Cloudant와 함께 사용할 수 없습니다.", ru: "Эта функция недоступна для IBM Cloudant.", zh: "此功能不能与 IBM Cloudant 一起使用 ", + "zh-tw": "此功能不能與 IBM Cloudant 一起使用 ", }, "obsidianLiveSyncSettingTab.logCheckingConfigDone": { def: "Checking configuration done", + de: "Überprüfung der Konfiguration", es: "Verificación de configuración completada", fr: "Vérification de la configuration terminée", he: "בדיקת התצורה הושלמה", @@ -3932,9 +4938,11 @@ export const allMessages = { ko: "구성 확인 완료", ru: "Проверка конфигурации завершена", zh: "配置检查完成", + "zh-tw": "配置檢查完成", }, "obsidianLiveSyncSettingTab.logCheckingConfigFailed": { def: "Checking configuration failed", + de: "Überprüfung der Konfiguration fehlgeschlagen", es: "La verificación de configuración falló", fr: "Échec de la vérification de la configuration", he: "בדיקת התצורה נכשלה", @@ -3942,9 +4950,11 @@ export const allMessages = { ko: "구성 확인 실패", ru: "Проверка конфигурации не удалась", zh: "配置检查失败", + "zh-tw": "配置檢查失敗", }, "obsidianLiveSyncSettingTab.logCheckingDbConfig": { def: "Checking database configuration", + de: "Überprüfung der Datenbankkonfiguration", es: "Verificando la configuración de la base de datos", fr: "Vérification de la configuration de la base", he: "בודק תצורת מסד נתונים", @@ -3952,19 +4962,23 @@ export const allMessages = { ko: "데이터베이스 구성 확인 중", ru: "Проверка конфигурации базы данных", zh: "正在检查数据库配置", + "zh-tw": "正在檢查資料庫配置", }, "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}.", + de: "ERROR: Versäumt, Passphrase mit dem Remoteserver zu überprüfen:\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}.", he: "שגיאה: בדיקת ביטוי הסיסמה עם השרת המרוחד נכשלה:\n${db}.", ja: "エラー: リモートサーバーとのパスフレーズ確認に失敗しました:\n${db}。", - ko: "오류: 원격 서버와 패스프레이즈 확인에 실패했습니다: \n${db}.", - ru: "ОШИБКА: Не удалось проверить пароль с удалённым сервером: db.", - zh: "错误:无法使用远程服务器检查密码:\n${db} ", + ko: "오류: 원격 서버와 패스프레이즈 확인에 실패했습니다:\n${db}.", + ru: "ОШИБКА: не удалось проверить парольную фразу на удалённом сервере:\n${db}.", + zh: "错误:无法使用远程服务器检查密码:\n${db}", + "zh-tw": "錯誤:無法使用遠端伺服器檢查密碼:\n${db}", }, "obsidianLiveSyncSettingTab.logConfiguredDisabled": { def: "Configured synchronization mode: DISABLED", + de: "Konfigurierter Synchronisationsmodus: DISABLED", es: "Modo de sincronización configurado: DESACTIVADO", fr: "Mode de synchronisation configuré : DÉSACTIVÉ", he: "מצב סנכרון שהוגדר: מנוטרל", @@ -3972,10 +4986,11 @@ export const allMessages = { ko: "구성된 동기화 모드: 비활성화됨", ru: "Настроенный режим синхронизации: ОТКЛЮЧЕН", zh: "已配置的同步模式:已禁用", - "zh-tw": "已設定的同步模式:已停用", + "zh-tw": "配置的同步模式:已禁用", }, "obsidianLiveSyncSettingTab.logConfiguredLiveSync": { def: "Configured synchronization mode: LiveSync", + de: "Konfigurierter Synchronisationsmodus: LiveSync", es: "Modo de sincronización configurado: Sincronización en Vivo", fr: "Mode de synchronisation configuré : LiveSync", he: "מצב סנכרון שהוגדר: LiveSync", @@ -3983,10 +4998,11 @@ export const allMessages = { ko: "구성된 동기화 모드: LiveSync", ru: "Настроенный режим синхронизации: LiveSync", zh: "已配置的同步模式:LiveSync", - "zh-tw": "已設定的同步模式:LiveSync", + "zh-tw": "配置的同步模式:LiveSync", }, "obsidianLiveSyncSettingTab.logConfiguredPeriodic": { def: "Configured synchronization mode: Periodic", + de: "Konfigurierter Synchronisationsmodus: Periodisch", es: "Modo de sincronización configurado: Periódico", fr: "Mode de synchronisation configuré : Périodique", he: "מצב סנכרון שהוגדר: תקופתי", @@ -3994,40 +5010,47 @@ export const allMessages = { ko: "구성된 동기화 모드: 주기적", ru: "Настроенный режим синхронизации: Периодический", zh: "已配置的同步模式:定期同步", - "zh-tw": "已設定的同步模式:定期同步", + "zh-tw": "配置的同步模式:定期", }, "obsidianLiveSyncSettingTab.logCouchDbConfigFail": { def: "CouchDB Configuration: ${title} failed", + de: "CouchDB Konfiguration: ${title} gescheitert", es: "Configuración de CouchDB: ${title} falló", fr: "Configuration CouchDB : échec de ${title}", he: "תצורת CouchDB: ${title} נכשלה", ja: "CouchDB設定: ${title} 失敗", ko: "CouchDB 구성: ${title} 실패", - ru: "Конфигурация CouchDB: title не удалась", + ru: "Конфигурация CouchDB: ${title} — ошибка", zh: "CouchDB 配置:${title} 失败", + "zh-tw": "CouchDB 配置:${title} 失敗", }, "obsidianLiveSyncSettingTab.logCouchDbConfigSet": { def: "CouchDB Configuration: ${title} -> Set ${key} to ${value}", + de: "CouchDB-Konfiguration: ${title} -> ${key} auf ${value} setzen", es: "Configuración de CouchDB: ${title} -> Establecer ${key} en ${value}", fr: "Configuration CouchDB : ${title} -> ${key} défini à ${value}", he: "תצורת CouchDB: ${title} -> הגדר ${key} ל-${value}", ja: "CouchDB設定: ${title} -> ${key}を${value}に設定", ko: "CouchDB 구성: ${title} -> ${key}를 ${value}로 설정", - ru: "Конфигурация CouchDB: title -> Установить key в value", + ru: "Конфигурация CouchDB: ${title} -> установить ${key} в ${value}", zh: "CouchDB 配置:${title} -> 设置 ${key} 为 ${value}", + "zh-tw": "CouchDB 配置:${title} -> 設定 ${key} 為 ${value}", }, "obsidianLiveSyncSettingTab.logCouchDbConfigUpdated": { def: "CouchDB Configuration: ${title} successfully updated", + de: "CouchDB Konfiguration: ${title} erfolgreich aktualisiert", es: "Configuración de CouchDB: ${title} actualizado correctamente", fr: "Configuration CouchDB : ${title} mise à jour avec succès", he: "תצורת CouchDB: ${title} עודכנה בהצלחה", ja: "CouchDB設定: ${title} 正常に更新されました", ko: "CouchDB 구성: ${title} 성공적으로 업데이트됨", - ru: "Конфигурация CouchDB: title успешно обновлена", + ru: "Конфигурация CouchDB: ${title} успешно обновлена", zh: "CouchDB 配置:${title} 成功更新", + "zh-tw": "CouchDB 配置:${title} 成功更新", }, "obsidianLiveSyncSettingTab.logDatabaseConnected": { def: "Database connected", + de: "Datenbank verbunden", es: "Base de datos conectada", fr: "Base de données connectée", he: "מסד הנתונים מחובר", @@ -4035,9 +5058,11 @@ export const allMessages = { ko: "데이터베이스 연결됨", ru: "База данных подключена", zh: "数据库已连接", + "zh-tw": "資料庫已連線", }, "obsidianLiveSyncSettingTab.logEncryptionNoPassphrase": { def: "You cannot enable encryption without a passphrase", + de: "Sie können keine Verschlüsselung ohne Passphrase aktivieren", es: "No puedes habilitar el cifrado sin una frase de contraseña", fr: "Impossible d'activer le chiffrement sans phrase secrète", he: "לא ניתן להפעיל הצפנה ללא ביטוי סיסמה", @@ -4045,9 +5070,11 @@ export const allMessages = { ko: "패스프레이즈 없이는 암호화를 활성화할 수 없습니다", ru: "Вы не можете включить шифрование без парольной фразы", zh: "没有密码无法启用加密", + "zh-tw": "沒有密碼無法啟用加密", }, "obsidianLiveSyncSettingTab.logEncryptionNoSupport": { def: "Your device does not support encryption.", + de: "Ihr Gerät unterstützt keine Verschlüsselung.", es: "Tu dispositivo no admite el cifrado.", fr: "Votre appareil ne prend pas en charge le chiffrement.", he: "המכשיר שלך אינו תומך בהצפנה.", @@ -4055,9 +5082,11 @@ export const allMessages = { ko: "기기가 암호화를 지원하지 않습니다.", ru: "Ваше устройство не поддерживает шифрование.", zh: "您的设备不支持加密 ", + "zh-tw": "您的裝置不支援加密 ", }, "obsidianLiveSyncSettingTab.logErrorOccurred": { def: "An error occurred!!", + de: "Ein Fehler ist aufgetreten!", es: "¡Ocurrió un error!", fr: "Une erreur s'est produite !!", he: "אירעה שגיאה!!", @@ -4065,19 +5094,23 @@ export const allMessages = { ko: "오류가 발생했습니다!", ru: "Произошла ошибка!!", zh: "发生错误!!", + "zh-tw": "發生錯誤!!", }, "obsidianLiveSyncSettingTab.logEstimatedSize": { def: "Estimated size: ${size}", + de: "Geschätzte Größe: ${size}", es: "Tamaño estimado: ${size}", fr: "Taille estimée : ${size}", he: "גודל משוער: ${size}", ja: "推定サイズ: ${size}", ko: "예상 크기: ${size}", - ru: "Примерный размер: size", + ru: "Оценочный размер: ${size}", zh: "估计大小:${size}", + "zh-tw": "估計大小:${size}", }, "obsidianLiveSyncSettingTab.logPassphraseInvalid": { def: "Passphrase is not valid, please fix it.", + de: "Passphrase ist nicht gültig, bitte reparieren.", es: "La frase de contraseña no es válida, por favor corrígela.", fr: "La phrase secrète est invalide, veuillez la corriger.", he: "ביטוי הסיסמה אינו תקין, אנא תקן אותו.", @@ -4085,9 +5118,11 @@ export const allMessages = { ko: "패스프레이즈가 유효하지 않습니다. 수정해 주세요.", ru: "Парольная фраза недействительна, пожалуйста, исправьте.", zh: "密码无效,请修正", + "zh-tw": "密碼無效,請修正", }, "obsidianLiveSyncSettingTab.logPassphraseNotCompatible": { def: "ERROR: Passphrase is not compatible with the remote server! Please check it again!", + de: "ERROR: Passphrase ist nicht mit dem Remoteserver kompatibel! Bitte überprüfen Sie es nochmal!", 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 !", he: "שגיאה: ביטוי הסיסמה אינו תואם לשרת המרוחד! אנא בדוק שוב!", @@ -4095,9 +5130,11 @@ export const allMessages = { ko: "오류: 패스프레이즈가 원격 서버와 호환되지 않습니다! 다시 확인해 주세요!", ru: "ОШИБКА: Парольная фраза несовместима с удалённым сервером!", zh: "错误:密码与远程服务器不兼容!请再次检查!", + "zh-tw": "錯誤:密碼與遠端伺服器不相容!請再次檢查!", }, "obsidianLiveSyncSettingTab.logRebuildNote": { def: "Syncing has been disabled, fetch and re-enabled if desired.", + de: "Die Synchronisierung wurde deaktiviert, ggf. abgeholt und wieder aktiviert.", 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é.", he: "הסנכרון הושבת, משוך והפעל מחדש אם רצוי.", @@ -4105,9 +5142,11 @@ export const allMessages = { ko: "동기화가 비활성화되었습니다. 원하는 경우 가져오기 후 다시 활성화하세요.", ru: "Синхронизация отключена, загрузите и включите снова при желании.", zh: "同步已禁用,如果需要,请获取并重新启用", + "zh-tw": "同步已禁用,如果需要,請獲取並重新啟用", }, "obsidianLiveSyncSettingTab.logSelectAnyPreset": { def: "Select any preset.", + de: "Wählen Sie eine Voreinstellung aus.", es: "Selecciona cualquier preestablecido.", fr: "Sélectionnez un préréglage.", he: "בחר קביעה מראש כלשהי.", @@ -4115,13 +5154,21 @@ export const allMessages = { ko: "프리셋을 선택하세요.", ru: "Выберите любой пресет.", zh: "请选择任一预设。", - "zh-tw": "請選擇任一預設項目。", + "zh-tw": "選擇任何預設", }, "obsidianLiveSyncSettingTab.logServerConfigurationCheck": { - def: "obsidianLiveSyncSettingTab.logServerConfigurationCheck", + def: "Log Server Configuration Check", + de: "Serverkonfiguration prüfen", + es: "Registrar la verificación de la configuración del servidor", + ja: "サーバー設定チェックを記録", + ko: "서버 구성 확인 로그", + ru: "Проверка конфигурации сервера", + zh: "日志服务器配置检查", + "zh-tw": "日誌伺服器配置檢查", }, "obsidianLiveSyncSettingTab.msgAreYouSureProceed": { def: "Are you sure to proceed?", + de: "Bist du sicher?", es: "¿Estás seguro de proceder?", fr: "Êtes-vous sûr de vouloir continuer ?", he: "האם אתה בטוח שברצונך להמשיך?", @@ -4129,9 +5176,11 @@ export const allMessages = { ko: "정말로 진행하시겠습니까?", ru: "Вы уверены, что хотите продолжить?", zh: "您确定要继续吗?", + "zh-tw": "您確定要繼續嗎?", }, "obsidianLiveSyncSettingTab.msgChangesNeedToBeApplied": { def: "Changes need to be applied!", + de: "Änderungen müssen angewendet werden!", es: "¡Los cambios deben aplicarse!", fr: "Des modifications doivent être appliquées !", he: "יש להחיל שינויים!", @@ -4139,9 +5188,11 @@ export const allMessages = { ko: "변경사항을 적용해야 합니다!", ru: "Изменения нужно применить!", zh: "需要应用更改!", + "zh-tw": "需要應用更改!", }, "obsidianLiveSyncSettingTab.msgConfigCheck": { def: "--Config check--", + de: "- Config check---", es: "--Verificación de configuración--", fr: "--Vérification de la configuration--", he: "--בדיקת תצורה--", @@ -4149,9 +5200,11 @@ export const allMessages = { ko: "--구성 확인--", ru: "--Проверка конфигурации--", zh: "--配置检查--", + "zh-tw": "--配置檢查--", }, "obsidianLiveSyncSettingTab.msgConfigCheckFailed": { def: "The configuration check has failed. Do you want to continue anyway?", + de: "Die Konfigurationsprüfung ist fehlgeschlagen. Willst du trotzdem weitermachen?", 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 ?", he: "בדיקת התצורה נכשלה. האם ברצונך להמשיך בכל זאת?", @@ -4159,10 +5212,11 @@ export const allMessages = { ko: "구성 확인에 실패했습니다. 그래도 계속하시겠습니까?", ru: "Проверка конфигурации не удалась. Вы всё равно хотите продолжить?", zh: "配置检查失败。仍要继续吗?", - "zh-tw": "設定檢查失敗。仍要繼續嗎?", + "zh-tw": "配置檢查失敗。您仍要繼續嗎?", }, "obsidianLiveSyncSettingTab.msgConnectionCheck": { def: "--Connection check--", + de: "- Verbindungskontrolle...", es: "--Verificación de conexión--", fr: "--Vérification de la connexion--", he: "--בדיקת חיבור--", @@ -4170,9 +5224,11 @@ export const allMessages = { ko: "--연결 확인--", ru: "--Проверка подключения--", zh: "--连接检查--", + "zh-tw": "--連線檢查--", }, "obsidianLiveSyncSettingTab.msgConnectionProxyNote": { def: "If you're having trouble with the Connection-check (even after checking config), please check your reverse proxy configuration.", + de: "Wenn Sie Probleme mit dem Verbindungs-Check haben (auch nach der Prüfung config), überprüfen Sie bitte Ihre umgekehrte Proxy-Konfiguration.", 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.", he: "אם אתה נתקל בבעיות עם בדיקת החיבור (גם לאחר בדיקת התצורה), אנא בדוק את הגדרות ה-reverse proxy שלך.", @@ -4180,19 +5236,23 @@ export const allMessages = { ko: "구성 확인 후에도 연결 확인에 문제가 있는 경우, 리버스 프록시 구성을 확인해 주세요.", ru: "Если у вас проблемы с проверкой подключения, проверьте конфигурацию обратного прокси.", zh: "如果您在连接检查时遇到问题(即使检查了配置后),请检查您的反向代理配置", + "zh-tw": "如果您在連線檢查時遇到問題(即使檢查了配置後),請檢查您的反向代理配置", }, "obsidianLiveSyncSettingTab.msgCurrentOrigin": { def: "Current origin: ${origin}", - es: "Origen actual: {origin}", + de: "Aktueller Ursprung: ${origin}", + es: "Origen actual: ${origin}", fr: "Origine actuelle : ${origin}", he: "מקור נוכחי: ${origin}", ja: "現在のオリジン: ${origin}", - ko: "현재 원점: {origin}", - ru: "Текущий origin: origin", - zh: "当前源: {origin}", + ko: "현재 원점: ${origin}", + ru: "Текущий origin: ${origin}", + zh: "当前 origin: ${origin}", + "zh-tw": "目前 origin: ${origin}", }, "obsidianLiveSyncSettingTab.msgDiscardConfirmation": { def: "Do you really want to discard existing settings and databases?", + de: "Möchten Sie wirklich bestehende Einstellungen und Datenbanken verwerfen?", es: "¿Realmente deseas descartar las configuraciones y bases de datos existentes?", fr: "Voulez-vous vraiment abandonner les paramètres et bases existants ?", he: "האם אתה בטוח שברצונך לבטל הגדרות ומסדי נתונים קיימים?", @@ -4200,9 +5260,11 @@ export const allMessages = { ko: "정말로 기존 설정과 데이터베이스를 삭제하시겠습니까?", ru: "Вы действительно хотите отменить существующие настройки и базы данных?", zh: "您真的要丢弃现有的设置和数据库吗?", + "zh-tw": "您真的要丟棄現有的設定和資料庫嗎?", }, "obsidianLiveSyncSettingTab.msgDone": { def: "--Done--", + de: "- Done...", es: "--Hecho--", fr: "--Terminé--", he: "--הסתיים--", @@ -4210,9 +5272,11 @@ export const allMessages = { ko: "--완료--", ru: "--Готово--", zh: "--完成--", + "zh-tw": "--完成--", }, "obsidianLiveSyncSettingTab.msgEnableCors": { def: "Set httpd.enable_cors", + de: "Setzen Sie httpd.enable cors", es: "Configurar httpd.enable_cors", fr: "Définir httpd.enable_cors", he: "הגדר httpd.enable_cors", @@ -4220,17 +5284,23 @@ export const allMessages = { ko: "httpd.enable_cors 설정", ru: "Установить httpd.enable_cors", zh: "设置 httpd.enable_cors", + "zh-tw": "設定 httpd.enable_cors", }, "obsidianLiveSyncSettingTab.msgEnableCorsChttpd": { def: "Set chttpd.enable_cors", + de: "chttpd.enable cors einstellen", + es: "Configurar chttpd.enable_cors", fr: "Définir chttpd.enable_cors", he: "הגדר chttpd.enable_cors", ja: "chttpd.enable_corsを設定", + ko: "cthttpd.enable_cors 설정", ru: "Установить chttpd.enable_cors", zh: "设置 chttpd.enable_cors", + "zh-tw": "設定 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?", + de: "Wir empfehlen, die End-To-End-Verschlüsselung und Path Obfuscation zu aktivieren. Sind Sie sicher, dass Sie ohne Verschlüsselung fortfahren wollen?", 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 ?", he: "אנו ממליצים להפעיל הצפנה מקצה לקצה ואת ערפול הנתיב. האם אתה בטוח שברצונך להמשיך ללא הצפנה?", @@ -4238,10 +5308,11 @@ export const allMessages = { ko: "종단간 암호화와 경로 난독화를 활성화하는 것을 권장합니다. 정말로 암호화 없이 계속하시겠습니까?", ru: "Мы рекомендуем включить сквозное шифрование. Вы уверены, что хотите продолжить без шифрования?", zh: "建议启用端到端加密和路径混淆。你确定要在未加密的情况下继续吗?", - "zh-tw": "我們建議啟用端對端加密與路徑混淆。你確定要在未加密的情況下繼續嗎?", + "zh-tw": "我們建議啟用端到端加密和路徑混淆。您確定要在沒有加密的情況下繼續嗎?", }, "obsidianLiveSyncSettingTab.msgFetchConfigFromRemote": { def: "Do you want to fetch the config from the remote server?", + de: "Möchten Sie den Config vom Remote Server holen?", es: "¿Quieres obtener la configuración del servidor remoto?", fr: "Voulez-vous récupérer la configuration depuis le serveur distant ?", he: "האם ברצונך למשוך את התצורה מהשרת המרוחד?", @@ -4249,10 +5320,11 @@ export const allMessages = { ko: "원격 서버에서 구성을 가져오시겠습니까?", ru: "Вы хотите загрузить конфигурацию с удалённого сервера?", zh: "要从远端服务器获取配置吗?", - "zh-tw": "要從遠端伺服器抓取設定嗎?", + "zh-tw": "您想從遠端伺服器獲取配置嗎?", }, "obsidianLiveSyncSettingTab.msgGenerateSetupURI": { def: "All done! Do you want to generate a setup URI to set up other devices?", + de: "Alles erledigt! Möchten Sie eine Setup-URI erstellen, um andere Geräte einzurichten?", 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 ?", he: "הכל מוכן! האם ברצונך לייצר Setup URI להגדרת מכשירים אחרים?", @@ -4260,10 +5332,11 @@ export const allMessages = { ko: "모든 작업이 완료되었습니다! 다른 기기를 설정하기 위해 Setup URI를 생성하시겠습니까?", ru: "Всё готово! Вы хотите сгенерировать Setup URI для настройки других устройств?", zh: "全部完成!要生成设置 URI 以便配置其他设备吗?", - "zh-tw": "全部完成!要產生 Setup URI 以便設定其他裝置嗎?", + "zh-tw": "全部完成!您想生成一個設定 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.", + de: "Wenn die Serverkonfiguration nicht persistent ist (z.B. auf dem Docker ausgeführt), können sich die Werte hier ändern. Sobald Sie eine Verbindung herstellen können, aktualisieren Sie bitte die Einstellungen in der local.ini des Servers.", 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.", he: "אם תצורת השרת אינה קבועה (למשל, פועלת ב-docker), הערכים כאן עשויים להשתנות. לאחר שתצליח להתחבר, אנא עדכן את ההגדרות ב-local.ini של השרת.", @@ -4271,9 +5344,12 @@ export const allMessages = { ko: "서버 설정이 영구적으로 저장되지 않는 환경(예: Docker에서 실행 중)에서는 이곳의 값들이 변경될 수 있습니다. 연결이 가능해지면 서버의 local.ini 파일에서 설정을 수동으로 업데이트해 주세요.", ru: "Если конфигурация сервера непостоянна, значения здесь могут измениться.", zh: "如果服务器配置不是持久的(例如,在 docker 上运行),此处的值可能会更改。一旦能够连接,请更新服务器 local.ini 中的设置", + "zh-tw": + "如果伺服器配置不是持久的(例如,在 docker 上執行),此處的值可能會更改。一旦能夠連線,請更新伺服器 local.ini 中的設定", }, "obsidianLiveSyncSettingTab.msgInvalidPassphrase": { def: "Your encryption passphrase might be invalid. Are you sure you want to continue?", + de: "Ihre Verschlüsselungspassphrase könnte ungültig sein. Bist du sicher, dass du weitermachen willst?", 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 ?", he: "ביטוי הסיסמה להצפנה שלך עשוי להיות לא תקין. האם אתה בטוח שברצונך להמשיך?", @@ -4281,20 +5357,23 @@ export const allMessages = { ko: "암호화 패스프레이즈가 유효하지 않을 수 있습니다. 정말로 계속하시겠습니까?", ru: "Ваша парольная фраза шифрования может быть недействительна.", zh: "你的加密密码短语可能无效。你确定要继续吗?", - "zh-tw": "你的加密密語可能無效。你確定要繼續嗎?", + "zh-tw": "您的加密密碼可能無效。您確定要繼續嗎?", }, "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.", + de: "Hier wegen einer Upgrade-Benachrichtigung? Bitte prüfe den Versionsverlauf. Wenn alles in Ordnung ist, klicke auf die Schaltfläche. Normalerweise wirst du nur einmal benachrichtigt.", + es: "¿Llegaste aquí por una notificación de actualización? Revisa el historial de versiones. Si todo está bien, haz clic en el botón. Normalmente solo se notifica una vez.", 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.", he: "הגעת כאן בשל הודעת שדרוג? אנא עיין בהיסטוריית הגרסאות. אם אתה מרוצה, לחץ על הכפתור. עדכון חדש יציג זאת שוב.", ja: "アップグレード通知でここに来ましたか?バージョン履歴を確認してください。納得したらボタンをクリックしてください。新しい更新があると再度確認されます。", ko: "업그레이드 알림으로 여기에 오셨나요? 버전 기록을 검토해 주세요. 만족하신다면 버튼을 클릭하세요. 새로운 업데이트 시 다시 안내됩니다.", ru: "Вы пришли из-за уведомления об обновлении? Просмотрите историю версий.", zh: "因为升级通知来到这里?请查看版本历史。如果您满意,请点击按钮。新的更新将再次提示此信息", + "zh-tw": "因為升級通知來到這裡?請檢視版本歷史。如果您滿意,請點選按鈕。新的更新將再次提示此資訊", }, "obsidianLiveSyncSettingTab.msgNonHTTPSInfo": { def: "Configured as non-HTTPS URI. Be warned that this may not work on mobile devices.", + de: "Konfiguriert als nicht-HTTPS URI. Seien Sie gewarnt, dass dies nicht auf mobilen Geräten funktionieren kann.", 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.", he: "מוגדר כ-URI שאינו HTTPS. שים לב שהדבר עשוי שלא לפעול על מכשירים ניידים.", @@ -4302,9 +5381,11 @@ export const allMessages = { ko: "비 HTTPS URI로 구성되었습니다. 모바일 기기에서는 작동하지 않을 수 있으니 주의하세요.", ru: "Настроено как не-HTTPS URI. Это может не работать на мобильных устройствах.", zh: "配置为非 HTTPS URI。请注意,这可能在移动设备上无法工作", + "zh-tw": "配置為非 HTTPS URI。請注意,這可能在移動裝置上無法工作", }, "obsidianLiveSyncSettingTab.msgNonHTTPSWarning": { def: "Cannot connect to non-HTTPS URI. Please update your config and try again.", + de: "Kann nicht mit nicht-HTTPS URI verbinden. Bitte aktualisieren Sie Ihre config und versuchen Sie es erneut.", 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.", he: "לא ניתן להתחבר ל-URI שאינו HTTPS. אנא עדכן את התצורה ונסה שוב.", @@ -4312,9 +5393,11 @@ export const allMessages = { ko: "비 HTTPS URI에 연결할 수 없습니다. 구성을 업데이트하고 다시 시도해 주세요.", ru: "Не удаётся подключиться к не-HTTPS URI. Обновите конфигурацию.", zh: "无法连接到非 HTTPS URI。请更新您的配置并重试", + "zh-tw": "無法連線到非 HTTPS URI。請更新您的配置並重試", }, "obsidianLiveSyncSettingTab.msgNotice": { def: "---Notice---", + de: "-------", es: "---Aviso---", fr: "---Avis---", he: "---הודעה---", @@ -4322,9 +5405,11 @@ export const allMessages = { ko: "---공지사항---", ru: "---Уведомление---", zh: "---注意---", + "zh-tw": "---注意---", }, "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.", + de: "WARNING: Diese Funktion ist ein Work In Progress, also beachten Sie bitte Folgendes:\n- Nur Architektur anhängen. Um den Speicher zu schrumpfen, ist ein Rebuild erforderlich.\n- Etwas zerbrechlich.\n- Beim ersten Synchronisieren wird die gesamte Geschichte aus der Ferne übertragen. Achten Sie auf Datenkappen und langsame Geschwindigkeiten.\n- Nur Unterschiede werden live synchronisiert.\n\nWenn Sie in irgendwelche Probleme laufen oder Ideen über diese Funktion haben, erstellen Sie bitte ein Thema auf GitHub.\nIch schätze Sie für Ihre große Hingabe.", 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.", he: "אזהרה: תכונה זו בשלב פיתוח, לכן שים לב לנקודות הבאות:\n- ארכיטקטורת הוספה בלבד. נדרשת בנייה מחדש לצמצום האחסון.\n- קצת רגיש.\n- בסנכרון הראשון, כל ההיסטוריה תועבר מהשרת המרוחד. שים לב למגבלות נתונים ומהירות.\n- רק הפרשים מסונכרנים בזמן אמת.\n\nאם נתקלת בבעיות, או שיש לך רעיונות לגבי תכונה זו, אנא פתח Issue ב-GitHub.\nאנחנו מעריכים את ההקדשה הגדולה שלך.", @@ -4332,29 +5417,37 @@ export const allMessages = { ko: "⚠️ 주의: 이 기능은 아직 개발 중(WIP)입니다. 다음 사항을 유의해 주세요:\n- 추가 전용 구조(append-only)로 동작합니다. 저장 용량을 줄이려면 데이터 재구성이 필요합니다.\n- 기능이 다소 불안정할 수 있습니다.\n- 최초 동기화 시, 전체 히스토리가 원격 서버에서 전송됩니다. 데이터 용량 제한 및 느린 속도에 유의해 주세요.\n- 실시간 동기화는 변경된 부분만 처리됩니다.\n\n문제가 발생했거나 개선 아이디어가 있으시면 GitHub에 이슈를 등록해 주세요.\n기여에 깊이 감사드립니다.", ru: "ПРЕДУПРЕЖДЕНИЕ: Эта функция в разработке.", zh: "警告:此功能仍在开发中,请注意以下几点:\n- 仅追加架构。需要重建才能缩小存储空间。\n- 有点脆弱。\n- 首次同步时,所有历史记录将从远程传输。注意数据上限和慢速。\n- 只有差异会实时同步。\n\n如果您遇到任何问题,或对此功能有任何想法,请在 GitHub 上创建 issue。\n感谢您的巨大贡献", + "zh-tw": + "警告:此功能仍在開發中,請注意以下幾點:\n- 僅追加架構。需要重建才能縮小儲存空間。\n- 有點脆弱。\n- 首次同步時,所有歷史記錄將從遠端傳輸。注意資料上限和慢速。\n- 只有差異會實時同步。\n\n如果您遇到任何問題,或對此功能有任何想法,請在 GitHub 上建立 issue。\n感謝您的巨大貢獻", }, "obsidianLiveSyncSettingTab.msgOriginCheck": { def: "Origin check: ${org}", - es: "Verificación de origen: {org}", + de: "Herkunftsprüfung: ${org}", + es: "Comprobación de origen: ${org}", fr: "Vérification d'origine : ${org}", he: "בדיקת מקור: ${org}", ja: "オリジン確認: ${org}", - ko: "원점 확인: {org}", - ru: "Проверка origin: org", - zh: "源检查: {org}", + ko: "원점 확인: ${org}", + ru: "Проверка origin: ${org}", + zh: "正在检查 origin: ${org}", + "zh-tw": "正在檢查 origin: ${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.", + de: "Zum Anwenden der Änderungen müssen die Datenbanken neu aufgebaut werden. Bitte wähle aus, wie die Änderungen angewendet werden sollen.\n\n
\nLegende\n\n| Symbol | Bedeutung |\n|: ------ :| ------- |\n| ⇔ | Aktuell |\n| ⇄ | Zum Ausgleichen synchronisieren |\n| ⇐,⇒ | Mit Überschreiben übertragen |\n| ⇠,⇢ | Von der anderen Seite mit Überschreiben übertragen |\n\n
\n\n## ${OPTION_REBUILD_BOTH}\nKurzfassung: 📄 ⇒¹ 💻 ⇒² 🛰️ ⇢ⁿ 💻 ⇄ⁿ⁺¹ 📄\nLokale und entfernte Datenbank mit den vorhandenen Dateien dieses Geräts neu aufbauen.\nDadurch werden andere Geräte ausgesperrt; sie müssen anschließend Daten abrufen.\n## ${OPTION_FETCH}\nKurzfassung: 📄 ⇄² 💻 ⇐¹ 🛰️ ⇔ 💻 ⇔ 📄\nDie lokale Datenbank initialisieren und mit Daten aus der entfernten Datenbank neu aufbauen.\nDies umfasst auch den Fall, dass die entfernte Datenbank bereits neu aufgebaut wurde.\n## ${OPTION_ONLY_SETTING}\nNur die Einstellungen speichern. **Achtung: Dies kann zu Datenbeschädigung führen**; normalerweise ist ein Neuaufbau der Datenbank erforderlich.", 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.", he: "נדרשת בנייה מחדש של מסדי הנתונים כדי להחיל את השינויים. אנא בחר את השיטה.\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שמור רק את ההגדרות. **זהירות: עלול לגרום לפגיעה בנתונים**; בנייה מחדש של מסד הנתונים נדרשת בדרך כלל.", 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: "Требуется перестроение баз данных для применения изменений.", + ru: "Для применения изменений требуется перестроить базы данных. Выберите способ применения изменений.\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Сохранить только настройки. **Внимание: это может привести к повреждению данных**; обычно требуется перестройка базы данных.", 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仅存储设置。**注意:这可能导致数据损坏**;通常需要重建数据库", + "zh-tw": + "需要重建資料庫以應用更改。請選擇應用更改的方法。\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.", + de: "Bitte wählen Sie aus und wenden Sie alle Voreinstellungen an, um den Assistenten abzuschließen.", 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.", he: "אנא בחר והחל פריט קבוע מראש כלשהו להשלמת האשף.", @@ -4362,10 +5455,11 @@ export const allMessages = { ko: "마법사를 완료하려면 프리셋 항목을 선택하고 적용해 주세요.", ru: "Выберите и примените любой пресет для завершения мастера.", zh: "请选择并应用任一预设项以完成向导。", - "zh-tw": "請選擇並套用任一預設項目以完成精靈。", + "zh-tw": "請選擇並應用任何預設項以完成嚮導", }, "obsidianLiveSyncSettingTab.msgSetCorsCredentials": { def: "Set cors.credentials", + de: "cors.credentials setzen", es: "Configurar cors.credentials", fr: "Définir cors.credentials", he: "הגדר cors.credentials", @@ -4373,9 +5467,11 @@ export const allMessages = { ko: "cors.credentials 설정", ru: "Установить cors.credentials", zh: "设置 cors.credentials", + "zh-tw": "設定 cors.credentials", }, "obsidianLiveSyncSettingTab.msgSetCorsOrigins": { def: "Set cors.origins", + de: "cors.origins setzen", es: "Configurar cors.origins", fr: "Définir cors.origins", he: "הגדר cors.origins", @@ -4383,9 +5479,11 @@ export const allMessages = { ko: "cors.origins 설정", ru: "Установить cors.origins", zh: "设置 cors.origins", + "zh-tw": "設定 cors.origins", }, "obsidianLiveSyncSettingTab.msgSetMaxDocSize": { def: "Set couchdb.max_document_size", + de: "Set Couchdb.max document size", es: "Configurar couchdb.max_document_size", fr: "Définir couchdb.max_document_size", he: "הגדר couchdb.max_document_size", @@ -4393,9 +5491,11 @@ export const allMessages = { ko: "couchdb.max_document_size 설정", ru: "Установить couchdb.max_document_size", zh: "设置 couchdb.max_document_size", + "zh-tw": "設定 couchdb.max_document_size", }, "obsidianLiveSyncSettingTab.msgSetMaxRequestSize": { def: "Set chttpd.max_http_request_size", + de: "chttpd.max http request size", es: "Configurar chttpd.max_http_request_size", fr: "Définir chttpd.max_http_request_size", he: "הגדר chttpd.max_http_request_size", @@ -4403,9 +5503,11 @@ export const allMessages = { ko: "chttpd.max_http_request_size 설정", ru: "Установить chttpd.max_http_request_size", zh: "设置 chttpd.max_http_request_size", + "zh-tw": "設定 chttpd.max_http_request_size", }, "obsidianLiveSyncSettingTab.msgSetRequireValidUser": { def: "Set chttpd.require_valid_user = true", + de: "chttpd.require valid user = true", es: "Configurar chttpd.require_valid_user = true", fr: "Définir chttpd.require_valid_user = true", he: "הגדר chttpd.require_valid_user = true", @@ -4413,9 +5515,11 @@ export const allMessages = { ko: "chttpd.require_valid_user = true로 설정", ru: "Установить chttpd.require_valid_user = true", zh: "设置 chttpd.require_valid_user = true", + "zh-tw": "設定 chttpd.require_valid_user = true", }, "obsidianLiveSyncSettingTab.msgSetRequireValidUserAuth": { def: "Set chttpd_auth.require_valid_user = true", + de: "chttpd auth.require valid user = true", es: "Configurar chttpd_auth.require_valid_user = true", fr: "Définir chttpd_auth.require_valid_user = true", he: "הגדר chttpd_auth.require_valid_user = true", @@ -4423,19 +5527,23 @@ export const allMessages = { ko: "chttpd_auth.require_valid_user = true로 설정", ru: "Установить chttpd_auth.require_valid_user = true", zh: "设置 chttpd_auth.require_valid_user = true", + "zh-tw": "設定 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.', + de: 'Die Einstellung "${setting}" wurde auf einem anderen Gerät geändert. Klicke {HERE}, um die Einstellungen neu zu laden. Klicke erneut auf denselben Wert, um ihn zu überschreiben.', 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.", he: 'ההגדרה "${setting}" שונתה ממכשיר אחר. לחץ על {HERE} לטעינה מחדש של ההגדרות. לחץ במקום אחר להתעלמות מהשינויים.', ja: '設定"${setting}"が別のデバイスから変更されました。{HERE}をクリックして設定を再読み込みしてください。変更を無視するには他の場所をクリックしてください。', ko: '"${setting}" 설정이 다른 기기에서 수정되었습니다. 설정을 다시 로드하려면 {HERE}를 클릭하세요. 변경사항을 무시하려면 다른 곳을 클릭하세요.', - ru: "Настройка setting была изменена с другого устройства.", + ru: 'Настройка "${setting}" была изменена с другого устройства. Нажмите {HERE}, чтобы перезагрузить настройки. Нажмите в другом месте, чтобы игнорировать изменения.', zh: '设置 "${setting}" 已从另一台设备修改。点击 {HERE} 重新加载设置。点击其他地方忽略更改', + "zh-tw": '設定 "${setting}" 已從另一臺裝置修改。點選 {HERE} 重新載入設定。點選其他地方忽略更改', }, "obsidianLiveSyncSettingTab.msgSettingsUnchangeableDuringSync": { def: 'These settings are unable to be changed during synchronization. Please disable all syncing in the "Sync Settings" to unlock.', + de: 'Diese Einstellungen können während der Synchronisation nicht geändert werden. Bitte deaktivieren Sie alle Synchronisationen in den "Sync Settings", um zu entsperren.', 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.", he: 'הגדרות אלה אינן ניתנות לשינוי במהלך סנכרון. אנא נטרל את כל הסנכרון ב"הגדרות סנכרון" כדי לבטל נעילה.', @@ -4443,9 +5551,11 @@ export const allMessages = { ko: '동기화 중에는 이 설정들을 변경할 수 없습니다. 잠금을 해제하려면 "동기화 설정"에서 모든 동기화를 비활성화해 주세요.', ru: "Эти настройки нельзя изменить во время синхронизации.", zh: "这些设置在同步期间无法更改。请在“同步设置”中禁用所有同步以解锁", + "zh-tw": "這些設定在同步期間無法更改。請在“同步設定”中禁用所有同步以解鎖", }, "obsidianLiveSyncSettingTab.msgSetWwwAuth": { def: "Set httpd.WWW-Authenticate", + de: "Setzen Sie httpd. WWW-Authenticate", es: "Configurar httpd.WWW-Authenticate", fr: "Définir httpd.WWW-Authenticate", he: "הגדר httpd.WWW-Authenticate", @@ -4453,9 +5563,11 @@ export const allMessages = { ko: "httpd.WWW-Authenticate 설정", ru: "Установить httpd.WWW-Authenticate", zh: "设置 httpd.WWW-Authenticate", + "zh-tw": "設定 httpd.WWW-Authenticate", }, "obsidianLiveSyncSettingTab.nameApplySettings": { def: "Apply Settings", + de: "Einstellungen anwenden", es: "Aplicar configuraciones", fr: "Appliquer les paramètres", he: "החל הגדרות", @@ -4463,9 +5575,11 @@ export const allMessages = { ko: "설정 적용", ru: "Применить настройки", zh: "应用设置", + "zh-tw": "應用設定", }, "obsidianLiveSyncSettingTab.nameConnectSetupURI": { def: "Connect with Setup URI", + de: "Verbinden mit Setup-URI", es: "Conectar con URI de configuración", fr: "Se connecter avec une URI de configuration", he: "התחבר עם Setup URI", @@ -4473,9 +5587,11 @@ export const allMessages = { ko: "Setup URI로 연결", ru: "Подключиться через Setup URI", zh: "使用设置 URI 连接", + "zh-tw": "使用設定 URI 連線", }, "obsidianLiveSyncSettingTab.nameCopySetupURI": { def: "Copy the current settings to a Setup URI", + de: "Kopieren Sie die aktuellen Einstellungen auf ein 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", he: "העתק הגדרות נוכחיות ל-Setup URI", @@ -4483,9 +5599,11 @@ export const allMessages = { ko: "현재 설정을 Setup URI로 복사", ru: "Копировать текущие настройки в Setup URI", zh: "将当前设置复制为设置 URI", + "zh-tw": "將當前設定複製為設定 URI", }, "obsidianLiveSyncSettingTab.nameDisableHiddenFileSync": { def: "Disable Hidden files sync", + de: "Verschlüsselte Dateien synchronisieren", es: "Desactivar sincronización de archivos ocultos", fr: "Désactiver la synchronisation des fichiers cachés", he: "נטרל סנכרון קבצים נסתרים", @@ -4493,10 +5611,11 @@ export const allMessages = { ko: "숨김 파일 동기화 비활성화", ru: "Отключить синхронизацию скрытых файлов", zh: "禁用隐藏文件同步", - "zh-tw": "停用隱藏檔案同步", + "zh-tw": "禁用隱藏檔案同步", }, "obsidianLiveSyncSettingTab.nameDiscardSettings": { def: "Discard existing settings and databases", + de: "vorhandene Einstellungen und Datenbanken deaktivieren", es: "Descartar configuraciones y bases de datos existentes", fr: "Abandonner les paramètres et bases existants", he: "בטל הגדרות ומסדי נתונים קיימים", @@ -4504,9 +5623,11 @@ export const allMessages = { ko: "기존 설정 및 데이터베이스 삭제", ru: "Отменить существующие настройки и базы данных", zh: "丢弃现有设置和数据库", + "zh-tw": "丟棄現有設定和資料庫", }, "obsidianLiveSyncSettingTab.nameEnableHiddenFileSync": { def: "Enable Hidden files sync", + de: "Versteckte Dateien synchronisieren", es: "Activar sincronización de archivos ocultos", fr: "Activer la synchronisation des fichiers cachés", he: "הפעל סנכרון קבצים נסתרים", @@ -4518,6 +5639,7 @@ export const allMessages = { }, "obsidianLiveSyncSettingTab.nameEnableLiveSync": { def: "Enable LiveSync", + de: "LiveSync aktivieren", es: "Activar LiveSync", fr: "Activer LiveSync", he: "הפעל LiveSync", @@ -4525,9 +5647,11 @@ export const allMessages = { ko: "LiveSync 활성화", ru: "Включить LiveSync", zh: "启用 LiveSync", + "zh-tw": "啟用 LiveSync", }, "obsidianLiveSyncSettingTab.nameHiddenFileSynchronization": { def: "Hidden file synchronization", + de: "Versteckte Dateisynchronisation", es: "Sincronización de archivos ocultos", fr: "Synchronisation des fichiers cachés", he: "סנכרון קבצים נסתרים", @@ -4539,6 +5663,7 @@ export const allMessages = { }, "obsidianLiveSyncSettingTab.nameManualSetup": { def: "Manual Setup", + de: "Manuell Setup", es: "Configuración manual", fr: "Configuration manuelle", he: "הגדרה ידנית", @@ -4546,9 +5671,11 @@ export const allMessages = { ko: "수동 설정", ru: "Ручная настройка", zh: "手动设置", + "zh-tw": "手動設定", }, "obsidianLiveSyncSettingTab.nameTestConnection": { def: "Test Connection", + de: "Testanschluss", es: "Probar conexión", fr: "Tester la connexion", he: "בדוק חיבור", @@ -4556,9 +5683,11 @@ export const allMessages = { ko: "연결 테스트", ru: "Тест подключения", zh: "测试连接", + "zh-tw": "測試連線", }, "obsidianLiveSyncSettingTab.nameTestDatabaseConnection": { def: "Test Database Connection", + de: "Prüfdatenbankanschluss", es: "Probar Conexión de Base de Datos", fr: "Tester la connexion à la base de données", he: "בדוק חיבור למסד נתונים", @@ -4566,9 +5695,11 @@ export const allMessages = { ko: "데이터베이스 연결 테스트", ru: "Тест подключения к базе данных", zh: "测试数据库连接", + "zh-tw": "測試資料庫連線", }, "obsidianLiveSyncSettingTab.nameValidateDatabaseConfig": { def: "Validate Database Configuration", + de: "Validierung der Datenbankkonfiguration", es: "Validar Configuración de la Base de Datos", fr: "Valider la configuration de la base de données", he: "אמת תצורת מסד נתונים", @@ -4576,9 +5707,11 @@ export const allMessages = { ko: "데이터베이스 구성 검증", ru: "Проверить конфигурацию базы данных", zh: "验证数据库配置", + "zh-tw": "驗證資料庫配置", }, "obsidianLiveSyncSettingTab.okAdminPrivileges": { def: "✔ You have administrator privileges.", + de: "✔ Sie haben Administratorrechte.", es: "✔ Tienes privilegios de administrador.", fr: "✔ Vous disposez des privilèges administrateur.", he: "✔ יש לך הרשאות מנהל.", @@ -4586,9 +5719,11 @@ export const allMessages = { ko: "✔ 관리자 권한이 있습니다.", ru: "✔ У вас есть права администратора.", zh: "✔ 您拥有管理员权限", + "zh-tw": "✔ 您擁有管理員許可權", }, "obsidianLiveSyncSettingTab.okCorsCredentials": { def: "✔ cors.credentials is ok.", + de: "✔ cors.credentials ist ok.", es: "✔ cors.credentials está correcto.", fr: "✔ cors.credentials est correct.", he: "✔ cors.credentials תקין.", @@ -4596,9 +5731,11 @@ export const allMessages = { ko: "✔ cors.credentials가 정상입니다.", ru: "✔ cors.credentials в порядке.", zh: "✔ cors.credentials 设置正确", + "zh-tw": "✔ cors.credentials 設定正確", }, "obsidianLiveSyncSettingTab.okCorsCredentialsForOrigin": { def: "CORS credentials OK", + de: "CORS Anmeldeinformationen OK", es: "CORS credenciales OK", fr: "Identifiants CORS OK", he: "CORS credentials תקין", @@ -4606,9 +5743,11 @@ export const allMessages = { ko: "CORS 자격 증명 정상", ru: "CORS учётные данные в порядке", zh: "CORS 凭据正常", + "zh-tw": "CORS 憑據正常", }, "obsidianLiveSyncSettingTab.okCorsOriginMatched": { def: "✔ CORS origin OK", + de: "✔ CORS Ursprung OK", es: "✔ Origen de CORS correcto", fr: "✔ Origine CORS OK", he: "✔ CORS origin תקין", @@ -4616,9 +5755,11 @@ export const allMessages = { ko: "✔ CORS 원점 정상", ru: "✔ CORS origin в порядке", zh: "✔ CORS 源正常", + "zh-tw": "✔ CORS 源正常", }, "obsidianLiveSyncSettingTab.okCorsOrigins": { def: "✔ cors.origins is ok.", + de: "✔ cors.origins ist ok.", es: "✔ cors.origins está correcto.", fr: "✔ cors.origins est correct.", he: "✔ cors.origins תקין.", @@ -4626,9 +5767,11 @@ export const allMessages = { ko: "✔ cors.origins가 정상입니다.", ru: "✔ cors.origins в порядке.", zh: "✔ cors.origins 设置正确", + "zh-tw": "✔ cors.origins 設定正確", }, "obsidianLiveSyncSettingTab.okEnableCors": { def: "✔ httpd.enable_cors is ok.", + de: "✔ httpd.enable cors ist ok.", es: "✔ httpd.enable_cors está correcto.", fr: "✔ httpd.enable_cors est correct.", he: "✔ httpd.enable_cors תקין.", @@ -4636,17 +5779,23 @@ export const allMessages = { ko: "✔ httpd.enable_cors가 정상입니다.", ru: "✔ httpd.enable_cors в порядке.", zh: "✔ httpd.enable_cors 设置正确", + "zh-tw": "✔ httpd.enable_cors 設定正確", }, "obsidianLiveSyncSettingTab.okEnableCorsChttpd": { def: "✔ chttpd.enable_cors is ok.", + de: "✔ chttpd.enable cors ist ok.", + es: "✔ chttpd.enable_cors está correcto.", fr: "✔ chttpd.enable_cors est correct.", he: "✔ chttpd.enable_cors תקין.", ja: "✔ chttpd.enable_corsは正常です。", + ko: "✔ chttpd.enable_cors가 정상입니다.", ru: "✔ chttpd.enable_cors в порядке.", - zh: "✔ chttpd.enable_cors is ok.", + zh: "✔ chttpd.enable_cors 已就绪。", + "zh-tw": "✔ chttpd.enable_cors 已就緒。", }, "obsidianLiveSyncSettingTab.okMaxDocumentSize": { def: "✔ couchdb.max_document_size is ok.", + de: "✔ codb.max document size ist ok.", es: "✔ couchdb.max_document_size está correcto.", fr: "✔ couchdb.max_document_size est correct.", he: "✔ couchdb.max_document_size תקין.", @@ -4654,9 +5803,11 @@ export const allMessages = { ko: "✔ couchdb.max_document_size가 정상입니다.", ru: "✔ couchdb.max_document_size в порядке.", zh: "✔ couchdb.max_document_size 设置正确", + "zh-tw": "✔ couchdb.max_document_size 設定正確", }, "obsidianLiveSyncSettingTab.okMaxRequestSize": { def: "✔ chttpd.max_http_request_size is ok.", + de: "✔ chttpd.max http request size ist ok.", es: "✔ chttpd.max_http_request_size está correcto.", fr: "✔ chttpd.max_http_request_size est correct.", he: "✔ chttpd.max_http_request_size תקין.", @@ -4664,9 +5815,11 @@ export const allMessages = { ko: "✔ chttpd.max_http_request_size가 정상입니다.", ru: "✔ chttpd.max_http_request_size в порядке.", zh: "✔ chttpd.max_http_request_size 设置正确", + "zh-tw": "✔ chttpd.max_http_request_size 設定正確", }, "obsidianLiveSyncSettingTab.okRequireValidUser": { def: "✔ chttpd.require_valid_user is ok.", + de: "✔ chttpd.require valid user ist ok.", es: "✔ chttpd.require_valid_user está correcto.", fr: "✔ chttpd.require_valid_user est correct.", he: "✔ chttpd.require_valid_user תקין.", @@ -4674,9 +5827,11 @@ export const allMessages = { ko: "✔ chttpd.require_valid_user가 정상입니다.", ru: "✔ chttpd.require_valid_user в порядке.", zh: "✔ chttpd.require_valid_user 设置正确", + "zh-tw": "✔ chttpd.require_valid_user 設定正確", }, "obsidianLiveSyncSettingTab.okRequireValidUserAuth": { def: "✔ chttpd_auth.require_valid_user is ok.", + de: "✔ chttpd auth.require valid user ist ok.", es: "✔ chttpd_auth.require_valid_user está correcto.", fr: "✔ chttpd_auth.require_valid_user est correct.", he: "✔ chttpd_auth.require_valid_user תקין.", @@ -4684,9 +5839,11 @@ export const allMessages = { ko: "✔ chttpd_auth.require_valid_user가 정상입니다.", ru: "✔ chttpd_auth.require_valid_user в порядке.", zh: "✔ chttpd_auth.require_valid_user 设置正确", + "zh-tw": "✔ chttpd_auth.require_valid_user 設定正確", }, "obsidianLiveSyncSettingTab.okWwwAuth": { def: "✔ httpd.WWW-Authenticate is ok.", + de: "✔ httpd. WWW-Authenticate ist ok.", es: "✔ httpd.WWW-Authenticate está correcto.", fr: "✔ httpd.WWW-Authenticate est correct.", he: "✔ httpd.WWW-Authenticate תקין.", @@ -4694,9 +5851,11 @@ export const allMessages = { ko: "✔ httpd.WWW-Authenticate가 정상입니다.", ru: "✔ httpd.WWW-Authenticate в порядке.", zh: "✔ httpd.WWW-Authenticate 设置正确", + "zh-tw": "✔ httpd.WWW-Authenticate 設定正確", }, "obsidianLiveSyncSettingTab.optionApply": { def: "Apply", + de: "Anwendung", es: "Aplicar", fr: "Appliquer", he: "החל", @@ -4704,9 +5863,11 @@ export const allMessages = { ko: "적용", ru: "Применить", zh: "应用", + "zh-tw": "應用", }, "obsidianLiveSyncSettingTab.optionCancel": { def: "Cancel", + de: "Abbrechen", es: "Cancelar", fr: "Annuler", he: "ביטול", @@ -4714,19 +5875,23 @@ export const allMessages = { ko: "취소", ru: "Отмена", zh: "取消", + "zh-tw": "取消", }, "obsidianLiveSyncSettingTab.optionCouchDB": { def: "CouchDB", - es: "CouchDB", + de: "CouchDB", + es: "Servidor CouchDB", fr: "CouchDB", he: "CouchDB", - ja: "CouchDB", - ko: "CouchDB", - ru: "CouchDB", + ja: "CouchDB サーバー", + ko: "CouchDB 서버", + ru: "Сервер CouchDB", zh: "CouchDB", + "zh-tw": "CouchDB", }, "obsidianLiveSyncSettingTab.optionDisableAllAutomatic": { def: "Disable all automatic", + de: "Alle Automatik deaktivieren", es: "Desactivar lo automático", fr: "Désactiver toute automatisation", he: "נטרל את כל האוטומטי", @@ -4734,10 +5899,11 @@ export const allMessages = { ko: "모든 자동 비활성화", ru: "Отключить всё автоматическое", zh: "禁用所有自动同步", - "zh-tw": "停用所有自動同步", + "zh-tw": "禁用所有自動同步", }, "obsidianLiveSyncSettingTab.optionFetchFromRemote": { def: "Fetch from Remote", + de: "Fetch von Remote", es: "Obtener del remoto", fr: "Récupérer depuis le distant", he: "משוך מהשרת המרוחד", @@ -4745,9 +5911,11 @@ export const allMessages = { ko: "원격에서 가져오기", ru: "Загрузить с удалённого", zh: "从远程获取", + "zh-tw": "從遠端獲取", }, "obsidianLiveSyncSettingTab.optionHere": { def: "HERE", + de: "HIER", es: "AQUÍ", fr: "ICI", he: "כאן", @@ -4755,9 +5923,11 @@ export const allMessages = { ko: "여기", ru: "ЗДЕСЬ", zh: "这里", + "zh-tw": "這裡", }, "obsidianLiveSyncSettingTab.optionLiveSync": { def: "LiveSync", + de: "LiveSync", es: "Sincronización LiveSync", fr: "LiveSync", he: "LiveSync", @@ -4765,20 +5935,23 @@ export const allMessages = { ko: "LiveSync 동기화", ru: "Синхронизация LiveSync", zh: "LiveSync 同步", - "zh-tw": "LiveSync 同步", + "zh-tw": "LiveSync", }, "obsidianLiveSyncSettingTab.optionMinioS3R2": { def: "Minio,S3,R2", - es: "Minio,S3,R2", + de: "MinIO, S3, R2", + es: "MinIO, S3, R2", fr: "Minio, S3, R2", he: "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", + "zh-tw": "Minio, S3, R2", }, "obsidianLiveSyncSettingTab.optionOkReadEverything": { def: "OK, I have read everything.", + de: "Okay, ich habe alles gelesen.", es: "OK, he leído todo.", fr: "OK, j'ai tout lu.", he: "בסדר, קראתי הכל.", @@ -4786,9 +5959,11 @@ export const allMessages = { ko: "네, 모든 것을 읽었습니다.", ru: "ОК, я всё прочитал.", zh: "好的,我已经阅读了所有内容 ", + "zh-tw": "好的,我已經閱讀了所有內容 ", }, "obsidianLiveSyncSettingTab.optionOnEvents": { def: "On events", + de: "Auf Veranstaltungen", es: "En eventos", fr: "Sur événements", he: "על אירועים", @@ -4796,10 +5971,11 @@ export const allMessages = { ko: "이벤트 시", ru: "По событиям", zh: "事件触发时", - "zh-tw": "事件觸發時", + "zh-tw": "基於事件", }, "obsidianLiveSyncSettingTab.optionPeriodicAndEvents": { def: "Periodic and on events", + de: "Periodisch und auf Veranstaltungen", es: "Periódico y en eventos", fr: "Périodique et sur événements", he: "תקופתי ועל אירועים", @@ -4807,10 +5983,11 @@ export const allMessages = { ko: "주기적 및 이벤트 시", ru: "Периодически и по событиям", zh: "定期与事件触发", - "zh-tw": "定期與事件觸發", + "zh-tw": "定期和基於事件", }, "obsidianLiveSyncSettingTab.optionPeriodicWithBatch": { def: "Periodic w/ batch", + de: "Periodische W/ Batch", es: "Periódico con lote", fr: "Périodique avec lot", he: "תקופתי עם אצווה", @@ -4818,10 +5995,11 @@ export const allMessages = { ko: "주기적 w/ 일괄", ru: "Периодически с пакетами", zh: "定期(批处理)", - "zh-tw": "定期(批次)", + "zh-tw": "定期與批次", }, "obsidianLiveSyncSettingTab.optionRebuildBoth": { def: "Rebuild Both from This Device", + de: "Beides von diesem Gerät wieder aufbauen", es: "Reconstructuir ambos desde este dispositivo", fr: "Tout reconstruire depuis cet appareil", he: "בנה שניהם מחדש ממכשיר זה", @@ -4829,9 +6007,11 @@ export const allMessages = { ko: "이 기기에서 둘 다 재구축", ru: "Перестроить оба с этого устройства", zh: "从此设备重建两者", + "zh-tw": "從此裝置重建兩者", }, "obsidianLiveSyncSettingTab.optionSaveOnlySettings": { def: "(Danger) Save Only Settings", + de: "(Danger) Nur Einstellungen speichern", es: "(Peligro) Guardar solo configuración", fr: "(Danger) N'enregistrer que les paramètres", he: "(סכנה) שמור הגדרות בלבד", @@ -4839,9 +6019,11 @@ export const allMessages = { ko: "(위험) 설정만 저장", ru: "(Опасно) Сохранить только настройки", zh: "(危险)仅保存设置", + "zh-tw": "(危險)僅儲存設定", }, "obsidianLiveSyncSettingTab.panelChangeLog": { def: "Change Log", + de: "Änderung der Registrierung", es: "Registro de cambios", fr: "Journal des modifications", he: "יומן שינויים", @@ -4849,9 +6031,11 @@ export const allMessages = { ko: "변경 로그", ru: "История изменений", zh: "更新日志", + "zh-tw": "更新日誌", }, "obsidianLiveSyncSettingTab.panelGeneralSettings": { def: "General Settings", + de: "Allgemeine Einstellungen", es: "Configuraciones Generales", fr: "Paramètres généraux", he: "הגדרות כלליות", @@ -4859,9 +6043,11 @@ export const allMessages = { ko: "일반 설정", ru: "Основные настройки", zh: "常规设置", + "zh-tw": "常規設定", }, "obsidianLiveSyncSettingTab.panelPrivacyEncryption": { def: "Privacy & Encryption", + de: "Datenschutz und Verschlüsselung", es: "Privacidad y Cifrado", fr: "Confidentialité et chiffrement", he: "פרטיות והצפנה", @@ -4869,9 +6055,11 @@ export const allMessages = { ko: "개인정보 보호 및 암호화", ru: "Конфиденциальность и шифрование", zh: "隐私与加密", + "zh-tw": "隱私與加密", }, "obsidianLiveSyncSettingTab.panelRemoteConfiguration": { def: "Remote Configuration", + de: "Fernkonfiguration", es: "Configuración remota", fr: "Configuration distante", he: "תצורת שרת מרוחד", @@ -4879,9 +6067,11 @@ export const allMessages = { ko: "원격 구성", ru: "Удалённая конфигурация", zh: "远程配置", + "zh-tw": "遠端配置", }, "obsidianLiveSyncSettingTab.panelSetup": { def: "Setup", + de: "Einrichtung", es: "Configuración", fr: "Configuration", he: "הגדרה", @@ -4889,25 +6079,35 @@ export const allMessages = { ko: "설정", ru: "Настройка", zh: "设置", + "zh-tw": "設定", }, "obsidianLiveSyncSettingTab.serverVersion": { def: "Server info: ${info}", + de: "Server-Info: ${info}", + es: "Información del servidor: ${info}", fr: "Infos serveur : ${info}", he: "פרטי שרת: ${info}", ja: "サーバー情報: ${info}", - ru: "Информация о сервере: info", + ko: "서버 정보: ${info}", + ru: "Информация о сервере: ${info}", zh: "服务器信息: ${info}", + "zh-tw": "伺服器資訊: ${info}", }, "obsidianLiveSyncSettingTab.titleActiveRemoteServer": { def: "Active Remote Server", + de: "Aktiver Remote-Server", + es: "Servidor remoto activo", fr: "Serveur distant actif", he: "שרת מרוחד פעיל", ja: "アクティブなリモートサーバー", + ko: "활성 원격 서버", ru: "Активный удалённый сервер", zh: "活动远程服务器", + "zh-tw": "活動遠端伺服器", }, "obsidianLiveSyncSettingTab.titleAppearance": { def: "Appearance", + de: "Erscheinung", es: "Apariencia", fr: "Apparence", he: "מראה", @@ -4919,6 +6119,7 @@ export const allMessages = { }, "obsidianLiveSyncSettingTab.titleConflictResolution": { def: "Conflict resolution", + de: "Konfliktlösung", es: "Resolución de conflictos", fr: "Résolution des conflits", he: "פתרון קונפליקטים", @@ -4926,10 +6127,11 @@ export const allMessages = { ko: "충돌 해결", ru: "Разрешение конфликтов", zh: "冲突处理", - "zh-tw": "衝突處理", + "zh-tw": "衝突解決", }, "obsidianLiveSyncSettingTab.titleCongratulations": { def: "Congratulations!", + de: "Glückwunsch!", es: "¡Felicidades!", fr: "Félicitations !", he: "מזל טוב!", @@ -4941,6 +6143,7 @@ export const allMessages = { }, "obsidianLiveSyncSettingTab.titleCouchDB": { def: "CouchDB", + de: "CouchDB", es: "Servidor CouchDB", fr: "CouchDB", he: "CouchDB", @@ -4948,10 +6151,11 @@ export const allMessages = { ko: "CouchDB 서버", ru: "Сервер CouchDB", zh: "CouchDB 服务器", - "zh-tw": "CouchDB 伺服器", + "zh-tw": "CouchDB", }, "obsidianLiveSyncSettingTab.titleDeletionPropagation": { def: "Deletion Propagation", + de: "Auslieferungsersuchen", es: "Propagación de eliminación", fr: "Propagation des suppressions", he: "הפצת מחיקות", @@ -4963,6 +6167,7 @@ export const allMessages = { }, "obsidianLiveSyncSettingTab.titleEncryptionNotEnabled": { def: "Encryption is not enabled", + de: "Verschlüsselung ist nicht aktiviert", es: "El cifrado no está habilitado", fr: "Le chiffrement n'est pas activé", he: "ההצפנה אינה מופעלת", @@ -4970,10 +6175,11 @@ export const allMessages = { ko: "암호화가 활성화되지 않음", ru: "Шифрование не включено", zh: "尚未启用加密", - "zh-tw": "尚未啟用加密", + "zh-tw": "未啟用加密", }, "obsidianLiveSyncSettingTab.titleEncryptionPassphraseInvalid": { def: "Encryption Passphrase Invalid", + de: "Verschlüsselung Passphrase Invalid", es: "La frase de contraseña de cifrado es inválida", fr: "Phrase secrète de chiffrement invalide", he: "ביטוי סיסמה להצפנה לא תקין", @@ -4981,10 +6187,11 @@ export const allMessages = { ko: "암호화 패스프레이즈 유효하지 않음", ru: "Парольная фраза шифрования недействительна", zh: "加密密码短语无效", - "zh-tw": "加密密語無效", + "zh-tw": "加密密碼無效", }, "obsidianLiveSyncSettingTab.titleExtraFeatures": { def: "Enable extra and advanced features", + de: "Ermöglichen Sie zusätzliche und erweiterte Funktionen", es: "Habilitar funciones extras y avanzadas", fr: "Activer les fonctionnalités supplémentaires et avancées", he: "הפעל תכונות נוספות ומתקדמות", @@ -4992,9 +6199,11 @@ export const allMessages = { ko: "추가 및 고급 기능 활성화", ru: "Включить дополнительные и расширенные функции", zh: "启用额外和高级功能", + "zh-tw": "啟用額外和高階功能", }, "obsidianLiveSyncSettingTab.titleFetchConfig": { def: "Fetch Config", + de: "Konfiguration abrufen", es: "Obtener configuración", fr: "Récupérer la configuration", he: "משוך תצורה", @@ -5002,10 +6211,11 @@ export const allMessages = { ko: "구성 가져오기", ru: "Загрузить конфигурацию", zh: "获取配置", - "zh-tw": "抓取設定", + "zh-tw": "獲取配置", }, "obsidianLiveSyncSettingTab.titleFetchConfigFromRemote": { def: "Fetch config from remote server", + de: "Fetch config von Remote Server", es: "Obtener configuración del servidor remoto", fr: "Récupérer la configuration depuis le serveur distant", he: "משוך תצורה מהשרת המרוחד", @@ -5013,9 +6223,11 @@ export const allMessages = { ko: "원격 서버에서 구성 가져오기", ru: "Загрузить конфигурацию с удалённого сервера", zh: "从远程服务器获取配置", + "zh-tw": "從遠端伺服器獲取配置", }, "obsidianLiveSyncSettingTab.titleFetchSettings": { def: "Fetch Settings", + de: "Gebühreneinstellungen", es: "Obtener configuraciones", fr: "Récupérer les paramètres", he: "משוך הגדרות", @@ -5023,9 +6235,11 @@ export const allMessages = { ko: "설정 가져오기", ru: "Загрузить настройки", zh: "获取设置", + "zh-tw": "獲取設定", }, "obsidianLiveSyncSettingTab.titleHiddenFiles": { def: "Hidden Files", + de: "Versteckte Dateien", es: "Archivos ocultos", fr: "Fichiers cachés", he: "קבצים נסתרים", @@ -5037,6 +6251,7 @@ export const allMessages = { }, "obsidianLiveSyncSettingTab.titleLogging": { def: "Logging", + de: "Protokoll", es: "Registro", fr: "Journalisation", he: "רישום יומן", @@ -5044,10 +6259,11 @@ export const allMessages = { ko: "로깅", ru: "Логирование", zh: "日志", - "zh-tw": "記錄", + "zh-tw": "日誌記錄", }, "obsidianLiveSyncSettingTab.titleMinioS3R2": { def: "Minio,S3,R2", + de: "MinIO, S3, R2", es: "MinIO, S3, R2", fr: "Minio, S3, R2", he: "Minio,S3,R2", @@ -5055,10 +6271,11 @@ export const allMessages = { ko: "MinIO, S3, R2", ru: "MinIO, S3, R2", zh: "MinIO、S3、R2", - "zh-tw": "MinIO、S3、R2", + "zh-tw": "Minio, S3, R2", }, "obsidianLiveSyncSettingTab.titleNotification": { def: "Notification", + de: "Notifizierung", es: "Notificación", fr: "Notification", he: "התראה", @@ -5070,6 +6287,7 @@ export const allMessages = { }, "obsidianLiveSyncSettingTab.titleOnlineTips": { def: "Online Tips", + de: "Online Tipps", es: "Consejos en línea", fr: "Conseils en ligne", he: "טיפים אונליין", @@ -5077,9 +6295,11 @@ export const allMessages = { ko: "온라인 팁", ru: "Онлайн советы", zh: "在线提示", + "zh-tw": "線上提示", }, "obsidianLiveSyncSettingTab.titleQuickSetup": { def: "Quick Setup", + de: "Schnelleinrichtung", es: "Configuración rápida", fr: "Configuration rapide", he: "הגדרה מהירה", @@ -5087,9 +6307,11 @@ export const allMessages = { ko: "빠른 설정", ru: "Быстрая настройка", zh: "快速设置", + "zh-tw": "快速設定", }, "obsidianLiveSyncSettingTab.titleRebuildRequired": { def: "Rebuild Required", + de: "Rebuild erforderlich", es: "Reconstrucción necesaria", fr: "Reconstruction requise", he: "נדרשת בנייה מחדש", @@ -5097,9 +6319,11 @@ export const allMessages = { ko: "재구축 필요", ru: "Требуется перестроение", zh: "需要重建", + "zh-tw": "需要重建", }, "obsidianLiveSyncSettingTab.titleRemoteConfigCheckFailed": { def: "Remote Configuration Check Failed", + de: "Remote Configuration Check nicht verfügbar", es: "La verificación de configuración remota falló", fr: "Échec de la vérification de la configuration distante", he: "בדיקת תצורת שרת מרוחד נכשלה", @@ -5107,10 +6331,11 @@ export const allMessages = { ko: "원격 구성 확인 실패", ru: "Проверка удалённой конфигурации не удалась", zh: "远端配置检查失败", - "zh-tw": "遠端設定檢查失敗", + "zh-tw": "遠端配置檢查失敗", }, "obsidianLiveSyncSettingTab.titleRemoteServer": { def: "Remote Server", + de: "Remote-Server", es: "Servidor remoto", fr: "Serveur distant", he: "שרת מרוחד", @@ -5122,6 +6347,7 @@ export const allMessages = { }, "obsidianLiveSyncSettingTab.titleReset": { def: "Reset", + de: "Zurück zur Übersicht", es: "Reiniciar", fr: "Réinitialiser", he: "אתחול", @@ -5129,9 +6355,11 @@ export const allMessages = { ko: "리셋", ru: "Сброс", zh: "重置", + "zh-tw": "重置", }, "obsidianLiveSyncSettingTab.titleSetupOtherDevices": { def: "To setup other devices", + de: "Um andere Geräte einzurichten", es: "Para configurar otros dispositivos", fr: "Pour configurer d'autres appareils", he: "להגדרת מכשירים אחרים", @@ -5139,9 +6367,11 @@ export const allMessages = { ko: "다른 기기 설정", ru: "Для настройки других устройств", zh: "设置其他设备", + "zh-tw": "設定其他裝置", }, "obsidianLiveSyncSettingTab.titleSynchronizationMethod": { def: "Synchronization Method", + de: "Synchronisierungsmethode", es: "Método de sincronización", fr: "Méthode de synchronisation", he: "שיטת סנכרון", @@ -5149,10 +6379,11 @@ export const allMessages = { ko: "동기화 방법", ru: "Метод синхронизации", zh: "同步方式", - "zh-tw": "同步方式", + "zh-tw": "同步方法", }, "obsidianLiveSyncSettingTab.titleSynchronizationPreset": { def: "Synchronization Preset", + de: "Synchronisierung Preset", es: "Preestablecimiento de sincronización", fr: "Préréglage de synchronisation", he: "קבוע מראש לסנכרון", @@ -5164,6 +6395,7 @@ export const allMessages = { }, "obsidianLiveSyncSettingTab.titleSyncSettings": { def: "Sync Settings", + de: "Sync-Einstellungen", es: "Configuraciones de Sincronización", fr: "Paramètres de synchronisation", he: "הגדרות סנכרון", @@ -5171,9 +6403,11 @@ export const allMessages = { ko: "동기화 설정", ru: "Настройки синхронизации", zh: "同步设置", + "zh-tw": "同步設定", }, "obsidianLiveSyncSettingTab.titleSyncSettingsViaMarkdown": { def: "Sync Settings via Markdown", + de: "Sync-Einstellungen über Markdown", es: "Configuración de sincronización a través de Markdown", fr: "Synchroniser les paramètres via Markdown", he: "סנכרון הגדרות דרך Markdown", @@ -5185,6 +6419,7 @@ export const allMessages = { }, "obsidianLiveSyncSettingTab.titleUpdateThinning": { def: "Update Thinning", + de: "Ausdünnung aktualisieren", es: "Actualización de adelgazamiento", fr: "Lissage des mises à jour", he: "דילול עדכונים", @@ -5192,20 +6427,23 @@ export const allMessages = { ko: "업데이트 솎아내기", ru: "Оптимизация обновлений", zh: "更新精简", - "zh-tw": "更新精簡", + "zh-tw": "更新頻率限制", }, "obsidianLiveSyncSettingTab.warnCorsOriginUnmatched": { def: "⚠ CORS Origin is unmatched ${from}->${to}", - es: "⚠ El origen de CORS no coincide: {from}->{to}", + de: "⚠ CORS-Origin stimmt nicht überein ${from}->${to}", + es: "⚠ El origen CORS no coincide ${from}->${to}", fr: "⚠ L'origine CORS ne correspond pas ${from}->${to}", he: "⚠ CORS Origin אינו תואם ${from}->${to}", ja: "⚠ CORS Originが一致しません ${from}->${to}", - ko: "⚠ CORS 원점이 일치하지 않습니다 {from}->{to}", - ru: "⚠ CORS Origin не совпадает from->to", - zh: "⚠ CORS 源不匹配 {from}->{to}", + ko: "⚠ CORS 원점이 일치하지 않습니다 ${from}->${to}", + ru: "⚠ CORS Origin не совпадает ${from}->${to}", + zh: "⚠ CORS Origin 不匹配 ${from}->${to}", + "zh-tw": "⚠ CORS Origin 不符合 ${from}->${to}", }, "obsidianLiveSyncSettingTab.warnNoAdmin": { def: "⚠ You do not have administrator privileges.", + de: "Sie haben keine Administratorrechte.", es: "⚠ No tienes privilegios de administrador.", fr: "⚠ Vous n'avez pas les privilèges administrateur.", he: "⚠ אין לך הרשאות מנהל.", @@ -5213,9 +6451,11 @@ export const allMessages = { ko: "⚠ 관리자 권한이 없습니다.", ru: "⚠ У вас нет прав администратора.", zh: "⚠ 您没有管理员权限", + "zh-tw": "⚠ 您沒有管理員許可權", }, Ok: { def: "Ok", + de: "OK", es: "Aceptar", ja: "OK", ko: "확인", @@ -5225,6 +6465,7 @@ export const allMessages = { }, "Old Algorithm": { def: "Old Algorithm", + de: "Alter Algorithmus", es: "Algoritmo antiguo", ja: "旧アルゴリズム", ko: "이전 알고리즘", @@ -5234,6 +6475,7 @@ export const allMessages = { }, "Older fallback (Slow, W/O WebAssembly)": { def: "Older fallback (Slow, W/O WebAssembly)", + de: "Älterer Fallback (langsam, ohne WebAssembly)", es: "Alternativa anterior (lenta, sin WebAssembly)", ja: "旧フォールバック (低速、WebAssembly なし)", ko: "이전 대체 방식 (느림, WebAssembly 없음)", @@ -5267,6 +6509,7 @@ export const allMessages = { }, "Overwrite patterns": { def: "Overwrite patterns", + de: "Überschreibungsmuster", es: "Patrones de sobrescritura", ja: "上書きパターン", ko: "덮어쓰기 패턴", @@ -5276,6 +6519,7 @@ export const allMessages = { }, "Overwrite remote": { def: "Overwrite remote", + de: "Remote überschreiben", es: "Sobrescribir remoto", ja: "リモートを上書き", ko: "원격 덮어쓰기", @@ -5285,6 +6529,7 @@ export const allMessages = { }, "Overwrite remote with local DB and passphrase.": { def: "Overwrite remote with local DB and passphrase.", + de: "Remote mit lokaler Datenbank und Passphrase überschreiben.", es: "Sobrescribe el remoto con la base de datos local y la frase de contraseña.", ja: "ローカル DB とパスフレーズでリモートを上書きします。", ko: "로컬 DB와 암호문구로 원격을 덮어씁니다.", @@ -5294,6 +6539,7 @@ export const allMessages = { }, "Overwrite Server Data with This Device's Files": { def: "Overwrite Server Data with This Device's Files", + de: "Serverdaten mit den Dateien dieses Geräts überschreiben", es: "Sobrescribir los datos del servidor con los archivos de este dispositivo", ja: "このデバイスのファイルでサーバーデータを上書き", ko: "이 기기의 파일로 서버 데이터를 덮어쓰기", @@ -5303,168 +6549,225 @@ export const allMessages = { }, "P2P.AskPassphraseForDecrypt": { def: "The remote peer shared the configuration. Please input the passphrase to decrypt the configuration.", + de: "Der entfernte Peer teilte die Konfiguration. Bitte geben Sie die Passphrase ein, um die Konfiguration zu entschlüsseln.", + es: "El par remoto compartió la configuración. Ingrese la frase de contraseña para descifrar la configuración.", fr: "Le pair distant a partagé la configuration. Veuillez saisir la phrase secrète pour déchiffrer la configuration.", he: "העמית המרוחד שיתף את התצורה. אנא הזן את ביטוי הסיסמה לפענוח התצורה.", ja: "リモートピアから設定が共有されました。設定を復号するためのパスフレーズを入力してください。", ko: "원격 피어가 구성을 공유했습니다. 구성을 복호화하려면 패스프레이즈를 입력해 주세요.", ru: "Удалённое устройство предоставило конфигурацию. Введите пароль для расшифровки.", zh: "远程对等方共享了配置,请输入密码短语以解密配置", + "zh-tw": "遠端對等方共享了配置,請輸入密碼短語以解密配置", }, "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.", + de: "Der entfernte Peer forderte diese Gerätekonfiguration. Bitte geben Sie die Passphrase ein, um die Konfiguration zu teilen. Sie können die Anfrage ignorieren, indem Sie diesen Dialog abbrechen.", + es: "El par remoto solicitó la configuración de este dispositivo. Ingrese la frase de contraseña para compartir la configuración. Puede ignorar la solicitud cancelando este diálogo.", 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.", he: "העמית המרוחד ביקש את תצורת מכשיר זה. אנא הזן את ביטוי הסיסמה לשיתוף התצורה. ניתן להתעלם מהבקשה על ידי ביטול הדיאלוג.", ja: "リモートピアからこのデバイスの設定が要求されました。設定を共有するためのパスフレーズを入力してください。このダイアログをキャンセルすることでリクエストを無視できます。", ko: "원격 피어가 이 기기의 구성을 요청했습니다. 구성을 공유하려면 패스프레이즈를 입력해 주세요. 이 대화상자를 취소하여 요청을 무시할 수 있습니다.", ru: "Удалённое устройство запрашивает эту конфигурацию. Введите пароль для передачи.", zh: "远程对等方请求此设备配置,请输入密码短语以共享配置。你可以通过取消此对话框来忽略此请求", + "zh-tw": "遠端對等方請求此裝置配置,請輸入密碼短語以共享配置。你可以透過取消此對話方塊來忽略此請求", }, "P2P.DisabledButNeed": { def: "Peer-to-Peer Sync is disabled. Do you really want to enable it?", + de: "%{title_p2p_sync} ist deaktiviert. M?chten Sie es wirklich aktivieren?", + es: "Sincronización Peer-to-Peer está deshabilitado. ¿Realmente quieres habilitarlo?", fr: "Synchronisation pair-à-pair est désactivé. Voulez-vous vraiment l'activer ?", he: "%{title_p2p_sync} מנוטרל. האם אתה בטוח שברצונך להפעיל?", - ja: "Peer-to-Peer Syncは無効になっています。本当に有効にしますか?", + ja: "P2P同期は無効になっています。本当に有効にしますか?", ko: "피어 투 피어(P2P) 동기화가 비활성화되어 있습니다. 정말로 활성화하시겠습니까?", - ru: "title_p2p_sync отключён. Вы действительно хотите включить?", + ru: "Синхронизация между устройствами отключён. Вы действительно хотите включить его?", zh: "Peer-to-Peer同步 已禁用。你确定要启用它吗?", + "zh-tw": "Peer-to-Peer同步 已禁用。你確定要啟用它嗎?", }, "P2P.FailedToOpen": { def: "Failed to open P2P connection to the signalling server.", + de: "Nicht geöffnet P2P-Verbindung zum Signalisierungsserver.", + es: "No se pudo abrir la conexión P2P al servidor de señalización.", fr: "Échec d'ouverture de la connexion P2P vers le serveur de signalisation.", he: "לא ניתן לפתוח חיבור P2P לשרת האותות.", ja: "シグナリングサーバーへのP2P接続を開けませんでした。", ko: "시그널링 서버에 P2P 연결을 열 수 없습니다.", ru: "Не удалось открыть P2P подключение к серверу сигнализации.", zh: "无法打开 P2P 连接到信令服务器", + "zh-tw": "無法開啟 P2P 連線到信令伺服器", }, "P2P.NoAutoSyncPeers": { def: "No auto-sync peers found. Please set peers on the Peer-to-Peer Sync pane.", + de: "Keine Peers f?r die automatische Synchronisierung gefunden. Bitte legen Sie Peers im Bereich %{long_p2p_sync} fest.", + es: "No se encontraron pares de sincronización automática. Configure pares en el panel Sincronización Peer-to-Peer.", fr: "Aucun pair de synchronisation automatique trouvé. Veuillez définir des pairs dans le panneau Synchronisation pair-à-pair.", he: "לא נמצאו עמיתים לסנכרון אוטומטי. אנא הגדר עמיתים בלוח %{long_p2p_sync}.", - ja: "自動同期ピアが見つかりません。Peer-to-Peer Sync (試験機能)ペインでピアを設定してください。", - ko: "자동 동기화 피어를 찾을 수 없습니다. 피어 투 피어(P2P) 동기화 (실험 기능) 창에서 피어를 설정해 주세요.", - ru: "Автосинхронизируемые устройства не найдены.", - zh: "未找到自动同步的对等方,请在 Peer-to-Peer同步 (实验性) 面板中设置对等方", + ja: "自動同期ピアが見つかりません。P2P同期ペインでピアを設定してください。", + ko: "자동 동기화 피어를 찾을 수 없습니다. 피어 투 피어(P2P) 동기화 창에서 피어를 설정해 주세요.", + ru: "Устройства для автосинхронизации не найдены. Укажите их на панели Синхронизация между устройствами.", + zh: "未找到自动同步的对等方,请在 Peer-to-Peer同步 面板中设置对等方", + "zh-tw": "未找到自動同步的對等方,請在 Peer-to-Peer同步 面板中設定對等方", }, "P2P.NoKnownPeers": { def: "No peers has been detected, waiting incoming other peers...", + de: "Keine Peers wurden erkannt und warteten auf andere Peers...", + es: "No se han detectado pares, esperando la entrada de otros pares...", fr: "Aucun pair détecté, en attente d'autres pairs entrants...", he: "לא זוהו עמיתים, ממתין לעמיתים נכנסים...", ja: "ピアが検出されていません。他のピアからの接続を待機中...", ko: "피어가 감지되지 않았습니다. 다른 피어의 접속을 기다리고 있습니다...", ru: "Устройства не обнаружены, ожидаем другие устройства...", zh: "未检测到对等方,正在等待其他对等方的连接...", + "zh-tw": "未檢測到對等方,正在等待其他對等方的連線...", }, "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.", + de: " Dieser Replikator ermöglicht es uns, unseren Tresor mit anderen Geräten\nzu synchronisieren mit einer Peer-to-Peer-Verbindung. Wir können dies nutzen, um unseren Tresor mit unseren anderen Geräten zu synchronisieren, ohne einen Cloud-Service zu verwenden.\nDieser Replikator basiert auf Trystero. Es verwendet auch einen Signalisierungsserver, um eine Verbindung zwischen Geräten herzustellen. Der Signalisierungsserver dient zum Austausch von Verbindungsinformationen zwischen Geräten. Es kann (oder,sollte) keine unserer Daten kennen oder speichern.\n\nDer Signalisierungsserver kann von jedem gehostet werden. Das ist nur ein Nostr-Relais. Zur Vereinfachung und Kontrolle des Verhaltens des Replikators wird eine Instanz des Signalisierungsservers von vrtmrz gehostet. Sie können den von vrtmrz bereitgestellten experimentellen Server verwenden, oder Sie können einen anderen Server verwenden.\n\nÜbrigens, selbst wenn der Signalisierungsserver unsere Daten nicht speichert, kann er die Verbindungsinformationen einiger unserer Geräte sehen. Bitte beachten Sie das. Seien Sie auch vorsichtig, wenn Sie den von jemand anderem bereitgestellten Server verwenden.", + es: " Este replicador nos permite sincronizar nuestra bóveda con otros\ndispositivos utilizando una conexión de igual a igual. Podemos usar esto para sincronizar nuestra bóveda con nuestros otros dispositivos sin usar un servicio en la nube.\nEste replicador está basado en Trystero. También utiliza un servidor de señalización para establecer una conexión entre dispositivos. El servidor de señalización se utiliza para intercambiar información de conexión entre dispositivos. Conoce (o no debería) conocer ni almacenar ninguno de nuestros datos.\n\nCualquiera puede alojar el servidor de señalización. Esto es sólo un relevo de Nostr. En aras de la simplicidad y para comprobar el comportamiento del replicador, vrtmrz aloja una instancia del servidor de señalización. Puede utilizar el servidor experimental proporcionado por vrtmrz o puede utilizar cualquier otro servidor.\n\nPor cierto, aunque el servidor de señalización no almacene nuestros datos, puede ver la información de conexión de algunos de nuestros dispositivos. Tenga en cuenta esto. Además, tenga cuidado al utilizar el servidor proporcionado por otra persona.", 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.", he: " רפליקטור זה מאפשר לסנכרן את הכספת עם מכשירים אחרים באמצעות חיבור עמית-לעמית.\nניתן להשתמש בזה לסנכרון הכספת עם מכשירים אחרים ללא שירות ענן.\nרפליקטור זה מבוסס על Trystero. הוא משתמש גם בשרת אותות לביסוס חיבור בין מכשירים. שרת האותות משמש להחלפת מידע חיבור בין מכשירים. הוא אינו (ולא אמור) לדעת או לאחסן את הנתונים שלנו.\n\nשרת האותות יכול להיות מאוחסן על ידי כל אחד. זהו ממסר Nostr בלבד. לצורך פשטות ובדיקת התנהגות הרפליקטור, vrtmrz מאחסן עותק של שרת האותות. ניתן להשתמש בשרת הניסיוני של vrtmrz, או בכל שרת אחר.\n\nאגב, גם אם שרת האותות אינו מאחסן נתונים, הוא יכול לראות מידע חיבור של חלק ממכשיריך. אנא שים לב לכך. כמו כן, היה זהיר בשימוש בשרת של מישהו אחר.", 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.", + "zh-tw": + " 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.", + de: "Peer-to-Peer-Replikator.", + es: "Replicador de igual a igual.", fr: "Réplicateur pair-à-pair.", he: "רפליקטור עמית-לעמית.", ja: "ピアツーピアレプリケーターの実験的実装", ko: "피어 투 피어(P2P) 복제기의 실험적 구현입니다.", ru: "P2P репликатор.", zh: "The Experimental Implementation of the Peer-to-Peer Replicator.", + "zh-tw": "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.", + de: "Diese Funktion ist noch an der Ausblutkante. Bitte beachten Sie, dass Sie sicherstellen, dass Ihre Daten gesichert werden, bevor Sie diese Funktion nutzen. Und wir wären so glücklich, wenn Sie zur Entwicklung dieser Funktion beitragen könnten.", + es: "Esta característica todavía está a la vanguardia. Tenga en cuenta que asegúrese de realizar una copia de seguridad de sus datos antes de utilizar esta función. Y estaríamos muy contentos si pudiera contribuir al desarrollo de esta función.", 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é.", he: "תכונה זו עדיין בשלב מתקדם. ודא שהנתונים שלך מגובים לפני השימוש. ונשמח אם תוכל לתרום לפיתוח תכונה זו.", 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.", + "zh-tw": + "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)", + de: "Was ist diese Funktion? (und einige wichtige Anmerkungen, bitte lesen Sie einmal)", + es: "¿Cuál es esta característica? (y algunas notas importantes, léalas una vez)", fr: "Qu'est-ce que cette fonctionnalité ? (et quelques notes importantes, à lire)", he: "מהי תכונה זו? (ועוד הערות חשובות, נא לקרוא פעם אחת)", ja: "この機能について(重要な注意事項を含む、一度お読みください)", ko: "이 기능은 무엇인가요? (설명과 참고사항이 적혀있습니다. 한 번 읽어보세요!)", ru: "Что это за функция? (важные замечания)", zh: "What is this feature? (and some important notes, please read once)", + "zh-tw": "What is this feature? (and some important notes, please read once)", }, "P2P.NotEnabled": { def: "Peer-to-Peer Sync is not enabled. We cannot open a new connection.", + de: "%{title_p2p_sync} ist nicht aktiviert. Wir können keine neue Verbindung öffnen.", + es: "Sincronización Peer-to-Peer no está habilitado. No podemos abrir una nueva conexión.", fr: "Synchronisation pair-à-pair n'est pas activé. Nous ne pouvons pas ouvrir de nouvelle connexion.", he: "%{title_p2p_sync} אינו מופעל. לא ניתן לפתוח חיבור חדש.", - ja: "Peer-to-Peer Syncが有効になっていません。新しい接続を開くことができません。", + ja: "P2P同期が有効になっていません。新しい接続を開くことができません。", ko: "피어 투 피어(P2P) 동기화가 활성화되지 않았습니다. 새로운 연결을 열 수 없습니다.", - ru: "title_p2p_sync не включён. Мы не можем открыть новое подключение.", - zh: "Peer-to-Peer同步 is not enabled. We cannot open a new connection.", + ru: "Синхронизация между устройствами не включён. Мы не можем открыть новое подключение.", + zh: "Peer-to-Peer同步 未启用,无法建立新连接。", + "zh-tw": "Peer-to-Peer同步 未啟用,無法建立新連線。", }, "P2P.P2PReplication": { def: "Peer-to-Peer Replication", + de: "%{P2P}-Replikation", + es: "Replicación Par a Par", fr: "Réplication Pair-à-Pair", he: "שכפול %{P2P}", - ja: "Peer-to-Peerレプリケーション(複製)", - ko: "피어-to-피어 복제", - ru: "P2P Репликация", - zh: "Peer-to-Peer Replication", + ja: "ピア対ピアレプリケーション(複製)", + ko: "피어 ? 피어 복제", + ru: "Репликация Узел-Узел", + zh: "节点-对-节点 同步", + "zh-tw": "節點對節點 同步", }, "P2P.PaneTitle": { def: "Peer-to-Peer Sync", + de: "%{long_p2p_sync}", + es: "Sincronización Peer-to-Peer", fr: "Synchronisation pair-à-pair", he: "%{long_p2p_sync}", - ja: "Peer-to-Peer Sync (試験機能)", - ko: "피어 투 피어(P2P) 동기화 (실험 기능)", - ru: "long_p2p_sync", - zh: "Peer-to-Peer同步 (实验性)", + ja: "P2P同期", + ko: "피어 투 피어(P2P) 동기화", + ru: "Синхронизация между устройствами", + zh: "Peer-to-Peer同步", + "zh-tw": "Peer-to-Peer同步", }, "P2P.ReplicatorInstanceMissing": { def: "P2P Sync replicator is not found, possibly not have been configured or enabled.", + de: "P2P Sync Replikator ist nicht gefunden, möglicherweise nicht konfiguriert oder aktiviert.", + es: "No se encuentra el replicador de sincronización P2P; posiblemente no se haya configurado o habilitado.", fr: "Le réplicateur Sync P2P est introuvable, peut-être non configuré ou non activé.", he: "רפליקטור סנכרון P2P לא נמצא, ייתכן שלא הוגדר או הופעל.", ja: "P2P同期レプリケーターが見つかりません。設定または有効化されていない可能性があります。", ko: "P2P 동기화 복제기를 찾을 수 없습니다. 구성되지 않았거나 활성화되지 않았을 수 있습니다.", ru: "P2P Sync репликатор не найден, возможно, не настроен.", - zh: "P2P Sync replicator is not found, possibly not have been configured or enabled.", + zh: "未找到 P2P 同步复制器,可能尚未配置或启用。", + "zh-tw": "未找到 P2P 同步複製器,可能尚未配置或啟用。", }, "P2P.SeemsOffline": { def: "Peer ${name} seems offline, skipped.", + de: "Peer ${name} erscheint offline, übersprungen.", + es: "El par ${name} parece desconectado, omitido.", fr: "Le pair ${name} semble hors ligne, ignoré.", he: "העמית ${name} נראה לא מחובר, מדלג.", ja: "ピア${name}はオフラインのようです。スキップしました。", ko: "피어 ${name}이(가) 오프라인인 것 같습니다. 건너뜁니다.", - ru: "Устройство name офлайн, пропущено.", - zh: "Peer ${name} seems offline, skipped.", + ru: "Пир ${name}, похоже, офлайн; пропущено.", + zh: "节点 ${name} 似乎离线,已跳过。", + "zh-tw": "節點 ${name} 似乎離線,已跳過。", }, "P2P.SyncAlreadyRunning": { def: "P2P Sync is already running.", + de: "P2P Sync läuft bereits.", + es: "La sincronización P2P ya se está ejecutando.", fr: "La Sync P2P est déjà en cours.", he: "סנכרון P2P כבר פועל.", ja: "P2P同期はすでに実行中です。", ko: "P2P 동기화가 이미 실행 중입니다.", ru: "P2P Sync уже запущен.", - zh: "P2P Sync is already running.", + zh: "P2P 同步已在运行中。", + "zh-tw": "P2P 同步已在執行中。", }, "P2P.SyncCompleted": { def: "P2P Sync completed.", + de: "P2P Sync abgeschlossen.", + es: "Sincronización P2P completada.", fr: "Sync P2P terminée.", he: "סנכרון P2P הושלם.", ja: "P2P同期が完了しました。", ko: "P2P 동기화가 완료되었습니다.", ru: "P2P Sync завершён.", - zh: "P2P Sync completed.", + zh: "P2P 同步已完成。", + "zh-tw": "P2P 同步已完成。", }, "P2P.SyncStartedWith": { def: "P2P Sync with ${name} have been started.", + de: "P2P Sync mit ${name} wurde gestartet.", + es: "Se inició la sincronización P2P con ${name}.", fr: "La Sync P2P avec ${name} a démarré.", he: "סנכרון P2P עם ${name} התחיל.", ja: "${name}とのP2P同期を開始しました。", ko: "${name}과의 P2P 동기화가 시작되었습니다.", - ru: "P2P Sync с name начат.", - zh: "P2P Sync with ${name} have been started.", + ru: "P2P Sync с ${name} запущен.", + zh: "已与 ${name} 开始 P2P 同步。", + "zh-tw": "已與 ${name} 開始 P2P 同步。", }, "paneMaintenance.markDeviceResolvedAfterBackup": { def: "paneMaintenance.markDeviceResolvedAfterBackup", + de: "Markieren Sie das Gerät nach der Sicherung als gelöst.", es: "Marcar el dispositivo como resuelto después de hacer una copia de seguridad", ja: "バックアップ後にこのデバイスを解決済みにする", ko: "백업 후 장치를 해결됨으로 표시", @@ -5474,6 +6777,7 @@ export const allMessages = { }, "paneMaintenance.remoteLockedAndDeviceNotAccepted": { def: "paneMaintenance.remoteLockedAndDeviceNotAccepted", + de: "Die Remote-Datenbank ist gesperrt und dieses Gerät wurde noch nicht akzeptiert.", es: "La base de datos remota está bloqueada y este dispositivo aún no ha sido aceptado.", ja: "リモートデータベースはロックされており、このデバイスはまだ承認されていません。", ko: "원격 데이터베이스가 잠겨 있으며 이 장치는 아직 승인되지 않았습니다.", @@ -5483,6 +6787,7 @@ export const allMessages = { }, "paneMaintenance.remoteLockedResolvedDevice": { def: "paneMaintenance.remoteLockedResolvedDevice", + de: "Die Remote-Datenbank ist gesperrt. Dieses Gerät wurde bereits akzeptiert.", es: "La base de datos remota está bloqueada, pero este dispositivo ya fue aceptado.", ja: "リモートデータベースはロックされていますが、このデバイスはすでに承認されています。", ko: "원격 데이터베이스가 잠겨 있지만 이 장치는 이미 승인되었습니다.", @@ -5492,6 +6797,7 @@ export const allMessages = { }, "paneMaintenance.unlockDatabaseReady": { def: "paneMaintenance.unlockDatabaseReady", + de: "Die Datenbank kann jetzt entsperrt werden.", es: "Desbloquear la base de datos", ja: "データベースのロックを解除", ko: "데이터베이스 잠금 해제", @@ -5501,6 +6807,7 @@ export const allMessages = { }, Passphrase: { def: "Passphrase", + de: "Passphrasen", es: "Frase de contraseña", fr: "Phrase secrète", he: "ביטוי סיסמה", @@ -5508,9 +6815,11 @@ export const allMessages = { ko: "패스프레이즈", ru: "Парольная фраза", zh: "密码", + "zh-tw": "密碼", }, "Passphrase of sensitive configuration items": { def: "Passphrase of sensitive configuration items", + de: "Passphrase sensibler Konfigurationselemente", es: "Frase para elementos sensibles", fr: "Phrase secrète des éléments de configuration sensibles", he: "ביטוי סיסמה לפריטי תצורה רגישים", @@ -5518,9 +6827,11 @@ export const allMessages = { ko: "민감한 구성 항목의 패스프레이즈", ru: "Парольная фраза для конфиденциальных настроек", zh: "敏感配置项的密码", + "zh-tw": "敏感配置項的密碼", }, password: { def: "password", + de: "Passwort vergessen?", es: "contraseña", fr: "mot de passe", he: "סיסמה", @@ -5528,9 +6839,11 @@ export const allMessages = { ko: "비밀번호", ru: "пароль", zh: "密码", + "zh-tw": "密碼", }, Password: { def: "Password", + de: "Passwort vergessen?", es: "Contraseña", fr: "Mot de passe", he: "סיסמה", @@ -5538,9 +6851,11 @@ export const allMessages = { ko: "비밀번호", ru: "Пароль", zh: "密码", + "zh-tw": "密碼", }, "Paste a connection string": { def: "Paste a connection string", + de: "Verbindungszeichenfolge einfügen", es: "Pegar cadena de conexión", ja: "接続文字列を貼り付ける", ko: "연결 문자열 붙여넣기", @@ -5550,6 +6865,7 @@ export const allMessages = { }, "Paste the Setup URI generated from one of your active devices.": { def: "Paste the Setup URI generated from one of your active devices.", + de: "Fügen Sie die Setup-URI ein, die auf einem Ihrer aktiven Geräte erzeugt wurde。", es: "Pegue el URI de configuración generado desde uno de sus dispositivos activos。", ja: "稼働中の端末で生成した Setup URI を貼り付けてください。", ko: "현재 사용 중인 장치 중 하나에서 생성한 설정 URI를 붙여 넣으세요。", @@ -5559,6 +6875,7 @@ export const allMessages = { }, "Path Obfuscation": { def: "Path Obfuscation", + de: "Pfadverschleierung", es: "Ofuscación de rutas", fr: "Obfuscation des chemins", he: "ערפול נתיב", @@ -5566,9 +6883,11 @@ export const allMessages = { ko: "경로 난독화", ru: "Обфускация путей", zh: "路径混淆", + "zh-tw": "路徑混淆", }, "Patterns to match files for overwriting instead of merging": { def: "Patterns to match files for overwriting instead of merging", + de: "Muster zum Erkennen von Dateien, die überschrieben statt zusammengeführt werden sollen", es: "Patrones para identificar archivos que se sobrescribirán en lugar de fusionarse", ja: "マージではなく上書きするファイルを判定するパターン", ko: "병합 대신 덮어쓸 파일을 판별하는 패턴", @@ -5578,6 +6897,7 @@ export const allMessages = { }, "Patterns to match files for syncing": { def: "Patterns to match files for syncing", + de: "Muster zum Erkennen von Dateien für die Synchronisation", es: "Patrones para identificar archivos que se sincronizarán", ja: "同期対象ファイルを判定するパターン", ko: "동기화할 파일을 판별하는 패턴", @@ -5587,6 +6907,7 @@ export const allMessages = { }, "Peer-to-Peer only": { def: "Peer-to-Peer only", + de: "Nur Peer-to-Peer", es: "Solo Peer-to-Peer", ja: "Peer-to-Peer のみ", ko: "Peer-to-Peer 전용", @@ -5596,6 +6917,7 @@ export const allMessages = { }, "Peer-to-Peer Synchronisation": { def: "Peer-to-Peer Synchronisation", + de: "Peer-to-Peer-Synchronisation", es: "Sincronización entre pares", ja: "ピアツーピア同期", ko: "피어 투 피어 동기화", @@ -5605,6 +6927,7 @@ export const allMessages = { }, "Per-file-saved customization sync": { def: "Per-file-saved customization sync", + de: "Per-file-saved Anpassungssynchronisation", es: "Sincronización de personalización por archivo", fr: "Synchronisation de personnalisation enregistrée par fichier", he: "סנכרון התאמה אישית שנשמר לפי קובץ", @@ -5612,9 +6935,11 @@ export const allMessages = { ko: "파일별 저장 사용자 설정 동기화", ru: "Синхронизация настроек для каждого файла", zh: "按文件保存的自定义同步", + "zh-tw": "按檔案儲存的自定義同步", }, Perform: { def: "Perform", + de: "Ausführen", es: "Ejecutar", ja: "実行", ko: "실행", @@ -5624,6 +6949,7 @@ export const allMessages = { }, "Perform cleanup": { def: "Perform cleanup", + de: "Bereinigung ausführen", es: "Ejecutar limpieza", ja: "クリーンアップを実行", ko: "정리 실행", @@ -5633,6 +6959,7 @@ export const allMessages = { }, "Perform Garbage Collection": { def: "Perform Garbage Collection", + de: "Garbage Collection ausführen", es: "Ejecutar recolección de basura", ja: "ガーベジコレクションを実行", ko: "가비지 컬렉션 실행", @@ -5642,6 +6969,7 @@ export const allMessages = { }, "Perform Garbage Collection to remove unused chunks and reduce database size.": { def: "Perform Garbage Collection to remove unused chunks and reduce database size.", + de: "Führt Garbage Collection aus, um ungenutzte Chunks zu entfernen und die Datenbankgröße zu reduzieren.", es: "Ejecuta la recolección de basura para eliminar chunks no usados y reducir el tamaño de la base de datos.", ja: "未使用のチャンクを削除し、データベースサイズを削減するためにガーベジコレクションを実行します。", ko: "사용하지 않는 청크를 제거하고 데이터베이스 크기를 줄이기 위해 가비지 컬렉션을 실행합니다.", @@ -5651,6 +6979,7 @@ export const allMessages = { }, "Periodic Sync interval": { def: "Periodic Sync interval", + de: "Periodisches Synchronintervall", es: "Intervalo de sincronización periódica", fr: "Intervalle de synchronisation périodique", he: "מרווח סנכרון תקופתי", @@ -5658,22 +6987,31 @@ export const allMessages = { ko: "주기적 동기화 간격", ru: "Интервал периодической синхронизации", zh: "定期同步间隔", + "zh-tw": "定期同步間隔", }, "Pick a file to resolve conflict": { def: "Pick a file to resolve conflict", - es: "Elegir un archivo para resolver el conflicto", + de: "Wählen Sie eine Datei, um Konflikt zu lösen", + es: "Elija un archivo para resolver el conflicto", ja: "競合を解決するファイルを選択", ko: "충돌을 해결할 파일 선택", - ru: "Выбрать файл для разрешения конфликта", + ru: "Выберите файл для разрешения конфликта", zh: "选择要解决冲突的文件", "zh-tw": "選擇要解決衝突的檔案", }, "Pick a file to show history": { def: "Pick a file to show history", - "zh-tw": "選擇要顯示歷程的檔案", + de: "Wählen Sie eine Datei, um Geschichte zu zeigen", + es: "Elija un archivo para mostrar el historial", + ja: "履歴を表示するファイルを選択", + ko: "기록을 표시할 파일 선택", + ru: "Выберите файл для просмотра истории", + zh: "选择要显示历史的文件", + "zh-tw": "選擇要顯示歷史的檔案", }, "Please disable 'Read chunks online' in settings to use Garbage Collection.": { def: "Please disable 'Read chunks online' in settings to use Garbage Collection.", + de: "Bitte deaktivieren Sie „Read chunks online“ in den Einstellungen, um die Garbage Collection zu verwenden.", ja: "Garbage Collection を使うには、設定で「Read chunks online」を無効にしてください。", ko: 'Garbage Collection을 사용하려면 설정에서 "Read chunks online"을 비활성화해 주세요.', ru: "Чтобы использовать Garbage Collection, отключите в настройках «Read chunks online».", @@ -5682,6 +7020,7 @@ export const allMessages = { }, "Please enable 'Compute revisions for chunks' in settings to use Garbage Collection.": { def: "Please enable 'Compute revisions for chunks' in settings to use Garbage Collection.", + de: "Bitte aktivieren Sie „Compute revisions for chunks“ in den Einstellungen, um die Garbage Collection zu verwenden.", ja: "Garbage Collection を使うには、設定で「Compute revisions for chunks」を有効にしてください。", ko: 'Garbage Collection을 사용하려면 설정에서 "Compute revisions for chunks"를 활성화해 주세요.', ru: "Чтобы использовать Garbage Collection, включите в настройках «Compute revisions for chunks».", @@ -5690,6 +7029,7 @@ export const allMessages = { }, "Please select 'Cancel' explicitly to cancel this operation.": { def: "Please select 'Cancel' explicitly to cancel this operation.", + de: "Bitte wählen Sie ausdrücklich „Abbrechen“, um diesen Vorgang abzubrechen.", ja: "この操作を中止するには、明示的に「キャンセル」を選択してください。", ko: '이 작업을 취소하려면 반드시 "취소"를 명시적으로 선택해 주세요.', ru: "Чтобы отменить эту операцию, явно выберите «Отмена».", @@ -5698,6 +7038,7 @@ export const allMessages = { }, "Please select a method to import the settings from another device.": { def: "Please select a method to import the settings from another device.", + de: "Bitte wählen Sie eine Methode, um die Einstellungen von einem anderen Gerät zu importieren.", es: "Seleccione un método para importar la configuración desde otro dispositivo。", ja: "別の端末から設定を取り込む方法を選択してください。", ko: "다른 장치에서 설정을 가져올 방법을 선택해 주세요。", @@ -5707,6 +7048,7 @@ export const allMessages = { }, "Please select an option to proceed": { def: "Please select an option to proceed", + de: "Bitte wählen Sie eine Option, um fortzufahren", es: "Seleccione una opción para continuar", ja: "続行するには項目を選択してください", ko: "계속하려면 항목을 선택해 주세요", @@ -5716,6 +7058,7 @@ export const allMessages = { }, "Please select the type of server to which you are connecting.": { def: "Please select the type of server to which you are connecting.", + de: "Bitte wählen Sie den Servertyp aus, mit dem Sie sich verbinden。", es: "Seleccione el tipo de servidor al que se está conectando。", ja: "接続するサーバーの種類を選択してください。", ko: "연결할 서버 유형을 선택해 주세요。", @@ -5734,6 +7077,7 @@ export const allMessages = { }, "Please set this device name": { def: "Please set this device name", + de: "Bitte legen Sie den Namen dieses Geräts fest", es: "Define el nombre de este dispositivo", ja: "このデバイス名を設定してください", ko: "이 장치 이름을 설정해 주세요", @@ -5743,6 +7087,7 @@ export const allMessages = { }, "Plug-in version": { def: "Plug-in version", + de: "Plugin-Version", ja: "プラグインバージョン", ko: "플러그인 버전", ru: "Версия плагина", @@ -5751,16 +7096,19 @@ export const allMessages = { }, "Prepare the 'report' to create an issue": { def: "Prepare the 'report' to create an issue", + de: 'Bereiten Sie den "Bericht" vor, um ein Problem zu schaffen', + es: 'Preparar el "reporte" para crear un issue', fr: "Préparer le « rapport » pour créer un ticket", he: "הכן 'דו\"ח' ליצירת Issue", ja: "Issue 作成用の「レポート」を準備", ko: "이슈 생성을 위한 '보고서' 준비", ru: "Подготовить «отчёт» для создания Issue", zh: "准备 '报告' 以创建问题单", - "zh-tw": "準備建立 Issue 用的「報告」", + "zh-tw": "準備 '報告' 以建立問題單", }, Presets: { def: "Presets", + de: "Voreinstellungen", es: "Preconfiguraciones", fr: "Préréglages", he: "קביעות מראש", @@ -5768,9 +7116,11 @@ export const allMessages = { ko: "프리셋", ru: "Пресеты", zh: "预设", + "zh-tw": "預設", }, "Proceed Garbage Collection": { def: "Proceed Garbage Collection", + de: "Garbage Collection fortsetzen", ja: "Garbage Collection を続行", ko: "Garbage Collection 계속", ru: "Продолжить Garbage Collection", @@ -5779,6 +7129,7 @@ export const allMessages = { }, "Proceed with Setup URI": { def: "Proceed with Setup URI", + de: "Mit Setup-URI fortfahren", es: "Continuar con el URI de configuración", ja: "Setup URI で続行", ko: "설정 URI로 계속", @@ -5788,6 +7139,7 @@ export const allMessages = { }, "Proceeding with Garbage Collection, ignoring missing nodes.": { def: "Proceeding with Garbage Collection, ignoring missing nodes.", + de: "Garbage Collection wird fortgesetzt, fehlende Knoten werden ignoriert.", ja: "不足しているノードを無視して Garbage Collection を続行します。", ko: "누락된 노드를 무시하고 Garbage Collection을 계속 진행합니다.", ru: "Продолжаем Garbage Collection, игнорируя отсутствующие узлы.", @@ -5796,14 +7148,26 @@ export const allMessages = { }, "Proceeding with Garbage Collection.": { def: "Proceeding with Garbage Collection.", + de: "Garbage Collection wird ausgeführt.", ja: "Garbage Collection を実行します。", ko: "Garbage Collection을 진행합니다.", ru: "Запускаем Garbage Collection.", zh: "正在执行垃圾回收。", "zh-tw": "正在執行垃圾回收。", }, + "Process files even if seems to be corrupted": { + def: "Process files even if seems to be corrupted", + de: "Dateien auch verarbeiten, wenn sie beschädigt wirken", + es: "Procesar archivos aunque parezcan dañados", + ja: "破損しているように見えるファイルも処理", + ko: "손상된 것처럼 보이는 파일도 처리", + ru: "Обрабатывать файлы, даже если они выглядят поврежденными", + zh: "即使文件看起来已损坏也处理", + "zh-tw": "即使檔案看似已損壞也處理", + }, "Process small files in the foreground": { def: "Process small files in the foreground", + de: "Kleine Dateien im Vordergrund bearbeiten", es: "Procesar archivos pequeños en primer plano", fr: "Traiter les petits fichiers au premier plan", he: "עבד קבצים קטנים בחזית", @@ -5811,9 +7175,11 @@ export const allMessages = { ko: "포그라운드에서 작은 파일 처리", ru: "Обрабатывать маленькие файлы в основном потоке", zh: "在前台处理小文件", + "zh-tw": "在前臺處理小檔案", }, Progress: { def: "Progress", + de: "Fortschritt", ja: "進捗", ko: "진행 상태", ru: "Прогресс", @@ -5822,13 +7188,19 @@ export const allMessages = { }, "Property Encryption": { def: "Property Encryption", + de: "Immobilienverschlüsselung", + es: "Cifrado de propiedades", fr: "Chiffrement des propriétés", he: "הצפנת מאפיינים", + ja: "プロパティ暗号化", + ko: "속성 암호화", ru: "Шифрование свойств", zh: "属性加密", + "zh-tw": "屬性加密", }, "PureJS fallback (Fast, W/O WebAssembly)": { def: "PureJS fallback (Fast, W/O WebAssembly)", + de: "PureJS-Fallback (schnell, ohne WebAssembly)", es: "Alternativa PureJS (rápida, sin WebAssembly)", ja: "PureJS フォールバック (高速、WebAssembly なし)", ko: "PureJS 대체 방식 (빠름, WebAssembly 없음)", @@ -5838,6 +7210,7 @@ export const allMessages = { }, "Purge all download/upload cache.": { def: "Purge all download/upload cache.", + de: "Gesamten Download-/Upload-Cache leeren.", es: "Purga toda la caché de descarga y carga.", ja: "ダウンロード/アップロードキャッシュをすべて削除します。", ko: "모든 다운로드/업로드 캐시를 제거합니다.", @@ -5847,6 +7220,7 @@ export const allMessages = { }, "Purge all journal counter": { def: "Purge all journal counter", + de: "Alle Journal-Zähler leeren", es: "Purgar todos los contadores del diario", ja: "すべてのジャーナルカウンターを削除", ko: "모든 저널 카운터 삭제", @@ -5856,6 +7230,7 @@ export const allMessages = { }, "Rebuild local and remote database with local files.": { def: "Rebuild local and remote database with local files.", + de: "Lokale und Remote-Datenbank anhand der lokalen Dateien neu aufbauen.", es: "Reconstruye la base de datos local y remota usando los archivos locales.", ja: "ローカルファイルを使ってローカルとリモートのデータベースを再構築します。", ko: "로컬 파일로 로컬 및 원격 데이터베이스를 다시 구축합니다.", @@ -5865,6 +7240,7 @@ export const allMessages = { }, "Rebuilding Operations (Remote Only)": { def: "Rebuilding Operations (Remote Only)", + de: "Neuaufbau-Vorgänge (nur Remote)", es: "Operaciones de reconstrucción (solo remoto)", ja: "再構築操作 (リモートのみ)", ko: "재구축 작업 (원격 전용)", @@ -5878,6 +7254,7 @@ export const allMessages = { }, "Recreate all": { def: "Recreate all", + de: "Alle neu erstellen", es: "Recrear todo", ja: "すべて再作成", ko: "모두 다시 생성", @@ -5887,6 +7264,7 @@ export const allMessages = { }, "Recreate missing chunks for all files": { def: "Recreate missing chunks for all files", + de: "Fehlende Chunks für alle Dateien neu erstellen", es: "Recrear fragmentos faltantes para todos los archivos", ja: "すべてのファイルの不足チャンクを再作成", ko: "모든 파일의 누락된 청크 다시 생성", @@ -5896,80 +7274,263 @@ export const allMessages = { }, "RedFlag.Fetch.Method.Desc": { def: "How do you want to fetch?\n- Create a local database once before fetching.\n **Low Traffic**, **High CPU**, **Low Risk**\n Recommended if ...\n - Files possibly inconsistent\n - Files were not so much\n- Create local file chunks before fetching.\n **Low Traffic**, **Moderate CPU**, **Low to Moderate Risk**\n Recommended if ...\n - Files probably consistent\n - You have a lot of files.\n- Fetch everything from the remote.\n **High Traffic**, **Low CPU**, **Low to Moderate Risk**\n\n>[!INFO]- Details\n> ## Create a local database once before fetching.\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> ## Create local file chunks before fetching.\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 \"Create a local database once before fetching\", but it may lead to data loss if not used carefully.\n> ## Fetch everything from the remote.\n> **High Traffic**, **Low CPU**, **Low to Moderate Risk** (depending operation)\n> All things will be fetched from the remote.\n> Similar to the Create local file chunks before fetching, 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 'Create local file chunks before fetching' option.\n> However, it is often considered the most stable method because it is the longest-established and most straightforward approach.", + de: "Wie möchten Sie abrufen?\n- %{RedFlag.Fetch.Method.FetchSafer}.\n **Wenig Datenverkehr**, **hohe CPU-Last**, **geringes Risiko**\n Empfohlen, wenn ...\n - Dateien möglicherweise inkonsistent sind\n - es nicht sehr viele Dateien gibt\n- %{RedFlag.Fetch.Method.FetchSmoother}.\n **Wenig Datenverkehr**, **mäßige CPU-Last**, **geringes bis mäßiges Risiko**\n Empfohlen, wenn ...\n - Dateien wahrscheinlich konsistent sind\n - Sie viele Dateien haben.\n- %{RedFlag.Fetch.Method.FetchTraditional}.\n **Hoher Datenverkehr**, **geringe CPU-Last**, **geringes bis mäßiges Risiko**\n\n>[!INFO]- Details\n> ## %{RedFlag.Fetch.Method.FetchSafer}.\n> **Wenig Datenverkehr**, **hohe CPU-Last**, **geringes Risiko**\n> Diese Option erstellt zuerst eine lokale Datenbank aus vorhandenen lokalen Dateien, bevor Daten aus der entfernten Quelle abgerufen werden.\n> Wenn passende Dateien lokal und remote vorhanden sind, werden nur die Unterschiede übertragen.\n> Dateien, die an beiden Orten vorhanden sind, werden jedoch zunächst als Konfliktdateien behandelt. Wenn sie nicht wirklich in Konflikt stehen, werden sie automatisch aufgelöst, aber das kann einige Zeit dauern.\n> Dies ist im Allgemeinen die sicherste Methode und minimiert das Risiko von Datenverlust.\n> ## %{RedFlag.Fetch.Method.FetchSmoother}.\n> **Wenig Datenverkehr**, **mäßige CPU-Last**, **geringes bis mäßiges Risiko** (je nach Vorgang)\n> Diese Option erstellt zuerst Chunks aus lokalen Dateien für die Datenbank und ruft dann Daten ab. Dadurch werden nur lokal fehlende Chunks übertragen. Alle Metadaten werden jedoch aus der entfernten Quelle übernommen.\n> Lokale Dateien werden beim Start mit diesen Metadaten verglichen. Inhalte, die als neuer gelten, überschreiben ältere Inhalte (nach Änderungszeit). Dieses Ergebnis wird anschließend zurück in die entfernte Datenbank synchronisiert.\n> Dies ist in der Regel sicher, wenn die lokalen Dateien wirklich den neuesten Zeitstempel haben. Es kann jedoch Probleme verursachen, wenn eine Datei einen neueren Zeitstempel, aber älteren Inhalt hat (wie die ursprüngliche `welcome.md`).\n> Diese Methode verwendet weniger CPU und ist schneller als \"%{RedFlag.Fetch.Method.FetchSafer}\", kann aber bei unvorsichtiger Verwendung zu Datenverlust führen.\n> ## %{RedFlag.Fetch.Method.FetchTraditional}.\n> **Hoher Datenverkehr**, **geringe CPU-Last**, **geringes bis mäßiges Risiko** (je nach Vorgang)\n> Alles wird aus der entfernten Quelle abgerufen.\n> Ähnlich wie %{RedFlag.Fetch.Method.FetchSmoother}, aber alle Chunks werden aus der entfernten Quelle abgerufen.\n> Dies ist die traditionellste Abrufmethode und benötigt in der Regel den meisten Netzwerkverkehr und die meiste Zeit. Außerdem besteht ein ähnliches Risiko, entfernte Dateien zu überschreiben, wie bei der Option '%{RedFlag.Fetch.Method.FetchSmoother}'.\n> Sie gilt jedoch oft als die stabilste Methode, weil sie am längsten etabliert und am direktesten ist.", + es: "¿Cómo desea buscar?\n- Cree una base de datos local una vez antes de buscarla.\n **Bajo tráfico**, **Alta CPU**, **Bajo riesgo**\n Recomendado si...\n - Archivos posiblemente inconsistentes\n - Los archivos no eran tanto.\n- Cree fragmentos de archivos locales antes de recuperarlos.\n **Tráfico bajo**, **CPU moderado**, **Riesgo bajo a moderado**\n Recomendado si...\n - Archivos probablemente consistentes\n - Tienes muchos archivos.\n- Obtener todo desde el control remoto.\n **Alto tráfico**, **Baja CPU**, **Riesgo bajo a moderado**\n\n>[!INFO]- Detalles\n> ## Cree una base de datos local una vez antes de buscarla.\n> **Bajo tráfico**, **CPU alta**, **Bajo riesgo**\n> Esta opción primero crea una base de datos local utilizando archivos locales existentes antes de recuperar datos de la fuente remota.\n> Si existen archivos coincidentes tanto local como remotamente, solo se transferirán las diferencias entre ellos.\n> Sin embargo, los archivos presentes en ambas ubicaciones se tratarán inicialmente como archivos en conflicto. Se resolverán automáticamente si en realidad no entran en conflicto, pero este proceso puede llevar tiempo.\n> Este es generalmente el método más seguro y minimiza el riesgo de pérdida de datos.\n> ## Cree fragmentos de archivos locales antes de recuperarlos.\n> **Tráfico bajo**, **CPU moderado**, **Riesgo bajo a moderado** (dependiendo de la operación)\n> Esta opción primero crea fragmentos de archivos locales para la base de datos y luego recupera datos. En consecuencia, sólo se transfieren los fragmentos que faltan localmente. Sin embargo, todos los metadatos se toman de la fuente remota.\n> Luego, los archivos locales se comparan con estos metadatos en el momento del lanzamiento. El contenido considerado más nuevo sobrescribirá al anterior (por hora de modificación). Este resultado luego se sincroniza nuevamente con la base de datos remota.\n> Esto generalmente es seguro si los archivos locales tienen realmente la última marca de tiempo. Sin embargo, puede causar problemas si un archivo tiene una marca de tiempo más nueva pero un contenido más antiguo (como el `welcome.md` inicial).\n> Esto utiliza menos CPU y es más rápido que \"Cree una base de datos local una vez antes de buscarla\", pero puede provocar la pérdida de datos si no se usa con cuidado.\n> ## Obtener todo desde el control remoto.\n> **Alto tráfico**, **Baja CPU**, **Riesgo bajo a moderado** (dependiendo de la operación)\n> Todo se recuperará desde el control remoto.\n> Similar al Cree fragmentos de archivos locales antes de recuperarlos, pero todos los fragmentos se obtienen de la fuente remota.\n> Esta es la forma más tradicional de recuperar datos y, por lo general, consume la mayor cantidad de tráfico y tiempo de red. También conlleva un riesgo similar de sobrescribir archivos remotos con la opción 'Cree fragmentos de archivos locales antes de recuperarlos'.\n> Sin embargo, a menudo se considera el método más estable porque es el enfoque más sencillo y más antiguo.", fr: "Comment voulez-vous récupérer ?\n- Créer une base locale avant de récupérer.\n **Trafic faible**, **CPU élevé**, **Risque faible**\n Recommandé si ...\n - Fichiers possiblement incohérents\n - Fichiers peu nombreux\n- Créer des fragments de fichiers locaux avant de récupérer.\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- Tout récupérer depuis le distant.\n **Trafic élevé**, **CPU faible**, **Risque faible à modéré**\n\n>[!INFO]- Détails\n> ## Créer une base locale avant de récupérer.\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> ## Créer des fragments de fichiers locaux avant de récupérer.\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 « Créer une base locale avant de récupérer », mais peut entraîner une perte de données si elle n'est pas utilisée avec précaution.\n> ## Tout récupérer depuis le distant.\n> **Trafic élevé**, **CPU faible**, **Risque faible à modéré** (selon l'opération)\n> Tout sera récupéré depuis le distant.\n> Similaire à Créer des fragments de fichiers locaux avant de récupérer, 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 « Créer des fragments de fichiers locaux avant de récupérer ».\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.", he: 'כיצד ברצונך למשוך?\n- %{RedFlag.Fetch.Method.FetchSafer}.\n **תעבורה נמוכה**, **מעבד גבוה**, **סיכון נמוך**\n מומלץ אם...\n - קבצים עשויים להיות לא עקביים\n - אין הרבה קבצים\n- %{RedFlag.Fetch.Method.FetchSmoother}.\n **תעבורה נמוכה**, **מעבד בינוני**, **סיכון נמוך עד בינוני**\n מומלץ אם...\n - הקבצים ככל הנראה עקביים\n - יש לך הרבה קבצים.\n- %{RedFlag.Fetch.Method.FetchTraditional}.\n **תעבורה גבוהה**, **מעבד נמוך**, **סיכון נמוך עד בינוני**\n\n>[!INFO]- פרטים\n> ## %{RedFlag.Fetch.Method.FetchSafer}.\n> **תעבורה נמוכה**, **מעבד גבוה**, **סיכון נמוך**\n> אפשרות זו יוצרת תחילה מסד נתונים מקומי תוך שימוש בקבצים מקומיים קיימים לפני משיכת נתונים מהמקור המרוחד.\n> אם קיימים קבצים תואמים גם מקומית וגם מרחוק, רק ההפרשים ביניהם יועברו.\n> עם זאת, קבצים הקיימים בשני המקומות יטופלו תחילה כקבצים מתנגשים. הם ייפתרו אוטומטית אם לא מתנגשים בפועל, אך תהליך זה עשוי לקחת זמן.\n> זוהי בדרך כלל השיטה הבטוחה ביותר, ממזערת סיכון לאובדן נתונים.\n> ## %{RedFlag.Fetch.Method.FetchSmoother}.\n> **תעבורה נמוכה**, **מעבד בינוני**, **סיכון נמוך עד בינוני** (תלוי בפעולה)\n> אפשרות זו יוצרת תחילה נתחים מקבצים מקומיים למסד הנתונים, ואז מושכת נתונים. כתוצאה מכך, רק נתחים חסרים מקומית מועברים. עם זאת, כל המטה-נתונים נלקחים מהמקור המרוחד.\n> קבצים מקומיים נבדקים לאחר מכן מול מטה-נתונים אלה בעת ההפעלה. התוכן שנחשב חדש יותר ידרוס את הישן יותר (לפי זמן שינוי).\n> בדרך כלל בטוח אם הקבצים המקומיים הם אכן חדשים ביותר. עם זאת, עלול לגרום לבעיות אם לקובץ יש חותמת זמן חדשה יותר אך תוכן ישן יותר (כמו `welcome.md` ראשוני).\n> שיטה זו משתמשת בפחות מעבד ומהירה יותר מ-"%{RedFlag.Fetch.Method.FetchSafer}", אך עלולה להוביל לאובדן נתונים אם לא משתמשים בה בזהירות.\n> ## %{RedFlag.Fetch.Method.FetchTraditional}.\n> **תעבורה גבוהה**, **מעבד נמוך**, **סיכון נמוך עד בינוני** (תלוי בפעולה)\n> הכל יימשך מהשרת המרוחד.\n> דומה ל-%{RedFlag.Fetch.Method.FetchSmoother}, אך כל הנתחים נמשכים מהמקור המרוחד.\n> זוהי הדרך המסורתית ביותר למשיכה, צורכת בדרך כלל את רוב תעבורת הרשת והזמן.\n> עם זאת, היא נחשבת לעתים קרובות לשיטה היציבה ביותר מכיוון שהיא הוותיקה והישירה ביותר.', ja: "どのようにフェッチしますか?\n- フェッチ前にローカルデータベースを作成\n **低トラフィック**, **高CPU負荷**, **低リスク**\n 推奨条件...\n - ファイルの整合性に不安がある\n - ファイル数がそれほど多くない\n- フェッチ前にローカルファイルチャンクを作成\n **低トラフィック**, **中程CPU負荷**, **低~中リスク**\n 推奨条件...\n - ファイルがおそらく整合している\n - ファイル数が多い\n- リモートからすべてをフェッチ\n **高トラフィック**, **低CPU負荷**, **低~中リスク**\n\n>[!INFO]- 詳細\n> ## フェッチ前にローカルデータベースを作成\n> **低トラフィック**, **高CPU負荷**, **低リスク**\n> このオプションは、リモートからデータをフェッチする前に、既存のローカルファイルを使用してローカルデータベースを作成します。\n> ローカルとリモートの両方に一致するファイルがある場合、差分のみが転送されます。\n> ただし、両方の場所に存在するファイルは最初は競合ファイルとして処理されます。実際に競合していなければ自動的に解決されますが、この処理には時間がかかる場合があります。\n> これは一般的に最も安全な方法で、データ損失のリスクを最小限に抑えます。\n> ## フェッチ前にローカルファイルチャンクを作成\n> **低トラフィック**, **中程CPU負荷**, **低~中リスク**(操作による)\n> このオプションは、最初にローカルファイルからデータベース用のチャンクを作成し、その後データをフェッチします。そのため、ローカルにないチャンクのみが転送されます。ただし、すべてのメタデータはリモートから取得されます。\n> ローカルファイルは起動時にこのメタデータと比較されます。新しいと判断されたコンテンツ(更新日時による)が古いものを上書きします。この結果はリモートデータベースに同期されます。\n> ローカルファイルが本当に最新のタイムスタンプであれば一般的に安全です。ただし、ファイルのタイムスタンプが新しくてもコンテンツが古い場合(初期の`welcome.md`など)は問題が発生する可能性があります。\n> これは\"フェッチ前にローカルデータベースを作成\"よりCPU使用量が少なく高速ですが、注意しないとデータ損失につながる可能性があります。\n> ## リモートからすべてをフェッチ\n> **高トラフィック**, **低CPU負荷**, **低~中リスク**(操作による)\n> すべてのデータがリモートからフェッチされます。\n> フェッチ前にローカルファイルチャンクを作成と似ていますが、すべてのチャンクがリモートからフェッチされます。\n> これは最も従来のフェッチ方法で、通常最もネットワークトラフィックと時間を消費します。'フェッチ前にローカルファイルチャンクを作成'オプションと同様のリモートファイル上書きのリスクがあります。\n> ただし、最も歴史があり簡単なアプローチであるため、最も安定した方法と見なされることが多いです。", ko: "어떻게 가져오시겠습니까?\n- 가져오기 전에 로컬 데이터베이스를 한 번 생성. (권장)\n **낮은 트래픽**, **높은 CPU**, **낮은 위험**\n- 가져오기 전에 로컬 파일 청크 생성.\n **낮은 트래픽**, **보통 CPU**, **낮음에서 보통 위험**\n- 원격에서 모든 것 가져오기.\n **높은 트래픽**, **낮은 CPU**, **낮음에서 보통 위험**\n\n>[!INFO]- 세부 사항\n> ## 가져오기 전에 로컬 데이터베이스를 한 번 생성. (권장)\n> **낮은 트래픽**, **높은 CPU**, **낮은 위험**\n> 이 옵션은 원격 소스에서 데이터를 가져오기 전에 기존 로컬 파일을 사용하여 로컬 데이터베이스를 먼저 생성합니다.\n> 로컬과 원격 모두에 일치하는 파일이 있으면 둘 사이의 차이점만 전송됩니다.\n> 하지만 두 위치 모두에 있는 파일은 초기에 충돌 파일로 처리됩니다. 실제로 충돌하지 않는다면 자동으로 해결되지만 이 과정은 시간이 걸릴 수 있습니다.\n> 이는 일반적으로 가장 안전한 방법으로 데이터 손실 위험을 최소화합니다.\n> ## 가져오기 전에 로컬 파일 청크 생성.\n> **낮은 트래픽**, **보통 CPU**, **낮음에서 보통 위험** (작업에 따라)\n> 이 옵션은 먼저 로컬 파일에서 데이터베이스용 청크를 생성한 다음 데이터를 가져옵니다. 따라서 로컬에 없는 청크만 전송됩니다. 하지만 모든 메타데이터는 원격 소스에서 가져옵니다.\n> 그런 다음 로컬 파일이 시작 시 이 메타데이터와 비교됩니다. 더 새로운 것으로 간주되는 콘텐츠가 오래된 것을 덮어씁니다(수정 시간 기준). 이 결과는 원격 데이터베이스에 다시 동기화됩니다.\n> 로컬 파일이 실제로 최신 타임스탬프라면 일반적으로 안전합니다. 하지만 파일이 더 새로운 타임스탬프를 가지고 있지만 더 오래된 콘텐츠를 가지고 있다면(초기 `welcome.md`처럼) 문제가 발생할 수 있습니다.\n> 이는 \"가져오기 전에 로컬 데이터베이스를 한 번 생성\"보다 CPU를 덜 사용하고 더 빠르지만 주의 깊게 사용하지 않으면 데이터 손실로 이어질 수 있습니다.\n> ## 원격에서 모든 것 가져오기.\n> **높은 트래픽**, **낮은 CPU**, **낮음에서 보통 위험** (작업에 따라)\n> 모든 것이 원격에서 가져와집니다.\n> 가져오기 전에 로컬 파일 청크 생성와 유사하지만 모든 청크가 원격 소스에서 가져와집니다.\n> 이는 가장 전통적인 가져오기 방법으로 일반적으로 가장 많은 네트워크 트래픽과 시간을 소모합니다. 또한 '가져오기 전에 로컬 파일 청크 생성' 옵션과 유사하게 원격 파일을 덮어쓸 위험이 있습니다.\n> 하지만 가장 오래되고 가장 직접적인 접근 방식이기 때문에 종종 가장 안정적인 방법으로 간주됩니다.", - ru: "Как вы хотите загрузить?", - zh: "How do you want to fetch?\n- Create a local database once before fetching.\n **Low Traffic**, **High CPU**, **Low Risk**\n Recommended if ...\n - Files possibly inconsistent\n - Files were not so much\n- Create local file chunks before fetching.\n **Low Traffic**, **Moderate CPU**, **Low to Moderate Risk**\n Recommended if ...\n - Files probably consistent\n - You have a lot of files.\n- Fetch everything from the remote.\n **High Traffic**, **Low CPU**, **Low to Moderate Risk**\n\n>[!INFO]- Details\n> ## Create a local database once before fetching.\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> ## Create local file chunks before fetching.\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 \"Create a local database once before fetching\", but it may lead to data loss if not used carefully.\n> ## Fetch everything from the remote.\n> **High Traffic**, **Low CPU**, **Low to Moderate Risk** (depending operation)\n> All things will be fetched from the remote.\n> Similar to the Create local file chunks before fetching, 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 'Create local file chunks before fetching' option.\n> However, it is often considered the most stable method because it is the longest-established and most straightforward approach.", + ru: "Как вы хотите выполнить получение?\n- Создать локальную базу данных перед загрузкой.\n **Меньше трафика**, **больше нагрузки на CPU**, **низкий риск**\n Рекомендуется, если ...\n - файлы могут быть несогласованы\n - файлов не слишком много\n- Создать локальные чанки перед загрузкой.\n **Меньше трафика**, **умеренная нагрузка на CPU**, **низкий или умеренный риск**\n Рекомендуется, если ...\n - файлы, скорее всего, согласованы\n - у вас много файлов.\n- Загрузить всё с удалённого.\n **Больше трафика**, **меньше нагрузки на CPU**, **низкий или умеренный риск**\n\n>[!INFO]- Подробности\n> ## Создать локальную базу данных перед загрузкой.\n> **Меньше трафика**, **больше нагрузки на CPU**, **низкий риск**\n> Этот вариант сначала создаёт локальную базу данных из существующих локальных файлов, а затем получает данные из удалённого источника.\n> Если совпадающие файлы есть и локально, и удалённо, будут переданы только различия между ними.\n> Однако файлы, присутствующие в обоих местах, сначала будут обработаны как конфликтующие. Если реального конфликта нет, они будут разрешены автоматически, но это может занять время.\n> Обычно это самый безопасный способ, минимизирующий риск потери данных.\n> ## Создать локальные чанки перед загрузкой.\n> **Меньше трафика**, **умеренная нагрузка на CPU**, **низкий или умеренный риск** (зависит от операции)\n> Этот вариант сначала создаёт чанки из локальных файлов для базы данных, а затем получает данные. Поэтому передаются только отсутствующие локально чанки. Но все метаданные берутся из удалённого источника.\n> При запуске локальные файлы сравниваются с этими метаданными. Содержимое, которое считается более новым, перезаписывает старое (по времени изменения). Затем результат синхронизируется обратно в удалённую базу данных.\n> Обычно это безопасно, если локальные файлы действительно имеют самый новый timestamp. Но возможны проблемы, если файл имеет более новый timestamp, но более старое содержимое (например, начальный `welcome.md`).\n> Это использует меньше CPU и работает быстрее, чем \"Создать локальную базу данных перед загрузкой\", но при неосторожном использовании может привести к потере данных.\n> ## Загрузить всё с удалённого.\n> **Больше трафика**, **меньше нагрузки на CPU**, **низкий или умеренный риск** (зависит от операции)\n> Всё будет получено из удалённого источника.\n> Похоже на Создать локальные чанки перед загрузкой, но все чанки загружаются из удалённого источника.\n> Это самый традиционный способ получения, обычно требующий больше всего сетевого трафика и времени. Он также несёт риск перезаписи удалённых файлов, похожий на вариант 'Создать локальные чанки перед загрузкой'.\n> Однако его часто считают самым стабильным, потому что это самый старый и прямой подход.", + zh: '您希望如何获取数据?\n- 获取前先创建本地数据库\n **低流量**、**高 CPU 占用**、**低风险**\n 推荐用于...\n - 文件可能不一致\n - 文件数量不多\n- 获取前先创建本地文件块\n **低流量**、**中等 CPU 占用**、**低到中等风险**\n 推荐用于...\n - 文件可能一致\n - 文件数量较多\n- 从远程获取所有数据\n **高流量**、**低 CPU 占用**、**低到中等风险**\n\n>[!INFO]- 详细信息\n> ## 获取前先创建本地数据库\n> **低流量**、**高 CPU 占用**、**低风险**\n> 此选项首先使用现有本地文件创建本地数据库,然后从远程源获取数据。\n> 如果本地和远程存在匹配的文件,则仅传输两者之间的差异。\n> 但是,两端都存在的文件最初会被视为冲突文件。如果它们实际上没有冲突,将自动解决,但此过程可能需要时间。\n> 这通常是最安全的方法,能最大限度地降低数据丢失风险。\n> ## 获取前先创建本地文件块\n> **低流量**、**中等 CPU 占用**、**低到中等风险**(取决于操作)\n> 此选项首先从本地文件创建数据块,然后获取数据。因此,仅传输本地缺少的数据块。但是,所有元数据均从远程源获取。\n> 启动时会将本地文件与该元数据进行比较。内容较新的一方将覆盖较旧的一方(按修改时间)。然后将结果同步回远程数据库。\n> 如果本地文件的时间戳确实是最新的一般来说是安全的。但是,如果文件具有较新的时间戳但内容较旧(如初始的 `welcome.md`),则可能导致问题。\n> 此方法使用较少的 CPU 且比"获取前先创建本地数据库"更快,但如果使用不当可能导致数据丢失。\n> ## 从远程获取所有数据\n> **高流量**、**低 CPU 占用**、**低到中等风险**(取决于操作)\n> 所有数据将从远程获取。\n> 与 获取前先创建本地文件块 类似,但所有数据块都从远程源获取。\n> 这是最传统的获取方式,通常消耗最多的网络流量和时间。它也存在与"获取前先创建本地文件块"选项类似的覆盖远程文件的风险。\n> 但是,由于它是最久经考验和最直接的方法,通常被认为是最稳定的。', + "zh-tw": + '您希望如何獲取資料?\n- 獲取前先建立本地資料庫\n **低流量**、**高 CPU 佔用**、**低風險**\n 推薦用於...\n - 檔案可能不一致\n - 檔案數量不多\n- 獲取前先建立本地檔案塊\n **低流量**、**中等 CPU 佔用**、**低到中等風險**\n 推薦用於...\n - 檔案可能一致\n - 檔案數量較多\n- 從遠端獲取所有資料\n **高流量**、**低 CPU 佔用**、**低到中等風險**\n\n>[!INFO]- 詳細資訊\n> ## 獲取前先建立本地資料庫\n> **低流量**、**高 CPU 佔用**、**低風險**\n> 此選項首先使用現有本地檔案建立本地資料庫,然後從遠端源獲取資料。\n> 如果本地和遠端存在匹配的檔案,則僅傳輸兩者之間的差異。\n> 但是,兩端都存在的檔案最初會被視為衝突檔案。如果它們實際上沒有衝突,將自動解決,但此過程可能需要時間。\n> 這通常是最安全的方法,能最大限度地降低資料丟失風險。\n> ## 獲取前先建立本地檔案塊\n> **低流量**、**中等 CPU 佔用**、**低到中等風險**(取決於操作)\n> 此選項首先從本地檔案建立資料塊,然後獲取資料。因此,僅傳輸本地缺少的資料塊。但是,所有後設資料均從遠端源獲取。\n> 啟動時會將本地檔案與該後設資料進行比較。內容較新的一方將覆蓋較舊的一方(按修改時間)。然後將結果同步回遠端資料庫。\n> 如果本地檔案的時間戳確實是最新的一般來說是安全的。但是,如果檔案具有較新的時間戳但內容較舊(如初始的 `welcome.md`),則可能導致問題。\n> 此方法使用較少的 CPU 且比"獲取前先建立本地資料庫"更快,但如果使用不當可能導致資料丟失。\n> ## 從遠端獲取所有資料\n> **高流量**、**低 CPU 佔用**、**低到中等風險**(取決於操作)\n> 所有資料將從遠端獲取。\n> 與 獲取前先建立本地檔案塊 類似,但所有資料塊都從遠端源獲取。\n> 這是最傳統的獲取方式,通常消耗最多的網路流量和時間。它也存在與"獲取前先建立本地檔案塊"選項類似的覆蓋遠端檔案的風險。\n> 但是,由於它是最久經考驗和最直接的方法,通常被認為是最穩定的。', }, "RedFlag.Fetch.Method.FetchSafer": { def: "Create a local database once before fetching", + de: "Erstellen Sie eine lokale Datenbank einmal vor dem Abrufen", + es: "Cree una base de datos local una vez antes de buscarla", fr: "Créer une base locale avant de récupérer", he: "צור מסד נתונים מקומי לפני המשיכה", ja: "フェッチ前にローカルデータベースを作成", ko: "가져오기 전에 로컬 데이터베이스를 한 번 생성", ru: "Создать локальную базу данных перед загрузкой", - zh: "Create a local database once before fetching", + zh: "获取前先创建本地数据库", + "zh-tw": "獲取前先建立本地資料庫", }, "RedFlag.Fetch.Method.FetchSmoother": { def: "Create local file chunks before fetching", + de: "Erstellen Sie lokale Datei-Chunks vor dem Abruf", + es: "Cree fragmentos de archivos locales antes de recuperarlos", fr: "Créer des fragments de fichiers locaux avant de récupérer", he: "צור נתחי קבצים מקומיים לפני המשיכה", ja: "フェッチ前にローカルファイルチャンクを作成", ko: "가져오기 전에 로컬 파일 청크 생성", ru: "Создать локальные чанки перед загрузкой", - zh: "Create local file chunks before fetching", + zh: "获取前先创建本地文件块", + "zh-tw": "獲取前先建立本地檔案塊", }, "RedFlag.Fetch.Method.FetchTraditional": { def: "Fetch everything from the remote", + de: "Alles aus der Ferne holen", + es: "Obtener todo desde el control remoto", fr: "Tout récupérer depuis le distant", he: "משוך הכל מהשרת המרוחד", ja: "リモートからすべてをフェッチ", ko: "원격에서 모든 것 가져오기", ru: "Загрузить всё с удалённого", - zh: "Fetch everything from the remote", + zh: "从远程获取所有数据", + "zh-tw": "從遠端獲取所有資料", }, "RedFlag.Fetch.Method.Title": { def: "How do you want to fetch?", + de: "Wie wollen Sie holen?", + es: "¿Cómo desea buscar?", fr: "Comment voulez-vous récupérer ?", he: "כיצד ברצונך למשוך?", ja: "どのようにフェッチしますか?", ko: "어떻게 가져오시겠습니까?", ru: "Как вы хотите загрузить?", - zh: "How do you want to fetch?", + zh: "您希望如何获取数据?", + "zh-tw": "您希望如何獲取資料?", + }, + "RedFlag.FetchRemoteConfig.Applied": { + def: "Remote configuration applied.", + de: "Remote configuration applied.", + es: "Remote configuration applied.", + ja: "Remote configuration applied.", + ko: "Remote configuration applied.", + ru: "Remote configuration applied.", + zh: "已应用远程配置。", + "zh-tw": "已應用遠端配置。", }, "RedFlag.FetchRemoteConfig.Buttons.Cancel": { def: "No, use local settings", + de: "Nein, lokale Einstellungen verwenden", + es: "No, usa la configuración local", fr: "Non, utiliser les paramètres locaux", he: "לא, השתמש בהגדרות המקומיות", ja: "いいえ、ローカル設定を使用", + ko: "아니요, 이 장치의 설정 유지", ru: "Нет, использовать локальные настройки", - zh: "No, use local settings", + zh: "否,使用本地设置", + "zh-tw": "否,使用本地設定", }, "RedFlag.FetchRemoteConfig.Buttons.Fetch": { def: "Yes, fetch and apply remote settings", + de: "Ja, holen und Remote-Einstellungen anwenden", + es: "Sí, buscar y aplicar configuraciones remotas", fr: "Oui, récupérer et appliquer les paramètres distants", he: "כן, משוך והחל הגדרות מרוחקות", ja: "はい、リモート設定を取得して適用", + ko: "예, 원격 설정 가져오기", ru: "Да, загрузить и применить удалённые настройки", - zh: "Yes, fetch and apply remote settings", + zh: "是,获取并应用远程设置", + "zh-tw": "是,獲取並應用遠端設定", + }, + "RedFlag.FetchRemoteConfig.Buttons.Retry": { + def: "Retry (recommended)", + de: "Retry (recommended)", + es: "Retry (recommended)", + ja: "Retry (recommended)", + ko: "Retry (recommended)", + ru: "Retry (recommended)", + zh: "重试(推荐)", + "zh-tw": "重試(建議)", + }, + "RedFlag.FetchRemoteConfig.Buttons.SkipAndProceed": { + def: "Skip and proceed", + de: "Skip and proceed", + es: "Skip and proceed", + ja: "Skip and proceed", + ko: "Skip and proceed", + ru: "Skip and proceed", + zh: "跳过并继续", + "zh-tw": "跳過並繼續", + }, + "RedFlag.FetchRemoteConfig.FailedMessage": { + def: "Could not fetch configuration from remote. If you are new to the Self-hosted LiveSync, this might be expected. If not, you should check your network or server settings.", + de: "Could not fetch configuration from remote. If you are new to the Self-hosted LiveSync, this might be expected. If not, you should check your network or server settings.", + es: "Could not fetch configuration from remote. If you are new to the Self-hosted LiveSync, this might be expected. If not, you should check your network or server settings.", + ja: "Could not fetch configuration from remote. If you are new to the Self-hosted LiveSync, this might be expected. If not, you should check your network or server settings.", + ko: "Could not fetch configuration from remote. If you are new to the Self-hosted LiveSync, this might be expected. If not, you should check your network or server settings.", + ru: "Could not fetch configuration from remote. If you are new to the Self-hosted LiveSync, this might be expected. If not, you should check your network or server settings.", + zh: "无法从远程获取配置。如果您是 Self-hosted LiveSync 新用户,这可能是正常情况。否则,请检查网络或服务器设置。", + "zh-tw": + "無法從遠端獲取配置。如果您是 Self-hosted LiveSync 新使用者,這可能是正常情況。否則,請檢查網路或伺服器設定。", + }, + "RedFlag.FetchRemoteConfig.FailedTitle": { + def: "Fetch Remote Configuration Failed", + de: "Fetch Remote Configuration Failed", + es: "Fetch Remote Configuration Failed", + ja: "Fetch Remote Configuration Failed", + ko: "Fetch Remote Configuration Failed", + ru: "Fetch Remote Configuration Failed", + zh: "获取远程配置失败", + "zh-tw": "獲取遠端配置失敗", + }, + "RedFlag.FetchRemoteConfig.MatchesLocal": { + def: "Remote configuration matches local configuration. No changes applied.", + de: "Remote configuration matches local configuration. No changes applied.", + es: "Remote configuration matches local configuration. No changes applied.", + ja: "Remote configuration matches local configuration. No changes applied.", + ko: "Remote configuration matches local configuration. No changes applied.", + ru: "Remote configuration matches local configuration. No changes applied.", + zh: "远程配置与本地配置一致。未应用任何更改。", + "zh-tw": "遠端配置與本地配置一致。未應用任何更改。", }, "RedFlag.FetchRemoteConfig.Message": { def: "Do you want to fetch and apply remotely stored preference settings to the device?", + de: "Möchten Sie abrufen und remote gespeicherte Präferenzeinstellungen auf das Gerät anwenden?", + es: "¿Quiere recuperar y aplicar configuraciones de preferencias almacenadas de forma remota al dispositivo?", fr: "Voulez-vous récupérer et appliquer les préférences stockées à distance sur cet appareil ?", he: "האם ברצונך למשוך ולהחיל הגדרות שמורות מרחוק על מכשיר זה?", ja: "リモートに保存された設定を取得して、このデバイスに適用しますか?", + ko: "원격 데이터베이스에서 설정을 가져오시겠습니까?", ru: "Вы хотите загрузить и применить удалённые настройки?", - zh: "Do you want to fetch and apply remotely stored preference settings to the device?", + zh: "是否获取并应用远程存储的偏好设置到本设备?", + "zh-tw": "是否獲取並應用遠端儲存的偏好設定到本裝置?", + }, + "RedFlag.FetchRemoteConfig.NotApplied": { + def: "Remote configuration not applied.", + de: "Remote configuration not applied.", + es: "Remote configuration not applied.", + ja: "Remote configuration not applied.", + ko: "Remote configuration not applied.", + ru: "Remote configuration not applied.", + zh: "未应用远程配置。", + "zh-tw": "未應用遠端配置。", + }, + "RedFlag.FetchRemoteConfig.SettingsDiffered": { + def: "Your settings differed slightly from the server's. The plug-in has supplemented the incompatible parts with the server settings!", + de: "Your settings differed slightly from the server's. The plug-in has supplemented the incompatible parts with the server settings!", + es: "Your settings differed slightly from the server's. The plug-in has supplemented the incompatible parts with the server settings!", + ja: "Your settings differed slightly from the server's. The plug-in has supplemented the incompatible parts with the server settings!", + ko: "Your settings differed slightly from the server's. The plug-in has supplemented the incompatible parts with the server settings!", + ru: "Your settings differed slightly from the server's. The plug-in has supplemented the incompatible parts with the server settings!", + zh: "您的设置与服务器略有不同。插件已使用服务器设置补充不兼容的部分!", + "zh-tw": "您的設定與伺服器略有不同。外掛程式已使用伺服器設定補充不相容的部分!", }, "RedFlag.FetchRemoteConfig.Title": { def: "Fetch Remote Configuration", + de: "Fetch Remote Konfiguration", + es: "Obtener configuración remota", fr: "Récupérer la configuration distante", he: "משוך תצורה מרוחקת", ja: "リモート設定の取得", + ko: "원격 설정 가져오기", ru: "Загрузить удалённую конфигурацию", - zh: "Fetch Remote Configuration", + zh: "获取远程配置", + "zh-tw": "獲取遠端配置", + }, + "RedFlag.Log.FetchEverythingCancelled": { + def: "Fetch everything cancelled by user.", + de: "Fetch everything cancelled by user.", + es: "Fetch everything cancelled by user.", + ja: "Fetch everything cancelled by user.", + ko: "Fetch everything cancelled by user.", + ru: "Fetch everything cancelled by user.", + zh: "用户已取消获取全部数据。", + "zh-tw": "使用者已取消獲取全部資料。", + }, + "RedFlag.Log.FetchEverythingCompleted": { + def: "Fetch everything operation completed. Vault files will be gradually synced.", + de: "Fetch everything operation completed. Vault files will be gradually synced.", + es: "Fetch everything operation completed. Vault files will be gradually synced.", + ja: "Fetch everything operation completed. Vault files will be gradually synced.", + ko: "Fetch everything operation completed. Vault files will be gradually synced.", + ru: "Fetch everything operation completed. Vault files will be gradually synced.", + zh: "获取全部数据操作已完成。Vault 文件将逐步同步。", + "zh-tw": "獲取全部資料操作已完成。Vault 檔案將逐步同步。", + }, + "RedFlag.Log.RebuildEverythingCancelled": { + def: "Rebuild everything cancelled by user.", + de: "Rebuild everything cancelled by user.", + es: "Rebuild everything cancelled by user.", + ja: "Rebuild everything cancelled by user.", + ko: "Rebuild everything cancelled by user.", + ru: "Rebuild everything cancelled by user.", + zh: "用户已取消重建全部数据。", + "zh-tw": "使用者已取消重建全部資料。", + }, + "RedFlag.Log.RebuildEverythingCompleted": { + def: "Rebuild everything operation completed.", + de: "Rebuild everything operation completed.", + es: "Rebuild everything operation completed.", + ja: "Rebuild everything operation completed.", + ko: "Rebuild everything operation completed.", + ru: "Rebuild everything operation completed.", + zh: "重建全部数据操作已完成。", + "zh-tw": "重建全部資料操作已完成。", + }, + "RedFlag.Log.VaultInitialisationError": { + def: "Error during vault initialisation.", + de: "Error during vault initialisation.", + es: "Error during vault initialisation.", + ja: "Error during vault initialisation.", + ko: "Error during vault initialisation.", + ru: "Error during vault initialisation.", + zh: "Vault 初始化时出错。", + "zh-tw": "Vault 初始化時發生錯誤。", + }, + "RedFlag.Log.VaultInitialisationProcessError": { + def: "Error during vault initialisation process.", + de: "Error during vault initialisation process.", + es: "Error during vault initialisation process.", + ja: "Error during vault initialisation process.", + ko: "Error during vault initialisation process.", + ru: "Error during vault initialisation process.", + zh: "Vault 初始化流程中出错。", + "zh-tw": "Vault 初始化流程中發生錯誤。", + }, + "RedFlag.ResumeProcessingPrompt": { + def: "Do you want to resume file and database processing, and restart obsidian now?", + de: "Do you want to resume file and database processing, and restart obsidian now?", + es: "Do you want to resume file and database processing, and restart obsidian now?", + ja: "Do you want to resume file and database processing, and restart obsidian now?", + ko: "Do you want to resume file and database processing, and restart obsidian now?", + ru: "Do you want to resume file and database processing, and restart obsidian now?", + zh: "是否恢复文件和数据库处理,并立即重启 Obsidian?", + "zh-tw": "是否恢復檔案和資料庫處理,並立即重新啟動 Obsidian?", }, "Reduces storage space by discarding all non-latest revisions. This requires the same amount of free space on the remote server and the local client.": { @@ -5982,6 +7543,7 @@ export const allMessages = { }, "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", + de: "Reduzieren der Frequenz, mit der On-Disk-Änderungen in die DB reflektiert werden", 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", he: "הפחת את תדירות השתקפות שינויים בדיסק למסד הנתונים", @@ -5989,9 +7551,11 @@ export const allMessages = { ko: "디스크 변경 사항이 데이터베이스에 반영되는 빈도를 줄입니다", ru: "Уменьшение частоты отражения изменений с диска в БД", zh: "降低将磁盘上的更改反映到数据库中的频率", + "zh-tw": "降低將磁碟上的更改反映到資料庫中的頻率", }, Region: { def: "Region", + de: "Region", es: "Región", fr: "Région", he: "אזור", @@ -5999,9 +7563,11 @@ export const allMessages = { ko: "지역", ru: "Регион", zh: "区域", + "zh-tw": "區域", }, Remediation: { def: "Remediation", + de: "Problembehebung", es: "Remediación", ja: "是正", ko: "복구 조치", @@ -6011,6 +7577,7 @@ export const allMessages = { }, "Remediation Setting Changed": { def: "Remediation Setting Changed", + de: "Problembehebungs-Einstellung geändert", es: "La configuración de remediación cambió", ja: "是正設定が変更されました", ko: "복구 설정이 변경됨", @@ -6020,6 +7587,7 @@ export const allMessages = { }, "Remote Database Tweak (In sunset)": { def: "Remote Database Tweak (In sunset)", + de: "Remote-Datenbank-Optimierung (wird eingestellt)", es: "Ajustes de base de datos remota (en retirada)", ja: "リモートデータベースの調整 (廃止予定)", ko: "원격 데이터베이스 조정 (폐기 예정)", @@ -6029,6 +7597,7 @@ export const allMessages = { }, "Remote Databases": { def: "Remote Databases", + de: "Remote-Datenbanken", es: "Bases de datos remotas", ja: "リモートデータベース", ko: "원격 데이터베이스", @@ -6038,6 +7607,7 @@ export const allMessages = { }, "Remote name": { def: "Remote name", + de: "Remote-Name", es: "Nombre del remoto", ja: "リモート名", ko: "원격 이름", @@ -6047,6 +7617,7 @@ export const allMessages = { }, "Remote server type": { def: "Remote server type", + de: "Typ des Remoteservers", es: "Tipo de servidor remoto", fr: "Type de serveur distant", he: "סוג שרת מרוחד", @@ -6054,9 +7625,11 @@ export const allMessages = { ko: "원격 서버 유형", ru: "Тип удалённого сервера", zh: "远程服务器类型", + "zh-tw": "遠端伺服器型別", }, "Remote Type": { def: "Remote Type", + de: "Fernbedienung", es: "Tipo de remoto", fr: "Type de distant", he: "סוג מרוחד", @@ -6064,9 +7637,11 @@ export const allMessages = { ko: "원격 유형", ru: "Удалённый тип", zh: "远程类型", + "zh-tw": "遠端型別", }, Rename: { def: "Rename", + de: "Umbenennen", es: "Renombrar", ja: "名前を変更", ko: "이름 바꾸기", @@ -6076,114 +7651,152 @@ export const allMessages = { }, "Replicator.Dialogue.Locked.Action.Dismiss": { def: "Cancel for reconfirmation", + de: "Zurück zur Bestätigung", + es: "Cancelar para reconfirmación", fr: "Annuler pour reconfirmer", he: "ביטול לאישור מחדש", ja: "再確認のためキャンセル", ko: "재확인을 위해 취소", ru: "Отмена для подтверждения", - zh: "Cancel for reconfirmation", + zh: "取消以重新确认", + "zh-tw": "取消以重新確認", }, "Replicator.Dialogue.Locked.Action.Fetch": { def: "Reset Synchronisation on This Device", + de: "Synchronisation auf diesem Gerät zurücksetzen", + es: "Restablecer sincronización en este dispositivo", fr: "Réinitialiser la synchronisation sur cet appareil", he: "אפס סנכרון במכשיר זה", ja: "このデバイスの同期をリセット", ko: "원격 데이터베이스에서 모든 것을 다시 가져오기", ru: "Сбросить синхронизацию на этом устройстве", - zh: "Reset Synchronisation on This Device", + zh: "重置此设备上的同步", + "zh-tw": "重置此裝置上的同步", }, "Replicator.Dialogue.Locked.Action.Unlock": { def: "Unlock the remote database", + de: "Entsperren Sie die Remote-Datenbank", + es: "Desbloquear la base de datos remota", fr: "Déverrouiller la base distante", he: "בטל נעילת מסד הנתונים המרוחד", ja: "リモートデータベースのロックを解除", ko: "원격 데이터베이스 잠금 해제", ru: "Разблокировать удалённую базу данных", - zh: "Unlock the remote database", + zh: "解锁远程数据库", + "zh-tw": "解鎖遠端資料庫", }, "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- Reset Synchronisation on This Device\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- Unlock the remote database\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- Cancel for reconfirmation\n This will cancel the operation. And we will asked again on next request.\n", + de: "Die entfernte Datenbank ist gesperrt. Das liegt an einem Neuaufbau auf einem der Geräte.\nDieses Gerät soll daher die Verbindung zurückhalten, um eine Beschädigung der Datenbank zu vermeiden.\n\nEs gibt drei mögliche Aktionen:\n\n- %{Replicator.Dialogue.Locked.Action.Fetch}\n Der bevorzugte und zuverlässigste Weg. Die lokale Datenbank wird einmal verworfen und alle Synchronisierungsinformationen werden erneut aus der entfernten Datenbank übernommen. In den meisten Fällen ist das sicher. Es dauert jedoch etwas und sollte bei stabiler Netzwerkverbindung durchgeführt werden.\n- %{Replicator.Dialogue.Locked.Action.Unlock}\n Diese Methode sollte nur verwendet werden, wenn wir bereits durch andere Replikationsmethoden zuverlässig synchronisiert sind. Das bedeutet nicht einfach, dass die Dateien gleich aussehen. Wenn du unsicher bist, solltest du sie vermeiden.\n- %{Replicator.Dialogue.Locked.Action.Dismiss}\n Dadurch wird der Vorgang abgebrochen. Beim nächsten Versuch wird erneut gefragt.\n", + es: "La base de datos remota está bloqueada. Esto se debe a una reconstrucción en una de las terminales.\nPor lo tanto, se solicita al dispositivo que retenga la conexión para evitar daños en la base de datos.\n\nHay tres opciones que podemos hacer:\n\n- Restablecer sincronización en este dispositivo\n La forma más preferida y confiable. Esto eliminará la base de datos local una vez y restablecerá toda la información de sincronización de la base de datos remota nuevamente. En la mayoría de los casos, podemos realizar esto de manera segura. Sin embargo, lleva algo de tiempo y debe realizarse en una red estable.\n- Desbloquear la base de datos remota\n Este método solo se puede utilizar si ya estamos sincronizados de manera confiable mediante otros métodos de replicación. Esto no significa simplemente que tengamos los mismos archivos. Si no estás seguro, debes evitarlo.\n- Cancelar para reconfirmación\n Esto cancelará la operación. Y le preguntaremos nuevamente en la próxima solicitud.\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- Réinitialiser la synchronisation sur cet appareil\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- Déverrouiller la base distante\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- Annuler pour reconfirmer\n Ceci annule l'opération. Vous serez à nouveau interrogé à la prochaine requête.\n", he: "מסד הנתונים המרוחד נעול. הסיבה היא בנייה מחדש באחד הטרמינלים.\nלכן המכשיר מתבקש להמנע מחיבור כדי למנוע פגיעה במסד הנתונים.\n\nקיימות שלוש אפשרויות:\n\n- %{Replicator.Dialogue.Locked.Action.Fetch}\n הדרך המועדפת והאמינה ביותר. פעולה זו תמחק את מסד הנתונים המקומי פעם,\n ותאפס את כל מידע הסנכרון ממסד הנתונים המרוחד מחדש. ברוב המקרים ניתן\n לעשות זאת בבטחה. עם זאת, דורשת זמן ויש לבצע ברשת יציבה.\n- %{Replicator.Dialogue.Locked.Action.Unlock}\n ניתן להשתמש בשיטה זו רק אם כבר מסונכרנים באופן אמין בשיטות שכפול\n אחרות. פשוט לא מספיק שיש אותם קבצים. אם אינך בטוח, הימנע מכך.\n- %{Replicator.Dialogue.Locked.Action.Dismiss}\n פעולה זו תבטל את הפעולה. תתבקש שוב בבקשה הבאה.\n", ja: "リモートデータベースがロックされています。これはいずれかの端末での再構築が原因です。\nデータベースの破損を避けるため、このデバイスは接続を保留するよう求められています。\n\n3つのオプションがあります:\n\n- このデバイスの同期をリセット\n 最も推奨される信頼性の高い方法です。ローカルデータベースを一度破棄し、リモートデータベースからすべての同期情報を再取得します。ほとんどの場合、これは安全に実行できます。ただし、時間がかかり、安定したネットワークで実行する必要があります。\n- リモートデータベースのロックを解除\n この方法は、他のレプリケーション(複製)方法ですでに確実に同期されている場合のみ使用できます。単に同じファイルがあるという意味ではありません。確信がない場合は避けてください。\n- 再確認のためキャンセル\n 操作をキャンセルします。次回のリクエスト時に再度確認されます。\n", ko: "원격 데이터베이스가 잠겨 있습니다. 이는 일부 터미널에서 데이터베이스를 재구축했기 때문입니다.\n따라서 현재 기기는 데이터베이스 손상을 방지하기 위해 연결을 일시적으로 보류해야 합니다.\n\n선택할 수 있는 세 가지 방법이 있습니다:\n\n- 원격 데이터베이스에서 모든 것을 다시 가져오기\n 가장 권장되고 신뢰할 수 있는 방법입니다. 로컬 데이터베이스를 초기화한 뒤, 원격 데이터베이스의 전체 데이터를 다시 가져옵니다. 대부분의 경우 안전하게 수행할 수 있으나, 시간이 다소 걸리며 안정적인 네트워크 환경에서 진행해야 합니다.\n- 원격 데이터베이스 잠금 해제\n 이 방법은 다른 동기화 방식으로 이미 완전하고 안정적으로 동기화된 경우에만 사용할 수 있습니다. 단순히 파일이 같다는 의미가 아니므로, 확신이 없다면 사용을 피하는 것이 좋습니다.\n- 재확인을 위해 취소\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- Reset Synchronisation on This Device\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- Unlock the remote database\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- Cancel for reconfirmation\n This will cancel the operation. And we will asked again on next request.\n", + ru: "Удалённая база данных заблокирована. Это связано с перестроением на одном из терминалов.\nПоэтому этому устройству предлагается воздержаться от подключения, чтобы избежать повреждения базы данных.\n\nДоступны три варианта:\n\n- Сбросить синхронизацию на этом устройстве\n Самый предпочтительный и надёжный способ. Он один раз удалит локальную базу данных и заново сбросит всю информацию синхронизации из удалённой базы данных. В большинстве случаев это можно выполнить безопасно. Однако это занимает время и должно выполняться при стабильной сети.\n- Разблокировать удалённую базу данных\n Этот способ можно использовать только если мы уже надёжно синхронизированы другими методами репликации. Это не просто означает, что у нас одинаковые файлы. Если вы не уверены, лучше избегать этого варианта.\n- Отмена для подтверждения\n Операция будет отменена. При следующем запросе вопрос будет задан снова.\n", + 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- 重置此设备上的同步\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- 解锁远程数据库\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- 取消以重新确认\n This will cancel the operation. And we will asked again on next request.\n", + "zh-tw": + "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- 重置此裝置上的同步\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- 解鎖遠端資料庫\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- 取消以重新確認\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.", + de: "Es ist alles geplant. Plug-in wird neu gestartet, um es auszuführen.", + es: "Se ha programado recuperar todo. El complemento se reiniciará para ejecutarlo.", fr: "Tout récupérer a été planifié. Le plug-in sera redémarré pour l'exécuter.", he: "משיכה מלאה תוזמנה. הפלאגין יופעל מחדש לביצועה.", ja: "全フェッチがスケジュールされました。プラグインは実行のために再起動されます。", ko: "모든 것 가져오기가 예약되었습니다. 이를 수행하기 위해 플러그인이 재시작됩니다.", ru: "Загрузка всего запланирована. Плагин будет перезапущен.", - zh: "Fetch all has been scheduled. Plug-in will be restarted to perform it.", + zh: "已安排全部获取操作。插件将重新启动以执行此操作。", + "zh-tw": "已安排全部獲取操作。外掛將重新啟動以執行此操作。", }, "Replicator.Dialogue.Locked.Message.Unlocked": { def: "The remote database has been unlocked. Please retry the operation.", + de: "Die Remote-Datenbank wurde entsperrt. Bitte wiederholen Sie die Operation.", + es: "La base de datos remota ha sido desbloqueada. Vuelva a intentar la operación.", fr: "La base distante a été déverrouillée. Veuillez réessayer l'opération.", he: "מסד הנתונים המרוחד בוטל נעילתו. אנא נסה שוב את הפעולה.", ja: "リモートデータベースのロックが解除されました。操作を再試行してください。", ko: "원격 데이터베이스 잠금이 해제되었습니다. 작업을 다시 시도해 주세요.", ru: "Удалённая база данных разблокирована. Повторите операцию.", - zh: "The remote database has been unlocked. Please retry the operation.", + zh: "远程数据库已解锁。请重试该操作。", + "zh-tw": "遠端資料庫已解鎖。請重試該操作。", }, "Replicator.Dialogue.Locked.Title": { def: "Locked", + de: "Gesperrt", + es: "bloqueado", fr: "Verrouillée", he: "נעול", ja: "ロック中", ko: "잠김", ru: "Заблокировано", - zh: "Locked", + zh: "已锁定", + "zh-tw": "已鎖定", }, "Replicator.Message.Cleaned": { def: "Database cleaning up is in process. replication has been cancelled", + de: "Die Datenbankreinigung erfolgt im Prozess. Wiederholung wurde aufgehoben", + es: "La limpieza de la base de datos está en proceso. la replicación ha sido cancelada", fr: "Nettoyage de la base en cours. La réplication a été annulée", he: "ניקוי מסד הנתונים בתהליך. השכפול בוטל", ja: "データベースのクリーナップ中です。レプリケーション(複製)はキャンセルされました。", ko: "데이터베이스 정리가 진행 중입니다. 복제가 취소되었습니다", ru: "Очистка базы данных в процессе. Репликация отменена", - zh: "Database cleaning up is in process. replication has been cancelled", + zh: "数据库正在清理中,同步已被取消", + "zh-tw": "資料庫正在清理中,同步已被取消", }, "Replicator.Message.InitialiseFatalError": { def: "No replicator is available, this is the fatal error.", + de: "Kein Replikator ist verfügbar, das ist der tödliche Fehler.", + es: "No hay ningún replicador disponible, este es el error fatal.", fr: "Aucun réplicateur disponible, il s'agit d'une erreur fatale.", he: "אין רפליקטור זמין, זוהי שגיאה קריטית.", ja: "レプリケーターが利用できません。これは致命的なエラーです。", ko: "사용 가능한 복제기가 없습니다. 치명적인 오류입니다.", ru: "Репликатор недоступен, это фатальная ошибка.", - zh: "No replicator is available, this is the fatal error.", + zh: "没有可用的同步器,这是致命错误。", + "zh-tw": "沒有可用的同步器,這是致命錯誤。", }, "Replicator.Message.Pending": { def: "Some file events are pending. Replication has been cancelled.", + de: "Einige Dateiereignisse sind anhängig. Die Replikation wurde aufgehoben.", + es: "Algunos eventos de archivos están pendientes. La replicación ha sido cancelada.", fr: "Des événements de fichier sont en attente. La réplication a été annulée.", he: "חלק מאירועי הקבצים ממתינים. השכפול בוטל.", ja: "ファイルイベントが保留中です。レプリケーション(複製)はキャンセルされました。", ko: "일부 파일 이벤트가 대기 중입니다. 복제가 취소되었습니다.", ru: "Некоторые события файлов ожидают. Репликация отменена.", - zh: "Some file events are pending. Replication has been cancelled.", + zh: "部分文件事件待处理。同步已被取消。", + "zh-tw": "部分檔案事件待處理。同步已被取消。", }, "Replicator.Message.SomeModuleFailed": { def: "Replication has been cancelled by some module failure", + de: "Die Replikation wurde durch einen Modulausfall aufgehoben", + es: "La replicación ha sido cancelada por alguna falla del módulo", fr: "La réplication a été annulée suite à l'échec d'un module", he: "השכפול בוטל בשל כשל במודול", ja: "一部のモジュールの失敗によりレプリケーション(複製)がキャンセルされました。", ko: "일부 모듈 실패로 복제가 취소되었습니다", ru: "Репликация отменена из-за сбоя модуля", - zh: "Replication has been cancelled by some module failure", + zh: "由于某些模块失败,同步已被取消", + "zh-tw": "由於某些模組失敗,同步已被取消", }, "Replicator.Message.VersionUpFlash": { def: "An update has been detected. Please open the Settings dialogue and check the Change Log. Replication has been cancelled.", + de: "Ein Update wurde erkannt. Bitte öffnen Sie den Dialog Einstellungen und überprüfen Sie das Change Log. Die Replikation wurde aufgehoben.", + es: "Se ha detectado una actualización. Abra el cuadro de diálogo Configuración y verifique el Registro de cambios. La replicación ha sido cancelada.", 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.", he: "זוהה עדכון. אנא פתח את דיאלוג ההגדרות ובדוק את יומן השינויים. השכפול בוטל.", ja: "更新が検出されました。設定ダイアログを開いて変更ログを確認してください。レプリケーション(複製)はキャンセルされました。", ko: "설정을 열고 메시지를 확인해 주세요. 복제가 취소되었습니다.", ru: "Обновление обнаружено. Откройте настройки и проверьте историю изменений.", - zh: "An update has been detected. Please open the Settings dialogue and check the Change Log. Replication has been cancelled.", + zh: "检测到更新。请打开设置对话框并查看更新日志。同步已被取消。", + "zh-tw": "檢測到更新。請開啟設定對話方塊並檢視更新日誌。同步已被取消。", }, "Requires restart of Obsidian": { def: "Requires restart of Obsidian", + de: "Erfordert Neustart von Obsidian", es: "Requiere reiniciar Obsidian", fr: "Nécessite un redémarrage d'Obsidian", he: "דורש הפעלה מחדש של Obsidian", @@ -6191,9 +7804,11 @@ export const allMessages = { ko: "Obsidian 재시작 필요", ru: "Требуется перезапуск Obsidian", zh: "需要重启 Obsidian", + "zh-tw": "需要重啟 Obsidian", }, "Requires restart of Obsidian.": { def: "Requires restart of Obsidian.", + de: "Erfordert den Neustart von Obsidian.", es: "Requiere reiniciar Obsidian", fr: "Nécessite un redémarrage d'Obsidian.", he: "דורש הפעלה מחדש של Obsidian.", @@ -6201,39 +7816,47 @@ export const allMessages = { ko: "Obsidian 재시작이 필요합니다.", ru: "Требуется перезапуск Obsidian.", zh: "需要重启 Obsidian ", + "zh-tw": "需要重啟 Obsidian ", }, "Rerun Onboarding Wizard": { def: "Rerun Onboarding Wizard", + de: "Einrichtungsassistent erneut ausführen", + es: "Volver a ejecutar el asistente de incorporación", fr: "Relancer l'assistant d'intégration", he: "הרץ שוב את אשף ההכוונה", ja: "オンボーディングウィザードを再実行", ko: "온보딩 마법사 다시 실행", ru: "Перезапустить мастер настройки", zh: "重新运行引导向导", - "zh-tw": "重新執行導覽精靈", + "zh-tw": "重新執行引導向導", }, "Rerun the onboarding wizard to set up Self-hosted LiveSync again.": { def: "Rerun the onboarding wizard to set up Self-hosted LiveSync again.", + de: "Führen Sie den Onboarding-Assistent erneut aus, um Self-hosted LiveSync wieder einzurichten.", + es: "Vuelva a ejecutar el asistente de incorporación para configurar LiveSync autohospedado nuevamente.", fr: "Relancer l'assistant d'intégration pour reconfigurer Self-hosted LiveSync.", he: "הרץ שוב את אשף ההכוונה להגדרת Self-hosted LiveSync מחדש.", ja: "オンボーディングウィザードを再実行して、Self-hosted LiveSync をもう一度設定します。", ko: "온보딩 마법사를 다시 실행하여 Self-hosted LiveSync를 다시 설정합니다.", ru: "Перезапустить мастер настройки для повторной настройки Self-hosted LiveSync.", zh: "重新运行引导向导以再次设置 Self-hosted LiveSync。", - "zh-tw": "重新執行導覽精靈以再次設定 Self-hosted LiveSync。", + "zh-tw": "重新執行引導向導以再次設定 Self-hosted LiveSync。", }, "Rerun Wizard": { def: "Rerun Wizard", + de: "Assistent erneut ausführen", + es: "Volver a ejecutar el asistente", fr: "Relancer l'assistant", he: "הרץ שוב את האשף", ja: "ウィザードを再実行", ko: "마법사 다시 실행", ru: "Перезапустить мастер", zh: "重新运行向导", - "zh-tw": "重新執行精靈", + "zh-tw": "重新執行嚮導", }, Resend: { def: "Resend", + de: "Erneut senden", es: "Reenviar", ja: "再送信", ko: "다시 보내기", @@ -6243,6 +7866,7 @@ export const allMessages = { }, "Resend all chunks to the remote.": { def: "Resend all chunks to the remote.", + de: "Alle Chunks erneut an das Remote senden.", es: "Reenvía todos los chunks al remoto.", ja: "すべてのチャンクをリモートへ再送信します。", ko: "모든 청크를 원격으로 다시 보냅니다.", @@ -6252,6 +7876,7 @@ export const allMessages = { }, Reset: { def: "Reset", + de: "Zurücksetzen", es: "Restablecer", ja: "リセット", ko: "재설정", @@ -6261,6 +7886,7 @@ export const allMessages = { }, "Reset all": { def: "Reset all", + de: "Alles zurücksetzen", es: "Restablecer todo", ja: "すべてリセット", ko: "모두 재설정", @@ -6270,6 +7896,7 @@ export const allMessages = { }, "Reset all journal counter": { def: "Reset all journal counter", + de: "Alle Journal-Zähler zurücksetzen", es: "Restablecer todos los contadores del diario", ja: "すべてのジャーナルカウンターをリセット", ko: "모든 저널 카운터 재설정", @@ -6279,6 +7906,7 @@ export const allMessages = { }, "Reset journal received history": { def: "Reset journal received history", + de: "Empfangsverlauf des Journals zurücksetzen", es: "Restablecer historial de recepción del diario", ja: "ジャーナル受信履歴をリセット", ko: "저널 수신 기록 재설정", @@ -6288,6 +7916,7 @@ export const allMessages = { }, "Reset journal sent history": { def: "Reset journal sent history", + de: "Sendeverlauf des Journals zurücksetzen", es: "Restablecer historial de envío del diario", ja: "ジャーナル送信履歴をリセット", ko: "저널 송신 기록 재설정", @@ -6297,16 +7926,19 @@ export const allMessages = { }, "Reset notification threshold and check the remote database usage": { def: "Reset notification threshold and check the remote database usage", + de: "Meldeschwelle zurücksetzen und die Remote-Datenbanknutzung überprüfen", + es: "Restablecer el umbral de notificación y revisar el uso de la base de datos remota", fr: "Réinitialiser le seuil de notification et vérifier l'utilisation de la base distante", he: "אפס סף התראה ובדוק שימוש במסד הנתונים המרוחד", ja: "通知しきい値をリセットしてリモートデータベース使用量を確認", ko: "알림 임계값을 초기화하고 원격 데이터베이스 사용량 확인", ru: "Сбросить порог уведомления и проверить использование удалённой базы данных", zh: "重置通知阈值并检查远程数据库使用情况", - "zh-tw": "重設通知閾值並檢查遠端資料庫使用情況", + "zh-tw": "重置通知閾值並檢查遠端資料庫使用情況", }, "Reset received": { def: "Reset received", + de: "Empfang zurücksetzen", es: "Restablecer recepción", ja: "受信履歴をリセット", ko: "수신 기록 재설정", @@ -6316,6 +7948,7 @@ export const allMessages = { }, "Reset sent history": { def: "Reset sent history", + de: "Sendeverlauf zurücksetzen", es: "Restablecer historial de envío", ja: "送信履歴をリセット", ko: "송신 기록 재설정", @@ -6325,6 +7958,7 @@ export const allMessages = { }, "Reset Synchronisation information": { def: "Reset Synchronisation information", + de: "Synchronisationsinformationen zurücksetzen", es: "Restablecer información de sincronización", ja: "同期情報をリセット", ko: "동기화 정보 재설정", @@ -6334,6 +7968,7 @@ export const allMessages = { }, "Reset Synchronisation on This Device": { def: "Reset Synchronisation on This Device", + de: "Synchronisation auf diesem Gerät zurücksetzen", es: "Restablecer sincronización en este dispositivo", ja: "このデバイスの同期状態をリセット", ko: "이 장치의 동기화 상태 재설정", @@ -6343,16 +7978,19 @@ export const allMessages = { }, "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.", + de: "Setzen Sie die Remote-Speichergrößenschwelle zurück und überprüfen Sie die Remote-Speichergröße erneut.", + es: "Restablecer el umbral del tamaño del almacenamiento remoto y volver a revisar su tamaño", fr: "Réinitialiser le seuil de taille du stockage distant et vérifier à nouveau la taille du stockage distant.", he: "אפס את סף גודל האחסון המרוחד ובדוק שוב את גודל האחסון המרוחד.", ja: "リモートストレージ容量のしきい値をリセットし、リモートストレージ容量を再確認します。", ko: "원격 저장소 크기 임계값을 초기화하고 원격 저장소 크기를 다시 확인합니다.", ru: "Сбросить порог размера удалённого хранилища и проверить размер хранилища снова.", zh: "重置远程存储大小阈值并再次检查远程存储大小。", - "zh-tw": "重設遠端儲存空間大小閾值,並再次檢查遠端儲存空間大小。", + "zh-tw": "重置遠端儲存大小閾值並再次檢查遠端儲存大小。", }, "Resolve All": { def: "Resolve All", + de: "Alle auflösen", es: "Resolver todo", ja: "すべて解決", ko: "모두 해결", @@ -6362,15 +8000,17 @@ export const allMessages = { }, "Resolve all conflicted files": { def: "Resolve all conflicted files", + de: "Lösen Sie alle Konfliktdateien", es: "Resolver todos los archivos en conflicto", - ja: "競合しているすべてのファイルを解決", - ko: "충돌한 모든 파일 해결", + ja: "すべての競合ファイルを解決", + ko: "모든 충돌 파일 해결", ru: "Разрешить все конфликтующие файлы", zh: "解决所有冲突文件", "zh-tw": "解決所有衝突檔案", }, "Resolve All conflicted files by the newer one": { def: "Resolve All conflicted files by the newer one", + de: "Alle Konfliktdateien mit der neueren Version auflösen", es: "Resolver todos los archivos en conflicto con la versión más reciente", ja: "競合したすべてのファイルを新しい方で解決", ko: "충돌한 모든 파일을 최신 버전으로 해결", @@ -6381,6 +8021,7 @@ export const allMessages = { "Resolve all conflicted files by the newer one. Caution: This will overwrite the older one, and cannot resurrect the overwritten one.": { def: "Resolve all conflicted files by the newer one. Caution: This will overwrite the older one, and cannot resurrect the overwritten one.", + de: "Löst alle Konfliktdateien zugunsten der neueren Version auf. Achtung: Dadurch wird die ältere Version überschrieben und kann nicht wiederhergestellt werden.", es: "Resuelve todos los archivos en conflicto conservando la versión más reciente. Precaución: esto sobrescribirá la versión anterior y no podrá recuperarse.", ja: "競合しているすべてのファイルを新しい方の内容で解決します。注意:古い方は上書きされ、復元できません。", ko: "충돌한 모든 파일을 더 최신 버전으로 해결합니다. 주의: 이전 버전은 덮어써지며 복원할 수 없습니다.", @@ -6390,6 +8031,7 @@ export const allMessages = { }, "Restart Now": { def: "Restart Now", + de: "Jetzt neu starten", es: "Reiniciar ahora", ja: "今すぐ再起動", ko: "지금 재시작", @@ -6405,6 +8047,7 @@ export const allMessages = { }, "Restore or reconstruct local database from remote.": { def: "Restore or reconstruct local database from remote.", + de: "Lokale Datenbank aus dem Remote wiederherstellen oder neu aufbauen.", es: "Restaura o reconstruye la base de datos local desde el remoto.", ja: "リモートからローカルデータベースを復元または再構築します。", ko: "원격에서 로컬 데이터베이스를 복원하거나 재구축합니다.", @@ -6414,16 +8057,19 @@ export const allMessages = { }, "Run Doctor": { def: "Run Doctor", + de: "Der Doktor", + es: "Ejecutar Doctor", fr: "Lancer le Docteur", he: "הפעל Doctor", ja: "診断を実行", ko: "진단 실행", ru: "Запустить диагностику", zh: "立即诊断", - "zh-tw": "執行診斷", + "zh-tw": "立即診斷", }, "S3/MinIO/R2 Object Storage": { def: "S3/MinIO/R2 Object Storage", + de: "S3-/MinIO-/R2-Objektspeicher", es: "Almacenamiento de objetos S3/MinIO/R2", ja: "S3/MinIO/R2 オブジェクトストレージ", ko: "S3/MinIO/R2 객체 스토리지", @@ -6434,16 +8080,19 @@ export const allMessages = { "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.", + de: "Speichern Sie Einstellungen in eine Markierungsdatei. Sie werden informiert, wenn neue Einstellungen eintreffen. Sie können verschiedene Dateien auf der Plattform festlegen.", es: "Guardar configuración en archivo markdown. Se notificarán nuevos ajustes. Puede definir diferentes archivos por plataforma", fr: "Enregistrer les paramètres dans un fichier markdown. Vous serez notifié à l'arrivée de nouveaux paramètres. Vous pouvez définir des fichiers différents selon la plateforme.", he: "שמור הגדרות לקובץ Markdown. תיודע כשהגדרות חדשות יגיעו. ניתן להגדיר קבצים שונים לפי פלטפורמה.", 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.", + ru: "Сохранять настройки в файл Markdown. Когда появятся новые настройки, вы получите уведомление. Для каждой платформы можно указать свой файл.", zh: "将设置保存到一个 Markdown 文件中。当新设置到达时,您将收到通知。您可以根据平台设置不同的文件 ", + "zh-tw": "將設定儲存到一個 Markdown 檔案中。當新設定到達時,您將收到通知。您可以根據平臺設定不同的檔案 ", }, "Saving will be performed forcefully after this number of seconds.": { def: "Saving will be performed forcefully after this number of seconds.", + de: "Nach dieser Anzahl von Sekunden wird die Einsparung kraftvoll durchgeführt.", es: "Guardado forzado tras esta cantidad de segundos", fr: "L'enregistrement sera forcé au bout de ce nombre de secondes.", he: "השמירה תתבצע בכפייה לאחר מספר שניות זה.", @@ -6451,9 +8100,11 @@ export const allMessages = { ko: "이 시간(초) 후에 강제로 저장이 수행됩니다.", ru: "Сохранение будет принудительно выполнено после этого количества секунд.", zh: "在此秒数后将强制执行保存 ", + "zh-tw": "在此秒數後將強制執行儲存 ", }, "Scan a QR Code (Recommended for mobile)": { def: "Scan a QR Code (Recommended for mobile)", + de: "QR-Code scannen (für Mobilgeräte empfohlen)", es: "Escanear un código QR (recomendado para móviles)", ja: "QR コードをスキャンする(モバイル推奨)", ko: "QR 코드 스캔(모바일 권장)", @@ -6463,6 +8114,7 @@ export const allMessages = { }, "Scan changes on customization sync": { def: "Scan changes on customization sync", + de: "Scannen von Änderungen auf Anpassungssynchronisation", es: "Escanear cambios en sincronización de personalización", fr: "Analyser les modifications de synchronisation de personnalisation", he: "סרוק שינויים בסנכרון התאמה אישית", @@ -6470,9 +8122,11 @@ export const allMessages = { ko: "사용자 설정 동기화 시 변경 사항 검색", ru: "Сканировать изменения при синхронизации настроек", zh: "在自定义同步时扫描更改", + "zh-tw": "在自定義同步時掃描更改", }, "Scan customization automatically": { def: "Scan customization automatically", + de: "Scannen Anpassung automatisch", es: "Escanear personalización automáticamente", fr: "Analyser automatiquement la personnalisation", he: "סרוק התאמה אישית אוטומטית", @@ -6480,9 +8134,11 @@ export const allMessages = { ko: "사용자 설정 자동 검색", ru: "Сканировать настройки автоматически", zh: "自动扫描自定义设置", + "zh-tw": "自動掃描自定義設定", }, "Scan customization before replicating.": { def: "Scan customization before replicating.", + de: "Scannen Anpassung vor der Replikation.", es: "Escanear personalización antes de replicar", fr: "Analyser la personnalisation avant de répliquer.", he: "סרוק התאמה אישית לפני שכפול.", @@ -6490,9 +8146,11 @@ export const allMessages = { ko: "복제하기 전에 사용자 설정을 검색합니다.", ru: "Сканировать настройки перед репликацией.", zh: "在复制前扫描自定义设置 ", + "zh-tw": "在複製前掃描自定義設定 ", }, "Scan customization every 1 minute.": { def: "Scan customization every 1 minute.", + de: "Scannen Anpassung alle 1 Minute.", es: "Escanear personalización cada 1 minuto", fr: "Analyser la personnalisation toutes les 1 minute.", he: "סרוק התאמה אישית כל דקה.", @@ -6500,9 +8158,11 @@ export const allMessages = { ko: "1분마다 사용자 설정을 검색합니다.", ru: "Сканировать настройки каждую минуту.", zh: "每1分钟扫描自定义设置 ", + "zh-tw": "每1分鐘掃描自定義設定 ", }, "Scan customization periodically": { def: "Scan customization periodically", + de: "Scannen Anpassung periodisch", es: "Escanear personalización periódicamente", fr: "Analyser la personnalisation périodiquement", he: "סרוק התאמה אישית תקופתית", @@ -6510,6 +8170,7 @@ export const allMessages = { ko: "주기적으로 사용자 설정 검색", ru: "Сканировать настройки периодически", zh: "定期扫描自定义设置", + "zh-tw": "定期掃描自定義設定", }, "Scan for Broken files": { def: "Scan for Broken files", @@ -6520,6 +8181,7 @@ export const allMessages = { }, "Scan for hidden files before replication": { def: "Scan for hidden files before replication", + de: "Scannen von versteckten Dateien vor der Replikation", es: "Escanear archivos ocultos antes de replicar", fr: "Analyser les fichiers cachés avant réplication", he: "סרוק קבצים נסתרים לפני שכפול", @@ -6527,9 +8189,11 @@ export const allMessages = { ko: "복제 전 숨겨진 파일 검색", ru: "Сканировать скрытые файлы перед репликацией", zh: "复制前扫描隐藏文件", + "zh-tw": "複製前掃描隱藏檔案", }, "Scan hidden files periodically": { def: "Scan hidden files periodically", + de: "Scannen versteckte Dateien periodisch", es: "Escanear archivos ocultos periódicamente", fr: "Analyser les fichiers cachés périodiquement", he: "סרוק קבצים נסתרים תקופתית", @@ -6537,9 +8201,11 @@ export const allMessages = { ko: "주기적으로 숨겨진 파일 검색", ru: "Сканировать скрытые файлы периодически", zh: "定期扫描隐藏文件", + "zh-tw": "定期掃描隱藏檔案", }, "Scan the QR code displayed on an active device using this device's camera.": { def: "Scan the QR code displayed on an active device using this device's camera.", + de: "Scannen Sie den auf einem aktiven Gerät angezeigten QR-Code mit der Kamera dieses Geräts。", es: "Escanee con la cámara de este dispositivo el código QR mostrado en un dispositivo activo。", ja: "稼働中の端末に表示された QR コードを、この端末のカメラで読み取ってください。", ko: "이 장치의 카메라로 활성 장치에 표시된 QR 코드를 스캔하세요。", @@ -6549,6 +8215,7 @@ export const allMessages = { }, "Schedule and Restart": { def: "Schedule and Restart", + de: "Planen und neu starten", es: "Programar y reiniciar", ja: "予約して再起動", ko: "예약 후 재시작", @@ -6565,6 +8232,7 @@ export const allMessages = { }, "Scram!": { def: "Scram!", + de: "Notfallmaßnahmen", es: "Medidas de emergencia", ja: "緊急停止", ko: "긴급 조치", @@ -6574,6 +8242,7 @@ export const allMessages = { }, "Seconds, 0 to disable": { def: "Seconds, 0 to disable", + de: "Sekunden, 0 zu deaktivieren", es: "Segundos, 0 para desactivar", fr: "Secondes, 0 pour désactiver", he: "שניות, 0 לביטול", @@ -6581,9 +8250,11 @@ export const allMessages = { ko: "초 단위, 0으로 설정하면 비활성화", ru: "Секунд, 0 для отключения", zh: "秒,0为禁用", + "zh-tw": "秒,0為禁用", }, "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.", + de: "Zweite. Die Speicherung in der lokalen Datenbank wird bis zu diesem Wert verzögert, nachdem wir das Eingeben oder Speichern stoppen.", es: "Segundos. Guardado en BD local se retrasará hasta este valor tras dejar de escribir/guardar", fr: "Secondes. L'enregistrement dans la base locale sera différé de cette valeur après l'arrêt de la frappe ou de l'enregistrement.", he: "שניות. השמירה למסד הנתונים המקומי תתעכב בערך זה לאחר הפסקת הקלדה או שמירה.", @@ -6591,19 +8262,23 @@ export const allMessages = { ko: "초 단위입니다. 타이핑이나 저장을 중단한 후 이 시간동안 로컬 데이터베이스 저장이 지연됩니다.", ru: "Секунды. Сохранение в локальную базу данных будет отложено.", zh: "秒。在我们停止输入或保存后,保存到本地数据库将延迟此值 ", + "zh-tw": "秒。在我們停止輸入或儲存後,儲存到本地資料庫將延遲此值 ", }, "Secret Key": { def: "Secret Key", + de: "Geheimer Schlüssel", es: "Clave secreta", fr: "Clé secrète", he: "מפתח סודי", ja: "シークレットキー", ko: "시크릿 키", ru: "Секретный ключ", - zh: "Secret Key", + zh: "密钥", + "zh-tw": "金鑰", }, "Select the database adapter to use.": { def: "Select the database adapter to use.", + de: "Wählen Sie den zu verwendenden Datenbankadapter aus.", es: "Selecciona el adaptador de base de datos que se usará.", ja: "使用するデータベースアダプターを選択します。", ko: "사용할 데이터베이스 어댑터를 선택합니다.", @@ -6611,8 +8286,19 @@ export const allMessages = { zh: "选择要使用的数据库适配器。", "zh-tw": "選擇要使用的資料庫適配器。", }, + Selector: { + def: "Selector", + de: "Auswahl", + es: "Selector", + ja: "セレクター", + ko: "선택기", + ru: "Селектор", + zh: "选择器", + "zh-tw": "選擇器", + }, Send: { def: "Send", + de: "Senden", es: "Enviar", ja: "送信", ko: "보내기", @@ -6622,6 +8308,7 @@ export const allMessages = { }, "Send chunks": { def: "Send chunks", + de: "Chunks senden", es: "Enviar chunks", ja: "チャンクを送信", ko: "청크 보내기", @@ -6631,6 +8318,7 @@ export const allMessages = { }, "Server URI": { def: "Server URI", + de: "Server-URI", es: "URI del servidor", fr: "URI du serveur", he: "כתובת שרת (URI)", @@ -6638,86 +8326,108 @@ export const allMessages = { ko: "서버 URI", ru: "URI сервера", zh: "服务器 URI", + "zh-tw": "伺服器 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', + de: 'Wir haben ein Schlüsselpaar erzeugt!\n\nHinweis: Dieses Schlüsselpaar wird nie wieder angezeigt. Bitte speichern Sie es an einem sicheren Ort. Wenn Sie es verlieren, müssen Sie ein neues Schlüsselpaar erzeugen.\nHinweis 2: Der öffentliche Schlüssel ist im spki-Format und der private Schlüssel im pkcs8-Format. Der Einfachheit halber werden Zeilenumbrüche im öffentlichen Schlüssel in `\\n` umgewandelt.\nHinweis 3: Der öffentliche Schlüssel muss in der entfernten Datenbank konfiguriert werden, der private Schlüssel auf den lokalen Geräten.\n\n>[!FOR YOUR EYES ONLY]-\n>
\n>\n> ### Öffentlicher Schlüssel\n> ```\n${public_key}\n> ```\n>\n> ### Privater Schlüssel\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', he: 'יצרנו זוג מפתחות!\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', 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: '我们已经生成了一组密钥对!\n\n注意:这组密钥对之后将不会再次显示。请务必妥善保管;如果丢失,你需要重新生成新的密钥对。\n注意 2:公钥采用 spki 格式,私钥采用 pkcs8 格式。为方便复制,公钥中的换行会被转换为 `\\n`。\n注意 3:公钥应配置在远端数据库中,私钥应配置在本地设备上。\n\n>[!仅限本人查看]-\n>
\n>\n> ### 公钥\n> ```\n${public_key}\n> ```\n>\n> ### 私钥\n> ```\n${private_key}\n> ```\n>\n>
\n\n>[!整段复制]-\n>\n>
\n>\n> ```\n${public_key}\n${private_key}\n> ```\n>\n>
', + ru: 'Мы сгенерировали пару ключей!\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', + zh: '密钥对已生成!\n\n注意:此密钥对不会再次显示。请妥善保存。如果丢失,需要生成新的密钥对。\n注意 2:公钥为 spki 格式,私钥为 pkcs8 格式。为了方便起见,公钥中的换行符已转换为 `\\n`。\n注意 3:公钥应在远程数据库中配置,私钥应在本地设备中配置。\n\n>[!仅供您查看]-\n>
\n>\n> ### 公钥\n> ```\n${public_key}\n> ```\n>\n> ### 私钥\n> ```\n${private_key}\n> ```\n>\n>
\n\n>[!用于复制两者]-\n>\n>
\n>\n> ```\n${public_key}\n${private_key}\n> ```\n>\n>
\n\n', "zh-tw": - '我們已產生新的金鑰對!\n\n注意:此金鑰對之後將不會再次顯示。請務必妥善保存;若遺失,必須重新產生新的金鑰對。\n注意 2:公鑰採用 spki 格式,私鑰採用 pkcs8 格式。為了方便複製,公鑰中的換行會轉換為 `\\n`。\n注意 3:公鑰應設定在遠端資料庫中,私鑰則應設定在本機裝置上。\n\n>[!僅供本人查看]-\n>
\n>\n> ### 公鑰\n> ```\n${public_key}\n> ```\n>\n> ### 私鑰\n> ```\n${private_key}\n> ```\n>\n>
\n\n>[!便於整段複製]-\n>\n>
\n>\n> ```\n${public_key}\n${private_key}\n> ```\n>\n>
', + '金鑰對已生成!\n\n注意:此金鑰對不會再次顯示。請妥善儲存。如果丟失,需要生成新的金鑰對。\n注意 2:公鑰為 spki 格式,私鑰為 pkcs8 格式。為了方便起見,公鑰中的換行符已轉換為 `\\n`。\n注意 3:公鑰應在遠端資料庫中配置,私鑰應在本地裝置中配置。\n\n>[!僅供您檢視]-\n>
\n>\n> ### 公鑰\n> ```\n${public_key}\n> ```\n>\n> ### 私鑰\n> ```\n${private_key}\n> ```\n>\n>
\n\n>[!用於複製兩者]-\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!", + de: "Neues Schlüsselpaar wurde generiert!", es: "¡Se ha generado un nuevo par de claves!", fr: "Une nouvelle paire de clés a été générée !", he: "זוג מפתחות חדש נוצר!", ja: "新しいキーペアが生成されました!", ko: "새 키 페어가 생성되었습니다!", ru: "Новая пара ключей сгенерирована!", - zh: "已生成新的密钥对!", - "zh-tw": "已產生新的金鑰對!", + zh: "新密钥对已生成!", + "zh-tw": "新金鑰對已生成!", }, "Setting.TroubleShooting": { def: "TroubleShooting", + de: "Probleme", + es: "Solución de problemas", fr: "Dépannage", he: "פתרון בעיות", ja: "トラブルシューティング", ko: "문제 해결", ru: "Устранение неполадок", zh: "故障排除", + "zh-tw": "故障排除", }, "Setting.TroubleShooting.Doctor": { def: "Setting Doctor", + de: "Ein Arzt", + es: "Doctor de configuración", fr: "Docteur des paramètres", he: "Doctor הגדרות", ja: "設定診断ツール", ko: "설정 진단 마법사", ru: "Диагностика настроек", zh: "设置诊断", + "zh-tw": "設定診斷", }, "Setting.TroubleShooting.Doctor.Desc": { def: "Detects non optimal settings. (Same as during migration)", + de: "Erkennt nicht optimale Einstellungen. (Sammlung wie während der Migration)", + es: "Detecta configuraciones no óptimas. (Igual que durante la migración)", fr: "Détecte les paramètres non optimaux. (Identique à la migration)", he: "מזהה הגדרות לא אופטימליות. (זהה לפעולה במהלך הגירה)", ja: "最適でない設定を検出します。(マイグレーション時と同じ)", ko: "최적화되지 않은 설정을 감지합니다. (데이터 구조 전환 시와 동일)", ru: "Обнаруживает неоптимальные настройки.", zh: "检测系统中不合理的设置。(与迁移期间逻辑相同)", + "zh-tw": "檢測系統中不合理的設定。(與遷移期間邏輯相同)", }, "Setting.TroubleShooting.ScanBrokenFiles": { def: "Scan for broken files", + de: "Scannen von Dateien", + es: "Buscar archivos dañados", fr: "Analyser les fichiers corrompus", he: "סרוק קבצים פגומים", ja: "破損ファイルのスキャン", ko: "손상된 파일 검사", ru: "Сканировать повреждённые файлы", zh: "扫描损坏或异常的文件", + "zh-tw": "掃描損壞或異常的檔案", }, "Setting.TroubleShooting.ScanBrokenFiles.Desc": { def: "Scans for files that are not stored correctly in the database.", + de: "Scannen nach Dateien, die nicht korrekt in der Datenbank gespeichert werden.", + es: "Busca archivos que no estén almacenados correctamente en la base de datos.", fr: "Analyse les fichiers qui ne sont pas stockés correctement dans la base.", he: "סורק קבצים שלא נשמרו כהלכה במסד הנתונים.", ja: "データベースに正しく保存されていないファイルをスキャンします。", ko: "데이터베이스에 올바르게 저장되지 않은 파일을 검사합니다.", ru: "Сканирует файлы, которые неправильно хранятся в базе данных.", zh: "扫描数据库中未正确存储的文件。", + "zh-tw": "掃描資料庫中未正確儲存的檔案。", }, "SettingTab.Message.AskRebuild": { def: "Your changes require fetching from the remote database. Do you want to proceed?", + de: "Ihre Änderungen erfordern das Abrufen von der Remote-Datenbank. Willst du fortfahren?", + es: "Sus cambios requieren ser recuperados de la base de datos remota. ¿Quieres continuar?", fr: "Vos modifications nécessitent une récupération depuis la base distante. Voulez-vous continuer ?", he: "השינויים שלך מצריכים משיכה ממסד הנתונים המרוחד. האם להמשיך?", ja: "変更にはリモートデータベースからのフェッチが必要です。続行しますか?", ko: "변경 사항을 적용하려면 원격 데이터베이스에서 가져와야 합니다. 계속 진행하시겠습니까?", ru: "Ваши изменения требуют загрузки из удалённой базы данных. Хотите продолжить?", - zh: "Your changes require fetching from the remote database. Do you want to proceed?", + zh: "您的更改需要从远程数据库获取。是否继续?", + "zh-tw": "您的更改需要從遠端資料庫獲取。是否繼續?", }, "Setup URI dialog cancelled.": { def: "Setup URI dialog cancelled.", + de: "Setup-URI-Dialog abgebrochen.", ja: "Setup URI ダイアログはキャンセルされました。", ko: "Setup URI 대화 상자가 취소되었습니다.", ru: "Диалог Setup URI был отменён.", @@ -6726,143 +8436,315 @@ export const allMessages = { }, "Setup.Apply.Buttons.ApplyAndFetch": { def: "Apply and Fetch", + de: "Apply und Fetch", + es: "Aplicar y obtener", fr: "Appliquer et récupérer", he: "החל ומשוך", ja: "適用してフェッチ", + ko: "적용 후 가져오기", ru: "Применить и загрузить", - zh: "Apply and Fetch", + zh: "应用并获取", + "zh-tw": "應用並獲取", }, "Setup.Apply.Buttons.ApplyAndMerge": { def: "Apply and Merge", + de: "Anwenden und Verschmelzen", + es: "Aplicar y fusionar", fr: "Appliquer et fusionner", he: "החל ומזג", ja: "適用してマージ", + ko: "적용 후 병합", ru: "Применить и объединить", - zh: "Apply and Merge", + zh: "应用并合并", + "zh-tw": "應用併合並", }, "Setup.Apply.Buttons.ApplyAndRebuild": { def: "Apply and Rebuild", + de: "Anwenden und wieder aufbauen", + es: "Aplicar y reconstruir", fr: "Appliquer et reconstruire", he: "החל ובנה מחדש", ja: "適用して再構築", + ko: "적용 후 재구축", ru: "Применить и перестроить", - zh: "Apply and Rebuild", + zh: "应用并重建", + "zh-tw": "應用並重建", }, "Setup.Apply.Buttons.Cancel": { def: "Discard and Cancel", + de: "Discard und Abbrechen", + es: "Descartar y cancelar", fr: "Abandonner et annuler", he: "בטל ובטל", ja: "破棄してキャンセル", + ko: "취소", ru: "Отменить и отменить", - zh: "Discard and Cancel", + zh: "丢弃并取消", + "zh-tw": "丟棄並取消", }, "Setup.Apply.Buttons.OnlyApply": { def: "Only Apply", + de: "Nur anwenden", + es: "Solo aplicar", fr: "Appliquer seulement", he: "החל בלבד", ja: "適用のみ", + ko: "적용만", ru: "Только применить", - zh: "Only Apply", + zh: "仅应用", + "zh-tw": "僅應用", }, "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.", + de: "Die neue Konfiguration ist fertig. Lassen Sie uns es anwenden.\nEs gibt verschiedene Möglichkeiten, dies anzuwenden:\n\n- Apply und Fetch\nKonfigurieren Sie dieses Gerät als neuer Client. Nach der Anwendung, synchronisieren Sie vom Remote-Server.\n- Anwenden und Verschmelzen\nKonfigurieren Sie auf einem Gerät, das bereits die Datei hat. Es verarbeitet die lokalen Dateien und überträgt die Unterschiede. Konflikte können entstehen.\n- Anwenden und wieder aufbauen\nWiederherstellen der Fernbedienung mit lokalen Dateien. Dies geschieht typischerweise, wenn der Server beschädigt wird oder wir von Grund auf starten möchten.\nAndere Geräte werden gesperrt und benötigt, um wieder zu holen.\n- Nur bewerben\nNur anwenden. Konflikte können entstehen, wenn ein Wiederaufbau erforderlich ist.", + es: "La nueva configuración está lista. Procedamos a aplicarlo.\nHay varias maneras de aplicar esto:\n\n- Aplicar y buscar\n Configure este dispositivo como un nuevo cliente. Después de aplicar, sincronice desde el servidor remoto.\n- Aplicar y fusionar\n Configure en un dispositivo que ya tenga el archivo. Procesa los archivos locales y transfiere las diferencias. Pueden surgir conflictos.\n- Aplicar y reconstruir\n Reconstruya el control remoto usando archivos locales. Normalmente, esto se hace si el servidor se daña o si deseamos empezar desde cero.\n Otros dispositivos se bloquearán y será necesario volver a buscarlos.\n- Sólo aplicar\n Aplicar únicamente. Pueden surgir conflictos si se requiere una reconstrucción.", fr: "La nouvelle configuration est prête. Procédons à son application.\nPlusieurs manières de l'appliquer :\n\n- Appliquer et récupérer\n Configurer cet appareil comme nouveau client. Après application, synchroniser depuis le serveur distant.\n- Appliquer et fusionner\n Configurer sur un appareil qui possède déjà les fichiers. Traite les fichiers locaux et transfère les différences. Des conflits peuvent apparaître.\n- Appliquer et reconstruire\n Reconstruire le distant à partir des fichiers locaux. Typiquement effectué si le serveur est corrompu ou si l'on souhaite repartir de zéro.\n Les autres appareils seront verrouillés et devront refaire une récupération.\n- Appliquer seulement\n Appliquer uniquement. Des conflits peuvent apparaître si une reconstruction est nécessaire.", he: "התצורה החדשה מוכנה. בואו נמשיך להחיל אותה.\nישנן מספר דרכים להחיל זאת:\n\n- החל ומשוך\n הגדר מכשיר זה כלקוח חדש. לאחר ההחלה, סנכרן מהשרת המרוחד.\n- החל ומזג\n הגדר על מכשיר שכבר יש בו קבצים. מעבד קבצים מקומיים ומעביר הפרשים. עלולים\n לקום קונפליקטים.\n- החל ובנה מחדש\n בנה את השרת המרוחד מחדש תוך שימוש בקבצים מקומיים. נעשה בדרך כלל אם השרת\n מושחת או אם רוצים להתחיל מאפס. מכשירים אחרים יינעלו ויצטרכו למשוך מחדש.\n- החל בלבד\n החל בלבד. עלולים לקום קונפליקטים אם נדרשת בנייה מחדש.", ja: "新しい設定の準備ができました。適用に進みましょう。\n適用方法はいくつかあります:\n\n- 適用してフェッチ\n このデバイスを新しいクライアントとして設定します。適用後、リモートサーバーから同期します。\n- 適用してマージ\n 既にファイルがあるデバイスで設定します。ローカルファイルを処理し、差分を転送します。競合が発生する場合があります。\n- 適用して再構築\n ローカルファイルを使用してリモートを再構築します。これは通常、サーバーが破損した場合や最初からやり直したい場合に行います。\n 他のデバイスはロックされ、再フェッチが必要になります。\n- 適用のみ\n 適用のみを行います。再構築が必要な場合、競合が発生する可能性があります。", + ko: "설정이 준비되었습니다. 적용 방법을 선택하세요.", 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.", + zh: "新配置已准备就绪。让我们继续应用它。\n有几种应用方式:\n\n- 应用并获取\n 将此设备配置为新客户端。应用后从远程服务器同步。\n- 应用并合并\n 在已有文件的设备上配置。处理本地文件并传输差异。可能会出现冲突。\n- 应用并重建\n 使用本地文件重建远程数据。通常在服务器损坏或希望从头开始时使用。\n 其他设备将被锁定,需要重新获取。\n- 仅应用\n 仅应用配置。如果需要重建,可能会出现冲突。", + "zh-tw": + "新配置已準備就緒。讓我們繼續應用它。\n有幾種應用方式:\n\n- 應用並獲取\n 將此裝置配置為新客戶端。應用後從遠端伺服器同步。\n- 應用併合並\n 在已有檔案的裝置上配置。處理本地檔案並傳輸差異。可能會出現衝突。\n- 應用並重建\n 使用本地檔案重建遠端資料。通常在伺服器損壞或希望從頭開始時使用。\n 其他裝置將被鎖定,需要重新獲取。\n- 僅應用\n 僅應用配置。如果需要重建,可能會出現衝突。", }, "Setup.Apply.Title": { def: "Apply new configuration from the ${method}", + de: "Neue Konfiguration aus dem ${method} anwenden", + es: "Aplicar nueva configuración desde ${method}", fr: "Appliquer la nouvelle configuration depuis ${method}", he: "החל תצורה חדשה מה-${method}", ja: "${method}からの新しい設定を適用", - ru: "Применить новую конфигурацию из method", - zh: "Apply new configuration from the ${method}", + ko: "${method}로 설정 적용", + ru: "Применить новую конфигурацию из ${method}", + zh: "应用来自 ${method} 的新配置", + "zh-tw": "應用來自 ${method} 的新配置", }, "Setup.Apply.WarningRebuildRecommended": { def: "NOTE: after adjusting the settings, it has been determined that a rebuild is required; Just Import is not recommended.", + de: "HINWEIS: Nach der Einstellung der Einstellungen wurde festgestellt, dass ein Rebuild erforderlich ist; Nur Import wird nicht empfohlen.", + es: "NOTA: después de ajustar la configuración, se ha determinado que se requiere una reconstrucción; No se recomienda importar solo.", fr: "NOTE : après ajustement des paramètres, il a été déterminé qu'une reconstruction est requise ; un simple import n'est pas recommandé.", he: "שים לב: לאחר כוונון ההגדרות, נקבע שנדרשת בנייה מחדש; ייבוא בלבד אינו מומלץ.", ja: "注意: 設定の調整後、再構築が必要と判断されました。インポートのみは推奨されません。", + ko: "주의: 안전한 적용을 위해 데이터베이스 재구축을 권장합니다. 재구축하지 않으면 동기화 문제가 발생할 수 있습니다.", ru: "ПРИМЕЧАНИЕ: после настройки изменений определено, что требуется перестроение.", - zh: "NOTE: after adjusting the settings, it has been determined that a rebuild is required; Just Import is not recommended.", + zh: "注意:调整设置后,已确定需要重建;不建议仅导入。", + "zh-tw": "注意:調整設定後,已確定需要重建;不建議僅匯入。", + }, + "Setup.Command.CopySetupUri": { + def: "Copy settings as a new setup URI", + de: "Copy settings as a new setup URI", + es: "Copy settings as a new setup URI", + ja: "Copy settings as a new setup URI", + ko: "Copy settings as a new setup URI", + ru: "Copy settings as a new setup URI", + zh: "将设置复制为新的设置 URI", + "zh-tw": "將設定複製為新的設定 URI", + }, + "Setup.Command.CopySetupUriFull": { + def: "Copy settings as a new setup URI (Full)", + de: "Copy settings as a new setup URI (Full)", + es: "Copy settings as a new setup URI (Full)", + ja: "Copy settings as a new setup URI (Full)", + ko: "Copy settings as a new setup URI (Full)", + ru: "Copy settings as a new setup URI (Full)", + zh: "将设置复制为新的设置 URI(完整)", + "zh-tw": "將設定複製為新的設定 URI(完整)", + }, + "Setup.Command.CopySetupUriWithSync": { + def: "Copy settings as a new setup URI (With customization sync)", + de: "Copy settings as a new setup URI (With customization sync)", + es: "Copy settings as a new setup URI (With customization sync)", + ja: "Copy settings as a new setup URI (With customization sync)", + ko: "Copy settings as a new setup URI (With customization sync)", + ru: "Copy settings as a new setup URI (With customization sync)", + zh: "将设置复制为新的设置 URI(包含自定义同步)", + "zh-tw": "將設定複製為新的設定 URI(包含自訂同步)", + }, + "Setup.Command.OpenSetupUri": { + def: "Use the copied setup URI (Formerly Open setup URI)", + de: "Use the copied setup URI (Formerly Open setup URI)", + es: "Use the copied setup URI (Formerly Open setup URI)", + ja: "Use the copied setup URI (Formerly Open setup URI)", + ko: "Use the copied setup URI (Formerly Open setup URI)", + ru: "Use the copied setup URI (Formerly Open setup URI)", + zh: "使用已复制的设置 URI(原“打开设置 URI”)", + "zh-tw": "使用已複製的設定 URI(原「開啟設定 URI」)", + }, + "Setup.Command.ShowSettingsQrCode": { + def: "Show settings as a QR code", + de: "Show settings as a QR code", + es: "Show settings as a QR code", + ja: "Show settings as a QR code", + ko: "Show settings as a QR code", + ru: "Show settings as a QR code", + zh: "以二维码显示设置", + "zh-tw": "以 QR 碼顯示設定", }, "Setup.Doctor.Buttons.No": { def: "No, please use the settings in the URI as is", + de: "Nein, nicht jetzt", + es: "No", fr: "Non, utiliser les paramètres de l'URI tels quels", he: "לא, אנא השתמש בהגדרות ה-URI כפי שהן", ja: "いいえ、URIの設定をそのまま使用", + ko: "아니요", ru: "Нет, использовать настройки из URI как есть", - zh: "No, please use the settings in the URI as is", + zh: "?", + "zh-tw": "?", }, "Setup.Doctor.Buttons.Yes": { def: "Yes, please consult the doctor", + de: "Ja, bitte den Doktor konsultieren", + es: "Si", fr: "Oui, consulter le docteur", he: "כן, אנא יעץ ל-Doctor", ja: "はい、診断ツールに相談する", + ko: "?", ru: "Да, пожалуйста, запустить диагностику", - zh: "Yes, please consult the doctor", + zh: "?", + "zh-tw": "?", }, "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?", + de: "Selbstgehostete LiveSync ist in der Geschichte allmählich länger geworden und einige empfohlene Einstellungen haben sich geändert.\n\nNun, Setup ist eine sehr gute Zeit, dies zu tun.\n\nMöchten Sie Doctor ausführen, um zu überprüfen, ob die importierten Einstellungen im Vergleich zum neuesten Zustand optimal sind?", + es: "LiveSync autohospedado se ha vuelto gradualmente más largo en la historia y algunas configuraciones recomendadas han cambiado.\n\nAhora, la configuración es un muy buen momento para hacer esto.\n\n¿Quiere ejecutar Doctor para comprobar si la configuración importada es óptima en comparación con el estado más reciente?", fr: "Self-hosted LiveSync s'est progressivement étoffé et certains paramètres recommandés ont évolué.\n\nLa configuration est un bon moment pour le faire.\n\nVoulez-vous lancer le Docteur pour vérifier si les paramètres importés sont optimaux par rapport au dernier état ?", he: "Self-hosted LiveSync הפך ארוך יותר בהיסטוריה שלו וחלק מההגדרות המומלצות השתנו.\n\nעכשיו, הגדרה היא זמן מצוין לכך.\n\nהאם ברצונך להפעיל את Doctor כדי לבדוק אם ההגדרות המיובאות אופטימליות בהשוואה למצב הנוכחי?", ja: "Self-hosted LiveSyncは徐々に歴史が長くなり、一部の推奨設定が変更されています。\n\nセットアップは、これを行う非常に良い機会です。\n\nインポートされた設定が最新の状態と比較して最適かどうかを確認するために、診断ツールを実行しますか?", + ko: "Self-hosted LiveSync가 설정을 확인했습니다. 일부 항목은 조정하는 것이 좋습니다. 계속하시겠습니까?", 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?", + zh: "Self-hosted LiveSync 的历史已逐渐悠久,部分推荐设置已发生变化。\n\n现在是进行检查的绝佳时机。\n\n是否运行诊断程序,检查导入的设置是否与最新状态一致?", + "zh-tw": + "Self-hosted LiveSync 的歷史已逐漸悠久,部分推薦設定已發生變化。\n\n現在是進行檢查的絕佳時機。\n\n是否執行診斷程式,檢查匯入的設定是否與最新狀態一致?", }, "Setup.Doctor.Title": { def: "Do you want to consult the doctor?", + de: "Möchten Sie den Arzt konsultieren?", + es: "¿Quieres consultar al médico?", fr: "Voulez-vous consulter le docteur ?", he: "האם ברצונך להתייעץ עם ה-Doctor?", ja: "診断ツールに相談しますか?", + ko: "설정 진단", ru: "Хотите запустить диагностику?", - zh: "Do you want to consult the doctor?", + zh: "是否运行诊断程序?", + "zh-tw": "是否執行診斷程式?", + }, + "Setup.EncryptSettingsPassphrase": { + def: "The passphrase to encrypt the setup URI", + de: "The passphrase to encrypt the setup URI", + es: "The passphrase to encrypt the setup URI", + ja: "The passphrase to encrypt the setup URI", + ko: "The passphrase to encrypt the setup URI", + ru: "The passphrase to encrypt the setup URI", + zh: "用于加密设置 URI 的密码短语", + "zh-tw": "用於加密設定 URI 的密碼短語", + }, + "Setup.EncryptSettingsTitle": { + def: "Encrypt your settings", + de: "Encrypt your settings", + es: "Encrypt your settings", + ja: "Encrypt your settings", + ko: "Encrypt your settings", + ru: "Encrypt your settings", + zh: "加密您的设置", + "zh-tw": "加密您的設定", }, "Setup.FetchRemoteConf.Buttons.Fetch": { def: "Yes, please fetch the configuration", + de: "Ja, bitte holen Sie die Konfiguration", + es: "Sí, recupera la configuración.", fr: "Oui, récupérer la configuration", he: "כן, אנא משוך את התצורה", ja: "はい、設定を取得", + ko: "예, 원격 설정 가져오기", ru: "Да, загрузить конфигурацию", - zh: "Yes, please fetch the configuration", + zh: "是,请获取配置", + "zh-tw": "是,請獲取配置", }, "Setup.FetchRemoteConf.Buttons.Skip": { def: "No, please use the settings in the URI", + de: "Nein, bitte benutzen Sie die Einstellungen im URI", + es: "No, utilice la configuración del URI.", fr: "Non, utiliser les paramètres de l'URI", he: "לא, אנא השתמש בהגדרות ב-URI", ja: "いいえ、URIの設定を使用", + ko: "아니요, URI 설정 사용", ru: "Нет, использовать настройки из URI", - zh: "No, please use the settings in the URI", + zh: "不,请使用 URI 中的设置", + "zh-tw": "不,請使用 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.", + de: "Wenn wir bereits einmal mit einem anderen Gerät synchronisiert sind, speichert die Remote-Datenbank die geeigneten Konfigurationswerte zwischen den synchronisierten Geräten. Das Plug-in möchte sie für eine robuste Konfiguration abrufen.\n\nAber wir müssen sicherstellen, dass die eine Sache. Sind wir derzeit in einer Situation, in der wir auf das Netzwerk sicher zugreifen und die Einstellungen abrufen können?\n\nHinweis: Meistens sind Sie sicher, dies zu tun, dass Ihre Remote-Datenbank mit einem SSL-Zertifikat gehostet wird und Ihr Netzwerk nicht beeinträchtigt wird.", + es: "Si ya hemos sincronizado una vez con otro dispositivo, la base de datos remota almacena los valores de configuración adecuados entre los dispositivos sincronizados. Al complemento le gustaría recuperarlos para una configuración sólida.\n\nSin embargo, tenemos que asegurarnos de una cosa. ¿Estamos actualmente en una situación en la que podemos acceder a la red de forma segura y recuperar la configuración?\n\nNota: Básicamente, es seguro hacer esto si su base de datos remota está alojada con un certificado SSL y su red no está comprometida.", fr: "Si nous avons déjà synchronisé une fois avec un autre appareil, la base distante stocke les valeurs de configuration adaptées entre les appareils synchronisés. Le plug-in souhaiterait les récupérer pour une configuration robuste.\n\nMais il faut s'assurer d'une chose. Sommes-nous actuellement dans une situation où nous pouvons accéder au réseau en toute sécurité et récupérer les paramètres ?\n\nNote : le plus souvent, c'est sûr si votre base distante est hébergée avec un certificat SSL et si votre réseau n'est pas compromis.", he: "אם סנכרנו כבר פעם עם מכשיר אחר, מסד הנתונים המרוחד מאחסן ערכי תצורה מתאימים בין המכשירים המסונכרנים. הפלאגין ירצה לאחזר אותם לתצורה חזקה יותר.\n\nעם זאת, עלינו לוודא דבר אחד. האם אנחנו כרגע במצב שבו ניתן לגשת לרשת בבטחה ולאחזר את ההגדרות?\nהערה: ברוב המקרים, אתה בטוח לעשות זאת, כל עוד מסד הנתונים המרוחד שלך מאוחסן עם תעודת SSL, ורשתך אינה פגומה.", ja: "既に他のデバイスと同期したことがある場合、リモートデータベースには同期されたデバイス間の適切な設定値が保存されています。プラグインは堅牢な設定のためにそれらを取得したいと考えています。\n\nただし、1つ確認が必要です。現在、ネットワークに安全にアクセスして設定を取得できる状況ですか?\n\n注意: リモートデータベースがSSL証明書でホストされており、ネットワークが侵害されていなければ、ほとんどの場合安全に実行できます。", + ko: "원격 설정을 가져올 수 있습니다. 가져오면 현재 설정 일부가 원격 설정으로 대체될 수 있습니다. 이 설정을 가져오시겠습니까?", 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.", + zh: "如果我们已通过其他设备同步过一次,远程数据库会存储同步设备之间合适的配置值。插件希望获取这些值以进行可靠的配置。\n\n但是,我们需要确认一件事:当前是否处于可以安全访问网络并获取设置的环境?\n\n注意:大多数情况下这样做是安全的,前提是您的远程数据库使用了 SSL 证书,且网络未受攻击。", + "zh-tw": + "如果我們已透過其他裝置同步過一次,遠端資料庫會儲存同步裝置之間合適的配置值。外掛希望獲取這些值以進行可靠的配置。\n\n但是,我們需要確認一件事:當前是否處於可以安全訪問網路並獲取設定的環境?\n\n注意:大多數情況下這樣做是安全的,前提是您的遠端資料庫使用了 SSL 證書,且網路未受攻擊。", }, "Setup.FetchRemoteConf.Title": { def: "Fetch configuration from remote database?", + de: "Fetch-Konfiguration aus der Remote-Datenbank?", + es: "¿Recuperar la configuración de la base de datos remota?", fr: "Récupérer la configuration depuis la base distante ?", he: "אחזר תצורה ממסד הנתונים המרוחד?", ja: "リモートデータベースから設定を取得しますか?", + ko: "원격 설정을 가져오시겠습니까?", ru: "Загрузить конфигурацию с удалённой базы данных?", - zh: "Fetch configuration from remote database?", + zh: "是否从远程数据库获取配置?", + "zh-tw": "是否從遠端資料庫獲取配置?", + }, + "Setup.Log.ProtocolHandlerRegistrationFailed": { + def: "Failed to register protocol handler. This feature may not work in some environments.", + de: "Failed to register protocol handler. This feature may not work in some environments.", + es: "Failed to register protocol handler. This feature may not work in some environments.", + ja: "Failed to register protocol handler. This feature may not work in some environments.", + ko: "Failed to register protocol handler. This feature may not work in some environments.", + ru: "Failed to register protocol handler. This feature may not work in some environments.", + zh: "注册协议处理程序失败。此功能在某些环境中可能无法工作。", + "zh-tw": "註冊協定處理程式失敗。此功能在某些環境中可能無法運作。", + }, + "Setup.Log.SetupUriCopiedToClipboard": { + def: "Setup URI copied to clipboard", + de: "Setup URI copied to clipboard", + es: "Setup URI copied to clipboard", + ja: "Setup URI copied to clipboard", + ko: "Setup URI copied to clipboard", + ru: "Setup URI copied to clipboard", + zh: "设置 URI 已复制到剪贴板", + "zh-tw": "設定 URI 已複製到剪貼簿", }, "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}
', + de: '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: 'Hemos generado un código QR para transferir la configuración. Escanee el código QR con su teléfono u otro dispositivo.\nNota: El código QR no está cifrado, así que tenga cuidado al abrirlo.\n\n>[!SOLO PARA TUS OJOS]-\n>
${qr_image}
', fr: "Nous avons généré un QR code pour transférer les paramètres. Scannez-le avec votre téléphone ou un autre appareil.\nNote : le QR code n'est pas chiffré, soyez prudent en l'affichant.\n\n>[!POUR VOS YEUX SEULEMENT]-\n>
${qr_image}
", he: 'יצרנו קוד QR להעברת ההגדרות. אנא סרוק את קוד ה-QR עם הטלפון או מכשיר אחר.\nהערה: קוד ה-QR אינו מוצפן, אז היה זהיר בפתיחתו.\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}
', + ru: '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}
', + zh: '已生成用于传输设置的二维码。请使用手机或其他设备扫描此二维码。\n注意:二维码未加密,请谨慎打开。\n\n>[!仅供您查看]-\n>
${qr_image}
', + "zh-tw": + '已生成用於傳輸設定的二維碼。請使用手機或其他裝置掃描此二維碼。\n注意:二維碼未加密,請謹慎開啟。\n\n>[!僅供您檢視]-\n>
${qr_image}
', + }, + "Setup.QRCodeTitle": { + def: "Settings QR Code", + de: "Settings QR Code", + es: "Settings QR Code", + ja: "Settings QR Code", + ko: "Settings QR Code", + ru: "Settings QR Code", + zh: "设置二维码", + "zh-tw": "設定 QR 碼", }, "Setup.RemoteE2EE.AdvancedTitle": { def: "Advanced", + de: "Erweitert", es: "Avanzado", ja: "詳細設定", ko: "고급", @@ -6872,6 +8754,7 @@ export const allMessages = { }, "Setup.RemoteE2EE.AlgorithmWarning": { def: "Changing the encryption algorithm will prevent access to any data previously encrypted with a different algorithm. Ensure that all your devices are configured to use the same algorithm to maintain access to your data.", + de: "Wenn Sie den Verschlüsselungsalgorithmus ändern, können Sie nicht mehr auf Daten zugreifen, die zuvor mit einem anderen Algorithmus verschlüsselt wurden. Stellen Sie sicher, dass alle Ihre Geräte denselben Algorithmus verwenden, damit der Zugriff auf Ihre Daten erhalten bleibt.", es: "Cambiar el algoritmo de cifrado impedirá el acceso a cualquier dato cifrado anteriormente con otro algoritmo. Asegúrate de que todos tus dispositivos estén configurados para usar el mismo algoritmo y así mantener el acceso a tus datos.", ja: "暗号化アルゴリズムを変更すると、別のアルゴリズムで暗号化された既存データにはアクセスできなくなります。すべての端末で同じアルゴリズムを使うよう設定し、データにアクセスできる状態を維持してください。", ko: "암호화 알고리즘을 변경하면 다른 알고리즘으로 암호화된 기존 데이터에 접근할 수 없게 됩니다. 모든 기기에서 동일한 알고리즘을 사용하도록 설정해 데이터 접근성을 유지하세요.", @@ -6882,6 +8765,7 @@ export const allMessages = { }, "Setup.RemoteE2EE.ButtonCancel": { def: "Cancel", + de: "Abbrechen", es: "Cancelar", ja: "キャンセル", ko: "취소", @@ -6891,6 +8775,7 @@ export const allMessages = { }, "Setup.RemoteE2EE.ButtonProceed": { def: "Proceed", + de: "Fortfahren", es: "Continuar", ja: "進む", ko: "진행", @@ -6900,6 +8785,7 @@ export const allMessages = { }, "Setup.RemoteE2EE.DefaultAlgorithmDesc": { def: "In most cases, you should stick with the default algorithm (${algorithm}). This setting is only required if you have an existing Vault encrypted in a different format.", + de: "In den meisten Fällen sollten Sie beim Standardalgorithmus (${algorithm}) bleiben. Diese Einstellung ist nur erforderlich, wenn Sie bereits einen Vault haben, der in einem anderen Format verschlüsselt wurde.", es: "En la mayoría de los casos, debes mantener el algoritmo predeterminado (${algorithm}). Este ajuste solo es necesario si ya tienes un Vault cifrado con un formato diferente.", ja: "ほとんどの場合は、既定のアルゴリズム(${algorithm})をそのまま使用してください。この設定が必要になるのは、既存の Vault が別の形式で暗号化されている場合のみです。", ko: "대부분의 경우 기본 알고리즘(${algorithm})을 그대로 사용하는 것이 좋습니다. 이 설정은 기존 Vault가 다른 형식으로 암호화되어 있는 경우에만 필요합니다.", @@ -6910,6 +8796,7 @@ export const allMessages = { }, "Setup.RemoteE2EE.Guidance": { def: "Please configure your end-to-end encryption settings.", + de: "Bitte konfigurieren Sie Ihre Einstellungen für die Ende-zu-Ende-Verschlüsselung.", es: "Configura tus ajustes de cifrado de extremo a extremo.", ja: "エンドツーエンド暗号化の設定を行ってください。", ko: "엔드투엔드 암호화 설정을 구성해 주세요.", @@ -6919,6 +8806,7 @@ export const allMessages = { }, "Setup.RemoteE2EE.LabelEncrypt": { def: "End-to-End Encryption", + de: "Ende-zu-Ende-Verschlüsselung", es: "Cifrado de extremo a extremo", ja: "エンドツーエンド暗号化", ko: "엔드투엔드 암호화", @@ -6928,6 +8816,7 @@ export const allMessages = { }, "Setup.RemoteE2EE.LabelEncryptionAlgorithm": { def: "Encryption Algorithm", + de: "Verschlüsselungsalgorithmus", es: "Algoritmo de cifrado", ja: "暗号化アルゴリズム", ko: "암호화 알고리즘", @@ -6937,6 +8826,7 @@ export const allMessages = { }, "Setup.RemoteE2EE.LabelObfuscateProperties": { def: "Obfuscate Properties", + de: "Eigenschaften verschleiern", es: "Ofuscar propiedades", ja: "プロパティを難読化", ko: "속성 난독화", @@ -6946,6 +8836,7 @@ export const allMessages = { }, "Setup.RemoteE2EE.MultiDestinationWarning": { def: "This setting must be the same even when connecting to multiple synchronisation destinations.", + de: "Diese Einstellung muss auch dann identisch sein, wenn Sie sich mit mehreren Synchronisationszielen verbinden.", es: "Este ajuste debe ser el mismo incluso cuando te conectes a varios destinos de sincronización.", ja: "複数の同期先へ接続する場合でも、この設定は同一である必要があります。", ko: "여러 동기화 대상에 연결하는 경우에도 이 설정은 동일해야 합니다.", @@ -6955,6 +8846,7 @@ export const allMessages = { }, "Setup.RemoteE2EE.ObfuscatePropertiesDesc": { def: "Obfuscating properties (e.g., path of file, size, creation and modification dates) 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. This helps protect your privacy and makes it more difficult for unauthorized users to infer information about your data.", + de: "Das Verschleiern von Eigenschaften (z. B. Dateipfad, Größe sowie Erstellungs- und Änderungsdatum) fügt eine zusätzliche Sicherheitsebene hinzu, da die Struktur und die Namen Ihrer Dateien und Ordner auf dem Remote-Server schwerer erkennbar sind. Das schützt Ihre Privatsphäre und erschwert es unbefugten Personen, Informationen über Ihre Daten abzuleiten.", es: "Ofuscar propiedades (por ejemplo, la ruta del archivo, el tamaño y las fechas de creación y modificación) añade una capa adicional de seguridad al dificultar la identificación de la estructura y los nombres de tus archivos y carpetas en el servidor remoto. Esto ayuda a proteger tu privacidad y dificulta que usuarios no autorizados deduzcan información sobre tus datos.", ja: "プロパティ(ファイルパス、サイズ、作成日時、更新日時など)を難読化すると、リモートサーバー上のファイルやフォルダーの構造や名前を特定しにくくできるため、追加の保護層になります。これによりプライバシーが守られ、権限のない第三者がデータに関する情報を推測しにくくなります。", ko: "속성(예: 파일 경로, 크기, 생성일 및 수정일)을 난독화하면 원격 서버에서 파일과 폴더의 구조 및 이름을 식별하기 어렵게 만들어 보안을 한층 강화할 수 있습니다. 이는 개인 정보를 보호하고 권한 없는 사용자가 데이터에 관한 정보를 추론하기 어렵게 만듭니다.", @@ -6965,6 +8857,7 @@ export const allMessages = { }, "Setup.RemoteE2EE.PassphraseValidationLine1": { 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.", + de: "Bitte beachten Sie, dass die Passphrase für die Ende-zu-Ende-Verschlüsselung erst geprüft wird, wenn der Synchronisationsvorgang tatsächlich beginnt. Dies ist eine Sicherheitsmaßnahme zum Schutz Ihrer Daten.", es: "Ten en cuenta que la frase de contraseña del cifrado de extremo a extremo no se valida hasta que el proceso de sincronización comienza realmente. Esta es una medida de seguridad diseñada para proteger tus datos.", ja: "エンドツーエンド暗号化のパスフレーズは、実際に同期処理が開始されるまで検証されない点にご注意ください。これはデータを保護するためのセキュリティ対策です。", ko: "엔드투엔드 암호화 패스프레이즈는 실제 동기화가 시작되기 전까지 검증되지 않는다는 점에 유의하세요. 이것은 데이터를 보호하기 위한 보안 조치입니다.", @@ -6974,6 +8867,7 @@ export const allMessages = { }, "Setup.RemoteE2EE.PassphraseValidationLine2": { def: "Therefore, we ask that you exercise extreme caution when configuring server information manually. If an incorrect passphrase is entered, the data on the server will become corrupted. Please understand that this is intended behaviour.", + de: "Daher bitten wir Sie, beim manuellen Konfigurieren der Serverinformationen äußerst vorsichtig zu sein. Wenn eine falsche Passphrase eingegeben wird, werden die Daten auf dem Server beschädigt. Bitte haben Sie Verständnis dafür, dass dies beabsichtigtes Verhalten ist.", es: "Por lo tanto, te pedimos que tengas muchísimo cuidado al configurar manualmente la información del servidor. Si introduces una frase de contraseña incorrecta, los datos del servidor se corromperán. Ten en cuenta que este comportamiento es intencionado.", ja: "そのため、サーバー情報を手動で設定する際は細心の注意を払ってください。誤ったパスフレーズを入力すると、サーバー上のデータが破損します。これは意図された動作ですので、あらかじめご理解ください。", ko: "따라서 서버 정보를 수동으로 구성할 때는 각별히 주의해 주세요. 잘못된 패스프레이즈를 입력하면 서버의 데이터가 손상됩니다. 이는 의도된 동작이니 반드시 이해하고 진행해 주세요.", @@ -6984,6 +8878,7 @@ export const allMessages = { }, "Setup.RemoteE2EE.PlaceholderPassphrase": { def: "Enter your passphrase", + de: "Geben Sie Ihre Passphrase ein", es: "Introduce tu frase de contraseña", ja: "パスフレーズを入力してください", ko: "패스프레이즈를 입력하세요", @@ -6993,6 +8888,7 @@ export const allMessages = { }, "Setup.RemoteE2EE.StronglyRecommendedLine1": { 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. Make sure to remember your passphrase, as it will be required to decrypt your data on other devices.", + de: "Wenn Sie die Ende-zu-Ende-Verschlüsselung aktivieren, werden Ihre Daten auf Ihrem Gerät verschlüsselt, bevor sie an den Remote-Server gesendet werden. Das bedeutet, dass selbst bei Zugriff auf den Server niemand Ihre Daten ohne die Passphrase lesen kann. Merken Sie sich Ihre Passphrase unbedingt, da sie auch auf anderen Geräten zum Entschlüsseln Ihrer Daten benötigt wird.", es: "Al habilitar el cifrado de extremo a extremo, tus datos se cifran en tu dispositivo antes de enviarse al servidor remoto. Esto significa que, incluso si alguien obtiene acceso al servidor, no podrá leer tus datos sin la frase de contraseña. Asegúrate de recordarla, ya que también será necesaria para descifrar tus datos en otros dispositivos.", ja: "エンドツーエンド暗号化を有効にすると、データはリモートサーバーへ送信される前にこの端末上で暗号化されます。つまり、たとえ誰かがサーバーへアクセスできても、パスフレーズがなければデータを読むことはできません。他の端末でデータを復号する際にも必要になるため、パスフレーズは必ず覚えておいてください。", ko: "엔드투엔드 암호화를 활성화하면 데이터가 원격 서버로 전송되기 전에 이 기기에서 암호화됩니다. 즉, 누군가 서버에 접근하더라도 패스프레이즈 없이는 데이터를 읽을 수 없습니다. 다른 기기에서 데이터를 복호화할 때도 필요하므로 패스프레이즈를 반드시 기억해 두세요.", @@ -7003,6 +8899,7 @@ export const allMessages = { }, "Setup.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.", + de: "Bitte beachten Sie außerdem: Wenn Sie Peer-to-Peer-Synchronisation verwenden, wird diese Konfiguration auch dann genutzt, wenn Sie künftig zu anderen Methoden wechseln und sich mit einem Remote-Server verbinden.", es: "Además, ten en cuenta que si estás usando sincronización Peer-to-Peer, esta configuración se utilizará cuando más adelante cambies a otros métodos y te conectes a un servidor remoto.", ja: "また、Peer-to-Peer 同期を使用している場合でも、将来ほかの方式へ切り替えてリモートサーバーへ接続するときには、この設定が使われます。", ko: "또한 Peer-to-Peer 동기화를 사용 중이더라도, 나중에 다른 방식으로 전환하여 원격 서버에 연결하면 이 설정이 그대로 사용됩니다.", @@ -7013,6 +8910,7 @@ export const allMessages = { }, "Setup.RemoteE2EE.StronglyRecommendedTitle": { def: "Strongly Recommended", + de: "Dringend empfohlen", es: "Muy recomendable", ja: "強く推奨", ko: "강력 권장", @@ -7022,6 +8920,7 @@ export const allMessages = { }, "Setup.RemoteE2EE.Title": { def: "End-to-End Encryption", + de: "Ende-zu-Ende-Verschlüsselung", es: "Cifrado de extremo a extremo", ja: "エンドツーエンド暗号化", ko: "엔드투엔드 암호화", @@ -7031,6 +8930,7 @@ export const allMessages = { }, "Setup.ScanQRCode.ButtonClose": { def: "Close this dialog", + de: "Diesen Dialog schließen", es: "Cerrar este diálogo", ja: "このダイアログを閉じる", ko: "이 대화 상자 닫기", @@ -7040,6 +8940,7 @@ export const allMessages = { }, "Setup.ScanQRCode.Guidance": { def: "Please follow the steps below to import settings from your existing device.", + de: "Bitte folgen Sie den untenstehenden Schritten, um die Einstellungen von Ihrem vorhandenen Gerät zu importieren.", es: "Sigue los pasos de abajo para importar los ajustes desde tu dispositivo actual.", ja: "既存の端末から設定を取り込むには、以下の手順に従ってください。", ko: "기존 기기에서 설정을 가져오려면 아래 단계를 따라 주세요.", @@ -7049,6 +8950,7 @@ export const allMessages = { }, "Setup.ScanQRCode.Step1": { def: "On this device, please keep this Vault open.", + de: "Lassen Sie auf diesem Gerät bitte diesen Vault geöffnet.", es: "En este dispositivo, mantén este Vault abierto.", ja: "この端末では、この Vault を開いたままにしてください。", ko: "이 기기에서는 이 Vault를 계속 열어 두세요.", @@ -7058,6 +8960,7 @@ export const allMessages = { }, "Setup.ScanQRCode.Step2": { def: "On the source device, open Obsidian.", + de: "Öffnen Sie auf dem Quellgerät Obsidian.", es: "En el dispositivo de origen, abre Obsidian.", ja: "元の端末で Obsidian を開きます。", ko: "원본 기기에서 Obsidian을 엽니다.", @@ -7067,6 +8970,7 @@ export const allMessages = { }, "Setup.ScanQRCode.Step3": { def: "On the source device, from the command palette, run the 'Show settings as a QR code' command.", + de: "Führen Sie auf dem Quellgerät im Befehlsmenü den Befehl „Einstellungen als QR-Code anzeigen“ aus.", es: 'En el dispositivo de origen, ejecuta desde la paleta de comandos la orden "Mostrar ajustes como código QR".', ja: "元の端末でコマンドパレットから「設定を QR コードとして表示」を実行します。", ko: '원본 기기에서 명령 팔레트를 열고 "설정을 QR 코드로 표시" 명령을 실행합니다.', @@ -7076,6 +8980,7 @@ export const allMessages = { }, "Setup.ScanQRCode.Step4": { def: "On this device, switch to the camera app or use a QR code scanner to scan the displayed QR code.", + de: "Wechseln Sie auf diesem Gerät zur Kamera-App oder verwenden Sie einen QR-Code-Scanner, um den angezeigten QR-Code zu scannen.", es: "En este dispositivo, cambia a la cámara o usa un escáner QR para escanear el código mostrado.", ja: "この端末でカメラアプリに切り替えるか QR コードスキャナーを使って、表示された QR コードを読み取ってください。", ko: "이 기기에서 카메라 앱으로 전환하거나 QR 코드 스캐너를 사용해 표시된 QR 코드를 스캔하세요.", @@ -7085,6 +8990,7 @@ export const allMessages = { }, "Setup.ScanQRCode.Title": { def: "Scan QR Code", + de: "QR-Code scannen", es: "Escanear código QR", ja: "QRコードをスキャン", ko: "QR 코드 스캔", @@ -7092,26 +8998,43 @@ export const allMessages = { zh: "扫描二维码", "zh-tw": "掃描 QR 碼", }, + "Setup.SetupUri": { + def: "Setup URI", + de: "Setup URI", + es: "Setup URI", + ja: "Setup URI", + ko: "Setup URI", + ru: "Setup URI", + zh: "设置 URI", + "zh-tw": "設定 URI", + }, "Setup.ShowQRCode": { def: "Show QR code", + de: "QR-Code anzeigen", + es: "Mostrar código QR", fr: "Afficher le QR code", he: "הצג קוד QR", ja: "QRコードを表示", ko: "QR 코드 표시", ru: "Показать QR код", zh: "使用QR码", + "zh-tw": "使用QR碼", }, "Setup.ShowQRCode.Desc": { def: "Show QR code to transfer the settings.", + de: "QR-Code anzeigen, um die Einstellungen zu übertragen.", + es: "Mostrar el código QR para transferir la configuración.", fr: "Afficher le QR code pour transférer les paramètres.", he: "הצג קוד QR להעברת ההגדרות.", ja: "設定を転送するためのQRコードを表示します。", ko: "설정을 전송하기 위한 QR 코드를 표시합니다.", ru: "Показать QR код для передачи настроек.", zh: "使用QR码来传递配置", + "zh-tw": "使用QR碼來傳遞配置", }, "Setup.UseSetupURI.ButtonCancel": { def: "Cancel", + de: "Abbrechen", es: "Cancelar", ja: "キャンセル", ko: "취소", @@ -7121,6 +9044,7 @@ export const allMessages = { }, "Setup.UseSetupURI.ButtonProceed": { def: "Test Settings and Continue", + de: "Einstellungen testen und fortfahren", es: "Probar ajustes y continuar", ja: "設定をテストして続行", ko: "설정 테스트 후 계속", @@ -7130,6 +9054,7 @@ export const allMessages = { }, "Setup.UseSetupURI.ErrorFailedToParse": { def: "Failed to parse the Setup URI. Please check the URI and passphrase.", + de: "Die Setup-URI konnte nicht verarbeitet werden. Bitte prüfen Sie URI und Passphrase.", es: "No se pudo procesar la URI de configuración. Revisa la URI y la frase de contraseña.", ja: "Setup URI を解析できませんでした。URI とパスフレーズを確認してください。", ko: "Setup URI를 해석하지 못했습니다. URI와 패스프레이즈를 확인해 주세요.", @@ -7139,6 +9064,7 @@ export const allMessages = { }, "Setup.UseSetupURI.ErrorPassphraseRequired": { def: "Please enter the vault passphrase.", + de: "Bitte geben Sie die Passphrase des Vaults ein.", es: "Introduce la frase de contraseña del Vault.", ja: "Vault のパスフレーズを入力してください。", ko: "Vault 패스프레이즈를 입력해 주세요.", @@ -7148,6 +9074,7 @@ export const allMessages = { }, "Setup.UseSetupURI.GuidanceLine1": { def: "Please enter the Setup URI that was generated during server installation or on another device, along with the vault passphrase.", + de: "Bitte geben Sie die Setup-URI ein, die während der Servereinrichtung oder auf einem anderen Gerät erzeugt wurde, zusammen mit der Passphrase des Vaults.", es: "Introduce la URI de configuración que se generó durante la instalación del servidor o en otro dispositivo, junto con la frase de contraseña del Vault.", ja: "サーバーのセットアップ時または別の端末で生成された Setup URI と、Vault のパスフレーズを入力してください。", ko: "서버 설치 중 또는 다른 기기에서 생성된 Setup URI와 Vault 패스프레이즈를 입력해 주세요.", @@ -7157,6 +9084,7 @@ export const allMessages = { }, "Setup.UseSetupURI.GuidanceLine2": { def: 'Note that you can generate a new Setup URI by running the "Copy settings as a new Setup URI" command in the command palette.', + de: "Sie können eine neue Setup-URI erzeugen, indem Sie im Befehlsmenü den Befehl „Einstellungen als neue Setup-URI kopieren“ ausführen.", es: 'Ten en cuenta que puedes generar una nueva URI de configuración ejecutando el comando "Copiar ajustes como nueva URI de configuración" desde la paleta de comandos.', ja: "コマンドパレットで「設定を新しい Setup URI としてコピー」を実行すると、新しい Setup URI を生成できます。", ko: '명령 팔레트에서 "설정을 새 Setup URI로 복사" 명령을 실행하면 새 Setup URI를 생성할 수 있습니다.', @@ -7166,6 +9094,7 @@ export const allMessages = { }, "Setup.UseSetupURI.InvalidInfo": { def: "The Setup URI is invalid. Please check it and try again.", + de: "Die Setup-URI ist ungültig. Bitte prüfen Sie sie und versuchen Sie es erneut.", es: "La URI de configuración no es válida. Revísala e inténtalo de nuevo.", ja: "Setup URI が無効です。内容を確認して再試行してください。", ko: "Setup URI가 올바르지 않습니다. 확인한 뒤 다시 시도해 주세요.", @@ -7175,6 +9104,7 @@ export const allMessages = { }, "Setup.UseSetupURI.LabelPassphrase": { def: "Vault passphrase", + de: "Vault-Passphrase", es: "Frase de contraseña del Vault", ja: "Vault のパスフレーズ", ko: "Vault 패스프레이즈", @@ -7184,6 +9114,7 @@ export const allMessages = { }, "Setup.UseSetupURI.LabelSetupURI": { def: "Setup URI", + de: "Setup-URI", es: "URI de configuración", ja: "Setup URI", ko: "Setup URI", @@ -7193,6 +9124,7 @@ export const allMessages = { }, "Setup.UseSetupURI.PlaceholderPassphrase": { def: "Enter your vault passphrase", + de: "Geben Sie die Passphrase Ihres Vaults ein", es: "Introduce la frase de contraseña del Vault", ja: "Vault のパスフレーズを入力してください", ko: "Vault 패스프레이즈를 입력하세요", @@ -7202,6 +9134,7 @@ export const allMessages = { }, "Setup.UseSetupURI.Title": { def: "Enter Setup URI", + de: "Setup-URI eingeben", es: "Introducir URI de configuración", ja: "Setup URI を入力", ko: "Setup URI 입력", @@ -7211,6 +9144,7 @@ export const allMessages = { }, "Setup.UseSetupURI.ValidInfo": { def: "The Setup URI is valid and ready to use.", + de: "Die Setup-URI ist gültig und kann verwendet werden.", es: "La URI de configuración es válida y está lista para usarse.", ja: "Setup URI は有効で、使用できます。", ko: "Setup URI가 유효하며 사용할 준비가 되었습니다.", @@ -7220,6 +9154,7 @@ export const allMessages = { }, "Should we keep folders that don't have any files inside?": { def: "Should we keep folders that don't have any files inside?", + de: "Sollten wir Ordner halten, die keine Dateien haben?", es: "¿Mantener carpetas vacías?", fr: "Conserver les dossiers ne contenant aucun fichier ?", he: "האם לשמור תיקיות שאין בהן קבצים?", @@ -7227,9 +9162,11 @@ export const allMessages = { ko: "내부에 파일이 없는 폴더를 유지하시겠습니까?", ru: "Сохранять папки без файлов?", zh: "我们是否应该保留内部没有任何文件的文件夹?", + "zh-tw": "我們是否應該保留內部沒有任何檔案的資料夾?", }, "Should we only check for conflicts when a file is opened?": { def: "Should we only check for conflicts when a file is opened?", + de: "Sollten wir nur nach Konflikten suchen, wenn eine Datei geöffnet wird?", es: "¿Solo comprobar conflictos al abrir archivo?", fr: "Ne vérifier les conflits qu'à l'ouverture d'un fichier ?", he: "האם לבדוק קונפליקטים רק בעת פתיחת קובץ?", @@ -7237,9 +9174,11 @@ export const allMessages = { ko: "파일을 열 때만 충돌을 확인하시겠습니까?", ru: "Проверять конфликты только при открытии файла?", zh: "我们是否应该仅在文件打开时检查冲突?", + "zh-tw": "我們是否應該僅在檔案開啟時檢查衝突?", }, "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?", + de: "Sollten wir Sie beim Öffnen einer Datei über widersprüchliche Dateien auffordern?", es: "¿Notificar sobre conflictos al abrir archivo?", fr: "Vous demander au sujet des fichiers en conflit à l'ouverture d'un fichier ?", he: "האם להציג בקשה לגבי קבצים מתנגשים בעת פתיחת קובץ?", @@ -7247,9 +9186,11 @@ export const allMessages = { ko: "파일을 열 때 충돌하는 파일에 대해 알림을 표시하시겠습니까?", ru: "Спрашивать о конфликтующих файлах при открытии файла?", zh: "当文件打开时,是否提示冲突文件?", + "zh-tw": "當檔案開啟時,是否提示衝突檔案?", }, "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?", + de: "Sollten wir Sie für jede einzelne Zusammenführung auffordern, auch wenn wir automatisch sicher zusammenführen können?", es: "¿Preguntar en cada fusión aunque sea automática?", fr: "Vous demander pour chaque fusion, même si nous pouvons fusionner automatiquement en toute sécurité ?", he: "האם להציג בקשת אישור לכל מיזוג יחיד, גם אם ניתן למזג בבטחה אוטומטית?", @@ -7257,11 +9198,13 @@ export const allMessages = { ko: "안전하게 자동 병합할 수 있는 경우에도 모든 병합에 대해 알림을 받으시겠습니까?", ru: "Спрашивать о каждом слиянии, даже если мы можем безопасно слить автоматически?", zh: "即使我们可以安全地自动合并,是否也应该为每一次合并提示您?", + "zh-tw": "即使我們可以安全地自動合併,是否也應該為每一次合併提示您?", }, "Show full banner": { def: "Show full banner", - es: "Mostrar banner completo", - ja: "完全なバナーを表示", + de: "Volle Banner anzeigen", + es: "Mostrar el banner completo", + ja: "バナーを完全表示", ko: "전체 배너 표시", ru: "Показывать полный баннер", zh: "显示完整横幅", @@ -7269,15 +9212,27 @@ export const allMessages = { }, "Show history": { def: "Show history", - "zh-tw": "顯示歷程", + de: "Geschichte zeigen", + es: "Mostrar historial", + ja: "履歴を表示", + ko: "기록 보기", + ru: "Показать историю", + zh: "显示历史", + "zh-tw": "顯示歷史", }, "Show icon only": { def: "Show icon only", + de: "Nur Symbol anzeigen", + es: "Mostrar solo el icono", + ja: "アイコンのみ表示", + ko: "아이콘만 표시", + ru: "Показывать только значок", zh: "仅显示图标", "zh-tw": "僅顯示圖示", }, "Show only notifications": { def: "Show only notifications", + de: "Nur Benachrichtigungen anzeigen", es: "Mostrar solo notificaciones", fr: "N'afficher que les notifications", he: "הצג התראות בלבד", @@ -7285,9 +9240,11 @@ export const allMessages = { ko: "알림만 표시", ru: "Показывать только уведомления", zh: "仅显示通知", + "zh-tw": "僅顯示通知", }, "Show status as icons only": { def: "Show status as icons only", + de: "Status nur als Symbole anzeigen", es: "Mostrar estado solo con íconos", fr: "N'afficher le statut que sous forme d'icônes", he: "הצג סטטוס כאייקונים בלבד", @@ -7295,9 +9252,11 @@ export const allMessages = { ko: "아이콘으로만 상태 표시", ru: "Показывать статус только иконками", zh: "仅以图标显示状态", + "zh-tw": "僅以圖示顯示狀態", }, "Show status icon instead of file warnings banner": { def: "Show status icon instead of file warnings banner", + de: "Statussymbol anstelle von Dateiwarnungen Banner anzeigen", 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", he: "הצג אייקון סטטוס במקום פס אזהרות הקובץ", @@ -7305,10 +9264,11 @@ export const allMessages = { ko: "파일 경고 배너 대신 상태 아이콘 표시", ru: "Показывать иконку статуса вместо предупреждения о файлах", zh: "显示状态图标,而非文件警告横幅", - "zh-tw": "以狀態圖示取代檔案警告橫幅", + "zh-tw": "顯示狀態圖示,而非檔案警告橫幅", }, "Show status inside the editor": { def: "Show status inside the editor", + de: "Status im Editor anzeigen", es: "Mostrar estado dentro del editor", fr: "Afficher le statut dans l'éditeur", he: "הצג סטטוס בתוך העורך", @@ -7316,9 +9276,11 @@ export const allMessages = { ko: "편집기 내부에 상태 표시", ru: "Показывать статус внутри редактора", zh: "在编辑器内显示状态", + "zh-tw": "在編輯器內顯示狀態", }, "Show status on the status bar": { def: "Show status on the status bar", + de: "Status auf der Statusleiste anzeigen", es: "Mostrar estado en la barra de estado", fr: "Afficher le statut dans la barre d'état", he: "הצג סטטוס בשורת המצב", @@ -7326,9 +9288,11 @@ export const allMessages = { ko: "상태 바에 상태 표시", ru: "Показывать статус в строке состояния", zh: "在状态栏上显示状态", + "zh-tw": "在狀態列上顯示狀態", }, "Show verbose log. Please enable if you report an issue.": { def: "Show verbose log. Please enable if you report an issue.", + de: "Verbose-Log anzeigen. Bitte aktivieren Sie, wenn Sie ein Problem melden.", es: "Mostrar registro detallado. Actívelo si reporta un problema.", fr: "Afficher un journal verbeux. À activer si vous signalez un problème.", he: "הצג יומן מפורט. אנא הפעל אם אתה מדווח על בעיה.", @@ -7336,10 +9300,12 @@ export const allMessages = { ko: "자세한 로그를 표시합니다. 문제를 신고하는 경우 활성화해 주세요.", ru: "Показывать подробный лог. Пожалуйста, включите при сообщении о проблеме.", zh: "显示详细日志。如果您报告问题,请启用此选项 ", + "zh-tw": "顯示詳細日誌。如果您報告問題,請啟用此選項 ", }, "Some devices have differing progress values (max: ${maxProgress}, min: ${minProgress}).\nThis may indicate that some devices have not completed synchronisation, which could lead to conflicts. Strongly recommend confirming that all devices are synchronised before proceeding.": { def: "Some devices have differing progress values (max: ${maxProgress}, min: ${minProgress}).\nThis may indicate that some devices have not completed synchronisation, which could lead to conflicts. Strongly recommend confirming that all devices are synchronised before proceeding.", + de: "Einige Geräte haben unterschiedliche Fortschrittswerte (max: ${maxProgress}, min: ${minProgress}).\nDas kann darauf hindeuten, dass einige Geräte die Synchronisation noch nicht abgeschlossen haben, was zu Konflikten führen könnte. Es wird dringend empfohlen, vor dem Fortfahren zu bestätigen, dass alle Geräte synchronisiert sind.", ja: "一部のデバイスで進捗値が異なっています(最大: ${maxProgress}、最小: ${minProgress})。\nこれは一部のデバイスで同期が完了していない可能性を示しており、競合の原因になることがあります。続行する前に、すべてのデバイスが同期済みであることを確認することを強くおすすめします。", ko: "일부 기기의 진행 값이 다릅니다(최대: ${maxProgress}, 최소: ${minProgress}).\n이는 일부 기기가 동기화를 완료하지 않았음을 의미할 수 있으며, 충돌로 이어질 수 있습니다. 계속 진행하기 전에 모든 기기가 동기화되었는지 반드시 확인하는 것을 강력히 권장합니다.", ru: "У некоторых устройств различаются значения прогресса (макс.: ${maxProgress}, мин.: ${minProgress}).\nЭто может означать, что некоторые устройства ещё не завершили синхронизацию, что может привести к конфликтам. Настоятельно рекомендуется перед продолжением убедиться, что все устройства синхронизированы.", @@ -7349,6 +9315,7 @@ export const allMessages = { }, "Starts synchronisation when a file is saved.": { def: "Starts synchronisation when a file is saved.", + de: "Startet die Synchronisation, wenn eine Datei gespeichert wird.", es: "Inicia sincronización al guardar un archivo", fr: "Démarre la synchronisation à l'enregistrement d'un fichier.", he: "מתחיל סנכרון כאשר קובץ נשמר.", @@ -7356,9 +9323,11 @@ export const allMessages = { ko: "파일이 저장될 때 동기화를 시작합니다.", ru: "Запускать синхронизацию при сохранении файла.", zh: "当文件保存时启动同步 ", + "zh-tw": "當檔案儲存時啟動同步 ", }, "Stop reflecting database changes to storage files.": { def: "Stop reflecting database changes to storage files.", + de: "Stoppen Sie, die Datenbankänderungen in Speicherdateien widerzuspiegeln.", es: "Dejar de reflejar cambios de BD en archivos", fr: "Arrêter de répercuter les modifications de la base vers les fichiers de stockage.", he: "הפסק לשקף שינויי מסד נתונים לקבצי אחסון.", @@ -7366,9 +9335,11 @@ export const allMessages = { ko: "데이터베이스 변경 사항을 스토리지 파일에 반영하는 것을 중단합니다.", ru: "Остановить отражение изменений базы данных в файлы хранилища.", zh: "停止将数据库更改反映到存储文件 ", + "zh-tw": "停止將資料庫更改反映到儲存檔案 ", }, "Stop watching for file changes.": { def: "Stop watching for file changes.", + de: "Hör auf, auf Dateiänderungen zu achten.", es: "Dejar de monitorear cambios en archivos", fr: "Arrêter la surveillance des modifications de fichiers.", he: "הפסק לעקוב אחר שינויי קבצים.", @@ -7376,6 +9347,7 @@ export const allMessages = { ko: "파일 변경 사항 감시를 중단합니다.", ru: "Остановить отслеживание изменений файлов.", zh: "停止监视文件更改 ", + "zh-tw": "停止監視檔案更改 ", }, "Storage -> Database": { def: "Storage -> Database", @@ -7383,6 +9355,7 @@ export const allMessages = { }, "Suppress notification of hidden files change": { def: "Suppress notification of hidden files change", + de: "Suppress Benachrichtigung von versteckten Dateien ändern", es: "Suprimir notificaciones de cambios en archivos ocultos", fr: "Supprimer les notifications de modification des fichiers cachés", he: "דחוק התראת שינוי קבצים נסתרים", @@ -7390,9 +9363,11 @@ export const allMessages = { ko: "숨겨진 파일 변경 알림 억제", ru: "Подавлять уведомления об изменении скрытых файлов", zh: "暂停隐藏文件更改的通知", + "zh-tw": "暫停隱藏檔案更改的通知", }, "Suspend database reflecting": { def: "Suspend database reflecting", + de: "Suspend Datenbank reflektierend", es: "Suspender reflejo de base de datos", fr: "Suspendre la répercussion dans la base", he: "השהה שיקוף מסד נתונים", @@ -7400,9 +9375,11 @@ export const allMessages = { ko: "데이터베이스 반영 일시 중단", ru: "Приостановить отражение базы данных", zh: "暂停数据库反映", + "zh-tw": "暫停資料庫反映", }, "Suspend file watching": { def: "Suspend file watching", + de: "Suspend Dateibeobachtung", es: "Suspender monitorización de archivos", fr: "Suspendre la surveillance des fichiers", he: "השהה מעקב קבצים", @@ -7410,9 +9387,11 @@ export const allMessages = { ko: "파일 감시 일시 중단", ru: "Приостановить отслеживание файлов", zh: "暂停文件监视", + "zh-tw": "暫停檔案監視", }, "Switch to IDB": { def: "Switch to IDB", + de: "Zu IDB wechseln", es: "Cambiar a IDB", ja: "IDB に切り替える", ko: "IDB로 전환", @@ -7422,6 +9401,7 @@ export const allMessages = { }, "Switch to IndexedDB": { def: "Switch to IndexedDB", + de: "Zu IndexedDB wechseln", es: "Cambiar a IndexedDB", ja: "IndexedDB に切り替える", ko: "IndexedDB로 전환", @@ -7431,6 +9411,7 @@ export const allMessages = { }, "Sync after merging file": { def: "Sync after merging file", + de: "Synchronisieren nach der Fusionsdatei", es: "Sincronizar tras fusionar archivo", fr: "Synchroniser après fusion d'un fichier", he: "סנכרן לאחר מיזוג קובץ", @@ -7438,9 +9419,11 @@ export const allMessages = { ko: "파일 병합 후 동기화", ru: "Синхронизировать после слияния файла", zh: "合并文件后同步", + "zh-tw": "合併檔案後同步", }, "Sync automatically after merging files": { def: "Sync automatically after merging files", + de: "Synchronisieren automatisch nach dem Zusammenfügen von Dateien", es: "Sincronizar automáticamente tras fusionar archivos", fr: "Synchroniser automatiquement après fusion des fichiers", he: "סנכרן אוטומטית לאחר מיזוג קבצים", @@ -7448,9 +9431,11 @@ export const allMessages = { ko: "파일 병합 후 자동으로 동기화", ru: "Синхронизировать автоматически после слияния файлов", zh: "合并文件后自动同步", + "zh-tw": "合併檔案後自動同步", }, "Sync Mode": { def: "Sync Mode", + de: "Synthesizer", es: "Modo de sincronización", fr: "Mode de synchronisation", he: "מצב סנכרון", @@ -7458,9 +9443,11 @@ export const allMessages = { ko: "동기화 모드", ru: "Режим синхронизации", zh: "同步模式", + "zh-tw": "同步模式", }, "Sync on Editor Save": { def: "Sync on Editor Save", + de: "Sync auf Editor speichern", es: "Sincronizar al guardar en editor", fr: "Synchroniser à l'enregistrement dans l'éditeur", he: "סנכרן בשמירת עורך", @@ -7468,9 +9455,11 @@ export const allMessages = { ko: "편집기 저장 시 동기화", ru: "Синхронизация при сохранении в редакторе", zh: "编辑器保存时同步", + "zh-tw": "編輯器儲存時同步", }, "Sync on File Open": { def: "Sync on File Open", + de: "Sync auf Datei öffnen", es: "Sincronizar al abrir archivo", fr: "Synchroniser à l'ouverture d'un fichier", he: "סנכרן בפתיחת קובץ", @@ -7478,9 +9467,11 @@ export const allMessages = { ko: "파일 열기 시 동기화", ru: "Синхронизация при открытии файла", zh: "打开文件时同步", + "zh-tw": "開啟檔案時同步", }, "Sync on Save": { def: "Sync on Save", + de: "Sync auf Speichern", es: "Sincronizar al guardar", fr: "Synchroniser à l'enregistrement", he: "סנכרן בשמירה", @@ -7488,9 +9479,11 @@ export const allMessages = { ko: "저장 시 동기화", ru: "Синхронизация при сохранении", zh: "保存时同步", + "zh-tw": "儲存時同步", }, "Sync on Startup": { def: "Sync on Startup", + de: "Sync auf Startup", es: "Sincronizar al iniciar", fr: "Synchroniser au démarrage", he: "סנכרן בהפעלה", @@ -7498,9 +9491,11 @@ export const allMessages = { ko: "시작 시 동기화", ru: "Синхронизация при запуске", zh: "启动时同步", + "zh-tw": "啟動時同步", }, "Synchronisation utilising journal files. You must have set up an S3/MinIO/R2 compatible object storage.": { def: "Synchronisation utilising journal files. You must have set up an S3/MinIO/R2 compatible object storage.", + de: "Synchronisation über Journaldateien. Sie müssen einen S3/MinIO/R2-kompatiblen Objektspeicher eingerichtet haben。", es: "Sincronización mediante archivos de registro. Debe haber configurado un almacenamiento de objetos compatible con S3/MinIO/R2。", ja: "ジャーナルファイルを利用する同期方式です。S3/MinIO/R2 互換のオブジェクトストレージを事前に構成しておく必要があります。", ko: "저널 파일을 활용하는 동기화 방식입니다. S3/MinIO/R2 호환 객체 스토리지를 미리 구성해야 합니다。", @@ -7510,6 +9505,7 @@ export const allMessages = { }, "Synchronising files": { def: "Synchronising files", + de: "Zu synchronisierende Dateien", es: "Archivos sincronizados", ja: "同期するファイル", ko: "동기화할 파일", @@ -7519,6 +9515,7 @@ export const allMessages = { }, Syncing: { def: "Syncing", + de: "Synchronisierung", es: "Sincronización", ja: "同期", ko: "동기화", @@ -7528,6 +9525,7 @@ export const allMessages = { }, "Target patterns": { def: "Target patterns", + de: "Zielmuster", es: "Patrones objetivo", ja: "対象パターン", ko: "대상 패턴", @@ -7538,6 +9536,7 @@ export const allMessages = { "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.", + de: "Nur testen - Dateikonflikte lösen, indem Sie neuere Kopien der Datei synchronisieren, kann dies geänderte Dateien überschreiben. Achtung!", es: "Solo pruebas - Resolver conflictos sincronizando copias nuevas (puede sobrescribir modificaciones)", fr: "Test uniquement - Résout les conflits de fichiers en synchronisant les copies plus récentes, ce qui peut écraser des fichiers modifiés. Prudence.", he: "לבדיקה בלבד - פתור קונפליקטי קבצים על ידי סנכרון עותקים חדשים יותר של הקובץ, פעולה זו עלולה לדרוס קבצים שונו. היה מוזהר.", @@ -7545,9 +9544,11 @@ export const allMessages = { ko: "테스트 전용 - 파일의 새로운 사본을 동기화하여 파일 충돌을 해결하며, 수정된 파일을 덮어쓸 수 있습니다. 주의하세요.", ru: "Только для тестирования - разрешать конфликты файлов синхронизацией новых копий.", zh: "仅供测试 - 通过同步文件的较新副本来解决文件冲突,这可能会覆盖修改过的文件。请注意 ", + "zh-tw": "僅供測試 - 透過同步檔案的較新副本來解決檔案衝突,這可能會覆蓋修改過的檔案。請注意 ", }, "The delay for consecutive on-demand fetches": { def: "The delay for consecutive on-demand fetches", + de: "Die Verzögerung für aufeinanderfolgende On-Demand-Fetches", es: "Retraso entre obtenciones consecutivas", fr: "Le délai entre récupérations consécutives à la demande", he: "העיכוב עבור משיכות לפי דרישה עוקבות", @@ -7555,10 +9556,12 @@ export const allMessages = { ko: "연속 청크 요청 간 대기 시간", ru: "Задержка для последовательных запросов по требованию", zh: "连续按需获取的延迟", + "zh-tw": "連續按需獲取的延遲", }, "The following accepted nodes are missing its node information:\n- ${missingNodes}\n\nThis indicates that they have not been connected for some time or have been left on an older version.\nIt is preferable to update all devices if possible. If you have any devices that are no longer in use, you can clear all accepted nodes by locking the remote once.": { def: "The following accepted nodes are missing its node information:\n- ${missingNodes}\n\nThis indicates that they have not been connected for some time or have been left on an older version.\nIt is preferable to update all devices if possible. If you have any devices that are no longer in use, you can clear all accepted nodes by locking the remote once.", + de: "Für die folgenden akzeptierten Knoten fehlen die Knoteninformationen:\n- ${missingNodes}\n\nDas deutet darauf hin, dass sie seit einiger Zeit nicht verbunden waren oder noch eine ältere Version verwenden.\nEs ist nach Möglichkeit besser, zunächst alle Geräte zu aktualisieren. Wenn Sie Geräte haben, die nicht mehr verwendet werden, können Sie alle akzeptierten Knoten löschen, indem Sie die Remote-Datenbank einmal sperren.", ja: "次の承認済みノードにはノード情報がありません:\n- ${missingNodes}\n\nこれは、それらがしばらく接続されていないか、古いバージョンのままになっていることを示しています。\n可能であれば、まずすべてのデバイスを更新することをおすすめします。すでに使用していないデバイスがある場合は、リモートを一度ロックすることで承認済みノードをすべてクリアできます。", ko: "다음 승인된 노드에는 노드 정보가 없습니다:\n- ${missingNodes}\n\n이는 해당 노드가 한동안 연결되지 않았거나 이전 버전에 머물러 있음을 의미합니다.\n가능하다면 먼저 모든 기기를 업데이트하는 것이 좋습니다. 더 이상 사용하지 않는 기기가 있다면 원격을 한 번 잠가 승인된 노드를 모두 정리할 수 있습니다.", ru: "Для следующих принятых узлов отсутствует информация об узле:\n- ${missingNodes}\n\nЭто означает, что они давно не подключались или остались на старой версии.\nПо возможности рекомендуется сначала обновить все устройства. Если у вас есть устройства, которые больше не используются, вы можете очистить список всех принятых узлов, один раз заблокировав удалённую базу.", @@ -7568,6 +9571,7 @@ export const allMessages = { }, "The Hash algorithm for chunk IDs": { def: "The Hash algorithm for chunk IDs", + de: "Der Hash-Algorithmus für chunk IDs", es: "Algoritmo hash para IDs de chunks", fr: "L'algorithme de hachage pour les identifiants de fragments", he: "אלגוריתם Hash עבור מזהי נתחים", @@ -7575,6 +9579,7 @@ export const allMessages = { ko: "청크 ID용 해시 알고리즘", ru: "Хэш-алгоритм для ID чанков", zh: "块 ID 的哈希算法(实验性)", + "zh-tw": "塊 ID 的雜湊演算法(實驗性)", }, "The IndexedDB adapter often offers superior performance in certain scenarios, but it has been found to cause memory leaks when used with LiveSync mode. When using LiveSync mode, please use IDB adapter instead.": { @@ -7585,49 +9590,58 @@ export const allMessages = { "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.", + de: "Die maximale Dauer, für die Stücke im Dokument inkubiert werden können. Chunks, die diese Zeit überschreiten, werden sich an unabhängige Stücke graduieren.", es: "Duración máxima para incubar chunks. Excedentes se independizan", fr: "La durée maximale pendant laquelle les fragments peuvent être incubés dans le document. Les fragments dépassant cette période seront promus en fragments indépendants.", he: "משך הזמן המקסימלי שנתחים יכולים להישמר זמנית בתוך המסמך. נתחים שחורגים מתקופה זו יהפכו לנתחים עצמאיים.", ja: "ドキュメント内でチャンクを保持できる最大期間。この期間を超えたチャンクは独立したチャンクに昇格します。", ko: "변경 기록이 문서에 함께 보관될 수 있는 최대 시간입니다. 초과 시 문서에서 분리되어 개별로 저장됩니다.", - ru: "The maximum duration for which chunks can be incubated within the document. Chunks exceeding this period will graduate to independent chunks.", + ru: "Максимальное время, в течение которого чанки могут инкубироваться внутри документа. Чанки, превышающие этот срок, будут преобразованы в независимые чанки.", zh: "文档中可以孵化的数据块的最大持续时间。超过此时间的数据块将成为独立数据块 ", + "zh-tw": "文件中可以孵化的資料塊的最大持續時間。超過此時間的資料塊將成為獨立資料塊 ", }, "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.", + de: "Die maximale Anzahl an Stücken, die innerhalb des Dokuments inkubiert werden können. Chunks, die diese Zahl überschreiten, werden sofort selbständige Stücke absolvieren.", es: "Número máximo de chunks que pueden incubarse en el documento. Excedentes se independizan", fr: "Le nombre maximum de fragments pouvant être incubés dans le document. Les fragments dépassant ce nombre seront immédiatement promus en fragments indépendants.", he: "המספר המקסימלי של נתחים שיכולים להישמר זמנית בתוך המסמך. נתחים שחורגים ממספר זה יהפכו מיד לנתחים עצמאיים.", 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.", + ru: "Максимальное количество чанков, которые могут инкубироваться внутри документа. Чанки, превышающие это число, будут немедленно преобразованы в независимые чанки.", zh: "文档中可以孵化的数据块的最大数量。超过此数量的数据块将立即成为独立数据块 ", + "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.": { def: "The maximum total size of chunks that can be incubated within the document. Chunks exceeding this size will immediately graduate to independent chunks.", + de: "Die maximale Gesamtgröße der Stücke, die innerhalb des Dokuments inkubiert werden können. Chunks, die diese Größe überschreiten, werden sofort selbständige Stücke absolvieren.", es: "Tamaño total máximo de chunks incubados. Excedentes se independizan", fr: "La taille totale maximale des fragments pouvant être incubés dans le document. Les fragments dépassant cette taille seront immédiatement promus en fragments indépendants.", he: "הגודל הכולל המקסימלי של נתחים שיכולים להישמר זמנית בתוך המסמך. נתחים שחורגים מגודל זה יהפכו מיד לנתחים עצמאיים.", 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.", + ru: "Максимальный суммарный размер чанков, которые могут инкубироваться внутри документа. Чанки, превышающие этот размер, будут немедленно преобразованы в независимые чанки.", zh: "文档中可以孵化的数据块的最大总大小。超过此大小的数据块将立即成为独立数据块 ", + "zh-tw": "文件中可以孵化的資料塊的最大總大小。超過此大小的資料塊將立即成為獨立資料塊 ", }, "The minimum interval for automatic synchronisation on event.": { def: "The minimum interval for automatic synchronisation on event.", + de: "Das Mindestintervall für die automatische Synchronisation auf dem Event.", + es: "El intervalo mínimo para la sincronización automática por evento.", fr: "L'intervalle minimum pour la synchronisation automatique sur événement.", he: "מרווח הזמן המינימלי לסנכרון אוטומטי על אירוע.", ja: "イベント発生時の自動同期における最小間隔です。", ko: "이벤트 발생 시 자동 동기화의 최소 간격입니다.", ru: "Минимальный интервал автоматической синхронизации по событию.", zh: "基于事件自动同步的最小间隔。", - "zh-tw": "事件觸發自動同步的最小間隔。", + "zh-tw": "基於事件自動同步的最小間隔。", }, "This feature enables direct synchronisation between devices. No server is required, but both devices must be online at the same time for synchronisation to occur, and some features may be limited. Internet connection is only required to signalling (detecting peers) and not for data transfer.": { def: "This feature enables direct synchronisation between devices. No server is required, but both devices must be online at the same time for synchronisation to occur, and some features may be limited. Internet connection is only required to signalling (detecting peers) and not for data transfer.", + de: "Diese Funktion ermöglicht die direkte Synchronisation zwischen Geräten. Es wird kein Server benötigt, aber beide Geräte müssen gleichzeitig online sein, damit synchronisiert werden kann, und einige Funktionen können eingeschränkt sein. Eine Internetverbindung wird nur für das Signalling (Erkennen von Peers) benötigt, nicht für die Datenübertragung。", es: "Esta función permite la sincronización directa entre dispositivos. No requiere servidor, pero ambos dispositivos deben estar en línea al mismo tiempo para que la sincronización se produzca, y algunas funciones pueden ser limitadas. La conexión a Internet solo se necesita para la señalización (detección de pares), no para la transferencia de datos。", ja: "この機能では端末同士を直接同期できます。サーバーは不要ですが、同期を行うには両端末が同時にオンラインである必要があり、一部機能は制限されます。インターネット接続はシグナリング(ピア検出)にのみ必要で、データ転送自体には使われません。", ko: "이 기능은 장치 간 직접 동기화를 제공합니다. 서버는 필요 없지만 동기화가 이루어지려면 두 장치가 동시에 온라인 상태여야 하며 일부 기능은 제한될 수 있습니다. 인터넷 연결은 시그널링(피어 감지)에만 필요하며 데이터 전송 자체에는 필요하지 않습니다。", @@ -7638,6 +9652,7 @@ export const allMessages = { }, "This is an advanced option for users who do not have a URI or who wish to configure detailed settings.": { def: "This is an advanced option for users who do not have a URI or who wish to configure detailed settings.", + de: "Dies ist eine erweiterte Option für Benutzer, die keine URI haben oder detaillierte Einstellungen manuell konfigurieren möchten。", es: "Esta es una opción avanzada para usuarios que no disponen de un URI o que desean configurar parámetros detallados。", ja: "URI を持っていない場合や、詳細設定を手動で行いたいユーザー向けの上級者オプションです。", ko: "URI가 없거나 세부 설정을 직접 구성하려는 사용자를 위한 고급 옵션입니다。", @@ -7648,6 +9663,7 @@ export const allMessages = { "This is the most suitable synchronisation method for the design. All functions are available. You must have set up a CouchDB instance.": { def: "This is the most suitable synchronisation method for the design. All functions are available. You must have set up a CouchDB instance.", + de: "Dies ist die für das Design am besten geeignete Synchronisationsmethode. Alle Funktionen sind verfügbar. Sie müssen eine CouchDB-Instanz eingerichtet haben。", es: "Este es el método de sincronización más adecuado para el diseño. Todas las funciones están disponibles. Debe tener configurada una instancia de CouchDB。", ja: "この設計に最も適した同期方式です。すべての機能が利用できます。CouchDB インスタンスを事前に構成しておく必要があります。", ko: "이 설계에 가장 적합한 동기화 방식입니다. 모든 기능을 사용할 수 있습니다. CouchDB 인스턴스를 미리 구성해야 합니다。", @@ -7657,16 +9673,19 @@ export const allMessages = { }, "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.", + de: "Diese Passphrase wird nicht auf ein anderes Gerät kopiert werden. Es wird auf `Default` gesetzt, bis Sie es erneut konfigurieren.", es: "Esta frase no se copia a otros dispositivos. Usará `Default` hasta reconfigurar", fr: "Cette phrase secrète ne sera pas copiée vers un autre appareil. Elle sera définie à `Default` jusqu'à ce que vous la configuriez à nouveau.", he: "ביטוי סיסמה זה לא יועתק למכשיר אחר. הוא יוגדר ל-`Default` עד שתגדיר אותו שוב.", ja: "このパスフレーズは他のデバイスにコピーされません。再度設定するまで`Default`に設定されます。", ko: "이 패스프레이즈는 다른 기기로 복사되지 않습니다. 다시 구성할 때까지 `기본값`으로 설정됩니다.", - ru: "This passphrase will not be copied to another device. It will be set to `Default` until you configure it again.", + ru: "Эта парольная фраза не будет скопирована на другое устройство. Она будет установлена в значение `Default`, пока вы не настроите её снова.", zh: "此密码不会复制到另一台设备。在您再次配置之前,它将设置为 `Default` ", + "zh-tw": "此密碼不會複製到另一臺裝置。在您再次配置之前,它將設定為 `Default` ", }, "This will recreate chunks for all files. If there were missing chunks, this may fix the errors.": { def: "This will recreate chunks for all files. If there were missing chunks, this may fix the errors.", + de: "Dadurch werden die Chunks für alle Dateien neu erstellt. Falls Chunks fehlen, können die Fehler dadurch behoben werden.", es: "Esto recreará los fragmentos de todos los archivos. Si faltaban fragmentos, esto puede corregir los errores.", ja: "すべてのファイルについてチャンクを再作成します。欠損しているチャンクがあった場合、エラーが解消される可能性があります。", ko: "모든 파일의 청크를 다시 생성합니다. 누락된 청크가 있었다면 이 작업으로 오류가 해결될 수 있습니다.", @@ -7686,99 +9705,131 @@ export const allMessages = { }, "TweakMismatchResolve.Action.Dismiss": { def: "Dismiss", + de: "Entlassung", + es: "Descartar", fr: "Ignorer", he: "דחה", ja: "無視", ko: "무시", ru: "Отмена", - zh: "Dismiss", + zh: "关闭", + "zh-tw": "關閉", }, "TweakMismatchResolve.Action.EnableAutoAcceptCompatible": { def: "Enable auto-accept", }, "TweakMismatchResolve.Action.UseConfigured": { def: "Use configured settings", + de: "Verwenden Sie die konfigurierten Einstellungen", + es: "Usar la configuración configurada", fr: "Utiliser les paramètres configurés", he: "השתמש בהגדרות המוגדרות", ja: "設定済みの設定を使用", ko: "구성된 설정 사용", ru: "Использовать настроенные параметры", - zh: "Use configured settings", + zh: "使用已配置的设置", + "zh-tw": "使用已配置的設定", }, "TweakMismatchResolve.Action.UseMine": { def: "Update remote database settings", + de: "Remote-Datenbankeinstellungen aktualisieren", + es: "Actualizar la configuración de la base de datos remota", fr: "Mettre à jour les paramètres de la base distante", he: "עדכן הגדרות מסד הנתונים המרוחד", ja: "リモートデータベースの設定を更新", ko: "원격 데이터베이스 설정 업데이트", ru: "Обновить настройки удалённой базы данных", - zh: "Update remote database settings", + zh: "更新远程数据库设置", + "zh-tw": "更新遠端資料庫設定", }, "TweakMismatchResolve.Action.UseMineAcceptIncompatible": { def: "Update remote database settings but keep as is", + de: "Aktualisieren Sie Remote-Datenbankeinstellungen, aber halten Sie wie", + es: "Actualice la configuración de la base de datos remota pero manténgala como está", fr: "Mettre à jour la base distante mais garder en l'état", he: "עדכן הגדרות מסד הנתונים המרוחד אך השאר כפי שהוא", ja: "リモートデータベースの設定を更新するがそのまま維持", ko: "원격 데이터베이스 설정 업데이트하지만 그대로 유지", ru: "Обновить настройки, но оставить как есть", - zh: "Update remote database settings but keep as is", + zh: "更新远程数据库设置但保持不变", + "zh-tw": "更新遠端資料庫設定但保持不變", }, "TweakMismatchResolve.Action.UseMineWithRebuild": { def: "Update remote database settings and rebuild again", + de: "Remote-Datenbankeinstellungen aktualisieren und wieder aufbauen", + es: "Actualice la configuración de la base de datos remota y reconstruya nuevamente", fr: "Mettre à jour la base distante et reconstruire", he: "עדכן הגדרות מסד הנתונים המרוחד ובנה מחדש", ja: "リモートデータベースの設定を更新して再構築", ko: "원격 데이터베이스 설정 업데이트하고 다시 재구축", ru: "Обновить настройки и перестроить снова", - zh: "Update remote database settings and rebuild again", + zh: "更新远程数据库设置并重新重建", + "zh-tw": "更新遠端資料庫設定並重新重建", }, "TweakMismatchResolve.Action.UseRemote": { def: "Apply settings to this device", + de: "Anwenden von Einstellungen auf dieses Gerät", + es: "Aplicar configuración a este dispositivo", fr: "Appliquer les paramètres à cet appareil", he: "החל הגדרות על מכשיר זה", ja: "このデバイスに設定を適用", ko: "이 기기에 설정 적용", ru: "Применить настройки к этому устройству", - zh: "Apply settings to this device", + zh: "将设置应用到此设备", + "zh-tw": "將設定應用到此裝置", }, "TweakMismatchResolve.Action.UseRemoteAcceptIncompatible": { def: "Apply settings to this device, but and ignore incompatibility", + de: "Anwenden von Einstellungen auf dieses Gerät, aber und ignorieren Unkompatibilität", + es: "Aplicar la configuración a este dispositivo, pero ignorar la incompatibilidad", fr: "Appliquer à cet appareil, mais ignorer l'incompatibilité", he: "החל הגדרות על מכשיר זה, אך התעלם מאי-תאימות", ja: "このデバイスに設定を適用し、非互換性を無視", ko: "이 기기에 설정 적용하지만 호환성 문제 무시", ru: "Применить настройки, но игнорировать несовместимость", - zh: "Apply settings to this device, but and ignore incompatibility", + zh: "将设置应用到此设备,但忽略不兼容性", + "zh-tw": "將設定應用到此裝置,但忽略不相容性", }, "TweakMismatchResolve.Action.UseRemoteWithRebuild": { def: "Apply settings to this device, and fetch again", + de: "Setzen Sie die Einstellungen auf dieses Gerät und holen Sie sich wieder", + es: "Aplicar la configuración a este dispositivo y recuperarla nuevamente", fr: "Appliquer à cet appareil et récupérer à nouveau", he: "החל הגדרות על מכשיר זה ומשוך שוב", ja: "このデバイスに設定を適用し、再フェッチ", ko: "이 기기에 설정 적용하고 다시 가져오기", ru: "Применить настройки и загрузить снова", - zh: "Apply settings to this device, and fetch again", + zh: "将设置应用到此设备并重新获取", + "zh-tw": "將設定應用到此裝置並重新獲取", }, "TweakMismatchResolve.Message.AutoAcceptCompatibleUndefined": { def: "\nIt appears that the settings differ for each device. You can now automatically apply compatible changes to these configurations.\nWould you like to enable this `auto-accept` setting?", }, "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 Use configured settings.\nIf you want to keep the settings of this device, please select 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}", + de: "\nDie Einstellungen in der entfernten Datenbank sind unten aufgeführt. Diese Werte wurden von anderen Geräten konfiguriert, die mindestens einmal mit diesem Gerät synchronisiert wurden.\n\nWenn du diese Einstellungen verwenden möchtest, wähle %{TweakMismatchResolve.Action.UseConfigured}.\nWenn du die Einstellungen dieses Geräts behalten möchtest, wähle %{TweakMismatchResolve.Action.Dismiss}.\n\n${table}\n\n>[!TIP]\n> Wenn du alle Einstellungen synchronisieren möchtest, verwende `Sync settings via markdown`, nachdem du mit dieser Funktion die minimale Konfiguration angewendet hast.\n\n${additionalMessage}", + es: "\nLa configuración en la base de datos remota es la siguiente. Estos valores los configuran otros dispositivos, que se sincronizan con este dispositivo al menos una vez.\n\nSi desea utilizar esta configuración, seleccione Usar la configuración configurada.\nSi desea conservar la configuración de este dispositivo, seleccione Descartar.\n\n${table}\n\n>[!CONSEJO]\n> Si desea sincronizar todas las configuraciones, utilice `Sincronizar configuraciones mediante rebajas` después de aplicar una configuración mínima con esta función.\n\n${additionalMessage}", fr: "\nLes paramètres de la base distante sont les suivants. Ces valeurs sont configurées par d'autres appareils, synchronisés au moins une fois avec celui-ci.\n\nPour utiliser ces paramètres, sélectionnez Utiliser les paramètres configurés.\nPour conserver les paramètres de cet appareil, sélectionnez Ignorer.\n\n${table}\n\n>[!ASTUCE]\n> Pour synchroniser tous les paramètres, utilisez « Synchroniser les paramètres via markdown » après application de la configuration minimale avec cette fonctionnalité.\n\n${additionalMessage}", he: "\nההגדרות במסד הנתונים המרוחד הן כדלקמן. ערכים אלה הוגדרו על ידי מכשירים אחרים, אשר סונכרנו עם מכשיר זה לפחות פעם אחת.\n\nאם ברצונך להשתמש בהגדרות אלה, אנא בחר %{TweakMismatchResolve.Action.UseConfigured}.\nאם ברצונך לשמור את הגדרות מכשיר זה, אנא בחר %{TweakMismatchResolve.Action.Dismiss}.\n\n${table}\n\n>[!TIP]\n> אם ברצונך לסנכרן את כל ההגדרות, אנא השתמש ב-`סנכרון הגדרות דרך Markdown` לאחר החלת תצורה מינימלית עם תכונה זו.\n\n${additionalMessage}", ja: "\nリモートデータベースの設定は以下の通りです。これらの値は、このデバイスと少なくとも1回同期された他のデバイスによって設定されています。\n\nこれらの設定を使用する場合は、設定済みの設定を使用を選択してください。\nこのデバイスの設定を維持する場合は、無視を選択してください。\n\n${table}\n\n>[!TIP]\n> すべての設定を同期したい場合は、この機能で最小限の設定を適用した後、`Sync settings via markdown`を使用してください。\n\n${additionalMessage}", ko: "\n원격 데이터베이스의 설정은 다음과 같습니다. 이 값들은 이 기기와 최소 한 번 동기화된 다른 기기에서 구성된 것입니다.\n\n이 설정을 사용하려면 구성된 설정 사용를 선택해 주세요.\n이 기기의 설정을 유지하려면 무시를 선택해 주세요.\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 Use configured settings.\nIf you want to keep the settings of this device, please select 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}", + ru: "\nНастройки в удаленной базе данных приведены ниже. Эти значения были настроены другими устройствами, которые хотя бы один раз синхронизировались с этим устройством.\n\nЕсли вы хотите использовать эти настройки, выберите Использовать настроенные параметры.\nЕсли вы хотите сохранить настройки этого устройства, выберите Отмена.\n\n${table}\n\n>[!TIP]\n> Если вы хотите синхронизировать все настройки, используйте `Sync settings via markdown` после применения минимальной конфигурации с помощью этой функции.\n\n${additionalMessage}", + zh: "\n远程数据库中的设置如下。这些值由其他设备配置,这些设备至少与此设备同步过一次。\n\n如果要使用这些设置,请选择 使用已配置的设置。\n如果要保留此设备的设置,请选择 关闭。\n\n${table}\n\n>[!TIP]\n> 如果要同步所有设置,请在此功能应用最小配置后使用 `通过 Markdown 同步设置`。\n\n${additionalMessage}", + "zh-tw": + "\n遠端資料庫中的設定如下。這些值由其他裝置配置,這些裝置至少與此裝置同步過一次。\n\n如果要使用這些設定,請選擇 使用已配置的設定。\n如果要保留此裝置的設定,請選擇 關閉。\n\n${table}\n\n>[!TIP]\n> 如果要同步所有設定,請在此功能應用最小配置後使用 `透過 Markdown 同步設定`。\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}", + de: "Deine Konfiguration stimmt nicht mit der auf dem entfernten Server überein.\n\nDie folgende Konfiguration sollte übereinstimmen:\n\n${table}\n\nBitte teile uns deine Entscheidung mit.\n\n${additionalMessage}", + es: "Su configuración no coincide con la del servidor remoto.\n\nDebe coincidir la siguiente configuración:\n\n${table}\n\nHáganos saber su decisión.\n\n${additionalMessage}", fr: "Votre configuration ne correspond pas à celle du serveur distant.\n\nLa configuration suivante devrait correspondre :\n\n${table}\n\nFaites-nous part de votre décision.\n\n${additionalMessage}", he: "התצורה שלך אינה תואמת לזו שבשרת המרוחד.\n\nיש להתאים את התצורות הבאות:\n\n${table}\n\nאנא הודע לנו על החלטתך.\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}", + ru: "Конфигурация вашего устройства не совпадает с конфигурацией на удаленном сервере.\n\nСледующие параметры должны совпадать:\n\n${table}\n\nСообщите, какое решение вы выбираете.\n\n${additionalMessage}", + zh: "您的配置与远程服务器上的配置不匹配。\n\n以下配置需要保持一致:\n\n${table}\n\n请告诉我们您的决定。\n\n${additionalMessage}", + "zh-tw": + "您的配置與遠端伺服器上的配置不匹配。\n\n以下配置需要保持一致:\n\n${table}\n\n請告訴我們您的決定。\n\n${additionalMessage}", }, "TweakMismatchResolve.Message.mineUpdated": { def: "The device configuration have been adjusted.", @@ -7788,131 +9839,569 @@ export const allMessages = { }, "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!***", + de: "\n>[!NOTICE]\n> Einige Änderungen sind kompatibel, können aber zusätzliche Speicher- und Transfermengen verbrauchen. Ein Rebuild wird empfohlen. Es darf jedoch derzeit kein Neuaufbau durchgeführt werden, sondern kann in der zukünftigen Wartung umgesetzt werden.\n> *** Bitte stellen Sie sicher, dass Sie Zeit haben und an ein stabiles Netzwerk angeschlossen sind, um sich zu bewerben!***", + es: "\n>[!AVISO]\n> Algunos cambios son compatibles pero pueden consumir almacenamiento adicional y volúmenes de transferencia. Se recomienda una reconstrucción. Sin embargo, es posible que no se realice una reconstrucción en este momento, pero se puede implementar en mantenimiento futuro.\n> ***¡Asegúrese de tener tiempo y estar conectado a una red estable para presentar la solicitud!***", fr: "\n>[!AVIS]\n> Certains changements sont compatibles mais peuvent consommer du stockage et du trafic supplémentaires. Une reconstruction est recommandée. Cependant, elle peut ne pas être effectuée maintenant, mais pourra l'être lors d'une maintenance future.\n> ***Assurez-vous d'avoir du temps et une connexion stable pour appliquer !***", he: "\n>[!NOTICE]\n> חלק מהשינויים תואמים אך עלולים לצרוך אחסון ותעבורה נוספים. מומלצת בנייה מחדש. עם זאת, ייתכן שבנייה מחדש לא תתבצע כעת, אך תיושם בתחזוקה עתידית.\n> ***ודא שיש לך זמן ושאתה מחובר לרשת יציבה לפני ההחלה!***", 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!***", + zh: "\n>[!NOTICE]\n> 部分更改兼容,但可能消耗额外的存储空间和传输流量。建议进行重建。但是,重建可能不会立即执行,将在未来的维护中实施。\n> ***请确保您有充足的时间并连接到稳定的网络!***", + "zh-tw": + "\n>[!NOTICE]\n> 部分更改相容,但可能消耗額外的儲存空間和傳輸流量。建議進行重建。但是,重建可能不會立即執行,將在未來的維護中實施。\n> ***請確保您有充足的時間並連線到穩定的網路!***", }, "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!***", + de: "\n>[!WARNUNG]\n> Einige Remote-Konfigurationen sind nicht kompatibel mit der lokalen Datenbank dieses Gerätes. Der Wiederaufbau der lokalen Datenbank ist erforderlich.\n> *** Bitte stellen Sie sicher, dass Sie Zeit haben und an ein stabiles Netzwerk angeschlossen sind, um sich zu bewerben!***", + es: "\n>[!ADVERTENCIA]\n> Algunas configuraciones remotas no son compatibles con la base de datos local de este dispositivo. Será necesario reconstruir la base de datos local.\n> ***¡Asegúrese de tener tiempo y estar conectado a una red estable para presentar la solicitud!***", fr: "\n>[!AVERTISSEMENT]\n> Certaines configurations distantes ne sont pas compatibles avec la base locale de cet appareil. Une reconstruction de la base locale sera requise.\n> ***Assurez-vous d'avoir du temps et une connexion stable pour appliquer !***", he: "\n>[!WARNING]\n> חלק מהתצורות המרוחקות אינן תואמות למסד הנתונים המקומי של מכשיר זה. נדרשת בנייה מחדש של מסד הנתונים המקומי.\n> ***ודא שיש לך זמן ושאתה מחובר לרשת יציבה לפני ההחלה!***", 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!***", + zh: "\n>[!WARNING]\n> 部分远程配置与此设备的本地数据库不兼容。需要重建本地数据库。\n> ***请确保您有充足的时间并连接到稳定的网络!***", + "zh-tw": + "\n>[!WARNING]\n> 部分遠端配置與此裝置的本地資料庫不相容。需要重建本地資料庫。\n> ***請確保您有充足的時間並連線到穩定的網路!***", }, "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.**", + de: "\n>[!NOTICE]\n> Wir haben festgestellt, dass einige der Werte unterschiedlich sind, um die lokale Datenbank mit der Remote-Datenbank unvereinbar zu machen.\n> Einige Änderungen sind kompatibel, können aber zusätzliche Speicher- und Transfermengen verbrauchen. Ein Rebuild wird empfohlen. Es darf jedoch derzeit kein Neuaufbau durchgeführt werden, sondern kann in der zukünftigen Wartung umgesetzt werden.\n> Wenn Sie wieder aufbauen möchten, dauert es ein paar Minuten oder mehr. ** Stellen Sie sicher, dass es jetzt sicher ist.**", + es: "\n>[!AVISO]\n> Hemos detectado que algunos de los valores son diferentes para hacer incompatible la base de datos local con la base de datos remota.\n> Algunos cambios son compatibles pero pueden consumir almacenamiento adicional y volúmenes de transferencia. Se recomienda una reconstrucción. Sin embargo, es posible que no se realice una reconstrucción en este momento, pero se puede implementar en mantenimiento futuro.\n> Si desea reconstruir, tardará unos minutos o más. **Asegúrate de que sea seguro realizarlo ahora.**", fr: "\n>[!AVIS]\n> Nous avons détecté que certaines valeurs diffèrent et rendent la base locale incompatible avec la base distante.\n> Certains changements sont compatibles mais peuvent consommer du stockage et du trafic supplémentaires. Une reconstruction est recommandée. Cependant, elle peut ne pas être effectuée maintenant, mais pourra l'être lors d'une maintenance future.\n> Si vous souhaitez reconstruire, cela prend quelques minutes ou plus. **Assurez-vous qu'il est sûr de le faire maintenant.**", he: "\n>[!NOTICE]\n> זיהינו שחלק מהערכים שונים, מה שגורם לאי-תאימות בין מסד הנתונים המקומי למרוחד.\n> חלק מהשינויים תואמים אך עלולים לצרוך אחסון ותעבורה נוספים. מומלצת בנייה מחדש. עם זאת, ייתכן שבנייה מחדש לא תתבצע כעת, אך תיושם בתחזוקה עתידית.\n> אם ברצונך לבנות מחדש, הדבר ייקח כמה דקות או יותר. **ודא שבטוח לבצע זאת עכשיו.**", 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.**", + zh: "\n>[!NOTICE]\n> 检测到部分值存在差异,导致本地数据库与远程数据库不兼容。\n> 部分更改兼容,但可能消耗额外的存储空间和传输流量。建议进行重建。但是,重建可能不会立即执行,将在未来的维护中实施。\n> 如果要重建,可能需要几分钟或更长时间。**请确保现在是安全的操作时机。**", + "zh-tw": + "\n>[!NOTICE]\n> 檢測到部分值存在差異,導致本地資料庫與遠端資料庫不相容。\n> 部分更改相容,但可能消耗額外的儲存空間和傳輸流量。建議進行重建。但是,重建可能不會立即執行,將在未來的維護中實施。\n> 如果要重建,可能需要幾分鐘或更長時間。**請確保現在是安全的操作時機。**", }, "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.**", + de: "\n>[!WARNUNG]\n> Wir haben festgestellt, dass einige der Werte unterschiedlich sind, um die lokale Datenbank mit der Remote-Datenbank unvereinbar zu machen.\n> Es sind entweder lokale oder Remote-Rebuilds erforderlich. Beide nehmen ein paar Minuten oder mehr. ** Stellen Sie sicher, dass es jetzt sicher ist.**", + es: "\n>[!ADVERTENCIA]\n> Hemos detectado que algunos de los valores son diferentes para hacer incompatible la base de datos local con la base de datos remota.\n> Se requieren reconstrucciones locales o remotas. Ambos tardan unos minutos o más. **Asegúrate de que sea seguro realizarlo ahora.**", fr: "\n>[!AVERTISSEMENT]\n> Nous avons détecté que certaines valeurs diffèrent et rendent la base locale incompatible avec la base distante.\n> Une reconstruction locale ou distante est nécessaire. L'une comme l'autre prend quelques minutes ou plus. **Assurez-vous qu'il est sûr de le faire maintenant.**", he: "\n>[!WARNING]\n> זיהינו שחלק מהערכים שונים, מה שגורם לאי-תאימות בין מסד הנתונים המקומי למרוחד.\n> נדרשת בנייה מחדש של המסד המקומי או המרוחד. שניהם ייקחו כמה דקות או יותר. **ודא שבטוח לבצע זאת עכשיו.**", 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.**", + zh: "\n>[!WARNING]\n> 检测到部分值存在差异,导致本地数据库与远程数据库不兼容。\n> 需要重建本地或远程数据库。两者都需要几分钟或更长时间。**请确保现在是安全的操作时机。**", + "zh-tw": + "\n>[!WARNING]\n> 檢測到部分值存在差異,導致本地資料庫與遠端資料庫不相容。\n> 需要重建本地或遠端資料庫。兩者都需要幾分鐘或更長時間。**請確保現在是安全的操作時機。**", }, "TweakMismatchResolve.Table": { def: "| Value name | This device | On Remote |\n|: --- |: ---- :|: ---- :|\n${rows}\n\n", + de: "| Wertname | Dieses Gerät | Auf Remote |\n|: --- |:\n${rows}\n\n", + es: "| Nombre del valor | Este dispositivo | En remoto |\n|: --- |: ---- :|: ---- :|\n${rows}\n", fr: "| Nom de la valeur | Cet appareil | Sur le distant |\n|: --- |: ---- :|: ---- :|\n${rows}\n\n", he: "| שם ערך | מכשיר זה | מרוחד |\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", + ru: "| Имя значения | Это устройство | На удаленной стороне |\n|: --- |: ---- :|: ---- :|\n${rows}\n\n", + zh: "| 值名称 | 此设备 | 远程 |\n|: --- |: ---- :|: ---- :|\n${rows}\n\n", + "zh-tw": "| 值名稱 | 此裝置 | 遠端 |\n|: --- |: ---- :|: ---- :|\n${rows}\n\n", }, "TweakMismatchResolve.Table.Row": { def: "| ${name} | ${self} | ${remote} |", + de: "| ${name} | ${self} | ${remote}", + es: "| ${name} | ${self} | ${remote} |", fr: "| ${name} | ${self} | ${remote} |", he: "| ${name} | ${self} | ${remote} |", ja: "| ${name} | ${self} | ${remote} |", ko: "| ${name} | ${self} | ${remote} |", - ru: "| name | self | remote |", + ru: "| ${name} | ${self} | ${remote} |", zh: "| ${name} | ${self} | ${remote} |", + "zh-tw": "| ${name} | ${self} | ${remote} |", }, "TweakMismatchResolve.Title": { def: "Configuration Mismatch Detected", + de: "Konfiguration Mismatch Entdeckt", + es: "Se detectó una incompatibilidad de configuración", fr: "Incohérence de configuration détectée", he: "זוהתה אי-התאמה בתצורה", ja: "設定の不一致が検出されました", ko: "구성 불일치 감지", ru: "Обнаружено несоответствие конфигурации", - zh: "Configuration Mismatch Detected", + zh: "检测到配置不匹配", + "zh-tw": "檢測到配置不匹配", }, "TweakMismatchResolve.Title.AutoAcceptCompatible": { def: "Auto-Accept Available", }, "TweakMismatchResolve.Title.TweakResolving": { def: "Configuration Mismatch Detected", + de: "Konfiguration Mismatch Entdeckt", + es: "Se detectó una incompatibilidad de configuración", fr: "Incohérence de configuration détectée", he: "זוהתה אי-התאמה בתצורה", ja: "設定の不一致が検出されました", ko: "구성 불일치 감지", ru: "Обнаружено несоответствие конфигурации", - zh: "Configuration Mismatch Detected", + zh: "检测到配置不匹配", + "zh-tw": "檢測到配置不匹配", }, "TweakMismatchResolve.Title.UseRemoteConfig": { def: "Use Remote Configuration", + de: "Remote Configuration verwenden", + es: "Usar configuración remota", fr: "Utiliser la configuration distante", he: "השתמש בתצורה המרוחקת", ja: "リモート設定を使用", ko: "원격 구성 사용", ru: "Использовать удалённую конфигурацию", - zh: "Use Remote Configuration", + zh: "使用远程配置", + "zh-tw": "使用遠端配置", + }, + "Ui.Bucket.Guidance": { + def: "Please enter the details required to connect to your S3/MinIO/R2 compatible object storage service.", + de: "Bitte geben Sie die erforderlichen Details ein, um sich mit Ihrem S3/MinIO/R2 kompatiblen Objektspeicherservice zu verbinden.", + es: "Ingrese los detalles requeridos para conectarse a su servicio de almacenamiento de objetos compatible con S3/MinIO/R2.", + ja: "S3/MinIO/R2互換のオブジェクトストレージサービスに接続するために必要な情報を入力してください。", + ko: "S3/MinIO/R2 원격 저장소 연결 정보를 입력하세요.", + ru: "Пожалуйста, введите данные, необходимые для подключения к совместимому сервису объектного хранилища S3/MinIO/R2.", + zh: "请在下方输入连接到 S3/MinIO/R2 兼容对象存储服务所需的详细信息。", + "zh-tw": "請在下方輸入連線到 S3/MinIO/R2 相容物件儲存服務所需的詳細資訊。", }, "Ui.Common.Signal.Caution": { - def: "CAUTION", + def: "Caution", + de: "Achtung", + es: "Precaucion", + ja: "注意", + ko: "주의", + ru: "Осторожно", zh: "注意", + "zh-tw": "注意", }, "Ui.Common.Signal.Danger": { - def: "DANGER", + def: "Danger", + de: "Gefahr", + es: "Peligro", + ja: "危険", + ko: "위험", + ru: "Опасно", zh: "危险", + "zh-tw": "危險", }, "Ui.Common.Signal.Notice": { - def: "NOTICE", + def: "Notice", + de: "Hinweis", + es: "Aviso", + ja: "通知", + ko: "알림", + ru: "Уведомление", zh: "提示", + "zh-tw": "提示", }, "Ui.Common.Signal.Warning": { - def: "WARNING", + def: "Warning", + de: "Warnung", + es: "Advertencia", + ja: "警告", + ko: "경고", + ru: "Предупреждение", zh: "警告", + "zh-tw": "警告", + }, + "Ui.ConflictResolver.FileToResolve": { + def: "File To Resolve", + de: "Datei zum Auflösen", + es: "Archivo a resolver", + ja: "解決するファイル", + ko: "해결할 파일", + ru: "Файл для разрешения", + zh: "待解决的文件", + "zh-tw": "待解決的檔案", + }, + "Ui.CouchDB.Guidance": { + def: "Please enter the CouchDB server information below.", + de: "Bitte geben Sie unten die CouchDB-Serverinformationen ein.", + es: "Ingrese la información del servidor CouchDB a continuación.", + ja: "以下にCouchDBサーバーの情報を入力してください。", + ko: "CouchDB 연결 정보를 입력하세요.", + ru: "Пожалуйста, введите ниже информацию о сервере CouchDB.", + zh: "请在下方输入 CouchDB 服务器信息。", + "zh-tw": "請在下方輸入 CouchDB 伺服器資訊。", + }, + "Ui.History.FileToView": { + def: "File To View", + de: "Datei zum Anzeigen", + es: "Archivo para ver", + ja: "表示するファイル", + ko: "볼 파일", + ru: "Файл для просмотра", + zh: "待查看的文件", + "zh-tw": "待檢視的檔案", + }, + "Ui.P2P.Guidance": { + def: "Please enter the Peer-to-Peer Synchronisation information below.", + de: "Bitte geben Sie unten die Peer-to-Peer Synchronisationsinformationen ein.", + es: "Ingrese la información de sincronización punto a punto a continuación.", + ja: "以下にP2P同期の情報を入力してください。", + ko: "P2P 연결을 설정하세요.", + ru: "Пожалуйста, введите ниже информацию для синхронизации Peer-to-Peer.", + zh: "请在下方输入点对点同步信息。", + "zh-tw": "請在下方輸入點對點同步資訊。", + }, + "Ui.RemoteE2EE.AdvancedTitle": { + def: "Advanced", + de: "Erweiterte", + es: "Avanzado", + ja: "詳細設定", + ko: "고급", + ru: "Дополнительно", + zh: "高级", + "zh-tw": "高階", + }, + "Ui.RemoteE2EE.AlgorithmWarning": { + def: "Changing the encryption algorithm will prevent access to any data previously encrypted with a different algorithm.", + de: "Das Ändern des Verschlüsselungsalgorithmus verhindert den Zugriff auf alle zuvor mit einem anderen Algorithmus verschlüsselten Daten.", + es: "Cambiar el algoritmo de cifrado impedirá el acceso a cualquier dato previamente cifrado con un algoritmo diferente.", + ja: "暗号化アルゴリズムを変更すると、別のアルゴリズムで暗号化された既存データにはアクセスできなくなります。", + ko: "알고리즘을 변경하면 기존 데이터와 호환되지 않을 수 있습니다.", + ru: "Изменение алгоритма шифрования сделает недоступными все данные, ранее зашифрованные другим алгоритмом.", + zh: "更改加密算法将导致无法访问之前使用不同算法加密的任何数据。", + "zh-tw": "更改加密演算法將導致無法訪問之前使用不同演算法加密的任何資料。", + }, + "Ui.RemoteE2EE.ButtonCancel": { + def: "Cancel", + de: "Abbrechen", + es: "Cancelar", + ja: "キャンセル", + ko: "취소", + ru: "Отмена", + zh: "取消", + "zh-tw": "取消", + }, + "Ui.RemoteE2EE.ButtonProceed": { + def: "Proceed", + de: "Verfahren", + es: "Continuar", + ja: "続行", + ko: "진행", + ru: "Продолжить", + zh: "继续", + "zh-tw": "繼續", + }, + "Ui.RemoteE2EE.DefaultAlgorithmDesc": { + def: "In most cases, you should stick with the default algorithm.", + de: "In den meisten Fällen sollten Sie mit dem Standardalgorithmus festhalten.", + es: "En la mayoría de los casos, debes seguir con el algoritmo predeterminado.", + ja: "ほとんどの場合、デフォルトのアルゴリズムのままにすることをおすすめします。", + ko: "기본 알고리즘은 대부분의 경우 권장됩니다.", + ru: "В большинстве случаев следует использовать алгоритм по умолчанию.", + zh: "在大多数情况下,您应使用默认算法。", + "zh-tw": "在大多數情況下,您應使用預設演算法。", + }, + "Ui.RemoteE2EE.Guidance": { + def: "Please configure your end-to-end encryption settings.", + de: "Bitte konfigurieren Sie Ihre End-to-End-Verschlüsselungseinstellungen.", + es: "Configure sus ajustes de cifrado de extremo a extremo.", + ja: "E2EEの設定を行ってください。", + ko: "원격 암호화를 설정하세요.", + ru: "Пожалуйста, настройте параметры сквозного шифрования.", + zh: "请配置您的端到端加密设置。", + "zh-tw": "請配置您的端到端加密設定。", + }, + "Ui.RemoteE2EE.LabelEncrypt": { + def: "End-to-End Encryption", + de: "End-to-End-Verschlüsselung", + es: "Cifrado de extremo a extremo", + ja: "E2EE", + ko: "암호화 사용", + ru: "Сквозное шифрование", + zh: "端到端加密", + "zh-tw": "端到端加密", + }, + "Ui.RemoteE2EE.LabelEncryptionAlgorithm": { + def: "Encryption Algorithm", + de: "Verschlüsselung Algorithm", + es: "Algoritmo de cifrado", + ja: "暗号化アルゴリズム", + ko: "암호화 알고리즘", + ru: "Алгоритм шифрования", + zh: "加密算法", + "zh-tw": "加密演算法", + }, + "Ui.RemoteE2EE.LabelObfuscateProperties": { + def: "Obfuscate Properties", + de: "Obfuscat Eigenschaften", + es: "Ofuscar propiedades", + ja: "プロパティを難読化", + ko: "속성 난독화", + ru: "Обфусцировать свойства", + zh: "混淆属性", + "zh-tw": "混淆屬性", + }, + "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.", + de: "Bitte beachten Sie, dass die End-to-End-Verschlüsselungspassphrase nicht validiert wird, bis der Synchronisationsprozess tatsächlich beginnt. Dies ist eine Sicherheitsmaßnahme zum Schutz Ihrer Daten.", + es: "Tenga en cuenta que la frase de contraseña de cifrado de extremo a extremo no se valida hasta que realmente comienza el proceso de sincronización. Esta es una medida de seguridad diseñada para proteger sus datos.", + ja: "E2EEのパスフレーズは、実際に同期処理が開始されるまで検証されません。これはデータを保護するためのセキュリティ対策です。", + ko: "수동 설정은 고급 사용자용입니다. 모든 장치에서 동일한 설정을 사용해야 합니다.", + ru: "Обратите внимание: парольная фраза сквозного шифрования не проверяется, пока фактически не начнётся процесс синхронизации. Это мера безопасности, предназначенная для защиты ваших данных.", + zh: "请注意,端到端加密密码直到同步过程实际开始时才会被验证。这是为保护您的数据而设计的安全措施。", + "zh-tw": "請注意,端到端加密密碼直到同步過程實際開始時才會被驗證。這是為保護您的資料而設計的安全措施。", + }, + "Ui.RemoteE2EE.MultiDestinationWarning": { + def: "This setting must be the same even when connecting to multiple synchronisation destinations.", + de: "Diese Einstellung muss auch bei Verbindung mit mehreren Synchronisierungszielen gleich sein.", + es: "Esta configuración debe ser la misma incluso cuando se conecte a múltiples destinos de sincronización.", + ja: "複数の同期先に接続する場合でも、この設定は同じである必要があります。", + ko: "여러 원격 대상을 사용하는 경우 모든 대상의 암호화 설정을 일치시켜야 합니다.", + ru: "Этот параметр должен быть одинаковым даже при подключении к нескольким целям синхронизации.", + zh: "连接到多个同步目标时,此设置必须保持一致。", + "zh-tw": "連線到多個同步目標時,此設定必須保持一致。", + }, + "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.", + de: "Obfuscating Eigenschaften fügt eine zusätzliche Sicherheitsschicht hinzu, indem es schwieriger macht, die Struktur und Namen Ihrer Dateien und Ordner auf dem Remoteserver zu identifizieren.", + es: "Ofuscar propiedades agrega una capa adicional de seguridad al dificultar la identificación de la estructura y los nombres de sus archivos y carpetas en el servidor remoto.", + ja: "プロパティを難読化すると、リモートサーバー上のファイルやフォルダの構造や名前を特定しにくくなり、セキュリティがさらに向上します。", + ko: "파일 속성 이름을 난독화하여 원격 데이터베이스에 저장되는 정보를 줄입니다.", + ru: "Обфускация свойств добавляет дополнительный уровень безопасности, затрудняя определение структуры и имён ваших файлов и папок на удалённом сервере.", + zh: "混淆属性通过使远程服务器上的文件和文件夹结构及名称更难以识别,从而增加了一层额外的安全保障。", + "zh-tw": "混淆屬性透過使遠端伺服器上的檔案和資料夾結構及名稱更難以識別,從而增加了一層額外的安全保障。", + }, + "Ui.RemoteE2EE.PassphraseValidationLine1": { + def: "Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences.", + de: "Bitte beachten Sie, dass die End-to-End-Verschlüsselungspassphrase nicht validiert wird, bis der Synchronisationsprozess tatsächlich beginnt.", + es: "Tenga en cuenta que la frase de contraseña de cifrado de extremo a extremo no se valida hasta que realmente comienza el proceso de sincronización.", + ja: "E2EEのパスフレーズは、実際に同期処理が開始されるまで検証されません。", + ko: "이 암호문은 모든 장치에서 동일해야 합니다.", + ru: "Обратите внимание: парольная фраза сквозного шифрования не проверяется, пока фактически не начнётся процесс синхронизации.", + zh: "请注意,端到端加密密码直到同步过程实际开始时才会被验证。", + "zh-tw": "請注意,端到端加密密碼直到同步過程實際開始時才會被驗證。", + }, + "Ui.RemoteE2EE.PassphraseValidationLine2": { + def: "Therefore, we ask that you exercise extreme caution when configuring server information manually.", + de: "Deshalb bitten wir Sie, extreme Vorsicht zu üben, wenn Sie Serverinformationen manuell konfigurieren.", + es: "Por lo tanto, le pedimos que tenga extrema precaución al configurar la información del servidor manualmente.", + ja: "そのため、サーバー情報を手動で設定する場合は、特に慎重に行ってください。", + ko: "암호문을 잊으면 기존 원격 데이터를 읽을 수 없습니다.", + ru: "Поэтому мы просим вас быть предельно осторожными при ручной настройке сведений о сервере.", + zh: "因此,我们要求您在手动配置服务器信息时格外谨慎。", + "zh-tw": "因此,我們要求您在手動配置伺服器資訊時格外謹慎。", + }, + "Ui.RemoteE2EE.PlaceholderPassphrase": { + def: "Enter your passphrase", + de: "Geben Sie Ihre Passphrase", + es: "Ingrese su contraseña", + ja: "パスフレーズを入力", + ko: "암호문 입력", + ru: "Введите парольную фразу", + zh: "请输入您的密码", + "zh-tw": "請輸入您的密碼", + }, + "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.", + de: "Die End-to-End-Verschlüsselung sorgt dafür, dass Ihre Daten auf Ihrem Gerät verschlüsselt werden, bevor Sie an den Remote-Server gesendet werden. Dies bedeutet, dass selbst wenn jemand Zugriff auf den Server erhält, sie nicht in der Lage sein, Ihre Daten ohne die Passphrase zu lesen.", + es: "Habilitar el cifrado de extremo a extremo garantiza que sus datos estén cifrados en su dispositivo antes de enviarlos al servidor remoto. Esto significa que incluso si alguien obtiene acceso al servidor, no podrá leer sus datos sin la frase de contraseña.", + ja: "E2EEを有効にすると、データはリモートサーバーへ送信される前にこのデバイス上で暗号化されます。そのため、誰かがサーバーへアクセスできたとしても、パスフレーズがなければデータを読むことはできません。", + ko: "동기화 기능을 사용하는 경우 암호화를 강력히 권장합니다.", + ru: "Включение сквозного шифрования гарантирует, что ваши данные будут зашифрованы на устройстве до отправки на удалённый сервер. Это означает, что даже если кто-то получит доступ к серверу, он не сможет прочитать ваши данные без парольной фразы.", + zh: "启用端到端加密可确保您的数据在发送到远程服务器之前已在设备上加密。这意味着即使有人获得服务器访问权限,没有密码也无法读取您的数据。", + "zh-tw": + "啟用端到端加密可確保您的資料在傳送到遠端伺服器之前已在裝置上加密。這意味著即使有人獲得伺服器訪問許可權,沒有密碼也無法讀取您的資料。", + }, + "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.", + de: "Die End-to-End-Verschlüsselung sorgt dafür, dass Ihre Daten auf Ihrem Gerät verschlüsselt werden, bevor Sie an den Remote-Server gesendet werden.", + es: "Habilitar el cifrado de extremo a extremo garantiza que sus datos estén cifrados en su dispositivo antes de enviarlos al servidor remoto.", + ja: "E2EEを有効にすると、データはリモートサーバーへ送信される前にこのデバイス上で暗号化されます。", + ko: "동기화 기능을 사용하는 경우 암호화를 강력히 권장합니다.", + ru: "Включение сквозного шифрования гарантирует, что ваши данные будут зашифрованы на устройстве до отправки на удалённый сервер.", + zh: "启用端到端加密可确保您的数据在发送到远程服务器之前已在设备上加密。", + "zh-tw": "啟用端到端加密可確保您的資料在傳送到遠端伺服器之前已在裝置上加密。", + }, + "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.", + de: "Beachten Sie auch, dass, wenn Sie Peer-to-Peer-Synchronisation verwenden, diese Konfiguration verwendet wird, wenn Sie auf andere Methoden wechseln und in Zukunft mit einem Remote-Server verbinden.", + es: "Además, tenga en cuenta que si utiliza la sincronización punto a punto, esta configuración se utilizará cuando cambie a otros métodos y se conecte a un servidor remoto en el futuro.", + ja: "また、P2P同期を使用している場合でも、この設定は今後ほかの方式に切り替えてリモートサーバーへ接続するときに使用されます。", + ko: "특히 P2P 이외의 원격 저장소를 사용하는 경우 원격 서버 관리자가 데이터를 볼 수 없도록 보호합니다.", + ru: "Также обратите внимание: если вы используете синхронизацию Peer-to-Peer, эта конфигурация будет применяться, когда в будущем вы переключитесь на другие методы и подключитесь к удалённому серверу.", + zh: "另外请注意,如果您正在使用点对点同步,将来切换到其他方式并连接到远程服务器时将使用此配置。", + "zh-tw": "另外請注意,如果您正在使用點對點同步,將來切換到其他方式並連線到遠端伺服器時將使用此配置。", + }, + "Ui.RemoteE2EE.StronglyRecommendedTitle": { + def: "Strongly Recommended", + de: "Stark empfohlen", + es: "Muy recomendado", + ja: "強く推奨", + ko: "강력 권장", + ru: "Настоятельно рекомендуется", + zh: "强烈推荐", + "zh-tw": "強烈推薦", + }, + "Ui.RemoteE2EE.Title": { + def: "End-to-End Encryption", + de: "End-to-End-Verschlüsselung", + es: "Cifrado de extremo a extremo", + ja: "E2EE", + ko: "원격 암호화", + ru: "Сквозное шифрование", + zh: "端到端加密", + "zh-tw": "端到端加密", + }, + "Ui.RemoteE2EE.WarningSameSetting": { + def: "This setting must be the same even when connecting to multiple synchronisation destinations.", + de: "Diese Einstellung muss auch bei Verbindung mit mehreren Synchronisierungszielen gleich sein.", + es: "Esta configuración debe ser la misma incluso cuando se conecte a múltiples destinos de sincronización.", + ja: "複数の同期先に接続する場合でも、この設定は同じである必要があります。", + ko: "이 설정은 모든 장치에서 동일해야 합니다.", + ru: "Этот параметр должен быть одинаковым даже при подключении к нескольким целям синхронизации.", + zh: "连接到多个同步目标时,此设置必须保持一致。", + "zh-tw": "連線到多個同步目標時,此設定必須保持一致。", + }, + "Ui.ScanQRCode.ButtonClose": { + def: "Close this dialog", + de: "Schließen Sie diesen Dialog", + es: "Cerrar este diálogo", + ja: "このダイアログを閉じる", + ko: "닫기", + ru: "Закрыть это окно", + zh: "关闭此对话框", + "zh-tw": "關閉此對話方塊", + }, + "Ui.ScanQRCode.Guidance": { + def: "Please follow the steps below to import settings from your existing device.", + de: "Bitte folgen Sie den folgenden Schritten, um Einstellungen von Ihrem vorhandenen Gerät zu importieren.", + es: "Siga los pasos a continuación para importar la configuración desde su dispositivo existente.", + ja: "既存のデバイスから設定を取り込むには、以下の手順に従ってください。", + ko: "다른 장치에서 표시한 QR 코드를 스캔하세요.", + ru: "Следуйте приведённым ниже шагам, чтобы импортировать настройки с существующего устройства.", + zh: "请按照以下步骤从现有设备导入设置。", + "zh-tw": "請按照以下步驟從現有裝置匯入設定。", + }, + "Ui.ScanQRCode.Instruction": { + def: "Please follow the steps below to import settings from your existing device.", + de: "Bitte folgen Sie den folgenden Schritten, um Einstellungen von Ihrem vorhandenen Gerät zu importieren.", + es: "Siga los pasos a continuación para importar la configuración desde su dispositivo existente.", + ja: "既存のデバイスから設定を取り込むには、以下の手順に従ってください。", + ko: "카메라로 QR 코드를 스캔하세요.", + ru: "Следуйте приведённым ниже шагам, чтобы импортировать настройки с существующего устройства.", + zh: "请按照以下步骤从现有设备导入设置。", + "zh-tw": "請按照以下步驟從現有裝置匯入設定。", + }, + "Ui.ScanQRCode.Step1": { + def: "On this device, please keep this Vault open.", + de: "Bitte halten Sie diesen Vault auf diesem Gerät offen.", + es: "En este dispositivo, mantenga abierta esta bóveda.", + ja: "このデバイスでは、このVaultを開いたままにしてください。", + ko: "다른 장치에서 이 Vault를 엽니다.", + ru: "На этом устройстве оставьте данный Vault открытым.", + zh: "在此设备上,请保持此 Vault 处于打开状态。", + "zh-tw": "在此裝置上,請保持此 Vault 處於開啟狀態。", + }, + "Ui.ScanQRCode.Step2": { + def: "On the source device, open Obsidian.", + de: "Öffnen Sie auf dem Quellgerät Obsidian.", + es: "En el dispositivo fuente, abra Obsidian.", + ja: "元のデバイスでObsidianを開きます。", + ko: "다른 장치에서 Obsidian을 엽니다.", + ru: "На исходном устройстве откройте Obsidian.", + zh: "在源设备上打开 Obsidian。", + "zh-tw": "在源裝置上開啟 Obsidian。", + }, + "Ui.ScanQRCode.Step3": { + def: "On the source device, from the command palette, run the 'Show settings as a QR code' command.", + de: "Auf dem Quellgerät, aus der Befehlspalette, führen Sie den Befehl 'Einstellungen als QR-Code anzeigen' aus.", + es: 'En el dispositivo de origen, desde la paleta de comandos, ejecute el comando "Mostrar configuración como código QR".', + ja: "元のデバイスでコマンドパレットを開き、「Show settings as a QR code」コマンドを実行します。", + ko: "다른 장치의 설정에서 'QR 코드 표시'를 선택합니다.", + ru: "На исходном устройстве в палитре команд выполните команду «Show settings as a QR code».", + zh: '在源设备上,从命令面板运行"将设置显示为二维码"命令。', + "zh-tw": '在源裝置上,從命令面板執行"將設定顯示為二維碼"命令。', + }, + "Ui.ScanQRCode.Step4": { + def: "On this device, switch to the camera app or use a QR code scanner to scan the displayed QR code.", + de: "Auf diesem Gerät wechseln Sie in die Kamera-App oder verwenden Sie einen QR-Code-Scanner, um den angezeigten QR-Code zu scannen.", + es: "En este dispositivo, cambie a la aplicación de la cámara o use un escáner de códigos QR para escanear el código QR que se muestra.", + ja: "このデバイスでカメラアプリに切り替えるか、QRコードスキャナーを使って表示されたQRコードを読み取ってください。", + ko: "이 장치에서 표시된 QR 코드를 스캔합니다.", + ru: "На этом устройстве переключитесь в приложение камеры или используйте сканер QR-кодов, чтобы отсканировать показанный QR-код.", + zh: "在此设备上,切换到相机应用或使用二维码扫描器扫描显示的二维码。", + "zh-tw": "在此裝置上,切換到相機應用或使用二維碼掃描器掃描顯示的二維碼。", + }, + "Ui.ScanQRCode.Title": { + def: "Scan QR Code", + de: "QR-Code Scannen", + es: "Escanear código QR", + ja: "QRコードを読み取る", + ko: "QR 코드 스캔", + ru: "Сканировать QR-код", + zh: "扫描二维码", + "zh-tw": "掃描二維碼", }, "Ui.Settings.Advanced.LocalDatabaseTweak": { def: "Local Database Tweak", + de: "Lokale Datenbank optimieren", + es: "Ajustes de la base de datos local", + ja: "ローカルデータベースの調整", + ko: "로컬 데이터베이스 조정", + ru: "Настройка локальной базы данных", zh: "本地数据库调整", + "zh-tw": "本機資料庫調整", }, "Ui.Settings.Advanced.MemoryCache": { def: "Memory Cache", + de: "Speichercache", + es: "Caché de memoria", + ja: "メモリーキャッシュ", + ko: "메모리 캐시", + ru: "Кэш памяти", zh: "内存缓存", + "zh-tw": "記憶體快取", }, "Ui.Settings.Advanced.TransferTweak": { def: "Transfer Tweak", + de: "Übertragung optimieren", + es: "Ajustes de transferencia", + ja: "転送の調整", + ko: "전송 조정", + ru: "Настройка передачи", zh: "传输调整", + "zh-tw": "傳輸調整", }, "Ui.Settings.Common.Analyse": { def: "Analyse", + de: "Analysieren", + es: "Analizar", + ja: "解析", + ko: "분석", + ru: "Анализировать", zh: "分析", + "zh-tw": "分析", }, "Ui.Settings.Common.Back": { def: "Back", + de: "Zurück", + es: "Volver", + ja: "戻る", + ko: "뒤로", + ru: "Назад", zh: "返回", + "zh-tw": "返回", }, "Ui.Settings.Common.Check": { def: "Check", + de: "Überprüfung", + es: "Verificar", + ja: "確認", + ko: "확인", + ru: "Проверить", zh: "检查", + "zh-tw": "檢查", }, "Ui.Settings.Common.Configure": { def: "Configure", + de: "Konfigurieren", + es: "Configurar", + ja: "設定", + ko: "구성", + ru: "Настроить", zh: "配置", + "zh-tw": "配置", }, "Ui.Settings.Common.Continue": { def: "Continue", @@ -7920,7 +10409,13 @@ export const allMessages = { }, "Ui.Settings.Common.Delete": { def: "Delete", + de: "Löschen", + es: "Eliminar", + ja: "削除", + ko: "삭제", + ru: "Удалить", zh: "删除", + "zh-tw": "刪除", }, "Ui.Settings.Common.Fetch": { def: "Fetch", @@ -7928,7 +10423,13 @@ export const allMessages = { }, "Ui.Settings.Common.Lock": { def: "Lock", + de: "Schließung", + es: "Bloquear", + ja: "ロック", + ko: "잠금", + ru: "Заблокировать", zh: "锁定", + "zh-tw": "鎖定", }, "Ui.Settings.Common.Merge": { def: "Merge", @@ -7936,7 +10437,13 @@ export const allMessages = { }, "Ui.Settings.Common.Open": { def: "Open", + de: "Öffnen", + es: "Abrir", + ja: "開く", + ko: "열기", + ru: "Открыть", zh: "打开", + "zh-tw": "開啟", }, "Ui.Settings.Common.Overwrite": { def: "Overwrite", @@ -7944,15 +10451,33 @@ export const allMessages = { }, "Ui.Settings.Common.Perform": { def: "Perform", + de: "Durchführung", + es: "Ejecutar", + ja: "実行", + ko: "실행", + ru: "Выполнить", zh: "执行", + "zh-tw": "執行", }, "Ui.Settings.Common.ResetAll": { def: "Reset all", + de: "Alle", + es: "Restablecer todo", + ja: "すべてリセット", + ko: "모두 초기화", + ru: "Сбросить всё", zh: "全部重置", + "zh-tw": "全部重置", }, "Ui.Settings.Common.ResolveAll": { def: "Resolve All", + de: "Alles auflösen", + es: "Resolver todo", + ja: "すべて解決", + ko: "모두 해결", + ru: "Разрешить всё", zh: "全部解决", + "zh-tw": "全部解決", }, "Ui.Settings.Common.Scan": { def: "Scan", @@ -7960,7 +10485,13 @@ export const allMessages = { }, "Ui.Settings.Common.Send": { def: "Send", + de: "Bitte", + es: "Enviar", + ja: "送信", + ko: "보내기", + ru: "Отправить", zh: "发送", + "zh-tw": "傳送", }, "Ui.Settings.Common.Use": { def: "Use", @@ -7968,918 +10499,3720 @@ export const allMessages = { }, "Ui.Settings.Common.VerifyAll": { def: "Verify all", - zh: "全部校验", + de: "Alle überprüfen", + es: "Verificar todo", + ja: "すべて検証", + ko: "모두 확인", + ru: "Проверить всё", + zh: "全部验证", + "zh-tw": "全部驗證", }, "Ui.Settings.CustomizationSync.OpenDesc": { def: "Open the dialog", + de: "Dialog öffnen", + es: "Abrir el cuadro de diálogo", + ja: "ダイアログを開きます", + ko: "대화 상자를 엽니다", + ru: "Открыть диалог", zh: "打开此对话框", + "zh-tw": "開啟此對話框", }, "Ui.Settings.CustomizationSync.Panel": { def: "Customization Sync", + de: "Anpassungssynchronisierung", + es: "Sincronización de personalización", + ja: "カスタマイズ同期", + ko: "사용자 지정 동기화", + ru: "Синхронизация настроек", zh: "自定义同步", + "zh-tw": "自訂同步", }, "Ui.Settings.CustomizationSync.WarnChangeDeviceName": { - def: "We cannot change the device name while this feature is enabled. Please disable this feature to change the device name.", - zh: "启用此功能时无法修改设备名称。请先关闭此功能,再修改设备名称。", + def: "Warn Change Device Name", + de: "Warner Gerätename ändern", + es: "Advertir al cambiar el nombre del dispositivo", + ja: "デバイス名を変更すると、カスタマイズ同期に影響する可能性があります。", + ko: "기기 이름 변경 경고", + ru: "Предупреждение: изменение имени устройства", + zh: "更改设备名称警告", + "zh-tw": "更改裝置名稱警告", }, "Ui.Settings.CustomizationSync.WarnSetDeviceName": { - def: "Please set device name to identify this device. This name should be unique among your devices. While not configured, we cannot enable this feature.", - zh: "请先设置用于标识此设备的设备名称。该名称应在你的设备之间保持唯一。未设置前无法启用此功能。", + def: "Warn Set Device Name", + de: "Warn-Set Gerätename", + es: "Advertir al establecer el nombre del dispositivo", + ja: "まずデバイス名を設定してください。", + ko: "기기 이름 설정 경고", + ru: "Предупреждение: задайте имя устройства", + zh: "设置设备名称警告", + "zh-tw": "設定裝置名稱警告", }, "Ui.Settings.Hatch.AnalyseDatabaseUsage": { def: "Analyse database usage", + de: "Datenbanknutzung analysieren", + es: "Analizar el uso de la base de datos", + ja: "データベース使用量を分析", + ko: "데이터베이스 사용량 분석", + ru: "Проанализировать использование базы данных", zh: "分析数据库使用情况", + "zh-tw": "分析資料庫使用情況", }, "Ui.Settings.Hatch.AnalyseDatabaseUsageDesc": { def: "Analyse database usage and generate a TSV report for diagnosis yourself. You can paste the generated report with any spreadsheet you like.", + de: "Analysiert die Datenbanknutzung und erstellt einen TSV-Bericht zur Diagnose. Du kannst den Bericht in eine beliebige Tabellenkalkulation einfügen.", + es: "Analiza el uso de la base de datos y genera un informe TSV para diagnóstico. Puedes pegar el informe generado en cualquier hoja de cálculo.", + ja: "データベース使用量を分析し、自己診断用の TSV レポートを生成します。生成されたレポートは任意のスプレッドシートに貼り付けられます。", + ko: "데이터베이스 사용량을 분석하고 직접 진단할 수 있는 TSV 보고서를 생성합니다. 생성된 보고서를 원하는 스프레드시트에 붙여 넣을 수 있습니다.", + ru: "Анализирует использование базы данных и создает TSV-отчет для самостоятельной диагностики. Его можно вставить в любую электронную таблицу.", zh: "分析数据库使用情况,并生成 TSV 报告供你自行诊断。你可以将生成的报告粘贴到任意电子表格工具中查看。", + "zh-tw": "分析資料庫使用情況,並產生 TSV 報告供你自行診斷。你可以將產生的報告貼到任何試算表工具中查看。", }, "Ui.Settings.Hatch.BackToNonConfigured": { def: "Back to non-configured", + de: "Zurück zu nicht konfiguriert", + es: "Volver al estado no configurado", + ja: "未設定状態に戻す", + ko: "미구성 상태로 되돌리기", + ru: "Вернуться к состоянию без настройки", zh: "返回未配置状态", + "zh-tw": "返回未設定狀態", }, "Ui.Settings.Hatch.ConvertNonObfuscated": { def: "Check and convert non-path-obfuscated files", + de: "Nicht pfadverschleierte Dateien prüfen und konvertieren", + es: "Comprobar y convertir archivos sin ofuscación de ruta", + ja: "パス難読化されていないファイルを確認して変換", + ko: "경로가 난독화되지 않은 파일 확인 및 변환", + ru: "Проверить и преобразовать файлы без обфускации пути", zh: "检查并转换未进行路径混淆的文件", + "zh-tw": "檢查並轉換未進行路徑混淆的檔案", }, "Ui.Settings.Hatch.ConvertNonObfuscatedDesc": { def: "Check the local database for files that were stored without path obfuscation and convert them when needed.", + de: "Prüft die lokale Datenbank auf Dateien ohne Pfadverschleierung und konvertiert sie bei Bedarf.", + es: "Comprueba en la base de datos local los archivos guardados sin ofuscación de ruta y los convierte cuando sea necesario.", + ja: "ローカルデータベース内でパス難読化なしに保存されたファイルを確認し、必要に応じて変換します。", + ko: "로컬 데이터베이스에서 경로 난독화 없이 저장된 파일을 확인하고 필요하면 변환합니다.", + ru: "Проверяет локальную базу данных на файлы, сохраненные без обфускации пути, и при необходимости преобразует их.", zh: "检查本地数据库中未按路径混淆方式存储的文件,并在需要时将其转换为正确格式。", + "zh-tw": "檢查本機資料庫中未以路徑混淆方式儲存的檔案,並在需要時轉換為正確格式。", }, "Ui.Settings.Hatch.CopyIssueReport": { def: "Copy Report to clipboard", - zh: "复制报告到剪贴板", + de: "Bericht an die Zwischenablage kopieren", + es: "Copiar el informe al portapapeles", + ja: "レポートをクリップボードにコピー", + ko: "보고서를 클립보드에 복사", + ru: "Скопировать отчёт в буфер обмена", + zh: "将报告复制到剪贴板", + "zh-tw": "將報告複製到剪貼簿", }, "Ui.Settings.Hatch.DatabaseLabel": { def: "Database: ${details}", + de: "Datenbank: ${details}", + es: "Base de datos: ${details}", + ja: "データベース: ${details}", + ko: "데이터베이스: ${details}", + ru: "База данных: ${details}", zh: "数据库:${details}", + "zh-tw": "資料庫:${details}", }, "Ui.Settings.Hatch.DatabaseToStorage": { def: "Database -> Storage", + de: "Datenbank -> Lagerung", + es: "Base de datos -> Almacenamiento", + ja: "データベース → ストレージ", + ko: "데이터베이스 -> 스토리지", + ru: "База данных -> хранилище", zh: "数据库 -> 存储", + "zh-tw": "資料庫 -> 儲存", }, "Ui.Settings.Hatch.DeleteCustomizationSyncData": { def: "Delete all customization sync data", + de: "Alle Daten der Anpassungssynchronisierung löschen", + es: "Eliminar todos los datos de sincronización de personalización", + ja: "すべてのカスタマイズ同期データを削除", + ko: "모든 사용자 지정 동기화 데이터 삭제", + ru: "Удалить все данные синхронизации настроек", zh: "删除所有自定义同步数据", + "zh-tw": "刪除所有自訂同步資料", }, "Ui.Settings.Hatch.GeneratedReport": { - def: "Generated report", - zh: "已生成的报告", + def: "Generated Report", + de: "Erstellter Bericht", + es: "Informe generado", + ja: "生成されたレポート", + ko: "생성된 보고서", + ru: "Сформированный отчёт", + zh: "生成的报告", + "zh-tw": "生成的報告", }, "Ui.Settings.Hatch.Missing": { def: "Missing", + de: "Fehlen", + es: "Falta", + ja: "見つかりません", + ko: "누락됨", + ru: "Отсутствует", zh: "缺失", + "zh-tw": "缺失", }, "Ui.Settings.Hatch.ModifiedSize": { - def: "Modified: ${modified}, Size: ${size}", - zh: "修改时间:${modified},大小:${size}", + def: "Modified Size", + de: "Geänderte Größe", + es: "Tamaño modificado", + ja: "変更後サイズ", + ko: "수정된 크기", + ru: "Изменённый размер", + zh: "修改大小", + "zh-tw": "修改大小", }, "Ui.Settings.Hatch.ModifiedSizeActual": { - def: "Modified: ${modified}, Size: ${size} (actual size: ${actualSize})", - zh: "修改时间:${modified},大小:${size}(实际大小:${actualSize})", + def: "Modified Size Actual", + de: "Modifizierte Größe", + es: "Tamaño modificado real", + ja: "実際の変更後サイズ", + ko: "실제 수정된 크기", + ru: "Фактический изменённый размер", + zh: "实际修改大小", + "zh-tw": "實際修改大小", }, "Ui.Settings.Hatch.PrepareIssueReport": { def: "Prepare the 'report' to create an issue", + de: "Bericht zum Erstellen eines Issues vorbereiten", + es: "Preparar el informe para crear una incidencia", + ja: "Issue 作成用のレポートを準備", + ko: "이슈 생성을 위한 보고서 준비", + ru: "Подготовить отчет для создания issue", zh: "准备用于提交问题的报告", + "zh-tw": "準備用於建立 Issue 的報告", }, "Ui.Settings.Hatch.RecoveryAndRepair": { def: "Recovery and Repair", + de: "Wiederherstellung und Reparatur", + es: "Recuperación y reparación", + ja: "復旧と修復", + ko: "복구 및 복원", + ru: "Восстановление и исправление", zh: "恢复与修复", + "zh-tw": "復原與修復", }, "Ui.Settings.Hatch.RecreateAll": { def: "Recreate all", + de: "Alle zurückerhalten", + es: "Volver a crear todo", + ja: "すべて再作成", + ko: "모두 다시 생성", + ru: "Создать всё заново", zh: "全部重建", + "zh-tw": "全部重建", }, "Ui.Settings.Hatch.RecreateMissingChunks": { def: "Recreate missing chunks for all files", + de: "Fehlende Chunks für alle Dateien neu erstellen", + es: "Volver a crear los fragmentos faltantes de todos los archivos", + ja: "すべてのファイルの不足チャンクを再作成", + ko: "모든 파일의 누락된 청크 다시 생성", + ru: "Повторно создать отсутствующие фрагменты для всех файлов", zh: "为所有文件重新创建缺失的数据块", + "zh-tw": "為所有檔案重新建立遺失的資料區塊", }, "Ui.Settings.Hatch.RecreateMissingChunksDesc": { def: "This will recreate chunks for all files. If there were missing chunks, this may fix the errors.", + de: "Erstellt die Chunks für alle Dateien neu. Falls Chunks fehlten, kann dies die Fehler beheben.", + es: "Esto volverá a crear los fragmentos de todos los archivos. Si faltaban fragmentos, puede corregir los errores.", + ja: "すべてのファイルのチャンクを再作成します。不足チャンクがある場合、エラーを修正できる可能性があります。", + ko: "모든 파일의 청크를 다시 생성합니다. 누락된 청크가 있었다면 오류가 해결될 수 있습니다.", + ru: "Будут повторно созданы фрагменты для всех файлов. Если какие-то фрагменты отсутствовали, это может исправить ошибки.", zh: "此操作会为所有文件重新创建数据块。如果存在缺失的数据块,可能会修复相关错误。", + "zh-tw": "此操作會為所有檔案重新建立資料區塊。如果有遺失的資料區塊,可能會修復相關錯誤。", }, "Ui.Settings.Hatch.ResetPanel": { def: "Reset", + de: "Zurücksetzen", + es: "Restablecer", + ja: "リセット", + ko: "초기화", + ru: "Сброс", zh: "重置", + "zh-tw": "重置", }, "Ui.Settings.Hatch.ResetRemoteUsage": { def: "Reset notification threshold and check the remote database usage", + de: "Benachrichtigungsschwelle zurücksetzen und Nutzung der entfernten Datenbank prüfen", + es: "Restablecer el umbral de notificación y comprobar el uso de la base de datos remota", + ja: "通知しきい値をリセットしてリモートデータベース使用量を確認", + ko: "알림 임계값을 초기화하고 원격 데이터베이스 사용량 확인", + ru: "Сбросить порог уведомлений и проверить использование удаленной базы данных", zh: "重置通知阈值并检查远程数据库使用情况", + "zh-tw": "重置通知閾值並檢查遠端資料庫使用情況", }, "Ui.Settings.Hatch.ResetRemoteUsageDesc": { def: "Reset the remote storage size threshold and check the remote storage size again.", + de: "Setzt die Größenschwelle des entfernten Speichers zurück und prüft die Speichergröße erneut.", + es: "Restablece el umbral de tamaño del almacenamiento remoto y comprueba de nuevo su tamaño.", + ja: "リモートストレージサイズのしきい値をリセットし、リモートストレージサイズを再確認します。", + ko: "원격 저장소 크기 임계값을 초기화하고 원격 저장소 크기를 다시 확인합니다.", + ru: "Сбрасывает порог размера удаленного хранилища и снова проверяет его размер.", zh: "重置远程存储大小阈值,并再次检查远程存储大小。", + "zh-tw": "重置遠端儲存空間大小閾值,並再次檢查遠端儲存空間大小。", }, "Ui.Settings.Hatch.ResolveAllConflictedFiles": { def: "Resolve all conflicted files by the newer one", + de: "Alle Dateikonflikte mit der neueren Version lösen", + es: "Resolver todos los archivos en conflicto usando la versión más reciente", + ja: "すべての競合ファイルを新しい方で解決", + ko: "모든 충돌 파일을 더 최신 버전으로 해결", + ru: "Разрешить все конфликтующие файлы более новой версией", zh: "使用较新的版本解决所有冲突文件", + "zh-tw": "使用較新的版本解決所有衝突檔案", }, "Ui.Settings.Hatch.ResolveAllConflictedFilesDesc": { def: "Resolve all conflicted files by the newer one. Caution: This will overwrite the older one, and cannot resurrect the overwritten one.", + de: "Löst alle Dateikonflikte mit der neueren Version. Achtung: Die ältere Version wird überschrieben und kann nicht wiederhergestellt werden.", + es: "Resuelve todos los archivos en conflicto con la versión más reciente. Atención: esto sobrescribirá la versión anterior y no podrá recuperarla.", + ja: "すべての競合ファイルを新しい方で解決します。注意: 古い方は上書きされ、上書きされた内容は復元できません。", + ko: "모든 충돌 파일을 더 최신 버전으로 해결합니다. 주의: 이전 버전을 덮어쓰며 덮어쓴 내용은 복구할 수 없습니다.", + ru: "Разрешает все конфликтующие файлы более новой версией. Внимание: старая версия будет перезаписана, восстановить ее будет нельзя.", zh: "使用较新的版本解决所有冲突文件。注意:此操作会覆盖较旧版本,且无法恢复被覆盖的内容。", + "zh-tw": "使用較新的版本解決所有衝突檔案。注意:此操作會覆蓋較舊版本,且無法恢復被覆蓋的內容。", }, "Ui.Settings.Hatch.RunDoctor": { def: "Run Doctor", + de: "Der Doktor", + es: "Ejecutar Doctor", + ja: "Doctor を実行", + ko: "Doctor 실행", + ru: "Запустить Doctor", zh: "运行诊断", + "zh-tw": "執行診斷", }, "Ui.Settings.Hatch.ScanBrokenFiles": { - def: "Scan for broken files", + def: "Scan for Broken files", + de: "Scannen von Dateien", + es: "Buscar archivos dañados", + ja: "壊れたファイルをスキャン", + ko: "손상된 파일 스캔", + ru: "Сканировать повреждённые файлы", zh: "扫描损坏文件", + "zh-tw": "掃描損壞檔案", }, "Ui.Settings.Hatch.ScramSwitches": { def: "Scram Switches", + de: "Notfallschalter", + es: "Interruptores de emergencia", + ja: "緊急停止スイッチ", + ko: "긴급 중지 스위치", + ru: "Аварийные переключатели", zh: "紧急开关", + "zh-tw": "緊急開關", }, "Ui.Settings.Hatch.ShowHistory": { def: "Show history", - zh: "查看历史", + de: "Geschichte zeigen", + es: "Mostrar historial", + ja: "履歴を表示", + ko: "기록 표시", + ru: "Показать историю", + zh: "显示历史", + "zh-tw": "顯示歷史", }, "Ui.Settings.Hatch.StorageLabel": { def: "Storage: ${details}", + de: "Speicher: ${details}", + es: "Almacenamiento: ${details}", + ja: "ストレージ: ${details}", + ko: "스토리지: ${details}", + ru: "Хранилище: ${details}", zh: "存储:${details}", + "zh-tw": "儲存:${details}", }, "Ui.Settings.Hatch.StorageToDatabase": { def: "Storage -> Database", + de: "Lagerung -> Datenbank", + es: "Almacenamiento -> Base de datos", + ja: "ストレージ → データベース", + ko: "스토리지 -> 데이터베이스", + ru: "Хранилище -> база данных", zh: "存储 -> 数据库", + "zh-tw": "儲存 -> 資料庫", }, "Ui.Settings.Hatch.VerifyAndRepairAllFiles": { def: "Verify and repair all files", + de: "Alle Dateien prüfen und reparieren", + es: "Verificar y reparar todos los archivos", + ja: "すべてのファイルを検証して修復", + ko: "모든 파일 검증 및 복구", + ru: "Проверить и исправить все файлы", zh: "校验并修复所有文件", + "zh-tw": "驗證並修復所有檔案", }, "Ui.Settings.Hatch.VerifyAndRepairAllFilesDesc": { def: "Compare the content of files between the local database and storage. If they do not match, you will be asked which one to keep.", + de: "Vergleicht Dateiinhalte zwischen lokaler Datenbank und Speicher. Wenn sie nicht übereinstimmen, wirst du gefragt, welche Version behalten werden soll.", + es: "Compara el contenido de los archivos entre la base de datos local y el almacenamiento. Si no coinciden, se te preguntará cuál conservar.", + ja: "ローカルデータベースとストレージのファイル内容を比較します。一致しない場合、どちらを保持するか尋ねられます。", + ko: "로컬 데이터베이스와 저장소의 파일 내용을 비교합니다. 일치하지 않으면 어느 쪽을 유지할지 묻습니다.", + ru: "Сравнивает содержимое файлов в локальной базе данных и хранилище. Если они не совпадают, будет предложено выбрать, что сохранить.", zh: "比较本地数据库与存储中的文件内容。如果内容不一致,系统会询问你保留哪一份。", + "zh-tw": "比較本機資料庫與儲存空間中的檔案內容。如果內容不一致,系統會詢問要保留哪一份。", }, "Ui.Settings.Maintenance.Cleanup": { def: "Perform cleanup", + de: "Bereinigung ausführen", + es: "Realizar limpieza", + ja: "クリーンアップを実行", + ko: "정리 수행", + ru: "Выполнить очистку", zh: "执行清理", + "zh-tw": "執行清理", }, "Ui.Settings.Maintenance.CleanupDesc": { def: "Reduces storage space by discarding all non-latest revisions. This requires the same amount of free space on the remote server and the local client.", + de: "Reduziert den Speicherbedarf, indem alle nicht neuesten Revisionen verworfen werden. Dafür wird derselbe freie Speicherplatz auf dem entfernten Server und dem lokalen Client benötigt.", + es: "Reduce el espacio usado descartando todas las revisiones que no sean la más reciente. Requiere la misma cantidad de espacio libre en el servidor remoto y en el cliente local.", + ja: "最新ではないすべてのリビジョンを破棄して使用容量を減らします。リモートサーバーとローカルクライアントの両方に同量の空き容量が必要です。", + ko: "최신이 아닌 모든 리비전을 버려 저장 공간을 줄입니다. 원격 서버와 로컬 클라이언트 모두에 같은 양의 여유 공간이 필요합니다.", + ru: "Уменьшает занимаемое место, удаляя все не последние ревизии. Требует такой же объем свободного места на удаленном сервере и локальном клиенте.", zh: "丢弃所有非最新修订版本,以减少存储空间占用。此操作要求远程服务器和本地客户端都具备同等大小的可用空间。", + "zh-tw": "捨棄所有非最新修訂版本,以減少儲存空間占用。此操作需要遠端伺服器與本機用戶端都有同等大小的可用空間。", }, "Ui.Settings.Maintenance.DeleteLocalDatabase": { def: "Delete local database to reset or uninstall Self-hosted LiveSync", + de: "Lokale Datenbank löschen, um Self-hosted LiveSync zurückzusetzen oder zu deinstallieren", + es: "Eliminar la base de datos local para restablecer o desinstalar Self-hosted LiveSync", + ja: "Self-hosted LiveSync のリセットまたはアンインストールのためにローカルデータベースを削除", + ko: "Self-hosted LiveSync를 초기화하거나 제거하기 위해 로컬 데이터베이스 삭제", + ru: "Удалить локальную базу данных для сброса или удаления Self-hosted LiveSync", zh: "删除本地数据库以重置或卸载 Self-hosted LiveSync", + "zh-tw": "刪除本機資料庫以重置或解除安裝 Self-hosted LiveSync", }, "Ui.Settings.Maintenance.EmergencyRestart": { def: "Emergency restart", + de: "Notfall-Neustart", + es: "Reinicio de emergencia", + ja: "緊急再起動", + ko: "긴급 재시작", + ru: "Аварийный перезапуск", zh: "紧急重启", + "zh-tw": "緊急重新啟動", }, "Ui.Settings.Maintenance.EmergencyRestartDesc": { def: "Disable all synchronisation and restart.", + de: "Deaktiviert die gesamte Synchronisierung und startet neu.", + es: "Desactiva toda sincronización y reinicia.", + ja: "すべての同期を無効にして再起動します。", + ko: "모든 동기화를 비활성화하고 다시 시작합니다.", + ru: "Отключает всю синхронизацию и перезапускает.", zh: "禁用所有同步并重新启动。", + "zh-tw": "停用所有同步並重新啟動。", }, "Ui.Settings.Maintenance.FreshStartWipe": { def: "Fresh Start Wipe", + de: "Löschen für einen Neustart", + es: "Borrado para empezar de nuevo", + ja: "新規開始のワイプ", + ko: "새로 시작을 위한 삭제", + ru: "Очистка для нового старта", zh: "全新开始清空", + "zh-tw": "全新開始清除", }, "Ui.Settings.Maintenance.FreshStartWipeDesc": { def: "Delete all data on the remote server.", + de: "Löscht alle Daten auf dem entfernten Server.", + es: "Elimina todos los datos del servidor remoto.", + ja: "リモートサーバー上のすべてのデータを削除します。", + ko: "원격 서버의 모든 데이터를 삭제합니다.", + ru: "Удаляет все данные на удаленном сервере.", zh: "删除远程服务器上的所有数据。", + "zh-tw": "刪除遠端伺服器上的所有資料。", }, "Ui.Settings.Maintenance.GarbageCollection": { def: "Garbage Collection V3 (Beta)", + de: "Müllsammlung V3 (Beta)", + es: "Recolección de basura V3 (Beta)", + ja: "ガベージコレクション V3 (Beta)", + ko: "가비지 컬렉션 V3 (베타)", + ru: "Сборка мусора V3 (Beta)", zh: "垃圾回收 V3(测试版)", + "zh-tw": "垃圾回收 V3(測試版)", }, "Ui.Settings.Maintenance.GarbageCollectionAction": { def: "Perform Garbage Collection", + de: "Müllsammlung durchführen", + es: "Ejecutar recolección de basura", + ja: "ガベージコレクションを実行", + ko: "가비지 컬렉션 실행", + ru: "Выполнить сборку мусора", zh: "执行垃圾回收", + "zh-tw": "執行垃圾回收", }, "Ui.Settings.Maintenance.GarbageCollectionDesc": { def: "Perform Garbage Collection to remove unused chunks and reduce database size.", + de: "Führt die Garbage Collection aus, um ungenutzte Chunks zu entfernen und die Datenbankgröße zu reduzieren.", + es: "Realiza la recolección de basura para eliminar fragmentos no usados y reducir el tamaño de la base de datos.", + ja: "ガベージコレクションを実行して未使用チャンクを削除し、データベースサイズを削減します。", + ko: "가비지 컬렉션을 수행하여 사용하지 않는 청크를 제거하고 데이터베이스 크기를 줄입니다.", + ru: "Выполняет сборку мусора для удаления неиспользуемых фрагментов и уменьшения размера базы данных.", zh: "执行垃圾回收以移除未使用的数据块并减少数据库大小。", + "zh-tw": "執行垃圾回收以移除未使用的資料區塊並減少資料庫大小。", }, "Ui.Settings.Maintenance.LockServer": { def: "Lock Server", + de: "Server sperren", + es: "Bloquear servidor", + ja: "サーバーをロック", + ko: "서버 잠금", + ru: "Заблокировать сервер", zh: "锁定服务器", + "zh-tw": "鎖定伺服器", }, "Ui.Settings.Maintenance.LockServerDesc": { def: "Lock the remote server to prevent synchronisation with other devices.", + de: "Sperrt den entfernten Server, um die Synchronisierung mit anderen Geräten zu verhindern.", + es: "Bloquea el servidor remoto para evitar la sincronización con otros dispositivos.", + ja: "他のデバイスとの同期を防ぐため、リモートサーバーをロックします。", + ko: "다른 기기와 동기화되지 않도록 원격 서버를 잠급니다.", + ru: "Блокирует удаленный сервер, чтобы предотвратить синхронизацию с другими устройствами.", zh: "锁定远程服务器,防止与其他设备继续同步。", + "zh-tw": "鎖定遠端伺服器,防止與其他裝置繼續同步。", }, "Ui.Settings.Maintenance.OverwriteRemote": { def: "Overwrite remote", + de: "Entfernte Daten überschreiben", + es: "Sobrescribir remoto", + ja: "リモートを上書き", + ko: "원격 덮어쓰기", + ru: "Перезаписать удаленные данные", zh: "覆盖远程端", + "zh-tw": "覆寫遠端", }, "Ui.Settings.Maintenance.OverwriteRemoteDesc": { def: "Overwrite remote with local DB and passphrase.", + de: "Überschreibt die entfernten Daten mit lokaler DB und Passphrase.", + es: "Sobrescribe el remoto con la base de datos local y la frase de contraseña.", + ja: "ローカル DB とパスフレーズでリモートを上書きします。", + ko: "로컬 DB와 암호 구문으로 원격을 덮어씁니다.", + ru: "Перезаписывает удаленные данные локальной базой данных и парольной фразой.", zh: "使用本地数据库和密码短语覆盖远程端数据。", + "zh-tw": "使用本機資料庫與密碼短語覆寫遠端資料。", }, "Ui.Settings.Maintenance.OverwriteServerData": { def: "Overwrite Server Data with This Device's Files", + de: "Serverdaten mit den Dateien dieses Geräts überschreiben", + es: "Sobrescribir los datos del servidor con los archivos de este dispositivo", + ja: "このデバイスのファイルでサーバーデータを上書き", + ko: "이 기기의 파일로 서버 데이터 덮어쓰기", + ru: "Перезаписать данные сервера файлами с этого устройства", zh: "用此设备的文件覆盖服务器数据", + "zh-tw": "用此裝置的檔案覆寫伺服器資料", }, "Ui.Settings.Maintenance.OverwriteServerDataDesc": { def: "Rebuild the local and remote database with files from this device.", + de: "Erstellt die lokale und entfernte Datenbank mit den Dateien dieses Geräts neu.", + es: "Reconstruye la base de datos local y remota con los archivos de este dispositivo.", + ja: "このデバイスのファイルを使ってローカルおよびリモートデータベースを再構築します。", + ko: "이 기기의 파일로 로컬 및 원격 데이터베이스를 다시 빌드합니다.", + ru: "Перестраивает локальную и удаленную базы данных из файлов на этом устройстве.", zh: "使用此设备上的文件重建本地和远程数据库。", + "zh-tw": "使用此裝置上的檔案重建本機與遠端資料庫。", }, "Ui.Settings.Maintenance.PurgeAllJournalCounter": { def: "Purge all journal counter", + de: "Alle Journalzähler bereinigen", + es: "Purgar todos los contadores del diario", + ja: "すべてのジャーナルカウンターを消去", + ko: "모든 저널 카운터 비우기", + ru: "Очистить все счетчики журнала", zh: "清空全部日志计数器", + "zh-tw": "清除全部日誌計數器", }, "Ui.Settings.Maintenance.PurgeAllJournalCounterDesc": { def: "Purge all download and upload caches.", + de: "Bereinigt alle Download- und Upload-Caches.", + es: "Purga todas las cachés de descarga y subida.", + ja: "すべてのダウンロードおよびアップロードキャッシュを消去します。", + ko: "모든 다운로드 및 업로드 캐시를 비웁니다.", + ru: "Очищает все кэши загрузки и отправки.", zh: "清空所有下载与上传缓存。", + "zh-tw": "清除所有下載與上傳快取。", }, "Ui.Settings.Maintenance.RebuildingOperations": { def: "Rebuilding Operations (Remote Only)", - zh: "重建操作(仅远程端)", + de: "Rebuilding Operationen (Remote Only)", + es: "Operaciones de reconstrucción (solo remoto)", + ja: "再構築操作 (リモートのみ)", + ko: "재구축 작업 (원격 전용)", + ru: "Операции перестроения (только удалённое хранилище)", + zh: "重建操作(仅限远程)", + "zh-tw": "重建操作(僅限遠端)", }, "Ui.Settings.Maintenance.Resend": { def: "Resend", + de: "Erneut senden", + es: "Reenviar", + ja: "再送信", + ko: "다시 보내기", + ru: "Отправить повторно", zh: "重新发送", + "zh-tw": "重新傳送", }, "Ui.Settings.Maintenance.ResendDesc": { def: "Resend all chunks to the remote.", + de: "Sendet alle Chunks erneut an die entfernte Seite.", + es: "Reenvía todos los fragmentos al remoto.", + ja: "すべてのチャンクをリモートへ再送信します。", + ko: "모든 청크를 원격으로 다시 보냅니다.", + ru: "Повторно отправляет все фрагменты на удаленную сторону.", zh: "将所有数据块重新发送到远程端。", + "zh-tw": "將所有資料區塊重新傳送到遠端。", }, "Ui.Settings.Maintenance.Reset": { def: "Reset", + de: "Zurücksetzen", + es: "Restablecer", + ja: "リセット", + ko: "초기화", + ru: "Сброс", zh: "重置", + "zh-tw": "重置", }, "Ui.Settings.Maintenance.ResetAllJournalCounter": { def: "Reset all journal counter", + de: "Alle Journalzähler zurücksetzen", + es: "Restablecer todos los contadores del diario", + ja: "すべてのジャーナルカウンターをリセット", + ko: "모든 저널 카운터 초기화", + ru: "Сбросить все счетчики журнала", zh: "重置全部日志计数器", + "zh-tw": "重置全部日誌計數器", }, "Ui.Settings.Maintenance.ResetAllJournalCounterDesc": { def: "Initialise all journal history. On the next sync, every item will be received and sent again.", + de: "Initialisiert den gesamten Journalverlauf. Bei der nächsten Synchronisierung wird jedes Element erneut empfangen und gesendet.", + es: "Inicializa todo el historial del diario. En la próxima sincronización, todos los elementos se recibirán y enviarán de nuevo.", + ja: "すべてのジャーナル履歴を初期化します。次回同期時に、すべての項目が再度受信および送信されます。", + ko: "모든 저널 기록을 초기화합니다. 다음 동기화 때 모든 항목을 다시 받고 다시 보냅니다.", + ru: "Инициализирует всю историю журнала. При следующей синхронизации каждый элемент будет снова получен и отправлен.", zh: "初始化全部日志历史。下次同步时,所有项目都会重新接收并重新发送。", + "zh-tw": "初始化全部日誌歷史。下次同步時,所有項目都會重新接收並重新傳送。", }, "Ui.Settings.Maintenance.ResetJournalReceived": { def: "Reset journal received history", + de: "Empfangsverlauf des Journals zurücksetzen", + es: "Restablecer historial de recepción del diario", + ja: "ジャーナル受信履歴をリセット", + ko: "저널 수신 기록 초기화", + ru: "Сбросить историю полученных записей журнала", zh: "重置日志接收历史", + "zh-tw": "重置日誌接收歷史", }, "Ui.Settings.Maintenance.ResetJournalReceivedDesc": { def: "Initialise journal received history. On the next sync, every item except those sent by this device will be downloaded again.", + de: "Initialisiert den Empfangsverlauf des Journals. Bei der nächsten Synchronisierung werden alle Elemente außer denen von diesem Gerät erneut heruntergeladen.", + es: "Inicializa el historial de recepción del diario. En la próxima sincronización, se volverán a descargar todos los elementos salvo los enviados por este dispositivo.", + ja: "ジャーナル受信履歴を初期化します。次回同期時に、このデバイスが送信したもの以外のすべての項目が再ダウンロードされます。", + ko: "저널 수신 기록을 초기화합니다. 다음 동기화 때 이 기기에서 보낸 항목을 제외한 모든 항목을 다시 다운로드합니다.", + ru: "Инициализирует историю полученных записей журнала. При следующей синхронизации все элементы, кроме отправленных этим устройством, будут загружены снова.", zh: "初始化日志接收历史。下次同步时,除当前设备发送的项目外,其余项目都会重新下载。", + "zh-tw": "初始化日誌接收歷史。下次同步時,除了此裝置傳送的項目外,其餘項目都會重新下載。", }, "Ui.Settings.Maintenance.ResetJournalSent": { def: "Reset journal sent history", + de: "Sendeverlauf des Journals zurücksetzen", + es: "Restablecer historial de envío del diario", + ja: "ジャーナル送信履歴をリセット", + ko: "저널 전송 기록 초기화", + ru: "Сбросить историю отправленных записей журнала", zh: "重置日志发送历史", + "zh-tw": "重置日誌傳送歷史", }, "Ui.Settings.Maintenance.ResetJournalSentDesc": { def: "Initialise journal sent history. On the next sync, every item except those received by this device will be sent again.", + de: "Initialisiert den Sendeverlauf des Journals. Bei der nächsten Synchronisierung werden alle Elemente außer denen, die dieses Gerät empfangen hat, erneut gesendet.", + es: "Inicializa el historial de envío del diario. En la próxima sincronización, se volverán a enviar todos los elementos salvo los recibidos por este dispositivo.", + ja: "ジャーナル送信履歴を初期化します。次回同期時に、このデバイスが受信したもの以外のすべての項目が再送信されます。", + ko: "저널 전송 기록을 초기화합니다. 다음 동기화 때 이 기기에서 받은 항목을 제외한 모든 항목을 다시 보냅니다.", + ru: "Инициализирует историю отправленных записей журнала. При следующей синхронизации все элементы, кроме полученных этим устройством, будут отправлены снова.", zh: "初始化日志发送历史。下次同步时,除当前设备已接收的项目外,其余项目都会重新发送。", + "zh-tw": "初始化日誌傳送歷史。下次同步時,除了此裝置已接收的項目外,其餘項目都會重新傳送。", }, "Ui.Settings.Maintenance.ResetLocalSyncInfo": { def: "Reset Synchronisation information", + de: "Synchronisierungsinformationen zurücksetzen", + es: "Restablecer información de sincronización", + ja: "同期情報をリセット", + ko: "동기화 정보 초기화", + ru: "Сбросить сведения о синхронизации", zh: "重置同步信息", + "zh-tw": "重置同步資訊", }, "Ui.Settings.Maintenance.ResetLocalSyncInfoDesc": { def: "Restore or reconstruct local database from remote.", + de: "Stellt die lokale Datenbank aus der entfernten Datenbank wieder her oder rekonstruiert sie.", + es: "Restaura o reconstruye la base de datos local desde el remoto.", + ja: "リモートからローカルデータベースを復元または再構築します。", + ko: "원격에서 로컬 데이터베이스를 복원하거나 재구성합니다.", + ru: "Восстанавливает или перестраивает локальную базу данных из удаленной.", zh: "从远程端恢复或重建本地数据库。", + "zh-tw": "從遠端還原或重建本機資料庫。", }, "Ui.Settings.Maintenance.ResetReceived": { def: "Reset received", - zh: "重置接收记录", + de: "Zurück zur Übersicht", + es: "Restablecer recibidos", + ja: "受信履歴をリセット", + ko: "수신 기록 초기화", + ru: "Сбросить полученное", + zh: "重置已接收", + "zh-tw": "重置已接收", }, "Ui.Settings.Maintenance.ResetSentHistory": { def: "Reset sent history", - zh: "重置发送记录", + de: "Zurück zur Übersicht", + es: "Restablecer historial de enviados", + ja: "送信履歴をリセット", + ko: "전송 기록 초기화", + ru: "Сбросить историю отправленного", + zh: "重置已发送历史", + "zh-tw": "重置已傳送歷史", }, "Ui.Settings.Maintenance.ResetThisDevice": { def: "Reset Synchronisation on This Device", + de: "Synchronisierung auf diesem Gerät zurücksetzen", + es: "Restablecer la sincronización en este dispositivo", + ja: "このデバイスの同期をリセット", + ko: "이 기기의 동기화 초기화", + ru: "Сбросить синхронизацию на этом устройстве", zh: "重置此设备上的同步状态", + "zh-tw": "重置此裝置上的同步狀態", }, "Ui.Settings.Maintenance.ScheduleAndRestart": { def: "Schedule and Restart", - zh: "计划执行并重启", + de: "Zeitplan und Neustart", + es: "Programar y reiniciar", + ja: "予約して再起動", + ko: "예약 후 다시 시작", + ru: "Запланировать и перезапустить", + zh: "定时并重启", + "zh-tw": "定時並重啟", }, "Ui.Settings.Maintenance.Scram": { def: "Scram!", + de: "Notfall", + es: "Emergencia", + ja: "緊急停止", + ko: "긴급 처리", + ru: "Аварийная остановка", zh: "紧急处理", + "zh-tw": "緊急處理", }, "Ui.Settings.Maintenance.SendChunks": { def: "Send chunks", + de: "Schicke Stücke", + es: "Enviar chunks", + ja: "チャンクを送信", + ko: "청크 전송", + ru: "Отправить чанки", zh: "发送数据块", + "zh-tw": "傳送資料塊", }, "Ui.Settings.Maintenance.Syncing": { def: "Syncing", + de: "Synchronisierung", + es: "Sincronización", + ja: "同期", + ko: "동기화", + ru: "Синхронизация", zh: "同步", + "zh-tw": "同步", }, "Ui.Settings.Maintenance.WarningLockedReadyAction": { - def: "I am ready, unlock the database", - zh: "我已准备好,立即解锁数据库", + def: "Warning Locked Ready Action", + de: "Warnung Gesperrte Aktion", + es: "Acción de advertencia de bloqueo listo", + ja: "ロックを解除", + ko: "경고 잠금 준비 동작", + ru: "Разблокировать удалённую базу данных", + zh: "警告已锁定准备操作", + "zh-tw": "警告已鎖定準備操作", }, "Ui.Settings.Maintenance.WarningLockedReadyText": { - def: "To prevent unwanted vault corruption, the remote database has been locked for synchronisation. (This device is marked as 'resolved'.) When all your devices are marked as 'resolved', unlock the database. This warning will continue to appear until replication confirms the device is resolved.", - zh: "为防止意外的数据仓库损坏,远程数据库已被锁定,暂停同步。(此设备已被标记为“已确认”)当你的所有设备都标记为“已确认”后,再解锁数据库。在复制过程确认此设备已完成确认之前,此警告会持续显示。", + def: "Warning Locked Ready Text", + de: "Warnen Gesperrter Text", + es: "Texto de advertencia de bloqueo listo", + ja: "リモートデータベースはロックされています。操作が完了している場合はロックを解除してください。", + ko: "경고 잠금 준비 설명", + ru: "Удалённая база данных заблокирована. Разблокируйте её, если операция уже завершена.", + zh: "警告已锁定准备文本", + "zh-tw": "警告已鎖定準備文字", }, "Ui.Settings.Maintenance.WarningLockedResolveAction": { - def: "I have made a backup, mark this device as resolved", - zh: "我已完成备份,将此设备标记为“已确认”", + def: "Warning Locked Resolve Action", + de: "Warnung Gesperrte Lösungsaktion", + es: "Acción de advertencia para resolver bloqueo", + ja: "このデバイスを承認", + ko: "경고 잠금 해결 동작", + ru: "Подтвердить это устройство", + zh: "警告已锁定解决操作", + "zh-tw": "警告已鎖定解決操作", }, "Ui.Settings.Maintenance.WarningLockedResolveText": { - def: "The remote database is locked for synchronisation to prevent vault corruption because this device is not marked as 'resolved'. Please back up your vault, reset the local database, and select 'Mark this device as resolved'. This warning will persist until replication confirms the device is resolved.", - zh: "为防止数据仓库损坏,由于此设备尚未标记为“已确认”,远程数据库已被锁定,暂停同步。请先备份你的仓库、重置本地数据库,然后选择“将此设备标记为已确认”。在复制过程确认此设备已完成确认之前,此警告会持续显示。", + def: "Warning Locked Resolve Text", + de: "Warnung gesperrter Auflösungstext", + es: "Texto de advertencia para resolver bloqueo", + ja: "リモートデータベースはロックされており、このデバイスはまだ承認されていません。", + ko: "경고 잠금 해결 설명", + ru: "Удалённая база данных заблокирована и это устройство ещё не подтверждено.", + zh: "警告已锁定解决文本", + "zh-tw": "警告已鎖定解決文字", }, "Ui.Settings.Maintenance.WriteRedFlagAndRestart": { def: "Flag and restart", + de: "Flagge und Neustart", + es: "Marcar y reiniciar", + ja: "フラグを書き込んで再起動", + ko: "Red Flag 기록 후 다시 시작", + ru: "Установить флаг и перезапустить", zh: "标记并重启", + "zh-tw": "標記並重啟", }, "Ui.Settings.Patches.CompatibilityConflict": { def: "Compatibility (Conflict Behaviour)", + de: "Kompatibilität (Konfliktverhalten)", + es: "Compatibilidad (comportamiento ante conflictos)", + ja: "互換性(競合時の動作)", + ko: "호환성(충돌 동작)", + ru: "Совместимость (поведение при конфликтах)", zh: "兼容性(冲突行为)", + "zh-tw": "相容性(衝突行為)", }, "Ui.Settings.Patches.CompatibilityDatabase": { def: "Compatibility (Database structure)", + de: "Kompatibilität (Datenbankstruktur)", + es: "Compatibilidad (estructura de base de datos)", + ja: "互換性(データベース構造)", + ko: "호환성(데이터베이스 구조)", + ru: "Совместимость (структура базы данных)", zh: "兼容性(数据库结构)", + "zh-tw": "相容性(資料庫結構)", }, "Ui.Settings.Patches.CompatibilityInternalApi": { def: "Compatibility (Internal API Usage)", + de: "Kompatibilität (Nutzung interner APIs)", + es: "Compatibilidad (uso de API interna)", + ja: "互換性(内部 API の使用)", + ko: "호환성(내부 API 사용)", + ru: "Совместимость (использование внутреннего API)", zh: "兼容性(内部 API 使用)", + "zh-tw": "相容性(內部 API 使用)", }, "Ui.Settings.Patches.CompatibilityMetadata": { def: "Compatibility (Metadata)", + de: "Kompatibilität (Metadaten)", + es: "Compatibilidad (metadatos)", + ja: "互換性(メタデータ)", + ko: "호환성(메타데이터)", + ru: "Совместимость (метаданные)", zh: "兼容性(元数据)", + "zh-tw": "相容性(中繼資料)", }, "Ui.Settings.Patches.CompatibilityRemote": { def: "Compatibility (Remote Database)", + de: "Kompatibilität (entfernte Datenbank)", + es: "Compatibilidad (base de datos remota)", + ja: "互換性(リモートデータベース)", + ko: "호환성(원격 데이터베이스)", + ru: "Совместимость (удаленная база данных)", zh: "兼容性(远程数据库)", + "zh-tw": "相容性(遠端資料庫)", }, "Ui.Settings.Patches.CompatibilityTrouble": { def: "Compatibility (Trouble addressed)", + de: "Kompatibilität (behobene Probleme)", + es: "Compatibilidad (problemas tratados)", + ja: "互換性(対処済みの問題)", + ko: "호환성(처리된 문제)", + ru: "Совместимость (устраненные проблемы)", zh: "兼容性(已处理问题)", + "zh-tw": "相容性(已處理問題)", }, "Ui.Settings.Patches.CurrentAdapter": { def: "Current adapter: ${adapter}", + de: "Aktueller Adapter: ${adapter}", + es: "Adaptador actual: ${adapter}", + ja: "現在のアダプター: ${adapter}", + ko: "현재 어댑터: ${adapter}", + ru: "Текущий адаптер: ${adapter}", zh: "当前适配器:${adapter}", + "zh-tw": "目前介面卡:${adapter}", }, "Ui.Settings.Patches.DatabaseAdapter": { def: "Database Adapter", + de: "Datenbankadapter", + es: "Adaptador de base de datos", + ja: "データベースアダプター", + ko: "데이터베이스 어댑터", + ru: "Адаптер базы данных", zh: "数据库适配器", + "zh-tw": "資料庫配接器", }, "Ui.Settings.Patches.DatabaseAdapterDesc": { def: "Select the database adapter to use.", + de: "Wähle den zu verwendenden Datenbankadapter.", + es: "Selecciona el adaptador de base de datos que se usará.", + ja: "使用するデータベースアダプターを選択します。", + ko: "사용할 데이터베이스 어댑터를 선택합니다.", + ru: "Выберите используемый адаптер базы данных.", zh: "选择要使用的数据库适配器。", + "zh-tw": "選擇要使用的資料庫配接器。", }, "Ui.Settings.Patches.EdgeCaseBehaviour": { def: "Edge case addressing (Behaviour)", + de: "Behandlung von Grenzfällen (Verhalten)", + es: "Tratamiento de casos límite (comportamiento)", + ja: "エッジケース対応(動作)", + ko: "예외 상황 처리(동작)", + ru: "Обработка крайних случаев (поведение)", zh: "边界情况处理(行为)", + "zh-tw": "邊界情況處理(行為)", }, "Ui.Settings.Patches.EdgeCaseDatabase": { def: "Edge case addressing (Database)", + de: "Behandlung von Grenzfällen (Datenbank)", + es: "Tratamiento de casos límite (base de datos)", + ja: "エッジケース対応(データベース)", + ko: "예외 상황 처리(데이터베이스)", + ru: "Обработка крайних случаев (база данных)", zh: "边界情况处理(数据库)", + "zh-tw": "邊界情況處理(資料庫)", }, "Ui.Settings.Patches.EdgeCaseProcessing": { def: "Edge case addressing (Processing)", + de: "Behandlung von Grenzfällen (Verarbeitung)", + es: "Tratamiento de casos límite (procesamiento)", + ja: "エッジケース対応(処理)", + ko: "예외 상황 처리(처리)", + ru: "Обработка крайних случаев (обработка)", zh: "边界情况处理(处理流程)", + "zh-tw": "邊界情況處理(處理流程)", }, "Ui.Settings.Patches.IndexedDbWarning": { - def: "The IndexedDB adapter often offers superior performance in certain scenarios, but it has been found to cause memory leaks when used with LiveSync mode. When using LiveSync mode, please use the IDB adapter instead.", - zh: "IndexedDB 适配器在某些场景下通常具有更好的性能,但在 LiveSync 模式下已发现可能导致内存泄漏。使用 LiveSync 模式时,请改用 IDB 适配器。", + def: "Indexed Db Warning", + de: "Indizierte Db-Warnung", + es: "Advertencia de IndexedDB", + ja: "IndexedDB の使用には互換性や移行に関する注意点があります。", + ko: "IndexedDB 경고", + ru: "Предупреждение IndexedDB", + zh: "IndexedDB 警告", + "zh-tw": "IndexedDB 警告", }, "Ui.Settings.Patches.MigratingToIdb": { - def: "Migrating all data to IDB...", - zh: "正在将所有数据迁移到 IDB...", + def: "Migrating To Idb", + de: "Zu Idb", + es: "Migrando a IDB", + ja: "IDB へ移行中", + ko: "IDB로 마이그레이션 중", + ru: "Миграция в IDB", + zh: "正在迁移到 IDB", + "zh-tw": "正在遷移到 IDB", }, "Ui.Settings.Patches.MigratingToIndexedDb": { - def: "Migrating all data to IndexedDB...", - zh: "正在将所有数据迁移到 IndexedDB...", + def: "Migrating To Indexed Db", + de: "Migration zu Indexed Db", + es: "Migrando a IndexedDB", + ja: "IndexedDB へ移行中", + ko: "IndexedDB로 마이그레이션 중", + ru: "Миграция в IndexedDB", + zh: "正在迁移到 IndexedDB", + "zh-tw": "正在遷移到 IndexedDB", }, "Ui.Settings.Patches.MigrationIdbCompleted": { - def: "Migration to IDB completed. Obsidian will be restarted with the new configuration immediately.", - zh: "已完成迁移到 IDB。Obsidian 将立即使用新配置重新启动。", + def: "Migration Idb Completed", + de: "Migration Idb abgeschlossen", + es: "Migración a IDB completada", + ja: "IDB への移行が完了しました", + ko: "IDB 마이그레이션 완료", + ru: "Миграция в IDB завершена", + zh: "IDB 迁移完成", + "zh-tw": "IDB 遷移完成", }, "Ui.Settings.Patches.MigrationIdbCompletedFollowUp": { - def: "Migration to IDB completed. Please switch the adapter and restart Obsidian.", - zh: "已完成迁移到 IDB。请切换适配器并重新启动 Obsidian。", + def: "Migration Idb Completed Follow Up", + de: "Migration Idb beendet Folgen", + es: "Seguimiento de migración a IDB completada", + ja: "IDB への移行が完了しました。反映するには再起動してください。", + ko: "IDB 마이그레이션 완료 후속 조치", + ru: "Дальнейшие действия после завершения миграции в IDB", + zh: "IDB 迁移完成后续操作", + "zh-tw": "IDB 遷移完成後續操作", }, "Ui.Settings.Patches.MigrationIndexedDbCompleted": { - def: "Migration to IndexedDB completed. Obsidian will be restarted with the new configuration immediately.", - zh: "已完成迁移到 IndexedDB。Obsidian 将立即使用新配置重新启动。", + def: "Migration Indexed Db Completed", + de: "Migrationsindex Db abgeschlossen", + es: "Migración a IndexedDB completada", + ja: "IndexedDB への移行が完了しました", + ko: "IndexedDB 마이그레이션 완료", + ru: "Миграция в IndexedDB завершена", + zh: "IndexedDB 迁移完成", + "zh-tw": "IndexedDB 遷移完成", }, "Ui.Settings.Patches.MigrationIndexedDbCompletedFollowUp": { - def: "Migration to IndexedDB completed. Please switch the adapter and restart Obsidian.", - zh: "已完成迁移到 IndexedDB。请切换适配器并重新启动 Obsidian。", + def: "Migration Indexed Db Completed Follow Up", + de: "Migration Indexed Db Completeed Follow Up", + es: "Seguimiento de migración a IndexedDB completada", + ja: "IndexedDB への移行が完了しました。反映するには再起動してください。", + ko: "IndexedDB 마이그레이션 완료 후속 조치", + ru: "Дальнейшие действия после завершения миграции в IndexedDB", + zh: "IndexedDB 迁移完成后续操作", + "zh-tw": "IndexedDB 遷移完成後續操作", }, "Ui.Settings.Patches.MigrationWarning": { - def: "Changing this setting requires migrating existing data, which may take some time, and restarting Obsidian. Please make sure to back up your data before proceeding.", - zh: "修改此设置需要迁移现有数据(可能需要一些时间)并重新启动 Obsidian。请先备份你的数据后再继续。", + def: "Migration Warning", + de: "Migrationswarnung", + es: "Advertencia de migración", + ja: "データベースの移行には時間がかかる場合があります。実行前にバックアップをおすすめします。", + ko: "마이그레이션 경고", + ru: "Предупреждение о миграции", + zh: "迁移警告", + "zh-tw": "遷移警告", }, "Ui.Settings.Patches.OperationToIdb": { - def: "to IDB", - zh: "迁移到 IDB", + def: "Operation To Idb", + de: "Betrieb auf Idb", + es: "Operación a IDB", + ja: "IDB へ移行", + ko: "IDB로 전환", + ru: "Перевести операцию в IDB", + zh: "操作迁移到 IDB", + "zh-tw": "操作遷移到 IDB", }, "Ui.Settings.Patches.OperationToIndexedDb": { - def: "to IndexedDB", - zh: "迁移到 IndexedDB", + def: "Operation To Indexed Db", + de: "Betrieb zu Index Db", + es: "Operación a IndexedDB", + ja: "IndexedDB へ移行", + ko: "IndexedDB로 전환", + ru: "Перевести операцию в IndexedDB", + zh: "操作迁移到 IndexedDB", + "zh-tw": "操作遷移到 IndexedDB", }, "Ui.Settings.Patches.Remediation": { def: "Remediation", + de: "Behebung", + es: "Corrección", + ja: "修復", + ko: "수정", + ru: "Исправление", zh: "修正", + "zh-tw": "修正", }, "Ui.Settings.Patches.RemediationChanged": { - def: "Remediation Setting Changed", - zh: "修正设置已更改", + def: "Remediation Changed", + de: "Zurück zur Übersicht", + es: "Corrección cambiada", + ja: "反映内容が変更されました", + ko: "수정 값이 변경됨", + ru: "Исправление изменено", + zh: "修复已更改", + "zh-tw": "修復已更改", }, "Ui.Settings.Patches.RemediationNoLimit": { - def: "No limit configured", - zh: "未设置限制", + def: "Remediation No Limit", + de: "Zurück zur Übersicht", + es: "Corrección sin límite", + ja: "制限なし", + ko: "제한 없음", + ru: "Исправление без ограничений", + zh: "修复无限制", + "zh-tw": "修復無限制", }, "Ui.Settings.Patches.RemediationRestarting": { - def: "Remediation setting changed. Restarting Obsidian...", - zh: "修正设置已更改,正在重新启动 Obsidian...", + def: "Remediation Restarting", + de: "Zurück zur Übersicht", + es: "Reiniciando para corregir", + ja: "変更を反映するため再起動しています", + ko: "다시 시작하는 중...", + ru: "Перезапуск для исправления", + zh: "修复正在重启", + "zh-tw": "修復正在重啟", }, "Ui.Settings.Patches.RemediationRestartLater": { - def: "Later", - zh: "稍后", + def: "Remediation Restart Later", + de: "Zurück zur Übersicht", + es: "Reiniciar más tarde para corregir", + ja: "後で再起動", + ko: "나중에 다시 시작", + ru: "Перезапустить позже для исправления", + zh: "修复稍后重启", + "zh-tw": "修復稍後重啟", }, "Ui.Settings.Patches.RemediationRestartMessage": { - def: "Restarting Obsidian is strongly recommended. Until restart, some changes may not take effect, and the display may be inconsistent. Are you sure you want to restart now?", - zh: "强烈建议重新启动 Obsidian。在重启之前,部分更改可能不会生效,界面显示也可能不一致。确定要现在重启吗?", + def: "Remediation Restart Message", + de: "Zurück zur Übersicht", + es: "Mensaje de reinicio para corrección", + ja: "変更を反映するには再起動が必要です。今すぐ再起動しますか?", + ko: "변경 사항을 적용하려면 Obsidian을 다시 시작해야 합니다.", + ru: "Сообщение о перезапуске для исправления", + zh: "修复重启消息", + "zh-tw": "修復重啟訊息", }, "Ui.Settings.Patches.RemediationRestartNow": { - def: "Restart Now", - zh: "立即重启", + def: "Remediation Restart Now", + de: "Zurück zur Übersicht", + es: "Reiniciar ahora para corregir", + ja: "今すぐ再起動", + ko: "지금 다시 시작", + ru: "Перезапустить сейчас для исправления", + zh: "修复立即重启", + "zh-tw": "修復立即重啟", }, "Ui.Settings.Patches.RemediationSuffixChanged": { - def: "Suffix has been changed. Reopening database...", - zh: "后缀已更改,正在重新打开数据库...", + def: "Remediation Suffix Changed", + de: "Zurück zur Übersicht", + es: "Sufijo de corrección cambiado", + ja: "データベース接尾辞が変更されました", + ko: "변경됨", + ru: "Суффикс исправления изменён", + zh: "修复后缀已更改", + "zh-tw": "修復字尾已更改", }, "Ui.Settings.Patches.RemediationWithValue": { - def: "Limit: ${date} (${timestamp})", - zh: "限制:${date}(${timestamp})", + def: "Value: ${date} (${timestamp})", + de: "Wert: ${date} (${timestamp})", + es: "Valor: ${date} (${timestamp})", + ja: "値: ${date} (${timestamp})", + ko: "값: ${date} (${timestamp})", + ru: "Значение: ${date} (${timestamp})", + zh: "值:${date}(${timestamp})", + "zh-tw": "值:${date}(${timestamp})", }, "Ui.Settings.Patches.RemoteDatabaseSunset": { def: "Remote Database Tweak (In sunset)", + de: "Entfernte Datenbank optimieren (läuft aus)", + es: "Ajustes de base de datos remota (en retirada)", + ja: "リモートデータベース調整(廃止予定)", + ko: "원격 데이터베이스 조정(지원 종료 예정)", + ru: "Настройка удаленной базы данных (устаревает)", zh: "远程数据库调整(即将弃用)", + "zh-tw": "遠端資料庫調整(即將棄用)", }, "Ui.Settings.Patches.SwitchToIDB": { - def: "Switch to IDB", + def: "Switch To IDB", + de: "Zu IDB wechseln", + es: "Cambiar a IDB", + ja: "IDB に切り替え", + ko: "IDB로 전환", + ru: "Переключиться на IDB", zh: "切换到 IDB", + "zh-tw": "切換到 IDB", }, "Ui.Settings.Patches.SwitchToIndexedDb": { - def: "Switch to IndexedDB", + def: "Switch To Indexed Db", + de: "Schalten Sie auf Db", + es: "Cambiar a IndexedDB", + ja: "IndexedDB に切り替え", + ko: "IndexedDB로 전환", + ru: "Переключиться на IndexedDB", zh: "切换到 IndexedDB", + "zh-tw": "切換到 IndexedDB", }, "Ui.Settings.PowerUsers.ConfigurationEncryption": { def: "Configuration Encryption", + de: "Konfigurationsverschlüsselung", + es: "Cifrado de configuración", + ja: "設定の暗号化", + ko: "구성 암호화", + ru: "Шифрование конфигурации", zh: "配置加密", + "zh-tw": "設定加密", }, "Ui.Settings.PowerUsers.ConnectionTweak": { def: "CouchDB Connection Tweak", + de: "CouchDB-Verbindung optimieren", + es: "Ajustes de conexión de CouchDB", + ja: "CouchDB 接続の調整", + ko: "CouchDB 연결 조정", + ru: "Настройка подключения CouchDB", zh: "CouchDB 连接调整", + "zh-tw": "CouchDB 連線調整", }, "Ui.Settings.PowerUsers.ConnectionTweakDesc": { - def: "If you reached the payload size limit when using IBM Cloudant, please decrease batch size and batch limit to a lower value.", - zh: "如果你在使用 IBM Cloudant 时遇到负载大小限制,请将 batch size 和 batch limit 调低。", + def: "Connection Tweak Desc", + de: "Verbindung Tweak Desc", + es: "Descripción de ajustes de conexión", + ja: "これらの設定では接続動作を細かく調整できます。影響を理解している場合にのみ変更してください。", + ko: "연결 관련 세부 동작을 조정합니다. 문제가 있을 때만 변경하세요.", + ru: "Эти параметры позволяют тонко настроить подключение. Изменяйте их только если понимаете последствия.", + zh: "连接调优描述", + "zh-tw": "連線調優描述", }, "Ui.Settings.PowerUsers.Default": { def: "Default", + de: "Fehler", + es: "Predeterminado", + ja: "デフォルト", + ko: "기본값", + ru: "По умолчанию", zh: "默认", + "zh-tw": "預設", }, "Ui.Settings.PowerUsers.Developer": { def: "Developer", + de: "Entwickler", + es: "Desarrollador", + ja: "開発者", + ko: "개발자", + ru: "Разработчик", zh: "开发者", + "zh-tw": "開發者", }, "Ui.Settings.PowerUsers.EncryptSensitiveConfig": { def: "Encrypt sensitive configuration items", + de: "Sensible Konfigurationseinträge verschlüsseln", + es: "Cifrar elementos de configuración sensibles", + ja: "機密性の高い設定項目を暗号化", + ko: "민감한 구성 항목 암호화", + ru: "Шифровать чувствительные элементы конфигурации", zh: "加密敏感配置项", + "zh-tw": "加密敏感設定項目", }, "Ui.Settings.PowerUsers.PromptPassphraseEveryLaunch": { - def: "Ask for a passphrase at every launch", - zh: "每次启动时询问密码短语", + def: "Ask a passphrase at every launch", + de: "Fragen Sie eine Passphrase bei jedem Start", + es: "Solicitar una frase de contraseña en cada inicio", + ja: "起動のたびにパスフレーズを尋ねる", + ko: "시작할 때마다 암호 구문 요청", + ru: "Запрашивать парольную фразу при каждом запуске", + zh: "每次启动时询问密码", + "zh-tw": "每次啟動時詢問密碼", }, "Ui.Settings.PowerUsers.UseCustomPassphrase": { def: "Use a custom passphrase", - zh: "使用自定义密码短语", + de: "Verwenden Sie eine benutzerdefinierte Passphrase", + es: "Usar una frase de contraseña personalizada", + ja: "カスタムパスフレーズを使う", + ko: "사용자 지정 암호 구문 사용", + ru: "Использовать пользовательскую парольную фразу", + zh: "使用自定义密码", + "zh-tw": "使用自定義密碼", }, "Ui.Settings.Remote.Activate": { def: "Activate", - zh: "启用", + de: "Aktivieren", + es: "Activar", + ja: "有効化", + ko: "활성화", + ru: "Активировать", + zh: "激活", + "zh-tw": "啟用", }, "Ui.Settings.Remote.ActiveSuffix": { - def: " (Active)", - zh: "(当前启用)", + def: "Active Suffix", + de: "Aktiver Suffix", + es: "Sufijo activo", + ja: " (使用中)", + ko: "(활성)", + ru: "Активно", + zh: "活动后缀", + "zh-tw": "活動字尾", }, "Ui.Settings.Remote.AddConnection": { - def: "Add new connection", - zh: "新增连接", + def: "Add Connection", + de: "Verbindung hinzufügen", + es: "Agregar conexión", + ja: "接続を追加", + ko: "연결 추가", + ru: "Добавить подключение", + zh: "添加连接", + "zh-tw": "新增連線", }, "Ui.Settings.Remote.AddRemoteDefaultName": { - def: "New Remote", - zh: "新远程端", + def: "Add Remote Default Name", + de: "Remote Default Name hinzufügen", + es: "Agregar nombre remoto predeterminado", + ja: "新しいリモート設定", + ko: "새 원격", + ru: "Новое удалённое хранилище", + zh: "添加远程默认名称", + "zh-tw": "新增遠端預設名稱", }, "Ui.Settings.Remote.ConfigureAndChangeRemote": { - def: "Configure and change remote", - zh: "配置并切换远程端", + def: "Configure And Change Remote", + de: "Remote konfigurieren und ändern", + es: "Configurar y cambiar remoto", + ja: "設定してリモートを変更", + ko: "원격 구성 및 변경", + ru: "Настроить и изменить удалённое хранилище", + zh: "配置并更改远程", + "zh-tw": "配置並更改遠端", }, "Ui.Settings.Remote.ConfigureE2EE": { def: "Configure E2EE", + de: "E2EE konfigurieren", + es: "Configurar E2EE", + ja: "E2EE を設定", + ko: "E2EE 구성", + ru: "Настроить E2EE", zh: "配置端到端加密", + "zh-tw": "設定端對端加密", }, "Ui.Settings.Remote.ConfigureRemote": { def: "Configure Remote", + de: "Entfernte Verbindung konfigurieren", + es: "Configurar remoto", + ja: "リモートを設定", + ko: "원격 구성", + ru: "Настроить удаленное подключение", zh: "配置远程端", + "zh-tw": "設定遠端", }, "Ui.Settings.Remote.DeleteRemoteConfirm": { - def: "Delete remote configuration '${name}'?", - zh: "确定要删除远程配置“${name}”吗?", + def: 'Delete remote configuration "${name}"?', + de: 'Remote-Konfiguration "${name}" löschen?', + es: '¿Eliminar la configuración remota "${name}"?', + ja: "リモート設定「${name}」を削除しますか?", + ko: '원격 구성 "${name}"을 삭제하시겠습니까?', + ru: 'Удалить удалённую конфигурацию "${name}"?', + zh: "删除远程配置“${name}”?", + "zh-tw": "刪除遠端設定「${name}」?", }, "Ui.Settings.Remote.DeleteRemoteTitle": { - def: "Delete Remote Configuration", - zh: "删除远程配置", + def: "Delete Remote Title", + de: "Löschen Remote Title", + es: "Eliminar remoto", + ja: "リモート設定を削除", + ko: "원격 구성 삭제", + ru: "Удалить удалённое хранилище", + zh: "删除远程标题", + "zh-tw": "刪除遠端標題", }, "Ui.Settings.Remote.DisplayName": { - def: "Display name", + def: "Display Name", + de: "Anzeige Name", + es: "Nombre para mostrar", + ja: "表示名", + ko: "표시 이름", + ru: "Отображаемое имя", zh: "显示名称", + "zh-tw": "顯示名稱", }, "Ui.Settings.Remote.DuplicateRemote": { - def: "Duplicate remote", - zh: "复制远程配置", + def: "Duplicate Remote", + de: "Remote-Konfiguration duplizieren", + es: "Duplicar remoto", + ja: "リモート設定を複製", + ko: "원격 복제", + ru: "Дублировать удалённое хранилище", + zh: "复制远程", + "zh-tw": "複製遠端", }, "Ui.Settings.Remote.DuplicateRemoteSuffix": { - def: "${name} (Copy)", - zh: "${name}(副本)", + def: "Duplicate Remote Suffix", + de: "Suffix der duplizierten Remote-Konfiguration", + es: "Sufijo de remoto duplicado", + ja: "(コピー)", + ko: "(복사본)", + ru: "копия", + zh: "复制远程后缀", + "zh-tw": "複製遠端字尾", }, "Ui.Settings.Remote.E2EEConfiguration": { def: "E2EE Configuration", + de: "E2EE-Konfiguration", + es: "Configuración de E2EE", + ja: "E2EE 設定", + ko: "E2EE 구성", + ru: "Конфигурация E2EE", zh: "端到端加密配置", + "zh-tw": "端對端加密設定", }, "Ui.Settings.Remote.Export": { def: "Export", + de: "Ausfuhr", + es: "Exportar", + ja: "エクスポート", + ko: "내보내기", + ru: "Экспорт", zh: "导出", + "zh-tw": "匯出", }, "Ui.Settings.Remote.FetchRemoteSettings": { - def: "Fetch remote settings", + def: "Fetch Remote Settings", + de: "Fetch Remote Einstellungen", + es: "Obtener configuración remota", + ja: "リモート設定を取得", + ko: "원격 설정 가져오기", + ru: "Получить настройки с удалённого хранилища", zh: "获取远程设置", + "zh-tw": "獲取遠端設定", }, "Ui.Settings.Remote.ImportConnection": { - def: "Import connection", + def: "Import Connection", + de: "Verbindung", + es: "Importar conexión", + ja: "接続をインポート", + ko: "연결 가져오기", + ru: "Импортировать подключение", zh: "导入连接", + "zh-tw": "匯入連線", }, "Ui.Settings.Remote.ImportConnectionPrompt": { - def: "Paste a connection string", - zh: "粘贴连接字符串", + def: "Import Connection Prompt", + de: "Verbindungsdaten importieren", + es: "Aviso para importar conexión", + ja: "インポートする接続 URI を入力してください。", + ko: "가져올 연결 설정을 입력하세요.", + ru: "Вставьте URI подключения для импорта.", + zh: "导入连接提示", + "zh-tw": "匯入連線提示", }, "Ui.Settings.Remote.ImportedCouchDb": { - def: "Imported CouchDB", + def: "Imported Couch Db", + de: "Importierter Couch Db", + es: "CouchDB importado", + ja: "インポートした CouchDB", + ko: "가져온 CouchDB", + ru: "Импортированный CouchDB", zh: "已导入的 CouchDB", + "zh-tw": "已匯入的 CouchDB", }, "Ui.Settings.Remote.ImportedRemote": { - def: "Remote", - zh: "远程端", + def: "Imported Remote", + de: "Eingeführte Fernbedienung", + es: "Remoto importado", + ja: "インポートしたリモート設定", + ko: "가져온 원격", + ru: "Импортированное удалённое хранилище", + zh: "已导入的远程", + "zh-tw": "已匯入的遠端", }, "Ui.Settings.Remote.MoreActions": { - def: "More actions", + def: "More Actions", + de: "Weitere Aktionen", + es: "Más acciones", + ja: "その他の操作", + ko: "추가 작업", + ru: "Другие действия", zh: "更多操作", + "zh-tw": "更多操作", }, "Ui.Settings.Remote.PeerToPeerPanel": { def: "Peer-to-Peer Synchronisation", + de: "Peer-to-Peer-Synchronisierung", + es: "Sincronización punto a punto", + ja: "ピアツーピア同期", + ko: "피어 투 피어 동기화", + ru: "Одноранговая синхронизация", zh: "点对点同步", + "zh-tw": "點對點同步", }, "Ui.Settings.Remote.RemoteConfigurationPrefix": { - def: "Remote configuration", - zh: "远程配置", + def: "Remote Configuration Prefix", + de: "Präfix der Remote-Konfiguration", + es: "Prefijo de configuración remota", + ja: "リモート設定", + ko: "원격 구성", + ru: "Префикс конфигурации удалённого хранилища", + zh: "远程配置前缀", + "zh-tw": "遠端配置字首", }, "Ui.Settings.Remote.RemoteDatabases": { def: "Remote Databases", + de: "Entfernte Datenbanken", + es: "Bases de datos remotas", + ja: "リモートデータベース", + ko: "원격 데이터베이스", + ru: "Удаленные базы данных", zh: "远程数据库", + "zh-tw": "遠端資料庫", }, "Ui.Settings.Remote.RemoteName": { - def: "Remote name", + def: "Remote Name", + de: "Fernname", + es: "Nombre del remoto", + ja: "リモート名", + ko: "원격 이름", + ru: "Имя удалённого хранилища", zh: "远程名称", + "zh-tw": "遠端名稱", }, "Ui.Settings.Remote.RemoteNameCouchDb": { - def: "CouchDB ${host}", - zh: "CouchDB ${host}", + def: "Remote Name Couch Db", + de: "Remote-Name CouchDB", + es: "Nombre del remoto CouchDB", + ja: "CouchDB 設定", + ko: "CouchDB 원격", + ru: "Имя удалённого хранилища CouchDB", + zh: "远程名称 CouchDB", + "zh-tw": "遠端名稱 CouchDB", }, "Ui.Settings.Remote.RemoteNameP2P": { - def: "P2P ${room}", - zh: "P2P ${room}", + def: "Remote Name P2P", + de: "Remote-Name P2P", + es: "Nombre del remoto P2P", + ja: "P2P 設定", + ko: "P2P 원격", + ru: "Имя удалённого хранилища P2P", + zh: "远程名称 P2P", + "zh-tw": "遠端名稱 P2P", }, "Ui.Settings.Remote.RemoteNameS3": { - def: "S3 ${bucket}", - zh: "S3 ${bucket}", + def: "Remote Name S3", + de: "Fernname S3", + es: "Nombre del remoto S3", + ja: "S3/MinIO/R2 設定", + ko: "S3/MinIO/R2 원격", + ru: "Имя удалённого хранилища S3", + zh: "远程名称 S3", + "zh-tw": "遠端名稱 S3", }, "Ui.Settings.Remote.Rename": { def: "Rename", + de: "Name", + es: "Renombrar", + ja: "名前を変更", + ko: "이름 변경", + ru: "Переименовать", zh: "重命名", + "zh-tw": "重新命名", }, "Ui.Settings.Selector.AddDefaultPatterns": { def: "Add default patterns", + de: "Standardmuster hinzufügen", + es: "Añadir patrones predeterminados", + ja: "既定のパターンを追加", + ko: "기본 패턴 추가", + ru: "Добавить шаблоны по умолчанию", zh: "添加默认模式", + "zh-tw": "新增預設模式", }, "Ui.Settings.Selector.CrossPlatform": { def: "Cross-platform", + de: "Cross-Plattform", + es: "Multiplataforma", + ja: "クロスプラットフォーム", + ko: "크로스 플랫폼", + ru: "Кроссплатформенно", zh: "跨平台", + "zh-tw": "跨平臺", }, "Ui.Settings.Selector.Default": { def: "Default", + de: "Fehler", + es: "Predeterminado", + ja: "デフォルト", + ko: "기본값", + ru: "По умолчанию", zh: "默认", + "zh-tw": "預設", }, "Ui.Settings.Selector.HiddenFiles": { def: "Hidden Files", + de: "Versteckte Dateien", + es: "Archivos ocultos", + ja: "隠しファイル", + ko: "숨김 파일", + ru: "Скрытые файлы", zh: "隐藏文件", + "zh-tw": "隱藏檔案", }, "Ui.Settings.Selector.IgnorePatterns": { def: "Ignore patterns", + de: "Ignoriermuster", + es: "Patrones de ignorados", + ja: "無視パターン", + ko: "무시 패턴", + ru: "Шаблоны игнорирования", zh: "忽略模式", + "zh-tw": "忽略模式", }, "Ui.Settings.Selector.NonSynchronisingFiles": { def: "Non-Synchronising files", + de: "Nicht synchronisierte Dateien", + es: "Archivos no sincronizados", + ja: "同期しないファイル", + ko: "동기화하지 않는 파일", + ru: "Несинхронизируемые файлы", zh: "不同步文件", + "zh-tw": "不同步檔案", }, "Ui.Settings.Selector.NonSynchronisingFilesDesc": { def: "(RegExp) If this is set, any changes to local and remote files that match this will be skipped.", + de: "(RegExp) Wenn gesetzt, werden Änderungen an passenden lokalen und entfernten Dateien übersprungen.", + es: "(RegExp) Si se establece, se omitirán los cambios en archivos locales y remotos que coincidan.", + ja: "(RegExp)これを設定すると、一致するローカルおよびリモートファイルの変更はスキップされます。", + ko: "(RegExp) 이 값을 설정하면 로컬 및 원격 파일 중 일치하는 변경 사항을 건너뜁니다.", + ru: "(RegExp) Если задано, изменения локальных и удаленных файлов, совпадающих с выражением, будут пропущены.", zh: "(RegExp)如果设置了该项,则本地和远程中匹配这些规则的文件变更将被跳过。", + "zh-tw": "(RegExp)如果設定此項,則本機和遠端中符合規則的檔案變更會被略過。", }, "Ui.Settings.Selector.NormalFiles": { def: "Normal Files", + de: "Normale Dateien", + es: "Archivos normales", + ja: "通常ファイル", + ko: "일반 파일", + ru: "Обычные файлы", zh: "普通文件", + "zh-tw": "一般檔案", }, "Ui.Settings.Selector.OverwritePatterns": { def: "Overwrite patterns", + de: "Überschreibmuster", + es: "Patrones de sobrescritura", + ja: "上書きパターン", + ko: "덮어쓰기 패턴", + ru: "Шаблоны перезаписи", zh: "覆盖模式", + "zh-tw": "覆寫模式", }, "Ui.Settings.Selector.OverwritePatternsDesc": { def: "Patterns to match files for overwriting instead of merging", + de: "Muster für Dateien, die überschrieben statt zusammengeführt werden", + es: "Patrones para seleccionar archivos que se sobrescribirán en lugar de fusionarse", + ja: "マージではなく上書きするファイルに一致させるパターン", + ko: "병합 대신 덮어쓸 파일을 찾는 패턴", + ru: "Шаблоны файлов, которые будут перезаписаны вместо слияния", zh: "匹配后将执行覆盖而非合并的文件模式", + "zh-tw": "符合後將覆寫而非合併的檔案模式", }, "Ui.Settings.Selector.SynchronisingFiles": { def: "Synchronising files", + de: "Synchronisierte Dateien", + es: "Archivos sincronizados", + ja: "同期するファイル", + ko: "동기화할 파일", + ru: "Синхронизируемые файлы", zh: "同步文件", + "zh-tw": "同步檔案", }, "Ui.Settings.Selector.SynchronisingFilesDesc": { def: "(RegExp) Empty to sync all files. Set a regular expression filter to limit synchronised files.", + de: "(RegExp) Leer lassen, um alle Dateien zu synchronisieren. Lege einen regulären Ausdruck fest, um synchronisierte Dateien einzuschränken.", + es: "(RegExp) Vacío para sincronizar todos los archivos. Define un filtro de expresión regular para limitar los archivos sincronizados.", + ja: "(RegExp)空の場合はすべてのファイルを同期します。同期するファイルを制限するには正規表現フィルターを設定します。", + ko: "(RegExp) 비워 두면 모든 파일을 동기화합니다. 동기화할 파일을 제한하려면 정규식 필터를 설정합니다.", + ru: "(RegExp) Оставьте пустым для синхронизации всех файлов. Задайте регулярное выражение, чтобы ограничить синхронизируемые файлы.", zh: "(RegExp)留空则同步所有文件。可设置正则表达式以限制需要同步的文件。", + "zh-tw": "(RegExp)留空則同步所有檔案。可設定正規表示式篩選器以限制同步檔案。", }, "Ui.Settings.Selector.TargetPatterns": { def: "Target patterns", + de: "Zielmuster", + es: "Patrones de destino", + ja: "対象パターン", + ko: "대상 패턴", + ru: "Целевые шаблоны", zh: "目标模式", + "zh-tw": "目標模式", }, "Ui.Settings.Selector.TargetPatternsDesc": { def: "Patterns to match files for syncing", + de: "Muster für Dateien, die synchronisiert werden sollen", + es: "Patrones para seleccionar archivos que se sincronizarán", + ja: "同期するファイルに一致させるパターン", + ko: "동기화할 파일을 찾는 패턴", + ru: "Шаблоны файлов для синхронизации", zh: "用于匹配需要同步文件的模式", + "zh-tw": "用於符合需要同步檔案的模式", }, "Ui.Settings.Setup.RerunWizardButton": { - def: "Rerun Wizard", - zh: "重新运行向导", + def: "Rerun Wizard Button", + de: "Assistent erneut ausführen", + es: "Botón para volver a ejecutar el asistente", + ja: "セットアップウィザードを再実行", + ko: "마법사 다시 실행", + ru: "Запустить мастер снова", + zh: "重新运行向导按钮", + "zh-tw": "重新執行嚮導按鈕", }, "Ui.Settings.Setup.RerunWizardDesc": { def: "Rerun the onboarding wizard to set up Self-hosted LiveSync again.", + de: "Führt den Einrichtungsassistenten erneut aus, um Self-hosted LiveSync neu einzurichten.", + es: "Vuelve a ejecutar el asistente inicial para configurar Self-hosted LiveSync de nuevo.", + ja: "オンボーディングウィザードを再実行して Self-hosted LiveSync を再設定します。", + ko: "온보딩 마법사를 다시 실행하여 Self-hosted LiveSync를 다시 설정합니다.", + ru: "Повторно запустить мастер первоначальной настройки Self-hosted LiveSync.", zh: "重新运行引导向导,再次设置 Self-hosted LiveSync。", + "zh-tw": "重新執行引導精靈,再次設定 Self-hosted LiveSync。", }, "Ui.Settings.Setup.RerunWizardName": { def: "Rerun Onboarding Wizard", + de: "Einrichtungsassistent erneut ausführen", + es: "Volver a ejecutar el asistente inicial", + ja: "オンボーディングウィザードを再実行", + ko: "온보딩 마법사 다시 실행", + ru: "Повторно запустить мастер настройки", zh: "重新运行引导向导", + "zh-tw": "重新執行引導精靈", }, "Ui.Settings.SyncSettings.Fetch": { def: "Fetch", + de: "Gebühren", + es: "Obtener", + ja: "取得", + ko: "가져오기", + ru: "Получить", zh: "获取", + "zh-tw": "獲取", }, "Ui.Settings.SyncSettings.Merge": { def: "Merge", + de: "Verschmelzung", + es: "Fusionar", + ja: "マージ", + ko: "병합", + ru: "Объединить", zh: "合并", + "zh-tw": "合併", }, "Ui.Settings.SyncSettings.Overwrite": { def: "Overwrite", + de: "Überschrift", + es: "Sobrescribir", + ja: "上書き", + ko: "덮어쓰기", + ru: "Перезаписать", zh: "覆盖", + "zh-tw": "覆蓋", + }, + "Ui.SetupWizard.Bucket.AccessKeyId": { + def: "Access Key ID", + de: "Access Key ID", + es: "ID de clave de acceso", + ja: "アクセスキー ID", + ko: "액세스 키 ID", + ru: "ID ключа доступа", + zh: "访问密钥 ID", + "zh-tw": "存取金鑰 ID", + }, + "Ui.SetupWizard.Bucket.BucketName": { + def: "Bucket Name", + de: "Bucket-Name", + es: "Nombre del bucket", + ja: "バケット名", + ko: "버킷 이름", + ru: "Имя бакета", + zh: "存储桶名称", + "zh-tw": "儲存桶名稱", + }, + "Ui.SetupWizard.Bucket.EndpointUrl": { + def: "Endpoint URL", + de: "Endpunkt-URL", + es: "URL del endpoint", + ja: "エンドポイント URL", + ko: "엔드포인트 URL", + ru: "URL конечной точки", + zh: "端点 URL", + "zh-tw": "端點 URL", + }, + "Ui.SetupWizard.Bucket.FolderPrefix": { + def: "Folder Prefix", + de: "Folder Prefix", + es: "Folder Prefix", + ja: "Folder Prefix", + ko: "Folder Prefix", + ru: "Folder Prefix", + zh: "文件夹前缀", + "zh-tw": "資料夾前綴", + }, + "Ui.SetupWizard.Bucket.FolderPrefixDesc": { + def: "If you want to store the data in a specific folder within the bucket, you can specify a folder prefix here. Otherwise, leave it blank to store data at the root of the bucket.", + de: "Wenn Sie Daten in einem bestimmten Ordner im Bucket speichern möchten, können Sie hier ein Ordnerpräfix angeben. Andernfalls leer lassen, um Daten im Stammverzeichnis des Buckets zu speichern.", + es: "Si quieres almacenar los datos en una carpeta concreta dentro del bucket, especifica aquí un prefijo de carpeta. Si no, déjalo vacío para guardar los datos en la raíz del bucket.", + ja: "バケット内の特定フォルダーにデータを保存したい場合は、ここでフォルダープレフィックスを指定できます。空欄にするとバケットのルートに保存されます。", + ko: "버킷 내 특정 폴더에 데이터를 저장하려면 여기에 폴더 접두사를 지정할 수 있습니다. 비워 두면 버킷 루트에 저장됩니다.", + ru: "Если вы хотите хранить данные в определённой папке внутри бакета, укажите здесь префикс папки. Иначе оставьте поле пустым, чтобы хранить данные в корне бакета.", + zh: "如果你想把数据存储在存储桶内的特定文件夹,可以在这里指定文件夹前缀。否则留空,数据会存储在存储桶根目录。", + "zh-tw": + "如果你想把資料儲存在儲存桶內的特定資料夾,可以在這裡指定資料夾前綴。否則留空,資料會儲存在儲存桶根目錄。", + }, + "Ui.SetupWizard.Bucket.InternalApiDesc": { + def: "If you cannot avoid CORS issues, you might want to try this option. It uses Obsidian's internal API to communicate with the S3 server. Not compliant with web standards, but works. Note that this might break in future Obsidian versions.", + de: "Wenn Sie CORS-Probleme nicht vermeiden können, können Sie diese Option ausprobieren. Sie nutzt die interne API von Obsidian zur Kommunikation mit dem S3-Server. Das entspricht nicht den Webstandards, funktioniert aber. Beachten Sie, dass dies in zukünftigen Obsidian-Versionen brechen kann.", + es: "Si no puedes evitar problemas de CORS, puedes probar esta opción. Usa la API interna de Obsidian para comunicarse con el servidor S3. No cumple los estándares web, pero funciona. Ten en cuenta que puede romperse en futuras versiones de Obsidian.", + ja: "CORS の問題を避けられない場合、このオプションを試せます。Obsidian の内部 API を使って S3 サーバーと通信します。Web 標準には準拠していませんが動作します。将来の Obsidian で壊れる可能性があります。", + ko: "CORS 문제를 피할 수 없다면 이 옵션을 시도할 수 있습니다. Obsidian의 내부 API를 사용해 S3 서버와 통신합니다. 웹 표준을 따르지는 않지만 동작합니다. 향후 Obsidian 버전에서 깨질 수 있습니다.", + ru: "Если невозможно избежать проблем CORS, можно попробовать этот вариант. Он использует внутренний API Obsidian для связи с сервером S3. Это не соответствует веб-стандартам, но работает. Учтите, что будущие версии Obsidian могут нарушить этот способ.", + zh: "如果无法避免 CORS 问题,可以尝试此选项。它会使用 Obsidian 的内部 API 与 S3 服务器通信。不符合 Web 标准,但可以工作。请注意,未来 Obsidian 版本可能会破坏此方式。", + "zh-tw": + "如果無法避免 CORS 問題,可以嘗試此選項。它會使用 Obsidian 的內部 API 與 S3 伺服器通訊。不符合 Web 標準,但可以運作。請注意,未來 Obsidian 版本可能會破壞此方式。", + }, + "Ui.SetupWizard.Bucket.PlaceholderAccessKeyId": { + def: "Enter your Access Key ID", + de: "Access Key ID eingeben", + es: "Introduce tu ID de clave de acceso", + ja: "アクセスキー ID を入力", + ko: "액세스 키 ID 입력", + ru: "Введите ID ключа доступа", + zh: "输入访问密钥 ID", + "zh-tw": "輸入存取金鑰 ID", + }, + "Ui.SetupWizard.Bucket.PlaceholderBucketName": { + def: "Enter your Bucket Name", + de: "Bucket-Namen eingeben", + es: "Introduce el nombre del bucket", + ja: "バケット名を入力", + ko: "버킷 이름 입력", + ru: "Введите имя бакета", + zh: "输入存储桶名称", + "zh-tw": "輸入儲存桶名稱", + }, + "Ui.SetupWizard.Bucket.PlaceholderFolderPrefix": { + def: "Enter a folder prefix (optional)", + de: "Ordnerpräfix eingeben (optional)", + es: "Introduce un prefijo de carpeta (opcional)", + ja: "フォルダープレフィックスを入力(任意)", + ko: "폴더 접두사 입력 (선택 사항)", + ru: "Введите префикс папки (необязательно)", + zh: "输入文件夹前缀(可选)", + "zh-tw": "輸入資料夾前綴(可選)", + }, + "Ui.SetupWizard.Bucket.PlaceholderRegion": { + def: "Enter your Region (e.g., us-east-1, auto for R2)", + de: "Region eingeben (z. B. us-east-1, auto für R2)", + es: "Introduce la región (por ejemplo, us-east-1, auto para R2)", + ja: "リージョンを入力(例: us-east-1、R2 は auto)", + ko: "리전 입력 (예: us-east-1, R2는 auto)", + ru: "Введите регион (например, us-east-1, auto для R2)", + zh: "输入区域(例如 us-east-1,R2 可用 auto)", + "zh-tw": "輸入區域(例如 us-east-1,R2 可用 auto)", + }, + "Ui.SetupWizard.Bucket.PlaceholderSecretAccessKey": { + def: "Enter your Secret Access Key", + de: "Secret Access Key eingeben", + es: "Introduce tu clave secreta de acceso", + ja: "シークレットアクセスキーを入力", + ko: "비밀 액세스 키 입력", + ru: "Введите секретный ключ доступа", + zh: "输入秘密访问密钥", + "zh-tw": "輸入秘密存取金鑰", + }, + "Ui.SetupWizard.Bucket.Region": { + def: "Region", + de: "Region", + es: "Región", + ja: "リージョン", + ko: "리전", + ru: "Регион", + zh: "区域", + "zh-tw": "區域", + }, + "Ui.SetupWizard.Bucket.SecretAccessKey": { + def: "Secret Access Key", + de: "Secret Access Key", + es: "Clave secreta de acceso", + ja: "シークレットアクセスキー", + ko: "비밀 액세스 키", + ru: "Секретный ключ доступа", + zh: "秘密访问密钥", + "zh-tw": "秘密存取金鑰", + }, + "Ui.SetupWizard.Bucket.Title": { + def: "S3/MinIO/R2 Configuration", + de: "S3/MinIO/R2 Konfiguration", + es: "Configuración de S3/MinIO/R2", + ja: "S3/MinIO/R2設定", + ko: "S3/MinIO/R2 구성", + ru: "Настройка S3/MinIO/R2", + zh: "S3/MinIO/R2 配置", + "zh-tw": "S3/MinIO/R2 配置", + }, + "Ui.SetupWizard.Bucket.UseInternalApi": { + def: "Use internal API", + de: "Interne API verwenden", + es: "Usar API interna", + ja: "内部 API を使用", + ko: "내부 API 사용", + ru: "Использовать внутренний API", + zh: "使用内部 API", + "zh-tw": "使用內部 API", + }, + "Ui.SetupWizard.Bucket.UsePathStyleAccess": { + def: "Use Path-Style Access", + de: "Path-Style-Zugriff verwenden", + es: "Usar acceso de estilo ruta", + ja: "パス形式アクセスを使用", + ko: "경로 스타일 액세스 사용", + ru: "Использовать доступ в стиле пути", + zh: "使用路径样式访问", + "zh-tw": "使用路徑樣式存取", + }, + "Ui.SetupWizard.Common.AdvancedSettings": { + def: "Advanced Settings", + de: "Erweiterte Einstellungen", + es: "Configuración avanzada", + ja: "詳細設定", + ko: "고급 설정", + ru: "Дополнительные настройки", + zh: "高级设置", + "zh-tw": "高階設定", }, "Ui.SetupWizard.Common.Back": { - def: "No, please take me back", - zh: "不,带我返回", + def: "Back", + de: "Zurück", + es: "Volver", + ja: "戻る", + ko: "뒤로", + ru: "Назад", + zh: "返回", + "zh-tw": "返回", }, "Ui.SetupWizard.Common.Cancel": { def: "Cancel", + de: "Abbrechen", + es: "Cancelar", + ja: "キャンセル", + ko: "취소", + ru: "Отмена", zh: "取消", + "zh-tw": "取消", + }, + "Ui.SetupWizard.Common.CheckingConnection": { + def: "Checking connection... Please wait.", + de: "Verbindung wird geprüft... Bitte warten.", + es: "Comprobando la conexión... espera.", + ja: "接続を確認しています。しばらくお待ちください。", + ko: "연결을 확인하는 중입니다. 잠시 기다려 주세요.", + ru: "Проверка подключения... Подождите.", + zh: "正在检查连接,请稍候。", + "zh-tw": "正在檢查連線,請稍候。", + }, + "Ui.SetupWizard.Common.ContinueAnyway": { + def: "Continue anyway", + de: "Immer noch", + es: "Continuar de todos modos", + ja: "このまま続行", + ko: "그래도 계속", + ru: "Всё равно продолжить", + zh: "仍然继续", + "zh-tw": "仍然繼續", + }, + "Ui.SetupWizard.Common.CustomHeaders": { + def: "Custom Headers", + de: "Benutzerdefinierte Header", + es: "Cabeceras personalizadas", + ja: "カスタムヘッダー", + ko: "사용자 지정 헤더", + ru: "Пользовательские заголовки", + zh: "自定义请求头", + "zh-tw": "自訂請求標頭", + }, + "Ui.SetupWizard.Common.ErrorConnectionTest": { + def: "Error during connection test: ${error}", + de: "Fehler beim Verbindungstest: ${error}", + es: "Error durante la prueba de conexión: ${error}", + ja: "接続テスト中にエラーが発生しました: ${error}", + ko: "연결 테스트 중 오류가 발생했습니다: ${error}", + ru: "Ошибка во время проверки подключения: ${error}", + zh: "连接测试时发生错误:${error}", + "zh-tw": "連線測試時發生錯誤:${error}", + }, + "Ui.SetupWizard.Common.ErrorConnectServer": { + def: "Failed to connect to the server. Please check your settings.", + de: "Verbindung zum Server fehlgeschlagen. Bitte prüfen Sie Ihre Einstellungen.", + es: "No se pudo conectar al servidor. Comprueba la configuración.", + ja: "サーバーに接続できませんでした。設定を確認してください。", + ko: "서버에 연결하지 못했습니다. 설정을 확인하세요.", + ru: "Не удалось подключиться к серверу. Проверьте настройки.", + zh: "无法连接到服务器。请检查设置。", + "zh-tw": "無法連線到伺服器。請檢查設定。", + }, + "Ui.SetupWizard.Common.ErrorConnectServerDetail": { + def: "Failed to connect to the server: ${error}", + de: "Verbindung zum Server fehlgeschlagen: ${error}", + es: "No se pudo conectar al servidor: ${error}", + ja: "サーバーに接続できませんでした: ${error}", + ko: "서버에 연결하지 못했습니다: ${error}", + ru: "Не удалось подключиться к серверу: ${error}", + zh: "无法连接到服务器:${error}", + "zh-tw": "無法連線到伺服器:${error}", + }, + "Ui.SetupWizard.Common.ErrorCreateReplicator": { + def: "Failed to create replicator instance.", + de: "Replikatorinstanz konnte nicht erstellt werden.", + es: "No se pudo crear la instancia de replicación.", + ja: "レプリケーターインスタンスを作成できませんでした。", + ko: "복제기 인스턴스를 만들지 못했습니다.", + ru: "Не удалось создать экземпляр репликатора.", + zh: "无法创建同步实例。", + "zh-tw": "無法建立同步實例。", + }, + "Ui.SetupWizard.Common.ExperimentalSettings": { + def: "Experimental Settings", + de: "Experimentelle Einstellungen", + es: "Configuraciones experimentales", + ja: "実験的な設定", + ko: "실험적 설정", + ru: "Экспериментальные настройки", + zh: "实验性设置", + "zh-tw": "實驗性設定", + }, + "Ui.SetupWizard.Common.HttpsOnlyMobile": { + def: "We can use only Secure (HTTPS) connections on Obsidian Mobile.", + de: "Wir können nur Secure (HTTPS) Verbindungen auf Obsidian Mobile verwenden.", + es: "Solo podemos usar conexiones seguras (HTTPS) en Obsidian Mobile.", + ja: "Obsidian Mobileではセキュアな接続 (HTTPS) のみ使用できます。", + ko: "Obsidian 모바일에서는 보안 연결(HTTPS)만 사용할 수 있습니다.", + ru: "В Obsidian Mobile можно использовать только защищённые соединения (HTTPS).", + zh: "在 Obsidian 移动端只能使用安全(HTTPS)连接。", + "zh-tw": "在 Obsidian 移動端只能使用安全(HTTPS)連線。", }, "Ui.SetupWizard.Common.ProceedSelectOption": { - def: "Please select an option to proceed", - zh: "请选择一个选项后继续", + def: "Please select an option", + de: "Bitte wählen Sie eine Option", + es: "Por favor, seleccione una opción", + ja: "オプションを選択してください", + ko: "옵션을 선택해 주세요", + ru: "Пожалуйста, выберите вариант", + zh: "请选择一个选项", + "zh-tw": "請選擇一個選項", + }, + "Ui.SetupWizard.CouchDB.DatabaseName": { + def: "Database Name", + de: "Datenbankname", + es: "Nombre de la base de datos", + ja: "データベース名", + ko: "데이터베이스 이름", + ru: "Имя базы данных", + zh: "数据库名称", + "zh-tw": "資料庫名稱", + }, + "Ui.SetupWizard.CouchDB.DatabaseNameDesc": { + def: "You cannot use capital letters, spaces, or special characters in the database name. It is also not allowed to start with an underscore (_).", + de: "Im Datenbanknamen dürfen keine Großbuchstaben, Leerzeichen oder Sonderzeichen verwendet werden. Er darf auch nicht mit einem Unterstrich (_) beginnen.", + es: "No puedes usar mayúsculas, espacios ni caracteres especiales en el nombre de la base de datos. Tampoco puede comenzar con un guion bajo (_).", + ja: "データベース名には大文字、空白、特殊文字を使用できません。またアンダースコア(_)で始めることもできません。", + ko: "데이터베이스 이름에는 대문자, 공백, 특수 문자를 사용할 수 없습니다. 밑줄(_)로 시작할 수도 없습니다.", + ru: "В имени базы данных нельзя использовать заглавные буквы, пробелы или специальные символы. Также оно не может начинаться с подчёркивания (_).", + zh: "数据库名称不能使用大写字母、空格或特殊字符,也不能以下划线(_)开头。", + "zh-tw": "資料庫名稱不能使用大寫字母、空格或特殊字元,也不能以下劃線(_)開頭。", + }, + "Ui.SetupWizard.CouchDB.InternalApiDesc": { + def: "If you cannot avoid CORS issues, you might want to try this option. It uses Obsidian's internal API to communicate with the CouchDB server. Not compliant with web standards, but works. Note that this might break in future Obsidian versions.", + de: "Wenn Sie CORS-Probleme nicht vermeiden können, können Sie diese Option ausprobieren. Sie nutzt die interne API von Obsidian zur Kommunikation mit dem CouchDB-Server. Das entspricht nicht den Webstandards, funktioniert aber. Beachten Sie, dass dies in zukünftigen Obsidian-Versionen brechen kann.", + es: "Si no puedes evitar problemas de CORS, puedes probar esta opción. Usa la API interna de Obsidian para comunicarse con el servidor CouchDB. No cumple los estándares web, pero funciona. Ten en cuenta que puede romperse en futuras versiones de Obsidian.", + ja: "CORS の問題を避けられない場合、このオプションを試せます。Obsidian の内部 API を使って CouchDB サーバーと通信します。Web 標準には準拠していませんが動作します。将来の Obsidian で壊れる可能性があります。", + ko: "CORS 문제를 피할 수 없다면 이 옵션을 시도할 수 있습니다. Obsidian의 내부 API를 사용해 CouchDB 서버와 통신합니다. 웹 표준을 따르지는 않지만 동작합니다. 향후 Obsidian 버전에서 깨질 수 있습니다.", + ru: "Если невозможно избежать проблем CORS, можно попробовать этот вариант. Он использует внутренний API Obsidian для связи с сервером CouchDB. Это не соответствует веб-стандартам, но работает. Учтите, что будущие версии Obsidian могут нарушить этот способ.", + zh: "如果无法避免 CORS 问题,可以尝试此选项。它会使用 Obsidian 的内部 API 与 CouchDB 服务器通信。不符合 Web 标准,但可以工作。请注意,未来 Obsidian 版本可能会破坏此方式。", + "zh-tw": + "如果無法避免 CORS 問題,可以嘗試此選項。它會使用 Obsidian 的內部 API 與 CouchDB 伺服器通訊。不符合 Web 標準,但可以運作。請注意,未來 Obsidian 版本可能會破壞此方式。", + }, + "Ui.SetupWizard.CouchDB.JwtAlgorithm": { + def: "JWT Algorithm", + de: "JWT-Algorithmus", + es: "Algoritmo JWT", + ja: "JWT アルゴリズム", + ko: "JWT 알고리즘", + ru: "Алгоритм JWT", + zh: "JWT 算法", + "zh-tw": "JWT 算法", + }, + "Ui.SetupWizard.CouchDB.JwtExpirationDuration": { + def: "JWT Expiration Duration (minutes)", + de: "JWT-Ablaufdauer (Minuten)", + es: "Duración de expiración de JWT (minutos)", + ja: "JWT 有効期間(分)", + ko: "JWT 만료 시간(분)", + ru: "Срок действия JWT (минуты)", + zh: "JWT 过期时间(分钟)", + "zh-tw": "JWT 过期时间(分钟)", + }, + "Ui.SetupWizard.CouchDB.JwtKey": { + def: "JWT Key", + de: "JWT-Schlüssel", + es: "Clave JWT", + ja: "JWT キー", + ko: "JWT 키", + ru: "Ключ JWT", + zh: "JWT 密钥", + "zh-tw": "JWT 密钥", + }, + "Ui.SetupWizard.CouchDB.JwtKeyDesc": { + def: "For HS256/HS512 algorithms, provide the shared secret key. For ES256/ES512 algorithms, provide the pkcs8 PEM-formatted private key.", + de: "Für HS256/HS512 geben Sie den gemeinsamen geheimen Schlüssel an. Für ES256/ES512 geben Sie den privaten Schlüssel im pkcs8-PEM-Format an.", + es: "Para algoritmos HS256/HS512, proporciona la clave secreta compartida. Para ES256/ES512, proporciona la clave privada en formato pkcs8 PEM.", + ja: "HS256/HS512 では共有シークレットキーを指定します。ES256/ES512 では pkcs8 PEM 形式の秘密鍵を指定します。", + ko: "HS256/HS512 알고리즘에는 공유 비밀 키를 입력하세요. ES256/ES512 알고리즘에는 pkcs8 PEM 형식의 개인 키를 입력하세요.", + ru: "Для алгоритмов HS256/HS512 укажите общий секретный ключ. Для ES256/ES512 укажите приватный ключ в формате pkcs8 PEM.", + zh: "HS256/HS512 算法请提供共享密钥。ES256/ES512 算法请提供 pkcs8 PEM 格式私钥。", + "zh-tw": "HS256/HS512 算法请提供共享密钥。ES256/ES512 算法请提供 pkcs8 PEM 格式私钥。", + }, + "Ui.SetupWizard.CouchDB.JwtKeyId": { + def: "JWT Key ID (kid)", + de: "JWT Key ID (kid)", + es: "ID de clave JWT (kid)", + ja: "JWT Key ID(kid)", + ko: "JWT Key ID (kid)", + ru: "ID ключа JWT (kid)", + zh: "JWT Key ID(kid)", + "zh-tw": "JWT Key ID(kid)", + }, + "Ui.SetupWizard.CouchDB.JwtSubject": { + def: "JWT Subject (sub)", + de: "JWT Subject (sub)", + es: "Sujeto JWT (sub)", + ja: "JWT Subject(sub)", + ko: "JWT Subject (sub)", + ru: "Subject JWT (sub)", + zh: "JWT Subject(sub)", + "zh-tw": "JWT Subject(sub)", + }, + "Ui.SetupWizard.CouchDB.JwtWarning": { + def: "JWT (JSON Web Token) authentication allows you to securely authenticate with the CouchDB server using tokens. Ensure that your CouchDB server is configured to accept JWTs and that the provided key and settings match the server's configuration. This feature has not been verified very thoroughly.", + de: "JWT-Authentifizierung (JSON Web Token) ermöglicht eine sichere Authentifizierung am CouchDB-Server mit Tokens. Stellen Sie sicher, dass Ihr CouchDB-Server JWTs akzeptiert und dass Schlüssel und Einstellungen zur Serverkonfiguration passen. Diese Funktion wurde noch nicht sehr gründlich geprüft.", + es: "La autenticación JWT (JSON Web Token) permite autenticarte de forma segura con el servidor CouchDB usando tokens. Asegúrate de que tu servidor CouchDB acepte JWT y de que la clave y los ajustes coincidan con la configuración del servidor. Esta función no se ha verificado exhaustivamente.", + ja: "JWT(JSON Web Token)認証により、トークンを使って CouchDB サーバーへ安全に認証できます。CouchDB が JWT を受け付けるよう設定され、指定したキーと設定がサーバー設定と一致していることを確認してください。この機能は十分には検証されていません。", + ko: "JWT(JSON Web Token) 인증을 사용하면 토큰으로 CouchDB 서버에 안전하게 인증할 수 있습니다. CouchDB 서버가 JWT를 허용하도록 구성되어 있고 제공한 키와 설정이 서버 구성과 일치하는지 확인하세요. 이 기능은 아직 충분히 검증되지 않았습니다.", + ru: "JWT (JSON Web Token) позволяет безопасно аутентифицироваться на сервере CouchDB с помощью токенов. Убедитесь, что сервер CouchDB настроен на приём JWT, а указанные ключ и настройки соответствуют конфигурации сервера. Эта функция пока не была тщательно проверена.", + zh: "JWT(JSON Web Token)认证允许你使用令牌安全地连接 CouchDB 服务器。请确保 CouchDB 已配置为接受 JWT,并且提供的密钥和设置与服务器配置匹配。此功能尚未经过非常充分的验证。", + "zh-tw": + "JWT(JSON Web Token)认证允许你使用令牌安全地连接 CouchDB 服务器。请确保 CouchDB 已配置为接受 JWT,并且提供的密钥和设置与服务器配置匹配。此功能尚未经过非常充分的验证。", + }, + "Ui.SetupWizard.CouchDB.Password": { + def: "Password", + de: "Passwort", + es: "Contraseña", + ja: "パスワード", + ko: "비밀번호", + ru: "Пароль", + zh: "密码", + "zh-tw": "密碼", + }, + "Ui.SetupWizard.CouchDB.PlaceholderDatabaseName": { + def: "Enter your database name", + de: "Datenbanknamen eingeben", + es: "Introduce el nombre de la base de datos", + ja: "データベース名を入力", + ko: "데이터베이스 이름 입력", + ru: "Введите имя базы данных", + zh: "输入数据库名称", + "zh-tw": "輸入資料庫名稱", + }, + "Ui.SetupWizard.CouchDB.PlaceholderJwtKey": { + def: "Enter your JWT secret or private key", + de: "JWT-Secret oder privaten Schlüssel eingeben", + es: "Introduce tu secreto JWT o clave privada", + ja: "JWT シークレットまたは秘密鍵を入力", + ko: "JWT 비밀 키 또는 개인 키 입력", + ru: "Введите секрет JWT или приватный ключ", + zh: "输入 JWT 共享密钥或私钥", + "zh-tw": "输入 JWT 共享密钥或私钥", + }, + "Ui.SetupWizard.CouchDB.PlaceholderJwtKeyId": { + def: "Enter your JWT Key ID", + de: "JWT Key ID eingeben", + es: "Introduce el ID de clave JWT", + ja: "JWT Key ID を入力", + ko: "JWT Key ID 입력", + ru: "Введите ID ключа JWT", + zh: "输入 JWT Key ID", + "zh-tw": "输入 JWT Key ID", + }, + "Ui.SetupWizard.CouchDB.PlaceholderJwtSubject": { + def: "Enter your JWT Subject (CouchDB Username)", + de: "JWT Subject eingeben (CouchDB-Benutzername)", + es: "Introduce el sujeto JWT (usuario de CouchDB)", + ja: "JWT Subject(CouchDB ユーザー名)を入力", + ko: "JWT Subject(CouchDB 사용자 이름) 입력", + ru: "Введите Subject JWT (имя пользователя CouchDB)", + zh: "输入 JWT Subject(CouchDB 用户名)", + "zh-tw": "输入 JWT Subject(CouchDB 用户名)", + }, + "Ui.SetupWizard.CouchDB.PlaceholderPassword": { + def: "Enter your password", + de: "Passwort eingeben", + es: "Introduce tu contraseña", + ja: "パスワードを入力", + ko: "비밀번호 입력", + ru: "Введите пароль", + zh: "输入密码", + "zh-tw": "輸入密碼", + }, + "Ui.SetupWizard.CouchDB.PlaceholderUsername": { + def: "Enter your username", + de: "Benutzernamen eingeben", + es: "Introduce tu nombre de usuario", + ja: "ユーザー名を入力", + ko: "사용자 이름 입력", + ru: "Введите имя пользователя", + zh: "输入用户名", + "zh-tw": "輸入使用者名稱", + }, + "Ui.SetupWizard.CouchDB.Title": { + def: "CouchDB Configuration", + de: "CouchDB Konfiguration", + es: "Configuración de CouchDB", + ja: "CouchDB設定", + ko: "CouchDB 구성", + ru: "Настройка CouchDB", + zh: "CouchDB 配置", + "zh-tw": "CouchDB 配置", + }, + "Ui.SetupWizard.CouchDB.Url": { + def: "Server URL", + de: "Server-URL", + es: "URL del servidor", + ja: "サーバー URL", + ko: "서버 URL", + ru: "URL сервера", + zh: "服务器 URL", + "zh-tw": "伺服器 URL", + }, + "Ui.SetupWizard.CouchDB.UseInternalApi": { + def: "Use Internal API", + de: "Interne API verwenden", + es: "Usar API interna", + ja: "内部 API を使用", + ko: "내부 API 사용", + ru: "Использовать внутренний API", + zh: "使用内部 API", + "zh-tw": "使用内部 API", + }, + "Ui.SetupWizard.CouchDB.UseJwtAuthentication": { + def: "Use JWT Authentication", + de: "JWT-Authentifizierung verwenden", + es: "Usar autenticación JWT", + ja: "JWT 認証を使用", + ko: "JWT 인증 사용", + ru: "Использовать JWT-аутентификацию", + zh: "使用 JWT 认证", + "zh-tw": "使用 JWT 认证", + }, + "Ui.SetupWizard.CouchDB.Username": { + def: "Username", + de: "Benutzername", + es: "Nombre de usuario", + ja: "ユーザー名", + ko: "사용자 이름", + ru: "Имя пользователя", + zh: "用户名", + "zh-tw": "使用者名稱", + }, + "Ui.SetupWizard.CouchDBCheck.DetectAndFix": { + def: "Detect and Fix CouchDB Issues", + de: "CouchDB Probleme erkennen und beheben", + es: "Detectar y solucionar problemas de CouchDB", + ja: "CouchDBの問題を検出して修正", + ko: "CouchDB 문제 감지 및 수정", + ru: "Обнаружить и исправить проблемы CouchDB", + zh: "检测并修复 CouchDB 问题", + "zh-tw": "檢測並修復 CouchDB 問題", + }, + "Ui.SetupWizard.CouchDBCheck.Fix": { + def: "Fix", + de: "Fehler", + es: "Corregir", + ja: "修正", + ko: "수정", + ru: "Исправить", + zh: "修复", + "zh-tw": "修復", + }, + "Ui.SetupWizard.E2EE.AlgorithmGuidance": { + def: "In most cases, you should stick with the default algorithm (${algorithm}). This setting is only required if you have an existing Vault encrypted in a different format.", + de: "In den meisten Fällen sollten Sie beim Standardalgorithmus (${algorithm}) bleiben. Diese Einstellung ist nur erforderlich, wenn ein vorhandener Vault in einem anderen Format verschlüsselt ist.", + es: "En la mayoría de los casos deberías mantener el algoritmo predeterminado (${algorithm}). Este ajuste solo es necesario si tienes un Vault existente cifrado con otro formato.", + ja: "ほとんどの場合、既定のアルゴリズム(${algorithm})を使用してください。この設定は、既存の Vault が別形式で暗号化されている場合にのみ必要です。", + ko: "대부분의 경우 기본 알고리즘(${algorithm})을 사용하는 것이 좋습니다. 기존 Vault가 다른 형식으로 암호화되어 있는 경우에만 이 설정이 필요합니다.", + ru: "В большинстве случаев следует оставить алгоритм по умолчанию (${algorithm}). Этот параметр нужен только если существующий Vault зашифрован в другом формате.", + zh: "大多数情况下应使用默认算法(${algorithm})。只有在现有 Vault 使用不同格式加密时才需要更改此设置。", + "zh-tw": "大多數情況下應使用預設算法(${algorithm})。只有在現有 Vault 使用不同格式加密時才需要變更此設定。", + }, + "Ui.SetupWizard.E2EE.AlgorithmWarning": { + def: "Changing the encryption algorithm will prevent access to any data previously encrypted with a different algorithm. Ensure that all your devices are configured to use the same algorithm to maintain access to your data.", + de: "Wenn Sie den Verschlüsselungsalgorithmus ändern, können zuvor mit einem anderen Algorithmus verschlüsselte Daten nicht mehr gelesen werden. Stellen Sie sicher, dass alle Geräte denselben Algorithmus verwenden, damit der Zugriff auf Ihre Daten erhalten bleibt.", + es: "Cambiar el algoritmo de cifrado impedirá acceder a datos cifrados previamente con otro algoritmo. Asegúrate de que todos tus dispositivos usen el mismo algoritmo para mantener el acceso a tus datos.", + ja: "暗号化アルゴリズムを変更すると、以前に別のアルゴリズムで暗号化されたデータにアクセスできなくなります。すべてのデバイスで同じアルゴリズムを使用するよう設定してください。", + ko: "암호화 알고리즘을 변경하면 이전에 다른 알고리즘으로 암호화된 데이터에 접근할 수 없습니다. 데이터 접근을 유지하려면 모든 장치가 같은 알고리즘을 사용하도록 설정하세요.", + ru: "Изменение алгоритма шифрования сделает недоступными данные, ранее зашифрованные другим алгоритмом. Убедитесь, что все устройства настроены на один и тот же алгоритм, чтобы сохранить доступ к данным.", + zh: "更改加密算法会导致无法访问以前用其他算法加密的数据。请确保所有设备都配置为使用相同算法,以保持数据可访问。", + "zh-tw": + "變更加密算法會導致無法存取以前用其他算法加密的資料。請確保所有裝置都設定為使用相同算法,以保持資料可存取。", + }, + "Ui.SetupWizard.E2EE.EncryptionAlgorithm": { + def: "Encryption Algorithm", + de: "Verschlüsselungsalgorithmus", + es: "Algoritmo de cifrado", + ja: "暗号化アルゴリズム", + ko: "암호화 알고리즘", + ru: "Алгоритм шифрования", + zh: "加密算法", + "zh-tw": "加密算法", + }, + "Ui.SetupWizard.Fetch.BackupDone": { + def: "I have created a backup of my Vault.", + de: "Ich habe ein Backup von meinem Vault erstellt.", + es: "He creado una copia de seguridad de mi Bóveda.", + ja: "Vaultのバックアップを作成しました。", + ko: "Vault 백업을 만들었습니다.", + ru: "Я создал(а) резервную копию своего Vault.", + zh: "我已创建 Vault 备份。", + "zh-tw": "我已建立 Vault 備份。", + }, + "Ui.SetupWizard.Fetch.BackupQuestion": { + def: "Have you created a backup before proceeding?", + de: "Haben Sie ein Backup erstellt, bevor Sie fortfahren?", + es: "¿Ha creado una copia de seguridad antes de continuar?", + ja: "続行する前にバックアップを作成しましたか?", + ko: "계속하기 전에 백업을 만들었습니까?", + ru: "Создали ли вы резервную копию перед продолжением?", + zh: "继续之前是否已创建备份?", + "zh-tw": "繼續之前是否已建立備份?", + }, + "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.", + de: "Wir empfehlen Ihnen, Ihren Vault-Ordner an einen sicheren Ort zu kopieren. Dies wird einen Schutz bieten, wenn eine Vielzahl von Konflikten entstehen, oder wenn Sie versehentlich mit einem falschen Ziel synchronisieren.", + es: "Le recomendamos que copie su carpeta bóveda en una ubicación segura. Esto proporcionará una protección en caso de que surja una gran cantidad de conflictos o si sincroniza accidentalmente con un destino incorrecto.", + ja: "Vaultフォルダを安全な場所にコピーしておくことをおすすめします。大量の競合が発生した場合や、誤った同期先と同期してしまった場合の保険になります。", + ko: "Vault 폴더를 안전한 위치에 복사해 두는 것을 권장합니다. 많은 충돌이 발생하거나 잘못된 대상으로 동기화했을 때 보호 장치가 됩니다.", + ru: "Рекомендуем скопировать папку Vault в безопасное место. Это послужит защитой на случай большого количества конфликтов или если вы по ошибке синхронизируетесь с неверной целью.", + zh: "建议您将 Vault 文件夹复制到安全位置。这将作为保障,以防出现大量冲突或意外同步到错误的目标。", + "zh-tw": "建議您將 Vault 資料夾複製到安全位置。這將作為保障,以防出現大量衝突或意外同步到錯誤的目標。", + }, + "Ui.SetupWizard.Fetch.BackupSkipped": { + def: "I understand the risks and will proceed without a backup.", + de: "Ich verstehe die Risiken und werde ohne Verstärkung fortfahren.", + es: "Entiendo los riesgos y procederé sin respaldo.", + ja: "リスクを理解したうえで、バックアップなしで続行します。", + ko: "위험을 이해했으며 백업 없이 계속합니다.", + ru: "Я понимаю риски и продолжу без резервной копии.", + zh: "我了解风险,将在没有备份的情况下继续。", + "zh-tw": "我瞭解風險,將在沒有備份的情況下繼續。", + }, + "Ui.SetupWizard.Fetch.BackupUnable": { + def: "I am unable to create a backup of my Vault.", + de: "Ich kann kein Backup von meinem Tresor erstellen.", + es: "No puedo crear una copia de seguridad de mi Bóveda.", + ja: "Vaultのバックアップを作成できません。", + ko: "Vault 백업을 만들 수 없습니다.", + ru: "Я не могу создать резервную копию своего Vault.", + zh: "我无法创建 Vault 备份。", + "zh-tw": "我無法建立 Vault 備份。", + }, + "Ui.SetupWizard.Fetch.BackupUnableNote": { + def: "If you understand the risks and still wish to proceed, select so.", + de: "Wenn Sie die Risiken verstehen und trotzdem fortfahren wollen, wählen Sie das aus.", + es: "Si comprende los riesgos y aún desea continuar, selecciónelo.", + ja: "リスクを理解したうえで、それでも続行したい場合は選択してください。", + ko: "위험을 이해했으며 그래도 계속하려면 이 항목을 선택하세요.", + ru: "Если вы понимаете риски и всё равно хотите продолжить, выберите этот вариант.", + zh: "如果您了解风险仍希望继续,请选择此项。", + "zh-tw": "如果您瞭解風險仍希望繼續,請選擇此項。", + }, + "Ui.SetupWizard.Fetch.BackupUnableWarning": { + def: "It is strongly advised to create a backup before proceeding. Continuing without a backup may lead to data loss.", + de: "Es wird dringend empfohlen, ein Backup zu erstellen, bevor Sie fortfahren. Die Fortsetzung ohne Backup kann zu Datenverlust führen.", + es: "Se recomienda encarecidamente crear una copia de seguridad antes de continuar. Continuar sin una copia de seguridad puede provocar la pérdida de datos.", + ja: "続行前にバックアップを作成することを強くおすすめします。バックアップなしで続行すると、データが失われる可能性があります。", + ko: "계속하기 전에 백업을 만드는 것을 강력히 권장합니다. 백업 없이 계속하면 데이터가 손실될 수 있습니다.", + ru: "Настоятельно рекомендуется создать резервную копию перед продолжением. Продолжение без резервной копии может привести к потере данных.", + zh: "强烈建议在继续之前创建备份。不备份继续可能导致数据丢失。", + "zh-tw": "強烈建議在繼續之前建立備份。不備份繼續可能導致資料丟失。", + }, + "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.", + de: "Darüber hinaus, wenn Konflikte bereits in den Serverdaten vorhanden sind, werden sie mit diesem Gerät synchronisiert, wie sie sind, und Sie müssen sie lokal beheben.", + es: "Además, si ya hay conflictos en los datos del servidor, se sincronizarán con este dispositivo tal como están y deberá resolverlos localmente.", + ja: "さらに、サーバー上のデータにすでに競合がある場合は、そのままこのデバイスに同期され、ローカルで解決する必要があります。", + ko: "또한 서버 데이터에 이미 충돌이 있으면 그대로 이 기기에 동기화되며, 로컬에서 직접 해결해야 합니다.", + ru: "Кроме того, если в данных сервера уже есть конфликты, они будут синхронизированы на это устройство как есть, и вам придётся разрешать их локально.", + zh: "此外,如果服务器数据中已存在冲突,它们将原样同步到此设备,您需要在本地解决它们。", + "zh-tw": "此外,如果伺服器資料中已存在衝突,它們將原樣同步到此裝置,您需要在本地解決它們。", + }, + "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.", + de: "Dies wird die lokale Datenbank auf diesem Gerät mit den neuesten Daten des Servers wieder aufbauen. Diese Aktion soll Synchronisierungsunkonsistenzen lösen und die korrekte Funktionalität wiederherzustellen.", + es: "Esto reconstruirá la base de datos local en este dispositivo utilizando los datos más recientes del servidor. Esta acción está diseñada para resolver inconsistencias de sincronización y restaurar la funcionalidad correcta.", + ja: "この操作では、サーバー上の最新データを使って、このデバイスのローカルデータベースを再構築します。同期の不整合を解消し、正常な動作を回復するための処理です。", + ko: "서버의 최신 데이터를 사용하여 이 기기의 로컬 데이터베이스를 다시 만듭니다. 이 작업은 동기화 불일치를 해결하고 올바른 동작을 복구하기 위한 것입니다.", + ru: "Это действие перестроит локальную базу данных на этом устройстве с использованием самых свежих данных с сервера. Оно предназначено для устранения несогласованности синхронизации и восстановления корректной работы.", + zh: "这将使用服务器上的最新数据重建此设备上的本地数据库。此操作旨在解决同步不一致并恢复正常功能。", + "zh-tw": "這將使用伺服器上的最新資料重建此裝置上的本地資料庫。此操作旨在解決同步不一致並恢復正常功能。", + }, + "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.", + de: "Wenn Sie unsynchronisierte Änderungen in Ihrem Vault auf diesem Gerät haben, divergieren sie wahrscheinlich von den Versionen des Servers nach dem Reset. Dies kann zu einer Vielzahl von Dateikonflikten führen.", + es: "Si tiene cambios no sincronizados en su Bóveda en este dispositivo, es probable que difieran de las versiones del servidor después del reinicio. Esto puede provocar una gran cantidad de conflictos de archivos.", + ja: "このデバイスのVaultに未同期の変更がある場合、リセット後にサーバー側の内容と分岐する可能性があります。その結果、多数のファイル競合が発生することがあります。", + ko: "이 기기의 Vault에 아직 동기화되지 않은 변경 사항이 있으면 초기화 후 서버 버전과 갈라질 수 있습니다. 그 결과 많은 파일 충돌이 발생할 수 있습니다.", + ru: "Если в Vault на этом устройстве есть несинхронизированные изменения, после сброса они, вероятно, разойдутся с версиями на сервере. Это может привести к большому числу конфликтов файлов.", + zh: "如果此设备上的 Vault 中有未同步的更改,重置后它们可能会与服务器版本产生分歧。这可能导致大量文件冲突。", + "zh-tw": + "如果此裝置上的 Vault 中有未同步的更改,重置後它們可能會與伺服器版本產生分歧。這可能導致大量檔案衝突。", + }, + "Ui.SetupWizard.Fetch.ImportantTitle": { + def: "Important Notice", + de: "Wichtige Hinweise", + es: "Aviso importante", + ja: "重要なお知らせ", + ko: "중요 알림", + ru: "Важное уведомление", + zh: "重要提示", + "zh-tw": "重要提示", + }, + "Ui.SetupWizard.Fetch.PreventFetchConfig": { + def: "Prevent fetching configuration from server", + de: "Verhindern Sie die Abrufkonfiguration vom Server", + es: "Evitar recuperar la configuración del servidor", + ja: "サーバーから設定を取得しない", + ko: "서버에서 구성 가져오기 방지", + ru: "Не получать конфигурацию с сервера", + zh: "防止从服务器获取配置", + "zh-tw": "防止從伺服器獲取配置", + }, + "Ui.SetupWizard.Fetch.Proceed": { + def: "Reset and Resume Synchronisation", + de: "Zurücksetzen und Wiederaufnahme Synchronisation", + es: "Restablecer y reanudar la sincronización", + ja: "リセットして同期を再開", + ko: "초기화 후 동기화 재개", + ru: "Сбросить и возобновить синхронизацию", + zh: "重置并恢复同步", + "zh-tw": "重置並恢復同步", + }, + "Ui.SetupWizard.Fetch.Title": { + def: "Reset Synchronisation on This Device", + de: "Synchronisation auf diesem Gerät zurücksetzen", + es: "Restablecer sincronización en este dispositivo", + ja: "このデバイスの同期をリセット", + ko: "이 기기의 동기화 초기화", + ru: "Сбросить синхронизацию на этом устройстве", + zh: "重置此设备上的同步", + "zh-tw": "重置此裝置上的同步", + }, + "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.", + de: "In diesem Szenario wird Self-hosted LiveSync für jede Datei Metadaten wiedergeben und bewusst Konflikte generieren. Ist der Dateiinhalt identisch, werden diese Konflikte automatisch behoben.", + es: "En este escenario, LiveSync autohospedado recreará metadatos para cada archivo y generará conflictos deliberadamente. Cuando el contenido del archivo sea idéntico, estos conflictos se resolverán automáticamente.", + ja: "この場合、Self-hosted LiveSync はすべてのファイルのメタデータを再作成し、意図的に競合を発生させます。ファイル内容が同一であれば、それらの競合は自動的に解決されます。", + ko: "이 경우 Self-hosted LiveSync는 모든 파일의 메타데이터를 다시 만들고 의도적으로 충돌을 생성합니다. 파일 내용이 같으면 이러한 충돌은 자동으로 해결됩니다.", + ru: "В этом сценарии Self-hosted LiveSync заново создаст метаданные для каждого файла и намеренно создаст конфликты. Если содержимое файлов одинаково, эти конфликты будут разрешены автоматически.", + zh: "在此场景下,Self-hosted LiveSync 将为每个文件重新创建元数据,并会刻意生成冲突。如果文件内容相同,这些冲突将自动解决。", + "zh-tw": + "在此場景下,Self-hosted LiveSync 將為每個檔案重新建立後設資料,並會刻意生成衝突。如果檔案內容相同,這些衝突將自動解決。", + }, + "Ui.SetupWizard.Fetch.VaultIdentical": { + def: "The files in this Vault are almost identical to the server's.", + de: "Die Dateien in diesem Vault sind fast identisch mit dem Server.", + es: "Los archivos de esta Bóveda son casi idénticos a los del servidor.", + ja: "このVault内のファイルは、サーバー上のものとほぼ同じです。", + ko: "이 Vault의 파일은 서버의 파일과 거의 같습니다.", + ru: "Файлы в этом Vault почти идентичны файлам на сервере.", + zh: "此 Vault 中的文件与服务器上的文件几乎相同。", + "zh-tw": "此 Vault 中的檔案與伺服器上的檔案幾乎相同。", + }, + "Ui.SetupWizard.Fetch.VaultIdenticalDesc": { + def: "(e.g., immediately after restoring on another computer, or having recovered from a backup)", + de: "(z.B. unmittelbar nach der Wiederherstellung auf einem anderen Computer oder aus einem Backup gewonnen)", + es: "(por ejemplo, inmediatamente después de restaurar en otra computadora o de haber recuperado una copia de seguridad)", + ja: "(例:別のPCで復元した直後、またはバックアップから復旧した直後)", + ko: "(예: 다른 컴퓨터에서 복원한 직후이거나 백업에서 복구한 경우)", + ru: "(например, сразу после восстановления на другом компьютере или после восстановления из резервной копии)", + zh: "(例如,在另一台电脑上恢复后立即、或从备份恢复后)", + "zh-tw": "(例如,在另一臺電腦上恢復後立即、或從備份恢復後)", + }, + "Ui.SetupWizard.Fetch.VaultIndependent": { + def: "This Vault is empty, or contains only new files that are not on the server.", + de: "Dieser Vault ist leer oder enthält nur neue Dateien, die nicht auf dem Server sind.", + es: "Esta Bóveda está vacía o contiene solo archivos nuevos que no están en el servidor.", + ja: "このVaultは空、またはサーバー上にない新規ファイルだけが入っています。", + ko: "이 Vault가 비어 있거나 서버에 없는 새 파일만 포함하고 있습니다.", + ru: "Этот Vault пуст или содержит только новые файлы, которых нет на сервере.", + zh: "此 Vault 为空,或仅包含服务器上没有的新文件。", + "zh-tw": "此 Vault 為空,或僅包含伺服器上沒有的新檔案。", + }, + "Ui.SetupWizard.Fetch.VaultIndependentDesc": { + def: "(e.g., setting up for the first time on a new smartphone, starting from a clean slate)", + de: "(z.B. erstmalig auf einem neuen Smartphone, ausgehend von einem sauberen Schiefer)", + es: "(por ejemplo, configurar por primera vez en un nuevo teléfono inteligente, comenzando desde cero)", + ja: "(例:新しいスマートフォンで初回設定する、まっさらな状態から始める)", + ko: "(예: 새 스마트폰에서 처음 설정하거나 깨끗한 상태에서 시작하는 경우)", + ru: "(например, при первой настройке на новом смартфоне, начиная с чистого листа)", + zh: "(例如,首次在新智能手机上设置、从全新状态开始)", + "zh-tw": "(例如,首次在新智慧手機上設定、從全新狀態開始)", + }, + "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.", + de: "Um die Schaffung neuer Konflikte zu minimieren, wählen Sie bitte die Option, die den aktuellen Zustand Ihres Tresors am besten beschreibt. Die Anwendung wird dann Ihre Dateien auf die am besten geeignete Weise basierend auf Ihrer Auswahl überprüfen.", + es: "Para minimizar la creación de nuevos conflictos, seleccione la opción que mejor describa el estado actual de su Bóveda. Luego, la aplicación verificará sus archivos de la manera más adecuada según su selección.", + ja: "新たな競合の発生を最小限に抑えるため、現在のVaultの状態に最も近い選択肢を選んでください。選択内容に応じて、アプリが最適な方法でファイルを確認します。", + ko: "새 충돌 생성을 최소화하려면 현재 Vault 상태를 가장 잘 설명하는 항목을 선택하세요. 선택한 내용에 따라 애플리케이션이 가장 적절한 방식으로 파일을 확인합니다.", + ru: "Чтобы свести к минимуму создание новых конфликтов, выберите вариант, который лучше всего описывает текущее состояние вашего Vault. Затем приложение проверит файлы наиболее подходящим способом на основе вашего выбора.", + zh: "为了尽量减少新冲突的创建,请选择最能描述当前 Vault 状态的选项。应用将根据您的选择以最合适的方式检查您的文件。", + "zh-tw": + "為了儘量減少新衝突的建立,請選擇最能描述當前 Vault 狀態的選項。應用將根據您的選擇以最合適的方式檢查您的檔案。", + }, + "Ui.SetupWizard.Fetch.VaultUnbalanced": { + def: "There may be differences between the files in this Vault and the server.", + de: "Es kann Unterschiede zwischen den Dateien in diesem Vault und dem Server geben.", + es: "Puede haber diferencias entre los archivos de este bóveda y el servidor.", + ja: "このVault内のファイルとサーバーとの間に差分がある可能性があります。", + ko: "이 Vault의 파일과 서버 사이에 차이가 있을 수 있습니다.", + ru: "Между файлами в этом Vault и на сервере могут быть различия.", + zh: "此 Vault 中的文件与服务器之间可能存在差异。", + "zh-tw": "此 Vault 中的檔案與伺服器之間可能存在差異。", + }, + "Ui.SetupWizard.Fetch.VaultUnbalancedDesc": { + def: "(e.g., after editing many files whilst offline)", + de: "(z.B. nach der Bearbeitung vieler Dateien während offline)", + es: "(por ejemplo, después de editar muchos archivos sin conexión)", + ja: "(例:オフライン中に多くのファイルを編集した後)", + ko: "(예: 오프라인 상태에서 많은 파일을 편집한 뒤)", + ru: "(например, после редактирования большого количества файлов в офлайн-режиме)", + zh: "(例如,在离线状态下编辑了大量文件后)", + "zh-tw": "(例如,在離線狀態下編輯了大量檔案後)", }, "Ui.SetupWizard.Intro.ExistingOption": { - def: "I am adding a device to an existing synchronisation setup", - zh: "将此设备加入已有同步配置", + def: "I already have a configured server", + de: "Ich habe bereits einen konfigurierten Server", + es: "Ya tengo un servidor configurado", + ja: "サーバーはすでに設定済みです", + ko: "이미 서버를 설정했습니다", + ru: "У меня уже есть настроенный сервер", + zh: "我已经配置了服务器", + "zh-tw": "我已經設定好伺服器", }, "Ui.SetupWizard.Intro.ExistingOptionDesc": { - def: "Select this if you are already using synchronisation on another computer or smartphone. Use this option to connect this device to that existing setup.", - zh: "如果你已经在另一台电脑或手机上使用同步,请选择此项。此选项用于将当前设备连接到既有同步配置。", + def: "Connect to an existing LiveSync server", + de: "Verbinden Sie mit einem bestehenden LiveSync Server", + es: "Conectar a un servidor LiveSync existente", + ja: "既存の LiveSync サーバーに接続する", + ko: "기존 LiveSync 서버에 연결하기", + ru: "Подключиться к существующему серверу LiveSync", + zh: "连接到现有的 LiveSync 服务器", + "zh-tw": "連線到現有的 LiveSync 伺服器", }, "Ui.SetupWizard.Intro.Guidance": { - def: "We will now guide you through a few questions to simplify the synchronisation setup.", - zh: "接下来我们会通过几个问题,帮助你更轻松地完成同步配置。", + def: "Welcome! Let's set up LiveSync. Are you new to LiveSync, or do you already have a remote server configured?", + de: "Willkommen! Legen wir LiveSync ein. Sind Sie neu bei LiveSync oder haben Sie bereits einen Remoteserver 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 新用户,还是已经配置了远程服务器?", + "zh-tw": "歡迎!讓我們設定 LiveSync。您是 LiveSync 新用戶,還是已經設定遠端伺服器?", }, "Ui.SetupWizard.Intro.NewOption": { - def: "I am setting this up for the first time", - zh: "首次设置同步", + 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 新用户", + "zh-tw": "我是 LiveSync 新用戶", }, "Ui.SetupWizard.Intro.NewOptionDesc": { - def: "Select this if you are configuring this device as the first synchronisation device.", - zh: "如果你正把这台设备作为第一台同步设备进行配置,请选择此项。", + 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", + "zh-tw": "首次設定 LiveSync", }, "Ui.SetupWizard.Intro.ProceedExisting": { - def: "Yes, I want to add this device to my existing synchronisation", - zh: "是的,我要将此设备加入现有同步", + def: "Connect to existing", + de: "Konnektivieren Sie bestehende", + es: "Conectar a existente", + ja: "既存サーバーに接続", + ko: "기존 서버에 연결", + ru: "Подключиться к существующему", + zh: "连接到现有服务器", + "zh-tw": "連線到現有伺服器", }, "Ui.SetupWizard.Intro.ProceedNew": { - def: "Yes, I want to set up a new synchronisation", - zh: "是的,我要开始新的同步配置", + def: "Set up new", + de: "Neues einrichten", + es: "Configurar nuevo", + ja: "新規セットアップ", + ko: "새로 설정", + ru: "Новая настройка", + zh: "新建设置", + "zh-tw": "新建設定", }, "Ui.SetupWizard.Intro.Question": { - def: "First, please select the option that best describes your current situation.", - zh: "首先,请选择最符合你当前情况的选项。", + def: "Which describes your situation?", + de: "Was beschreibt Ihre Situation?", + es: "¿Cuál describe su situación?", + ja: "当てはまるのはどれですか?", + ko: "어떤 상황에 해당하시나요?", + ru: "Какая ситуация вам подходит?", + zh: "您的情况是?", + "zh-tw": "您的情況是?", }, "Ui.SetupWizard.Intro.Title": { - def: "Welcome to Self-hosted LiveSync", - zh: "欢迎使用 Self-hosted LiveSync", + def: "Setup Wizard", + de: "Einrichtungsassistent", + es: "Asistente de configuración", + ja: "セットアップウィザード", + ko: "설정 마법사", + ru: "Мастер настройки", + zh: "设置向导", + "zh-tw": "設定精靈", + }, + "Ui.SetupWizard.Log.E2EEConfigurationCancelled": { + def: "E2EE configuration cancelled.", + de: "E2EE-Konfiguration abgebrochen.", + es: "Configuración E2EE cancelada.", + ja: "E2EE 設定がキャンセルされました。", + ko: "E2EE 구성이 취소되었습니다.", + ru: "Настройка E2EE отменена.", + zh: "已取消 E2EE 配置。", + "zh-tw": "已取消 E2EE 配置。", + }, + "Ui.SetupWizard.Log.ManualConfigurationCancelled": { + def: "Manual configuration cancelled.", + de: "Manuelle Konfiguration abgebrochen.", + es: "Configuración manual cancelada.", + ja: "手動設定がキャンセルされました。", + ko: "수동 구성이 취소되었습니다.", + ru: "Ручная настройка отменена.", + zh: "已取消手动配置。", + "zh-tw": "已取消手動配置。", + }, + "Ui.SetupWizard.Log.NoSettingsChanges": { + def: "No changes in settings detected. Skipping applying settings from wizard.", + de: "Keine ?nderungen an den Einstellungen erkannt. Einstellungen aus dem Assistenten werden nicht angewendet.", + es: "No se detectaron cambios en la configuración. Se omite aplicar la configuración del asistente.", + ja: "設定の変更は検出されませんでした。ウィザード設定の適用をスキップします。", + ko: "설정 변경 사항이 감지되지 않았습니다. 마법사 설정 적용을 건너뜁니다.", + ru: "Изменений настроек не обнаружено. Применение настроек мастера пропущено.", + zh: "未检测到设置更改。跳过应用向导中的设置。", + "zh-tw": "未偵測到設定更改。跳過應用向導中的設定。", + }, + "Ui.SetupWizard.Log.OnboardingCancelled": { + def: "Onboarding cancelled by user.", + de: "Einrichtung durch Benutzer abgebrochen.", + es: "Configuración inicial cancelada por el usuario.", + ja: "ユーザーがオンボーディングをキャンセルしました。", + ko: "사용자가 온보딩을 취소했습니다.", + ru: "Первоначальная настройка отменена пользователем.", + zh: "用户已取消引导流程。", + "zh-tw": "使用者已取消引導流程。", + }, + "Ui.SetupWizard.Log.QrCodeDialogClosed": { + def: "QR Code dialog closed.", + de: "QR-Code-Dialog geschlossen.", + es: "Diálogo de código QR cerrado.", + ja: "QR コードダイアログが閉じられました。", + ko: "QR 코드 대화 상자가 닫혔습니다.", + ru: "Диалог QR-кода закрыт.", + zh: "二维码对话框已关闭。", + "zh-tw": "QR 碼對話方塊已關閉。", + }, + "Ui.SetupWizard.Log.QrCodeResult": { + def: "QR Code result: ${result}", + de: "QR-Code-Ergebnis: ${result}", + es: "Resultado del código QR: ${result}", + ja: "QR コードの結果: ${result}", + ko: "QR 코드 결과: ${result}", + ru: "Результат QR-кода: ${result}", + zh: "二维码结果:${result}", + "zh-tw": "QR 碼結果:${result}", + }, + "Ui.SetupWizard.Log.SettingApplied": { + def: "Setting Applied", + de: "Einstellung angewendet", + es: "Configuración aplicada", + ja: "設定を適用しました", + ko: "설정이 적용되었습니다", + ru: "Настройка применена", + zh: "设置已应用", + "zh-tw": "設定已應用", + }, + "Ui.SetupWizard.Log.SettingsApplied": { + def: "Settings from wizard applied.", + de: "Einstellungen aus dem Assistenten angewendet.", + es: "Configuración del asistente aplicada.", + ja: "ウィザード設定を適用しました。", + ko: "마법사 설정이 적용되었습니다.", + ru: "Настройки мастера применены.", + zh: "向导中的设置已应用。", + "zh-tw": "向導中的設定已應用。", + }, + "Ui.SetupWizard.Log.SetupUriDialogCancelled": { + def: "Setup URI dialog cancelled.", + de: "Setup-URI-Dialog abgebrochen.", + es: "Diálogo de Setup URI cancelado.", + ja: "Setup URI ダイアログがキャンセルされました。", + ko: "Setup URI 대화 상자가 취소되었습니다.", + ru: "Диалог Setup URI отменен.", + zh: "已取消设置 URI 对话框。", + "zh-tw": "已取消設定 URI 對話方塊。", + }, + "Ui.SetupWizard.Log.SetupUriDialogClosed": { + def: "Setup URI dialog closed.", + de: "Setup-URI-Dialog geschlossen.", + es: "Diálogo de Setup URI cerrado.", + ja: "Setup URI ダイアログが閉じられました。", + ko: "Setup URI 대화 상자가 닫혔습니다.", + ru: "Диалог Setup URI закрыт.", + zh: "设置 URI 对话框已关闭。", + "zh-tw": "設定 URI 對話方塊已關閉。", + }, + "Ui.SetupWizard.Log.UserCancelledApplyingSettings": { + def: "User cancelled applying settings from wizard.", + de: "Anwenden der Einstellungen aus dem Assistenten durch Benutzer abgebrochen.", + es: "El usuario canceló la aplicación de la configuración del asistente.", + ja: "ユーザーがウィザード設定の適用をキャンセルしました。", + ko: "사용자가 마법사 설정 적용을 취소했습니다.", + ru: "Пользователь отменил применение настроек мастера.", + zh: "用户已取消应用向导中的设置。", + "zh-tw": "使用者已取消應用向導中的設定。", }, "Ui.SetupWizard.OutroAskUserMode.CompatibleOption": { - def: "The remote is already set up, and the configuration is compatible (or became compatible through this operation).", - zh: "远程端已配置完成,且当前配置兼容(或已通过本次操作变为兼容)。", + def: "Use compatible mode", + de: "Verwenden Sie den kompatiblen Modus", + es: "Usar modo compatible", + ja: "互換モードを使用", + ko: "호환 모드 사용", + ru: "Использовать совместимый режим", + zh: "使用兼容模式", + "zh-tw": "使用相容模式", }, "Ui.SetupWizard.OutroAskUserMode.CompatibleOptionDesc": { - def: "Unless you are certain, selecting this option is risky. It assumes the server configuration is compatible with this device. If that is not the case, data loss may occur. Please make sure you understand the consequences.", - zh: "除非你非常确定,否则选择此项存在风险。它假定服务器配置与当前设备兼容。如果事实并非如此,可能会导致数据丢失。请确认你了解后果。", + 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 die Fernbedienung mit einer älteren Version von LiveSync eingerichtet wurde. Einige Funktionen können begrenzt 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 设置的,请使用此选项。某些功能可能受限。", + "zh-tw": "如果遠端是使用舊版 LiveSync 設定的,請使用此選項。某些功能可能受限。", }, "Ui.SetupWizard.OutroAskUserMode.ExistingOption": { - def: "My remote server is already set up. I want to join this device.", - zh: "远程服务器已经配置完成,我想让此设备加入同步。", + def: "This device has existing data", + de: "Dieses Gerät verfügt über vorhandene Daten", + es: "Este dispositivo tiene datos existentes", + ja: "このデバイスには既存データがあります", + ko: "이 장치에 기존 데이터가 있습니다", + ru: "На этом устройстве есть существующие данные", + zh: "此设备已有数据", + "zh-tw": "此裝置已有資料", }, "Ui.SetupWizard.OutroAskUserMode.ExistingOptionDesc": { - def: "Selecting this option will make this device join the existing server. You need to fetch the existing synchronisation data from the server to this device.", - zh: "选择此项后,此设备会加入已有服务器。你需要将服务器上的现有同步数据获取到此设备。", + def: "Merge local files with the remote. Use this if you already have notes in this vault.", + de: "Lokale Dateien mit der Fernbedienung verschmelzen. 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: "将本地文件与远程合并。如果此保险库中已有笔记,请使用此选项。", + "zh-tw": "將本機檔案與遠端合併。如果此保險庫中已有筆記,請使用此選項。", }, "Ui.SetupWizard.OutroAskUserMode.Guidance": { - def: "The connection to the server has been configured successfully. As the next step, the local database, in other words the synchronisation information, must be rebuilt.", - zh: "服务器连接已成功配置。下一步需要重建本地数据库,也就是同步状态信息。", + 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 Sync-Verhalten.", + 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 中的使用方式。这会影响初始同步行为。", + "zh-tw": "選擇此裝置在 LiveSync 中的使用方式。這會影響初始同步行為。", }, "Ui.SetupWizard.OutroAskUserMode.NewOption": { - def: "I am setting up a new server for the first time / I want to reset my existing server.", - zh: "我是第一次配置新服务器 / 我想重置现有服务器。", + def: "Set up as a new device", + de: "Einrichten als neues Gerät", + es: "Configurar como dispositivo nuevo", + ja: "新しいデバイスとしてセットアップ", + ko: "새 장치로 설정", + ru: "Настроить как новое устройство", + zh: "设置为新设备", + "zh-tw": "設定為新裝置", }, "Ui.SetupWizard.OutroAskUserMode.NewOptionDesc": { - def: "Selecting this option will initialise the server using the current data on this device. Any existing data on the server will be completely overwritten.", - zh: "选择此项后,服务器会使用当前设备上的数据进行初始化。服务器上的现有数据将被完全覆盖。", + def: "Start fresh with a new vault. Remote files will be fetched after setup.", + de: "Beginnen Sie frisch mit einem neuen Tresor. Remote-Dateien werden nach dem Setup abgeholt.", + es: "Comenzar con una bóveda nueva. Los archivos remotos se obtendrán después de la configuración.", + ja: "新しいボールトで開始します。セットアップ後にリモートファイルが取得されます。", + ko: "새 볼트로 시작합니다. 설정 후 원격 파일을 가져옵니다.", + ru: "Начать с нового хранилища. Удалённые файлы будут получены после настройки.", + zh: "从新的保险库开始。设置后将获取远程文件。", + "zh-tw": "從新的保險庫開始。設定後將取得遠端檔案。", }, "Ui.SetupWizard.OutroAskUserMode.ProceedApplySettings": { - def: "Apply the settings", - zh: "应用这些设置", + def: "Apply settings", + de: "Anwenden von Einstellungen", + es: "Aplicar ajustes", + ja: "設定を適用", + ko: "설정 적용", + ru: "Применить настройки", + zh: "应用设置", + "zh-tw": "套用設定", }, "Ui.SetupWizard.OutroAskUserMode.ProceedNext": { - def: "Proceed to the next step.", - zh: "继续下一步", + def: "Continue", + de: "Fortsetzung", + es: "Continuar", + ja: "続行", + ko: "계속", + ru: "Продолжить", + zh: "继续", + "zh-tw": "繼續", }, "Ui.SetupWizard.OutroAskUserMode.Question": { - def: "Please select your situation.", - zh: "请选择你的当前情况。", + def: "Select the mode for this device:", + de: "Wählen Sie den Modus für dieses Gerät aus:", + es: "Seleccione el modo para este dispositivo:", + ja: "このデバイスのモードを選択:", + ko: "이 장치의 모드를 선택하세요:", + ru: "Выберите режим для этого устройства:", + zh: "选择此设备的模式:", + "zh-tw": "選擇此裝置的模式:", }, "Ui.SetupWizard.OutroAskUserMode.Title": { - def: "Mostly Complete: Decision Required", - zh: "即将完成:还需要做出选择", + def: "How will you use this device?", + de: "Wie werden Sie dieses Gerät benutzen?", + es: "¿Cómo usará este dispositivo?", + ja: "このデバイスをどのように使用しますか?", + ko: "이 장치를 어떻게 사용하시겠습니까?", + ru: "Как вы будете использовать это устройство?", + zh: "您将如何使用此设备?", + "zh-tw": "您將如何使用此裝置?", + }, + "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: "Das Setup ist komplett. Die Remote-Daten werden nach dem Neustart abgeholt. Klicken Sie auf die Schaltfläche unten, um die Synchronisation neu zu starten.", + 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: "设置已完成。重启后将获取远程数据。点击下方按钮重启并开始同步。", + "zh-tw": "設定已完成。重新啟動後將取得遠端資料。點擊下方按鈕重新啟動並開始同步。", + }, + "Ui.SetupWizard.OutroExisting.Proceed": { + def: "Restart and Fetch Data", + de: "Restart- und Fetch-Daten", + es: "Reiniciar y obtener datos", + ja: "再起動してデータを取得", + ko: "재시작하고 데이터 가져오기", + ru: "Перезапустить и получить данные", + zh: "重启并获取数据", + "zh-tw": "重新啟動並取得資料", + }, + "Ui.SetupWizard.OutroExisting.Question": { + def: "Please select the button below to restart and proceed to the data fetching confirmation.", + de: "Bitte wählen Sie die Schaltfläche unten, um neu zu starten und gehen Sie zur Daten-Fetching-Bestätigung.", + es: "Seleccione el botón de abajo para reiniciar y proceder a la confirmación de obtención de datos.", + ja: "下のボタンをクリックして再起動し、データ取得の確認に進んでください。", + ko: "아래 버튼을 클릭하여 재시작하고 데이터 가져오기 확인으로 진행하세요.", + ru: "Нажмите кнопку ниже, чтобы перезапустить и перейти к подтверждению получения данных.", + zh: "请点击下方按钮重启并进入数据获取确认。", + "zh-tw": "請點擊下方按鈕重新啟動並進入資料取得確認。", + }, + "Ui.SetupWizard.OutroExisting.Title": { + def: "Setup Complete: Preparing to Fetch Synchronisation Data", + de: "Setup Complete: Vorbereitung auf Fetch Synchronisationsdaten", + es: "Configuración completada: Preparando para obtener datos de sincronización", + ja: "セットアップ完了:同期データの取得準備中", + ko: "설정 완료: 동기화 데이터 가져오기 준비 중", + ru: "Настройка завершена: Подготовка к получению данных синхронизации", + zh: "设置完成:准备获取同步数据", + "zh-tw": "設定完成:準備取得同步資料", }, "Ui.SetupWizard.OutroNewUser.GuidancePrimary": { - def: "The connection to the server has been configured successfully. As the next step, the synchronisation data on the server will be built from the current data on this device.", - zh: "服务器连接已成功配置。下一步将根据当前设备上的数据,在服务器端建立同步数据。", + 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 angewendet, wenn Sie diesen Dialog schließen.", + 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 配置已设置完成。关闭此对话框后将应用设置。", + "zh-tw": "您的 LiveSync 設定已完成。關閉此對話方塊後將套用設定。", }, "Ui.SetupWizard.OutroNewUser.GuidanceWarning": { - def: "After restarting, the data on this device will be uploaded to the server as the master copy. Please note that any unintended data currently on the server will be completely overwritten.", - zh: "重启后,当前设备上的数据会作为主副本上传到服务器。请注意,服务器上现有的非预期数据将被完全覆盖。", + 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 wird bestehende Dateien überschreiben, wenn der Remote-Standard Daten hat. Stellen Sie sicher, dass Sie einen leeren Tresor verwenden oder Backups haben.", + 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: "如果远程保险库中有数据,这将覆盖现有文件。请确保您使用的是空保险库或已做好备份。", + "zh-tw": "如果遠端保險庫中有資料,這將覆蓋現有檔案。請確保您使用的是空保險庫或已做好備份。", }, "Ui.SetupWizard.OutroNewUser.Important": { - def: "IMPORTANT", - zh: "重要", + def: "Important:", + de: "Wichtig:", + es: "Importante:", + ja: "重要:", + ko: "중요:", + ru: "Важно:", + zh: "重要提示:", + "zh-tw": "重要提示:", }, "Ui.SetupWizard.OutroNewUser.Proceed": { - def: "Restart and Initialise Server", - zh: "重启并初始化服务器", + def: "Apply and restart", + de: "Apply und Neustart", + es: "Aplicar y reiniciar", + ja: "適用して再起動", + ko: "적용하고 재시작", + ru: "Применить и перезапустить", + zh: "应用并重启", + "zh-tw": "套用並重新啟動", }, "Ui.SetupWizard.OutroNewUser.Question": { - def: "Please select the button below to restart and proceed to the final confirmation.", - zh: "请选择下方按钮,重启并进入最终确认步骤。", + def: "Ready to apply the configuration?", + de: "Bereit, die Konfiguration anzuwenden?", + es: "¿Listo para aplicar la configuración?", + ja: "設定を適用する準備はできましたか?", + ko: "구성을 적용할 준비가 되셨나요?", + ru: "Готовы применить конфигурацию?", + zh: "准备好应用配置了吗?", + "zh-tw": "準備好套用設定了嗎?", }, "Ui.SetupWizard.OutroNewUser.Title": { - def: "Setup Complete: Preparing to Initialise Server", - zh: "设置完成:准备初始化服务器", + def: "Setup Complete", + de: "Setup Komplett", + es: "Configuración completada", + ja: "セットアップ完了", + ko: "설정 완료", + ru: "Настройка завершена", + zh: "设置完成", + "zh-tw": "設定完成", + }, + "Ui.SetupWizard.P2P.AutoBroadcast": { + def: "Auto Broadcast Changes", + de: "Änderungen automatisch übertragen", + es: "Difundir cambios automáticamente", + ja: "変更を自動ブロードキャスト", + ko: "변경 사항 자동 브로드캐스트", + ru: "Автоматически рассылать изменения", + zh: "自动广播更改", + "zh-tw": "自动广播更改", + }, + "Ui.SetupWizard.P2P.AutoBroadcastDesc": { + def: "If Auto Broadcast Changes is enabled, changes will be automatically broadcasted to connected peers without requiring manual intervention. This requests peers to fetch this device's changes.", + de: "Wenn automatische Übertragung aktiviert ist, werden Änderungen ohne manuelles Eingreifen an verbundene Peers übertragen. Dadurch werden Peers aufgefordert, die Änderungen dieses Geräts abzurufen.", + es: "Si se activa la difusión automática, los cambios se enviarán automáticamente a los pares conectados sin intervención manual. Esto pide a los pares que obtengan los cambios de este dispositivo.", + ja: "変更の自動ブロードキャストを有効にすると、接続済みピアへ変更が自動的に通知されます。これによりピアはこのデバイスの変更を取得します。", + ko: "변경 사항 자동 브로드캐스트를 활성화하면 수동 작업 없이 연결된 피어에 변경 사항이 자동으로 브로드캐스트됩니다. 피어가 이 장치의 변경 사항을 가져오도록 요청합니다.", + ru: "Если автоматическая рассылка включена, изменения будут автоматически отправляться подключённым пирам без ручного вмешательства. Это попросит пиры получить изменения с этого устройства.", + zh: "启用自动广播更改后,更改会自动广播给已连接的对等设备,无需手动操作。这会请求对等设备获取此设备的更改。", + "zh-tw": + "啟用自動廣播變更後,變更會自動廣播給已連線的對等裝置,無需手動操作。這會請求對等裝置取得此裝置的變更。", + }, + "Ui.SetupWizard.P2P.AutoStart": { + def: "Auto Start P2P Connection", + de: "P2P-Verbindung automatisch starten", + es: "Iniciar conexión P2P automáticamente", + ja: "P2P 接続を自動開始", + ko: "P2P 연결 자동 시작", + ru: "Автоматически запускать P2P-подключение", + zh: "自动启动 P2P 连接", + "zh-tw": "自动启动 P2P 连接", + }, + "Ui.SetupWizard.P2P.AutoStartDesc": { + def: "If Auto Start P2P Connection is enabled, the P2P connection will be started automatically when the plug-in launches.", + de: "Wenn der automatische Start der P2P-Verbindung aktiviert ist, wird die P2P-Verbindung beim Start des Plugins automatisch gestartet.", + es: "Si se activa el inicio automático de P2P, la conexión P2P se iniciará automáticamente al arrancar el complemento.", + ja: "P2P 接続の自動開始を有効にすると、プラグイン起動時に P2P 接続が自動的に開始されます。", + ko: "P2P 연결 자동 시작을 활성화하면 플러그인이 시작될 때 P2P 연결이 자동으로 시작됩니다.", + ru: "Если автоматический запуск P2P включён, P2P-подключение будет запускаться автоматически при запуске плагина.", + zh: "启用自动启动 P2P 连接后,插件启动时会自动开始 P2P 连接。", + "zh-tw": "啟用自動啟動 P2P 連線後,外掛啟動時會自動開始 P2P 連線。", + }, + "Ui.SetupWizard.P2P.DevicePeerId": { + def: "Device Peer ID", + de: "Geräte-Peer-ID", + es: "ID de par del dispositivo", + ja: "デバイスピア ID", + ko: "장치 피어 ID", + ru: "ID пира устройства", + zh: "设备对等 ID", + "zh-tw": "裝置對等 ID", + }, + "Ui.SetupWizard.P2P.Enabled": { + def: "Enabled", + de: "Aktiviert", + es: "Activado", + ja: "有効", + ko: "사용", + ru: "Включено", + zh: "已启用", + "zh-tw": "已啟用", + }, + "Ui.SetupWizard.P2P.ErrorConnectPeers": { + def: "Failed to connect to other peers: ${error}", + de: "Verbindung zu anderen Peers fehlgeschlagen: ${error}", + es: "No se pudo conectar con otros pares: ${error}", + ja: "他のピアへ接続できませんでした: ${error}", + ko: "다른 피어에 연결하지 못했습니다: ${error}", + ru: "Не удалось подключиться к другим пирам: ${error}", + zh: "无法连接到其他对等设备:${error}", + "zh-tw": "无法连接到其他对等设备:${error}", + }, + "Ui.SetupWizard.P2P.GenerateRandomId": { + def: "Generate Random ID", + de: "Zufällige ID erzeugen", + es: "Generar ID aleatorio", + ja: "ランダム ID を生成", + ko: "무작위 ID 생성", + ru: "Сгенерировать случайный ID", + zh: "生成随机 ID", + "zh-tw": "產生隨機 ID", + }, + "Ui.SetupWizard.P2P.GroupId": { + def: "Group ID", + de: "Gruppen-ID", + es: "ID de grupo", + ja: "グループ ID", + ko: "그룹 ID", + ru: "ID группы", + zh: "组 ID", + "zh-tw": "组 ID", + }, + "Ui.SetupWizard.P2P.GroupPassphraseDesc": { + def: "The Group ID and passphrase are used to identify your group of devices. Make sure to use the same Group ID and passphrase on all devices you want to synchronise. The Group ID is not limited to the generated format; you can use any string as the Group ID.", + de: "Gruppen-ID und Passphrase werden verwendet, um Ihre Gerätegruppe zu identifizieren. Verwenden Sie auf allen zu synchronisierenden Geräten dieselbe Gruppen-ID und Passphrase. Die Gruppen-ID ist nicht auf das erzeugte Format beschränkt; Sie können eine beliebige Zeichenkette verwenden.", + es: "El ID de grupo y la frase de contraseña se usan para identificar tu grupo de dispositivos. Usa el mismo ID de grupo y la misma frase en todos los dispositivos que quieras sincronizar. El ID de grupo no está limitado al formato generado; puedes usar cualquier cadena.", + ja: "グループ ID とパスフレーズはデバイスグループを識別するために使われます。同期したいすべてのデバイスで同じグループ ID とパスフレーズを使用してください。グループ ID は生成形式に限定されず、任意の文字列を使用できます。", + ko: "그룹 ID와 암호 구문은 장치 그룹을 식별하는 데 사용됩니다. 동기화하려는 모든 장치에서 동일한 그룹 ID와 암호 구문을 사용하세요. 그룹 ID는 생성된 형식으로 제한되지 않으며 원하는 문자열을 사용할 수 있습니다.", + ru: "ID группы и парольная фраза используются для идентификации группы устройств. Используйте одинаковый ID группы и парольную фразу на всех устройствах, которые хотите синхронизировать. ID группы не ограничен сгенерированным форматом; можно использовать любую строку.", + zh: "组 ID 和密码短语用于识别你的设备组。请确保所有要同步的设备使用相同的组 ID 和密码短语。组 ID 不限于生成格式,你可以使用任意字符串作为组 ID。", + "zh-tw": + "組 ID 和密碼片語用於識別你的裝置群組。請確保所有要同步的裝置使用相同的組 ID 和密碼片語。組 ID 不限於產生格式,你可以使用任意字串作為組 ID。", + }, + "Ui.SetupWizard.P2P.NoPeersFound": { + def: "Your settings seem correct, but no other peers were found.", + de: "Ihre Einstellungen scheinen korrekt zu sein, aber es wurden keine anderen Peers gefunden.", + es: "La configuración parece correcta, pero no se encontraron otros pares.", + ja: "設定は正しそうですが、他のピアが見つかりませんでした。", + ko: "설정은 올바른 것 같지만 다른 피어를 찾지 못했습니다.", + ru: "Настройки выглядят корректно, но другие пиры не найдены.", + zh: "你的设置看起来正确,但没有找到其他对等设备。", + "zh-tw": "你的设置看起来正确,但没有找到其他对等设备。", + }, + "Ui.SetupWizard.P2P.PlaceholderRelayUrl": { + def: "Enter the Relay URL", + de: "Relay-URL eingeben", + es: "Introduce la URL del relé", + ja: "リレー URL を入力", + ko: "릴레이 URL 입력", + ru: "Введите URL ретранслятора", + zh: "输入中继 URL", + "zh-tw": "输入中继 URL", + }, + "Ui.SetupWizard.P2P.PlaceholderTurnCredential": { + def: "Enter TURN credential", + de: "TURN-Zugangsdaten eingeben", + es: "Introduce la credencial TURN", + ja: "TURN 認証情報を入力", + ko: "TURN 자격 증명 입력", + ru: "Введите учётные данные TURN", + zh: "输入 TURN 凭据", + "zh-tw": "輸入 TURN 憑據", + }, + "Ui.SetupWizard.P2P.PlaceholderTurnUsername": { + def: "Enter TURN username", + de: "TURN-Benutzernamen eingeben", + es: "Introduce el usuario TURN", + ja: "TURN ユーザー名を入力", + ko: "TURN 사용자 이름 입력", + ru: "Введите имя пользователя TURN", + zh: "输入 TURN 用户名", + "zh-tw": "輸入 TURN 使用者名稱", + }, + "Ui.SetupWizard.P2P.PublicTurnWarning": { + def: "Using public TURN servers may have privacy implications, as your data will be relayed through third-party servers. Even if your data is encrypted, your existence may be known to them. Please ensure you trust the TURN server provider and your network administrator before using their services. Consider setting up your own TURN server for your FQDN if possible.", + de: "Die Nutzung öffentlicher TURN-Server kann Datenschutzfolgen haben, da Ihre Daten über Server Dritter weitergeleitet werden. Auch wenn Ihre Daten verschlüsselt sind, kann Ihre Existenz für diese sichtbar sein. Stellen Sie vor der Nutzung sicher, dass Sie dem TURN-Server-Anbieter und Ihrem Netzwerkadministrator vertrauen. Wenn möglich, richten Sie einen eigenen TURN-Server für Ihren FQDN ein.", + es: "Usar servidores TURN públicos puede tener implicaciones de privacidad, ya que tus datos se retransmiten a través de servidores de terceros. Aunque los datos estén cifrados, tu existencia puede ser visible para ellos. Asegúrate de confiar en el proveedor TURN y en tu administrador de red antes de usarlos. Si es posible, considera configurar tu propio servidor TURN para tu FQDN.", + ja: "公開 TURN サーバーを使用すると、データが第三者サーバーを経由するためプライバシー上の影響があります。データが暗号化されていても、存在は知られる可能性があります。使用前に TURN サーバー提供者とネットワーク管理者を信頼できることを確認してください。可能であれば自分の FQDN 用に TURN サーバーを用意することを検討してください。", + ko: "공용 TURN 서버를 사용하면 데이터가 타사 서버를 통해 중계되므로 개인 정보 영향이 있을 수 있습니다. 데이터가 암호화되어 있어도 존재 자체는 알려질 수 있습니다. 사용하기 전에 TURN 서버 제공자와 네트워크 관리자를 신뢰할 수 있는지 확인하세요. 가능하다면 자신의 FQDN용 TURN 서버를 설정하는 것을 고려하세요.", + ru: "Использование публичных TURN-серверов может иметь последствия для приватности, так как данные передаются через сторонние серверы. Даже если данные зашифрованы, сам факт вашего присутствия может быть им известен. Перед использованием убедитесь, что доверяете провайдеру TURN-сервера и своему сетевому администратору. По возможности настройте собственный TURN-сервер для своего FQDN.", + zh: "使用公共 TURN 服务器可能带来隐私影响,因为你的数据会通过第三方服务器中继。即使数据已加密,对方仍可能知道你的存在。使用前请确保你信任 TURN 服务器提供者和网络管理员。如果可行,请考虑为自己的 FQDN 设置 TURN 服务器。", + "zh-tw": + "使用公共 TURN 伺服器可能帶來隱私影響,因為你的資料會透過第三方伺服器中繼。即使資料已加密,對方仍可能知道你的存在。使用前請確保你信任 TURN 伺服器提供者和網路管理員。如果可行,請考慮為自己的 FQDN 設定 TURN 伺服器。", + }, + "Ui.SetupWizard.P2P.RelayUrl": { + def: "Relay URL", + de: "Relay-URL", + es: "URL del relé", + ja: "リレー URL", + ko: "릴레이 URL", + ru: "URL ретранслятора", + zh: "中继 URL", + "zh-tw": "中继 URL", + }, + "Ui.SetupWizard.P2P.Title": { + def: "P2P Configuration", + de: "P2P Konfiguration", + es: "Configuración de P2P", + ja: "P2P設定", + ko: "P2P 구성", + ru: "Настройка P2P", + zh: "P2P 配置", + "zh-tw": "P2P 配置", + }, + "Ui.SetupWizard.P2P.TurnCredential": { + def: "TURN Credential", + de: "TURN-Zugangsdaten", + es: "Credencial TURN", + ja: "TURN 認証情報", + ko: "TURN 자격 증명", + ru: "Учётные данные TURN", + zh: "TURN 凭据", + "zh-tw": "TURN 憑據", + }, + "Ui.SetupWizard.P2P.TurnServerDesc": { + def: "TURN server settings are only necessary if you are behind a strict NAT or firewall that prevents direct P2P connections. In most cases, you can leave these fields blank.", + de: "TURN-Server-Einstellungen sind nur erforderlich, wenn Sie sich hinter einem strengen NAT oder einer Firewall befinden, die direkte P2P-Verbindungen verhindert. In den meisten Fällen können diese Felder leer bleiben.", + es: "La configuración de servidores TURN solo es necesaria si estás detrás de una NAT estricta o un firewall que impide conexiones P2P directas. En la mayoría de los casos puedes dejar estos campos vacíos.", + ja: "TURN サーバー設定は、厳しい NAT やファイアウォールにより直接 P2P 接続が妨げられる場合にのみ必要です。多くの場合は空欄のままで構いません。", + ko: "TURN 서버 설정은 엄격한 NAT 또는 방화벽 때문에 직접 P2P 연결이 차단되는 경우에만 필요합니다. 대부분의 경우 비워 둘 수 있습니다.", + ru: "Настройки TURN-сервера нужны только если вы находитесь за строгим NAT или firewall, которые мешают прямым P2P-соединениям. В большинстве случаев эти поля можно оставить пустыми.", + zh: "只有在严格 NAT 或防火墙阻止直接 P2P 连接时,才需要 TURN 服务器设置。大多数情况下可以留空。", + "zh-tw": "只有在嚴格 NAT 或防火牆阻止直接 P2P 連線時,才需要 TURN 伺服器設定。大多數情況下可以留空。", + }, + "Ui.SetupWizard.P2P.TurnServerUrls": { + def: "TURN Server URLs (comma-separated)", + de: "TURN-Server-URLs (kommagetrennt)", + es: "URLs de servidores TURN (separadas por comas)", + ja: "TURN サーバー URL(カンマ区切り)", + ko: "TURN 서버 URL(쉼표로 구분)", + ru: "URL TURN-серверов (через запятую)", + zh: "TURN 服务器 URL(逗号分隔)", + "zh-tw": "TURN 伺服器 URL(逗號分隔)", + }, + "Ui.SetupWizard.P2P.TurnUsername": { + def: "TURN Username", + de: "TURN-Benutzername", + es: "Usuario TURN", + ja: "TURN ユーザー名", + ko: "TURN 사용자 이름", + ru: "Имя пользователя TURN", + zh: "TURN 用户名", + "zh-tw": "TURN 使用者名稱", + }, + "Ui.SetupWizard.P2P.UseDefaultRelay": { + def: "Use vrtmrz's relay", + de: "Das Relais von vrtmrz verwenden", + es: "Utilice el relé de vrtmrz", + ja: "vrtmrz のリレーを使う", + ko: "vrtmrz 릴레이 사용", + ru: "Использовать relay-сервер vrtmrz", + zh: "使用 vrtmrz 的中继服务器", + "zh-tw": "使用 vrtmrz 的中繼伺服器", + }, + "Ui.SetupWizard.Rebuild.BackupBeforeProceeding": { + def: "Of course, we can back up the data before proceeding.", + de: "Natürlich können wir die Daten sichern, bevor wir fortfahren.", + es: "Por supuesto, podemos hacer una copia de seguridad de los datos antes de continuar.", + ja: "もちろん、続行前にデータをバックアップできます。", + ko: "물론 계속하기 전에 데이터를 백업할 수 있습니다.", + ru: "Конечно, мы можем создать резервную копию данных перед продолжением.", + zh: "当然,我们可以在继续之前备份数据。", + "zh-tw": "當然,我們可以在繼續之前備份資料。", + }, + "Ui.SetupWizard.Rebuild.BackupDone": { + def: "I have created a backup of my Vault.", + de: "Ich habe ein Backup von meinem Vault erstellt.", + es: "He creado una copia de seguridad de mi Bóveda.", + ja: "Vaultのバックアップを作成しました。", + ko: "Vault 백업을 만들었습니다.", + ru: "Я создал(а) резервную копию своего Vault.", + zh: "我已创建 Vault 备份。", + "zh-tw": "我已建立 Vault 備份。", + }, + "Ui.SetupWizard.Rebuild.BackupQuestion": { + def: "Have you created a backup before proceeding?", + de: "Haben Sie ein Backup erstellt, bevor Sie fortfahren?", + es: "¿Ha creado una copia de seguridad antes de continuar?", + ja: "続行する前にバックアップを作成しましたか?", + ko: "계속하기 전에 백업을 만들었습니까?", + ru: "Создали ли вы резервную копию перед продолжением?", + zh: "继续之前是否已创建备份?", + "zh-tw": "繼續之前是否已建立備份?", + }, + "Ui.SetupWizard.Rebuild.BackupSkipped": { + def: "I understand the risks and will proceed without a backup.", + de: "Ich verstehe die Risiken und werde ohne Verstärkung fortfahren.", + es: "Entiendo los riesgos y procederé sin respaldo.", + ja: "リスクを理解したうえで、バックアップなしで続行します。", + ko: "위험을 이해했으며 백업 없이 계속합니다.", + ru: "Я понимаю риски и продолжу без резервной копии.", + zh: "我了解风险,将在没有备份的情况下继续。", + "zh-tw": "我瞭解風險,將在沒有備份的情況下繼續。", + }, + "Ui.SetupWizard.Rebuild.BackupUnable": { + def: "I am unable to create a backup of my Vaults.", + de: "Ich bin nicht in der Lage, ein Backup meiner Vaults zu erstellen.", + es: "No puedo crear una copia de seguridad de mis bóvedas.", + ja: "Vaultのバックアップを作成できません。", + ko: "Vault 백업을 만들 수 없습니다.", + ru: "Я не могу создать резервную копию своих Vault.", + zh: "我无法创建 Vault 备份。", + "zh-tw": "我無法建立 Vault 備份。", + }, + "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.", + de: "Sie sollten ein neues Synchronisierungsziel erstellen und dort Ihre Daten wieder aufbauen. Danach synchronisieren Sie auf ein brandneues Gewölbe auf dem anderen Gerät mit dem neuen Remote von einem nach dem anderen.", + es: "Debe crear un nuevo destino de sincronización y reconstruir sus datos allí. Después de eso, sincronice una bóveda completamente nueva en cada dispositivo con el nuevo remoto, uno por uno.", + ja: "新しい同期先を作成し、そこでデータを再構築してください。その後、ほかの各デバイスでは新しいリモート先に対して、まっさらなVaultへ1台ずつ同期してください。", + ko: "새 동기화 대상을 만들고 그곳에 데이터를 재구축하는 것이 좋습니다. 그런 다음 각 다른 기기에서 새 원격으로 새 Vault에 하나씩 동기화하세요.", + ru: "Вам следует создать новую цель синхронизации и перестроить там данные. После этого синхронизируйте с новым удалённым хранилищем поочерёдно каждый другой девайс в совершенно новый Vault.", + zh: "您应该创建一个新的同步目标并在那里重建数据。之后,逐一将每台设备同步到使用新远程的新 Vault。", + "zh-tw": "您應該建立一個新的同步目標並在那裡重建資料。之後,逐一將每臺裝置同步到使用新遠端的新 Vault。", + }, + "Ui.SetupWizard.Rebuild.BackupWarning": { + def: "This is an extremely powerful operation. We strongly recommend that you copy your Vault folder to a safe location.", + de: "Dies ist eine äußerst leistungsfähige Operation. Wir empfehlen dringend, dass Sie Ihren Vault-Ordner an einen sicheren Ort kopieren.", + es: "Esta es una operación extremadamente potente. Le recomendamos encarecidamente que copie su carpeta de la bóveda en una ubicación segura.", + ja: "これは非常に強力な操作です。Vaultフォルダを安全な場所にコピーしておくことを強くおすすめします。", + ko: "매우 강력한 작업입니다. Vault 폴더를 안전한 위치에 복사해 두는 것을 강력히 권장합니다.", + ru: "Это чрезвычайно мощная операция. Мы настоятельно рекомендуем скопировать папку Vault в безопасное место.", + zh: "这是一个极其强大的操作。强烈建议您将 Vault 文件夹复制到安全位置。", + "zh-tw": "這是一個極其強大的操作。強烈建議您將 Vault 資料夾複製到安全位置。", + }, + "Ui.SetupWizard.Rebuild.ConfirmDataLoss": { + def: "I understand that all changes made on other smartphones or computers possibly could be lost.", + de: "Ich verstehe, dass alle Änderungen auf anderen Smartphones oder Computern möglicherweise verloren gehen könnten.", + es: "Entiendo que todos los cambios realizados en otros smartphones o computadoras podrían perderse.", + ja: "他のスマートフォンやPCで行った変更が失われる可能性があることを理解しています。", + ko: "다른 스마트폰이나 컴퓨터에서 만든 모든 변경 사항이 손실될 수 있음을 이해했습니다.", + ru: "Я понимаю, что все изменения, сделанные на других смартфонах или компьютерах, могут быть потеряны.", + zh: "我理解其他手机或电脑上所做的所有更改可能会丢失。", + "zh-tw": "我理解其他手機或電腦上所做的所有更改可能會丟失。", + }, + "Ui.SetupWizard.Rebuild.ConfirmIrreversible": { + def: "I understand that this action is irreversible once performed.", + de: "Ich verstehe, dass diese Aktion unumkehrbar ist, wenn sie einmal durchgeführt wird.", + es: "Entiendo que esta acción es irreversible una vez realizada.", + ja: "この操作は一度実行すると元に戻せないことを理解しています。", + ko: "이 작업은 실행 후 되돌릴 수 없음을 이해했습니다.", + ru: "Я понимаю, что после выполнения это действие необратимо.", + zh: "我理解此操作一旦执行不可逆转。", + "zh-tw": "我理解此操作一旦執行不可逆轉。", + }, + "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.", + de: "Ich verstehe, dass andere Geräte nicht mehr synchronisieren können und die Synchronisationsinformationen zurücksetzen müssen.", + es: "Entiendo que los otros dispositivos ya no podrán sincronizarse y que será necesario restablecer la información de sincronización.", + ja: "他のデバイスは今後同期できなくなり、同期情報をリセットする必要があることを理解しています。", + ko: "다른 기기는 더 이상 동기화할 수 없으며 동기화 정보를 초기화해야 함을 이해했습니다.", + ru: "Я понимаю, что другие устройства больше не смогут синхронизироваться и им потребуется сбросить сведения о синхронизации.", + zh: "我理解其他设备将无法再同步,需要重置同步信息。", + "zh-tw": "我理解其他裝置將無法再同步,需要重置同步資訊。", + }, + "Ui.SetupWizard.Rebuild.ConfirmTitle": { + def: "Please Confirm the Following", + de: "Bitte bestätigen Sie das Folgende", + es: "Confirme lo siguiente", + ja: "以下を確認してください", + ko: "다음 내용을 확인하세요", + ru: "Подтвердите следующее", + zh: "请确认以下事项", + "zh-tw": "請確認以下事項", + }, + "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.", + de: "Dieses Verfahren wird zunächst alle vorhandenen Synchronisationsdaten vom Server löschen. Im Anschluss daran werden die Serverdaten vollständig wiederhergestellt, wobei der aktuelle Zustand Ihres Vault auf diesem Gerät als einzige, maßgebliche Masterkopie verwendet wird.", + es: "Este procedimiento primero eliminará todos los datos de sincronización existentes del servidor. Después, los datos del servidor se reconstruirán por completo usando el estado actual de su bóveda en este dispositivo como única copia maestra autorizada.", + ja: "この手順では、まずサーバー上の既存の同期データをすべて削除します。その後、このデバイス上のVaultの現在の状態を唯一の正本として使用し、サーバー上のデータを完全に再構築します。", + ko: "이 절차는 먼저 서버의 기존 동기화 데이터를 모두 삭제합니다. 그런 다음 이 기기의 현재 Vault 상태를 유일한 기준 복사본으로 사용하여 서버 데이터를 완전히 다시 만듭니다.", + ru: "Эта процедура сначала удалит с сервера все существующие данные синхронизации. После этого данные на сервере будут полностью перестроены с использованием текущего состояния вашего Vault на этом устройстве как единственной авторитетной основной копии.", + zh: "此过程将首先删除服务器上的所有现有同步数据。随后,将使用此设备上当前 Vault 的状态作为唯一权威主副本,完全重建服务器数据。", + "zh-tw": + "此過程將首先刪除伺服器上的所有現有同步資料。隨後,將使用此裝置上當前 Vault 的狀態作為唯一權威主副本,完全重建伺服器資料。", + }, + "Ui.SetupWizard.Rebuild.PreventFetchConfig": { + def: "Prevent fetching configuration from server", + de: "Verhindern Sie die Abrufkonfiguration vom Server", + es: "Evitar recuperar la configuración del servidor", + ja: "サーバーから設定を取得しない", + ko: "서버에서 구성 가져오기 방지", + ru: "Не получать конфигурацию с сервера", + zh: "防止从服务器获取配置", + "zh-tw": "防止從伺服器獲取配置", + }, + "Ui.SetupWizard.Rebuild.Proceed": { + def: "I Understand, Overwrite Server", + de: "Ich verstehe, Overwrite Server", + es: "Entiendo, sobrescribir el servidor", + ja: "理解しました。サーバーを上書きします", + ko: "이해했습니다, 서버 덮어쓰기", + ru: "Я понимаю, перезаписать сервер", + zh: "我理解,覆盖服务器", + "zh-tw": "我理解,覆蓋伺服器", + }, + "Ui.SetupWizard.Rebuild.ResetNotifyOtherDevices": { + def: "by resetting the remote, you will be informed on other devices.", + de: "durch Zurücksetzen der Fernbedienung werden Sie auf anderen Geräten informiert.", + es: "al restablecer el remoto, se le informará en los otros dispositivos.", + ja: "リモートをリセットすると、他のデバイスにも通知されます。", + ko: "원격을 초기화하면 다른 기기에도 알림이 표시됩니다.", + ru: "после сброса удалённого хранилища вы получите уведомление на других устройствах.", + zh: "重置远程后,其他设备将收到通知。", + "zh-tw": "重置遠端後,其他裝置將收到通知。", + }, + "Ui.SetupWizard.Rebuild.ResolveOnOtherDevices": { + def: "There is a way to resolve this on other devices.", + de: "Es gibt einen Weg, dies auf anderen Geräten zu lösen.", + es: "Hay una forma de resolver esto en otros dispositivos.", + ja: "他のデバイス側で解決する方法があります。", + ko: "다른 기기에서 이 문제를 해결하는 방법이 있습니다.", + ru: "Есть способ решить это на других устройствах.", + zh: "有一种方法可以在其他设备上解决此问题。", + "zh-tw": "有一種方法可以在其他裝置上解決此問題。", + }, + "Ui.SetupWizard.Rebuild.Title": { + def: "Final Confirmation: Overwrite Server Data with This Device's Files", + de: "Letzte Bestätigung: Überschreiben Sie Serverdaten mit den Dateien dieses Geräts", + es: "Confirmación final: sobrescribir los datos del servidor con los archivos de este dispositivo", + ja: "最終確認: このデバイスのファイルでサーバーデータを上書き", + ko: "최종 확인: 이 기기의 파일로 서버 데이터 덮어쓰기", + ru: "Последнее подтверждение: перезаписать данные сервера файлами с этого устройства", + zh: "最终确认:用此设备的文件覆盖服务器数据", + "zh-tw": "最終確認:用此裝置的檔案覆蓋伺服器資料", + }, + "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.", + de: "Sie sollten diese Operation nur unter außergewöhnlichen Umständen durchführen, z.B. wenn die Serverdaten vollständig beschädigt sind, wenn Änderungen auf allen anderen Geräten nicht mehr erforderlich sind, oder wenn die Datenbankgröße im Vergleich zur Standardgröße ungewöhnlich groß geworden ist.", + es: "Solo debe realizar esta operación en circunstancias excepcionales, como cuando los datos del servidor estén completamente dañados, cuando ya no se necesiten los cambios de todos los demás dispositivos o cuando el tamaño de la base de datos se haya vuelto inusualmente grande en comparación con el tamaño de la bóveda.", + ja: "この操作を実行するのは、サーバー上のデータが完全に破損している場合、他のすべてのデバイスでの変更が不要になった場合、またはVaultサイズに比べてデータベースサイズが異常に大きくなった場合など、例外的な状況に限るべきです。", + ko: "서버 데이터가 완전히 손상되었거나, 다른 모든 기기의 변경 사항이 더 이상 필요하지 않거나, 데이터베이스 크기가 Vault 크기에 비해 비정상적으로 커진 경우와 같은 예외적인 상황에서만 이 작업을 수행해야 합니다.", + ru: "Выполнять эту операцию следует только в исключительных обстоятельствах, например если данные на сервере полностью повреждены, изменения на всех остальных устройствах больше не нужны или размер базы данных стал необычно большим по сравнению с размером Vault.", + zh: "仅在特殊情况下才应执行此操作,例如服务器数据完全损坏、其他所有设备上的更改不再需要、或数据库大小与 Vault 大小相比异常庞大时。", + "zh-tw": + "僅在特殊情況下才應執行此操作,例如伺服器資料完全損壞、其他所有裝置上的更改不再需要、或資料庫大小與 Vault 大小相比異常龐大時。", }, "Ui.SetupWizard.SelectExisting.Guidance": { - def: "You are adding this device to an existing synchronisation setup.", - zh: "你正在将此设备加入已有同步配置。", + def: "Choose how to connect to your existing LiveSync server.", + de: "Wählen Sie, wie Sie mit Ihrem vorhandenen LiveSync Server verbinden.", + es: "Elija cómo conectarse a su servidor LiveSync existente.", + ja: "既存の LiveSync サーバーへの接続方法を選択してください。", + ko: "기존 LiveSync 서버에 연결하는 방법을 선택해 주세요.", + ru: "Выберите способ подключения к существующему серверу LiveSync.", + zh: "选择如何连接到您现有的 LiveSync 服务器。", + "zh-tw": "選擇如何連線到您現有的 LiveSync 伺服器。", }, "Ui.SetupWizard.SelectExisting.ManualOption": { - def: "Enter the server information manually", - zh: "手动输入服务器信息", + def: "Configure manually", + de: "manuell konfigurieren", + es: "Configurar manualmente", + ja: "手動で設定", + ko: "수동으로 설정", + ru: "Настроить вручную", + zh: "手动配置", + "zh-tw": "手動設定", }, "Ui.SetupWizard.SelectExisting.ManualOptionDesc": { - def: "Configure the same server information as your other devices again manually. This is intended only for advanced users.", - zh: "手动重新配置与你其他设备相同的服务器信息。此方式仅适用于高级用户。", + def: "Enter server details and credentials yourself", + de: "Geben Sie Serverdetails und Anmeldeinformationen selbst ein", + es: "Ingrese los detalles del servidor y las credenciales usted mismo", + ja: "サーバーの詳細と認証情報を自分で入力", + ko: "서버 세부 정보와 자격 증명을 직접 입력", + ru: "Введите данные сервера и учётные данные самостоятельно", + zh: "自行输入服务器详细信息和凭据", + "zh-tw": "自行輸入伺服器詳細資料和憑證", }, "Ui.SetupWizard.SelectExisting.ProceedManual": { - def: "I know my server details, let me enter them", - zh: "我知道服务器信息,让我手动输入", + def: "Configure manually", + de: "manuell konfigurieren", + es: "Configurar manualmente", + ja: "手動で設定", + ko: "수동으로 설정", + ru: "Настроить вручную", + zh: "手动配置", + "zh-tw": "手動設定", }, "Ui.SetupWizard.SelectExisting.ProceedQr": { - def: "Scan the QR code displayed on an active device using this device's camera.", - zh: "使用本设备摄像头扫描活动设备上显示的二维码", + def: "Scan QR code", + de: "QR-Code Scannen", + es: "Escanear código QR", + ja: "QR コードをスキャン", + ko: "QR 코드 스캔", + ru: "Сканировать QR-код", + zh: "扫描二维码", + "zh-tw": "掃描 QR 碼", }, "Ui.SetupWizard.SelectExisting.ProceedSetupUri": { - def: "Proceed with Setup URI", - zh: "使用 Setup URI 继续", + def: "Use Setup URI", + de: "Verwenden Sie Setup-URI", + es: "Usar URI de configuración", + ja: "セットアップ URI を使用", + ko: "설정 URI 사용", + ru: "Использовать URI настройки", + zh: "使用设置 URI", + "zh-tw": "使用設定 URI", }, "Ui.SetupWizard.SelectExisting.QrOption": { - def: "Scan a QR Code (Recommended for mobile)", - zh: "扫描二维码(移动端推荐)", + def: "Scan QR code", + de: "QR-Code Scannen", + es: "Escanear código QR", + ja: "QR コードをスキャン", + ko: "QR 코드 스캔", + ru: "Сканировать QR-код", + zh: "扫描二维码", + "zh-tw": "掃描 QR 碼", }, "Ui.SetupWizard.SelectExisting.QrOptionDesc": { - def: "Scan the QR code displayed on an active device using this device's camera.", - zh: "使用本设备摄像头扫描活动设备上显示的二维码。", + def: "Scan a QR code from an already configured device", + de: "Scannen eines QR-Codes von einem bereits konfigurierten Gerät", + es: "Escanear un código QR desde un dispositivo ya configurado", + ja: "設定済みのデバイスから QR コードをスキャン", + ko: "이미 구성된 장치에서 QR 코드 스캔", + ru: "Сканировать QR-код с уже настроенного устройства", + zh: "从已配置的设备扫描二维码", + "zh-tw": "從已設定的裝置掃描 QR 碼", }, "Ui.SetupWizard.SelectExisting.Question": { - def: "Please select a method to import the settings from another device.", - zh: "请选择一种从其他设备导入设置的方法。", + def: "Select connection method:", + de: "Verbindungsmethode auswählen:", + es: "Seleccione método de conexión:", + ja: "接続方法を選択:", + ko: "연결 방법 선택:", + ru: "Выберите способ подключения:", + zh: "选择连接方式:", + "zh-tw": "選擇連線方式:", }, "Ui.SetupWizard.SelectExisting.SetupUriOption": { - def: "Use a Setup URI (Recommended)", - zh: "使用 Setup URI(推荐)", + def: "Use Setup URI", + de: "Verwenden Sie Setup-URI", + es: "Usar URI de configuración", + ja: "セットアップ URI を使用", + ko: "설정 URI 사용", + ru: "Использовать URI настройки", + zh: "使用设置 URI", + "zh-tw": "使用設定 URI", }, "Ui.SetupWizard.SelectExisting.SetupUriOptionDesc": { - def: "Paste the Setup URI generated from one of your active devices.", - zh: "粘贴从某台已启用设备生成的 Setup URI。", + def: "Import configuration from a setup URI provided by your server", + de: "Importieren Sie Konfiguration aus einem Setup-URI, das von Ihrem Server bereitgestellt wird", + es: "Importar configuración desde un URI proporcionado por su servidor", + ja: "サーバーから提供されるセットアップ URI から設定をインポート", + ko: "서버에서 제공하는 설정 URI에서 구성 가져오기", + ru: "Импортировать конфигурацию из URI, предоставленного сервером", + zh: "从服务器提供的设置 URI 导入配置", + "zh-tw": "從伺服器提供的設定 URI 匯入設定", }, "Ui.SetupWizard.SelectExisting.Title": { - def: "Device Setup Method", - zh: "设备设置方式", + def: "Connect to Existing Server", + de: "Verbinden mit dem vorhandenen Server", + es: "Conectar a servidor existente", + ja: "既存サーバーに接続", + ko: "기존 서버에 연결", + ru: "Подключение к существующему серверу", + zh: "连接到现有服务器", + "zh-tw": "連線到現有伺服器", }, "Ui.SetupWizard.SelectNew.Guidance": { - def: "We will now proceed with the server configuration.", - zh: "接下来将继续配置服务器连接信息。", + 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 连接。", + "zh-tw": "選擇您想如何設定新的 LiveSync 連線。", }, "Ui.SetupWizard.SelectNew.ManualOption": { - def: "Enter the server information manually", - zh: "手动输入服务器信息", + def: "Configure manually", + de: "manuell konfigurieren", + es: "Configurar manualmente", + ja: "手動で設定", + ko: "수동으로 설정", + ru: "Настроить вручную", + zh: "手动配置", + "zh-tw": "手動設定", }, "Ui.SetupWizard.SelectNew.ManualOptionDesc": { - def: "This is an advanced option for users who do not have a Setup URI or who want to configure detailed settings.", - zh: "如果你没有 Setup URI,或希望自行配置更详细的参数,可选择此高级选项。", + def: "Enter server details and credentials yourself", + de: "Geben Sie Serverdetails und Anmeldeinformationen selbst ein", + es: "Ingrese los detalles del servidor y las credenciales usted mismo", + ja: "サーバーの詳細と認証情報を自分で入力", + ko: "서버 세부 정보와 자격 증명을 직접 입력", + ru: "Введите данные сервера и учётные данные самостоятельно", + zh: "自行输入服务器详细信息和凭据", + "zh-tw": "自行輸入伺服器詳細資料和憑證", }, "Ui.SetupWizard.SelectNew.ProceedManual": { - def: "I know my server details, let me enter them", - zh: "我知道服务器信息,让我手动输入", + def: "Configure manually", + de: "manuell konfigurieren", + es: "Configurar manualmente", + ja: "手動で設定", + ko: "수동으로 설정", + ru: "Настроить вручную", + zh: "手动配置", + "zh-tw": "手動設定", }, "Ui.SetupWizard.SelectNew.ProceedSetupUri": { - def: "Proceed with Setup URI", - zh: "使用 Setup URI 继续", + def: "Use Setup URI", + de: "Verwenden Sie Setup-URI", + es: "Usar URI de configuración", + ja: "セットアップ URI を使用", + ko: "설정 URI 사용", + ru: "Использовать URI настройки", + zh: "使用设置 URI", + "zh-tw": "使用設定 URI", }, "Ui.SetupWizard.SelectNew.Question": { - def: "How would you like to configure the connection to your server?", - zh: "你希望如何配置服务器连接?", + def: "Select configuration method:", + de: "Wählen Sie Konfigurationsmethode:", + es: "Seleccione método de configuración:", + ja: "設定方法を選択:", + ko: "구성 방법 선택:", + ru: "Выберите метод настройки:", + zh: "选择配置方式:", + "zh-tw": "選擇設定方式:", }, "Ui.SetupWizard.SelectNew.SetupUriOption": { - def: "Use a Setup URI (Recommended)", - zh: "使用 Setup URI(推荐)", + def: "Use Setup URI", + de: "Verwenden Sie Setup-URI", + es: "Usar URI de configuración", + ja: "セットアップ URI を使用", + ko: "설정 URI 사용", + ru: "Использовать URI настройки", + zh: "使用设置 URI", + "zh-tw": "使用設定 URI", }, "Ui.SetupWizard.SelectNew.SetupUriOptionDesc": { - def: "A Setup URI is a single string containing your server address and authentication details. If one was generated by your server installation script, it provides a simple and secure configuration method.", - zh: "Setup URI 是一段包含服务器地址和认证信息的文本。如果你的服务器安装脚本已经生成了它,这是最简单且安全的配置方式。", + def: "Import configuration from a setup URI provided by your server", + de: "Importieren Sie Konfiguration aus einem Setup-URI, das von Ihrem Server bereitgestellt wird", + es: "Importar configuración desde un URI proporcionado por su servidor", + ja: "サーバーから提供されるセットアップ URI から設定をインポート", + ko: "서버에서 제공하는 설정 URI에서 구성 가져오기", + ru: "Импортировать конфигурацию из URI, предоставленного сервером", + zh: "从服务器提供的设置 URI 导入配置", + "zh-tw": "從伺服器提供的設定 URI 匯入設定", }, "Ui.SetupWizard.SelectNew.Title": { - def: "Connection Method", - zh: "连接方式", + def: "Set Up New Connection", + de: "Neue Verbindung einrichten", + es: "Configurar nueva conexión", + ja: "新しい接続をセットアップ", + ko: "새 연결 설정", + ru: "Настройка нового подключения", + zh: "设置新连接", + "zh-tw": "設定新連線", }, "Ui.SetupWizard.SetupRemote.BucketOption": { - def: "S3/MinIO/R2 Object Storage", - zh: "S3/MinIO/R2 对象存储", + def: "LiveSync Bucket", + de: "LiveSync-Bucket", + es: "Bucket de LiveSync", + ja: "LiveSync バケット", + ko: "LiveSync 버킷", + ru: "Хранилище LiveSync", + zh: "LiveSync 存储桶", + "zh-tw": "LiveSync 儲存桶", }, "Ui.SetupWizard.SetupRemote.BucketOptionDesc": { - def: "Synchronisation using journal files. You must already have an S3/MinIO/R2 compatible object storage service set up.", - zh: "使用日志文件进行同步。你需要先准备好兼容 S3/MinIO/R2 的对象存储服务。", + def: "Use the bundled bucket server included with the LiveSync companion service", + de: "Verwenden Sie den gebündelten Eimer-Server im LiveSync-Begleitungsservice", + es: "Use el servidor bucket incluido con el servicio complementario de LiveSync", + ja: "LiveSync コンパニオンサービスに同梱されているバケットサーバーを使用", + ko: "LiveSync 컴패니언 서비스에 포함된 버킷 서버 사용", + ru: "Используйте встроенный сервер хранилища, входящий в компаньон-сервис LiveSync", + zh: "使用 LiveSync 配套服务内置的存储桶服务器", + "zh-tw": "使用 LiveSync 配套服務內建的儲存桶伺服器", + }, + "Ui.SetupWizard.SetupRemote.CouchDbOption": { + def: "CouchDB", + de: "CouchDB", + es: "CouchDB", + ja: "CouchDB", + ko: "CouchDB", + ru: "CouchDB", + zh: "CouchDB", + "zh-tw": "CouchDB", }, "Ui.SetupWizard.SetupRemote.CouchDbOptionDesc": { - def: "This is the most suitable synchronisation method for the current design. All features are available. You must already have a CouchDB instance set up.", - zh: "这是当前设计下最适合的同步方式,所有功能都可用。你需要先准备好 CouchDB 实例。", + def: "Use your own CouchDB instance for full control over your sync server", + de: "Verwenden Sie Ihre eigene CouchDB-Instanz für die volle 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 实例,完全控制同步服务器", + "zh-tw": "使用您自己的 CouchDB 執行個體,完全控制同步伺服器", }, "Ui.SetupWizard.SetupRemote.Guidance": { - def: "Please select the type of server you are connecting to.", - zh: "请选择你要连接的服务器类型。", + def: "Choose the type of remote server you want to use:", + de: "Wählen Sie die Art des Remoteservers, den Sie verwenden möchten:", + es: "Elija el tipo de servidor remoto que desea usar:", + ja: "使用するリモートサーバーの種類を選択してください:", + ko: "사용할 원격 서버 유형을 선택해 주세요:", + ru: "Выберите тип удалённого сервера, который хотите использовать:", + zh: "选择您要使用的远程服务器类型:", + "zh-tw": "選擇您要使用的遠端伺服器類型:", }, "Ui.SetupWizard.SetupRemote.P2POption": { - def: "Peer-to-Peer only", - zh: "仅点对点", + def: "Peer-to-peer (Experimental)", + de: "Peer-to-Peer (Experimental)", + es: "Peer-to-peer (experimental)", + ja: "ピアツーピア(実験的)", + ko: "피어 투 피어 (실험적)", + ru: "Одноранговая сеть (Экспериментально)", + zh: "点对点(实验性)", + "zh-tw": "點對點(實驗性)", }, "Ui.SetupWizard.SetupRemote.P2POptionDesc": { - def: "This enables direct synchronisation between devices. No server is required, but both devices must be online at the same time and some features may be limited. Internet connectivity is required only for signalling, not for data transfer.", - zh: "启用设备之间的直接同步。无需服务器,但两台设备必须同时在线,且部分功能可能受限。互联网连接仅用于信令,不用于传输数据。", + def: "Synchronize directly between devices without a central server", + de: "Synchronisieren direkt zwischen Geräten ohne zentralen Server", + es: "Sincronice directamente entre dispositivos sin un servidor central", + ja: "中央サーバーなしでデバイス間を直接同期", + ko: "중앙 서버 없이 장치 간 직접 동기화", + ru: "Синхронизация напрямую между устройствами без центрального сервера", + zh: "无需中央服务器,直接在设备之间同步", + "zh-tw": "無需中央伺服器,直接在裝置之間同步", }, "Ui.SetupWizard.SetupRemote.ProceedBucket": { - def: "Continue to S3/MinIO/R2 setup", - zh: "继续配置 S3/MinIO/R2", + def: "Set up Bucket", + de: "Setup Bucket", + es: "Configurar Bucket", + ja: "バケットをセットアップ", + ko: "버킷 설정", + ru: "Настроить хранилище", + zh: "设置存储桶", + "zh-tw": "設定儲存桶", }, "Ui.SetupWizard.SetupRemote.ProceedCouchDb": { - def: "Continue to CouchDB setup", - zh: "继续配置 CouchDB", + def: "Set up CouchDB", + de: "CouchDB einrichten", + es: "Configurar CouchDB", + ja: "CouchDB をセットアップ", + ko: "CouchDB 설정", + ru: "Настроить CouchDB", + zh: "设置 CouchDB", + "zh-tw": "設定 CouchDB", }, "Ui.SetupWizard.SetupRemote.ProceedP2P": { - def: "Continue to Peer-to-Peer only setup", - zh: "继续配置仅点对点模式", + def: "Set up P2P", + de: "P2P einrichten", + es: "Configurar P2P", + ja: "P2P をセットアップ", + ko: "P2P 설정", + ru: "Настроить P2P", + zh: "设置 P2P", + "zh-tw": "設定 P2P", }, "Ui.SetupWizard.SetupRemote.Title": { - def: "Enter Server Information", - zh: "输入服务器信息", + def: "Setup Remote", + de: "Remote-Ziel einrichten", + es: "Configurar servidor remoto", + ja: "リモートサーバーのセットアップ", + ko: "원격 서버 설정", + ru: "Настройка удалённого сервера", + zh: "设置远程服务器", + "zh-tw": "設定遠端伺服器", + }, + "Ui.UseSetupURI.ButtonCancel": { + def: "Cancel", + de: "Abbrechen", + es: "Cancelar", + ja: "キャンセル", + ko: "취소", + ru: "Отмена", + zh: "取消", + "zh-tw": "取消", + }, + "Ui.UseSetupURI.ButtonProceed": { + def: "Test Settings and Continue", + de: "Testeinstellungen und Weiter", + es: "Probar configuración y continuar", + ja: "設定をテストして続行", + ko: "설정 테스트 후 계속", + ru: "Проверить настройки и продолжить", + zh: "测试设置并继续", + "zh-tw": "測試設定並繼續", + }, + "Ui.UseSetupURI.ErrorFailedToParse": { + def: "Failed to parse Setup-URI.", + de: "Versäumt, Setup-URI zu parsen.", + es: "No se pudo analizar el Setup-URI.", + ja: "Setup-URI の解析に失敗しました。", + ko: "Setup-URI를 해석하지 못했습니다.", + ru: "Не удалось разобрать Setup-URI.", + zh: "解析设置 URI 失败。", + "zh-tw": "解析設定 URI 失敗。", + }, + "Ui.UseSetupURI.ErrorPassphraseRequired": { + def: "Passphrase is required.", + de: "Passphrase ist erforderlich.", + es: "La frase de contraseña es obligatoria.", + ja: "パスフレーズが必要です。", + ko: "암호 구문이 필요합니다.", + ru: "Требуется парольная фраза.", + zh: "密码为必填项。", + "zh-tw": "密碼為必填項。", + }, + "Ui.UseSetupURI.Guidance": { + def: "Please enter the Setup URI that was generated during server installation or on another device, along with the vault passphrase.", + de: "Bitte geben Sie das Setup-URI ein, das während der Serverinstallation oder auf einem anderen Gerät erzeugt wurde, zusammen mit dem Tresorpassphrase.", + es: "Ingrese el Setup-URI generado durante la instalación del servidor o en otro dispositivo, junto con la frase de contraseña de la bóveda.", + ja: "サーバーのセットアップ時または別のデバイスで生成された Setup URI と、Vault のパスフレーズを入力してください。", + ko: "서버 설치 중 또는 다른 기기에서 생성된 Setup URI와 Vault 암호 구문을 입력하세요.", + ru: "Введите Setup URI, сгенерированный во время установки сервера или на другом устройстве, а также парольную фразу Vault.", + zh: "请输入在服务器安装期间或在其他设备上生成的设置 URI,以及 Vault 密码。", + "zh-tw": "請輸入在伺服器安裝期間或在其他裝置上生成的設定 URI,以及 Vault 密碼。", + }, + "Ui.UseSetupURI.InvalidInfo": { + def: "The Setup-URI does not appear to be valid. Please check that you have copied it correctly.", + de: "Die Setup-URI scheint nicht gültig zu sein. Bitte überprüfen Sie, ob Sie es richtig kopiert haben.", + es: "El Setup-URI no parece válido. Verifique que lo haya copiado correctamente.", + ja: "Setup-URI が無効なようです。正しくコピーできているか確認してください。", + ko: "Setup-URI가 유효하지 않은 것 같습니다. 올바르게 복사했는지 확인하세요.", + ru: "Setup-URI выглядит недействительным. Проверьте, правильно ли вы его скопировали.", + zh: "设置 URI 似乎无效。请检查是否正确复制。", + "zh-tw": "設定 URI 似乎無效。請檢查是否正確複製。", + }, + "Ui.UseSetupURI.Label": { + def: "Setup-URI", + de: "Setup-URI", + es: "Setup-URI", + ja: "Setup-URI", + ko: "Setup-URI", + ru: "Setup-URI", + zh: "设置 URI", + "zh-tw": "設定 URI", + }, + "Ui.UseSetupURI.LabelPassphrase": { + def: "Passphrase", + de: "Passphrasen", + es: "Frase de contraseña", + ja: "パスフレーズ", + ko: "암호 구문", + ru: "Парольная фраза", + zh: "密码", + "zh-tw": "密碼", + }, + "Ui.UseSetupURI.PlaceholderPassphrase": { + def: "Enter your passphrase", + de: "Geben Sie Ihre Passphrase", + es: "Ingrese su contraseña", + ja: "パスフレーズを入力", + ko: "암호 구문 입력", + ru: "Введите парольную фразу", + zh: "请输入您的密码", + "zh-tw": "請輸入您的密碼", + }, + "Ui.UseSetupURI.Title": { + def: "Enter Setup URI", + de: "Einrichten URI", + es: "Ingresar Setup-URI", + ja: "Setup URI を入力", + ko: "Setup URI 입력", + ru: "Введите Setup URI", + zh: "输入设置 URI", + "zh-tw": "輸入設定 URI", + }, + "Ui.UseSetupURI.ValidMessage": { + def: "The Setup-URI is valid and ready to use.", + de: "Die Setup-URI ist gültig und gebrauchsfertig.", + es: "El Setup-URI es válido y está listo para usarse.", + ja: "Setup-URI は有効で、使用準備ができています。", + ko: "Setup-URI가 유효하며 사용할 준비가 되었습니다.", + ru: "Setup-URI действителен и готов к использованию.", + zh: "设置 URI 有效,可以使用。", + "zh-tw": "設定 URI 有效,可以使用。", }, "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.", + de: "Einzigartiger Name zwischen allen synchronisierten Geräten. Um diese Einstellung zu bearbeiten, deaktivieren Sie bitte einmal die Anpassungssynchronisation.", es: "Nombre único entre dispositivos sincronizados. Para editarlo, desactive sincronización de personalización", fr: "Nom unique parmi tous les appareils synchronisés. Pour modifier ce paramètre, désactivez d'abord la synchronisation de personnalisation.", he: "שם ייחודי בין כל המכשירים המסונכרנים. כדי לערוך הגדרה זו, אנא נטרל את סנכרון ההתאמה האישית פעם אחת.", @@ -8887,6 +14220,7 @@ export const allMessages = { ko: "모든 동기화된 기기 간 고유 이름입니다. 이 설정을 편집하려면 사용자 설정 동기화를 한 번 비활성화해 주세요.", ru: "Уникальное имя между всеми синхронизируемыми устройствами.", zh: "所有同步设备之间的唯一名称。要编辑此设置,请首先禁用自定义同步", + "zh-tw": "所有同步裝置之間的唯一名稱。要編輯此設定,請首先禁用自定義同步", }, "Use a custom passphrase": { def: "Use a custom passphrase", @@ -8898,6 +14232,7 @@ export const allMessages = { }, "Use a Setup URI (Recommended)": { def: "Use a Setup URI (Recommended)", + de: "Setup-URI verwenden (empfohlen)", es: "Usar un URI de configuración (recomendado)", ja: "Setup URI を使う(推奨)", ko: "설정 URI 사용(권장)", @@ -8907,6 +14242,7 @@ export const allMessages = { }, "Use Custom HTTP Handler": { def: "Use Custom HTTP Handler", + de: "Benutzerdefinierte HTTP Handler", es: "Usar manejador HTTP personalizado", fr: "Utiliser un gestionnaire HTTP personnalisé", he: "השתמש ב-HTTP Handler מותאם אישית", @@ -8914,9 +14250,11 @@ export const allMessages = { ko: "커스텀 HTTP 핸들러 사용", ru: "Использовать пользовательский HTTP обработчик", zh: "使用自定义 HTTP 处理程序", + "zh-tw": "使用自定義 HTTP 處理程式", }, "Use dynamic iteration count": { def: "Use dynamic iteration count", + de: "Dynamische Iterationszählung verwenden", es: "Usar conteo de iteraciones dinámico", fr: "Utiliser un compteur d'itérations dynamique", he: "השתמש בספירת איטרציות דינמית", @@ -8924,9 +14262,31 @@ export const allMessages = { ko: "동적 반복 횟수 사용", ru: "Использовать динамическое количество итераций", zh: "使用动态迭代次数", + "zh-tw": "使用動態迭代次數", + }, + "Use Only Local Chunks": { + def: "Use Only Local Chunks", + de: "Nur lokale Chunks verwenden", + es: "Usar solo chunks locales", + ja: "ローカルチャンクのみ使用", + ko: "로컬 청크만 사용", + ru: "Использовать только локальные чанки", + zh: "仅使用本地块", + "zh-tw": "僅使用本機區塊", + }, + "Use Request API to avoid `inevitable` CORS problem": { + def: "Use Request API to avoid `inevitable` CORS problem", + de: "Request API verwenden, um das `unvermeidliche` CORS-Problem zu vermeiden", + es: "Usar la API Request para evitar el problema CORS `inevitable`", + ja: "「避けられない」CORS 問題を回避するため Request API を使用", + ko: "피할 수 없는 CORS 문제를 피하기 위해 Request API 사용", + ru: "Использовать Request API, чтобы обойти «неизбежную» проблему CORS", + zh: "使用 Request API 避免“不可避免”的 CORS 问题", + "zh-tw": "使用 Request API 避免「不可避免」的 CORS 問題", }, "Use Segmented-splitter": { def: "Use Segmented-splitter", + de: "Segmented Splitter verwenden", es: "Usar divisor segmentado", fr: "Utiliser le découpeur segmenté", he: "השתמש ב-Segmented-splitter", @@ -8934,9 +14294,11 @@ export const allMessages = { ko: "의미 기반 분할 사용", ru: "Использовать сегментный разделитель", zh: "使用分段分割器", + "zh-tw": "使用分段分割器", }, "Use splitting-limit-capped chunk splitter": { def: "Use splitting-limit-capped chunk splitter", + de: "Benutzen Sie Splitting-Limit-Caped-Chunk Splitter", es: "Usar divisor de chunks con límite", fr: "Utiliser le découpeur de fragments plafonné", he: "השתמש ב-chunk splitter עם מגבלת פיצול", @@ -8944,9 +14306,11 @@ export const allMessages = { ko: "분할 제한 상한 청크 분할기 사용", ru: "Использовать разделитель чанков с ограничением", zh: "使用分割限制上限的块分割器", + "zh-tw": "使用分割限制上限的塊分割器", }, "Use the trash bin": { def: "Use the trash bin", + de: "Verwenden Sie den Müllcontainer", es: "Usar papelera", fr: "Utiliser la corbeille", he: "השתמש בסל האשפה", @@ -8954,9 +14318,11 @@ export const allMessages = { ko: "휴지통 사용", ru: "Использовать корзину", zh: "使用回收站", + "zh-tw": "使用回收站", }, "Use timeouts instead of heartbeats": { def: "Use timeouts instead of heartbeats", + de: "Verwenden Sie Timeouts statt Herzschläge", es: "Usar timeouts en lugar de latidos", fr: "Utiliser des délais d'attente au lieu de battements", he: "השתמש בפסק זמן במקום פעימות לב", @@ -8964,9 +14330,11 @@ export const allMessages = { ko: "하트비트 대신 타임아웃 사용", ru: "Использовать таймауты вместо пульса", zh: "使用超时而不是心跳", + "zh-tw": "使用超時而不是心跳", }, username: { def: "username", + de: "Benutzername", es: "nombre de usuario", fr: "nom d'utilisateur", he: "שם משתמש", @@ -8974,9 +14342,11 @@ export const allMessages = { ko: "사용자명", ru: "имя пользователя", zh: "用户名", + "zh-tw": "使用者名稱", }, Username: { def: "Username", + de: "Benutzername", es: "Usuario", fr: "Nom d'utilisateur", he: "שם משתמש", @@ -8984,9 +14354,51 @@ export const allMessages = { ko: "사용자명", ru: "Имя пользователя", zh: "用户名", + "zh-tw": "使用者名稱", + }, + "V1: Legacy": { + def: "V1: Legacy", + de: "V1: Legacy", + es: "V1: Legado", + ja: "V1: レガシー", + ko: "V1: 레거시", + ru: "V1: Устаревший", + zh: "V1:旧版", + "zh-tw": "V1:舊版", + }, + "V2: Simple (Default)": { + def: "V2: Simple (Default)", + de: "V2: Einfach (Standard)", + es: "V2: Simple (predeterminado)", + ja: "V2: シンプル (既定)", + ko: "V2: 단순 (기본값)", + ru: "V2: Простой (по умолчанию)", + zh: "V2:简单(默认)", + "zh-tw": "V2:簡單(預設)", + }, + "V2.5: Lexical chunks": { + def: "V2.5: Lexical chunks", + de: "V2.5: Lexikalische Chunks", + es: "V2.5: Chunks lexicos", + ja: "V2.5: 字句チャンク", + ko: "V2.5: 어휘 청크", + ru: "V2.5: Лексические чанки", + zh: "V2.5:词法块", + "zh-tw": "V2.5:詞法區塊", + }, + "V3: Fine deduplication": { + def: "V3: Fine deduplication", + de: "V3: Feine Deduplizierung", + es: "V3: Deduplicacion fina", + ja: "V3: 細かな重複排除", + ko: "V3: 세밀한 중복 제거", + ru: "V3: Точная дедупликация", + zh: "V3:精细去重", + "zh-tw": "V3:精細去重", }, "Verbose Log": { def: "Verbose Log", + de: "Ausführliches Protokoll", es: "Registro detallado", fr: "Journal verbeux", he: "יומן מפורט", @@ -8994,9 +14406,11 @@ export const allMessages = { ko: "자세한 로그", ru: "Подробный лог", zh: "详细日志", + "zh-tw": "詳細日誌", }, "Verify all": { def: "Verify all", + de: "Alle prüfen", es: "Verificar todo", ja: "すべて検証", ko: "모두 검증", @@ -9006,6 +14420,7 @@ export const allMessages = { }, "Verify and repair all files": { def: "Verify and repair all files", + de: "Alle Dateien prüfen und reparieren", es: "Verificar y reparar todos los archivos", ja: "すべてのファイルを検証して修復", ko: "모든 파일 검증 및 복구", @@ -9016,13 +14431,15 @@ export const allMessages = { "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.", + de: "Warnung! Dies wird einen ernsthaften Einfluss auf die Leistung haben. Und die Protokolle werden nicht unter dem Standardnamen synchronisiert. Bitte seien Sie vorsichtig mit Protokollen; sie enthalten oft Ihre vertraulichen Informationen.", es: "¡Advertencia! Impacta rendimiento. Los logs no se sincronizan con nombre predeterminado. Contienen información confidencial", fr: "Attention ! Ceci aura un impact important sur les performances. De plus, les journaux ne seront pas synchronisés sous le nom par défaut. Soyez prudent avec les journaux ; ils contiennent souvent des informations confidentielles.", he: "אזהרה! לכך תהיה השפעה רצינית על הביצועים. בנוסף, היומנים לא יסונכרנו תחת השם ברירת המחדל. אנא היה זהיר עם יומנים; הם לרוב מכילים מידע סודי שלך.", 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.", + ru: "Внимание! Это серьёзно повлияет на производительность. Кроме того, журналы не будут синхронизироваться под именем по умолчанию. Будьте осторожны с логами: они часто содержат конфиденциальную информацию.", zh: "警告!这将严重影响性能。并且日志不会以默认名称同步。请小心处理日志;它们通常包含您的敏感信息 ", + "zh-tw": "警告!這將嚴重影響效能。並且日誌不會以預設名稱同步。請小心處理日誌;它們通常包含您的敏感資訊 ", }, "We cannot change the device name while this feature is enabled. Please disable this feature to change the device name.": { @@ -9035,6 +14452,7 @@ export const allMessages = { }, "We will now guide you through a few questions to simplify the synchronisation setup.": { def: "We will now guide you through a few questions to simplify the synchronisation setup.", + de: "Wir führen Sie nun durch einige Fragen, um die Synchronisationseinrichtung zu vereinfachen.", es: "Ahora le guiaremos con unas pocas preguntas para simplificar la configuración de la sincronización。", ja: "これからいくつかの質問に沿って、同期設定を簡単に進めます。", ko: "동기화 설정을 더 쉽게 진행할 수 있도록 몇 가지 질문으로 안내해 드리겠습니다。", @@ -9044,6 +14462,7 @@ export const allMessages = { }, "We will now proceed with the server configuration.": { def: "We will now proceed with the server configuration.", + de: "Wir fahren nun mit der Serverkonfiguration fort。", es: "Ahora continuaremos con la configuración del servidor。", ja: "次にサーバー設定を進めます。", ko: "이제 서버 구성을 진행하겠습니다。", @@ -9053,6 +14472,7 @@ export const allMessages = { }, "Welcome to Self-hosted LiveSync": { def: "Welcome to Self-hosted LiveSync", + de: "Willkommen bei Self-hosted LiveSync", es: "Bienvenido a Self-hosted LiveSync", ja: "Self-hosted LiveSync へようこそ", ko: "Self-hosted LiveSync에 오신 것을 환영합니다", @@ -9062,6 +14482,7 @@ export const allMessages = { }, "When you save a file in the editor, start a sync automatically": { def: "When you save a file in the editor, start a sync automatically", + de: "Wenn Sie eine Datei im Editor speichern, starten Sie automatisch einen Sync", es: "Iniciar sincronización automática al guardar en editor", fr: "À l'enregistrement d'un fichier dans l'éditeur, démarrer automatiquement une synchronisation", he: "כאשר אתה שומר קובץ בעורך, התחל סנכרון אוטומטית", @@ -9069,9 +14490,23 @@ export const allMessages = { ko: "편집기에서 파일을 저장할 때 자동으로 동기화를 시작합니다", ru: "Когда вы сохраняете файл в редакторе, автоматически запускать синхронизацию", zh: "当您在编辑器中保存文件时,自动开始同步", + "zh-tw": "當您在編輯器中儲存檔案時,自動開始同步", }, + "While enabled, it causes very performance impact but debugging replication testing and other features will be enabled. Please disable this if you have not read the source code. Requires restart of Obsidian.": + { + def: "While enabled, it causes very performance impact but debugging replication testing and other features will be enabled. Please disable this if you have not read the source code. Requires restart of Obsidian.", + de: "Wenn aktiviert, beeinträchtigt dies die Leistung stark, aktiviert aber Debugging, Replikationstests und andere Funktionen. Deaktiviere dies, wenn du den Quellcode nicht gelesen hast. Obsidian muss neu gestartet werden.", + es: "Mientras esté activado, afectará mucho al rendimiento, pero habilitará la depuración, las pruebas de replicación y otras funciones. Desactívalo si no has leído el código fuente. Requiere reiniciar Obsidian.", + ja: "有効にするとパフォーマンスに大きく影響しますが、デバッグ、レプリケーションテストなどの機能が有効になります。ソースコードを読んでいない場合は無効にしてください。Obsidian の再起動が必要です。", + ko: "활성화하면 성능에 큰 영향을 주지만 디버깅, 복제 테스트 및 기타 기능이 활성화됩니다. 소스 코드를 읽지 않았다면 비활성화하세요. Obsidian 재시작이 필요합니다.", + ru: "При включении сильно влияет на производительность, но включает отладку, тестирование репликации и другие функции. Отключите это, если вы не читали исходный код. Требуется перезапуск Obsidian.", + zh: "启用后会对性能造成很大影响,但会启用调试、复制测试和其他功能。如果你没有阅读源码,请关闭此项。需要重启 Obsidian。", + "zh-tw": + "啟用後會對效能造成很大影響,但會啟用除錯、複製測試與其他功能。如果你沒有閱讀原始碼,請關閉此項。需要重新啟動 Obsidian。", + }, "Write credentials in the file": { def: "Write credentials in the file", + de: "Anmeldeinformationen in der Datei schreiben", es: "Escribir credenciales en archivo", fr: "Écrire les identifiants dans le fichier", he: "כתוב פרטי גישה בקובץ", @@ -9079,9 +14514,11 @@ export const allMessages = { ko: "파일에 자격 증명 저장", ru: "Записывать учётные данные в файл", zh: "将凭据写入文件", + "zh-tw": "將憑據寫入檔案", }, "Write logs into the file": { def: "Write logs into the file", + de: "Logs in die Datei schreiben", es: "Escribir logs en archivo", fr: "Écrire les journaux dans le fichier", he: "כתוב יומנים לקובץ", @@ -9089,9 +14526,11 @@ export const allMessages = { ko: "파일에 로그 기록", ru: "Записывать логи в файл", zh: "将日志写入文件", + "zh-tw": "將日誌寫入檔案", }, "xxhash32 (Fast but less collision resistance)": { def: "xxhash32 (Fast but less collision resistance)", + de: "xxhash32 (schnell, aber geringere Kollisionsresistenz)", es: "xxhash32 (rápido, pero con menor resistencia a colisiones)", ja: "xxhash32 (高速ですが衝突耐性は低め)", ko: "xxhash32 (빠르지만 충돌 저항성은 낮음)", @@ -9101,6 +14540,7 @@ export const allMessages = { }, "xxhash64 (Fastest)": { def: "xxhash64 (Fastest)", + de: "xxhash64 (am schnellsten)", es: "xxhash64 (el más rápido)", ja: "xxhash64 (最速)", ko: "xxhash64 (가장 빠름)", @@ -9108,8 +14548,19 @@ export const allMessages = { zh: "xxhash64(最快)", "zh-tw": "xxhash64(最快)", }, + "xxhash64 is the current default.": { + def: "xxhash64 is the current default.", + de: "Der aktuelle Standard ist xxhash64.", + es: "El valor predeterminado actual es xxhash64.", + ja: "現在の既定値は xxhash64 です。", + ko: "현재 기본값은 xxhash64입니다.", + ru: "Текущее значение по умолчанию: xxhash64.", + zh: "当前默认值为 xxhash64。", + "zh-tw": "目前預設值為 xxhash64。", + }, "Yes, I want to add this device to my existing synchronisation": { def: "Yes, I want to add this device to my existing synchronisation", + de: "Ja, ich möchte dieses Gerät zu meiner bestehenden Synchronisation hinzufügen", es: "Sí, quiero añadir este dispositivo a mi sincronización existente", ja: "はい、この端末を既存の同期に追加します", ko: "예, 이 장치를 기존 동기화에 추가하겠습니다", @@ -9119,6 +14570,7 @@ export const allMessages = { }, "Yes, I want to set up a new synchronisation": { def: "Yes, I want to set up a new synchronisation", + de: "Ja, ich möchte eine neue Synchronisation einrichten", es: "Sí, quiero configurar una nueva sincronización", ja: "はい、新しい同期を設定します", ko: "예, 새 동기화를 설정하겠습니다", @@ -9128,6 +14580,7 @@ export const allMessages = { }, "You are adding this device to an existing synchronisation setup.": { def: "You are adding this device to an existing synchronisation setup.", + de: "Sie fügen dieses Gerät zu einer bestehenden Synchronisationseinrichtung hinzu.", es: "Está añadiendo este dispositivo a una configuración de sincronización existente。", ja: "この端末を既存の同期構成に追加しようとしています。", ko: "이 장치를 기존 동기화 구성에 추가하려고 합니다。", @@ -9135,9 +14588,17 @@ export const allMessages = { zh: "你正在将此设备加入到现有同步配置中。", "zh-tw": "你正在將此裝置加入既有同步設定中。", }, - "Compute revisions for chunks (Previous behaviour)": { - es: "Calcular revisiones para chunks (comportamiento anterior)", - }, + "You can enable this setting to process the files with size mismatches, these files can be created by some APIs or integrations.": + { + def: "You can enable this setting to process the files with size mismatches, these files can be created by some APIs or integrations.", + de: "Aktiviere diese Einstellung, um Dateien mit abweichender Größe zu verarbeiten; solche Dateien können von manchen APIs oder Integrationen erstellt werden.", + es: "Puedes activar esta opción para procesar archivos con tamaños no coincidentes; estos archivos pueden ser creados por algunas API o integraciones.", + ja: "サイズが一致しないファイルを処理するには、この設定を有効にできます。これらのファイルは一部の API や連携機能によって作成されることがあります。", + ko: "크기가 일치하지 않는 파일을 처리하려면 이 설정을 활성화할 수 있습니다. 이러한 파일은 일부 API나 통합 기능에서 생성될 수 있습니다.", + ru: "Можно включить этот параметр для обработки файлов с несовпадающим размером; такие файлы могут создаваться некоторыми API или интеграциями.", + zh: "可启用此设置来处理大小不匹配的文件;这些文件可能由某些 API 或集成创建。", + "zh-tw": "可啟用此設定來處理大小不符的檔案;這些檔案可能由某些 API 或整合建立。", + }, "Setup.> [!INFO]- The connected devices have been detected as follows:\n${devices}": { es: "> [!INFO]- Se detectaron los siguientes dispositivos conectados:\n${devices}", }, @@ -9265,64 +14726,4 @@ export const allMessages = { "Setup.titleWelcome": { es: "Bienvenido a Self-hosted LiveSync", }, - "(Not recommended) If set, credentials will be stored in the file": { - 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.": - { - ru: "До v0.17.16 мы использовали старый адаптер для локальной базы данных. Теперь предпочтителен новый адаптер. Однако требуется перестроение локальной базы данных.", - }, - descConnectSetupURI: { - ru: "Это рекомендуемый способ настройки Self-hosted LiveSync с помощью Setup URI.", - }, - descCopySetupURI: { - ru: "Идеально для настройки нового устройства!", - }, - descEnableLiveSync: { - ru: "Включайте это только после настройки одного из двух вариантов выше.", - }, - descFetchConfigFromRemote: { - ru: "Загрузить необходимые настройки с уже настроенного удалённого сервера.", - }, - descManualSetup: { - ru: "Не рекомендуется, но полезно, если у вас нет Setup URI", - }, - descTestDatabaseConnection: { - ru: "Открыть подключение к базе данных.", - }, - descValidateDatabaseConfig: { - ru: "Проверяет и исправляет потенциальные проблемы с конфигурацией базы данных.", - }, - "If enabled per-filed efficient customization sync will be used. We need a small migration when enabling this.": { - ru: "Если включено, будет использоваться эффективная синхронизация настроек для каждого файла.", - }, - "If this is set, changes to local files which are matched by the ignore files will be skipped.": { - 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.": - { - ru: "Если эта опция включена, PouchDB будет держать соединение открытым 60 секунд.", - }, - "Number of batches to process at a time. Defaults to 40. Minimum is 2.": { - ru: "Количество пакетов для обработки за раз. По умолчанию 40. Минимум 2.", - }, - "Save settings to a markdown file.": { - ru: "Сохранить настройки в файл markdown.", - }, - "The maximum duration for which chunks can be incubated within the document.": { - ru: "Максимальная продолжительность инкубации чанков в документе.", - }, - "The maximum number of chunks that can be incubated within the document.": { - ru: "Максимальное количество инкубируемых чанков в документе.", - }, - "The maximum total size of chunks that can be incubated within the document.": { - ru: "Максимальный общий размер инкубируемых чанков в документе.", - }, - "This passphrase will not be copied to another device. It will be set to until you configure it again.": { - ru: "Эта парольная фраза не будет скопирована на другое устройство.", - }, - "Warning! This will have a serious impact on performance. And the logs will not be synchronised under the default name.": - { - ru: "Внимание! Это серьёзно повлияет на производительность.", - }, } as const; diff --git a/src/common/messagesJson/de.json b/src/common/messagesJson/de.json index d0738812..4517a55b 100644 --- a/src/common/messagesJson/de.json +++ b/src/common/messagesJson/de.json @@ -1,22 +1,52 @@ { "(Active)": "(Aktiv)", + "(BETA) Always overwrite with a newer file": "(BETA) Immer überschreiben mit einer neueren Datei", + "(Beta) Use ignore files": "(Beta) Verwenden Sie ignorierende Dateien", + "(Days passed, 0 to disable automatic-deletion)": "(Days übergeben, 0 zum Deaktivieren von Automatik-Auslöschung)", + "(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.": "(z.B. Stücke online lesen) Wenn diese Option aktiviert ist, liest LiveSync online Brocken statt sie lokal zu replizieren. Es wird empfohlen, die kundenspezifische Größe zu erhöhen.", + "(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) Wenn dies eingestellt ist, werden Änderungen an lokalen und Remote-Dateien, die größer als dies sind, übersprungen. Wenn die Datei wieder kleiner wird, wird eine neuere verwendet.", + "(Mega chars)": "(Mega Chars)", + "(Not recommended) If set, credentials will be stored in the file.": "(Nicht empfohlen) Wenn gesetzt, werden Anmeldeinformationen in der Datei gespeichert.", + "(Obsolete) Use an old adapter for compatibility": "(Obsolete) Verwenden Sie einen alten Adapter für Kompatibilität", "(RegExp) Empty to sync all files. Set filter as a regular expression to limit synchronising files.": "(RegExp) Leer lassen, um alle Dateien zu synchronisieren. Legen Sie einen Filter als regulären Ausdruck fest, um die zu synchronisierenden Dateien einzuschränken.", "(RegExp) If this is set, any changes to local and remote files that match this will be skipped.": "(RegExp) Wenn dies gesetzt ist, werden alle Änderungen an lokalen und Remote-Dateien übersprungen, die diesem Muster entsprechen.", "(Select this if you are already using synchronisation on another computer or smartphone.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": "(Wählen Sie dies, wenn Sie die Synchronisation bereits auf einem anderen Computer oder Smartphone verwenden.) Diese Option ist geeignet, wenn Sie dieses Gerät zu einer bestehenden LiveSync-Einrichtung hinzufügen möchten.", "(Select this if you are configuring this device as the first synchronisation device.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": "(Wählen Sie dies, wenn Sie dieses Gerät als erstes Synchronisationsgerät einrichten.) Diese Option ist geeignet, wenn Sie LiveSync neu verwenden und von Grund auf einrichten möchten.", "> [!INFO]- The connected devices have been detected as follows:\n${devices}": "> [!INFO]- Die folgenden verbundenen Geräte wurden erkannt:\n${devices}", "A Setup URI is a single string of text containing your server address and authentication details. Using a URI, if one was generated by your server installation script, provides a simple and secure configuration.": "Eine Setup-URI ist eine einzelne Zeichenfolge, die Ihre Serveradresse und Authentifizierungsdaten enthält. Wenn Ihre Serverinstallation eine URI erzeugt hat, bietet deren Verwendung eine einfache und sichere Konfiguration。", + "Access Key": "Zugang zum Schlüssel", "Activate": "Aktivieren", + "Active Remote Configuration": "Active Remote Konfiguration", + "Active Remote Type": "Aktiver entfernter Typ", "Add default patterns": "Standardmuster hinzufügen", "Add new connection": "Neue Verbindung hinzufügen", + "Advanced": "Erweitert", "All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.": "Alle Geräte haben denselben Fortschrittswert (${progress}). Ihre Geräte scheinen synchronisiert zu sein. Die Garbage Collection kann fortgesetzt werden.", + "Always prompt merge conflicts": "Immer schnelle Zusammenführung von Konflikten", + "Analyse": "Analysieren", + "Analyse database usage": "Nutzung der Datenbank", + "Analyse database usage and generate a TSV report for diagnosis yourself. You can paste the generated report with any spreadsheet you like.": "Analyse der Datenbanknutzung und Erstellung eines TSV-Berichts zur Diagnose selbst. Sie können den generierten Bericht mit jedem Tabellenblatt einfügen, das Sie möchten.", + "Apply Latest Change if Conflicting": "Neueste Änderung anwenden, wenn Konflikte", + "Apply preset configuration": "Voreingestellte Konfiguration anwenden", + "Automatically broadcast changes to connected peers": "Änderungen automatisch an verbundene Peers senden", + "Automatically start P2P connection on launch": "P2P-Verbindung beim Start automatisch starten", + "Automatically Sync all files when opening Obsidian.": "Synchronisieren Sie automatisch alle Dateien, wenn Sie Obsidian öffnen.", "Back": "Zurück", "Back to non-configured": "Zurück auf nicht konfiguriert", + "Batch database update": "Update der Batch-Datenbank", + "Batch limit": "Batch-Grenz", + "Batch size": "Stapelgröße", + "Batch size of on-demand fetching": "Batch Größe des On-Demand-Fetchings", + "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.": "Vor v0.17.16 haben wir einen alten Adapter für die lokale Datenbank verwendet. Nun wird der neue Adapter bevorzugt. Es braucht jedoch lokale Datenbank-Umbau. Bitte deaktivieren Sie diese Taste, wenn Sie genug Zeit haben. Wenn Sie es aktiviert lassen, auch beim Abrufen aus der Remote-Datenbank, werden Sie aufgefordert, diese zu deaktivieren.", + "Bucket Name": "Name des Buckers", "Cancel": "Abbrechen", "Cancel Garbage Collection": "Garbage Collection abbrechen", + "Check": "Überprüfung", "Check and convert non-path-obfuscated files": "Nicht pfadverschleierte Dateien prüfen und konvertieren", "Check for documents that have not been converted to path-obfuscated IDs and convert them if necessary.": "Prüft Dokumente, die noch nicht in pfadverschleierte IDs umgewandelt wurden, und konvertiert sie bei Bedarf.", - "cmdConfigSync.showCustomizationSync": "Anpassungssynchronisation anzeigen", + "Chunk Splitter": "Chunk-Splitter", + "cmdConfigSync.showCustomizationSync": "Anpassungssynchronisierung anzeigen", + "Comma separated `.gitignore, .dockerignore`": "Comma trennte `.gitignore, .dockerignore`", "Compaction in progress on remote database...": "Komprimierung auf der Remote-Datenbank läuft...", "Compaction on remote database completed successfully.": "Die Komprimierung auf der Remote-Datenbank wurde erfolgreich abgeschlossen.", "Compaction on remote database failed.": "Die Komprimierung auf der Remote-Datenbank ist fehlgeschlagen.", @@ -28,6 +58,7 @@ "Compatibility (Metadata)": "Kompatibilität (Metadaten)", "Compatibility (Remote Database)": "Kompatibilität (Remote-Datenbank)", "Compatibility (Trouble addressed)": "Kompatibilität (Problembehebung)", + "Compute revisions for chunks": "Revisionen für Stücke berechnen", "Configure": "Konfigurieren", "Configure And Change Remote": "Remote konfigurieren und wechseln", "Configure E2EE": "E2EE konfigurieren", @@ -38,31 +69,88 @@ "Continue to Peer-to-Peer only setup": "Weiter zur reinen Peer-to-Peer-Einrichtung", "Continue to S3/MinIO/R2 setup": "Weiter zur S3/MinIO/R2-Einrichtung", "Copy": "Kopieren", + "Copy Report to clipboard": "Bericht an die Zwischenablage kopieren", "Cross-platform": "Plattformübergreifend", "Current adapter: {adapter}": "Aktueller Adapter: {adapter}", - "Customization Sync (Beta3)": "Anpassungssynchronisation (Beta3)", + "Customization sync": "Anpassungssynchronisierung", + "Customization Sync (Beta3)": "Anpassung Sync (Beta3)", + "Data Compression": "Datenkompression", "Database Adapter": "Datenbankadapter", + "Database Name": "Datenbankname", + "Database suffix": "Datenbank suffix", "Default": "Standard", + "Delay conflict resolution of inactive files": "Konfliktauflösung inaktiver Dateien verschieben", + "Delay merge conflict prompt for inactive files.": "Verzögern Sie die Zusammenführung von Konflikten für inaktive Dateien.", "Delete": "Löschen", "Delete all customization sync data": "Alle Anpassungssynchronisationsdaten löschen", "Delete all data on the remote server.": "Alle Daten auf dem Remote-Server löschen.", "Delete local database to reset or uninstall Self-hosted LiveSync": "Lokale Datenbank löschen, um Self-hosted LiveSync zurückzusetzen oder zu deinstallieren", + "Delete old metadata of deleted files on start-up": "Löschen Sie alte Metadaten gelöschter Dateien beim Start-up", "Delete Remote Configuration": "Remote-Konfiguration löschen", "Delete remote configuration '{name}'?": "Remote-Konfiguration „{name}“ löschen?", "desktop": "Desktop", "Device": "Gerät", - "Device name": "Gerätename", + "Device name": "Bezeichnung des Geräts", "Device Setup Method": "Einrichtungsmethode für das Gerät", + "dialog.yourLanguageAvailable": "Self-hosted LiveSync verfügt über Übersetzungen für deine Sprache, daher wurde die Einstellung %{Display language} aktiviert.\n\nHinweis: Noch sind nicht alle Meldungen übersetzt. Beiträge sind willkommen!\nHinweis 2: Wenn du ein Issue erstellst, **wechsle bitte zuerst zurück zu %{lang-def}** und erstelle danach Screenshots, Meldungen und Logs. Das kannst du im Einstellungsdialog erledigen.\nWir hoffen, dass die Nutzung angenehm ist!", + "dialog.yourLanguageAvailable.btnRevertToDefault": "%{lang-def} beibehalten", + "dialog.yourLanguageAvailable.Title": " Übersetzung ist verfügbar!", "Disables all synchronization and restart.": "Deaktiviert die gesamte Synchronisation und startet neu.", + "Disables logging, only shows notifications. Please disable if you report an issue.": "Deaktiviert Protokollierung, zeigt nur Benachrichtigungen. Bitte deaktivieren Sie, wenn Sie ein Problem melden.", + "Display Language": "Sprache anzeigen", "Display name": "Anzeigename", + "Do not check configuration mismatch before replication": "Überprüfen Sie die Konfigurationsfehlanpassung vor der Replikation", + "Do not keep metadata of deleted files.": "Halten Sie keine Metadaten von gelöschten Dateien.", + "Do not split chunks in the background": "Nicht teilen Stücke im Hintergrund", + "Do not use internal API": "Verwenden Sie nicht interne API", + "Doctor.Button.DismissThisVersion": "Nein, und fragen Sie nicht wieder bis zum nächsten Release", + "Doctor.Button.Fix": "Beheben Sie es", + "Doctor.Button.FixButNoRebuild": "Reparieren Sie es, aber kein Rebuild", + "Doctor.Button.No": "Nein", + "Doctor.Button.Skip": "Lassen Sie es wie", + "Doctor.Button.Yes": "Ja", + "Doctor.Dialogue.Main": "Hi! Config Doctor wurde wegen ${activateReason} aktiviert!\nUnd leider wurden einige Konfigurationen als mögliche Probleme erkannt.\nBitte seien Sie versichert. Wir lösen sie einzeln.\n\nUm Sie vor der Zeit wissen zu lassen, werden wir Sie über die folgenden Artikel fragen.\n\n${issues}\n\nSollen wir anfangen?", + "Doctor.Dialogue.MainFix": "\n## ${name}\n\n| Aktuell | Ideal |\n|:---:|:---:|\n| ${current} | ${ideal} |\n\n**Empfehlungsstufe:** ${level}\n\n### Warum wurde dies erkannt?\n\n${reason}\n\n${note}\n\nAuf den idealen Wert korrigieren?", + "Doctor.Dialogue.Title": "Selbstgehostete LiveSync Config Doctor", + "Doctor.Dialogue.TitleAlmostDone": "Fast fertig!", + "Doctor.Dialogue.TitleFix": "Problem behoben ${current}/${total}", + "Doctor.Level.Must": "müssen.", + "Doctor.Level.Necessary": "Notwendig", + "Doctor.Level.Optional": "Optional", + "Doctor.Level.Recommended": "Empfohlen", + "Doctor.Message.NoIssues": "Keine Probleme erkannt!", + "Doctor.Message.RebuildLocalRequired": "Achtung! Eine lokale Datenbank-Wiederaufbau ist erforderlich, um dies anzuwenden!", + "Doctor.Message.RebuildRequired": "Achtung! Um dies anzuwenden, ist ein Umbau erforderlich!", + "Doctor.Message.SomeSkipped": "Wir haben einige Probleme hinterlassen. Soll ich dich beim nächsten Start wieder fragen?", + "Doctor.RULES.E2EE_V02500.REASON": "Die End-to-End-Verschlüsselung ist jetzt robuster und schneller. Auch weil sich die bisherige E2EE in einer erneut umgesetzten Code-Review als kompromittiert erwiesen hat. Es sollte so schnell wie möglich angewendet werden. Entschuldigt euch wirklich für eure Unannehmlichkeiten. Und diese Einstellung ist nicht nach vorne kompatibel. Alle synchronisierten Geräte müssen auf v0.25.0 oder höher aktualisiert werden. Rebuilds sind nicht erforderlich und wird von der neuen Übertragung in das neue Format umgewandelt werden, Es wird jedoch empfohlen, wieder aufzubauen, wann immer möglich.", + "Document History": "Geschichte des Dokuments", "Duplicate": "Duplizieren", "Duplicate remote": "Remote duplizieren", "E2EE Configuration": "E2EE-Konfiguration", "Edge case addressing (Behaviour)": "Behandlung von Randfällen (Verhalten)", "Edge case addressing (Database)": "Behandlung von Randfällen (Datenbank)", "Edge case addressing (Processing)": "Behandlung von Randfällen (Verarbeitung)", + "Effectively a directory. Should end with `/`. e.g., `vault-name/`.": "Entspricht einem Verzeichnis. Sollte mit `/` enden, z. B. `vault-name/`.", "Emergency restart": "Notfallneustart", - "Encrypting sensitive configuration items": "Sensible Konfigurationseinträge verschlüsseln", + "Enable advanced features": "Ermöglichen Sie erweiterte Funktionen", + "Enable advanced mode": "Erweiterten Modus aktivieren", + "Enable customization sync": "Anpassungssynchronisation aktivieren", + "Enable Developers' Debug Tools.": "Aktiviere Debug Tools von Entwicklern.", + "Enable edge case treatment features": "Ermöglichen Sie Kantengehäusebehandlungsmerkmale", + "Enable forcePathStyle": "forcePathStyle aktivieren", + "Enable P2P Synchronization": "P2P-Synchronisierung aktivieren", + "Enable per-file customization sync": "Anpassungssynchronisierung pro Datei aktivieren", + "Enable power user mode": "Power-User-Modus aktivieren", + "Enable poweruser features": "Enable poweruser Features", + "Enable this if your Object Storage doesn't support CORS": "Aktivieren Sie dies, wenn Ihr Objektspeicher CORS nicht unterstützt", + "Enable this option to automatically apply the most recent change to documents even when it conflicts": "Ermöglichen Sie diese Option, selbst bei Konflikten automatisch die jüngste Änderung der Dokumente anzuwenden", + "Encrypt contents on the remote database. If you use the plugin's synchronization feature, enabling this is recommended.": "Verschlüsseln Sie Inhalte auf der Remote-Datenbank. Wenn Sie die Synchronisationsfunktion des Plugins verwenden, wird dies empfohlen.", + "Encrypting sensitive configuration items": "Verschlüsselung sensibler Konfigurationselemente", + "Encryption passphrase. If changed, you should overwrite the server's database with the new (encrypted) files.": "Verschlüsselungs-Passphrase. Wenn sie geändert wird, solltest du die Serverdatenbank mit den neuen verschlüsselten Dateien überschreiben.", + "Encryption phassphrase. If changed, you should overwrite the server's database with the new (encrypted) files.": "Verschlüsselung phassphrase. Wenn Sie sich geändert haben, sollten Sie die Datenbank des Servers mit den neuen (verschlüsselten) Dateien überschreiben.", + "End-to-End Encryption": "End-to-End-Verschlüsselung", + "Endpoint URL": "Endpunkt-URL", + "Enhance chunk size": "Verbessern Sie die Stückgröße", "Enter Server Information": "Serverinformationen eingeben", "Enter the server information manually": "Serverinformationen manuell eingeben", "Export": "Exportieren", @@ -70,10 +158,16 @@ "Failed to connect to remote for compaction. ${reason}": "Verbindung zur Remote-Datenbank für die Komprimierung fehlgeschlagen. ${reason}", "Failed to start one-shot replication before Garbage Collection. Garbage Collection Cancelled.": "Die Einmal-Replikation vor der Garbage Collection konnte nicht gestartet werden. Die Garbage Collection wurde abgebrochen.", "Failed to start replication after Garbage Collection.": "Die Replikation nach der Garbage Collection konnte nicht gestartet werden.", + "Fetch chunks on demand": "Fetch-Kissen auf Anfrage", + "Fetch database with previous behaviour": "Fetch-Datenbank mit vorherigem Verhalten", "Fetch remote settings": "Remote-Einstellungen abrufen", + "File prefix on the bucket": "Dateipräfix im Bucket", "File to resolve conflict": "Datei zur Konfliktlösung", + "Filename": "Dateiname", + "Files with modification times greater than this value (in seconds since the Unix epoch) will not have their events reflected. Set to 0 to disable this limit.": "Dateien mit Änderungszeiten größer als dieser Wert (Sekunden seit Unix-Epoch) werden nicht reflektiert. Setze 0, um diese Begrenzung zu deaktivieren.", "First, please select the option that best describes your current situation.": "Wählen Sie bitte zuerst die Option aus, die Ihre aktuelle Situation am besten beschreibt.", "Flag and restart": "Markieren und neu starten", + "Forces the file to be synced when opened.": "Erzwingt die zu synchronisierende Datei beim Öffnen.", "Fresh Start Wipe": "Für Neustart vollständig bereinigen", "Garbage Collection cancelled by user.": "Garbage Collection wurde vom Benutzer abgebrochen.", "Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.": "Garbage Collection abgeschlossen. Gelöschte Chunks: ${deletedChunks} / ${totalChunks}. Benötigte Zeit: ${seconds} Sekunden.", @@ -82,24 +176,189 @@ "Garbage Collection: Found ${unusedChunks} unused chunks to delete.": "Garbage Collection: ${unusedChunks} ungenutzte Chunks zum Löschen gefunden.", "Garbage Collection: Scanned ${scanned} / ~${docCount}": "Garbage Collection: ${scanned} / ~${docCount} gescannt", "Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": "Garbage Collection: Scan abgeschlossen. Gesamtzahl der Chunks: ${totalChunks}, verwendete Chunks: ${usedChunks}", + "Handle files as Case-Sensitive": "Handle Dateien als Case-Sensitive", + "Hatch": "Werkzeuge", "Hidden Files": "Versteckte Dateien", - "Hide completely": "Vollständig ausblenden", - "How to display network errors when the sync server is unreachable.": "Legt fest, wie Netzwerkfehler angezeigt werden, wenn der Synchronisationsserver nicht erreichbar ist.", + "Hide completely": "Verstecken vollständig", + "Highlight diff": "Unterschiede hervorheben", + "How to display network errors when the sync server is unreachable.": "Legt fest, wie Netzwerkfehler angezeigt werden, wenn der Synchronisierungsserver nicht erreichbar ist.", "How would you like to configure the connection to your server?": "Wie möchten Sie die Verbindung zu Ihrem Server konfigurieren?", "I am adding a device to an existing synchronisation setup": "Ich füge ein Gerät zu einer bestehenden Synchronisationseinrichtung hinzu", "I am setting this up for the first time": "Ich richte dies zum ersten Mal ein", "I know my server details, let me enter them": "Ich kenne meine Serverdaten, ich gebe sie selbst ein", - "If enabled, the ⛔ icon will be shown inside the status instead of the file warnings banner. No details will be shown.": "Wenn aktiviert, wird das Symbol ⛔ im Status statt im Dateiwarnungsbanner angezeigt. Es werden keine Details angezeigt.", + "If disabled(toggled), chunks will be split on the UI thread (Previous behaviour).": "Wenn deaktiviert (geknallt), werden Stücke auf dem UI-Gewinde aufgeteilt (Vorheriges Verhalten).", + "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.": "Wenn per-filed effiziente Anpassungssynchronisation verwendet wird. Wir brauchen eine kleine Migration, wenn wir dies ermöglichen. Und alle Geräte sollten auf v0.23.18 aktualisiert werden. Sobald wir dies aktiviert haben, haben wir eine Kompatibilität mit alten Versionen verloren.", + "If enabled, changes will be automatically broadcasted to all connected peers. Notified peers will start fetching the changes.": "Wenn aktiviert, werden Änderungen automatisch an alle verbundenen Peers gesendet. Benachrichtigte Peers beginnen dann mit dem Abrufen der Änderungen.", + "If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker.": "Wenn aktiviert, werden Stücke in höchstens 100 Stück aufgeteilt. Dedupe ist jedoch etwas schwächer.", + "If enabled, efficient per-file customization sync will be used. A minor migration is required when enabling this feature, and all devices must be updated to v0.23.18. Enabling this feature will result in losing compatibility with older versions.": "Wenn aktiviert, wird eine effiziente Anpassungssynchronisierung pro Datei verwendet. Beim Aktivieren ist eine kleine Migration erforderlich und alle Geräte müssen auf v0.23.18 aktualisiert sein. Danach geht die Kompatibilität mit älteren Versionen verloren.", + "If enabled, newly created chunks are temporarily kept within the document, and graduated to become independent chunks once stabilised.": "Wenn aktiviert, werden neu geschaffene Stücke vorübergehend innerhalb des Dokuments gehalten, und Absolventen, um unabhängige Stücke zu werden, sobald stabilisiert.", + "If enabled, the ⛔ icon will be shown inside the status instead of the file warnings banner. No details will be shown.": "Wenn aktiviert, wird das ⛔-Symbol innerhalb des Status angezeigt, anstatt der Datei warnt Banner. Es werden keine Details angezeigt.", + "If enabled, the file under 1kb will be processed in the UI thread.": "Wenn aktiviert, wird die Datei unter 1kb im UI-Gewinde verarbeitet.", + "If enabled, the forcePathStyle option will be used for bucket operations.": "Wenn aktiviert, wird forcePathStyle für Bucket-Operationen verwendet.", + "If enabled, the notification of hidden files change will be suppressed.": "Wenn aktiviert, wird die Benachrichtigung über versteckte Dateien ändern unterdrückt.", + "If enabled, the P2P connection will be automatically started when the application launches.": "Wenn aktiviert, wird die P2P-Verbindung beim Start der Anwendung automatisch gestartet.", + "If enabled, the plugin will not attempt to connect to the remote database even if the chunk was not found locally.": "Wenn aktiviert, versucht das Plugin nicht, eine Verbindung zur Remote-Datenbank herzustellen, auch wenn der Chunk lokal nicht gefunden wurde.", + "If enabled, the request API will be used to avoid `inevitable` CORS problems. This is a workaround and may not work in all cases. PLEASE READ THE DOCUMENTATION BEFORE USING THIS OPTION. This is a less-secure option.": "Wenn aktiviert, wird die request API verwendet, um unvermeidliche CORS-Probleme zu umgehen. Dies ist ein Workaround und funktioniert möglicherweise nicht immer. BITTE LIES DIE DOKUMENTATION, BEVOR DU DIESE OPTION VERWENDEST. Diese Option ist weniger sicher.", + "If this enabled, all chunks will be stored with the revision made from its content.": "Wenn aktiviert, werden alle Chunks mit einer aus ihrem Inhalt erzeugten Revision gespeichert.", + "If this enabled, all chunks will be stored with the revision made from its content. (Previous behaviour)": "Wenn dies aktiviert ist, werden alle Stücke mit der Überarbeitung aus ihrem Inhalt gespeichert. (Vorheriges Verhalten)", + "If this enabled, All files are handled as case-Sensitive (Previous behaviour).": "Wenn dies aktiviert ist, werden alle Dateien als case-Sensitive (Previous Verhalten) behandelt.", + "If this enabled, chunks will be split into semantically meaningful segments. Not all platforms support this feature.": "Wenn dies aktiviert ist, werden Stücke in semantisch aussagekräftige Segmente aufgeteilt. Nicht alle Plattformen unterstützen diese Funktion.", + "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.": "Wenn dies eingestellt ist, werden Änderungen an lokalen Dateien, die von den ignorierten Dateien angepasst werden, übersprungen. Remote-Änderungen werden mit lokalen ignorierten Dateien ermittelt.", + "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.": "Wenn diese Option aktiviert ist, hält PouchDB die Verbindung für 60 Sekunden offen, und wenn keine Änderung in dieser Zeit ankommt, schließt und öffnet die Steckdose, anstatt sie unbestimmt offen zu halten. Nützlich, wenn ein Proxy die Anforderungsdauer begrenzt, aber die Ressourcennutzung erhöhen kann.", "Ignore and Proceed": "Ignorieren und fortfahren", + "Ignore files": "Dateien ignorieren", "Ignore patterns": "Ausschlussmuster", "Import connection": "Verbindung importieren", + "Incubate Chunks in Document": "Inkubieren von Chunks in Dokument", "Initialise all journal history, On the next sync, every item will be received and sent.": "Gesamte Journal-Historie initialisieren. Beim nächsten Sync werden alle Elemente empfangen und gesendet.", + "Interval (sec)": "Intervall (Sek.)", + "K.exp": "Experimentelle", + "K.long_p2p_sync": "%{title_p2p_sync}", + "K.P2P": "%{Peer}-zu-%{Peer}", + "K.Peer": "Pestizid", + "K.ScanCustomization": "Scannen Anpassung", + "K.short_p2p_sync": "P2P Synthesizer", + "K.title_p2p_sync": "Peer-to-Peer-Synchronisierung", + "Keep empty folder": "leeren Ordner", + "lang_def": "Fehler", + "lang-de": "Deutsch", + "lang-def": "%{lang_def}", + "lang-es": "Español", + "lang-ja": "日本語", + "lang-ko": "한국어", + "lang-ru": "Русский", + "lang-zh": "简体中文", + "lang-zh-tw": "繁體中文", "Later": "Später", "Limit: {datetime} ({timestamp})": "Grenze: {datetime} ({timestamp})", + "LiveSync could not handle multiple vaults which have same name without different prefix, This should be automatically configured.": "LiveSync konnte nicht mehrere Gewölbe behandeln, die denselben Namen ohne verschiedene Präfix haben, Dies sollte automatisch konfiguriert werden.", + "liveSyncReplicator.beforeLiveSync": "Vor LiveSync, starten Sie OneShot einmal...", + "liveSyncReplicator.cantReplicateLowerValue": "Wir können den niedrigeren Wert nicht replizieren.", + "liveSyncReplicator.checkingLastSyncPoint": "Auf der Suche nach dem Punkt letzten synchronisierten Punkt.", + "liveSyncReplicator.couldNotConnectTo": "Konnte nicht mit ${uri} verbinden: ${name}\n(${db}", + "liveSyncReplicator.couldNotConnectToRemoteDb": "Konnte nicht mit Remote-Datenbank verbinden: ${d}", + "liveSyncReplicator.couldNotConnectToServer": "Konnte sich nicht mit dem Server verbinden.", + "liveSyncReplicator.couldNotConnectToURI": "Konnte nicht mit ${uri} verbinden:${dbRet}", + "liveSyncReplicator.couldNotMarkResolveRemoteDb": "Kann nicht markieren Remote-Datenbank zu lösen.", + "liveSyncReplicator.liveSyncBegin": "LiveSync beginnt...", + "liveSyncReplicator.lockRemoteDb": "Sperren Sie Remote-Datenbank, um Daten Korruption zu verhindern", + "liveSyncReplicator.markDeviceResolved": "Markieren Sie dieses Gerät als \"aufgelöst\".", + "liveSyncReplicator.oneShotSyncBegin": "OneShot Sync beginnt... (${syncMode})", + "liveSyncReplicator.remoteDbCorrupted": "Remote-Datenbank ist neuer oder beschädigt, stellen Sie sicher, dass die neueste Version von self-hosted-livesync installiert", + "liveSyncReplicator.remoteDbCreatedOrConnected": "Remote Datenbank erstellt oder vernetzt", + "liveSyncReplicator.remoteDbDestroyed": "Remote Datenbank zerstört", + "liveSyncReplicator.remoteDbDestroyError": "Etwas passierte auf Remote Database Destroy:", + "liveSyncReplicator.remoteDbMarkedResolved": "Die Remote-Datenbank wurde aufgelöst.", + "liveSyncReplicator.replicationClosed": "Zurück zur Übersicht", + "liveSyncReplicator.replicationInProgress": "Die Replikation ist bereits im Gange", + "liveSyncReplicator.retryLowerBatchSize": "Erneuter Versuch mit kleinerer Stapelgröße:${batch_size}/${batches_limit}", + "liveSyncReplicator.unlockRemoteDb": "Entsperren Sie Remote-Datenbank, um Daten Korruption zu verhindern", + "liveSyncSetting.errorNoSuchSettingItem": "Kein solcher Einstellungsartikel: ${key}", + "liveSyncSetting.originalValue": "Ursprünglich: ${value}", + "liveSyncSetting.valueShouldBeInRange": "Der Wert sollte ${min} < Wert < ${max}", + "liveSyncSettings.btnApply": "Anwendung", "Lock": "Sperren", "Lock Server": "Server sperren", "Lock the remote server to prevent synchronization with other devices.": "Sperrt den Remote-Server, um die Synchronisation mit anderen Geräten zu verhindern.", + "logPane.autoScroll": "Auto Scroll", + "logPane.logWindowOpened": "Fenster öffnen", + "logPane.pause": "Pausieren", + "logPane.title": "Selbstgehostetes LiveSync Log", + "logPane.wrap": "Zeilenumbruch", + "Maintenance": "Wartung", + "Maximum delay for batch database updating": "Maximale Verzögerung bei der Aktualisierung der Chargendatenbank", + "Maximum file modification time for reflected file events": "Maximale Dateiänderungszeit für reflektierte Dateiereignisse", + "Maximum file size": "Maximale Dateigröße", + "Maximum Incubating Chunk Size": "Maximale Inkubation Chunk-Größe", + "Maximum Incubating Chunks": "Maximale Inkubation von Chunks", + "Maximum Incubation Period": "Maximale Inkubationsdauer", + "Maximum size of chunks to send in one request": "Maximale Chunk-Größe pro Anfrage", + "MB": "MB", + "MB (0 to disable).": "MB (0 zu deaktivieren).", + "Memory cache size (by total characters)": "Speicher Cache Größe (nach Gesamtzeichen)", + "Memory cache size (by total items)": "Speicher Cache-Größe (nach Gesamtelementen)", + "Minimum delay for batch database updating": "Mindestverzögerung bei der Aktualisierung der Chargendatenbank", + "Minimum interval for syncing": "Mindestintervall für die Synchronisierung", + "moduleCheckRemoteSize.logCheckingStorageSizes": "Überprüfen der Speichergrößen", + "moduleCheckRemoteSize.logCurrentStorageSize": "Größe des entfernten Speichers: ${measuredSize}", + "moduleCheckRemoteSize.logExceededWarning": "Größe des entfernten Speichers ${measuredSize} überschreitet ${notifySize}", + "moduleCheckRemoteSize.logThresholdEnlarged": "Schwelle wurde auf ${size}MB erweitert", + "moduleCheckRemoteSize.msgConfirmRebuild": "Das kann ein bisschen lange dauern. Willst du jetzt wirklich alles wieder aufbauen?", + "moduleCheckRemoteSize.msgDatabaseGrowing": "**Ihre Datenbank wird größer!** Aber keine Sorge, wir können es jetzt ansprechen. Die Zeit vor dem Auslaufen aus dem Raum auf dem Remote-Speicher.\n\n| Gemessene Größe | Konfigurierte Größe |\n--- | --- |\n| ${estimatedSize} | ${maxSize}\n\n> [!MORE]-\n> Wenn Sie es schon seit vielen Jahren verwenden, kann es unreferenzierte Stücke - d.h. Müll - in der Datenbank ansammeln. Deshalb empfehlen wir, alles neu aufzubauen. Es wird wahrscheinlich viel kleiner werden.\n>\n> Wenn das Volumen Ihres Tresors einfach zunimmt, ist es besser, alles nach der Organisation der Dateien wieder aufzubauen. Self-hosted LiveSync löscht die tatsächlichen Daten nicht, auch wenn Sie sie löschen, um den Prozess zu beschleunigen. Es ist grob [documented](https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/tech info.md).\n>\n> Wenn Sie die Zunahme nicht ausmachen, können Sie die Benachrichtigungsgrenze um 100MB erhöhen. Dies ist der Fall, wenn Sie es auf Ihrem eigenen Server ausführen. Es ist jedoch besser, alles von Zeit zu Zeit wieder aufzubauen.\n>\n\n> (! WARNEN)\n> Wenn Sie alles neu aufbauen, stellen Sie sicher, dass alle Geräte synchronisiert sind. Das Plug-in wird jedoch so viel wie möglich verschmelzen.\n", + "moduleCheckRemoteSize.msgSetDBCapacity": "Wir können eine maximale Datenbank-Kapazitätswarnung festlegen, ** um Maßnahmen zu ergreifen, bevor Sie auf dem Remote-Speicher aus dem Raum laufen**.\nWollen Sie das aktivieren?\n\n> [!MORE]-\n> - 0: Warnen Sie nicht über die Speichergröße.\n> Dies wird empfohlen, wenn Sie genügend Platz auf dem Remote-Speicher haben, vor allem Sie selbst gehostet haben. Und Sie können die Speichergröße überprüfen und manuell wieder aufbauen.\n> - 800: Warnen, wenn die Speichergröße 800MB überschreitet.\n> Dies wird empfohlen, wenn Sie fly.io mit 1 GB Limit oder IBM Cloudant verwenden.\n> - 2000: Warnung, wenn die Speichergröße 2GB überschreitet.\n\nWenn wir die Grenze erreicht haben, werden wir aufgefordert, den Grenzwert Schritt für Schritt zu vergrößern.\n", + "moduleCheckRemoteSize.option2GB": "2GB (Standard)", + "moduleCheckRemoteSize.option800MB": "800MB (Cloudant, fly.io)", + "moduleCheckRemoteSize.optionAskMeLater": "Fragen Sie mich später", + "moduleCheckRemoteSize.optionDismiss": "Entlassung", + "moduleCheckRemoteSize.optionIncreaseLimit": "erhöhen auf ${newMax}MB", + "moduleCheckRemoteSize.optionNoWarn": "Nein, nie warnen bitte", + "moduleCheckRemoteSize.optionRebuildAll": "Alles neu aufbauen", + "moduleCheckRemoteSize.titleDatabaseSizeLimitExceeded": "Remote-Speichergröße überschritten die Grenze", + "moduleCheckRemoteSize.titleDatabaseSizeNotify": "Einrichtung der Datenbankgröße", + "moduleInputUIObsidian.defaultTitleConfirmation": "Bestätigung", + "moduleInputUIObsidian.defaultTitleSelect": "Wählen", + "moduleInputUIObsidian.optionNo": "Nein", + "moduleInputUIObsidian.optionYes": "Ja.", + "moduleLiveSyncMain.logAdditionalSafetyScan": "Zusätzliche Sicherheitsscan...", + "moduleLiveSyncMain.logLoadingPlugin": "Das Plugin wird geladen...", + "moduleLiveSyncMain.logPluginInitCancelled": "Plugin Initialisierung wurde durch ein Modul aufgehoben", + "moduleLiveSyncMain.logPluginVersion": "Selbstgehostete LiveSync v${manifestVersion} ${packageVersion}", + "moduleLiveSyncMain.logReadChangelog": "LiveSync hat aktualisiert, lesen Sie bitte das Changelog!", + "moduleLiveSyncMain.logSafetyScanCompleted": "Zusätzliche Sicherheitsprüfung abgeschlossen", + "moduleLiveSyncMain.logSafetyScanFailed": "Zusätzlicher Sicherheitsscan ist auf einem Modul gescheitert", + "moduleLiveSyncMain.logUnloadingPlugin": "Ausladen des Plugins...", + "moduleLiveSyncMain.logVersionUpdate": "LiveSync wurde aktualisiert, Im Falle von Updates wurde die automatische Synchronisation vorübergehend deaktiviert. Stellen Sie sicher, dass alle Geräte aktuell sind, bevor Sie diese aktivieren.", + "moduleLiveSyncMain.msgScramEnabled": "Self-hosted LiveSync wurde konfiguriert, um einige Ereignisse zu ignorieren. Ist das richtig?\n\n| Typ | Status | Hinweis |\n|:---:::---:----\n| Speicherereignisse | ${fileWatchingStatus} | Jede Änderung wird | | | | | | | | | |\n| Datenbank Events | ${parseReplicationStatus} | Jede synchronisierte Änderung wird verschoben |\n\nWillst du sie wieder aufnehmen und Obsidian neu starten?\n\n> [!DETAILS]-\n> Diese Fahnen werden vom Plug-in beim Umbau oder beim Abruf gesetzt. Wenn der Prozess abnormal endet, kann er unbeabsichtigt gehalten werden.\n> Wenn Sie sich nicht sicher sind, können Sie versuchen, diese Prozesse zu wiederholen. Achten Sie darauf, Ihren Tresor zu sichern.\n", + "moduleLiveSyncMain.optionKeepLiveSyncDisabled": "LiveSync deaktiviert halten", + "moduleLiveSyncMain.optionResumeAndRestart": "Wiederaufnahme von Obsidian", + "moduleLiveSyncMain.titleScramEnabled": "Scram aktivieren", + "moduleLocalDatabase.logWaitingForReady": "Warten auf bereit...", + "moduleLog.showLog": "Wir zeigen uns", + "moduleMigration.docUri": "https://github.com/vrtmrz/obsidian-livesync/blob/main/README.md#how-to-use", + "moduleMigration.fix0256.buttons.checkItLater": "Überprüfen Sie es später", + "moduleMigration.fix0256.buttons.DismissForever": "Ich habe es repariert und frage mich nicht wieder", + "moduleMigration.fix0256.buttons.fix": "Fehler", + "moduleMigration.fix0256.message": "Aufgrund eines kürzlichen Fehlers (in v0.25.6) wurden einige Dateien möglicherweise nicht korrekt in der Synchronisierungsdatenbank gespeichert.\nWir haben die Dateien geprüft und einige gefunden, die repariert werden müssen.\n\n**Dateien, die repariert werden können:**\n\n${files}\n\nFür diese Dateien gibt es im Speicher eine größenmäßig passende Originaldatei, daher sind sie wahrscheinlich wiederherstellbar.\nWir können sie verwenden, um die Datenbank zu reparieren. Klicke unten auf \"Reparieren\".\n\n${messageUnrecoverable}\n\nWenn du dies erneut ausführen möchtest, kannst du das in Hatch tun.\n", + "moduleMigration.fix0256.messageUnrecoverable": "**Files können auf diesem Gerät nicht fixiert werden:**\n\n${filesNotRecoverable}\n\nDiese Dateien haben inkonsistente Metadaten und können auf diesem Gerät nicht fixiert werden (vor allem können wir nicht festlegen, welche korrekt ist).\nUm sie wiederherzustellen, überprüfen Sie bitte Ihre anderen Geräte (auch durch diese Funktion) oder wiederherstellen sie manuell von einem Backup.\n", + "moduleMigration.fix0256.title": "Gebrochene Dateien wurden erkannt", + "moduleMigration.insecureChunkExist.buttons.fetch": "Ich habe die Fernbedienung schon wieder aufgebaut. Fetch aus der Ferne", + "moduleMigration.insecureChunkExist.buttons.later": "ich werde es später tun", + "moduleMigration.insecureChunkExist.buttons.rebuild": "Alles neu aufbauen", + "moduleMigration.insecureChunkExist.laterMessage": "Wir empfehlen dringend, dies so schnell wie möglich zu behandeln!", + "moduleMigration.insecureChunkExist.message": "Einige Stücke werden nicht sicher gespeichert und nicht in Datenbanken verschlüsselt.\n**Bitte die Datenbank neu aufbauen, um dieses Problem zu beheben**.\n\nWenn Ihre Remote-Datenbank nicht mit SSL konfiguriert ist, oder mit weniger sicheren Anmeldeinformationen, ** Sie sind in Gefahr, sensible Daten zu entwerfen*.\n\nHinweis: Bitte aktualisieren Sie Ihren Self-hosted LiveSync v0.25.6 oder höher auf alle Ihre Geräte und sichern Sie Ihren Tresor sicher.\nHinweis2: Wiederherstellen Alles und Fetch verbraucht etwas Zeit und Verkehr, bitte tun Sie es in Off-peak Stunden und stellen Sie eine stabile Netzwerkverbindung.\n", + "moduleMigration.insecureChunkExist.title": "Unsichere Stücke gefunden!", + "moduleMigration.logBulkSendCorrupted": "Senden Sie Stücke in Masse wurde aktiviert, aber diese Funktion war beschädigt. Tut mir leid für Ihre Unannehmlichkeiten. automatisch deaktiviert.", + "moduleMigration.logFetchRemoteTweakFailed": "Versäumt, Remote-Tweak-Werte zu holen", + "moduleMigration.logLocalDatabaseNotReady": "Etwas ging schief! Die lokale Datenbank ist nicht bereit", + "moduleMigration.logMigratedSameBehaviour": "Zu db:${current} mit dem gleichen Verhalten wie zuvor", + "moduleMigration.logMigrationFailed": "Migration fehlgeschlagen oder von ${old} auf ${current} storniert", + "moduleMigration.logRedflag2CreationFail": "Nicht zu schaffen redflag2", + "moduleMigration.logRemoteTweakUnavailable": "Kann nicht Remote-Tweak-Werte erhalten", + "moduleMigration.logSetupCancelled": "Das Setup wurde abgesagt, Self-hosted LiveSync wartet auf Ihr Setup!", + "moduleMigration.msgFetchRemoteAgain": "Wie Sie vielleicht schon wissen, hat der selbstgehostete LiveSync sein Standardverhalten und seine Datenbankstruktur verändert.\n\nUnd dank Ihrer Zeit und Mühe scheint die Remote-Datenbank bereits ausgewandert zu sein. Glückwunsch!\n\nAber wir brauchen etwas mehr. Die Konfiguration dieses Gerätes ist nicht mit der Remote-Datenbank kompatibel. Wir müssen die Remote-Datenbank wieder holen. Sollen wir jetzt wieder von der Fernbedienung holen?\n\n Anmerkung: Wir können nicht synchronisieren, bis die Konfiguration geändert wurde und die Datenbank wieder gestartet wurde.\n Note2: Die Stücke sind völlig unveränderlich, wir können nur die Metadaten und Differenz holen.", + "moduleMigration.msgInitialSetup": "Dein Gerät wurde **noch nicht eingerichtet**. Ich führe dich durch die Einrichtung.\n\nBitte beachte, dass jeder Dialoginhalt in die Zwischenablage kopiert werden kann. Wenn du ihn später brauchst, kannst du ihn in eine Obsidian-Notiz einfügen. Du kannst ihn auch mit einem Übersetzungstool in deine Sprache übersetzen.\n\nZuerst: Hast du eine **Setup URI**?\n\nHinweis: Wenn du nicht weißt, was das ist, lies bitte die [Dokumentation](${URI_DOC}).", + "moduleMigration.msgRecommendSetupUri": "Wir empfehlen dringend, eine Setup URI zu erzeugen und zu verwenden.\nWenn du damit nicht vertraut bist, lies bitte die [Dokumentation](${URI_DOC}) (nochmals Entschuldigung, aber das ist wichtig).\n\nWie möchtest du die Verbindung manuell einrichten?", + "moduleMigration.msgSinceV02321": "Seit v0.23.21 hat der selbstgehostete LiveSync das Standardverhalten und die Datenbankstruktur verändert. Es wurden folgende Änderungen vorgenommen:\n\n1. **Case Empfindlichkeit der Dateinamen*\nDer Umgang mit Dateinamen ist jetzt case-insensitive. Dies ist eine günstige Änderung für die meisten Plattformen, andere als Linux und iOS, die nicht verwalten Dateiname Fall Sensibilität effektiv.\n(Bei diesen wird eine Warnung für Dateien mit dem gleichen Namen angezeigt, aber verschiedene Fälle).\n\n2. **Bearbeitung der Stücke*\nChunks sind unveränderlich, wodurch ihre Revisionen behoben werden können. Diese Änderung wird die Leistung der Dateisparen verbessern.\n\n Um diese Änderungen zu aktivieren, müssen sowohl Remote- als auch lokale Datenbanken wieder aufgebaut werden. Dieser Prozess dauert ein paar Minuten, und wir empfehlen, es zu tun, wenn Sie viel Zeit haben.\n\n- Wenn Sie das bisherige Verhalten beibehalten möchten, können Sie diesen Prozess mit `${KEEP}` überspringen.\n- Wenn Sie nicht genug Zeit haben, wählen Sie bitte `${DISMISS}`. Sie werden später wieder aufgefordert.\n- Wenn Sie die Datenbank auf einem anderen Gerät wieder aufgebaut haben, wählen Sie bitte `${DISMISS}` aus und versuchen Sie erneut zu synchronisieren. Da ein Unterschied erkannt wurde, werden Sie erneut aufgefordert.", + "moduleMigration.optionAdjustRemote": "Anpassen der Fernbedienung", + "moduleMigration.optionDecideLater": "Entscheiden Sie es später", + "moduleMigration.optionEnableBoth": "Ermöglicht beide", + "moduleMigration.optionEnableFilenameCaseInsensitive": "Nur #1 aktivieren", + "moduleMigration.optionEnableFixedRevisionForChunks": "Nur #2 aktivieren", + "moduleMigration.optionHaveSetupUri": "Ja, ich habe", + "moduleMigration.optionKeepPreviousBehaviour": "Vorheriges Verhalten", + "moduleMigration.optionManualSetup": "Alle manuell einrichten", + "moduleMigration.optionNoAskAgain": "Nein, bitte noch mal fragen", + "moduleMigration.optionNoSetupUri": "Nein, ich habe nicht", + "moduleMigration.optionRemindNextLaunch": "Erinnern Sie mich an den nächsten Start", + "moduleMigration.optionSetupViaP2P": "Mit %{short_p2p_sync} einrichten", + "moduleMigration.optionSetupWizard": "Bring mich in den Setup-Assistenten", + "moduleMigration.optionYesFetchAgain": "Ja, wieder holen.", + "moduleMigration.titleCaseSensitivity": "Fallempfindlichkeit", + "moduleMigration.titleRecommendSetupUri": "Empfehlung zur Verwendung Setup-URI", + "moduleMigration.titleWelcome": "Willkommen bei Self-hosted LiveSync", + "moduleObsidianMenu.replicate": "Replika", "More actions": "Weitere Aktionen", + "Move remotely deleted files to the trash, instead of deleting.": "Bewegen Sie entfernt gelöschte Dateien in den Müll, anstatt zu löschen.", "Network warning style": "Stil der Netzwerkwarnung", "New Remote": "Neues Remote", "No connected device information found. Cancelling Garbage Collection.": "Keine Informationen zu verbundenen Geräten gefunden. Garbage Collection wird abgebrochen.", @@ -109,50 +368,186 @@ "Node Information Missing": "Knoteninformationen fehlen", "Non-Synchronising files": "Nicht zu synchronisierende Dateien", "Normal Files": "Normale Dateien", + "Not all messages have been translated. And, please revert to \"Default\" when reporting errors.": "Nicht alle Nachrichten wurden übersetzt. Wenn Sie Fehler melden, wenden Sie sich bitte an \"Default\".", + "Notify all setting files": "Benachrichtigen Sie alle Einstellungsdateien", + "Notify customized": "Benachrichtigen Sie uns", + "Notify when other device has newly customized.": "Benachrichtigen, wenn ein anderes Gerät neu angepasst ist.", + "Notify when the estimated remote storage size exceeds on start up": "Benachrichtigen, wenn die geschätzte Remote-Speichergröße beim Start übersteigt", + "Now we can choose how to split the chunks; V3 is the most efficient. If you have troubled, please make this Default or Legacy.": "Jetzt kann ausgewählt werden, wie Chunks geteilt werden; V3 ist am effizientesten. Bei Problemen wähle Default oder Legacy.", + "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.": "Anzahl der Chargen zu einem Zeitpunkt zu verarbeiten. Defaults auf 40. Mindestens 2. Dies zusammen mit der Batch-Größe steuert, wie viele Doks zu einer Zeit im Speicher gehalten werden.", + "Number of changes to sync at a time. Defaults to 50. Minimum is 2.": "Anzahl der Änderungen beim Synchronisieren zu einer Zeit. Defaults zu 50. Mindestens 2.", "Obsidian version": "Obsidian-Version", - "obsidianLiveSyncSettingTab.btnApply": "Anwenden", - "obsidianLiveSyncSettingTab.btnDisable": "Deaktivieren", - "obsidianLiveSyncSettingTab.btnNext": "Weiter", - "obsidianLiveSyncSettingTab.buttonNext": "Weiter", - "obsidianLiveSyncSettingTab.defaultLanguage": "Standardsprache", - "obsidianLiveSyncSettingTab.labelDisabled": "⏹️ : Deaktiviert", - "obsidianLiveSyncSettingTab.labelEnabled": "🔁 : Aktiviert", - "obsidianLiveSyncSettingTab.logConfiguredDisabled": "Konfigurierter Synchronisationsmodus: DEAKTIVIERT", + "obsidianLiveSyncSettingTab.btnApply": "Anwendung", + "obsidianLiveSyncSettingTab.btnCheck": "Überprüfung", + "obsidianLiveSyncSettingTab.btnCopy": "Kopie", + "obsidianLiveSyncSettingTab.btnDisable": "Nicht verfügbar", + "obsidianLiveSyncSettingTab.btnDiscard": "Verwerfen", + "obsidianLiveSyncSettingTab.btnEnable": "Ermöglichen", + "obsidianLiveSyncSettingTab.btnFix": "Fehler", + "obsidianLiveSyncSettingTab.btnGotItAndUpdated": "Ich habe es und aktualisiert.", + "obsidianLiveSyncSettingTab.btnNext": "Nächste", + "obsidianLiveSyncSettingTab.btnStart": "Starten", + "obsidianLiveSyncSettingTab.btnTest": "Prüfung", + "obsidianLiveSyncSettingTab.btnUse": "Verwendung", + "obsidianLiveSyncSettingTab.buttonFetch": "Gebühren", + "obsidianLiveSyncSettingTab.buttonNext": "Nächste", + "obsidianLiveSyncSettingTab.defaultLanguage": "Fehler", + "obsidianLiveSyncSettingTab.descConnectSetupURI": "Dies ist die empfohlene Methode, Self-hosted LiveSync mit einem Setup-URI einzurichten.", + "obsidianLiveSyncSettingTab.descCopySetupURI": "Perfekt für die Einrichtung eines neuen Gerätes!", + "obsidianLiveSyncSettingTab.descEnableLiveSync": "Nur aktivieren Sie dies nach der Konfiguration entweder der beiden oben genannten Optionen oder beenden Sie alle Konfiguration manuell.", + "obsidianLiveSyncSettingTab.descFetchConfigFromRemote": "Fetch notwendige Einstellungen von bereits konfigurierten Remote-Server.", + "obsidianLiveSyncSettingTab.descManualSetup": "Nicht empfohlen, aber nützlich, wenn Sie kein Setup-URI haben", + "obsidianLiveSyncSettingTab.descTestDatabaseConnection": "Datenbankverbindung öffnen. Wird die Remote-Datenbank nicht gefunden und Sie haben die Erlaubnis, eine Datenbank zu erstellen, wird die Datenbank erstellt.", + "obsidianLiveSyncSettingTab.descValidateDatabaseConfig": "Überprüfen und beheben Sie alle möglichen Probleme mit der Datenbank config.", + "obsidianLiveSyncSettingTab.errAccessForbidden": "❗ Zugang verboten.", + "obsidianLiveSyncSettingTab.errCannotContinueTest": "Wir konnten den Test nicht fortsetzen.", + "obsidianLiveSyncSettingTab.errCorsCredentials": "❗ cors.credentials ist falsch", + "obsidianLiveSyncSettingTab.errCorsNotAllowingCredentials": "❗ CORS erlaubt keine Anmeldeinformationen", + "obsidianLiveSyncSettingTab.errCorsOrigins": "❗ cors.origins ist falsch", + "obsidianLiveSyncSettingTab.errEnableCors": "❗ httpd.enable cors ist falsch", + "obsidianLiveSyncSettingTab.errEnableCorsChttpd": "❗ chttpd.enable cors ist falsch", + "obsidianLiveSyncSettingTab.errMaxDocumentSize": "❗ codb.max document size ist niedrig)", + "obsidianLiveSyncSettingTab.errMaxRequestSize": "❗ chttpd.max http request size ist niedrig)", + "obsidianLiveSyncSettingTab.errMissingWwwAuth": "❗ httpd. WWW-Authenticate fehlt", + "obsidianLiveSyncSettingTab.errRequireValidUser": "❗ chttpd.require valid user ist falsch.", + "obsidianLiveSyncSettingTab.errRequireValidUserAuth": "❗ chttpd auth.require valid user ist falsch.", + "obsidianLiveSyncSettingTab.labelDisabled": "⏹️ : Behinderte", + "obsidianLiveSyncSettingTab.labelEnabled": "🔁 : Ermöglicht", + "obsidianLiveSyncSettingTab.levelAdvanced": " (Erweitert)", + "obsidianLiveSyncSettingTab.levelEdgeCase": "(Edge Case)", + "obsidianLiveSyncSettingTab.levelPowerUser": "(Power User)", + "obsidianLiveSyncSettingTab.linkOpenInBrowser": "Öffnen im Browser", + "obsidianLiveSyncSettingTab.linkPageTop": "Seite oben", + "obsidianLiveSyncSettingTab.linkTipsAndTroubleshooting": "Tipps und Fehlerbehebung", + "obsidianLiveSyncSettingTab.linkTroubleshooting": "/docs/troubleshooting.md", + "obsidianLiveSyncSettingTab.logCannotUseCloudant": "Diese Funktion kann nicht mit IBM Cloudant verwendet werden.", + "obsidianLiveSyncSettingTab.logCheckingConfigDone": "Überprüfung der Konfiguration", + "obsidianLiveSyncSettingTab.logCheckingConfigFailed": "Überprüfung der Konfiguration fehlgeschlagen", + "obsidianLiveSyncSettingTab.logCheckingDbConfig": "Überprüfung der Datenbankkonfiguration", + "obsidianLiveSyncSettingTab.logCheckPassphraseFailed": "ERROR: Versäumt, Passphrase mit dem Remoteserver zu überprüfen:\n${db}.", + "obsidianLiveSyncSettingTab.logConfiguredDisabled": "Konfigurierter Synchronisationsmodus: DISABLED", "obsidianLiveSyncSettingTab.logConfiguredLiveSync": "Konfigurierter Synchronisationsmodus: LiveSync", "obsidianLiveSyncSettingTab.logConfiguredPeriodic": "Konfigurierter Synchronisationsmodus: Periodisch", - "obsidianLiveSyncSettingTab.logSelectAnyPreset": "Wählen Sie eine beliebige Voreinstellung aus.", - "obsidianLiveSyncSettingTab.msgConfigCheckFailed": "Die Konfigurationsprüfung ist fehlgeschlagen. Trotzdem fortfahren?", - "obsidianLiveSyncSettingTab.msgEnableEncryptionRecommendation": "Wir empfehlen, Ende-zu-Ende-Verschlüsselung und Pfadverschleierung zu aktivieren. Möchten Sie wirklich ohne Verschlüsselung fortfahren?", - "obsidianLiveSyncSettingTab.msgFetchConfigFromRemote": "Möchten Sie die Konfiguration vom Remote-Server abrufen?", - "obsidianLiveSyncSettingTab.msgGenerateSetupURI": "Alles fertig! Möchten Sie eine Setup-URI erzeugen, um andere Geräte einzurichten?", - "obsidianLiveSyncSettingTab.msgInvalidPassphrase": "Ihre Verschlüsselungs-Passphrase könnte ungültig sein. Möchten Sie wirklich fortfahren?", - "obsidianLiveSyncSettingTab.msgSelectAndApplyPreset": "Bitte wählen und übernehmen Sie eine beliebige Voreinstellung, um den Assistenten abzuschließen.", - "obsidianLiveSyncSettingTab.nameDisableHiddenFileSync": "Synchronisation versteckter Dateien deaktivieren", - "obsidianLiveSyncSettingTab.nameEnableHiddenFileSync": "Synchronisation versteckter Dateien aktivieren", - "obsidianLiveSyncSettingTab.nameHiddenFileSynchronization": "Synchronisation versteckter Dateien", - "obsidianLiveSyncSettingTab.optionDisableAllAutomatic": "Alle automatischen Vorgänge deaktivieren", - "obsidianLiveSyncSettingTab.optionLiveSync": "LiveSync-Modus", - "obsidianLiveSyncSettingTab.optionOnEvents": "Bei Ereignissen", - "obsidianLiveSyncSettingTab.optionPeriodicAndEvents": "Periodisch und bei Ereignissen", - "obsidianLiveSyncSettingTab.optionPeriodicWithBatch": "Periodisch mit Stapelverarbeitung", - "obsidianLiveSyncSettingTab.titleAppearance": "Darstellung", - "obsidianLiveSyncSettingTab.titleConflictResolution": "Konfliktbehandlung", + "obsidianLiveSyncSettingTab.logCouchDbConfigFail": "CouchDB Konfiguration: ${title} gescheitert", + "obsidianLiveSyncSettingTab.logCouchDbConfigSet": "CouchDB-Konfiguration: ${title} -> ${key} auf ${value} setzen", + "obsidianLiveSyncSettingTab.logCouchDbConfigUpdated": "CouchDB Konfiguration: ${title} erfolgreich aktualisiert", + "obsidianLiveSyncSettingTab.logDatabaseConnected": "Datenbank verbunden", + "obsidianLiveSyncSettingTab.logEncryptionNoPassphrase": "Sie können keine Verschlüsselung ohne Passphrase aktivieren", + "obsidianLiveSyncSettingTab.logEncryptionNoSupport": "Ihr Gerät unterstützt keine Verschlüsselung.", + "obsidianLiveSyncSettingTab.logErrorOccurred": "Ein Fehler ist aufgetreten!", + "obsidianLiveSyncSettingTab.logEstimatedSize": "Geschätzte Größe: ${size}", + "obsidianLiveSyncSettingTab.logPassphraseInvalid": "Passphrase ist nicht gültig, bitte reparieren.", + "obsidianLiveSyncSettingTab.logPassphraseNotCompatible": "ERROR: Passphrase ist nicht mit dem Remoteserver kompatibel! Bitte überprüfen Sie es nochmal!", + "obsidianLiveSyncSettingTab.logRebuildNote": "Die Synchronisierung wurde deaktiviert, ggf. abgeholt und wieder aktiviert.", + "obsidianLiveSyncSettingTab.logSelectAnyPreset": "Wählen Sie eine Voreinstellung aus.", + "obsidianLiveSyncSettingTab.logServerConfigurationCheck": "Serverkonfiguration prüfen", + "obsidianLiveSyncSettingTab.msgAreYouSureProceed": "Bist du sicher?", + "obsidianLiveSyncSettingTab.msgChangesNeedToBeApplied": "Änderungen müssen angewendet werden!", + "obsidianLiveSyncSettingTab.msgConfigCheck": "- Config check---", + "obsidianLiveSyncSettingTab.msgConfigCheckFailed": "Die Konfigurationsprüfung ist fehlgeschlagen. Willst du trotzdem weitermachen?", + "obsidianLiveSyncSettingTab.msgConnectionCheck": "- Verbindungskontrolle...", + "obsidianLiveSyncSettingTab.msgConnectionProxyNote": "Wenn Sie Probleme mit dem Verbindungs-Check haben (auch nach der Prüfung config), überprüfen Sie bitte Ihre umgekehrte Proxy-Konfiguration.", + "obsidianLiveSyncSettingTab.msgCurrentOrigin": "Aktueller Ursprung: ${origin}", + "obsidianLiveSyncSettingTab.msgDiscardConfirmation": "Möchten Sie wirklich bestehende Einstellungen und Datenbanken verwerfen?", + "obsidianLiveSyncSettingTab.msgDone": "- Done...", + "obsidianLiveSyncSettingTab.msgEnableCors": "Setzen Sie httpd.enable cors", + "obsidianLiveSyncSettingTab.msgEnableCorsChttpd": "chttpd.enable cors einstellen", + "obsidianLiveSyncSettingTab.msgEnableEncryptionRecommendation": "Wir empfehlen, die End-To-End-Verschlüsselung und Path Obfuscation zu aktivieren. Sind Sie sicher, dass Sie ohne Verschlüsselung fortfahren wollen?", + "obsidianLiveSyncSettingTab.msgFetchConfigFromRemote": "Möchten Sie den Config vom Remote Server holen?", + "obsidianLiveSyncSettingTab.msgGenerateSetupURI": "Alles erledigt! Möchten Sie eine Setup-URI erstellen, um andere Geräte einzurichten?", + "obsidianLiveSyncSettingTab.msgIfConfigNotPersistent": "Wenn die Serverkonfiguration nicht persistent ist (z.B. auf dem Docker ausgeführt), können sich die Werte hier ändern. Sobald Sie eine Verbindung herstellen können, aktualisieren Sie bitte die Einstellungen in der local.ini des Servers.", + "obsidianLiveSyncSettingTab.msgInvalidPassphrase": "Ihre Verschlüsselungspassphrase könnte ungültig sein. Bist du sicher, dass du weitermachen willst?", + "obsidianLiveSyncSettingTab.msgNewVersionNote": "Hier wegen einer Upgrade-Benachrichtigung? Bitte prüfe den Versionsverlauf. Wenn alles in Ordnung ist, klicke auf die Schaltfläche. Normalerweise wirst du nur einmal benachrichtigt.", + "obsidianLiveSyncSettingTab.msgNonHTTPSInfo": "Konfiguriert als nicht-HTTPS URI. Seien Sie gewarnt, dass dies nicht auf mobilen Geräten funktionieren kann.", + "obsidianLiveSyncSettingTab.msgNonHTTPSWarning": "Kann nicht mit nicht-HTTPS URI verbinden. Bitte aktualisieren Sie Ihre config und versuchen Sie es erneut.", + "obsidianLiveSyncSettingTab.msgNotice": "-------", + "obsidianLiveSyncSettingTab.msgObjectStorageWarning": "WARNING: Diese Funktion ist ein Work In Progress, also beachten Sie bitte Folgendes:\n- Nur Architektur anhängen. Um den Speicher zu schrumpfen, ist ein Rebuild erforderlich.\n- Etwas zerbrechlich.\n- Beim ersten Synchronisieren wird die gesamte Geschichte aus der Ferne übertragen. Achten Sie auf Datenkappen und langsame Geschwindigkeiten.\n- Nur Unterschiede werden live synchronisiert.\n\nWenn Sie in irgendwelche Probleme laufen oder Ideen über diese Funktion haben, erstellen Sie bitte ein Thema auf GitHub.\nIch schätze Sie für Ihre große Hingabe.", + "obsidianLiveSyncSettingTab.msgOriginCheck": "Herkunftsprüfung: ${org}", + "obsidianLiveSyncSettingTab.msgRebuildRequired": "Zum Anwenden der Änderungen müssen die Datenbanken neu aufgebaut werden. Bitte wähle aus, wie die Änderungen angewendet werden sollen.\n\n
\nLegende\n\n| Symbol | Bedeutung |\n|: ------ :| ------- |\n| ⇔ | Aktuell |\n| ⇄ | Zum Ausgleichen synchronisieren |\n| ⇐,⇒ | Mit Überschreiben übertragen |\n| ⇠,⇢ | Von der anderen Seite mit Überschreiben übertragen |\n\n
\n\n## ${OPTION_REBUILD_BOTH}\nKurzfassung: 📄 ⇒¹ 💻 ⇒² 🛰️ ⇢ⁿ 💻 ⇄ⁿ⁺¹ 📄\nLokale und entfernte Datenbank mit den vorhandenen Dateien dieses Geräts neu aufbauen.\nDadurch werden andere Geräte ausgesperrt; sie müssen anschließend Daten abrufen.\n## ${OPTION_FETCH}\nKurzfassung: 📄 ⇄² 💻 ⇐¹ 🛰️ ⇔ 💻 ⇔ 📄\nDie lokale Datenbank initialisieren und mit Daten aus der entfernten Datenbank neu aufbauen.\nDies umfasst auch den Fall, dass die entfernte Datenbank bereits neu aufgebaut wurde.\n## ${OPTION_ONLY_SETTING}\nNur die Einstellungen speichern. **Achtung: Dies kann zu Datenbeschädigung führen**; normalerweise ist ein Neuaufbau der Datenbank erforderlich.", + "obsidianLiveSyncSettingTab.msgSelectAndApplyPreset": "Bitte wählen Sie aus und wenden Sie alle Voreinstellungen an, um den Assistenten abzuschließen.", + "obsidianLiveSyncSettingTab.msgSetCorsCredentials": "cors.credentials setzen", + "obsidianLiveSyncSettingTab.msgSetCorsOrigins": "cors.origins setzen", + "obsidianLiveSyncSettingTab.msgSetMaxDocSize": "Set Couchdb.max document size", + "obsidianLiveSyncSettingTab.msgSetMaxRequestSize": "chttpd.max http request size", + "obsidianLiveSyncSettingTab.msgSetRequireValidUser": "chttpd.require valid user = true", + "obsidianLiveSyncSettingTab.msgSetRequireValidUserAuth": "chttpd auth.require valid user = true", + "obsidianLiveSyncSettingTab.msgSettingModified": "Die Einstellung \"${setting}\" wurde auf einem anderen Gerät geändert. Klicke {HERE}, um die Einstellungen neu zu laden. Klicke erneut auf denselben Wert, um ihn zu überschreiben.", + "obsidianLiveSyncSettingTab.msgSettingsUnchangeableDuringSync": "Diese Einstellungen können während der Synchronisation nicht geändert werden. Bitte deaktivieren Sie alle Synchronisationen in den \"Sync Settings\", um zu entsperren.", + "obsidianLiveSyncSettingTab.msgSetWwwAuth": "Setzen Sie httpd. WWW-Authenticate", + "obsidianLiveSyncSettingTab.nameApplySettings": "Einstellungen anwenden", + "obsidianLiveSyncSettingTab.nameConnectSetupURI": "Verbinden mit Setup-URI", + "obsidianLiveSyncSettingTab.nameCopySetupURI": "Kopieren Sie die aktuellen Einstellungen auf ein Setup-URI", + "obsidianLiveSyncSettingTab.nameDisableHiddenFileSync": "Verschlüsselte Dateien synchronisieren", + "obsidianLiveSyncSettingTab.nameDiscardSettings": "vorhandene Einstellungen und Datenbanken deaktivieren", + "obsidianLiveSyncSettingTab.nameEnableHiddenFileSync": "Versteckte Dateien synchronisieren", + "obsidianLiveSyncSettingTab.nameEnableLiveSync": "LiveSync aktivieren", + "obsidianLiveSyncSettingTab.nameHiddenFileSynchronization": "Versteckte Dateisynchronisation", + "obsidianLiveSyncSettingTab.nameManualSetup": "Manuell Setup", + "obsidianLiveSyncSettingTab.nameTestConnection": "Testanschluss", + "obsidianLiveSyncSettingTab.nameTestDatabaseConnection": "Prüfdatenbankanschluss", + "obsidianLiveSyncSettingTab.nameValidateDatabaseConfig": "Validierung der Datenbankkonfiguration", + "obsidianLiveSyncSettingTab.okAdminPrivileges": "✔ Sie haben Administratorrechte.", + "obsidianLiveSyncSettingTab.okCorsCredentials": "✔ cors.credentials ist ok.", + "obsidianLiveSyncSettingTab.okCorsCredentialsForOrigin": "CORS Anmeldeinformationen OK", + "obsidianLiveSyncSettingTab.okCorsOriginMatched": "✔ CORS Ursprung OK", + "obsidianLiveSyncSettingTab.okCorsOrigins": "✔ cors.origins ist ok.", + "obsidianLiveSyncSettingTab.okEnableCors": "✔ httpd.enable cors ist ok.", + "obsidianLiveSyncSettingTab.okEnableCorsChttpd": "✔ chttpd.enable cors ist ok.", + "obsidianLiveSyncSettingTab.okMaxDocumentSize": "✔ codb.max document size ist ok.", + "obsidianLiveSyncSettingTab.okMaxRequestSize": "✔ chttpd.max http request size ist ok.", + "obsidianLiveSyncSettingTab.okRequireValidUser": "✔ chttpd.require valid user ist ok.", + "obsidianLiveSyncSettingTab.okRequireValidUserAuth": "✔ chttpd auth.require valid user ist ok.", + "obsidianLiveSyncSettingTab.okWwwAuth": "✔ httpd. WWW-Authenticate ist ok.", + "obsidianLiveSyncSettingTab.optionApply": "Anwendung", + "obsidianLiveSyncSettingTab.optionCancel": "Abbrechen", + "obsidianLiveSyncSettingTab.optionCouchDB": "CouchDB", + "obsidianLiveSyncSettingTab.optionDisableAllAutomatic": "Alle Automatik deaktivieren", + "obsidianLiveSyncSettingTab.optionFetchFromRemote": "Fetch von Remote", + "obsidianLiveSyncSettingTab.optionHere": "HIER", + "obsidianLiveSyncSettingTab.optionLiveSync": "LiveSync", + "obsidianLiveSyncSettingTab.optionMinioS3R2": "MinIO, S3, R2", + "obsidianLiveSyncSettingTab.optionOkReadEverything": "Okay, ich habe alles gelesen.", + "obsidianLiveSyncSettingTab.optionOnEvents": "Auf Veranstaltungen", + "obsidianLiveSyncSettingTab.optionPeriodicAndEvents": "Periodisch und auf Veranstaltungen", + "obsidianLiveSyncSettingTab.optionPeriodicWithBatch": "Periodische W/ Batch", + "obsidianLiveSyncSettingTab.optionRebuildBoth": "Beides von diesem Gerät wieder aufbauen", + "obsidianLiveSyncSettingTab.optionSaveOnlySettings": "(Danger) Nur Einstellungen speichern", + "obsidianLiveSyncSettingTab.panelChangeLog": "Änderung der Registrierung", + "obsidianLiveSyncSettingTab.panelGeneralSettings": "Allgemeine Einstellungen", + "obsidianLiveSyncSettingTab.panelPrivacyEncryption": "Datenschutz und Verschlüsselung", + "obsidianLiveSyncSettingTab.panelRemoteConfiguration": "Fernkonfiguration", + "obsidianLiveSyncSettingTab.panelSetup": "Einrichtung", + "obsidianLiveSyncSettingTab.serverVersion": "Server-Info: ${info}", + "obsidianLiveSyncSettingTab.titleActiveRemoteServer": "Aktiver Remote-Server", + "obsidianLiveSyncSettingTab.titleAppearance": "Erscheinung", + "obsidianLiveSyncSettingTab.titleConflictResolution": "Konfliktlösung", "obsidianLiveSyncSettingTab.titleCongratulations": "Glückwunsch!", - "obsidianLiveSyncSettingTab.titleCouchDB": "CouchDB-Server", - "obsidianLiveSyncSettingTab.titleDeletionPropagation": "Weitergabe von Löschungen", + "obsidianLiveSyncSettingTab.titleCouchDB": "CouchDB", + "obsidianLiveSyncSettingTab.titleDeletionPropagation": "Auslieferungsersuchen", "obsidianLiveSyncSettingTab.titleEncryptionNotEnabled": "Verschlüsselung ist nicht aktiviert", - "obsidianLiveSyncSettingTab.titleEncryptionPassphraseInvalid": "Ungültige Verschlüsselungs-Passphrase", + "obsidianLiveSyncSettingTab.titleEncryptionPassphraseInvalid": "Verschlüsselung Passphrase Invalid", + "obsidianLiveSyncSettingTab.titleExtraFeatures": "Ermöglichen Sie zusätzliche und erweiterte Funktionen", "obsidianLiveSyncSettingTab.titleFetchConfig": "Konfiguration abrufen", + "obsidianLiveSyncSettingTab.titleFetchConfigFromRemote": "Fetch config von Remote Server", + "obsidianLiveSyncSettingTab.titleFetchSettings": "Gebühreneinstellungen", "obsidianLiveSyncSettingTab.titleHiddenFiles": "Versteckte Dateien", - "obsidianLiveSyncSettingTab.titleLogging": "Protokollierung", - "obsidianLiveSyncSettingTab.titleMinioS3R2": "MinIO / S3 / R2", - "obsidianLiveSyncSettingTab.titleNotification": "Benachrichtigungen", - "obsidianLiveSyncSettingTab.titleRemoteConfigCheckFailed": "Prüfung der Remote-Konfiguration fehlgeschlagen", + "obsidianLiveSyncSettingTab.titleLogging": "Protokoll", + "obsidianLiveSyncSettingTab.titleMinioS3R2": "MinIO, S3, R2", + "obsidianLiveSyncSettingTab.titleNotification": "Notifizierung", + "obsidianLiveSyncSettingTab.titleOnlineTips": "Online Tipps", + "obsidianLiveSyncSettingTab.titleQuickSetup": "Schnelleinrichtung", + "obsidianLiveSyncSettingTab.titleRebuildRequired": "Rebuild erforderlich", + "obsidianLiveSyncSettingTab.titleRemoteConfigCheckFailed": "Remote Configuration Check nicht verfügbar", "obsidianLiveSyncSettingTab.titleRemoteServer": "Remote-Server", - "obsidianLiveSyncSettingTab.titleSynchronizationMethod": "Synchronisationsmethode", - "obsidianLiveSyncSettingTab.titleSynchronizationPreset": "Synchronisationsvorgabe", - "obsidianLiveSyncSettingTab.titleSyncSettingsViaMarkdown": "Synchronisationseinstellungen per Markdown", - "obsidianLiveSyncSettingTab.titleUpdateThinning": "Update-Ausdünnung", + "obsidianLiveSyncSettingTab.titleReset": "Zurück zur Übersicht", + "obsidianLiveSyncSettingTab.titleSetupOtherDevices": "Um andere Geräte einzurichten", + "obsidianLiveSyncSettingTab.titleSynchronizationMethod": "Synchronisierungsmethode", + "obsidianLiveSyncSettingTab.titleSynchronizationPreset": "Synchronisierung Preset", + "obsidianLiveSyncSettingTab.titleSyncSettings": "Sync-Einstellungen", + "obsidianLiveSyncSettingTab.titleSyncSettingsViaMarkdown": "Sync-Einstellungen über Markdown", + "obsidianLiveSyncSettingTab.titleUpdateThinning": "Ausdünnung aktualisieren", + "obsidianLiveSyncSettingTab.warnCorsOriginUnmatched": "⚠ CORS-Origin stimmt nicht überein ${from}->${to}", + "obsidianLiveSyncSettingTab.warnNoAdmin": "Sie haben keine Administratorrechte.", "Ok": "OK", "Old Algorithm": "Alter Algorithmus", "Older fallback (Slow, W/O WebAssembly)": "Älterer Fallback (langsam, ohne WebAssembly)", @@ -160,21 +555,47 @@ "Overwrite remote": "Remote überschreiben", "Overwrite remote with local DB and passphrase.": "Remote mit lokaler Datenbank und Passphrase überschreiben.", "Overwrite Server Data with This Device's Files": "Serverdaten mit den Dateien dieses Geräts überschreiben", + "P2P.AskPassphraseForDecrypt": "Der entfernte Peer teilte die Konfiguration. Bitte geben Sie die Passphrase ein, um die Konfiguration zu entschlüsseln.", + "P2P.AskPassphraseForShare": "Der entfernte Peer forderte diese Gerätekonfiguration. Bitte geben Sie die Passphrase ein, um die Konfiguration zu teilen. Sie können die Anfrage ignorieren, indem Sie diesen Dialog abbrechen.", + "P2P.DisabledButNeed": "%{title_p2p_sync} ist deaktiviert. M?chten Sie es wirklich aktivieren?", + "P2P.FailedToOpen": "Nicht geöffnet P2P-Verbindung zum Signalisierungsserver.", + "P2P.NoAutoSyncPeers": "Keine Peers f?r die automatische Synchronisierung gefunden. Bitte legen Sie Peers im Bereich %{long_p2p_sync} fest.", + "P2P.NoKnownPeers": "Keine Peers wurden erkannt und warteten auf andere Peers...", + "P2P.Note.description": " Dieser Replikator ermöglicht es uns, unseren Tresor mit anderen Geräten\nzu synchronisieren mit einer Peer-to-Peer-Verbindung. Wir können dies nutzen, um unseren Tresor mit unseren anderen Geräten zu synchronisieren, ohne einen Cloud-Service zu verwenden.\nDieser Replikator basiert auf Trystero. Es verwendet auch einen Signalisierungsserver, um eine Verbindung zwischen Geräten herzustellen. Der Signalisierungsserver dient zum Austausch von Verbindungsinformationen zwischen Geräten. Es kann (oder,sollte) keine unserer Daten kennen oder speichern.\n\nDer Signalisierungsserver kann von jedem gehostet werden. Das ist nur ein Nostr-Relais. Zur Vereinfachung und Kontrolle des Verhaltens des Replikators wird eine Instanz des Signalisierungsservers von vrtmrz gehostet. Sie können den von vrtmrz bereitgestellten experimentellen Server verwenden, oder Sie können einen anderen Server verwenden.\n\nÜbrigens, selbst wenn der Signalisierungsserver unsere Daten nicht speichert, kann er die Verbindungsinformationen einiger unserer Geräte sehen. Bitte beachten Sie das. Seien Sie auch vorsichtig, wenn Sie den von jemand anderem bereitgestellten Server verwenden.", + "P2P.Note.important_note": "Peer-to-Peer-Replikator.", + "P2P.Note.important_note_sub": "Diese Funktion ist noch an der Ausblutkante. Bitte beachten Sie, dass Sie sicherstellen, dass Ihre Daten gesichert werden, bevor Sie diese Funktion nutzen. Und wir wären so glücklich, wenn Sie zur Entwicklung dieser Funktion beitragen könnten.", + "P2P.Note.Summary": "Was ist diese Funktion? (und einige wichtige Anmerkungen, bitte lesen Sie einmal)", + "P2P.NotEnabled": "%{title_p2p_sync} ist nicht aktiviert. Wir können keine neue Verbindung öffnen.", + "P2P.P2PReplication": "%{P2P}-Replikation", + "P2P.PaneTitle": "%{long_p2p_sync}", + "P2P.ReplicatorInstanceMissing": "P2P Sync Replikator ist nicht gefunden, möglicherweise nicht konfiguriert oder aktiviert.", + "P2P.SeemsOffline": "Peer ${name} erscheint offline, übersprungen.", + "P2P.SyncAlreadyRunning": "P2P Sync läuft bereits.", + "P2P.SyncCompleted": "P2P Sync abgeschlossen.", + "P2P.SyncStartedWith": "P2P Sync mit ${name} wurde gestartet.", "paneMaintenance.markDeviceResolvedAfterBackup": "Markieren Sie das Gerät nach der Sicherung als gelöst.", "paneMaintenance.remoteLockedAndDeviceNotAccepted": "Die Remote-Datenbank ist gesperrt und dieses Gerät wurde noch nicht akzeptiert.", "paneMaintenance.remoteLockedResolvedDevice": "Die Remote-Datenbank ist gesperrt. Dieses Gerät wurde bereits akzeptiert.", "paneMaintenance.unlockDatabaseReady": "Die Datenbank kann jetzt entsperrt werden.", + "Passphrase": "Passphrasen", + "Passphrase of sensitive configuration items": "Passphrase sensibler Konfigurationselemente", + "password": "Passwort vergessen?", + "Password": "Passwort vergessen?", "Paste a connection string": "Verbindungszeichenfolge einfügen", "Paste the Setup URI generated from one of your active devices.": "Fügen Sie die Setup-URI ein, die auf einem Ihrer aktiven Geräte erzeugt wurde。", + "Path Obfuscation": "Pfadverschleierung", "Patterns to match files for overwriting instead of merging": "Muster zum Erkennen von Dateien, die überschrieben statt zusammengeführt werden sollen", "Patterns to match files for syncing": "Muster zum Erkennen von Dateien für die Synchronisation", "Peer-to-Peer only": "Nur Peer-to-Peer", "Peer-to-Peer Synchronisation": "Peer-to-Peer-Synchronisation", + "Per-file-saved customization sync": "Per-file-saved Anpassungssynchronisation", "Perform": "Ausführen", "Perform cleanup": "Bereinigung ausführen", "Perform Garbage Collection": "Garbage Collection ausführen", "Perform Garbage Collection to remove unused chunks and reduce database size.": "Führt Garbage Collection aus, um ungenutzte Chunks zu entfernen und die Datenbankgröße zu reduzieren.", - "Pick a file to resolve conflict": "Datei zur Konfliktlösung auswählen", + "Periodic Sync interval": "Periodisches Synchronintervall", + "Pick a file to resolve conflict": "Wählen Sie eine Datei, um Konflikt zu lösen", + "Pick a file to show history": "Wählen Sie eine Datei, um Geschichte zu zeigen", "Please disable 'Read chunks online' in settings to use Garbage Collection.": "Bitte deaktivieren Sie „Read chunks online“ in den Einstellungen, um die Garbage Collection zu verwenden.", "Please enable 'Compute revisions for chunks' in settings to use Garbage Collection.": "Bitte aktivieren Sie „Compute revisions for chunks“ in den Einstellungen, um die Garbage Collection zu verwenden.", "Please select 'Cancel' explicitly to cancel this operation.": "Bitte wählen Sie ausdrücklich „Abbrechen“, um diesen Vorgang abzubrechen.", @@ -183,11 +604,16 @@ "Please select the type of server to which you are connecting.": "Bitte wählen Sie den Servertyp aus, mit dem Sie sich verbinden。", "Please set this device name": "Bitte legen Sie den Namen dieses Geräts fest", "Plug-in version": "Plugin-Version", + "Prepare the 'report' to create an issue": "Bereiten Sie den \"Bericht\" vor, um ein Problem zu schaffen", + "Presets": "Voreinstellungen", "Proceed Garbage Collection": "Garbage Collection fortsetzen", "Proceed with Setup URI": "Mit Setup-URI fortfahren", "Proceeding with Garbage Collection, ignoring missing nodes.": "Garbage Collection wird fortgesetzt, fehlende Knoten werden ignoriert.", "Proceeding with Garbage Collection.": "Garbage Collection wird ausgeführt.", + "Process files even if seems to be corrupted": "Dateien auch verarbeiten, wenn sie beschädigt wirken", + "Process small files in the foreground": "Kleine Dateien im Vordergrund bearbeiten", "Progress": "Fortschritt", + "Property Encryption": "Immobilienverschlüsselung", "PureJS fallback (Fast, W/O WebAssembly)": "PureJS-Fallback (schnell, ohne WebAssembly)", "Purge all download/upload cache.": "Gesamten Download-/Upload-Cache leeren.", "Purge all journal counter": "Alle Journal-Zähler leeren", @@ -195,12 +621,57 @@ "Rebuilding Operations (Remote Only)": "Neuaufbau-Vorgänge (nur Remote)", "Recreate all": "Alle neu erstellen", "Recreate missing chunks for all files": "Fehlende Chunks für alle Dateien neu erstellen", + "RedFlag.Fetch.Method.Desc": "Wie möchten Sie abrufen?\n- %{RedFlag.Fetch.Method.FetchSafer}.\n **Wenig Datenverkehr**, **hohe CPU-Last**, **geringes Risiko**\n Empfohlen, wenn ...\n - Dateien möglicherweise inkonsistent sind\n - es nicht sehr viele Dateien gibt\n- %{RedFlag.Fetch.Method.FetchSmoother}.\n **Wenig Datenverkehr**, **mäßige CPU-Last**, **geringes bis mäßiges Risiko**\n Empfohlen, wenn ...\n - Dateien wahrscheinlich konsistent sind\n - Sie viele Dateien haben.\n- %{RedFlag.Fetch.Method.FetchTraditional}.\n **Hoher Datenverkehr**, **geringe CPU-Last**, **geringes bis mäßiges Risiko**\n\n>[!INFO]- Details\n> ## %{RedFlag.Fetch.Method.FetchSafer}.\n> **Wenig Datenverkehr**, **hohe CPU-Last**, **geringes Risiko**\n> Diese Option erstellt zuerst eine lokale Datenbank aus vorhandenen lokalen Dateien, bevor Daten aus der entfernten Quelle abgerufen werden.\n> Wenn passende Dateien lokal und remote vorhanden sind, werden nur die Unterschiede übertragen.\n> Dateien, die an beiden Orten vorhanden sind, werden jedoch zunächst als Konfliktdateien behandelt. Wenn sie nicht wirklich in Konflikt stehen, werden sie automatisch aufgelöst, aber das kann einige Zeit dauern.\n> Dies ist im Allgemeinen die sicherste Methode und minimiert das Risiko von Datenverlust.\n> ## %{RedFlag.Fetch.Method.FetchSmoother}.\n> **Wenig Datenverkehr**, **mäßige CPU-Last**, **geringes bis mäßiges Risiko** (je nach Vorgang)\n> Diese Option erstellt zuerst Chunks aus lokalen Dateien für die Datenbank und ruft dann Daten ab. Dadurch werden nur lokal fehlende Chunks übertragen. Alle Metadaten werden jedoch aus der entfernten Quelle übernommen.\n> Lokale Dateien werden beim Start mit diesen Metadaten verglichen. Inhalte, die als neuer gelten, überschreiben ältere Inhalte (nach Änderungszeit). Dieses Ergebnis wird anschließend zurück in die entfernte Datenbank synchronisiert.\n> Dies ist in der Regel sicher, wenn die lokalen Dateien wirklich den neuesten Zeitstempel haben. Es kann jedoch Probleme verursachen, wenn eine Datei einen neueren Zeitstempel, aber älteren Inhalt hat (wie die ursprüngliche `welcome.md`).\n> Diese Methode verwendet weniger CPU und ist schneller als \"%{RedFlag.Fetch.Method.FetchSafer}\", kann aber bei unvorsichtiger Verwendung zu Datenverlust führen.\n> ## %{RedFlag.Fetch.Method.FetchTraditional}.\n> **Hoher Datenverkehr**, **geringe CPU-Last**, **geringes bis mäßiges Risiko** (je nach Vorgang)\n> Alles wird aus der entfernten Quelle abgerufen.\n> Ähnlich wie %{RedFlag.Fetch.Method.FetchSmoother}, aber alle Chunks werden aus der entfernten Quelle abgerufen.\n> Dies ist die traditionellste Abrufmethode und benötigt in der Regel den meisten Netzwerkverkehr und die meiste Zeit. Außerdem besteht ein ähnliches Risiko, entfernte Dateien zu überschreiben, wie bei der Option '%{RedFlag.Fetch.Method.FetchSmoother}'.\n> Sie gilt jedoch oft als die stabilste Methode, weil sie am längsten etabliert und am direktesten ist.", + "RedFlag.Fetch.Method.FetchSafer": "Erstellen Sie eine lokale Datenbank einmal vor dem Abrufen", + "RedFlag.Fetch.Method.FetchSmoother": "Erstellen Sie lokale Datei-Chunks vor dem Abruf", + "RedFlag.Fetch.Method.FetchTraditional": "Alles aus der Ferne holen", + "RedFlag.Fetch.Method.Title": "Wie wollen Sie holen?", + "RedFlag.FetchRemoteConfig.Applied": "Remote configuration applied.", + "RedFlag.FetchRemoteConfig.Buttons.Cancel": "Nein, lokale Einstellungen verwenden", + "RedFlag.FetchRemoteConfig.Buttons.Fetch": "Ja, holen und Remote-Einstellungen anwenden", + "RedFlag.FetchRemoteConfig.Buttons.Retry": "Retry (recommended)", + "RedFlag.FetchRemoteConfig.Buttons.SkipAndProceed": "Skip and proceed", + "RedFlag.FetchRemoteConfig.FailedMessage": "Could not fetch configuration from remote. If you are new to the Self-hosted LiveSync, this might be expected. If not, you should check your network or server settings.", + "RedFlag.FetchRemoteConfig.FailedTitle": "Fetch Remote Configuration Failed", + "RedFlag.FetchRemoteConfig.MatchesLocal": "Remote configuration matches local configuration. No changes applied.", + "RedFlag.FetchRemoteConfig.Message": "Möchten Sie abrufen und remote gespeicherte Präferenzeinstellungen auf das Gerät anwenden?", + "RedFlag.FetchRemoteConfig.NotApplied": "Remote configuration not applied.", + "RedFlag.FetchRemoteConfig.SettingsDiffered": "Your settings differed slightly from the server's. The plug-in has supplemented the incompatible parts with the server settings!", + "RedFlag.FetchRemoteConfig.Title": "Fetch Remote Konfiguration", + "RedFlag.Log.FetchEverythingCancelled": "Fetch everything cancelled by user.", + "RedFlag.Log.FetchEverythingCompleted": "Fetch everything operation completed. Vault files will be gradually synced.", + "RedFlag.Log.RebuildEverythingCancelled": "Rebuild everything cancelled by user.", + "RedFlag.Log.RebuildEverythingCompleted": "Rebuild everything operation completed.", + "RedFlag.Log.VaultInitialisationError": "Error during vault initialisation.", + "RedFlag.Log.VaultInitialisationProcessError": "Error during vault initialisation process.", + "RedFlag.ResumeProcessingPrompt": "Do you want to resume file and database processing, and restart obsidian now?", + "Reducing the frequency with which on-disk changes are reflected into the DB": "Reduzieren der Frequenz, mit der On-Disk-Änderungen in die DB reflektiert werden", + "Region": "Region", "Remediation": "Problembehebung", "Remediation Setting Changed": "Problembehebungs-Einstellung geändert", "Remote Database Tweak (In sunset)": "Remote-Datenbank-Optimierung (wird eingestellt)", "Remote Databases": "Remote-Datenbanken", "Remote name": "Remote-Name", + "Remote server type": "Typ des Remoteservers", + "Remote Type": "Fernbedienung", "Rename": "Umbenennen", + "Replicator.Dialogue.Locked.Action.Dismiss": "Zurück zur Bestätigung", + "Replicator.Dialogue.Locked.Action.Fetch": "Synchronisation auf diesem Gerät zurücksetzen", + "Replicator.Dialogue.Locked.Action.Unlock": "Entsperren Sie die Remote-Datenbank", + "Replicator.Dialogue.Locked.Message": "Die entfernte Datenbank ist gesperrt. Das liegt an einem Neuaufbau auf einem der Geräte.\nDieses Gerät soll daher die Verbindung zurückhalten, um eine Beschädigung der Datenbank zu vermeiden.\n\nEs gibt drei mögliche Aktionen:\n\n- %{Replicator.Dialogue.Locked.Action.Fetch}\n Der bevorzugte und zuverlässigste Weg. Die lokale Datenbank wird einmal verworfen und alle Synchronisierungsinformationen werden erneut aus der entfernten Datenbank übernommen. In den meisten Fällen ist das sicher. Es dauert jedoch etwas und sollte bei stabiler Netzwerkverbindung durchgeführt werden.\n- %{Replicator.Dialogue.Locked.Action.Unlock}\n Diese Methode sollte nur verwendet werden, wenn wir bereits durch andere Replikationsmethoden zuverlässig synchronisiert sind. Das bedeutet nicht einfach, dass die Dateien gleich aussehen. Wenn du unsicher bist, solltest du sie vermeiden.\n- %{Replicator.Dialogue.Locked.Action.Dismiss}\n Dadurch wird der Vorgang abgebrochen. Beim nächsten Versuch wird erneut gefragt.\n", + "Replicator.Dialogue.Locked.Message.Fetch": "Es ist alles geplant. Plug-in wird neu gestartet, um es auszuführen.", + "Replicator.Dialogue.Locked.Message.Unlocked": "Die Remote-Datenbank wurde entsperrt. Bitte wiederholen Sie die Operation.", + "Replicator.Dialogue.Locked.Title": "Gesperrt", + "Replicator.Message.Cleaned": "Die Datenbankreinigung erfolgt im Prozess. Wiederholung wurde aufgehoben", + "Replicator.Message.InitialiseFatalError": "Kein Replikator ist verfügbar, das ist der tödliche Fehler.", + "Replicator.Message.Pending": "Einige Dateiereignisse sind anhängig. Die Replikation wurde aufgehoben.", + "Replicator.Message.SomeModuleFailed": "Die Replikation wurde durch einen Modulausfall aufgehoben", + "Replicator.Message.VersionUpFlash": "Ein Update wurde erkannt. Bitte öffnen Sie den Dialog Einstellungen und überprüfen Sie das Change Log. Die Replikation wurde aufgehoben.", + "Requires restart of Obsidian": "Erfordert Neustart von Obsidian", + "Requires restart of Obsidian.": "Erfordert den Neustart von Obsidian.", + "Rerun Onboarding Wizard": "Einrichtungsassistent erneut ausführen", + "Rerun the onboarding wizard to set up Self-hosted LiveSync again.": "Führen Sie den Onboarding-Assistent erneut aus, um Self-hosted LiveSync wieder einzurichten.", + "Rerun Wizard": "Assistent erneut ausführen", "Resend": "Erneut senden", "Resend all chunks to the remote.": "Alle Chunks erneut an das Remote senden.", "Reset": "Zurücksetzen", @@ -208,27 +679,77 @@ "Reset all journal counter": "Alle Journal-Zähler zurücksetzen", "Reset journal received history": "Empfangsverlauf des Journals zurücksetzen", "Reset journal sent history": "Sendeverlauf des Journals zurücksetzen", + "Reset notification threshold and check the remote database usage": "Meldeschwelle zurücksetzen und die Remote-Datenbanknutzung überprüfen", "Reset received": "Empfang zurücksetzen", "Reset sent history": "Sendeverlauf zurücksetzen", "Reset Synchronisation information": "Synchronisationsinformationen zurücksetzen", "Reset Synchronisation on This Device": "Synchronisation auf diesem Gerät zurücksetzen", + "Reset the remote storage size threshold and check the remote storage size again.": "Setzen Sie die Remote-Speichergrößenschwelle zurück und überprüfen Sie die Remote-Speichergröße erneut.", "Resolve All": "Alle auflösen", - "Resolve all conflicted files": "Alle Konfliktdateien auflösen", + "Resolve all conflicted files": "Lösen Sie alle Konfliktdateien", "Resolve All conflicted files by the newer one": "Alle Konfliktdateien mit der neueren Version auflösen", "Resolve all conflicted files by the newer one. Caution: This will overwrite the older one, and cannot resurrect the overwritten one.": "Löst alle Konfliktdateien zugunsten der neueren Version auf. Achtung: Dadurch wird die ältere Version überschrieben und kann nicht wiederhergestellt werden.", "Restart Now": "Jetzt neu starten", "Restore or reconstruct local database from remote.": "Lokale Datenbank aus dem Remote wiederherstellen oder neu aufbauen.", + "Run Doctor": "Der Doktor", "S3/MinIO/R2 Object Storage": "S3-/MinIO-/R2-Objektspeicher", + "Save settings to a markdown file. You will be notified when new settings arrive. You can set different files by the platform.": "Speichern Sie Einstellungen in eine Markierungsdatei. Sie werden informiert, wenn neue Einstellungen eintreffen. Sie können verschiedene Dateien auf der Plattform festlegen.", + "Saving will be performed forcefully after this number of seconds.": "Nach dieser Anzahl von Sekunden wird die Einsparung kraftvoll durchgeführt.", "Scan a QR Code (Recommended for mobile)": "QR-Code scannen (für Mobilgeräte empfohlen)", + "Scan changes on customization sync": "Scannen von Änderungen auf Anpassungssynchronisation", + "Scan customization automatically": "Scannen Anpassung automatisch", + "Scan customization before replicating.": "Scannen Anpassung vor der Replikation.", + "Scan customization every 1 minute.": "Scannen Anpassung alle 1 Minute.", + "Scan customization periodically": "Scannen Anpassung periodisch", + "Scan for hidden files before replication": "Scannen von versteckten Dateien vor der Replikation", + "Scan hidden files periodically": "Scannen versteckte Dateien periodisch", "Scan the QR code displayed on an active device using this device's camera.": "Scannen Sie den auf einem aktiven Gerät angezeigten QR-Code mit der Kamera dieses Geräts。", "Schedule and Restart": "Planen und neu starten", "Scram!": "Notfallmaßnahmen", + "Seconds, 0 to disable": "Sekunden, 0 zu deaktivieren", + "Seconds. Saving to the local database will be delayed until this value after we stop typing or saving.": "Zweite. Die Speicherung in der lokalen Datenbank wird bis zu diesem Wert verzögert, nachdem wir das Eingeben oder Speichern stoppen.", + "Secret Key": "Geheimer Schlüssel", "Select the database adapter to use.": "Wählen Sie den zu verwendenden Datenbankadapter aus.", + "Selector": "Auswahl", "Send": "Senden", "Send chunks": "Chunks senden", - "Setting.GenerateKeyPair.Desc": "Wir haben ein Schlüsselpaar erzeugt!\n\nHinweis: Dieses Schlüsselpaar wird nie wieder angezeigt. Bitte bewahren Sie es an einem sicheren Ort auf. Wenn Sie es verlieren, müssen Sie ein neues Schlüsselpaar erzeugen.\nHinweis 2: Der öffentliche Schlüssel liegt im SPKI-Format vor, der private Schlüssel im PKCS8-Format. Zur besseren Handhabung werden Zeilenumbrüche im öffentlichen Schlüssel zu `\\n` umgewandelt.\nHinweis 3: Der öffentliche Schlüssel sollte in der Remote-Datenbank hinterlegt werden, der private Schlüssel auf den lokalen Geräten.\n\n>[!NUR FÜR IHRE AUGEN]-\n>
\n>\n> ### Öffentlicher Schlüssel\n> ```\n${public_key}\n> ```\n>\n> ### Privater Schlüssel\n> ```\n${private_key}\n> ```\n>\n>
\n\n>[!Beides zum Kopieren]-\n>\n>
\n>\n> ```\n${public_key}\n${private_key}\n> ```\n>\n>
", - "Setting.GenerateKeyPair.Title": "Neues Schlüsselpaar wurde erzeugt!", + "Server URI": "Server-URI", + "Setting.GenerateKeyPair.Desc": "Wir haben ein Schlüsselpaar erzeugt!\n\nHinweis: Dieses Schlüsselpaar wird nie wieder angezeigt. Bitte speichern Sie es an einem sicheren Ort. Wenn Sie es verlieren, müssen Sie ein neues Schlüsselpaar erzeugen.\nHinweis 2: Der öffentliche Schlüssel ist im spki-Format und der private Schlüssel im pkcs8-Format. Der Einfachheit halber werden Zeilenumbrüche im öffentlichen Schlüssel in `\\n` umgewandelt.\nHinweis 3: Der öffentliche Schlüssel muss in der entfernten Datenbank konfiguriert werden, der private Schlüssel auf den lokalen Geräten.\n\n>[!FOR YOUR EYES ONLY]-\n>
\n>\n> ### Öffentlicher Schlüssel\n> ```\n${public_key}\n> ```\n>\n> ### Privater Schlüssel\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": "Neues Schlüsselpaar wurde generiert!", + "Setting.TroubleShooting": "Probleme", + "Setting.TroubleShooting.Doctor": "Ein Arzt", + "Setting.TroubleShooting.Doctor.Desc": "Erkennt nicht optimale Einstellungen. (Sammlung wie während der Migration)", + "Setting.TroubleShooting.ScanBrokenFiles": "Scannen von Dateien", + "Setting.TroubleShooting.ScanBrokenFiles.Desc": "Scannen nach Dateien, die nicht korrekt in der Datenbank gespeichert werden.", + "SettingTab.Message.AskRebuild": "Ihre Änderungen erfordern das Abrufen von der Remote-Datenbank. Willst du fortfahren?", "Setup URI dialog cancelled.": "Setup-URI-Dialog abgebrochen.", + "Setup.Apply.Buttons.ApplyAndFetch": "Apply und Fetch", + "Setup.Apply.Buttons.ApplyAndMerge": "Anwenden und Verschmelzen", + "Setup.Apply.Buttons.ApplyAndRebuild": "Anwenden und wieder aufbauen", + "Setup.Apply.Buttons.Cancel": "Discard und Abbrechen", + "Setup.Apply.Buttons.OnlyApply": "Nur anwenden", + "Setup.Apply.Message": "Die neue Konfiguration ist fertig. Lassen Sie uns es anwenden.\nEs gibt verschiedene Möglichkeiten, dies anzuwenden:\n\n- Apply und Fetch\nKonfigurieren Sie dieses Gerät als neuer Client. Nach der Anwendung, synchronisieren Sie vom Remote-Server.\n- Anwenden und Verschmelzen\nKonfigurieren Sie auf einem Gerät, das bereits die Datei hat. Es verarbeitet die lokalen Dateien und überträgt die Unterschiede. Konflikte können entstehen.\n- Anwenden und wieder aufbauen\nWiederherstellen der Fernbedienung mit lokalen Dateien. Dies geschieht typischerweise, wenn der Server beschädigt wird oder wir von Grund auf starten möchten.\nAndere Geräte werden gesperrt und benötigt, um wieder zu holen.\n- Nur bewerben\nNur anwenden. Konflikte können entstehen, wenn ein Wiederaufbau erforderlich ist.", + "Setup.Apply.Title": "Neue Konfiguration aus dem ${method} anwenden", + "Setup.Apply.WarningRebuildRecommended": "HINWEIS: Nach der Einstellung der Einstellungen wurde festgestellt, dass ein Rebuild erforderlich ist; Nur Import wird nicht empfohlen.", + "Setup.Command.CopySetupUri": "Copy settings as a new setup URI", + "Setup.Command.CopySetupUriFull": "Copy settings as a new setup URI (Full)", + "Setup.Command.CopySetupUriWithSync": "Copy settings as a new setup URI (With customization sync)", + "Setup.Command.OpenSetupUri": "Use the copied setup URI (Formerly Open setup URI)", + "Setup.Command.ShowSettingsQrCode": "Show settings as a QR code", + "Setup.Doctor.Buttons.No": "Nein, nicht jetzt", + "Setup.Doctor.Buttons.Yes": "Ja, bitte den Doktor konsultieren", + "Setup.Doctor.Message": "Selbstgehostete LiveSync ist in der Geschichte allmählich länger geworden und einige empfohlene Einstellungen haben sich geändert.\n\nNun, Setup ist eine sehr gute Zeit, dies zu tun.\n\nMöchten Sie Doctor ausführen, um zu überprüfen, ob die importierten Einstellungen im Vergleich zum neuesten Zustand optimal sind?", + "Setup.Doctor.Title": "Möchten Sie den Arzt konsultieren?", + "Setup.EncryptSettingsPassphrase": "The passphrase to encrypt the setup URI", + "Setup.EncryptSettingsTitle": "Encrypt your settings", + "Setup.FetchRemoteConf.Buttons.Fetch": "Ja, bitte holen Sie die Konfiguration", + "Setup.FetchRemoteConf.Buttons.Skip": "Nein, bitte benutzen Sie die Einstellungen im URI", + "Setup.FetchRemoteConf.Message": "Wenn wir bereits einmal mit einem anderen Gerät synchronisiert sind, speichert die Remote-Datenbank die geeigneten Konfigurationswerte zwischen den synchronisierten Geräten. Das Plug-in möchte sie für eine robuste Konfiguration abrufen.\n\nAber wir müssen sicherstellen, dass die eine Sache. Sind wir derzeit in einer Situation, in der wir auf das Netzwerk sicher zugreifen und die Einstellungen abrufen können?\n\nHinweis: Meistens sind Sie sicher, dies zu tun, dass Ihre Remote-Datenbank mit einem SSL-Zertifikat gehostet wird und Ihr Netzwerk nicht beeinträchtigt wird.", + "Setup.FetchRemoteConf.Title": "Fetch-Konfiguration aus der Remote-Datenbank?", + "Setup.Log.ProtocolHandlerRegistrationFailed": "Failed to register protocol handler. This feature may not work in some environments.", + "Setup.Log.SetupUriCopiedToClipboard": "Setup URI copied to clipboard", + "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}
", + "Setup.QRCodeTitle": "Settings QR Code", "Setup.RemoteE2EE.AdvancedTitle": "Erweitert", "Setup.RemoteE2EE.AlgorithmWarning": "Wenn Sie den Verschlüsselungsalgorithmus ändern, können Sie nicht mehr auf Daten zugreifen, die zuvor mit einem anderen Algorithmus verschlüsselt wurden. Stellen Sie sicher, dass alle Ihre Geräte denselben Algorithmus verwenden, damit der Zugriff auf Ihre Daten erhalten bleibt.", "Setup.RemoteE2EE.ButtonCancel": "Abbrechen", @@ -254,6 +775,9 @@ "Setup.ScanQRCode.Step3": "Führen Sie auf dem Quellgerät im Befehlsmenü den Befehl „Einstellungen als QR-Code anzeigen“ aus.", "Setup.ScanQRCode.Step4": "Wechseln Sie auf diesem Gerät zur Kamera-App oder verwenden Sie einen QR-Code-Scanner, um den angezeigten QR-Code zu scannen.", "Setup.ScanQRCode.Title": "QR-Code scannen", + "Setup.SetupUri": "Setup URI", + "Setup.ShowQRCode": "QR-Code anzeigen", + "Setup.ShowQRCode.Desc": "QR-Code anzeigen, um die Einstellungen zu übertragen.", "Setup.UseSetupURI.ButtonCancel": "Abbrechen", "Setup.UseSetupURI.ButtonProceed": "Einstellungen testen und fortfahren", "Setup.UseSetupURI.ErrorFailedToParse": "Die Setup-URI konnte nicht verarbeitet werden. Bitte prüfen Sie URI und Passphrase.", @@ -266,30 +790,525 @@ "Setup.UseSetupURI.PlaceholderPassphrase": "Geben Sie die Passphrase Ihres Vaults ein", "Setup.UseSetupURI.Title": "Setup-URI eingeben", "Setup.UseSetupURI.ValidInfo": "Die Setup-URI ist gültig und kann verwendet werden.", - "Show full banner": "Vollständiges Banner anzeigen", + "Should we keep folders that don't have any files inside?": "Sollten wir Ordner halten, die keine Dateien haben?", + "Should we only check for conflicts when a file is opened?": "Sollten wir nur nach Konflikten suchen, wenn eine Datei geöffnet wird?", + "Should we prompt you about conflicting files when a file is opened?": "Sollten wir Sie beim Öffnen einer Datei über widersprüchliche Dateien auffordern?", + "Should we prompt you for every single merge, even if we can safely merge automatcially?": "Sollten wir Sie für jede einzelne Zusammenführung auffordern, auch wenn wir automatisch sicher zusammenführen können?", + "Show full banner": "Volle Banner anzeigen", + "Show history": "Geschichte zeigen", "Show icon only": "Nur Symbol anzeigen", - "Show status icon instead of file warnings banner": "Statussymbol statt Dateiwarnungsbanner anzeigen", + "Show only notifications": "Nur Benachrichtigungen anzeigen", + "Show status as icons only": "Status nur als Symbole anzeigen", + "Show status icon instead of file warnings banner": "Statussymbol anstelle von Dateiwarnungen Banner anzeigen", + "Show status inside the editor": "Status im Editor anzeigen", + "Show status on the status bar": "Status auf der Statusleiste anzeigen", + "Show verbose log. Please enable if you report an issue.": "Verbose-Log anzeigen. Bitte aktivieren Sie, wenn Sie ein Problem melden.", "Some devices have differing progress values (max: ${maxProgress}, min: ${minProgress}).\nThis may indicate that some devices have not completed synchronisation, which could lead to conflicts. Strongly recommend confirming that all devices are synchronised before proceeding.": "Einige Geräte haben unterschiedliche Fortschrittswerte (max: ${maxProgress}, min: ${minProgress}).\nDas kann darauf hindeuten, dass einige Geräte die Synchronisation noch nicht abgeschlossen haben, was zu Konflikten führen könnte. Es wird dringend empfohlen, vor dem Fortfahren zu bestätigen, dass alle Geräte synchronisiert sind.", + "Starts synchronisation when a file is saved.": "Startet die Synchronisation, wenn eine Datei gespeichert wird.", + "Stop reflecting database changes to storage files.": "Stoppen Sie, die Datenbankänderungen in Speicherdateien widerzuspiegeln.", + "Stop watching for file changes.": "Hör auf, auf Dateiänderungen zu achten.", + "Suppress notification of hidden files change": "Suppress Benachrichtigung von versteckten Dateien ändern", + "Suspend database reflecting": "Suspend Datenbank reflektierend", + "Suspend file watching": "Suspend Dateibeobachtung", "Switch to IDB": "Zu IDB wechseln", "Switch to IndexedDB": "Zu IndexedDB wechseln", + "Sync after merging file": "Synchronisieren nach der Fusionsdatei", + "Sync automatically after merging files": "Synchronisieren automatisch nach dem Zusammenfügen von Dateien", + "Sync Mode": "Synthesizer", + "Sync on Editor Save": "Sync auf Editor speichern", + "Sync on File Open": "Sync auf Datei öffnen", + "Sync on Save": "Sync auf Speichern", + "Sync on Startup": "Sync auf Startup", "Synchronisation utilising journal files. You must have set up an S3/MinIO/R2 compatible object storage.": "Synchronisation über Journaldateien. Sie müssen einen S3/MinIO/R2-kompatiblen Objektspeicher eingerichtet haben。", "Synchronising files": "Zu synchronisierende Dateien", "Syncing": "Synchronisierung", "Target patterns": "Zielmuster", + "Testing only - Resolve file conflicts by syncing newer copies of the file, this can overwrite modified files. Be Warned.": "Nur testen - Dateikonflikte lösen, indem Sie neuere Kopien der Datei synchronisieren, kann dies geänderte Dateien überschreiben. Achtung!", + "The delay for consecutive on-demand fetches": "Die Verzögerung für aufeinanderfolgende On-Demand-Fetches", "The following accepted nodes are missing its node information:\n- ${missingNodes}\n\nThis indicates that they have not been connected for some time or have been left on an older version.\nIt is preferable to update all devices if possible. If you have any devices that are no longer in use, you can clear all accepted nodes by locking the remote once.": "Für die folgenden akzeptierten Knoten fehlen die Knoteninformationen:\n- ${missingNodes}\n\nDas deutet darauf hin, dass sie seit einiger Zeit nicht verbunden waren oder noch eine ältere Version verwenden.\nEs ist nach Möglichkeit besser, zunächst alle Geräte zu aktualisieren. Wenn Sie Geräte haben, die nicht mehr verwendet werden, können Sie alle akzeptierten Knoten löschen, indem Sie die Remote-Datenbank einmal sperren.", + "The Hash algorithm for chunk IDs": "Der Hash-Algorithmus für chunk IDs", + "The maximum duration for which chunks can be incubated within the document. Chunks exceeding this period will graduate to independent chunks.": "Die maximale Dauer, für die Stücke im Dokument inkubiert werden können. Chunks, die diese Zeit überschreiten, werden sich an unabhängige Stücke graduieren.", + "The maximum number of chunks that can be incubated within the document. Chunks exceeding this number will immediately graduate to independent chunks.": "Die maximale Anzahl an Stücken, die innerhalb des Dokuments inkubiert werden können. Chunks, die diese Zahl überschreiten, werden sofort selbständige Stücke absolvieren.", + "The maximum total size of chunks that can be incubated within the document. Chunks exceeding this size will immediately graduate to independent chunks.": "Die maximale Gesamtgröße der Stücke, die innerhalb des Dokuments inkubiert werden können. Chunks, die diese Größe überschreiten, werden sofort selbständige Stücke absolvieren.", + "The minimum interval for automatic synchronisation on event.": "Das Mindestintervall für die automatische Synchronisation auf dem Event.", "This feature enables direct synchronisation between devices. No server is required, but both devices must be online at the same time for synchronisation to occur, and some features may be limited. Internet connection is only required to signalling (detecting peers) and not for data transfer.": "Diese Funktion ermöglicht die direkte Synchronisation zwischen Geräten. Es wird kein Server benötigt, aber beide Geräte müssen gleichzeitig online sein, damit synchronisiert werden kann, und einige Funktionen können eingeschränkt sein. Eine Internetverbindung wird nur für das Signalling (Erkennen von Peers) benötigt, nicht für die Datenübertragung。", "This is an advanced option for users who do not have a URI or who wish to configure detailed settings.": "Dies ist eine erweiterte Option für Benutzer, die keine URI haben oder detaillierte Einstellungen manuell konfigurieren möchten。", "This is the most suitable synchronisation method for the design. All functions are available. You must have set up a CouchDB instance.": "Dies ist die für das Design am besten geeignete Synchronisationsmethode. Alle Funktionen sind verfügbar. Sie müssen eine CouchDB-Instanz eingerichtet haben。", + "This passphrase will not be copied to another device. It will be set to `Default` until you configure it again.": "Diese Passphrase wird nicht auf ein anderes Gerät kopiert werden. Es wird auf `Default` gesetzt, bis Sie es erneut konfigurieren.", "This will recreate chunks for all files. If there were missing chunks, this may fix the errors.": "Dadurch werden die Chunks für alle Dateien neu erstellt. Falls Chunks fehlen, können die Fehler dadurch behoben werden.", + "TweakMismatchResolve.Action.Dismiss": "Entlassung", + "TweakMismatchResolve.Action.UseConfigured": "Verwenden Sie die konfigurierten Einstellungen", + "TweakMismatchResolve.Action.UseMine": "Remote-Datenbankeinstellungen aktualisieren", + "TweakMismatchResolve.Action.UseMineAcceptIncompatible": "Aktualisieren Sie Remote-Datenbankeinstellungen, aber halten Sie wie", + "TweakMismatchResolve.Action.UseMineWithRebuild": "Remote-Datenbankeinstellungen aktualisieren und wieder aufbauen", + "TweakMismatchResolve.Action.UseRemote": "Anwenden von Einstellungen auf dieses Gerät", + "TweakMismatchResolve.Action.UseRemoteAcceptIncompatible": "Anwenden von Einstellungen auf dieses Gerät, aber und ignorieren Unkompatibilität", + "TweakMismatchResolve.Action.UseRemoteWithRebuild": "Setzen Sie die Einstellungen auf dieses Gerät und holen Sie sich wieder", + "TweakMismatchResolve.Message.Main": "\nDie Einstellungen in der entfernten Datenbank sind unten aufgeführt. Diese Werte wurden von anderen Geräten konfiguriert, die mindestens einmal mit diesem Gerät synchronisiert wurden.\n\nWenn du diese Einstellungen verwenden möchtest, wähle %{TweakMismatchResolve.Action.UseConfigured}.\nWenn du die Einstellungen dieses Geräts behalten möchtest, wähle %{TweakMismatchResolve.Action.Dismiss}.\n\n${table}\n\n>[!TIP]\n> Wenn du alle Einstellungen synchronisieren möchtest, verwende `Sync settings via markdown`, nachdem du mit dieser Funktion die minimale Konfiguration angewendet hast.\n\n${additionalMessage}", + "TweakMismatchResolve.Message.MainTweakResolving": "Deine Konfiguration stimmt nicht mit der auf dem entfernten Server überein.\n\nDie folgende Konfiguration sollte übereinstimmen:\n\n${table}\n\nBitte teile uns deine Entscheidung mit.\n\n${additionalMessage}", + "TweakMismatchResolve.Message.UseRemote.WarningRebuildRecommended": "\n>[!NOTICE]\n> Einige Änderungen sind kompatibel, können aber zusätzliche Speicher- und Transfermengen verbrauchen. Ein Rebuild wird empfohlen. Es darf jedoch derzeit kein Neuaufbau durchgeführt werden, sondern kann in der zukünftigen Wartung umgesetzt werden.\n> *** Bitte stellen Sie sicher, dass Sie Zeit haben und an ein stabiles Netzwerk angeschlossen sind, um sich zu bewerben!***", + "TweakMismatchResolve.Message.UseRemote.WarningRebuildRequired": "\n>[!WARNUNG]\n> Einige Remote-Konfigurationen sind nicht kompatibel mit der lokalen Datenbank dieses Gerätes. Der Wiederaufbau der lokalen Datenbank ist erforderlich.\n> *** Bitte stellen Sie sicher, dass Sie Zeit haben und an ein stabiles Netzwerk angeschlossen sind, um sich zu bewerben!***", + "TweakMismatchResolve.Message.WarningIncompatibleRebuildRecommended": "\n>[!NOTICE]\n> Wir haben festgestellt, dass einige der Werte unterschiedlich sind, um die lokale Datenbank mit der Remote-Datenbank unvereinbar zu machen.\n> Einige Änderungen sind kompatibel, können aber zusätzliche Speicher- und Transfermengen verbrauchen. Ein Rebuild wird empfohlen. Es darf jedoch derzeit kein Neuaufbau durchgeführt werden, sondern kann in der zukünftigen Wartung umgesetzt werden.\n> Wenn Sie wieder aufbauen möchten, dauert es ein paar Minuten oder mehr. ** Stellen Sie sicher, dass es jetzt sicher ist.**", + "TweakMismatchResolve.Message.WarningIncompatibleRebuildRequired": "\n>[!WARNUNG]\n> Wir haben festgestellt, dass einige der Werte unterschiedlich sind, um die lokale Datenbank mit der Remote-Datenbank unvereinbar zu machen.\n> Es sind entweder lokale oder Remote-Rebuilds erforderlich. Beide nehmen ein paar Minuten oder mehr. ** Stellen Sie sicher, dass es jetzt sicher ist.**", + "TweakMismatchResolve.Table": "| Wertname | Dieses Gerät | Auf Remote |\n|: --- |:\n${rows}\n\n", + "TweakMismatchResolve.Table.Row": "| ${name} | ${self} | ${remote}", + "TweakMismatchResolve.Title": "Konfiguration Mismatch Entdeckt", + "TweakMismatchResolve.Title.TweakResolving": "Konfiguration Mismatch Entdeckt", + "TweakMismatchResolve.Title.UseRemoteConfig": "Remote Configuration verwenden", + "Ui.Bucket.Guidance": "Bitte geben Sie die erforderlichen Details ein, um sich mit Ihrem S3/MinIO/R2 kompatiblen Objektspeicherservice zu verbinden.", + "Ui.Common.Signal.Caution": "Achtung", + "Ui.Common.Signal.Danger": "Gefahr", + "Ui.Common.Signal.Notice": "Hinweis", + "Ui.Common.Signal.Warning": "Warnung", + "Ui.ConflictResolver.FileToResolve": "Datei zum Auflösen", + "Ui.CouchDB.Guidance": "Bitte geben Sie unten die CouchDB-Serverinformationen ein.", + "Ui.History.FileToView": "Datei zum Anzeigen", + "Ui.P2P.Guidance": "Bitte geben Sie unten die Peer-to-Peer Synchronisationsinformationen ein.", + "Ui.RemoteE2EE.AdvancedTitle": "Erweiterte", + "Ui.RemoteE2EE.AlgorithmWarning": "Das Ändern des Verschlüsselungsalgorithmus verhindert den Zugriff auf alle zuvor mit einem anderen Algorithmus verschlüsselten Daten.", + "Ui.RemoteE2EE.ButtonCancel": "Abbrechen", + "Ui.RemoteE2EE.ButtonProceed": "Verfahren", + "Ui.RemoteE2EE.DefaultAlgorithmDesc": "In den meisten Fällen sollten Sie mit dem Standardalgorithmus festhalten.", + "Ui.RemoteE2EE.Guidance": "Bitte konfigurieren Sie Ihre End-to-End-Verschlüsselungseinstellungen.", + "Ui.RemoteE2EE.LabelEncrypt": "End-to-End-Verschlüsselung", + "Ui.RemoteE2EE.LabelEncryptionAlgorithm": "Verschlüsselung Algorithm", + "Ui.RemoteE2EE.LabelObfuscateProperties": "Obfuscat Eigenschaften", + "Ui.RemoteE2EE.ManualWarning": "Bitte beachten Sie, dass die End-to-End-Verschlüsselungspassphrase nicht validiert wird, bis der Synchronisationsprozess tatsächlich beginnt. Dies ist eine Sicherheitsmaßnahme zum Schutz Ihrer Daten.", + "Ui.RemoteE2EE.MultiDestinationWarning": "Diese Einstellung muss auch bei Verbindung mit mehreren Synchronisierungszielen gleich sein.", + "Ui.RemoteE2EE.ObfuscatePropertiesDesc": "Obfuscating Eigenschaften fügt eine zusätzliche Sicherheitsschicht hinzu, indem es schwieriger macht, die Struktur und Namen Ihrer Dateien und Ordner auf dem Remoteserver zu identifizieren.", + "Ui.RemoteE2EE.PassphraseValidationLine1": "Bitte beachten Sie, dass die End-to-End-Verschlüsselungspassphrase nicht validiert wird, bis der Synchronisationsprozess tatsächlich beginnt.", + "Ui.RemoteE2EE.PassphraseValidationLine2": "Deshalb bitten wir Sie, extreme Vorsicht zu üben, wenn Sie Serverinformationen manuell konfigurieren.", + "Ui.RemoteE2EE.PlaceholderPassphrase": "Geben Sie Ihre Passphrase", + "Ui.RemoteE2EE.StronglyRecommended": "Die End-to-End-Verschlüsselung sorgt dafür, dass Ihre Daten auf Ihrem Gerät verschlüsselt werden, bevor Sie an den Remote-Server gesendet werden. Dies bedeutet, dass selbst wenn jemand Zugriff auf den Server erhält, sie nicht in der Lage sein, Ihre Daten ohne die Passphrase zu lesen.", + "Ui.RemoteE2EE.StronglyRecommendedLine1": "Die End-to-End-Verschlüsselung sorgt dafür, dass Ihre Daten auf Ihrem Gerät verschlüsselt werden, bevor Sie an den Remote-Server gesendet werden.", + "Ui.RemoteE2EE.StronglyRecommendedLine2": "Beachten Sie auch, dass, wenn Sie Peer-to-Peer-Synchronisation verwenden, diese Konfiguration verwendet wird, wenn Sie auf andere Methoden wechseln und in Zukunft mit einem Remote-Server verbinden.", + "Ui.RemoteE2EE.StronglyRecommendedTitle": "Stark empfohlen", + "Ui.RemoteE2EE.Title": "End-to-End-Verschlüsselung", + "Ui.RemoteE2EE.WarningSameSetting": "Diese Einstellung muss auch bei Verbindung mit mehreren Synchronisierungszielen gleich sein.", + "Ui.ScanQRCode.ButtonClose": "Schließen Sie diesen Dialog", + "Ui.ScanQRCode.Guidance": "Bitte folgen Sie den folgenden Schritten, um Einstellungen von Ihrem vorhandenen Gerät zu importieren.", + "Ui.ScanQRCode.Instruction": "Bitte folgen Sie den folgenden Schritten, um Einstellungen von Ihrem vorhandenen Gerät zu importieren.", + "Ui.ScanQRCode.Step1": "Bitte halten Sie diesen Vault auf diesem Gerät offen.", + "Ui.ScanQRCode.Step2": "Öffnen Sie auf dem Quellgerät Obsidian.", + "Ui.ScanQRCode.Step3": "Auf dem Quellgerät, aus der Befehlspalette, führen Sie den Befehl 'Einstellungen als QR-Code anzeigen' aus.", + "Ui.ScanQRCode.Step4": "Auf diesem Gerät wechseln Sie in die Kamera-App oder verwenden Sie einen QR-Code-Scanner, um den angezeigten QR-Code zu scannen.", + "Ui.ScanQRCode.Title": "QR-Code Scannen", + "Ui.Settings.Advanced.LocalDatabaseTweak": "Lokale Datenbank optimieren", + "Ui.Settings.Advanced.MemoryCache": "Speichercache", + "Ui.Settings.Advanced.TransferTweak": "Übertragung optimieren", + "Ui.Settings.Common.Analyse": "Analysieren", + "Ui.Settings.Common.Back": "Zurück", + "Ui.Settings.Common.Check": "Überprüfung", + "Ui.Settings.Common.Configure": "Konfigurieren", + "Ui.Settings.Common.Delete": "Löschen", + "Ui.Settings.Common.Lock": "Schließung", + "Ui.Settings.Common.Open": "Öffnen", + "Ui.Settings.Common.Perform": "Durchführung", + "Ui.Settings.Common.ResetAll": "Alle", + "Ui.Settings.Common.ResolveAll": "Alles auflösen", + "Ui.Settings.Common.Send": "Bitte", + "Ui.Settings.Common.VerifyAll": "Alle überprüfen", + "Ui.Settings.CustomizationSync.OpenDesc": "Dialog öffnen", + "Ui.Settings.CustomizationSync.Panel": "Anpassungssynchronisierung", + "Ui.Settings.CustomizationSync.WarnChangeDeviceName": "Warner Gerätename ändern", + "Ui.Settings.CustomizationSync.WarnSetDeviceName": "Warn-Set Gerätename", + "Ui.Settings.Hatch.AnalyseDatabaseUsage": "Datenbanknutzung analysieren", + "Ui.Settings.Hatch.AnalyseDatabaseUsageDesc": "Analysiert die Datenbanknutzung und erstellt einen TSV-Bericht zur Diagnose. Du kannst den Bericht in eine beliebige Tabellenkalkulation einfügen.", + "Ui.Settings.Hatch.BackToNonConfigured": "Zurück zu nicht konfiguriert", + "Ui.Settings.Hatch.ConvertNonObfuscated": "Nicht pfadverschleierte Dateien prüfen und konvertieren", + "Ui.Settings.Hatch.ConvertNonObfuscatedDesc": "Prüft die lokale Datenbank auf Dateien ohne Pfadverschleierung und konvertiert sie bei Bedarf.", + "Ui.Settings.Hatch.CopyIssueReport": "Bericht an die Zwischenablage kopieren", + "Ui.Settings.Hatch.DatabaseLabel": "Datenbank: ${details}", + "Ui.Settings.Hatch.DatabaseToStorage": "Datenbank -> Lagerung", + "Ui.Settings.Hatch.DeleteCustomizationSyncData": "Alle Daten der Anpassungssynchronisierung löschen", + "Ui.Settings.Hatch.GeneratedReport": "Erstellter Bericht", + "Ui.Settings.Hatch.Missing": "Fehlen", + "Ui.Settings.Hatch.ModifiedSize": "Geänderte Größe", + "Ui.Settings.Hatch.ModifiedSizeActual": "Modifizierte Größe", + "Ui.Settings.Hatch.PrepareIssueReport": "Bericht zum Erstellen eines Issues vorbereiten", + "Ui.Settings.Hatch.RecoveryAndRepair": "Wiederherstellung und Reparatur", + "Ui.Settings.Hatch.RecreateAll": "Alle zurückerhalten", + "Ui.Settings.Hatch.RecreateMissingChunks": "Fehlende Chunks für alle Dateien neu erstellen", + "Ui.Settings.Hatch.RecreateMissingChunksDesc": "Erstellt die Chunks für alle Dateien neu. Falls Chunks fehlten, kann dies die Fehler beheben.", + "Ui.Settings.Hatch.ResetPanel": "Zurücksetzen", + "Ui.Settings.Hatch.ResetRemoteUsage": "Benachrichtigungsschwelle zurücksetzen und Nutzung der entfernten Datenbank prüfen", + "Ui.Settings.Hatch.ResetRemoteUsageDesc": "Setzt die Größenschwelle des entfernten Speichers zurück und prüft die Speichergröße erneut.", + "Ui.Settings.Hatch.ResolveAllConflictedFiles": "Alle Dateikonflikte mit der neueren Version lösen", + "Ui.Settings.Hatch.ResolveAllConflictedFilesDesc": "Löst alle Dateikonflikte mit der neueren Version. Achtung: Die ältere Version wird überschrieben und kann nicht wiederhergestellt werden.", + "Ui.Settings.Hatch.RunDoctor": "Der Doktor", + "Ui.Settings.Hatch.ScanBrokenFiles": "Scannen von Dateien", + "Ui.Settings.Hatch.ScramSwitches": "Notfallschalter", + "Ui.Settings.Hatch.ShowHistory": "Geschichte zeigen", + "Ui.Settings.Hatch.StorageLabel": "Speicher: ${details}", + "Ui.Settings.Hatch.StorageToDatabase": "Lagerung -> Datenbank", + "Ui.Settings.Hatch.VerifyAndRepairAllFiles": "Alle Dateien prüfen und reparieren", + "Ui.Settings.Hatch.VerifyAndRepairAllFilesDesc": "Vergleicht Dateiinhalte zwischen lokaler Datenbank und Speicher. Wenn sie nicht übereinstimmen, wirst du gefragt, welche Version behalten werden soll.", + "Ui.Settings.Maintenance.Cleanup": "Bereinigung ausführen", + "Ui.Settings.Maintenance.CleanupDesc": "Reduziert den Speicherbedarf, indem alle nicht neuesten Revisionen verworfen werden. Dafür wird derselbe freie Speicherplatz auf dem entfernten Server und dem lokalen Client benötigt.", + "Ui.Settings.Maintenance.DeleteLocalDatabase": "Lokale Datenbank löschen, um Self-hosted LiveSync zurückzusetzen oder zu deinstallieren", + "Ui.Settings.Maintenance.EmergencyRestart": "Notfall-Neustart", + "Ui.Settings.Maintenance.EmergencyRestartDesc": "Deaktiviert die gesamte Synchronisierung und startet neu.", + "Ui.Settings.Maintenance.FreshStartWipe": "Löschen für einen Neustart", + "Ui.Settings.Maintenance.FreshStartWipeDesc": "Löscht alle Daten auf dem entfernten Server.", + "Ui.Settings.Maintenance.GarbageCollection": "Müllsammlung V3 (Beta)", + "Ui.Settings.Maintenance.GarbageCollectionAction": "Müllsammlung durchführen", + "Ui.Settings.Maintenance.GarbageCollectionDesc": "Führt die Garbage Collection aus, um ungenutzte Chunks zu entfernen und die Datenbankgröße zu reduzieren.", + "Ui.Settings.Maintenance.LockServer": "Server sperren", + "Ui.Settings.Maintenance.LockServerDesc": "Sperrt den entfernten Server, um die Synchronisierung mit anderen Geräten zu verhindern.", + "Ui.Settings.Maintenance.OverwriteRemote": "Entfernte Daten überschreiben", + "Ui.Settings.Maintenance.OverwriteRemoteDesc": "Überschreibt die entfernten Daten mit lokaler DB und Passphrase.", + "Ui.Settings.Maintenance.OverwriteServerData": "Serverdaten mit den Dateien dieses Geräts überschreiben", + "Ui.Settings.Maintenance.OverwriteServerDataDesc": "Erstellt die lokale und entfernte Datenbank mit den Dateien dieses Geräts neu.", + "Ui.Settings.Maintenance.PurgeAllJournalCounter": "Alle Journalzähler bereinigen", + "Ui.Settings.Maintenance.PurgeAllJournalCounterDesc": "Bereinigt alle Download- und Upload-Caches.", + "Ui.Settings.Maintenance.RebuildingOperations": "Rebuilding Operationen (Remote Only)", + "Ui.Settings.Maintenance.Resend": "Erneut senden", + "Ui.Settings.Maintenance.ResendDesc": "Sendet alle Chunks erneut an die entfernte Seite.", + "Ui.Settings.Maintenance.Reset": "Zurücksetzen", + "Ui.Settings.Maintenance.ResetAllJournalCounter": "Alle Journalzähler zurücksetzen", + "Ui.Settings.Maintenance.ResetAllJournalCounterDesc": "Initialisiert den gesamten Journalverlauf. Bei der nächsten Synchronisierung wird jedes Element erneut empfangen und gesendet.", + "Ui.Settings.Maintenance.ResetJournalReceived": "Empfangsverlauf des Journals zurücksetzen", + "Ui.Settings.Maintenance.ResetJournalReceivedDesc": "Initialisiert den Empfangsverlauf des Journals. Bei der nächsten Synchronisierung werden alle Elemente außer denen von diesem Gerät erneut heruntergeladen.", + "Ui.Settings.Maintenance.ResetJournalSent": "Sendeverlauf des Journals zurücksetzen", + "Ui.Settings.Maintenance.ResetJournalSentDesc": "Initialisiert den Sendeverlauf des Journals. Bei der nächsten Synchronisierung werden alle Elemente außer denen, die dieses Gerät empfangen hat, erneut gesendet.", + "Ui.Settings.Maintenance.ResetLocalSyncInfo": "Synchronisierungsinformationen zurücksetzen", + "Ui.Settings.Maintenance.ResetLocalSyncInfoDesc": "Stellt die lokale Datenbank aus der entfernten Datenbank wieder her oder rekonstruiert sie.", + "Ui.Settings.Maintenance.ResetReceived": "Zurück zur Übersicht", + "Ui.Settings.Maintenance.ResetSentHistory": "Zurück zur Übersicht", + "Ui.Settings.Maintenance.ResetThisDevice": "Synchronisierung auf diesem Gerät zurücksetzen", + "Ui.Settings.Maintenance.ScheduleAndRestart": "Zeitplan und Neustart", + "Ui.Settings.Maintenance.Scram": "Notfall", + "Ui.Settings.Maintenance.SendChunks": "Schicke Stücke", + "Ui.Settings.Maintenance.Syncing": "Synchronisierung", + "Ui.Settings.Maintenance.WarningLockedReadyAction": "Warnung Gesperrte Aktion", + "Ui.Settings.Maintenance.WarningLockedReadyText": "Warnen Gesperrter Text", + "Ui.Settings.Maintenance.WarningLockedResolveAction": "Warnung Gesperrte Lösungsaktion", + "Ui.Settings.Maintenance.WarningLockedResolveText": "Warnung gesperrter Auflösungstext", + "Ui.Settings.Maintenance.WriteRedFlagAndRestart": "Flagge und Neustart", + "Ui.Settings.Patches.CompatibilityConflict": "Kompatibilität (Konfliktverhalten)", + "Ui.Settings.Patches.CompatibilityDatabase": "Kompatibilität (Datenbankstruktur)", + "Ui.Settings.Patches.CompatibilityInternalApi": "Kompatibilität (Nutzung interner APIs)", + "Ui.Settings.Patches.CompatibilityMetadata": "Kompatibilität (Metadaten)", + "Ui.Settings.Patches.CompatibilityRemote": "Kompatibilität (entfernte Datenbank)", + "Ui.Settings.Patches.CompatibilityTrouble": "Kompatibilität (behobene Probleme)", + "Ui.Settings.Patches.CurrentAdapter": "Aktueller Adapter: ${adapter}", + "Ui.Settings.Patches.DatabaseAdapter": "Datenbankadapter", + "Ui.Settings.Patches.DatabaseAdapterDesc": "Wähle den zu verwendenden Datenbankadapter.", + "Ui.Settings.Patches.EdgeCaseBehaviour": "Behandlung von Grenzfällen (Verhalten)", + "Ui.Settings.Patches.EdgeCaseDatabase": "Behandlung von Grenzfällen (Datenbank)", + "Ui.Settings.Patches.EdgeCaseProcessing": "Behandlung von Grenzfällen (Verarbeitung)", + "Ui.Settings.Patches.IndexedDbWarning": "Indizierte Db-Warnung", + "Ui.Settings.Patches.MigratingToIdb": "Zu Idb", + "Ui.Settings.Patches.MigratingToIndexedDb": "Migration zu Indexed Db", + "Ui.Settings.Patches.MigrationIdbCompleted": "Migration Idb abgeschlossen", + "Ui.Settings.Patches.MigrationIdbCompletedFollowUp": "Migration Idb beendet Folgen", + "Ui.Settings.Patches.MigrationIndexedDbCompleted": "Migrationsindex Db abgeschlossen", + "Ui.Settings.Patches.MigrationIndexedDbCompletedFollowUp": "Migration Indexed Db Completeed Follow Up", + "Ui.Settings.Patches.MigrationWarning": "Migrationswarnung", + "Ui.Settings.Patches.OperationToIdb": "Betrieb auf Idb", + "Ui.Settings.Patches.OperationToIndexedDb": "Betrieb zu Index Db", + "Ui.Settings.Patches.Remediation": "Behebung", + "Ui.Settings.Patches.RemediationChanged": "Zurück zur Übersicht", + "Ui.Settings.Patches.RemediationNoLimit": "Zurück zur Übersicht", + "Ui.Settings.Patches.RemediationRestarting": "Zurück zur Übersicht", + "Ui.Settings.Patches.RemediationRestartLater": "Zurück zur Übersicht", + "Ui.Settings.Patches.RemediationRestartMessage": "Zurück zur Übersicht", + "Ui.Settings.Patches.RemediationRestartNow": "Zurück zur Übersicht", + "Ui.Settings.Patches.RemediationSuffixChanged": "Zurück zur Übersicht", + "Ui.Settings.Patches.RemediationWithValue": "Wert: ${date} (${timestamp})", + "Ui.Settings.Patches.RemoteDatabaseSunset": "Entfernte Datenbank optimieren (läuft aus)", + "Ui.Settings.Patches.SwitchToIDB": "Zu IDB wechseln", + "Ui.Settings.Patches.SwitchToIndexedDb": "Schalten Sie auf Db", + "Ui.Settings.PowerUsers.ConfigurationEncryption": "Konfigurationsverschlüsselung", + "Ui.Settings.PowerUsers.ConnectionTweak": "CouchDB-Verbindung optimieren", + "Ui.Settings.PowerUsers.ConnectionTweakDesc": "Verbindung Tweak Desc", + "Ui.Settings.PowerUsers.Default": "Fehler", + "Ui.Settings.PowerUsers.Developer": "Entwickler", + "Ui.Settings.PowerUsers.EncryptSensitiveConfig": "Sensible Konfigurationseinträge verschlüsseln", + "Ui.Settings.PowerUsers.PromptPassphraseEveryLaunch": "Fragen Sie eine Passphrase bei jedem Start", + "Ui.Settings.PowerUsers.UseCustomPassphrase": "Verwenden Sie eine benutzerdefinierte Passphrase", + "Ui.Settings.Remote.Activate": "Aktivieren", + "Ui.Settings.Remote.ActiveSuffix": "Aktiver Suffix", + "Ui.Settings.Remote.AddConnection": "Verbindung hinzufügen", + "Ui.Settings.Remote.AddRemoteDefaultName": "Remote Default Name hinzufügen", + "Ui.Settings.Remote.ConfigureAndChangeRemote": "Remote konfigurieren und ändern", + "Ui.Settings.Remote.ConfigureE2EE": "E2EE konfigurieren", + "Ui.Settings.Remote.ConfigureRemote": "Entfernte Verbindung konfigurieren", + "Ui.Settings.Remote.DeleteRemoteConfirm": "Remote-Konfiguration \"${name}\" löschen?", + "Ui.Settings.Remote.DeleteRemoteTitle": "Löschen Remote Title", + "Ui.Settings.Remote.DisplayName": "Anzeige Name", + "Ui.Settings.Remote.DuplicateRemote": "Remote-Konfiguration duplizieren", + "Ui.Settings.Remote.DuplicateRemoteSuffix": "Suffix der duplizierten Remote-Konfiguration", + "Ui.Settings.Remote.E2EEConfiguration": "E2EE-Konfiguration", + "Ui.Settings.Remote.Export": "Ausfuhr", + "Ui.Settings.Remote.FetchRemoteSettings": "Fetch Remote Einstellungen", + "Ui.Settings.Remote.ImportConnection": "Verbindung", + "Ui.Settings.Remote.ImportConnectionPrompt": "Verbindungsdaten importieren", + "Ui.Settings.Remote.ImportedCouchDb": "Importierter Couch Db", + "Ui.Settings.Remote.ImportedRemote": "Eingeführte Fernbedienung", + "Ui.Settings.Remote.MoreActions": "Weitere Aktionen", + "Ui.Settings.Remote.PeerToPeerPanel": "Peer-to-Peer-Synchronisierung", + "Ui.Settings.Remote.RemoteConfigurationPrefix": "Präfix der Remote-Konfiguration", + "Ui.Settings.Remote.RemoteDatabases": "Entfernte Datenbanken", + "Ui.Settings.Remote.RemoteName": "Fernname", + "Ui.Settings.Remote.RemoteNameCouchDb": "Remote-Name CouchDB", + "Ui.Settings.Remote.RemoteNameP2P": "Remote-Name P2P", + "Ui.Settings.Remote.RemoteNameS3": "Fernname S3", + "Ui.Settings.Remote.Rename": "Name", + "Ui.Settings.Selector.AddDefaultPatterns": "Standardmuster hinzufügen", + "Ui.Settings.Selector.CrossPlatform": "Cross-Plattform", + "Ui.Settings.Selector.Default": "Fehler", + "Ui.Settings.Selector.HiddenFiles": "Versteckte Dateien", + "Ui.Settings.Selector.IgnorePatterns": "Ignoriermuster", + "Ui.Settings.Selector.NonSynchronisingFiles": "Nicht synchronisierte Dateien", + "Ui.Settings.Selector.NonSynchronisingFilesDesc": "(RegExp) Wenn gesetzt, werden Änderungen an passenden lokalen und entfernten Dateien übersprungen.", + "Ui.Settings.Selector.NormalFiles": "Normale Dateien", + "Ui.Settings.Selector.OverwritePatterns": "Überschreibmuster", + "Ui.Settings.Selector.OverwritePatternsDesc": "Muster für Dateien, die überschrieben statt zusammengeführt werden", + "Ui.Settings.Selector.SynchronisingFiles": "Synchronisierte Dateien", + "Ui.Settings.Selector.SynchronisingFilesDesc": "(RegExp) Leer lassen, um alle Dateien zu synchronisieren. Lege einen regulären Ausdruck fest, um synchronisierte Dateien einzuschränken.", + "Ui.Settings.Selector.TargetPatterns": "Zielmuster", + "Ui.Settings.Selector.TargetPatternsDesc": "Muster für Dateien, die synchronisiert werden sollen", + "Ui.Settings.Setup.RerunWizardButton": "Assistent erneut ausführen", + "Ui.Settings.Setup.RerunWizardDesc": "Führt den Einrichtungsassistenten erneut aus, um Self-hosted LiveSync neu einzurichten.", + "Ui.Settings.Setup.RerunWizardName": "Einrichtungsassistent erneut ausführen", + "Ui.Settings.SyncSettings.Fetch": "Gebühren", + "Ui.Settings.SyncSettings.Merge": "Verschmelzung", + "Ui.Settings.SyncSettings.Overwrite": "Überschrift", + "Ui.SetupWizard.Bucket.AccessKeyId": "Access Key ID", + "Ui.SetupWizard.Bucket.BucketName": "Bucket-Name", + "Ui.SetupWizard.Bucket.EndpointUrl": "Endpunkt-URL", + "Ui.SetupWizard.Bucket.FolderPrefix": "Folder Prefix", + "Ui.SetupWizard.Bucket.FolderPrefixDesc": "Wenn Sie Daten in einem bestimmten Ordner im Bucket speichern möchten, können Sie hier ein Ordnerpräfix angeben. Andernfalls leer lassen, um Daten im Stammverzeichnis des Buckets zu speichern.", + "Ui.SetupWizard.Bucket.InternalApiDesc": "Wenn Sie CORS-Probleme nicht vermeiden können, können Sie diese Option ausprobieren. Sie nutzt die interne API von Obsidian zur Kommunikation mit dem S3-Server. Das entspricht nicht den Webstandards, funktioniert aber. Beachten Sie, dass dies in zukünftigen Obsidian-Versionen brechen kann.", + "Ui.SetupWizard.Bucket.PlaceholderAccessKeyId": "Access Key ID eingeben", + "Ui.SetupWizard.Bucket.PlaceholderBucketName": "Bucket-Namen eingeben", + "Ui.SetupWizard.Bucket.PlaceholderFolderPrefix": "Ordnerpräfix eingeben (optional)", + "Ui.SetupWizard.Bucket.PlaceholderRegion": "Region eingeben (z. B. us-east-1, auto für R2)", + "Ui.SetupWizard.Bucket.PlaceholderSecretAccessKey": "Secret Access Key eingeben", + "Ui.SetupWizard.Bucket.Region": "Region", + "Ui.SetupWizard.Bucket.SecretAccessKey": "Secret Access Key", + "Ui.SetupWizard.Bucket.Title": "S3/MinIO/R2 Konfiguration", + "Ui.SetupWizard.Bucket.UseInternalApi": "Interne API verwenden", + "Ui.SetupWizard.Bucket.UsePathStyleAccess": "Path-Style-Zugriff verwenden", + "Ui.SetupWizard.Common.AdvancedSettings": "Erweiterte Einstellungen", + "Ui.SetupWizard.Common.Back": "Zurück", + "Ui.SetupWizard.Common.Cancel": "Abbrechen", + "Ui.SetupWizard.Common.CheckingConnection": "Verbindung wird geprüft... Bitte warten.", + "Ui.SetupWizard.Common.ContinueAnyway": "Immer noch", + "Ui.SetupWizard.Common.CustomHeaders": "Benutzerdefinierte Header", + "Ui.SetupWizard.Common.ErrorConnectionTest": "Fehler beim Verbindungstest: ${error}", + "Ui.SetupWizard.Common.ErrorConnectServer": "Verbindung zum Server fehlgeschlagen. Bitte prüfen Sie Ihre Einstellungen.", + "Ui.SetupWizard.Common.ErrorConnectServerDetail": "Verbindung zum Server fehlgeschlagen: ${error}", + "Ui.SetupWizard.Common.ErrorCreateReplicator": "Replikatorinstanz konnte nicht erstellt werden.", + "Ui.SetupWizard.Common.ExperimentalSettings": "Experimentelle Einstellungen", + "Ui.SetupWizard.Common.HttpsOnlyMobile": "Wir können nur Secure (HTTPS) Verbindungen auf Obsidian Mobile verwenden.", + "Ui.SetupWizard.Common.ProceedSelectOption": "Bitte wählen Sie eine Option", + "Ui.SetupWizard.CouchDB.DatabaseName": "Datenbankname", + "Ui.SetupWizard.CouchDB.DatabaseNameDesc": "Im Datenbanknamen dürfen keine Großbuchstaben, Leerzeichen oder Sonderzeichen verwendet werden. Er darf auch nicht mit einem Unterstrich (_) beginnen.", + "Ui.SetupWizard.CouchDB.InternalApiDesc": "Wenn Sie CORS-Probleme nicht vermeiden können, können Sie diese Option ausprobieren. Sie nutzt die interne API von Obsidian zur Kommunikation mit dem CouchDB-Server. Das entspricht nicht den Webstandards, funktioniert aber. Beachten Sie, dass dies in zukünftigen Obsidian-Versionen brechen kann.", + "Ui.SetupWizard.CouchDB.JwtAlgorithm": "JWT-Algorithmus", + "Ui.SetupWizard.CouchDB.JwtExpirationDuration": "JWT-Ablaufdauer (Minuten)", + "Ui.SetupWizard.CouchDB.JwtKey": "JWT-Schlüssel", + "Ui.SetupWizard.CouchDB.JwtKeyDesc": "Für HS256/HS512 geben Sie den gemeinsamen geheimen Schlüssel an. Für ES256/ES512 geben Sie den privaten Schlüssel im pkcs8-PEM-Format an.", + "Ui.SetupWizard.CouchDB.JwtKeyId": "JWT Key ID (kid)", + "Ui.SetupWizard.CouchDB.JwtSubject": "JWT Subject (sub)", + "Ui.SetupWizard.CouchDB.JwtWarning": "JWT-Authentifizierung (JSON Web Token) ermöglicht eine sichere Authentifizierung am CouchDB-Server mit Tokens. Stellen Sie sicher, dass Ihr CouchDB-Server JWTs akzeptiert und dass Schlüssel und Einstellungen zur Serverkonfiguration passen. Diese Funktion wurde noch nicht sehr gründlich geprüft.", + "Ui.SetupWizard.CouchDB.Password": "Passwort", + "Ui.SetupWizard.CouchDB.PlaceholderDatabaseName": "Datenbanknamen eingeben", + "Ui.SetupWizard.CouchDB.PlaceholderJwtKey": "JWT-Secret oder privaten Schlüssel eingeben", + "Ui.SetupWizard.CouchDB.PlaceholderJwtKeyId": "JWT Key ID eingeben", + "Ui.SetupWizard.CouchDB.PlaceholderJwtSubject": "JWT Subject eingeben (CouchDB-Benutzername)", + "Ui.SetupWizard.CouchDB.PlaceholderPassword": "Passwort eingeben", + "Ui.SetupWizard.CouchDB.PlaceholderUsername": "Benutzernamen eingeben", + "Ui.SetupWizard.CouchDB.Title": "CouchDB Konfiguration", + "Ui.SetupWizard.CouchDB.Url": "Server-URL", + "Ui.SetupWizard.CouchDB.UseInternalApi": "Interne API verwenden", + "Ui.SetupWizard.CouchDB.UseJwtAuthentication": "JWT-Authentifizierung verwenden", + "Ui.SetupWizard.CouchDB.Username": "Benutzername", + "Ui.SetupWizard.CouchDBCheck.DetectAndFix": "CouchDB Probleme erkennen und beheben", + "Ui.SetupWizard.CouchDBCheck.Fix": "Fehler", + "Ui.SetupWizard.E2EE.AlgorithmGuidance": "In den meisten Fällen sollten Sie beim Standardalgorithmus (${algorithm}) bleiben. Diese Einstellung ist nur erforderlich, wenn ein vorhandener Vault in einem anderen Format verschlüsselt ist.", + "Ui.SetupWizard.E2EE.AlgorithmWarning": "Wenn Sie den Verschlüsselungsalgorithmus ändern, können zuvor mit einem anderen Algorithmus verschlüsselte Daten nicht mehr gelesen werden. Stellen Sie sicher, dass alle Geräte denselben Algorithmus verwenden, damit der Zugriff auf Ihre Daten erhalten bleibt.", + "Ui.SetupWizard.E2EE.EncryptionAlgorithm": "Verschlüsselungsalgorithmus", + "Ui.SetupWizard.Fetch.BackupDone": "Ich habe ein Backup von meinem Vault erstellt.", + "Ui.SetupWizard.Fetch.BackupQuestion": "Haben Sie ein Backup erstellt, bevor Sie fortfahren?", + "Ui.SetupWizard.Fetch.BackupRecommendation": "Wir empfehlen Ihnen, Ihren Vault-Ordner an einen sicheren Ort zu kopieren. Dies wird einen Schutz bieten, wenn eine Vielzahl von Konflikten entstehen, oder wenn Sie versehentlich mit einem falschen Ziel synchronisieren.", + "Ui.SetupWizard.Fetch.BackupSkipped": "Ich verstehe die Risiken und werde ohne Verstärkung fortfahren.", + "Ui.SetupWizard.Fetch.BackupUnable": "Ich kann kein Backup von meinem Tresor erstellen.", + "Ui.SetupWizard.Fetch.BackupUnableNote": "Wenn Sie die Risiken verstehen und trotzdem fortfahren wollen, wählen Sie das aus.", + "Ui.SetupWizard.Fetch.BackupUnableWarning": "Es wird dringend empfohlen, ein Backup zu erstellen, bevor Sie fortfahren. Die Fortsetzung ohne Backup kann zu Datenverlust führen.", + "Ui.SetupWizard.Fetch.ConflictNote": "Darüber hinaus, wenn Konflikte bereits in den Serverdaten vorhanden sind, werden sie mit diesem Gerät synchronisiert, wie sie sind, und Sie müssen sie lokal beheben.", + "Ui.SetupWizard.Fetch.Guidance": "Dies wird die lokale Datenbank auf diesem Gerät mit den neuesten Daten des Servers wieder aufbauen. Diese Aktion soll Synchronisierungsunkonsistenzen lösen und die korrekte Funktionalität wiederherzustellen.", + "Ui.SetupWizard.Fetch.ImportantBody": "Wenn Sie unsynchronisierte Änderungen in Ihrem Vault auf diesem Gerät haben, divergieren sie wahrscheinlich von den Versionen des Servers nach dem Reset. Dies kann zu einer Vielzahl von Dateikonflikten führen.", + "Ui.SetupWizard.Fetch.ImportantTitle": "Wichtige Hinweise", + "Ui.SetupWizard.Fetch.PreventFetchConfig": "Verhindern Sie die Abrufkonfiguration vom Server", + "Ui.SetupWizard.Fetch.Proceed": "Zurücksetzen und Wiederaufnahme Synchronisation", + "Ui.SetupWizard.Fetch.Title": "Synchronisation auf diesem Gerät zurücksetzen", + "Ui.SetupWizard.Fetch.UnbalancedNote": "In diesem Szenario wird Self-hosted LiveSync für jede Datei Metadaten wiedergeben und bewusst Konflikte generieren. Ist der Dateiinhalt identisch, werden diese Konflikte automatisch behoben.", + "Ui.SetupWizard.Fetch.VaultIdentical": "Die Dateien in diesem Vault sind fast identisch mit dem Server.", + "Ui.SetupWizard.Fetch.VaultIdenticalDesc": "(z.B. unmittelbar nach der Wiederherstellung auf einem anderen Computer oder aus einem Backup gewonnen)", + "Ui.SetupWizard.Fetch.VaultIndependent": "Dieser Vault ist leer oder enthält nur neue Dateien, die nicht auf dem Server sind.", + "Ui.SetupWizard.Fetch.VaultIndependentDesc": "(z.B. erstmalig auf einem neuen Smartphone, ausgehend von einem sauberen Schiefer)", + "Ui.SetupWizard.Fetch.VaultQuestion": "Um die Schaffung neuer Konflikte zu minimieren, wählen Sie bitte die Option, die den aktuellen Zustand Ihres Tresors am besten beschreibt. Die Anwendung wird dann Ihre Dateien auf die am besten geeignete Weise basierend auf Ihrer Auswahl überprüfen.", + "Ui.SetupWizard.Fetch.VaultUnbalanced": "Es kann Unterschiede zwischen den Dateien in diesem Vault und dem Server geben.", + "Ui.SetupWizard.Fetch.VaultUnbalancedDesc": "(z.B. nach der Bearbeitung vieler Dateien während offline)", + "Ui.SetupWizard.Intro.ExistingOption": "Ich habe bereits einen konfigurierten Server", + "Ui.SetupWizard.Intro.ExistingOptionDesc": "Verbinden Sie mit einem bestehenden LiveSync Server", + "Ui.SetupWizard.Intro.Guidance": "Willkommen! Legen wir LiveSync ein. Sind Sie neu bei LiveSync oder haben Sie bereits einen Remoteserver konfiguriert?", + "Ui.SetupWizard.Intro.NewOption": "Ich bin neu bei LiveSync", + "Ui.SetupWizard.Intro.NewOptionDesc": "LiveSync zum ersten Mal einrichten", + "Ui.SetupWizard.Intro.ProceedExisting": "Konnektivieren Sie bestehende", + "Ui.SetupWizard.Intro.ProceedNew": "Neues einrichten", + "Ui.SetupWizard.Intro.Question": "Was beschreibt Ihre Situation?", + "Ui.SetupWizard.Intro.Title": "Einrichtungsassistent", + "Ui.SetupWizard.Log.E2EEConfigurationCancelled": "E2EE-Konfiguration abgebrochen.", + "Ui.SetupWizard.Log.ManualConfigurationCancelled": "Manuelle Konfiguration abgebrochen.", + "Ui.SetupWizard.Log.NoSettingsChanges": "Keine ?nderungen an den Einstellungen erkannt. Einstellungen aus dem Assistenten werden nicht angewendet.", + "Ui.SetupWizard.Log.OnboardingCancelled": "Einrichtung durch Benutzer abgebrochen.", + "Ui.SetupWizard.Log.QrCodeDialogClosed": "QR-Code-Dialog geschlossen.", + "Ui.SetupWizard.Log.QrCodeResult": "QR-Code-Ergebnis: ${result}", + "Ui.SetupWizard.Log.SettingApplied": "Einstellung angewendet", + "Ui.SetupWizard.Log.SettingsApplied": "Einstellungen aus dem Assistenten angewendet.", + "Ui.SetupWizard.Log.SetupUriDialogCancelled": "Setup-URI-Dialog abgebrochen.", + "Ui.SetupWizard.Log.SetupUriDialogClosed": "Setup-URI-Dialog geschlossen.", + "Ui.SetupWizard.Log.UserCancelledApplyingSettings": "Anwenden der Einstellungen aus dem Assistenten durch Benutzer abgebrochen.", + "Ui.SetupWizard.OutroAskUserMode.CompatibleOption": "Verwenden Sie den kompatiblen Modus", + "Ui.SetupWizard.OutroAskUserMode.CompatibleOptionDesc": "Verwenden Sie dies, wenn die Fernbedienung mit einer älteren Version von LiveSync eingerichtet wurde. Einige Funktionen können begrenzt sein.", + "Ui.SetupWizard.OutroAskUserMode.ExistingOption": "Dieses Gerät verfügt über vorhandene Daten", + "Ui.SetupWizard.OutroAskUserMode.ExistingOptionDesc": "Lokale Dateien mit der Fernbedienung verschmelzen. 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 Sync-Verhalten.", + "Ui.SetupWizard.OutroAskUserMode.NewOption": "Einrichten als neues Gerät", + "Ui.SetupWizard.OutroAskUserMode.NewOptionDesc": "Beginnen Sie frisch mit einem neuen Tresor. Remote-Dateien werden nach dem Setup abgeholt.", + "Ui.SetupWizard.OutroAskUserMode.ProceedApplySettings": "Anwenden von Einstellungen", + "Ui.SetupWizard.OutroAskUserMode.ProceedNext": "Fortsetzung", + "Ui.SetupWizard.OutroAskUserMode.Question": "Wählen Sie den Modus für dieses Gerät aus:", + "Ui.SetupWizard.OutroAskUserMode.Title": "Wie werden Sie dieses Gerät benutzen?", + "Ui.SetupWizard.OutroExisting.Guidance": "Das Setup ist komplett. Die Remote-Daten werden nach dem Neustart abgeholt. Klicken Sie auf die Schaltfläche unten, um die Synchronisation neu zu starten.", + "Ui.SetupWizard.OutroExisting.Proceed": "Restart- und Fetch-Daten", + "Ui.SetupWizard.OutroExisting.Question": "Bitte wählen Sie die Schaltfläche unten, um neu zu starten und gehen Sie zur Daten-Fetching-Bestätigung.", + "Ui.SetupWizard.OutroExisting.Title": "Setup Complete: Vorbereitung auf Fetch Synchronisationsdaten", + "Ui.SetupWizard.OutroNewUser.GuidancePrimary": "Ihre LiveSync-Konfiguration wurde eingerichtet. Die Einstellungen werden angewendet, wenn Sie diesen Dialog schließen.", + "Ui.SetupWizard.OutroNewUser.GuidanceWarning": "Dies wird bestehende Dateien überschreiben, wenn der Remote-Standard Daten hat. Stellen Sie sicher, dass Sie einen leeren Tresor verwenden oder Backups haben.", + "Ui.SetupWizard.OutroNewUser.Important": "Wichtig:", + "Ui.SetupWizard.OutroNewUser.Proceed": "Apply und Neustart", + "Ui.SetupWizard.OutroNewUser.Question": "Bereit, die Konfiguration anzuwenden?", + "Ui.SetupWizard.OutroNewUser.Title": "Setup Komplett", + "Ui.SetupWizard.P2P.AutoBroadcast": "Änderungen automatisch übertragen", + "Ui.SetupWizard.P2P.AutoBroadcastDesc": "Wenn automatische Übertragung aktiviert ist, werden Änderungen ohne manuelles Eingreifen an verbundene Peers übertragen. Dadurch werden Peers aufgefordert, die Änderungen dieses Geräts abzurufen.", + "Ui.SetupWizard.P2P.AutoStart": "P2P-Verbindung automatisch starten", + "Ui.SetupWizard.P2P.AutoStartDesc": "Wenn der automatische Start der P2P-Verbindung aktiviert ist, wird die P2P-Verbindung beim Start des Plugins automatisch gestartet.", + "Ui.SetupWizard.P2P.DevicePeerId": "Geräte-Peer-ID", + "Ui.SetupWizard.P2P.Enabled": "Aktiviert", + "Ui.SetupWizard.P2P.ErrorConnectPeers": "Verbindung zu anderen Peers fehlgeschlagen: ${error}", + "Ui.SetupWizard.P2P.GenerateRandomId": "Zufällige ID erzeugen", + "Ui.SetupWizard.P2P.GroupId": "Gruppen-ID", + "Ui.SetupWizard.P2P.GroupPassphraseDesc": "Gruppen-ID und Passphrase werden verwendet, um Ihre Gerätegruppe zu identifizieren. Verwenden Sie auf allen zu synchronisierenden Geräten dieselbe Gruppen-ID und Passphrase. Die Gruppen-ID ist nicht auf das erzeugte Format beschränkt; Sie können eine beliebige Zeichenkette verwenden.", + "Ui.SetupWizard.P2P.NoPeersFound": "Ihre Einstellungen scheinen korrekt zu sein, aber es wurden keine anderen Peers gefunden.", + "Ui.SetupWizard.P2P.PlaceholderRelayUrl": "Relay-URL eingeben", + "Ui.SetupWizard.P2P.PlaceholderTurnCredential": "TURN-Zugangsdaten eingeben", + "Ui.SetupWizard.P2P.PlaceholderTurnUsername": "TURN-Benutzernamen eingeben", + "Ui.SetupWizard.P2P.PublicTurnWarning": "Die Nutzung öffentlicher TURN-Server kann Datenschutzfolgen haben, da Ihre Daten über Server Dritter weitergeleitet werden. Auch wenn Ihre Daten verschlüsselt sind, kann Ihre Existenz für diese sichtbar sein. Stellen Sie vor der Nutzung sicher, dass Sie dem TURN-Server-Anbieter und Ihrem Netzwerkadministrator vertrauen. Wenn möglich, richten Sie einen eigenen TURN-Server für Ihren FQDN ein.", + "Ui.SetupWizard.P2P.RelayUrl": "Relay-URL", + "Ui.SetupWizard.P2P.Title": "P2P Konfiguration", + "Ui.SetupWizard.P2P.TurnCredential": "TURN-Zugangsdaten", + "Ui.SetupWizard.P2P.TurnServerDesc": "TURN-Server-Einstellungen sind nur erforderlich, wenn Sie sich hinter einem strengen NAT oder einer Firewall befinden, die direkte P2P-Verbindungen verhindert. In den meisten Fällen können diese Felder leer bleiben.", + "Ui.SetupWizard.P2P.TurnServerUrls": "TURN-Server-URLs (kommagetrennt)", + "Ui.SetupWizard.P2P.TurnUsername": "TURN-Benutzername", + "Ui.SetupWizard.P2P.UseDefaultRelay": "Das Relais von vrtmrz verwenden", + "Ui.SetupWizard.Rebuild.BackupBeforeProceeding": "Natürlich können wir die Daten sichern, bevor wir fortfahren.", + "Ui.SetupWizard.Rebuild.BackupDone": "Ich habe ein Backup von meinem Vault erstellt.", + "Ui.SetupWizard.Rebuild.BackupQuestion": "Haben Sie ein Backup erstellt, bevor Sie fortfahren?", + "Ui.SetupWizard.Rebuild.BackupSkipped": "Ich verstehe die Risiken und werde ohne Verstärkung fortfahren.", + "Ui.SetupWizard.Rebuild.BackupUnable": "Ich bin nicht in der Lage, ein Backup meiner Vaults zu erstellen.", + "Ui.SetupWizard.Rebuild.BackupUnableAdvice": "Sie sollten ein neues Synchronisierungsziel erstellen und dort Ihre Daten wieder aufbauen. Danach synchronisieren Sie auf ein brandneues Gewölbe auf dem anderen Gerät mit dem neuen Remote von einem nach dem anderen.", + "Ui.SetupWizard.Rebuild.BackupWarning": "Dies ist eine äußerst leistungsfähige Operation. Wir empfehlen dringend, dass Sie Ihren Vault-Ordner an einen sicheren Ort kopieren.", + "Ui.SetupWizard.Rebuild.ConfirmDataLoss": "Ich verstehe, dass alle Änderungen auf anderen Smartphones oder Computern möglicherweise verloren gehen könnten.", + "Ui.SetupWizard.Rebuild.ConfirmIrreversible": "Ich verstehe, dass diese Aktion unumkehrbar ist, wenn sie einmal durchgeführt wird.", + "Ui.SetupWizard.Rebuild.ConfirmSyncDisabled": "Ich verstehe, dass andere Geräte nicht mehr synchronisieren können und die Synchronisationsinformationen zurücksetzen müssen.", + "Ui.SetupWizard.Rebuild.ConfirmTitle": "Bitte bestätigen Sie das Folgende", + "Ui.SetupWizard.Rebuild.Guidance": "Dieses Verfahren wird zunächst alle vorhandenen Synchronisationsdaten vom Server löschen. Im Anschluss daran werden die Serverdaten vollständig wiederhergestellt, wobei der aktuelle Zustand Ihres Vault auf diesem Gerät als einzige, maßgebliche Masterkopie verwendet wird.", + "Ui.SetupWizard.Rebuild.PreventFetchConfig": "Verhindern Sie die Abrufkonfiguration vom Server", + "Ui.SetupWizard.Rebuild.Proceed": "Ich verstehe, Overwrite Server", + "Ui.SetupWizard.Rebuild.ResetNotifyOtherDevices": "durch Zurücksetzen der Fernbedienung werden Sie auf anderen Geräten informiert.", + "Ui.SetupWizard.Rebuild.ResolveOnOtherDevices": "Es gibt einen Weg, dies auf anderen Geräten zu lösen.", + "Ui.SetupWizard.Rebuild.Title": "Letzte Bestätigung: Überschreiben Sie Serverdaten mit den Dateien dieses Geräts", + "Ui.SetupWizard.Rebuild.WhenToUse": "Sie sollten diese Operation nur unter außergewöhnlichen Umständen durchführen, z.B. wenn die Serverdaten vollständig beschädigt sind, wenn Änderungen auf allen anderen Geräten nicht mehr erforderlich sind, oder wenn die Datenbankgröße im Vergleich zur Standardgröße ungewöhnlich groß geworden ist.", + "Ui.SetupWizard.SelectExisting.Guidance": "Wählen Sie, wie Sie mit Ihrem vorhandenen LiveSync Server verbinden.", + "Ui.SetupWizard.SelectExisting.ManualOption": "manuell konfigurieren", + "Ui.SetupWizard.SelectExisting.ManualOptionDesc": "Geben Sie Serverdetails und Anmeldeinformationen selbst ein", + "Ui.SetupWizard.SelectExisting.ProceedManual": "manuell konfigurieren", + "Ui.SetupWizard.SelectExisting.ProceedQr": "QR-Code Scannen", + "Ui.SetupWizard.SelectExisting.ProceedSetupUri": "Verwenden Sie Setup-URI", + "Ui.SetupWizard.SelectExisting.QrOption": "QR-Code Scannen", + "Ui.SetupWizard.SelectExisting.QrOptionDesc": "Scannen eines QR-Codes von einem bereits konfigurierten Gerät", + "Ui.SetupWizard.SelectExisting.Question": "Verbindungsmethode auswählen:", + "Ui.SetupWizard.SelectExisting.SetupUriOption": "Verwenden Sie Setup-URI", + "Ui.SetupWizard.SelectExisting.SetupUriOptionDesc": "Importieren Sie Konfiguration aus einem Setup-URI, das von Ihrem Server bereitgestellt wird", + "Ui.SetupWizard.SelectExisting.Title": "Verbinden mit dem vorhandenen Server", + "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": "Geben Sie Serverdetails und Anmeldeinformationen selbst ein", + "Ui.SetupWizard.SelectNew.ProceedManual": "manuell konfigurieren", + "Ui.SetupWizard.SelectNew.ProceedSetupUri": "Verwenden Sie Setup-URI", + "Ui.SetupWizard.SelectNew.Question": "Wählen Sie Konfigurationsmethode:", + "Ui.SetupWizard.SelectNew.SetupUriOption": "Verwenden Sie Setup-URI", + "Ui.SetupWizard.SelectNew.SetupUriOptionDesc": "Importieren Sie Konfiguration aus einem Setup-URI, das von Ihrem Server bereitgestellt wird", + "Ui.SetupWizard.SelectNew.Title": "Neue Verbindung einrichten", + "Ui.SetupWizard.SetupRemote.BucketOption": "LiveSync-Bucket", + "Ui.SetupWizard.SetupRemote.BucketOptionDesc": "Verwenden Sie den gebündelten Eimer-Server im LiveSync-Begleitungsservice", + "Ui.SetupWizard.SetupRemote.CouchDbOption": "CouchDB", + "Ui.SetupWizard.SetupRemote.CouchDbOptionDesc": "Verwenden Sie Ihre eigene CouchDB-Instanz für die volle Kontrolle über Ihren Sync-Server", + "Ui.SetupWizard.SetupRemote.Guidance": "Wählen Sie die Art des Remoteservers, den Sie verwenden möchten:", + "Ui.SetupWizard.SetupRemote.P2POption": "Peer-to-Peer (Experimental)", + "Ui.SetupWizard.SetupRemote.P2POptionDesc": "Synchronisieren direkt zwischen Geräten ohne zentralen Server", + "Ui.SetupWizard.SetupRemote.ProceedBucket": "Setup Bucket", + "Ui.SetupWizard.SetupRemote.ProceedCouchDb": "CouchDB einrichten", + "Ui.SetupWizard.SetupRemote.ProceedP2P": "P2P einrichten", + "Ui.SetupWizard.SetupRemote.Title": "Remote-Ziel einrichten", + "Ui.UseSetupURI.ButtonCancel": "Abbrechen", + "Ui.UseSetupURI.ButtonProceed": "Testeinstellungen und Weiter", + "Ui.UseSetupURI.ErrorFailedToParse": "Versäumt, Setup-URI zu parsen.", + "Ui.UseSetupURI.ErrorPassphraseRequired": "Passphrase ist erforderlich.", + "Ui.UseSetupURI.Guidance": "Bitte geben Sie das Setup-URI ein, das während der Serverinstallation oder auf einem anderen Gerät erzeugt wurde, zusammen mit dem Tresorpassphrase.", + "Ui.UseSetupURI.InvalidInfo": "Die Setup-URI scheint nicht gültig zu sein. Bitte überprüfen Sie, ob Sie es richtig kopiert haben.", + "Ui.UseSetupURI.Label": "Setup-URI", + "Ui.UseSetupURI.LabelPassphrase": "Passphrasen", + "Ui.UseSetupURI.PlaceholderPassphrase": "Geben Sie Ihre Passphrase", + "Ui.UseSetupURI.Title": "Einrichten URI", + "Ui.UseSetupURI.ValidMessage": "Die Setup-URI ist gültig und gebrauchsfertig.", + "Unique name between all synchronized devices. To edit this setting, please disable customization sync once.": "Einzigartiger Name zwischen allen synchronisierten Geräten. Um diese Einstellung zu bearbeiten, deaktivieren Sie bitte einmal die Anpassungssynchronisation.", "Use a Setup URI (Recommended)": "Setup-URI verwenden (empfohlen)", + "Use Custom HTTP Handler": "Benutzerdefinierte HTTP Handler", + "Use dynamic iteration count": "Dynamische Iterationszählung verwenden", + "Use Only Local Chunks": "Nur lokale Chunks verwenden", + "Use Request API to avoid `inevitable` CORS problem": "Request API verwenden, um das `unvermeidliche` CORS-Problem zu vermeiden", + "Use Segmented-splitter": "Segmented Splitter verwenden", + "Use splitting-limit-capped chunk splitter": "Benutzen Sie Splitting-Limit-Caped-Chunk Splitter", + "Use the trash bin": "Verwenden Sie den Müllcontainer", + "Use timeouts instead of heartbeats": "Verwenden Sie Timeouts statt Herzschläge", + "username": "Benutzername", + "Username": "Benutzername", + "V1: Legacy": "V1: Legacy", + "V2: Simple (Default)": "V2: Einfach (Standard)", + "V2.5: Lexical chunks": "V2.5: Lexikalische Chunks", + "V3: Fine deduplication": "V3: Feine Deduplizierung", + "Verbose Log": "Ausführliches Protokoll", "Verify all": "Alle prüfen", "Verify and repair all files": "Alle Dateien prüfen und reparieren", + "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.": "Warnung! Dies wird einen ernsthaften Einfluss auf die Leistung haben. Und die Protokolle werden nicht unter dem Standardnamen synchronisiert. Bitte seien Sie vorsichtig mit Protokollen; sie enthalten oft Ihre vertraulichen Informationen.", "We will now guide you through a few questions to simplify the synchronisation setup.": "Wir führen Sie nun durch einige Fragen, um die Synchronisationseinrichtung zu vereinfachen.", "We will now proceed with the server configuration.": "Wir fahren nun mit der Serverkonfiguration fort。", "Welcome to Self-hosted LiveSync": "Willkommen bei Self-hosted LiveSync", + "When you save a file in the editor, start a sync automatically": "Wenn Sie eine Datei im Editor speichern, starten Sie automatisch einen Sync", + "While enabled, it causes very performance impact but debugging replication testing and other features will be enabled. Please disable this if you have not read the source code. Requires restart of Obsidian.": "Wenn aktiviert, beeinträchtigt dies die Leistung stark, aktiviert aber Debugging, Replikationstests und andere Funktionen. Deaktiviere dies, wenn du den Quellcode nicht gelesen hast. Obsidian muss neu gestartet werden.", + "Write credentials in the file": "Anmeldeinformationen in der Datei schreiben", + "Write logs into the file": "Logs in die Datei schreiben", "xxhash32 (Fast but less collision resistance)": "xxhash32 (schnell, aber geringere Kollisionsresistenz)", "xxhash64 (Fastest)": "xxhash64 (am schnellsten)", + "xxhash64 is the current default.": "Der aktuelle Standard ist xxhash64.", "Yes, I want to add this device to my existing synchronisation": "Ja, ich möchte dieses Gerät zu meiner bestehenden Synchronisation hinzufügen", "Yes, I want to set up a new synchronisation": "Ja, ich möchte eine neue Synchronisation einrichten", - "You are adding this device to an existing synchronisation setup.": "Sie fügen dieses Gerät zu einer bestehenden Synchronisationseinrichtung hinzu." + "You are adding this device to an existing synchronisation setup.": "Sie fügen dieses Gerät zu einer bestehenden Synchronisationseinrichtung hinzu.", + "You can enable this setting to process the files with size mismatches, these files can be created by some APIs or integrations.": "Aktiviere diese Einstellung, um Dateien mit abweichender Größe zu verarbeiten; solche Dateien können von manchen APIs oder Integrationen erstellt werden." } diff --git a/src/common/messagesJson/en.json b/src/common/messagesJson/en.json index fd9ff6af..0e8825a1 100644 --- a/src/common/messagesJson/en.json +++ b/src/common/messagesJson/en.json @@ -17,8 +17,10 @@ "Access Key": "Access Key", "Activate": "Activate", "Active Remote Configuration": "Active Remote Configuration", + "Active Remote Type": "Active Remote Type", "Add default patterns": "Add default patterns", "Add new connection": "Add new connection", + "Advanced": "Advanced", "All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.": "All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.", "Always prompt merge conflicts": "Always prompt merge conflicts", "Analyse": "Analyse", @@ -27,6 +29,8 @@ "Apply Latest Change if Conflicting": "Apply Latest Change if Conflicting", "Apply preset configuration": "Apply preset configuration", "Ask a passphrase at every launch": "Ask a passphrase at every launch", + "Automatically broadcast changes to connected peers": "Automatically broadcast changes to connected peers", + "Automatically start P2P connection on launch": "Automatically start P2P connection on launch", "Automatically Sync all files when opening Obsidian.": "Automatically Sync all files when opening Obsidian.", "Back": "Back", "Back to non-configured": "Back to non-configured", @@ -42,6 +46,7 @@ "Check": "Check", "Check and convert non-path-obfuscated files": "Check and convert non-path-obfuscated files", "Check for documents that have not been converted to path-obfuscated IDs and convert them if necessary.": "Check for documents that have not been converted to path-obfuscated IDs and convert them if necessary.", + "Chunk Splitter": "Chunk Splitter", "cmdConfigSync.showCustomizationSync": "Show Customization sync", "Comma separated `.gitignore, .dockerignore`": "Comma separated `.gitignore, .dockerignore`", "Compaction in progress on remote database...": "Compaction in progress on remote database...", @@ -71,6 +76,7 @@ "CouchDB Connection Tweak": "CouchDB Connection Tweak", "Cross-platform": "Cross-platform", "Current adapter: {adapter}": "Current adapter: {adapter}", + "Customization sync": "Customization sync", "Customization Sync": "Customization Sync", "Customization Sync (Beta3)": "Customization Sync (Beta3)", "Data Compression": "Data Compression", @@ -131,16 +137,23 @@ "Edge case addressing (Behaviour)": "Edge case addressing (Behaviour)", "Edge case addressing (Database)": "Edge case addressing (Database)", "Edge case addressing (Processing)": "Edge case addressing (Processing)", + "Effectively a directory. Should end with `/`. e.g., `vault-name/`.": "Effectively a directory. Should end with `/`. e.g., `vault-name/`.", "Emergency restart": "Emergency restart", "Enable advanced features": "Enable advanced features", + "Enable advanced mode": "Enable advanced mode", "Enable customization sync": "Enable customization sync", "Enable Developers' Debug Tools.": "Enable Developers' Debug Tools.", "Enable edge case treatment features": "Enable edge case treatment features", + "Enable forcePathStyle": "Enable forcePathStyle", + "Enable P2P Synchronization": "Enable P2P Synchronization", + "Enable per-file customization sync": "Enable per-file customization sync", + "Enable power user mode": "Enable power user mode", "Enable poweruser features": "Enable poweruser features", "Enable this if your Object Storage doesn't support CORS": "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": "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.": "Encrypt contents on the remote database. If you use the plugin's synchronization feature, enabling this is recommended.", "Encrypting sensitive configuration items": "Encrypting sensitive configuration items", + "Encryption passphrase. If changed, you should overwrite the server's database with the new (encrypted) files.": "Encryption passphrase. 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.": "Encryption phassphrase. If changed, you should overwrite the server's database with the new (encrypted) files.", "End-to-End Encryption": "End-to-End Encryption", "Endpoint URL": "Endpoint URL", @@ -156,9 +169,11 @@ "Fetch chunks on demand": "Fetch chunks on demand", "Fetch database with previous behaviour": "Fetch database with previous behaviour", "Fetch remote settings": "Fetch remote settings", + "File prefix on the bucket": "File prefix on the bucket", "File to resolve conflict": "File to resolve conflict", "File to view History": "File to view History", "Filename": "Filename", + "Files with modification times greater than this value (in seconds since the Unix epoch) will not have their events reflected. Set to 0 to disable this limit.": "Files with modification times greater than this value (in seconds since the Unix epoch) will not have their events reflected. Set to 0 to disable this limit.", "First, please select the option that best describes your current situation.": "First, please select the option that best describes your current situation.", "Flag and restart": "Flag and restart", "Forces the file to be synced when opened.": "Forces the file to be synced when opened.", @@ -171,6 +186,7 @@ "Garbage Collection: Scanned ${scanned} / ~${docCount}": "Garbage Collection: Scanned ${scanned} / ~${docCount}", "Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": "Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}", "Handle files as Case-Sensitive": "Handle files as Case-Sensitive", + "Hatch": "Hatch", "Hidden Files": "Hidden Files", "Hide completely": "Hide completely", "Highlight diff": "Highlight diff", @@ -181,11 +197,18 @@ "I know my server details, let me enter them": "I know my server details, let me enter them", "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).", "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.", + "If enabled, changes will be automatically broadcasted to all connected peers. Notified peers will start fetching the changes.": "If enabled, changes will be automatically broadcasted to all connected peers. Notified peers will start fetching the changes.", "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.", + "If enabled, efficient per-file customization sync will be used. A minor migration is required when enabling this feature, and all devices must be updated to v0.23.18. Enabling this feature will result in losing compatibility with older versions.": "If enabled, efficient per-file customization sync will be used. A minor migration is required when enabling this feature, and all devices must be updated to v0.23.18. Enabling this feature will result in losing compatibility with older versions.", "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.", "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.", "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.", + "If enabled, the forcePathStyle option will be used for bucket operations.": "If enabled, the forcePathStyle option will be used for bucket operations.", "If enabled, the notification of hidden files change will be suppressed.": "If enabled, the notification of hidden files change will be suppressed.", + "If enabled, the P2P connection will be automatically started when the application launches.": "If enabled, the P2P connection will be automatically started when the application launches.", + "If enabled, the plugin will not attempt to connect to the remote database even if the chunk was not found locally.": "If enabled, the plugin will not attempt to connect to the remote database even if the chunk was not found locally.", + "If enabled, the request API will be used to avoid `inevitable` CORS problems. This is a workaround and may not work in all cases. PLEASE READ THE DOCUMENTATION BEFORE USING THIS OPTION. This is a less-secure option.": "If enabled, the request API will be used to avoid `inevitable` CORS problems. This is a workaround and may not work in all cases. PLEASE READ THE DOCUMENTATION BEFORE USING THIS OPTION. This is a less-secure option.", + "If this enabled, all chunks will be stored with the revision made from its content.": "If this enabled, all chunks will be stored with the revision made from its content.", "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)", "If this enabled, All files are handled as case-Sensitive (Previous behaviour).": "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.": "If this enabled, chunks will be split into semantically meaningful segments. Not all platforms support this feature.", @@ -258,11 +281,15 @@ "logPane.pause": "Pause", "logPane.title": "Self-hosted LiveSync Log", "logPane.wrap": "Wrap", + "Maintenance": "Maintenance", "Maximum delay for batch database updating": "Maximum delay for batch database updating", + "Maximum file modification time for reflected file events": "Maximum file modification time for reflected file events", "Maximum file size": "Maximum file size", "Maximum Incubating Chunk Size": "Maximum Incubating Chunk Size", "Maximum Incubating Chunks": "Maximum Incubating Chunks", "Maximum Incubation Period": "Maximum Incubation Period", + "Maximum size of chunks to send in one request": "Maximum size of chunks to send in one request", + "MB": "MB", "MB (0 to disable).": "MB (0 to disable).", "Memory cache": "Memory cache", "Memory cache size (by total characters)": "Memory cache size (by total characters)", @@ -364,6 +391,7 @@ "Notify customized": "Notify customized", "Notify when other device has newly customized.": "Notify when other device has newly customized.", "Notify when the estimated remote storage size exceeds on start up": "Notify when the estimated remote storage size exceeds on start up", + "Now we can choose how to split the chunks; V3 is the most efficient. If you have troubled, please make this Default or Legacy.": "Now we can choose how to split the chunks; V3 is the most efficient. If you have troubled, please make this Default or Legacy.", "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.", "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.", "Obsidian version": "Obsidian version", @@ -430,7 +458,7 @@ "obsidianLiveSyncSettingTab.logPassphraseNotCompatible": "ERROR: Passphrase is not compatible with the remote server! Please check it again!", "obsidianLiveSyncSettingTab.logRebuildNote": "Syncing has been disabled, fetch and re-enabled if desired.", "obsidianLiveSyncSettingTab.logSelectAnyPreset": "Select any preset.", - "obsidianLiveSyncSettingTab.logServerConfigurationCheck": "obsidianLiveSyncSettingTab.logServerConfigurationCheck", + "obsidianLiveSyncSettingTab.logServerConfigurationCheck": "Log Server Configuration Check", "obsidianLiveSyncSettingTab.msgAreYouSureProceed": "Are you sure to proceed?", "obsidianLiveSyncSettingTab.msgChangesNeedToBeApplied": "Changes need to be applied!", "obsidianLiveSyncSettingTab.msgConfigCheck": "--Config check--", @@ -604,6 +632,7 @@ "Proceed with Setup URI": "Proceed with Setup URI", "Proceeding with Garbage Collection, ignoring missing nodes.": "Proceeding with Garbage Collection, ignoring missing nodes.", "Proceeding with Garbage Collection.": "Proceeding with Garbage Collection.", + "Process files even if seems to be corrupted": "Process files even if seems to be corrupted", "Process small files in the foreground": "Process small files in the foreground", "Progress": "Progress", "Property Encryption": "Property Encryption", @@ -620,10 +649,25 @@ "RedFlag.Fetch.Method.FetchSmoother": "Create local file chunks before fetching", "RedFlag.Fetch.Method.FetchTraditional": "Fetch everything from the remote", "RedFlag.Fetch.Method.Title": "How do you want to fetch?", + "RedFlag.FetchRemoteConfig.Applied": "Remote configuration applied.", "RedFlag.FetchRemoteConfig.Buttons.Cancel": "No, use local settings", "RedFlag.FetchRemoteConfig.Buttons.Fetch": "Yes, fetch and apply remote settings", + "RedFlag.FetchRemoteConfig.Buttons.Retry": "Retry (recommended)", + "RedFlag.FetchRemoteConfig.Buttons.SkipAndProceed": "Skip and proceed", + "RedFlag.FetchRemoteConfig.FailedMessage": "Could not fetch configuration from remote. If you are new to the Self-hosted LiveSync, this might be expected. If not, you should check your network or server settings.", + "RedFlag.FetchRemoteConfig.FailedTitle": "Fetch Remote Configuration Failed", + "RedFlag.FetchRemoteConfig.MatchesLocal": "Remote configuration matches local configuration. No changes applied.", "RedFlag.FetchRemoteConfig.Message": "Do you want to fetch and apply remotely stored preference settings to the device?", + "RedFlag.FetchRemoteConfig.NotApplied": "Remote configuration not applied.", + "RedFlag.FetchRemoteConfig.SettingsDiffered": "Your settings differed slightly from the server's. The plug-in has supplemented the incompatible parts with the server settings!", "RedFlag.FetchRemoteConfig.Title": "Fetch Remote Configuration", + "RedFlag.Log.FetchEverythingCancelled": "Fetch everything cancelled by user.", + "RedFlag.Log.FetchEverythingCompleted": "Fetch everything operation completed. Vault files will be gradually synced.", + "RedFlag.Log.RebuildEverythingCancelled": "Rebuild everything cancelled by user.", + "RedFlag.Log.RebuildEverythingCompleted": "Rebuild everything operation completed.", + "RedFlag.Log.VaultInitialisationError": "Error during vault initialisation.", + "RedFlag.Log.VaultInitialisationProcessError": "Error during vault initialisation process.", + "RedFlag.ResumeProcessingPrompt": "Do you want to resume file and database processing, and restart obsidian now?", "Reduces storage space by discarding all non-latest revisions. This requires the same amount of free space on the remote server and the local client.": "Reduces storage space by discarding all non-latest revisions. This requires the same amount of free space on the remote server and the local client.", "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", "Region": "Region", @@ -693,6 +737,7 @@ "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.", "Secret Key": "Secret Key", "Select the database adapter to use.": "Select the database adapter to use.", + "Selector": "Selector", "Send": "Send", "Send chunks": "Send chunks", "Server URI": "Server URI", @@ -713,15 +758,25 @@ "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.", "Setup.Apply.Title": "Apply new configuration from the ${method}", "Setup.Apply.WarningRebuildRecommended": "NOTE: after adjusting the settings, it has been determined that a rebuild is required; Just Import is not recommended.", + "Setup.Command.CopySetupUri": "Copy settings as a new setup URI", + "Setup.Command.CopySetupUriFull": "Copy settings as a new setup URI (Full)", + "Setup.Command.CopySetupUriWithSync": "Copy settings as a new setup URI (With customization sync)", + "Setup.Command.OpenSetupUri": "Use the copied setup URI (Formerly Open setup URI)", + "Setup.Command.ShowSettingsQrCode": "Show settings as a QR code", "Setup.Doctor.Buttons.No": "No, please use the settings in the URI as is", "Setup.Doctor.Buttons.Yes": "Yes, please consult the doctor", "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.EncryptSettingsPassphrase": "The passphrase to encrypt the setup URI", + "Setup.EncryptSettingsTitle": "Encrypt your settings", "Setup.FetchRemoteConf.Buttons.Fetch": "Yes, please fetch the configuration", "Setup.FetchRemoteConf.Buttons.Skip": "No, please use the settings in the 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.", "Setup.FetchRemoteConf.Title": "Fetch configuration from remote database?", + "Setup.Log.ProtocolHandlerRegistrationFailed": "Failed to register protocol handler. This feature may not work in some environments.", + "Setup.Log.SetupUriCopiedToClipboard": "Setup URI copied to clipboard", "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}
", + "Setup.QRCodeTitle": "Settings QR Code", "Setup.RemoteE2EE.AdvancedTitle": "Advanced", "Setup.RemoteE2EE.AlgorithmWarning": "Changing the encryption algorithm will prevent access to any data previously encrypted with a different algorithm. Ensure that all your devices are configured to use the same algorithm to maintain access to your data.", "Setup.RemoteE2EE.ButtonCancel": "Cancel", @@ -747,6 +802,7 @@ "Setup.ScanQRCode.Step3": "On the source device, from the command palette, run the 'Show settings as a QR code' command.", "Setup.ScanQRCode.Step4": "On this device, switch to the camera app or use a QR code scanner to scan the displayed QR code.", "Setup.ScanQRCode.Title": "Scan QR Code", + "Setup.SetupUri": "Setup URI", "Setup.ShowQRCode": "Show QR code", "Setup.ShowQRCode.Desc": "Show QR code to transfer the settings.", "Setup.UseSetupURI.ButtonCancel": "Cancel", @@ -835,10 +891,44 @@ "TweakMismatchResolve.Title.AutoAcceptCompatible": "Auto-Accept Available", "TweakMismatchResolve.Title.TweakResolving": "Configuration Mismatch Detected", "TweakMismatchResolve.Title.UseRemoteConfig": "Use Remote Configuration", - "Ui.Common.Signal.Caution": "CAUTION", - "Ui.Common.Signal.Danger": "DANGER", - "Ui.Common.Signal.Notice": "NOTICE", - "Ui.Common.Signal.Warning": "WARNING", + "Ui.Bucket.Guidance": "Please enter the details required to connect to your S3/MinIO/R2 compatible object storage service.", + "Ui.Common.Signal.Caution": "Caution", + "Ui.Common.Signal.Danger": "Danger", + "Ui.Common.Signal.Notice": "Notice", + "Ui.Common.Signal.Warning": "Warning", + "Ui.ConflictResolver.FileToResolve": "File To Resolve", + "Ui.CouchDB.Guidance": "Please enter the CouchDB server information below.", + "Ui.History.FileToView": "File To View", + "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.Settings.Advanced.LocalDatabaseTweak": "Local Database Tweak", "Ui.Settings.Advanced.MemoryCache": "Memory Cache", "Ui.Settings.Advanced.TransferTweak": "Transfer Tweak", @@ -862,8 +952,8 @@ "Ui.Settings.Common.VerifyAll": "Verify all", "Ui.Settings.CustomizationSync.OpenDesc": "Open the dialog", "Ui.Settings.CustomizationSync.Panel": "Customization Sync", - "Ui.Settings.CustomizationSync.WarnChangeDeviceName": "We cannot change the device name while this feature is enabled. Please disable this feature to change the device name.", - "Ui.Settings.CustomizationSync.WarnSetDeviceName": "Please set device name to identify this device. This name should be unique among your devices. While not configured, we cannot enable this feature.", + "Ui.Settings.CustomizationSync.WarnChangeDeviceName": "Warn Change Device Name", + "Ui.Settings.CustomizationSync.WarnSetDeviceName": "Warn Set Device Name", "Ui.Settings.Hatch.AnalyseDatabaseUsage": "Analyse database usage", "Ui.Settings.Hatch.AnalyseDatabaseUsageDesc": "Analyse database usage and generate a TSV report for diagnosis yourself. You can paste the generated report with any spreadsheet you like.", "Ui.Settings.Hatch.BackToNonConfigured": "Back to non-configured", @@ -873,10 +963,10 @@ "Ui.Settings.Hatch.DatabaseLabel": "Database: ${details}", "Ui.Settings.Hatch.DatabaseToStorage": "Database -> Storage", "Ui.Settings.Hatch.DeleteCustomizationSyncData": "Delete all customization sync data", - "Ui.Settings.Hatch.GeneratedReport": "Generated report", + "Ui.Settings.Hatch.GeneratedReport": "Generated Report", "Ui.Settings.Hatch.Missing": "Missing", - "Ui.Settings.Hatch.ModifiedSize": "Modified: ${modified}, Size: ${size}", - "Ui.Settings.Hatch.ModifiedSizeActual": "Modified: ${modified}, Size: ${size} (actual size: ${actualSize})", + "Ui.Settings.Hatch.ModifiedSize": "Modified Size", + "Ui.Settings.Hatch.ModifiedSizeActual": "Modified Size Actual", "Ui.Settings.Hatch.PrepareIssueReport": "Prepare the 'report' to create an issue", "Ui.Settings.Hatch.RecoveryAndRepair": "Recovery and Repair", "Ui.Settings.Hatch.RecreateAll": "Recreate all", @@ -888,7 +978,7 @@ "Ui.Settings.Hatch.ResolveAllConflictedFiles": "Resolve all conflicted files by the newer one", "Ui.Settings.Hatch.ResolveAllConflictedFilesDesc": "Resolve all conflicted files by the newer one. Caution: This will overwrite the older one, and cannot resurrect the overwritten one.", "Ui.Settings.Hatch.RunDoctor": "Run Doctor", - "Ui.Settings.Hatch.ScanBrokenFiles": "Scan for broken files", + "Ui.Settings.Hatch.ScanBrokenFiles": "Scan for Broken files", "Ui.Settings.Hatch.ScramSwitches": "Scram Switches", "Ui.Settings.Hatch.ShowHistory": "Show history", "Ui.Settings.Hatch.StorageLabel": "Storage: ${details}", @@ -932,10 +1022,10 @@ "Ui.Settings.Maintenance.Scram": "Scram!", "Ui.Settings.Maintenance.SendChunks": "Send chunks", "Ui.Settings.Maintenance.Syncing": "Syncing", - "Ui.Settings.Maintenance.WarningLockedReadyAction": "I am ready, unlock the database", - "Ui.Settings.Maintenance.WarningLockedReadyText": "To prevent unwanted vault corruption, the remote database has been locked for synchronisation. (This device is marked as 'resolved'.) When all your devices are marked as 'resolved', unlock the database. This warning will continue to appear until replication confirms the device is resolved.", - "Ui.Settings.Maintenance.WarningLockedResolveAction": "I have made a backup, mark this device as resolved", - "Ui.Settings.Maintenance.WarningLockedResolveText": "The remote database is locked for synchronisation to prevent vault corruption because this device is not marked as 'resolved'. Please back up your vault, reset the local database, and select 'Mark this device as resolved'. This warning will persist until replication confirms the device is resolved.", + "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.CompatibilityConflict": "Compatibility (Conflict Behaviour)", "Ui.Settings.Patches.CompatibilityDatabase": "Compatibility (Database structure)", @@ -949,63 +1039,63 @@ "Ui.Settings.Patches.EdgeCaseBehaviour": "Edge case addressing (Behaviour)", "Ui.Settings.Patches.EdgeCaseDatabase": "Edge case addressing (Database)", "Ui.Settings.Patches.EdgeCaseProcessing": "Edge case addressing (Processing)", - "Ui.Settings.Patches.IndexedDbWarning": "The IndexedDB adapter often offers superior performance in certain scenarios, but it has been found to cause memory leaks when used with LiveSync mode. When using LiveSync mode, please use the IDB adapter instead.", - "Ui.Settings.Patches.MigratingToIdb": "Migrating all data to IDB...", - "Ui.Settings.Patches.MigratingToIndexedDb": "Migrating all data to IndexedDB...", - "Ui.Settings.Patches.MigrationIdbCompleted": "Migration to IDB completed. Obsidian will be restarted with the new configuration immediately.", - "Ui.Settings.Patches.MigrationIdbCompletedFollowUp": "Migration to IDB completed. Please switch the adapter and restart Obsidian.", - "Ui.Settings.Patches.MigrationIndexedDbCompleted": "Migration to IndexedDB completed. Obsidian will be restarted with the new configuration immediately.", - "Ui.Settings.Patches.MigrationIndexedDbCompletedFollowUp": "Migration to IndexedDB completed. Please switch the adapter and restart Obsidian.", - "Ui.Settings.Patches.MigrationWarning": "Changing this setting requires migrating existing data, which may take some time, and restarting Obsidian. Please make sure to back up your data before proceeding.", - "Ui.Settings.Patches.OperationToIdb": "to IDB", - "Ui.Settings.Patches.OperationToIndexedDb": "to IndexedDB", + "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.Remediation": "Remediation", - "Ui.Settings.Patches.RemediationChanged": "Remediation Setting Changed", - "Ui.Settings.Patches.RemediationNoLimit": "No limit configured", - "Ui.Settings.Patches.RemediationRestarting": "Remediation setting changed. Restarting Obsidian...", - "Ui.Settings.Patches.RemediationRestartLater": "Later", - "Ui.Settings.Patches.RemediationRestartMessage": "Restarting Obsidian is strongly recommended. Until restart, some changes may not take effect, and the display may be inconsistent. Are you sure you want to restart now?", - "Ui.Settings.Patches.RemediationRestartNow": "Restart Now", - "Ui.Settings.Patches.RemediationSuffixChanged": "Suffix has been changed. Reopening database...", - "Ui.Settings.Patches.RemediationWithValue": "Limit: ${date} (${timestamp})", + "Ui.Settings.Patches.RemediationChanged": "Remediation Changed", + "Ui.Settings.Patches.RemediationNoLimit": "Remediation No Limit", + "Ui.Settings.Patches.RemediationRestarting": "Remediation Restarting", + "Ui.Settings.Patches.RemediationRestartLater": "Remediation Restart Later", + "Ui.Settings.Patches.RemediationRestartMessage": "Remediation Restart Message", + "Ui.Settings.Patches.RemediationRestartNow": "Remediation Restart Now", + "Ui.Settings.Patches.RemediationSuffixChanged": "Remediation Suffix Changed", + "Ui.Settings.Patches.RemediationWithValue": "Value: ${date} (${timestamp})", "Ui.Settings.Patches.RemoteDatabaseSunset": "Remote Database Tweak (In sunset)", - "Ui.Settings.Patches.SwitchToIDB": "Switch to IDB", - "Ui.Settings.Patches.SwitchToIndexedDb": "Switch to IndexedDB", + "Ui.Settings.Patches.SwitchToIDB": "Switch To IDB", + "Ui.Settings.Patches.SwitchToIndexedDb": "Switch To Indexed Db", "Ui.Settings.PowerUsers.ConfigurationEncryption": "Configuration Encryption", "Ui.Settings.PowerUsers.ConnectionTweak": "CouchDB Connection Tweak", - "Ui.Settings.PowerUsers.ConnectionTweakDesc": "If you reached the payload size limit when using IBM Cloudant, please decrease batch size and batch limit to a lower value.", + "Ui.Settings.PowerUsers.ConnectionTweakDesc": "Connection Tweak Desc", "Ui.Settings.PowerUsers.Default": "Default", "Ui.Settings.PowerUsers.Developer": "Developer", "Ui.Settings.PowerUsers.EncryptSensitiveConfig": "Encrypt sensitive configuration items", - "Ui.Settings.PowerUsers.PromptPassphraseEveryLaunch": "Ask for a passphrase at every launch", + "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)", - "Ui.Settings.Remote.AddConnection": "Add new connection", - "Ui.Settings.Remote.AddRemoteDefaultName": "New Remote", - "Ui.Settings.Remote.ConfigureAndChangeRemote": "Configure and change remote", + "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.ConfigureE2EE": "Configure E2EE", "Ui.Settings.Remote.ConfigureRemote": "Configure Remote", - "Ui.Settings.Remote.DeleteRemoteConfirm": "Delete remote configuration '${name}'?", - "Ui.Settings.Remote.DeleteRemoteTitle": "Delete Remote Configuration", - "Ui.Settings.Remote.DisplayName": "Display name", - "Ui.Settings.Remote.DuplicateRemote": "Duplicate remote", - "Ui.Settings.Remote.DuplicateRemoteSuffix": "${name} (Copy)", + "Ui.Settings.Remote.DeleteRemoteConfirm": "Delete remote configuration \"${name}\"?", + "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.E2EEConfiguration": "E2EE Configuration", "Ui.Settings.Remote.Export": "Export", - "Ui.Settings.Remote.FetchRemoteSettings": "Fetch remote settings", - "Ui.Settings.Remote.ImportConnection": "Import connection", - "Ui.Settings.Remote.ImportConnectionPrompt": "Paste a connection string", - "Ui.Settings.Remote.ImportedCouchDb": "Imported CouchDB", - "Ui.Settings.Remote.ImportedRemote": "Remote", - "Ui.Settings.Remote.MoreActions": "More actions", + "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.PeerToPeerPanel": "Peer-to-Peer Synchronisation", - "Ui.Settings.Remote.RemoteConfigurationPrefix": "Remote configuration", + "Ui.Settings.Remote.RemoteConfigurationPrefix": "Remote Configuration Prefix", "Ui.Settings.Remote.RemoteDatabases": "Remote Databases", - "Ui.Settings.Remote.RemoteName": "Remote name", - "Ui.Settings.Remote.RemoteNameCouchDb": "CouchDB ${host}", - "Ui.Settings.Remote.RemoteNameP2P": "P2P ${room}", - "Ui.Settings.Remote.RemoteNameS3": "S3 ${bucket}", + "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.AddDefaultPatterns": "Add default patterns", "Ui.Settings.Selector.CrossPlatform": "Cross-platform", @@ -1021,83 +1111,231 @@ "Ui.Settings.Selector.SynchronisingFilesDesc": "(RegExp) Empty to sync all files. Set a regular expression filter to limit synchronised files.", "Ui.Settings.Selector.TargetPatterns": "Target patterns", "Ui.Settings.Selector.TargetPatternsDesc": "Patterns to match files for syncing", - "Ui.Settings.Setup.RerunWizardButton": "Rerun Wizard", + "Ui.Settings.Setup.RerunWizardButton": "Rerun Wizard Button", "Ui.Settings.Setup.RerunWizardDesc": "Rerun the onboarding wizard to set up Self-hosted LiveSync again.", "Ui.Settings.Setup.RerunWizardName": "Rerun Onboarding Wizard", "Ui.Settings.SyncSettings.Fetch": "Fetch", "Ui.Settings.SyncSettings.Merge": "Merge", "Ui.Settings.SyncSettings.Overwrite": "Overwrite", - "Ui.SetupWizard.Common.Back": "No, please take me back", + "Ui.SetupWizard.Bucket.AccessKeyId": "Access Key ID", + "Ui.SetupWizard.Bucket.BucketName": "Bucket Name", + "Ui.SetupWizard.Bucket.EndpointUrl": "Endpoint URL", + "Ui.SetupWizard.Bucket.FolderPrefix": "Folder Prefix", + "Ui.SetupWizard.Bucket.FolderPrefixDesc": "If you want to store the data in a specific folder within the bucket, you can specify a folder prefix here. Otherwise, leave it blank to store data at the root of the bucket.", + "Ui.SetupWizard.Bucket.InternalApiDesc": "If you cannot avoid CORS issues, you might want to try this option. It uses Obsidian's internal API to communicate with the S3 server. Not compliant with web standards, but works. Note that this might break in future Obsidian versions.", + "Ui.SetupWizard.Bucket.PlaceholderAccessKeyId": "Enter your Access Key ID", + "Ui.SetupWizard.Bucket.PlaceholderBucketName": "Enter your Bucket Name", + "Ui.SetupWizard.Bucket.PlaceholderFolderPrefix": "Enter a folder prefix (optional)", + "Ui.SetupWizard.Bucket.PlaceholderRegion": "Enter your Region (e.g., us-east-1, auto for R2)", + "Ui.SetupWizard.Bucket.PlaceholderSecretAccessKey": "Enter your Secret Access Key", + "Ui.SetupWizard.Bucket.Region": "Region", + "Ui.SetupWizard.Bucket.SecretAccessKey": "Secret Access Key", + "Ui.SetupWizard.Bucket.Title": "S3/MinIO/R2 Configuration", + "Ui.SetupWizard.Bucket.UseInternalApi": "Use internal API", + "Ui.SetupWizard.Bucket.UsePathStyleAccess": "Use Path-Style Access", + "Ui.SetupWizard.Common.AdvancedSettings": "Advanced Settings", + "Ui.SetupWizard.Common.Back": "Back", "Ui.SetupWizard.Common.Cancel": "Cancel", - "Ui.SetupWizard.Common.ProceedSelectOption": "Please select an option to proceed", - "Ui.SetupWizard.Intro.ExistingOption": "I am adding a device to an existing synchronisation setup", - "Ui.SetupWizard.Intro.ExistingOptionDesc": "Select this if you are already using synchronisation on another computer or smartphone. Use this option to connect this device to that existing setup.", - "Ui.SetupWizard.Intro.Guidance": "We will now guide you through a few questions to simplify the synchronisation setup.", - "Ui.SetupWizard.Intro.NewOption": "I am setting this up for the first time", - "Ui.SetupWizard.Intro.NewOptionDesc": "Select this if you are configuring this device as the first synchronisation device.", - "Ui.SetupWizard.Intro.ProceedExisting": "Yes, I want to add this device to my existing synchronisation", - "Ui.SetupWizard.Intro.ProceedNew": "Yes, I want to set up a new synchronisation", - "Ui.SetupWizard.Intro.Question": "First, please select the option that best describes your current situation.", - "Ui.SetupWizard.Intro.Title": "Welcome to Self-hosted LiveSync", - "Ui.SetupWizard.OutroAskUserMode.CompatibleOption": "The remote is already set up, and the configuration is compatible (or became compatible through this operation).", - "Ui.SetupWizard.OutroAskUserMode.CompatibleOptionDesc": "Unless you are certain, selecting this option is risky. It assumes the server configuration is compatible with this device. If that is not the case, data loss may occur. Please make sure you understand the consequences.", - "Ui.SetupWizard.OutroAskUserMode.ExistingOption": "My remote server is already set up. I want to join this device.", - "Ui.SetupWizard.OutroAskUserMode.ExistingOptionDesc": "Selecting this option will make this device join the existing server. You need to fetch the existing synchronisation data from the server to this device.", - "Ui.SetupWizard.OutroAskUserMode.Guidance": "The connection to the server has been configured successfully. As the next step, the local database, in other words the synchronisation information, must be rebuilt.", - "Ui.SetupWizard.OutroAskUserMode.NewOption": "I am setting up a new server for the first time / I want to reset my existing server.", - "Ui.SetupWizard.OutroAskUserMode.NewOptionDesc": "Selecting this option will initialise the server using the current data on this device. Any existing data on the server will be completely overwritten.", - "Ui.SetupWizard.OutroAskUserMode.ProceedApplySettings": "Apply the settings", - "Ui.SetupWizard.OutroAskUserMode.ProceedNext": "Proceed to the next step.", - "Ui.SetupWizard.OutroAskUserMode.Question": "Please select your situation.", - "Ui.SetupWizard.OutroAskUserMode.Title": "Mostly Complete: Decision Required", - "Ui.SetupWizard.OutroNewUser.GuidancePrimary": "The connection to the server has been configured successfully. As the next step, the synchronisation data on the server will be built from the current data on this device.", - "Ui.SetupWizard.OutroNewUser.GuidanceWarning": "After restarting, the data on this device will be uploaded to the server as the master copy. Please note that any unintended data currently on the server will be completely overwritten.", - "Ui.SetupWizard.OutroNewUser.Important": "IMPORTANT", - "Ui.SetupWizard.OutroNewUser.Proceed": "Restart and Initialise Server", - "Ui.SetupWizard.OutroNewUser.Question": "Please select the button below to restart and proceed to the final confirmation.", - "Ui.SetupWizard.OutroNewUser.Title": "Setup Complete: Preparing to Initialise Server", - "Ui.SetupWizard.SelectExisting.Guidance": "You are adding this device to an existing synchronisation setup.", - "Ui.SetupWizard.SelectExisting.ManualOption": "Enter the server information manually", - "Ui.SetupWizard.SelectExisting.ManualOptionDesc": "Configure the same server information as your other devices again manually. This is intended only for advanced users.", - "Ui.SetupWizard.SelectExisting.ProceedManual": "I know my server details, let me enter them", - "Ui.SetupWizard.SelectExisting.ProceedQr": "Scan the QR code displayed on an active device using this device's camera.", - "Ui.SetupWizard.SelectExisting.ProceedSetupUri": "Proceed with Setup URI", - "Ui.SetupWizard.SelectExisting.QrOption": "Scan a QR Code (Recommended for mobile)", - "Ui.SetupWizard.SelectExisting.QrOptionDesc": "Scan the QR code displayed on an active device using this device's camera.", - "Ui.SetupWizard.SelectExisting.Question": "Please select a method to import the settings from another device.", - "Ui.SetupWizard.SelectExisting.SetupUriOption": "Use a Setup URI (Recommended)", - "Ui.SetupWizard.SelectExisting.SetupUriOptionDesc": "Paste the Setup URI generated from one of your active devices.", - "Ui.SetupWizard.SelectExisting.Title": "Device Setup Method", - "Ui.SetupWizard.SelectNew.Guidance": "We will now proceed with the server configuration.", - "Ui.SetupWizard.SelectNew.ManualOption": "Enter the server information manually", - "Ui.SetupWizard.SelectNew.ManualOptionDesc": "This is an advanced option for users who do not have a Setup URI or who want to configure detailed settings.", - "Ui.SetupWizard.SelectNew.ProceedManual": "I know my server details, let me enter them", - "Ui.SetupWizard.SelectNew.ProceedSetupUri": "Proceed with Setup URI", - "Ui.SetupWizard.SelectNew.Question": "How would you like to configure the connection to your server?", - "Ui.SetupWizard.SelectNew.SetupUriOption": "Use a Setup URI (Recommended)", - "Ui.SetupWizard.SelectNew.SetupUriOptionDesc": "A Setup URI is a single string containing your server address and authentication details. If one was generated by your server installation script, it provides a simple and secure configuration method.", - "Ui.SetupWizard.SelectNew.Title": "Connection Method", - "Ui.SetupWizard.SetupRemote.BucketOption": "S3/MinIO/R2 Object Storage", - "Ui.SetupWizard.SetupRemote.BucketOptionDesc": "Synchronisation using journal files. You must already have an S3/MinIO/R2 compatible object storage service set up.", - "Ui.SetupWizard.SetupRemote.CouchDbOptionDesc": "This is the most suitable synchronisation method for the current design. All features are available. You must already have a CouchDB instance set up.", - "Ui.SetupWizard.SetupRemote.Guidance": "Please select the type of server you are connecting to.", - "Ui.SetupWizard.SetupRemote.P2POption": "Peer-to-Peer only", - "Ui.SetupWizard.SetupRemote.P2POptionDesc": "This enables direct synchronisation between devices. No server is required, but both devices must be online at the same time and some features may be limited. Internet connectivity is required only for signalling, not for data transfer.", - "Ui.SetupWizard.SetupRemote.ProceedBucket": "Continue to S3/MinIO/R2 setup", - "Ui.SetupWizard.SetupRemote.ProceedCouchDb": "Continue to CouchDB setup", - "Ui.SetupWizard.SetupRemote.ProceedP2P": "Continue to Peer-to-Peer only setup", - "Ui.SetupWizard.SetupRemote.Title": "Enter Server Information", + "Ui.SetupWizard.Common.CheckingConnection": "Checking connection... Please wait.", + "Ui.SetupWizard.Common.ContinueAnyway": "Continue anyway", + "Ui.SetupWizard.Common.CustomHeaders": "Custom Headers", + "Ui.SetupWizard.Common.ErrorConnectionTest": "Error during connection test: ${error}", + "Ui.SetupWizard.Common.ErrorConnectServer": "Failed to connect to the server. Please check your settings.", + "Ui.SetupWizard.Common.ErrorConnectServerDetail": "Failed to connect to the server: ${error}", + "Ui.SetupWizard.Common.ErrorCreateReplicator": "Failed to create replicator instance.", + "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.DatabaseName": "Database Name", + "Ui.SetupWizard.CouchDB.DatabaseNameDesc": "You cannot use capital letters, spaces, or special characters in the database name. It is also not allowed to start with an underscore (_).", + "Ui.SetupWizard.CouchDB.InternalApiDesc": "If you cannot avoid CORS issues, you might want to try this option. It uses Obsidian's internal API to communicate with the CouchDB server. Not compliant with web standards, but works. Note that this might break in future Obsidian versions.", + "Ui.SetupWizard.CouchDB.JwtAlgorithm": "JWT Algorithm", + "Ui.SetupWizard.CouchDB.JwtExpirationDuration": "JWT Expiration Duration (minutes)", + "Ui.SetupWizard.CouchDB.JwtKey": "JWT Key", + "Ui.SetupWizard.CouchDB.JwtKeyDesc": "For HS256/HS512 algorithms, provide the shared secret key. For ES256/ES512 algorithms, provide the pkcs8 PEM-formatted private key.", + "Ui.SetupWizard.CouchDB.JwtKeyId": "JWT Key ID (kid)", + "Ui.SetupWizard.CouchDB.JwtSubject": "JWT Subject (sub)", + "Ui.SetupWizard.CouchDB.JwtWarning": "JWT (JSON Web Token) authentication allows you to securely authenticate with the CouchDB server using tokens. Ensure that your CouchDB server is configured to accept JWTs and that the provided key and settings match the server's configuration. This feature has not been verified very thoroughly.", + "Ui.SetupWizard.CouchDB.Password": "Password", + "Ui.SetupWizard.CouchDB.PlaceholderDatabaseName": "Enter your database name", + "Ui.SetupWizard.CouchDB.PlaceholderJwtKey": "Enter your JWT secret or private key", + "Ui.SetupWizard.CouchDB.PlaceholderJwtKeyId": "Enter your JWT Key ID", + "Ui.SetupWizard.CouchDB.PlaceholderJwtSubject": "Enter your JWT Subject (CouchDB Username)", + "Ui.SetupWizard.CouchDB.PlaceholderPassword": "Enter your password", + "Ui.SetupWizard.CouchDB.PlaceholderUsername": "Enter your username", + "Ui.SetupWizard.CouchDB.Title": "CouchDB Configuration", + "Ui.SetupWizard.CouchDB.Url": "Server URL", + "Ui.SetupWizard.CouchDB.UseInternalApi": "Use Internal API", + "Ui.SetupWizard.CouchDB.UseJwtAuthentication": "Use JWT Authentication", + "Ui.SetupWizard.CouchDB.Username": "Username", + "Ui.SetupWizard.CouchDBCheck.DetectAndFix": "Detect and Fix CouchDB Issues", + "Ui.SetupWizard.CouchDBCheck.Fix": "Fix", + "Ui.SetupWizard.E2EE.AlgorithmGuidance": "In most cases, you should stick with the default algorithm (${algorithm}). This setting is only required if you have an existing Vault encrypted in a different format.", + "Ui.SetupWizard.E2EE.AlgorithmWarning": "Changing the encryption algorithm will prevent access to any data previously encrypted with a different algorithm. Ensure that all your devices are configured to use the same algorithm to maintain access to your data.", + "Ui.SetupWizard.E2EE.EncryptionAlgorithm": "Encryption Algorithm", + "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.Log.E2EEConfigurationCancelled": "E2EE configuration cancelled.", + "Ui.SetupWizard.Log.ManualConfigurationCancelled": "Manual configuration cancelled.", + "Ui.SetupWizard.Log.NoSettingsChanges": "No changes in settings detected. Skipping applying settings from wizard.", + "Ui.SetupWizard.Log.OnboardingCancelled": "Onboarding cancelled by user.", + "Ui.SetupWizard.Log.QrCodeDialogClosed": "QR Code dialog closed.", + "Ui.SetupWizard.Log.QrCodeResult": "QR Code result: ${result}", + "Ui.SetupWizard.Log.SettingApplied": "Setting Applied", + "Ui.SetupWizard.Log.SettingsApplied": "Settings from wizard applied.", + "Ui.SetupWizard.Log.SetupUriDialogCancelled": "Setup URI dialog cancelled.", + "Ui.SetupWizard.Log.SetupUriDialogClosed": "Setup URI dialog closed.", + "Ui.SetupWizard.Log.UserCancelledApplyingSettings": "User cancelled applying settings from 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.AutoBroadcast": "Auto Broadcast Changes", + "Ui.SetupWizard.P2P.AutoBroadcastDesc": "If Auto Broadcast Changes is enabled, changes will be automatically broadcasted to connected peers without requiring manual intervention. This requests peers to fetch this device's changes.", + "Ui.SetupWizard.P2P.AutoStart": "Auto Start P2P Connection", + "Ui.SetupWizard.P2P.AutoStartDesc": "If Auto Start P2P Connection is enabled, the P2P connection will be started automatically when the plug-in launches.", + "Ui.SetupWizard.P2P.DevicePeerId": "Device Peer ID", + "Ui.SetupWizard.P2P.Enabled": "Enabled", + "Ui.SetupWizard.P2P.ErrorConnectPeers": "Failed to connect to other peers: ${error}", + "Ui.SetupWizard.P2P.GenerateRandomId": "Generate Random ID", + "Ui.SetupWizard.P2P.GroupId": "Group ID", + "Ui.SetupWizard.P2P.GroupPassphraseDesc": "The Group ID and passphrase are used to identify your group of devices. Make sure to use the same Group ID and passphrase on all devices you want to synchronise. The Group ID is not limited to the generated format; you can use any string as the Group ID.", + "Ui.SetupWizard.P2P.NoPeersFound": "Your settings seem correct, but no other peers were found.", + "Ui.SetupWizard.P2P.PlaceholderRelayUrl": "Enter the Relay URL", + "Ui.SetupWizard.P2P.PlaceholderTurnCredential": "Enter TURN credential", + "Ui.SetupWizard.P2P.PlaceholderTurnUsername": "Enter TURN username", + "Ui.SetupWizard.P2P.PublicTurnWarning": "Using public TURN servers may have privacy implications, as your data will be relayed through third-party servers. Even if your data is encrypted, your existence may be known to them. Please ensure you trust the TURN server provider and your network administrator before using their services. Consider setting up your own TURN server for your FQDN if possible.", + "Ui.SetupWizard.P2P.RelayUrl": "Relay URL", + "Ui.SetupWizard.P2P.Title": "P2P Configuration", + "Ui.SetupWizard.P2P.TurnCredential": "TURN Credential", + "Ui.SetupWizard.P2P.TurnServerDesc": "TURN server settings are only necessary if you are behind a strict NAT or firewall that prevents direct P2P connections. In most cases, you can leave these fields blank.", + "Ui.SetupWizard.P2P.TurnServerUrls": "TURN Server URLs (comma-separated)", + "Ui.SetupWizard.P2P.TurnUsername": "TURN Username", + "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 a custom passphrase": "Use a custom passphrase", "Use a Setup URI (Recommended)": "Use a Setup URI (Recommended)", "Use Custom HTTP Handler": "Use Custom HTTP Handler", "Use dynamic iteration count": "Use dynamic iteration count", + "Use Only Local Chunks": "Use Only Local Chunks", + "Use Request API to avoid `inevitable` CORS problem": "Use Request API to avoid `inevitable` CORS problem", "Use Segmented-splitter": "Use Segmented-splitter", "Use splitting-limit-capped chunk splitter": "Use splitting-limit-capped chunk splitter", "Use the trash bin": "Use the trash bin", "Use timeouts instead of heartbeats": "Use timeouts instead of heartbeats", "username": "username", "Username": "Username", + "V1: Legacy": "V1: Legacy", + "V2: Simple (Default)": "V2: Simple (Default)", + "V2.5: Lexical chunks": "V2.5: Lexical chunks", + "V3: Fine deduplication": "V3: Fine deduplication", "Verbose Log": "Verbose Log", "Verify all": "Verify all", "Verify and repair all files": "Verify and repair all files", @@ -1107,11 +1345,14 @@ "We will now proceed with the server configuration.": "We will now proceed with the server configuration.", "Welcome to Self-hosted LiveSync": "Welcome to Self-hosted LiveSync", "When you save a file in the editor, start a sync automatically": "When you save a file in the editor, start a sync automatically", + "While enabled, it causes very performance impact but debugging replication testing and other features will be enabled. Please disable this if you have not read the source code. Requires restart of Obsidian.": "While enabled, it causes very performance impact but debugging replication testing and other features will be enabled. Please disable this if you have not read the source code. Requires restart of Obsidian.", "Write credentials in the file": "Write credentials in the file", "Write logs into the file": "Write logs into the file", "xxhash32 (Fast but less collision resistance)": "xxhash32 (Fast but less collision resistance)", "xxhash64 (Fastest)": "xxhash64 (Fastest)", + "xxhash64 is the current default.": "xxhash64 is the current default.", "Yes, I want to add this device to my existing synchronisation": "Yes, I want to add this device to my existing synchronisation", "Yes, I want to set up a new synchronisation": "Yes, I want to set up a new synchronisation", - "You are adding this device to an existing synchronisation setup.": "You are adding this device to an existing synchronisation setup." + "You are adding this device to an existing synchronisation setup.": "You are adding this device to an existing synchronisation setup.", + "You can enable this setting to process the files with size mismatches, these files can be created by some APIs or integrations.": "You can enable this setting to process the files with size mismatches, these files can be created by some APIs or integrations." } diff --git a/src/common/messagesJson/es.json b/src/common/messagesJson/es.json index e266da80..fe7f45a1 100644 --- a/src/common/messagesJson/es.json +++ b/src/common/messagesJson/es.json @@ -15,12 +15,20 @@ "A Setup URI is a single string of text containing your server address and authentication details. Using a URI, if one was generated by your server installation script, provides a simple and secure configuration.": "Un URI de configuración es una única cadena de texto que contiene la dirección del servidor y los datos de autenticación. Si el script de instalación de su servidor generó un URI, usarlo proporciona una configuración sencilla y segura。", "Access Key": "Clave de acceso", "Activate": "Activar", + "Active Remote Configuration": "Configuración remota activa", + "Active Remote Type": "Tipo remoto activo", "Add default patterns": "Añadir patrones predeterminados", "Add new connection": "Añadir conexión", + "Advanced": "Avanzado", "Always prompt merge conflicts": "Siempre preguntar en conflictos", + "Analyse": "Analizar", + "Analyse database usage": "Analizar el uso de la base de datos", + "Analyse database usage and generate a TSV report for diagnosis yourself. You can paste the generated report with any spreadsheet you like.": "Analice el uso de la base de datos y genere un informe TSV para diagnosticarlo usted mismo. Puede pegar el informe generado en cualquier hoja de cálculo que prefiera.", "Apply Latest Change if Conflicting": "Aplicar último cambio en conflictos", "Apply preset configuration": "Aplicar configuración predefinida", "Ask a passphrase at every launch": "Solicitar la frase de contraseña en cada inicio", + "Automatically broadcast changes to connected peers": "Difundir cambios automáticamente a pares conectados", + "Automatically start P2P connection on launch": "Iniciar conexión P2P automáticamente al arrancar", "Automatically Sync all files when opening Obsidian.": "Sincronizar automáticamente todos los archivos al abrir Obsidian", "Back": "Volver", "Back to non-configured": "Volver a no configurado", @@ -31,8 +39,10 @@ "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", "Cancel": "Cancelar", + "Check": "Verificar", "Check and convert non-path-obfuscated files": "Comprobar y convertir archivos sin ofuscación de ruta", "Check for documents that have not been converted to path-obfuscated IDs and convert them if necessary.": "Comprueba los documentos que aún no se hayan convertido a identificadores con ruta ofuscada y conviértelos si es necesario.", + "Chunk Splitter": "Divisor de fragmentos", "cmdConfigSync.showCustomizationSync": "Mostrar sincronización de personalización", "Comma separated `.gitignore, .dockerignore`": "Separados por comas: `.gitignore, .dockerignore`", "Compare the content of files between on local database and storage. If not matched, you will be asked which one you want to keep.": "Compara el contenido de los archivos entre la base de datos local y el almacenamiento. Si no coinciden, se te preguntará cuál deseas conservar.", @@ -42,7 +52,7 @@ "Compatibility (Metadata)": "Compatibilidad (metadatos)", "Compatibility (Remote Database)": "Compatibilidad (base de datos remota)", "Compatibility (Trouble addressed)": "Compatibilidad (problemas corregidos)", - "Compute revisions for chunks (Previous behaviour)": "Calcular revisiones para chunks (comportamiento anterior)", + "Compute revisions for chunks": "Calcular revisiones para los chunks", "Configuration Encryption": "Cifrado de configuración", "Configure": "Configurar", "Configure And Change Remote": "Configurar y cambiar remoto", @@ -54,9 +64,11 @@ "Continue to Peer-to-Peer only setup": "Continuar con la configuración solo Peer-to-Peer", "Continue to S3/MinIO/R2 setup": "Continuar con la configuración de S3/MinIO/R2", "Copy": "Copiar", + "Copy Report to clipboard": "Copiar el informe al portapapeles", "CouchDB Connection Tweak": "Ajustes de conexión de CouchDB", "Cross-platform": "Multiplataforma", "Current adapter: {adapter}": "Adaptador actual: {adapter}", + "Customization sync": "Sincronizacion de personalizacion", "Customization Sync": "Sincronización de personalización", "Customization Sync (Beta3)": "Sincronización de personalización (Beta3)", "Data Compression": "Compresión de datos", @@ -77,6 +89,9 @@ "Developer": "Desarrollador", "Device name": "Nombre del dispositivo", "Device Setup Method": "Método de configuración del dispositivo", + "dialog.yourLanguageAvailable": "LiveSync autohospedado tenía traducciones para su idioma, por lo que se habilitó la configuración %{Display language}.\n\nNota: No todos los mensajes están traducidos. ¡Esperamos tus aportes!\nNota 2: Si crea un problema, **vuelva a %{lang-def}** y luego tome capturas de pantalla, mensajes y registros. Esto se puede hacer en el diálogo de configuración.\n¡Que te resulte fácil de usar!", + "dialog.yourLanguageAvailable.btnRevertToDefault": "Mantener %{lang-def}", + "dialog.yourLanguageAvailable.Title": " ¡La traducción está disponible!", "Disables all synchronization and restart.": "Desactiva toda la sincronización y reinicia la aplicación.", "Disables logging, only shows notifications. Please disable if you report an issue.": "Desactiva registros, solo muestra notificaciones. Desactívelo si reporta un problema.", "Display Language": "Idioma de visualización", @@ -85,22 +100,50 @@ "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.DismissThisVersion": "No, y no volver a preguntar hasta la próxima versión", + "Doctor.Button.Fix": "Corregir", + "Doctor.Button.FixButNoRebuild": "Corregir sin reconstruir", + "Doctor.Button.No": "No", + "Doctor.Button.Skip": "Dejar como está", + "Doctor.Button.Yes": "Si", + "Doctor.Dialogue.Main": "¡Hola! ¡Config Doctor se ha activado debido a ${activateReason}!\nY, lamentablemente, se detectaron algunas configuraciones como posibles problemas.\nTenga la seguridad. Resolvámoslos uno por uno.\n\nPara informarle con anticipación, le preguntaremos sobre los siguientes elementos.\n\n${issues}\n\n¿Empezamos?", + "Doctor.Dialogue.MainFix": "\n## ${name}\n\n| Actual | ideales |\n|:---:|:---:|\n| ${current} | ${ideal} |\n\n**Nivel de recomendación:** ${level}\n\n### ¿Por qué se ha detectado esto?\n\n${reason}\n\n${note}\n\n¿Fijar esto al valor ideal?", + "Doctor.Dialogue.Title": "Doctor de configuración de LiveSync autohospedado", + "Doctor.Dialogue.TitleAlmostDone": "¡Casi terminado!", + "Doctor.Dialogue.TitleFix": "Solucionar el problema ${current}/${total}", + "Doctor.Level.Must": "Obligatorio", + "Doctor.Level.Necessary": "Necesario", + "Doctor.Level.Optional": "Opcional", + "Doctor.Level.Recommended": "Recomendado", + "Doctor.Message.NoIssues": "¡No se detectaron problemas!", + "Doctor.Message.RebuildLocalRequired": "¡Atención! ¡Se requiere una reconstrucción de la base de datos local para aplicar esto!", + "Doctor.Message.RebuildRequired": "¡Atención! ¡Se requiere una reconstrucción para aplicar esto!", + "Doctor.Message.SomeSkipped": "Dejamos algunos problemas como están. ¿Te lo pregunto de nuevo en la próxima puesta en marcha?", + "Doctor.RULES.E2EE_V02500.REASON": "El cifrado de extremo a extremo ahora es más robusto y rápido. También porque se descubrió que el E2EE anterior estaba comprometido en una revisión de código realizada nuevamente. Se debe aplicar lo antes posible. Realmente se disculpa por las molestias. Y esta configuración no es compatible con versiones posteriores. Todos los dispositivos sincronizados deben estar actualizados a la versión 0.25.0 o superior. No se requieren reconstrucciones y se convertirán de la nueva transferencia al nuevo formato. Sin embargo, se recomienda reconstruir siempre que sea posible.", + "Document History": "Historial del documento", "Duplicate": "Duplicar", "Duplicate remote": "Duplicar remoto", "E2EE Configuration": "Configuración de E2EE", "Edge case addressing (Behaviour)": "Tratamiento de casos límite (comportamiento)", "Edge case addressing (Database)": "Tratamiento de casos límite (base de datos)", "Edge case addressing (Processing)": "Tratamiento de casos límite (procesamiento)", + "Effectively a directory. Should end with `/`. e.g., `vault-name/`.": "Equivale a un directorio. Debe terminar con `/`, por ejemplo `vault-name/`.", "Emergency restart": "Reinicio de emergencia", "Enable advanced features": "Habilitar características avanzadas", + "Enable advanced mode": "Activar modo avanzado", "Enable customization sync": "Habilitar sincronización de personalización", "Enable Developers' Debug Tools.": "Habilitar herramientas de depuración", "Enable edge case treatment features": "Habilitar manejo de casos límite", + "Enable forcePathStyle": "Activar forcePathStyle", + "Enable P2P Synchronization": "Activar sincronización P2P", + "Enable per-file customization sync": "Activar sincronización de personalización por archivo", + "Enable power user mode": "Activar modo para usuarios avanzados", "Enable poweruser features": "Habilitar funciones para usuarios avanzados", "Enable this if your Object Storage doesn't support CORS": "Habilitar si su almacenamiento no soporta CORS", "Enable this option to automatically apply the most recent change to documents even when it conflicts": "Aplicar cambios recientes automáticamente aunque generen conflictos", "Encrypt contents on the remote database. If you use the plugin's synchronization feature, enabling this is recommended.": "Cifrar contenido en la base de datos remota. Se recomienda habilitar si usa la sincronización del plugin.", "Encrypting sensitive configuration items": "Cifrando elementos sensibles", + "Encryption passphrase. If changed, you should overwrite the server's database with the new (encrypted) files.": "Frase de contraseña de cifrado. Si se cambia, debes sobrescribir la base de datos del servidor con los nuevos archivos cifrados.", "Encryption phassphrase. If changed, you should overwrite the server's database with the new (encrypted) files.": "Frase de cifrado. Si la cambia, sobrescriba la base del servidor con los nuevos archivos cifrados.", "End-to-End Encryption": "Cifrado de extremo a extremo", "Endpoint URL": "URL del endpoint", @@ -112,27 +155,39 @@ "Fetch chunks on demand": "Obtener chunks bajo demanda", "Fetch database with previous behaviour": "Obtener BD con comportamiento anterior", "Fetch remote settings": "Obtener ajustes remotos", + "File prefix on the bucket": "Prefijo de archivo en el bucket", "File to resolve conflict": "Archivo para resolver el conflicto", "Filename": "Nombre de archivo", + "Files with modification times greater than this value (in seconds since the Unix epoch) will not have their events reflected. Set to 0 to disable this limit.": "Los archivos con tiempos de modificación mayores que este valor (segundos desde la época Unix) no reflejarán sus eventos. Usa 0 para desactivar este límite.", "First, please select the option that best describes your current situation.": "Primero, seleccione la opción que describa mejor su situación actual。", "Flag and restart": "Marcar y reiniciar", "Forces the file to be synced when opened.": "Forzar sincronización al abrir archivo", "Fresh Start Wipe": "Borrado para reinicio completo", "Garbage Collection V3 (Beta)": "Recolección de basura V3 (Beta)", "Handle files as Case-Sensitive": "Manejar archivos como sensibles a mayúsculas", + "Hatch": "Herramientas", "Hidden Files": "Archivos ocultos", - "How to display network errors when the sync server is unreachable.": "Cómo mostrar los errores de red cuando el servidor de sincronización no está disponible.", + "Hide completely": "Ocultar por completo", + "Highlight diff": "Resaltar diferencias", + "How to display network errors when the sync server is unreachable.": "Cómo mostrar los errores de red cuando no se puede alcanzar el servidor de sincronización.", "How would you like to configure the connection to your server?": "¿Cómo desea configurar la conexión con su servidor?", "I am adding a device to an existing synchronisation setup": "Estoy agregando un dispositivo a una configuración de sincronización existente", "I am setting this up for the first time": "Estoy configurando esto por primera vez", "I know my server details, let me enter them": "Conozco los datos de mi servidor; permítame introducirlos", "If disabled(toggled), chunks will be split on the UI thread (Previous behaviour).": "Si se desactiva, chunks se dividen en hilo UI (comportamiento anterior)", "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, changes will be automatically broadcasted to all connected peers. Notified peers will start fetching the changes.": "Si se activa, los cambios se difundirán automáticamente a todos los pares conectados. Los pares notificados empezarán a obtener los cambios.", "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, efficient per-file customization sync will be used. A minor migration is required when enabling this feature, and all devices must be updated to v0.23.18. Enabling this feature will result in losing compatibility with older versions.": "Si se activa, se usará una sincronización de personalización eficiente por archivo. Al activar esta función se requiere una pequeña migración y todos los dispositivos deben actualizarse a v0.23.18. Al activarla se pierde compatibilidad con versiones anteriores.", "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 forcePathStyle option will be used for bucket operations.": "Si se activa, se usará la opción forcePathStyle para operaciones de bucket.", "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 enabled, the P2P connection will be automatically started when the application launches.": "Si se activa, la conexión P2P se iniciará automáticamente al arrancar la aplicación.", + "If enabled, the plugin will not attempt to connect to the remote database even if the chunk was not found locally.": "Si se activa, el complemento no intentara conectarse a la base de datos remota aunque el chunk no se encuentre localmente.", + "If enabled, the request API will be used to avoid `inevitable` CORS problems. This is a workaround and may not work in all cases. PLEASE READ THE DOCUMENTATION BEFORE USING THIS OPTION. This is a less-secure option.": "Si se activa, se usará la API request para evitar problemas CORS inevitables. Es una solución alternativa y puede no funcionar en todos los casos. LEE LA DOCUMENTACIÓN ANTES DE USAR ESTA OPCIÓN. Es una opción menos segura.", + "If this enabled, all chunks will be stored with the revision made from its content.": "Si se activa, todos los fragmentos se almacenarán con una revisión generada a partir de su contenido.", "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)", "If this enabled, All files are handled as case-Sensitive (Previous behaviour).": "Si se habilita, todos los archivos se manejan como sensibles a mayúsculas (comportamiento anterior)", "If this enabled, chunks will be split into semantically meaningful segments. Not all platforms support this feature.": "Divide chunks en segmentos semánticos. No todos los sistemas lo soportan", @@ -144,11 +199,21 @@ "Incubate Chunks in Document": "Incubar chunks en documento", "Initialise all journal history, On the next sync, every item will be received and sent.": "Restablece todo el historial del diario. En la próxima sincronización se recibirán y enviarán todos los elementos.", "Interval (sec)": "Intervalo (segundos)", + "K.exp": "Experimental", + "K.long_p2p_sync": "%{title_p2p_sync}", + "K.P2P": "%{Peer} a %{Peer}", + "K.Peer": "Par", + "K.ScanCustomization": "Analizar personalización", + "K.short_p2p_sync": "Sincronización P2P", + "K.title_p2p_sync": "Sincronización Peer-to-Peer", "Keep empty folder": "Mantener carpetas vacías", + "lang_def": "Predeterminado", "lang-de": "Alemán", + "lang-def": "%{lang_def}", "lang-es": "Español", "lang-fr": "Français", "lang-ja": "Japonés", + "lang-ko": "한국어", "lang-ru": "Ruso", "lang-zh": "Chino simplificado", "lang-zh-tw": "Chino tradicional", @@ -158,7 +223,7 @@ "liveSyncReplicator.beforeLiveSync": "Antes de LiveSync, inicia OneShot...", "liveSyncReplicator.cantReplicateLowerValue": "No podemos replicar un valor más bajo.", "liveSyncReplicator.checkingLastSyncPoint": "Buscando el último punto sincronizado.", - "liveSyncReplicator.couldNotConnectTo": "No se pudo conectar a ${uri} : ${name} \n(${db})", + "liveSyncReplicator.couldNotConnectTo": "No se pudo conectar a ${uri} : ${name}\n(${db})", "liveSyncReplicator.couldNotConnectToRemoteDb": "No se pudo conectar a base de datos remota: ${d}", "liveSyncReplicator.couldNotConnectToServer": "No se pudo conectar al servidor.", "liveSyncReplicator.couldNotConnectToURI": "No se pudo conectar a ${uri}:${dbRet}", @@ -177,7 +242,7 @@ "liveSyncReplicator.retryLowerBatchSize": "Reintentar con tamaño de lote más bajo:${batch_size}/${batches_limit}", "liveSyncReplicator.unlockRemoteDb": "Desbloquear base de datos remota para prevenir corrupción de datos", "liveSyncSetting.errorNoSuchSettingItem": "No existe el ajuste: ${key}", - "liveSyncSetting.originalValue": "Original: ${value}", + "liveSyncSetting.originalValue": "Valor original: ${value}", "liveSyncSetting.valueShouldBeInRange": "El valor debe estar entre ${min} y ${max}", "liveSyncSettings.btnApply": "Aplicar", "Local Database Tweak": "Ajustes de la base de datos local", @@ -189,17 +254,22 @@ "logPane.pause": "Pausar", "logPane.title": "Registro de Self-hosted LiveSync", "logPane.wrap": "Ajustar", + "Maintenance": "Mantenimiento", "Maximum delay for batch database updating": "Retraso máximo para actualización por lotes", + "Maximum file modification time for reflected file events": "Tiempo máximo de modificación para eventos de archivo reflejados", "Maximum file size": "Tamaño máximo de archivo", "Maximum Incubating Chunk Size": "Tamaño máximo de chunks incubados", "Maximum Incubating Chunks": "Máximo de chunks incubados", "Maximum Incubation Period": "Periodo máximo de incubación", + "Maximum size of chunks to send in one request": "Tamaño máximo de fragmentos enviados en una solicitud", + "MB": "MB", "MB (0 to disable).": "MB (0 para desactivar)", "Memory cache": "Caché en memoria", "Memory cache size (by total characters)": "Tamaño caché memoria (por caracteres)", "Memory cache size (by total items)": "Tamaño caché memoria (por ítems)", "Merge": "Fusionar", "Minimum delay for batch database updating": "Retraso mínimo para actualización por lotes", + "Minimum interval for syncing": "Intervalo mínimo para sincronizar", "moduleCheckRemoteSize.logCheckingStorageSizes": "Comprobando tamaños de almacenamiento", "moduleCheckRemoteSize.logCurrentStorageSize": "Tamaño del almacenamiento remoto: ${measuredSize}", "moduleCheckRemoteSize.logExceededWarning": "Tamaño del almacenamiento remoto: ${measuredSize} superó ${notifySize}", @@ -236,6 +306,18 @@ "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.checkItLater": "Revisarlo más tarde", + "moduleMigration.fix0256.buttons.DismissForever": "Ya lo corregí, y no volver a preguntar", + "moduleMigration.fix0256.buttons.fix": "Corregir", + "moduleMigration.fix0256.message": "Debido a un error reciente (en v0.25.6), es posible que algunos archivos no se hayan guardado correctamente en la base de datos de sincronización.\nEscaneamos nuestros archivos y encontramos algunos que necesitan ser reparados.\n\n**Archivos listos para ser reparados:**\n\n${files}\n\nEstos archivos tienen el mismo tamaño que el archivo original en el almacenamiento y es probable que sean recuperables.\nPodemos usarlos para arreglar la base de datos, haga clic en el botón \"Reparar\" a continuación para arreglarlos.\n\n${messageUnrecoverable}\n\nSi desea ejecutarlo nuevamente, puede hacerlo desde Hatch.\n", + "moduleMigration.fix0256.messageUnrecoverable": "**Los archivos no se pueden reparar en este dispositivo:**\n\n${filesNotRecoverable}\n\nEstos archivos tienen metadatos inconsistentes y no se pueden reparar en este dispositivo (en general, no podemos determinar cuál es el correcto).\nPara restaurarlos, verifique sus otros dispositivos (también mediante esta función) o restáurelos manualmente desde una copia de seguridad.\n", + "moduleMigration.fix0256.title": "Se han detectado archivos rotos", + "moduleMigration.insecureChunkExist.buttons.fetch": "Ya reconstruí el control remoto. Obtener desde el control remoto", + "moduleMigration.insecureChunkExist.buttons.later": "lo haré más tarde", + "moduleMigration.insecureChunkExist.buttons.rebuild": "Reconstruir todo", + "moduleMigration.insecureChunkExist.laterMessage": "¡Recomendamos encarecidamente tratar esto lo antes posible!", + "moduleMigration.insecureChunkExist.message": "Algunos fragmentos no se almacenan de forma segura y no están cifrados en bases de datos.\n**Reconstruya la base de datos para solucionar este problema**.\n\nSi su base de datos remota no está configurada con SSL o utiliza credenciales menos seguras, **corre el riesgo de exponer datos confidenciales**.\n\nNota: actualice su LiveSync v0.25.6 o superior en todos sus dispositivos y haga una copia de seguridad de su bóveda.\nNota 2: Reconstruir todo y recuperar consume un poco de tiempo y tráfico; hágalo en horas de menor actividad y garantice una conexión de red estable.\n", + "moduleMigration.insecureChunkExist.title": "¡Se encontraron trozos inseguros!", "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", @@ -257,6 +339,7 @@ "moduleMigration.optionKeepPreviousBehaviour": "Mantener comportamiento anterior", "moduleMigration.optionManualSetup": "Configurarlo todo manualmente", "moduleMigration.optionNoAskAgain": "No, por favor pregúntame de nuevo", + "moduleMigration.optionSetupViaP2P": "Usar %{short_p2p_sync} para configurar", "moduleObsidianMenu.replicate": "Replicar", "More actions": "Más acciones", "Move remotely deleted files to the trash, instead of deleting.": "Mover archivos borrados remotos a papelera en lugar de eliminarlos", @@ -271,6 +354,7 @@ "Notify customized": "Notificar personalizaciones", "Notify when other device has newly customized.": "Notificar cuando otro dispositivo personalice", "Notify when the estimated remote storage size exceeds on start up": "Notificar cuando el tamaño estimado del almacenamiento remoto exceda al iniciar", + "Now we can choose how to split the chunks; V3 is the most efficient. If you have troubled, please make this Default or Legacy.": "Ahora puedes elegir cómo dividir los fragmentos; V3 es lo más eficiente. Si tienes problemas, usa Default o Legacy.", "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.": "Número de lotes a procesar. Default 40, mínimo 2. Controla documentos en memoria", "Number of changes to sync at a time. Defaults to 50. Minimum is 2.": "Número de cambios a sincronizar simultáneamente. Default 50, mínimo 2", "obsidianLiveSyncSettingTab.btnApply": "Aplicar", @@ -301,6 +385,7 @@ "obsidianLiveSyncSettingTab.errCorsNotAllowingCredentials": "CORS no permite credenciales", "obsidianLiveSyncSettingTab.errCorsOrigins": "❗ cors.origins es incorrecto", "obsidianLiveSyncSettingTab.errEnableCors": "❗ httpd.enable_cors es incorrecto", + "obsidianLiveSyncSettingTab.errEnableCorsChttpd": "✖ chttpd.enable_cors es incorrecto", "obsidianLiveSyncSettingTab.errMaxDocumentSize": "❗ couchdb.max_document_size es bajo)", "obsidianLiveSyncSettingTab.errMaxRequestSize": "❗ chttpd.max_http_request_size es bajo)", "obsidianLiveSyncSettingTab.errMissingWwwAuth": "❗ httpd.WWW-Authenticate falta", @@ -319,7 +404,7 @@ "obsidianLiveSyncSettingTab.logCheckingConfigDone": "Verificación de configuración completada", "obsidianLiveSyncSettingTab.logCheckingConfigFailed": "La verificación de configuración falló", "obsidianLiveSyncSettingTab.logCheckingDbConfig": "Verificando la configuración de la base de datos", - "obsidianLiveSyncSettingTab.logCheckPassphraseFailed": "ERROR: Error al comprobar la frase de contraseña con el servidor remoto: \n${db}.", + "obsidianLiveSyncSettingTab.logCheckPassphraseFailed": "ERROR: Error al comprobar la frase de contraseña con el servidor remoto:\n${db}.", "obsidianLiveSyncSettingTab.logConfiguredDisabled": "Modo de sincronización configurado: DESACTIVADO", "obsidianLiveSyncSettingTab.logConfiguredLiveSync": "Modo de sincronización configurado: Sincronización en Vivo", "obsidianLiveSyncSettingTab.logConfiguredPeriodic": "Modo de sincronización configurado: Periódico", @@ -335,27 +420,29 @@ "obsidianLiveSyncSettingTab.logPassphraseNotCompatible": "ERROR: ¡La frase de contraseña no es compatible con el servidor remoto! ¡Por favor, revísala de nuevo!", "obsidianLiveSyncSettingTab.logRebuildNote": "La sincronización ha sido desactivada, obtén y vuelve a activar si lo deseas.", "obsidianLiveSyncSettingTab.logSelectAnyPreset": "Selecciona cualquier preestablecido.", + "obsidianLiveSyncSettingTab.logServerConfigurationCheck": "Registrar la verificación de la configuración del servidor", "obsidianLiveSyncSettingTab.msgAreYouSureProceed": "¿Estás seguro de proceder?", "obsidianLiveSyncSettingTab.msgChangesNeedToBeApplied": "¡Los cambios deben aplicarse!", "obsidianLiveSyncSettingTab.msgConfigCheck": "--Verificación de configuración--", "obsidianLiveSyncSettingTab.msgConfigCheckFailed": "La verificación de configuración ha fallado. ¿Quieres continuar de todos modos?", "obsidianLiveSyncSettingTab.msgConnectionCheck": "--Verificación de conexión--", "obsidianLiveSyncSettingTab.msgConnectionProxyNote": "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.", - "obsidianLiveSyncSettingTab.msgCurrentOrigin": "Origen actual: {origin}", + "obsidianLiveSyncSettingTab.msgCurrentOrigin": "Origen actual: ${origin}", "obsidianLiveSyncSettingTab.msgDiscardConfirmation": "¿Realmente deseas descartar las configuraciones y bases de datos existentes?", "obsidianLiveSyncSettingTab.msgDone": "--Hecho--", "obsidianLiveSyncSettingTab.msgEnableCors": "Configurar httpd.enable_cors", + "obsidianLiveSyncSettingTab.msgEnableCorsChttpd": "Configurar chttpd.enable_cors", "obsidianLiveSyncSettingTab.msgEnableEncryptionRecommendation": "Recomendamos habilitar el cifrado de extremo a extremo y la obfuscación de ruta. ¿Estás seguro de querer continuar sin cifrado?", "obsidianLiveSyncSettingTab.msgFetchConfigFromRemote": "¿Quieres obtener la configuración del servidor remoto?", "obsidianLiveSyncSettingTab.msgGenerateSetupURI": "¡Todo listo! ¿Quieres generar un URI de configuración para configurar otros dispositivos?", "obsidianLiveSyncSettingTab.msgIfConfigNotPersistent": "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.", "obsidianLiveSyncSettingTab.msgInvalidPassphrase": "Tu frase de contraseña de cifrado podría ser inválida. ¿Estás seguro de querer continuar?", - "obsidianLiveSyncSettingTab.msgNewVersionNote": "¿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.", + "obsidianLiveSyncSettingTab.msgNewVersionNote": "¿Llegaste aquí por una notificación de actualización? Revisa el historial de versiones. Si todo está bien, haz clic en el botón. Normalmente solo se notifica una vez.", "obsidianLiveSyncSettingTab.msgNonHTTPSInfo": "Configurado como URI que no es HTTPS. Ten en cuenta que esto puede no funcionar en dispositivos móviles.", "obsidianLiveSyncSettingTab.msgNonHTTPSWarning": "No se puede conectar a URI que no sean HTTPS. Por favor, actualiza tu configuración y vuelve a intentarlo.", "obsidianLiveSyncSettingTab.msgNotice": "---Aviso---", "obsidianLiveSyncSettingTab.msgObjectStorageWarning": "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.", - "obsidianLiveSyncSettingTab.msgOriginCheck": "Verificación de origen: {org}", + "obsidianLiveSyncSettingTab.msgOriginCheck": "Comprobación de origen: ${org}", "obsidianLiveSyncSettingTab.msgRebuildRequired": "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.", "obsidianLiveSyncSettingTab.msgSelectAndApplyPreset": "Por favor, selecciona y aplica cualquier elemento preestablecido para completar el asistente.", "obsidianLiveSyncSettingTab.msgSetCorsCredentials": "Configurar cors.credentials", @@ -385,6 +472,7 @@ "obsidianLiveSyncSettingTab.okCorsOriginMatched": "✔ Origen de CORS correcto", "obsidianLiveSyncSettingTab.okCorsOrigins": "✔ cors.origins está correcto.", "obsidianLiveSyncSettingTab.okEnableCors": "✔ httpd.enable_cors está correcto.", + "obsidianLiveSyncSettingTab.okEnableCorsChttpd": "✔ chttpd.enable_cors está correcto.", "obsidianLiveSyncSettingTab.okMaxDocumentSize": "✔ couchdb.max_document_size está correcto.", "obsidianLiveSyncSettingTab.okMaxRequestSize": "✔ chttpd.max_http_request_size está correcto.", "obsidianLiveSyncSettingTab.okRequireValidUser": "✔ chttpd.require_valid_user está correcto.", @@ -392,12 +480,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": "Sincronización LiveSync", - "obsidianLiveSyncSettingTab.optionMinioS3R2": "Minio,S3,R2", + "obsidianLiveSyncSettingTab.optionMinioS3R2": "MinIO, S3, R2", "obsidianLiveSyncSettingTab.optionOkReadEverything": "OK, he leído todo.", "obsidianLiveSyncSettingTab.optionOnEvents": "En eventos", "obsidianLiveSyncSettingTab.optionPeriodicAndEvents": "Periódico y en eventos", @@ -409,6 +497,8 @@ "obsidianLiveSyncSettingTab.panelPrivacyEncryption": "Privacidad y Cifrado", "obsidianLiveSyncSettingTab.panelRemoteConfiguration": "Configuración remota", "obsidianLiveSyncSettingTab.panelSetup": "Configuración", + "obsidianLiveSyncSettingTab.serverVersion": "Información del servidor: ${info}", + "obsidianLiveSyncSettingTab.titleActiveRemoteServer": "Servidor remoto activo", "obsidianLiveSyncSettingTab.titleAppearance": "Apariencia", "obsidianLiveSyncSettingTab.titleConflictResolution": "Resolución de conflictos", "obsidianLiveSyncSettingTab.titleCongratulations": "¡Felicidades!", @@ -436,7 +526,7 @@ "obsidianLiveSyncSettingTab.titleSyncSettings": "Configuraciones de Sincronización", "obsidianLiveSyncSettingTab.titleSyncSettingsViaMarkdown": "Configuración de sincronización a través de Markdown", "obsidianLiveSyncSettingTab.titleUpdateThinning": "Actualización de adelgazamiento", - "obsidianLiveSyncSettingTab.warnCorsOriginUnmatched": "⚠ El origen de CORS no coincide: {from}->{to}", + "obsidianLiveSyncSettingTab.warnCorsOriginUnmatched": "⚠ El origen CORS no coincide ${from}->${to}", "obsidianLiveSyncSettingTab.warnNoAdmin": "⚠ No tienes privilegios de administrador.", "Ok": "Aceptar", "Old Algorithm": "Algoritmo antiguo", @@ -448,6 +538,24 @@ "Overwrite remote": "Sobrescribir remoto", "Overwrite remote with local DB and passphrase.": "Sobrescribe el remoto con la base de datos local y la frase de contraseña.", "Overwrite Server Data with This Device's Files": "Sobrescribir los datos del servidor con los archivos de este dispositivo", + "P2P.AskPassphraseForDecrypt": "El par remoto compartió la configuración. Ingrese la frase de contraseña para descifrar la configuración.", + "P2P.AskPassphraseForShare": "El par remoto solicitó la configuración de este dispositivo. Ingrese la frase de contraseña para compartir la configuración. Puede ignorar la solicitud cancelando este diálogo.", + "P2P.DisabledButNeed": "%{title_p2p_sync} está deshabilitado. ¿Realmente quieres habilitarlo?", + "P2P.FailedToOpen": "No se pudo abrir la conexión P2P al servidor de señalización.", + "P2P.NoAutoSyncPeers": "No se encontraron pares de sincronización automática. Configure pares en el panel %{long_p2p_sync}.", + "P2P.NoKnownPeers": "No se han detectado pares, esperando la entrada de otros pares...", + "P2P.Note.description": " Este replicador nos permite sincronizar nuestra bóveda con otros\ndispositivos utilizando una conexión de igual a igual. Podemos usar esto para sincronizar nuestra bóveda con nuestros otros dispositivos sin usar un servicio en la nube.\nEste replicador está basado en Trystero. También utiliza un servidor de señalización para establecer una conexión entre dispositivos. El servidor de señalización se utiliza para intercambiar información de conexión entre dispositivos. Conoce (o no debería) conocer ni almacenar ninguno de nuestros datos.\n\nCualquiera puede alojar el servidor de señalización. Esto es sólo un relevo de Nostr. En aras de la simplicidad y para comprobar el comportamiento del replicador, vrtmrz aloja una instancia del servidor de señalización. Puede utilizar el servidor experimental proporcionado por vrtmrz o puede utilizar cualquier otro servidor.\n\nPor cierto, aunque el servidor de señalización no almacene nuestros datos, puede ver la información de conexión de algunos de nuestros dispositivos. Tenga en cuenta esto. Además, tenga cuidado al utilizar el servidor proporcionado por otra persona.", + "P2P.Note.important_note": "Replicador de igual a igual.", + "P2P.Note.important_note_sub": "Esta característica todavía está a la vanguardia. Tenga en cuenta que asegúrese de realizar una copia de seguridad de sus datos antes de utilizar esta función. Y estaríamos muy contentos si pudiera contribuir al desarrollo de esta función.", + "P2P.Note.Summary": "¿Cuál es esta característica? (y algunas notas importantes, léalas una vez)", + "P2P.NotEnabled": "%{title_p2p_sync} no está habilitado. No podemos abrir una nueva conexión.", + "P2P.P2PReplication": "Replicación %{P2P}", + "P2P.PaneTitle": "%{long_p2p_sync}", + "P2P.ReplicatorInstanceMissing": "No se encuentra el replicador de sincronización P2P; posiblemente no se haya configurado o habilitado.", + "P2P.SeemsOffline": "El par ${name} parece desconectado, omitido.", + "P2P.SyncAlreadyRunning": "La sincronización P2P ya se está ejecutando.", + "P2P.SyncCompleted": "Sincronización P2P completada.", + "P2P.SyncStartedWith": "Se inició la sincronización P2P con ${name}.", "paneMaintenance.markDeviceResolvedAfterBackup": "Marcar el dispositivo como resuelto después de hacer una copia de seguridad", "paneMaintenance.remoteLockedAndDeviceNotAccepted": "La base de datos remota está bloqueada y este dispositivo aún no ha sido aceptado.", "paneMaintenance.remoteLockedResolvedDevice": "La base de datos remota está bloqueada, pero este dispositivo ya fue aceptado.", @@ -469,15 +577,19 @@ "Perform Garbage Collection": "Ejecutar recolección de basura", "Perform Garbage Collection to remove unused chunks and reduce database size.": "Ejecuta la recolección de basura para eliminar chunks no usados y reducir el tamaño de la base de datos.", "Periodic Sync interval": "Intervalo de sincronización periódica", - "Pick a file to resolve conflict": "Elegir un archivo para resolver el conflicto", + "Pick a file to resolve conflict": "Elija un archivo para resolver el conflicto", + "Pick a file to show history": "Elija un archivo para mostrar el historial", "Please select a method to import the settings from another device.": "Seleccione un método para importar la configuración desde otro dispositivo。", "Please select an option to proceed": "Seleccione una opción para continuar", "Please select the type of server to which you are connecting.": "Seleccione el tipo de servidor al que se está conectando。", "Please set device name to identify this device. This name should be unique among your devices. While not configured, we cannot enable this feature.": "Define un nombre para identificar este dispositivo. Debe ser único entre tus dispositivos. Mientras no esté configurado, no podremos habilitar esta función.", "Please set this device name": "Define el nombre de este dispositivo", + "Prepare the 'report' to create an issue": "Preparar el \"reporte\" para crear un issue", "Presets": "Preconfiguraciones", "Proceed with Setup URI": "Continuar con el URI de configuración", + "Process files even if seems to be corrupted": "Procesar archivos aunque parezcan dañados", "Process small files in the foreground": "Procesar archivos pequeños en primer plano", + "Property Encryption": "Cifrado de propiedades", "PureJS fallback (Fast, W/O WebAssembly)": "Alternativa PureJS (rápida, sin WebAssembly)", "Purge all download/upload cache.": "Purga toda la caché de descarga y carga.", "Purge all journal counter": "Purgar todos los contadores del diario", @@ -485,6 +597,30 @@ "Rebuilding Operations (Remote Only)": "Operaciones de reconstrucción (solo remoto)", "Recreate all": "Recrear todo", "Recreate missing chunks for all files": "Recrear fragmentos faltantes para todos los archivos", + "RedFlag.Fetch.Method.Desc": "¿Cómo desea buscar?\n- %{RedFlag.Fetch.Method.FetchSafer}.\n **Bajo tráfico**, **Alta CPU**, **Bajo riesgo**\n Recomendado si...\n - Archivos posiblemente inconsistentes\n - Los archivos no eran tanto.\n- %{RedFlag.Fetch.Method.FetchSmoother}.\n **Tráfico bajo**, **CPU moderado**, **Riesgo bajo a moderado**\n Recomendado si...\n - Archivos probablemente consistentes\n - Tienes muchos archivos.\n- %{RedFlag.Fetch.Method.FetchTraditional}.\n **Alto tráfico**, **Baja CPU**, **Riesgo bajo a moderado**\n\n>[!INFO]- Detalles\n> ## %{RedFlag.Fetch.Method.FetchSafer}.\n> **Bajo tráfico**, **CPU alta**, **Bajo riesgo**\n> Esta opción primero crea una base de datos local utilizando archivos locales existentes antes de recuperar datos de la fuente remota.\n> Si existen archivos coincidentes tanto local como remotamente, solo se transferirán las diferencias entre ellos.\n> Sin embargo, los archivos presentes en ambas ubicaciones se tratarán inicialmente como archivos en conflicto. Se resolverán automáticamente si en realidad no entran en conflicto, pero este proceso puede llevar tiempo.\n> Este es generalmente el método más seguro y minimiza el riesgo de pérdida de datos.\n> ## %{RedFlag.Fetch.Method.FetchSmoother}.\n> **Tráfico bajo**, **CPU moderado**, **Riesgo bajo a moderado** (dependiendo de la operación)\n> Esta opción primero crea fragmentos de archivos locales para la base de datos y luego recupera datos. En consecuencia, sólo se transfieren los fragmentos que faltan localmente. Sin embargo, todos los metadatos se toman de la fuente remota.\n> Luego, los archivos locales se comparan con estos metadatos en el momento del lanzamiento. El contenido considerado más nuevo sobrescribirá al anterior (por hora de modificación). Este resultado luego se sincroniza nuevamente con la base de datos remota.\n> Esto generalmente es seguro si los archivos locales tienen realmente la última marca de tiempo. Sin embargo, puede causar problemas si un archivo tiene una marca de tiempo más nueva pero un contenido más antiguo (como el `welcome.md` inicial).\n> Esto utiliza menos CPU y es más rápido que \"%{RedFlag.Fetch.Method.FetchSafer}\", pero puede provocar la pérdida de datos si no se usa con cuidado.\n> ## %{RedFlag.Fetch.Method.FetchTraditional}.\n> **Alto tráfico**, **Baja CPU**, **Riesgo bajo a moderado** (dependiendo de la operación)\n> Todo se recuperará desde el control remoto.\n> Similar al %{RedFlag.Fetch.Method.FetchSmoother}, pero todos los fragmentos se obtienen de la fuente remota.\n> Esta es la forma más tradicional de recuperar datos y, por lo general, consume la mayor cantidad de tráfico y tiempo de red. También conlleva un riesgo similar de sobrescribir archivos remotos con la opción '%{RedFlag.Fetch.Method.FetchSmoother}'.\n> Sin embargo, a menudo se considera el método más estable porque es el enfoque más sencillo y más antiguo.", + "RedFlag.Fetch.Method.FetchSafer": "Cree una base de datos local una vez antes de buscarla", + "RedFlag.Fetch.Method.FetchSmoother": "Cree fragmentos de archivos locales antes de recuperarlos", + "RedFlag.Fetch.Method.FetchTraditional": "Obtener todo desde el control remoto", + "RedFlag.Fetch.Method.Title": "¿Cómo desea buscar?", + "RedFlag.FetchRemoteConfig.Applied": "Remote configuration applied.", + "RedFlag.FetchRemoteConfig.Buttons.Cancel": "No, usa la configuración local", + "RedFlag.FetchRemoteConfig.Buttons.Fetch": "Sí, buscar y aplicar configuraciones remotas", + "RedFlag.FetchRemoteConfig.Buttons.Retry": "Retry (recommended)", + "RedFlag.FetchRemoteConfig.Buttons.SkipAndProceed": "Skip and proceed", + "RedFlag.FetchRemoteConfig.FailedMessage": "Could not fetch configuration from remote. If you are new to the Self-hosted LiveSync, this might be expected. If not, you should check your network or server settings.", + "RedFlag.FetchRemoteConfig.FailedTitle": "Fetch Remote Configuration Failed", + "RedFlag.FetchRemoteConfig.MatchesLocal": "Remote configuration matches local configuration. No changes applied.", + "RedFlag.FetchRemoteConfig.Message": "¿Quiere recuperar y aplicar configuraciones de preferencias almacenadas de forma remota al dispositivo?", + "RedFlag.FetchRemoteConfig.NotApplied": "Remote configuration not applied.", + "RedFlag.FetchRemoteConfig.SettingsDiffered": "Your settings differed slightly from the server's. The plug-in has supplemented the incompatible parts with the server settings!", + "RedFlag.FetchRemoteConfig.Title": "Obtener configuración remota", + "RedFlag.Log.FetchEverythingCancelled": "Fetch everything cancelled by user.", + "RedFlag.Log.FetchEverythingCompleted": "Fetch everything operation completed. Vault files will be gradually synced.", + "RedFlag.Log.RebuildEverythingCancelled": "Rebuild everything cancelled by user.", + "RedFlag.Log.RebuildEverythingCompleted": "Rebuild everything operation completed.", + "RedFlag.Log.VaultInitialisationError": "Error during vault initialisation.", + "RedFlag.Log.VaultInitialisationProcessError": "Error during vault initialisation process.", + "RedFlag.ResumeProcessingPrompt": "Do you want to resume file and database processing, and restart obsidian now?", "Reducing the frequency with which on-disk changes are reflected into the DB": "Reducir frecuencia de actualizaciones de disco a BD", "Region": "Región", "Remediation": "Remediación", @@ -495,8 +631,23 @@ "Remote server type": "Tipo de servidor remoto", "Remote Type": "Tipo de remoto", "Rename": "Renombrar", + "Replicator.Dialogue.Locked.Action.Dismiss": "Cancelar para reconfirmación", + "Replicator.Dialogue.Locked.Action.Fetch": "Restablecer sincronización en este dispositivo", + "Replicator.Dialogue.Locked.Action.Unlock": "Desbloquear la base de datos remota", + "Replicator.Dialogue.Locked.Message": "La base de datos remota está bloqueada. Esto se debe a una reconstrucción en una de las terminales.\nPor lo tanto, se solicita al dispositivo que retenga la conexión para evitar daños en la base de datos.\n\nHay tres opciones que podemos hacer:\n\n- %{Replicator.Dialogue.Locked.Action.Fetch}\n La forma más preferida y confiable. Esto eliminará la base de datos local una vez y restablecerá toda la información de sincronización de la base de datos remota nuevamente. En la mayoría de los casos, podemos realizar esto de manera segura. Sin embargo, lleva algo de tiempo y debe realizarse en una red estable.\n- %{Replicator.Dialogue.Locked.Action.Unlock}\n Este método solo se puede utilizar si ya estamos sincronizados de manera confiable mediante otros métodos de replicación. Esto no significa simplemente que tengamos los mismos archivos. Si no estás seguro, debes evitarlo.\n- %{Replicator.Dialogue.Locked.Action.Dismiss}\n Esto cancelará la operación. Y le preguntaremos nuevamente en la próxima solicitud.\n", + "Replicator.Dialogue.Locked.Message.Fetch": "Se ha programado recuperar todo. El complemento se reiniciará para ejecutarlo.", + "Replicator.Dialogue.Locked.Message.Unlocked": "La base de datos remota ha sido desbloqueada. Vuelva a intentar la operación.", + "Replicator.Dialogue.Locked.Title": "bloqueado", + "Replicator.Message.Cleaned": "La limpieza de la base de datos está en proceso. la replicación ha sido cancelada", + "Replicator.Message.InitialiseFatalError": "No hay ningún replicador disponible, este es el error fatal.", + "Replicator.Message.Pending": "Algunos eventos de archivos están pendientes. La replicación ha sido cancelada.", + "Replicator.Message.SomeModuleFailed": "La replicación ha sido cancelada por alguna falla del módulo", + "Replicator.Message.VersionUpFlash": "Se ha detectado una actualización. Abra el cuadro de diálogo Configuración y verifique el Registro de cambios. La replicación ha sido cancelada.", "Requires restart of Obsidian": "Requiere reiniciar Obsidian", "Requires restart of Obsidian.": "Requiere reiniciar Obsidian", + "Rerun Onboarding Wizard": "Volver a ejecutar el asistente de incorporación", + "Rerun the onboarding wizard to set up Self-hosted LiveSync again.": "Vuelva a ejecutar el asistente de incorporación para configurar LiveSync autohospedado nuevamente.", + "Rerun Wizard": "Volver a ejecutar el asistente", "Resend": "Reenviar", "Resend all chunks to the remote.": "Reenvía todos los chunks al remoto.", "Reset": "Restablecer", @@ -504,16 +655,19 @@ "Reset all journal counter": "Restablecer todos los contadores del diario", "Reset journal received history": "Restablecer historial de recepción del diario", "Reset journal sent history": "Restablecer historial de envío del diario", + "Reset notification threshold and check the remote database usage": "Restablecer el umbral de notificación y revisar el uso de la base de datos remota", "Reset received": "Restablecer recepción", "Reset sent history": "Restablecer historial de envío", "Reset Synchronisation information": "Restablecer información de sincronización", "Reset Synchronisation on This Device": "Restablecer sincronización en este dispositivo", + "Reset the remote storage size threshold and check the remote storage size again.": "Restablecer el umbral del tamaño del almacenamiento remoto y volver a revisar su tamaño", "Resolve All": "Resolver todo", "Resolve all conflicted files": "Resolver todos los archivos en conflicto", "Resolve All conflicted files by the newer one": "Resolver todos los archivos en conflicto con la versión más reciente", "Resolve all conflicted files by the newer one. Caution: This will overwrite the older one, and cannot resurrect the overwritten one.": "Resuelve todos los archivos en conflicto conservando la versión más reciente. Precaución: esto sobrescribirá la versión anterior y no podrá recuperarse.", "Restart Now": "Reiniciar ahora", "Restore or reconstruct local database from remote.": "Restaura o reconstruye la base de datos local desde el remoto.", + "Run Doctor": "Ejecutar Doctor", "S3/MinIO/R2 Object Storage": "Almacenamiento de objetos S3/MinIO/R2", "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", "Saving will be performed forcefully after this number of seconds.": "Guardado forzado tras esta cantidad de segundos", @@ -532,23 +686,53 @@ "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", "Select the database adapter to use.": "Selecciona el adaptador de base de datos que se usará.", + "Selector": "Selector", "Send": "Enviar", "Send chunks": "Enviar chunks", "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!", + "Setting.TroubleShooting": "Solución de problemas", + "Setting.TroubleShooting.Doctor": "Doctor de configuración", + "Setting.TroubleShooting.Doctor.Desc": "Detecta configuraciones no óptimas. (Igual que durante la migración)", + "Setting.TroubleShooting.ScanBrokenFiles": "Buscar archivos dañados", + "Setting.TroubleShooting.ScanBrokenFiles.Desc": "Busca archivos que no estén almacenados correctamente en la base de datos.", + "SettingTab.Message.AskRebuild": "Sus cambios requieren ser recuperados de la base de datos remota. ¿Quieres continuar?", "Setup.> [!INFO]- The connected devices have been detected as follows:\n${devices}": "> [!INFO]- Se detectaron los siguientes dispositivos conectados:\n${devices}", "Setup.All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.": "Todos los dispositivos tienen el mismo valor de progreso (${progress}). Parece que tus dispositivos están sincronizados y se puede continuar con la recolección de basura.", + "Setup.Apply.Buttons.ApplyAndFetch": "Aplicar y obtener", + "Setup.Apply.Buttons.ApplyAndMerge": "Aplicar y fusionar", + "Setup.Apply.Buttons.ApplyAndRebuild": "Aplicar y reconstruir", + "Setup.Apply.Buttons.Cancel": "Descartar y cancelar", + "Setup.Apply.Buttons.OnlyApply": "Solo aplicar", + "Setup.Apply.Message": "La nueva configuración está lista. Procedamos a aplicarlo.\nHay varias maneras de aplicar esto:\n\n- Aplicar y buscar\n Configure este dispositivo como un nuevo cliente. Después de aplicar, sincronice desde el servidor remoto.\n- Aplicar y fusionar\n Configure en un dispositivo que ya tenga el archivo. Procesa los archivos locales y transfiere las diferencias. Pueden surgir conflictos.\n- Aplicar y reconstruir\n Reconstruya el control remoto usando archivos locales. Normalmente, esto se hace si el servidor se daña o si deseamos empezar desde cero.\n Otros dispositivos se bloquearán y será necesario volver a buscarlos.\n- Sólo aplicar\n Aplicar únicamente. Pueden surgir conflictos si se requiere una reconstrucción.", + "Setup.Apply.Title": "Aplicar nueva configuración desde ${method}", + "Setup.Apply.WarningRebuildRecommended": "NOTA: después de ajustar la configuración, se ha determinado que se requiere una reconstrucción; No se recomienda importar solo.", "Setup.Cancel Garbage Collection": "Cancelar la recolección de basura", + "Setup.Command.CopySetupUri": "Copy settings as a new setup URI", + "Setup.Command.CopySetupUriFull": "Copy settings as a new setup URI (Full)", + "Setup.Command.CopySetupUriWithSync": "Copy settings as a new setup URI (With customization sync)", + "Setup.Command.OpenSetupUri": "Use the copied setup URI (Formerly Open setup URI)", + "Setup.Command.ShowSettingsQrCode": "Show settings as a QR code", "Setup.Compaction in progress on remote database...": "La compactación está en curso en la base de datos remota...", "Setup.Compaction on remote database completed successfully.": "La compactación en la base de datos remota se completó correctamente.", "Setup.Compaction on remote database failed.": "La compactación en la base de datos remota falló.", "Setup.Compaction on remote database timed out.": "La compactación en la base de datos remota agotó el tiempo de espera.", "Setup.Device": "Dispositivo", + "Setup.Doctor.Buttons.No": "No", + "Setup.Doctor.Buttons.Yes": "Si", + "Setup.Doctor.Message": "LiveSync autohospedado se ha vuelto gradualmente más largo en la historia y algunas configuraciones recomendadas han cambiado.\n\nAhora, la configuración es un muy buen momento para hacer esto.\n\n¿Quiere ejecutar Doctor para comprobar si la configuración importada es óptima en comparación con el estado más reciente?", + "Setup.Doctor.Title": "¿Quieres consultar al médico?", + "Setup.EncryptSettingsPassphrase": "The passphrase to encrypt the setup URI", + "Setup.EncryptSettingsTitle": "Encrypt your settings", "Setup.Failed to connect to remote for compaction.": "No se pudo conectar a la base de datos remota para la compactación.", "Setup.Failed to connect to remote for compaction. ${reason}": "No se pudo conectar a la base de datos remota para la compactación. ${reason}", "Setup.Failed to start one-shot replication before Garbage Collection. Garbage Collection Cancelled.": "No se pudo iniciar la replicación de una sola vez antes de la recolección de basura. La recolección de basura se canceló.", "Setup.Failed to start replication after Garbage Collection.": "No se pudo iniciar la replicación después de la recolección de basura.", + "Setup.FetchRemoteConf.Buttons.Fetch": "Sí, recupera la configuración.", + "Setup.FetchRemoteConf.Buttons.Skip": "No, utilice la configuración del URI.", + "Setup.FetchRemoteConf.Message": "Si ya hemos sincronizado una vez con otro dispositivo, la base de datos remota almacena los valores de configuración adecuados entre los dispositivos sincronizados. Al complemento le gustaría recuperarlos para una configuración sólida.\n\nSin embargo, tenemos que asegurarnos de una cosa. ¿Estamos actualmente en una situación en la que podemos acceder a la red de forma segura y recuperar la configuración?\n\nNota: Básicamente, es seguro hacer esto si su base de datos remota está alojada con un certificado SSL y su red no está comprometida.", + "Setup.FetchRemoteConf.Title": "¿Recuperar la configuración de la base de datos remota?", "Setup.Garbage Collection cancelled by user.": "El usuario canceló la recolección de basura.", "Setup.Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.": "Recolección de basura completada. Chunks eliminados: ${deletedChunks} / ${totalChunks}. Tiempo empleado: ${seconds} segundos.", "Setup.Garbage Collection Confirmation": "Confirmación de recolección de basura", @@ -556,6 +740,8 @@ "Setup.Garbage Collection: Scanned ${scanned} / ~${docCount}": "Recolección de basura: escaneados ${scanned} / ~${docCount}", "Setup.Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": "Recolección de basura: escaneo completado. Chunks totales: ${totalChunks}, chunks usados: ${usedChunks}", "Setup.Ignore and Proceed": "Ignorar y continuar", + "Setup.Log.ProtocolHandlerRegistrationFailed": "Failed to register protocol handler. This feature may not work in some environments.", + "Setup.Log.SetupUriCopiedToClipboard": "Setup URI copied to clipboard", "Setup.No connected device information found. Cancelling Garbage Collection.": "No se encontró información de dispositivos conectados. Cancelando la recolección de basura.", "Setup.Node ID": "ID del nodo", "Setup.Node Information Missing": "Falta información del nodo", @@ -572,6 +758,8 @@ "Setup.Proceeding with Garbage Collection, ignoring missing nodes.": "Continuando con la recolección de basura e ignorando los nodos faltantes.", "Setup.Proceeding with Garbage Collection.": "Continuando con la recolección de basura.", "Setup.Progress": "Progreso", + "Setup.QRCode": "Hemos generado un código QR para transferir la configuración. Escanee el código QR con su teléfono u otro dispositivo.\nNota: El código QR no está cifrado, así que tenga cuidado al abrirlo.\n\n>[!SOLO PARA TUS OJOS]-\n>
${qr_image}
", + "Setup.QRCodeTitle": "Settings QR Code", "Setup.RemoteE2EE.AdvancedTitle": "Avanzado", "Setup.RemoteE2EE.AlgorithmWarning": "Cambiar el algoritmo de cifrado impedirá el acceso a cualquier dato cifrado anteriormente con otro algoritmo. Asegúrate de que todos tus dispositivos estén configurados para usar el mismo algoritmo y así mantener el acceso a tus datos.", "Setup.RemoteE2EE.ButtonCancel": "Cancelar", @@ -598,6 +786,9 @@ "Setup.ScanQRCode.Step4": "En este dispositivo, cambia a la cámara o usa un escáner QR para escanear el código mostrado.", "Setup.ScanQRCode.Title": "Escanear código QR", "Setup.Setup URI dialog cancelled.": "Se canceló el diálogo de Setup URI.", + "Setup.SetupUri": "Setup URI", + "Setup.ShowQRCode": "Mostrar código QR", + "Setup.ShowQRCode.Desc": "Mostrar el código QR para transferir la configuración.", "Setup.Some devices have differing progress values (max: ${maxProgress}, min: ${minProgress}).\nThis may indicate that some devices have not completed synchronisation, which could lead to conflicts. Strongly recommend confirming that all devices are synchronised before proceeding.": "Algunos dispositivos tienen valores de progreso diferentes (máx.: ${maxProgress}, mín.: ${minProgress}).\nEsto puede indicar que algunos dispositivos no han completado la sincronización, lo que podría causar conflictos. Se recomienda encarecidamente confirmar que todos los dispositivos estén sincronizados antes de continuar.", "Setup.The following accepted nodes are missing its node information:\n- ${missingNodes}\n\nThis indicates that they have not been connected for some time or have been left on an older version.\nIt is preferable to update all devices if possible. If you have any devices that are no longer in use, you can clear all accepted nodes by locking the remote once.": "Los siguientes nodos aceptados no tienen información del nodo:\n- ${missingNodes}\n\nEsto indica que no se han conectado desde hace algún tiempo o que se han quedado en una versión anterior.\nSi es posible, es preferible actualizar todos los dispositivos. Si tienes dispositivos que ya no se usan, puedes borrar todos los nodos aceptados bloqueando el remoto una vez.", "Setup.titleCaseSensitivity": "Sensibilidad a mayúsculas", @@ -619,7 +810,9 @@ "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 full banner": "Mostrar banner completo", + "Show full banner": "Mostrar el banner completo", + "Show history": "Mostrar historial", + "Show icon only": "Mostrar solo el icono", "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", @@ -651,23 +844,471 @@ "The maximum duration for which chunks can be incubated within the document. Chunks exceeding this period will graduate to independent chunks.": "Duración máxima para incubar chunks. Excedentes se independizan", "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", + "The minimum interval for automatic synchronisation on event.": "El intervalo mínimo para la sincronización automática por evento.", "This feature enables direct synchronisation between devices. No server is required, but both devices must be online at the same time for synchronisation to occur, and some features may be limited. Internet connection is only required to signalling (detecting peers) and not for data transfer.": "Esta función permite la sincronización directa entre dispositivos. No requiere servidor, pero ambos dispositivos deben estar en línea al mismo tiempo para que la sincronización se produzca, y algunas funciones pueden ser limitadas. La conexión a Internet solo se necesita para la señalización (detección de pares), no para la transferencia de datos。", "This is an advanced option for users who do not have a URI or who wish to configure detailed settings.": "Esta es una opción avanzada para usuarios que no disponen de un URI o que desean configurar parámetros detallados。", "This is the most suitable synchronisation method for the design. All functions are available. You must have set up a CouchDB instance.": "Este es el método de sincronización más adecuado para el diseño. Todas las funciones están disponibles. Debe tener configurada una instancia de CouchDB。", "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", "This will recreate chunks for all files. If there were missing chunks, this may fix the errors.": "Esto recreará los fragmentos de todos los archivos. Si faltaban fragmentos, esto puede corregir los errores.", "Transfer Tweak": "Ajustes de transferencia", + "TweakMismatchResolve.Action.Dismiss": "Descartar", + "TweakMismatchResolve.Action.UseConfigured": "Usar la configuración configurada", + "TweakMismatchResolve.Action.UseMine": "Actualizar la configuración de la base de datos remota", + "TweakMismatchResolve.Action.UseMineAcceptIncompatible": "Actualice la configuración de la base de datos remota pero manténgala como está", + "TweakMismatchResolve.Action.UseMineWithRebuild": "Actualice la configuración de la base de datos remota y reconstruya nuevamente", + "TweakMismatchResolve.Action.UseRemote": "Aplicar configuración a este dispositivo", + "TweakMismatchResolve.Action.UseRemoteAcceptIncompatible": "Aplicar la configuración a este dispositivo, pero ignorar la incompatibilidad", + "TweakMismatchResolve.Action.UseRemoteWithRebuild": "Aplicar la configuración a este dispositivo y recuperarla nuevamente", + "TweakMismatchResolve.Message.Main": "\nLa configuración en la base de datos remota es la siguiente. Estos valores los configuran otros dispositivos, que se sincronizan con este dispositivo al menos una vez.\n\nSi desea utilizar esta configuración, seleccione %{TweakMismatchResolve.Action.UseConfigured}.\nSi desea conservar la configuración de este dispositivo, seleccione %{TweakMismatchResolve.Action.Dismiss}.\n\n${table}\n\n>[!CONSEJO]\n> Si desea sincronizar todas las configuraciones, utilice `Sincronizar configuraciones mediante rebajas` después de aplicar una configuración mínima con esta función.\n\n${additionalMessage}", + "TweakMismatchResolve.Message.MainTweakResolving": "Su configuración no coincide con la del servidor remoto.\n\nDebe coincidir la siguiente configuración:\n\n${table}\n\nHáganos saber su decisión.\n\n${additionalMessage}", + "TweakMismatchResolve.Message.UseRemote.WarningRebuildRecommended": "\n>[!AVISO]\n> Algunos cambios son compatibles pero pueden consumir almacenamiento adicional y volúmenes de transferencia. Se recomienda una reconstrucción. Sin embargo, es posible que no se realice una reconstrucción en este momento, pero se puede implementar en mantenimiento futuro.\n> ***¡Asegúrese de tener tiempo y estar conectado a una red estable para presentar la solicitud!***", + "TweakMismatchResolve.Message.UseRemote.WarningRebuildRequired": "\n>[!ADVERTENCIA]\n> Algunas configuraciones remotas no son compatibles con la base de datos local de este dispositivo. Será necesario reconstruir la base de datos local.\n> ***¡Asegúrese de tener tiempo y estar conectado a una red estable para presentar la solicitud!***", + "TweakMismatchResolve.Message.WarningIncompatibleRebuildRecommended": "\n>[!AVISO]\n> Hemos detectado que algunos de los valores son diferentes para hacer incompatible la base de datos local con la base de datos remota.\n> Algunos cambios son compatibles pero pueden consumir almacenamiento adicional y volúmenes de transferencia. Se recomienda una reconstrucción. Sin embargo, es posible que no se realice una reconstrucción en este momento, pero se puede implementar en mantenimiento futuro.\n> Si desea reconstruir, tardará unos minutos o más. **Asegúrate de que sea seguro realizarlo ahora.**", + "TweakMismatchResolve.Message.WarningIncompatibleRebuildRequired": "\n>[!ADVERTENCIA]\n> Hemos detectado que algunos de los valores son diferentes para hacer incompatible la base de datos local con la base de datos remota.\n> Se requieren reconstrucciones locales o remotas. Ambos tardan unos minutos o más. **Asegúrate de que sea seguro realizarlo ahora.**", + "TweakMismatchResolve.Table": "| Nombre del valor | Este dispositivo | En remoto |\n|: --- |: ---- :|: ---- :|\n${rows}\n", + "TweakMismatchResolve.Table.Row": "| ${name} | ${self} | ${remote} |", + "TweakMismatchResolve.Title": "Se detectó una incompatibilidad de configuración", + "TweakMismatchResolve.Title.TweakResolving": "Se detectó una incompatibilidad de configuración", + "TweakMismatchResolve.Title.UseRemoteConfig": "Usar configuración remota", + "Ui.Bucket.Guidance": "Ingrese los detalles requeridos para conectarse a su servicio de almacenamiento de objetos compatible con S3/MinIO/R2.", + "Ui.Common.Signal.Caution": "Precaucion", + "Ui.Common.Signal.Danger": "Peligro", + "Ui.Common.Signal.Notice": "Aviso", + "Ui.Common.Signal.Warning": "Advertencia", + "Ui.ConflictResolver.FileToResolve": "Archivo a resolver", + "Ui.CouchDB.Guidance": "Ingrese la información del servidor CouchDB a continuación.", + "Ui.History.FileToView": "Archivo para ver", + "Ui.P2P.Guidance": "Ingrese la información de sincronización punto a punto a continuación.", + "Ui.RemoteE2EE.AdvancedTitle": "Avanzado", + "Ui.RemoteE2EE.AlgorithmWarning": "Cambiar el algoritmo de cifrado impedirá el acceso a cualquier dato previamente cifrado con un algoritmo diferente.", + "Ui.RemoteE2EE.ButtonCancel": "Cancelar", + "Ui.RemoteE2EE.ButtonProceed": "Continuar", + "Ui.RemoteE2EE.DefaultAlgorithmDesc": "En la mayoría de los casos, debes seguir con el algoritmo predeterminado.", + "Ui.RemoteE2EE.Guidance": "Configure sus ajustes de cifrado de extremo a extremo.", + "Ui.RemoteE2EE.LabelEncrypt": "Cifrado de extremo a extremo", + "Ui.RemoteE2EE.LabelEncryptionAlgorithm": "Algoritmo de cifrado", + "Ui.RemoteE2EE.LabelObfuscateProperties": "Ofuscar propiedades", + "Ui.RemoteE2EE.ManualWarning": "Tenga en cuenta que la frase de contraseña de cifrado de extremo a extremo no se valida hasta que realmente comienza el proceso de sincronización. Esta es una medida de seguridad diseñada para proteger sus datos.", + "Ui.RemoteE2EE.MultiDestinationWarning": "Esta configuración debe ser la misma incluso cuando se conecte a múltiples destinos de sincronización.", + "Ui.RemoteE2EE.ObfuscatePropertiesDesc": "Ofuscar propiedades agrega una capa adicional de seguridad al dificultar la identificación de la estructura y los nombres de sus archivos y carpetas en el servidor remoto.", + "Ui.RemoteE2EE.PassphraseValidationLine1": "Tenga en cuenta que la frase de contraseña de cifrado de extremo a extremo no se valida hasta que realmente comienza el proceso de sincronización.", + "Ui.RemoteE2EE.PassphraseValidationLine2": "Por lo tanto, le pedimos que tenga extrema precaución al configurar la información del servidor manualmente.", + "Ui.RemoteE2EE.PlaceholderPassphrase": "Ingrese su contraseña", + "Ui.RemoteE2EE.StronglyRecommended": "Habilitar el cifrado de extremo a extremo garantiza que sus datos estén cifrados en su dispositivo antes de enviarlos al servidor remoto. Esto significa que incluso si alguien obtiene acceso al servidor, no podrá leer sus datos sin la frase de contraseña.", + "Ui.RemoteE2EE.StronglyRecommendedLine1": "Habilitar el cifrado de extremo a extremo garantiza que sus datos estén cifrados en su dispositivo antes de enviarlos al servidor remoto.", + "Ui.RemoteE2EE.StronglyRecommendedLine2": "Además, tenga en cuenta que si utiliza la sincronización punto a punto, esta configuración se utilizará cuando cambie a otros métodos y se conecte a un servidor remoto en el futuro.", + "Ui.RemoteE2EE.StronglyRecommendedTitle": "Muy recomendado", + "Ui.RemoteE2EE.Title": "Cifrado de extremo a extremo", + "Ui.RemoteE2EE.WarningSameSetting": "Esta configuración debe ser la misma incluso cuando se conecte a múltiples destinos de sincronización.", + "Ui.ScanQRCode.ButtonClose": "Cerrar este diálogo", + "Ui.ScanQRCode.Guidance": "Siga los pasos a continuación para importar la configuración desde su dispositivo existente.", + "Ui.ScanQRCode.Instruction": "Siga los pasos a continuación para importar la configuración desde su dispositivo existente.", + "Ui.ScanQRCode.Step1": "En este dispositivo, mantenga abierta esta bóveda.", + "Ui.ScanQRCode.Step2": "En el dispositivo fuente, abra Obsidian.", + "Ui.ScanQRCode.Step3": "En el dispositivo de origen, desde la paleta de comandos, ejecute el comando \"Mostrar configuración como código QR\".", + "Ui.ScanQRCode.Step4": "En este dispositivo, cambie a la aplicación de la cámara o use un escáner de códigos QR para escanear el código QR que se muestra.", + "Ui.ScanQRCode.Title": "Escanear código QR", + "Ui.Settings.Advanced.LocalDatabaseTweak": "Ajustes de la base de datos local", + "Ui.Settings.Advanced.MemoryCache": "Caché de memoria", + "Ui.Settings.Advanced.TransferTweak": "Ajustes de transferencia", + "Ui.Settings.Common.Analyse": "Analizar", + "Ui.Settings.Common.Back": "Volver", + "Ui.Settings.Common.Check": "Verificar", + "Ui.Settings.Common.Configure": "Configurar", + "Ui.Settings.Common.Delete": "Eliminar", + "Ui.Settings.Common.Lock": "Bloquear", + "Ui.Settings.Common.Open": "Abrir", + "Ui.Settings.Common.Perform": "Ejecutar", + "Ui.Settings.Common.ResetAll": "Restablecer todo", + "Ui.Settings.Common.ResolveAll": "Resolver todo", + "Ui.Settings.Common.Send": "Enviar", + "Ui.Settings.Common.VerifyAll": "Verificar todo", + "Ui.Settings.CustomizationSync.OpenDesc": "Abrir el cuadro de diálogo", + "Ui.Settings.CustomizationSync.Panel": "Sincronización de personalización", + "Ui.Settings.CustomizationSync.WarnChangeDeviceName": "Advertir al cambiar el nombre del dispositivo", + "Ui.Settings.CustomizationSync.WarnSetDeviceName": "Advertir al establecer el nombre del dispositivo", + "Ui.Settings.Hatch.AnalyseDatabaseUsage": "Analizar el uso de la base de datos", + "Ui.Settings.Hatch.AnalyseDatabaseUsageDesc": "Analiza el uso de la base de datos y genera un informe TSV para diagnóstico. Puedes pegar el informe generado en cualquier hoja de cálculo.", + "Ui.Settings.Hatch.BackToNonConfigured": "Volver al estado no configurado", + "Ui.Settings.Hatch.ConvertNonObfuscated": "Comprobar y convertir archivos sin ofuscación de ruta", + "Ui.Settings.Hatch.ConvertNonObfuscatedDesc": "Comprueba en la base de datos local los archivos guardados sin ofuscación de ruta y los convierte cuando sea necesario.", + "Ui.Settings.Hatch.CopyIssueReport": "Copiar el informe al portapapeles", + "Ui.Settings.Hatch.DatabaseLabel": "Base de datos: ${details}", + "Ui.Settings.Hatch.DatabaseToStorage": "Base de datos -> Almacenamiento", + "Ui.Settings.Hatch.DeleteCustomizationSyncData": "Eliminar todos los datos de sincronización de personalización", + "Ui.Settings.Hatch.GeneratedReport": "Informe generado", + "Ui.Settings.Hatch.Missing": "Falta", + "Ui.Settings.Hatch.ModifiedSize": "Tamaño modificado", + "Ui.Settings.Hatch.ModifiedSizeActual": "Tamaño modificado real", + "Ui.Settings.Hatch.PrepareIssueReport": "Preparar el informe para crear una incidencia", + "Ui.Settings.Hatch.RecoveryAndRepair": "Recuperación y reparación", + "Ui.Settings.Hatch.RecreateAll": "Volver a crear todo", + "Ui.Settings.Hatch.RecreateMissingChunks": "Volver a crear los fragmentos faltantes de todos los archivos", + "Ui.Settings.Hatch.RecreateMissingChunksDesc": "Esto volverá a crear los fragmentos de todos los archivos. Si faltaban fragmentos, puede corregir los errores.", + "Ui.Settings.Hatch.ResetPanel": "Restablecer", + "Ui.Settings.Hatch.ResetRemoteUsage": "Restablecer el umbral de notificación y comprobar el uso de la base de datos remota", + "Ui.Settings.Hatch.ResetRemoteUsageDesc": "Restablece el umbral de tamaño del almacenamiento remoto y comprueba de nuevo su tamaño.", + "Ui.Settings.Hatch.ResolveAllConflictedFiles": "Resolver todos los archivos en conflicto usando la versión más reciente", + "Ui.Settings.Hatch.ResolveAllConflictedFilesDesc": "Resuelve todos los archivos en conflicto con la versión más reciente. Atención: esto sobrescribirá la versión anterior y no podrá recuperarla.", + "Ui.Settings.Hatch.RunDoctor": "Ejecutar Doctor", + "Ui.Settings.Hatch.ScanBrokenFiles": "Buscar archivos dañados", + "Ui.Settings.Hatch.ScramSwitches": "Interruptores de emergencia", + "Ui.Settings.Hatch.ShowHistory": "Mostrar historial", + "Ui.Settings.Hatch.StorageLabel": "Almacenamiento: ${details}", + "Ui.Settings.Hatch.StorageToDatabase": "Almacenamiento -> Base de datos", + "Ui.Settings.Hatch.VerifyAndRepairAllFiles": "Verificar y reparar todos los archivos", + "Ui.Settings.Hatch.VerifyAndRepairAllFilesDesc": "Compara el contenido de los archivos entre la base de datos local y el almacenamiento. Si no coinciden, se te preguntará cuál conservar.", + "Ui.Settings.Maintenance.Cleanup": "Realizar limpieza", + "Ui.Settings.Maintenance.CleanupDesc": "Reduce el espacio usado descartando todas las revisiones que no sean la más reciente. Requiere la misma cantidad de espacio libre en el servidor remoto y en el cliente local.", + "Ui.Settings.Maintenance.DeleteLocalDatabase": "Eliminar la base de datos local para restablecer o desinstalar Self-hosted LiveSync", + "Ui.Settings.Maintenance.EmergencyRestart": "Reinicio de emergencia", + "Ui.Settings.Maintenance.EmergencyRestartDesc": "Desactiva toda sincronización y reinicia.", + "Ui.Settings.Maintenance.FreshStartWipe": "Borrado para empezar de nuevo", + "Ui.Settings.Maintenance.FreshStartWipeDesc": "Elimina todos los datos del servidor remoto.", + "Ui.Settings.Maintenance.GarbageCollection": "Recolección de basura V3 (Beta)", + "Ui.Settings.Maintenance.GarbageCollectionAction": "Ejecutar recolección de basura", + "Ui.Settings.Maintenance.GarbageCollectionDesc": "Realiza la recolección de basura para eliminar fragmentos no usados y reducir el tamaño de la base de datos.", + "Ui.Settings.Maintenance.LockServer": "Bloquear servidor", + "Ui.Settings.Maintenance.LockServerDesc": "Bloquea el servidor remoto para evitar la sincronización con otros dispositivos.", + "Ui.Settings.Maintenance.OverwriteRemote": "Sobrescribir remoto", + "Ui.Settings.Maintenance.OverwriteRemoteDesc": "Sobrescribe el remoto con la base de datos local y la frase de contraseña.", + "Ui.Settings.Maintenance.OverwriteServerData": "Sobrescribir los datos del servidor con los archivos de este dispositivo", + "Ui.Settings.Maintenance.OverwriteServerDataDesc": "Reconstruye la base de datos local y remota con los archivos de este dispositivo.", + "Ui.Settings.Maintenance.PurgeAllJournalCounter": "Purgar todos los contadores del diario", + "Ui.Settings.Maintenance.PurgeAllJournalCounterDesc": "Purga todas las cachés de descarga y subida.", + "Ui.Settings.Maintenance.RebuildingOperations": "Operaciones de reconstrucción (solo remoto)", + "Ui.Settings.Maintenance.Resend": "Reenviar", + "Ui.Settings.Maintenance.ResendDesc": "Reenvía todos los fragmentos al remoto.", + "Ui.Settings.Maintenance.Reset": "Restablecer", + "Ui.Settings.Maintenance.ResetAllJournalCounter": "Restablecer todos los contadores del diario", + "Ui.Settings.Maintenance.ResetAllJournalCounterDesc": "Inicializa todo el historial del diario. En la próxima sincronización, todos los elementos se recibirán y enviarán de nuevo.", + "Ui.Settings.Maintenance.ResetJournalReceived": "Restablecer historial de recepción del diario", + "Ui.Settings.Maintenance.ResetJournalReceivedDesc": "Inicializa el historial de recepción del diario. En la próxima sincronización, se volverán a descargar todos los elementos salvo los enviados por este dispositivo.", + "Ui.Settings.Maintenance.ResetJournalSent": "Restablecer historial de envío del diario", + "Ui.Settings.Maintenance.ResetJournalSentDesc": "Inicializa el historial de envío del diario. En la próxima sincronización, se volverán a enviar todos los elementos salvo los recibidos por este dispositivo.", + "Ui.Settings.Maintenance.ResetLocalSyncInfo": "Restablecer información de sincronización", + "Ui.Settings.Maintenance.ResetLocalSyncInfoDesc": "Restaura o reconstruye la base de datos local desde el remoto.", + "Ui.Settings.Maintenance.ResetReceived": "Restablecer recibidos", + "Ui.Settings.Maintenance.ResetSentHistory": "Restablecer historial de enviados", + "Ui.Settings.Maintenance.ResetThisDevice": "Restablecer la sincronización en este dispositivo", + "Ui.Settings.Maintenance.ScheduleAndRestart": "Programar y reiniciar", + "Ui.Settings.Maintenance.Scram": "Emergencia", + "Ui.Settings.Maintenance.SendChunks": "Enviar chunks", + "Ui.Settings.Maintenance.Syncing": "Sincronización", + "Ui.Settings.Maintenance.WarningLockedReadyAction": "Acción de advertencia de bloqueo listo", + "Ui.Settings.Maintenance.WarningLockedReadyText": "Texto de advertencia de bloqueo listo", + "Ui.Settings.Maintenance.WarningLockedResolveAction": "Acción de advertencia para resolver bloqueo", + "Ui.Settings.Maintenance.WarningLockedResolveText": "Texto de advertencia para resolver bloqueo", + "Ui.Settings.Maintenance.WriteRedFlagAndRestart": "Marcar y reiniciar", + "Ui.Settings.Patches.CompatibilityConflict": "Compatibilidad (comportamiento ante conflictos)", + "Ui.Settings.Patches.CompatibilityDatabase": "Compatibilidad (estructura de base de datos)", + "Ui.Settings.Patches.CompatibilityInternalApi": "Compatibilidad (uso de API interna)", + "Ui.Settings.Patches.CompatibilityMetadata": "Compatibilidad (metadatos)", + "Ui.Settings.Patches.CompatibilityRemote": "Compatibilidad (base de datos remota)", + "Ui.Settings.Patches.CompatibilityTrouble": "Compatibilidad (problemas tratados)", + "Ui.Settings.Patches.CurrentAdapter": "Adaptador actual: ${adapter}", + "Ui.Settings.Patches.DatabaseAdapter": "Adaptador de base de datos", + "Ui.Settings.Patches.DatabaseAdapterDesc": "Selecciona el adaptador de base de datos que se usará.", + "Ui.Settings.Patches.EdgeCaseBehaviour": "Tratamiento de casos límite (comportamiento)", + "Ui.Settings.Patches.EdgeCaseDatabase": "Tratamiento de casos límite (base de datos)", + "Ui.Settings.Patches.EdgeCaseProcessing": "Tratamiento de casos límite (procesamiento)", + "Ui.Settings.Patches.IndexedDbWarning": "Advertencia de IndexedDB", + "Ui.Settings.Patches.MigratingToIdb": "Migrando a IDB", + "Ui.Settings.Patches.MigratingToIndexedDb": "Migrando a IndexedDB", + "Ui.Settings.Patches.MigrationIdbCompleted": "Migración a IDB completada", + "Ui.Settings.Patches.MigrationIdbCompletedFollowUp": "Seguimiento de migración a IDB completada", + "Ui.Settings.Patches.MigrationIndexedDbCompleted": "Migración a IndexedDB completada", + "Ui.Settings.Patches.MigrationIndexedDbCompletedFollowUp": "Seguimiento de migración a IndexedDB completada", + "Ui.Settings.Patches.MigrationWarning": "Advertencia de migración", + "Ui.Settings.Patches.OperationToIdb": "Operación a IDB", + "Ui.Settings.Patches.OperationToIndexedDb": "Operación a IndexedDB", + "Ui.Settings.Patches.Remediation": "Corrección", + "Ui.Settings.Patches.RemediationChanged": "Corrección cambiada", + "Ui.Settings.Patches.RemediationNoLimit": "Corrección sin límite", + "Ui.Settings.Patches.RemediationRestarting": "Reiniciando para corregir", + "Ui.Settings.Patches.RemediationRestartLater": "Reiniciar más tarde para corregir", + "Ui.Settings.Patches.RemediationRestartMessage": "Mensaje de reinicio para corrección", + "Ui.Settings.Patches.RemediationRestartNow": "Reiniciar ahora para corregir", + "Ui.Settings.Patches.RemediationSuffixChanged": "Sufijo de corrección cambiado", + "Ui.Settings.Patches.RemediationWithValue": "Valor: ${date} (${timestamp})", + "Ui.Settings.Patches.RemoteDatabaseSunset": "Ajustes de base de datos remota (en retirada)", + "Ui.Settings.Patches.SwitchToIDB": "Cambiar a IDB", + "Ui.Settings.Patches.SwitchToIndexedDb": "Cambiar a IndexedDB", + "Ui.Settings.PowerUsers.ConfigurationEncryption": "Cifrado de configuración", + "Ui.Settings.PowerUsers.ConnectionTweak": "Ajustes de conexión de CouchDB", + "Ui.Settings.PowerUsers.ConnectionTweakDesc": "Descripción de ajustes de conexión", + "Ui.Settings.PowerUsers.Default": "Predeterminado", + "Ui.Settings.PowerUsers.Developer": "Desarrollador", + "Ui.Settings.PowerUsers.EncryptSensitiveConfig": "Cifrar elementos de configuración sensibles", + "Ui.Settings.PowerUsers.PromptPassphraseEveryLaunch": "Solicitar una frase de contraseña en cada inicio", + "Ui.Settings.PowerUsers.UseCustomPassphrase": "Usar una frase de contraseña personalizada", + "Ui.Settings.Remote.Activate": "Activar", + "Ui.Settings.Remote.ActiveSuffix": "Sufijo activo", + "Ui.Settings.Remote.AddConnection": "Agregar conexión", + "Ui.Settings.Remote.AddRemoteDefaultName": "Agregar nombre remoto predeterminado", + "Ui.Settings.Remote.ConfigureAndChangeRemote": "Configurar y cambiar remoto", + "Ui.Settings.Remote.ConfigureE2EE": "Configurar E2EE", + "Ui.Settings.Remote.ConfigureRemote": "Configurar remoto", + "Ui.Settings.Remote.DeleteRemoteConfirm": "¿Eliminar la configuración remota \"${name}\"?", + "Ui.Settings.Remote.DeleteRemoteTitle": "Eliminar remoto", + "Ui.Settings.Remote.DisplayName": "Nombre para mostrar", + "Ui.Settings.Remote.DuplicateRemote": "Duplicar remoto", + "Ui.Settings.Remote.DuplicateRemoteSuffix": "Sufijo de remoto duplicado", + "Ui.Settings.Remote.E2EEConfiguration": "Configuración de E2EE", + "Ui.Settings.Remote.Export": "Exportar", + "Ui.Settings.Remote.FetchRemoteSettings": "Obtener configuración remota", + "Ui.Settings.Remote.ImportConnection": "Importar conexión", + "Ui.Settings.Remote.ImportConnectionPrompt": "Aviso para importar conexión", + "Ui.Settings.Remote.ImportedCouchDb": "CouchDB importado", + "Ui.Settings.Remote.ImportedRemote": "Remoto importado", + "Ui.Settings.Remote.MoreActions": "Más acciones", + "Ui.Settings.Remote.PeerToPeerPanel": "Sincronización punto a punto", + "Ui.Settings.Remote.RemoteConfigurationPrefix": "Prefijo de configuración remota", + "Ui.Settings.Remote.RemoteDatabases": "Bases de datos remotas", + "Ui.Settings.Remote.RemoteName": "Nombre del remoto", + "Ui.Settings.Remote.RemoteNameCouchDb": "Nombre del remoto CouchDB", + "Ui.Settings.Remote.RemoteNameP2P": "Nombre del remoto P2P", + "Ui.Settings.Remote.RemoteNameS3": "Nombre del remoto S3", + "Ui.Settings.Remote.Rename": "Renombrar", + "Ui.Settings.Selector.AddDefaultPatterns": "Añadir patrones predeterminados", + "Ui.Settings.Selector.CrossPlatform": "Multiplataforma", + "Ui.Settings.Selector.Default": "Predeterminado", + "Ui.Settings.Selector.HiddenFiles": "Archivos ocultos", + "Ui.Settings.Selector.IgnorePatterns": "Patrones de ignorados", + "Ui.Settings.Selector.NonSynchronisingFiles": "Archivos no sincronizados", + "Ui.Settings.Selector.NonSynchronisingFilesDesc": "(RegExp) Si se establece, se omitirán los cambios en archivos locales y remotos que coincidan.", + "Ui.Settings.Selector.NormalFiles": "Archivos normales", + "Ui.Settings.Selector.OverwritePatterns": "Patrones de sobrescritura", + "Ui.Settings.Selector.OverwritePatternsDesc": "Patrones para seleccionar archivos que se sobrescribirán en lugar de fusionarse", + "Ui.Settings.Selector.SynchronisingFiles": "Archivos sincronizados", + "Ui.Settings.Selector.SynchronisingFilesDesc": "(RegExp) Vacío para sincronizar todos los archivos. Define un filtro de expresión regular para limitar los archivos sincronizados.", + "Ui.Settings.Selector.TargetPatterns": "Patrones de destino", + "Ui.Settings.Selector.TargetPatternsDesc": "Patrones para seleccionar archivos que se sincronizarán", + "Ui.Settings.Setup.RerunWizardButton": "Botón para volver a ejecutar el asistente", + "Ui.Settings.Setup.RerunWizardDesc": "Vuelve a ejecutar el asistente inicial para configurar Self-hosted LiveSync de nuevo.", + "Ui.Settings.Setup.RerunWizardName": "Volver a ejecutar el asistente inicial", + "Ui.Settings.SyncSettings.Fetch": "Obtener", + "Ui.Settings.SyncSettings.Merge": "Fusionar", + "Ui.Settings.SyncSettings.Overwrite": "Sobrescribir", + "Ui.SetupWizard.Bucket.AccessKeyId": "ID de clave de acceso", + "Ui.SetupWizard.Bucket.BucketName": "Nombre del bucket", + "Ui.SetupWizard.Bucket.EndpointUrl": "URL del endpoint", + "Ui.SetupWizard.Bucket.FolderPrefix": "Folder Prefix", + "Ui.SetupWizard.Bucket.FolderPrefixDesc": "Si quieres almacenar los datos en una carpeta concreta dentro del bucket, especifica aquí un prefijo de carpeta. Si no, déjalo vacío para guardar los datos en la raíz del bucket.", + "Ui.SetupWizard.Bucket.InternalApiDesc": "Si no puedes evitar problemas de CORS, puedes probar esta opción. Usa la API interna de Obsidian para comunicarse con el servidor S3. No cumple los estándares web, pero funciona. Ten en cuenta que puede romperse en futuras versiones de Obsidian.", + "Ui.SetupWizard.Bucket.PlaceholderAccessKeyId": "Introduce tu ID de clave de acceso", + "Ui.SetupWizard.Bucket.PlaceholderBucketName": "Introduce el nombre del bucket", + "Ui.SetupWizard.Bucket.PlaceholderFolderPrefix": "Introduce un prefijo de carpeta (opcional)", + "Ui.SetupWizard.Bucket.PlaceholderRegion": "Introduce la región (por ejemplo, us-east-1, auto para R2)", + "Ui.SetupWizard.Bucket.PlaceholderSecretAccessKey": "Introduce tu clave secreta de acceso", + "Ui.SetupWizard.Bucket.Region": "Región", + "Ui.SetupWizard.Bucket.SecretAccessKey": "Clave secreta de acceso", + "Ui.SetupWizard.Bucket.Title": "Configuración de S3/MinIO/R2", + "Ui.SetupWizard.Bucket.UseInternalApi": "Usar API interna", + "Ui.SetupWizard.Bucket.UsePathStyleAccess": "Usar acceso de estilo ruta", + "Ui.SetupWizard.Common.AdvancedSettings": "Configuración avanzada", + "Ui.SetupWizard.Common.Back": "Volver", + "Ui.SetupWizard.Common.Cancel": "Cancelar", + "Ui.SetupWizard.Common.CheckingConnection": "Comprobando la conexión... espera.", + "Ui.SetupWizard.Common.ContinueAnyway": "Continuar de todos modos", + "Ui.SetupWizard.Common.CustomHeaders": "Cabeceras personalizadas", + "Ui.SetupWizard.Common.ErrorConnectionTest": "Error durante la prueba de conexión: ${error}", + "Ui.SetupWizard.Common.ErrorConnectServer": "No se pudo conectar al servidor. Comprueba la configuración.", + "Ui.SetupWizard.Common.ErrorConnectServerDetail": "No se pudo conectar al servidor: ${error}", + "Ui.SetupWizard.Common.ErrorCreateReplicator": "No se pudo crear la instancia de replicación.", + "Ui.SetupWizard.Common.ExperimentalSettings": "Configuraciones experimentales", + "Ui.SetupWizard.Common.HttpsOnlyMobile": "Solo podemos usar conexiones seguras (HTTPS) en Obsidian Mobile.", + "Ui.SetupWizard.Common.ProceedSelectOption": "Por favor, seleccione una opción", + "Ui.SetupWizard.CouchDB.DatabaseName": "Nombre de la base de datos", + "Ui.SetupWizard.CouchDB.DatabaseNameDesc": "No puedes usar mayúsculas, espacios ni caracteres especiales en el nombre de la base de datos. Tampoco puede comenzar con un guion bajo (_).", + "Ui.SetupWizard.CouchDB.InternalApiDesc": "Si no puedes evitar problemas de CORS, puedes probar esta opción. Usa la API interna de Obsidian para comunicarse con el servidor CouchDB. No cumple los estándares web, pero funciona. Ten en cuenta que puede romperse en futuras versiones de Obsidian.", + "Ui.SetupWizard.CouchDB.JwtAlgorithm": "Algoritmo JWT", + "Ui.SetupWizard.CouchDB.JwtExpirationDuration": "Duración de expiración de JWT (minutos)", + "Ui.SetupWizard.CouchDB.JwtKey": "Clave JWT", + "Ui.SetupWizard.CouchDB.JwtKeyDesc": "Para algoritmos HS256/HS512, proporciona la clave secreta compartida. Para ES256/ES512, proporciona la clave privada en formato pkcs8 PEM.", + "Ui.SetupWizard.CouchDB.JwtKeyId": "ID de clave JWT (kid)", + "Ui.SetupWizard.CouchDB.JwtSubject": "Sujeto JWT (sub)", + "Ui.SetupWizard.CouchDB.JwtWarning": "La autenticación JWT (JSON Web Token) permite autenticarte de forma segura con el servidor CouchDB usando tokens. Asegúrate de que tu servidor CouchDB acepte JWT y de que la clave y los ajustes coincidan con la configuración del servidor. Esta función no se ha verificado exhaustivamente.", + "Ui.SetupWizard.CouchDB.Password": "Contraseña", + "Ui.SetupWizard.CouchDB.PlaceholderDatabaseName": "Introduce el nombre de la base de datos", + "Ui.SetupWizard.CouchDB.PlaceholderJwtKey": "Introduce tu secreto JWT o clave privada", + "Ui.SetupWizard.CouchDB.PlaceholderJwtKeyId": "Introduce el ID de clave JWT", + "Ui.SetupWizard.CouchDB.PlaceholderJwtSubject": "Introduce el sujeto JWT (usuario de CouchDB)", + "Ui.SetupWizard.CouchDB.PlaceholderPassword": "Introduce tu contraseña", + "Ui.SetupWizard.CouchDB.PlaceholderUsername": "Introduce tu nombre de usuario", + "Ui.SetupWizard.CouchDB.Title": "Configuración de CouchDB", + "Ui.SetupWizard.CouchDB.Url": "URL del servidor", + "Ui.SetupWizard.CouchDB.UseInternalApi": "Usar API interna", + "Ui.SetupWizard.CouchDB.UseJwtAuthentication": "Usar autenticación JWT", + "Ui.SetupWizard.CouchDB.Username": "Nombre de usuario", + "Ui.SetupWizard.CouchDBCheck.DetectAndFix": "Detectar y solucionar problemas de CouchDB", + "Ui.SetupWizard.CouchDBCheck.Fix": "Corregir", + "Ui.SetupWizard.E2EE.AlgorithmGuidance": "En la mayoría de los casos deberías mantener el algoritmo predeterminado (${algorithm}). Este ajuste solo es necesario si tienes un Vault existente cifrado con otro formato.", + "Ui.SetupWizard.E2EE.AlgorithmWarning": "Cambiar el algoritmo de cifrado impedirá acceder a datos cifrados previamente con otro algoritmo. Asegúrate de que todos tus dispositivos usen el mismo algoritmo para mantener el acceso a tus datos.", + "Ui.SetupWizard.E2EE.EncryptionAlgorithm": "Algoritmo de cifrado", + "Ui.SetupWizard.Fetch.BackupDone": "He creado una copia de seguridad de mi Bóveda.", + "Ui.SetupWizard.Fetch.BackupQuestion": "¿Ha creado una copia de seguridad antes de continuar?", + "Ui.SetupWizard.Fetch.BackupRecommendation": "Le recomendamos que copie su carpeta bóveda en una ubicación segura. Esto proporcionará una protección en caso de que surja una gran cantidad de conflictos o si sincroniza accidentalmente con un destino incorrecto.", + "Ui.SetupWizard.Fetch.BackupSkipped": "Entiendo los riesgos y procederé sin respaldo.", + "Ui.SetupWizard.Fetch.BackupUnable": "No puedo crear una copia de seguridad de mi Bóveda.", + "Ui.SetupWizard.Fetch.BackupUnableNote": "Si comprende los riesgos y aún desea continuar, selecciónelo.", + "Ui.SetupWizard.Fetch.BackupUnableWarning": "Se recomienda encarecidamente crear una copia de seguridad antes de continuar. Continuar sin una copia de seguridad puede provocar la pérdida de datos.", + "Ui.SetupWizard.Fetch.ConflictNote": "Además, si ya hay conflictos en los datos del servidor, se sincronizarán con este dispositivo tal como están y deberá resolverlos localmente.", + "Ui.SetupWizard.Fetch.Guidance": "Esto reconstruirá la base de datos local en este dispositivo utilizando los datos más recientes del servidor. Esta acción está diseñada para resolver inconsistencias de sincronización y restaurar la funcionalidad correcta.", + "Ui.SetupWizard.Fetch.ImportantBody": "Si tiene cambios no sincronizados en su Bóveda en este dispositivo, es probable que difieran de las versiones del servidor después del reinicio. Esto puede provocar una gran cantidad de conflictos de archivos.", + "Ui.SetupWizard.Fetch.ImportantTitle": "Aviso importante", + "Ui.SetupWizard.Fetch.PreventFetchConfig": "Evitar recuperar la configuración del servidor", + "Ui.SetupWizard.Fetch.Proceed": "Restablecer y reanudar la sincronización", + "Ui.SetupWizard.Fetch.Title": "Restablecer sincronización en este dispositivo", + "Ui.SetupWizard.Fetch.UnbalancedNote": "En este escenario, LiveSync autohospedado recreará metadatos para cada archivo y generará conflictos deliberadamente. Cuando el contenido del archivo sea idéntico, estos conflictos se resolverán automáticamente.", + "Ui.SetupWizard.Fetch.VaultIdentical": "Los archivos de esta Bóveda son casi idénticos a los del servidor.", + "Ui.SetupWizard.Fetch.VaultIdenticalDesc": "(por ejemplo, inmediatamente después de restaurar en otra computadora o de haber recuperado una copia de seguridad)", + "Ui.SetupWizard.Fetch.VaultIndependent": "Esta Bóveda está vacía o contiene solo archivos nuevos que no están en el servidor.", + "Ui.SetupWizard.Fetch.VaultIndependentDesc": "(por ejemplo, configurar por primera vez en un nuevo teléfono inteligente, comenzando desde cero)", + "Ui.SetupWizard.Fetch.VaultQuestion": "Para minimizar la creación de nuevos conflictos, seleccione la opción que mejor describa el estado actual de su Bóveda. Luego, la aplicación verificará sus archivos de la manera más adecuada según su selección.", + "Ui.SetupWizard.Fetch.VaultUnbalanced": "Puede haber diferencias entre los archivos de este bóveda y el servidor.", + "Ui.SetupWizard.Fetch.VaultUnbalancedDesc": "(por ejemplo, después de editar muchos archivos sin conexió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.Log.E2EEConfigurationCancelled": "Configuración E2EE cancelada.", + "Ui.SetupWizard.Log.ManualConfigurationCancelled": "Configuración manual cancelada.", + "Ui.SetupWizard.Log.NoSettingsChanges": "No se detectaron cambios en la configuración. Se omite aplicar la configuración del asistente.", + "Ui.SetupWizard.Log.OnboardingCancelled": "Configuración inicial cancelada por el usuario.", + "Ui.SetupWizard.Log.QrCodeDialogClosed": "Diálogo de código QR cerrado.", + "Ui.SetupWizard.Log.QrCodeResult": "Resultado del código QR: ${result}", + "Ui.SetupWizard.Log.SettingApplied": "Configuración aplicada", + "Ui.SetupWizard.Log.SettingsApplied": "Configuración del asistente aplicada.", + "Ui.SetupWizard.Log.SetupUriDialogCancelled": "Diálogo de Setup URI cancelado.", + "Ui.SetupWizard.Log.SetupUriDialogClosed": "Diálogo de Setup URI cerrado.", + "Ui.SetupWizard.Log.UserCancelledApplyingSettings": "El usuario canceló la aplicación de la configuración del asistente.", + "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.P2P.AutoBroadcast": "Difundir cambios automáticamente", + "Ui.SetupWizard.P2P.AutoBroadcastDesc": "Si se activa la difusión automática, los cambios se enviarán automáticamente a los pares conectados sin intervención manual. Esto pide a los pares que obtengan los cambios de este dispositivo.", + "Ui.SetupWizard.P2P.AutoStart": "Iniciar conexión P2P automáticamente", + "Ui.SetupWizard.P2P.AutoStartDesc": "Si se activa el inicio automático de P2P, la conexión P2P se iniciará automáticamente al arrancar el complemento.", + "Ui.SetupWizard.P2P.DevicePeerId": "ID de par del dispositivo", + "Ui.SetupWizard.P2P.Enabled": "Activado", + "Ui.SetupWizard.P2P.ErrorConnectPeers": "No se pudo conectar con otros pares: ${error}", + "Ui.SetupWizard.P2P.GenerateRandomId": "Generar ID aleatorio", + "Ui.SetupWizard.P2P.GroupId": "ID de grupo", + "Ui.SetupWizard.P2P.GroupPassphraseDesc": "El ID de grupo y la frase de contraseña se usan para identificar tu grupo de dispositivos. Usa el mismo ID de grupo y la misma frase en todos los dispositivos que quieras sincronizar. El ID de grupo no está limitado al formato generado; puedes usar cualquier cadena.", + "Ui.SetupWizard.P2P.NoPeersFound": "La configuración parece correcta, pero no se encontraron otros pares.", + "Ui.SetupWizard.P2P.PlaceholderRelayUrl": "Introduce la URL del relé", + "Ui.SetupWizard.P2P.PlaceholderTurnCredential": "Introduce la credencial TURN", + "Ui.SetupWizard.P2P.PlaceholderTurnUsername": "Introduce el usuario TURN", + "Ui.SetupWizard.P2P.PublicTurnWarning": "Usar servidores TURN públicos puede tener implicaciones de privacidad, ya que tus datos se retransmiten a través de servidores de terceros. Aunque los datos estén cifrados, tu existencia puede ser visible para ellos. Asegúrate de confiar en el proveedor TURN y en tu administrador de red antes de usarlos. Si es posible, considera configurar tu propio servidor TURN para tu FQDN.", + "Ui.SetupWizard.P2P.RelayUrl": "URL del relé", + "Ui.SetupWizard.P2P.Title": "Configuración de P2P", + "Ui.SetupWizard.P2P.TurnCredential": "Credencial TURN", + "Ui.SetupWizard.P2P.TurnServerDesc": "La configuración de servidores TURN solo es necesaria si estás detrás de una NAT estricta o un firewall que impide conexiones P2P directas. En la mayoría de los casos puedes dejar estos campos vacíos.", + "Ui.SetupWizard.P2P.TurnServerUrls": "URLs de servidores TURN (separadas por comas)", + "Ui.SetupWizard.P2P.TurnUsername": "Usuario TURN", + "Ui.SetupWizard.P2P.UseDefaultRelay": "Utilice el relé de vrtmrz", + "Ui.SetupWizard.Rebuild.BackupBeforeProceeding": "Por supuesto, podemos hacer una copia de seguridad de los datos antes de continuar.", + "Ui.SetupWizard.Rebuild.BackupDone": "He creado una copia de seguridad de mi Bóveda.", + "Ui.SetupWizard.Rebuild.BackupQuestion": "¿Ha creado una copia de seguridad antes de continuar?", + "Ui.SetupWizard.Rebuild.BackupSkipped": "Entiendo los riesgos y procederé sin respaldo.", + "Ui.SetupWizard.Rebuild.BackupUnable": "No puedo crear una copia de seguridad de mis bóvedas.", + "Ui.SetupWizard.Rebuild.BackupUnableAdvice": "Debe crear un nuevo destino de sincronización y reconstruir sus datos allí. Después de eso, sincronice una bóveda completamente nueva en cada dispositivo con el nuevo remoto, uno por uno.", + "Ui.SetupWizard.Rebuild.BackupWarning": "Esta es una operación extremadamente potente. Le recomendamos encarecidamente que copie su carpeta de la bóveda en una ubicación segura.", + "Ui.SetupWizard.Rebuild.ConfirmDataLoss": "Entiendo que todos los cambios realizados en otros smartphones o computadoras podrían perderse.", + "Ui.SetupWizard.Rebuild.ConfirmIrreversible": "Entiendo que esta acción es irreversible una vez realizada.", + "Ui.SetupWizard.Rebuild.ConfirmSyncDisabled": "Entiendo que los otros dispositivos ya no podrán sincronizarse y que será necesario restablecer la información de sincronización.", + "Ui.SetupWizard.Rebuild.ConfirmTitle": "Confirme lo siguiente", + "Ui.SetupWizard.Rebuild.Guidance": "Este procedimiento primero eliminará todos los datos de sincronización existentes del servidor. Después, los datos del servidor se reconstruirán por completo usando el estado actual de su bóveda en este dispositivo como única copia maestra autorizada.", + "Ui.SetupWizard.Rebuild.PreventFetchConfig": "Evitar recuperar la configuración del servidor", + "Ui.SetupWizard.Rebuild.Proceed": "Entiendo, sobrescribir el servidor", + "Ui.SetupWizard.Rebuild.ResetNotifyOtherDevices": "al restablecer el remoto, se le informará en los otros dispositivos.", + "Ui.SetupWizard.Rebuild.ResolveOnOtherDevices": "Hay una forma de resolver esto en otros dispositivos.", + "Ui.SetupWizard.Rebuild.Title": "Confirmación final: sobrescribir los datos del servidor con los archivos de este dispositivo", + "Ui.SetupWizard.Rebuild.WhenToUse": "Solo debe realizar esta operación en circunstancias excepcionales, como cuando los datos del servidor estén completamente dañados, cuando ya no se necesiten los cambios de todos los demás dispositivos o cuando el tamaño de la base de datos se haya vuelto inusualmente grande en comparación con el tamaño de la bóveda.", + "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", + "Ui.UseSetupURI.ButtonCancel": "Cancelar", + "Ui.UseSetupURI.ButtonProceed": "Probar configuración y continuar", + "Ui.UseSetupURI.ErrorFailedToParse": "No se pudo analizar el Setup-URI.", + "Ui.UseSetupURI.ErrorPassphraseRequired": "La frase de contraseña es obligatoria.", + "Ui.UseSetupURI.Guidance": "Ingrese el Setup-URI generado durante la instalación del servidor o en otro dispositivo, junto con la frase de contraseña de la bóveda.", + "Ui.UseSetupURI.InvalidInfo": "El Setup-URI no parece válido. Verifique que lo haya copiado correctamente.", + "Ui.UseSetupURI.Label": "Setup-URI", + "Ui.UseSetupURI.LabelPassphrase": "Frase de contraseña", + "Ui.UseSetupURI.PlaceholderPassphrase": "Ingrese su contraseña", + "Ui.UseSetupURI.Title": "Ingresar Setup-URI", + "Ui.UseSetupURI.ValidMessage": "El Setup-URI es válido y está listo para usarse.", "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 a custom passphrase": "Usar una frase de contraseña personalizada", "Use a Setup URI (Recommended)": "Usar un URI de configuración (recomendado)", "Use Custom HTTP Handler": "Usar manejador HTTP personalizado", "Use dynamic iteration count": "Usar conteo de iteraciones dinámico", + "Use Only Local Chunks": "Usar solo chunks locales", + "Use Request API to avoid `inevitable` CORS problem": "Usar la API Request para evitar el problema CORS `inevitable`", "Use Segmented-splitter": "Usar divisor segmentado", "Use splitting-limit-capped chunk splitter": "Usar divisor de chunks con límite", "Use the trash bin": "Usar papelera", "Use timeouts instead of heartbeats": "Usar timeouts en lugar de latidos", "username": "nombre de usuario", "Username": "Usuario", + "V1: Legacy": "V1: Legado", + "V2: Simple (Default)": "V2: Simple (predeterminado)", + "V2.5: Lexical chunks": "V2.5: Chunks lexicos", + "V3: Fine deduplication": "V3: Deduplicacion fina", "Verbose Log": "Registro detallado", "Verify all": "Verificar todo", "Verify and repair all files": "Verificar y reparar todos los archivos", @@ -677,11 +1318,14 @@ "We will now proceed with the server configuration.": "Ahora continuaremos con la configuración del servidor。", "Welcome to Self-hosted LiveSync": "Bienvenido a Self-hosted LiveSync", "When you save a file in the editor, start a sync automatically": "Iniciar sincronización automática al guardar en editor", + "While enabled, it causes very performance impact but debugging replication testing and other features will be enabled. Please disable this if you have not read the source code. Requires restart of Obsidian.": "Mientras esté activado, afectará mucho al rendimiento, pero habilitará la depuración, las pruebas de replicación y otras funciones. Desactívalo si no has leído el código fuente. Requiere reiniciar Obsidian.", "Write credentials in the file": "Escribir credenciales en archivo", "Write logs into the file": "Escribir logs en archivo", "xxhash32 (Fast but less collision resistance)": "xxhash32 (rápido, pero con menor resistencia a colisiones)", "xxhash64 (Fastest)": "xxhash64 (el más rápido)", + "xxhash64 is the current default.": "El valor predeterminado actual es xxhash64.", "Yes, I want to add this device to my existing synchronisation": "Sí, quiero añadir este dispositivo a mi sincronización existente", "Yes, I want to set up a new synchronisation": "Sí, quiero configurar una nueva sincronización", - "You are adding this device to an existing synchronisation setup.": "Está añadiendo este dispositivo a una configuración de sincronización existente。" + "You are adding this device to an existing synchronisation setup.": "Está añadiendo este dispositivo a una configuración de sincronización existente。", + "You can enable this setting to process the files with size mismatches, these files can be created by some APIs or integrations.": "Puedes activar esta opción para procesar archivos con tamaños no coincidentes; estos archivos pueden ser creados por algunas API o integraciones." } diff --git a/src/common/messagesJson/ja.json b/src/common/messagesJson/ja.json index d2aff276..f87d8d9d 100644 --- a/src/common/messagesJson/ja.json +++ b/src/common/messagesJson/ja.json @@ -16,15 +16,21 @@ "A Setup URI is a single string of text containing your server address and authentication details. Using a URI, if one was generated by your server installation script, provides a simple and secure configuration.": "Setup URI は、サーバーアドレスと認証情報を含む 1 本の文字列です。サーバーのインストールスクリプトで生成された URI がある場合は、それを使うと簡単かつ安全に設定できます。", "Access Key": "アクセスキー", "Activate": "有効化", + "Active Remote Configuration": "有効なリモート設定", + "Active Remote Type": "有効なリモートタイプ", "Add default patterns": "デフォルトパターンを追加", "Add new connection": "接続を追加", + "Advanced": "詳細設定", "All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.": "すべてのデバイスで進捗値が同じです(${progress})。デバイスは同期されているようなので、Garbage Collection を続行できます。", "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.": "データベース使用状況を分析し、自分で診断できるよう TSV レポートを生成します。生成したレポートは任意のスプレッドシートに貼り付けて確認できます。", "Apply Latest Change if Conflicting": "競合がある場合は最新の変更を適用する", "Apply preset configuration": "プリセットを適用する", "Ask a passphrase at every launch": "起動のたびにパスフレーズを確認", + "Automatically broadcast changes to connected peers": "接続済みピアへ変更を自動ブロードキャスト", + "Automatically start P2P connection on launch": "起動時に P2P 接続を自動開始", "Automatically Sync all files when opening Obsidian.": "Obsidian起動時にすべてのファイルを自動同期します。", "Back": "戻る", "Back to non-configured": "未設定状態に戻す", @@ -36,8 +42,10 @@ "Bucket Name": "バケット名", "Cancel": "キャンセル", "Cancel Garbage Collection": "Garbage Collection をキャンセル", + "Check": "確認", "Check and convert non-path-obfuscated files": "パス難読化されていないファイルを確認して変換", "Check for documents that have not been converted to path-obfuscated IDs and convert them if necessary.": "まだパス難読化 ID に変換されていないドキュメントを確認し、必要に応じて変換します。", + "Chunk Splitter": "チャンク分割器", "cmdConfigSync.showCustomizationSync": "カスタマイズ同期を表示", "Comma separated `.gitignore, .dockerignore`": "カンマ区切り `.gitignore, .dockerignore`", "Compaction in progress on remote database...": "リモートデータベースでコンパクションを実行中です...", @@ -67,6 +75,7 @@ "CouchDB Connection Tweak": "CouchDB 接続の調整", "Cross-platform": "クロスプラットフォーム", "Current adapter: {adapter}": "現在のアダプター: {adapter}", + "Customization sync": "カスタマイズ同期", "Customization Sync": "カスタマイズ同期", "Customization Sync (Beta3)": "カスタマイズ同期 (Beta3)", "Data Compression": "データ圧縮", @@ -88,8 +97,8 @@ "Device": "デバイス", "Device name": "デバイス名", "Device Setup Method": "端末の設定方法", - "dialog.yourLanguageAvailable": "Self-hosted LiveSync に設定されている言語の翻訳がありましたので、%{Display Language}が適用されました。\n\n注意: 全てのメッセージは翻訳されていません。あなたの貢献をお待ちしています!\nGithubにIssueを作成する際には、 %{Display Language} を一旦 %{lang-def} に戻してから、スクショやメッセージ、ログを収集してください。これは設定から変更できます。\n\n便利に使用できれば幸いです。", - "dialog.yourLanguageAvailable.btnRevertToDefault": "Keep %{lang-def}", + "dialog.yourLanguageAvailable": "Self-hosted LiveSync にはあなたの言語の翻訳があるため、%{Display language} 設定を有効にしました。\n\n注意: すべてのメッセージが翻訳されているわけではありません。翻訳へのご協力をお待ちしています!\n注意 2: Issue を作成する場合は、**%{lang-def} に戻してから**スクリーンショット、メッセージ、ログを取得してください。これは設定ダイアログで変更できます。\n使いやすく感じていただければ幸いです!", + "dialog.yourLanguageAvailable.btnRevertToDefault": "%{lang-def}を維持", "dialog.yourLanguageAvailable.Title": "翻訳が利用可能です!", "Disables all synchronization and restart.": "すべての同期を無効にして再起動します。", "Disables logging, only shows notifications. Please disable if you report an issue.": "ログを無効にし、通知のみを表示します。Issueを報告する場合は無効にしてください。", @@ -119,22 +128,30 @@ "Doctor.Message.RebuildRequired": "注意!これを適用するには再構築が必要です!", "Doctor.Message.SomeSkipped": "いくつかの問題をそのままにしました。次回起動時に再度確認しますか?", "Doctor.RULES.E2EE_V02500.REASON": "エンドツーエンド暗号化がより堅牢で高速になりました。また、以前のE2EEは再コードレビューにより脆弱性が発見されました。できるだけ早く適用することをお勧めします。ご不便をおかけして申し訳ありません。また、この設定は下位互換性がありません。すべての同期デバイスをv0.25.0以降にアップデートする必要があります。再構築は必須ではなく、新しい転送から新しいフォーマットに変換されますが、可能な限り再構築をお勧めします。", + "Document History": "ドキュメント履歴", "Duplicate": "複製", "Duplicate remote": "リモート設定を複製", "E2EE Configuration": "E2EE 設定", "Edge case addressing (Behaviour)": "特殊なケースへの対応(動作)", "Edge case addressing (Database)": "特殊なケースへの対応(データベース)", "Edge case addressing (Processing)": "特殊なケースへの対応(処理)", + "Effectively a directory. Should end with `/`. e.g., `vault-name/`.": "実質的にはディレクトリです。`/` で終わる必要があります。例: `vault-name/`。", "Emergency restart": "緊急再起動", "Enable advanced features": "高度な機能を有効にする", + "Enable advanced mode": "詳細モードを有効化", "Enable customization sync": "カスタマイズ同期を有効", "Enable Developers' Debug Tools.": "開発者用デバッグツールを有効にする", "Enable edge case treatment features": "エッジケース対応機能を有効にする", + "Enable forcePathStyle": "forcePathStyle を有効化", + "Enable P2P Synchronization": "P2P 同期を有効化", + "Enable per-file customization sync": "ファイル単位のカスタマイズ同期を有効化", + "Enable power user mode": "パワーユーザーモードを有効化", "Enable poweruser features": "エキスパート機能を有効にする", "Enable this if your Object Storage doesn't support CORS": "オブジェクトストレージがCORSをサポートしていない場合は有効にしてください", "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.": "リモートデータベースの暗号化(オンにすることを推奨)", "Encrypting sensitive configuration items": "機密性の高い設定項目の暗号化", + "Encryption passphrase. 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.": "暗号化パスフレーズ。変更した場合、新しい(暗号化された)ファイルでサーバーのデータベースを上書きする必要があります。", "End-to-End Encryption": "E2E暗号化", "Endpoint URL": "エンドポイントURL", @@ -150,8 +167,10 @@ "Fetch chunks on demand": "ユーザーのタイミングでチャンクの更新を確認する", "Fetch database with previous behaviour": "以前の動作でデータベースを取得", "Fetch remote settings": "リモート設定を取得", + "File prefix on the bucket": "バケット内のファイルプレフィックス", "File to resolve conflict": "競合を解決するファイル", "Filename": "ファイル名", + "Files with modification times greater than this value (in seconds since the Unix epoch) will not have their events reflected. Set to 0 to disable this limit.": "この値(Unix エポックからの秒数)より大きい更新時刻のファイルイベントは反映されません。0 に設定するとこの制限を無効にします。", "First, please select the option that best describes your current situation.": "まず、現在の状況に最も近い項目を選択してください。", "Flag and restart": "フラグを立てて再起動", "Forces the file to be synced when opened.": "ファイルを開いたときに強制的に同期します。", @@ -164,19 +183,29 @@ "Garbage Collection: Scanned ${scanned} / ~${docCount}": "Garbage Collection: ${scanned} / ~${docCount} をスキャン済み", "Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": "Garbage Collection: スキャン完了。総チャンク数: ${totalChunks}、使用中チャンク数: ${usedChunks}", "Handle files as Case-Sensitive": "ファイルの大文字・小文字を区別する", + "Hatch": "ツール", "Hidden Files": "隠しファイル", - "How to display network errors when the sync server is unreachable.": "同期サーバーに到達できない場合のネットワークエラーの表示方法を設定します。", + "Hide completely": "完全に非表示", + "Highlight diff": "差分を強調表示", + "How to display network errors when the sync server is unreachable.": "同期サーバーに到達できないときのネットワークエラーの表示方法。", "How would you like to configure the connection to your server?": "サーバー接続をどのように設定しますか?", "I am adding a device to an existing synchronisation setup": "既存の同期構成に端末を追加します", "I am setting this up for the first time": "はじめて設定します", "I know my server details, let me enter them": "サーバー情報を把握しているので、自分で入力します", "If disabled(toggled), chunks will be split on the UI thread (Previous behaviour).": "無効(トグル)にすると、チャンクはUIスレッドで分割されます(以前の動作)。", "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, changes will be automatically broadcasted to all connected peers. Notified peers will start fetching the changes.": "有効にすると、変更は接続済みのすべてのピアへ自動的にブロードキャストされます。通知されたピアは変更の取得を開始します。", "If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker.": "有効にすると、チャンクは最大100項目に分割されます。ただし、重複除去の精度は落ちます。", + "If enabled, efficient per-file customization sync will be used. A minor migration is required when enabling this feature, and all devices must be updated to v0.23.18. Enabling this feature will result in losing compatibility with older versions.": "有効にすると、効率的なファイル単位のカスタマイズ同期を使用します。この機能を有効にする際は小さな移行が必要で、すべてのデバイスを v0.23.18 に更新する必要があります。有効にすると古いバージョンとの互換性は失われます。", "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 forcePathStyle option will be used for bucket operations.": "有効にすると、バケット操作で forcePathStyle オプションを使用します。", "If enabled, the notification of hidden files change will be suppressed.": "有効にすると、隠しファイルの変更通知が抑制されます。", + "If enabled, the P2P connection will be automatically started when the application launches.": "有効にすると、アプリケーション起動時に P2P 接続を自動的に開始します。", + "If enabled, the plugin will not attempt to connect to the remote database even if the chunk was not found locally.": "有効にすると、チャンクがローカルに見つからない場合でも、プラグインはリモートデータベースへの接続を試みません。", + "If enabled, the request API will be used to avoid `inevitable` CORS problems. This is a workaround and may not work in all cases. PLEASE READ THE DOCUMENTATION BEFORE USING THIS OPTION. This is a less-secure option.": "有効にすると、避けられない CORS 問題を回避するために request API を使用します。これは回避策であり、すべてのケースで動作するとは限りません。このオプションを使用する前に必ずドキュメントを読んでください。安全性は低くなります。", + "If this enabled, all chunks will be stored with the revision made from its content.": "有効にすると、すべてのチャンクは内容から生成されたリビジョンとともに保存されます。", "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).": "有効にすると、すべてのファイルは大文字小文字を区別して処理されます(以前の動作)。", "If this enabled, chunks will be split into semantically meaningful segments. Not all platforms support this feature.": "有効にすると、チャンクは意味的に有意なセグメントに分割されます。すべてのプラットフォームがこの機能をサポートしているわけではありません。", @@ -190,15 +219,15 @@ "Initialise all journal history, On the next sync, every item will be received and sent.": "すべてのジャーナル履歴を初期化します。次回の同期時に、すべての項目が再受信・再送信されます。", "Interval (sec)": "秒", "K.exp": "試験機能", - "K.long_p2p_sync": "%{title_p2p_sync} (%{exp})", - "K.P2P": "%{Peer}-to-%{Peer}", - "K.Peer": "Peer", - "K.ScanCustomization": "Scan customization", - "K.short_p2p_sync": "P2P Sync (%{exp})", - "K.title_p2p_sync": "Peer-to-Peer Sync", + "K.long_p2p_sync": "%{title_p2p_sync}", + "K.P2P": "%{Peer}対%{Peer}", + "K.Peer": "ピア", + "K.ScanCustomization": "カスタマイズ同期をスキャン", + "K.short_p2p_sync": "P2P Sync", + "K.title_p2p_sync": "P2P同期", "Keep empty folder": "空フォルダの維持", - "lang_def": "Default", - "lang-de": "Deutsche", + "lang_def": "デフォルト", + "lang-de": "Deutsch", "lang-def": "%{lang_def}", "lang-es": "Español", "lang-fr": "Français", @@ -244,11 +273,15 @@ "logPane.pause": "一時停止", "logPane.title": "Self-hosted LiveSync ログ", "logPane.wrap": "折り返し", + "Maintenance": "メンテナンス", "Maximum delay for batch database updating": "バッチデータベース更新の最大遅延", + "Maximum file modification time for reflected file events": "反映するファイルイベントの最大更新時刻", "Maximum file size": "最大ファイル容量", "Maximum Incubating Chunk Size": "保持するチャンクの最大サイズ", "Maximum Incubating Chunks": "一時保管する最大チャンク数", "Maximum Incubation Period": "最大保持期限", + "Maximum size of chunks to send in one request": "1 回のリクエストで送信するチャンクの最大サイズ", + "MB": "MB", "MB (0 to disable).": "MB (0で無効化)。", "Memory cache": "メモリキャッシュ", "Memory cache size (by total characters)": "全体でキャッシュする文字数", @@ -336,7 +369,7 @@ "moduleObsidianMenu.replicate": "レプリケート", "More actions": "その他の操作", "Move remotely deleted files to the trash, instead of deleting.": "リモートで削除されたファイルを削除せずにゴミ箱に移動する。", - "Network warning style": "ネットワーク警告の表示方式", + "Network warning style": "ネットワーク警告の表示形式", "New Remote": "新しいリモート", "No connected device information found. Cancelling Garbage Collection.": "接続済みデバイスの情報が見つかりませんでした。Garbage Collection をキャンセルします。", "No limit configured": "制限は設定されていません", @@ -350,6 +383,7 @@ "Notify customized": "カスタマイズが行われたら通知する", "Notify when other device has newly customized.": "別の端末がカスタマイズを行なったら通知する", "Notify when the estimated remote storage size exceeds on start up": "起動時に予想リモートストレージサイズを超えたら通知", + "Now we can choose how to split the chunks; V3 is the most efficient. If you have troubled, please make this Default or Legacy.": "チャンクの分割方法を選択できます。V3 が最も効率的です。問題がある場合は Default または Legacy にしてください。", "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.": "1度に処理するバッチの数。デフォルトは40、最小は2。この数値は、どれだけの容量の書類がメモリに保存されるかも定義します。", "Number of changes to sync at a time. Defaults to 50. Minimum is 2.": "一度に同期する変更の数。デフォルトは50、最小は2。", "Obsidian version": "Obsidian バージョン", @@ -416,6 +450,7 @@ "obsidianLiveSyncSettingTab.logPassphraseNotCompatible": "エラー: パスフレーズがリモートサーバーと適合しません!再度確認してください!", "obsidianLiveSyncSettingTab.logRebuildNote": "同期が無効になりました。必要に応じてフェッチして再有効化してください。", "obsidianLiveSyncSettingTab.logSelectAnyPreset": "プリセットを選択してください。", + "obsidianLiveSyncSettingTab.logServerConfigurationCheck": "サーバー設定チェックを記録", "obsidianLiveSyncSettingTab.msgAreYouSureProceed": "本当に続行しますか?", "obsidianLiveSyncSettingTab.msgChangesNeedToBeApplied": "変更を適用する必要があります!", "obsidianLiveSyncSettingTab.msgConfigCheck": "--設定確認--", @@ -475,12 +510,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.optionMinioS3R2": "MinIO、S3、R2", "obsidianLiveSyncSettingTab.optionOkReadEverything": "OK、すべて読みました。", "obsidianLiveSyncSettingTab.optionOnEvents": "イベント時", "obsidianLiveSyncSettingTab.optionPeriodicAndEvents": "定期およびイベント時", @@ -573,6 +608,7 @@ "Perform Garbage Collection to remove unused chunks and reduce database size.": "未使用のチャンクを削除し、データベースサイズを削減するためにガーベジコレクションを実行します。", "Periodic Sync interval": "定時同期の感覚", "Pick a file to resolve conflict": "競合を解決するファイルを選択", + "Pick a file to show history": "履歴を表示するファイルを選択", "Please disable 'Read chunks online' in settings to use Garbage Collection.": "Garbage Collection を使うには、設定で「Read chunks online」を無効にしてください。", "Please enable 'Compute revisions for chunks' in settings to use Garbage Collection.": "Garbage Collection を使うには、設定で「Compute revisions for chunks」を有効にしてください。", "Please select 'Cancel' explicitly to cancel this operation.": "この操作を中止するには、明示的に「キャンセル」を選択してください。", @@ -588,8 +624,10 @@ "Proceed with Setup URI": "Setup URI で続行", "Proceeding with Garbage Collection, ignoring missing nodes.": "不足しているノードを無視して Garbage Collection を続行します。", "Proceeding with Garbage Collection.": "Garbage Collection を実行します。", + "Process files even if seems to be corrupted": "破損しているように見えるファイルも処理", "Process small files in the foreground": "小さいファイルを最前面で処理", "Progress": "進捗", + "Property Encryption": "プロパティ暗号化", "PureJS fallback (Fast, W/O WebAssembly)": "PureJS フォールバック (高速、WebAssembly なし)", "Purge all download/upload cache.": "ダウンロード/アップロードキャッシュをすべて削除します。", "Purge all journal counter": "すべてのジャーナルカウンターを削除", @@ -602,10 +640,25 @@ "RedFlag.Fetch.Method.FetchSmoother": "フェッチ前にローカルファイルチャンクを作成", "RedFlag.Fetch.Method.FetchTraditional": "リモートからすべてをフェッチ", "RedFlag.Fetch.Method.Title": "どのようにフェッチしますか?", + "RedFlag.FetchRemoteConfig.Applied": "Remote configuration applied.", "RedFlag.FetchRemoteConfig.Buttons.Cancel": "いいえ、ローカル設定を使用", "RedFlag.FetchRemoteConfig.Buttons.Fetch": "はい、リモート設定を取得して適用", + "RedFlag.FetchRemoteConfig.Buttons.Retry": "Retry (recommended)", + "RedFlag.FetchRemoteConfig.Buttons.SkipAndProceed": "Skip and proceed", + "RedFlag.FetchRemoteConfig.FailedMessage": "Could not fetch configuration from remote. If you are new to the Self-hosted LiveSync, this might be expected. If not, you should check your network or server settings.", + "RedFlag.FetchRemoteConfig.FailedTitle": "Fetch Remote Configuration Failed", + "RedFlag.FetchRemoteConfig.MatchesLocal": "Remote configuration matches local configuration. No changes applied.", "RedFlag.FetchRemoteConfig.Message": "リモートに保存された設定を取得して、このデバイスに適用しますか?", + "RedFlag.FetchRemoteConfig.NotApplied": "Remote configuration not applied.", + "RedFlag.FetchRemoteConfig.SettingsDiffered": "Your settings differed slightly from the server's. The plug-in has supplemented the incompatible parts with the server settings!", "RedFlag.FetchRemoteConfig.Title": "リモート設定の取得", + "RedFlag.Log.FetchEverythingCancelled": "Fetch everything cancelled by user.", + "RedFlag.Log.FetchEverythingCompleted": "Fetch everything operation completed. Vault files will be gradually synced.", + "RedFlag.Log.RebuildEverythingCancelled": "Rebuild everything cancelled by user.", + "RedFlag.Log.RebuildEverythingCompleted": "Rebuild everything operation completed.", + "RedFlag.Log.VaultInitialisationError": "Error during vault initialisation.", + "RedFlag.Log.VaultInitialisationProcessError": "Error during vault initialisation process.", + "RedFlag.ResumeProcessingPrompt": "Do you want to resume file and database processing, and restart obsidian now?", "Reduces storage space by discarding all non-latest revisions. This requires the same amount of free space on the remote server and the local client.": "最新版以外のすべてのリビジョンを破棄して、使用容量を削減します。実行には、リモートサーバーとローカルクライアントの両方に同程度の空き容量が必要です。", "Reducing the frequency with which on-disk changes are reflected into the DB": "ローカルでの変更がデータベースに反映される頻度を下げる(所定の回数まとめて同期する、逐一反映しない)", "Region": "リージョン", @@ -648,7 +701,7 @@ "Reset Synchronisation on This Device": "このデバイスの同期状態をリセット", "Reset the remote storage size threshold and check the remote storage size again.": "リモートストレージ容量のしきい値をリセットし、リモートストレージ容量を再確認します。", "Resolve All": "すべて解決", - "Resolve all conflicted files": "競合しているすべてのファイルを解決", + "Resolve all conflicted files": "すべての競合ファイルを解決", "Resolve All conflicted files by the newer one": "競合したすべてのファイルを新しい方で解決", "Resolve all conflicted files by the newer one. Caution: This will overwrite the older one, and cannot resurrect the overwritten one.": "競合しているすべてのファイルを新しい方の内容で解決します。注意:古い方は上書きされ、復元できません。", "Restart Now": "今すぐ再起動", @@ -674,6 +727,7 @@ "Seconds. Saving to the local database will be delayed until this value after we stop typing or saving.": "秒。入力や保存を停止してからこの値の間、ローカルデータベースへの保存が遅延されます。", "Secret Key": "シークレットキー", "Select the database adapter to use.": "使用するデータベースアダプターを選択します。", + "Selector": "セレクター", "Send": "送信", "Send chunks": "チャンクを送信", "Server URI": "URI", @@ -694,15 +748,25 @@ "Setup.Apply.Message": "新しい設定の準備ができました。適用に進みましょう。\n適用方法はいくつかあります:\n\n- 適用してフェッチ\n このデバイスを新しいクライアントとして設定します。適用後、リモートサーバーから同期します。\n- 適用してマージ\n 既にファイルがあるデバイスで設定します。ローカルファイルを処理し、差分を転送します。競合が発生する場合があります。\n- 適用して再構築\n ローカルファイルを使用してリモートを再構築します。これは通常、サーバーが破損した場合や最初からやり直したい場合に行います。\n 他のデバイスはロックされ、再フェッチが必要になります。\n- 適用のみ\n 適用のみを行います。再構築が必要な場合、競合が発生する可能性があります。", "Setup.Apply.Title": "${method}からの新しい設定を適用", "Setup.Apply.WarningRebuildRecommended": "注意: 設定の調整後、再構築が必要と判断されました。インポートのみは推奨されません。", + "Setup.Command.CopySetupUri": "Copy settings as a new setup URI", + "Setup.Command.CopySetupUriFull": "Copy settings as a new setup URI (Full)", + "Setup.Command.CopySetupUriWithSync": "Copy settings as a new setup URI (With customization sync)", + "Setup.Command.OpenSetupUri": "Use the copied setup URI (Formerly Open setup URI)", + "Setup.Command.ShowSettingsQrCode": "Show settings as a QR code", "Setup.Doctor.Buttons.No": "いいえ、URIの設定をそのまま使用", "Setup.Doctor.Buttons.Yes": "はい、診断ツールに相談する", "Setup.Doctor.Message": "Self-hosted LiveSyncは徐々に歴史が長くなり、一部の推奨設定が変更されています。\n\nセットアップは、これを行う非常に良い機会です。\n\nインポートされた設定が最新の状態と比較して最適かどうかを確認するために、診断ツールを実行しますか?", "Setup.Doctor.Title": "診断ツールに相談しますか?", + "Setup.EncryptSettingsPassphrase": "The passphrase to encrypt the setup URI", + "Setup.EncryptSettingsTitle": "Encrypt your settings", "Setup.FetchRemoteConf.Buttons.Fetch": "はい、設定を取得", "Setup.FetchRemoteConf.Buttons.Skip": "いいえ、URIの設定を使用", "Setup.FetchRemoteConf.Message": "既に他のデバイスと同期したことがある場合、リモートデータベースには同期されたデバイス間の適切な設定値が保存されています。プラグインは堅牢な設定のためにそれらを取得したいと考えています。\n\nただし、1つ確認が必要です。現在、ネットワークに安全にアクセスして設定を取得できる状況ですか?\n\n注意: リモートデータベースがSSL証明書でホストされており、ネットワークが侵害されていなければ、ほとんどの場合安全に実行できます。", "Setup.FetchRemoteConf.Title": "リモートデータベースから設定を取得しますか?", + "Setup.Log.ProtocolHandlerRegistrationFailed": "Failed to register protocol handler. This feature may not work in some environments.", + "Setup.Log.SetupUriCopiedToClipboard": "Setup URI copied to clipboard", "Setup.QRCode": "設定を転送するためのQRコードを生成しました。スマートフォンや他のデバイスでQRコードをスキャンしてください。\n注意: QRコードは暗号化されていないため、開く際は注意してください。\n\n>[!FOR YOUR EYES ONLY]-\n>
${qr_image}
", + "Setup.QRCodeTitle": "Settings QR Code", "Setup.RemoteE2EE.AdvancedTitle": "詳細設定", "Setup.RemoteE2EE.AlgorithmWarning": "暗号化アルゴリズムを変更すると、別のアルゴリズムで暗号化された既存データにはアクセスできなくなります。すべての端末で同じアルゴリズムを使うよう設定し、データにアクセスできる状態を維持してください。", "Setup.RemoteE2EE.ButtonCancel": "キャンセル", @@ -728,6 +792,7 @@ "Setup.ScanQRCode.Step3": "元の端末でコマンドパレットから「設定を QR コードとして表示」を実行します。", "Setup.ScanQRCode.Step4": "この端末でカメラアプリに切り替えるか QR コードスキャナーを使って、表示された QR コードを読み取ってください。", "Setup.ScanQRCode.Title": "QRコードをスキャン", + "Setup.SetupUri": "Setup URI", "Setup.ShowQRCode": "QRコードを表示", "Setup.ShowQRCode.Desc": "設定を転送するためのQRコードを表示します。", "Setup.UseSetupURI.ButtonCancel": "キャンセル", @@ -746,7 +811,9 @@ "Should we only check for conflicts when a file is opened?": "ファイルを開いたときのみ競合をチェックしますか?", "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?": "自動的に安全にマージできる場合でも、すべてのマージについて確認を求めますか?", - "Show full banner": "完全なバナーを表示", + "Show full banner": "バナーを完全表示", + "Show history": "履歴を表示", + "Show icon only": "アイコンのみ表示", "Show only notifications": "通知のみ表示", "Show status as icons only": "ステータス表示をアイコンのみにする", "Show status icon instead of file warnings banner": "ファイル警告バナーの代わりにステータスアイコンを表示", @@ -806,17 +873,445 @@ "TweakMismatchResolve.Title": "設定の不一致が検出されました", "TweakMismatchResolve.Title.TweakResolving": "設定の不一致が検出されました", "TweakMismatchResolve.Title.UseRemoteConfig": "リモート設定を使用", + "Ui.Bucket.Guidance": "S3/MinIO/R2互換のオブジェクトストレージサービスに接続するために必要な情報を入力してください。", + "Ui.Common.Signal.Caution": "注意", + "Ui.Common.Signal.Danger": "危険", + "Ui.Common.Signal.Notice": "通知", + "Ui.Common.Signal.Warning": "警告", + "Ui.ConflictResolver.FileToResolve": "解決するファイル", + "Ui.CouchDB.Guidance": "以下にCouchDBサーバーの情報を入力してください。", + "Ui.History.FileToView": "表示するファイル", + "Ui.P2P.Guidance": "以下にP2P同期の情報を入力してください。", + "Ui.RemoteE2EE.AdvancedTitle": "詳細設定", + "Ui.RemoteE2EE.AlgorithmWarning": "暗号化アルゴリズムを変更すると、別のアルゴリズムで暗号化された既存データにはアクセスできなくなります。", + "Ui.RemoteE2EE.ButtonCancel": "キャンセル", + "Ui.RemoteE2EE.ButtonProceed": "続行", + "Ui.RemoteE2EE.DefaultAlgorithmDesc": "ほとんどの場合、デフォルトのアルゴリズムのままにすることをおすすめします。", + "Ui.RemoteE2EE.Guidance": "E2EEの設定を行ってください。", + "Ui.RemoteE2EE.LabelEncrypt": "E2EE", + "Ui.RemoteE2EE.LabelEncryptionAlgorithm": "暗号化アルゴリズム", + "Ui.RemoteE2EE.LabelObfuscateProperties": "プロパティを難読化", + "Ui.RemoteE2EE.ManualWarning": "E2EEのパスフレーズは、実際に同期処理が開始されるまで検証されません。これはデータを保護するためのセキュリティ対策です。", + "Ui.RemoteE2EE.MultiDestinationWarning": "複数の同期先に接続する場合でも、この設定は同じである必要があります。", + "Ui.RemoteE2EE.ObfuscatePropertiesDesc": "プロパティを難読化すると、リモートサーバー上のファイルやフォルダの構造や名前を特定しにくくなり、セキュリティがさらに向上します。", + "Ui.RemoteE2EE.PassphraseValidationLine1": "E2EEのパスフレーズは、実際に同期処理が開始されるまで検証されません。", + "Ui.RemoteE2EE.PassphraseValidationLine2": "そのため、サーバー情報を手動で設定する場合は、特に慎重に行ってください。", + "Ui.RemoteE2EE.PlaceholderPassphrase": "パスフレーズを入力", + "Ui.RemoteE2EE.StronglyRecommended": "E2EEを有効にすると、データはリモートサーバーへ送信される前にこのデバイス上で暗号化されます。そのため、誰かがサーバーへアクセスできたとしても、パスフレーズがなければデータを読むことはできません。", + "Ui.RemoteE2EE.StronglyRecommendedLine1": "E2EEを有効にすると、データはリモートサーバーへ送信される前にこのデバイス上で暗号化されます。", + "Ui.RemoteE2EE.StronglyRecommendedLine2": "また、P2P同期を使用している場合でも、この設定は今後ほかの方式に切り替えてリモートサーバーへ接続するときに使用されます。", + "Ui.RemoteE2EE.StronglyRecommendedTitle": "強く推奨", + "Ui.RemoteE2EE.Title": "E2EE", + "Ui.RemoteE2EE.WarningSameSetting": "複数の同期先に接続する場合でも、この設定は同じである必要があります。", + "Ui.ScanQRCode.ButtonClose": "このダイアログを閉じる", + "Ui.ScanQRCode.Guidance": "既存のデバイスから設定を取り込むには、以下の手順に従ってください。", + "Ui.ScanQRCode.Instruction": "既存のデバイスから設定を取り込むには、以下の手順に従ってください。", + "Ui.ScanQRCode.Step1": "このデバイスでは、このVaultを開いたままにしてください。", + "Ui.ScanQRCode.Step2": "元のデバイスでObsidianを開きます。", + "Ui.ScanQRCode.Step3": "元のデバイスでコマンドパレットを開き、「Show settings as a QR code」コマンドを実行します。", + "Ui.ScanQRCode.Step4": "このデバイスでカメラアプリに切り替えるか、QRコードスキャナーを使って表示されたQRコードを読み取ってください。", + "Ui.ScanQRCode.Title": "QRコードを読み取る", + "Ui.Settings.Advanced.LocalDatabaseTweak": "ローカルデータベースの調整", + "Ui.Settings.Advanced.MemoryCache": "メモリーキャッシュ", + "Ui.Settings.Advanced.TransferTweak": "転送の調整", + "Ui.Settings.Common.Analyse": "解析", + "Ui.Settings.Common.Back": "戻る", + "Ui.Settings.Common.Check": "確認", + "Ui.Settings.Common.Configure": "設定", + "Ui.Settings.Common.Delete": "削除", + "Ui.Settings.Common.Lock": "ロック", + "Ui.Settings.Common.Open": "開く", + "Ui.Settings.Common.Perform": "実行", + "Ui.Settings.Common.ResetAll": "すべてリセット", + "Ui.Settings.Common.ResolveAll": "すべて解決", + "Ui.Settings.Common.Send": "送信", + "Ui.Settings.Common.VerifyAll": "すべて検証", + "Ui.Settings.CustomizationSync.OpenDesc": "ダイアログを開きます", + "Ui.Settings.CustomizationSync.Panel": "カスタマイズ同期", + "Ui.Settings.CustomizationSync.WarnChangeDeviceName": "デバイス名を変更すると、カスタマイズ同期に影響する可能性があります。", + "Ui.Settings.CustomizationSync.WarnSetDeviceName": "まずデバイス名を設定してください。", + "Ui.Settings.Hatch.AnalyseDatabaseUsage": "データベース使用量を分析", + "Ui.Settings.Hatch.AnalyseDatabaseUsageDesc": "データベース使用量を分析し、自己診断用の TSV レポートを生成します。生成されたレポートは任意のスプレッドシートに貼り付けられます。", + "Ui.Settings.Hatch.BackToNonConfigured": "未設定状態に戻す", + "Ui.Settings.Hatch.ConvertNonObfuscated": "パス難読化されていないファイルを確認して変換", + "Ui.Settings.Hatch.ConvertNonObfuscatedDesc": "ローカルデータベース内でパス難読化なしに保存されたファイルを確認し、必要に応じて変換します。", + "Ui.Settings.Hatch.CopyIssueReport": "レポートをクリップボードにコピー", + "Ui.Settings.Hatch.DatabaseLabel": "データベース: ${details}", + "Ui.Settings.Hatch.DatabaseToStorage": "データベース → ストレージ", + "Ui.Settings.Hatch.DeleteCustomizationSyncData": "すべてのカスタマイズ同期データを削除", + "Ui.Settings.Hatch.GeneratedReport": "生成されたレポート", + "Ui.Settings.Hatch.Missing": "見つかりません", + "Ui.Settings.Hatch.ModifiedSize": "変更後サイズ", + "Ui.Settings.Hatch.ModifiedSizeActual": "実際の変更後サイズ", + "Ui.Settings.Hatch.PrepareIssueReport": "Issue 作成用のレポートを準備", + "Ui.Settings.Hatch.RecoveryAndRepair": "復旧と修復", + "Ui.Settings.Hatch.RecreateAll": "すべて再作成", + "Ui.Settings.Hatch.RecreateMissingChunks": "すべてのファイルの不足チャンクを再作成", + "Ui.Settings.Hatch.RecreateMissingChunksDesc": "すべてのファイルのチャンクを再作成します。不足チャンクがある場合、エラーを修正できる可能性があります。", + "Ui.Settings.Hatch.ResetPanel": "リセット", + "Ui.Settings.Hatch.ResetRemoteUsage": "通知しきい値をリセットしてリモートデータベース使用量を確認", + "Ui.Settings.Hatch.ResetRemoteUsageDesc": "リモートストレージサイズのしきい値をリセットし、リモートストレージサイズを再確認します。", + "Ui.Settings.Hatch.ResolveAllConflictedFiles": "すべての競合ファイルを新しい方で解決", + "Ui.Settings.Hatch.ResolveAllConflictedFilesDesc": "すべての競合ファイルを新しい方で解決します。注意: 古い方は上書きされ、上書きされた内容は復元できません。", + "Ui.Settings.Hatch.RunDoctor": "Doctor を実行", + "Ui.Settings.Hatch.ScanBrokenFiles": "壊れたファイルをスキャン", + "Ui.Settings.Hatch.ScramSwitches": "緊急停止スイッチ", + "Ui.Settings.Hatch.ShowHistory": "履歴を表示", + "Ui.Settings.Hatch.StorageLabel": "ストレージ: ${details}", + "Ui.Settings.Hatch.StorageToDatabase": "ストレージ → データベース", + "Ui.Settings.Hatch.VerifyAndRepairAllFiles": "すべてのファイルを検証して修復", + "Ui.Settings.Hatch.VerifyAndRepairAllFilesDesc": "ローカルデータベースとストレージのファイル内容を比較します。一致しない場合、どちらを保持するか尋ねられます。", + "Ui.Settings.Maintenance.Cleanup": "クリーンアップを実行", + "Ui.Settings.Maintenance.CleanupDesc": "最新ではないすべてのリビジョンを破棄して使用容量を減らします。リモートサーバーとローカルクライアントの両方に同量の空き容量が必要です。", + "Ui.Settings.Maintenance.DeleteLocalDatabase": "Self-hosted LiveSync のリセットまたはアンインストールのためにローカルデータベースを削除", + "Ui.Settings.Maintenance.EmergencyRestart": "緊急再起動", + "Ui.Settings.Maintenance.EmergencyRestartDesc": "すべての同期を無効にして再起動します。", + "Ui.Settings.Maintenance.FreshStartWipe": "新規開始のワイプ", + "Ui.Settings.Maintenance.FreshStartWipeDesc": "リモートサーバー上のすべてのデータを削除します。", + "Ui.Settings.Maintenance.GarbageCollection": "ガベージコレクション V3 (Beta)", + "Ui.Settings.Maintenance.GarbageCollectionAction": "ガベージコレクションを実行", + "Ui.Settings.Maintenance.GarbageCollectionDesc": "ガベージコレクションを実行して未使用チャンクを削除し、データベースサイズを削減します。", + "Ui.Settings.Maintenance.LockServer": "サーバーをロック", + "Ui.Settings.Maintenance.LockServerDesc": "他のデバイスとの同期を防ぐため、リモートサーバーをロックします。", + "Ui.Settings.Maintenance.OverwriteRemote": "リモートを上書き", + "Ui.Settings.Maintenance.OverwriteRemoteDesc": "ローカル DB とパスフレーズでリモートを上書きします。", + "Ui.Settings.Maintenance.OverwriteServerData": "このデバイスのファイルでサーバーデータを上書き", + "Ui.Settings.Maintenance.OverwriteServerDataDesc": "このデバイスのファイルを使ってローカルおよびリモートデータベースを再構築します。", + "Ui.Settings.Maintenance.PurgeAllJournalCounter": "すべてのジャーナルカウンターを消去", + "Ui.Settings.Maintenance.PurgeAllJournalCounterDesc": "すべてのダウンロードおよびアップロードキャッシュを消去します。", + "Ui.Settings.Maintenance.RebuildingOperations": "再構築操作 (リモートのみ)", + "Ui.Settings.Maintenance.Resend": "再送信", + "Ui.Settings.Maintenance.ResendDesc": "すべてのチャンクをリモートへ再送信します。", + "Ui.Settings.Maintenance.Reset": "リセット", + "Ui.Settings.Maintenance.ResetAllJournalCounter": "すべてのジャーナルカウンターをリセット", + "Ui.Settings.Maintenance.ResetAllJournalCounterDesc": "すべてのジャーナル履歴を初期化します。次回同期時に、すべての項目が再度受信および送信されます。", + "Ui.Settings.Maintenance.ResetJournalReceived": "ジャーナル受信履歴をリセット", + "Ui.Settings.Maintenance.ResetJournalReceivedDesc": "ジャーナル受信履歴を初期化します。次回同期時に、このデバイスが送信したもの以外のすべての項目が再ダウンロードされます。", + "Ui.Settings.Maintenance.ResetJournalSent": "ジャーナル送信履歴をリセット", + "Ui.Settings.Maintenance.ResetJournalSentDesc": "ジャーナル送信履歴を初期化します。次回同期時に、このデバイスが受信したもの以外のすべての項目が再送信されます。", + "Ui.Settings.Maintenance.ResetLocalSyncInfo": "同期情報をリセット", + "Ui.Settings.Maintenance.ResetLocalSyncInfoDesc": "リモートからローカルデータベースを復元または再構築します。", + "Ui.Settings.Maintenance.ResetReceived": "受信履歴をリセット", + "Ui.Settings.Maintenance.ResetSentHistory": "送信履歴をリセット", + "Ui.Settings.Maintenance.ResetThisDevice": "このデバイスの同期をリセット", + "Ui.Settings.Maintenance.ScheduleAndRestart": "予約して再起動", + "Ui.Settings.Maintenance.Scram": "緊急停止", + "Ui.Settings.Maintenance.SendChunks": "チャンクを送信", + "Ui.Settings.Maintenance.Syncing": "同期", + "Ui.Settings.Maintenance.WarningLockedReadyAction": "ロックを解除", + "Ui.Settings.Maintenance.WarningLockedReadyText": "リモートデータベースはロックされています。操作が完了している場合はロックを解除してください。", + "Ui.Settings.Maintenance.WarningLockedResolveAction": "このデバイスを承認", + "Ui.Settings.Maintenance.WarningLockedResolveText": "リモートデータベースはロックされており、このデバイスはまだ承認されていません。", + "Ui.Settings.Maintenance.WriteRedFlagAndRestart": "フラグを書き込んで再起動", + "Ui.Settings.Patches.CompatibilityConflict": "互換性(競合時の動作)", + "Ui.Settings.Patches.CompatibilityDatabase": "互換性(データベース構造)", + "Ui.Settings.Patches.CompatibilityInternalApi": "互換性(内部 API の使用)", + "Ui.Settings.Patches.CompatibilityMetadata": "互換性(メタデータ)", + "Ui.Settings.Patches.CompatibilityRemote": "互換性(リモートデータベース)", + "Ui.Settings.Patches.CompatibilityTrouble": "互換性(対処済みの問題)", + "Ui.Settings.Patches.CurrentAdapter": "現在のアダプター: ${adapter}", + "Ui.Settings.Patches.DatabaseAdapter": "データベースアダプター", + "Ui.Settings.Patches.DatabaseAdapterDesc": "使用するデータベースアダプターを選択します。", + "Ui.Settings.Patches.EdgeCaseBehaviour": "エッジケース対応(動作)", + "Ui.Settings.Patches.EdgeCaseDatabase": "エッジケース対応(データベース)", + "Ui.Settings.Patches.EdgeCaseProcessing": "エッジケース対応(処理)", + "Ui.Settings.Patches.IndexedDbWarning": "IndexedDB の使用には互換性や移行に関する注意点があります。", + "Ui.Settings.Patches.MigratingToIdb": "IDB へ移行中", + "Ui.Settings.Patches.MigratingToIndexedDb": "IndexedDB へ移行中", + "Ui.Settings.Patches.MigrationIdbCompleted": "IDB への移行が完了しました", + "Ui.Settings.Patches.MigrationIdbCompletedFollowUp": "IDB への移行が完了しました。反映するには再起動してください。", + "Ui.Settings.Patches.MigrationIndexedDbCompleted": "IndexedDB への移行が完了しました", + "Ui.Settings.Patches.MigrationIndexedDbCompletedFollowUp": "IndexedDB への移行が完了しました。反映するには再起動してください。", + "Ui.Settings.Patches.MigrationWarning": "データベースの移行には時間がかかる場合があります。実行前にバックアップをおすすめします。", + "Ui.Settings.Patches.OperationToIdb": "IDB へ移行", + "Ui.Settings.Patches.OperationToIndexedDb": "IndexedDB へ移行", + "Ui.Settings.Patches.Remediation": "修復", + "Ui.Settings.Patches.RemediationChanged": "反映内容が変更されました", + "Ui.Settings.Patches.RemediationNoLimit": "制限なし", + "Ui.Settings.Patches.RemediationRestarting": "変更を反映するため再起動しています", + "Ui.Settings.Patches.RemediationRestartLater": "後で再起動", + "Ui.Settings.Patches.RemediationRestartMessage": "変更を反映するには再起動が必要です。今すぐ再起動しますか?", + "Ui.Settings.Patches.RemediationRestartNow": "今すぐ再起動", + "Ui.Settings.Patches.RemediationSuffixChanged": "データベース接尾辞が変更されました", + "Ui.Settings.Patches.RemediationWithValue": "値: ${date} (${timestamp})", + "Ui.Settings.Patches.RemoteDatabaseSunset": "リモートデータベース調整(廃止予定)", + "Ui.Settings.Patches.SwitchToIDB": "IDB に切り替え", + "Ui.Settings.Patches.SwitchToIndexedDb": "IndexedDB に切り替え", + "Ui.Settings.PowerUsers.ConfigurationEncryption": "設定の暗号化", + "Ui.Settings.PowerUsers.ConnectionTweak": "CouchDB 接続の調整", + "Ui.Settings.PowerUsers.ConnectionTweakDesc": "これらの設定では接続動作を細かく調整できます。影響を理解している場合にのみ変更してください。", + "Ui.Settings.PowerUsers.Default": "デフォルト", + "Ui.Settings.PowerUsers.Developer": "開発者", + "Ui.Settings.PowerUsers.EncryptSensitiveConfig": "機密性の高い設定項目を暗号化", + "Ui.Settings.PowerUsers.PromptPassphraseEveryLaunch": "起動のたびにパスフレーズを尋ねる", + "Ui.Settings.PowerUsers.UseCustomPassphrase": "カスタムパスフレーズを使う", + "Ui.Settings.Remote.Activate": "有効化", + "Ui.Settings.Remote.ActiveSuffix": " (使用中)", + "Ui.Settings.Remote.AddConnection": "接続を追加", + "Ui.Settings.Remote.AddRemoteDefaultName": "新しいリモート設定", + "Ui.Settings.Remote.ConfigureAndChangeRemote": "設定してリモートを変更", + "Ui.Settings.Remote.ConfigureE2EE": "E2EE を設定", + "Ui.Settings.Remote.ConfigureRemote": "リモートを設定", + "Ui.Settings.Remote.DeleteRemoteConfirm": "リモート設定「${name}」を削除しますか?", + "Ui.Settings.Remote.DeleteRemoteTitle": "リモート設定を削除", + "Ui.Settings.Remote.DisplayName": "表示名", + "Ui.Settings.Remote.DuplicateRemote": "リモート設定を複製", + "Ui.Settings.Remote.DuplicateRemoteSuffix": "(コピー)", + "Ui.Settings.Remote.E2EEConfiguration": "E2EE 設定", + "Ui.Settings.Remote.Export": "エクスポート", + "Ui.Settings.Remote.FetchRemoteSettings": "リモート設定を取得", + "Ui.Settings.Remote.ImportConnection": "接続をインポート", + "Ui.Settings.Remote.ImportConnectionPrompt": "インポートする接続 URI を入力してください。", + "Ui.Settings.Remote.ImportedCouchDb": "インポートした CouchDB", + "Ui.Settings.Remote.ImportedRemote": "インポートしたリモート設定", + "Ui.Settings.Remote.MoreActions": "その他の操作", + "Ui.Settings.Remote.PeerToPeerPanel": "ピアツーピア同期", + "Ui.Settings.Remote.RemoteConfigurationPrefix": "リモート設定", + "Ui.Settings.Remote.RemoteDatabases": "リモートデータベース", + "Ui.Settings.Remote.RemoteName": "リモート名", + "Ui.Settings.Remote.RemoteNameCouchDb": "CouchDB 設定", + "Ui.Settings.Remote.RemoteNameP2P": "P2P 設定", + "Ui.Settings.Remote.RemoteNameS3": "S3/MinIO/R2 設定", + "Ui.Settings.Remote.Rename": "名前を変更", + "Ui.Settings.Selector.AddDefaultPatterns": "既定のパターンを追加", + "Ui.Settings.Selector.CrossPlatform": "クロスプラットフォーム", + "Ui.Settings.Selector.Default": "デフォルト", + "Ui.Settings.Selector.HiddenFiles": "隠しファイル", + "Ui.Settings.Selector.IgnorePatterns": "無視パターン", + "Ui.Settings.Selector.NonSynchronisingFiles": "同期しないファイル", + "Ui.Settings.Selector.NonSynchronisingFilesDesc": "(RegExp)これを設定すると、一致するローカルおよびリモートファイルの変更はスキップされます。", + "Ui.Settings.Selector.NormalFiles": "通常ファイル", + "Ui.Settings.Selector.OverwritePatterns": "上書きパターン", + "Ui.Settings.Selector.OverwritePatternsDesc": "マージではなく上書きするファイルに一致させるパターン", + "Ui.Settings.Selector.SynchronisingFiles": "同期するファイル", + "Ui.Settings.Selector.SynchronisingFilesDesc": "(RegExp)空の場合はすべてのファイルを同期します。同期するファイルを制限するには正規表現フィルターを設定します。", + "Ui.Settings.Selector.TargetPatterns": "対象パターン", + "Ui.Settings.Selector.TargetPatternsDesc": "同期するファイルに一致させるパターン", + "Ui.Settings.Setup.RerunWizardButton": "セットアップウィザードを再実行", + "Ui.Settings.Setup.RerunWizardDesc": "オンボーディングウィザードを再実行して Self-hosted LiveSync を再設定します。", + "Ui.Settings.Setup.RerunWizardName": "オンボーディングウィザードを再実行", + "Ui.Settings.SyncSettings.Fetch": "取得", + "Ui.Settings.SyncSettings.Merge": "マージ", + "Ui.Settings.SyncSettings.Overwrite": "上書き", + "Ui.SetupWizard.Bucket.AccessKeyId": "アクセスキー ID", + "Ui.SetupWizard.Bucket.BucketName": "バケット名", + "Ui.SetupWizard.Bucket.EndpointUrl": "エンドポイント URL", + "Ui.SetupWizard.Bucket.FolderPrefix": "Folder Prefix", + "Ui.SetupWizard.Bucket.FolderPrefixDesc": "バケット内の特定フォルダーにデータを保存したい場合は、ここでフォルダープレフィックスを指定できます。空欄にするとバケットのルートに保存されます。", + "Ui.SetupWizard.Bucket.InternalApiDesc": "CORS の問題を避けられない場合、このオプションを試せます。Obsidian の内部 API を使って S3 サーバーと通信します。Web 標準には準拠していませんが動作します。将来の Obsidian で壊れる可能性があります。", + "Ui.SetupWizard.Bucket.PlaceholderAccessKeyId": "アクセスキー ID を入力", + "Ui.SetupWizard.Bucket.PlaceholderBucketName": "バケット名を入力", + "Ui.SetupWizard.Bucket.PlaceholderFolderPrefix": "フォルダープレフィックスを入力(任意)", + "Ui.SetupWizard.Bucket.PlaceholderRegion": "リージョンを入力(例: us-east-1、R2 は auto)", + "Ui.SetupWizard.Bucket.PlaceholderSecretAccessKey": "シークレットアクセスキーを入力", + "Ui.SetupWizard.Bucket.Region": "リージョン", + "Ui.SetupWizard.Bucket.SecretAccessKey": "シークレットアクセスキー", + "Ui.SetupWizard.Bucket.Title": "S3/MinIO/R2設定", + "Ui.SetupWizard.Bucket.UseInternalApi": "内部 API を使用", + "Ui.SetupWizard.Bucket.UsePathStyleAccess": "パス形式アクセスを使用", + "Ui.SetupWizard.Common.AdvancedSettings": "詳細設定", + "Ui.SetupWizard.Common.Back": "戻る", + "Ui.SetupWizard.Common.Cancel": "キャンセル", + "Ui.SetupWizard.Common.CheckingConnection": "接続を確認しています。しばらくお待ちください。", + "Ui.SetupWizard.Common.ContinueAnyway": "このまま続行", + "Ui.SetupWizard.Common.CustomHeaders": "カスタムヘッダー", + "Ui.SetupWizard.Common.ErrorConnectionTest": "接続テスト中にエラーが発生しました: ${error}", + "Ui.SetupWizard.Common.ErrorConnectServer": "サーバーに接続できませんでした。設定を確認してください。", + "Ui.SetupWizard.Common.ErrorConnectServerDetail": "サーバーに接続できませんでした: ${error}", + "Ui.SetupWizard.Common.ErrorCreateReplicator": "レプリケーターインスタンスを作成できませんでした。", + "Ui.SetupWizard.Common.ExperimentalSettings": "実験的な設定", + "Ui.SetupWizard.Common.HttpsOnlyMobile": "Obsidian Mobileではセキュアな接続 (HTTPS) のみ使用できます。", + "Ui.SetupWizard.Common.ProceedSelectOption": "オプションを選択してください", + "Ui.SetupWizard.CouchDB.DatabaseName": "データベース名", + "Ui.SetupWizard.CouchDB.DatabaseNameDesc": "データベース名には大文字、空白、特殊文字を使用できません。またアンダースコア(_)で始めることもできません。", + "Ui.SetupWizard.CouchDB.InternalApiDesc": "CORS の問題を避けられない場合、このオプションを試せます。Obsidian の内部 API を使って CouchDB サーバーと通信します。Web 標準には準拠していませんが動作します。将来の Obsidian で壊れる可能性があります。", + "Ui.SetupWizard.CouchDB.JwtAlgorithm": "JWT アルゴリズム", + "Ui.SetupWizard.CouchDB.JwtExpirationDuration": "JWT 有効期間(分)", + "Ui.SetupWizard.CouchDB.JwtKey": "JWT キー", + "Ui.SetupWizard.CouchDB.JwtKeyDesc": "HS256/HS512 では共有シークレットキーを指定します。ES256/ES512 では pkcs8 PEM 形式の秘密鍵を指定します。", + "Ui.SetupWizard.CouchDB.JwtKeyId": "JWT Key ID(kid)", + "Ui.SetupWizard.CouchDB.JwtSubject": "JWT Subject(sub)", + "Ui.SetupWizard.CouchDB.JwtWarning": "JWT(JSON Web Token)認証により、トークンを使って CouchDB サーバーへ安全に認証できます。CouchDB が JWT を受け付けるよう設定され、指定したキーと設定がサーバー設定と一致していることを確認してください。この機能は十分には検証されていません。", + "Ui.SetupWizard.CouchDB.Password": "パスワード", + "Ui.SetupWizard.CouchDB.PlaceholderDatabaseName": "データベース名を入力", + "Ui.SetupWizard.CouchDB.PlaceholderJwtKey": "JWT シークレットまたは秘密鍵を入力", + "Ui.SetupWizard.CouchDB.PlaceholderJwtKeyId": "JWT Key ID を入力", + "Ui.SetupWizard.CouchDB.PlaceholderJwtSubject": "JWT Subject(CouchDB ユーザー名)を入力", + "Ui.SetupWizard.CouchDB.PlaceholderPassword": "パスワードを入力", + "Ui.SetupWizard.CouchDB.PlaceholderUsername": "ユーザー名を入力", + "Ui.SetupWizard.CouchDB.Title": "CouchDB設定", + "Ui.SetupWizard.CouchDB.Url": "サーバー URL", + "Ui.SetupWizard.CouchDB.UseInternalApi": "内部 API を使用", + "Ui.SetupWizard.CouchDB.UseJwtAuthentication": "JWT 認証を使用", + "Ui.SetupWizard.CouchDB.Username": "ユーザー名", + "Ui.SetupWizard.CouchDBCheck.DetectAndFix": "CouchDBの問題を検出して修正", + "Ui.SetupWizard.CouchDBCheck.Fix": "修正", + "Ui.SetupWizard.E2EE.AlgorithmGuidance": "ほとんどの場合、既定のアルゴリズム(${algorithm})を使用してください。この設定は、既存の Vault が別形式で暗号化されている場合にのみ必要です。", + "Ui.SetupWizard.E2EE.AlgorithmWarning": "暗号化アルゴリズムを変更すると、以前に別のアルゴリズムで暗号化されたデータにアクセスできなくなります。すべてのデバイスで同じアルゴリズムを使用するよう設定してください。", + "Ui.SetupWizard.E2EE.EncryptionAlgorithm": "暗号化アルゴリズム", + "Ui.SetupWizard.Fetch.BackupDone": "Vaultのバックアップを作成しました。", + "Ui.SetupWizard.Fetch.BackupQuestion": "続行する前にバックアップを作成しましたか?", + "Ui.SetupWizard.Fetch.BackupRecommendation": "Vaultフォルダを安全な場所にコピーしておくことをおすすめします。大量の競合が発生した場合や、誤った同期先と同期してしまった場合の保険になります。", + "Ui.SetupWizard.Fetch.BackupSkipped": "リスクを理解したうえで、バックアップなしで続行します。", + "Ui.SetupWizard.Fetch.BackupUnable": "Vaultのバックアップを作成できません。", + "Ui.SetupWizard.Fetch.BackupUnableNote": "リスクを理解したうえで、それでも続行したい場合は選択してください。", + "Ui.SetupWizard.Fetch.BackupUnableWarning": "続行前にバックアップを作成することを強くおすすめします。バックアップなしで続行すると、データが失われる可能性があります。", + "Ui.SetupWizard.Fetch.ConflictNote": "さらに、サーバー上のデータにすでに競合がある場合は、そのままこのデバイスに同期され、ローカルで解決する必要があります。", + "Ui.SetupWizard.Fetch.Guidance": "この操作では、サーバー上の最新データを使って、このデバイスのローカルデータベースを再構築します。同期の不整合を解消し、正常な動作を回復するための処理です。", + "Ui.SetupWizard.Fetch.ImportantBody": "このデバイスのVaultに未同期の変更がある場合、リセット後にサーバー側の内容と分岐する可能性があります。その結果、多数のファイル競合が発生することがあります。", + "Ui.SetupWizard.Fetch.ImportantTitle": "重要なお知らせ", + "Ui.SetupWizard.Fetch.PreventFetchConfig": "サーバーから設定を取得しない", + "Ui.SetupWizard.Fetch.Proceed": "リセットして同期を再開", + "Ui.SetupWizard.Fetch.Title": "このデバイスの同期をリセット", + "Ui.SetupWizard.Fetch.UnbalancedNote": "この場合、Self-hosted LiveSync はすべてのファイルのメタデータを再作成し、意図的に競合を発生させます。ファイル内容が同一であれば、それらの競合は自動的に解決されます。", + "Ui.SetupWizard.Fetch.VaultIdentical": "このVault内のファイルは、サーバー上のものとほぼ同じです。", + "Ui.SetupWizard.Fetch.VaultIdenticalDesc": "(例:別のPCで復元した直後、またはバックアップから復旧した直後)", + "Ui.SetupWizard.Fetch.VaultIndependent": "このVaultは空、またはサーバー上にない新規ファイルだけが入っています。", + "Ui.SetupWizard.Fetch.VaultIndependentDesc": "(例:新しいスマートフォンで初回設定する、まっさらな状態から始める)", + "Ui.SetupWizard.Fetch.VaultQuestion": "新たな競合の発生を最小限に抑えるため、現在のVaultの状態に最も近い選択肢を選んでください。選択内容に応じて、アプリが最適な方法でファイルを確認します。", + "Ui.SetupWizard.Fetch.VaultUnbalanced": "このVault内のファイルとサーバーとの間に差分がある可能性があります。", + "Ui.SetupWizard.Fetch.VaultUnbalancedDesc": "(例:オフライン中に多くのファイルを編集した後)", + "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.Log.E2EEConfigurationCancelled": "E2EE 設定がキャンセルされました。", + "Ui.SetupWizard.Log.ManualConfigurationCancelled": "手動設定がキャンセルされました。", + "Ui.SetupWizard.Log.NoSettingsChanges": "設定の変更は検出されませんでした。ウィザード設定の適用をスキップします。", + "Ui.SetupWizard.Log.OnboardingCancelled": "ユーザーがオンボーディングをキャンセルしました。", + "Ui.SetupWizard.Log.QrCodeDialogClosed": "QR コードダイアログが閉じられました。", + "Ui.SetupWizard.Log.QrCodeResult": "QR コードの結果: ${result}", + "Ui.SetupWizard.Log.SettingApplied": "設定を適用しました", + "Ui.SetupWizard.Log.SettingsApplied": "ウィザード設定を適用しました。", + "Ui.SetupWizard.Log.SetupUriDialogCancelled": "Setup URI ダイアログがキャンセルされました。", + "Ui.SetupWizard.Log.SetupUriDialogClosed": "Setup URI ダイアログが閉じられました。", + "Ui.SetupWizard.Log.UserCancelledApplyingSettings": "ユーザーがウィザード設定の適用をキャンセルしました。", + "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.P2P.AutoBroadcast": "変更を自動ブロードキャスト", + "Ui.SetupWizard.P2P.AutoBroadcastDesc": "変更の自動ブロードキャストを有効にすると、接続済みピアへ変更が自動的に通知されます。これによりピアはこのデバイスの変更を取得します。", + "Ui.SetupWizard.P2P.AutoStart": "P2P 接続を自動開始", + "Ui.SetupWizard.P2P.AutoStartDesc": "P2P 接続の自動開始を有効にすると、プラグイン起動時に P2P 接続が自動的に開始されます。", + "Ui.SetupWizard.P2P.DevicePeerId": "デバイスピア ID", + "Ui.SetupWizard.P2P.Enabled": "有効", + "Ui.SetupWizard.P2P.ErrorConnectPeers": "他のピアへ接続できませんでした: ${error}", + "Ui.SetupWizard.P2P.GenerateRandomId": "ランダム ID を生成", + "Ui.SetupWizard.P2P.GroupId": "グループ ID", + "Ui.SetupWizard.P2P.GroupPassphraseDesc": "グループ ID とパスフレーズはデバイスグループを識別するために使われます。同期したいすべてのデバイスで同じグループ ID とパスフレーズを使用してください。グループ ID は生成形式に限定されず、任意の文字列を使用できます。", + "Ui.SetupWizard.P2P.NoPeersFound": "設定は正しそうですが、他のピアが見つかりませんでした。", + "Ui.SetupWizard.P2P.PlaceholderRelayUrl": "リレー URL を入力", + "Ui.SetupWizard.P2P.PlaceholderTurnCredential": "TURN 認証情報を入力", + "Ui.SetupWizard.P2P.PlaceholderTurnUsername": "TURN ユーザー名を入力", + "Ui.SetupWizard.P2P.PublicTurnWarning": "公開 TURN サーバーを使用すると、データが第三者サーバーを経由するためプライバシー上の影響があります。データが暗号化されていても、存在は知られる可能性があります。使用前に TURN サーバー提供者とネットワーク管理者を信頼できることを確認してください。可能であれば自分の FQDN 用に TURN サーバーを用意することを検討してください。", + "Ui.SetupWizard.P2P.RelayUrl": "リレー URL", + "Ui.SetupWizard.P2P.Title": "P2P設定", + "Ui.SetupWizard.P2P.TurnCredential": "TURN 認証情報", + "Ui.SetupWizard.P2P.TurnServerDesc": "TURN サーバー設定は、厳しい NAT やファイアウォールにより直接 P2P 接続が妨げられる場合にのみ必要です。多くの場合は空欄のままで構いません。", + "Ui.SetupWizard.P2P.TurnServerUrls": "TURN サーバー URL(カンマ区切り)", + "Ui.SetupWizard.P2P.TurnUsername": "TURN ユーザー名", + "Ui.SetupWizard.P2P.UseDefaultRelay": "vrtmrz のリレーを使う", + "Ui.SetupWizard.Rebuild.BackupBeforeProceeding": "もちろん、続行前にデータをバックアップできます。", + "Ui.SetupWizard.Rebuild.BackupDone": "Vaultのバックアップを作成しました。", + "Ui.SetupWizard.Rebuild.BackupQuestion": "続行する前にバックアップを作成しましたか?", + "Ui.SetupWizard.Rebuild.BackupSkipped": "リスクを理解したうえで、バックアップなしで続行します。", + "Ui.SetupWizard.Rebuild.BackupUnable": "Vaultのバックアップを作成できません。", + "Ui.SetupWizard.Rebuild.BackupUnableAdvice": "新しい同期先を作成し、そこでデータを再構築してください。その後、ほかの各デバイスでは新しいリモート先に対して、まっさらなVaultへ1台ずつ同期してください。", + "Ui.SetupWizard.Rebuild.BackupWarning": "これは非常に強力な操作です。Vaultフォルダを安全な場所にコピーしておくことを強くおすすめします。", + "Ui.SetupWizard.Rebuild.ConfirmDataLoss": "他のスマートフォンやPCで行った変更が失われる可能性があることを理解しています。", + "Ui.SetupWizard.Rebuild.ConfirmIrreversible": "この操作は一度実行すると元に戻せないことを理解しています。", + "Ui.SetupWizard.Rebuild.ConfirmSyncDisabled": "他のデバイスは今後同期できなくなり、同期情報をリセットする必要があることを理解しています。", + "Ui.SetupWizard.Rebuild.ConfirmTitle": "以下を確認してください", + "Ui.SetupWizard.Rebuild.Guidance": "この手順では、まずサーバー上の既存の同期データをすべて削除します。その後、このデバイス上のVaultの現在の状態を唯一の正本として使用し、サーバー上のデータを完全に再構築します。", + "Ui.SetupWizard.Rebuild.PreventFetchConfig": "サーバーから設定を取得しない", + "Ui.SetupWizard.Rebuild.Proceed": "理解しました。サーバーを上書きします", + "Ui.SetupWizard.Rebuild.ResetNotifyOtherDevices": "リモートをリセットすると、他のデバイスにも通知されます。", + "Ui.SetupWizard.Rebuild.ResolveOnOtherDevices": "他のデバイス側で解決する方法があります。", + "Ui.SetupWizard.Rebuild.Title": "最終確認: このデバイスのファイルでサーバーデータを上書き", + "Ui.SetupWizard.Rebuild.WhenToUse": "この操作を実行するのは、サーバー上のデータが完全に破損している場合、他のすべてのデバイスでの変更が不要になった場合、またはVaultサイズに比べてデータベースサイズが異常に大きくなった場合など、例外的な状況に限るべきです。", + "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": "リモートサーバーのセットアップ", + "Ui.UseSetupURI.ButtonCancel": "キャンセル", + "Ui.UseSetupURI.ButtonProceed": "設定をテストして続行", + "Ui.UseSetupURI.ErrorFailedToParse": "Setup-URI の解析に失敗しました。", + "Ui.UseSetupURI.ErrorPassphraseRequired": "パスフレーズが必要です。", + "Ui.UseSetupURI.Guidance": "サーバーのセットアップ時または別のデバイスで生成された Setup URI と、Vault のパスフレーズを入力してください。", + "Ui.UseSetupURI.InvalidInfo": "Setup-URI が無効なようです。正しくコピーできているか確認してください。", + "Ui.UseSetupURI.Label": "Setup-URI", + "Ui.UseSetupURI.LabelPassphrase": "パスフレーズ", + "Ui.UseSetupURI.PlaceholderPassphrase": "パスフレーズを入力", + "Ui.UseSetupURI.Title": "Setup URI を入力", + "Ui.UseSetupURI.ValidMessage": "Setup-URI は有効で、使用準備ができています。", "Unique name between all synchronized devices. To edit this setting, please disable customization sync once.": "同期するすべての端末間で重複しない(一意の)名前。この設定を変更する場合、カスタマイズ同期を無効にしてください。", "Use a custom passphrase": "カスタムパスフレーズを使う", "Use a Setup URI (Recommended)": "Setup URI を使う(推奨)", "Use Custom HTTP Handler": "カスタムHTTPハンドラーの利用", "Use dynamic iteration count": "動的な繰り返し回数", + "Use Only Local Chunks": "ローカルチャンクのみ使用", + "Use Request API to avoid `inevitable` CORS problem": "「避けられない」CORS 問題を回避するため Request API を使用", "Use Segmented-splitter": "セグメント分割を使用", "Use splitting-limit-capped chunk splitter": "分割制限付きチャンク分割を使用", "Use the trash bin": "ゴミ箱を使用", "Use timeouts instead of heartbeats": "ハートビートの代わりにタイムアウトを使用", "username": "ユーザー名", "Username": "ユーザー名", + "V1: Legacy": "V1: レガシー", + "V2: Simple (Default)": "V2: シンプル (既定)", + "V2.5: Lexical chunks": "V2.5: 字句チャンク", + "V3: Fine deduplication": "V3: 細かな重複排除", "Verbose Log": "エラー以外のログ項目", "Verify all": "すべて検証", "Verify and repair all files": "すべてのファイルを検証して修復", @@ -826,11 +1321,14 @@ "We will now proceed with the server configuration.": "次にサーバー設定を進めます。", "Welcome to Self-hosted LiveSync": "Self-hosted LiveSync へようこそ", "When you save a file in the editor, start a sync automatically": "エディタでファイルを保存すると、自動的に同期を開始します", + "While enabled, it causes very performance impact but debugging replication testing and other features will be enabled. Please disable this if you have not read the source code. Requires restart of Obsidian.": "有効にするとパフォーマンスに大きく影響しますが、デバッグ、レプリケーションテストなどの機能が有効になります。ソースコードを読んでいない場合は無効にしてください。Obsidian の再起動が必要です。", "Write credentials in the file": "認証情報のファイル内保存", "Write logs into the file": "ファイルにログを記録", "xxhash32 (Fast but less collision resistance)": "xxhash32 (高速ですが衝突耐性は低め)", "xxhash64 (Fastest)": "xxhash64 (最速)", + "xxhash64 is the current default.": "現在の既定値は xxhash64 です。", "Yes, I want to add this device to my existing synchronisation": "はい、この端末を既存の同期に追加します", "Yes, I want to set up a new synchronisation": "はい、新しい同期を設定します", - "You are adding this device to an existing synchronisation setup.": "この端末を既存の同期構成に追加しようとしています。" + "You are adding this device to an existing synchronisation setup.": "この端末を既存の同期構成に追加しようとしています。", + "You can enable this setting to process the files with size mismatches, these files can be created by some APIs or integrations.": "サイズが一致しないファイルを処理するには、この設定を有効にできます。これらのファイルは一部の API や連携機能によって作成されることがあります。" } diff --git a/src/common/messagesJson/ko.json b/src/common/messagesJson/ko.json index b498d203..e8bb697c 100644 --- a/src/common/messagesJson/ko.json +++ b/src/common/messagesJson/ko.json @@ -16,15 +16,21 @@ "A Setup URI is a single string of text containing your server address and authentication details. Using a URI, if one was generated by your server installation script, provides a simple and secure configuration.": "설정 URI는 서버 주소와 인증 정보를 포함한 단일 문자열입니다. 서버 설치 스크립트가 URI를 생성했다면 이를 사용하면 간단하고 안전하게 구성할 수 있습니다。", "Access Key": "액세스 키", "Activate": "활성화", + "Active Remote Configuration": "활성 원격 구성", + "Active Remote Type": "활성 원격 유형", "Add default patterns": "기본 패턴 추가", "Add new connection": "연결 추가", + "Advanced": "고급", "All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.": "모든 기기의 진행 값이 동일합니다(${progress}). 기기들이 동기화된 것으로 보이므로 Garbage Collection을 진행할 수 있습니다.", "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.": "데이터베이스 사용량을 분석하고 직접 진단할 수 있도록 TSV 보고서를 생성합니다. 생성된 보고서는 원하는 스프레드시트에 붙여 넣어 확인할 수 있습니다.", + "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": "프리셋 구성 적용", "Ask a passphrase at every launch": "시작할 때마다 암호문구 묻기", + "Automatically broadcast changes to connected peers": "연결된 피어에 변경 사항 자동 브로드캐스트", + "Automatically start P2P connection on launch": "시작 시 P2P 연결 자동 시작", "Automatically Sync all files when opening Obsidian.": "Obsidian을 열 때 모든 파일을 자동으로 동기화합니다.", "Back": "뒤로", "Back to non-configured": "미구성 상태로 되돌리기", @@ -36,8 +42,10 @@ "Bucket Name": "버킷 이름", "Cancel": "취소", "Cancel Garbage Collection": "Garbage Collection 취소", + "Check": "확인", "Check and convert non-path-obfuscated files": "경로 난독화되지 않은 파일 검사 및 변환", "Check for documents that have not been converted to path-obfuscated IDs and convert them if necessary.": "아직 경로 난독화 ID로 변환되지 않은 문서를 확인하고 필요하면 변환합니다.", + "Chunk Splitter": "청크 분할기", "cmdConfigSync.showCustomizationSync": "사용자 설정 동기화 표시", "Comma separated `.gitignore, .dockerignore`": "쉼표로 구분된 `.gitignore, .dockerignore`", "Compaction in progress on remote database...": "원격 데이터베이스에서 압축을 진행 중입니다...", @@ -67,6 +75,7 @@ "CouchDB Connection Tweak": "CouchDB 연결 조정", "Cross-platform": "크로스 플랫폼", "Current adapter: {adapter}": "현재 어댑터: {adapter}", + "Customization sync": "사용자 지정 동기화", "Customization Sync": "사용자 지정 동기화", "Customization Sync (Beta3)": "사용자 지정 동기화 (Beta3)", "Data Compression": "데이터 압축", @@ -104,7 +113,7 @@ "Doctor.Button.FixButNoRebuild": "수정하지만 재구축하지 않음", "Doctor.Button.No": "아니요", "Doctor.Button.Skip": "그대로 두기", - "Doctor.Button.Yes": "예", + "Doctor.Button.Yes": "?", "Doctor.Dialogue.Main": "안녕하세요! ${activateReason} 로 인해 구성 진단 마법사가 활성화되었습니다!\n그리고 일부 구성이 잠재적인 문제로 감지되었습니다.\n안심하세요. 하나씩 해결해 봅시다.\n\n대상 항목은 다음과 같습니다.\n\n${issues}\n\n시작하시겠습니까?", "Doctor.Dialogue.MainFix": "**구성 이름:** `${name}`\n**현재 값:** `${current}`, **이상적인 값:** `${ideal}`\n**권장 수준:** ${level}\n**왜 이것이 감지되었나요?**\n${reason}\n\n\n${note}\n\n이상적인 값으로 수정하시겠습니까?", "Doctor.Dialogue.Title": "Self-hosted LiveSync 구성 진단 마법사", @@ -118,22 +127,31 @@ "Doctor.Message.RebuildLocalRequired": "주의! 이를 적용하려면 로컬 데이터베이스 재구축이 필요합니다!", "Doctor.Message.RebuildRequired": "주의! 이를 적용하려면 재구축이 필요합니다!", "Doctor.Message.SomeSkipped": "일부 문제를 그대로 두었습니다. 다음 시작 시 다시 질문할까요?", + "Doctor.RULES.E2EE_V02500.REASON": "종단 간 암호화(E2EE)가 더 견고하고 빨라졌습니다. 또한 이전 E2EE가 재검토에서 취약한 것으로 확인되었습니다. 가능한 한 빨리 적용해야 합니다. 불편을 드려 죄송합니다. 이 설정은 이전 방식과 호환되지 않습니다. 동기화된 모든 기기는 v0.25.0 이상으로 업데이트해야 합니다. 재구축은 필수는 아니며 새 전송 방식에서 새 형식으로 변환됩니다. 가능하면 재구축하는 것을 권장합니다.", + "Document History": "문서 기록", "Duplicate": "복제", "Duplicate remote": "원격 구성 복제", "E2EE Configuration": "E2EE 구성", "Edge case addressing (Behaviour)": "특수 상황 처리 (동작)", "Edge case addressing (Database)": "특수 상황 처리 (데이터베이스)", "Edge case addressing (Processing)": "특수 상황 처리 (처리)", + "Effectively a directory. Should end with `/`. e.g., `vault-name/`.": "사실상 디렉터리입니다. `/`로 끝나야 합니다. 예: `vault-name/`.", "Emergency restart": "긴급 재시작", "Enable advanced features": "고급 기능 활성화", + "Enable advanced mode": "고급 모드 사용", "Enable customization sync": "사용자 설정 동기화 활성화", "Enable Developers' Debug Tools.": "개발자 디버그 도구 활성화", "Enable edge case treatment features": "특수 사례 처리 기능 활성화", + "Enable forcePathStyle": "forcePathStyle 사용", + "Enable P2P Synchronization": "P2P 동기화 사용", + "Enable per-file customization sync": "파일별 사용자 지정 동기화 사용", + "Enable power user mode": "고급 사용자 모드 사용", "Enable poweruser features": "파워 유저 기능 활성화", "Enable this if your Object Storage doesn't support CORS": "객체 스토리지가 CORS를 지원하지 않는 경우 활성화하세요", "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.": "원격 데이터베이스의 내용을 암호화합니다. 플러그인의 동기화 기능을 사용하는 경우 활성화를 권장합니다.", "Encrypting sensitive configuration items": "민감한 구성 항목 암호화", + "Encryption passphrase. 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.": "패스프레이즈는 암호화에 사용되는 긴 암호 문구입니다. 변경한 경우, 암호화된 새 파일로 서버의 데이터베이스를 덮어써야 합니다.", "End-to-End Encryption": "종단간 암호화", "Endpoint URL": "엔드포인트 URL", @@ -149,8 +167,10 @@ "Fetch chunks on demand": "필요 시 청크 원격 가져오기", "Fetch database with previous behaviour": "이전 동작으로 데이터베이스 가져오기", "Fetch remote settings": "원격 설정 가져오기", + "File prefix on the bucket": "버킷의 파일 접두사", "File to resolve conflict": "충돌을 해결할 파일", "Filename": "파일명", + "Files with modification times greater than this value (in seconds since the Unix epoch) will not have their events reflected. Set to 0 to disable this limit.": "수정 시간이 이 값(Unix epoch 이후 초)보다 큰 파일은 이벤트가 반영되지 않습니다. 0으로 설정하면 이 제한을 비활성화합니다.", "First, please select the option that best describes your current situation.": "먼저 현재 상황에 가장 잘 맞는 항목을 선택해 주세요。", "Flag and restart": "표시 후 재시작", "Forces the file to be synced when opened.": "파일을 열 때 강제로 동기화합니다.", @@ -163,19 +183,29 @@ "Garbage Collection: Scanned ${scanned} / ~${docCount}": "Garbage Collection: ${scanned} / ~${docCount} 스캔됨", "Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": "Garbage Collection: 스캔 완료. 전체 청크 수: ${totalChunks}, 사용 중인 청크 수: ${usedChunks}", "Handle files as Case-Sensitive": "파일을 대소문자 구분으로 처리", + "Hatch": "도구", "Hidden Files": "숨김 파일", - "How to display network errors when the sync server is unreachable.": "동기화 서버에 연결할 수 없을 때 네트워크 오류를 어떻게 표시할지 설정합니다.", + "Hide completely": "완전히 숨기기", + "Highlight diff": "차이점 강조", + "How to display network errors when the sync server is unreachable.": "동기화 서버에 연결할 수 없을 때 네트워크 오류를 표시하는 방식입니다.", "How would you like to configure the connection to your server?": "서버 연결을 어떻게 구성하시겠습니까?", "I am adding a device to an existing synchronisation setup": "기존 동기화 구성에 장치를 추가합니다", "I am setting this up for the first time": "처음으로 설정합니다", "I know my server details, let me enter them": "서버 정보를 알고 있으니 직접 입력하겠습니다", "If disabled(toggled), chunks will be split on the UI thread (Previous behaviour).": "비활성화(토글)되면 청크는 UI 스레드에서 분할됩니다 (이전 동작).", "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, changes will be automatically broadcasted to all connected peers. Notified peers will start fetching the changes.": "활성화하면 변경 사항이 연결된 모든 피어에 자동으로 브로드캐스트됩니다. 알림을 받은 피어는 변경 사항 가져오기를 시작합니다.", "If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker.": "활성화하면 청크는 최대 100개 항목으로 분할됩니다. 하지만 중복 제거 기능이 약간 약해집니다.", + "If enabled, efficient per-file customization sync will be used. A minor migration is required when enabling this feature, and all devices must be updated to v0.23.18. Enabling this feature will result in losing compatibility with older versions.": "활성화하면 효율적인 파일별 사용자 지정 동기화를 사용합니다. 이 기능을 활성화할 때 작은 마이그레이션이 필요하며 모든 장치를 v0.23.18로 업데이트해야 합니다. 활성화하면 이전 버전과의 호환성이 사라집니다.", "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 forcePathStyle option will be used for bucket operations.": "활성화하면 버킷 작업에 forcePathStyle 옵션을 사용합니다.", "If enabled, the notification of hidden files change will be suppressed.": "활성화하면 숨겨진 파일 변경 알림이 억제됩니다.", + "If enabled, the P2P connection will be automatically started when the application launches.": "활성화하면 애플리케이션 시작 시 P2P 연결이 자동으로 시작됩니다.", + "If enabled, the plugin will not attempt to connect to the remote database even if the chunk was not found locally.": "활성화하면 청크를 로컬에서 찾지 못해도 플러그인이 원격 데이터베이스에 연결을 시도하지 않습니다.", + "If enabled, the request API will be used to avoid `inevitable` CORS problems. This is a workaround and may not work in all cases. PLEASE READ THE DOCUMENTATION BEFORE USING THIS OPTION. This is a less-secure option.": "활성화하면 피할 수 없는 CORS 문제를 피하기 위해 request API를 사용합니다. 이는 우회 방법이며 모든 경우에 동작하지 않을 수 있습니다. 이 옵션을 사용하기 전에 반드시 문서를 읽어 주세요. 보안성이 낮은 옵션입니다.", + "If this enabled, all chunks will be stored with the revision made from its content.": "활성화하면 모든 청크가 내용에서 생성된 리비전과 함께 저장됩니다.", "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).": "이 옵션이 활성화되면 모든 파일이 대소문자를 구분하여 처리됩니다 (이전 동작).", "If this enabled, chunks will be split into semantically meaningful segments. Not all platforms support this feature.": "이 옵션을 활성화하면 청크가 문단이나 의미 단위로 나뉘어 저장됩니다. 단, 이 기능은 일부 플랫폼에서는 지원되지 않을 수 있습니다.", @@ -189,15 +219,15 @@ "Initialise all journal history, On the next sync, every item will be received and sent.": "모든 저널 기록을 초기화합니다. 다음 동기화 때 모든 항목을 다시 받고 다시 보냅니다.", "Interval (sec)": "간격 (초)", "K.exp": "실험 기능", - "K.long_p2p_sync": "%{title_p2p_sync} (%{exp})", - "K.P2P": "%{Peer}-to-%{Peer}", + "K.long_p2p_sync": "%{title_p2p_sync}", + "K.P2P": "%{Peer} ? %{Peer}", "K.Peer": "피어", "K.ScanCustomization": "사용자 설정 검색", - "K.short_p2p_sync": "P2P 동기화 (%{exp})", + "K.short_p2p_sync": "P2P Sync", "K.title_p2p_sync": "피어 투 피어(P2P) 동기화", "Keep empty folder": "빈 폴더 유지", - "lang_def": "Default", - "lang-de": "Deutsche", + "lang_def": "기본값", + "lang-de": "Deutsch", "lang-def": "%{lang_def}", "lang-es": "Español", "lang-fr": "Français", @@ -212,7 +242,7 @@ "liveSyncReplicator.beforeLiveSync": "LiveSync 전에 OneShot을 먼저 시작합니다...", "liveSyncReplicator.cantReplicateLowerValue": "더 낮은 값으로 복제할 수 없습니다.", "liveSyncReplicator.checkingLastSyncPoint": "마지막으로 동기화된 지점을 찾고 있습니다.", - "liveSyncReplicator.couldNotConnectTo": "${uri}에 연결할 수 없습니다: ${name} \n(${db})", + "liveSyncReplicator.couldNotConnectTo": "${uri}에 연결할 수 없습니다: ${name}\n(${db})", "liveSyncReplicator.couldNotConnectToRemoteDb": "원격 데이터베이스에 연결할 수 없습니다: ${d}", "liveSyncReplicator.couldNotConnectToServer": "서버에 연결할 수 없습니다.", "liveSyncReplicator.couldNotConnectToURI": "${uri}에 연결할 수 없습니다: ${dbRet}", @@ -243,11 +273,15 @@ "logPane.pause": "일시 중단", "logPane.title": "Self-hosted LiveSync 로그", "logPane.wrap": "줄 바꿈", + "Maintenance": "유지보수", "Maximum delay for batch database updating": "일괄 데이터베이스 업데이트 최대 지연", + "Maximum file modification time for reflected file events": "반영할 파일 이벤트의 최대 파일 수정 시간", "Maximum file size": "최대 파일 크기", "Maximum Incubating Chunk Size": "임시 보관 변경 기록의 최대 크기", "Maximum Incubating Chunks": "임시 보관 중인 변경 기록 최대 수", "Maximum Incubation Period": "변경 기록 임시 보관 최대 시간", + "Maximum size of chunks to send in one request": "한 요청에서 보낼 청크의 최대 크기", + "MB": "MB", "MB (0 to disable).": "MB (0으로 설정하면 비활성화).", "Memory cache": "메모리 캐시", "Memory cache size (by total characters)": "메모리 캐시 크기 (총 문자 수)", @@ -260,10 +294,10 @@ "moduleCheckRemoteSize.logExceededWarning": "원격 스토리지 크기: ${measuredSize}가 ${notifySize}를 초과했습니다", "moduleCheckRemoteSize.logThresholdEnlarged": "임계값이 ${size}MB로 증가되었습니다", "moduleCheckRemoteSize.msgConfirmRebuild": "시간이 꽤 오래 걸릴 수 있습니다. 정말 지금 모든 것을 재구축하시겠습니까?", - "moduleCheckRemoteSize.msgDatabaseGrowing": "**데이터베이스 용량이 점점 커지고 있습니다!** 하지만 걱정하지 마세요. 아직 원격 스토리지 공간이 완전히 부족해진 건 아닙니다.\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> 전체 재구성을 실행할 경우, 모든 기기가 반드시 동기화되어 있어야 합니다. 플러그인이 최대한 병합하려고 시도하긴 하지만 완전하지 않을 수 있습니다.", + "moduleCheckRemoteSize.msgDatabaseGrowing": "**데이터베이스 용량이 점점 커지고 있습니다!** 하지만 걱정하지 마세요. 아직 원격 스토리지 공간이 완전히 부족해진 건 아닙니다.\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> 전체 재구성을 실행할 경우, 모든 기기가 반드시 동기화되어 있어야 합니다. 플러그인이 최대한 병합하려고 시도하긴 하지만 완전하지 않을 수 있습니다.", "moduleCheckRemoteSize.msgSetDBCapacity": "**원격 스토리지 공간이 부족해지기 전에 미리 조치할 수 있도록** 데이터베이스 용량 경고를 설정할 수 있습니다.\n이 기능을 활성화하시겠습니까?\n\n> [!MORE]-\n> - 0: 스토리지 용량에 대한 경고 없음\n> 자체 서버를 사용하는 등 여유 공간이 충분한 경우에 권장됩니다. 스토리지 용량을 직접 확인하고 수동으로 재구성할 수 있습니다.\n> - 800: 원격 스토리지 용량이 800MB를 초과하면 경고\n> 1GB 제한이 있는 fly.io나 IBM Cloudant 사용 시 권장됩니다.\n> - 2000: 원격 스토리지 용량이 2GB를 초과하면 경고\n\n설정한 용량 한도에 도달하면, 단계적으로 경고 한도를 늘릴지 여부를 묻게 됩니다.\n", "moduleCheckRemoteSize.option2GB": "2GB (표준)", - "moduleCheckRemoteSize.option800MB": "800MB (Cloudant, fly.io)", + "moduleCheckRemoteSize.option800MB": "800MB", "moduleCheckRemoteSize.optionAskMeLater": "나중에 물어보기", "moduleCheckRemoteSize.optionDismiss": "무시", "moduleCheckRemoteSize.optionIncreaseLimit": "${newMax}MB로 증가", @@ -290,7 +324,19 @@ "moduleLiveSyncMain.titleScramEnabled": "Scram 활성화됨", "moduleLocalDatabase.logWaitingForReady": "준비 대기 중...", "moduleLog.showLog": "로그 표시", - "moduleMigration.docUri": "https://github.com/vrtmrz/obsidian-livesync/blob/main/README.md#how-to-use", + "moduleMigration.docUri": "https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/troubleshooting.md", + "moduleMigration.fix0256.buttons.checkItLater": "나중에 확인", + "moduleMigration.fix0256.buttons.DismissForever": "수정했으며 다시 묻지 않음", + "moduleMigration.fix0256.buttons.fix": "수정", + "moduleMigration.fix0256.message": "최근 버그(v0.25.6)로 인해 일부 파일이 동기화 데이터베이스에 올바르게 저장되지 않았을 수 있습니다.\n파일을 스캔하여 수정이 필요한 항목을 찾았습니다.\n\n**수정할 수 있는 파일:**\n\n${files}\n\n이 파일들은 스토리지에 크기가 일치하는 원본 파일이 있어 복구 가능성이 높습니다.\n이를 사용하여 데이터베이스를 수정할 수 있습니다. 아래의 \"Fix\" 버튼을 눌러 수정하세요.\n\n${messageUnrecoverable}\n\n다시 실행하려면 Hatch에서 실행할 수 있습니다.\n", + "moduleMigration.fix0256.messageUnrecoverable": "**이 기기에서 수정할 수 없는 파일:**\n\n${filesNotRecoverable}\n\n이 파일들은 메타데이터가 일치하지 않아 이 기기에서 수정할 수 없습니다(대부분 어떤 것이 올바른지 판단할 수 없습니다).\n복원하려면 다른 기기에서도 이 기능으로 확인하거나 백업에서 수동으로 복원하세요.\n", + "moduleMigration.fix0256.title": "손상된 파일이 감지되었습니다", + "moduleMigration.insecureChunkExist.buttons.fetch": "원격을 이미 재구축했습니다. 원격에서 가져오기", + "moduleMigration.insecureChunkExist.buttons.later": "나중에 처리", + "moduleMigration.insecureChunkExist.buttons.rebuild": "전체 재구축", + "moduleMigration.insecureChunkExist.laterMessage": "가능한 한 빨리 처리하는 것을 강력히 권장합니다!", + "moduleMigration.insecureChunkExist.message": "일부 청크가 안전하게 저장되지 않았으며 데이터베이스에서 암호화되지 않았습니다.\n**이 문제를 해결하려면 데이터베이스를 재구축하세요**.\n\n원격 데이터베이스가 SSL로 구성되어 있지 않거나 보안이 낮은 자격 증명을 사용하는 경우, **민감한 데이터가 노출될 위험이 있습니다**.\n\n참고: 모든 기기에서 Self-hosted LiveSync를 v0.25.6 이상으로 업그레이드하고 Vault를 반드시 백업하세요.\n참고 2: 전체 재구축과 가져오기는 시간과 트래픽을 어느 정도 사용하므로, 사용량이 적은 시간대에 안정적인 네트워크에서 실행하세요.\n", + "moduleMigration.insecureChunkExist.title": "안전하지 않은 청크 발견!", "moduleMigration.logBulkSendCorrupted": "청크 일괄 전송이 활성화되었지만, 이 기능에 문제가 있었습니다. 불편을 드려 죄송합니다. 자동으로 비활성화되었습니다.", "moduleMigration.logFetchRemoteTweakFailed": "원격 조정 값을 가져오는데 실패했습니다", "moduleMigration.logLocalDatabaseNotReady": "문제가 발생했습니다! 로컬 데이터베이스가 준비되지 않았습니다", @@ -337,6 +383,7 @@ "Notify customized": "사용자 설정 알림", "Notify when other device has newly customized.": "다른 기기에서 새로운 사용자 설정이 있을 때 알림을 받습니다.", "Notify when the estimated remote storage size exceeds on start up": "시작 시 예상 원격 스토리지 크기가 초과되면 알림", + "Now we can choose how to split the chunks; V3 is the most efficient. If you have troubled, please make this Default or Legacy.": "청크를 분할하는 방식을 선택할 수 있습니다. V3가 가장 효율적입니다. 문제가 있으면 Default 또는 Legacy로 설정하세요.", "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.": "한 번에 처리할 일괄 처리 수입니다. 기본값은 40입니다. 최소값은 2입니다. 이는 일괄 크기와 함께 메모리에 보관되는 문서 수를 제어합니다.", "Number of changes to sync at a time. Defaults to 50. Minimum is 2.": "한 번에 동기화할 변경 사항의 수입니다. 기본값은 50입니다. 최소값은 2입니다.", "Obsidian version": "Obsidian 버전", @@ -368,6 +415,7 @@ "obsidianLiveSyncSettingTab.errCorsNotAllowingCredentials": "❗ CORS에서 자격 증명을 허용하지 않습니다", "obsidianLiveSyncSettingTab.errCorsOrigins": "❗ cors.origins가 잘못되었습니다", "obsidianLiveSyncSettingTab.errEnableCors": "❗ httpd.enable_cors가 잘못되었습니다", + "obsidianLiveSyncSettingTab.errEnableCorsChttpd": "❗ chttpd.enable_cors가 잘못되었습니다", "obsidianLiveSyncSettingTab.errMaxDocumentSize": "❗ couchdb.max_document_size가 낮습니다)", "obsidianLiveSyncSettingTab.errMaxRequestSize": "❗ chttpd.max_http_request_size가 낮습니다)", "obsidianLiveSyncSettingTab.errMissingWwwAuth": "❗ httpd.WWW-Authenticate가 누락되었습니다", @@ -386,7 +434,7 @@ "obsidianLiveSyncSettingTab.logCheckingConfigDone": "구성 확인 완료", "obsidianLiveSyncSettingTab.logCheckingConfigFailed": "구성 확인 실패", "obsidianLiveSyncSettingTab.logCheckingDbConfig": "데이터베이스 구성 확인 중", - "obsidianLiveSyncSettingTab.logCheckPassphraseFailed": "오류: 원격 서버와 패스프레이즈 확인에 실패했습니다: \n${db}.", + "obsidianLiveSyncSettingTab.logCheckPassphraseFailed": "오류: 원격 서버와 패스프레이즈 확인에 실패했습니다:\n${db}.", "obsidianLiveSyncSettingTab.logConfiguredDisabled": "구성된 동기화 모드: 비활성화됨", "obsidianLiveSyncSettingTab.logConfiguredLiveSync": "구성된 동기화 모드: LiveSync", "obsidianLiveSyncSettingTab.logConfiguredPeriodic": "구성된 동기화 모드: 주기적", @@ -402,16 +450,18 @@ "obsidianLiveSyncSettingTab.logPassphraseNotCompatible": "오류: 패스프레이즈가 원격 서버와 호환되지 않습니다! 다시 확인해 주세요!", "obsidianLiveSyncSettingTab.logRebuildNote": "동기화가 비활성화되었습니다. 원하는 경우 가져오기 후 다시 활성화하세요.", "obsidianLiveSyncSettingTab.logSelectAnyPreset": "프리셋을 선택하세요.", + "obsidianLiveSyncSettingTab.logServerConfigurationCheck": "서버 구성 확인 로그", "obsidianLiveSyncSettingTab.msgAreYouSureProceed": "정말로 진행하시겠습니까?", "obsidianLiveSyncSettingTab.msgChangesNeedToBeApplied": "변경사항을 적용해야 합니다!", "obsidianLiveSyncSettingTab.msgConfigCheck": "--구성 확인--", "obsidianLiveSyncSettingTab.msgConfigCheckFailed": "구성 확인에 실패했습니다. 그래도 계속하시겠습니까?", "obsidianLiveSyncSettingTab.msgConnectionCheck": "--연결 확인--", "obsidianLiveSyncSettingTab.msgConnectionProxyNote": "구성 확인 후에도 연결 확인에 문제가 있는 경우, 리버스 프록시 구성을 확인해 주세요.", - "obsidianLiveSyncSettingTab.msgCurrentOrigin": "현재 원점: {origin}", + "obsidianLiveSyncSettingTab.msgCurrentOrigin": "현재 원점: ${origin}", "obsidianLiveSyncSettingTab.msgDiscardConfirmation": "정말로 기존 설정과 데이터베이스를 삭제하시겠습니까?", "obsidianLiveSyncSettingTab.msgDone": "--완료--", "obsidianLiveSyncSettingTab.msgEnableCors": "httpd.enable_cors 설정", + "obsidianLiveSyncSettingTab.msgEnableCorsChttpd": "cthttpd.enable_cors 설정", "obsidianLiveSyncSettingTab.msgEnableEncryptionRecommendation": "종단간 암호화와 경로 난독화를 활성화하는 것을 권장합니다. 정말로 암호화 없이 계속하시겠습니까?", "obsidianLiveSyncSettingTab.msgFetchConfigFromRemote": "원격 서버에서 구성을 가져오시겠습니까?", "obsidianLiveSyncSettingTab.msgGenerateSetupURI": "모든 작업이 완료되었습니다! 다른 기기를 설정하기 위해 Setup URI를 생성하시겠습니까?", @@ -422,7 +472,7 @@ "obsidianLiveSyncSettingTab.msgNonHTTPSWarning": "비 HTTPS URI에 연결할 수 없습니다. 구성을 업데이트하고 다시 시도해 주세요.", "obsidianLiveSyncSettingTab.msgNotice": "---공지사항---", "obsidianLiveSyncSettingTab.msgObjectStorageWarning": "⚠️ 주의: 이 기능은 아직 개발 중(WIP)입니다. 다음 사항을 유의해 주세요:\n- 추가 전용 구조(append-only)로 동작합니다. 저장 용량을 줄이려면 데이터 재구성이 필요합니다.\n- 기능이 다소 불안정할 수 있습니다.\n- 최초 동기화 시, 전체 히스토리가 원격 서버에서 전송됩니다. 데이터 용량 제한 및 느린 속도에 유의해 주세요.\n- 실시간 동기화는 변경된 부분만 처리됩니다.\n\n문제가 발생했거나 개선 아이디어가 있으시면 GitHub에 이슈를 등록해 주세요.\n기여에 깊이 감사드립니다.", - "obsidianLiveSyncSettingTab.msgOriginCheck": "원점 확인: {org}", + "obsidianLiveSyncSettingTab.msgOriginCheck": "원점 확인: ${org}", "obsidianLiveSyncSettingTab.msgRebuildRequired": "변경사항을 적용하려면 데이터베이스를 재구축해야 합니다. 아래 중 한 가지 방법을 선택해 주세요.\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설정만 저장합니다. **⚠️ 주의: 이 방법은 데이터 손상을 일으킬 수 있습니다.** 일반적으로는 전체 데이터베이스 재구축이 필요합니다.", "obsidianLiveSyncSettingTab.msgSelectAndApplyPreset": "마법사를 완료하려면 프리셋 항목을 선택하고 적용해 주세요.", "obsidianLiveSyncSettingTab.msgSetCorsCredentials": "cors.credentials 설정", @@ -452,6 +502,7 @@ "obsidianLiveSyncSettingTab.okCorsOriginMatched": "✔ CORS 원점 정상", "obsidianLiveSyncSettingTab.okCorsOrigins": "✔ cors.origins가 정상입니다.", "obsidianLiveSyncSettingTab.okEnableCors": "✔ httpd.enable_cors가 정상입니다.", + "obsidianLiveSyncSettingTab.okEnableCorsChttpd": "✔ chttpd.enable_cors가 정상입니다.", "obsidianLiveSyncSettingTab.okMaxDocumentSize": "✔ couchdb.max_document_size가 정상입니다.", "obsidianLiveSyncSettingTab.okMaxRequestSize": "✔ chttpd.max_http_request_size가 정상입니다.", "obsidianLiveSyncSettingTab.okRequireValidUser": "✔ chttpd.require_valid_user가 정상입니다.", @@ -459,12 +510,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.optionMinioS3R2": "MinIO, S3, R2", "obsidianLiveSyncSettingTab.optionOkReadEverything": "네, 모든 것을 읽었습니다.", "obsidianLiveSyncSettingTab.optionOnEvents": "이벤트 시", "obsidianLiveSyncSettingTab.optionPeriodicAndEvents": "주기적 및 이벤트 시", @@ -476,6 +527,8 @@ "obsidianLiveSyncSettingTab.panelPrivacyEncryption": "개인정보 보호 및 암호화", "obsidianLiveSyncSettingTab.panelRemoteConfiguration": "원격 구성", "obsidianLiveSyncSettingTab.panelSetup": "설정", + "obsidianLiveSyncSettingTab.serverVersion": "서버 정보: ${info}", + "obsidianLiveSyncSettingTab.titleActiveRemoteServer": "활성 원격 서버", "obsidianLiveSyncSettingTab.titleAppearance": "외관", "obsidianLiveSyncSettingTab.titleConflictResolution": "충돌 해결", "obsidianLiveSyncSettingTab.titleCongratulations": "축하합니다!", @@ -503,7 +556,7 @@ "obsidianLiveSyncSettingTab.titleSyncSettings": "동기화 설정", "obsidianLiveSyncSettingTab.titleSyncSettingsViaMarkdown": "마크다운을 통한 동기화 설정", "obsidianLiveSyncSettingTab.titleUpdateThinning": "업데이트 솎아내기", - "obsidianLiveSyncSettingTab.warnCorsOriginUnmatched": "⚠ CORS 원점이 일치하지 않습니다 {from}->{to}", + "obsidianLiveSyncSettingTab.warnCorsOriginUnmatched": "⚠ CORS 원점이 일치하지 않습니다 ${from}->${to}", "obsidianLiveSyncSettingTab.warnNoAdmin": "⚠ 관리자 권한이 없습니다.", "Ok": "확인", "Old Algorithm": "이전 알고리즘", @@ -555,6 +608,7 @@ "Perform Garbage Collection to remove unused chunks and reduce database size.": "사용하지 않는 청크를 제거하고 데이터베이스 크기를 줄이기 위해 가비지 컬렉션을 실행합니다.", "Periodic Sync interval": "주기적 동기화 간격", "Pick a file to resolve conflict": "충돌을 해결할 파일 선택", + "Pick a file to show history": "기록을 표시할 파일 선택", "Please disable 'Read chunks online' in settings to use Garbage Collection.": "Garbage Collection을 사용하려면 설정에서 \"Read chunks online\"을 비활성화해 주세요.", "Please enable 'Compute revisions for chunks' in settings to use Garbage Collection.": "Garbage Collection을 사용하려면 설정에서 \"Compute revisions for chunks\"를 활성화해 주세요.", "Please select 'Cancel' explicitly to cancel this operation.": "이 작업을 취소하려면 반드시 \"취소\"를 명시적으로 선택해 주세요.", @@ -570,8 +624,10 @@ "Proceed with Setup URI": "설정 URI로 계속", "Proceeding with Garbage Collection, ignoring missing nodes.": "누락된 노드를 무시하고 Garbage Collection을 계속 진행합니다.", "Proceeding with Garbage Collection.": "Garbage Collection을 진행합니다.", + "Process files even if seems to be corrupted": "손상된 것처럼 보이는 파일도 처리", "Process small files in the foreground": "포그라운드에서 작은 파일 처리", "Progress": "진행 상태", + "Property Encryption": "속성 암호화", "PureJS fallback (Fast, W/O WebAssembly)": "PureJS 대체 방식 (빠름, WebAssembly 없음)", "Purge all download/upload cache.": "모든 다운로드/업로드 캐시를 제거합니다.", "Purge all journal counter": "모든 저널 카운터 삭제", @@ -584,6 +640,25 @@ "RedFlag.Fetch.Method.FetchSmoother": "가져오기 전에 로컬 파일 청크 생성", "RedFlag.Fetch.Method.FetchTraditional": "원격에서 모든 것 가져오기", "RedFlag.Fetch.Method.Title": "어떻게 가져오시겠습니까?", + "RedFlag.FetchRemoteConfig.Applied": "Remote configuration applied.", + "RedFlag.FetchRemoteConfig.Buttons.Cancel": "아니요, 이 장치의 설정 유지", + "RedFlag.FetchRemoteConfig.Buttons.Fetch": "예, 원격 설정 가져오기", + "RedFlag.FetchRemoteConfig.Buttons.Retry": "Retry (recommended)", + "RedFlag.FetchRemoteConfig.Buttons.SkipAndProceed": "Skip and proceed", + "RedFlag.FetchRemoteConfig.FailedMessage": "Could not fetch configuration from remote. If you are new to the Self-hosted LiveSync, this might be expected. If not, you should check your network or server settings.", + "RedFlag.FetchRemoteConfig.FailedTitle": "Fetch Remote Configuration Failed", + "RedFlag.FetchRemoteConfig.MatchesLocal": "Remote configuration matches local configuration. No changes applied.", + "RedFlag.FetchRemoteConfig.Message": "원격 데이터베이스에서 설정을 가져오시겠습니까?", + "RedFlag.FetchRemoteConfig.NotApplied": "Remote configuration not applied.", + "RedFlag.FetchRemoteConfig.SettingsDiffered": "Your settings differed slightly from the server's. The plug-in has supplemented the incompatible parts with the server settings!", + "RedFlag.FetchRemoteConfig.Title": "원격 설정 가져오기", + "RedFlag.Log.FetchEverythingCancelled": "Fetch everything cancelled by user.", + "RedFlag.Log.FetchEverythingCompleted": "Fetch everything operation completed. Vault files will be gradually synced.", + "RedFlag.Log.RebuildEverythingCancelled": "Rebuild everything cancelled by user.", + "RedFlag.Log.RebuildEverythingCompleted": "Rebuild everything operation completed.", + "RedFlag.Log.VaultInitialisationError": "Error during vault initialisation.", + "RedFlag.Log.VaultInitialisationProcessError": "Error during vault initialisation process.", + "RedFlag.ResumeProcessingPrompt": "Do you want to resume file and database processing, and restart obsidian now?", "Reduces storage space by discarding all non-latest revisions. This requires the same amount of free space on the remote server and the local client.": "최신 버전이 아닌 모든 리비전을 제거하여 저장 공간을 줄입니다. 이 작업을 수행하려면 원격 서버와 로컬 클라이언트에 동일한 양의 여유 공간이 필요합니다.", "Reducing the frequency with which on-disk changes are reflected into the DB": "디스크 변경 사항이 데이터베이스에 반영되는 빈도를 줄입니다", "Region": "지역", @@ -626,7 +701,7 @@ "Reset Synchronisation on This Device": "이 장치의 동기화 상태 재설정", "Reset the remote storage size threshold and check the remote storage size again.": "원격 저장소 크기 임계값을 초기화하고 원격 저장소 크기를 다시 확인합니다.", "Resolve All": "모두 해결", - "Resolve all conflicted files": "충돌한 모든 파일 해결", + "Resolve all conflicted files": "모든 충돌 파일 해결", "Resolve All conflicted files by the newer one": "충돌한 모든 파일을 최신 버전으로 해결", "Resolve all conflicted files by the newer one. Caution: This will overwrite the older one, and cannot resurrect the overwritten one.": "충돌한 모든 파일을 더 최신 버전으로 해결합니다. 주의: 이전 버전은 덮어써지며 복원할 수 없습니다.", "Restart Now": "지금 재시작", @@ -652,6 +727,7 @@ "Seconds. Saving to the local database will be delayed until this value after we stop typing or saving.": "초 단위입니다. 타이핑이나 저장을 중단한 후 이 시간동안 로컬 데이터베이스 저장이 지연됩니다.", "Secret Key": "시크릿 키", "Select the database adapter to use.": "사용할 데이터베이스 어댑터를 선택합니다.", + "Selector": "선택기", "Send": "보내기", "Send chunks": "청크 보내기", "Server URI": "서버 URI", @@ -664,7 +740,33 @@ "Setting.TroubleShooting.ScanBrokenFiles.Desc": "데이터베이스에 올바르게 저장되지 않은 파일을 검사합니다.", "SettingTab.Message.AskRebuild": "변경 사항을 적용하려면 원격 데이터베이스에서 가져와야 합니다. 계속 진행하시겠습니까?", "Setup URI dialog cancelled.": "Setup URI 대화 상자가 취소되었습니다.", + "Setup.Apply.Buttons.ApplyAndFetch": "적용 후 가져오기", + "Setup.Apply.Buttons.ApplyAndMerge": "적용 후 병합", + "Setup.Apply.Buttons.ApplyAndRebuild": "적용 후 재구축", + "Setup.Apply.Buttons.Cancel": "취소", + "Setup.Apply.Buttons.OnlyApply": "적용만", + "Setup.Apply.Message": "설정이 준비되었습니다. 적용 방법을 선택하세요.", + "Setup.Apply.Title": "${method}로 설정 적용", + "Setup.Apply.WarningRebuildRecommended": "주의: 안전한 적용을 위해 데이터베이스 재구축을 권장합니다. 재구축하지 않으면 동기화 문제가 발생할 수 있습니다.", + "Setup.Command.CopySetupUri": "Copy settings as a new setup URI", + "Setup.Command.CopySetupUriFull": "Copy settings as a new setup URI (Full)", + "Setup.Command.CopySetupUriWithSync": "Copy settings as a new setup URI (With customization sync)", + "Setup.Command.OpenSetupUri": "Use the copied setup URI (Formerly Open setup URI)", + "Setup.Command.ShowSettingsQrCode": "Show settings as a QR code", + "Setup.Doctor.Buttons.No": "아니요", + "Setup.Doctor.Buttons.Yes": "?", + "Setup.Doctor.Message": "Self-hosted LiveSync가 설정을 확인했습니다. 일부 항목은 조정하는 것이 좋습니다. 계속하시겠습니까?", + "Setup.Doctor.Title": "설정 진단", + "Setup.EncryptSettingsPassphrase": "The passphrase to encrypt the setup URI", + "Setup.EncryptSettingsTitle": "Encrypt your settings", + "Setup.FetchRemoteConf.Buttons.Fetch": "예, 원격 설정 가져오기", + "Setup.FetchRemoteConf.Buttons.Skip": "아니요, URI 설정 사용", + "Setup.FetchRemoteConf.Message": "원격 설정을 가져올 수 있습니다. 가져오면 현재 설정 일부가 원격 설정으로 대체될 수 있습니다. 이 설정을 가져오시겠습니까?", + "Setup.FetchRemoteConf.Title": "원격 설정을 가져오시겠습니까?", + "Setup.Log.ProtocolHandlerRegistrationFailed": "Failed to register protocol handler. This feature may not work in some environments.", + "Setup.Log.SetupUriCopiedToClipboard": "Setup URI copied to clipboard", "Setup.QRCode": "설정을 전송하기 위한 QR 코드를 생성했습니다. 휴대폰이나 다른 기기로 QR 코드를 스캔해 주세요.\n참고: QR 코드는 암호화되지 않았으므로 열 때 주의하세요.\n\n>[!FOR YOUR EYES ONLY]-\n>
${qr_image}
", + "Setup.QRCodeTitle": "Settings QR Code", "Setup.RemoteE2EE.AdvancedTitle": "고급", "Setup.RemoteE2EE.AlgorithmWarning": "암호화 알고리즘을 변경하면 다른 알고리즘으로 암호화된 기존 데이터에 접근할 수 없게 됩니다. 모든 기기에서 동일한 알고리즘을 사용하도록 설정해 데이터 접근성을 유지하세요.", "Setup.RemoteE2EE.ButtonCancel": "취소", @@ -690,6 +792,7 @@ "Setup.ScanQRCode.Step3": "원본 기기에서 명령 팔레트를 열고 \"설정을 QR 코드로 표시\" 명령을 실행합니다.", "Setup.ScanQRCode.Step4": "이 기기에서 카메라 앱으로 전환하거나 QR 코드 스캐너를 사용해 표시된 QR 코드를 스캔하세요.", "Setup.ScanQRCode.Title": "QR 코드 스캔", + "Setup.SetupUri": "Setup URI", "Setup.ShowQRCode": "QR 코드 표시", "Setup.ShowQRCode.Desc": "설정을 전송하기 위한 QR 코드를 표시합니다.", "Setup.UseSetupURI.ButtonCancel": "취소", @@ -709,6 +812,8 @@ "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?": "안전하게 자동 병합할 수 있는 경우에도 모든 병합에 대해 알림을 받으시겠습니까?", "Show full banner": "전체 배너 표시", + "Show history": "기록 보기", + "Show icon only": "아이콘만 표시", "Show only notifications": "알림만 표시", "Show status as icons only": "아이콘으로만 상태 표시", "Show status icon instead of file warnings banner": "파일 경고 배너 대신 상태 아이콘 표시", @@ -768,17 +873,445 @@ "TweakMismatchResolve.Title": "구성 불일치 감지", "TweakMismatchResolve.Title.TweakResolving": "구성 불일치 감지", "TweakMismatchResolve.Title.UseRemoteConfig": "원격 구성 사용", + "Ui.Bucket.Guidance": "S3/MinIO/R2 원격 저장소 연결 정보를 입력하세요.", + "Ui.Common.Signal.Caution": "주의", + "Ui.Common.Signal.Danger": "위험", + "Ui.Common.Signal.Notice": "알림", + "Ui.Common.Signal.Warning": "경고", + "Ui.ConflictResolver.FileToResolve": "해결할 파일", + "Ui.CouchDB.Guidance": "CouchDB 연결 정보를 입력하세요.", + "Ui.History.FileToView": "볼 파일", + "Ui.P2P.Guidance": "P2P 연결을 설정하세요.", + "Ui.RemoteE2EE.AdvancedTitle": "고급", + "Ui.RemoteE2EE.AlgorithmWarning": "알고리즘을 변경하면 기존 데이터와 호환되지 않을 수 있습니다.", + "Ui.RemoteE2EE.ButtonCancel": "취소", + "Ui.RemoteE2EE.ButtonProceed": "진행", + "Ui.RemoteE2EE.DefaultAlgorithmDesc": "기본 알고리즘은 대부분의 경우 권장됩니다.", + "Ui.RemoteE2EE.Guidance": "원격 암호화를 설정하세요.", + "Ui.RemoteE2EE.LabelEncrypt": "암호화 사용", + "Ui.RemoteE2EE.LabelEncryptionAlgorithm": "암호화 알고리즘", + "Ui.RemoteE2EE.LabelObfuscateProperties": "속성 난독화", + "Ui.RemoteE2EE.ManualWarning": "수동 설정은 고급 사용자용입니다. 모든 장치에서 동일한 설정을 사용해야 합니다.", + "Ui.RemoteE2EE.MultiDestinationWarning": "여러 원격 대상을 사용하는 경우 모든 대상의 암호화 설정을 일치시켜야 합니다.", + "Ui.RemoteE2EE.ObfuscatePropertiesDesc": "파일 속성 이름을 난독화하여 원격 데이터베이스에 저장되는 정보를 줄입니다.", + "Ui.RemoteE2EE.PassphraseValidationLine1": "이 암호문은 모든 장치에서 동일해야 합니다.", + "Ui.RemoteE2EE.PassphraseValidationLine2": "암호문을 잊으면 기존 원격 데이터를 읽을 수 없습니다.", + "Ui.RemoteE2EE.PlaceholderPassphrase": "암호문 입력", + "Ui.RemoteE2EE.StronglyRecommended": "동기화 기능을 사용하는 경우 암호화를 강력히 권장합니다.", + "Ui.RemoteE2EE.StronglyRecommendedLine1": "동기화 기능을 사용하는 경우 암호화를 강력히 권장합니다.", + "Ui.RemoteE2EE.StronglyRecommendedLine2": "특히 P2P 이외의 원격 저장소를 사용하는 경우 원격 서버 관리자가 데이터를 볼 수 없도록 보호합니다.", + "Ui.RemoteE2EE.StronglyRecommendedTitle": "강력 권장", + "Ui.RemoteE2EE.Title": "원격 암호화", + "Ui.RemoteE2EE.WarningSameSetting": "이 설정은 모든 장치에서 동일해야 합니다.", + "Ui.ScanQRCode.ButtonClose": "닫기", + "Ui.ScanQRCode.Guidance": "다른 장치에서 표시한 QR 코드를 스캔하세요.", + "Ui.ScanQRCode.Instruction": "카메라로 QR 코드를 스캔하세요.", + "Ui.ScanQRCode.Step1": "다른 장치에서 이 Vault를 엽니다.", + "Ui.ScanQRCode.Step2": "다른 장치에서 Obsidian을 엽니다.", + "Ui.ScanQRCode.Step3": "다른 장치의 설정에서 'QR 코드 표시'를 선택합니다.", + "Ui.ScanQRCode.Step4": "이 장치에서 표시된 QR 코드를 스캔합니다.", + "Ui.ScanQRCode.Title": "QR 코드 스캔", + "Ui.Settings.Advanced.LocalDatabaseTweak": "로컬 데이터베이스 조정", + "Ui.Settings.Advanced.MemoryCache": "메모리 캐시", + "Ui.Settings.Advanced.TransferTweak": "전송 조정", + "Ui.Settings.Common.Analyse": "분석", + "Ui.Settings.Common.Back": "뒤로", + "Ui.Settings.Common.Check": "확인", + "Ui.Settings.Common.Configure": "구성", + "Ui.Settings.Common.Delete": "삭제", + "Ui.Settings.Common.Lock": "잠금", + "Ui.Settings.Common.Open": "열기", + "Ui.Settings.Common.Perform": "실행", + "Ui.Settings.Common.ResetAll": "모두 초기화", + "Ui.Settings.Common.ResolveAll": "모두 해결", + "Ui.Settings.Common.Send": "보내기", + "Ui.Settings.Common.VerifyAll": "모두 확인", + "Ui.Settings.CustomizationSync.OpenDesc": "대화 상자를 엽니다", + "Ui.Settings.CustomizationSync.Panel": "사용자 지정 동기화", + "Ui.Settings.CustomizationSync.WarnChangeDeviceName": "기기 이름 변경 경고", + "Ui.Settings.CustomizationSync.WarnSetDeviceName": "기기 이름 설정 경고", + "Ui.Settings.Hatch.AnalyseDatabaseUsage": "데이터베이스 사용량 분석", + "Ui.Settings.Hatch.AnalyseDatabaseUsageDesc": "데이터베이스 사용량을 분석하고 직접 진단할 수 있는 TSV 보고서를 생성합니다. 생성된 보고서를 원하는 스프레드시트에 붙여 넣을 수 있습니다.", + "Ui.Settings.Hatch.BackToNonConfigured": "미구성 상태로 되돌리기", + "Ui.Settings.Hatch.ConvertNonObfuscated": "경로가 난독화되지 않은 파일 확인 및 변환", + "Ui.Settings.Hatch.ConvertNonObfuscatedDesc": "로컬 데이터베이스에서 경로 난독화 없이 저장된 파일을 확인하고 필요하면 변환합니다.", + "Ui.Settings.Hatch.CopyIssueReport": "보고서를 클립보드에 복사", + "Ui.Settings.Hatch.DatabaseLabel": "데이터베이스: ${details}", + "Ui.Settings.Hatch.DatabaseToStorage": "데이터베이스 -> 스토리지", + "Ui.Settings.Hatch.DeleteCustomizationSyncData": "모든 사용자 지정 동기화 데이터 삭제", + "Ui.Settings.Hatch.GeneratedReport": "생성된 보고서", + "Ui.Settings.Hatch.Missing": "누락됨", + "Ui.Settings.Hatch.ModifiedSize": "수정된 크기", + "Ui.Settings.Hatch.ModifiedSizeActual": "실제 수정된 크기", + "Ui.Settings.Hatch.PrepareIssueReport": "이슈 생성을 위한 보고서 준비", + "Ui.Settings.Hatch.RecoveryAndRepair": "복구 및 복원", + "Ui.Settings.Hatch.RecreateAll": "모두 다시 생성", + "Ui.Settings.Hatch.RecreateMissingChunks": "모든 파일의 누락된 청크 다시 생성", + "Ui.Settings.Hatch.RecreateMissingChunksDesc": "모든 파일의 청크를 다시 생성합니다. 누락된 청크가 있었다면 오류가 해결될 수 있습니다.", + "Ui.Settings.Hatch.ResetPanel": "초기화", + "Ui.Settings.Hatch.ResetRemoteUsage": "알림 임계값을 초기화하고 원격 데이터베이스 사용량 확인", + "Ui.Settings.Hatch.ResetRemoteUsageDesc": "원격 저장소 크기 임계값을 초기화하고 원격 저장소 크기를 다시 확인합니다.", + "Ui.Settings.Hatch.ResolveAllConflictedFiles": "모든 충돌 파일을 더 최신 버전으로 해결", + "Ui.Settings.Hatch.ResolveAllConflictedFilesDesc": "모든 충돌 파일을 더 최신 버전으로 해결합니다. 주의: 이전 버전을 덮어쓰며 덮어쓴 내용은 복구할 수 없습니다.", + "Ui.Settings.Hatch.RunDoctor": "Doctor 실행", + "Ui.Settings.Hatch.ScanBrokenFiles": "손상된 파일 스캔", + "Ui.Settings.Hatch.ScramSwitches": "긴급 중지 스위치", + "Ui.Settings.Hatch.ShowHistory": "기록 표시", + "Ui.Settings.Hatch.StorageLabel": "스토리지: ${details}", + "Ui.Settings.Hatch.StorageToDatabase": "스토리지 -> 데이터베이스", + "Ui.Settings.Hatch.VerifyAndRepairAllFiles": "모든 파일 검증 및 복구", + "Ui.Settings.Hatch.VerifyAndRepairAllFilesDesc": "로컬 데이터베이스와 저장소의 파일 내용을 비교합니다. 일치하지 않으면 어느 쪽을 유지할지 묻습니다.", + "Ui.Settings.Maintenance.Cleanup": "정리 수행", + "Ui.Settings.Maintenance.CleanupDesc": "최신이 아닌 모든 리비전을 버려 저장 공간을 줄입니다. 원격 서버와 로컬 클라이언트 모두에 같은 양의 여유 공간이 필요합니다.", + "Ui.Settings.Maintenance.DeleteLocalDatabase": "Self-hosted LiveSync를 초기화하거나 제거하기 위해 로컬 데이터베이스 삭제", + "Ui.Settings.Maintenance.EmergencyRestart": "긴급 재시작", + "Ui.Settings.Maintenance.EmergencyRestartDesc": "모든 동기화를 비활성화하고 다시 시작합니다.", + "Ui.Settings.Maintenance.FreshStartWipe": "새로 시작을 위한 삭제", + "Ui.Settings.Maintenance.FreshStartWipeDesc": "원격 서버의 모든 데이터를 삭제합니다.", + "Ui.Settings.Maintenance.GarbageCollection": "가비지 컬렉션 V3 (베타)", + "Ui.Settings.Maintenance.GarbageCollectionAction": "가비지 컬렉션 실행", + "Ui.Settings.Maintenance.GarbageCollectionDesc": "가비지 컬렉션을 수행하여 사용하지 않는 청크를 제거하고 데이터베이스 크기를 줄입니다.", + "Ui.Settings.Maintenance.LockServer": "서버 잠금", + "Ui.Settings.Maintenance.LockServerDesc": "다른 기기와 동기화되지 않도록 원격 서버를 잠급니다.", + "Ui.Settings.Maintenance.OverwriteRemote": "원격 덮어쓰기", + "Ui.Settings.Maintenance.OverwriteRemoteDesc": "로컬 DB와 암호 구문으로 원격을 덮어씁니다.", + "Ui.Settings.Maintenance.OverwriteServerData": "이 기기의 파일로 서버 데이터 덮어쓰기", + "Ui.Settings.Maintenance.OverwriteServerDataDesc": "이 기기의 파일로 로컬 및 원격 데이터베이스를 다시 빌드합니다.", + "Ui.Settings.Maintenance.PurgeAllJournalCounter": "모든 저널 카운터 비우기", + "Ui.Settings.Maintenance.PurgeAllJournalCounterDesc": "모든 다운로드 및 업로드 캐시를 비웁니다.", + "Ui.Settings.Maintenance.RebuildingOperations": "재구축 작업 (원격 전용)", + "Ui.Settings.Maintenance.Resend": "다시 보내기", + "Ui.Settings.Maintenance.ResendDesc": "모든 청크를 원격으로 다시 보냅니다.", + "Ui.Settings.Maintenance.Reset": "초기화", + "Ui.Settings.Maintenance.ResetAllJournalCounter": "모든 저널 카운터 초기화", + "Ui.Settings.Maintenance.ResetAllJournalCounterDesc": "모든 저널 기록을 초기화합니다. 다음 동기화 때 모든 항목을 다시 받고 다시 보냅니다.", + "Ui.Settings.Maintenance.ResetJournalReceived": "저널 수신 기록 초기화", + "Ui.Settings.Maintenance.ResetJournalReceivedDesc": "저널 수신 기록을 초기화합니다. 다음 동기화 때 이 기기에서 보낸 항목을 제외한 모든 항목을 다시 다운로드합니다.", + "Ui.Settings.Maintenance.ResetJournalSent": "저널 전송 기록 초기화", + "Ui.Settings.Maintenance.ResetJournalSentDesc": "저널 전송 기록을 초기화합니다. 다음 동기화 때 이 기기에서 받은 항목을 제외한 모든 항목을 다시 보냅니다.", + "Ui.Settings.Maintenance.ResetLocalSyncInfo": "동기화 정보 초기화", + "Ui.Settings.Maintenance.ResetLocalSyncInfoDesc": "원격에서 로컬 데이터베이스를 복원하거나 재구성합니다.", + "Ui.Settings.Maintenance.ResetReceived": "수신 기록 초기화", + "Ui.Settings.Maintenance.ResetSentHistory": "전송 기록 초기화", + "Ui.Settings.Maintenance.ResetThisDevice": "이 기기의 동기화 초기화", + "Ui.Settings.Maintenance.ScheduleAndRestart": "예약 후 다시 시작", + "Ui.Settings.Maintenance.Scram": "긴급 처리", + "Ui.Settings.Maintenance.SendChunks": "청크 전송", + "Ui.Settings.Maintenance.Syncing": "동기화", + "Ui.Settings.Maintenance.WarningLockedReadyAction": "경고 잠금 준비 동작", + "Ui.Settings.Maintenance.WarningLockedReadyText": "경고 잠금 준비 설명", + "Ui.Settings.Maintenance.WarningLockedResolveAction": "경고 잠금 해결 동작", + "Ui.Settings.Maintenance.WarningLockedResolveText": "경고 잠금 해결 설명", + "Ui.Settings.Maintenance.WriteRedFlagAndRestart": "Red Flag 기록 후 다시 시작", + "Ui.Settings.Patches.CompatibilityConflict": "호환성(충돌 동작)", + "Ui.Settings.Patches.CompatibilityDatabase": "호환성(데이터베이스 구조)", + "Ui.Settings.Patches.CompatibilityInternalApi": "호환성(내부 API 사용)", + "Ui.Settings.Patches.CompatibilityMetadata": "호환성(메타데이터)", + "Ui.Settings.Patches.CompatibilityRemote": "호환성(원격 데이터베이스)", + "Ui.Settings.Patches.CompatibilityTrouble": "호환성(처리된 문제)", + "Ui.Settings.Patches.CurrentAdapter": "현재 어댑터: ${adapter}", + "Ui.Settings.Patches.DatabaseAdapter": "데이터베이스 어댑터", + "Ui.Settings.Patches.DatabaseAdapterDesc": "사용할 데이터베이스 어댑터를 선택합니다.", + "Ui.Settings.Patches.EdgeCaseBehaviour": "예외 상황 처리(동작)", + "Ui.Settings.Patches.EdgeCaseDatabase": "예외 상황 처리(데이터베이스)", + "Ui.Settings.Patches.EdgeCaseProcessing": "예외 상황 처리(처리)", + "Ui.Settings.Patches.IndexedDbWarning": "IndexedDB 경고", + "Ui.Settings.Patches.MigratingToIdb": "IDB로 마이그레이션 중", + "Ui.Settings.Patches.MigratingToIndexedDb": "IndexedDB로 마이그레이션 중", + "Ui.Settings.Patches.MigrationIdbCompleted": "IDB 마이그레이션 완료", + "Ui.Settings.Patches.MigrationIdbCompletedFollowUp": "IDB 마이그레이션 완료 후속 조치", + "Ui.Settings.Patches.MigrationIndexedDbCompleted": "IndexedDB 마이그레이션 완료", + "Ui.Settings.Patches.MigrationIndexedDbCompletedFollowUp": "IndexedDB 마이그레이션 완료 후속 조치", + "Ui.Settings.Patches.MigrationWarning": "마이그레이션 경고", + "Ui.Settings.Patches.OperationToIdb": "IDB로 전환", + "Ui.Settings.Patches.OperationToIndexedDb": "IndexedDB로 전환", + "Ui.Settings.Patches.Remediation": "수정", + "Ui.Settings.Patches.RemediationChanged": "수정 값이 변경됨", + "Ui.Settings.Patches.RemediationNoLimit": "제한 없음", + "Ui.Settings.Patches.RemediationRestarting": "다시 시작하는 중...", + "Ui.Settings.Patches.RemediationRestartLater": "나중에 다시 시작", + "Ui.Settings.Patches.RemediationRestartMessage": "변경 사항을 적용하려면 Obsidian을 다시 시작해야 합니다.", + "Ui.Settings.Patches.RemediationRestartNow": "지금 다시 시작", + "Ui.Settings.Patches.RemediationSuffixChanged": "변경됨", + "Ui.Settings.Patches.RemediationWithValue": "값: ${date} (${timestamp})", + "Ui.Settings.Patches.RemoteDatabaseSunset": "원격 데이터베이스 조정(지원 종료 예정)", + "Ui.Settings.Patches.SwitchToIDB": "IDB로 전환", + "Ui.Settings.Patches.SwitchToIndexedDb": "IndexedDB로 전환", + "Ui.Settings.PowerUsers.ConfigurationEncryption": "구성 암호화", + "Ui.Settings.PowerUsers.ConnectionTweak": "CouchDB 연결 조정", + "Ui.Settings.PowerUsers.ConnectionTweakDesc": "연결 관련 세부 동작을 조정합니다. 문제가 있을 때만 변경하세요.", + "Ui.Settings.PowerUsers.Default": "기본값", + "Ui.Settings.PowerUsers.Developer": "개발자", + "Ui.Settings.PowerUsers.EncryptSensitiveConfig": "민감한 구성 항목 암호화", + "Ui.Settings.PowerUsers.PromptPassphraseEveryLaunch": "시작할 때마다 암호 구문 요청", + "Ui.Settings.PowerUsers.UseCustomPassphrase": "사용자 지정 암호 구문 사용", + "Ui.Settings.Remote.Activate": "활성화", + "Ui.Settings.Remote.ActiveSuffix": "(활성)", + "Ui.Settings.Remote.AddConnection": "연결 추가", + "Ui.Settings.Remote.AddRemoteDefaultName": "새 원격", + "Ui.Settings.Remote.ConfigureAndChangeRemote": "원격 구성 및 변경", + "Ui.Settings.Remote.ConfigureE2EE": "E2EE 구성", + "Ui.Settings.Remote.ConfigureRemote": "원격 구성", + "Ui.Settings.Remote.DeleteRemoteConfirm": "원격 구성 \"${name}\"을 삭제하시겠습니까?", + "Ui.Settings.Remote.DeleteRemoteTitle": "원격 구성 삭제", + "Ui.Settings.Remote.DisplayName": "표시 이름", + "Ui.Settings.Remote.DuplicateRemote": "원격 복제", + "Ui.Settings.Remote.DuplicateRemoteSuffix": "(복사본)", + "Ui.Settings.Remote.E2EEConfiguration": "E2EE 구성", + "Ui.Settings.Remote.Export": "내보내기", + "Ui.Settings.Remote.FetchRemoteSettings": "원격 설정 가져오기", + "Ui.Settings.Remote.ImportConnection": "연결 가져오기", + "Ui.Settings.Remote.ImportConnectionPrompt": "가져올 연결 설정을 입력하세요.", + "Ui.Settings.Remote.ImportedCouchDb": "가져온 CouchDB", + "Ui.Settings.Remote.ImportedRemote": "가져온 원격", + "Ui.Settings.Remote.MoreActions": "추가 작업", + "Ui.Settings.Remote.PeerToPeerPanel": "피어 투 피어 동기화", + "Ui.Settings.Remote.RemoteConfigurationPrefix": "원격 구성", + "Ui.Settings.Remote.RemoteDatabases": "원격 데이터베이스", + "Ui.Settings.Remote.RemoteName": "원격 이름", + "Ui.Settings.Remote.RemoteNameCouchDb": "CouchDB 원격", + "Ui.Settings.Remote.RemoteNameP2P": "P2P 원격", + "Ui.Settings.Remote.RemoteNameS3": "S3/MinIO/R2 원격", + "Ui.Settings.Remote.Rename": "이름 변경", + "Ui.Settings.Selector.AddDefaultPatterns": "기본 패턴 추가", + "Ui.Settings.Selector.CrossPlatform": "크로스 플랫폼", + "Ui.Settings.Selector.Default": "기본값", + "Ui.Settings.Selector.HiddenFiles": "숨김 파일", + "Ui.Settings.Selector.IgnorePatterns": "무시 패턴", + "Ui.Settings.Selector.NonSynchronisingFiles": "동기화하지 않는 파일", + "Ui.Settings.Selector.NonSynchronisingFilesDesc": "(RegExp) 이 값을 설정하면 로컬 및 원격 파일 중 일치하는 변경 사항을 건너뜁니다.", + "Ui.Settings.Selector.NormalFiles": "일반 파일", + "Ui.Settings.Selector.OverwritePatterns": "덮어쓰기 패턴", + "Ui.Settings.Selector.OverwritePatternsDesc": "병합 대신 덮어쓸 파일을 찾는 패턴", + "Ui.Settings.Selector.SynchronisingFiles": "동기화할 파일", + "Ui.Settings.Selector.SynchronisingFilesDesc": "(RegExp) 비워 두면 모든 파일을 동기화합니다. 동기화할 파일을 제한하려면 정규식 필터를 설정합니다.", + "Ui.Settings.Selector.TargetPatterns": "대상 패턴", + "Ui.Settings.Selector.TargetPatternsDesc": "동기화할 파일을 찾는 패턴", + "Ui.Settings.Setup.RerunWizardButton": "마법사 다시 실행", + "Ui.Settings.Setup.RerunWizardDesc": "온보딩 마법사를 다시 실행하여 Self-hosted LiveSync를 다시 설정합니다.", + "Ui.Settings.Setup.RerunWizardName": "온보딩 마법사 다시 실행", + "Ui.Settings.SyncSettings.Fetch": "가져오기", + "Ui.Settings.SyncSettings.Merge": "병합", + "Ui.Settings.SyncSettings.Overwrite": "덮어쓰기", + "Ui.SetupWizard.Bucket.AccessKeyId": "액세스 키 ID", + "Ui.SetupWizard.Bucket.BucketName": "버킷 이름", + "Ui.SetupWizard.Bucket.EndpointUrl": "엔드포인트 URL", + "Ui.SetupWizard.Bucket.FolderPrefix": "Folder Prefix", + "Ui.SetupWizard.Bucket.FolderPrefixDesc": "버킷 내 특정 폴더에 데이터를 저장하려면 여기에 폴더 접두사를 지정할 수 있습니다. 비워 두면 버킷 루트에 저장됩니다.", + "Ui.SetupWizard.Bucket.InternalApiDesc": "CORS 문제를 피할 수 없다면 이 옵션을 시도할 수 있습니다. Obsidian의 내부 API를 사용해 S3 서버와 통신합니다. 웹 표준을 따르지는 않지만 동작합니다. 향후 Obsidian 버전에서 깨질 수 있습니다.", + "Ui.SetupWizard.Bucket.PlaceholderAccessKeyId": "액세스 키 ID 입력", + "Ui.SetupWizard.Bucket.PlaceholderBucketName": "버킷 이름 입력", + "Ui.SetupWizard.Bucket.PlaceholderFolderPrefix": "폴더 접두사 입력 (선택 사항)", + "Ui.SetupWizard.Bucket.PlaceholderRegion": "리전 입력 (예: us-east-1, R2는 auto)", + "Ui.SetupWizard.Bucket.PlaceholderSecretAccessKey": "비밀 액세스 키 입력", + "Ui.SetupWizard.Bucket.Region": "리전", + "Ui.SetupWizard.Bucket.SecretAccessKey": "비밀 액세스 키", + "Ui.SetupWizard.Bucket.Title": "S3/MinIO/R2 구성", + "Ui.SetupWizard.Bucket.UseInternalApi": "내부 API 사용", + "Ui.SetupWizard.Bucket.UsePathStyleAccess": "경로 스타일 액세스 사용", + "Ui.SetupWizard.Common.AdvancedSettings": "고급 설정", + "Ui.SetupWizard.Common.Back": "뒤로", + "Ui.SetupWizard.Common.Cancel": "취소", + "Ui.SetupWizard.Common.CheckingConnection": "연결을 확인하는 중입니다. 잠시 기다려 주세요.", + "Ui.SetupWizard.Common.ContinueAnyway": "그래도 계속", + "Ui.SetupWizard.Common.CustomHeaders": "사용자 지정 헤더", + "Ui.SetupWizard.Common.ErrorConnectionTest": "연결 테스트 중 오류가 발생했습니다: ${error}", + "Ui.SetupWizard.Common.ErrorConnectServer": "서버에 연결하지 못했습니다. 설정을 확인하세요.", + "Ui.SetupWizard.Common.ErrorConnectServerDetail": "서버에 연결하지 못했습니다: ${error}", + "Ui.SetupWizard.Common.ErrorCreateReplicator": "복제기 인스턴스를 만들지 못했습니다.", + "Ui.SetupWizard.Common.ExperimentalSettings": "실험적 설정", + "Ui.SetupWizard.Common.HttpsOnlyMobile": "Obsidian 모바일에서는 보안 연결(HTTPS)만 사용할 수 있습니다.", + "Ui.SetupWizard.Common.ProceedSelectOption": "옵션을 선택해 주세요", + "Ui.SetupWizard.CouchDB.DatabaseName": "데이터베이스 이름", + "Ui.SetupWizard.CouchDB.DatabaseNameDesc": "데이터베이스 이름에는 대문자, 공백, 특수 문자를 사용할 수 없습니다. 밑줄(_)로 시작할 수도 없습니다.", + "Ui.SetupWizard.CouchDB.InternalApiDesc": "CORS 문제를 피할 수 없다면 이 옵션을 시도할 수 있습니다. Obsidian의 내부 API를 사용해 CouchDB 서버와 통신합니다. 웹 표준을 따르지는 않지만 동작합니다. 향후 Obsidian 버전에서 깨질 수 있습니다.", + "Ui.SetupWizard.CouchDB.JwtAlgorithm": "JWT 알고리즘", + "Ui.SetupWizard.CouchDB.JwtExpirationDuration": "JWT 만료 시간(분)", + "Ui.SetupWizard.CouchDB.JwtKey": "JWT 키", + "Ui.SetupWizard.CouchDB.JwtKeyDesc": "HS256/HS512 알고리즘에는 공유 비밀 키를 입력하세요. ES256/ES512 알고리즘에는 pkcs8 PEM 형식의 개인 키를 입력하세요.", + "Ui.SetupWizard.CouchDB.JwtKeyId": "JWT Key ID (kid)", + "Ui.SetupWizard.CouchDB.JwtSubject": "JWT Subject (sub)", + "Ui.SetupWizard.CouchDB.JwtWarning": "JWT(JSON Web Token) 인증을 사용하면 토큰으로 CouchDB 서버에 안전하게 인증할 수 있습니다. CouchDB 서버가 JWT를 허용하도록 구성되어 있고 제공한 키와 설정이 서버 구성과 일치하는지 확인하세요. 이 기능은 아직 충분히 검증되지 않았습니다.", + "Ui.SetupWizard.CouchDB.Password": "비밀번호", + "Ui.SetupWizard.CouchDB.PlaceholderDatabaseName": "데이터베이스 이름 입력", + "Ui.SetupWizard.CouchDB.PlaceholderJwtKey": "JWT 비밀 키 또는 개인 키 입력", + "Ui.SetupWizard.CouchDB.PlaceholderJwtKeyId": "JWT Key ID 입력", + "Ui.SetupWizard.CouchDB.PlaceholderJwtSubject": "JWT Subject(CouchDB 사용자 이름) 입력", + "Ui.SetupWizard.CouchDB.PlaceholderPassword": "비밀번호 입력", + "Ui.SetupWizard.CouchDB.PlaceholderUsername": "사용자 이름 입력", + "Ui.SetupWizard.CouchDB.Title": "CouchDB 구성", + "Ui.SetupWizard.CouchDB.Url": "서버 URL", + "Ui.SetupWizard.CouchDB.UseInternalApi": "내부 API 사용", + "Ui.SetupWizard.CouchDB.UseJwtAuthentication": "JWT 인증 사용", + "Ui.SetupWizard.CouchDB.Username": "사용자 이름", + "Ui.SetupWizard.CouchDBCheck.DetectAndFix": "CouchDB 문제 감지 및 수정", + "Ui.SetupWizard.CouchDBCheck.Fix": "수정", + "Ui.SetupWizard.E2EE.AlgorithmGuidance": "대부분의 경우 기본 알고리즘(${algorithm})을 사용하는 것이 좋습니다. 기존 Vault가 다른 형식으로 암호화되어 있는 경우에만 이 설정이 필요합니다.", + "Ui.SetupWizard.E2EE.AlgorithmWarning": "암호화 알고리즘을 변경하면 이전에 다른 알고리즘으로 암호화된 데이터에 접근할 수 없습니다. 데이터 접근을 유지하려면 모든 장치가 같은 알고리즘을 사용하도록 설정하세요.", + "Ui.SetupWizard.E2EE.EncryptionAlgorithm": "암호화 알고리즘", + "Ui.SetupWizard.Fetch.BackupDone": "Vault 백업을 만들었습니다.", + "Ui.SetupWizard.Fetch.BackupQuestion": "계속하기 전에 백업을 만들었습니까?", + "Ui.SetupWizard.Fetch.BackupRecommendation": "Vault 폴더를 안전한 위치에 복사해 두는 것을 권장합니다. 많은 충돌이 발생하거나 잘못된 대상으로 동기화했을 때 보호 장치가 됩니다.", + "Ui.SetupWizard.Fetch.BackupSkipped": "위험을 이해했으며 백업 없이 계속합니다.", + "Ui.SetupWizard.Fetch.BackupUnable": "Vault 백업을 만들 수 없습니다.", + "Ui.SetupWizard.Fetch.BackupUnableNote": "위험을 이해했으며 그래도 계속하려면 이 항목을 선택하세요.", + "Ui.SetupWizard.Fetch.BackupUnableWarning": "계속하기 전에 백업을 만드는 것을 강력히 권장합니다. 백업 없이 계속하면 데이터가 손실될 수 있습니다.", + "Ui.SetupWizard.Fetch.ConflictNote": "또한 서버 데이터에 이미 충돌이 있으면 그대로 이 기기에 동기화되며, 로컬에서 직접 해결해야 합니다.", + "Ui.SetupWizard.Fetch.Guidance": "서버의 최신 데이터를 사용하여 이 기기의 로컬 데이터베이스를 다시 만듭니다. 이 작업은 동기화 불일치를 해결하고 올바른 동작을 복구하기 위한 것입니다.", + "Ui.SetupWizard.Fetch.ImportantBody": "이 기기의 Vault에 아직 동기화되지 않은 변경 사항이 있으면 초기화 후 서버 버전과 갈라질 수 있습니다. 그 결과 많은 파일 충돌이 발생할 수 있습니다.", + "Ui.SetupWizard.Fetch.ImportantTitle": "중요 알림", + "Ui.SetupWizard.Fetch.PreventFetchConfig": "서버에서 구성 가져오기 방지", + "Ui.SetupWizard.Fetch.Proceed": "초기화 후 동기화 재개", + "Ui.SetupWizard.Fetch.Title": "이 기기의 동기화 초기화", + "Ui.SetupWizard.Fetch.UnbalancedNote": "이 경우 Self-hosted LiveSync는 모든 파일의 메타데이터를 다시 만들고 의도적으로 충돌을 생성합니다. 파일 내용이 같으면 이러한 충돌은 자동으로 해결됩니다.", + "Ui.SetupWizard.Fetch.VaultIdentical": "이 Vault의 파일은 서버의 파일과 거의 같습니다.", + "Ui.SetupWizard.Fetch.VaultIdenticalDesc": "(예: 다른 컴퓨터에서 복원한 직후이거나 백업에서 복구한 경우)", + "Ui.SetupWizard.Fetch.VaultIndependent": "이 Vault가 비어 있거나 서버에 없는 새 파일만 포함하고 있습니다.", + "Ui.SetupWizard.Fetch.VaultIndependentDesc": "(예: 새 스마트폰에서 처음 설정하거나 깨끗한 상태에서 시작하는 경우)", + "Ui.SetupWizard.Fetch.VaultQuestion": "새 충돌 생성을 최소화하려면 현재 Vault 상태를 가장 잘 설명하는 항목을 선택하세요. 선택한 내용에 따라 애플리케이션이 가장 적절한 방식으로 파일을 확인합니다.", + "Ui.SetupWizard.Fetch.VaultUnbalanced": "이 Vault의 파일과 서버 사이에 차이가 있을 수 있습니다.", + "Ui.SetupWizard.Fetch.VaultUnbalancedDesc": "(예: 오프라인 상태에서 많은 파일을 편집한 뒤)", + "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.Log.E2EEConfigurationCancelled": "E2EE 구성이 취소되었습니다.", + "Ui.SetupWizard.Log.ManualConfigurationCancelled": "수동 구성이 취소되었습니다.", + "Ui.SetupWizard.Log.NoSettingsChanges": "설정 변경 사항이 감지되지 않았습니다. 마법사 설정 적용을 건너뜁니다.", + "Ui.SetupWizard.Log.OnboardingCancelled": "사용자가 온보딩을 취소했습니다.", + "Ui.SetupWizard.Log.QrCodeDialogClosed": "QR 코드 대화 상자가 닫혔습니다.", + "Ui.SetupWizard.Log.QrCodeResult": "QR 코드 결과: ${result}", + "Ui.SetupWizard.Log.SettingApplied": "설정이 적용되었습니다", + "Ui.SetupWizard.Log.SettingsApplied": "마법사 설정이 적용되었습니다.", + "Ui.SetupWizard.Log.SetupUriDialogCancelled": "Setup URI 대화 상자가 취소되었습니다.", + "Ui.SetupWizard.Log.SetupUriDialogClosed": "Setup URI 대화 상자가 닫혔습니다.", + "Ui.SetupWizard.Log.UserCancelledApplyingSettings": "사용자가 마법사 설정 적용을 취소했습니다.", + "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.P2P.AutoBroadcast": "변경 사항 자동 브로드캐스트", + "Ui.SetupWizard.P2P.AutoBroadcastDesc": "변경 사항 자동 브로드캐스트를 활성화하면 수동 작업 없이 연결된 피어에 변경 사항이 자동으로 브로드캐스트됩니다. 피어가 이 장치의 변경 사항을 가져오도록 요청합니다.", + "Ui.SetupWizard.P2P.AutoStart": "P2P 연결 자동 시작", + "Ui.SetupWizard.P2P.AutoStartDesc": "P2P 연결 자동 시작을 활성화하면 플러그인이 시작될 때 P2P 연결이 자동으로 시작됩니다.", + "Ui.SetupWizard.P2P.DevicePeerId": "장치 피어 ID", + "Ui.SetupWizard.P2P.Enabled": "사용", + "Ui.SetupWizard.P2P.ErrorConnectPeers": "다른 피어에 연결하지 못했습니다: ${error}", + "Ui.SetupWizard.P2P.GenerateRandomId": "무작위 ID 생성", + "Ui.SetupWizard.P2P.GroupId": "그룹 ID", + "Ui.SetupWizard.P2P.GroupPassphraseDesc": "그룹 ID와 암호 구문은 장치 그룹을 식별하는 데 사용됩니다. 동기화하려는 모든 장치에서 동일한 그룹 ID와 암호 구문을 사용하세요. 그룹 ID는 생성된 형식으로 제한되지 않으며 원하는 문자열을 사용할 수 있습니다.", + "Ui.SetupWizard.P2P.NoPeersFound": "설정은 올바른 것 같지만 다른 피어를 찾지 못했습니다.", + "Ui.SetupWizard.P2P.PlaceholderRelayUrl": "릴레이 URL 입력", + "Ui.SetupWizard.P2P.PlaceholderTurnCredential": "TURN 자격 증명 입력", + "Ui.SetupWizard.P2P.PlaceholderTurnUsername": "TURN 사용자 이름 입력", + "Ui.SetupWizard.P2P.PublicTurnWarning": "공용 TURN 서버를 사용하면 데이터가 타사 서버를 통해 중계되므로 개인 정보 영향이 있을 수 있습니다. 데이터가 암호화되어 있어도 존재 자체는 알려질 수 있습니다. 사용하기 전에 TURN 서버 제공자와 네트워크 관리자를 신뢰할 수 있는지 확인하세요. 가능하다면 자신의 FQDN용 TURN 서버를 설정하는 것을 고려하세요.", + "Ui.SetupWizard.P2P.RelayUrl": "릴레이 URL", + "Ui.SetupWizard.P2P.Title": "P2P 구성", + "Ui.SetupWizard.P2P.TurnCredential": "TURN 자격 증명", + "Ui.SetupWizard.P2P.TurnServerDesc": "TURN 서버 설정은 엄격한 NAT 또는 방화벽 때문에 직접 P2P 연결이 차단되는 경우에만 필요합니다. 대부분의 경우 비워 둘 수 있습니다.", + "Ui.SetupWizard.P2P.TurnServerUrls": "TURN 서버 URL(쉼표로 구분)", + "Ui.SetupWizard.P2P.TurnUsername": "TURN 사용자 이름", + "Ui.SetupWizard.P2P.UseDefaultRelay": "vrtmrz 릴레이 사용", + "Ui.SetupWizard.Rebuild.BackupBeforeProceeding": "물론 계속하기 전에 데이터를 백업할 수 있습니다.", + "Ui.SetupWizard.Rebuild.BackupDone": "Vault 백업을 만들었습니다.", + "Ui.SetupWizard.Rebuild.BackupQuestion": "계속하기 전에 백업을 만들었습니까?", + "Ui.SetupWizard.Rebuild.BackupSkipped": "위험을 이해했으며 백업 없이 계속합니다.", + "Ui.SetupWizard.Rebuild.BackupUnable": "Vault 백업을 만들 수 없습니다.", + "Ui.SetupWizard.Rebuild.BackupUnableAdvice": "새 동기화 대상을 만들고 그곳에 데이터를 재구축하는 것이 좋습니다. 그런 다음 각 다른 기기에서 새 원격으로 새 Vault에 하나씩 동기화하세요.", + "Ui.SetupWizard.Rebuild.BackupWarning": "매우 강력한 작업입니다. Vault 폴더를 안전한 위치에 복사해 두는 것을 강력히 권장합니다.", + "Ui.SetupWizard.Rebuild.ConfirmDataLoss": "다른 스마트폰이나 컴퓨터에서 만든 모든 변경 사항이 손실될 수 있음을 이해했습니다.", + "Ui.SetupWizard.Rebuild.ConfirmIrreversible": "이 작업은 실행 후 되돌릴 수 없음을 이해했습니다.", + "Ui.SetupWizard.Rebuild.ConfirmSyncDisabled": "다른 기기는 더 이상 동기화할 수 없으며 동기화 정보를 초기화해야 함을 이해했습니다.", + "Ui.SetupWizard.Rebuild.ConfirmTitle": "다음 내용을 확인하세요", + "Ui.SetupWizard.Rebuild.Guidance": "이 절차는 먼저 서버의 기존 동기화 데이터를 모두 삭제합니다. 그런 다음 이 기기의 현재 Vault 상태를 유일한 기준 복사본으로 사용하여 서버 데이터를 완전히 다시 만듭니다.", + "Ui.SetupWizard.Rebuild.PreventFetchConfig": "서버에서 구성 가져오기 방지", + "Ui.SetupWizard.Rebuild.Proceed": "이해했습니다, 서버 덮어쓰기", + "Ui.SetupWizard.Rebuild.ResetNotifyOtherDevices": "원격을 초기화하면 다른 기기에도 알림이 표시됩니다.", + "Ui.SetupWizard.Rebuild.ResolveOnOtherDevices": "다른 기기에서 이 문제를 해결하는 방법이 있습니다.", + "Ui.SetupWizard.Rebuild.Title": "최종 확인: 이 기기의 파일로 서버 데이터 덮어쓰기", + "Ui.SetupWizard.Rebuild.WhenToUse": "서버 데이터가 완전히 손상되었거나, 다른 모든 기기의 변경 사항이 더 이상 필요하지 않거나, 데이터베이스 크기가 Vault 크기에 비해 비정상적으로 커진 경우와 같은 예외적인 상황에서만 이 작업을 수행해야 합니다.", + "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": "원격 서버 설정", + "Ui.UseSetupURI.ButtonCancel": "취소", + "Ui.UseSetupURI.ButtonProceed": "설정 테스트 후 계속", + "Ui.UseSetupURI.ErrorFailedToParse": "Setup-URI를 해석하지 못했습니다.", + "Ui.UseSetupURI.ErrorPassphraseRequired": "암호 구문이 필요합니다.", + "Ui.UseSetupURI.Guidance": "서버 설치 중 또는 다른 기기에서 생성된 Setup URI와 Vault 암호 구문을 입력하세요.", + "Ui.UseSetupURI.InvalidInfo": "Setup-URI가 유효하지 않은 것 같습니다. 올바르게 복사했는지 확인하세요.", + "Ui.UseSetupURI.Label": "Setup-URI", + "Ui.UseSetupURI.LabelPassphrase": "암호 구문", + "Ui.UseSetupURI.PlaceholderPassphrase": "암호 구문 입력", + "Ui.UseSetupURI.Title": "Setup URI 입력", + "Ui.UseSetupURI.ValidMessage": "Setup-URI가 유효하며 사용할 준비가 되었습니다.", "Unique name between all synchronized devices. To edit this setting, please disable customization sync once.": "모든 동기화된 기기 간 고유 이름입니다. 이 설정을 편집하려면 사용자 설정 동기화를 한 번 비활성화해 주세요.", "Use a custom passphrase": "사용자 지정 암호문구 사용", "Use a Setup URI (Recommended)": "설정 URI 사용(권장)", "Use Custom HTTP Handler": "커스텀 HTTP 핸들러 사용", "Use dynamic iteration count": "동적 반복 횟수 사용", + "Use Only Local Chunks": "로컬 청크만 사용", + "Use Request API to avoid `inevitable` CORS problem": "피할 수 없는 CORS 문제를 피하기 위해 Request API 사용", "Use Segmented-splitter": "의미 기반 분할 사용", "Use splitting-limit-capped chunk splitter": "분할 제한 상한 청크 분할기 사용", "Use the trash bin": "휴지통 사용", "Use timeouts instead of heartbeats": "하트비트 대신 타임아웃 사용", "username": "사용자명", "Username": "사용자명", + "V1: Legacy": "V1: 레거시", + "V2: Simple (Default)": "V2: 단순 (기본값)", + "V2.5: Lexical chunks": "V2.5: 어휘 청크", + "V3: Fine deduplication": "V3: 세밀한 중복 제거", "Verbose Log": "자세한 로그", "Verify all": "모두 검증", "Verify and repair all files": "모든 파일 검증 및 복구", @@ -788,11 +1321,14 @@ "We will now proceed with the server configuration.": "이제 서버 구성을 진행하겠습니다。", "Welcome to Self-hosted LiveSync": "Self-hosted LiveSync에 오신 것을 환영합니다", "When you save a file in the editor, start a sync automatically": "편집기에서 파일을 저장할 때 자동으로 동기화를 시작합니다", + "While enabled, it causes very performance impact but debugging replication testing and other features will be enabled. Please disable this if you have not read the source code. Requires restart of Obsidian.": "활성화하면 성능에 큰 영향을 주지만 디버깅, 복제 테스트 및 기타 기능이 활성화됩니다. 소스 코드를 읽지 않았다면 비활성화하세요. Obsidian 재시작이 필요합니다.", "Write credentials in the file": "파일에 자격 증명 저장", "Write logs into the file": "파일에 로그 기록", "xxhash32 (Fast but less collision resistance)": "xxhash32 (빠르지만 충돌 저항성은 낮음)", "xxhash64 (Fastest)": "xxhash64 (가장 빠름)", + "xxhash64 is the current default.": "현재 기본값은 xxhash64입니다.", "Yes, I want to add this device to my existing synchronisation": "예, 이 장치를 기존 동기화에 추가하겠습니다", "Yes, I want to set up a new synchronisation": "예, 새 동기화를 설정하겠습니다", - "You are adding this device to an existing synchronisation setup.": "이 장치를 기존 동기화 구성에 추가하려고 합니다。" + "You are adding this device to an existing synchronisation setup.": "이 장치를 기존 동기화 구성에 추가하려고 합니다。", + "You can enable this setting to process the files with size mismatches, these files can be created by some APIs or integrations.": "크기가 일치하지 않는 파일을 처리하려면 이 설정을 활성화할 수 있습니다. 이러한 파일은 일부 API나 통합 기능에서 생성될 수 있습니다." } diff --git a/src/common/messagesJson/ru.json b/src/common/messagesJson/ru.json index 6712d66d..150d6c65 100644 --- a/src/common/messagesJson/ru.json +++ b/src/common/messagesJson/ru.json @@ -3,11 +3,10 @@ "(BETA) Always overwrite with a newer file": "(БЕТА) Всегда перезаписывать более новым файлом", "(Beta) Use ignore files": "(Бета) Использовать файлы игнорирования", "(Days passed, 0 to disable automatic-deletion)": "(Дней прошло, 0 для отключения автоматического удаления)", - "(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.", - "(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.", + "(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.": "(например, читать чанки онлайн) Если эта опция включена, LiveSync будет читать чанки напрямую онлайн вместо локальной репликации. Рекомендуется увеличить пользовательский размер чанка.", + "(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.": "(МБ) Если задано это значение, изменения локальных и удалённых файлов, размер которых превышает его, будут пропускаться. Если файл снова станет меньше, будет использована более новая версия.", "(Mega chars)": "(Мега символов)", - "(Not recommended) If set, credentials will be stored in the file": "(Не рекомендуется) Если установлено, учётные данные будут сохранены в файле", - "(Not recommended) If set, credentials will be stored in the file.": "(Not recommended) If set, credentials will be stored in the file.", + "(Not recommended) If set, credentials will be stored in the file.": "(Не рекомендуется) Если включено, учётные данные будут сохранены в файле.", "(Obsolete) Use an old adapter for compatibility": "(Устарело) Использовать старый адаптер для совместимости", "(RegExp) Empty to sync all files. Set filter as a regular expression to limit synchronising files.": "(RegExp) Оставьте пустым, чтобы синхронизировать все файлы. Укажите регулярное выражение, чтобы ограничить синхронизируемые файлы.", "(RegExp) If this is set, any changes to local and remote files that match this will be skipped.": "(RegExp) Если задано, любые изменения локальных и удалённых файлов, соответствующих этому шаблону, будут пропускаться.", @@ -18,8 +17,10 @@ "Access Key": "Ключ доступа", "Activate": "Активировать", "Active Remote Configuration": "Активная удалённая конфигурация", + "Active Remote Type": "Активный тип удаленного подключения", "Add default patterns": "Добавить шаблоны по умолчанию", "Add new connection": "Добавить подключение", + "Advanced": "Дополнительно", "All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.": "У всех устройств одинаковое значение прогресса (${progress}). Похоже, ваши устройства синхронизированы, и можно продолжать Garbage Collection.", "Always prompt merge conflicts": "Всегда запрашивать разрешение конфликтов слияния", "Analyse": "Анализировать", @@ -28,6 +29,8 @@ "Apply Latest Change if Conflicting": "Применить последнее изменение при конфликте", "Apply preset configuration": "Применить предустановленную конфигурацию", "Ask a passphrase at every launch": "Запрашивать парольную фразу при каждом запуске", + "Automatically broadcast changes to connected peers": "Автоматически рассылать изменения подключенным пирам", + "Automatically start P2P connection on launch": "Автоматически запускать P2P-подключение при запуске", "Automatically Sync all files when opening Obsidian.": "Автоматически синхронизировать все файлы при открытии Obsidian.", "Back": "Назад", "Back to non-configured": "Вернуть в состояние без настройки", @@ -35,14 +38,14 @@ "Batch limit": "Пакетный лимит", "Batch size": "Размер пакета", "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.": "До v0.17.16 мы использовали старый адаптер для локальной базы данных. Теперь предпочтителен новый адаптер. Однако требуется перестроение локальной базы данных.", - "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.", + "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": "Имя бакета", "Cancel": "Отмена", "Cancel Garbage Collection": "Отменить Garbage Collection", "Check": "Проверить", "Check and convert non-path-obfuscated files": "Проверить и преобразовать файлы без обфускации пути", "Check for documents that have not been converted to path-obfuscated IDs and convert them if necessary.": "Проверяет документы, которые ещё не были преобразованы в path-obfuscated ID, и при необходимости преобразует их.", + "Chunk Splitter": "Разделитель фрагментов", "cmdConfigSync.showCustomizationSync": "Показать синхронизацию настроек", "Comma separated `.gitignore, .dockerignore`": "Через запятую `.gitignore, .dockerignore`", "Compaction in progress on remote database...": "Выполняется компакция удалённой базы данных...", @@ -72,6 +75,7 @@ "CouchDB Connection Tweak": "Настройки подключения CouchDB", "Cross-platform": "Кроссплатформенные", "Current adapter: {adapter}": "Текущий адаптер: {adapter}", + "Customization sync": "Синхронизация настроек", "Customization Sync": "Синхронизация настроек", "Customization Sync (Beta3)": "Синхронизация настроек (Beta3)", "Data Compression": "Сжатие данных", @@ -88,20 +92,13 @@ "Delete old metadata of deleted files on start-up": "Удалять старые метаданные удалённых файлов при запуске", "Delete Remote Configuration": "Удалить удалённую конфигурацию", "Delete remote configuration '{name}'?": "Удалить удалённую конфигурацию '{name}'?", - "descConnectSetupURI": "Это рекомендуемый способ настройки Self-hosted LiveSync с помощью Setup URI.", - "descCopySetupURI": "Идеально для настройки нового устройства!", - "descEnableLiveSync": "Включайте это только после настройки одного из двух вариантов выше.", - "descFetchConfigFromRemote": "Загрузить необходимые настройки с уже настроенного удалённого сервера.", - "descManualSetup": "Не рекомендуется, но полезно, если у вас нет Setup URI", - "descTestDatabaseConnection": "Открыть подключение к базе данных.", - "descValidateDatabaseConfig": "Проверяет и исправляет потенциальные проблемы с конфигурацией базы данных.", "desktop": "рабочий стол", "Developer": "Разработчик", "Device": "Устройство", "Device name": "Имя устройства", "Device Setup Method": "Способ настройки устройства", - "dialog.yourLanguageAvailable": "Self-hosted LiveSync имеет переводы для вашего языка, поэтому была включена настройка языка Display language.\n\nПримечание: Не все сообщения переведены. Мы ждём ваших предложений!\nПримечание 2: При создании Issue, пожалуйста, вернитесь к lang-def, затем сделайте скриншоты, сообщения и логи. Это можно сделать в настройках.\nНадеемся, вам будет удобно использовать!", - "dialog.yourLanguageAvailable.btnRevertToDefault": "Оставить lang-def", + "dialog.yourLanguageAvailable": "Self-hosted LiveSync имеет переводы для вашего языка, поэтому была включена настройка %{Display language}.\n\nПримечание: не все сообщения переведены. Мы ждём ваших предложений!\nПримечание 2: если вы создаёте Issue, **сначала вернитесь к %{lang-def}**, а затем сделайте скриншоты, сообщения и логи. Это можно сделать в диалоге настроек.\nНадеемся, вам будет удобно пользоваться!", + "dialog.yourLanguageAvailable.btnRevertToDefault": "Оставить %{lang-def}", "dialog.yourLanguageAvailable.Title": "Доступен перевод!", "Disables all synchronization and restart.": "Отключает всю синхронизацию и перезапускает приложение.", "Disables logging, only shows notifications. Please disable if you report an issue.": "Отключает логирование, показывает только уведомления. Пожалуйста, отключите при сообщении о проблеме.", @@ -117,11 +114,11 @@ "Doctor.Button.No": "Нет", "Doctor.Button.Skip": "Оставить как есть", "Doctor.Button.Yes": "Да", - "Doctor.Dialogue.Main": "Привет! Диагностика настроек активирована из-за activateReason!\nК сожалению, некоторые настройки были обнаружены как потенциальные проблемы.\nНе волнуйтесь. Давайте решим их по очереди.\n\nСообщаем вам заранее, мы спросим о следующих пунктах.\n\nissues\n\nНачнём?", - "Doctor.Dialogue.MainFix": "name\n\n| Текущее | Идеальное |\n|:---:|:---:|\n| current | ideal |\n\n**Уровень рекомендации:** level\n\n### Почему это было обнаружено?\n\nreason\n\nnote\n\nИсправить на идеальное значение?", + "Doctor.Dialogue.Main": "Здравствуйте! Диагностика настроек была активирована по причине: ${activateReason}!\nК сожалению, некоторые настройки были определены как потенциальные проблемы.\nНе волнуйтесь. Давайте решим их по очереди.\n\nЧтобы заранее сообщить вам, мы спросим о следующих пунктах.\n\n${issues}\n\nНачнём?", + "Doctor.Dialogue.MainFix": "\n## ${name}\n\n| Текущее | Рекомендуемое |\n|:---:|:---:|\n| ${current} | ${ideal} |\n\n**Уровень рекомендации:** ${level}\n\n### Почему это было обнаружено?\n\n${reason}\n\n${note}\n\nИсправить до рекомендуемого значения?", "Doctor.Dialogue.Title": "Диагностика Self-hosted LiveSync", "Doctor.Dialogue.TitleAlmostDone": "Почти готово!", - "Doctor.Dialogue.TitleFix": "Исправление проблемы current/total", + "Doctor.Dialogue.TitleFix": "Исправление проблемы ${current}/${total}", "Doctor.Level.Must": "Обязательно", "Doctor.Level.Necessary": "Необходимо", "Doctor.Level.Optional": "Опционально", @@ -131,22 +128,30 @@ "Doctor.Message.RebuildRequired": "Внимание! Для применения требуется перестроение!", "Doctor.Message.SomeSkipped": "Некоторые проблемы оставлены как есть. Спросить снова при следующем запуске?", "Doctor.RULES.E2EE_V02500.REASON": "Сквозное шифрование стало более надёжным и быстрым. Предыдущее E2EE было скомпрометировано. Следует применить как можно скорее.", + "Document History": "История документа", "Duplicate": "Дублировать", "Duplicate remote": "Дублировать удалённую конфигурацию", "E2EE Configuration": "Конфигурация сквозного шифрования", "Edge case addressing (Behaviour)": "Обработка особых случаев (поведение)", "Edge case addressing (Database)": "Обработка особых случаев (база данных)", "Edge case addressing (Processing)": "Обработка особых случаев (обработка)", + "Effectively a directory. Should end with `/`. e.g., `vault-name/`.": "Фактически это каталог. Должен заканчиваться на `/`, например `vault-name/`.", "Emergency restart": "Аварийный перезапуск", "Enable advanced features": "Включить расширенные функции", + "Enable advanced mode": "Включить расширенный режим", "Enable customization sync": "Включить синхронизацию настроек", "Enable Developers' Debug Tools.": "Включить инструменты разработчика.", "Enable edge case treatment features": "Включить функции обработки граничных случаев", + "Enable forcePathStyle": "Включить forcePathStyle", + "Enable P2P Synchronization": "Включить P2P-синхронизацию", + "Enable per-file customization sync": "Включить синхронизацию настроек по файлам", + "Enable power user mode": "Включить режим опытного пользователя", "Enable poweruser features": "Включить функции для опытных пользователей", "Enable this if your Object Storage doesn't support CORS": "Включите, если ваше объектное хранилище не поддерживает CORS", "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.": "Шифровать содержимое на удалённой базе данных. Рекомендуется включить при использовании функции синхронизации плагина.", "Encrypting sensitive configuration items": "Шифрование конфиденциальных настроек", + "Encryption passphrase. 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.": "Парольная фраза шифрования. При изменении нужно перезаписать базу данных сервера новыми (зашифрованными) файлами.", "End-to-End Encryption": "Сквозное шифрование", "Endpoint URL": "URL конечной точки", @@ -162,8 +167,10 @@ "Fetch chunks on demand": "Загружать чанки по требованию", "Fetch database with previous behaviour": "Загрузить базу данных с предыдущим поведением", "Fetch remote settings": "Получить настройки с удалённого хранилища", + "File prefix on the bucket": "Префикс файлов в бакете", "File to resolve conflict": "Файл для разрешения конфликта", "Filename": "Имя файла", + "Files with modification times greater than this value (in seconds since the Unix epoch) will not have their events reflected. Set to 0 to disable this limit.": "События файлов со временем изменения больше этого значения (в секундах с эпохи Unix) не будут отражаться. Установите 0, чтобы отключить ограничение.", "First, please select the option that best describes your current situation.": "Сначала выберите вариант, который лучше всего описывает вашу текущую ситуацию。", "Flag and restart": "Пометить и перезапустить", "Forces the file to be synced when opened.": "Принудительно синхронизировать файл при открытии.", @@ -176,27 +183,34 @@ "Garbage Collection: Scanned ${scanned} / ~${docCount}": "Garbage Collection: просканировано ${scanned} / ~${docCount}", "Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": "Garbage Collection: сканирование завершено. Всего чанков: ${totalChunks}, используемых чанков: ${usedChunks}", "Handle files as Case-Sensitive": "Обрабатывать файлы с учётом регистра", + "Hatch": "Инструменты", "Hidden Files": "Скрытые файлы", - "How to display network errors when the sync server is unreachable.": "Определяет, как отображать сетевые ошибки, если сервер синхронизации недоступен.", + "Hide completely": "Полностью скрыть", + "Highlight diff": "Подсветить различия", + "How to display network errors when the sync server is unreachable.": "Как показывать сетевые ошибки, когда сервер синхронизации недоступен.", "How would you like to configure the connection to your server?": "Как вы хотите настроить подключение к серверу?", "I am adding a device to an existing synchronisation setup": "Я добавляю устройство к существующей настройке синхронизации", "I am setting this up for the first time": "Я настраиваю это впервые", "I know my server details, let me enter them": "Я знаю параметры сервера, позвольте ввести их вручную", "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.": "Если включено, будет использоваться эффективная синхронизация настроек для каждого файла.", - "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.", + "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, changes will be automatically broadcasted to all connected peers. Notified peers will start fetching the changes.": "Если включено, изменения будут автоматически рассылаться всем подключенным пирам. Уведомленные пиры начнут получать изменения.", "If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker.": "Если включено, чанки будут разделены не более чем на 100 элементов.", + "If enabled, efficient per-file customization sync will be used. A minor migration is required when enabling this feature, and all devices must be updated to v0.23.18. Enabling this feature will result in losing compatibility with older versions.": "Если включено, будет использоваться эффективная синхронизация настроек по файлам. При включении требуется небольшая миграция, а все устройства должны быть обновлены до v0.23.18. После включения совместимость со старыми версиями будет потеряна.", "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.": "Если включено, файлы меньше 1КБ будут обрабатываться в основном потоке.", + "If enabled, the forcePathStyle option will be used for bucket operations.": "Если включено, для операций с бакетом будет использоваться forcePathStyle.", "If enabled, the notification of hidden files change will be suppressed.": "Если включено, уведомление об изменении скрытых файлов будет подавлено.", + "If enabled, the P2P connection will be automatically started when the application launches.": "Если включено, P2P-подключение будет автоматически запускаться при запуске приложения.", + "If enabled, the plugin will not attempt to connect to the remote database even if the chunk was not found locally.": "Если включено, плагин не будет пытаться подключаться к удаленной базе данных, даже если чанк не найден локально.", + "If enabled, the request API will be used to avoid `inevitable` CORS problems. This is a workaround and may not work in all cases. PLEASE READ THE DOCUMENTATION BEFORE USING THIS OPTION. This is a less-secure option.": "Если включено, request API будет использоваться для обхода «неизбежных» проблем CORS. Это обходной путь и он может работать не во всех случаях. ОБЯЗАТЕЛЬНО ПРОЧИТАЙТЕ ДОКУМЕНТАЦИЮ ПЕРЕД ИСПОЛЬЗОВАНИЕМ. Этот вариант менее безопасен.", + "If this enabled, all chunks will be stored with the revision made from its content.": "Если включено, все фрагменты будут сохраняться с ревизией, созданной из их содержимого.", "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).": "Если включено, все файлы обрабатываются с учётом регистра.", "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.": "Если установлено, изменения файлов из списка игнорирования будут пропущены.", - "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.", - "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.": "Если эта опция включена, PouchDB будет держать соединение открытым 60 секунд.", - "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.", + "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.": "Если эта опция включена, PouchDB будет удерживать соединение открытым 60 секунд, а если за это время не поступит изменений, закроет и снова откроет сокет вместо того, чтобы держать соединение открытым бесконечно. Это полезно, если прокси ограничивает длительность запросов, но может увеличить потребление ресурсов.", "Ignore and Proceed": "Игнорировать и продолжить", "Ignore files": "Файлы для игнорирования", "Ignore patterns": "Шаблоны исключения", @@ -205,16 +219,16 @@ "Initialise all journal history, On the next sync, every item will be received and sent.": "Инициализирует всю историю журнала. При следующей синхронизации каждый элемент будет заново получен и отправлен.", "Interval (sec)": "Интервал (сек)", "K.exp": "Экспериментальная", - "K.long_p2p_sync": "title_p2p_sync", - "K.P2P": "Peer-к-Peer", - "K.Peer": "Устройство", - "K.ScanCustomization": "Scan customization", + "K.long_p2p_sync": "%{title_p2p_sync}", + "K.P2P": "%{Peer}-%{Peer}", + "K.Peer": "Узел", + "K.ScanCustomization": "Сканировать настройки", "K.short_p2p_sync": "P2P Синхр.", "K.title_p2p_sync": "Синхронизация между устройствами", "Keep empty folder": "Сохранять пустые папки", "lang_def": "По умолчанию", "lang-de": "Deutsch", - "lang-def": "lang_def", + "lang-def": "%{lang_def}", "lang-es": "Español", "lang-fr": "Français", "lang-ja": "日本語", @@ -228,15 +242,15 @@ "liveSyncReplicator.beforeLiveSync": "Перед LiveSync запускаем OneShot...", "liveSyncReplicator.cantReplicateLowerValue": "Нельзя реплицировать с меньшим значением.", "liveSyncReplicator.checkingLastSyncPoint": "Поиск последней точки синхронизации.", - "liveSyncReplicator.couldNotConnectTo": "Не удалось подключиться к uri : name\n(db)", - "liveSyncReplicator.couldNotConnectToRemoteDb": "Не удалось подключиться к удалённой базе данных: d", + "liveSyncReplicator.couldNotConnectTo": "Не удалось подключиться к ${uri} : ${name}\n(${db})", + "liveSyncReplicator.couldNotConnectToRemoteDb": "Не удалось подключиться к удалённой базе данных: ${d}", "liveSyncReplicator.couldNotConnectToServer": "Не удалось подключиться к серверу.", - "liveSyncReplicator.couldNotConnectToURI": "Не удалось подключиться к uri:dbRet", + "liveSyncReplicator.couldNotConnectToURI": "Не удалось подключиться к ${uri}:${dbRet}", "liveSyncReplicator.couldNotMarkResolveRemoteDb": "Не удалось отметить удалённую базу данных как разрешённую.", "liveSyncReplicator.liveSyncBegin": "Начало LiveSync...", "liveSyncReplicator.lockRemoteDb": "Блокировка удалённой базы данных для предотвращения повреждения данных", "liveSyncReplicator.markDeviceResolved": "Отметить это устройство как «разрешённое».", - "liveSyncReplicator.oneShotSyncBegin": "Начало OneShot синхронизации... (syncMode)", + "liveSyncReplicator.oneShotSyncBegin": "Начало OneShot Sync... (${syncMode})", "liveSyncReplicator.remoteDbCorrupted": "Удалённая база данных новее или повреждена, убедитесь, что установлена последняя версия self-hosted-livesync", "liveSyncReplicator.remoteDbCreatedOrConnected": "Удалённая база данных создана или подключена", "liveSyncReplicator.remoteDbDestroyed": "Удалённая база данных уничтожена", @@ -244,11 +258,11 @@ "liveSyncReplicator.remoteDbMarkedResolved": "Удалённая база данных отмечена как разрешённая.", "liveSyncReplicator.replicationClosed": "Репликация закрыта", "liveSyncReplicator.replicationInProgress": "Репликация уже выполняется", - "liveSyncReplicator.retryLowerBatchSize": "Повтор с меньшим размером пакета: batch_size/batches_limit", + "liveSyncReplicator.retryLowerBatchSize": "Повтор с меньшим размером пакета: ${batch_size}/${batches_limit}", "liveSyncReplicator.unlockRemoteDb": "Разблокировка удалённой базы данных для предотвращения повреждения данных", - "liveSyncSetting.errorNoSuchSettingItem": "Такого параметра настройки не существует: key", - "liveSyncSetting.originalValue": "Оригинал: value", - "liveSyncSetting.valueShouldBeInRange": "Значение должно быть min < значение < max", + "liveSyncSetting.errorNoSuchSettingItem": "Такого элемента настройки не существует: ${key}", + "liveSyncSetting.originalValue": "Исходное значение: ${value}", + "liveSyncSetting.valueShouldBeInRange": "Значение должно быть в диапазоне ${min} < значение < ${max}", "liveSyncSettings.btnApply": "Применить", "Local Database Tweak": "Настройки локальной базы данных", "Lock": "Заблокировать", @@ -259,11 +273,15 @@ "logPane.pause": "Пауза", "logPane.title": "Лог Self-hosted LiveSync", "logPane.wrap": "Перенос", + "Maintenance": "Обслуживание", "Maximum delay for batch database updating": "Максимальная задержка пакетного обновления базы данных", + "Maximum file modification time for reflected file events": "Максимальное время изменения файла для отражаемых событий", "Maximum file size": "Максимальный размер файла", "Maximum Incubating Chunk Size": "Максимальный размер инкубируемого чанка", "Maximum Incubating Chunks": "Максимальное количество инкубируемых чанков", "Maximum Incubation Period": "Максимальный период инкубации", + "Maximum size of chunks to send in one request": "Максимальный размер фрагментов, отправляемых за один запрос", + "MB": "MB", "MB (0 to disable).": "МБ (0 для отключения).", "Memory cache": "Кэш в памяти", "Memory cache size (by total characters)": "Размер кэша памяти (по общему количеству символов)", @@ -272,17 +290,17 @@ "Minimum delay for batch database updating": "Минимальная задержка пакетного обновления базы данных", "Minimum interval for syncing": "Минимальный интервал синхронизации", "moduleCheckRemoteSize.logCheckingStorageSizes": "Проверка размеров хранилища", - "moduleCheckRemoteSize.logCurrentStorageSize": "Размер удалённого хранилища: measuredSize", - "moduleCheckRemoteSize.logExceededWarning": "Размер удалённого хранилища: measuredSize превысил notifySize", - "moduleCheckRemoteSize.logThresholdEnlarged": "Порог увеличен до sizeМБ", + "moduleCheckRemoteSize.logCurrentStorageSize": "Размер удалённого хранилища: ${measuredSize}", + "moduleCheckRemoteSize.logExceededWarning": "Размер удалённого хранилища ${measuredSize} превысил ${notifySize}", + "moduleCheckRemoteSize.logThresholdEnlarged": "Порог увеличен до ${size}MB", "moduleCheckRemoteSize.msgConfirmRebuild": "Это может занять некоторое время. Вы действительно хотите перестроить всё сейчас?", - "moduleCheckRemoteSize.msgDatabaseGrowing": "Ваша база данных увеличивается! Но не волнуйтесь, мы можем решить это сейчас.", + "moduleCheckRemoteSize.msgDatabaseGrowing": "**Ваша база данных становится больше!** Но не беспокойтесь, это можно исправить сейчас, до того как закончится место в удаленном хранилище.\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\n> [!WARNING]\n> Перед полной перестройкой убедитесь, что все устройства синхронизированы. Плагин постарается выполнить слияние насколько возможно.\n", "moduleCheckRemoteSize.msgSetDBCapacity": "Можно установить предупреждение о максимальной ёмкости базы данных.", "moduleCheckRemoteSize.option2GB": "2ГБ (Стандарт)", "moduleCheckRemoteSize.option800MB": "800МБ (Cloudant, fly.io)", "moduleCheckRemoteSize.optionAskMeLater": "Спросить позже", "moduleCheckRemoteSize.optionDismiss": "Отклонить", - "moduleCheckRemoteSize.optionIncreaseLimit": "увеличить до newMaxМБ", + "moduleCheckRemoteSize.optionIncreaseLimit": "увеличить до ${newMax}MB", "moduleCheckRemoteSize.optionNoWarn": "Нет, не уведомлять", "moduleCheckRemoteSize.optionRebuildAll": "Перестроить всё сейчас", "moduleCheckRemoteSize.titleDatabaseSizeLimitExceeded": "Размер удалённого хранилища превысил лимит", @@ -294,13 +312,13 @@ "moduleLiveSyncMain.logAdditionalSafetyScan": "Дополнительная проверка безопасности...", "moduleLiveSyncMain.logLoadingPlugin": "Загрузка плагина...", "moduleLiveSyncMain.logPluginInitCancelled": "Инициализация плагина отменена модулем", - "moduleLiveSyncMain.logPluginVersion": "Self-hosted LiveSync vmanifestVersion packageVersion", + "moduleLiveSyncMain.logPluginVersion": "Self-hosted LiveSync v${manifestVersion} ${packageVersion}", "moduleLiveSyncMain.logReadChangelog": "LiveSync обновлён, пожалуйста, прочитайте список изменений!", "moduleLiveSyncMain.logSafetyScanCompleted": "Дополнительная проверка безопасности завершена", "moduleLiveSyncMain.logSafetyScanFailed": "Дополнительная проверка безопасности не удалась в модуле", "moduleLiveSyncMain.logUnloadingPlugin": "Выгрузка плагина...", "moduleLiveSyncMain.logVersionUpdate": "LiveSync обновлён. В случае критических изменений автоматическая синхронизация временно отключена. Убедитесь, что все устройства обновлены перед включением.", - "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", + "moduleLiveSyncMain.msgScramEnabled": "Self-hosted LiveSync настроен так, чтобы игнорировать некоторые события. Это верно?\n\n| Тип | Статус | Примечание |\n|:---:|:---:|---|\n| События хранилища | ${fileWatchingStatus} | Каждое изменение будет игнорироваться |\n| События базы данных | ${parseReplicationStatus} | Каждое синхронизированное изменение будет отложено |\n\nХотите возобновить их и перезапустить Obsidian?\n\n> [!DETAILS]-\n> Эти флаги устанавливаются плагином во время перестроения или получения данных. Если процесс завершится ненормально, они могут остаться включёнными непреднамеренно.\n> Если вы не уверены, попробуйте повторно запустить эти процессы. Обязательно сделайте резервную копию своего Vault.", "moduleLiveSyncMain.optionKeepLiveSyncDisabled": "Оставить LiveSync отключённым", "moduleLiveSyncMain.optionResumeAndRestart": "Продолжить и перезапустить Obsidian", "moduleLiveSyncMain.titleScramEnabled": "Экстренная остановка включена", @@ -310,8 +328,8 @@ "moduleMigration.fix0256.buttons.checkItLater": "Проверить позже", "moduleMigration.fix0256.buttons.DismissForever": "Исправлено, больше не спрашивать", "moduleMigration.fix0256.buttons.fix": "Исправить", - "moduleMigration.fix0256.message": "Из-за недавней ошибки некоторые файлы могут быть неправильно сохранены.", - "moduleMigration.fix0256.messageUnrecoverable": "Файлы не могут быть исправлены на этом устройстве:", + "moduleMigration.fix0256.message": "Из-за недавней ошибки (в v0.25.6) некоторые файлы могли быть неправильно сохранены в базе данных синхронизации.\nМы просканировали файлы и нашли те, которые нужно исправить.\n\n**Файлы, готовые к исправлению:**\n\n${files}\n\nУ этих файлов есть совпадающий по размеру исходный файл в хранилище, поэтому они, скорее всего, восстановимы.\nМы можем использовать их для исправления базы данных. Нажмите кнопку \"Исправить\" ниже.\n\n${messageUnrecoverable}\n\nЕсли вы хотите запустить проверку снова, это можно сделать из Hatch.\n", + "moduleMigration.fix0256.messageUnrecoverable": "**Файлы, которые нельзя исправить на этом устройстве:**\n\n${filesNotRecoverable}\n\nУ этих файлов несогласованные метаданные, поэтому их нельзя исправить на этом устройстве (чаще всего невозможно определить, какая версия правильная).\nЧтобы восстановить их, проверьте другие устройства с помощью этой функции или восстановите файлы вручную из резервной копии.\n", "moduleMigration.fix0256.title": "Обнаружены повреждённые файлы", "moduleMigration.insecureChunkExist.buttons.fetch": "Я уже перестроил удалённую. Загрузить с удалённой", "moduleMigration.insecureChunkExist.buttons.later": "Сделаю позже", @@ -322,15 +340,15 @@ "moduleMigration.logBulkSendCorrupted": "Отправка чанков пакетами была включена, но эта функция была повреждена. Приносим извинения. Автоматически отключено.", "moduleMigration.logFetchRemoteTweakFailed": "Не удалось загрузить удалённые настройки", "moduleMigration.logLocalDatabaseNotReady": "Что-то пошло не так! Локальная база данных не готова", - "moduleMigration.logMigratedSameBehaviour": "Миграция на db:current с тем же поведением, что и раньше", - "moduleMigration.logMigrationFailed": "Миграция не удалась или отменена с old на current", + "moduleMigration.logMigratedSameBehaviour": "Выполнена миграция на db:${current} с тем же поведением, что и раньше", + "moduleMigration.logMigrationFailed": "Миграция с ${old} на ${current} не выполнена или отменена", "moduleMigration.logRedflag2CreationFail": "Не удалось создать redflag2", "moduleMigration.logRemoteTweakUnavailable": "Не удалось получить удалённые настройки", "moduleMigration.logSetupCancelled": "Настройка отменена, Self-hosted LiveSync ожидает вашей настройки!", "moduleMigration.msgFetchRemoteAgain": "Удалённая база данных, похоже, уже была мигрирована. Конфигурация этого устройства несовместима.", - "moduleMigration.msgInitialSetup": "Ваше устройство ещё не настроено. У вас есть Setup URI?", - "moduleMigration.msgRecommendSetupUri": "Мы рекомендуем сгенерировать Setup URI.", - "moduleMigration.msgSinceV02321": "Начиная с v0.23.21, self-hosted LiveSync изменил поведение и структуру базы данных.", + "moduleMigration.msgInitialSetup": "Ваше устройство **еще не настроено**. Я проведу вас через процесс настройки.\n\nПомните, что содержимое каждого диалога можно скопировать в буфер обмена. Если оно понадобится позже, вставьте его в заметку Obsidian. Также его можно перевести на ваш язык с помощью переводчика.\n\nСначала: у вас есть **Setup URI**?\n\nПримечание: если вы не знаете, что это такое, обратитесь к [документации](${URI_DOC}).", + "moduleMigration.msgRecommendSetupUri": "Мы настоятельно рекомендуем создать и использовать Setup URI.\nЕсли вы не знакомы с этим, обратитесь к [документации](${URI_DOC}) (извините, но это действительно важно).\n\nКак вы хотите настроить подключение вручную?", + "moduleMigration.msgSinceV02321": "Начиная с v0.23.21, Self-hosted LiveSync изменил поведение по умолчанию и структуру базы данных. Были внесены следующие изменения:\n\n1. **Чувствительность имен файлов к регистру**\n Обработка имен файлов теперь не чувствительна к регистру. Это полезно для большинства платформ, кроме Linux и iOS, где регистр имен файлов обрабатывается иначе.\n (На таких платформах будет показано предупреждение для файлов с одинаковым именем, но разным регистром.)\n\n2. **Обработка ревизий фрагментов**\n Фрагменты стали неизменяемыми, что позволяет фиксировать их ревизии. Это повышает производительность сохранения файлов.\n\n___Однако, чтобы включить любое из этих изменений, нужно перестроить и удаленную, и локальную базы данных. Этот процесс занимает несколько минут, поэтому лучше делать это, когда у вас достаточно времени.___\n\n- Если вы хотите сохранить прежнее поведение, пропустите процесс с помощью `${KEEP}`.\n- Если у вас сейчас недостаточно времени, выберите `${DISMISS}`. Позже появится повторный запрос.\n- Если вы уже перестроили базу данных на другом устройстве, выберите `${DISMISS}` и попробуйте синхронизироваться снова. Так как обнаружено различие, запрос появится повторно.", "moduleMigration.optionAdjustRemote": "Настроить под удалённую", "moduleMigration.optionDecideLater": "Решить позже", "moduleMigration.optionEnableBoth": "Включить оба", @@ -342,7 +360,7 @@ "moduleMigration.optionNoAskAgain": "Нет, спросить снова", "moduleMigration.optionNoSetupUri": "Нет, нет", "moduleMigration.optionRemindNextLaunch": "Напомнить при следующем запуске", - "moduleMigration.optionSetupViaP2P": "Использовать short_p2p_sync для настройки", + "moduleMigration.optionSetupViaP2P": "Настроить через %{short_p2p_sync}", "moduleMigration.optionSetupWizard": "Перейти в мастер настройки", "moduleMigration.optionYesFetchAgain": "Да, загрузить снова", "moduleMigration.titleCaseSensitivity": "Чувствительность к регистру", @@ -351,7 +369,7 @@ "moduleObsidianMenu.replicate": "Реплицировать", "More actions": "Другие действия", "Move remotely deleted files to the trash, instead of deleting.": "Перемещать удалённые на удалённом сервере файлы в корзину вместо удаления.", - "Network warning style": "Стиль сетевого предупреждения", + "Network warning style": "Стиль сетевых предупреждений", "New Remote": "Новое удалённое хранилище", "No connected device information found. Cancelling Garbage Collection.": "Не найдена информация о подключённых устройствах. Garbage Collection отменяется.", "No limit configured": "Лимит не задан", @@ -365,8 +383,8 @@ "Notify customized": "Уведомлять о настройках", "Notify when other device has newly customized.": "Уведомлять, когда другое устройство изменило настройки.", "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.": "Количество пакетов для обработки за раз. По умолчанию 40. Минимум 2.", - "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.", + "Now we can choose how to split the chunks; V3 is the most efficient. If you have troubled, please make this Default or Legacy.": "Теперь можно выбрать способ разделения фрагментов; V3 наиболее эффективен. Если возникнут проблемы, используйте Default или Legacy.", + "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.": "Количество пакетов, обрабатываемых за один раз. По умолчанию — 40. Минимум — 2. Этот параметр вместе с размером пакета определяет, сколько документов одновременно хранится в памяти.", "Number of changes to sync at a time. Defaults to 50. Minimum is 2.": "Количество изменений для синхронизации за раз. По умолчанию 50. Минимум 2.", "Obsidian version": "Версия Obsidian", "obsidianLiveSyncSettingTab.btnApply": "Применить", @@ -416,29 +434,30 @@ "obsidianLiveSyncSettingTab.logCheckingConfigDone": "Проверка конфигурации завершена", "obsidianLiveSyncSettingTab.logCheckingConfigFailed": "Проверка конфигурации не удалась", "obsidianLiveSyncSettingTab.logCheckingDbConfig": "Проверка конфигурации базы данных", - "obsidianLiveSyncSettingTab.logCheckPassphraseFailed": "ОШИБКА: Не удалось проверить пароль с удалённым сервером: db.", + "obsidianLiveSyncSettingTab.logCheckPassphraseFailed": "ОШИБКА: не удалось проверить парольную фразу на удалённом сервере:\n${db}.", "obsidianLiveSyncSettingTab.logConfiguredDisabled": "Настроенный режим синхронизации: ОТКЛЮЧЕН", "obsidianLiveSyncSettingTab.logConfiguredLiveSync": "Настроенный режим синхронизации: LiveSync", "obsidianLiveSyncSettingTab.logConfiguredPeriodic": "Настроенный режим синхронизации: Периодический", - "obsidianLiveSyncSettingTab.logCouchDbConfigFail": "Конфигурация CouchDB: title не удалась", - "obsidianLiveSyncSettingTab.logCouchDbConfigSet": "Конфигурация CouchDB: title -> Установить key в value", - "obsidianLiveSyncSettingTab.logCouchDbConfigUpdated": "Конфигурация CouchDB: title успешно обновлена", + "obsidianLiveSyncSettingTab.logCouchDbConfigFail": "Конфигурация CouchDB: ${title} — ошибка", + "obsidianLiveSyncSettingTab.logCouchDbConfigSet": "Конфигурация CouchDB: ${title} -> установить ${key} в ${value}", + "obsidianLiveSyncSettingTab.logCouchDbConfigUpdated": "Конфигурация CouchDB: ${title} успешно обновлена", "obsidianLiveSyncSettingTab.logDatabaseConnected": "База данных подключена", "obsidianLiveSyncSettingTab.logEncryptionNoPassphrase": "Вы не можете включить шифрование без парольной фразы", "obsidianLiveSyncSettingTab.logEncryptionNoSupport": "Ваше устройство не поддерживает шифрование.", "obsidianLiveSyncSettingTab.logErrorOccurred": "Произошла ошибка!!", - "obsidianLiveSyncSettingTab.logEstimatedSize": "Примерный размер: size", + "obsidianLiveSyncSettingTab.logEstimatedSize": "Оценочный размер: ${size}", "obsidianLiveSyncSettingTab.logPassphraseInvalid": "Парольная фраза недействительна, пожалуйста, исправьте.", "obsidianLiveSyncSettingTab.logPassphraseNotCompatible": "ОШИБКА: Парольная фраза несовместима с удалённым сервером!", "obsidianLiveSyncSettingTab.logRebuildNote": "Синхронизация отключена, загрузите и включите снова при желании.", "obsidianLiveSyncSettingTab.logSelectAnyPreset": "Выберите любой пресет.", + "obsidianLiveSyncSettingTab.logServerConfigurationCheck": "Проверка конфигурации сервера", "obsidianLiveSyncSettingTab.msgAreYouSureProceed": "Вы уверены, что хотите продолжить?", "obsidianLiveSyncSettingTab.msgChangesNeedToBeApplied": "Изменения нужно применить!", "obsidianLiveSyncSettingTab.msgConfigCheck": "--Проверка конфигурации--", "obsidianLiveSyncSettingTab.msgConfigCheckFailed": "Проверка конфигурации не удалась. Вы всё равно хотите продолжить?", "obsidianLiveSyncSettingTab.msgConnectionCheck": "--Проверка подключения--", "obsidianLiveSyncSettingTab.msgConnectionProxyNote": "Если у вас проблемы с проверкой подключения, проверьте конфигурацию обратного прокси.", - "obsidianLiveSyncSettingTab.msgCurrentOrigin": "Текущий origin: origin", + "obsidianLiveSyncSettingTab.msgCurrentOrigin": "Текущий origin: ${origin}", "obsidianLiveSyncSettingTab.msgDiscardConfirmation": "Вы действительно хотите отменить существующие настройки и базы данных?", "obsidianLiveSyncSettingTab.msgDone": "--Готово--", "obsidianLiveSyncSettingTab.msgEnableCors": "Установить httpd.enable_cors", @@ -453,8 +472,8 @@ "obsidianLiveSyncSettingTab.msgNonHTTPSWarning": "Не удаётся подключиться к не-HTTPS URI. Обновите конфигурацию.", "obsidianLiveSyncSettingTab.msgNotice": "---Уведомление---", "obsidianLiveSyncSettingTab.msgObjectStorageWarning": "ПРЕДУПРЕЖДЕНИЕ: Эта функция в разработке.", - "obsidianLiveSyncSettingTab.msgOriginCheck": "Проверка origin: org", - "obsidianLiveSyncSettingTab.msgRebuildRequired": "Требуется перестроение баз данных для применения изменений.", + "obsidianLiveSyncSettingTab.msgOriginCheck": "Проверка origin: ${org}", + "obsidianLiveSyncSettingTab.msgRebuildRequired": "Для применения изменений требуется перестроить базы данных. Выберите способ применения изменений.\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": "Выберите и примените любой пресет для завершения мастера.", "obsidianLiveSyncSettingTab.msgSetCorsCredentials": "Установить cors.credentials", "obsidianLiveSyncSettingTab.msgSetCorsOrigins": "Установить cors.origins", @@ -462,7 +481,7 @@ "obsidianLiveSyncSettingTab.msgSetMaxRequestSize": "Установить chttpd.max_http_request_size", "obsidianLiveSyncSettingTab.msgSetRequireValidUser": "Установить chttpd.require_valid_user = true", "obsidianLiveSyncSettingTab.msgSetRequireValidUserAuth": "Установить chttpd_auth.require_valid_user = true", - "obsidianLiveSyncSettingTab.msgSettingModified": "Настройка setting была изменена с другого устройства.", + "obsidianLiveSyncSettingTab.msgSettingModified": "Настройка \"${setting}\" была изменена с другого устройства. Нажмите {HERE}, чтобы перезагрузить настройки. Нажмите в другом месте, чтобы игнорировать изменения.", "obsidianLiveSyncSettingTab.msgSettingsUnchangeableDuringSync": "Эти настройки нельзя изменить во время синхронизации.", "obsidianLiveSyncSettingTab.msgSetWwwAuth": "Установить httpd.WWW-Authenticate", "obsidianLiveSyncSettingTab.nameApplySettings": "Применить настройки", @@ -491,12 +510,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.optionMinioS3R2": "MinIO, S3, R2", "obsidianLiveSyncSettingTab.optionOkReadEverything": "ОК, я всё прочитал.", "obsidianLiveSyncSettingTab.optionOnEvents": "По событиям", "obsidianLiveSyncSettingTab.optionPeriodicAndEvents": "Периодически и по событиям", @@ -508,7 +527,7 @@ "obsidianLiveSyncSettingTab.panelPrivacyEncryption": "Конфиденциальность и шифрование", "obsidianLiveSyncSettingTab.panelRemoteConfiguration": "Удалённая конфигурация", "obsidianLiveSyncSettingTab.panelSetup": "Настройка", - "obsidianLiveSyncSettingTab.serverVersion": "Информация о сервере: info", + "obsidianLiveSyncSettingTab.serverVersion": "Информация о сервере: ${info}", "obsidianLiveSyncSettingTab.titleActiveRemoteServer": "Активный удалённый сервер", "obsidianLiveSyncSettingTab.titleAppearance": "Внешний вид", "obsidianLiveSyncSettingTab.titleConflictResolution": "Разрешение конфликтов", @@ -537,7 +556,7 @@ "obsidianLiveSyncSettingTab.titleSyncSettings": "Настройки синхронизации", "obsidianLiveSyncSettingTab.titleSyncSettingsViaMarkdown": "Синхронизация настроек через Markdown", "obsidianLiveSyncSettingTab.titleUpdateThinning": "Оптимизация обновлений", - "obsidianLiveSyncSettingTab.warnCorsOriginUnmatched": "⚠ CORS Origin не совпадает from->to", + "obsidianLiveSyncSettingTab.warnCorsOriginUnmatched": "⚠ CORS Origin не совпадает ${from}->${to}", "obsidianLiveSyncSettingTab.warnNoAdmin": "⚠ У вас нет прав администратора.", "Ok": "ОК", "Old Algorithm": "Старый алгоритм", @@ -551,22 +570,22 @@ "Overwrite Server Data with This Device's Files": "Перезаписать данные сервера файлами с этого устройства", "P2P.AskPassphraseForDecrypt": "Удалённое устройство предоставило конфигурацию. Введите пароль для расшифровки.", "P2P.AskPassphraseForShare": "Удалённое устройство запрашивает эту конфигурацию. Введите пароль для передачи.", - "P2P.DisabledButNeed": "title_p2p_sync отключён. Вы действительно хотите включить?", + "P2P.DisabledButNeed": "%{title_p2p_sync} отключён. Вы действительно хотите включить его?", "P2P.FailedToOpen": "Не удалось открыть P2P подключение к серверу сигнализации.", - "P2P.NoAutoSyncPeers": "Автосинхронизируемые устройства не найдены.", + "P2P.NoAutoSyncPeers": "Устройства для автосинхронизации не найдены. Укажите их на панели %{long_p2p_sync}.", "P2P.NoKnownPeers": "Устройства не обнаружены, ожидаем другие устройства...", "P2P.Note.description": "Этот репликатор позволяет синхронизировать хранилище с другими устройствами с использованием однорангового соединения.", "P2P.Note.important_note": "P2P репликатор.", "P2P.Note.important_note_sub": "Эта функция всё ещё на стадии разработки. Пожалуйста, убедитесь, что ваши данные зарезервированы.", "P2P.Note.Summary": "Что это за функция? (важные замечания)", - "P2P.NotEnabled": "title_p2p_sync не включён. Мы не можем открыть новое подключение.", - "P2P.P2PReplication": "P2P Репликация", - "P2P.PaneTitle": "long_p2p_sync", + "P2P.NotEnabled": "%{title_p2p_sync} не включён. Мы не можем открыть новое подключение.", + "P2P.P2PReplication": "Репликация %{P2P}", + "P2P.PaneTitle": "%{long_p2p_sync}", "P2P.ReplicatorInstanceMissing": "P2P Sync репликатор не найден, возможно, не настроен.", - "P2P.SeemsOffline": "Устройство name офлайн, пропущено.", + "P2P.SeemsOffline": "Пир ${name}, похоже, офлайн; пропущено.", "P2P.SyncAlreadyRunning": "P2P Sync уже запущен.", "P2P.SyncCompleted": "P2P Sync завершён.", - "P2P.SyncStartedWith": "P2P Sync с name начат.", + "P2P.SyncStartedWith": "P2P Sync с ${name} запущен.", "paneMaintenance.markDeviceResolvedAfterBackup": "Пометить устройство как обработанное после резервного копирования", "paneMaintenance.remoteLockedAndDeviceNotAccepted": "Удалённая база данных заблокирована, и это устройство ещё не одобрено.", "paneMaintenance.remoteLockedResolvedDevice": "Удалённая база данных заблокирована, но это устройство уже одобрено.", @@ -588,7 +607,8 @@ "Perform Garbage Collection": "Выполнить сборку мусора", "Perform Garbage Collection to remove unused chunks and reduce database size.": "Выполняет сборку мусора, чтобы удалить неиспользуемые чанки и уменьшить размер базы данных.", "Periodic Sync interval": "Интервал периодической синхронизации", - "Pick a file to resolve conflict": "Выбрать файл для разрешения конфликта", + "Pick a file to resolve conflict": "Выберите файл для разрешения конфликта", + "Pick a file to show history": "Выберите файл для просмотра истории", "Please disable 'Read chunks online' in settings to use Garbage Collection.": "Чтобы использовать Garbage Collection, отключите в настройках «Read chunks online».", "Please enable 'Compute revisions for chunks' in settings to use Garbage Collection.": "Чтобы использовать Garbage Collection, включите в настройках «Compute revisions for chunks».", "Please select 'Cancel' explicitly to cancel this operation.": "Чтобы отменить эту операцию, явно выберите «Отмена».", @@ -604,6 +624,7 @@ "Proceed with Setup URI": "Продолжить с Setup URI", "Proceeding with Garbage Collection, ignoring missing nodes.": "Продолжаем Garbage Collection, игнорируя отсутствующие узлы.", "Proceeding with Garbage Collection.": "Запускаем Garbage Collection.", + "Process files even if seems to be corrupted": "Обрабатывать файлы, даже если они выглядят поврежденными", "Process small files in the foreground": "Обрабатывать маленькие файлы в основном потоке", "Progress": "Прогресс", "Property Encryption": "Шифрование свойств", @@ -614,15 +635,30 @@ "Rebuilding Operations (Remote Only)": "Операции перестроения (только удалённое хранилище)", "Recreate all": "Пересоздать всё", "Recreate missing chunks for all files": "Пересоздать отсутствующие чанки для всех файлов", - "RedFlag.Fetch.Method.Desc": "Как вы хотите загрузить?", + "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> Обычно это безопасно, если локальные файлы действительно имеют самый новый timestamp. Но возможны проблемы, если файл имеет более новый timestamp, но более старое содержимое (например, начальный `welcome.md`).\n> Это использует меньше CPU и работает быстрее, чем \"%{RedFlag.Fetch.Method.FetchSafer}\", но при неосторожном использовании может привести к потере данных.\n> ## %{RedFlag.Fetch.Method.FetchTraditional}.\n> **Больше трафика**, **меньше нагрузки на CPU**, **низкий или умеренный риск** (зависит от операции)\n> Всё будет получено из удалённого источника.\n> Похоже на %{RedFlag.Fetch.Method.FetchSmoother}, но все чанки загружаются из удалённого источника.\n> Это самый традиционный способ получения, обычно требующий больше всего сетевого трафика и времени. Он также несёт риск перезаписи удалённых файлов, похожий на вариант '%{RedFlag.Fetch.Method.FetchSmoother}'.\n> Однако его часто считают самым стабильным, потому что это самый старый и прямой подход.", "RedFlag.Fetch.Method.FetchSafer": "Создать локальную базу данных перед загрузкой", "RedFlag.Fetch.Method.FetchSmoother": "Создать локальные чанки перед загрузкой", "RedFlag.Fetch.Method.FetchTraditional": "Загрузить всё с удалённого", "RedFlag.Fetch.Method.Title": "Как вы хотите загрузить?", + "RedFlag.FetchRemoteConfig.Applied": "Remote configuration applied.", "RedFlag.FetchRemoteConfig.Buttons.Cancel": "Нет, использовать локальные настройки", "RedFlag.FetchRemoteConfig.Buttons.Fetch": "Да, загрузить и применить удалённые настройки", + "RedFlag.FetchRemoteConfig.Buttons.Retry": "Retry (recommended)", + "RedFlag.FetchRemoteConfig.Buttons.SkipAndProceed": "Skip and proceed", + "RedFlag.FetchRemoteConfig.FailedMessage": "Could not fetch configuration from remote. If you are new to the Self-hosted LiveSync, this might be expected. If not, you should check your network or server settings.", + "RedFlag.FetchRemoteConfig.FailedTitle": "Fetch Remote Configuration Failed", + "RedFlag.FetchRemoteConfig.MatchesLocal": "Remote configuration matches local configuration. No changes applied.", "RedFlag.FetchRemoteConfig.Message": "Вы хотите загрузить и применить удалённые настройки?", + "RedFlag.FetchRemoteConfig.NotApplied": "Remote configuration not applied.", + "RedFlag.FetchRemoteConfig.SettingsDiffered": "Your settings differed slightly from the server's. The plug-in has supplemented the incompatible parts with the server settings!", "RedFlag.FetchRemoteConfig.Title": "Загрузить удалённую конфигурацию", + "RedFlag.Log.FetchEverythingCancelled": "Fetch everything cancelled by user.", + "RedFlag.Log.FetchEverythingCompleted": "Fetch everything operation completed. Vault files will be gradually synced.", + "RedFlag.Log.RebuildEverythingCancelled": "Rebuild everything cancelled by user.", + "RedFlag.Log.RebuildEverythingCompleted": "Rebuild everything operation completed.", + "RedFlag.Log.VaultInitialisationError": "Error during vault initialisation.", + "RedFlag.Log.VaultInitialisationProcessError": "Error during vault initialisation process.", + "RedFlag.ResumeProcessingPrompt": "Do you want to resume file and database processing, and restart obsidian now?", "Reducing the frequency with which on-disk changes are reflected into the DB": "Уменьшение частоты отражения изменений с диска в БД", "Region": "Регион", "Remediation": "Исправление", @@ -636,7 +672,7 @@ "Replicator.Dialogue.Locked.Action.Dismiss": "Отмена для подтверждения", "Replicator.Dialogue.Locked.Action.Fetch": "Сбросить синхронизацию на этом устройстве", "Replicator.Dialogue.Locked.Action.Unlock": "Разблокировать удалённую базу данных", - "Replicator.Dialogue.Locked.Message": "Удалённая база данных заблокирована. Это связано с перестроением на одном из устройств.", + "Replicator.Dialogue.Locked.Message": "Удалённая база данных заблокирована. Это связано с перестроением на одном из терминалов.\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", "Replicator.Dialogue.Locked.Message.Fetch": "Загрузка всего запланирована. Плагин будет перезапущен.", "Replicator.Dialogue.Locked.Message.Unlocked": "Удалённая база данных разблокирована. Повторите операцию.", "Replicator.Dialogue.Locked.Title": "Заблокировано", @@ -671,8 +707,7 @@ "Restore or reconstruct local database from remote.": "Восстановить или перестроить локальную базу данных из удалённой.", "Run Doctor": "Запустить диагностику", "S3/MinIO/R2 Object Storage": "Объектное хранилище S3/MinIO/R2", - "Save settings to a markdown file.": "Сохранить настройки в файл markdown.", - "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.", + "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 a QR Code (Recommended for mobile)": "Сканировать QR-код (рекомендуется для мобильных устройств)", "Scan changes on customization sync": "Сканировать изменения при синхронизации настроек", @@ -689,10 +724,11 @@ "Seconds. Saving to the local database will be delayed until this value after we stop typing or saving.": "Секунды. Сохранение в локальную базу данных будет отложено.", "Secret Key": "Секретный ключ", "Select the database adapter to use.": "Выберите используемый адаптер базы данных.", + "Selector": "Селектор", "Send": "Отправить", "Send chunks": "Отправить чанки", "Server URI": "URI сервера", - "Setting.GenerateKeyPair.Desc": "Мы сгенерировали пару ключей!", + "Setting.GenerateKeyPair.Desc": "Мы сгенерировали пару ключей!\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", "Setting.GenerateKeyPair.Title": "Новая пара ключей сгенерирована!", "Setting.TroubleShooting": "Устранение неполадок", "Setting.TroubleShooting.Doctor": "Диагностика настроек", @@ -707,17 +743,27 @@ "Setup.Apply.Buttons.Cancel": "Отменить и отменить", "Setup.Apply.Buttons.OnlyApply": "Только применить", "Setup.Apply.Message": "Новая конфигурация готова. Есть несколько способов применить её.", - "Setup.Apply.Title": "Применить новую конфигурацию из method", + "Setup.Apply.Title": "Применить новую конфигурацию из ${method}", "Setup.Apply.WarningRebuildRecommended": "ПРИМЕЧАНИЕ: после настройки изменений определено, что требуется перестроение.", + "Setup.Command.CopySetupUri": "Copy settings as a new setup URI", + "Setup.Command.CopySetupUriFull": "Copy settings as a new setup URI (Full)", + "Setup.Command.CopySetupUriWithSync": "Copy settings as a new setup URI (With customization sync)", + "Setup.Command.OpenSetupUri": "Use the copied setup URI (Formerly Open setup URI)", + "Setup.Command.ShowSettingsQrCode": "Show settings as a QR code", "Setup.Doctor.Buttons.No": "Нет, использовать настройки из URI как есть", "Setup.Doctor.Buttons.Yes": "Да, пожалуйста, запустить диагностику", "Setup.Doctor.Message": "Self-hosted LiveSync постепенно набрал историю и некоторые рекомендуемые настройки изменились.", "Setup.Doctor.Title": "Хотите запустить диагностику?", + "Setup.EncryptSettingsPassphrase": "The passphrase to encrypt the setup URI", + "Setup.EncryptSettingsTitle": "Encrypt your settings", "Setup.FetchRemoteConf.Buttons.Fetch": "Да, загрузить конфигурацию", "Setup.FetchRemoteConf.Buttons.Skip": "Нет, использовать настройки из URI", "Setup.FetchRemoteConf.Message": "Если мы уже синхронизировались с другим устройством, удалённая база данных хранит подходящие значения конфигурации.", "Setup.FetchRemoteConf.Title": "Загрузить конфигурацию с удалённой базы данных?", - "Setup.QRCode": "Мы сгенерировали QR-код для передачи настроек. Отсканируйте QR-код телефоном.", + "Setup.Log.ProtocolHandlerRegistrationFailed": "Failed to register protocol handler. This feature may not work in some environments.", + "Setup.Log.SetupUriCopiedToClipboard": "Setup URI copied to clipboard", + "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}
", + "Setup.QRCodeTitle": "Settings QR Code", "Setup.RemoteE2EE.AdvancedTitle": "Дополнительно", "Setup.RemoteE2EE.AlgorithmWarning": "Изменение алгоритма шифрования лишит доступа к данным, которые ранее были зашифрованы другим алгоритмом. Убедитесь, что все ваши устройства настроены на использование одного и того же алгоритма, чтобы сохранить доступ к данным.", "Setup.RemoteE2EE.ButtonCancel": "Отмена", @@ -743,6 +789,7 @@ "Setup.ScanQRCode.Step3": "На исходном устройстве в палитре команд выполните команду «Показать настройки как QR-код».", "Setup.ScanQRCode.Step4": "На этом устройстве откройте приложение камеры или используйте сканер QR-кодов, чтобы считать показанный QR-код.", "Setup.ScanQRCode.Title": "Сканировать QR-код", + "Setup.SetupUri": "Setup URI", "Setup.ShowQRCode": "Показать QR код", "Setup.ShowQRCode.Desc": "Показать QR код для передачи настроек.", "Setup.UseSetupURI.ButtonCancel": "Отмена", @@ -762,6 +809,8 @@ "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?": "Спрашивать о каждом слиянии, даже если мы можем безопасно слить автоматически?", "Show full banner": "Показывать полный баннер", + "Show history": "Показать историю", + "Show icon only": "Показывать только значок", "Show only notifications": "Показывать только уведомления", "Show status as icons only": "Показывать статус только иконками", "Show status icon instead of file warnings banner": "Показывать иконку статуса вместо предупреждения о файлах", @@ -792,18 +841,14 @@ "The delay for consecutive on-demand fetches": "Задержка для последовательных запросов по требованию", "The following accepted nodes are missing its node information:\n- ${missingNodes}\n\nThis indicates that they have not been connected for some time or have been left on an older version.\nIt is preferable to update all devices if possible. If you have any devices that are no longer in use, you can clear all accepted nodes by locking the remote once.": "Для следующих принятых узлов отсутствует информация об узле:\n- ${missingNodes}\n\nЭто означает, что они давно не подключались или остались на старой версии.\nПо возможности рекомендуется сначала обновить все устройства. Если у вас есть устройства, которые больше не используются, вы можете очистить список всех принятых узлов, один раз заблокировав удалённую базу.", "The Hash algorithm for chunk IDs": "Хэш-алгоритм для ID чанков", - "The maximum duration for which chunks can be incubated within the document.": "Максимальная продолжительность инкубации чанков в документе.", - "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.", - "The maximum number of chunks that can be incubated within the document.": "Максимальное количество инкубируемых чанков в документе.", - "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.", - "The maximum total size of chunks that can be incubated within the document.": "Максимальный общий размер инкубируемых чанков в документе.", - "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.", + "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 feature enables direct synchronisation between devices. No server is required, but both devices must be online at the same time for synchronisation to occur, and some features may be limited. Internet connection is only required to signalling (detecting peers) and not for data transfer.": "Эта функция обеспечивает прямую синхронизацию между устройствами. Сервер не требуется, но для синхронизации оба устройства должны быть одновременно в сети, а некоторые функции могут быть ограничены. Подключение к Интернету нужно только для сигнализации (обнаружения пиров), а не для передачи данных。", "This is an advanced option for users who do not have a URI or who wish to configure detailed settings.": "Это расширенный вариант для пользователей, у которых нет URI или которые хотят вручную задать подробные параметры。", "This is the most suitable synchronisation method for the design. All functions are available. You must have set up a CouchDB instance.": "Это наиболее подходящий для данной архитектуры способ синхронизации. Доступны все функции. Необходимо заранее развернуть экземпляр CouchDB。", - "This passphrase will not be copied to another device. It will be set to 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.": "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.": "Эта парольная фраза не будет скопирована на другое устройство. Она будет установлена в значение `Default`, пока вы не настроите её снова.", "This will recreate chunks for all files. If there were missing chunks, this may fix the errors.": "Это пересоздаст чанки для всех файлов. Если какие-то чанки отсутствовали, это может исправить ошибки.", "Transfer Tweak": "Настройки передачи", "TweakMismatchResolve.Action.Dismiss": "Отмена", @@ -814,43 +859,473 @@ "TweakMismatchResolve.Action.UseRemote": "Применить настройки к этому устройству", "TweakMismatchResolve.Action.UseRemoteAcceptIncompatible": "Применить настройки, но игнорировать несовместимость", "TweakMismatchResolve.Action.UseRemoteWithRebuild": "Применить настройки и загрузить снова", - "TweakMismatchResolve.Message.Main": "Настройки в удалённой базе данных следующие. Эти значения настроены другими устройствами.", - "TweakMismatchResolve.Message.MainTweakResolving": "Ваша конфигурация не совпадает с удалённым сервером.", + "TweakMismatchResolve.Message.Main": "\nНастройки в удаленной базе данных приведены ниже. Эти значения были настроены другими устройствами, которые хотя бы один раз синхронизировались с этим устройством.\n\nЕсли вы хотите использовать эти настройки, выберите %{TweakMismatchResolve.Action.UseConfigured}.\nЕсли вы хотите сохранить настройки этого устройства, выберите %{TweakMismatchResolve.Action.Dismiss}.\n\n${table}\n\n>[!TIP]\n> Если вы хотите синхронизировать все настройки, используйте `Sync settings via markdown` после применения минимальной конфигурации с помощью этой функции.\n\n${additionalMessage}", + "TweakMismatchResolve.Message.MainTweakResolving": "Конфигурация вашего устройства не совпадает с конфигурацией на удаленном сервере.\n\nСледующие параметры должны совпадать:\n\n${table}\n\nСообщите, какое решение вы выбираете.\n\n${additionalMessage}", "TweakMismatchResolve.Message.UseRemote.WarningRebuildRecommended": "Некоторые изменения совместимы, но могут потребовать дополнительного хранилища. Рекомендуется перестроение.", "TweakMismatchResolve.Message.UseRemote.WarningRebuildRequired": "Некоторые удалённые конфигурации несовместимы с локальной базой данных. Требуется перестроение.", "TweakMismatchResolve.Message.WarningIncompatibleRebuildRecommended": "Обнаружены значения, несовместимые с удалённой базой данных. Рекомендуется перестроение.", "TweakMismatchResolve.Message.WarningIncompatibleRebuildRequired": "Обнаружены значения, несовместимые с удалённой базой данных. Требуется перестроение.", - "TweakMismatchResolve.Table": "| Имя значения | Это устройство | На удалённом |\n|: --- |: ---- :|: ---- :|", - "TweakMismatchResolve.Table.Row": "| name | self | remote |", + "TweakMismatchResolve.Table": "| Имя значения | Это устройство | На удаленной стороне |\n|: --- |: ---- :|: ---- :|\n${rows}\n\n", + "TweakMismatchResolve.Table.Row": "| ${name} | ${self} | ${remote} |", "TweakMismatchResolve.Title": "Обнаружено несоответствие конфигурации", "TweakMismatchResolve.Title.TweakResolving": "Обнаружено несоответствие конфигурации", "TweakMismatchResolve.Title.UseRemoteConfig": "Использовать удалённую конфигурацию", + "Ui.Bucket.Guidance": "Пожалуйста, введите данные, необходимые для подключения к совместимому сервису объектного хранилища S3/MinIO/R2.", + "Ui.Common.Signal.Caution": "Осторожно", + "Ui.Common.Signal.Danger": "Опасно", + "Ui.Common.Signal.Notice": "Уведомление", + "Ui.Common.Signal.Warning": "Предупреждение", + "Ui.ConflictResolver.FileToResolve": "Файл для разрешения", + "Ui.CouchDB.Guidance": "Пожалуйста, введите ниже информацию о сервере CouchDB.", + "Ui.History.FileToView": "Файл для просмотра", + "Ui.P2P.Guidance": "Пожалуйста, введите ниже информацию для синхронизации Peer-to-Peer.", + "Ui.RemoteE2EE.AdvancedTitle": "Дополнительно", + "Ui.RemoteE2EE.AlgorithmWarning": "Изменение алгоритма шифрования сделает недоступными все данные, ранее зашифрованные другим алгоритмом.", + "Ui.RemoteE2EE.ButtonCancel": "Отмена", + "Ui.RemoteE2EE.ButtonProceed": "Продолжить", + "Ui.RemoteE2EE.DefaultAlgorithmDesc": "В большинстве случаев следует использовать алгоритм по умолчанию.", + "Ui.RemoteE2EE.Guidance": "Пожалуйста, настройте параметры сквозного шифрования.", + "Ui.RemoteE2EE.LabelEncrypt": "Сквозное шифрование", + "Ui.RemoteE2EE.LabelEncryptionAlgorithm": "Алгоритм шифрования", + "Ui.RemoteE2EE.LabelObfuscateProperties": "Обфусцировать свойства", + "Ui.RemoteE2EE.ManualWarning": "Обратите внимание: парольная фраза сквозного шифрования не проверяется, пока фактически не начнётся процесс синхронизации. Это мера безопасности, предназначенная для защиты ваших данных.", + "Ui.RemoteE2EE.MultiDestinationWarning": "Этот параметр должен быть одинаковым даже при подключении к нескольким целям синхронизации.", + "Ui.RemoteE2EE.ObfuscatePropertiesDesc": "Обфускация свойств добавляет дополнительный уровень безопасности, затрудняя определение структуры и имён ваших файлов и папок на удалённом сервере.", + "Ui.RemoteE2EE.PassphraseValidationLine1": "Обратите внимание: парольная фраза сквозного шифрования не проверяется, пока фактически не начнётся процесс синхронизации.", + "Ui.RemoteE2EE.PassphraseValidationLine2": "Поэтому мы просим вас быть предельно осторожными при ручной настройке сведений о сервере.", + "Ui.RemoteE2EE.PlaceholderPassphrase": "Введите парольную фразу", + "Ui.RemoteE2EE.StronglyRecommended": "Включение сквозного шифрования гарантирует, что ваши данные будут зашифрованы на устройстве до отправки на удалённый сервер. Это означает, что даже если кто-то получит доступ к серверу, он не сможет прочитать ваши данные без парольной фразы.", + "Ui.RemoteE2EE.StronglyRecommendedLine1": "Включение сквозного шифрования гарантирует, что ваши данные будут зашифрованы на устройстве до отправки на удалённый сервер.", + "Ui.RemoteE2EE.StronglyRecommendedLine2": "Также обратите внимание: если вы используете синхронизацию Peer-to-Peer, эта конфигурация будет применяться, когда в будущем вы переключитесь на другие методы и подключитесь к удалённому серверу.", + "Ui.RemoteE2EE.StronglyRecommendedTitle": "Настоятельно рекомендуется", + "Ui.RemoteE2EE.Title": "Сквозное шифрование", + "Ui.RemoteE2EE.WarningSameSetting": "Этот параметр должен быть одинаковым даже при подключении к нескольким целям синхронизации.", + "Ui.ScanQRCode.ButtonClose": "Закрыть это окно", + "Ui.ScanQRCode.Guidance": "Следуйте приведённым ниже шагам, чтобы импортировать настройки с существующего устройства.", + "Ui.ScanQRCode.Instruction": "Следуйте приведённым ниже шагам, чтобы импортировать настройки с существующего устройства.", + "Ui.ScanQRCode.Step1": "На этом устройстве оставьте данный Vault открытым.", + "Ui.ScanQRCode.Step2": "На исходном устройстве откройте Obsidian.", + "Ui.ScanQRCode.Step3": "На исходном устройстве в палитре команд выполните команду «Show settings as a QR code».", + "Ui.ScanQRCode.Step4": "На этом устройстве переключитесь в приложение камеры или используйте сканер QR-кодов, чтобы отсканировать показанный QR-код.", + "Ui.ScanQRCode.Title": "Сканировать QR-код", + "Ui.Settings.Advanced.LocalDatabaseTweak": "Настройка локальной базы данных", + "Ui.Settings.Advanced.MemoryCache": "Кэш памяти", + "Ui.Settings.Advanced.TransferTweak": "Настройка передачи", + "Ui.Settings.Common.Analyse": "Анализировать", + "Ui.Settings.Common.Back": "Назад", + "Ui.Settings.Common.Check": "Проверить", + "Ui.Settings.Common.Configure": "Настроить", + "Ui.Settings.Common.Delete": "Удалить", + "Ui.Settings.Common.Lock": "Заблокировать", + "Ui.Settings.Common.Open": "Открыть", + "Ui.Settings.Common.Perform": "Выполнить", + "Ui.Settings.Common.ResetAll": "Сбросить всё", + "Ui.Settings.Common.ResolveAll": "Разрешить всё", + "Ui.Settings.Common.Send": "Отправить", + "Ui.Settings.Common.VerifyAll": "Проверить всё", + "Ui.Settings.CustomizationSync.OpenDesc": "Открыть диалог", + "Ui.Settings.CustomizationSync.Panel": "Синхронизация настроек", + "Ui.Settings.CustomizationSync.WarnChangeDeviceName": "Предупреждение: изменение имени устройства", + "Ui.Settings.CustomizationSync.WarnSetDeviceName": "Предупреждение: задайте имя устройства", + "Ui.Settings.Hatch.AnalyseDatabaseUsage": "Проанализировать использование базы данных", + "Ui.Settings.Hatch.AnalyseDatabaseUsageDesc": "Анализирует использование базы данных и создает TSV-отчет для самостоятельной диагностики. Его можно вставить в любую электронную таблицу.", + "Ui.Settings.Hatch.BackToNonConfigured": "Вернуться к состоянию без настройки", + "Ui.Settings.Hatch.ConvertNonObfuscated": "Проверить и преобразовать файлы без обфускации пути", + "Ui.Settings.Hatch.ConvertNonObfuscatedDesc": "Проверяет локальную базу данных на файлы, сохраненные без обфускации пути, и при необходимости преобразует их.", + "Ui.Settings.Hatch.CopyIssueReport": "Скопировать отчёт в буфер обмена", + "Ui.Settings.Hatch.DatabaseLabel": "База данных: ${details}", + "Ui.Settings.Hatch.DatabaseToStorage": "База данных -> хранилище", + "Ui.Settings.Hatch.DeleteCustomizationSyncData": "Удалить все данные синхронизации настроек", + "Ui.Settings.Hatch.GeneratedReport": "Сформированный отчёт", + "Ui.Settings.Hatch.Missing": "Отсутствует", + "Ui.Settings.Hatch.ModifiedSize": "Изменённый размер", + "Ui.Settings.Hatch.ModifiedSizeActual": "Фактический изменённый размер", + "Ui.Settings.Hatch.PrepareIssueReport": "Подготовить отчет для создания issue", + "Ui.Settings.Hatch.RecoveryAndRepair": "Восстановление и исправление", + "Ui.Settings.Hatch.RecreateAll": "Создать всё заново", + "Ui.Settings.Hatch.RecreateMissingChunks": "Повторно создать отсутствующие фрагменты для всех файлов", + "Ui.Settings.Hatch.RecreateMissingChunksDesc": "Будут повторно созданы фрагменты для всех файлов. Если какие-то фрагменты отсутствовали, это может исправить ошибки.", + "Ui.Settings.Hatch.ResetPanel": "Сброс", + "Ui.Settings.Hatch.ResetRemoteUsage": "Сбросить порог уведомлений и проверить использование удаленной базы данных", + "Ui.Settings.Hatch.ResetRemoteUsageDesc": "Сбрасывает порог размера удаленного хранилища и снова проверяет его размер.", + "Ui.Settings.Hatch.ResolveAllConflictedFiles": "Разрешить все конфликтующие файлы более новой версией", + "Ui.Settings.Hatch.ResolveAllConflictedFilesDesc": "Разрешает все конфликтующие файлы более новой версией. Внимание: старая версия будет перезаписана, восстановить ее будет нельзя.", + "Ui.Settings.Hatch.RunDoctor": "Запустить Doctor", + "Ui.Settings.Hatch.ScanBrokenFiles": "Сканировать повреждённые файлы", + "Ui.Settings.Hatch.ScramSwitches": "Аварийные переключатели", + "Ui.Settings.Hatch.ShowHistory": "Показать историю", + "Ui.Settings.Hatch.StorageLabel": "Хранилище: ${details}", + "Ui.Settings.Hatch.StorageToDatabase": "Хранилище -> база данных", + "Ui.Settings.Hatch.VerifyAndRepairAllFiles": "Проверить и исправить все файлы", + "Ui.Settings.Hatch.VerifyAndRepairAllFilesDesc": "Сравнивает содержимое файлов в локальной базе данных и хранилище. Если они не совпадают, будет предложено выбрать, что сохранить.", + "Ui.Settings.Maintenance.Cleanup": "Выполнить очистку", + "Ui.Settings.Maintenance.CleanupDesc": "Уменьшает занимаемое место, удаляя все не последние ревизии. Требует такой же объем свободного места на удаленном сервере и локальном клиенте.", + "Ui.Settings.Maintenance.DeleteLocalDatabase": "Удалить локальную базу данных для сброса или удаления Self-hosted LiveSync", + "Ui.Settings.Maintenance.EmergencyRestart": "Аварийный перезапуск", + "Ui.Settings.Maintenance.EmergencyRestartDesc": "Отключает всю синхронизацию и перезапускает.", + "Ui.Settings.Maintenance.FreshStartWipe": "Очистка для нового старта", + "Ui.Settings.Maintenance.FreshStartWipeDesc": "Удаляет все данные на удаленном сервере.", + "Ui.Settings.Maintenance.GarbageCollection": "Сборка мусора V3 (Beta)", + "Ui.Settings.Maintenance.GarbageCollectionAction": "Выполнить сборку мусора", + "Ui.Settings.Maintenance.GarbageCollectionDesc": "Выполняет сборку мусора для удаления неиспользуемых фрагментов и уменьшения размера базы данных.", + "Ui.Settings.Maintenance.LockServer": "Заблокировать сервер", + "Ui.Settings.Maintenance.LockServerDesc": "Блокирует удаленный сервер, чтобы предотвратить синхронизацию с другими устройствами.", + "Ui.Settings.Maintenance.OverwriteRemote": "Перезаписать удаленные данные", + "Ui.Settings.Maintenance.OverwriteRemoteDesc": "Перезаписывает удаленные данные локальной базой данных и парольной фразой.", + "Ui.Settings.Maintenance.OverwriteServerData": "Перезаписать данные сервера файлами с этого устройства", + "Ui.Settings.Maintenance.OverwriteServerDataDesc": "Перестраивает локальную и удаленную базы данных из файлов на этом устройстве.", + "Ui.Settings.Maintenance.PurgeAllJournalCounter": "Очистить все счетчики журнала", + "Ui.Settings.Maintenance.PurgeAllJournalCounterDesc": "Очищает все кэши загрузки и отправки.", + "Ui.Settings.Maintenance.RebuildingOperations": "Операции перестроения (только удалённое хранилище)", + "Ui.Settings.Maintenance.Resend": "Отправить повторно", + "Ui.Settings.Maintenance.ResendDesc": "Повторно отправляет все фрагменты на удаленную сторону.", + "Ui.Settings.Maintenance.Reset": "Сброс", + "Ui.Settings.Maintenance.ResetAllJournalCounter": "Сбросить все счетчики журнала", + "Ui.Settings.Maintenance.ResetAllJournalCounterDesc": "Инициализирует всю историю журнала. При следующей синхронизации каждый элемент будет снова получен и отправлен.", + "Ui.Settings.Maintenance.ResetJournalReceived": "Сбросить историю полученных записей журнала", + "Ui.Settings.Maintenance.ResetJournalReceivedDesc": "Инициализирует историю полученных записей журнала. При следующей синхронизации все элементы, кроме отправленных этим устройством, будут загружены снова.", + "Ui.Settings.Maintenance.ResetJournalSent": "Сбросить историю отправленных записей журнала", + "Ui.Settings.Maintenance.ResetJournalSentDesc": "Инициализирует историю отправленных записей журнала. При следующей синхронизации все элементы, кроме полученных этим устройством, будут отправлены снова.", + "Ui.Settings.Maintenance.ResetLocalSyncInfo": "Сбросить сведения о синхронизации", + "Ui.Settings.Maintenance.ResetLocalSyncInfoDesc": "Восстанавливает или перестраивает локальную базу данных из удаленной.", + "Ui.Settings.Maintenance.ResetReceived": "Сбросить полученное", + "Ui.Settings.Maintenance.ResetSentHistory": "Сбросить историю отправленного", + "Ui.Settings.Maintenance.ResetThisDevice": "Сбросить синхронизацию на этом устройстве", + "Ui.Settings.Maintenance.ScheduleAndRestart": "Запланировать и перезапустить", + "Ui.Settings.Maintenance.Scram": "Аварийная остановка", + "Ui.Settings.Maintenance.SendChunks": "Отправить чанки", + "Ui.Settings.Maintenance.Syncing": "Синхронизация", + "Ui.Settings.Maintenance.WarningLockedReadyAction": "Разблокировать удалённую базу данных", + "Ui.Settings.Maintenance.WarningLockedReadyText": "Удалённая база данных заблокирована. Разблокируйте её, если операция уже завершена.", + "Ui.Settings.Maintenance.WarningLockedResolveAction": "Подтвердить это устройство", + "Ui.Settings.Maintenance.WarningLockedResolveText": "Удалённая база данных заблокирована и это устройство ещё не подтверждено.", + "Ui.Settings.Maintenance.WriteRedFlagAndRestart": "Установить флаг и перезапустить", + "Ui.Settings.Patches.CompatibilityConflict": "Совместимость (поведение при конфликтах)", + "Ui.Settings.Patches.CompatibilityDatabase": "Совместимость (структура базы данных)", + "Ui.Settings.Patches.CompatibilityInternalApi": "Совместимость (использование внутреннего API)", + "Ui.Settings.Patches.CompatibilityMetadata": "Совместимость (метаданные)", + "Ui.Settings.Patches.CompatibilityRemote": "Совместимость (удаленная база данных)", + "Ui.Settings.Patches.CompatibilityTrouble": "Совместимость (устраненные проблемы)", + "Ui.Settings.Patches.CurrentAdapter": "Текущий адаптер: ${adapter}", + "Ui.Settings.Patches.DatabaseAdapter": "Адаптер базы данных", + "Ui.Settings.Patches.DatabaseAdapterDesc": "Выберите используемый адаптер базы данных.", + "Ui.Settings.Patches.EdgeCaseBehaviour": "Обработка крайних случаев (поведение)", + "Ui.Settings.Patches.EdgeCaseDatabase": "Обработка крайних случаев (база данных)", + "Ui.Settings.Patches.EdgeCaseProcessing": "Обработка крайних случаев (обработка)", + "Ui.Settings.Patches.IndexedDbWarning": "Предупреждение IndexedDB", + "Ui.Settings.Patches.MigratingToIdb": "Миграция в IDB", + "Ui.Settings.Patches.MigratingToIndexedDb": "Миграция в IndexedDB", + "Ui.Settings.Patches.MigrationIdbCompleted": "Миграция в IDB завершена", + "Ui.Settings.Patches.MigrationIdbCompletedFollowUp": "Дальнейшие действия после завершения миграции в IDB", + "Ui.Settings.Patches.MigrationIndexedDbCompleted": "Миграция в IndexedDB завершена", + "Ui.Settings.Patches.MigrationIndexedDbCompletedFollowUp": "Дальнейшие действия после завершения миграции в IndexedDB", + "Ui.Settings.Patches.MigrationWarning": "Предупреждение о миграции", + "Ui.Settings.Patches.OperationToIdb": "Перевести операцию в IDB", + "Ui.Settings.Patches.OperationToIndexedDb": "Перевести операцию в IndexedDB", + "Ui.Settings.Patches.Remediation": "Исправление", + "Ui.Settings.Patches.RemediationChanged": "Исправление изменено", + "Ui.Settings.Patches.RemediationNoLimit": "Исправление без ограничений", + "Ui.Settings.Patches.RemediationRestarting": "Перезапуск для исправления", + "Ui.Settings.Patches.RemediationRestartLater": "Перезапустить позже для исправления", + "Ui.Settings.Patches.RemediationRestartMessage": "Сообщение о перезапуске для исправления", + "Ui.Settings.Patches.RemediationRestartNow": "Перезапустить сейчас для исправления", + "Ui.Settings.Patches.RemediationSuffixChanged": "Суффикс исправления изменён", + "Ui.Settings.Patches.RemediationWithValue": "Значение: ${date} (${timestamp})", + "Ui.Settings.Patches.RemoteDatabaseSunset": "Настройка удаленной базы данных (устаревает)", + "Ui.Settings.Patches.SwitchToIDB": "Переключиться на IDB", + "Ui.Settings.Patches.SwitchToIndexedDb": "Переключиться на IndexedDB", + "Ui.Settings.PowerUsers.ConfigurationEncryption": "Шифрование конфигурации", + "Ui.Settings.PowerUsers.ConnectionTweak": "Настройка подключения CouchDB", + "Ui.Settings.PowerUsers.ConnectionTweakDesc": "Эти параметры позволяют тонко настроить подключение. Изменяйте их только если понимаете последствия.", + "Ui.Settings.PowerUsers.Default": "По умолчанию", + "Ui.Settings.PowerUsers.Developer": "Разработчик", + "Ui.Settings.PowerUsers.EncryptSensitiveConfig": "Шифровать чувствительные элементы конфигурации", + "Ui.Settings.PowerUsers.PromptPassphraseEveryLaunch": "Запрашивать парольную фразу при каждом запуске", + "Ui.Settings.PowerUsers.UseCustomPassphrase": "Использовать пользовательскую парольную фразу", + "Ui.Settings.Remote.Activate": "Активировать", + "Ui.Settings.Remote.ActiveSuffix": "Активно", + "Ui.Settings.Remote.AddConnection": "Добавить подключение", + "Ui.Settings.Remote.AddRemoteDefaultName": "Новое удалённое хранилище", + "Ui.Settings.Remote.ConfigureAndChangeRemote": "Настроить и изменить удалённое хранилище", + "Ui.Settings.Remote.ConfigureE2EE": "Настроить E2EE", + "Ui.Settings.Remote.ConfigureRemote": "Настроить удаленное подключение", + "Ui.Settings.Remote.DeleteRemoteConfirm": "Удалить удалённую конфигурацию \"${name}\"?", + "Ui.Settings.Remote.DeleteRemoteTitle": "Удалить удалённое хранилище", + "Ui.Settings.Remote.DisplayName": "Отображаемое имя", + "Ui.Settings.Remote.DuplicateRemote": "Дублировать удалённое хранилище", + "Ui.Settings.Remote.DuplicateRemoteSuffix": "копия", + "Ui.Settings.Remote.E2EEConfiguration": "Конфигурация E2EE", + "Ui.Settings.Remote.Export": "Экспорт", + "Ui.Settings.Remote.FetchRemoteSettings": "Получить настройки с удалённого хранилища", + "Ui.Settings.Remote.ImportConnection": "Импортировать подключение", + "Ui.Settings.Remote.ImportConnectionPrompt": "Вставьте URI подключения для импорта.", + "Ui.Settings.Remote.ImportedCouchDb": "Импортированный CouchDB", + "Ui.Settings.Remote.ImportedRemote": "Импортированное удалённое хранилище", + "Ui.Settings.Remote.MoreActions": "Другие действия", + "Ui.Settings.Remote.PeerToPeerPanel": "Одноранговая синхронизация", + "Ui.Settings.Remote.RemoteConfigurationPrefix": "Префикс конфигурации удалённого хранилища", + "Ui.Settings.Remote.RemoteDatabases": "Удаленные базы данных", + "Ui.Settings.Remote.RemoteName": "Имя удалённого хранилища", + "Ui.Settings.Remote.RemoteNameCouchDb": "Имя удалённого хранилища CouchDB", + "Ui.Settings.Remote.RemoteNameP2P": "Имя удалённого хранилища P2P", + "Ui.Settings.Remote.RemoteNameS3": "Имя удалённого хранилища S3", + "Ui.Settings.Remote.Rename": "Переименовать", + "Ui.Settings.Selector.AddDefaultPatterns": "Добавить шаблоны по умолчанию", + "Ui.Settings.Selector.CrossPlatform": "Кроссплатформенно", + "Ui.Settings.Selector.Default": "По умолчанию", + "Ui.Settings.Selector.HiddenFiles": "Скрытые файлы", + "Ui.Settings.Selector.IgnorePatterns": "Шаблоны игнорирования", + "Ui.Settings.Selector.NonSynchronisingFiles": "Несинхронизируемые файлы", + "Ui.Settings.Selector.NonSynchronisingFilesDesc": "(RegExp) Если задано, изменения локальных и удаленных файлов, совпадающих с выражением, будут пропущены.", + "Ui.Settings.Selector.NormalFiles": "Обычные файлы", + "Ui.Settings.Selector.OverwritePatterns": "Шаблоны перезаписи", + "Ui.Settings.Selector.OverwritePatternsDesc": "Шаблоны файлов, которые будут перезаписаны вместо слияния", + "Ui.Settings.Selector.SynchronisingFiles": "Синхронизируемые файлы", + "Ui.Settings.Selector.SynchronisingFilesDesc": "(RegExp) Оставьте пустым для синхронизации всех файлов. Задайте регулярное выражение, чтобы ограничить синхронизируемые файлы.", + "Ui.Settings.Selector.TargetPatterns": "Целевые шаблоны", + "Ui.Settings.Selector.TargetPatternsDesc": "Шаблоны файлов для синхронизации", + "Ui.Settings.Setup.RerunWizardButton": "Запустить мастер снова", + "Ui.Settings.Setup.RerunWizardDesc": "Повторно запустить мастер первоначальной настройки Self-hosted LiveSync.", + "Ui.Settings.Setup.RerunWizardName": "Повторно запустить мастер настройки", + "Ui.Settings.SyncSettings.Fetch": "Получить", + "Ui.Settings.SyncSettings.Merge": "Объединить", + "Ui.Settings.SyncSettings.Overwrite": "Перезаписать", + "Ui.SetupWizard.Bucket.AccessKeyId": "ID ключа доступа", + "Ui.SetupWizard.Bucket.BucketName": "Имя бакета", + "Ui.SetupWizard.Bucket.EndpointUrl": "URL конечной точки", + "Ui.SetupWizard.Bucket.FolderPrefix": "Folder Prefix", + "Ui.SetupWizard.Bucket.FolderPrefixDesc": "Если вы хотите хранить данные в определённой папке внутри бакета, укажите здесь префикс папки. Иначе оставьте поле пустым, чтобы хранить данные в корне бакета.", + "Ui.SetupWizard.Bucket.InternalApiDesc": "Если невозможно избежать проблем CORS, можно попробовать этот вариант. Он использует внутренний API Obsidian для связи с сервером S3. Это не соответствует веб-стандартам, но работает. Учтите, что будущие версии Obsidian могут нарушить этот способ.", + "Ui.SetupWizard.Bucket.PlaceholderAccessKeyId": "Введите ID ключа доступа", + "Ui.SetupWizard.Bucket.PlaceholderBucketName": "Введите имя бакета", + "Ui.SetupWizard.Bucket.PlaceholderFolderPrefix": "Введите префикс папки (необязательно)", + "Ui.SetupWizard.Bucket.PlaceholderRegion": "Введите регион (например, us-east-1, auto для R2)", + "Ui.SetupWizard.Bucket.PlaceholderSecretAccessKey": "Введите секретный ключ доступа", + "Ui.SetupWizard.Bucket.Region": "Регион", + "Ui.SetupWizard.Bucket.SecretAccessKey": "Секретный ключ доступа", + "Ui.SetupWizard.Bucket.Title": "Настройка S3/MinIO/R2", + "Ui.SetupWizard.Bucket.UseInternalApi": "Использовать внутренний API", + "Ui.SetupWizard.Bucket.UsePathStyleAccess": "Использовать доступ в стиле пути", + "Ui.SetupWizard.Common.AdvancedSettings": "Дополнительные настройки", + "Ui.SetupWizard.Common.Back": "Назад", + "Ui.SetupWizard.Common.Cancel": "Отмена", + "Ui.SetupWizard.Common.CheckingConnection": "Проверка подключения... Подождите.", + "Ui.SetupWizard.Common.ContinueAnyway": "Всё равно продолжить", + "Ui.SetupWizard.Common.CustomHeaders": "Пользовательские заголовки", + "Ui.SetupWizard.Common.ErrorConnectionTest": "Ошибка во время проверки подключения: ${error}", + "Ui.SetupWizard.Common.ErrorConnectServer": "Не удалось подключиться к серверу. Проверьте настройки.", + "Ui.SetupWizard.Common.ErrorConnectServerDetail": "Не удалось подключиться к серверу: ${error}", + "Ui.SetupWizard.Common.ErrorCreateReplicator": "Не удалось создать экземпляр репликатора.", + "Ui.SetupWizard.Common.ExperimentalSettings": "Экспериментальные настройки", + "Ui.SetupWizard.Common.HttpsOnlyMobile": "В Obsidian Mobile можно использовать только защищённые соединения (HTTPS).", + "Ui.SetupWizard.Common.ProceedSelectOption": "Пожалуйста, выберите вариант", + "Ui.SetupWizard.CouchDB.DatabaseName": "Имя базы данных", + "Ui.SetupWizard.CouchDB.DatabaseNameDesc": "В имени базы данных нельзя использовать заглавные буквы, пробелы или специальные символы. Также оно не может начинаться с подчёркивания (_).", + "Ui.SetupWizard.CouchDB.InternalApiDesc": "Если невозможно избежать проблем CORS, можно попробовать этот вариант. Он использует внутренний API Obsidian для связи с сервером CouchDB. Это не соответствует веб-стандартам, но работает. Учтите, что будущие версии Obsidian могут нарушить этот способ.", + "Ui.SetupWizard.CouchDB.JwtAlgorithm": "Алгоритм JWT", + "Ui.SetupWizard.CouchDB.JwtExpirationDuration": "Срок действия JWT (минуты)", + "Ui.SetupWizard.CouchDB.JwtKey": "Ключ JWT", + "Ui.SetupWizard.CouchDB.JwtKeyDesc": "Для алгоритмов HS256/HS512 укажите общий секретный ключ. Для ES256/ES512 укажите приватный ключ в формате pkcs8 PEM.", + "Ui.SetupWizard.CouchDB.JwtKeyId": "ID ключа JWT (kid)", + "Ui.SetupWizard.CouchDB.JwtSubject": "Subject JWT (sub)", + "Ui.SetupWizard.CouchDB.JwtWarning": "JWT (JSON Web Token) позволяет безопасно аутентифицироваться на сервере CouchDB с помощью токенов. Убедитесь, что сервер CouchDB настроен на приём JWT, а указанные ключ и настройки соответствуют конфигурации сервера. Эта функция пока не была тщательно проверена.", + "Ui.SetupWizard.CouchDB.Password": "Пароль", + "Ui.SetupWizard.CouchDB.PlaceholderDatabaseName": "Введите имя базы данных", + "Ui.SetupWizard.CouchDB.PlaceholderJwtKey": "Введите секрет JWT или приватный ключ", + "Ui.SetupWizard.CouchDB.PlaceholderJwtKeyId": "Введите ID ключа JWT", + "Ui.SetupWizard.CouchDB.PlaceholderJwtSubject": "Введите Subject JWT (имя пользователя CouchDB)", + "Ui.SetupWizard.CouchDB.PlaceholderPassword": "Введите пароль", + "Ui.SetupWizard.CouchDB.PlaceholderUsername": "Введите имя пользователя", + "Ui.SetupWizard.CouchDB.Title": "Настройка CouchDB", + "Ui.SetupWizard.CouchDB.Url": "URL сервера", + "Ui.SetupWizard.CouchDB.UseInternalApi": "Использовать внутренний API", + "Ui.SetupWizard.CouchDB.UseJwtAuthentication": "Использовать JWT-аутентификацию", + "Ui.SetupWizard.CouchDB.Username": "Имя пользователя", + "Ui.SetupWizard.CouchDBCheck.DetectAndFix": "Обнаружить и исправить проблемы CouchDB", + "Ui.SetupWizard.CouchDBCheck.Fix": "Исправить", + "Ui.SetupWizard.E2EE.AlgorithmGuidance": "В большинстве случаев следует оставить алгоритм по умолчанию (${algorithm}). Этот параметр нужен только если существующий Vault зашифрован в другом формате.", + "Ui.SetupWizard.E2EE.AlgorithmWarning": "Изменение алгоритма шифрования сделает недоступными данные, ранее зашифрованные другим алгоритмом. Убедитесь, что все устройства настроены на один и тот же алгоритм, чтобы сохранить доступ к данным.", + "Ui.SetupWizard.E2EE.EncryptionAlgorithm": "Алгоритм шифрования", + "Ui.SetupWizard.Fetch.BackupDone": "Я создал(а) резервную копию своего Vault.", + "Ui.SetupWizard.Fetch.BackupQuestion": "Создали ли вы резервную копию перед продолжением?", + "Ui.SetupWizard.Fetch.BackupRecommendation": "Рекомендуем скопировать папку Vault в безопасное место. Это послужит защитой на случай большого количества конфликтов или если вы по ошибке синхронизируетесь с неверной целью.", + "Ui.SetupWizard.Fetch.BackupSkipped": "Я понимаю риски и продолжу без резервной копии.", + "Ui.SetupWizard.Fetch.BackupUnable": "Я не могу создать резервную копию своего Vault.", + "Ui.SetupWizard.Fetch.BackupUnableNote": "Если вы понимаете риски и всё равно хотите продолжить, выберите этот вариант.", + "Ui.SetupWizard.Fetch.BackupUnableWarning": "Настоятельно рекомендуется создать резервную копию перед продолжением. Продолжение без резервной копии может привести к потере данных.", + "Ui.SetupWizard.Fetch.ConflictNote": "Кроме того, если в данных сервера уже есть конфликты, они будут синхронизированы на это устройство как есть, и вам придётся разрешать их локально.", + "Ui.SetupWizard.Fetch.Guidance": "Это действие перестроит локальную базу данных на этом устройстве с использованием самых свежих данных с сервера. Оно предназначено для устранения несогласованности синхронизации и восстановления корректной работы.", + "Ui.SetupWizard.Fetch.ImportantBody": "Если в Vault на этом устройстве есть несинхронизированные изменения, после сброса они, вероятно, разойдутся с версиями на сервере. Это может привести к большому числу конфликтов файлов.", + "Ui.SetupWizard.Fetch.ImportantTitle": "Важное уведомление", + "Ui.SetupWizard.Fetch.PreventFetchConfig": "Не получать конфигурацию с сервера", + "Ui.SetupWizard.Fetch.Proceed": "Сбросить и возобновить синхронизацию", + "Ui.SetupWizard.Fetch.Title": "Сбросить синхронизацию на этом устройстве", + "Ui.SetupWizard.Fetch.UnbalancedNote": "В этом сценарии Self-hosted LiveSync заново создаст метаданные для каждого файла и намеренно создаст конфликты. Если содержимое файлов одинаково, эти конфликты будут разрешены автоматически.", + "Ui.SetupWizard.Fetch.VaultIdentical": "Файлы в этом Vault почти идентичны файлам на сервере.", + "Ui.SetupWizard.Fetch.VaultIdenticalDesc": "(например, сразу после восстановления на другом компьютере или после восстановления из резервной копии)", + "Ui.SetupWizard.Fetch.VaultIndependent": "Этот Vault пуст или содержит только новые файлы, которых нет на сервере.", + "Ui.SetupWizard.Fetch.VaultIndependentDesc": "(например, при первой настройке на новом смартфоне, начиная с чистого листа)", + "Ui.SetupWizard.Fetch.VaultQuestion": "Чтобы свести к минимуму создание новых конфликтов, выберите вариант, который лучше всего описывает текущее состояние вашего Vault. Затем приложение проверит файлы наиболее подходящим способом на основе вашего выбора.", + "Ui.SetupWizard.Fetch.VaultUnbalanced": "Между файлами в этом Vault и на сервере могут быть различия.", + "Ui.SetupWizard.Fetch.VaultUnbalancedDesc": "(например, после редактирования большого количества файлов в офлайн-режиме)", + "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.Log.E2EEConfigurationCancelled": "Настройка E2EE отменена.", + "Ui.SetupWizard.Log.ManualConfigurationCancelled": "Ручная настройка отменена.", + "Ui.SetupWizard.Log.NoSettingsChanges": "Изменений настроек не обнаружено. Применение настроек мастера пропущено.", + "Ui.SetupWizard.Log.OnboardingCancelled": "Первоначальная настройка отменена пользователем.", + "Ui.SetupWizard.Log.QrCodeDialogClosed": "Диалог QR-кода закрыт.", + "Ui.SetupWizard.Log.QrCodeResult": "Результат QR-кода: ${result}", + "Ui.SetupWizard.Log.SettingApplied": "Настройка применена", + "Ui.SetupWizard.Log.SettingsApplied": "Настройки мастера применены.", + "Ui.SetupWizard.Log.SetupUriDialogCancelled": "Диалог Setup URI отменен.", + "Ui.SetupWizard.Log.SetupUriDialogClosed": "Диалог Setup URI закрыт.", + "Ui.SetupWizard.Log.UserCancelledApplyingSettings": "Пользователь отменил применение настроек мастера.", + "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.P2P.AutoBroadcast": "Автоматически рассылать изменения", + "Ui.SetupWizard.P2P.AutoBroadcastDesc": "Если автоматическая рассылка включена, изменения будут автоматически отправляться подключённым пирам без ручного вмешательства. Это попросит пиры получить изменения с этого устройства.", + "Ui.SetupWizard.P2P.AutoStart": "Автоматически запускать P2P-подключение", + "Ui.SetupWizard.P2P.AutoStartDesc": "Если автоматический запуск P2P включён, P2P-подключение будет запускаться автоматически при запуске плагина.", + "Ui.SetupWizard.P2P.DevicePeerId": "ID пира устройства", + "Ui.SetupWizard.P2P.Enabled": "Включено", + "Ui.SetupWizard.P2P.ErrorConnectPeers": "Не удалось подключиться к другим пирам: ${error}", + "Ui.SetupWizard.P2P.GenerateRandomId": "Сгенерировать случайный ID", + "Ui.SetupWizard.P2P.GroupId": "ID группы", + "Ui.SetupWizard.P2P.GroupPassphraseDesc": "ID группы и парольная фраза используются для идентификации группы устройств. Используйте одинаковый ID группы и парольную фразу на всех устройствах, которые хотите синхронизировать. ID группы не ограничен сгенерированным форматом; можно использовать любую строку.", + "Ui.SetupWizard.P2P.NoPeersFound": "Настройки выглядят корректно, но другие пиры не найдены.", + "Ui.SetupWizard.P2P.PlaceholderRelayUrl": "Введите URL ретранслятора", + "Ui.SetupWizard.P2P.PlaceholderTurnCredential": "Введите учётные данные TURN", + "Ui.SetupWizard.P2P.PlaceholderTurnUsername": "Введите имя пользователя TURN", + "Ui.SetupWizard.P2P.PublicTurnWarning": "Использование публичных TURN-серверов может иметь последствия для приватности, так как данные передаются через сторонние серверы. Даже если данные зашифрованы, сам факт вашего присутствия может быть им известен. Перед использованием убедитесь, что доверяете провайдеру TURN-сервера и своему сетевому администратору. По возможности настройте собственный TURN-сервер для своего FQDN.", + "Ui.SetupWizard.P2P.RelayUrl": "URL ретранслятора", + "Ui.SetupWizard.P2P.Title": "Настройка P2P", + "Ui.SetupWizard.P2P.TurnCredential": "Учётные данные TURN", + "Ui.SetupWizard.P2P.TurnServerDesc": "Настройки TURN-сервера нужны только если вы находитесь за строгим NAT или firewall, которые мешают прямым P2P-соединениям. В большинстве случаев эти поля можно оставить пустыми.", + "Ui.SetupWizard.P2P.TurnServerUrls": "URL TURN-серверов (через запятую)", + "Ui.SetupWizard.P2P.TurnUsername": "Имя пользователя TURN", + "Ui.SetupWizard.P2P.UseDefaultRelay": "Использовать relay-сервер vrtmrz", + "Ui.SetupWizard.Rebuild.BackupBeforeProceeding": "Конечно, мы можем создать резервную копию данных перед продолжением.", + "Ui.SetupWizard.Rebuild.BackupDone": "Я создал(а) резервную копию своего Vault.", + "Ui.SetupWizard.Rebuild.BackupQuestion": "Создали ли вы резервную копию перед продолжением?", + "Ui.SetupWizard.Rebuild.BackupSkipped": "Я понимаю риски и продолжу без резервной копии.", + "Ui.SetupWizard.Rebuild.BackupUnable": "Я не могу создать резервную копию своих Vault.", + "Ui.SetupWizard.Rebuild.BackupUnableAdvice": "Вам следует создать новую цель синхронизации и перестроить там данные. После этого синхронизируйте с новым удалённым хранилищем поочерёдно каждый другой девайс в совершенно новый Vault.", + "Ui.SetupWizard.Rebuild.BackupWarning": "Это чрезвычайно мощная операция. Мы настоятельно рекомендуем скопировать папку Vault в безопасное место.", + "Ui.SetupWizard.Rebuild.ConfirmDataLoss": "Я понимаю, что все изменения, сделанные на других смартфонах или компьютерах, могут быть потеряны.", + "Ui.SetupWizard.Rebuild.ConfirmIrreversible": "Я понимаю, что после выполнения это действие необратимо.", + "Ui.SetupWizard.Rebuild.ConfirmSyncDisabled": "Я понимаю, что другие устройства больше не смогут синхронизироваться и им потребуется сбросить сведения о синхронизации.", + "Ui.SetupWizard.Rebuild.ConfirmTitle": "Подтвердите следующее", + "Ui.SetupWizard.Rebuild.Guidance": "Эта процедура сначала удалит с сервера все существующие данные синхронизации. После этого данные на сервере будут полностью перестроены с использованием текущего состояния вашего Vault на этом устройстве как единственной авторитетной основной копии.", + "Ui.SetupWizard.Rebuild.PreventFetchConfig": "Не получать конфигурацию с сервера", + "Ui.SetupWizard.Rebuild.Proceed": "Я понимаю, перезаписать сервер", + "Ui.SetupWizard.Rebuild.ResetNotifyOtherDevices": "после сброса удалённого хранилища вы получите уведомление на других устройствах.", + "Ui.SetupWizard.Rebuild.ResolveOnOtherDevices": "Есть способ решить это на других устройствах.", + "Ui.SetupWizard.Rebuild.Title": "Последнее подтверждение: перезаписать данные сервера файлами с этого устройства", + "Ui.SetupWizard.Rebuild.WhenToUse": "Выполнять эту операцию следует только в исключительных обстоятельствах, например если данные на сервере полностью повреждены, изменения на всех остальных устройствах больше не нужны или размер базы данных стал необычно большим по сравнению с размером Vault.", + "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": "Настройка удалённого сервера", + "Ui.UseSetupURI.ButtonCancel": "Отмена", + "Ui.UseSetupURI.ButtonProceed": "Проверить настройки и продолжить", + "Ui.UseSetupURI.ErrorFailedToParse": "Не удалось разобрать Setup-URI.", + "Ui.UseSetupURI.ErrorPassphraseRequired": "Требуется парольная фраза.", + "Ui.UseSetupURI.Guidance": "Введите Setup URI, сгенерированный во время установки сервера или на другом устройстве, а также парольную фразу Vault.", + "Ui.UseSetupURI.InvalidInfo": "Setup-URI выглядит недействительным. Проверьте, правильно ли вы его скопировали.", + "Ui.UseSetupURI.Label": "Setup-URI", + "Ui.UseSetupURI.LabelPassphrase": "Парольная фраза", + "Ui.UseSetupURI.PlaceholderPassphrase": "Введите парольную фразу", + "Ui.UseSetupURI.Title": "Введите Setup URI", + "Ui.UseSetupURI.ValidMessage": "Setup-URI действителен и готов к использованию.", "Unique name between all synchronized devices. To edit this setting, please disable customization sync once.": "Уникальное имя между всеми синхронизируемыми устройствами.", "Use a custom passphrase": "Использовать пользовательскую парольную фразу", "Use a Setup URI (Recommended)": "Использовать Setup URI (рекомендуется)", "Use Custom HTTP Handler": "Использовать пользовательский HTTP обработчик", "Use dynamic iteration count": "Использовать динамическое количество итераций", + "Use Only Local Chunks": "Использовать только локальные чанки", + "Use Request API to avoid `inevitable` CORS problem": "Использовать Request API, чтобы обойти «неизбежную» проблему CORS", "Use Segmented-splitter": "Использовать сегментный разделитель", "Use splitting-limit-capped chunk splitter": "Использовать разделитель чанков с ограничением", "Use the trash bin": "Использовать корзину", "Use timeouts instead of heartbeats": "Использовать таймауты вместо пульса", "username": "имя пользователя", "Username": "Имя пользователя", + "V1: Legacy": "V1: Устаревший", + "V2: Simple (Default)": "V2: Простой (по умолчанию)", + "V2.5: Lexical chunks": "V2.5: Лексические чанки", + "V3: Fine deduplication": "V3: Точная дедупликация", "Verbose Log": "Подробный лог", "Verify all": "Проверить всё", "Verify and repair all files": "Проверить и восстановить все файлы", - "Warning! This will have a serious impact on performance. And the logs will not be synchronised under the default name.": "Внимание! Это серьёзно повлияет на производительность.", - "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.", + "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.": "Внимание! Это серьёзно повлияет на производительность. Кроме того, журналы не будут синхронизироваться под именем по умолчанию. Будьте осторожны с логами: они часто содержат конфиденциальную информацию.", "We cannot change the device name while this feature is enabled. Please disable this feature to change the device name.": "Невозможно изменить имя устройства, пока эта функция включена. Отключите её, чтобы изменить имя устройства.", "We will now guide you through a few questions to simplify the synchronisation setup.": "Сейчас мы зададим несколько вопросов, чтобы упростить настройку синхронизации。", "We will now proceed with the server configuration.": "Теперь перейдём к настройке сервера。", "Welcome to Self-hosted LiveSync": "Добро пожаловать в Self-hosted LiveSync", "When you save a file in the editor, start a sync automatically": "Когда вы сохраняете файл в редакторе, автоматически запускать синхронизацию", + "While enabled, it causes very performance impact but debugging replication testing and other features will be enabled. Please disable this if you have not read the source code. Requires restart of Obsidian.": "При включении сильно влияет на производительность, но включает отладку, тестирование репликации и другие функции. Отключите это, если вы не читали исходный код. Требуется перезапуск Obsidian.", "Write credentials in the file": "Записывать учётные данные в файл", "Write logs into the file": "Записывать логи в файл", "xxhash32 (Fast but less collision resistance)": "xxhash32 (быстрый, но с меньшей устойчивостью к коллизиям)", "xxhash64 (Fastest)": "xxhash64 (самый быстрый)", + "xxhash64 is the current default.": "Текущее значение по умолчанию: xxhash64.", "Yes, I want to add this device to my existing synchronisation": "Да, я хочу добавить это устройство к существующей синхронизации", "Yes, I want to set up a new synchronisation": "Да, я хочу настроить новую синхронизацию", - "You are adding this device to an existing synchronisation setup.": "Вы добавляете это устройство к существующей настройке синхронизации。" + "You are adding this device to an existing synchronisation setup.": "Вы добавляете это устройство к существующей настройке синхронизации。", + "You can enable this setting to process the files with size mismatches, these files can be created by some APIs or integrations.": "Можно включить этот параметр для обработки файлов с несовпадающим размером; такие файлы могут создаваться некоторыми API или интеграциями." } diff --git a/src/common/messagesJson/zh-tw.json b/src/common/messagesJson/zh-tw.json index d0c424e5..b9ff3dff 100644 --- a/src/common/messagesJson/zh-tw.json +++ b/src/common/messagesJson/zh-tw.json @@ -1,37 +1,53 @@ { "(Active)": "(已啟用)", + "(BETA) Always overwrite with a newer file": "始終使用更新的檔案覆蓋(測試版)", + "(Beta) Use ignore files": "(測試版)使用忽略檔案", + "(Days passed, 0 to disable automatic-deletion)": "(已過天數,0為禁用自動刪除)", + "(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.": "(例如,線上讀取塊)如果啟用此選項,LiveSync 將直接線上讀取塊,而不是在本地複製塊。建議增加自定義塊大小", + "(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)如果設定了此項,大於此大小的本地和遠端檔案的更改將被跳過。如果檔案再次變小,將使用更新的檔案", + "(Mega chars)": "(百萬字元)", + "(Not recommended) If set, credentials will be stored in the file.": "(不建議)如果設定,憑據將儲存在檔案中", + "(Obsolete) Use an old adapter for compatibility": "(已棄用)為相容性使用舊介面卡", "(RegExp) Empty to sync all files. Set filter as a regular expression to limit synchronising files.": "(正則表示式)留空即同步所有檔案。設定正則表示式可限制要同步的檔案。", "(RegExp) If this is set, any changes to local and remote files that match this will be skipped.": "(正則表示式)若已設定,所有符合此模式的本機與遠端檔案變更都會被略過。", "(Select this if you are already using synchronisation on another computer or smartphone.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": "(如果你已經在另一台電腦或手機上使用同步,請選擇此項。)此選項適合將目前裝置加入既有 LiveSync 設定的使用者。", "(Select this if you are configuring this device as the first synchronisation device.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": "(如果你正在將此裝置設定為第一台同步裝置,請選擇此項。)此選項適合初次使用 LiveSync,並希望從頭開始設定的使用者。", "> [!INFO]- The connected devices have been detected as follows:\n${devices}": "> [!INFO]- 已偵測到以下已連線裝置:\n${devices}", "A Setup URI is a single string of text containing your server address and authentication details. Using a URI, if one was generated by your server installation script, provides a simple and secure configuration.": "Setup URI 是一段包含伺服器位址與驗證資訊的文字。如果伺服器安裝腳本已經產生 URI,使用它可以更簡單且更安全地完成設定。", + "Access Key": "訪問金鑰", "Activate": "啟用", - "Active Remote Configuration": "目前啟用的遠端設定", + "Active Remote Configuration": "生效中的遠端配置", + "Active Remote Type": "作用中的遠端類型", "Add default patterns": "新增預設模式", "Add new connection": "新增連線", + "Advanced": "進階", "All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.": "所有裝置的進度值均相同(${progress})。看起來你的裝置已同步,可以繼續執行垃圾回收。", - "Always prompt merge conflicts": "總是提示合併衝突", - "Analyse": "分析", + "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.": "分析資料庫使用情況並產生 TSV 報告,方便你自行診斷。你可以將產生的報告貼到任何慣用的試算表中查看。", - "Apply Latest Change if Conflicting": "發生衝突時套用最新變更", - "Apply preset configuration": "套用預設配置", + "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": "應用預設配置", "Ask a passphrase at every launch": "每次啟動時都詢問密語", - "Automatically Sync all files when opening Obsidian.": "開啟 Obsidian 時自動同步所有檔案。", + "Automatically broadcast changes to connected peers": "自動向已連線的對等裝置廣播變更", + "Automatically start P2P connection on launch": "啟動時自動開始 P2P 連線", + "Automatically Sync all files when opening Obsidian.": "開啟 Obsidian 時自動同步所有檔案", "Back": "返回", "Back to non-configured": "恢復為未設定狀態", - "Batch database update": "批次更新資料庫", - "Batch limit": "批次上限", + "Batch database update": "批次資料庫更新", + "Batch limit": "批次限制", "Batch size": "批次大小", - "Batch size of on-demand fetching": "按需抓取的批次大小", + "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": "儲存桶名稱", "Cancel": "取消", "Cancel Garbage Collection": "取消垃圾回收", - "Check": "檢查", + "Check": "立即檢查", "Check and convert non-path-obfuscated files": "檢查並轉換未進行路徑混淆的檔案", "Check for documents that have not been converted to path-obfuscated IDs and convert them if necessary.": "檢查尚未轉換為路徑混淆 ID 的文件,並在需要時進行轉換。", - "cmdConfigSync.showCustomizationSync": "顯示自訂同步", + "Chunk Splitter": "資料區塊分割器", + "cmdConfigSync.showCustomizationSync": "顯示自定義同步", + "Comma separated `.gitignore, .dockerignore`": "用逗號分隔,例如 `.gitignore, .dockerignore`", "Compaction in progress on remote database...": "正在遠端資料庫上執行壓縮...", "Compaction on remote database completed successfully.": "遠端資料庫壓縮已成功完成。", "Compaction on remote database failed.": "遠端資料庫壓縮失敗。", @@ -43,6 +59,7 @@ "Compatibility (Metadata)": "相容性(中繼資料)", "Compatibility (Remote Database)": "相容性(遠端資料庫)", "Compatibility (Trouble addressed)": "相容性(問題修復)", + "Compute revisions for chunks": "為 chunks 計算修訂版本(以前的行為)", "Configuration Encryption": "設定加密", "Configure": "設定", "Configure And Change Remote": "設定並切換遠端", @@ -58,21 +75,22 @@ "CouchDB Connection Tweak": "CouchDB 連線調校", "Cross-platform": "跨平台", "Current adapter: {adapter}": "目前的適配器:{adapter}", + "Customization sync": "自訂同步", "Customization Sync": "自訂同步", - "Customization Sync (Beta3)": "自訂同步(Beta3)", + "Customization Sync (Beta3)": "自定義同步(Beta3)", "Data Compression": "資料壓縮", "Database -> Storage": "資料庫 -> 儲存空間", "Database Adapter": "資料庫適配器", "Database Name": "資料庫名稱", - "Database suffix": "資料庫後綴", + "Database suffix": "資料庫字尾", "Default": "預設", - "Delay conflict resolution of inactive files": "延後處理非活動檔案的衝突", - "Delay merge conflict prompt for inactive files.": "延後顯示非活動檔案的合併衝突提示。", + "Delay conflict resolution of inactive files": "推遲解決不活動檔案", + "Delay merge conflict prompt for inactive files.": "推遲手動解決不活動檔案", "Delete": "刪除", "Delete all customization sync data": "刪除所有自訂同步資料", "Delete all data on the remote server.": "刪除遠端伺服器上的所有資料。", "Delete local database to reset or uninstall Self-hosted LiveSync": "刪除本機資料庫以重設或解除安裝 Self-hosted LiveSync", - "Delete old metadata of deleted files on start-up": "啟動時刪除已刪除檔案的舊中繼資料", + "Delete old metadata of deleted files on start-up": "啟動時刪除已刪除檔案的舊後設資料", "Delete Remote Configuration": "刪除遠端設定", "Delete remote configuration '{name}'?": "要刪除遠端設定「{name}」嗎?", "desktop": "桌面裝置", @@ -80,38 +98,65 @@ "Device": "裝置", "Device name": "裝置名稱", "Device Setup Method": "裝置設定方式", - "dialog.yourLanguageAvailable": "Self-hosted LiveSync 已提供你目前語言的翻譯,因此已啟用顯示語言設定。\n\n注意:並非所有訊息都已完成翻譯,歡迎協助補充!\n注意 2:如果你要回報問題,請先切回預設語言,再附上截圖、訊息與日誌。\n\n希望你使用愉快!", - "dialog.yourLanguageAvailable.btnRevertToDefault": "恢復為預設語言", - "dialog.yourLanguageAvailable.Title": "已提供你的語言翻譯!", + "dialog.yourLanguageAvailable": "Self-hosted LiveSync已提供您語言的翻譯,因此啟用了%{Display language}\n\n注意:並非所有訊息都已翻譯。我們期待您的貢獻!\n注意 2:若您建立問題報告, **請切換回%{lang-def}** ,然後擷取螢幕截圖、訊息和日誌,此操作可在設定對話方塊中完成\n願您使用順心!", + "dialog.yourLanguageAvailable.btnRevertToDefault": "保留%{lang-def}", + "dialog.yourLanguageAvailable.Title": " 翻譯可用!", "Disables all synchronization and restart.": "停用所有同步並重新啟動。", - "Disables logging, only shows notifications. Please disable if you report an issue.": "停用日誌記錄,只顯示通知。如果你要回報問題,請關閉此選項。", + "Disables logging, only shows notifications. Please disable if you report an issue.": "禁用日誌記錄,僅顯示通知。如果您報告問題,請禁用此選項", "Display Language": "顯示語言", "Display name": "顯示名稱", - "Do not check configuration mismatch before replication": "複寫前不檢查設定是否不一致", - "Do not keep metadata of deleted files.": "不保留已刪除檔案的中繼資料。", - "Do not split chunks in the background": "不在背景分割 chunks", + "Do not check configuration mismatch before replication": "在複製前不檢查配置不匹配", + "Do not keep metadata of deleted files.": "不保留已刪除檔案的後設資料 ", + "Do not split chunks in the background": "不在後臺分割 chunks", "Do not use internal API": "不使用內部 API", - "Document History": "文件歷程", + "Doctor.Button.DismissThisVersion": "拒絕,並且直到下個版本前不再詢問", + "Doctor.Button.Fix": "修復", + "Doctor.Button.FixButNoRebuild": "修復但不重建", + "Doctor.Button.No": "?", + "Doctor.Button.Skip": "保持不變", + "Doctor.Button.Yes": "?", + "Doctor.Dialogue.Main": "你好!由於 ${activateReason},Config Doctor 已啟動!\n很遺憾,偵測到某些設定可能存在問題。\n請放心,我們會逐項解決。\n\n先讓你知道,我們將詢問以下項目。\n\n${issues}\n\n現在開始嗎?", + "Doctor.Dialogue.MainFix": "\n## ${name}\n\n| 當前 | 理想 |\n|:---:|:---:|\n| ${current} | ${ideal} |\n\n**推薦級別:** ${level}\n\n### 為什麼會檢測到這個問題?\n\n${reason}\n\n${note}\n\n是否修復為理想值?", + "Doctor.Dialogue.Title": "Self-hosted LiveSync 配置診斷", + "Doctor.Dialogue.TitleAlmostDone": "全部完成!", + "Doctor.Dialogue.TitleFix": "修復問題 ${current}/${total}", + "Doctor.Level.Must": "必須", + "Doctor.Level.Necessary": "必要", + "Doctor.Level.Optional": "可選", + "Doctor.Level.Recommended": "推薦", + "Doctor.Message.NoIssues": "未發現問題!", + "Doctor.Message.RebuildLocalRequired": "注意!需要重建本地資料庫以應用此項!", + "Doctor.Message.RebuildRequired": "注意!需要重建才能應用此項!", + "Doctor.Message.SomeSkipped": "我們將某些問題留給了以後處理。是否要在下次啟動時再次詢問您?", + "Doctor.RULES.E2EE_V02500.REASON": "端到端加密(E2EE)現已更加強大和快速。此外,之前的 E2EE 在重新進行的程式碼審查中被發現存在安全問題。應儘快應用此更新。對於給您帶來的不便深表歉意。請注意,此設定不向前相容。所有已同步的裝置必須更新至 v0.25.0 或更高版本。不需要重建,系統會自動從新的傳輸轉換為新格式,但建議在可能的情況下進行重建。", + "Document History": "文件歷史", "Duplicate": "複製", "Duplicate remote": "複製遠端設定", "E2EE Configuration": "E2EE 設定", "Edge case addressing (Behaviour)": "邊緣情況處理(行為)", "Edge case addressing (Database)": "邊緣情況處理(資料庫)", "Edge case addressing (Processing)": "邊緣情況處理(處理)", + "Effectively a directory. Should end with `/`. e.g., `vault-name/`.": "相當於目錄。應以 `/` 結尾,例如 `vault-name/`。", "Emergency restart": "緊急重新啟動", - "Enable advanced features": "啟用進階功能", - "Enable customization sync": "啟用自訂同步", - "Enable Developers' Debug Tools.": "啟用開發者除錯工具。", + "Enable advanced features": "啟用高階功能", + "Enable advanced mode": "啟用進階模式", + "Enable customization sync": "啟用自定義同步", + "Enable Developers' Debug Tools.": "啟用開發者除錯工具 ", "Enable edge case treatment features": "啟用邊緣情況處理功能", - "Enable poweruser features": "啟用進階使用者功能", - "Enable this if your Object Storage doesn't support CORS": "如果你的物件儲存不支援 CORS,請啟用此選項", - "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.": "加密遠端資料庫中的內容。如果你使用外掛的同步功能,建議啟用此選項。", - "Encrypting sensitive configuration items": "加密敏感設定項目", - "Encryption phassphrase. If changed, you should overwrite the server's database with the new (encrypted) files.": "加密密語。如果變更了它,你應以新的(已加密)檔案覆寫伺服器上的資料庫。", - "End-to-End Encryption": "端對端加密", - "Endpoint URL": "端點 URL", - "Enhance chunk size": "擴大 chunk 大小", + "Enable forcePathStyle": "啟用 forcePathStyle", + "Enable P2P Synchronization": "啟用 P2P 同步", + "Enable per-file customization sync": "啟用逐檔自訂同步", + "Enable power user mode": "啟用進階使用者模式", + "Enable poweruser features": "啟用高階使用者功能", + "Enable this if your Object Storage doesn't support CORS": "如果您的物件儲存不支援 CORS,請啟用此功能 ", + "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.": "加密遠端資料庫中的內容。如果您使用外掛的同步功能,則建議啟用此功能 ", + "Encrypting sensitive configuration items": "加密敏感配置項", + "Encryption passphrase. 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.": "加密密碼。如果更改,您應該用新的(加密的)檔案覆蓋伺服器的資料庫 ", + "End-to-End Encryption": "端到端加密", + "Endpoint URL": "終端URL", + "Enhance chunk size": "增大塊大小", "Enter Server Information": "輸入伺服器資訊", "Enter the server information manually": "手動輸入伺服器資訊", "Export": "匯出", @@ -120,15 +165,17 @@ "Failed to start one-shot replication before Garbage Collection. Garbage Collection Cancelled.": "無法在垃圾回收前啟動一次性複寫。垃圾回收已取消。", "Failed to start replication after Garbage Collection.": "垃圾回收後無法啟動複寫。", "Fetch": "抓取", - "Fetch chunks on demand": "按需抓取 chunks", - "Fetch database with previous behaviour": "以前一種行為抓取資料庫", + "Fetch chunks on demand": "按需獲取塊", + "Fetch database with previous behaviour": "使用以前的行為獲取資料庫", "Fetch remote settings": "抓取遠端設定", + "File prefix on the bucket": "儲存桶中的檔案前綴", "File to resolve conflict": "要解決衝突的檔案", "File to view History": "要檢視歷程的檔案", "Filename": "檔名", + "Files with modification times greater than this value (in seconds since the Unix epoch) will not have their events reflected. Set to 0 to disable this limit.": "修改時間大於此值(Unix Epoch 以來秒數)的檔案,其事件不會被反映。設為 0 可停用此限制。", "First, please select the option that best describes your current situation.": "首先,請選擇最符合你目前情況的選項。", "Flag and restart": "標記後重新啟動", - "Forces the file to be synced when opened.": "開啟檔案時強制同步該檔案。", + "Forces the file to be synced when opened.": "開啟檔案時強制同步該檔案 ", "Fresh Start Wipe": "全新開始清除", "Garbage Collection cancelled by user.": "使用者已取消垃圾回收。", "Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.": "垃圾回收完成。已刪除 chunks:${deletedChunks} / ${totalChunks}。耗時:${seconds} 秒。", @@ -138,38 +185,191 @@ "Garbage Collection: Scanned ${scanned} / ~${docCount}": "垃圾回收:已掃描 ${scanned} / ~${docCount}", "Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": "垃圾回收:掃描完成。總 chunks:${totalChunks},已使用 chunks:${usedChunks}", "Handle files as Case-Sensitive": "將檔案視為區分大小寫", + "Hatch": "工具箱", "Hidden Files": "隱藏檔案", "Hide completely": "完全隱藏", - "Highlight diff": "醒目顯示差異", - "How to display network errors when the sync server is unreachable.": "當同步伺服器無法連線時,如何顯示網路錯誤。", + "Highlight diff": "高亮差異", + "How to display network errors when the sync server is unreachable.": "同步伺服器無法連線時,如何顯示網路錯誤。", "How would you like to configure the connection to your server?": "你希望如何設定與伺服器的連線?", "I am adding a device to an existing synchronisation setup": "我要將裝置加入既有同步設定", "I am setting this up for the first time": "我是第一次進行設定", "I know my server details, let me enter them": "我知道伺服器資訊,讓我手動輸入", - "If disabled(toggled), chunks will be split on the UI thread (Previous behaviour).": "若停用(關閉)此選項,chunks 會在 UI 執行緒上分割(舊有行為)。", - "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.": "啟用後,chunks 最多會分成 100 個項目,但去重效果會稍微變弱。", - "If enabled, newly created chunks are temporarily kept within the document, and graduated to become independent chunks once stabilised.": "啟用後,新建立的 chunks 會暫時保留在文件中,待穩定後再獨立出去。", - "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)": "啟用後,所有 chunks 都會以其內容產生的修訂版本儲存(舊有行為)。", - "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.": "啟用後,chunks 會依語意切分成有意義的區段,並非所有平台都支援此功能。", + "If disabled(toggled), chunks will be split on the UI thread (Previous behaviour).": "如果禁用(切換),chunks 將在 UI 執行緒上分割(以前的行為)", + "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, changes will be automatically broadcasted to all connected peers. Notified peers will start fetching the changes.": "啟用後,變更會自動廣播給所有已連線的對等裝置。收到通知的裝置會開始取得這些變更。", + "If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker.": "如果啟用,資料塊將被分割成不超過 100 項。但是,去重效果會稍弱", + "If enabled, efficient per-file customization sync will be used. A minor migration is required when enabling this feature, and all devices must be updated to v0.23.18. Enabling this feature will result in losing compatibility with older versions.": "啟用後,將使用更有效率的逐檔自訂同步。啟用此功能時需要一次小型遷移,且所有裝置都必須更新到 v0.23.18。啟用後將失去與舊版本的相容性。", + "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 forcePathStyle option will be used for bucket operations.": "啟用後,儲存桶操作將使用 forcePathStyle 選項。", + "If enabled, the notification of hidden files change will be suppressed.": "如果啟用,將不再通知隱藏檔案被更改", + "If enabled, the P2P connection will be automatically started when the application launches.": "啟用後,應用程式啟動時會自動開始 P2P 連線。", + "If enabled, the plugin will not attempt to connect to the remote database even if the chunk was not found locally.": "啟用後,即使本機找不到該區塊,外掛也不會嘗試連線到遠端資料庫。", + "If enabled, the request API will be used to avoid `inevitable` CORS problems. This is a workaround and may not work in all cases. PLEASE READ THE DOCUMENTATION BEFORE USING THIS OPTION. This is a less-secure option.": "啟用後,將使用 request API 避免「不可避免」的 CORS 問題。這是變通方案,不一定適用於所有情況。使用此選項前請務必閱讀文件。這是安全性較低的選項。", + "If this enabled, all chunks will be stored with the revision made from its content.": "啟用後,所有資料區塊都會使用由其內容產生的修訂版本儲存。", + "If this enabled, all chunks will be stored with the revision made from its content. (Previous behaviour)": "如果啟用,所有 chunks 將使用根據其內容生成的修訂版本儲存(以前的行為)", + "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.": "如果啟用此功能,資料塊將被分割成具有語義意義的段落。並非所有平臺都支援此功能", + "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.": "如果啟用此選項,PouchDB 將保持連線開啟 60 秒,如果在此時間內沒有更改到達,則關閉並重新開啟套接字,而不是無限期保持開啟。當代理限制請求持續時間時有用,但可能會增加資源使用ß", "If you reached the payload size limit when using IBM Cloudant, please decrease batch size and batch limit to a lower value.": "如果你在使用 IBM Cloudant 時遇到負載大小上限,請調低批次大小與批次上限。", "Ignore and Proceed": "忽略並繼續", + "Ignore files": "忽略檔案", "Ignore patterns": "忽略模式", "Import connection": "匯入連線", + "Incubate Chunks in Document": "在文件中孵化塊", "Initialise all journal history, On the next sync, every item will be received and sent.": "初始化所有日誌歷史。下次同步時,每個項目都會重新接收與傳送。", "Initialise journal received history. On the next sync, every item except this device sent will be downloaded again.": "初始化接收日誌歷程。下次同步時,除了此裝置已送出的項目外,其他項目都會再次下載。", "Initialise journal sent history. On the next sync, every item except this device received will be sent again.": "初始化傳送日誌歷程。下次同步時,除了此裝置已接收的項目外,其他項目都會再次傳送。", + "Interval (sec)": "間隔(秒)", + "K.exp": "實驗性", + "K.long_p2p_sync": "%{title_p2p_sync}", + "K.P2P": "%{Peer}對%{Peer}", + "K.Peer": "節點", + "K.ScanCustomization": "掃描自定義", + "K.short_p2p_sync": "P2P Sync", + "K.title_p2p_sync": "Peer-to-Peer同步", + "Keep empty folder": "保留空資料夾", + "lang_def": "預設", + "lang-de": "Deutsch", + "lang-def": "%{lang_def}", + "lang-es": "Español", + "lang-ja": "日本語", + "lang-ko": "한국어", + "lang-ru": "Русский", + "lang-zh": "簡體中文", + "lang-zh-tw": "繁體中文", "Later": "稍後", "Limit: {datetime} ({timestamp})": "限制:{datetime}({timestamp})", + "LiveSync could not handle multiple vaults which have same name without different prefix, This should be automatically configured.": "LiveSync 無法處理具有相同名稱但沒有不同字首的多個庫。這應該自動配置", + "liveSyncReplicator.beforeLiveSync": "在LiveSync前,先啟動OneShot一次...", + "liveSyncReplicator.cantReplicateLowerValue": "我們無法複製更小的值", + "liveSyncReplicator.checkingLastSyncPoint": "查詢上次同步點", + "liveSyncReplicator.couldNotConnectTo": "無法連線到 ${uri} : ${name}\n(${db})", + "liveSyncReplicator.couldNotConnectToRemoteDb": "無法連線到遠端資料庫:${d}", + "liveSyncReplicator.couldNotConnectToServer": "無法連線到伺服器", + "liveSyncReplicator.couldNotConnectToURI": "無法連線到 ${uri}:${dbRet}", + "liveSyncReplicator.couldNotMarkResolveRemoteDb": "無法標記並解決遠端資料庫", + "liveSyncReplicator.liveSyncBegin": "LiveSync 開始...", + "liveSyncReplicator.lockRemoteDb": "鎖定遠端資料庫以防止資料損壞", + "liveSyncReplicator.markDeviceResolved": "將此裝置標記為“已解決”", + "liveSyncReplicator.oneShotSyncBegin": "OneShot同步開始...(${syncMode})", + "liveSyncReplicator.remoteDbCorrupted": "遠端資料庫較新或已損壞,請確保已安裝最新版本的self-hosted-livesync", + "liveSyncReplicator.remoteDbCreatedOrConnected": "遠端資料庫已建立或連線", + "liveSyncReplicator.remoteDbDestroyed": "遠端資料庫已銷燬", + "liveSyncReplicator.remoteDbDestroyError": "遠端資料庫銷燬時發生錯誤:", + "liveSyncReplicator.remoteDbMarkedResolved": "遠端資料庫已標記為已解決", + "liveSyncReplicator.replicationClosed": "同步已關閉", + "liveSyncReplicator.replicationInProgress": "同步正在進行中", + "liveSyncReplicator.retryLowerBatchSize": "使用更小的批次大小重試:${batch_size}/${batches_limit}", + "liveSyncReplicator.unlockRemoteDb": "解鎖遠端資料庫以防止資料損壞", + "liveSyncSetting.errorNoSuchSettingItem": "沒有此設定項:${key}", + "liveSyncSetting.originalValue": "原始值:${value}", + "liveSyncSetting.valueShouldBeInRange": "值應該在 ${min} < value < ${max} 之間", + "liveSyncSettings.btnApply": "應用", "Lock": "鎖定", "Lock Server": "鎖定伺服器", "Lock the remote server to prevent synchronization with other devices.": "鎖定遠端伺服器,以防止其他裝置進行同步。", + "logPane.autoScroll": "自動滾動", + "logPane.logWindowOpened": "日誌視窗已開啟", + "logPane.pause": "暫停", + "logPane.title": "Self-hosted LiveSync 日誌", + "logPane.wrap": "自動換行", + "Maintenance": "維護", + "Maximum delay for batch database updating": "批次資料庫更新的最大延遲", + "Maximum file modification time for reflected file events": "反映檔案事件的最大檔案修改時間", + "Maximum file size": "最大檔案大小", + "Maximum Incubating Chunk Size": "最大孵化塊大小", + "Maximum Incubating Chunks": "最大孵化塊數", + "Maximum Incubation Period": "最大孵化期", + "Maximum size of chunks to send in one request": "單次請求傳送資料區塊的最大大小", + "MB": "MB", + "MB (0 to disable).": "MB(0為禁用)", + "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}", + "moduleCheckRemoteSize.logThresholdEnlarged": "閾值已擴大到 ${size}MB", + "moduleCheckRemoteSize.msgConfirmRebuild": "這可能需要一些時間。您真的想現在重建所有內容嗎?", + "moduleCheckRemoteSize.msgDatabaseGrowing": "**您的資料庫正在變大!** 但別擔心,我們現在可以解決它。在遠端儲存空間用完之前還有時間。\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", + "moduleCheckRemoteSize.msgSetDBCapacity": "我們可以設定一個最大資料庫容量警告,**以便在遠端儲存空間耗盡前採取行動**。\n您想啟用這個功能嗎?\n\n> [!MORE]-\n> - 0: 不警告儲存大小。\n> 如果您在遠端儲存(尤其是自託管)上有足夠的空間,則推薦此選項。您可以手動檢查儲存大小並重建。\n> - 800: 如果遠端儲存大小超過 800MB 則發出警告。\n> 如果您使用的是 fly.io(1GB 限制) 或 IBM Cloudant,則推薦此選項。\n> - 2000: 如果遠端儲存大小超過 2GB 則發出警告。\n\n如果達到限制,系統會要求我們逐步增大限制\n", + "moduleCheckRemoteSize.option2GB": "2GB (標準)", + "moduleCheckRemoteSize.option800MB": "800MB(Cloudant, fly.io)", + "moduleCheckRemoteSize.optionAskMeLater": "稍後問我", + "moduleCheckRemoteSize.optionDismiss": "忽略", + "moduleCheckRemoteSize.optionIncreaseLimit": "增加到 ${newMax}MB", + "moduleCheckRemoteSize.optionNoWarn": "不,請永遠不要警告", + "moduleCheckRemoteSize.optionRebuildAll": "立即重建所有內容", + "moduleCheckRemoteSize.titleDatabaseSizeLimitExceeded": "遠端儲存大小超出限制", + "moduleCheckRemoteSize.titleDatabaseSizeNotify": "設定資料庫大小通知", + "moduleInputUIObsidian.defaultTitleConfirmation": "確認", + "moduleInputUIObsidian.defaultTitleSelect": "選擇", + "moduleInputUIObsidian.optionNo": "否", + "moduleInputUIObsidian.optionYes": "是", + "moduleLiveSyncMain.logAdditionalSafetyScan": "額外的安全掃描...", + "moduleLiveSyncMain.logLoadingPlugin": "正在載入外掛...", + "moduleLiveSyncMain.logPluginInitCancelled": "外掛初始化被某個模組取消", + "moduleLiveSyncMain.logPluginVersion": "Self-hosted LiveSync v${manifestVersion} ${packageVersion}", + "moduleLiveSyncMain.logReadChangelog": "LiveSync 已更新,請閱讀更新日誌!", + "moduleLiveSyncMain.logSafetyScanCompleted": "額外的安全掃描完成", + "moduleLiveSyncMain.logSafetyScanFailed": "額外的安全掃描在某個模組上失敗", + "moduleLiveSyncMain.logUnloadingPlugin": "正在解除安裝外掛...", + "moduleLiveSyncMain.logVersionUpdate": "LiveSync 已更新,如果存在破壞性更新,所有自動同步已暫時禁用。請確保所有裝置都更新到最新版本後再啟用", + "moduleLiveSyncMain.msgScramEnabled": "Self-hosted LiveSync 已被配置為忽略某些事件。這樣對嗎?\n\n| 型別 | 狀態 | 說明 |\n|:---:|:---:|---|\n| 儲存事件 | ${fileWatchingStatus} | 所有修改都將被忽略 |\n| 資料庫事件 | ${parseReplicationStatus} | 所有同步的更改都將被推遲 |\n\n您想恢復它們並重啟 Obsidian 嗎?\n\n> [!DETAILS]-\n> 這些標誌是在重建或獲取時由外掛設定的。如果過程異常結束,它們可能會被無意中保留。\n> 如果您不確定,可以嘗試重新執行這些過程。請確保備份您的庫。\n", + "moduleLiveSyncMain.optionKeepLiveSyncDisabled": "保持 LiveSync 禁用", + "moduleLiveSyncMain.optionResumeAndRestart": "恢復並重啟 Obsidian", + "moduleLiveSyncMain.titleScramEnabled": "緊急停止已啟用", + "moduleLocalDatabase.logWaitingForReady": "等待就緒...", + "moduleLog.showLog": "顯示日誌", + "moduleMigration.docUri": "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", + "moduleMigration.fix0256.buttons.checkItLater": "稍後檢查", + "moduleMigration.fix0256.buttons.DismissForever": "我已經修復了,不再詢問", + "moduleMigration.fix0256.buttons.fix": "修復", + "moduleMigration.fix0256.message": "由於最近的一個 bug(在 v0.25.6 版本中),某些檔案可能未正確儲存到同步資料庫中\n我們已經掃描了檔案,並發現一些需要修復的檔案\n\n**準備修復的檔案:**\n\n${files}\n\n這些檔案在儲存中與原檔案的大小匹配,可能是可恢復的\n我們可以使用它們修復資料庫,請點選下方的“修復”按鈕進行修復\n\n${messageUnrecoverable}\n\n\n如果你希望再次執行此操作,可以前往 Hatch 頁面進行操作\n", + "moduleMigration.fix0256.messageUnrecoverable": "**無法在此裝置上修復的檔案:**\n\n${filesNotRecoverable}\n\n這些檔案的後設資料不一致,無法在此裝置上修復(大多數情況下我們無法確定哪一個是正確的)\n要恢復它們,請檢查你的其他裝置(同樣使用此功能),或從備份中手動恢復\n", + "moduleMigration.fix0256.title": "檢測到損壞的檔案", + "moduleMigration.insecureChunkExist.buttons.fetch": "我已經重建了遠端資料庫,將從遠端獲取", + "moduleMigration.insecureChunkExist.buttons.later": "我稍後再做", + "moduleMigration.insecureChunkExist.buttons.rebuild": "重建所有內容", + "moduleMigration.insecureChunkExist.laterMessage": "我們強烈建議儘快處理此問題!", + "moduleMigration.insecureChunkExist.message": "一些塊未安全儲存,並且在資料庫中未加密\n**請重建資料庫以修復此問題**.\n\n如果你的遠端資料庫未配置 SSL,或者使用了不安全的憑據 **你可能面臨暴露敏感資料的風險**.\n\n注意:請在所有裝置上將 Self-hosted LiveSync 升級到 v0.25.6 或更高版本,並確保備份你的保險庫\n\n注意2:重建所有內容和獲取操作會消耗一些時間和流量,請在非高峰時段進行,並確保網路連線穩定\n", + "moduleMigration.insecureChunkExist.title": "發現不安全的塊!", + "moduleMigration.logBulkSendCorrupted": "已啟用批次傳送 chunks,但此功能已損壞。給您帶來不便,我們深表歉意。已自動禁用", + "moduleMigration.logFetchRemoteTweakFailed": "獲取遠端調整值失敗", + "moduleMigration.logLocalDatabaseNotReady": "出錯了!本地資料庫尚未準備好", + "moduleMigration.logMigratedSameBehaviour": "已遷移到 db:${current},行為與之前相同", + "moduleMigration.logMigrationFailed": "從 ${old} 到 ${current} 的遷移失敗或已取消", + "moduleMigration.logRedflag2CreationFail": "建立 redflag2 失敗", + "moduleMigration.logRemoteTweakUnavailable": "無法獲取遠端調整值", + "moduleMigration.logSetupCancelled": "設定已取消,Self-hosted LiveSync 正在等待您的設定!", + "moduleMigration.msgFetchRemoteAgain": "您可能已經知道,Self-hosted LiveSync 更改了其預設行為和資料庫結構。\n\n值得慶幸的是,在您的時間和努力下,遠端資料庫似乎已經遷移完成。恭喜!\n\n但是,我們還需要一點點操作。此裝置的配置與遠端資料庫不相容。我們需要再次從遠端資料庫獲取。我們現在應該再次從遠端獲取嗎?\n\n___注意:在更改配置並再次獲取資料庫之前,我們無法進行同步。___\n___注意2:chunks 是完全不可變的,我們只能獲取後設資料和差異", + "moduleMigration.msgInitialSetup": "您的裝置**尚未設定**。讓我引導您完成設定過程。\n\n請記住,每個對話方塊內容都可以複製到剪貼簿。如果以後需要參考,可以將其貼上到 Obsidian 的筆記中。您也可以使用翻譯工具將其翻譯成您的語言。\n\n首先,您有**設定 URI** 嗎?\n\n注意:如果您不知道這是什麼,請參閱[文件](${URI_DOC})", + "moduleMigration.msgRecommendSetupUri": "我們強烈建議您生成一個設定 URI 並使用它。\n如果您對此不瞭解,請參閱[文件](${URI_DOC})(再次抱歉,但這很重要)。\n\n您想如何手動設定?", + "moduleMigration.msgSinceV02321": "自 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}` 並嘗試再次同步。由於檢測到差異,系統會再次提示您", + "moduleMigration.optionAdjustRemote": "調整到遠端設定", + "moduleMigration.optionDecideLater": "稍後決定", + "moduleMigration.optionEnableBoth": "啟用兩者", + "moduleMigration.optionEnableFilenameCaseInsensitive": "僅啟用 #1", + "moduleMigration.optionEnableFixedRevisionForChunks": "僅啟用 #2", + "moduleMigration.optionHaveSetupUri": "是的,我有", + "moduleMigration.optionKeepPreviousBehaviour": "保持以前的行為", + "moduleMigration.optionManualSetup": "全部手動設定", + "moduleMigration.optionNoAskAgain": "不,請稍後再次詢問", + "moduleMigration.optionNoSetupUri": "不,我沒有", + "moduleMigration.optionRemindNextLaunch": "下次啟動時提醒我", + "moduleMigration.optionSetupViaP2P": "使用 %{short_p2p_sync} 進行設定", + "moduleMigration.optionSetupWizard": "帶我進入設定嚮導", + "moduleMigration.optionYesFetchAgain": "是的,再次獲取", + "moduleMigration.titleCaseSensitivity": "大小寫敏感性", + "moduleMigration.titleRecommendSetupUri": "推薦使用設定 URI", + "moduleMigration.titleWelcome": "歡迎使用 Self-hosted LiveSync", + "moduleObsidianMenu.replicate": "複製", "More actions": "更多操作", + "Move remotely deleted files to the trash, instead of deleting.": "將遠端刪除的檔案移至回收站,而不是直接刪除", "Network warning style": "網路警告樣式", "New Remote": "新增遠端", "No connected device information found. Cancelling Garbage Collection.": "找不到已連線裝置的資訊。正在取消垃圾回收。", @@ -179,50 +379,186 @@ "Node Information Missing": "節點資訊缺失", "Non-Synchronising files": "不同步的檔案", "Normal Files": "一般檔案", + "Not all messages have been translated. And, please revert to \"Default\" when reporting errors.": "並非所有訊息都已翻譯。請在報告錯誤時恢復為\"預設\"", + "Notify all setting files": "通知所有設定檔案", + "Notify customized": "通知自定義設定", + "Notify when other device has newly customized.": "當其他裝置有新的自定義設定時通知 ", + "Notify when the estimated remote storage size exceeds on start up": "啟動時當估計的遠端儲存大小超出時通知", + "Now we can choose how to split the chunks; V3 is the most efficient. If you have troubled, please make this Default or Legacy.": "現在可以選擇如何分割資料區塊;V3 效率最高。如果遇到問題,請改為 Default 或 Legacy。", + "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.": "一次處理的批次數量。預設為 40。最小為 2。此設定與批次大小一起控制一次在記憶體中保留多少文件", + "Number of changes to sync at a time. Defaults to 50. Minimum is 2.": "一次同步的更改數量。預設為 50。最小為 2。", "Obsidian version": "Obsidian 版本", - "obsidianLiveSyncSettingTab.btnApply": "套用", - "obsidianLiveSyncSettingTab.btnDisable": "停用", + "obsidianLiveSyncSettingTab.btnApply": "應用", + "obsidianLiveSyncSettingTab.btnCheck": "檢查", + "obsidianLiveSyncSettingTab.btnCopy": "複製", + "obsidianLiveSyncSettingTab.btnDisable": "禁用", + "obsidianLiveSyncSettingTab.btnDiscard": "丟棄", + "obsidianLiveSyncSettingTab.btnEnable": "啟用", + "obsidianLiveSyncSettingTab.btnFix": "修復", + "obsidianLiveSyncSettingTab.btnGotItAndUpdated": "我明白了並且已更新", "obsidianLiveSyncSettingTab.btnNext": "下一步", + "obsidianLiveSyncSettingTab.btnStart": "開始", + "obsidianLiveSyncSettingTab.btnTest": "測試", + "obsidianLiveSyncSettingTab.btnUse": "使用", + "obsidianLiveSyncSettingTab.buttonFetch": "獲取", "obsidianLiveSyncSettingTab.buttonNext": "下一步", - "obsidianLiveSyncSettingTab.defaultLanguage": "預設語言", - "obsidianLiveSyncSettingTab.labelDisabled": "⏹️ : 已停用", + "obsidianLiveSyncSettingTab.defaultLanguage": "預設", + "obsidianLiveSyncSettingTab.descConnectSetupURI": "這是使用設定 URI 設定 Self-hosted LiveSync 的推薦方法", + "obsidianLiveSyncSettingTab.descCopySetupURI": "非常適合設定新裝置!", + "obsidianLiveSyncSettingTab.descEnableLiveSync": "僅在配置了上述兩個選項之一或手動完成所有配置後啟用此選項", + "obsidianLiveSyncSettingTab.descFetchConfigFromRemote": "從已配置的遠端伺服器獲取必要的設定", + "obsidianLiveSyncSettingTab.descManualSetup": "不推薦,但如果您沒有設定 URI 則很有用", + "obsidianLiveSyncSettingTab.descTestDatabaseConnection": "開啟資料庫連線。如果未找到遠端資料庫並且您有建立資料庫的許可權,則將建立資料庫", + "obsidianLiveSyncSettingTab.descValidateDatabaseConfig": "檢查並修復資料庫配置中的任何潛在問題", + "obsidianLiveSyncSettingTab.errAccessForbidden": "❗ 訪問被禁止", + "obsidianLiveSyncSettingTab.errCannotContinueTest": "我們無法繼續測試。", + "obsidianLiveSyncSettingTab.errCorsCredentials": "❗ cors.credentials 設定錯誤", + "obsidianLiveSyncSettingTab.errCorsNotAllowingCredentials": "❗ CORS 不允許憑據", + "obsidianLiveSyncSettingTab.errCorsOrigins": "❗ cors.origins 設定錯誤", + "obsidianLiveSyncSettingTab.errEnableCors": "❗ httpd.enable_cors 設定錯誤", + "obsidianLiveSyncSettingTab.errEnableCorsChttpd": "❗ chttpd.enable_cors 設定錯誤", + "obsidianLiveSyncSettingTab.errMaxDocumentSize": "❗ couchdb.max_document_size 設定過低)", + "obsidianLiveSyncSettingTab.errMaxRequestSize": "❗ chttpd.max_http_request_size 設定過低)", + "obsidianLiveSyncSettingTab.errMissingWwwAuth": "❗ 缺少 httpd.WWW-Authenticate 設定", + "obsidianLiveSyncSettingTab.errRequireValidUser": "❗ chttpd.require_valid_user 設定錯誤", + "obsidianLiveSyncSettingTab.errRequireValidUserAuth": "❗ chttpd_auth.require_valid_user 設定錯誤", + "obsidianLiveSyncSettingTab.labelDisabled": "⏹️ : 已禁用", "obsidianLiveSyncSettingTab.labelEnabled": "🔁 : 已啟用", - "obsidianLiveSyncSettingTab.logConfiguredDisabled": "已設定的同步模式:已停用", - "obsidianLiveSyncSettingTab.logConfiguredLiveSync": "已設定的同步模式:LiveSync", - "obsidianLiveSyncSettingTab.logConfiguredPeriodic": "已設定的同步模式:定期同步", - "obsidianLiveSyncSettingTab.logSelectAnyPreset": "請選擇任一預設項目。", - "obsidianLiveSyncSettingTab.msgConfigCheckFailed": "設定檢查失敗。仍要繼續嗎?", - "obsidianLiveSyncSettingTab.msgEnableEncryptionRecommendation": "我們建議啟用端對端加密與路徑混淆。你確定要在未加密的情況下繼續嗎?", - "obsidianLiveSyncSettingTab.msgFetchConfigFromRemote": "要從遠端伺服器抓取設定嗎?", - "obsidianLiveSyncSettingTab.msgGenerateSetupURI": "全部完成!要產生 Setup URI 以便設定其他裝置嗎?", - "obsidianLiveSyncSettingTab.msgInvalidPassphrase": "你的加密密語可能無效。你確定要繼續嗎?", - "obsidianLiveSyncSettingTab.msgSelectAndApplyPreset": "請選擇並套用任一預設項目以完成精靈。", - "obsidianLiveSyncSettingTab.nameDisableHiddenFileSync": "停用隱藏檔案同步", + "obsidianLiveSyncSettingTab.levelAdvanced": "(進階)", + "obsidianLiveSyncSettingTab.levelEdgeCase": "(邊緣情況)", + "obsidianLiveSyncSettingTab.levelPowerUser": "(高階使用者)", + "obsidianLiveSyncSettingTab.linkOpenInBrowser": "在瀏覽器中開啟", + "obsidianLiveSyncSettingTab.linkPageTop": "頁面頂部", + "obsidianLiveSyncSettingTab.linkTipsAndTroubleshooting": "提示和故障排除", + "obsidianLiveSyncSettingTab.linkTroubleshooting": "/docs/troubleshooting.md", + "obsidianLiveSyncSettingTab.logCannotUseCloudant": "此功能不能與 IBM Cloudant 一起使用 ", + "obsidianLiveSyncSettingTab.logCheckingConfigDone": "配置檢查完成", + "obsidianLiveSyncSettingTab.logCheckingConfigFailed": "配置檢查失敗", + "obsidianLiveSyncSettingTab.logCheckingDbConfig": "正在檢查資料庫配置", + "obsidianLiveSyncSettingTab.logCheckPassphraseFailed": "錯誤:無法使用遠端伺服器檢查密碼:\n${db}", + "obsidianLiveSyncSettingTab.logConfiguredDisabled": "配置的同步模式:已禁用", + "obsidianLiveSyncSettingTab.logConfiguredLiveSync": "配置的同步模式:LiveSync", + "obsidianLiveSyncSettingTab.logConfiguredPeriodic": "配置的同步模式:定期", + "obsidianLiveSyncSettingTab.logCouchDbConfigFail": "CouchDB 配置:${title} 失敗", + "obsidianLiveSyncSettingTab.logCouchDbConfigSet": "CouchDB 配置:${title} -> 設定 ${key} 為 ${value}", + "obsidianLiveSyncSettingTab.logCouchDbConfigUpdated": "CouchDB 配置:${title} 成功更新", + "obsidianLiveSyncSettingTab.logDatabaseConnected": "資料庫已連線", + "obsidianLiveSyncSettingTab.logEncryptionNoPassphrase": "沒有密碼無法啟用加密", + "obsidianLiveSyncSettingTab.logEncryptionNoSupport": "您的裝置不支援加密 ", + "obsidianLiveSyncSettingTab.logErrorOccurred": "發生錯誤!!", + "obsidianLiveSyncSettingTab.logEstimatedSize": "估計大小:${size}", + "obsidianLiveSyncSettingTab.logPassphraseInvalid": "密碼無效,請修正", + "obsidianLiveSyncSettingTab.logPassphraseNotCompatible": "錯誤:密碼與遠端伺服器不相容!請再次檢查!", + "obsidianLiveSyncSettingTab.logRebuildNote": "同步已禁用,如果需要,請獲取並重新啟用", + "obsidianLiveSyncSettingTab.logSelectAnyPreset": "選擇任何預設", + "obsidianLiveSyncSettingTab.logServerConfigurationCheck": "日誌伺服器配置檢查", + "obsidianLiveSyncSettingTab.msgAreYouSureProceed": "您確定要繼續嗎?", + "obsidianLiveSyncSettingTab.msgChangesNeedToBeApplied": "需要應用更改!", + "obsidianLiveSyncSettingTab.msgConfigCheck": "--配置檢查--", + "obsidianLiveSyncSettingTab.msgConfigCheckFailed": "配置檢查失敗。您仍要繼續嗎?", + "obsidianLiveSyncSettingTab.msgConnectionCheck": "--連線檢查--", + "obsidianLiveSyncSettingTab.msgConnectionProxyNote": "如果您在連線檢查時遇到問題(即使檢查了配置後),請檢查您的反向代理配置", + "obsidianLiveSyncSettingTab.msgCurrentOrigin": "目前 origin: ${origin}", + "obsidianLiveSyncSettingTab.msgDiscardConfirmation": "您真的要丟棄現有的設定和資料庫嗎?", + "obsidianLiveSyncSettingTab.msgDone": "--完成--", + "obsidianLiveSyncSettingTab.msgEnableCors": "設定 httpd.enable_cors", + "obsidianLiveSyncSettingTab.msgEnableCorsChttpd": "設定 chttpd.enable_cors", + "obsidianLiveSyncSettingTab.msgEnableEncryptionRecommendation": "我們建議啟用端到端加密和路徑混淆。您確定要在沒有加密的情況下繼續嗎?", + "obsidianLiveSyncSettingTab.msgFetchConfigFromRemote": "您想從遠端伺服器獲取配置嗎?", + "obsidianLiveSyncSettingTab.msgGenerateSetupURI": "全部完成!您想生成一個設定 URI 來設定其他裝置嗎?", + "obsidianLiveSyncSettingTab.msgIfConfigNotPersistent": "如果伺服器配置不是持久的(例如,在 docker 上執行),此處的值可能會更改。一旦能夠連線,請更新伺服器 local.ini 中的設定", + "obsidianLiveSyncSettingTab.msgInvalidPassphrase": "您的加密密碼可能無效。您確定要繼續嗎?", + "obsidianLiveSyncSettingTab.msgNewVersionNote": "因為升級通知來到這裡?請檢視版本歷史。如果您滿意,請點選按鈕。新的更新將再次提示此資訊", + "obsidianLiveSyncSettingTab.msgNonHTTPSInfo": "配置為非 HTTPS URI。請注意,這可能在移動裝置上無法工作", + "obsidianLiveSyncSettingTab.msgNonHTTPSWarning": "無法連線到非 HTTPS URI。請更新您的配置並重試", + "obsidianLiveSyncSettingTab.msgNotice": "---注意---", + "obsidianLiveSyncSettingTab.msgObjectStorageWarning": "警告:此功能仍在開發中,請注意以下幾點:\n- 僅追加架構。需要重建才能縮小儲存空間。\n- 有點脆弱。\n- 首次同步時,所有歷史記錄將從遠端傳輸。注意資料上限和慢速。\n- 只有差異會實時同步。\n\n如果您遇到任何問題,或對此功能有任何想法,請在 GitHub 上建立 issue。\n感謝您的巨大貢獻", + "obsidianLiveSyncSettingTab.msgOriginCheck": "正在檢查 origin: ${org}", + "obsidianLiveSyncSettingTab.msgRebuildRequired": "需要重建資料庫以應用更改。請選擇應用更改的方法。\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": "請選擇並應用任何預設項以完成嚮導", + "obsidianLiveSyncSettingTab.msgSetCorsCredentials": "設定 cors.credentials", + "obsidianLiveSyncSettingTab.msgSetCorsOrigins": "設定 cors.origins", + "obsidianLiveSyncSettingTab.msgSetMaxDocSize": "設定 couchdb.max_document_size", + "obsidianLiveSyncSettingTab.msgSetMaxRequestSize": "設定 chttpd.max_http_request_size", + "obsidianLiveSyncSettingTab.msgSetRequireValidUser": "設定 chttpd.require_valid_user = true", + "obsidianLiveSyncSettingTab.msgSetRequireValidUserAuth": "設定 chttpd_auth.require_valid_user = true", + "obsidianLiveSyncSettingTab.msgSettingModified": "設定 \"${setting}\" 已從另一臺裝置修改。點選 {HERE} 重新載入設定。點選其他地方忽略更改", + "obsidianLiveSyncSettingTab.msgSettingsUnchangeableDuringSync": "這些設定在同步期間無法更改。請在“同步設定”中禁用所有同步以解鎖", + "obsidianLiveSyncSettingTab.msgSetWwwAuth": "設定 httpd.WWW-Authenticate", + "obsidianLiveSyncSettingTab.nameApplySettings": "應用設定", + "obsidianLiveSyncSettingTab.nameConnectSetupURI": "使用設定 URI 連線", + "obsidianLiveSyncSettingTab.nameCopySetupURI": "將當前設定複製為設定 URI", + "obsidianLiveSyncSettingTab.nameDisableHiddenFileSync": "禁用隱藏檔案同步", + "obsidianLiveSyncSettingTab.nameDiscardSettings": "丟棄現有設定和資料庫", "obsidianLiveSyncSettingTab.nameEnableHiddenFileSync": "啟用隱藏檔案同步", + "obsidianLiveSyncSettingTab.nameEnableLiveSync": "啟用 LiveSync", "obsidianLiveSyncSettingTab.nameHiddenFileSynchronization": "隱藏檔案同步", - "obsidianLiveSyncSettingTab.optionDisableAllAutomatic": "停用所有自動同步", - "obsidianLiveSyncSettingTab.optionLiveSync": "LiveSync 同步", - "obsidianLiveSyncSettingTab.optionOnEvents": "事件觸發時", - "obsidianLiveSyncSettingTab.optionPeriodicAndEvents": "定期與事件觸發", - "obsidianLiveSyncSettingTab.optionPeriodicWithBatch": "定期(批次)", + "obsidianLiveSyncSettingTab.nameManualSetup": "手動設定", + "obsidianLiveSyncSettingTab.nameTestConnection": "測試連線", + "obsidianLiveSyncSettingTab.nameTestDatabaseConnection": "測試資料庫連線", + "obsidianLiveSyncSettingTab.nameValidateDatabaseConfig": "驗證資料庫配置", + "obsidianLiveSyncSettingTab.okAdminPrivileges": "✔ 您擁有管理員許可權", + "obsidianLiveSyncSettingTab.okCorsCredentials": "✔ cors.credentials 設定正確", + "obsidianLiveSyncSettingTab.okCorsCredentialsForOrigin": "CORS 憑據正常", + "obsidianLiveSyncSettingTab.okCorsOriginMatched": "✔ CORS 源正常", + "obsidianLiveSyncSettingTab.okCorsOrigins": "✔ cors.origins 設定正確", + "obsidianLiveSyncSettingTab.okEnableCors": "✔ httpd.enable_cors 設定正確", + "obsidianLiveSyncSettingTab.okEnableCorsChttpd": "✔ chttpd.enable_cors 已就緒。", + "obsidianLiveSyncSettingTab.okMaxDocumentSize": "✔ couchdb.max_document_size 設定正確", + "obsidianLiveSyncSettingTab.okMaxRequestSize": "✔ chttpd.max_http_request_size 設定正確", + "obsidianLiveSyncSettingTab.okRequireValidUser": "✔ chttpd.require_valid_user 設定正確", + "obsidianLiveSyncSettingTab.okRequireValidUserAuth": "✔ chttpd_auth.require_valid_user 設定正確", + "obsidianLiveSyncSettingTab.okWwwAuth": "✔ httpd.WWW-Authenticate 設定正確", + "obsidianLiveSyncSettingTab.optionApply": "應用", + "obsidianLiveSyncSettingTab.optionCancel": "取消", + "obsidianLiveSyncSettingTab.optionCouchDB": "CouchDB", + "obsidianLiveSyncSettingTab.optionDisableAllAutomatic": "禁用所有自動同步", + "obsidianLiveSyncSettingTab.optionFetchFromRemote": "從遠端獲取", + "obsidianLiveSyncSettingTab.optionHere": "這裡", + "obsidianLiveSyncSettingTab.optionLiveSync": "LiveSync", + "obsidianLiveSyncSettingTab.optionMinioS3R2": "Minio, S3, R2", + "obsidianLiveSyncSettingTab.optionOkReadEverything": "好的,我已經閱讀了所有內容 ", + "obsidianLiveSyncSettingTab.optionOnEvents": "基於事件", + "obsidianLiveSyncSettingTab.optionPeriodicAndEvents": "定期和基於事件", + "obsidianLiveSyncSettingTab.optionPeriodicWithBatch": "定期與批次", + "obsidianLiveSyncSettingTab.optionRebuildBoth": "從此裝置重建兩者", + "obsidianLiveSyncSettingTab.optionSaveOnlySettings": "(危險)僅儲存設定", + "obsidianLiveSyncSettingTab.panelChangeLog": "更新日誌", + "obsidianLiveSyncSettingTab.panelGeneralSettings": "常規設定", + "obsidianLiveSyncSettingTab.panelPrivacyEncryption": "隱私與加密", + "obsidianLiveSyncSettingTab.panelRemoteConfiguration": "遠端配置", + "obsidianLiveSyncSettingTab.panelSetup": "設定", + "obsidianLiveSyncSettingTab.serverVersion": "伺服器資訊: ${info}", + "obsidianLiveSyncSettingTab.titleActiveRemoteServer": "活動遠端伺服器", "obsidianLiveSyncSettingTab.titleAppearance": "外觀", - "obsidianLiveSyncSettingTab.titleConflictResolution": "衝突處理", + "obsidianLiveSyncSettingTab.titleConflictResolution": "衝突解決", "obsidianLiveSyncSettingTab.titleCongratulations": "恭喜!", - "obsidianLiveSyncSettingTab.titleCouchDB": "CouchDB 伺服器", + "obsidianLiveSyncSettingTab.titleCouchDB": "CouchDB", "obsidianLiveSyncSettingTab.titleDeletionPropagation": "刪除傳播", - "obsidianLiveSyncSettingTab.titleEncryptionNotEnabled": "尚未啟用加密", - "obsidianLiveSyncSettingTab.titleEncryptionPassphraseInvalid": "加密密語無效", - "obsidianLiveSyncSettingTab.titleFetchConfig": "抓取設定", + "obsidianLiveSyncSettingTab.titleEncryptionNotEnabled": "未啟用加密", + "obsidianLiveSyncSettingTab.titleEncryptionPassphraseInvalid": "加密密碼無效", + "obsidianLiveSyncSettingTab.titleExtraFeatures": "啟用額外和高階功能", + "obsidianLiveSyncSettingTab.titleFetchConfig": "獲取配置", + "obsidianLiveSyncSettingTab.titleFetchConfigFromRemote": "從遠端伺服器獲取配置", + "obsidianLiveSyncSettingTab.titleFetchSettings": "獲取設定", "obsidianLiveSyncSettingTab.titleHiddenFiles": "隱藏檔案", - "obsidianLiveSyncSettingTab.titleLogging": "記錄", - "obsidianLiveSyncSettingTab.titleMinioS3R2": "MinIO、S3、R2", + "obsidianLiveSyncSettingTab.titleLogging": "日誌記錄", + "obsidianLiveSyncSettingTab.titleMinioS3R2": "Minio, S3, R2", "obsidianLiveSyncSettingTab.titleNotification": "通知", - "obsidianLiveSyncSettingTab.titleRemoteConfigCheckFailed": "遠端設定檢查失敗", + "obsidianLiveSyncSettingTab.titleOnlineTips": "線上提示", + "obsidianLiveSyncSettingTab.titleQuickSetup": "快速設定", + "obsidianLiveSyncSettingTab.titleRebuildRequired": "需要重建", + "obsidianLiveSyncSettingTab.titleRemoteConfigCheckFailed": "遠端配置檢查失敗", "obsidianLiveSyncSettingTab.titleRemoteServer": "遠端伺服器", - "obsidianLiveSyncSettingTab.titleSynchronizationMethod": "同步方式", + "obsidianLiveSyncSettingTab.titleReset": "重置", + "obsidianLiveSyncSettingTab.titleSetupOtherDevices": "設定其他裝置", + "obsidianLiveSyncSettingTab.titleSynchronizationMethod": "同步方法", "obsidianLiveSyncSettingTab.titleSynchronizationPreset": "同步預設", + "obsidianLiveSyncSettingTab.titleSyncSettings": "同步設定", "obsidianLiveSyncSettingTab.titleSyncSettingsViaMarkdown": "透過 Markdown 同步設定", - "obsidianLiveSyncSettingTab.titleUpdateThinning": "更新精簡", + "obsidianLiveSyncSettingTab.titleUpdateThinning": "更新頻率限制", + "obsidianLiveSyncSettingTab.warnCorsOriginUnmatched": "⚠ CORS Origin 不符合 ${from}->${to}", + "obsidianLiveSyncSettingTab.warnNoAdmin": "⚠ 您沒有管理員許可權", "Ok": "確定", "Old Algorithm": "舊演算法", "Older fallback (Slow, W/O WebAssembly)": "舊版回退(較慢,無 WebAssembly)", @@ -230,22 +566,47 @@ "Overwrite remote": "覆寫遠端", "Overwrite remote with local DB and passphrase.": "使用本機資料庫與密語覆寫遠端。", "Overwrite Server Data with This Device's Files": "以此裝置的檔案覆寫伺服器資料", + "P2P.AskPassphraseForDecrypt": "遠端對等方共享了配置,請輸入密碼短語以解密配置", + "P2P.AskPassphraseForShare": "遠端對等方請求此裝置配置,請輸入密碼短語以共享配置。你可以透過取消此對話方塊來忽略此請求", + "P2P.DisabledButNeed": "%{title_p2p_sync} 已禁用。你確定要啟用它嗎?", + "P2P.FailedToOpen": "無法開啟 P2P 連線到信令伺服器", + "P2P.NoAutoSyncPeers": "未找到自動同步的對等方,請在 %{long_p2p_sync} 面板中設定對等方", + "P2P.NoKnownPeers": "未檢測到對等方,正在等待其他對等方的連線...", + "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 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": "The Experimental Implementation of the Peer-to-Peer Replicator.", + "P2P.Note.important_note_sub": "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": "What is this feature? (and some important notes, please read once)", + "P2P.NotEnabled": "%{title_p2p_sync} 未啟用,無法建立新連線。", + "P2P.P2PReplication": "%{P2P} 同步", + "P2P.PaneTitle": "%{long_p2p_sync}", + "P2P.ReplicatorInstanceMissing": "未找到 P2P 同步複製器,可能尚未配置或啟用。", + "P2P.SeemsOffline": "節點 ${name} 似乎離線,已跳過。", + "P2P.SyncAlreadyRunning": "P2P 同步已在執行中。", + "P2P.SyncCompleted": "P2P 同步已完成。", + "P2P.SyncStartedWith": "已與 ${name} 開始 P2P 同步。", "paneMaintenance.markDeviceResolvedAfterBackup": "請在完成備份後將此裝置標記為已處理。", "paneMaintenance.remoteLockedAndDeviceNotAccepted": "遠端資料庫已鎖定,且此裝置尚未被接受。", "paneMaintenance.remoteLockedResolvedDevice": "遠端資料庫已鎖定,但此裝置已被接受。", "paneMaintenance.unlockDatabaseReady": "現在可以解鎖資料庫。", + "Passphrase": "密碼", + "Passphrase of sensitive configuration items": "敏感配置項的密碼", + "password": "密碼", + "Password": "密碼", "Paste a connection string": "貼上連線字串", "Paste the Setup URI generated from one of your active devices.": "貼上從一台已在使用裝置上產生的 Setup URI。", + "Path Obfuscation": "路徑混淆", "Patterns to match files for overwriting instead of merging": "用於匹配需覆寫而非合併檔案的模式", "Patterns to match files for syncing": "用於匹配同步檔案的模式", "Peer-to-Peer only": "僅 Peer-to-Peer", "Peer-to-Peer Synchronisation": "點對點同步", + "Per-file-saved customization sync": "按檔案儲存的自定義同步", "Perform": "執行", "Perform cleanup": "執行清理", "Perform Garbage Collection": "執行垃圾回收", "Perform Garbage Collection to remove unused chunks and reduce database size.": "執行垃圾回收以移除未使用的 chunks 並減少資料庫大小。", + "Periodic Sync interval": "定期同步間隔", "Pick a file to resolve conflict": "選擇要解決衝突的檔案", - "Pick a file to show history": "選擇要顯示歷程的檔案", + "Pick a file to show history": "選擇要顯示歷史的檔案", "Please disable 'Read chunks online' in settings to use Garbage Collection.": "若要使用垃圾回收,請在設定中停用「Read chunks online」。", "Please enable 'Compute revisions for chunks' in settings to use Garbage Collection.": "若要使用垃圾回收,請在設定中啟用「Compute revisions for chunks」。", "Please select 'Cancel' explicitly to cancel this operation.": "若要取消此操作,請明確選擇「取消」。", @@ -254,12 +615,16 @@ "Please select the type of server to which you are connecting.": "請選擇你要連線的伺服器類型。", "Please set this device name": "請設定此裝置名稱", "Plug-in version": "外掛版本", - "Prepare the 'report' to create an issue": "準備建立 Issue 用的「報告」", + "Prepare the 'report' to create an issue": "準備 '報告' 以建立問題單", + "Presets": "預設", "Proceed Garbage Collection": "繼續執行垃圾回收", "Proceed with Setup URI": "繼續使用 Setup URI", "Proceeding with Garbage Collection, ignoring missing nodes.": "正在繼續執行垃圾回收,並忽略缺失節點。", "Proceeding with Garbage Collection.": "正在執行垃圾回收。", + "Process files even if seems to be corrupted": "即使檔案看似已損壞也處理", + "Process small files in the foreground": "在前臺處理小檔案", "Progress": "進度", + "Property Encryption": "屬性加密", "PureJS fallback (Fast, W/O WebAssembly)": "PureJS 回退(快速,無 WebAssembly)", "Purge all download/upload cache.": "清除所有下載/上傳快取。", "Purge all journal counter": "清除所有日誌計數器", @@ -268,16 +633,58 @@ "Recovery and Repair": "修復與修補", "Recreate all": "全部重建", "Recreate missing chunks for all files": "為所有檔案重建遺失的 chunks", + "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> 此方法使用較少的 CPU 且比\"%{RedFlag.Fetch.Method.FetchSafer}\"更快,但如果使用不當可能導致資料丟失。\n> ## %{RedFlag.Fetch.Method.FetchTraditional}\n> **高流量**、**低 CPU 佔用**、**低到中等風險**(取決於操作)\n> 所有資料將從遠端獲取。\n> 與 %{RedFlag.Fetch.Method.FetchSmoother} 類似,但所有資料塊都從遠端源獲取。\n> 這是最傳統的獲取方式,通常消耗最多的網路流量和時間。它也存在與\"%{RedFlag.Fetch.Method.FetchSmoother}\"選項類似的覆蓋遠端檔案的風險。\n> 但是,由於它是最久經考驗和最直接的方法,通常被認為是最穩定的。", + "RedFlag.Fetch.Method.FetchSafer": "獲取前先建立本地資料庫", + "RedFlag.Fetch.Method.FetchSmoother": "獲取前先建立本地檔案塊", + "RedFlag.Fetch.Method.FetchTraditional": "從遠端獲取所有資料", + "RedFlag.Fetch.Method.Title": "您希望如何獲取資料?", + "RedFlag.FetchRemoteConfig.Applied": "已應用遠端配置。", + "RedFlag.FetchRemoteConfig.Buttons.Cancel": "否,使用本地設定", + "RedFlag.FetchRemoteConfig.Buttons.Fetch": "是,獲取並應用遠端設定", + "RedFlag.FetchRemoteConfig.Buttons.Retry": "重試(建議)", + "RedFlag.FetchRemoteConfig.Buttons.SkipAndProceed": "跳過並繼續", + "RedFlag.FetchRemoteConfig.FailedMessage": "無法從遠端獲取配置。如果您是 Self-hosted LiveSync 新使用者,這可能是正常情況。否則,請檢查網路或伺服器設定。", + "RedFlag.FetchRemoteConfig.FailedTitle": "獲取遠端配置失敗", + "RedFlag.FetchRemoteConfig.MatchesLocal": "遠端配置與本地配置一致。未應用任何更改。", + "RedFlag.FetchRemoteConfig.Message": "是否獲取並應用遠端儲存的偏好設定到本裝置?", + "RedFlag.FetchRemoteConfig.NotApplied": "未應用遠端配置。", + "RedFlag.FetchRemoteConfig.SettingsDiffered": "您的設定與伺服器略有不同。外掛程式已使用伺服器設定補充不相容的部分!", + "RedFlag.FetchRemoteConfig.Title": "獲取遠端配置", + "RedFlag.Log.FetchEverythingCancelled": "使用者已取消獲取全部資料。", + "RedFlag.Log.FetchEverythingCompleted": "獲取全部資料操作已完成。Vault 檔案將逐步同步。", + "RedFlag.Log.RebuildEverythingCancelled": "使用者已取消重建全部資料。", + "RedFlag.Log.RebuildEverythingCompleted": "重建全部資料操作已完成。", + "RedFlag.Log.VaultInitialisationError": "Vault 初始化時發生錯誤。", + "RedFlag.Log.VaultInitialisationProcessError": "Vault 初始化流程中發生錯誤。", + "RedFlag.ResumeProcessingPrompt": "是否恢復檔案和資料庫處理,並立即重新啟動 Obsidian?", "Reduces storage space by discarding all non-latest revisions. This requires the same amount of free space on the remote server and the local client.": "透過捨棄所有非最新版本來減少儲存空間占用。執行此操作時,遠端伺服器與本機用戶端都需要具備相同數量的可用空間。", + "Reducing the frequency with which on-disk changes are reflected into the DB": "降低將磁碟上的更改反映到資料庫中的頻率", + "Region": "區域", "Remediation": "修復設定", "Remediation Setting Changed": "修復設定已變更", "Remote Database Tweak (In sunset)": "遠端資料庫調校(即將淘汰)", "Remote Databases": "遠端資料庫", "Remote name": "遠端名稱", + "Remote server type": "遠端伺服器型別", + "Remote Type": "遠端型別", "Rename": "重新命名", - "Rerun Onboarding Wizard": "重新執行導覽精靈", - "Rerun the onboarding wizard to set up Self-hosted LiveSync again.": "重新執行導覽精靈以再次設定 Self-hosted LiveSync。", - "Rerun Wizard": "重新執行精靈", + "Replicator.Dialogue.Locked.Action.Dismiss": "取消以重新確認", + "Replicator.Dialogue.Locked.Action.Fetch": "重置此裝置上的同步", + "Replicator.Dialogue.Locked.Action.Unlock": "解鎖遠端資料庫", + "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 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": "已安排全部獲取操作。外掛將重新啟動以執行此操作。", + "Replicator.Dialogue.Locked.Message.Unlocked": "遠端資料庫已解鎖。請重試該操作。", + "Replicator.Dialogue.Locked.Title": "已鎖定", + "Replicator.Message.Cleaned": "資料庫正在清理中,同步已被取消", + "Replicator.Message.InitialiseFatalError": "沒有可用的同步器,這是致命錯誤。", + "Replicator.Message.Pending": "部分檔案事件待處理。同步已被取消。", + "Replicator.Message.SomeModuleFailed": "由於某些模組失敗,同步已被取消", + "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": "重新執行嚮導", "Resend": "重新傳送", "Resend all chunks to the remote.": "將所有 chunks 重新傳送到遠端。", "Reset": "重設", @@ -285,12 +692,12 @@ "Reset all journal counter": "重設所有日誌計數器", "Reset journal received history": "重設日誌接收歷史", "Reset journal sent history": "重設日誌傳送歷史", - "Reset notification threshold and check the remote database usage": "重設通知閾值並檢查遠端資料庫使用情況", + "Reset notification threshold and check the remote database usage": "重置通知閾值並檢查遠端資料庫使用情況", "Reset received": "重設接收紀錄", "Reset sent history": "重設傳送歷史", "Reset Synchronisation information": "重設同步資訊", "Reset Synchronisation on This Device": "重設此裝置上的同步", - "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.": "重置遠端儲存大小閾值並再次檢查遠端儲存大小。", "Resolve All": "全部處理", "Resolve all conflicted files": "解決所有衝突檔案", "Resolve All conflicted files by the newer one": "將所有衝突檔案統一為較新的版本", @@ -298,20 +705,67 @@ "Restart Now": "立即重新啟動", "Restarting Obsidian is strongly recommended. Until restart, some changes may not take effect, and display may be inconsistent. Are you sure to restart now?": "強烈建議重新啟動 Obsidian。在重新啟動之前,部分變更可能尚未生效,顯示也可能不一致。你確定要現在重新啟動嗎?", "Restore or reconstruct local database from remote.": "從遠端還原或重建本機資料庫。", - "Run Doctor": "執行診斷", + "Run Doctor": "立即診斷", "S3/MinIO/R2 Object Storage": "S3/MinIO/R2 物件儲存", + "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 a QR Code (Recommended for mobile)": "掃描 QR Code(行動裝置推薦)", + "Scan changes on customization sync": "在自定義同步時掃描更改", + "Scan customization automatically": "自動掃描自定義設定", + "Scan customization before replicating.": "在複製前掃描自定義設定 ", + "Scan customization every 1 minute.": "每1分鐘掃描自定義設定 ", + "Scan customization periodically": "定期掃描自定義設定", "Scan for Broken files": "掃描損壞檔案", + "Scan for hidden files before replication": "複製前掃描隱藏檔案", + "Scan hidden files periodically": "定期掃描隱藏檔案", "Scan the QR code displayed on an active device using this device's camera.": "使用目前裝置的相機掃描另一台已在使用裝置上顯示的 QR Code。", "Schedule and Restart": "排程後重新啟動", "Scram Switches": "緊急處置開關", "Scram!": "緊急處置", + "Seconds, 0 to disable": "秒,0為禁用", + "Seconds. Saving to the local database will be delayed until this value after we stop typing or saving.": "秒。在我們停止輸入或儲存後,儲存到本地資料庫將延遲此值 ", + "Secret Key": "金鑰", "Select the database adapter to use.": "選擇要使用的資料庫適配器。", + "Selector": "選擇器", "Send": "傳送", "Send chunks": "傳送 chunks", - "Setting.GenerateKeyPair.Desc": "我們已產生新的金鑰對!\n\n注意:此金鑰對之後將不會再次顯示。請務必妥善保存;若遺失,必須重新產生新的金鑰對。\n注意 2:公鑰採用 spki 格式,私鑰採用 pkcs8 格式。為了方便複製,公鑰中的換行會轉換為 `\\n`。\n注意 3:公鑰應設定在遠端資料庫中,私鑰則應設定在本機裝置上。\n\n>[!僅供本人查看]-\n>
\n>\n> ### 公鑰\n> ```\n${public_key}\n> ```\n>\n> ### 私鑰\n> ```\n${private_key}\n> ```\n>\n>
\n\n>[!便於整段複製]-\n>\n>
\n>\n> ```\n${public_key}\n${private_key}\n> ```\n>\n>
", - "Setting.GenerateKeyPair.Title": "已產生新的金鑰對!", + "Server URI": "伺服器 URI", + "Setting.GenerateKeyPair.Desc": "金鑰對已生成!\n\n注意:此金鑰對不會再次顯示。請妥善儲存。如果丟失,需要生成新的金鑰對。\n注意 2:公鑰為 spki 格式,私鑰為 pkcs8 格式。為了方便起見,公鑰中的換行符已轉換為 `\\n`。\n注意 3:公鑰應在遠端資料庫中配置,私鑰應在本地裝置中配置。\n\n>[!僅供您檢視]-\n>
\n>\n> ### 公鑰\n> ```\n${public_key}\n> ```\n>\n> ### 私鑰\n> ```\n${private_key}\n> ```\n>\n>
\n\n>[!用於複製兩者]-\n>\n>
\n>\n> ```\n${public_key}\n${private_key}\n> ```\n>\n>
\n\n", + "Setting.GenerateKeyPair.Title": "新金鑰對已生成!", + "Setting.TroubleShooting": "故障排除", + "Setting.TroubleShooting.Doctor": "設定診斷", + "Setting.TroubleShooting.Doctor.Desc": "檢測系統中不合理的設定。(與遷移期間邏輯相同)", + "Setting.TroubleShooting.ScanBrokenFiles": "掃描損壞或異常的檔案", + "Setting.TroubleShooting.ScanBrokenFiles.Desc": "掃描資料庫中未正確儲存的檔案。", + "SettingTab.Message.AskRebuild": "您的更改需要從遠端資料庫獲取。是否繼續?", "Setup URI dialog cancelled.": "Setup URI 對話框已取消。", + "Setup.Apply.Buttons.ApplyAndFetch": "應用並獲取", + "Setup.Apply.Buttons.ApplyAndMerge": "應用併合並", + "Setup.Apply.Buttons.ApplyAndRebuild": "應用並重建", + "Setup.Apply.Buttons.Cancel": "丟棄並取消", + "Setup.Apply.Buttons.OnlyApply": "僅應用", + "Setup.Apply.Message": "新配置已準備就緒。讓我們繼續應用它。\n有幾種應用方式:\n\n- 應用並獲取\n 將此裝置配置為新客戶端。應用後從遠端伺服器同步。\n- 應用併合並\n 在已有檔案的裝置上配置。處理本地檔案並傳輸差異。可能會出現衝突。\n- 應用並重建\n 使用本地檔案重建遠端資料。通常在伺服器損壞或希望從頭開始時使用。\n 其他裝置將被鎖定,需要重新獲取。\n- 僅應用\n 僅應用配置。如果需要重建,可能會出現衝突。", + "Setup.Apply.Title": "應用來自 ${method} 的新配置", + "Setup.Apply.WarningRebuildRecommended": "注意:調整設定後,已確定需要重建;不建議僅匯入。", + "Setup.Command.CopySetupUri": "將設定複製為新的設定 URI", + "Setup.Command.CopySetupUriFull": "將設定複製為新的設定 URI(完整)", + "Setup.Command.CopySetupUriWithSync": "將設定複製為新的設定 URI(包含自訂同步)", + "Setup.Command.OpenSetupUri": "使用已複製的設定 URI(原「開啟設定 URI」)", + "Setup.Command.ShowSettingsQrCode": "以 QR 碼顯示設定", + "Setup.Doctor.Buttons.No": "?", + "Setup.Doctor.Buttons.Yes": "?", + "Setup.Doctor.Message": "Self-hosted LiveSync 的歷史已逐漸悠久,部分推薦設定已發生變化。\n\n現在是進行檢查的絕佳時機。\n\n是否執行診斷程式,檢查匯入的設定是否與最新狀態一致?", + "Setup.Doctor.Title": "是否執行診斷程式?", + "Setup.EncryptSettingsPassphrase": "用於加密設定 URI 的密碼短語", + "Setup.EncryptSettingsTitle": "加密您的設定", + "Setup.FetchRemoteConf.Buttons.Fetch": "是,請獲取配置", + "Setup.FetchRemoteConf.Buttons.Skip": "不,請使用 URI 中的設定", + "Setup.FetchRemoteConf.Message": "如果我們已透過其他裝置同步過一次,遠端資料庫會儲存同步裝置之間合適的配置值。外掛希望獲取這些值以進行可靠的配置。\n\n但是,我們需要確認一件事:當前是否處於可以安全訪問網路並獲取設定的環境?\n\n注意:大多數情況下這樣做是安全的,前提是您的遠端資料庫使用了 SSL 證書,且網路未受攻擊。", + "Setup.FetchRemoteConf.Title": "是否從遠端資料庫獲取配置?", + "Setup.Log.ProtocolHandlerRegistrationFailed": "註冊協定處理程式失敗。此功能在某些環境中可能無法運作。", + "Setup.Log.SetupUriCopiedToClipboard": "設定 URI 已複製到剪貼簿", + "Setup.QRCode": "已生成用於傳輸設定的二維碼。請使用手機或其他裝置掃描此二維碼。\n注意:二維碼未加密,請謹慎開啟。\n\n>[!僅供您檢視]-\n>
${qr_image}
", + "Setup.QRCodeTitle": "設定 QR 碼", "Setup.RemoteE2EE.AdvancedTitle": "進階", "Setup.RemoteE2EE.AlgorithmWarning": "變更加密演算法後,先前以其他演算法加密的資料將無法再存取。請確認所有裝置都設定為使用相同演算法,以維持對資料的存取能力。", "Setup.RemoteE2EE.ButtonCancel": "取消", @@ -337,6 +791,9 @@ "Setup.ScanQRCode.Step3": "在來源裝置上,從命令面板執行「將設定顯示為 QR 碼」命令。", "Setup.ScanQRCode.Step4": "在這台裝置上切換到相機 App,或使用 QR 碼掃描器掃描顯示出的 QR 碼。", "Setup.ScanQRCode.Title": "掃描 QR 碼", + "Setup.SetupUri": "設定 URI", + "Setup.ShowQRCode": "使用QR碼", + "Setup.ShowQRCode.Desc": "使用QR碼來傳遞配置", "Setup.UseSetupURI.ButtonCancel": "取消", "Setup.UseSetupURI.ButtonProceed": "測試設定並繼續", "Setup.UseSetupURI.ErrorFailedToParse": "無法解析 Setup URI,請檢查 URI 與密語。", @@ -349,34 +806,527 @@ "Setup.UseSetupURI.PlaceholderPassphrase": "輸入 Vault 密語", "Setup.UseSetupURI.Title": "輸入 Setup URI", "Setup.UseSetupURI.ValidInfo": "Setup URI 有效,可以使用。", + "Should we keep folders that don't have any files inside?": "我們是否應該保留內部沒有任何檔案的資料夾?", + "Should we only check for conflicts when a file is opened?": "我們是否應該僅在檔案開啟時檢查衝突?", + "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?": "即使我們可以安全地自動合併,是否也應該為每一次合併提示您?", "Show full banner": "顯示完整橫幅", - "Show history": "顯示歷程", + "Show history": "顯示歷史", "Show icon only": "僅顯示圖示", - "Show status icon instead of file warnings banner": "以狀態圖示取代檔案警告橫幅", + "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.": "顯示詳細日誌。如果您報告問題,請啟用此選項 ", "Some devices have differing progress values (max: ${maxProgress}, min: ${minProgress}).\nThis may indicate that some devices have not completed synchronisation, which could lead to conflicts. Strongly recommend confirming that all devices are synchronised before proceeding.": "某些裝置的進度值不同(最大:${maxProgress},最小:${minProgress})。\n這可能表示某些裝置尚未完成同步,進而可能導致衝突。強烈建議在繼續之前先確認所有裝置都已同步。", + "Starts synchronisation when a file is saved.": "當檔案儲存時啟動同步 ", + "Stop reflecting database changes to storage files.": "停止將資料庫更改反映到儲存檔案 ", + "Stop watching for file changes.": "停止監視檔案更改 ", "Storage -> Database": "儲存空間 -> 資料庫", + "Suppress notification of hidden files change": "暫停隱藏檔案更改的通知", + "Suspend database reflecting": "暫停資料庫反映", + "Suspend file watching": "暫停檔案監視", "Switch to IDB": "切換至 IDB", "Switch to IndexedDB": "切換至 IndexedDB", + "Sync after merging file": "合併檔案後同步", + "Sync automatically after merging files": "合併檔案後自動同步", + "Sync Mode": "同步模式", + "Sync on Editor Save": "編輯器儲存時同步", + "Sync on File Open": "開啟檔案時同步", + "Sync on Save": "儲存時同步", + "Sync on Startup": "啟動時同步", "Synchronisation utilising journal files. You must have set up an S3/MinIO/R2 compatible object storage.": "透過日誌檔進行同步。你需要事先部署好相容 S3/MinIO/R2 的物件儲存服務。", "Synchronising files": "同步中的檔案", "Syncing": "同步中", "Target patterns": "目標模式", + "Testing only - Resolve file conflicts by syncing newer copies of the file, this can overwrite modified files. Be Warned.": "僅供測試 - 透過同步檔案的較新副本來解決檔案衝突,這可能會覆蓋修改過的檔案。請注意 ", + "The delay for consecutive on-demand fetches": "連續按需獲取的延遲", "The following accepted nodes are missing its node information:\n- ${missingNodes}\n\nThis indicates that they have not been connected for some time or have been left on an older version.\nIt is preferable to update all devices if possible. If you have any devices that are no longer in use, you can clear all accepted nodes by locking the remote once.": "以下已接受節點缺少節點資訊:\n- ${missingNodes}\n\n這表示它們已有一段時間未連線,或仍停留在較舊版本。\n如有可能,建議先更新所有裝置。如果有已不再使用的裝置,可以先鎖定一次遠端端以清除全部已接受節點。", + "The Hash algorithm for chunk IDs": "塊 ID 的雜湊演算法(實驗性)", "The IndexedDB adapter often offers superior performance in certain scenarios, but it has been found to cause memory leaks when used with LiveSync mode. When using LiveSync mode, please use IDB adapter instead.": "IndexedDB 適配器在某些情況下通常能提供較佳效能,但在 LiveSync 模式下已發現可能導致記憶體洩漏。使用 LiveSync 模式時,請改用 IDB 適配器。", - "The minimum interval for automatic synchronisation on event.": "事件觸發自動同步的最小間隔。", + "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 feature enables direct synchronisation between devices. No server is required, but both devices must be online at the same time for synchronisation to occur, and some features may be limited. Internet connection is only required to signalling (detecting peers) and not for data transfer.": "此功能可在裝置之間直接同步,無需伺服器;但同步時兩台裝置必須同時在線,且部分功能可能受限。網際網路連線僅用於訊號交換(偵測對端),不用於資料傳輸。", "This is an advanced option for users who do not have a URI or who wish to configure detailed settings.": "這是面向沒有 URI 或希望手動設定詳細參數的進階選項。", "This is the most suitable synchronisation method for the design. All functions are available. You must have set up a CouchDB instance.": "這是最符合目前設計的同步方式,所有功能皆可使用。你需要事先部署好 CouchDB 實例。", + "This passphrase will not be copied to another device. It will be set to `Default` until you configure it again.": "此密碼不會複製到另一臺裝置。在您再次配置之前,它將設定為 `Default` ", "This will recreate chunks for all files. If there were missing chunks, this may fix the errors.": "這會為所有檔案重新建立 chunks。若先前有遺失的 chunks,這可能修復相關錯誤。", + "TweakMismatchResolve.Action.Dismiss": "關閉", + "TweakMismatchResolve.Action.UseConfigured": "使用已配置的設定", + "TweakMismatchResolve.Action.UseMine": "更新遠端資料庫設定", + "TweakMismatchResolve.Action.UseMineAcceptIncompatible": "更新遠端資料庫設定但保持不變", + "TweakMismatchResolve.Action.UseMineWithRebuild": "更新遠端資料庫設定並重新重建", + "TweakMismatchResolve.Action.UseRemote": "將設定應用到此裝置", + "TweakMismatchResolve.Action.UseRemoteAcceptIncompatible": "將設定應用到此裝置,但忽略不相容性", + "TweakMismatchResolve.Action.UseRemoteWithRebuild": "將設定應用到此裝置並重新獲取", + "TweakMismatchResolve.Message.Main": "\n遠端資料庫中的設定如下。這些值由其他裝置配置,這些裝置至少與此裝置同步過一次。\n\n如果要使用這些設定,請選擇 %{TweakMismatchResolve.Action.UseConfigured}。\n如果要保留此裝置的設定,請選擇 %{TweakMismatchResolve.Action.Dismiss}。\n\n${table}\n\n>[!TIP]\n> 如果要同步所有設定,請在此功能應用最小配置後使用 `透過 Markdown 同步設定`。\n\n${additionalMessage}", + "TweakMismatchResolve.Message.MainTweakResolving": "您的配置與遠端伺服器上的配置不匹配。\n\n以下配置需要保持一致:\n\n${table}\n\n請告訴我們您的決定。\n\n${additionalMessage}", + "TweakMismatchResolve.Message.UseRemote.WarningRebuildRecommended": "\n>[!NOTICE]\n> 部分更改相容,但可能消耗額外的儲存空間和傳輸流量。建議進行重建。但是,重建可能不會立即執行,將在未來的維護中實施。\n> ***請確保您有充足的時間並連線到穩定的網路!***", + "TweakMismatchResolve.Message.UseRemote.WarningRebuildRequired": "\n>[!WARNING]\n> 部分遠端配置與此裝置的本地資料庫不相容。需要重建本地資料庫。\n> ***請確保您有充足的時間並連線到穩定的網路!***", + "TweakMismatchResolve.Message.WarningIncompatibleRebuildRecommended": "\n>[!NOTICE]\n> 檢測到部分值存在差異,導致本地資料庫與遠端資料庫不相容。\n> 部分更改相容,但可能消耗額外的儲存空間和傳輸流量。建議進行重建。但是,重建可能不會立即執行,將在未來的維護中實施。\n> 如果要重建,可能需要幾分鐘或更長時間。**請確保現在是安全的操作時機。**", + "TweakMismatchResolve.Message.WarningIncompatibleRebuildRequired": "\n>[!WARNING]\n> 檢測到部分值存在差異,導致本地資料庫與遠端資料庫不相容。\n> 需要重建本地或遠端資料庫。兩者都需要幾分鐘或更長時間。**請確保現在是安全的操作時機。**", + "TweakMismatchResolve.Table": "| 值名稱 | 此裝置 | 遠端 |\n|: --- |: ---- :|: ---- :|\n${rows}\n\n", + "TweakMismatchResolve.Table.Row": "| ${name} | ${self} | ${remote} |", + "TweakMismatchResolve.Title": "檢測到配置不匹配", + "TweakMismatchResolve.Title.TweakResolving": "檢測到配置不匹配", + "TweakMismatchResolve.Title.UseRemoteConfig": "使用遠端配置", + "Ui.Bucket.Guidance": "請在下方輸入連線到 S3/MinIO/R2 相容物件儲存服務所需的詳細資訊。", + "Ui.Common.Signal.Caution": "注意", + "Ui.Common.Signal.Danger": "危險", + "Ui.Common.Signal.Notice": "提示", + "Ui.Common.Signal.Warning": "警告", + "Ui.ConflictResolver.FileToResolve": "待解決的檔案", + "Ui.CouchDB.Guidance": "請在下方輸入 CouchDB 伺服器資訊。", + "Ui.History.FileToView": "待檢視的檔案", + "Ui.P2P.Guidance": "請在下方輸入點對點同步資訊。", + "Ui.RemoteE2EE.AdvancedTitle": "高階", + "Ui.RemoteE2EE.AlgorithmWarning": "更改加密演算法將導致無法訪問之前使用不同演算法加密的任何資料。", + "Ui.RemoteE2EE.ButtonCancel": "取消", + "Ui.RemoteE2EE.ButtonProceed": "繼續", + "Ui.RemoteE2EE.DefaultAlgorithmDesc": "在大多數情況下,您應使用預設演算法。", + "Ui.RemoteE2EE.Guidance": "請配置您的端到端加密設定。", + "Ui.RemoteE2EE.LabelEncrypt": "端到端加密", + "Ui.RemoteE2EE.LabelEncryptionAlgorithm": "加密演算法", + "Ui.RemoteE2EE.LabelObfuscateProperties": "混淆屬性", + "Ui.RemoteE2EE.ManualWarning": "請注意,端到端加密密碼直到同步過程實際開始時才會被驗證。這是為保護您的資料而設計的安全措施。", + "Ui.RemoteE2EE.MultiDestinationWarning": "連線到多個同步目標時,此設定必須保持一致。", + "Ui.RemoteE2EE.ObfuscatePropertiesDesc": "混淆屬性透過使遠端伺服器上的檔案和資料夾結構及名稱更難以識別,從而增加了一層額外的安全保障。", + "Ui.RemoteE2EE.PassphraseValidationLine1": "請注意,端到端加密密碼直到同步過程實際開始時才會被驗證。", + "Ui.RemoteE2EE.PassphraseValidationLine2": "因此,我們要求您在手動配置伺服器資訊時格外謹慎。", + "Ui.RemoteE2EE.PlaceholderPassphrase": "請輸入您的密碼", + "Ui.RemoteE2EE.StronglyRecommended": "啟用端到端加密可確保您的資料在傳送到遠端伺服器之前已在裝置上加密。這意味著即使有人獲得伺服器訪問許可權,沒有密碼也無法讀取您的資料。", + "Ui.RemoteE2EE.StronglyRecommendedLine1": "啟用端到端加密可確保您的資料在傳送到遠端伺服器之前已在裝置上加密。", + "Ui.RemoteE2EE.StronglyRecommendedLine2": "另外請注意,如果您正在使用點對點同步,將來切換到其他方式並連線到遠端伺服器時將使用此配置。", + "Ui.RemoteE2EE.StronglyRecommendedTitle": "強烈推薦", + "Ui.RemoteE2EE.Title": "端到端加密", + "Ui.RemoteE2EE.WarningSameSetting": "連線到多個同步目標時,此設定必須保持一致。", + "Ui.ScanQRCode.ButtonClose": "關閉此對話方塊", + "Ui.ScanQRCode.Guidance": "請按照以下步驟從現有裝置匯入設定。", + "Ui.ScanQRCode.Instruction": "請按照以下步驟從現有裝置匯入設定。", + "Ui.ScanQRCode.Step1": "在此裝置上,請保持此 Vault 處於開啟狀態。", + "Ui.ScanQRCode.Step2": "在源裝置上開啟 Obsidian。", + "Ui.ScanQRCode.Step3": "在源裝置上,從命令面板執行\"將設定顯示為二維碼\"命令。", + "Ui.ScanQRCode.Step4": "在此裝置上,切換到相機應用或使用二維碼掃描器掃描顯示的二維碼。", + "Ui.ScanQRCode.Title": "掃描二維碼", + "Ui.Settings.Advanced.LocalDatabaseTweak": "本機資料庫調整", + "Ui.Settings.Advanced.MemoryCache": "記憶體快取", + "Ui.Settings.Advanced.TransferTweak": "傳輸調整", + "Ui.Settings.Common.Analyse": "分析", + "Ui.Settings.Common.Back": "返回", + "Ui.Settings.Common.Check": "檢查", + "Ui.Settings.Common.Configure": "配置", + "Ui.Settings.Common.Delete": "刪除", + "Ui.Settings.Common.Lock": "鎖定", + "Ui.Settings.Common.Open": "開啟", + "Ui.Settings.Common.Perform": "執行", + "Ui.Settings.Common.ResetAll": "全部重置", + "Ui.Settings.Common.ResolveAll": "全部解決", + "Ui.Settings.Common.Send": "傳送", + "Ui.Settings.Common.VerifyAll": "全部驗證", + "Ui.Settings.CustomizationSync.OpenDesc": "開啟此對話框", + "Ui.Settings.CustomizationSync.Panel": "自訂同步", + "Ui.Settings.CustomizationSync.WarnChangeDeviceName": "更改裝置名稱警告", + "Ui.Settings.CustomizationSync.WarnSetDeviceName": "設定裝置名稱警告", + "Ui.Settings.Hatch.AnalyseDatabaseUsage": "分析資料庫使用情況", + "Ui.Settings.Hatch.AnalyseDatabaseUsageDesc": "分析資料庫使用情況,並產生 TSV 報告供你自行診斷。你可以將產生的報告貼到任何試算表工具中查看。", + "Ui.Settings.Hatch.BackToNonConfigured": "返回未設定狀態", + "Ui.Settings.Hatch.ConvertNonObfuscated": "檢查並轉換未進行路徑混淆的檔案", + "Ui.Settings.Hatch.ConvertNonObfuscatedDesc": "檢查本機資料庫中未以路徑混淆方式儲存的檔案,並在需要時轉換為正確格式。", + "Ui.Settings.Hatch.CopyIssueReport": "將報告複製到剪貼簿", + "Ui.Settings.Hatch.DatabaseLabel": "資料庫:${details}", + "Ui.Settings.Hatch.DatabaseToStorage": "資料庫 -> 儲存", + "Ui.Settings.Hatch.DeleteCustomizationSyncData": "刪除所有自訂同步資料", + "Ui.Settings.Hatch.GeneratedReport": "生成的報告", + "Ui.Settings.Hatch.Missing": "缺失", + "Ui.Settings.Hatch.ModifiedSize": "修改大小", + "Ui.Settings.Hatch.ModifiedSizeActual": "實際修改大小", + "Ui.Settings.Hatch.PrepareIssueReport": "準備用於建立 Issue 的報告", + "Ui.Settings.Hatch.RecoveryAndRepair": "復原與修復", + "Ui.Settings.Hatch.RecreateAll": "全部重建", + "Ui.Settings.Hatch.RecreateMissingChunks": "為所有檔案重新建立遺失的資料區塊", + "Ui.Settings.Hatch.RecreateMissingChunksDesc": "此操作會為所有檔案重新建立資料區塊。如果有遺失的資料區塊,可能會修復相關錯誤。", + "Ui.Settings.Hatch.ResetPanel": "重置", + "Ui.Settings.Hatch.ResetRemoteUsage": "重置通知閾值並檢查遠端資料庫使用情況", + "Ui.Settings.Hatch.ResetRemoteUsageDesc": "重置遠端儲存空間大小閾值,並再次檢查遠端儲存空間大小。", + "Ui.Settings.Hatch.ResolveAllConflictedFiles": "使用較新的版本解決所有衝突檔案", + "Ui.Settings.Hatch.ResolveAllConflictedFilesDesc": "使用較新的版本解決所有衝突檔案。注意:此操作會覆蓋較舊版本,且無法恢復被覆蓋的內容。", + "Ui.Settings.Hatch.RunDoctor": "執行診斷", + "Ui.Settings.Hatch.ScanBrokenFiles": "掃描損壞檔案", + "Ui.Settings.Hatch.ScramSwitches": "緊急開關", + "Ui.Settings.Hatch.ShowHistory": "顯示歷史", + "Ui.Settings.Hatch.StorageLabel": "儲存:${details}", + "Ui.Settings.Hatch.StorageToDatabase": "儲存 -> 資料庫", + "Ui.Settings.Hatch.VerifyAndRepairAllFiles": "驗證並修復所有檔案", + "Ui.Settings.Hatch.VerifyAndRepairAllFilesDesc": "比較本機資料庫與儲存空間中的檔案內容。如果內容不一致,系統會詢問要保留哪一份。", + "Ui.Settings.Maintenance.Cleanup": "執行清理", + "Ui.Settings.Maintenance.CleanupDesc": "捨棄所有非最新修訂版本,以減少儲存空間占用。此操作需要遠端伺服器與本機用戶端都有同等大小的可用空間。", + "Ui.Settings.Maintenance.DeleteLocalDatabase": "刪除本機資料庫以重置或解除安裝 Self-hosted LiveSync", + "Ui.Settings.Maintenance.EmergencyRestart": "緊急重新啟動", + "Ui.Settings.Maintenance.EmergencyRestartDesc": "停用所有同步並重新啟動。", + "Ui.Settings.Maintenance.FreshStartWipe": "全新開始清除", + "Ui.Settings.Maintenance.FreshStartWipeDesc": "刪除遠端伺服器上的所有資料。", + "Ui.Settings.Maintenance.GarbageCollection": "垃圾回收 V3(測試版)", + "Ui.Settings.Maintenance.GarbageCollectionAction": "執行垃圾回收", + "Ui.Settings.Maintenance.GarbageCollectionDesc": "執行垃圾回收以移除未使用的資料區塊並減少資料庫大小。", + "Ui.Settings.Maintenance.LockServer": "鎖定伺服器", + "Ui.Settings.Maintenance.LockServerDesc": "鎖定遠端伺服器,防止與其他裝置繼續同步。", + "Ui.Settings.Maintenance.OverwriteRemote": "覆寫遠端", + "Ui.Settings.Maintenance.OverwriteRemoteDesc": "使用本機資料庫與密碼短語覆寫遠端資料。", + "Ui.Settings.Maintenance.OverwriteServerData": "用此裝置的檔案覆寫伺服器資料", + "Ui.Settings.Maintenance.OverwriteServerDataDesc": "使用此裝置上的檔案重建本機與遠端資料庫。", + "Ui.Settings.Maintenance.PurgeAllJournalCounter": "清除全部日誌計數器", + "Ui.Settings.Maintenance.PurgeAllJournalCounterDesc": "清除所有下載與上傳快取。", + "Ui.Settings.Maintenance.RebuildingOperations": "重建操作(僅限遠端)", + "Ui.Settings.Maintenance.Resend": "重新傳送", + "Ui.Settings.Maintenance.ResendDesc": "將所有資料區塊重新傳送到遠端。", + "Ui.Settings.Maintenance.Reset": "重置", + "Ui.Settings.Maintenance.ResetAllJournalCounter": "重置全部日誌計數器", + "Ui.Settings.Maintenance.ResetAllJournalCounterDesc": "初始化全部日誌歷史。下次同步時,所有項目都會重新接收並重新傳送。", + "Ui.Settings.Maintenance.ResetJournalReceived": "重置日誌接收歷史", + "Ui.Settings.Maintenance.ResetJournalReceivedDesc": "初始化日誌接收歷史。下次同步時,除了此裝置傳送的項目外,其餘項目都會重新下載。", + "Ui.Settings.Maintenance.ResetJournalSent": "重置日誌傳送歷史", + "Ui.Settings.Maintenance.ResetJournalSentDesc": "初始化日誌傳送歷史。下次同步時,除了此裝置已接收的項目外,其餘項目都會重新傳送。", + "Ui.Settings.Maintenance.ResetLocalSyncInfo": "重置同步資訊", + "Ui.Settings.Maintenance.ResetLocalSyncInfoDesc": "從遠端還原或重建本機資料庫。", + "Ui.Settings.Maintenance.ResetReceived": "重置已接收", + "Ui.Settings.Maintenance.ResetSentHistory": "重置已傳送歷史", + "Ui.Settings.Maintenance.ResetThisDevice": "重置此裝置上的同步狀態", + "Ui.Settings.Maintenance.ScheduleAndRestart": "定時並重啟", + "Ui.Settings.Maintenance.Scram": "緊急處理", + "Ui.Settings.Maintenance.SendChunks": "傳送資料塊", + "Ui.Settings.Maintenance.Syncing": "同步", + "Ui.Settings.Maintenance.WarningLockedReadyAction": "警告已鎖定準備操作", + "Ui.Settings.Maintenance.WarningLockedReadyText": "警告已鎖定準備文字", + "Ui.Settings.Maintenance.WarningLockedResolveAction": "警告已鎖定解決操作", + "Ui.Settings.Maintenance.WarningLockedResolveText": "警告已鎖定解決文字", + "Ui.Settings.Maintenance.WriteRedFlagAndRestart": "標記並重啟", + "Ui.Settings.Patches.CompatibilityConflict": "相容性(衝突行為)", + "Ui.Settings.Patches.CompatibilityDatabase": "相容性(資料庫結構)", + "Ui.Settings.Patches.CompatibilityInternalApi": "相容性(內部 API 使用)", + "Ui.Settings.Patches.CompatibilityMetadata": "相容性(中繼資料)", + "Ui.Settings.Patches.CompatibilityRemote": "相容性(遠端資料庫)", + "Ui.Settings.Patches.CompatibilityTrouble": "相容性(已處理問題)", + "Ui.Settings.Patches.CurrentAdapter": "目前介面卡:${adapter}", + "Ui.Settings.Patches.DatabaseAdapter": "資料庫配接器", + "Ui.Settings.Patches.DatabaseAdapterDesc": "選擇要使用的資料庫配接器。", + "Ui.Settings.Patches.EdgeCaseBehaviour": "邊界情況處理(行為)", + "Ui.Settings.Patches.EdgeCaseDatabase": "邊界情況處理(資料庫)", + "Ui.Settings.Patches.EdgeCaseProcessing": "邊界情況處理(處理流程)", + "Ui.Settings.Patches.IndexedDbWarning": "IndexedDB 警告", + "Ui.Settings.Patches.MigratingToIdb": "正在遷移到 IDB", + "Ui.Settings.Patches.MigratingToIndexedDb": "正在遷移到 IndexedDB", + "Ui.Settings.Patches.MigrationIdbCompleted": "IDB 遷移完成", + "Ui.Settings.Patches.MigrationIdbCompletedFollowUp": "IDB 遷移完成後續操作", + "Ui.Settings.Patches.MigrationIndexedDbCompleted": "IndexedDB 遷移完成", + "Ui.Settings.Patches.MigrationIndexedDbCompletedFollowUp": "IndexedDB 遷移完成後續操作", + "Ui.Settings.Patches.MigrationWarning": "遷移警告", + "Ui.Settings.Patches.OperationToIdb": "操作遷移到 IDB", + "Ui.Settings.Patches.OperationToIndexedDb": "操作遷移到 IndexedDB", + "Ui.Settings.Patches.Remediation": "修正", + "Ui.Settings.Patches.RemediationChanged": "修復已更改", + "Ui.Settings.Patches.RemediationNoLimit": "修復無限制", + "Ui.Settings.Patches.RemediationRestarting": "修復正在重啟", + "Ui.Settings.Patches.RemediationRestartLater": "修復稍後重啟", + "Ui.Settings.Patches.RemediationRestartMessage": "修復重啟訊息", + "Ui.Settings.Patches.RemediationRestartNow": "修復立即重啟", + "Ui.Settings.Patches.RemediationSuffixChanged": "修復字尾已更改", + "Ui.Settings.Patches.RemediationWithValue": "值:${date}(${timestamp})", + "Ui.Settings.Patches.RemoteDatabaseSunset": "遠端資料庫調整(即將棄用)", + "Ui.Settings.Patches.SwitchToIDB": "切換到 IDB", + "Ui.Settings.Patches.SwitchToIndexedDb": "切換到 IndexedDB", + "Ui.Settings.PowerUsers.ConfigurationEncryption": "設定加密", + "Ui.Settings.PowerUsers.ConnectionTweak": "CouchDB 連線調整", + "Ui.Settings.PowerUsers.ConnectionTweakDesc": "連線調優描述", + "Ui.Settings.PowerUsers.Default": "預設", + "Ui.Settings.PowerUsers.Developer": "開發者", + "Ui.Settings.PowerUsers.EncryptSensitiveConfig": "加密敏感設定項目", + "Ui.Settings.PowerUsers.PromptPassphraseEveryLaunch": "每次啟動時詢問密碼", + "Ui.Settings.PowerUsers.UseCustomPassphrase": "使用自定義密碼", + "Ui.Settings.Remote.Activate": "啟用", + "Ui.Settings.Remote.ActiveSuffix": "活動字尾", + "Ui.Settings.Remote.AddConnection": "新增連線", + "Ui.Settings.Remote.AddRemoteDefaultName": "新增遠端預設名稱", + "Ui.Settings.Remote.ConfigureAndChangeRemote": "配置並更改遠端", + "Ui.Settings.Remote.ConfigureE2EE": "設定端對端加密", + "Ui.Settings.Remote.ConfigureRemote": "設定遠端", + "Ui.Settings.Remote.DeleteRemoteConfirm": "刪除遠端設定「${name}」?", + "Ui.Settings.Remote.DeleteRemoteTitle": "刪除遠端標題", + "Ui.Settings.Remote.DisplayName": "顯示名稱", + "Ui.Settings.Remote.DuplicateRemote": "複製遠端", + "Ui.Settings.Remote.DuplicateRemoteSuffix": "複製遠端字尾", + "Ui.Settings.Remote.E2EEConfiguration": "端對端加密設定", + "Ui.Settings.Remote.Export": "匯出", + "Ui.Settings.Remote.FetchRemoteSettings": "獲取遠端設定", + "Ui.Settings.Remote.ImportConnection": "匯入連線", + "Ui.Settings.Remote.ImportConnectionPrompt": "匯入連線提示", + "Ui.Settings.Remote.ImportedCouchDb": "已匯入的 CouchDB", + "Ui.Settings.Remote.ImportedRemote": "已匯入的遠端", + "Ui.Settings.Remote.MoreActions": "更多操作", + "Ui.Settings.Remote.PeerToPeerPanel": "點對點同步", + "Ui.Settings.Remote.RemoteConfigurationPrefix": "遠端配置字首", + "Ui.Settings.Remote.RemoteDatabases": "遠端資料庫", + "Ui.Settings.Remote.RemoteName": "遠端名稱", + "Ui.Settings.Remote.RemoteNameCouchDb": "遠端名稱 CouchDB", + "Ui.Settings.Remote.RemoteNameP2P": "遠端名稱 P2P", + "Ui.Settings.Remote.RemoteNameS3": "遠端名稱 S3", + "Ui.Settings.Remote.Rename": "重新命名", + "Ui.Settings.Selector.AddDefaultPatterns": "新增預設模式", + "Ui.Settings.Selector.CrossPlatform": "跨平臺", + "Ui.Settings.Selector.Default": "預設", + "Ui.Settings.Selector.HiddenFiles": "隱藏檔案", + "Ui.Settings.Selector.IgnorePatterns": "忽略模式", + "Ui.Settings.Selector.NonSynchronisingFiles": "不同步檔案", + "Ui.Settings.Selector.NonSynchronisingFilesDesc": "(RegExp)如果設定此項,則本機和遠端中符合規則的檔案變更會被略過。", + "Ui.Settings.Selector.NormalFiles": "一般檔案", + "Ui.Settings.Selector.OverwritePatterns": "覆寫模式", + "Ui.Settings.Selector.OverwritePatternsDesc": "符合後將覆寫而非合併的檔案模式", + "Ui.Settings.Selector.SynchronisingFiles": "同步檔案", + "Ui.Settings.Selector.SynchronisingFilesDesc": "(RegExp)留空則同步所有檔案。可設定正規表示式篩選器以限制同步檔案。", + "Ui.Settings.Selector.TargetPatterns": "目標模式", + "Ui.Settings.Selector.TargetPatternsDesc": "用於符合需要同步檔案的模式", + "Ui.Settings.Setup.RerunWizardButton": "重新執行嚮導按鈕", + "Ui.Settings.Setup.RerunWizardDesc": "重新執行引導精靈,再次設定 Self-hosted LiveSync。", + "Ui.Settings.Setup.RerunWizardName": "重新執行引導精靈", + "Ui.Settings.SyncSettings.Fetch": "獲取", + "Ui.Settings.SyncSettings.Merge": "合併", + "Ui.Settings.SyncSettings.Overwrite": "覆蓋", + "Ui.SetupWizard.Bucket.AccessKeyId": "存取金鑰 ID", + "Ui.SetupWizard.Bucket.BucketName": "儲存桶名稱", + "Ui.SetupWizard.Bucket.EndpointUrl": "端點 URL", + "Ui.SetupWizard.Bucket.FolderPrefix": "資料夾前綴", + "Ui.SetupWizard.Bucket.FolderPrefixDesc": "如果你想把資料儲存在儲存桶內的特定資料夾,可以在這裡指定資料夾前綴。否則留空,資料會儲存在儲存桶根目錄。", + "Ui.SetupWizard.Bucket.InternalApiDesc": "如果無法避免 CORS 問題,可以嘗試此選項。它會使用 Obsidian 的內部 API 與 S3 伺服器通訊。不符合 Web 標準,但可以運作。請注意,未來 Obsidian 版本可能會破壞此方式。", + "Ui.SetupWizard.Bucket.PlaceholderAccessKeyId": "輸入存取金鑰 ID", + "Ui.SetupWizard.Bucket.PlaceholderBucketName": "輸入儲存桶名稱", + "Ui.SetupWizard.Bucket.PlaceholderFolderPrefix": "輸入資料夾前綴(可選)", + "Ui.SetupWizard.Bucket.PlaceholderRegion": "輸入區域(例如 us-east-1,R2 可用 auto)", + "Ui.SetupWizard.Bucket.PlaceholderSecretAccessKey": "輸入秘密存取金鑰", + "Ui.SetupWizard.Bucket.Region": "區域", + "Ui.SetupWizard.Bucket.SecretAccessKey": "秘密存取金鑰", + "Ui.SetupWizard.Bucket.Title": "S3/MinIO/R2 配置", + "Ui.SetupWizard.Bucket.UseInternalApi": "使用內部 API", + "Ui.SetupWizard.Bucket.UsePathStyleAccess": "使用路徑樣式存取", + "Ui.SetupWizard.Common.AdvancedSettings": "高階設定", + "Ui.SetupWizard.Common.Back": "返回", + "Ui.SetupWizard.Common.Cancel": "取消", + "Ui.SetupWizard.Common.CheckingConnection": "正在檢查連線,請稍候。", + "Ui.SetupWizard.Common.ContinueAnyway": "仍然繼續", + "Ui.SetupWizard.Common.CustomHeaders": "自訂請求標頭", + "Ui.SetupWizard.Common.ErrorConnectionTest": "連線測試時發生錯誤:${error}", + "Ui.SetupWizard.Common.ErrorConnectServer": "無法連線到伺服器。請檢查設定。", + "Ui.SetupWizard.Common.ErrorConnectServerDetail": "無法連線到伺服器:${error}", + "Ui.SetupWizard.Common.ErrorCreateReplicator": "無法建立同步實例。", + "Ui.SetupWizard.Common.ExperimentalSettings": "實驗性設定", + "Ui.SetupWizard.Common.HttpsOnlyMobile": "在 Obsidian 移動端只能使用安全(HTTPS)連線。", + "Ui.SetupWizard.Common.ProceedSelectOption": "請選擇一個選項", + "Ui.SetupWizard.CouchDB.DatabaseName": "資料庫名稱", + "Ui.SetupWizard.CouchDB.DatabaseNameDesc": "資料庫名稱不能使用大寫字母、空格或特殊字元,也不能以下劃線(_)開頭。", + "Ui.SetupWizard.CouchDB.InternalApiDesc": "如果無法避免 CORS 問題,可以嘗試此選項。它會使用 Obsidian 的內部 API 與 CouchDB 伺服器通訊。不符合 Web 標準,但可以運作。請注意,未來 Obsidian 版本可能會破壞此方式。", + "Ui.SetupWizard.CouchDB.JwtAlgorithm": "JWT 算法", + "Ui.SetupWizard.CouchDB.JwtExpirationDuration": "JWT 过期时间(分钟)", + "Ui.SetupWizard.CouchDB.JwtKey": "JWT 密钥", + "Ui.SetupWizard.CouchDB.JwtKeyDesc": "HS256/HS512 算法请提供共享密钥。ES256/ES512 算法请提供 pkcs8 PEM 格式私钥。", + "Ui.SetupWizard.CouchDB.JwtKeyId": "JWT Key ID(kid)", + "Ui.SetupWizard.CouchDB.JwtSubject": "JWT Subject(sub)", + "Ui.SetupWizard.CouchDB.JwtWarning": "JWT(JSON Web Token)认证允许你使用令牌安全地连接 CouchDB 服务器。请确保 CouchDB 已配置为接受 JWT,并且提供的密钥和设置与服务器配置匹配。此功能尚未经过非常充分的验证。", + "Ui.SetupWizard.CouchDB.Password": "密碼", + "Ui.SetupWizard.CouchDB.PlaceholderDatabaseName": "輸入資料庫名稱", + "Ui.SetupWizard.CouchDB.PlaceholderJwtKey": "输入 JWT 共享密钥或私钥", + "Ui.SetupWizard.CouchDB.PlaceholderJwtKeyId": "输入 JWT Key ID", + "Ui.SetupWizard.CouchDB.PlaceholderJwtSubject": "输入 JWT Subject(CouchDB 用户名)", + "Ui.SetupWizard.CouchDB.PlaceholderPassword": "輸入密碼", + "Ui.SetupWizard.CouchDB.PlaceholderUsername": "輸入使用者名稱", + "Ui.SetupWizard.CouchDB.Title": "CouchDB 配置", + "Ui.SetupWizard.CouchDB.Url": "伺服器 URL", + "Ui.SetupWizard.CouchDB.UseInternalApi": "使用内部 API", + "Ui.SetupWizard.CouchDB.UseJwtAuthentication": "使用 JWT 认证", + "Ui.SetupWizard.CouchDB.Username": "使用者名稱", + "Ui.SetupWizard.CouchDBCheck.DetectAndFix": "檢測並修復 CouchDB 問題", + "Ui.SetupWizard.CouchDBCheck.Fix": "修復", + "Ui.SetupWizard.E2EE.AlgorithmGuidance": "大多數情況下應使用預設算法(${algorithm})。只有在現有 Vault 使用不同格式加密時才需要變更此設定。", + "Ui.SetupWizard.E2EE.AlgorithmWarning": "變更加密算法會導致無法存取以前用其他算法加密的資料。請確保所有裝置都設定為使用相同算法,以保持資料可存取。", + "Ui.SetupWizard.E2EE.EncryptionAlgorithm": "加密算法", + "Ui.SetupWizard.Fetch.BackupDone": "我已建立 Vault 備份。", + "Ui.SetupWizard.Fetch.BackupQuestion": "繼續之前是否已建立備份?", + "Ui.SetupWizard.Fetch.BackupRecommendation": "建議您將 Vault 資料夾複製到安全位置。這將作為保障,以防出現大量衝突或意外同步到錯誤的目標。", + "Ui.SetupWizard.Fetch.BackupSkipped": "我瞭解風險,將在沒有備份的情況下繼續。", + "Ui.SetupWizard.Fetch.BackupUnable": "我無法建立 Vault 備份。", + "Ui.SetupWizard.Fetch.BackupUnableNote": "如果您瞭解風險仍希望繼續,請選擇此項。", + "Ui.SetupWizard.Fetch.BackupUnableWarning": "強烈建議在繼續之前建立備份。不備份繼續可能導致資料丟失。", + "Ui.SetupWizard.Fetch.ConflictNote": "此外,如果伺服器資料中已存在衝突,它們將原樣同步到此裝置,您需要在本地解決它們。", + "Ui.SetupWizard.Fetch.Guidance": "這將使用伺服器上的最新資料重建此裝置上的本地資料庫。此操作旨在解決同步不一致並恢復正常功能。", + "Ui.SetupWizard.Fetch.ImportantBody": "如果此裝置上的 Vault 中有未同步的更改,重置後它們可能會與伺服器版本產生分歧。這可能導致大量檔案衝突。", + "Ui.SetupWizard.Fetch.ImportantTitle": "重要提示", + "Ui.SetupWizard.Fetch.PreventFetchConfig": "防止從伺服器獲取配置", + "Ui.SetupWizard.Fetch.Proceed": "重置並恢復同步", + "Ui.SetupWizard.Fetch.Title": "重置此裝置上的同步", + "Ui.SetupWizard.Fetch.UnbalancedNote": "在此場景下,Self-hosted LiveSync 將為每個檔案重新建立後設資料,並會刻意生成衝突。如果檔案內容相同,這些衝突將自動解決。", + "Ui.SetupWizard.Fetch.VaultIdentical": "此 Vault 中的檔案與伺服器上的檔案幾乎相同。", + "Ui.SetupWizard.Fetch.VaultIdenticalDesc": "(例如,在另一臺電腦上恢復後立即、或從備份恢復後)", + "Ui.SetupWizard.Fetch.VaultIndependent": "此 Vault 為空,或僅包含伺服器上沒有的新檔案。", + "Ui.SetupWizard.Fetch.VaultIndependentDesc": "(例如,首次在新智慧手機上設定、從全新狀態開始)", + "Ui.SetupWizard.Fetch.VaultQuestion": "為了儘量減少新衝突的建立,請選擇最能描述當前 Vault 狀態的選項。應用將根據您的選擇以最合適的方式檢查您的檔案。", + "Ui.SetupWizard.Fetch.VaultUnbalanced": "此 Vault 中的檔案與伺服器之間可能存在差異。", + "Ui.SetupWizard.Fetch.VaultUnbalancedDesc": "(例如,在離線狀態下編輯了大量檔案後)", + "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.Log.E2EEConfigurationCancelled": "已取消 E2EE 配置。", + "Ui.SetupWizard.Log.ManualConfigurationCancelled": "已取消手動配置。", + "Ui.SetupWizard.Log.NoSettingsChanges": "未偵測到設定更改。跳過應用向導中的設定。", + "Ui.SetupWizard.Log.OnboardingCancelled": "使用者已取消引導流程。", + "Ui.SetupWizard.Log.QrCodeDialogClosed": "QR 碼對話方塊已關閉。", + "Ui.SetupWizard.Log.QrCodeResult": "QR 碼結果:${result}", + "Ui.SetupWizard.Log.SettingApplied": "設定已應用", + "Ui.SetupWizard.Log.SettingsApplied": "向導中的設定已應用。", + "Ui.SetupWizard.Log.SetupUriDialogCancelled": "已取消設定 URI 對話方塊。", + "Ui.SetupWizard.Log.SetupUriDialogClosed": "設定 URI 對話方塊已關閉。", + "Ui.SetupWizard.Log.UserCancelledApplyingSettings": "使用者已取消應用向導中的設定。", + "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.P2P.AutoBroadcast": "自动广播更改", + "Ui.SetupWizard.P2P.AutoBroadcastDesc": "啟用自動廣播變更後,變更會自動廣播給已連線的對等裝置,無需手動操作。這會請求對等裝置取得此裝置的變更。", + "Ui.SetupWizard.P2P.AutoStart": "自动启动 P2P 连接", + "Ui.SetupWizard.P2P.AutoStartDesc": "啟用自動啟動 P2P 連線後,外掛啟動時會自動開始 P2P 連線。", + "Ui.SetupWizard.P2P.DevicePeerId": "裝置對等 ID", + "Ui.SetupWizard.P2P.Enabled": "已啟用", + "Ui.SetupWizard.P2P.ErrorConnectPeers": "无法连接到其他对等设备:${error}", + "Ui.SetupWizard.P2P.GenerateRandomId": "產生隨機 ID", + "Ui.SetupWizard.P2P.GroupId": "组 ID", + "Ui.SetupWizard.P2P.GroupPassphraseDesc": "組 ID 和密碼片語用於識別你的裝置群組。請確保所有要同步的裝置使用相同的組 ID 和密碼片語。組 ID 不限於產生格式,你可以使用任意字串作為組 ID。", + "Ui.SetupWizard.P2P.NoPeersFound": "你的设置看起来正确,但没有找到其他对等设备。", + "Ui.SetupWizard.P2P.PlaceholderRelayUrl": "输入中继 URL", + "Ui.SetupWizard.P2P.PlaceholderTurnCredential": "輸入 TURN 憑據", + "Ui.SetupWizard.P2P.PlaceholderTurnUsername": "輸入 TURN 使用者名稱", + "Ui.SetupWizard.P2P.PublicTurnWarning": "使用公共 TURN 伺服器可能帶來隱私影響,因為你的資料會透過第三方伺服器中繼。即使資料已加密,對方仍可能知道你的存在。使用前請確保你信任 TURN 伺服器提供者和網路管理員。如果可行,請考慮為自己的 FQDN 設定 TURN 伺服器。", + "Ui.SetupWizard.P2P.RelayUrl": "中继 URL", + "Ui.SetupWizard.P2P.Title": "P2P 配置", + "Ui.SetupWizard.P2P.TurnCredential": "TURN 憑據", + "Ui.SetupWizard.P2P.TurnServerDesc": "只有在嚴格 NAT 或防火牆阻止直接 P2P 連線時,才需要 TURN 伺服器設定。大多數情況下可以留空。", + "Ui.SetupWizard.P2P.TurnServerUrls": "TURN 伺服器 URL(逗號分隔)", + "Ui.SetupWizard.P2P.TurnUsername": "TURN 使用者名稱", + "Ui.SetupWizard.P2P.UseDefaultRelay": "使用 vrtmrz 的中繼伺服器", + "Ui.SetupWizard.Rebuild.BackupBeforeProceeding": "當然,我們可以在繼續之前備份資料。", + "Ui.SetupWizard.Rebuild.BackupDone": "我已建立 Vault 備份。", + "Ui.SetupWizard.Rebuild.BackupQuestion": "繼續之前是否已建立備份?", + "Ui.SetupWizard.Rebuild.BackupSkipped": "我瞭解風險,將在沒有備份的情況下繼續。", + "Ui.SetupWizard.Rebuild.BackupUnable": "我無法建立 Vault 備份。", + "Ui.SetupWizard.Rebuild.BackupUnableAdvice": "您應該建立一個新的同步目標並在那裡重建資料。之後,逐一將每臺裝置同步到使用新遠端的新 Vault。", + "Ui.SetupWizard.Rebuild.BackupWarning": "這是一個極其強大的操作。強烈建議您將 Vault 資料夾複製到安全位置。", + "Ui.SetupWizard.Rebuild.ConfirmDataLoss": "我理解其他手機或電腦上所做的所有更改可能會丟失。", + "Ui.SetupWizard.Rebuild.ConfirmIrreversible": "我理解此操作一旦執行不可逆轉。", + "Ui.SetupWizard.Rebuild.ConfirmSyncDisabled": "我理解其他裝置將無法再同步,需要重置同步資訊。", + "Ui.SetupWizard.Rebuild.ConfirmTitle": "請確認以下事項", + "Ui.SetupWizard.Rebuild.Guidance": "此過程將首先刪除伺服器上的所有現有同步資料。隨後,將使用此裝置上當前 Vault 的狀態作為唯一權威主副本,完全重建伺服器資料。", + "Ui.SetupWizard.Rebuild.PreventFetchConfig": "防止從伺服器獲取配置", + "Ui.SetupWizard.Rebuild.Proceed": "我理解,覆蓋伺服器", + "Ui.SetupWizard.Rebuild.ResetNotifyOtherDevices": "重置遠端後,其他裝置將收到通知。", + "Ui.SetupWizard.Rebuild.ResolveOnOtherDevices": "有一種方法可以在其他裝置上解決此問題。", + "Ui.SetupWizard.Rebuild.Title": "最終確認:用此裝置的檔案覆蓋伺服器資料", + "Ui.SetupWizard.Rebuild.WhenToUse": "僅在特殊情況下才應執行此操作,例如伺服器資料完全損壞、其他所有裝置上的更改不再需要、或資料庫大小與 Vault 大小相比異常龐大時。", + "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": "設定遠端伺服器", + "Ui.UseSetupURI.ButtonCancel": "取消", + "Ui.UseSetupURI.ButtonProceed": "測試設定並繼續", + "Ui.UseSetupURI.ErrorFailedToParse": "解析設定 URI 失敗。", + "Ui.UseSetupURI.ErrorPassphraseRequired": "密碼為必填項。", + "Ui.UseSetupURI.Guidance": "請輸入在伺服器安裝期間或在其他裝置上生成的設定 URI,以及 Vault 密碼。", + "Ui.UseSetupURI.InvalidInfo": "設定 URI 似乎無效。請檢查是否正確複製。", + "Ui.UseSetupURI.Label": "設定 URI", + "Ui.UseSetupURI.LabelPassphrase": "密碼", + "Ui.UseSetupURI.PlaceholderPassphrase": "請輸入您的密碼", + "Ui.UseSetupURI.Title": "輸入設定 URI", + "Ui.UseSetupURI.ValidMessage": "設定 URI 有效,可以使用。", + "Unique name between all synchronized devices. To edit this setting, please disable customization sync once.": "所有同步裝置之間的唯一名稱。要編輯此設定,請首先禁用自定義同步", "Use a Setup URI (Recommended)": "使用 Setup URI(推薦)", + "Use Custom HTTP Handler": "使用自定義 HTTP 處理程式", + "Use dynamic iteration count": "使用動態迭代次數", + "Use Only Local Chunks": "僅使用本機區塊", + "Use Request API to avoid `inevitable` CORS problem": "使用 Request API 避免「不可避免」的 CORS 問題", + "Use Segmented-splitter": "使用分段分割器", + "Use splitting-limit-capped chunk splitter": "使用分割限制上限的塊分割器", + "Use the trash bin": "使用回收站", + "Use timeouts instead of heartbeats": "使用超時而不是心跳", + "username": "使用者名稱", + "Username": "使用者名稱", + "V1: Legacy": "V1:舊版", + "V2: Simple (Default)": "V2:簡單(預設)", + "V2.5: Lexical chunks": "V2.5:詞法區塊", + "V3: Fine deduplication": "V3:精細去重", + "Verbose Log": "詳細日誌", "Verify all": "全部驗證", "Verify and repair all files": "驗證並修復所有檔案", + "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.": "警告!這將嚴重影響效能。並且日誌不會以預設名稱同步。請小心處理日誌;它們通常包含您的敏感資訊 ", "We will now guide you through a few questions to simplify the synchronisation setup.": "接下來我們會透過幾個問題,引導你更輕鬆地完成同步設定。", "We will now proceed with the server configuration.": "接下來將繼續進行伺服器設定。", "Welcome to Self-hosted LiveSync": "歡迎使用 Self-hosted LiveSync", + "When you save a file in the editor, start a sync automatically": "當您在編輯器中儲存檔案時,自動開始同步", + "While enabled, it causes very performance impact but debugging replication testing and other features will be enabled. Please disable this if you have not read the source code. Requires restart of Obsidian.": "啟用後會對效能造成很大影響,但會啟用除錯、複製測試與其他功能。如果你沒有閱讀原始碼,請關閉此項。需要重新啟動 Obsidian。", + "Write credentials in the file": "將憑據寫入檔案", + "Write logs into the file": "將日誌寫入檔案", "xxhash32 (Fast but less collision resistance)": "xxhash32(速度快,但抗碰撞能力較弱)", "xxhash64 (Fastest)": "xxhash64(最快)", + "xxhash64 is the current default.": "目前預設值為 xxhash64。", "Yes, I want to add this device to my existing synchronisation": "是的,我要把這台裝置加入既有同步", "Yes, I want to set up a new synchronisation": "是的,我要設定新的同步", - "You are adding this device to an existing synchronisation setup.": "你正在將此裝置加入既有同步設定中。" + "You are adding this device to an existing synchronisation setup.": "你正在將此裝置加入既有同步設定中。", + "You can enable this setting to process the files with size mismatches, these files can be created by some APIs or integrations.": "可啟用此設定來處理大小不符的檔案;這些檔案可能由某些 API 或整合建立。" } diff --git a/src/common/messagesJson/zh.json b/src/common/messagesJson/zh.json index 7203005c..31cf69d5 100644 --- a/src/common/messagesJson/zh.json +++ b/src/common/messagesJson/zh.json @@ -17,8 +17,10 @@ "Access Key": "访问密钥", "Activate": "启用", "Active Remote Configuration": "生效中的远程配置", + "Active Remote Type": "活动远程类型", "Add default patterns": "添加默认模式", "Add new connection": "新增连接", + "Advanced": "高级", "All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.": "所有设备的进度值均相同(${progress})。看起来你的设备已经同步,可以继续执行垃圾回收。", "Always prompt merge conflicts": "始终提示合并冲突", "Analyse": "立即分析", @@ -27,6 +29,8 @@ "Apply Latest Change if Conflicting": "如果冲突则应用最新更改", "Apply preset configuration": "应用预设配置", "Ask a passphrase at every launch": "每次启动时询问密码短语", + "Automatically broadcast changes to connected peers": "自动向已连接的对等设备广播更改", + "Automatically start P2P connection on launch": "启动时自动开始 P2P 连接", "Automatically Sync all files when opening Obsidian.": "打开 Obsidian 时自动同步所有文件", "Back": "返回", "Back to non-configured": "恢复为未配置状态", @@ -41,6 +45,7 @@ "Check": "立即检查", "Check and convert non-path-obfuscated files": "检查并转换未进行路径混淆的文件", "Check for documents that have not been converted to path-obfuscated IDs and convert them if necessary.": "检查尚未转换为路径混淆 ID 的文档,并在需要时将其转换。", + "Chunk Splitter": "数据块分割器", "cmdConfigSync.showCustomizationSync": "显示自定义同步", "Comma separated `.gitignore, .dockerignore`": "用逗号分隔,例如 `.gitignore, .dockerignore`", "Compaction in progress on remote database...": "正在远程数据库上执行压缩...", @@ -70,6 +75,7 @@ "CouchDB Connection Tweak": "CouchDB 连接调优", "Cross-platform": "跨平台", "Current adapter: {adapter}": "当前适配器:{adapter}", + "Customization sync": "自定义同步", "Customization Sync": "自定义同步", "Customization Sync (Beta3)": "自定义同步(Beta3)", "Data Compression": "数据压缩", @@ -105,11 +111,11 @@ "Doctor.Button.DismissThisVersion": "拒绝,并且直到下个版本前不再询问", "Doctor.Button.Fix": "修复", "Doctor.Button.FixButNoRebuild": "修复但不重建", - "Doctor.Button.No": "拒绝", + "Doctor.Button.No": "?", "Doctor.Button.Skip": "保持不变", - "Doctor.Button.Yes": "确定", - "Doctor.Dialogue.Main": "您好!配置医生已根据您的要求启动(感谢您)!!遗憾的是,检测到部分配置存在潜在问题。请放心,我们将逐一解决这些问题。\n\n提前告知您,我们将就以下事项进行确认:\n\n为数据块计算修订版本(此前行为)\n增强块大小\n\n我们开始处理吗?", - "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.Button.Yes": "?", + "Doctor.Dialogue.Main": "你好!由于 ${activateReason},Config Doctor 已启动!\n遗憾的是,检测到某些配置可能存在问题。\n请放心,我们会逐项解决。\n\n提前说明一下,我们将询问以下项目。\n\n${issues}\n\n现在开始吗?", + "Doctor.Dialogue.MainFix": "\n## ${name}\n\n| 当前 | 理想 |\n|:---:|:---:|\n| ${current} | ${ideal} |\n\n**推荐级别:** ${level}\n\n### 为什么会检测到这个问题?\n\n${reason}\n\n${note}\n\n是否修复为理想值?", "Doctor.Dialogue.Title": "Self-hosted LiveSync 配置诊断", "Doctor.Dialogue.TitleAlmostDone": "全部完成!", "Doctor.Dialogue.TitleFix": "修复问题 ${current}/${total}", @@ -121,23 +127,31 @@ "Doctor.Message.RebuildLocalRequired": "注意!需要重建本地数据库以应用此项!", "Doctor.Message.RebuildRequired": "注意!需要重建才能应用此项!", "Doctor.Message.SomeSkipped": "我们将某些问题留给了以后处理。是否要在下次启动时再次询问您?", - "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.", + "Doctor.RULES.E2EE_V02500.REASON": "端到端加密(E2EE)现已更加强大和快速。此外,之前的 E2EE 在重新进行的代码审查中被发现存在安全问题。应尽快应用此更新。对于给您带来的不便深表歉意。请注意,此设置不向前兼容。所有已同步的设备必须更新至 v0.25.0 或更高版本。不需要重建,系统会自动从新的传输转换为新格式,但建议在可能的情况下进行重建。", + "Document History": "文档历史", "Duplicate": "复制", "Duplicate remote": "复制远端配置", "E2EE Configuration": "E2EE 配置", "Edge case addressing (Behaviour)": "边缘情况处理(行为)", "Edge case addressing (Database)": "边缘情况处理(数据库)", "Edge case addressing (Processing)": "边缘情况处理(处理)", + "Effectively a directory. Should end with `/`. e.g., `vault-name/`.": "相当于目录。应以 `/` 结尾,例如 `vault-name/`。", "Emergency restart": "紧急重启", "Enable advanced features": "启用高级功能", + "Enable advanced mode": "启用高级模式", "Enable customization sync": "启用自定义同步", "Enable Developers' Debug Tools.": "启用开发者调试工具 ", "Enable edge case treatment features": "启用边缘情况处理功能", + "Enable forcePathStyle": "启用 forcePathStyle", + "Enable P2P Synchronization": "启用 P2P 同步", + "Enable per-file customization sync": "启用按文件自定义同步", + "Enable power user mode": "启用高级用户模式", "Enable poweruser features": "启用高级用户功能", "Enable this if your Object Storage doesn't support CORS": "如果您的对象存储不支持 CORS,请启用此功能 ", "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.": "加密远程数据库中的内容。如果您使用插件的同步功能,则建议启用此功能 ", "Encrypting sensitive configuration items": "加密敏感配置项", + "Encryption passphrase. 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.": "加密密码。如果更改,您应该用新的(加密的)文件覆盖服务器的数据库 ", "End-to-End Encryption": "端到端加密", "Endpoint URL": "终端URL", @@ -153,8 +167,10 @@ "Fetch chunks on demand": "按需获取块", "Fetch database with previous behaviour": "使用以前的行为获取数据库", "Fetch remote settings": "获取远端设置", + "File prefix on the bucket": "存储桶中的文件前缀", "File to resolve conflict": "选择要解决冲突的文件", "Filename": "文件名", + "Files with modification times greater than this value (in seconds since the Unix epoch) will not have their events reflected. Set to 0 to disable this limit.": "修改时间大于此值(Unix 纪元以来的秒数)的文件,其事件不会被反映。设为 0 可禁用此限制。", "First, please select the option that best describes your current situation.": "首先,请选择最符合你当前情况的选项。", "Flag and restart": "标记后重启", "Forces the file to be synced when opened.": "打开文件时强制同步该文件 ", @@ -167,20 +183,29 @@ "Garbage Collection: Scanned ${scanned} / ~${docCount}": "垃圾回收:已扫描 ${scanned} / ~${docCount}", "Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": "垃圾回收:扫描完成。总 chunks:${totalChunks},已使用 chunks:${usedChunks}", "Handle files as Case-Sensitive": "将文件视为区分大小写", + "Hatch": "工具箱", "Hidden Files": "隐藏文件", "Hide completely": "完全隐藏", - "How to display network errors when the sync server is unreachable.": "当同步服务器不可达时,如何显示网络错误。", + "Highlight diff": "高亮差异", + "How to display network errors when the sync server is unreachable.": "同步服务器无法访问时,如何显示网络错误。", "How would you like to configure the connection to your server?": "你希望如何配置与服务器的连接?", "I am adding a device to an existing synchronisation setup": "我要将设备加入现有同步配置", "I am setting this up for the first time": "我是第一次进行设置", "I know my server details, let me enter them": "我知道服务器详情,让我手动输入", "If disabled(toggled), chunks will be split on the UI thread (Previous behaviour).": "如果禁用(切换),chunks 将在 UI 线程上分割(以前的行为)", "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, changes will be automatically broadcasted to all connected peers. Notified peers will start fetching the changes.": "启用后,更改会自动广播给所有已连接的对等设备。收到通知的设备会开始获取这些更改。", "If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker.": "如果启用,数据块将被分割成不超过 100 项。但是,去重效果会稍弱", + "If enabled, efficient per-file customization sync will be used. A minor migration is required when enabling this feature, and all devices must be updated to v0.23.18. Enabling this feature will result in losing compatibility with older versions.": "启用后,将使用更高效的按文件自定义同步。启用此功能时需要一次小迁移,且所有设备都必须更新到 v0.23.18。启用后将失去与旧版本的兼容性。", "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 forcePathStyle option will be used for bucket operations.": "启用后,存储桶操作将使用 forcePathStyle 选项。", "If enabled, the notification of hidden files change will be suppressed.": "如果启用,将不再通知隐藏文件被更改", + "If enabled, the P2P connection will be automatically started when the application launches.": "启用后,应用启动时会自动开始 P2P 连接。", + "If enabled, the plugin will not attempt to connect to the remote database even if the chunk was not found locally.": "启用后,即使本地找不到该块,插件也不会尝试连接远程数据库。", + "If enabled, the request API will be used to avoid `inevitable` CORS problems. This is a workaround and may not work in all cases. PLEASE READ THE DOCUMENTATION BEFORE USING THIS OPTION. This is a less-secure option.": "启用后,将使用 request API 避免“不可避免”的 CORS 问题。这是一个变通方案,并不一定适用于所有情况。使用此选项前请务必阅读文档。这是安全性较低的选项。", + "If this enabled, all chunks will be stored with the revision made from its content.": "启用后,所有数据块都会使用由其内容生成的修订版本存储。", "If this enabled, all chunks will be stored with the revision made from its content. (Previous behaviour)": "如果启用,所有 chunks 将使用根据其内容生成的修订版本存储(以前的行为)", "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.": "如果启用此功能,数据块将被分割成具有语义意义的段落。并非所有平台都支持此功能", @@ -194,15 +219,15 @@ "Initialise all journal history, On the next sync, every item will be received and sent.": "初始化所有日志历史。下次同步时,所有项目都会重新接收并发送。", "Interval (sec)": "间隔(秒)", "K.exp": "实验性", - "K.long_p2p_sync": "%{title_p2p_sync} (%{exp})", - "K.P2P": "%{Peer}-to-%{Peer}", - "K.Peer": "Peer", + "K.long_p2p_sync": "%{title_p2p_sync}", + "K.P2P": "%{Peer}-对-%{Peer}", + "K.Peer": "节点", "K.ScanCustomization": "扫描自定义", - "K.short_p2p_sync": "P2P同步(%{exp})", + "K.short_p2p_sync": "P2P Sync", "K.title_p2p_sync": "Peer-to-Peer同步", "Keep empty folder": "保留空文件夹", - "lang_def": "Default", - "lang-de": "Deutsche", + "lang_def": "默认", + "lang-de": "Deutsch", "lang-def": "%{lang_def}", "lang-es": "Español", "lang-fr": "Français", @@ -247,11 +272,15 @@ "logPane.pause": "暂停", "logPane.title": "Self-hosted LiveSync 日志", "logPane.wrap": "自动换行", + "Maintenance": "维护", "Maximum delay for batch database updating": "批量数据库更新的最大延迟", + "Maximum file modification time for reflected file events": "反映文件事件的最大文件修改时间", "Maximum file size": "最大文件大小", "Maximum Incubating Chunk Size": "最大孵化块大小", "Maximum Incubating Chunks": "最大孵化块数", "Maximum Incubation Period": "最大孵化期", + "Maximum size of chunks to send in one request": "单次请求发送数据块的最大大小", + "MB": "MB", "MB (0 to disable).": "MB(0为禁用)", "Memory cache size (by total characters)": "内存缓存大小(按总字符数)", "Memory cache size (by total items)": "内存缓存大小(按总项目数)", @@ -263,10 +292,10 @@ "moduleCheckRemoteSize.logExceededWarning": "远程存储大小:${measuredSize} 超过 ${notifySize}", "moduleCheckRemoteSize.logThresholdEnlarged": "阈值已扩大到 ${size}MB", "moduleCheckRemoteSize.msgConfirmRebuild": "这可能需要一些时间。您真的想现在重建所有内容吗?", - "moduleCheckRemoteSize.msgDatabaseGrowing": "**您的数据库正在变大!** 但别担心,我们现在可以解决它。在远程存储空间用完之前还有时间。\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", + "moduleCheckRemoteSize.msgDatabaseGrowing": "**您的数据库正在变大!** 但别担心,我们现在可以解决它。在远程存储空间用完之前还有时间。\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", "moduleCheckRemoteSize.msgSetDBCapacity": "我们可以设置一个最大数据库容量警告,**以便在远程存储空间耗尽前采取行动**。\n您想启用这个功能吗?\n\n> [!MORE]-\n> - 0: 不警告存储大小。\n> 如果您在远程存储(尤其是自托管)上有足够的空间,则推荐此选项。您可以手动检查存储大小并重建。\n> - 800: 如果远程存储大小超过 800MB 则发出警告。\n> 如果您使用的是 fly.io(1GB 限制) 或 IBM Cloudant,则推荐此选项。\n> - 2000: 如果远程存储大小超过 2GB 则发出警告。\n\n如果达到限制,系统会要求我们逐步增大限制\n", "moduleCheckRemoteSize.option2GB": "2GB (标准)", - "moduleCheckRemoteSize.option800MB": "800MB (Cloudant, fly.io)", + "moduleCheckRemoteSize.option800MB": "800MB(Cloudant, fly.io)", "moduleCheckRemoteSize.optionAskMeLater": "稍后问我", "moduleCheckRemoteSize.optionDismiss": "忽略", "moduleCheckRemoteSize.optionIncreaseLimit": "增加到 ${newMax}MB", @@ -317,7 +346,7 @@ "moduleMigration.msgFetchRemoteAgain": "您可能已经知道,Self-hosted LiveSync 更改了其默认行为和数据库结构。\n\n值得庆幸的是,在您的时间和努力下,远程数据库似乎已经迁移完成。恭喜!\n\n但是,我们还需要一点点操作。此设备的配置与远程数据库不兼容。我们需要再次从远程数据库获取。我们现在应该再次从远程获取吗?\n\n___注意:在更改配置并再次获取数据库之前,我们无法进行同步。___\n___注意2:chunks 是完全不可变的,我们只能获取元数据和差异", "moduleMigration.msgInitialSetup": "您的设备**尚未设置**。让我引导您完成设置过程。\n\n请记住,每个对话框内容都可以复制到剪贴板。如果以后需要参考,可以将其粘贴到 Obsidian 的笔记中。您也可以使用翻译工具将其翻译成您的语言。\n\n首先,您有**设置 URI** 吗?\n\n注意:如果您不知道这是什么,请参阅[文档](${URI_DOC})", "moduleMigration.msgRecommendSetupUri": "我们强烈建议您生成一个设置 URI 并使用它。\n如果您对此不了解,请参阅[文档](${URI_DOC})(再次抱歉,但这很重要)。\n\n您想如何手动设置?", - "moduleMigration.msgSinceV02321": "自 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}` 并尝试再次同步。由于检测到差异,系统会再次提示您", + "moduleMigration.msgSinceV02321": "自 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}` 并尝试再次同步。由于检测到差异,系统会再次提示您", "moduleMigration.optionAdjustRemote": "调整到远程设置", "moduleMigration.optionDecideLater": "稍后决定", "moduleMigration.optionEnableBoth": "启用两者", @@ -329,7 +358,7 @@ "moduleMigration.optionNoAskAgain": "不,请稍后再次询问", "moduleMigration.optionNoSetupUri": "不,我没有", "moduleMigration.optionRemindNextLaunch": "下次启动时提醒我", - "moduleMigration.optionSetupViaP2P": "Use %{short_p2p_sync} to set up", + "moduleMigration.optionSetupViaP2P": "使用 %{short_p2p_sync} 进行设置", "moduleMigration.optionSetupWizard": "带我进入设置向导", "moduleMigration.optionYesFetchAgain": "是的,再次获取", "moduleMigration.titleCaseSensitivity": "大小写敏感性", @@ -352,6 +381,7 @@ "Notify customized": "通知自定义设置", "Notify when other device has newly customized.": "当其他设备有新的自定义设置时通知 ", "Notify when the estimated remote storage size exceeds on start up": "启动时当估计的远程存储大小超出时通知", + "Now we can choose how to split the chunks; V3 is the most efficient. If you have troubled, please make this Default or Legacy.": "现在可以选择如何分割数据块;V3 效率最高。如果遇到问题,请改为 Default 或 Legacy。", "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.": "一次处理的批量数量。默认为 40。最小为 2。此设置与批量大小一起控制一次在内存中保留多少文档", "Number of changes to sync at a time. Defaults to 50. Minimum is 2.": "一次同步的更改数量。默认为 50。最小为 2。", "Obsidian version": "Obsidian 版本", @@ -402,7 +432,7 @@ "obsidianLiveSyncSettingTab.logCheckingConfigDone": "配置检查完成", "obsidianLiveSyncSettingTab.logCheckingConfigFailed": "配置检查失败", "obsidianLiveSyncSettingTab.logCheckingDbConfig": "正在检查数据库配置", - "obsidianLiveSyncSettingTab.logCheckPassphraseFailed": "错误:无法使用远程服务器检查密码:\n${db} ", + "obsidianLiveSyncSettingTab.logCheckPassphraseFailed": "错误:无法使用远程服务器检查密码:\n${db}", "obsidianLiveSyncSettingTab.logConfiguredDisabled": "已配置的同步模式:已禁用", "obsidianLiveSyncSettingTab.logConfiguredLiveSync": "已配置的同步模式:LiveSync", "obsidianLiveSyncSettingTab.logConfiguredPeriodic": "已配置的同步模式:定期同步", @@ -418,13 +448,14 @@ "obsidianLiveSyncSettingTab.logPassphraseNotCompatible": "错误:密码与远程服务器不兼容!请再次检查!", "obsidianLiveSyncSettingTab.logRebuildNote": "同步已禁用,如果需要,请获取并重新启用", "obsidianLiveSyncSettingTab.logSelectAnyPreset": "请选择任一预设。", + "obsidianLiveSyncSettingTab.logServerConfigurationCheck": "日志服务器配置检查", "obsidianLiveSyncSettingTab.msgAreYouSureProceed": "您确定要继续吗?", "obsidianLiveSyncSettingTab.msgChangesNeedToBeApplied": "需要应用更改!", "obsidianLiveSyncSettingTab.msgConfigCheck": "--配置检查--", "obsidianLiveSyncSettingTab.msgConfigCheckFailed": "配置检查失败。仍要继续吗?", "obsidianLiveSyncSettingTab.msgConnectionCheck": "--连接检查--", "obsidianLiveSyncSettingTab.msgConnectionProxyNote": "如果您在连接检查时遇到问题(即使检查了配置后),请检查您的反向代理配置", - "obsidianLiveSyncSettingTab.msgCurrentOrigin": "当前源: {origin}", + "obsidianLiveSyncSettingTab.msgCurrentOrigin": "当前 origin: ${origin}", "obsidianLiveSyncSettingTab.msgDiscardConfirmation": "您真的要丢弃现有的设置和数据库吗?", "obsidianLiveSyncSettingTab.msgDone": "--完成--", "obsidianLiveSyncSettingTab.msgEnableCors": "设置 httpd.enable_cors", @@ -439,7 +470,7 @@ "obsidianLiveSyncSettingTab.msgNonHTTPSWarning": "无法连接到非 HTTPS URI。请更新您的配置并重试", "obsidianLiveSyncSettingTab.msgNotice": "---注意---", "obsidianLiveSyncSettingTab.msgObjectStorageWarning": "警告:此功能仍在开发中,请注意以下几点:\n- 仅追加架构。需要重建才能缩小存储空间。\n- 有点脆弱。\n- 首次同步时,所有历史记录将从远程传输。注意数据上限和慢速。\n- 只有差异会实时同步。\n\n如果您遇到任何问题,或对此功能有任何想法,请在 GitHub 上创建 issue。\n感谢您的巨大贡献", - "obsidianLiveSyncSettingTab.msgOriginCheck": "源检查: {org}", + "obsidianLiveSyncSettingTab.msgOriginCheck": "正在检查 origin: ${org}", "obsidianLiveSyncSettingTab.msgRebuildRequired": "需要重建数据库以应用更改。请选择应用更改的方法。\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": "请选择并应用任一预设项以完成向导。", "obsidianLiveSyncSettingTab.msgSetCorsCredentials": "设置 cors.credentials", @@ -469,7 +500,7 @@ "obsidianLiveSyncSettingTab.okCorsOriginMatched": "✔ CORS 源正常", "obsidianLiveSyncSettingTab.okCorsOrigins": "✔ cors.origins 设置正确", "obsidianLiveSyncSettingTab.okEnableCors": "✔ httpd.enable_cors 设置正确", - "obsidianLiveSyncSettingTab.okEnableCorsChttpd": "✔ chttpd.enable_cors is ok.", + "obsidianLiveSyncSettingTab.okEnableCorsChttpd": "✔ chttpd.enable_cors 已就绪。", "obsidianLiveSyncSettingTab.okMaxDocumentSize": "✔ couchdb.max_document_size 设置正确", "obsidianLiveSyncSettingTab.okMaxRequestSize": "✔ chttpd.max_http_request_size 设置正确", "obsidianLiveSyncSettingTab.okRequireValidUser": "✔ chttpd.require_valid_user 设置正确", @@ -523,7 +554,7 @@ "obsidianLiveSyncSettingTab.titleSyncSettings": "同步设置", "obsidianLiveSyncSettingTab.titleSyncSettingsViaMarkdown": "通过 Markdown 同步设置", "obsidianLiveSyncSettingTab.titleUpdateThinning": "更新精简", - "obsidianLiveSyncSettingTab.warnCorsOriginUnmatched": "⚠ CORS 源不匹配 {from}->{to}", + "obsidianLiveSyncSettingTab.warnCorsOriginUnmatched": "⚠ CORS Origin 不匹配 ${from}->${to}", "obsidianLiveSyncSettingTab.warnNoAdmin": "⚠ 您没有管理员权限", "Ok": "确定", "Old Algorithm": "旧算法", @@ -545,14 +576,14 @@ "P2P.Note.important_note": "The Experimental Implementation of the Peer-to-Peer Replicator.", "P2P.Note.important_note_sub": "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": "What is this feature? (and some important notes, please read once)", - "P2P.NotEnabled": "%{title_p2p_sync} is not enabled. We cannot open a new connection.", - "P2P.P2PReplication": "%{P2P} Replication", + "P2P.NotEnabled": "%{title_p2p_sync} 未启用,无法建立新连接。", + "P2P.P2PReplication": "%{P2P} 同步", "P2P.PaneTitle": "%{long_p2p_sync}", - "P2P.ReplicatorInstanceMissing": "P2P Sync replicator is not found, possibly not have been configured or enabled.", - "P2P.SeemsOffline": "Peer ${name} seems offline, skipped.", - "P2P.SyncAlreadyRunning": "P2P Sync is already running.", - "P2P.SyncCompleted": "P2P Sync completed.", - "P2P.SyncStartedWith": "P2P Sync with ${name} have been started.", + "P2P.ReplicatorInstanceMissing": "未找到 P2P 同步复制器,可能尚未配置或启用。", + "P2P.SeemsOffline": "节点 ${name} 似乎离线,已跳过。", + "P2P.SyncAlreadyRunning": "P2P 同步已在运行中。", + "P2P.SyncCompleted": "P2P 同步已完成。", + "P2P.SyncStartedWith": "已与 ${name} 开始 P2P 同步。", "paneMaintenance.markDeviceResolvedAfterBackup": "请在完成备份后将此设备标记为已处理。", "paneMaintenance.remoteLockedAndDeviceNotAccepted": "远端数据库已锁定,且此设备尚未被接受。", "paneMaintenance.remoteLockedResolvedDevice": "远端数据库已锁定,但此设备已被接受。", @@ -575,6 +606,7 @@ "Perform Garbage Collection to remove unused chunks and reduce database size.": "执行垃圾回收以清理未使用的 chunks 并减小数据库体积。", "Periodic Sync interval": "定期同步间隔", "Pick a file to resolve conflict": "选择要解决冲突的文件", + "Pick a file to show history": "选择要显示历史的文件", "Please disable 'Read chunks online' in settings to use Garbage Collection.": "要使用垃圾回收,请在设置中禁用“Read chunks online”。", "Please enable 'Compute revisions for chunks' in settings to use Garbage Collection.": "要使用垃圾回收,请在设置中启用“Compute revisions for chunks”。", "Please select 'Cancel' explicitly to cancel this operation.": "如需取消此操作,请明确选择“取消”。", @@ -590,6 +622,7 @@ "Proceed with Setup URI": "继续使用 Setup URI", "Proceeding with Garbage Collection, ignoring missing nodes.": "正在继续执行垃圾回收,并忽略缺失节点。", "Proceeding with Garbage Collection.": "正在执行垃圾回收。", + "Process files even if seems to be corrupted": "即使文件看起来已损坏也处理", "Process small files in the foreground": "在前台处理小文件", "Progress": "进度", "Property Encryption": "属性加密", @@ -600,15 +633,30 @@ "Rebuilding Operations (Remote Only)": "重建操作(仅远端)", "Recreate all": "全部重建", "Recreate missing chunks for all files": "为所有文件重建缺失的 chunks", - "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.", - "RedFlag.Fetch.Method.FetchSafer": "Create a local database once before fetching", - "RedFlag.Fetch.Method.FetchSmoother": "Create local file chunks before fetching", - "RedFlag.Fetch.Method.FetchTraditional": "Fetch everything from the remote", - "RedFlag.Fetch.Method.Title": "How do you want to fetch?", - "RedFlag.FetchRemoteConfig.Buttons.Cancel": "No, use local settings", - "RedFlag.FetchRemoteConfig.Buttons.Fetch": "Yes, fetch and apply remote settings", - "RedFlag.FetchRemoteConfig.Message": "Do you want to fetch and apply remotely stored preference settings to the device?", - "RedFlag.FetchRemoteConfig.Title": "Fetch Remote Configuration", + "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> 此方法使用较少的 CPU 且比\"%{RedFlag.Fetch.Method.FetchSafer}\"更快,但如果使用不当可能导致数据丢失。\n> ## %{RedFlag.Fetch.Method.FetchTraditional}\n> **高流量**、**低 CPU 占用**、**低到中等风险**(取决于操作)\n> 所有数据将从远程获取。\n> 与 %{RedFlag.Fetch.Method.FetchSmoother} 类似,但所有数据块都从远程源获取。\n> 这是最传统的获取方式,通常消耗最多的网络流量和时间。它也存在与\"%{RedFlag.Fetch.Method.FetchSmoother}\"选项类似的覆盖远程文件的风险。\n> 但是,由于它是最久经考验和最直接的方法,通常被认为是最稳定的。", + "RedFlag.Fetch.Method.FetchSafer": "获取前先创建本地数据库", + "RedFlag.Fetch.Method.FetchSmoother": "获取前先创建本地文件块", + "RedFlag.Fetch.Method.FetchTraditional": "从远程获取所有数据", + "RedFlag.Fetch.Method.Title": "您希望如何获取数据?", + "RedFlag.FetchRemoteConfig.Applied": "已应用远程配置。", + "RedFlag.FetchRemoteConfig.Buttons.Cancel": "否,使用本地设置", + "RedFlag.FetchRemoteConfig.Buttons.Fetch": "是,获取并应用远程设置", + "RedFlag.FetchRemoteConfig.Buttons.Retry": "重试(推荐)", + "RedFlag.FetchRemoteConfig.Buttons.SkipAndProceed": "跳过并继续", + "RedFlag.FetchRemoteConfig.FailedMessage": "无法从远程获取配置。如果您是 Self-hosted LiveSync 新用户,这可能是正常情况。否则,请检查网络或服务器设置。", + "RedFlag.FetchRemoteConfig.FailedTitle": "获取远程配置失败", + "RedFlag.FetchRemoteConfig.MatchesLocal": "远程配置与本地配置一致。未应用任何更改。", + "RedFlag.FetchRemoteConfig.Message": "是否获取并应用远程存储的偏好设置到本设备?", + "RedFlag.FetchRemoteConfig.NotApplied": "未应用远程配置。", + "RedFlag.FetchRemoteConfig.SettingsDiffered": "您的设置与服务器略有不同。插件已使用服务器设置补充不兼容的部分!", + "RedFlag.FetchRemoteConfig.Title": "获取远程配置", + "RedFlag.Log.FetchEverythingCancelled": "用户已取消获取全部数据。", + "RedFlag.Log.FetchEverythingCompleted": "获取全部数据操作已完成。Vault 文件将逐步同步。", + "RedFlag.Log.RebuildEverythingCancelled": "用户已取消重建全部数据。", + "RedFlag.Log.RebuildEverythingCompleted": "重建全部数据操作已完成。", + "RedFlag.Log.VaultInitialisationError": "Vault 初始化时出错。", + "RedFlag.Log.VaultInitialisationProcessError": "Vault 初始化流程中出错。", + "RedFlag.ResumeProcessingPrompt": "是否恢复文件和数据库处理,并立即重启 Obsidian?", "Reduces storage space by discarding all non-latest revisions. This requires the same amount of free space on the remote server and the local client.": "通过丢弃所有非最新版本来减少存储空间。这需要远程服务器和本地客户端具备相同数量的可用空间。", "Reducing the frequency with which on-disk changes are reflected into the DB": "降低将磁盘上的更改反映到数据库中的频率", "Region": "区域", @@ -620,18 +668,18 @@ "Remote server type": "远程服务器类型", "Remote Type": "远程类型", "Rename": "重命名", - "Replicator.Dialogue.Locked.Action.Dismiss": "Cancel for reconfirmation", - "Replicator.Dialogue.Locked.Action.Fetch": "Reset Synchronisation on This Device", - "Replicator.Dialogue.Locked.Action.Unlock": "Unlock the remote database", + "Replicator.Dialogue.Locked.Action.Dismiss": "取消以重新确认", + "Replicator.Dialogue.Locked.Action.Fetch": "重置此设备上的同步", + "Replicator.Dialogue.Locked.Action.Unlock": "解锁远程数据库", "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 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": "Fetch all has been scheduled. Plug-in will be restarted to perform it.", - "Replicator.Dialogue.Locked.Message.Unlocked": "The remote database has been unlocked. Please retry the operation.", - "Replicator.Dialogue.Locked.Title": "Locked", - "Replicator.Message.Cleaned": "Database cleaning up is in process. replication has been cancelled", - "Replicator.Message.InitialiseFatalError": "No replicator is available, this is the fatal error.", - "Replicator.Message.Pending": "Some file events are pending. Replication has been cancelled.", - "Replicator.Message.SomeModuleFailed": "Replication has been cancelled by some module failure", - "Replicator.Message.VersionUpFlash": "An update has been detected. Please open the Settings dialogue and check the Change Log. Replication has been cancelled.", + "Replicator.Dialogue.Locked.Message.Fetch": "已安排全部获取操作。插件将重新启动以执行此操作。", + "Replicator.Dialogue.Locked.Message.Unlocked": "远程数据库已解锁。请重试该操作。", + "Replicator.Dialogue.Locked.Title": "已锁定", + "Replicator.Message.Cleaned": "数据库正在清理中,同步已被取消", + "Replicator.Message.InitialiseFatalError": "没有可用的同步器,这是致命错误。", + "Replicator.Message.Pending": "部分文件事件待处理。同步已被取消。", + "Replicator.Message.SomeModuleFailed": "由于某些模块失败,同步已被取消", + "Replicator.Message.VersionUpFlash": "检测到更新。请打开设置对话框并查看更新日志。同步已被取消。", "Requires restart of Obsidian": "需要重启 Obsidian", "Requires restart of Obsidian.": "需要重启 Obsidian ", "Rerun Onboarding Wizard": "重新运行引导向导", @@ -675,37 +723,48 @@ "Scram!": "紧急处置", "Seconds, 0 to disable": "秒,0为禁用", "Seconds. Saving to the local database will be delayed until this value after we stop typing or saving.": "秒。在我们停止输入或保存后,保存到本地数据库将延迟此值 ", - "Secret Key": "Secret Key", + "Secret Key": "密钥", "Select the database adapter to use.": "选择要使用的数据库适配器。", + "Selector": "选择器", "Send": "发送", "Send chunks": "发送 chunks", "Server URI": "服务器 URI", - "Setting.GenerateKeyPair.Desc": "我们已经生成了一组密钥对!\n\n注意:这组密钥对之后将不会再次显示。请务必妥善保管;如果丢失,你需要重新生成新的密钥对。\n注意 2:公钥采用 spki 格式,私钥采用 pkcs8 格式。为方便复制,公钥中的换行会被转换为 `\\n`。\n注意 3:公钥应配置在远端数据库中,私钥应配置在本地设备上。\n\n>[!仅限本人查看]-\n>
\n>\n> ### 公钥\n> ```\n${public_key}\n> ```\n>\n> ### 私钥\n> ```\n${private_key}\n> ```\n>\n>
\n\n>[!整段复制]-\n>\n>
\n>\n> ```\n${public_key}\n${private_key}\n> ```\n>\n>
", - "Setting.GenerateKeyPair.Title": "已生成新的密钥对!", + "Setting.GenerateKeyPair.Desc": "密钥对已生成!\n\n注意:此密钥对不会再次显示。请妥善保存。如果丢失,需要生成新的密钥对。\n注意 2:公钥为 spki 格式,私钥为 pkcs8 格式。为了方便起见,公钥中的换行符已转换为 `\\n`。\n注意 3:公钥应在远程数据库中配置,私钥应在本地设备中配置。\n\n>[!仅供您查看]-\n>
\n>\n> ### 公钥\n> ```\n${public_key}\n> ```\n>\n> ### 私钥\n> ```\n${private_key}\n> ```\n>\n>
\n\n>[!用于复制两者]-\n>\n>
\n>\n> ```\n${public_key}\n${private_key}\n> ```\n>\n>
\n\n", + "Setting.GenerateKeyPair.Title": "新密钥对已生成!", "Setting.TroubleShooting": "故障排除", "Setting.TroubleShooting.Doctor": "设置诊断", "Setting.TroubleShooting.Doctor.Desc": "检测系统中不合理的设置。(与迁移期间逻辑相同)", "Setting.TroubleShooting.ScanBrokenFiles": "扫描损坏或异常的文件", "Setting.TroubleShooting.ScanBrokenFiles.Desc": "扫描数据库中未正确存储的文件。", - "SettingTab.Message.AskRebuild": "Your changes require fetching from the remote database. Do you want to proceed?", + "SettingTab.Message.AskRebuild": "您的更改需要从远程数据库获取。是否继续?", "Setup URI dialog cancelled.": "Setup URI 对话框已取消。", - "Setup.Apply.Buttons.ApplyAndFetch": "Apply and Fetch", - "Setup.Apply.Buttons.ApplyAndMerge": "Apply and Merge", - "Setup.Apply.Buttons.ApplyAndRebuild": "Apply and Rebuild", - "Setup.Apply.Buttons.Cancel": "Discard and Cancel", - "Setup.Apply.Buttons.OnlyApply": "Only Apply", - "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.", - "Setup.Apply.Title": "Apply new configuration from the ${method}", - "Setup.Apply.WarningRebuildRecommended": "NOTE: after adjusting the settings, it has been determined that a rebuild is required; Just Import is not recommended.", - "Setup.Doctor.Buttons.No": "No, please use the settings in the URI as is", - "Setup.Doctor.Buttons.Yes": "Yes, please consult the doctor", - "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.FetchRemoteConf.Buttons.Fetch": "Yes, please fetch the configuration", - "Setup.FetchRemoteConf.Buttons.Skip": "No, please use the settings in the 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.", - "Setup.FetchRemoteConf.Title": "Fetch configuration from remote database?", - "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}
", + "Setup.Apply.Buttons.ApplyAndFetch": "应用并获取", + "Setup.Apply.Buttons.ApplyAndMerge": "应用并合并", + "Setup.Apply.Buttons.ApplyAndRebuild": "应用并重建", + "Setup.Apply.Buttons.Cancel": "丢弃并取消", + "Setup.Apply.Buttons.OnlyApply": "仅应用", + "Setup.Apply.Message": "新配置已准备就绪。让我们继续应用它。\n有几种应用方式:\n\n- 应用并获取\n 将此设备配置为新客户端。应用后从远程服务器同步。\n- 应用并合并\n 在已有文件的设备上配置。处理本地文件并传输差异。可能会出现冲突。\n- 应用并重建\n 使用本地文件重建远程数据。通常在服务器损坏或希望从头开始时使用。\n 其他设备将被锁定,需要重新获取。\n- 仅应用\n 仅应用配置。如果需要重建,可能会出现冲突。", + "Setup.Apply.Title": "应用来自 ${method} 的新配置", + "Setup.Apply.WarningRebuildRecommended": "注意:调整设置后,已确定需要重建;不建议仅导入。", + "Setup.Command.CopySetupUri": "将设置复制为新的设置 URI", + "Setup.Command.CopySetupUriFull": "将设置复制为新的设置 URI(完整)", + "Setup.Command.CopySetupUriWithSync": "将设置复制为新的设置 URI(包含自定义同步)", + "Setup.Command.OpenSetupUri": "使用已复制的设置 URI(原“打开设置 URI”)", + "Setup.Command.ShowSettingsQrCode": "以二维码显示设置", + "Setup.Doctor.Buttons.No": "?", + "Setup.Doctor.Buttons.Yes": "?", + "Setup.Doctor.Message": "Self-hosted LiveSync 的历史已逐渐悠久,部分推荐设置已发生变化。\n\n现在是进行检查的绝佳时机。\n\n是否运行诊断程序,检查导入的设置是否与最新状态一致?", + "Setup.Doctor.Title": "是否运行诊断程序?", + "Setup.EncryptSettingsPassphrase": "用于加密设置 URI 的密码短语", + "Setup.EncryptSettingsTitle": "加密您的设置", + "Setup.FetchRemoteConf.Buttons.Fetch": "是,请获取配置", + "Setup.FetchRemoteConf.Buttons.Skip": "不,请使用 URI 中的设置", + "Setup.FetchRemoteConf.Message": "如果我们已通过其他设备同步过一次,远程数据库会存储同步设备之间合适的配置值。插件希望获取这些值以进行可靠的配置。\n\n但是,我们需要确认一件事:当前是否处于可以安全访问网络并获取设置的环境?\n\n注意:大多数情况下这样做是安全的,前提是您的远程数据库使用了 SSL 证书,且网络未受攻击。", + "Setup.FetchRemoteConf.Title": "是否从远程数据库获取配置?", + "Setup.Log.ProtocolHandlerRegistrationFailed": "注册协议处理程序失败。此功能在某些环境中可能无法工作。", + "Setup.Log.SetupUriCopiedToClipboard": "设置 URI 已复制到剪贴板", + "Setup.QRCode": "已生成用于传输设置的二维码。请使用手机或其他设备扫描此二维码。\n注意:二维码未加密,请谨慎打开。\n\n>[!仅供您查看]-\n>
${qr_image}
", + "Setup.QRCodeTitle": "设置二维码", "Setup.RemoteE2EE.AdvancedTitle": "高级", "Setup.RemoteE2EE.AlgorithmWarning": "更改加密算法会导致之前使用其他算法加密的数据无法访问。请确保所有设备都配置为使用同一算法,以保持对数据的访问能力。", "Setup.RemoteE2EE.ButtonCancel": "取消", @@ -731,6 +790,7 @@ "Setup.ScanQRCode.Step3": "在源设备上,从命令面板运行“将设置显示为二维码”命令。", "Setup.ScanQRCode.Step4": "在这台设备上,切换到相机应用或使用二维码扫描器扫描显示出的二维码。", "Setup.ScanQRCode.Title": "扫描二维码", + "Setup.SetupUri": "设置 URI", "Setup.ShowQRCode": "使用QR码", "Setup.ShowQRCode.Desc": "使用QR码来传递配置", "Setup.UseSetupURI.ButtonCancel": "取消", @@ -750,6 +810,7 @@ "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?": "即使我们可以安全地自动合并,是否也应该为每一次合并提示您?", "Show full banner": "显示完整横幅", + "Show history": "显示历史", "Show icon only": "仅显示图标", "Show only notifications": "仅显示通知", "Show status as icons only": "仅以图标显示状态", @@ -790,29 +851,63 @@ "This is the most suitable synchronisation method for the design. All functions are available. You must have set up a CouchDB instance.": "这是最符合当前设计的同步方式,所有功能均可用。你需要事先部署好 CouchDB 实例。", "This passphrase will not be copied to another device. It will be set to `Default` until you configure it again.": "此密码不会复制到另一台设备。在您再次配置之前,它将设置为 `Default` ", "This will recreate chunks for all files. If there were missing chunks, this may fix the errors.": "这会为所有文件重新生成 chunks。如果之前存在缺失的 chunks,这可能修复相关错误。", - "TweakMismatchResolve.Action.Dismiss": "Dismiss", - "TweakMismatchResolve.Action.UseConfigured": "Use configured settings", - "TweakMismatchResolve.Action.UseMine": "Update remote database settings", - "TweakMismatchResolve.Action.UseMineAcceptIncompatible": "Update remote database settings but keep as is", - "TweakMismatchResolve.Action.UseMineWithRebuild": "Update remote database settings and rebuild again", - "TweakMismatchResolve.Action.UseRemote": "Apply settings to this device", - "TweakMismatchResolve.Action.UseRemoteAcceptIncompatible": "Apply settings to this device, but and ignore incompatibility", - "TweakMismatchResolve.Action.UseRemoteWithRebuild": "Apply settings to this device, and fetch again", - "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}", - "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}", - "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.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!***", - "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.**", - "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.**", - "TweakMismatchResolve.Table": "| Value name | This device | On Remote |\n|: --- |: ---- :|: ---- :|\n${rows}\n\n", + "TweakMismatchResolve.Action.Dismiss": "关闭", + "TweakMismatchResolve.Action.UseConfigured": "使用已配置的设置", + "TweakMismatchResolve.Action.UseMine": "更新远程数据库设置", + "TweakMismatchResolve.Action.UseMineAcceptIncompatible": "更新远程数据库设置但保持不变", + "TweakMismatchResolve.Action.UseMineWithRebuild": "更新远程数据库设置并重新重建", + "TweakMismatchResolve.Action.UseRemote": "将设置应用到此设备", + "TweakMismatchResolve.Action.UseRemoteAcceptIncompatible": "将设置应用到此设备,但忽略不兼容性", + "TweakMismatchResolve.Action.UseRemoteWithRebuild": "将设置应用到此设备并重新获取", + "TweakMismatchResolve.Message.Main": "\n远程数据库中的设置如下。这些值由其他设备配置,这些设备至少与此设备同步过一次。\n\n如果要使用这些设置,请选择 %{TweakMismatchResolve.Action.UseConfigured}。\n如果要保留此设备的设置,请选择 %{TweakMismatchResolve.Action.Dismiss}。\n\n${table}\n\n>[!TIP]\n> 如果要同步所有设置,请在此功能应用最小配置后使用 `通过 Markdown 同步设置`。\n\n${additionalMessage}", + "TweakMismatchResolve.Message.MainTweakResolving": "您的配置与远程服务器上的配置不匹配。\n\n以下配置需要保持一致:\n\n${table}\n\n请告诉我们您的决定。\n\n${additionalMessage}", + "TweakMismatchResolve.Message.UseRemote.WarningRebuildRecommended": "\n>[!NOTICE]\n> 部分更改兼容,但可能消耗额外的存储空间和传输流量。建议进行重建。但是,重建可能不会立即执行,将在未来的维护中实施。\n> ***请确保您有充足的时间并连接到稳定的网络!***", + "TweakMismatchResolve.Message.UseRemote.WarningRebuildRequired": "\n>[!WARNING]\n> 部分远程配置与此设备的本地数据库不兼容。需要重建本地数据库。\n> ***请确保您有充足的时间并连接到稳定的网络!***", + "TweakMismatchResolve.Message.WarningIncompatibleRebuildRecommended": "\n>[!NOTICE]\n> 检测到部分值存在差异,导致本地数据库与远程数据库不兼容。\n> 部分更改兼容,但可能消耗额外的存储空间和传输流量。建议进行重建。但是,重建可能不会立即执行,将在未来的维护中实施。\n> 如果要重建,可能需要几分钟或更长时间。**请确保现在是安全的操作时机。**", + "TweakMismatchResolve.Message.WarningIncompatibleRebuildRequired": "\n>[!WARNING]\n> 检测到部分值存在差异,导致本地数据库与远程数据库不兼容。\n> 需要重建本地或远程数据库。两者都需要几分钟或更长时间。**请确保现在是安全的操作时机。**", + "TweakMismatchResolve.Table": "| 值名称 | 此设备 | 远程 |\n|: --- |: ---- :|: ---- :|\n${rows}\n\n", "TweakMismatchResolve.Table.Row": "| ${name} | ${self} | ${remote} |", - "TweakMismatchResolve.Title": "Configuration Mismatch Detected", - "TweakMismatchResolve.Title.TweakResolving": "Configuration Mismatch Detected", - "TweakMismatchResolve.Title.UseRemoteConfig": "Use Remote Configuration", + "TweakMismatchResolve.Title": "检测到配置不匹配", + "TweakMismatchResolve.Title.TweakResolving": "检测到配置不匹配", + "TweakMismatchResolve.Title.UseRemoteConfig": "使用远程配置", + "Ui.Bucket.Guidance": "请在下方输入连接到 S3/MinIO/R2 兼容对象存储服务所需的详细信息。", "Ui.Common.Signal.Caution": "注意", "Ui.Common.Signal.Danger": "危险", "Ui.Common.Signal.Notice": "提示", "Ui.Common.Signal.Warning": "警告", + "Ui.ConflictResolver.FileToResolve": "待解决的文件", + "Ui.CouchDB.Guidance": "请在下方输入 CouchDB 服务器信息。", + "Ui.History.FileToView": "待查看的文件", + "Ui.P2P.Guidance": "请在下方输入点对点同步信息。", + "Ui.RemoteE2EE.AdvancedTitle": "高级", + "Ui.RemoteE2EE.AlgorithmWarning": "更改加密算法将导致无法访问之前使用不同算法加密的任何数据。", + "Ui.RemoteE2EE.ButtonCancel": "取消", + "Ui.RemoteE2EE.ButtonProceed": "继续", + "Ui.RemoteE2EE.DefaultAlgorithmDesc": "在大多数情况下,您应使用默认算法。", + "Ui.RemoteE2EE.Guidance": "请配置您的端到端加密设置。", + "Ui.RemoteE2EE.LabelEncrypt": "端到端加密", + "Ui.RemoteE2EE.LabelEncryptionAlgorithm": "加密算法", + "Ui.RemoteE2EE.LabelObfuscateProperties": "混淆属性", + "Ui.RemoteE2EE.ManualWarning": "请注意,端到端加密密码直到同步过程实际开始时才会被验证。这是为保护您的数据而设计的安全措施。", + "Ui.RemoteE2EE.MultiDestinationWarning": "连接到多个同步目标时,此设置必须保持一致。", + "Ui.RemoteE2EE.ObfuscatePropertiesDesc": "混淆属性通过使远程服务器上的文件和文件夹结构及名称更难以识别,从而增加了一层额外的安全保障。", + "Ui.RemoteE2EE.PassphraseValidationLine1": "请注意,端到端加密密码直到同步过程实际开始时才会被验证。", + "Ui.RemoteE2EE.PassphraseValidationLine2": "因此,我们要求您在手动配置服务器信息时格外谨慎。", + "Ui.RemoteE2EE.PlaceholderPassphrase": "请输入您的密码", + "Ui.RemoteE2EE.StronglyRecommended": "启用端到端加密可确保您的数据在发送到远程服务器之前已在设备上加密。这意味着即使有人获得服务器访问权限,没有密码也无法读取您的数据。", + "Ui.RemoteE2EE.StronglyRecommendedLine1": "启用端到端加密可确保您的数据在发送到远程服务器之前已在设备上加密。", + "Ui.RemoteE2EE.StronglyRecommendedLine2": "另外请注意,如果您正在使用点对点同步,将来切换到其他方式并连接到远程服务器时将使用此配置。", + "Ui.RemoteE2EE.StronglyRecommendedTitle": "强烈推荐", + "Ui.RemoteE2EE.Title": "端到端加密", + "Ui.RemoteE2EE.WarningSameSetting": "连接到多个同步目标时,此设置必须保持一致。", + "Ui.ScanQRCode.ButtonClose": "关闭此对话框", + "Ui.ScanQRCode.Guidance": "请按照以下步骤从现有设备导入设置。", + "Ui.ScanQRCode.Instruction": "请按照以下步骤从现有设备导入设置。", + "Ui.ScanQRCode.Step1": "在此设备上,请保持此 Vault 处于打开状态。", + "Ui.ScanQRCode.Step2": "在源设备上打开 Obsidian。", + "Ui.ScanQRCode.Step3": "在源设备上,从命令面板运行\"将设置显示为二维码\"命令。", + "Ui.ScanQRCode.Step4": "在此设备上,切换到相机应用或使用二维码扫描器扫描显示的二维码。", + "Ui.ScanQRCode.Title": "扫描二维码", "Ui.Settings.Advanced.LocalDatabaseTweak": "本地数据库调整", "Ui.Settings.Advanced.MemoryCache": "内存缓存", "Ui.Settings.Advanced.TransferTweak": "传输调整", @@ -833,24 +928,24 @@ "Ui.Settings.Common.Scan": "扫描", "Ui.Settings.Common.Send": "发送", "Ui.Settings.Common.Use": "使用", - "Ui.Settings.Common.VerifyAll": "全部校验", + "Ui.Settings.Common.VerifyAll": "全部验证", "Ui.Settings.CustomizationSync.OpenDesc": "打开此对话框", "Ui.Settings.CustomizationSync.Panel": "自定义同步", - "Ui.Settings.CustomizationSync.WarnChangeDeviceName": "启用此功能时无法修改设备名称。请先关闭此功能,再修改设备名称。", - "Ui.Settings.CustomizationSync.WarnSetDeviceName": "请先设置用于标识此设备的设备名称。该名称应在你的设备之间保持唯一。未设置前无法启用此功能。", + "Ui.Settings.CustomizationSync.WarnChangeDeviceName": "更改设备名称警告", + "Ui.Settings.CustomizationSync.WarnSetDeviceName": "设置设备名称警告", "Ui.Settings.Hatch.AnalyseDatabaseUsage": "分析数据库使用情况", "Ui.Settings.Hatch.AnalyseDatabaseUsageDesc": "分析数据库使用情况,并生成 TSV 报告供你自行诊断。你可以将生成的报告粘贴到任意电子表格工具中查看。", "Ui.Settings.Hatch.BackToNonConfigured": "返回未配置状态", "Ui.Settings.Hatch.ConvertNonObfuscated": "检查并转换未进行路径混淆的文件", "Ui.Settings.Hatch.ConvertNonObfuscatedDesc": "检查本地数据库中未按路径混淆方式存储的文件,并在需要时将其转换为正确格式。", - "Ui.Settings.Hatch.CopyIssueReport": "复制报告到剪贴板", + "Ui.Settings.Hatch.CopyIssueReport": "将报告复制到剪贴板", "Ui.Settings.Hatch.DatabaseLabel": "数据库:${details}", "Ui.Settings.Hatch.DatabaseToStorage": "数据库 -> 存储", "Ui.Settings.Hatch.DeleteCustomizationSyncData": "删除所有自定义同步数据", - "Ui.Settings.Hatch.GeneratedReport": "已生成的报告", + "Ui.Settings.Hatch.GeneratedReport": "生成的报告", "Ui.Settings.Hatch.Missing": "缺失", - "Ui.Settings.Hatch.ModifiedSize": "修改时间:${modified},大小:${size}", - "Ui.Settings.Hatch.ModifiedSizeActual": "修改时间:${modified},大小:${size}(实际大小:${actualSize})", + "Ui.Settings.Hatch.ModifiedSize": "修改大小", + "Ui.Settings.Hatch.ModifiedSizeActual": "实际修改大小", "Ui.Settings.Hatch.PrepareIssueReport": "准备用于提交问题的报告", "Ui.Settings.Hatch.RecoveryAndRepair": "恢复与修复", "Ui.Settings.Hatch.RecreateAll": "全部重建", @@ -864,7 +959,7 @@ "Ui.Settings.Hatch.RunDoctor": "运行诊断", "Ui.Settings.Hatch.ScanBrokenFiles": "扫描损坏文件", "Ui.Settings.Hatch.ScramSwitches": "紧急开关", - "Ui.Settings.Hatch.ShowHistory": "查看历史", + "Ui.Settings.Hatch.ShowHistory": "显示历史", "Ui.Settings.Hatch.StorageLabel": "存储:${details}", "Ui.Settings.Hatch.StorageToDatabase": "存储 -> 数据库", "Ui.Settings.Hatch.VerifyAndRepairAllFiles": "校验并修复所有文件", @@ -887,7 +982,7 @@ "Ui.Settings.Maintenance.OverwriteServerDataDesc": "使用此设备上的文件重建本地和远程数据库。", "Ui.Settings.Maintenance.PurgeAllJournalCounter": "清空全部日志计数器", "Ui.Settings.Maintenance.PurgeAllJournalCounterDesc": "清空所有下载与上传缓存。", - "Ui.Settings.Maintenance.RebuildingOperations": "重建操作(仅远程端)", + "Ui.Settings.Maintenance.RebuildingOperations": "重建操作(仅限远程)", "Ui.Settings.Maintenance.Resend": "重新发送", "Ui.Settings.Maintenance.ResendDesc": "将所有数据块重新发送到远程端。", "Ui.Settings.Maintenance.Reset": "重置", @@ -899,17 +994,17 @@ "Ui.Settings.Maintenance.ResetJournalSentDesc": "初始化日志发送历史。下次同步时,除当前设备已接收的项目外,其余项目都会重新发送。", "Ui.Settings.Maintenance.ResetLocalSyncInfo": "重置同步信息", "Ui.Settings.Maintenance.ResetLocalSyncInfoDesc": "从远程端恢复或重建本地数据库。", - "Ui.Settings.Maintenance.ResetReceived": "重置接收记录", - "Ui.Settings.Maintenance.ResetSentHistory": "重置发送记录", + "Ui.Settings.Maintenance.ResetReceived": "重置已接收", + "Ui.Settings.Maintenance.ResetSentHistory": "重置已发送历史", "Ui.Settings.Maintenance.ResetThisDevice": "重置此设备上的同步状态", - "Ui.Settings.Maintenance.ScheduleAndRestart": "计划执行并重启", + "Ui.Settings.Maintenance.ScheduleAndRestart": "定时并重启", "Ui.Settings.Maintenance.Scram": "紧急处理", "Ui.Settings.Maintenance.SendChunks": "发送数据块", "Ui.Settings.Maintenance.Syncing": "同步", - "Ui.Settings.Maintenance.WarningLockedReadyAction": "我已准备好,立即解锁数据库", - "Ui.Settings.Maintenance.WarningLockedReadyText": "为防止意外的数据仓库损坏,远程数据库已被锁定,暂停同步。(此设备已被标记为“已确认”)当你的所有设备都标记为“已确认”后,再解锁数据库。在复制过程确认此设备已完成确认之前,此警告会持续显示。", - "Ui.Settings.Maintenance.WarningLockedResolveAction": "我已完成备份,将此设备标记为“已确认”", - "Ui.Settings.Maintenance.WarningLockedResolveText": "为防止数据仓库损坏,由于此设备尚未标记为“已确认”,远程数据库已被锁定,暂停同步。请先备份你的仓库、重置本地数据库,然后选择“将此设备标记为已确认”。在复制过程确认此设备已完成确认之前,此警告会持续显示。", + "Ui.Settings.Maintenance.WarningLockedReadyAction": "警告已锁定准备操作", + "Ui.Settings.Maintenance.WarningLockedReadyText": "警告已锁定准备文本", + "Ui.Settings.Maintenance.WarningLockedResolveAction": "警告已锁定解决操作", + "Ui.Settings.Maintenance.WarningLockedResolveText": "警告已锁定解决文本", "Ui.Settings.Maintenance.WriteRedFlagAndRestart": "标记并重启", "Ui.Settings.Patches.CompatibilityConflict": "兼容性(冲突行为)", "Ui.Settings.Patches.CompatibilityDatabase": "兼容性(数据库结构)", @@ -923,63 +1018,63 @@ "Ui.Settings.Patches.EdgeCaseBehaviour": "边界情况处理(行为)", "Ui.Settings.Patches.EdgeCaseDatabase": "边界情况处理(数据库)", "Ui.Settings.Patches.EdgeCaseProcessing": "边界情况处理(处理流程)", - "Ui.Settings.Patches.IndexedDbWarning": "IndexedDB 适配器在某些场景下通常具有更好的性能,但在 LiveSync 模式下已发现可能导致内存泄漏。使用 LiveSync 模式时,请改用 IDB 适配器。", - "Ui.Settings.Patches.MigratingToIdb": "正在将所有数据迁移到 IDB...", - "Ui.Settings.Patches.MigratingToIndexedDb": "正在将所有数据迁移到 IndexedDB...", - "Ui.Settings.Patches.MigrationIdbCompleted": "已完成迁移到 IDB。Obsidian 将立即使用新配置重新启动。", - "Ui.Settings.Patches.MigrationIdbCompletedFollowUp": "已完成迁移到 IDB。请切换适配器并重新启动 Obsidian。", - "Ui.Settings.Patches.MigrationIndexedDbCompleted": "已完成迁移到 IndexedDB。Obsidian 将立即使用新配置重新启动。", - "Ui.Settings.Patches.MigrationIndexedDbCompletedFollowUp": "已完成迁移到 IndexedDB。请切换适配器并重新启动 Obsidian。", - "Ui.Settings.Patches.MigrationWarning": "修改此设置需要迁移现有数据(可能需要一些时间)并重新启动 Obsidian。请先备份你的数据后再继续。", - "Ui.Settings.Patches.OperationToIdb": "迁移到 IDB", - "Ui.Settings.Patches.OperationToIndexedDb": "迁移到 IndexedDB", + "Ui.Settings.Patches.IndexedDbWarning": "IndexedDB 警告", + "Ui.Settings.Patches.MigratingToIdb": "正在迁移到 IDB", + "Ui.Settings.Patches.MigratingToIndexedDb": "正在迁移到 IndexedDB", + "Ui.Settings.Patches.MigrationIdbCompleted": "IDB 迁移完成", + "Ui.Settings.Patches.MigrationIdbCompletedFollowUp": "IDB 迁移完成后续操作", + "Ui.Settings.Patches.MigrationIndexedDbCompleted": "IndexedDB 迁移完成", + "Ui.Settings.Patches.MigrationIndexedDbCompletedFollowUp": "IndexedDB 迁移完成后续操作", + "Ui.Settings.Patches.MigrationWarning": "迁移警告", + "Ui.Settings.Patches.OperationToIdb": "操作迁移到 IDB", + "Ui.Settings.Patches.OperationToIndexedDb": "操作迁移到 IndexedDB", "Ui.Settings.Patches.Remediation": "修正", - "Ui.Settings.Patches.RemediationChanged": "修正设置已更改", - "Ui.Settings.Patches.RemediationNoLimit": "未设置限制", - "Ui.Settings.Patches.RemediationRestarting": "修正设置已更改,正在重新启动 Obsidian...", - "Ui.Settings.Patches.RemediationRestartLater": "稍后", - "Ui.Settings.Patches.RemediationRestartMessage": "强烈建议重新启动 Obsidian。在重启之前,部分更改可能不会生效,界面显示也可能不一致。确定要现在重启吗?", - "Ui.Settings.Patches.RemediationRestartNow": "立即重启", - "Ui.Settings.Patches.RemediationSuffixChanged": "后缀已更改,正在重新打开数据库...", - "Ui.Settings.Patches.RemediationWithValue": "限制:${date}(${timestamp})", + "Ui.Settings.Patches.RemediationChanged": "修复已更改", + "Ui.Settings.Patches.RemediationNoLimit": "修复无限制", + "Ui.Settings.Patches.RemediationRestarting": "修复正在重启", + "Ui.Settings.Patches.RemediationRestartLater": "修复稍后重启", + "Ui.Settings.Patches.RemediationRestartMessage": "修复重启消息", + "Ui.Settings.Patches.RemediationRestartNow": "修复立即重启", + "Ui.Settings.Patches.RemediationSuffixChanged": "修复后缀已更改", + "Ui.Settings.Patches.RemediationWithValue": "值:${date}(${timestamp})", "Ui.Settings.Patches.RemoteDatabaseSunset": "远程数据库调整(即将弃用)", "Ui.Settings.Patches.SwitchToIDB": "切换到 IDB", "Ui.Settings.Patches.SwitchToIndexedDb": "切换到 IndexedDB", "Ui.Settings.PowerUsers.ConfigurationEncryption": "配置加密", "Ui.Settings.PowerUsers.ConnectionTweak": "CouchDB 连接调整", - "Ui.Settings.PowerUsers.ConnectionTweakDesc": "如果你在使用 IBM Cloudant 时遇到负载大小限制,请将 batch size 和 batch limit 调低。", + "Ui.Settings.PowerUsers.ConnectionTweakDesc": "连接调优描述", "Ui.Settings.PowerUsers.Default": "默认", "Ui.Settings.PowerUsers.Developer": "开发者", "Ui.Settings.PowerUsers.EncryptSensitiveConfig": "加密敏感配置项", - "Ui.Settings.PowerUsers.PromptPassphraseEveryLaunch": "每次启动时询问密码短语", - "Ui.Settings.PowerUsers.UseCustomPassphrase": "使用自定义密码短语", - "Ui.Settings.Remote.Activate": "启用", - "Ui.Settings.Remote.ActiveSuffix": "(当前启用)", - "Ui.Settings.Remote.AddConnection": "新增连接", - "Ui.Settings.Remote.AddRemoteDefaultName": "新远程端", - "Ui.Settings.Remote.ConfigureAndChangeRemote": "配置并切换远程端", + "Ui.Settings.PowerUsers.PromptPassphraseEveryLaunch": "每次启动时询问密码", + "Ui.Settings.PowerUsers.UseCustomPassphrase": "使用自定义密码", + "Ui.Settings.Remote.Activate": "激活", + "Ui.Settings.Remote.ActiveSuffix": "活动后缀", + "Ui.Settings.Remote.AddConnection": "添加连接", + "Ui.Settings.Remote.AddRemoteDefaultName": "添加远程默认名称", + "Ui.Settings.Remote.ConfigureAndChangeRemote": "配置并更改远程", "Ui.Settings.Remote.ConfigureE2EE": "配置端到端加密", "Ui.Settings.Remote.ConfigureRemote": "配置远程端", - "Ui.Settings.Remote.DeleteRemoteConfirm": "确定要删除远程配置“${name}”吗?", - "Ui.Settings.Remote.DeleteRemoteTitle": "删除远程配置", + "Ui.Settings.Remote.DeleteRemoteConfirm": "删除远程配置“${name}”?", + "Ui.Settings.Remote.DeleteRemoteTitle": "删除远程标题", "Ui.Settings.Remote.DisplayName": "显示名称", - "Ui.Settings.Remote.DuplicateRemote": "复制远程配置", - "Ui.Settings.Remote.DuplicateRemoteSuffix": "${name}(副本)", + "Ui.Settings.Remote.DuplicateRemote": "复制远程", + "Ui.Settings.Remote.DuplicateRemoteSuffix": "复制远程后缀", "Ui.Settings.Remote.E2EEConfiguration": "端到端加密配置", "Ui.Settings.Remote.Export": "导出", "Ui.Settings.Remote.FetchRemoteSettings": "获取远程设置", "Ui.Settings.Remote.ImportConnection": "导入连接", - "Ui.Settings.Remote.ImportConnectionPrompt": "粘贴连接字符串", + "Ui.Settings.Remote.ImportConnectionPrompt": "导入连接提示", "Ui.Settings.Remote.ImportedCouchDb": "已导入的 CouchDB", - "Ui.Settings.Remote.ImportedRemote": "远程端", + "Ui.Settings.Remote.ImportedRemote": "已导入的远程", "Ui.Settings.Remote.MoreActions": "更多操作", "Ui.Settings.Remote.PeerToPeerPanel": "点对点同步", - "Ui.Settings.Remote.RemoteConfigurationPrefix": "远程配置", + "Ui.Settings.Remote.RemoteConfigurationPrefix": "远程配置前缀", "Ui.Settings.Remote.RemoteDatabases": "远程数据库", "Ui.Settings.Remote.RemoteName": "远程名称", - "Ui.Settings.Remote.RemoteNameCouchDb": "CouchDB ${host}", - "Ui.Settings.Remote.RemoteNameP2P": "P2P ${room}", - "Ui.Settings.Remote.RemoteNameS3": "S3 ${bucket}", + "Ui.Settings.Remote.RemoteNameCouchDb": "远程名称 CouchDB", + "Ui.Settings.Remote.RemoteNameP2P": "远程名称 P2P", + "Ui.Settings.Remote.RemoteNameS3": "远程名称 S3", "Ui.Settings.Remote.Rename": "重命名", "Ui.Settings.Selector.AddDefaultPatterns": "添加默认模式", "Ui.Settings.Selector.CrossPlatform": "跨平台", @@ -995,83 +1090,231 @@ "Ui.Settings.Selector.SynchronisingFilesDesc": "(RegExp)留空则同步所有文件。可设置正则表达式以限制需要同步的文件。", "Ui.Settings.Selector.TargetPatterns": "目标模式", "Ui.Settings.Selector.TargetPatternsDesc": "用于匹配需要同步文件的模式", - "Ui.Settings.Setup.RerunWizardButton": "重新运行向导", + "Ui.Settings.Setup.RerunWizardButton": "重新运行向导按钮", "Ui.Settings.Setup.RerunWizardDesc": "重新运行引导向导,再次设置 Self-hosted LiveSync。", "Ui.Settings.Setup.RerunWizardName": "重新运行引导向导", "Ui.Settings.SyncSettings.Fetch": "获取", "Ui.Settings.SyncSettings.Merge": "合并", "Ui.Settings.SyncSettings.Overwrite": "覆盖", - "Ui.SetupWizard.Common.Back": "不,带我返回", + "Ui.SetupWizard.Bucket.AccessKeyId": "访问密钥 ID", + "Ui.SetupWizard.Bucket.BucketName": "存储桶名称", + "Ui.SetupWizard.Bucket.EndpointUrl": "端点 URL", + "Ui.SetupWizard.Bucket.FolderPrefix": "文件夹前缀", + "Ui.SetupWizard.Bucket.FolderPrefixDesc": "如果你想把数据存储在存储桶内的特定文件夹,可以在这里指定文件夹前缀。否则留空,数据会存储在存储桶根目录。", + "Ui.SetupWizard.Bucket.InternalApiDesc": "如果无法避免 CORS 问题,可以尝试此选项。它会使用 Obsidian 的内部 API 与 S3 服务器通信。不符合 Web 标准,但可以工作。请注意,未来 Obsidian 版本可能会破坏此方式。", + "Ui.SetupWizard.Bucket.PlaceholderAccessKeyId": "输入访问密钥 ID", + "Ui.SetupWizard.Bucket.PlaceholderBucketName": "输入存储桶名称", + "Ui.SetupWizard.Bucket.PlaceholderFolderPrefix": "输入文件夹前缀(可选)", + "Ui.SetupWizard.Bucket.PlaceholderRegion": "输入区域(例如 us-east-1,R2 可用 auto)", + "Ui.SetupWizard.Bucket.PlaceholderSecretAccessKey": "输入秘密访问密钥", + "Ui.SetupWizard.Bucket.Region": "区域", + "Ui.SetupWizard.Bucket.SecretAccessKey": "秘密访问密钥", + "Ui.SetupWizard.Bucket.Title": "S3/MinIO/R2 配置", + "Ui.SetupWizard.Bucket.UseInternalApi": "使用内部 API", + "Ui.SetupWizard.Bucket.UsePathStyleAccess": "使用路径样式访问", + "Ui.SetupWizard.Common.AdvancedSettings": "高级设置", + "Ui.SetupWizard.Common.Back": "返回", "Ui.SetupWizard.Common.Cancel": "取消", - "Ui.SetupWizard.Common.ProceedSelectOption": "请选择一个选项后继续", - "Ui.SetupWizard.Intro.ExistingOption": "将此设备加入已有同步配置", - "Ui.SetupWizard.Intro.ExistingOptionDesc": "如果你已经在另一台电脑或手机上使用同步,请选择此项。此选项用于将当前设备连接到既有同步配置。", - "Ui.SetupWizard.Intro.Guidance": "接下来我们会通过几个问题,帮助你更轻松地完成同步配置。", - "Ui.SetupWizard.Intro.NewOption": "首次设置同步", - "Ui.SetupWizard.Intro.NewOptionDesc": "如果你正把这台设备作为第一台同步设备进行配置,请选择此项。", - "Ui.SetupWizard.Intro.ProceedExisting": "是的,我要将此设备加入现有同步", - "Ui.SetupWizard.Intro.ProceedNew": "是的,我要开始新的同步配置", - "Ui.SetupWizard.Intro.Question": "首先,请选择最符合你当前情况的选项。", - "Ui.SetupWizard.Intro.Title": "欢迎使用 Self-hosted LiveSync", - "Ui.SetupWizard.OutroAskUserMode.CompatibleOption": "远程端已配置完成,且当前配置兼容(或已通过本次操作变为兼容)。", - "Ui.SetupWizard.OutroAskUserMode.CompatibleOptionDesc": "除非你非常确定,否则选择此项存在风险。它假定服务器配置与当前设备兼容。如果事实并非如此,可能会导致数据丢失。请确认你了解后果。", - "Ui.SetupWizard.OutroAskUserMode.ExistingOption": "远程服务器已经配置完成,我想让此设备加入同步。", - "Ui.SetupWizard.OutroAskUserMode.ExistingOptionDesc": "选择此项后,此设备会加入已有服务器。你需要将服务器上的现有同步数据获取到此设备。", - "Ui.SetupWizard.OutroAskUserMode.Guidance": "服务器连接已成功配置。下一步需要重建本地数据库,也就是同步状态信息。", - "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.OutroNewUser.GuidancePrimary": "服务器连接已成功配置。下一步将根据当前设备上的数据,在服务器端建立同步数据。", - "Ui.SetupWizard.OutroNewUser.GuidanceWarning": "重启后,当前设备上的数据会作为主副本上传到服务器。请注意,服务器上现有的非预期数据将被完全覆盖。", - "Ui.SetupWizard.OutroNewUser.Important": "重要", - "Ui.SetupWizard.OutroNewUser.Proceed": "重启并初始化服务器", - "Ui.SetupWizard.OutroNewUser.Question": "请选择下方按钮,重启并进入最终确认步骤。", - "Ui.SetupWizard.OutroNewUser.Title": "设置完成:准备初始化服务器", - "Ui.SetupWizard.SelectExisting.Guidance": "你正在将此设备加入已有同步配置。", - "Ui.SetupWizard.SelectExisting.ManualOption": "手动输入服务器信息", - "Ui.SetupWizard.SelectExisting.ManualOptionDesc": "手动重新配置与你其他设备相同的服务器信息。此方式仅适用于高级用户。", - "Ui.SetupWizard.SelectExisting.ProceedManual": "我知道服务器信息,让我手动输入", - "Ui.SetupWizard.SelectExisting.ProceedQr": "使用本设备摄像头扫描活动设备上显示的二维码", - "Ui.SetupWizard.SelectExisting.ProceedSetupUri": "使用 Setup URI 继续", - "Ui.SetupWizard.SelectExisting.QrOption": "扫描二维码(移动端推荐)", - "Ui.SetupWizard.SelectExisting.QrOptionDesc": "使用本设备摄像头扫描活动设备上显示的二维码。", - "Ui.SetupWizard.SelectExisting.Question": "请选择一种从其他设备导入设置的方法。", - "Ui.SetupWizard.SelectExisting.SetupUriOption": "使用 Setup URI(推荐)", - "Ui.SetupWizard.SelectExisting.SetupUriOptionDesc": "粘贴从某台已启用设备生成的 Setup URI。", - "Ui.SetupWizard.SelectExisting.Title": "设备设置方式", - "Ui.SetupWizard.SelectNew.Guidance": "接下来将继续配置服务器连接信息。", - "Ui.SetupWizard.SelectNew.ManualOption": "手动输入服务器信息", - "Ui.SetupWizard.SelectNew.ManualOptionDesc": "如果你没有 Setup URI,或希望自行配置更详细的参数,可选择此高级选项。", - "Ui.SetupWizard.SelectNew.ProceedManual": "我知道服务器信息,让我手动输入", - "Ui.SetupWizard.SelectNew.ProceedSetupUri": "使用 Setup URI 继续", - "Ui.SetupWizard.SelectNew.Question": "你希望如何配置服务器连接?", - "Ui.SetupWizard.SelectNew.SetupUriOption": "使用 Setup URI(推荐)", - "Ui.SetupWizard.SelectNew.SetupUriOptionDesc": "Setup URI 是一段包含服务器地址和认证信息的文本。如果你的服务器安装脚本已经生成了它,这是最简单且安全的配置方式。", - "Ui.SetupWizard.SelectNew.Title": "连接方式", - "Ui.SetupWizard.SetupRemote.BucketOption": "S3/MinIO/R2 对象存储", - "Ui.SetupWizard.SetupRemote.BucketOptionDesc": "使用日志文件进行同步。你需要先准备好兼容 S3/MinIO/R2 的对象存储服务。", - "Ui.SetupWizard.SetupRemote.CouchDbOptionDesc": "这是当前设计下最适合的同步方式,所有功能都可用。你需要先准备好 CouchDB 实例。", - "Ui.SetupWizard.SetupRemote.Guidance": "请选择你要连接的服务器类型。", - "Ui.SetupWizard.SetupRemote.P2POption": "仅点对点", - "Ui.SetupWizard.SetupRemote.P2POptionDesc": "启用设备之间的直接同步。无需服务器,但两台设备必须同时在线,且部分功能可能受限。互联网连接仅用于信令,不用于传输数据。", - "Ui.SetupWizard.SetupRemote.ProceedBucket": "继续配置 S3/MinIO/R2", - "Ui.SetupWizard.SetupRemote.ProceedCouchDb": "继续配置 CouchDB", - "Ui.SetupWizard.SetupRemote.ProceedP2P": "继续配置仅点对点模式", - "Ui.SetupWizard.SetupRemote.Title": "输入服务器信息", + "Ui.SetupWizard.Common.CheckingConnection": "正在检查连接,请稍候。", + "Ui.SetupWizard.Common.ContinueAnyway": "仍然继续", + "Ui.SetupWizard.Common.CustomHeaders": "自定义请求头", + "Ui.SetupWizard.Common.ErrorConnectionTest": "连接测试时发生错误:${error}", + "Ui.SetupWizard.Common.ErrorConnectServer": "无法连接到服务器。请检查设置。", + "Ui.SetupWizard.Common.ErrorConnectServerDetail": "无法连接到服务器:${error}", + "Ui.SetupWizard.Common.ErrorCreateReplicator": "无法创建同步实例。", + "Ui.SetupWizard.Common.ExperimentalSettings": "实验性设置", + "Ui.SetupWizard.Common.HttpsOnlyMobile": "在 Obsidian 移动端只能使用安全(HTTPS)连接。", + "Ui.SetupWizard.Common.ProceedSelectOption": "请选择一个选项", + "Ui.SetupWizard.CouchDB.DatabaseName": "数据库名称", + "Ui.SetupWizard.CouchDB.DatabaseNameDesc": "数据库名称不能使用大写字母、空格或特殊字符,也不能以下划线(_)开头。", + "Ui.SetupWizard.CouchDB.InternalApiDesc": "如果无法避免 CORS 问题,可以尝试此选项。它会使用 Obsidian 的内部 API 与 CouchDB 服务器通信。不符合 Web 标准,但可以工作。请注意,未来 Obsidian 版本可能会破坏此方式。", + "Ui.SetupWizard.CouchDB.JwtAlgorithm": "JWT 算法", + "Ui.SetupWizard.CouchDB.JwtExpirationDuration": "JWT 过期时间(分钟)", + "Ui.SetupWizard.CouchDB.JwtKey": "JWT 密钥", + "Ui.SetupWizard.CouchDB.JwtKeyDesc": "HS256/HS512 算法请提供共享密钥。ES256/ES512 算法请提供 pkcs8 PEM 格式私钥。", + "Ui.SetupWizard.CouchDB.JwtKeyId": "JWT Key ID(kid)", + "Ui.SetupWizard.CouchDB.JwtSubject": "JWT Subject(sub)", + "Ui.SetupWizard.CouchDB.JwtWarning": "JWT(JSON Web Token)认证允许你使用令牌安全地连接 CouchDB 服务器。请确保 CouchDB 已配置为接受 JWT,并且提供的密钥和设置与服务器配置匹配。此功能尚未经过非常充分的验证。", + "Ui.SetupWizard.CouchDB.Password": "密码", + "Ui.SetupWizard.CouchDB.PlaceholderDatabaseName": "输入数据库名称", + "Ui.SetupWizard.CouchDB.PlaceholderJwtKey": "输入 JWT 共享密钥或私钥", + "Ui.SetupWizard.CouchDB.PlaceholderJwtKeyId": "输入 JWT Key ID", + "Ui.SetupWizard.CouchDB.PlaceholderJwtSubject": "输入 JWT Subject(CouchDB 用户名)", + "Ui.SetupWizard.CouchDB.PlaceholderPassword": "输入密码", + "Ui.SetupWizard.CouchDB.PlaceholderUsername": "输入用户名", + "Ui.SetupWizard.CouchDB.Title": "CouchDB 配置", + "Ui.SetupWizard.CouchDB.Url": "服务器 URL", + "Ui.SetupWizard.CouchDB.UseInternalApi": "使用内部 API", + "Ui.SetupWizard.CouchDB.UseJwtAuthentication": "使用 JWT 认证", + "Ui.SetupWizard.CouchDB.Username": "用户名", + "Ui.SetupWizard.CouchDBCheck.DetectAndFix": "检测并修复 CouchDB 问题", + "Ui.SetupWizard.CouchDBCheck.Fix": "修复", + "Ui.SetupWizard.E2EE.AlgorithmGuidance": "大多数情况下应使用默认算法(${algorithm})。只有在现有 Vault 使用不同格式加密时才需要更改此设置。", + "Ui.SetupWizard.E2EE.AlgorithmWarning": "更改加密算法会导致无法访问以前用其他算法加密的数据。请确保所有设备都配置为使用相同算法,以保持数据可访问。", + "Ui.SetupWizard.E2EE.EncryptionAlgorithm": "加密算法", + "Ui.SetupWizard.Fetch.BackupDone": "我已创建 Vault 备份。", + "Ui.SetupWizard.Fetch.BackupQuestion": "继续之前是否已创建备份?", + "Ui.SetupWizard.Fetch.BackupRecommendation": "建议您将 Vault 文件夹复制到安全位置。这将作为保障,以防出现大量冲突或意外同步到错误的目标。", + "Ui.SetupWizard.Fetch.BackupSkipped": "我了解风险,将在没有备份的情况下继续。", + "Ui.SetupWizard.Fetch.BackupUnable": "我无法创建 Vault 备份。", + "Ui.SetupWizard.Fetch.BackupUnableNote": "如果您了解风险仍希望继续,请选择此项。", + "Ui.SetupWizard.Fetch.BackupUnableWarning": "强烈建议在继续之前创建备份。不备份继续可能导致数据丢失。", + "Ui.SetupWizard.Fetch.ConflictNote": "此外,如果服务器数据中已存在冲突,它们将原样同步到此设备,您需要在本地解决它们。", + "Ui.SetupWizard.Fetch.Guidance": "这将使用服务器上的最新数据重建此设备上的本地数据库。此操作旨在解决同步不一致并恢复正常功能。", + "Ui.SetupWizard.Fetch.ImportantBody": "如果此设备上的 Vault 中有未同步的更改,重置后它们可能会与服务器版本产生分歧。这可能导致大量文件冲突。", + "Ui.SetupWizard.Fetch.ImportantTitle": "重要提示", + "Ui.SetupWizard.Fetch.PreventFetchConfig": "防止从服务器获取配置", + "Ui.SetupWizard.Fetch.Proceed": "重置并恢复同步", + "Ui.SetupWizard.Fetch.Title": "重置此设备上的同步", + "Ui.SetupWizard.Fetch.UnbalancedNote": "在此场景下,Self-hosted LiveSync 将为每个文件重新创建元数据,并会刻意生成冲突。如果文件内容相同,这些冲突将自动解决。", + "Ui.SetupWizard.Fetch.VaultIdentical": "此 Vault 中的文件与服务器上的文件几乎相同。", + "Ui.SetupWizard.Fetch.VaultIdenticalDesc": "(例如,在另一台电脑上恢复后立即、或从备份恢复后)", + "Ui.SetupWizard.Fetch.VaultIndependent": "此 Vault 为空,或仅包含服务器上没有的新文件。", + "Ui.SetupWizard.Fetch.VaultIndependentDesc": "(例如,首次在新智能手机上设置、从全新状态开始)", + "Ui.SetupWizard.Fetch.VaultQuestion": "为了尽量减少新冲突的创建,请选择最能描述当前 Vault 状态的选项。应用将根据您的选择以最合适的方式检查您的文件。", + "Ui.SetupWizard.Fetch.VaultUnbalanced": "此 Vault 中的文件与服务器之间可能存在差异。", + "Ui.SetupWizard.Fetch.VaultUnbalancedDesc": "(例如,在离线状态下编辑了大量文件后)", + "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.Log.E2EEConfigurationCancelled": "已取消 E2EE 配置。", + "Ui.SetupWizard.Log.ManualConfigurationCancelled": "已取消手动配置。", + "Ui.SetupWizard.Log.NoSettingsChanges": "未检测到设置更改。跳过应用向导中的设置。", + "Ui.SetupWizard.Log.OnboardingCancelled": "用户已取消引导流程。", + "Ui.SetupWizard.Log.QrCodeDialogClosed": "二维码对话框已关闭。", + "Ui.SetupWizard.Log.QrCodeResult": "二维码结果:${result}", + "Ui.SetupWizard.Log.SettingApplied": "设置已应用", + "Ui.SetupWizard.Log.SettingsApplied": "向导中的设置已应用。", + "Ui.SetupWizard.Log.SetupUriDialogCancelled": "已取消设置 URI 对话框。", + "Ui.SetupWizard.Log.SetupUriDialogClosed": "设置 URI 对话框已关闭。", + "Ui.SetupWizard.Log.UserCancelledApplyingSettings": "用户已取消应用向导中的设置。", + "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.P2P.AutoBroadcast": "自动广播更改", + "Ui.SetupWizard.P2P.AutoBroadcastDesc": "启用自动广播更改后,更改会自动广播给已连接的对等设备,无需手动操作。这会请求对等设备获取此设备的更改。", + "Ui.SetupWizard.P2P.AutoStart": "自动启动 P2P 连接", + "Ui.SetupWizard.P2P.AutoStartDesc": "启用自动启动 P2P 连接后,插件启动时会自动开始 P2P 连接。", + "Ui.SetupWizard.P2P.DevicePeerId": "设备对等 ID", + "Ui.SetupWizard.P2P.Enabled": "已启用", + "Ui.SetupWizard.P2P.ErrorConnectPeers": "无法连接到其他对等设备:${error}", + "Ui.SetupWizard.P2P.GenerateRandomId": "生成随机 ID", + "Ui.SetupWizard.P2P.GroupId": "组 ID", + "Ui.SetupWizard.P2P.GroupPassphraseDesc": "组 ID 和密码短语用于识别你的设备组。请确保所有要同步的设备使用相同的组 ID 和密码短语。组 ID 不限于生成格式,你可以使用任意字符串作为组 ID。", + "Ui.SetupWizard.P2P.NoPeersFound": "你的设置看起来正确,但没有找到其他对等设备。", + "Ui.SetupWizard.P2P.PlaceholderRelayUrl": "输入中继 URL", + "Ui.SetupWizard.P2P.PlaceholderTurnCredential": "输入 TURN 凭据", + "Ui.SetupWizard.P2P.PlaceholderTurnUsername": "输入 TURN 用户名", + "Ui.SetupWizard.P2P.PublicTurnWarning": "使用公共 TURN 服务器可能带来隐私影响,因为你的数据会通过第三方服务器中继。即使数据已加密,对方仍可能知道你的存在。使用前请确保你信任 TURN 服务器提供者和网络管理员。如果可行,请考虑为自己的 FQDN 设置 TURN 服务器。", + "Ui.SetupWizard.P2P.RelayUrl": "中继 URL", + "Ui.SetupWizard.P2P.Title": "P2P 配置", + "Ui.SetupWizard.P2P.TurnCredential": "TURN 凭据", + "Ui.SetupWizard.P2P.TurnServerDesc": "只有在严格 NAT 或防火墙阻止直接 P2P 连接时,才需要 TURN 服务器设置。大多数情况下可以留空。", + "Ui.SetupWizard.P2P.TurnServerUrls": "TURN 服务器 URL(逗号分隔)", + "Ui.SetupWizard.P2P.TurnUsername": "TURN 用户名", + "Ui.SetupWizard.P2P.UseDefaultRelay": "使用 vrtmrz 的中继服务器", + "Ui.SetupWizard.Rebuild.BackupBeforeProceeding": "当然,我们可以在继续之前备份数据。", + "Ui.SetupWizard.Rebuild.BackupDone": "我已创建 Vault 备份。", + "Ui.SetupWizard.Rebuild.BackupQuestion": "继续之前是否已创建备份?", + "Ui.SetupWizard.Rebuild.BackupSkipped": "我了解风险,将在没有备份的情况下继续。", + "Ui.SetupWizard.Rebuild.BackupUnable": "我无法创建 Vault 备份。", + "Ui.SetupWizard.Rebuild.BackupUnableAdvice": "您应该创建一个新的同步目标并在那里重建数据。之后,逐一将每台设备同步到使用新远程的新 Vault。", + "Ui.SetupWizard.Rebuild.BackupWarning": "这是一个极其强大的操作。强烈建议您将 Vault 文件夹复制到安全位置。", + "Ui.SetupWizard.Rebuild.ConfirmDataLoss": "我理解其他手机或电脑上所做的所有更改可能会丢失。", + "Ui.SetupWizard.Rebuild.ConfirmIrreversible": "我理解此操作一旦执行不可逆转。", + "Ui.SetupWizard.Rebuild.ConfirmSyncDisabled": "我理解其他设备将无法再同步,需要重置同步信息。", + "Ui.SetupWizard.Rebuild.ConfirmTitle": "请确认以下事项", + "Ui.SetupWizard.Rebuild.Guidance": "此过程将首先删除服务器上的所有现有同步数据。随后,将使用此设备上当前 Vault 的状态作为唯一权威主副本,完全重建服务器数据。", + "Ui.SetupWizard.Rebuild.PreventFetchConfig": "防止从服务器获取配置", + "Ui.SetupWizard.Rebuild.Proceed": "我理解,覆盖服务器", + "Ui.SetupWizard.Rebuild.ResetNotifyOtherDevices": "重置远程后,其他设备将收到通知。", + "Ui.SetupWizard.Rebuild.ResolveOnOtherDevices": "有一种方法可以在其他设备上解决此问题。", + "Ui.SetupWizard.Rebuild.Title": "最终确认:用此设备的文件覆盖服务器数据", + "Ui.SetupWizard.Rebuild.WhenToUse": "仅在特殊情况下才应执行此操作,例如服务器数据完全损坏、其他所有设备上的更改不再需要、或数据库大小与 Vault 大小相比异常庞大时。", + "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": "设置远程服务器", + "Ui.UseSetupURI.ButtonCancel": "取消", + "Ui.UseSetupURI.ButtonProceed": "测试设置并继续", + "Ui.UseSetupURI.ErrorFailedToParse": "解析设置 URI 失败。", + "Ui.UseSetupURI.ErrorPassphraseRequired": "密码为必填项。", + "Ui.UseSetupURI.Guidance": "请输入在服务器安装期间或在其他设备上生成的设置 URI,以及 Vault 密码。", + "Ui.UseSetupURI.InvalidInfo": "设置 URI 似乎无效。请检查是否正确复制。", + "Ui.UseSetupURI.Label": "设置 URI", + "Ui.UseSetupURI.LabelPassphrase": "密码", + "Ui.UseSetupURI.PlaceholderPassphrase": "请输入您的密码", + "Ui.UseSetupURI.Title": "输入设置 URI", + "Ui.UseSetupURI.ValidMessage": "设置 URI 有效,可以使用。", "Unique name between all synchronized devices. To edit this setting, please disable customization sync once.": "所有同步设备之间的唯一名称。要编辑此设置,请首先禁用自定义同步", "Use a custom passphrase": "使用自定义密码短语", "Use a Setup URI (Recommended)": "使用 Setup URI(推荐)", "Use Custom HTTP Handler": "使用自定义 HTTP 处理程序", "Use dynamic iteration count": "使用动态迭代次数", + "Use Only Local Chunks": "仅使用本地块", + "Use Request API to avoid `inevitable` CORS problem": "使用 Request API 避免“不可避免”的 CORS 问题", "Use Segmented-splitter": "使用分段分割器", "Use splitting-limit-capped chunk splitter": "使用分割限制上限的块分割器", "Use the trash bin": "使用回收站", "Use timeouts instead of heartbeats": "使用超时而不是心跳", "username": "用户名", "Username": "用户名", + "V1: Legacy": "V1:旧版", + "V2: Simple (Default)": "V2:简单(默认)", + "V2.5: Lexical chunks": "V2.5:词法块", + "V3: Fine deduplication": "V3:精细去重", "Verbose Log": "详细日志", "Verify all": "全部校验", "Verify and repair all files": "校验并修复所有文件", @@ -1081,11 +1324,14 @@ "We will now proceed with the server configuration.": "接下来将继续进行服务器配置。", "Welcome to Self-hosted LiveSync": "欢迎使用 Self-hosted LiveSync", "When you save a file in the editor, start a sync automatically": "当您在编辑器中保存文件时,自动开始同步", + "While enabled, it causes very performance impact but debugging replication testing and other features will be enabled. Please disable this if you have not read the source code. Requires restart of Obsidian.": "启用后会对性能造成很大影响,但会启用调试、复制测试和其他功能。如果你没有阅读源码,请关闭此项。需要重启 Obsidian。", "Write credentials in the file": "将凭据写入文件", "Write logs into the file": "将日志写入文件", "xxhash32 (Fast but less collision resistance)": "xxhash32(速度快,但抗碰撞能力较弱)", "xxhash64 (Fastest)": "xxhash64(最快)", + "xxhash64 is the current default.": "当前默认值为 xxhash64。", "Yes, I want to add this device to my existing synchronisation": "是的,我要把这台设备加入现有同步", "Yes, I want to set up a new synchronisation": "是的,我要配置新的同步", - "You are adding this device to an existing synchronisation setup.": "你正在将此设备加入到现有同步配置中。" + "You are adding this device to an existing synchronisation setup.": "你正在将此设备加入到现有同步配置中。", + "You can enable this setting to process the files with size mismatches, these files can be created by some APIs or integrations.": "可启用此设置来处理大小不匹配的文件;这些文件可能由某些 API 或集成创建。" } diff --git a/src/common/messagesYAML/de.yaml b/src/common/messagesYAML/de.yaml index 5472df4b..56882de2 100644 --- a/src/common/messagesYAML/de.yaml +++ b/src/common/messagesYAML/de.yaml @@ -1,4 +1,20 @@ (Active): (Aktiv) +(BETA) Always overwrite with a newer file: (BETA) Immer überschreiben mit einer neueren Datei +(Beta) Use ignore files: (Beta) Verwenden Sie ignorierende Dateien +(Days passed, 0 to disable automatic-deletion): (Days übergeben, 0 zum Deaktivieren von Automatik-Auslöschung) +(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.: + (z.B. Stücke online lesen) Wenn diese Option aktiviert ist, liest LiveSync + online Brocken statt sie lokal zu replizieren. Es wird empfohlen, die + kundenspezifische Größe zu erhöhen. +(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) Wenn dies eingestellt ist, werden Änderungen an lokalen und + Remote-Dateien, die größer als dies sind, übersprungen. Wenn die Datei wieder + kleiner wird, wird eine neuere verwendet. +(Mega chars): (Mega Chars) +(Not recommended) If set, credentials will be stored in the file.: + (Nicht empfohlen) Wenn gesetzt, werden Anmeldeinformationen in der Datei + gespeichert. +(Obsolete) Use an old adapter for compatibility: (Obsolete) Verwenden Sie einen alten Adapter für Kompatibilität (RegExp) Empty to sync all files. Set filter as a regular expression to limit synchronising files.: (RegExp) Leer lassen, um alle Dateien zu synchronisieren. Legen Sie einen Filter als regulären Ausdruck fest, um die zu synchronisierenden Dateien @@ -6,18 +22,73 @@ (RegExp) If this is set, any changes to local and remote files that match this will be skipped.: (RegExp) Wenn dies gesetzt ist, werden alle Änderungen an lokalen und Remote-Dateien übersprungen, die diesem Muster entsprechen. +(Select this if you are already using synchronisation on another computer or smartphone.) This option is suitable if you are new to LiveSync and want to set it up from scratch.: + (Wählen Sie dies, wenn Sie die Synchronisation bereits auf einem anderen + Computer oder Smartphone verwenden.) Diese Option ist geeignet, wenn Sie + dieses Gerät zu einer bestehenden LiveSync-Einrichtung hinzufügen möchten. +(Select this if you are configuring this device as the first synchronisation device.) This option is suitable if you are new to LiveSync and want to set it up from scratch.: + (Wählen Sie dies, wenn Sie dieses Gerät als erstes Synchronisationsgerät + einrichten.) Diese Option ist geeignet, wenn Sie LiveSync neu verwenden und + von Grund auf einrichten möchten. +"> [!INFO]- The connected devices have been detected as follows:\n${devices}": |- + > [!INFO]- Die folgenden verbundenen Geräte wurden erkannt: + ${devices} +A Setup URI is a single string of text containing your server address and authentication details. Using a URI, if one was generated by your server installation script, provides a simple and secure configuration.: + Eine Setup-URI ist eine einzelne Zeichenfolge, die Ihre Serveradresse und + Authentifizierungsdaten enthält. Wenn Ihre Serverinstallation eine URI erzeugt + hat, bietet deren Verwendung eine einfache und sichere Konfiguration。 +Access Key: Zugang zum Schlüssel Activate: Aktivieren +Active Remote Configuration: Active Remote Konfiguration +Active Remote Type: Aktiver entfernter Typ Add default patterns: Standardmuster hinzufügen Add new connection: Neue Verbindung hinzufügen +Advanced: Erweitert +All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.: + Alle Geräte haben denselben Fortschrittswert (${progress}). Ihre Geräte + scheinen synchronisiert zu sein. Die Garbage Collection kann fortgesetzt + werden. +Always prompt merge conflicts: Immer schnelle Zusammenführung von Konflikten +Analyse: Analysieren +Analyse database usage: Nutzung der Datenbank +Analyse database usage and generate a TSV report for diagnosis yourself. You can paste the generated report with any spreadsheet you like.: + Analyse der Datenbanknutzung und Erstellung eines TSV-Berichts zur Diagnose + selbst. Sie können den generierten Bericht mit jedem Tabellenblatt einfügen, + das Sie möchten. +Apply Latest Change if Conflicting: Neueste Änderung anwenden, wenn Konflikte +Apply preset configuration: Voreingestellte Konfiguration anwenden +Automatically broadcast changes to connected peers: Änderungen automatisch an verbundene Peers senden +Automatically start P2P connection on launch: P2P-Verbindung beim Start automatisch starten +Automatically Sync all files when opening Obsidian.: Synchronisieren Sie automatisch alle Dateien, wenn Sie Obsidian öffnen. Back: Zurück Back to non-configured: Zurück auf nicht konfiguriert +Batch database update: Update der Batch-Datenbank +Batch limit: Batch-Grenz +Batch size: Stapelgröße +Batch size of on-demand fetching: Batch Größe des On-Demand-Fetchings +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.: + Vor v0.17.16 haben wir einen alten Adapter für die lokale Datenbank verwendet. + Nun wird der neue Adapter bevorzugt. Es braucht jedoch lokale Datenbank-Umbau. + Bitte deaktivieren Sie diese Taste, wenn Sie genug Zeit haben. Wenn Sie es + aktiviert lassen, auch beim Abrufen aus der Remote-Datenbank, werden Sie + aufgefordert, diese zu deaktivieren. +Bucket Name: Name des Buckers Cancel: Abbrechen +Cancel Garbage Collection: Garbage Collection abbrechen +Check: Überprüfung Check and convert non-path-obfuscated files: Nicht pfadverschleierte Dateien prüfen und konvertieren Check for documents that have not been converted to path-obfuscated IDs and convert them if necessary.: Prüft Dokumente, die noch nicht in pfadverschleierte IDs umgewandelt wurden, und konvertiert sie bei Bedarf. +Chunk Splitter: Chunk-Splitter cmdConfigSync: - showCustomizationSync: Anpassungssynchronisation anzeigen + showCustomizationSync: Anpassungssynchronisierung anzeigen +Comma separated `.gitignore, .dockerignore`: Comma trennte `.gitignore, .dockerignore` +Compaction in progress on remote database...: Komprimierung auf der Remote-Datenbank läuft... +Compaction on remote database completed successfully.: Die Komprimierung auf der Remote-Datenbank wurde erfolgreich abgeschlossen. +Compaction on remote database failed.: Die Komprimierung auf der Remote-Datenbank ist fehlgeschlagen. +Compaction on remote database timed out.: Die Komprimierung auf der + Remote-Datenbank hat eine Zeitüberschreitung erreicht. Compare the content of files between on local database and storage. If not matched, you will be asked which one you want to keep.: Vergleicht den Inhalt der Dateien zwischen lokaler Datenbank und Speicher. Bei Abweichungen werden Sie gefragt, welche Version behalten werden soll. @@ -27,117 +98,975 @@ Compatibility (Internal API Usage): Kompatibilität (interne API-Nutzung) Compatibility (Metadata): Kompatibilität (Metadaten) Compatibility (Remote Database): Kompatibilität (Remote-Datenbank) Compatibility (Trouble addressed): Kompatibilität (Problembehebung) +Compute revisions for chunks: Revisionen für Stücke berechnen Configure: Konfigurieren Configure And Change Remote: Remote konfigurieren und wechseln Configure E2EE: E2EE konfigurieren Configure Remote: Remote konfigurieren +Configure the same server information as your other devices again, manually, very advanced users only.: + Geben Sie dieselben Serverinformationen wie auf Ihren anderen Geräten erneut + manuell ein. Nur für sehr erfahrene Benutzer。 +Connection Method: Verbindungsmethode +Continue to CouchDB setup: Weiter zur CouchDB-Einrichtung +Continue to Peer-to-Peer only setup: Weiter zur reinen Peer-to-Peer-Einrichtung +Continue to S3/MinIO/R2 setup: Weiter zur S3/MinIO/R2-Einrichtung Copy: Kopieren +Copy Report to clipboard: Bericht an die Zwischenablage kopieren Cross-platform: Plattformübergreifend "Current adapter: {adapter}": "Aktueller Adapter: {adapter}" -Customization Sync (Beta3): Anpassungssynchronisation (Beta3) +Customization sync: Anpassungssynchronisierung +Customization Sync (Beta3): Anpassung Sync (Beta3) +Data Compression: Datenkompression Database Adapter: Datenbankadapter +Database Name: Datenbankname +Database suffix: Datenbank suffix Default: Standard +Delay conflict resolution of inactive files: Konfliktauflösung inaktiver Dateien verschieben +Delay merge conflict prompt for inactive files.: Verzögern Sie die Zusammenführung von Konflikten für inaktive Dateien. Delete: Löschen Delete all customization sync data: Alle Anpassungssynchronisationsdaten löschen Delete all data on the remote server.: Alle Daten auf dem Remote-Server löschen. Delete local database to reset or uninstall Self-hosted LiveSync: Lokale Datenbank löschen, um Self-hosted LiveSync zurückzusetzen oder zu deinstallieren +Delete old metadata of deleted files on start-up: Löschen Sie alte Metadaten gelöschter Dateien beim Start-up Delete Remote Configuration: Remote-Konfiguration löschen Delete remote configuration '{name}'?: Remote-Konfiguration „{name}“ löschen? desktop: Desktop -Device name: Gerätename +Device: Gerät +Device name: Bezeichnung des Geräts +Device Setup Method: Einrichtungsmethode für das Gerät +dialog: + yourLanguageAvailable: + _value: >- + Self-hosted LiveSync verfügt über Übersetzungen für deine Sprache, daher + wurde die Einstellung %{Display language} aktiviert. + + + Hinweis: Noch sind nicht alle Meldungen übersetzt. Beiträge sind + willkommen! + + Hinweis 2: Wenn du ein Issue erstellst, **wechsle bitte zuerst zurück zu + %{lang-def}** und erstelle danach Screenshots, Meldungen und Logs. Das + kannst du im Einstellungsdialog erledigen. + + Wir hoffen, dass die Nutzung angenehm ist! + btnRevertToDefault: "%{lang-def} beibehalten" + Title: " Übersetzung ist verfügbar!" Disables all synchronization and restart.: Deaktiviert die gesamte Synchronisation und startet neu. +Disables logging, only shows notifications. Please disable if you report an issue.: + Deaktiviert Protokollierung, zeigt nur Benachrichtigungen. Bitte deaktivieren + Sie, wenn Sie ein Problem melden. +Display Language: Sprache anzeigen Display name: Anzeigename +Do not check configuration mismatch before replication: Überprüfen Sie die Konfigurationsfehlanpassung vor der Replikation +Do not keep metadata of deleted files.: Halten Sie keine Metadaten von gelöschten Dateien. +Do not split chunks in the background: Nicht teilen Stücke im Hintergrund +Do not use internal API: Verwenden Sie nicht interne API +Doctor: + Button: + DismissThisVersion: Nein, und fragen Sie nicht wieder bis zum nächsten Release + Fix: Beheben Sie es + FixButNoRebuild: Reparieren Sie es, aber kein Rebuild + No: Nein + Skip: Lassen Sie es wie + Yes: Ja + Dialogue: + Main: >- + Hi! Config Doctor wurde wegen ${activateReason} aktiviert! + + Und leider wurden einige Konfigurationen als mögliche Probleme erkannt. + + Bitte seien Sie versichert. Wir lösen sie einzeln. + + + Um Sie vor der Zeit wissen zu lassen, werden wir Sie über die folgenden + Artikel fragen. + + + ${issues} + + + Sollen wir anfangen? + MainFix: |- + + ## ${name} + + | Aktuell | Ideal | + |:---:|:---:| + | ${current} | ${ideal} | + + **Empfehlungsstufe:** ${level} + + ### Warum wurde dies erkannt? + + ${reason} + + ${note} + + Auf den idealen Wert korrigieren? + Title: Selbstgehostete LiveSync Config Doctor + TitleAlmostDone: Fast fertig! + TitleFix: Problem behoben ${current}/${total} + Level: + Must: müssen. + Necessary: Notwendig + Optional: Optional + Recommended: Empfohlen + Message: + NoIssues: Keine Probleme erkannt! + RebuildLocalRequired: Achtung! Eine lokale Datenbank-Wiederaufbau ist + erforderlich, um dies anzuwenden! + RebuildRequired: Achtung! Um dies anzuwenden, ist ein Umbau erforderlich! + SomeSkipped: Wir haben einige Probleme hinterlassen. Soll ich dich beim nächsten + Start wieder fragen? + RULES: + E2EE_V02500: + REASON: Die End-to-End-Verschlüsselung ist jetzt robuster und schneller. Auch + weil sich die bisherige E2EE in einer erneut umgesetzten Code-Review als + kompromittiert erwiesen hat. Es sollte so schnell wie möglich angewendet + werden. Entschuldigt euch wirklich für eure Unannehmlichkeiten. Und + diese Einstellung ist nicht nach vorne kompatibel. Alle synchronisierten + Geräte müssen auf v0.25.0 oder höher aktualisiert werden. Rebuilds sind + nicht erforderlich und wird von der neuen Übertragung in das neue Format + umgewandelt werden, Es wird jedoch empfohlen, wieder aufzubauen, wann + immer möglich. +Document History: Geschichte des Dokuments Duplicate: Duplizieren Duplicate remote: Remote duplizieren E2EE Configuration: E2EE-Konfiguration Edge case addressing (Behaviour): Behandlung von Randfällen (Verhalten) Edge case addressing (Database): Behandlung von Randfällen (Datenbank) Edge case addressing (Processing): Behandlung von Randfällen (Verarbeitung) +Effectively a directory. Should end with `/`. e.g., `vault-name/`.: Entspricht einem Verzeichnis. Sollte mit `/` enden, z. B. `vault-name/`. Emergency restart: Notfallneustart -Encrypting sensitive configuration items: Sensible Konfigurationseinträge verschlüsseln +Enable advanced features: Ermöglichen Sie erweiterte Funktionen +Enable advanced mode: Erweiterten Modus aktivieren +Enable customization sync: Anpassungssynchronisation aktivieren +Enable Developers' Debug Tools.: Aktiviere Debug Tools von Entwicklern. +Enable edge case treatment features: Ermöglichen Sie Kantengehäusebehandlungsmerkmale +Enable forcePathStyle: forcePathStyle aktivieren +Enable P2P Synchronization: P2P-Synchronisierung aktivieren +Enable per-file customization sync: Anpassungssynchronisierung pro Datei aktivieren +Enable power user mode: Power-User-Modus aktivieren +Enable poweruser features: Enable poweruser Features +Enable this if your Object Storage doesn't support CORS: Aktivieren Sie dies, wenn Ihr Objektspeicher CORS nicht unterstützt +Enable this option to automatically apply the most recent change to documents even when it conflicts: + Ermöglichen Sie diese Option, selbst bei Konflikten automatisch die jüngste + Änderung der Dokumente anzuwenden +Encrypt contents on the remote database. If you use the plugin's synchronization feature, enabling this is recommended.: + Verschlüsseln Sie Inhalte auf der Remote-Datenbank. Wenn Sie die + Synchronisationsfunktion des Plugins verwenden, wird dies empfohlen. +Encrypting sensitive configuration items: Verschlüsselung sensibler Konfigurationselemente +Encryption passphrase. If changed, you should overwrite the server's database with the new (encrypted) files.: + Verschlüsselungs-Passphrase. Wenn sie geändert wird, solltest du die + Serverdatenbank mit den neuen verschlüsselten Dateien überschreiben. +Encryption phassphrase. If changed, you should overwrite the server's database with the new (encrypted) files.: + Verschlüsselung phassphrase. Wenn Sie sich geändert haben, sollten Sie die + Datenbank des Servers mit den neuen (verschlüsselten) Dateien überschreiben. +End-to-End Encryption: End-to-End-Verschlüsselung +Endpoint URL: Endpunkt-URL +Enhance chunk size: Verbessern Sie die Stückgröße +Enter Server Information: Serverinformationen eingeben +Enter the server information manually: Serverinformationen manuell eingeben Export: Exportieren +Failed to connect to remote for compaction.: Verbindung zur Remote-Datenbank für die Komprimierung fehlgeschlagen. +Failed to connect to remote for compaction. ${reason}: Verbindung zur Remote-Datenbank für die Komprimierung fehlgeschlagen. ${reason} +Failed to start one-shot replication before Garbage Collection. Garbage Collection Cancelled.: + Die Einmal-Replikation vor der Garbage Collection konnte nicht gestartet + werden. Die Garbage Collection wurde abgebrochen. +Failed to start replication after Garbage Collection.: Die Replikation nach der Garbage Collection konnte nicht gestartet werden. +Fetch chunks on demand: Fetch-Kissen auf Anfrage +Fetch database with previous behaviour: Fetch-Datenbank mit vorherigem Verhalten Fetch remote settings: Remote-Einstellungen abrufen +File prefix on the bucket: Dateipräfix im Bucket File to resolve conflict: Datei zur Konfliktlösung +Filename: Dateiname +Files with modification times greater than this value (in seconds since the Unix epoch) will not have their events reflected. Set to 0 to disable this limit.: + Dateien mit Änderungszeiten größer als dieser Wert (Sekunden seit Unix-Epoch) + werden nicht reflektiert. Setze 0, um diese Begrenzung zu deaktivieren. +First, please select the option that best describes your current situation.: + Wählen Sie bitte zuerst die Option aus, die Ihre aktuelle Situation am besten + beschreibt. Flag and restart: Markieren und neu starten +Forces the file to be synced when opened.: Erzwingt die zu synchronisierende Datei beim Öffnen. Fresh Start Wipe: Für Neustart vollständig bereinigen +Garbage Collection cancelled by user.: Garbage Collection wurde vom Benutzer abgebrochen. +"Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.": + "Garbage Collection abgeschlossen. Gelöschte Chunks: ${deletedChunks} / + ${totalChunks}. Benötigte Zeit: ${seconds} Sekunden." +Garbage Collection Confirmation: Bestätigung der Garbage Collection Garbage Collection V3 (Beta): Datenbereinigung V3 (Beta) +"Garbage Collection: Found ${unusedChunks} unused chunks to delete.": "Garbage Collection: ${unusedChunks} ungenutzte Chunks zum Löschen gefunden." +"Garbage Collection: Scanned ${scanned} / ~${docCount}": "Garbage Collection: ${scanned} / ~${docCount} gescannt" +"Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": + "Garbage Collection: Scan abgeschlossen. Gesamtzahl der Chunks: + ${totalChunks}, verwendete Chunks: ${usedChunks}" +Handle files as Case-Sensitive: Handle Dateien als Case-Sensitive +Hatch: Werkzeuge Hidden Files: Versteckte Dateien -Hide completely: Vollständig ausblenden +Hide completely: Verstecken vollständig +Highlight diff: Unterschiede hervorheben How to display network errors when the sync server is unreachable.: Legt fest, wie Netzwerkfehler angezeigt werden, wenn der - Synchronisationsserver nicht erreichbar ist. + Synchronisierungsserver nicht erreichbar ist. +How would you like to configure the connection to your server?: Wie möchten Sie die Verbindung zu Ihrem Server konfigurieren? +I am adding a device to an existing synchronisation setup: Ich füge ein Gerät zu einer bestehenden Synchronisationseinrichtung hinzu +I am setting this up for the first time: Ich richte dies zum ersten Mal ein +I know my server details, let me enter them: Ich kenne meine Serverdaten, ich gebe sie selbst ein +If disabled(toggled), chunks will be split on the UI thread (Previous behaviour).: + Wenn deaktiviert (geknallt), werden Stücke auf dem UI-Gewinde aufgeteilt + (Vorheriges Verhalten). +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.: + Wenn per-filed effiziente Anpassungssynchronisation verwendet wird. Wir + brauchen eine kleine Migration, wenn wir dies ermöglichen. Und alle Geräte + sollten auf v0.23.18 aktualisiert werden. Sobald wir dies aktiviert haben, + haben wir eine Kompatibilität mit alten Versionen verloren. +If enabled, changes will be automatically broadcasted to all connected peers. Notified peers will start fetching the changes.: + Wenn aktiviert, werden Änderungen automatisch an alle verbundenen Peers + gesendet. Benachrichtigte Peers beginnen dann mit dem Abrufen der Änderungen. +If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker.: + Wenn aktiviert, werden Stücke in höchstens 100 Stück aufgeteilt. Dedupe ist + jedoch etwas schwächer. +If enabled, efficient per-file customization sync will be used. A minor migration is required when enabling this feature, and all devices must be updated to v0.23.18. Enabling this feature will result in losing compatibility with older versions.: + Wenn aktiviert, wird eine effiziente Anpassungssynchronisierung pro Datei + verwendet. Beim Aktivieren ist eine kleine Migration erforderlich und alle + Geräte müssen auf v0.23.18 aktualisiert sein. Danach geht die Kompatibilität + mit älteren Versionen verloren. +If enabled, newly created chunks are temporarily kept within the document, and graduated to become independent chunks once stabilised.: + Wenn aktiviert, werden neu geschaffene Stücke vorübergehend innerhalb des + Dokuments gehalten, und Absolventen, um unabhängige Stücke zu werden, sobald + stabilisiert. If enabled, the ⛔ icon will be shown inside the status instead of the file warnings banner. No details will be shown.: - Wenn aktiviert, wird das Symbol ⛔ im Status statt im Dateiwarnungsbanner - angezeigt. Es werden keine Details angezeigt. + Wenn aktiviert, wird das ⛔-Symbol innerhalb des Status angezeigt, anstatt der + Datei warnt Banner. Es werden keine Details angezeigt. +If enabled, the file under 1kb will be processed in the UI thread.: Wenn aktiviert, wird die Datei unter 1kb im UI-Gewinde verarbeitet. +If enabled, the forcePathStyle option will be used for bucket operations.: Wenn aktiviert, wird forcePathStyle für Bucket-Operationen verwendet. +If enabled, the notification of hidden files change will be suppressed.: + Wenn aktiviert, wird die Benachrichtigung über versteckte Dateien ändern + unterdrückt. +If enabled, the P2P connection will be automatically started when the application launches.: + Wenn aktiviert, wird die P2P-Verbindung beim Start der Anwendung automatisch + gestartet. +If enabled, the plugin will not attempt to connect to the remote database even if the chunk was not found locally.: + Wenn aktiviert, versucht das Plugin nicht, eine Verbindung zur + Remote-Datenbank herzustellen, auch wenn der Chunk lokal nicht gefunden wurde. +If enabled, the request API will be used to avoid `inevitable` CORS problems. This is a workaround and may not work in all cases. PLEASE READ THE DOCUMENTATION BEFORE USING THIS OPTION. This is a less-secure option.: + Wenn aktiviert, wird die request API verwendet, um unvermeidliche + CORS-Probleme zu umgehen. Dies ist ein Workaround und funktioniert + möglicherweise nicht immer. BITTE LIES DIE DOKUMENTATION, BEVOR DU DIESE + OPTION VERWENDEST. Diese Option ist weniger sicher. +If this enabled, all chunks will be stored with the revision made from its content.: + Wenn aktiviert, werden alle Chunks mit einer aus ihrem Inhalt erzeugten + Revision gespeichert. +If this enabled, all chunks will be stored with the revision made from its content. (Previous behaviour): + Wenn dies aktiviert ist, werden alle Stücke mit der Überarbeitung aus ihrem + Inhalt gespeichert. (Vorheriges Verhalten) +If this enabled, All files are handled as case-Sensitive (Previous behaviour).: + Wenn dies aktiviert ist, werden alle Dateien als case-Sensitive (Previous + Verhalten) behandelt. +If this enabled, chunks will be split into semantically meaningful segments. Not all platforms support this feature.: + Wenn dies aktiviert ist, werden Stücke in semantisch aussagekräftige Segmente + aufgeteilt. Nicht alle Plattformen unterstützen diese Funktion. +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.: + Wenn dies eingestellt ist, werden Änderungen an lokalen Dateien, die von den + ignorierten Dateien angepasst werden, übersprungen. Remote-Änderungen werden + mit lokalen ignorierten Dateien ermittelt. +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.: + Wenn diese Option aktiviert ist, hält PouchDB die Verbindung für 60 Sekunden + offen, und wenn keine Änderung in dieser Zeit ankommt, schließt und öffnet die + Steckdose, anstatt sie unbestimmt offen zu halten. Nützlich, wenn ein Proxy + die Anforderungsdauer begrenzt, aber die Ressourcennutzung erhöhen kann. +Ignore and Proceed: Ignorieren und fortfahren +Ignore files: Dateien ignorieren Ignore patterns: Ausschlussmuster Import connection: Verbindung importieren +Incubate Chunks in Document: Inkubieren von Chunks in Dokument Initialise all journal history, On the next sync, every item will be received and sent.: Gesamte Journal-Historie initialisieren. Beim nächsten Sync werden alle Elemente empfangen und gesendet. +Interval (sec): Intervall (Sek.) +K: + exp: Experimentelle + long_p2p_sync: "%{title_p2p_sync}" + P2P: "%{Peer}-zu-%{Peer}" + Peer: Pestizid + ScanCustomization: Scannen Anpassung + short_p2p_sync: P2P Synthesizer + title_p2p_sync: Peer-to-Peer-Synchronisierung +Keep empty folder: leeren Ordner +lang_def: Fehler +lang-de: Deutsch +lang-def: "%{lang_def}" +lang-es: Español +lang-ja: 日本語 +lang-ko: 한국어 +lang-ru: Русский +lang-zh: 简体中文 +lang-zh-tw: 繁體中文 Later: Später "Limit: {datetime} ({timestamp})": "Grenze: {datetime} ({timestamp})" +LiveSync could not handle multiple vaults which have same name without different prefix, This should be automatically configured.: + LiveSync konnte nicht mehrere Gewölbe behandeln, die denselben Namen ohne + verschiedene Präfix haben, Dies sollte automatisch konfiguriert werden. +liveSyncReplicator: + beforeLiveSync: Vor LiveSync, starten Sie OneShot einmal... + cantReplicateLowerValue: Wir können den niedrigeren Wert nicht replizieren. + checkingLastSyncPoint: Auf der Suche nach dem Punkt letzten synchronisierten Punkt. + couldNotConnectTo: |- + Konnte nicht mit ${uri} verbinden: ${name} + (${db} + couldNotConnectToRemoteDb: "Konnte nicht mit Remote-Datenbank verbinden: ${d}" + couldNotConnectToServer: Konnte sich nicht mit dem Server verbinden. + couldNotConnectToURI: Konnte nicht mit ${uri} verbinden:${dbRet} + couldNotMarkResolveRemoteDb: Kann nicht markieren Remote-Datenbank zu lösen. + liveSyncBegin: LiveSync beginnt... + lockRemoteDb: Sperren Sie Remote-Datenbank, um Daten Korruption zu verhindern + markDeviceResolved: Markieren Sie dieses Gerät als "aufgelöst". + oneShotSyncBegin: OneShot Sync beginnt... (${syncMode}) + remoteDbCorrupted: Remote-Datenbank ist neuer oder beschädigt, stellen Sie + sicher, dass die neueste Version von self-hosted-livesync installiert + remoteDbCreatedOrConnected: Remote Datenbank erstellt oder vernetzt + remoteDbDestroyed: Remote Datenbank zerstört + remoteDbDestroyError: "Etwas passierte auf Remote Database Destroy:" + remoteDbMarkedResolved: Die Remote-Datenbank wurde aufgelöst. + replicationClosed: Zurück zur Übersicht + replicationInProgress: Die Replikation ist bereits im Gange + retryLowerBatchSize: Erneuter Versuch mit kleinerer Stapelgröße:${batch_size}/${batches_limit} + unlockRemoteDb: Entsperren Sie Remote-Datenbank, um Daten Korruption zu verhindern +liveSyncSetting: + errorNoSuchSettingItem: "Kein solcher Einstellungsartikel: ${key}" + originalValue: "Ursprünglich: ${value}" + valueShouldBeInRange: Der Wert sollte ${min} < Wert < ${max} +liveSyncSettings: + btnApply: Anwendung Lock: Sperren Lock Server: Server sperren Lock the remote server to prevent synchronization with other devices.: Sperrt den Remote-Server, um die Synchronisation mit anderen Geräten zu verhindern. +logPane: + autoScroll: Auto Scroll + logWindowOpened: Fenster öffnen + pause: Pausieren + title: Selbstgehostetes LiveSync Log + wrap: Zeilenumbruch +Maintenance: Wartung +Maximum delay for batch database updating: Maximale Verzögerung bei der Aktualisierung der Chargendatenbank +Maximum file modification time for reflected file events: Maximale Dateiänderungszeit für reflektierte Dateiereignisse +Maximum file size: Maximale Dateigröße +Maximum Incubating Chunk Size: Maximale Inkubation Chunk-Größe +Maximum Incubating Chunks: Maximale Inkubation von Chunks +Maximum Incubation Period: Maximale Inkubationsdauer +Maximum size of chunks to send in one request: Maximale Chunk-Größe pro Anfrage +MB: MB +MB (0 to disable).: MB (0 zu deaktivieren). +Memory cache size (by total characters): Speicher Cache Größe (nach Gesamtzeichen) +Memory cache size (by total items): Speicher Cache-Größe (nach Gesamtelementen) +Minimum delay for batch database updating: Mindestverzögerung bei der Aktualisierung der Chargendatenbank +Minimum interval for syncing: Mindestintervall für die Synchronisierung +moduleCheckRemoteSize: + logCheckingStorageSizes: Überprüfen der Speichergrößen + logCurrentStorageSize: "Größe des entfernten Speichers: ${measuredSize}" + logExceededWarning: Größe des entfernten Speichers ${measuredSize} überschreitet ${notifySize} + logThresholdEnlarged: Schwelle wurde auf ${size}MB erweitert + msgConfirmRebuild: Das kann ein bisschen lange dauern. Willst du jetzt wirklich + alles wieder aufbauen? + msgDatabaseGrowing: > + **Ihre Datenbank wird größer!** Aber keine Sorge, wir können es jetzt + ansprechen. Die Zeit vor dem Auslaufen aus dem Raum auf dem Remote-Speicher. + + + | Gemessene Größe | Konfigurierte Größe | + + --- | --- | + + | ${estimatedSize} | ${maxSize} + + + > [!MORE]- + + > Wenn Sie es schon seit vielen Jahren verwenden, kann es unreferenzierte + Stücke - d.h. Müll - in der Datenbank ansammeln. Deshalb empfehlen wir, + alles neu aufzubauen. Es wird wahrscheinlich viel kleiner werden. + + > + + > Wenn das Volumen Ihres Tresors einfach zunimmt, ist es besser, alles nach + der Organisation der Dateien wieder aufzubauen. Self-hosted LiveSync löscht + die tatsächlichen Daten nicht, auch wenn Sie sie löschen, um den Prozess zu + beschleunigen. Es ist grob + [documented](https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/tech + info.md). + + > + + > Wenn Sie die Zunahme nicht ausmachen, können Sie die + Benachrichtigungsgrenze um 100MB erhöhen. Dies ist der Fall, wenn Sie es auf + Ihrem eigenen Server ausführen. Es ist jedoch besser, alles von Zeit zu Zeit + wieder aufzubauen. + + > + + + > (! WARNEN) + + > Wenn Sie alles neu aufbauen, stellen Sie sicher, dass alle Geräte + synchronisiert sind. Das Plug-in wird jedoch so viel wie möglich + verschmelzen. + msgSetDBCapacity: > + Wir können eine maximale Datenbank-Kapazitätswarnung festlegen, ** um + Maßnahmen zu ergreifen, bevor Sie auf dem Remote-Speicher aus dem Raum + laufen**. + + Wollen Sie das aktivieren? + + + > [!MORE]- + + > - 0: Warnen Sie nicht über die Speichergröße. + + > Dies wird empfohlen, wenn Sie genügend Platz auf dem Remote-Speicher + haben, vor allem Sie selbst gehostet haben. Und Sie können die Speichergröße + überprüfen und manuell wieder aufbauen. + + > - 800: Warnen, wenn die Speichergröße 800MB überschreitet. + + > Dies wird empfohlen, wenn Sie fly.io mit 1 GB Limit oder IBM Cloudant + verwenden. + + > - 2000: Warnung, wenn die Speichergröße 2GB überschreitet. + + + Wenn wir die Grenze erreicht haben, werden wir aufgefordert, den Grenzwert + Schritt für Schritt zu vergrößern. + option2GB: 2GB (Standard) + option800MB: 800MB (Cloudant, fly.io) + optionAskMeLater: Fragen Sie mich später + optionDismiss: Entlassung + optionIncreaseLimit: erhöhen auf ${newMax}MB + optionNoWarn: Nein, nie warnen bitte + optionRebuildAll: Alles neu aufbauen + titleDatabaseSizeLimitExceeded: Remote-Speichergröße überschritten die Grenze + titleDatabaseSizeNotify: Einrichtung der Datenbankgröße +moduleInputUIObsidian: + defaultTitleConfirmation: Bestätigung + defaultTitleSelect: Wählen + optionNo: Nein + optionYes: Ja. +moduleLiveSyncMain: + logAdditionalSafetyScan: Zusätzliche Sicherheitsscan... + logLoadingPlugin: Das Plugin wird geladen... + logPluginInitCancelled: Plugin Initialisierung wurde durch ein Modul aufgehoben + logPluginVersion: Selbstgehostete LiveSync v${manifestVersion} ${packageVersion} + logReadChangelog: LiveSync hat aktualisiert, lesen Sie bitte das Changelog! + logSafetyScanCompleted: Zusätzliche Sicherheitsprüfung abgeschlossen + logSafetyScanFailed: Zusätzlicher Sicherheitsscan ist auf einem Modul gescheitert + logUnloadingPlugin: Ausladen des Plugins... + logVersionUpdate: LiveSync wurde aktualisiert, Im Falle von Updates wurde die + automatische Synchronisation vorübergehend deaktiviert. Stellen Sie sicher, + dass alle Geräte aktuell sind, bevor Sie diese aktivieren. + msgScramEnabled: > + Self-hosted LiveSync wurde konfiguriert, um einige Ereignisse zu ignorieren. + Ist das richtig? + + + | Typ | Status | Hinweis | + + |:---:::---:---- + + | Speicherereignisse | ${fileWatchingStatus} | Jede Änderung wird | | | | | + | | | | | + + | Datenbank Events | ${parseReplicationStatus} | Jede synchronisierte + Änderung wird verschoben | + + + Willst du sie wieder aufnehmen und Obsidian neu starten? + + + > [!DETAILS]- + + > Diese Fahnen werden vom Plug-in beim Umbau oder beim Abruf gesetzt. Wenn + der Prozess abnormal endet, kann er unbeabsichtigt gehalten werden. + + > Wenn Sie sich nicht sicher sind, können Sie versuchen, diese Prozesse zu + wiederholen. Achten Sie darauf, Ihren Tresor zu sichern. + optionKeepLiveSyncDisabled: LiveSync deaktiviert halten + optionResumeAndRestart: Wiederaufnahme von Obsidian + titleScramEnabled: Scram aktivieren +moduleLocalDatabase: + logWaitingForReady: Warten auf bereit... +moduleLog: + showLog: Wir zeigen uns +moduleMigration: + docUri: https://github.com/vrtmrz/obsidian-livesync/blob/main/README.md#how-to-use + fix0256: + buttons: + checkItLater: Überprüfen Sie es später + DismissForever: Ich habe es repariert und frage mich nicht wieder + fix: Fehler + message: > + Aufgrund eines kürzlichen Fehlers (in v0.25.6) wurden einige Dateien + möglicherweise nicht korrekt in der Synchronisierungsdatenbank + gespeichert. + + Wir haben die Dateien geprüft und einige gefunden, die repariert werden + müssen. + + + **Dateien, die repariert werden können:** + + + ${files} + + + Für diese Dateien gibt es im Speicher eine größenmäßig passende + Originaldatei, daher sind sie wahrscheinlich wiederherstellbar. + + Wir können sie verwenden, um die Datenbank zu reparieren. Klicke unten auf + "Reparieren". + + + ${messageUnrecoverable} + + + Wenn du dies erneut ausführen möchtest, kannst du das in Hatch tun. + messageUnrecoverable: > + **Files können auf diesem Gerät nicht fixiert werden:** + + + ${filesNotRecoverable} + + + Diese Dateien haben inkonsistente Metadaten und können auf diesem Gerät + nicht fixiert werden (vor allem können wir nicht festlegen, welche korrekt + ist). + + Um sie wiederherzustellen, überprüfen Sie bitte Ihre anderen Geräte (auch + durch diese Funktion) oder wiederherstellen sie manuell von einem Backup. + title: Gebrochene Dateien wurden erkannt + insecureChunkExist: + buttons: + fetch: Ich habe die Fernbedienung schon wieder aufgebaut. Fetch aus der Ferne + later: ich werde es später tun + rebuild: Alles neu aufbauen + laterMessage: Wir empfehlen dringend, dies so schnell wie möglich zu behandeln! + message: > + Einige Stücke werden nicht sicher gespeichert und nicht in Datenbanken + verschlüsselt. + + **Bitte die Datenbank neu aufbauen, um dieses Problem zu beheben**. + + + Wenn Ihre Remote-Datenbank nicht mit SSL konfiguriert ist, oder mit + weniger sicheren Anmeldeinformationen, ** Sie sind in Gefahr, sensible + Daten zu entwerfen*. + + + Hinweis: Bitte aktualisieren Sie Ihren Self-hosted LiveSync v0.25.6 oder + höher auf alle Ihre Geräte und sichern Sie Ihren Tresor sicher. + + Hinweis2: Wiederherstellen Alles und Fetch verbraucht etwas Zeit und + Verkehr, bitte tun Sie es in Off-peak Stunden und stellen Sie eine stabile + Netzwerkverbindung. + title: Unsichere Stücke gefunden! + logBulkSendCorrupted: Senden Sie Stücke in Masse wurde aktiviert, aber diese + Funktion war beschädigt. Tut mir leid für Ihre Unannehmlichkeiten. + automatisch deaktiviert. + logFetchRemoteTweakFailed: Versäumt, Remote-Tweak-Werte zu holen + logLocalDatabaseNotReady: Etwas ging schief! Die lokale Datenbank ist nicht bereit + logMigratedSameBehaviour: Zu db:${current} mit dem gleichen Verhalten wie zuvor + logMigrationFailed: Migration fehlgeschlagen oder von ${old} auf ${current} storniert + logRedflag2CreationFail: Nicht zu schaffen redflag2 + logRemoteTweakUnavailable: Kann nicht Remote-Tweak-Werte erhalten + logSetupCancelled: Das Setup wurde abgesagt, Self-hosted LiveSync wartet auf Ihr Setup! + msgFetchRemoteAgain: >- + Wie Sie vielleicht schon wissen, hat der selbstgehostete LiveSync sein + Standardverhalten und seine Datenbankstruktur verändert. + + + Und dank Ihrer Zeit und Mühe scheint die Remote-Datenbank bereits + ausgewandert zu sein. Glückwunsch! + + + Aber wir brauchen etwas mehr. Die Konfiguration dieses Gerätes ist nicht mit + der Remote-Datenbank kompatibel. Wir müssen die Remote-Datenbank wieder + holen. Sollen wir jetzt wieder von der Fernbedienung holen? + + Anmerkung: Wir können nicht synchronisieren, bis die Konfiguration geändert wurde und die Datenbank wieder gestartet wurde. + Note2: Die Stücke sind völlig unveränderlich, wir können nur die Metadaten und Differenz holen. + msgInitialSetup: >- + Dein Gerät wurde **noch nicht eingerichtet**. Ich führe dich durch die + Einrichtung. + + + Bitte beachte, dass jeder Dialoginhalt in die Zwischenablage kopiert werden + kann. Wenn du ihn später brauchst, kannst du ihn in eine Obsidian-Notiz + einfügen. Du kannst ihn auch mit einem Übersetzungstool in deine Sprache + übersetzen. + + + Zuerst: Hast du eine **Setup URI**? + + + Hinweis: Wenn du nicht weißt, was das ist, lies bitte die + [Dokumentation](${URI_DOC}). + msgRecommendSetupUri: >- + Wir empfehlen dringend, eine Setup URI zu erzeugen und zu verwenden. + + Wenn du damit nicht vertraut bist, lies bitte die + [Dokumentation](${URI_DOC}) (nochmals Entschuldigung, aber das ist wichtig). + + + Wie möchtest du die Verbindung manuell einrichten? + msgSinceV02321: >- + Seit v0.23.21 hat der selbstgehostete LiveSync das Standardverhalten und die + Datenbankstruktur verändert. Es wurden folgende Änderungen vorgenommen: + + + 1. **Case Empfindlichkeit der Dateinamen* + + Der Umgang mit Dateinamen ist jetzt case-insensitive. Dies ist eine günstige + Änderung für die meisten Plattformen, andere als Linux und iOS, die nicht + verwalten Dateiname Fall Sensibilität effektiv. + + (Bei diesen wird eine Warnung für Dateien mit dem gleichen Namen angezeigt, + aber verschiedene Fälle). + + + 2. **Bearbeitung der Stücke* + + Chunks sind unveränderlich, wodurch ihre Revisionen behoben werden können. + Diese Änderung wird die Leistung der Dateisparen verbessern. + + Um diese Änderungen zu aktivieren, müssen sowohl Remote- als auch lokale Datenbanken wieder aufgebaut werden. Dieser Prozess dauert ein paar Minuten, und wir empfehlen, es zu tun, wenn Sie viel Zeit haben. + + - Wenn Sie das bisherige Verhalten beibehalten möchten, können Sie diesen + Prozess mit `${KEEP}` überspringen. + + - Wenn Sie nicht genug Zeit haben, wählen Sie bitte `${DISMISS}`. Sie werden + später wieder aufgefordert. + + - Wenn Sie die Datenbank auf einem anderen Gerät wieder aufgebaut haben, + wählen Sie bitte `${DISMISS}` aus und versuchen Sie erneut zu + synchronisieren. Da ein Unterschied erkannt wurde, werden Sie erneut + aufgefordert. + optionAdjustRemote: Anpassen der Fernbedienung + optionDecideLater: Entscheiden Sie es später + optionEnableBoth: Ermöglicht beide + optionEnableFilenameCaseInsensitive: "Nur #1 aktivieren" + optionEnableFixedRevisionForChunks: "Nur #2 aktivieren" + optionHaveSetupUri: Ja, ich habe + optionKeepPreviousBehaviour: Vorheriges Verhalten + optionManualSetup: Alle manuell einrichten + optionNoAskAgain: Nein, bitte noch mal fragen + optionNoSetupUri: Nein, ich habe nicht + optionRemindNextLaunch: Erinnern Sie mich an den nächsten Start + optionSetupViaP2P: Mit %{short_p2p_sync} einrichten + optionSetupWizard: Bring mich in den Setup-Assistenten + optionYesFetchAgain: Ja, wieder holen. + titleCaseSensitivity: Fallempfindlichkeit + titleRecommendSetupUri: Empfehlung zur Verwendung Setup-URI + titleWelcome: Willkommen bei Self-hosted LiveSync +moduleObsidianMenu: + replicate: Replika More actions: Weitere Aktionen +Move remotely deleted files to the trash, instead of deleting.: Bewegen Sie entfernt gelöschte Dateien in den Müll, anstatt zu löschen. Network warning style: Stil der Netzwerkwarnung New Remote: Neues Remote +No connected device information found. Cancelling Garbage Collection.: + Keine Informationen zu verbundenen Geräten gefunden. Garbage Collection wird + abgebrochen. No limit configured: Kein Limit konfiguriert +No, please take me back: Nein, bitte zurück +Node ID: Knoten-ID +Node Information Missing: Knoteninformationen fehlen Non-Synchronising files: Nicht zu synchronisierende Dateien Normal Files: Normale Dateien +Not all messages have been translated. And, please revert to "Default" when reporting errors.: + Nicht alle Nachrichten wurden übersetzt. Wenn Sie Fehler melden, wenden Sie + sich bitte an "Default". +Notify all setting files: Benachrichtigen Sie alle Einstellungsdateien +Notify customized: Benachrichtigen Sie uns +Notify when other device has newly customized.: Benachrichtigen, wenn ein anderes Gerät neu angepasst ist. +Notify when the estimated remote storage size exceeds on start up: Benachrichtigen, wenn die geschätzte Remote-Speichergröße beim Start übersteigt +Now we can choose how to split the chunks; V3 is the most efficient. If you have troubled, please make this Default or Legacy.: + Jetzt kann ausgewählt werden, wie Chunks geteilt werden; V3 ist am + effizientesten. Bei Problemen wähle Default oder Legacy. +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.: + Anzahl der Chargen zu einem Zeitpunkt zu verarbeiten. Defaults auf 40. + Mindestens 2. Dies zusammen mit der Batch-Größe steuert, wie viele Doks zu + einer Zeit im Speicher gehalten werden. +Number of changes to sync at a time. Defaults to 50. Minimum is 2.: + Anzahl der Änderungen beim Synchronisieren zu einer Zeit. Defaults zu 50. + Mindestens 2. +Obsidian version: Obsidian-Version obsidianLiveSyncSettingTab: - btnApply: Anwenden - btnDisable: Deaktivieren - btnNext: Weiter - buttonNext: Weiter - defaultLanguage: Standardsprache - labelDisabled: "⏹️ : Deaktiviert" - labelEnabled: "🔁 : Aktiviert" - logConfiguredDisabled: "Konfigurierter Synchronisationsmodus: DEAKTIVIERT" + btnApply: Anwendung + btnCheck: Überprüfung + btnCopy: Kopie + btnDisable: Nicht verfügbar + btnDiscard: Verwerfen + btnEnable: Ermöglichen + btnFix: Fehler + btnGotItAndUpdated: Ich habe es und aktualisiert. + btnNext: Nächste + btnStart: Starten + btnTest: Prüfung + btnUse: Verwendung + buttonFetch: Gebühren + buttonNext: Nächste + defaultLanguage: Fehler + descConnectSetupURI: Dies ist die empfohlene Methode, Self-hosted LiveSync mit + einem Setup-URI einzurichten. + descCopySetupURI: Perfekt für die Einrichtung eines neuen Gerätes! + descEnableLiveSync: Nur aktivieren Sie dies nach der Konfiguration entweder der + beiden oben genannten Optionen oder beenden Sie alle Konfiguration manuell. + descFetchConfigFromRemote: Fetch notwendige Einstellungen von bereits konfigurierten Remote-Server. + descManualSetup: Nicht empfohlen, aber nützlich, wenn Sie kein Setup-URI haben + descTestDatabaseConnection: Datenbankverbindung öffnen. Wird die + Remote-Datenbank nicht gefunden und Sie haben die Erlaubnis, eine Datenbank + zu erstellen, wird die Datenbank erstellt. + descValidateDatabaseConfig: Überprüfen und beheben Sie alle möglichen Probleme mit der Datenbank config. + errAccessForbidden: ❗ Zugang verboten. + errCannotContinueTest: Wir konnten den Test nicht fortsetzen. + errCorsCredentials: ❗ cors.credentials ist falsch + errCorsNotAllowingCredentials: ❗ CORS erlaubt keine Anmeldeinformationen + errCorsOrigins: ❗ cors.origins ist falsch + errEnableCors: ❗ httpd.enable cors ist falsch + errEnableCorsChttpd: ❗ chttpd.enable cors ist falsch + errMaxDocumentSize: ❗ codb.max document size ist niedrig) + errMaxRequestSize: ❗ chttpd.max http request size ist niedrig) + errMissingWwwAuth: ❗ httpd. WWW-Authenticate fehlt + errRequireValidUser: ❗ chttpd.require valid user ist falsch. + errRequireValidUserAuth: ❗ chttpd auth.require valid user ist falsch. + labelDisabled: "⏹️ : Behinderte" + labelEnabled: "🔁 : Ermöglicht" + levelAdvanced: " (Erweitert)" + levelEdgeCase: (Edge Case) + levelPowerUser: (Power User) + linkOpenInBrowser: Öffnen im Browser + linkPageTop: Seite oben + linkTipsAndTroubleshooting: Tipps und Fehlerbehebung + linkTroubleshooting: /docs/troubleshooting.md + logCannotUseCloudant: Diese Funktion kann nicht mit IBM Cloudant verwendet werden. + logCheckingConfigDone: Überprüfung der Konfiguration + logCheckingConfigFailed: Überprüfung der Konfiguration fehlgeschlagen + logCheckingDbConfig: Überprüfung der Datenbankkonfiguration + logCheckPassphraseFailed: |- + ERROR: Versäumt, Passphrase mit dem Remoteserver zu überprüfen: + ${db}. + logConfiguredDisabled: "Konfigurierter Synchronisationsmodus: DISABLED" logConfiguredLiveSync: "Konfigurierter Synchronisationsmodus: LiveSync" logConfiguredPeriodic: "Konfigurierter Synchronisationsmodus: Periodisch" - logSelectAnyPreset: Wählen Sie eine beliebige Voreinstellung aus. - msgConfigCheckFailed: Die Konfigurationsprüfung ist fehlgeschlagen. Trotzdem fortfahren? - msgEnableEncryptionRecommendation: Wir empfehlen, Ende-zu-Ende-Verschlüsselung - und Pfadverschleierung zu aktivieren. Möchten Sie wirklich ohne - Verschlüsselung fortfahren? - msgFetchConfigFromRemote: Möchten Sie die Konfiguration vom Remote-Server abrufen? - msgGenerateSetupURI: Alles fertig! Möchten Sie eine Setup-URI erzeugen, um + logCouchDbConfigFail: "CouchDB Konfiguration: ${title} gescheitert" + logCouchDbConfigSet: "CouchDB-Konfiguration: ${title} -> ${key} auf ${value} setzen" + logCouchDbConfigUpdated: "CouchDB Konfiguration: ${title} erfolgreich aktualisiert" + logDatabaseConnected: Datenbank verbunden + logEncryptionNoPassphrase: Sie können keine Verschlüsselung ohne Passphrase aktivieren + logEncryptionNoSupport: Ihr Gerät unterstützt keine Verschlüsselung. + logErrorOccurred: Ein Fehler ist aufgetreten! + logEstimatedSize: "Geschätzte Größe: ${size}" + logPassphraseInvalid: Passphrase ist nicht gültig, bitte reparieren. + logPassphraseNotCompatible: "ERROR: Passphrase ist nicht mit dem Remoteserver + kompatibel! Bitte überprüfen Sie es nochmal!" + logRebuildNote: Die Synchronisierung wurde deaktiviert, ggf. abgeholt und wieder aktiviert. + logSelectAnyPreset: Wählen Sie eine Voreinstellung aus. + logServerConfigurationCheck: Serverkonfiguration prüfen + msgAreYouSureProceed: Bist du sicher? + msgChangesNeedToBeApplied: Änderungen müssen angewendet werden! + msgConfigCheck: "- Config check---" + msgConfigCheckFailed: Die Konfigurationsprüfung ist fehlgeschlagen. Willst du + trotzdem weitermachen? + msgConnectionCheck: "- Verbindungskontrolle..." + msgConnectionProxyNote: Wenn Sie Probleme mit dem Verbindungs-Check haben (auch + nach der Prüfung config), überprüfen Sie bitte Ihre umgekehrte + Proxy-Konfiguration. + msgCurrentOrigin: "Aktueller Ursprung: ${origin}" + msgDiscardConfirmation: Möchten Sie wirklich bestehende Einstellungen und Datenbanken verwerfen? + msgDone: "- Done..." + msgEnableCors: Setzen Sie httpd.enable cors + msgEnableCorsChttpd: chttpd.enable cors einstellen + msgEnableEncryptionRecommendation: Wir empfehlen, die End-To-End-Verschlüsselung + und Path Obfuscation zu aktivieren. Sind Sie sicher, dass Sie ohne + Verschlüsselung fortfahren wollen? + msgFetchConfigFromRemote: Möchten Sie den Config vom Remote Server holen? + msgGenerateSetupURI: Alles erledigt! Möchten Sie eine Setup-URI erstellen, um andere Geräte einzurichten? - msgInvalidPassphrase: Ihre Verschlüsselungs-Passphrase könnte ungültig sein. - Möchten Sie wirklich fortfahren? - msgSelectAndApplyPreset: Bitte wählen und übernehmen Sie eine beliebige - Voreinstellung, um den Assistenten abzuschließen. - nameDisableHiddenFileSync: Synchronisation versteckter Dateien deaktivieren - nameEnableHiddenFileSync: Synchronisation versteckter Dateien aktivieren - nameHiddenFileSynchronization: Synchronisation versteckter Dateien - optionDisableAllAutomatic: Alle automatischen Vorgänge deaktivieren - optionLiveSync: LiveSync-Modus - optionOnEvents: Bei Ereignissen - optionPeriodicAndEvents: Periodisch und bei Ereignissen - optionPeriodicWithBatch: Periodisch mit Stapelverarbeitung - titleAppearance: Darstellung - titleConflictResolution: Konfliktbehandlung + msgIfConfigNotPersistent: Wenn die Serverkonfiguration nicht persistent ist + (z.B. auf dem Docker ausgeführt), können sich die Werte hier ändern. Sobald + Sie eine Verbindung herstellen können, aktualisieren Sie bitte die + Einstellungen in der local.ini des Servers. + msgInvalidPassphrase: Ihre Verschlüsselungspassphrase könnte ungültig sein. Bist + du sicher, dass du weitermachen willst? + msgNewVersionNote: Hier wegen einer Upgrade-Benachrichtigung? Bitte prüfe den + Versionsverlauf. Wenn alles in Ordnung ist, klicke auf die Schaltfläche. + Normalerweise wirst du nur einmal benachrichtigt. + msgNonHTTPSInfo: Konfiguriert als nicht-HTTPS URI. Seien Sie gewarnt, dass dies + nicht auf mobilen Geräten funktionieren kann. + msgNonHTTPSWarning: Kann nicht mit nicht-HTTPS URI verbinden. Bitte + aktualisieren Sie Ihre config und versuchen Sie es erneut. + msgNotice: ------- + msgObjectStorageWarning: >- + WARNING: Diese Funktion ist ein Work In Progress, also beachten Sie bitte + Folgendes: + + - Nur Architektur anhängen. Um den Speicher zu schrumpfen, ist ein Rebuild + erforderlich. + + - Etwas zerbrechlich. + + - Beim ersten Synchronisieren wird die gesamte Geschichte aus der Ferne + übertragen. Achten Sie auf Datenkappen und langsame Geschwindigkeiten. + + - Nur Unterschiede werden live synchronisiert. + + + Wenn Sie in irgendwelche Probleme laufen oder Ideen über diese Funktion + haben, erstellen Sie bitte ein Thema auf GitHub. + + Ich schätze Sie für Ihre große Hingabe. + msgOriginCheck: "Herkunftsprüfung: ${org}" + msgRebuildRequired: >- + Zum Anwenden der Änderungen müssen die Datenbanken neu aufgebaut werden. + Bitte wähle aus, wie die Änderungen angewendet werden sollen. + + +
+ + Legende + + + | Symbol | Bedeutung | + + |: ------ :| ------- | + + | ⇔ | Aktuell | + + | ⇄ | Zum Ausgleichen synchronisieren | + + | ⇐,⇒ | Mit Überschreiben übertragen | + + | ⇠,⇢ | Von der anderen Seite mit Überschreiben übertragen | + + +
+ + + ## ${OPTION_REBUILD_BOTH} + + Kurzfassung: 📄 ⇒¹ 💻 ⇒² 🛰️ ⇢ⁿ 💻 ⇄ⁿ⁺¹ 📄 + + Lokale und entfernte Datenbank mit den vorhandenen Dateien dieses Geräts neu + aufbauen. + + Dadurch werden andere Geräte ausgesperrt; sie müssen anschließend Daten + abrufen. + + ## ${OPTION_FETCH} + + Kurzfassung: 📄 ⇄² 💻 ⇐¹ 🛰️ ⇔ 💻 ⇔ 📄 + + Die lokale Datenbank initialisieren und mit Daten aus der entfernten + Datenbank neu aufbauen. + + Dies umfasst auch den Fall, dass die entfernte Datenbank bereits neu + aufgebaut wurde. + + ## ${OPTION_ONLY_SETTING} + + Nur die Einstellungen speichern. **Achtung: Dies kann zu Datenbeschädigung + führen**; normalerweise ist ein Neuaufbau der Datenbank erforderlich. + msgSelectAndApplyPreset: Bitte wählen Sie aus und wenden Sie alle + Voreinstellungen an, um den Assistenten abzuschließen. + msgSetCorsCredentials: cors.credentials setzen + msgSetCorsOrigins: cors.origins setzen + msgSetMaxDocSize: Set Couchdb.max document size + msgSetMaxRequestSize: chttpd.max http request size + msgSetRequireValidUser: chttpd.require valid user = true + msgSetRequireValidUserAuth: chttpd auth.require valid user = true + msgSettingModified: Die Einstellung "${setting}" wurde auf einem anderen Gerät + geändert. Klicke {HERE}, um die Einstellungen neu zu laden. Klicke erneut + auf denselben Wert, um ihn zu überschreiben. + msgSettingsUnchangeableDuringSync: Diese Einstellungen können während der + Synchronisation nicht geändert werden. Bitte deaktivieren Sie alle + Synchronisationen in den "Sync Settings", um zu entsperren. + msgSetWwwAuth: Setzen Sie httpd. WWW-Authenticate + nameApplySettings: Einstellungen anwenden + nameConnectSetupURI: Verbinden mit Setup-URI + nameCopySetupURI: Kopieren Sie die aktuellen Einstellungen auf ein Setup-URI + nameDisableHiddenFileSync: Verschlüsselte Dateien synchronisieren + nameDiscardSettings: vorhandene Einstellungen und Datenbanken deaktivieren + nameEnableHiddenFileSync: Versteckte Dateien synchronisieren + nameEnableLiveSync: LiveSync aktivieren + nameHiddenFileSynchronization: Versteckte Dateisynchronisation + nameManualSetup: Manuell Setup + nameTestConnection: Testanschluss + nameTestDatabaseConnection: Prüfdatenbankanschluss + nameValidateDatabaseConfig: Validierung der Datenbankkonfiguration + okAdminPrivileges: ✔ Sie haben Administratorrechte. + okCorsCredentials: ✔ cors.credentials ist ok. + okCorsCredentialsForOrigin: CORS Anmeldeinformationen OK + okCorsOriginMatched: ✔ CORS Ursprung OK + okCorsOrigins: ✔ cors.origins ist ok. + okEnableCors: ✔ httpd.enable cors ist ok. + okEnableCorsChttpd: ✔ chttpd.enable cors ist ok. + okMaxDocumentSize: ✔ codb.max document size ist ok. + okMaxRequestSize: ✔ chttpd.max http request size ist ok. + okRequireValidUser: ✔ chttpd.require valid user ist ok. + okRequireValidUserAuth: ✔ chttpd auth.require valid user ist ok. + okWwwAuth: ✔ httpd. WWW-Authenticate ist ok. + optionApply: Anwendung + optionCancel: Abbrechen + optionCouchDB: CouchDB + optionDisableAllAutomatic: Alle Automatik deaktivieren + optionFetchFromRemote: Fetch von Remote + optionHere: HIER + optionLiveSync: LiveSync + optionMinioS3R2: MinIO, S3, R2 + optionOkReadEverything: Okay, ich habe alles gelesen. + optionOnEvents: Auf Veranstaltungen + optionPeriodicAndEvents: Periodisch und auf Veranstaltungen + optionPeriodicWithBatch: Periodische W/ Batch + optionRebuildBoth: Beides von diesem Gerät wieder aufbauen + optionSaveOnlySettings: (Danger) Nur Einstellungen speichern + panelChangeLog: Änderung der Registrierung + panelGeneralSettings: Allgemeine Einstellungen + panelPrivacyEncryption: Datenschutz und Verschlüsselung + panelRemoteConfiguration: Fernkonfiguration + panelSetup: Einrichtung + serverVersion: "Server-Info: ${info}" + titleActiveRemoteServer: Aktiver Remote-Server + titleAppearance: Erscheinung + titleConflictResolution: Konfliktlösung titleCongratulations: Glückwunsch! - titleCouchDB: CouchDB-Server - titleDeletionPropagation: Weitergabe von Löschungen + titleCouchDB: CouchDB + titleDeletionPropagation: Auslieferungsersuchen titleEncryptionNotEnabled: Verschlüsselung ist nicht aktiviert - titleEncryptionPassphraseInvalid: Ungültige Verschlüsselungs-Passphrase + titleEncryptionPassphraseInvalid: Verschlüsselung Passphrase Invalid + titleExtraFeatures: Ermöglichen Sie zusätzliche und erweiterte Funktionen titleFetchConfig: Konfiguration abrufen + titleFetchConfigFromRemote: Fetch config von Remote Server + titleFetchSettings: Gebühreneinstellungen titleHiddenFiles: Versteckte Dateien - titleLogging: Protokollierung - titleMinioS3R2: MinIO / S3 / R2 - titleNotification: Benachrichtigungen - titleRemoteConfigCheckFailed: Prüfung der Remote-Konfiguration fehlgeschlagen + titleLogging: Protokoll + titleMinioS3R2: MinIO, S3, R2 + titleNotification: Notifizierung + titleOnlineTips: Online Tipps + titleQuickSetup: Schnelleinrichtung + titleRebuildRequired: Rebuild erforderlich + titleRemoteConfigCheckFailed: Remote Configuration Check nicht verfügbar titleRemoteServer: Remote-Server - titleSynchronizationMethod: Synchronisationsmethode - titleSynchronizationPreset: Synchronisationsvorgabe - titleSyncSettingsViaMarkdown: Synchronisationseinstellungen per Markdown - titleUpdateThinning: Update-Ausdünnung + titleReset: Zurück zur Übersicht + titleSetupOtherDevices: Um andere Geräte einzurichten + titleSynchronizationMethod: Synchronisierungsmethode + titleSynchronizationPreset: Synchronisierung Preset + titleSyncSettings: Sync-Einstellungen + titleSyncSettingsViaMarkdown: Sync-Einstellungen über Markdown + titleUpdateThinning: Ausdünnung aktualisieren + warnCorsOriginUnmatched: ⚠ CORS-Origin stimmt nicht überein ${from}->${to} + warnNoAdmin: Sie haben keine Administratorrechte. Ok: OK Old Algorithm: Alter Algorithmus Older fallback (Slow, W/O WebAssembly): Älterer Fallback (langsam, ohne WebAssembly) @@ -145,25 +1074,111 @@ Overwrite patterns: Überschreibungsmuster Overwrite remote: Remote überschreiben Overwrite remote with local DB and passphrase.: Remote mit lokaler Datenbank und Passphrase überschreiben. Overwrite Server Data with This Device's Files: Serverdaten mit den Dateien dieses Geräts überschreiben +P2P: + AskPassphraseForDecrypt: Der entfernte Peer teilte die Konfiguration. Bitte + geben Sie die Passphrase ein, um die Konfiguration zu entschlüsseln. + AskPassphraseForShare: Der entfernte Peer forderte diese Gerätekonfiguration. + Bitte geben Sie die Passphrase ein, um die Konfiguration zu teilen. Sie + können die Anfrage ignorieren, indem Sie diesen Dialog abbrechen. + DisabledButNeed: "%{title_p2p_sync} ist deaktiviert. M?chten Sie es wirklich aktivieren?" + FailedToOpen: Nicht geöffnet P2P-Verbindung zum Signalisierungsserver. + NoAutoSyncPeers: Keine Peers f?r die automatische Synchronisierung gefunden. + Bitte legen Sie Peers im Bereich %{long_p2p_sync} fest. + NoKnownPeers: Keine Peers wurden erkannt und warteten auf andere Peers... + Note: + description: >2- + Dieser Replikator ermöglicht es uns, unseren Tresor mit anderen Geräten + zu synchronisieren mit einer Peer-to-Peer-Verbindung. Wir können dies + nutzen, um unseren Tresor mit unseren anderen Geräten zu synchronisieren, + ohne einen Cloud-Service zu verwenden. + + Dieser Replikator basiert auf Trystero. Es verwendet auch einen + Signalisierungsserver, um eine Verbindung zwischen Geräten herzustellen. + Der Signalisierungsserver dient zum Austausch von Verbindungsinformationen + zwischen Geräten. Es kann (oder,sollte) keine unserer Daten kennen oder + speichern. + + + Der Signalisierungsserver kann von jedem gehostet werden. Das ist nur ein + Nostr-Relais. Zur Vereinfachung und Kontrolle des Verhaltens des + Replikators wird eine Instanz des Signalisierungsservers von vrtmrz + gehostet. Sie können den von vrtmrz bereitgestellten experimentellen + Server verwenden, oder Sie können einen anderen Server verwenden. + + + Übrigens, selbst wenn der Signalisierungsserver unsere Daten nicht + speichert, kann er die Verbindungsinformationen einiger unserer Geräte + sehen. Bitte beachten Sie das. Seien Sie auch vorsichtig, wenn Sie den von + jemand anderem bereitgestellten Server verwenden. + important_note: Peer-to-Peer-Replikator. + important_note_sub: Diese Funktion ist noch an der Ausblutkante. Bitte beachten + Sie, dass Sie sicherstellen, dass Ihre Daten gesichert werden, bevor Sie + diese Funktion nutzen. Und wir wären so glücklich, wenn Sie zur + Entwicklung dieser Funktion beitragen könnten. + Summary: Was ist diese Funktion? (und einige wichtige Anmerkungen, bitte lesen + Sie einmal) + NotEnabled: "%{title_p2p_sync} ist nicht aktiviert. Wir können keine neue + Verbindung öffnen." + P2PReplication: "%{P2P}-Replikation" + PaneTitle: "%{long_p2p_sync}" + ReplicatorInstanceMissing: P2P Sync Replikator ist nicht gefunden, + möglicherweise nicht konfiguriert oder aktiviert. + SeemsOffline: Peer ${name} erscheint offline, übersprungen. + SyncAlreadyRunning: P2P Sync läuft bereits. + SyncCompleted: P2P Sync abgeschlossen. + SyncStartedWith: P2P Sync mit ${name} wurde gestartet. paneMaintenance: markDeviceResolvedAfterBackup: Markieren Sie das Gerät nach der Sicherung als gelöst. remoteLockedAndDeviceNotAccepted: Die Remote-Datenbank ist gesperrt und dieses Gerät wurde noch nicht akzeptiert. remoteLockedResolvedDevice: Die Remote-Datenbank ist gesperrt. Dieses Gerät wurde bereits akzeptiert. unlockDatabaseReady: Die Datenbank kann jetzt entsperrt werden. +Passphrase: Passphrasen +Passphrase of sensitive configuration items: Passphrase sensibler Konfigurationselemente +password: Passwort vergessen? +Password: Passwort vergessen? Paste a connection string: Verbindungszeichenfolge einfügen +Paste the Setup URI generated from one of your active devices.: Fügen Sie die Setup-URI ein, die auf einem Ihrer aktiven Geräte erzeugt wurde。 +Path Obfuscation: Pfadverschleierung Patterns to match files for overwriting instead of merging: Muster zum Erkennen von Dateien, die überschrieben statt zusammengeführt werden sollen Patterns to match files for syncing: Muster zum Erkennen von Dateien für die Synchronisation +Peer-to-Peer only: Nur Peer-to-Peer Peer-to-Peer Synchronisation: Peer-to-Peer-Synchronisation +Per-file-saved customization sync: Per-file-saved Anpassungssynchronisation Perform: Ausführen Perform cleanup: Bereinigung ausführen Perform Garbage Collection: Garbage Collection ausführen Perform Garbage Collection to remove unused chunks and reduce database size.: Führt Garbage Collection aus, um ungenutzte Chunks zu entfernen und die Datenbankgröße zu reduzieren. -Pick a file to resolve conflict: Datei zur Konfliktlösung auswählen +Periodic Sync interval: Periodisches Synchronintervall +Pick a file to resolve conflict: Wählen Sie eine Datei, um Konflikt zu lösen +Pick a file to show history: Wählen Sie eine Datei, um Geschichte zu zeigen +Please disable 'Read chunks online' in settings to use Garbage Collection.: + Bitte deaktivieren Sie „Read chunks online“ in den Einstellungen, um die + Garbage Collection zu verwenden. +Please enable 'Compute revisions for chunks' in settings to use Garbage Collection.: + Bitte aktivieren Sie „Compute revisions for chunks“ in den Einstellungen, um + die Garbage Collection zu verwenden. +Please select 'Cancel' explicitly to cancel this operation.: Bitte wählen Sie ausdrücklich „Abbrechen“, um diesen Vorgang abzubrechen. +Please select a method to import the settings from another device.: + Bitte wählen Sie eine Methode, um die Einstellungen von einem anderen Gerät zu + importieren. +Please select an option to proceed: Bitte wählen Sie eine Option, um fortzufahren +Please select the type of server to which you are connecting.: Bitte wählen Sie den Servertyp aus, mit dem Sie sich verbinden。 Please set this device name: Bitte legen Sie den Namen dieses Geräts fest +Plug-in version: Plugin-Version +Prepare the 'report' to create an issue: Bereiten Sie den "Bericht" vor, um ein Problem zu schaffen +Presets: Voreinstellungen +Proceed Garbage Collection: Garbage Collection fortsetzen +Proceed with Setup URI: Mit Setup-URI fortfahren +Proceeding with Garbage Collection, ignoring missing nodes.: Garbage Collection wird fortgesetzt, fehlende Knoten werden ignoriert. +Proceeding with Garbage Collection.: Garbage Collection wird ausgeführt. +Process files even if seems to be corrupted: Dateien auch verarbeiten, wenn sie beschädigt wirken +Process small files in the foreground: Kleine Dateien im Vordergrund bearbeiten +Progress: Fortschritt +Property Encryption: Immobilienverschlüsselung PureJS fallback (Fast, W/O WebAssembly): PureJS-Fallback (schnell, ohne WebAssembly) Purge all download/upload cache.: Gesamten Download-/Upload-Cache leeren. Purge all journal counter: Alle Journal-Zähler leeren @@ -171,12 +1186,172 @@ Rebuild local and remote database with local files.: Lokale und Remote-Datenbank Rebuilding Operations (Remote Only): Neuaufbau-Vorgänge (nur Remote) Recreate all: Alle neu erstellen Recreate missing chunks for all files: Fehlende Chunks für alle Dateien neu erstellen +RedFlag: + Fetch: + Method: + Desc: >- + Wie möchten Sie abrufen? + + - %{RedFlag.Fetch.Method.FetchSafer}. + **Wenig Datenverkehr**, **hohe CPU-Last**, **geringes Risiko** + Empfohlen, wenn ... + - Dateien möglicherweise inkonsistent sind + - es nicht sehr viele Dateien gibt + - %{RedFlag.Fetch.Method.FetchSmoother}. + **Wenig Datenverkehr**, **mäßige CPU-Last**, **geringes bis mäßiges Risiko** + Empfohlen, wenn ... + - Dateien wahrscheinlich konsistent sind + - Sie viele Dateien haben. + - %{RedFlag.Fetch.Method.FetchTraditional}. + **Hoher Datenverkehr**, **geringe CPU-Last**, **geringes bis mäßiges Risiko** + + >[!INFO]- Details + + > ## %{RedFlag.Fetch.Method.FetchSafer}. + + > **Wenig Datenverkehr**, **hohe CPU-Last**, **geringes Risiko** + + > Diese Option erstellt zuerst eine lokale Datenbank aus vorhandenen + lokalen Dateien, bevor Daten aus der entfernten Quelle abgerufen werden. + + > Wenn passende Dateien lokal und remote vorhanden sind, werden nur die + Unterschiede übertragen. + + > Dateien, die an beiden Orten vorhanden sind, werden jedoch zunächst + als Konfliktdateien behandelt. Wenn sie nicht wirklich in Konflikt + stehen, werden sie automatisch aufgelöst, aber das kann einige Zeit + dauern. + + > Dies ist im Allgemeinen die sicherste Methode und minimiert das Risiko + von Datenverlust. + + > ## %{RedFlag.Fetch.Method.FetchSmoother}. + + > **Wenig Datenverkehr**, **mäßige CPU-Last**, **geringes bis mäßiges + Risiko** (je nach Vorgang) + + > Diese Option erstellt zuerst Chunks aus lokalen Dateien für die + Datenbank und ruft dann Daten ab. Dadurch werden nur lokal fehlende + Chunks übertragen. Alle Metadaten werden jedoch aus der entfernten + Quelle übernommen. + + > Lokale Dateien werden beim Start mit diesen Metadaten verglichen. + Inhalte, die als neuer gelten, überschreiben ältere Inhalte (nach + Änderungszeit). Dieses Ergebnis wird anschließend zurück in die + entfernte Datenbank synchronisiert. + + > Dies ist in der Regel sicher, wenn die lokalen Dateien wirklich den + neuesten Zeitstempel haben. Es kann jedoch Probleme verursachen, wenn + eine Datei einen neueren Zeitstempel, aber älteren Inhalt hat (wie die + ursprüngliche `welcome.md`). + + > Diese Methode verwendet weniger CPU und ist schneller als + "%{RedFlag.Fetch.Method.FetchSafer}", kann aber bei unvorsichtiger + Verwendung zu Datenverlust führen. + + > ## %{RedFlag.Fetch.Method.FetchTraditional}. + + > **Hoher Datenverkehr**, **geringe CPU-Last**, **geringes bis mäßiges + Risiko** (je nach Vorgang) + + > Alles wird aus der entfernten Quelle abgerufen. + + > Ähnlich wie %{RedFlag.Fetch.Method.FetchSmoother}, aber alle Chunks + werden aus der entfernten Quelle abgerufen. + + > Dies ist die traditionellste Abrufmethode und benötigt in der Regel + den meisten Netzwerkverkehr und die meiste Zeit. Außerdem besteht ein + ähnliches Risiko, entfernte Dateien zu überschreiben, wie bei der Option + '%{RedFlag.Fetch.Method.FetchSmoother}'. + + > Sie gilt jedoch oft als die stabilste Methode, weil sie am längsten + etabliert und am direktesten ist. + FetchSafer: Erstellen Sie eine lokale Datenbank einmal vor dem Abrufen + FetchSmoother: Erstellen Sie lokale Datei-Chunks vor dem Abruf + FetchTraditional: Alles aus der Ferne holen + Title: Wie wollen Sie holen? + FetchRemoteConfig: + Applied: Remote configuration applied. + Buttons: + Cancel: Nein, lokale Einstellungen verwenden + Fetch: Ja, holen und Remote-Einstellungen anwenden + Retry: Retry (recommended) + SkipAndProceed: Skip and proceed + FailedMessage: Could not fetch configuration from remote. If you are new to the + Self-hosted LiveSync, this might be expected. If not, you should check + your network or server settings. + FailedTitle: Fetch Remote Configuration Failed + MatchesLocal: Remote configuration matches local configuration. No changes applied. + Message: Möchten Sie abrufen und remote gespeicherte Präferenzeinstellungen auf + das Gerät anwenden? + NotApplied: Remote configuration not applied. + SettingsDiffered: Your settings differed slightly from the server's. The plug-in + has supplemented the incompatible parts with the server settings! + Title: Fetch Remote Konfiguration + Log: + FetchEverythingCancelled: Fetch everything cancelled by user. + FetchEverythingCompleted: Fetch everything operation completed. Vault files will be gradually synced. + RebuildEverythingCancelled: Rebuild everything cancelled by user. + RebuildEverythingCompleted: Rebuild everything operation completed. + VaultInitialisationError: Error during vault initialisation. + VaultInitialisationProcessError: Error during vault initialisation process. + ResumeProcessingPrompt: Do you want to resume file and database processing, and restart obsidian now? +Reducing the frequency with which on-disk changes are reflected into the DB: + Reduzieren der Frequenz, mit der On-Disk-Änderungen in die DB reflektiert + werden +Region: Region Remediation: Problembehebung Remediation Setting Changed: Problembehebungs-Einstellung geändert Remote Database Tweak (In sunset): Remote-Datenbank-Optimierung (wird eingestellt) Remote Databases: Remote-Datenbanken Remote name: Remote-Name +Remote server type: Typ des Remoteservers +Remote Type: Fernbedienung Rename: Umbenennen +Replicator: + Dialogue: + Locked: + Action: + Dismiss: Zurück zur Bestätigung + Fetch: Synchronisation auf diesem Gerät zurücksetzen + Unlock: Entsperren Sie die Remote-Datenbank + Message: + _value: > + Die entfernte Datenbank ist gesperrt. Das liegt an einem Neuaufbau auf + einem der Geräte. + + Dieses Gerät soll daher die Verbindung zurückhalten, um eine + Beschädigung der Datenbank zu vermeiden. + + + Es gibt drei mögliche Aktionen: + + + - %{Replicator.Dialogue.Locked.Action.Fetch} + Der bevorzugte und zuverlässigste Weg. Die lokale Datenbank wird einmal verworfen und alle Synchronisierungsinformationen werden erneut aus der entfernten Datenbank übernommen. In den meisten Fällen ist das sicher. Es dauert jedoch etwas und sollte bei stabiler Netzwerkverbindung durchgeführt werden. + - %{Replicator.Dialogue.Locked.Action.Unlock} + Diese Methode sollte nur verwendet werden, wenn wir bereits durch andere Replikationsmethoden zuverlässig synchronisiert sind. Das bedeutet nicht einfach, dass die Dateien gleich aussehen. Wenn du unsicher bist, solltest du sie vermeiden. + - %{Replicator.Dialogue.Locked.Action.Dismiss} + Dadurch wird der Vorgang abgebrochen. Beim nächsten Versuch wird erneut gefragt. + Fetch: Es ist alles geplant. Plug-in wird neu gestartet, um es auszuführen. + Unlocked: Die Remote-Datenbank wurde entsperrt. Bitte wiederholen Sie die + Operation. + Title: Gesperrt + Message: + Cleaned: Die Datenbankreinigung erfolgt im Prozess. Wiederholung wurde aufgehoben + InitialiseFatalError: Kein Replikator ist verfügbar, das ist der tödliche Fehler. + Pending: Einige Dateiereignisse sind anhängig. Die Replikation wurde aufgehoben. + SomeModuleFailed: Die Replikation wurde durch einen Modulausfall aufgehoben + VersionUpFlash: Ein Update wurde erkannt. Bitte öffnen Sie den Dialog + Einstellungen und überprüfen Sie das Change Log. Die Replikation wurde + aufgehoben. +Requires restart of Obsidian: Erfordert Neustart von Obsidian +Requires restart of Obsidian.: Erfordert den Neustart von Obsidian. +Rerun Onboarding Wizard: Einrichtungsassistent erneut ausführen +Rerun the onboarding wizard to set up Self-hosted LiveSync again.: + Führen Sie den Onboarding-Assistent erneut aus, um Self-hosted LiveSync wieder + einzurichten. +Rerun Wizard: Assistent erneut ausführen Resend: Erneut senden Resend all chunks to the remote.: Alle Chunks erneut an das Remote senden. Reset: Zurücksetzen @@ -184,12 +1359,16 @@ Reset all: Alles zurücksetzen Reset all journal counter: Alle Journal-Zähler zurücksetzen Reset journal received history: Empfangsverlauf des Journals zurücksetzen Reset journal sent history: Sendeverlauf des Journals zurücksetzen +Reset notification threshold and check the remote database usage: Meldeschwelle zurücksetzen und die Remote-Datenbanknutzung überprüfen Reset received: Empfang zurücksetzen Reset sent history: Sendeverlauf zurücksetzen Reset Synchronisation information: Synchronisationsinformationen zurücksetzen Reset Synchronisation on This Device: Synchronisation auf diesem Gerät zurücksetzen +Reset the remote storage size threshold and check the remote storage size again.: + Setzen Sie die Remote-Speichergrößenschwelle zurück und überprüfen Sie die + Remote-Speichergröße erneut. Resolve All: Alle auflösen -Resolve all conflicted files: Alle Konfliktdateien auflösen +Resolve all conflicted files: Lösen Sie alle Konfliktdateien Resolve All conflicted files by the newer one: Alle Konfliktdateien mit der neueren Version auflösen "Resolve all conflicted files by the newer one. Caution: This will overwrite the older one, and cannot resurrect the overwritten one.": "Löst alle Konfliktdateien zugunsten der neueren Version auf. Achtung: Dadurch @@ -197,30 +1376,55 @@ Resolve All conflicted files by the newer one: Alle Konfliktdateien mit der neue werden." Restart Now: Jetzt neu starten Restore or reconstruct local database from remote.: Lokale Datenbank aus dem Remote wiederherstellen oder neu aufbauen. +Run Doctor: Der Doktor +S3/MinIO/R2 Object Storage: S3-/MinIO-/R2-Objektspeicher +Save settings to a markdown file. You will be notified when new settings arrive. You can set different files by the platform.: + Speichern Sie Einstellungen in eine Markierungsdatei. Sie werden informiert, + wenn neue Einstellungen eintreffen. Sie können verschiedene Dateien auf der + Plattform festlegen. +Saving will be performed forcefully after this number of seconds.: Nach dieser Anzahl von Sekunden wird die Einsparung kraftvoll durchgeführt. +Scan a QR Code (Recommended for mobile): QR-Code scannen (für Mobilgeräte empfohlen) +Scan changes on customization sync: Scannen von Änderungen auf Anpassungssynchronisation +Scan customization automatically: Scannen Anpassung automatisch +Scan customization before replicating.: Scannen Anpassung vor der Replikation. +Scan customization every 1 minute.: Scannen Anpassung alle 1 Minute. +Scan customization periodically: Scannen Anpassung periodisch +Scan for hidden files before replication: Scannen von versteckten Dateien vor der Replikation +Scan hidden files periodically: Scannen versteckte Dateien periodisch +Scan the QR code displayed on an active device using this device's camera.: + Scannen Sie den auf einem aktiven Gerät angezeigten QR-Code mit der Kamera + dieses Geräts。 Schedule and Restart: Planen und neu starten Scram!: Notfallmaßnahmen +Seconds, 0 to disable: Sekunden, 0 zu deaktivieren +Seconds. Saving to the local database will be delayed until this value after we stop typing or saving.: + Zweite. Die Speicherung in der lokalen Datenbank wird bis zu diesem Wert + verzögert, nachdem wir das Eingeben oder Speichern stoppen. +Secret Key: Geheimer Schlüssel Select the database adapter to use.: Wählen Sie den zu verwendenden Datenbankadapter aus. +Selector: Auswahl Send: Senden Send chunks: Chunks senden +Server URI: Server-URI Setting: GenerateKeyPair: - Desc: >- + Desc: >+ Wir haben ein Schlüsselpaar erzeugt! - Hinweis: Dieses Schlüsselpaar wird nie wieder angezeigt. Bitte bewahren - Sie es an einem sicheren Ort auf. Wenn Sie es verlieren, müssen Sie ein - neues Schlüsselpaar erzeugen. + Hinweis: Dieses Schlüsselpaar wird nie wieder angezeigt. Bitte speichern + Sie es an einem sicheren Ort. Wenn Sie es verlieren, müssen Sie ein neues + Schlüsselpaar erzeugen. - Hinweis 2: Der öffentliche Schlüssel liegt im SPKI-Format vor, der private - Schlüssel im PKCS8-Format. Zur besseren Handhabung werden Zeilenumbrüche - im öffentlichen Schlüssel zu `\n` umgewandelt. + Hinweis 2: Der öffentliche Schlüssel ist im spki-Format und der private + Schlüssel im pkcs8-Format. Der Einfachheit halber werden Zeilenumbrüche im + öffentlichen Schlüssel in `\n` umgewandelt. - Hinweis 3: Der öffentliche Schlüssel sollte in der Remote-Datenbank - hinterlegt werden, der private Schlüssel auf den lokalen Geräten. + Hinweis 3: Der öffentliche Schlüssel muss in der entfernten Datenbank + konfiguriert werden, der private Schlüssel auf den lokalen Geräten. - >[!NUR FÜR IHRE AUGEN]- + >[!FOR YOUR EYES ONLY]- >
@@ -249,7 +1453,7 @@ Setting: >
- >[!Beides zum Kopieren]- + >[!Both for copying]- > @@ -268,145 +1472,1061 @@ Setting: > > - Title: Neues Schlüsselpaar wurde erzeugt! -Show full banner: Vollständiges Banner anzeigen + + Title: Neues Schlüsselpaar wurde generiert! + TroubleShooting: + _value: Probleme + Doctor: + _value: Ein Arzt + Desc: Erkennt nicht optimale Einstellungen. (Sammlung wie während der Migration) + ScanBrokenFiles: + _value: Scannen von Dateien + Desc: Scannen nach Dateien, die nicht korrekt in der Datenbank gespeichert + werden. +SettingTab: + Message: + AskRebuild: Ihre Änderungen erfordern das Abrufen von der Remote-Datenbank. + Willst du fortfahren? +Setup URI dialog cancelled.: Setup-URI-Dialog abgebrochen. +Setup: + Apply: + Buttons: + ApplyAndFetch: Apply und Fetch + ApplyAndMerge: Anwenden und Verschmelzen + ApplyAndRebuild: Anwenden und wieder aufbauen + Cancel: Discard und Abbrechen + OnlyApply: Nur anwenden + Message: >- + Die neue Konfiguration ist fertig. Lassen Sie uns es anwenden. + + Es gibt verschiedene Möglichkeiten, dies anzuwenden: + + + - Apply und Fetch + + Konfigurieren Sie dieses Gerät als neuer Client. Nach der Anwendung, + synchronisieren Sie vom Remote-Server. + + - Anwenden und Verschmelzen + + Konfigurieren Sie auf einem Gerät, das bereits die Datei hat. Es + verarbeitet die lokalen Dateien und überträgt die Unterschiede. Konflikte + können entstehen. + + - Anwenden und wieder aufbauen + + Wiederherstellen der Fernbedienung mit lokalen Dateien. Dies geschieht + typischerweise, wenn der Server beschädigt wird oder wir von Grund auf + starten möchten. + + Andere Geräte werden gesperrt und benötigt, um wieder zu holen. + + - Nur bewerben + + Nur anwenden. Konflikte können entstehen, wenn ein Wiederaufbau + erforderlich ist. + Title: Neue Konfiguration aus dem ${method} anwenden + WarningRebuildRecommended: "HINWEIS: Nach der Einstellung der Einstellungen + wurde festgestellt, dass ein Rebuild erforderlich ist; Nur Import wird + nicht empfohlen." + Command: + CopySetupUri: Copy settings as a new setup URI + CopySetupUriFull: Copy settings as a new setup URI (Full) + CopySetupUriWithSync: Copy settings as a new setup URI (With customization sync) + OpenSetupUri: Use the copied setup URI (Formerly Open setup URI) + ShowSettingsQrCode: Show settings as a QR code + Doctor: + Buttons: + No: Nein, nicht jetzt + Yes: Ja, bitte den Doktor konsultieren + Message: >- + Selbstgehostete LiveSync ist in der Geschichte allmählich länger geworden + und einige empfohlene Einstellungen haben sich geändert. + + + Nun, Setup ist eine sehr gute Zeit, dies zu tun. + + + Möchten Sie Doctor ausführen, um zu überprüfen, ob die importierten + Einstellungen im Vergleich zum neuesten Zustand optimal sind? + Title: Möchten Sie den Arzt konsultieren? + EncryptSettingsPassphrase: The passphrase to encrypt the setup URI + EncryptSettingsTitle: Encrypt your settings + FetchRemoteConf: + Buttons: + Fetch: Ja, bitte holen Sie die Konfiguration + Skip: Nein, bitte benutzen Sie die Einstellungen im URI + Message: >- + Wenn wir bereits einmal mit einem anderen Gerät synchronisiert sind, + speichert die Remote-Datenbank die geeigneten Konfigurationswerte zwischen + den synchronisierten Geräten. Das Plug-in möchte sie für eine robuste + Konfiguration abrufen. + + + Aber wir müssen sicherstellen, dass die eine Sache. Sind wir derzeit in + einer Situation, in der wir auf das Netzwerk sicher zugreifen und die + Einstellungen abrufen können? + + + Hinweis: Meistens sind Sie sicher, dies zu tun, dass Ihre Remote-Datenbank + mit einem SSL-Zertifikat gehostet wird und Ihr Netzwerk nicht + beeinträchtigt wird. + Title: Fetch-Konfiguration aus der Remote-Datenbank? + Log: + ProtocolHandlerRegistrationFailed: Failed to register protocol handler. This + feature may not work in some environments. + SetupUriCopiedToClipboard: Setup URI copied to clipboard + QRCode: >- + We have generated a QR code to transfer the settings. Please scan the QR + code with your phone or other device. + + Note: The QR code is not encrypted, so be careful to open this. + + + >[!FOR YOUR EYES ONLY]- + + >
${qr_image}
+ QRCodeTitle: Settings QR Code + RemoteE2EE: + AdvancedTitle: Erweitert + AlgorithmWarning: Wenn Sie den Verschlüsselungsalgorithmus ändern, können Sie + nicht mehr auf Daten zugreifen, die zuvor mit einem anderen Algorithmus + verschlüsselt wurden. Stellen Sie sicher, dass alle Ihre Geräte denselben + Algorithmus verwenden, damit der Zugriff auf Ihre Daten erhalten bleibt. + ButtonCancel: Abbrechen + ButtonProceed: Fortfahren + DefaultAlgorithmDesc: In den meisten Fällen sollten Sie beim Standardalgorithmus + (${algorithm}) bleiben. Diese Einstellung ist nur erforderlich, wenn Sie + bereits einen Vault haben, der in einem anderen Format verschlüsselt + wurde. + Guidance: Bitte konfigurieren Sie Ihre Einstellungen für die + Ende-zu-Ende-Verschlüsselung. + LabelEncrypt: Ende-zu-Ende-Verschlüsselung + LabelEncryptionAlgorithm: Verschlüsselungsalgorithmus + LabelObfuscateProperties: Eigenschaften verschleiern + MultiDestinationWarning: Diese Einstellung muss auch dann identisch sein, wenn + Sie sich mit mehreren Synchronisationszielen verbinden. + ObfuscatePropertiesDesc: Das Verschleiern von Eigenschaften (z. B. Dateipfad, + Größe sowie Erstellungs- und Änderungsdatum) fügt eine zusätzliche + Sicherheitsebene hinzu, da die Struktur und die Namen Ihrer Dateien und + Ordner auf dem Remote-Server schwerer erkennbar sind. Das schützt Ihre + Privatsphäre und erschwert es unbefugten Personen, Informationen über Ihre + Daten abzuleiten. + PassphraseValidationLine1: Bitte beachten Sie, dass die Passphrase für die + Ende-zu-Ende-Verschlüsselung erst geprüft wird, wenn der + Synchronisationsvorgang tatsächlich beginnt. Dies ist eine + Sicherheitsmaßnahme zum Schutz Ihrer Daten. + PassphraseValidationLine2: Daher bitten wir Sie, beim manuellen Konfigurieren + der Serverinformationen äußerst vorsichtig zu sein. Wenn eine falsche + Passphrase eingegeben wird, werden die Daten auf dem Server beschädigt. + Bitte haben Sie Verständnis dafür, dass dies beabsichtigtes Verhalten ist. + PlaceholderPassphrase: Geben Sie Ihre Passphrase ein + StronglyRecommendedLine1: Wenn Sie die Ende-zu-Ende-Verschlüsselung aktivieren, + werden Ihre Daten auf Ihrem Gerät verschlüsselt, bevor sie an den + Remote-Server gesendet werden. Das bedeutet, dass selbst bei Zugriff auf + den Server niemand Ihre Daten ohne die Passphrase lesen kann. Merken Sie + sich Ihre Passphrase unbedingt, da sie auch auf anderen Geräten zum + Entschlüsseln Ihrer Daten benötigt wird. + StronglyRecommendedLine2: "Bitte beachten Sie außerdem: Wenn Sie + Peer-to-Peer-Synchronisation verwenden, wird diese Konfiguration auch dann + genutzt, wenn Sie künftig zu anderen Methoden wechseln und sich mit einem + Remote-Server verbinden." + StronglyRecommendedTitle: Dringend empfohlen + Title: Ende-zu-Ende-Verschlüsselung + ScanQRCode: + ButtonClose: Diesen Dialog schließen + Guidance: Bitte folgen Sie den untenstehenden Schritten, um die Einstellungen + von Ihrem vorhandenen Gerät zu importieren. + Step1: Lassen Sie auf diesem Gerät bitte diesen Vault geöffnet. + Step2: Öffnen Sie auf dem Quellgerät Obsidian. + Step3: Führen Sie auf dem Quellgerät im Befehlsmenü den Befehl „Einstellungen + als QR-Code anzeigen“ aus. + Step4: Wechseln Sie auf diesem Gerät zur Kamera-App oder verwenden Sie einen + QR-Code-Scanner, um den angezeigten QR-Code zu scannen. + Title: QR-Code scannen + SetupUri: Setup URI + ShowQRCode: + _value: QR-Code anzeigen + Desc: QR-Code anzeigen, um die Einstellungen zu übertragen. + UseSetupURI: + ButtonCancel: Abbrechen + ButtonProceed: Einstellungen testen und fortfahren + ErrorFailedToParse: Die Setup-URI konnte nicht verarbeitet werden. Bitte prüfen + Sie URI und Passphrase. + ErrorPassphraseRequired: Bitte geben Sie die Passphrase des Vaults ein. + GuidanceLine1: Bitte geben Sie die Setup-URI ein, die während der + Servereinrichtung oder auf einem anderen Gerät erzeugt wurde, zusammen mit + der Passphrase des Vaults. + GuidanceLine2: Sie können eine neue Setup-URI erzeugen, indem Sie im Befehlsmenü + den Befehl „Einstellungen als neue Setup-URI kopieren“ ausführen. + InvalidInfo: Die Setup-URI ist ungültig. Bitte prüfen Sie sie und versuchen Sie + es erneut. + LabelPassphrase: Vault-Passphrase + LabelSetupURI: Setup-URI + PlaceholderPassphrase: Geben Sie die Passphrase Ihres Vaults ein + Title: Setup-URI eingeben + ValidInfo: Die Setup-URI ist gültig und kann verwendet werden. +Should we keep folders that don't have any files inside?: Sollten wir Ordner halten, die keine Dateien haben? +Should we only check for conflicts when a file is opened?: Sollten wir nur nach Konflikten suchen, wenn eine Datei geöffnet wird? +Should we prompt you about conflicting files when a file is opened?: + Sollten wir Sie beim Öffnen einer Datei über widersprüchliche Dateien + auffordern? +Should we prompt you for every single merge, even if we can safely merge automatcially?: + Sollten wir Sie für jede einzelne Zusammenführung auffordern, auch wenn wir + automatisch sicher zusammenführen können? +Show full banner: Volle Banner anzeigen +Show history: Geschichte zeigen Show icon only: Nur Symbol anzeigen -Show status icon instead of file warnings banner: Statussymbol statt Dateiwarnungsbanner anzeigen +Show only notifications: Nur Benachrichtigungen anzeigen +Show status as icons only: Status nur als Symbole anzeigen +Show status icon instead of file warnings banner: Statussymbol anstelle von Dateiwarnungen Banner anzeigen +Show status inside the editor: Status im Editor anzeigen +Show status on the status bar: Status auf der Statusleiste anzeigen +Show verbose log. Please enable if you report an issue.: Verbose-Log anzeigen. Bitte aktivieren Sie, wenn Sie ein Problem melden. +"Some devices have differing progress values (max: ${maxProgress}, min: ${minProgress}).\nThis may indicate that some devices have not completed synchronisation, which could lead to conflicts. Strongly recommend confirming that all devices are synchronised before proceeding.": >- + Einige Geräte haben unterschiedliche Fortschrittswerte (max: ${maxProgress}, + min: ${minProgress}). + + Das kann darauf hindeuten, dass einige Geräte die Synchronisation noch nicht + abgeschlossen haben, was zu Konflikten führen könnte. Es wird dringend + empfohlen, vor dem Fortfahren zu bestätigen, dass alle Geräte synchronisiert + sind. +Starts synchronisation when a file is saved.: Startet die Synchronisation, wenn eine Datei gespeichert wird. +Stop reflecting database changes to storage files.: Stoppen Sie, die Datenbankänderungen in Speicherdateien widerzuspiegeln. +Stop watching for file changes.: Hör auf, auf Dateiänderungen zu achten. +Suppress notification of hidden files change: Suppress Benachrichtigung von versteckten Dateien ändern +Suspend database reflecting: Suspend Datenbank reflektierend +Suspend file watching: Suspend Dateibeobachtung Switch to IDB: Zu IDB wechseln Switch to IndexedDB: Zu IndexedDB wechseln +Sync after merging file: Synchronisieren nach der Fusionsdatei +Sync automatically after merging files: Synchronisieren automatisch nach dem Zusammenfügen von Dateien +Sync Mode: Synthesizer +Sync on Editor Save: Sync auf Editor speichern +Sync on File Open: Sync auf Datei öffnen +Sync on Save: Sync auf Speichern +Sync on Startup: Sync auf Startup +Synchronisation utilising journal files. You must have set up an S3/MinIO/R2 compatible object storage.: + Synchronisation über Journaldateien. Sie müssen einen S3/MinIO/R2-kompatiblen + Objektspeicher eingerichtet haben。 Synchronising files: Zu synchronisierende Dateien Syncing: Synchronisierung Target patterns: Zielmuster +Testing only - Resolve file conflicts by syncing newer copies of the file, this can overwrite modified files. Be Warned.: + Nur testen - Dateikonflikte lösen, indem Sie neuere Kopien der Datei + synchronisieren, kann dies geänderte Dateien überschreiben. Achtung! +The delay for consecutive on-demand fetches: Die Verzögerung für aufeinanderfolgende On-Demand-Fetches +"The following accepted nodes are missing its node information:\n- ${missingNodes}\n\nThis indicates that they have not been connected for some time or have been left on an older version.\nIt is preferable to update all devices if possible. If you have any devices that are no longer in use, you can clear all accepted nodes by locking the remote once.": >- + Für die folgenden akzeptierten Knoten fehlen die Knoteninformationen: + + - ${missingNodes} + + + Das deutet darauf hin, dass sie seit einiger Zeit nicht verbunden waren oder + noch eine ältere Version verwenden. + + Es ist nach Möglichkeit besser, zunächst alle Geräte zu aktualisieren. Wenn + Sie Geräte haben, die nicht mehr verwendet werden, können Sie alle + akzeptierten Knoten löschen, indem Sie die Remote-Datenbank einmal sperren. +The Hash algorithm for chunk IDs: Der Hash-Algorithmus für chunk IDs +The maximum duration for which chunks can be incubated within the document. Chunks exceeding this period will graduate to independent chunks.: + Die maximale Dauer, für die Stücke im Dokument inkubiert werden können. + Chunks, die diese Zeit überschreiten, werden sich an unabhängige Stücke + graduieren. +The maximum number of chunks that can be incubated within the document. Chunks exceeding this number will immediately graduate to independent chunks.: + Die maximale Anzahl an Stücken, die innerhalb des Dokuments inkubiert werden + können. Chunks, die diese Zahl überschreiten, werden sofort selbständige + Stücke absolvieren. +The maximum total size of chunks that can be incubated within the document. Chunks exceeding this size will immediately graduate to independent chunks.: + Die maximale Gesamtgröße der Stücke, die innerhalb des Dokuments inkubiert + werden können. Chunks, die diese Größe überschreiten, werden sofort + selbständige Stücke absolvieren. +The minimum interval for automatic synchronisation on event.: Das Mindestintervall für die automatische Synchronisation auf dem Event. +This feature enables direct synchronisation between devices. No server is required, but both devices must be online at the same time for synchronisation to occur, and some features may be limited. Internet connection is only required to signalling (detecting peers) and not for data transfer.: + Diese Funktion ermöglicht die direkte Synchronisation zwischen Geräten. Es + wird kein Server benötigt, aber beide Geräte müssen gleichzeitig online sein, + damit synchronisiert werden kann, und einige Funktionen können eingeschränkt + sein. Eine Internetverbindung wird nur für das Signalling (Erkennen von Peers) + benötigt, nicht für die Datenübertragung。 +This is an advanced option for users who do not have a URI or who wish to configure detailed settings.: + Dies ist eine erweiterte Option für Benutzer, die keine URI haben oder + detaillierte Einstellungen manuell konfigurieren möchten。 +This is the most suitable synchronisation method for the design. All functions are available. You must have set up a CouchDB instance.: + Dies ist die für das Design am besten geeignete Synchronisationsmethode. Alle + Funktionen sind verfügbar. Sie müssen eine CouchDB-Instanz eingerichtet haben。 +This passphrase will not be copied to another device. It will be set to `Default` until you configure it again.: + Diese Passphrase wird nicht auf ein anderes Gerät kopiert werden. Es wird auf + `Default` gesetzt, bis Sie es erneut konfigurieren. This will recreate chunks for all files. If there were missing chunks, this may fix the errors.: Dadurch werden die Chunks für alle Dateien neu erstellt. Falls Chunks fehlen, können die Fehler dadurch behoben werden. -Verify all: Alle prüfen -Verify and repair all files: Alle Dateien prüfen und reparieren -xxhash32 (Fast but less collision resistance): xxhash32 (schnell, aber geringere Kollisionsresistenz) -xxhash64 (Fastest): xxhash64 (am schnellsten) -"Welcome to Self-hosted LiveSync": "Willkommen bei Self-hosted LiveSync" -"We will now guide you through a few questions to simplify the synchronisation setup.": "Wir führen Sie nun durch einige Fragen, um die Synchronisationseinrichtung zu vereinfachen." -"First, please select the option that best describes your current situation.": "Wählen Sie bitte zuerst die Option aus, die Ihre aktuelle Situation am besten beschreibt." -"I am setting this up for the first time": "Ich richte dies zum ersten Mal ein" -"(Select this if you are configuring this device as the first synchronisation device.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": "(Wählen Sie dies, wenn Sie dieses Gerät als erstes Synchronisationsgerät einrichten.) Diese Option ist geeignet, wenn Sie LiveSync neu verwenden und von Grund auf einrichten möchten." -"I am adding a device to an existing synchronisation setup": "Ich füge ein Gerät zu einer bestehenden Synchronisationseinrichtung hinzu" -"(Select this if you are already using synchronisation on another computer or smartphone.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": "(Wählen Sie dies, wenn Sie die Synchronisation bereits auf einem anderen Computer oder Smartphone verwenden.) Diese Option ist geeignet, wenn Sie dieses Gerät zu einer bestehenden LiveSync-Einrichtung hinzufügen möchten." -"Yes, I want to set up a new synchronisation": "Ja, ich möchte eine neue Synchronisation einrichten" -"Yes, I want to add this device to my existing synchronisation": "Ja, ich möchte dieses Gerät zu meiner bestehenden Synchronisation hinzufügen" -"No, please take me back": "Nein, bitte zurück" -"Device Setup Method": "Einrichtungsmethode für das Gerät" -"You are adding this device to an existing synchronisation setup.": "Sie fügen dieses Gerät zu einer bestehenden Synchronisationseinrichtung hinzu." -"Please select a method to import the settings from another device.": "Bitte wählen Sie eine Methode, um die Einstellungen von einem anderen Gerät zu importieren." -"Use a Setup URI (Recommended)": "Setup-URI verwenden (empfohlen)" -"Paste the Setup URI generated from one of your active devices.": "Fügen Sie die Setup-URI ein, die auf einem Ihrer aktiven Geräte erzeugt wurde。" -"Scan a QR Code (Recommended for mobile)": "QR-Code scannen (für Mobilgeräte empfohlen)" -"Scan the QR code displayed on an active device using this device's camera.": "Scannen Sie den auf einem aktiven Gerät angezeigten QR-Code mit der Kamera dieses Geräts。" -"Enter the server information manually": "Serverinformationen manuell eingeben" -"Configure the same server information as your other devices again, manually, very advanced users only.": "Geben Sie dieselben Serverinformationen wie auf Ihren anderen Geräten erneut manuell ein. Nur für sehr erfahrene Benutzer。" -"Proceed with Setup URI": "Mit Setup-URI fortfahren" -"I know my server details, let me enter them": "Ich kenne meine Serverdaten, ich gebe sie selbst ein" -"Please select an option to proceed": "Bitte wählen Sie eine Option, um fortzufahren" -"Connection Method": "Verbindungsmethode" -"We will now proceed with the server configuration.": "Wir fahren nun mit der Serverkonfiguration fort。" -"How would you like to configure the connection to your server?": "Wie möchten Sie die Verbindung zu Ihrem Server konfigurieren?" -"A Setup URI is a single string of text containing your server address and authentication details. Using a URI, if one was generated by your server installation script, provides a simple and secure configuration.": "Eine Setup-URI ist eine einzelne Zeichenfolge, die Ihre Serveradresse und Authentifizierungsdaten enthält. Wenn Ihre Serverinstallation eine URI erzeugt hat, bietet deren Verwendung eine einfache und sichere Konfiguration。" -"This is an advanced option for users who do not have a URI or who wish to configure detailed settings.": "Dies ist eine erweiterte Option für Benutzer, die keine URI haben oder detaillierte Einstellungen manuell konfigurieren möchten。" -"Enter Server Information": "Serverinformationen eingeben" -"Please select the type of server to which you are connecting.": "Bitte wählen Sie den Servertyp aus, mit dem Sie sich verbinden。" -"Continue to CouchDB setup": "Weiter zur CouchDB-Einrichtung" -"Continue to S3/MinIO/R2 setup": "Weiter zur S3/MinIO/R2-Einrichtung" -"Continue to Peer-to-Peer only setup": "Weiter zur reinen Peer-to-Peer-Einrichtung" -"This is the most suitable synchronisation method for the design. All functions are available. You must have set up a CouchDB instance.": "Dies ist die für das Design am besten geeignete Synchronisationsmethode. Alle Funktionen sind verfügbar. Sie müssen eine CouchDB-Instanz eingerichtet haben。" -"S3/MinIO/R2 Object Storage": "S3-/MinIO-/R2-Objektspeicher" -"Synchronisation utilising journal files. You must have set up an S3/MinIO/R2 compatible object storage.": "Synchronisation über Journaldateien. Sie müssen einen S3/MinIO/R2-kompatiblen Objektspeicher eingerichtet haben。" -"Peer-to-Peer only": "Nur Peer-to-Peer" -"This feature enables direct synchronisation between devices. No server is required, but both devices must be online at the same time for synchronisation to occur, and some features may be limited. Internet connection is only required to signalling (detecting peers) and not for data transfer.": "Diese Funktion ermöglicht die direkte Synchronisation zwischen Geräten. Es wird kein Server benötigt, aber beide Geräte müssen gleichzeitig online sein, damit synchronisiert werden kann, und einige Funktionen können eingeschränkt sein. Eine Internetverbindung wird nur für das Signalling (Erkennen von Peers) benötigt, nicht für die Datenübertragung。" -Setup: +TweakMismatchResolve: + Action: + Dismiss: Entlassung + UseConfigured: Verwenden Sie die konfigurierten Einstellungen + UseMine: Remote-Datenbankeinstellungen aktualisieren + UseMineAcceptIncompatible: Aktualisieren Sie Remote-Datenbankeinstellungen, aber halten Sie wie + UseMineWithRebuild: Remote-Datenbankeinstellungen aktualisieren und wieder aufbauen + UseRemote: Anwenden von Einstellungen auf dieses Gerät + UseRemoteAcceptIncompatible: Anwenden von Einstellungen auf dieses Gerät, aber + und ignorieren Unkompatibilität + UseRemoteWithRebuild: Setzen Sie die Einstellungen auf dieses Gerät und holen Sie sich wieder + Message: + Main: >- + + Die Einstellungen in der entfernten Datenbank sind unten aufgeführt. Diese + Werte wurden von anderen Geräten konfiguriert, die mindestens einmal mit + diesem Gerät synchronisiert wurden. + + + Wenn du diese Einstellungen verwenden möchtest, wähle + %{TweakMismatchResolve.Action.UseConfigured}. + + Wenn du die Einstellungen dieses Geräts behalten möchtest, wähle + %{TweakMismatchResolve.Action.Dismiss}. + + + ${table} + + + >[!TIP] + + > Wenn du alle Einstellungen synchronisieren möchtest, verwende `Sync + settings via markdown`, nachdem du mit dieser Funktion die minimale + Konfiguration angewendet hast. + + + ${additionalMessage} + MainTweakResolving: >- + Deine Konfiguration stimmt nicht mit der auf dem entfernten Server + überein. + + + Die folgende Konfiguration sollte übereinstimmen: + + + ${table} + + + Bitte teile uns deine Entscheidung mit. + + + ${additionalMessage} + UseRemote: + WarningRebuildRecommended: >- + + >[!NOTICE] + + > Einige Änderungen sind kompatibel, können aber zusätzliche Speicher- + und Transfermengen verbrauchen. Ein Rebuild wird empfohlen. Es darf + jedoch derzeit kein Neuaufbau durchgeführt werden, sondern kann in der + zukünftigen Wartung umgesetzt werden. + + > *** Bitte stellen Sie sicher, dass Sie Zeit haben und an ein stabiles + Netzwerk angeschlossen sind, um sich zu bewerben!*** + WarningRebuildRequired: >- + + >[!WARNUNG] + + > Einige Remote-Konfigurationen sind nicht kompatibel mit der lokalen + Datenbank dieses Gerätes. Der Wiederaufbau der lokalen Datenbank ist + erforderlich. + + > *** Bitte stellen Sie sicher, dass Sie Zeit haben und an ein stabiles + Netzwerk angeschlossen sind, um sich zu bewerben!*** + WarningIncompatibleRebuildRecommended: >- + + >[!NOTICE] + + > Wir haben festgestellt, dass einige der Werte unterschiedlich sind, um + die lokale Datenbank mit der Remote-Datenbank unvereinbar zu machen. + + > Einige Änderungen sind kompatibel, können aber zusätzliche Speicher- und + Transfermengen verbrauchen. Ein Rebuild wird empfohlen. Es darf jedoch + derzeit kein Neuaufbau durchgeführt werden, sondern kann in der + zukünftigen Wartung umgesetzt werden. + + > Wenn Sie wieder aufbauen möchten, dauert es ein paar Minuten oder mehr. + ** Stellen Sie sicher, dass es jetzt sicher ist.** + WarningIncompatibleRebuildRequired: >- + + >[!WARNUNG] + + > Wir haben festgestellt, dass einige der Werte unterschiedlich sind, um + die lokale Datenbank mit der Remote-Datenbank unvereinbar zu machen. + + > Es sind entweder lokale oder Remote-Rebuilds erforderlich. Beide nehmen + ein paar Minuten oder mehr. ** Stellen Sie sicher, dass es jetzt sicher + ist.** + Table: + _value: |+ + | Wertname | Dieses Gerät | Auf Remote | + |: --- |: + ${rows} + + Row: "| ${name} | ${self} | ${remote}" + Title: + _value: Konfiguration Mismatch Entdeckt + TweakResolving: Konfiguration Mismatch Entdeckt + UseRemoteConfig: Remote Configuration verwenden +Ui: + Bucket: + Guidance: Bitte geben Sie die erforderlichen Details ein, um sich mit Ihrem + S3/MinIO/R2 kompatiblen Objektspeicherservice zu verbinden. + Common: + Signal: + Caution: Achtung + Danger: Gefahr + Notice: Hinweis + Warning: Warnung + ConflictResolver: + FileToResolve: Datei zum Auflösen + CouchDB: + Guidance: Bitte geben Sie unten die CouchDB-Serverinformationen ein. + History: + FileToView: Datei zum Anzeigen + P2P: + Guidance: Bitte geben Sie unten die Peer-to-Peer Synchronisationsinformationen ein. RemoteE2EE: - Title: Ende-zu-Ende-Verschlüsselung - Guidance: Bitte konfigurieren Sie Ihre Einstellungen für die Ende-zu-Ende-Verschlüsselung. - LabelEncrypt: Ende-zu-Ende-Verschlüsselung - PlaceholderPassphrase: Geben Sie Ihre Passphrase ein - StronglyRecommendedTitle: Dringend empfohlen - StronglyRecommendedLine1: Wenn Sie die Ende-zu-Ende-Verschlüsselung aktivieren, werden Ihre Daten auf Ihrem Gerät verschlüsselt, bevor sie an den Remote-Server gesendet werden. Das bedeutet, dass selbst bei Zugriff auf den Server niemand Ihre Daten ohne die Passphrase lesen kann. Merken Sie sich Ihre Passphrase unbedingt, da sie auch auf anderen Geräten zum Entschlüsseln Ihrer Daten benötigt wird. - StronglyRecommendedLine2: >- - Bitte beachten Sie außerdem: Wenn Sie Peer-to-Peer-Synchronisation verwenden, wird diese Konfiguration auch dann genutzt, wenn Sie künftig zu anderen Methoden wechseln und sich mit einem Remote-Server verbinden. - MultiDestinationWarning: Diese Einstellung muss auch dann identisch sein, wenn Sie sich mit mehreren Synchronisationszielen verbinden. - LabelObfuscateProperties: Eigenschaften verschleiern - ObfuscatePropertiesDesc: Das Verschleiern von Eigenschaften (z. B. Dateipfad, Größe sowie Erstellungs- und Änderungsdatum) fügt eine zusätzliche Sicherheitsebene hinzu, da die Struktur und die Namen Ihrer Dateien und Ordner auf dem Remote-Server schwerer erkennbar sind. Das schützt Ihre Privatsphäre und erschwert es unbefugten Personen, Informationen über Ihre Daten abzuleiten. - AdvancedTitle: Erweitert - LabelEncryptionAlgorithm: Verschlüsselungsalgorithmus - DefaultAlgorithmDesc: In den meisten Fällen sollten Sie beim Standardalgorithmus (${algorithm}) bleiben. Diese Einstellung ist nur erforderlich, wenn Sie bereits einen Vault haben, der in einem anderen Format verschlüsselt wurde. - AlgorithmWarning: Wenn Sie den Verschlüsselungsalgorithmus ändern, können Sie nicht mehr auf Daten zugreifen, die zuvor mit einem anderen Algorithmus verschlüsselt wurden. Stellen Sie sicher, dass alle Ihre Geräte denselben Algorithmus verwenden, damit der Zugriff auf Ihre Daten erhalten bleibt. - PassphraseValidationLine1: Bitte beachten Sie, dass die Passphrase für die Ende-zu-Ende-Verschlüsselung erst geprüft wird, wenn der Synchronisationsvorgang tatsächlich beginnt. Dies ist eine Sicherheitsmaßnahme zum Schutz Ihrer Daten. - PassphraseValidationLine2: Daher bitten wir Sie, beim manuellen Konfigurieren der Serverinformationen äußerst vorsichtig zu sein. Wenn eine falsche Passphrase eingegeben wird, werden die Daten auf dem Server beschädigt. Bitte haben Sie Verständnis dafür, dass dies beabsichtigtes Verhalten ist. - ButtonProceed: Fortfahren - ButtonCancel: Abbrechen - UseSetupURI: - Title: Setup-URI eingeben - GuidanceLine1: Bitte geben Sie die Setup-URI ein, die während der Servereinrichtung oder auf einem anderen Gerät erzeugt wurde, zusammen mit der Passphrase des Vaults. - GuidanceLine2: Sie können eine neue Setup-URI erzeugen, indem Sie im Befehlsmenü den Befehl „Einstellungen als neue Setup-URI kopieren“ ausführen. - LabelSetupURI: Setup-URI - ValidInfo: Die Setup-URI ist gültig und kann verwendet werden. - InvalidInfo: Die Setup-URI ist ungültig. Bitte prüfen Sie sie und versuchen Sie es erneut. - LabelPassphrase: Vault-Passphrase - PlaceholderPassphrase: Geben Sie die Passphrase Ihres Vaults ein - ErrorPassphraseRequired: Bitte geben Sie die Passphrase des Vaults ein. - ErrorFailedToParse: Die Setup-URI konnte nicht verarbeitet werden. Bitte prüfen Sie URI und Passphrase. - ButtonProceed: Einstellungen testen und fortfahren + AdvancedTitle: Erweiterte + AlgorithmWarning: Das Ändern des Verschlüsselungsalgorithmus verhindert den + Zugriff auf alle zuvor mit einem anderen Algorithmus verschlüsselten + Daten. ButtonCancel: Abbrechen + ButtonProceed: Verfahren + DefaultAlgorithmDesc: In den meisten Fällen sollten Sie mit dem Standardalgorithmus festhalten. + Guidance: Bitte konfigurieren Sie Ihre End-to-End-Verschlüsselungseinstellungen. + LabelEncrypt: End-to-End-Verschlüsselung + LabelEncryptionAlgorithm: Verschlüsselung Algorithm + LabelObfuscateProperties: Obfuscat Eigenschaften + ManualWarning: Bitte beachten Sie, dass die + End-to-End-Verschlüsselungspassphrase nicht validiert wird, bis der + Synchronisationsprozess tatsächlich beginnt. Dies ist eine + Sicherheitsmaßnahme zum Schutz Ihrer Daten. + MultiDestinationWarning: Diese Einstellung muss auch bei Verbindung mit mehreren + Synchronisierungszielen gleich sein. + ObfuscatePropertiesDesc: Obfuscating Eigenschaften fügt eine zusätzliche + Sicherheitsschicht hinzu, indem es schwieriger macht, die Struktur und + Namen Ihrer Dateien und Ordner auf dem Remoteserver zu identifizieren. + PassphraseValidationLine1: Bitte beachten Sie, dass die + End-to-End-Verschlüsselungspassphrase nicht validiert wird, bis der + Synchronisationsprozess tatsächlich beginnt. + PassphraseValidationLine2: Deshalb bitten wir Sie, extreme Vorsicht zu üben, + wenn Sie Serverinformationen manuell konfigurieren. + PlaceholderPassphrase: Geben Sie Ihre Passphrase + StronglyRecommended: Die End-to-End-Verschlüsselung sorgt dafür, dass Ihre Daten + auf Ihrem Gerät verschlüsselt werden, bevor Sie an den Remote-Server + gesendet werden. Dies bedeutet, dass selbst wenn jemand Zugriff auf den + Server erhält, sie nicht in der Lage sein, Ihre Daten ohne die Passphrase + zu lesen. + StronglyRecommendedLine1: Die End-to-End-Verschlüsselung sorgt dafür, dass Ihre + Daten auf Ihrem Gerät verschlüsselt werden, bevor Sie an den Remote-Server + gesendet werden. + StronglyRecommendedLine2: Beachten Sie auch, dass, wenn Sie + Peer-to-Peer-Synchronisation verwenden, diese Konfiguration verwendet + wird, wenn Sie auf andere Methoden wechseln und in Zukunft mit einem + Remote-Server verbinden. + StronglyRecommendedTitle: Stark empfohlen + Title: End-to-End-Verschlüsselung + WarningSameSetting: Diese Einstellung muss auch bei Verbindung mit mehreren + Synchronisierungszielen gleich sein. ScanQRCode: - Title: QR-Code scannen - Guidance: Bitte folgen Sie den untenstehenden Schritten, um die Einstellungen von Ihrem vorhandenen Gerät zu importieren. - Step1: Lassen Sie auf diesem Gerät bitte diesen Vault geöffnet. + ButtonClose: Schließen Sie diesen Dialog + Guidance: Bitte folgen Sie den folgenden Schritten, um Einstellungen von Ihrem + vorhandenen Gerät zu importieren. + Instruction: Bitte folgen Sie den folgenden Schritten, um Einstellungen von + Ihrem vorhandenen Gerät zu importieren. + Step1: Bitte halten Sie diesen Vault auf diesem Gerät offen. Step2: Öffnen Sie auf dem Quellgerät Obsidian. - Step3: Führen Sie auf dem Quellgerät im Befehlsmenü den Befehl „Einstellungen als QR-Code anzeigen“ aus. - Step4: Wechseln Sie auf diesem Gerät zur Kamera-App oder verwenden Sie einen QR-Code-Scanner, um den angezeigten QR-Code zu scannen. - ButtonClose: Diesen Dialog schließen -"Please enable 'Compute revisions for chunks' in settings to use Garbage Collection.": Bitte aktivieren Sie „Compute revisions for chunks“ in den Einstellungen, um die Garbage Collection zu verwenden. -"Please disable 'Read chunks online' in settings to use Garbage Collection.": Bitte deaktivieren Sie „Read chunks online“ in den Einstellungen, um die Garbage Collection zu verwenden. -"Setup URI dialog cancelled.": Setup-URI-Dialog abgebrochen. -"Please select 'Cancel' explicitly to cancel this operation.": Bitte wählen Sie ausdrücklich „Abbrechen“, um diesen Vorgang abzubrechen. -"Failed to connect to remote for compaction.": Verbindung zur Remote-Datenbank für die Komprimierung fehlgeschlagen. -"Failed to connect to remote for compaction. ${reason}": Verbindung zur Remote-Datenbank für die Komprimierung fehlgeschlagen. ${reason} -"Compaction in progress on remote database...": Komprimierung auf der Remote-Datenbank läuft... -"Compaction on remote database timed out.": Die Komprimierung auf der Remote-Datenbank hat eine Zeitüberschreitung erreicht. -"Compaction on remote database completed successfully.": Die Komprimierung auf der Remote-Datenbank wurde erfolgreich abgeschlossen. -"Compaction on remote database failed.": Die Komprimierung auf der Remote-Datenbank ist fehlgeschlagen. -"Failed to start one-shot replication before Garbage Collection. Garbage Collection Cancelled.": Die Einmal-Replikation vor der Garbage Collection konnte nicht gestartet werden. Die Garbage Collection wurde abgebrochen. -"Cancel Garbage Collection": Garbage Collection abbrechen -"No connected device information found. Cancelling Garbage Collection.": Keine Informationen zu verbundenen Geräten gefunden. Garbage Collection wird abgebrochen. -"The following accepted nodes are missing its node information:\n- ${missingNodes}\n\nThis indicates that they have not been connected for some time or have been left on an older version.\nIt is preferable to update all devices if possible. If you have any devices that are no longer in use, you can clear all accepted nodes by locking the remote once.": |- - Für die folgenden akzeptierten Knoten fehlen die Knoteninformationen: - - ${missingNodes} - - Das deutet darauf hin, dass sie seit einiger Zeit nicht verbunden waren oder noch eine ältere Version verwenden. - Es ist nach Möglichkeit besser, zunächst alle Geräte zu aktualisieren. Wenn Sie Geräte haben, die nicht mehr verwendet werden, können Sie alle akzeptierten Knoten löschen, indem Sie die Remote-Datenbank einmal sperren. -"Ignore and Proceed": Ignorieren und fortfahren -"Node Information Missing": Knoteninformationen fehlen -"Garbage Collection cancelled by user.": Garbage Collection wurde vom Benutzer abgebrochen. -"Proceeding with Garbage Collection, ignoring missing nodes.": Garbage Collection wird fortgesetzt, fehlende Knoten werden ignoriert. -"Proceed Garbage Collection": Garbage Collection fortsetzen -"> [!INFO]- The connected devices have been detected as follows:\n${devices}": |- - > [!INFO]- Die folgenden verbundenen Geräte wurden erkannt: - ${devices} -"Device": Gerät -"Node ID": Knoten-ID -"Obsidian version": Obsidian-Version -"Plug-in version": Plugin-Version -"Progress": Fortschritt -"Some devices have differing progress values (max: ${maxProgress}, min: ${minProgress}).\nThis may indicate that some devices have not completed synchronisation, which could lead to conflicts. Strongly recommend confirming that all devices are synchronised before proceeding.": |- - Einige Geräte haben unterschiedliche Fortschrittswerte (max: ${maxProgress}, min: ${minProgress}). - Das kann darauf hindeuten, dass einige Geräte die Synchronisation noch nicht abgeschlossen haben, was zu Konflikten führen könnte. Es wird dringend empfohlen, vor dem Fortfahren zu bestätigen, dass alle Geräte synchronisiert sind. -"All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.": Alle Geräte haben denselben Fortschrittswert (${progress}). Ihre Geräte scheinen synchronisiert zu sein. Die Garbage Collection kann fortgesetzt werden. -"Garbage Collection Confirmation": Bestätigung der Garbage Collection -"Proceeding with Garbage Collection.": Garbage Collection wird ausgeführt. -"Garbage Collection: Scanned ${scanned} / ~${docCount}": |- - Garbage Collection: ${scanned} / ~${docCount} gescannt -"Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": |- - Garbage Collection: Scan abgeschlossen. Gesamtzahl der Chunks: ${totalChunks}, verwendete Chunks: ${usedChunks} -"Garbage Collection: Found ${unusedChunks} unused chunks to delete.": |- - Garbage Collection: ${unusedChunks} ungenutzte Chunks zum Löschen gefunden. -"Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.": |- - Garbage Collection abgeschlossen. Gelöschte Chunks: ${deletedChunks} / ${totalChunks}. Benötigte Zeit: ${seconds} Sekunden. -"Failed to start replication after Garbage Collection.": Die Replikation nach der Garbage Collection konnte nicht gestartet werden. + Step3: Auf dem Quellgerät, aus der Befehlspalette, führen Sie den Befehl + 'Einstellungen als QR-Code anzeigen' aus. + Step4: Auf diesem Gerät wechseln Sie in die Kamera-App oder verwenden Sie einen + QR-Code-Scanner, um den angezeigten QR-Code zu scannen. + Title: QR-Code Scannen + Settings: + Advanced: + LocalDatabaseTweak: Lokale Datenbank optimieren + MemoryCache: Speichercache + TransferTweak: Übertragung optimieren + Common: + Analyse: Analysieren + Back: Zurück + Check: Überprüfung + Configure: Konfigurieren + Delete: Löschen + Lock: Schließung + Open: Öffnen + Perform: Durchführung + ResetAll: Alle + ResolveAll: Alles auflösen + Send: Bitte + VerifyAll: Alle überprüfen + CustomizationSync: + OpenDesc: Dialog öffnen + Panel: Anpassungssynchronisierung + WarnChangeDeviceName: Warner Gerätename ändern + WarnSetDeviceName: Warn-Set Gerätename + Hatch: + AnalyseDatabaseUsage: Datenbanknutzung analysieren + AnalyseDatabaseUsageDesc: Analysiert die Datenbanknutzung und erstellt einen + TSV-Bericht zur Diagnose. Du kannst den Bericht in eine beliebige + Tabellenkalkulation einfügen. + BackToNonConfigured: Zurück zu nicht konfiguriert + ConvertNonObfuscated: Nicht pfadverschleierte Dateien prüfen und konvertieren + ConvertNonObfuscatedDesc: Prüft die lokale Datenbank auf Dateien ohne + Pfadverschleierung und konvertiert sie bei Bedarf. + CopyIssueReport: Bericht an die Zwischenablage kopieren + DatabaseLabel: "Datenbank: ${details}" + DatabaseToStorage: Datenbank -> Lagerung + DeleteCustomizationSyncData: Alle Daten der Anpassungssynchronisierung löschen + GeneratedReport: Erstellter Bericht + Missing: Fehlen + ModifiedSize: Geänderte Größe + ModifiedSizeActual: Modifizierte Größe + PrepareIssueReport: Bericht zum Erstellen eines Issues vorbereiten + RecoveryAndRepair: Wiederherstellung und Reparatur + RecreateAll: Alle zurückerhalten + RecreateMissingChunks: Fehlende Chunks für alle Dateien neu erstellen + RecreateMissingChunksDesc: Erstellt die Chunks für alle Dateien neu. Falls + Chunks fehlten, kann dies die Fehler beheben. + ResetPanel: Zurücksetzen + ResetRemoteUsage: Benachrichtigungsschwelle zurücksetzen und Nutzung der + entfernten Datenbank prüfen + ResetRemoteUsageDesc: Setzt die Größenschwelle des entfernten Speichers zurück + und prüft die Speichergröße erneut. + ResolveAllConflictedFiles: Alle Dateikonflikte mit der neueren Version lösen + ResolveAllConflictedFilesDesc: "Löst alle Dateikonflikte mit der neueren + Version. Achtung: Die ältere Version wird überschrieben und kann nicht + wiederhergestellt werden." + RunDoctor: Der Doktor + ScanBrokenFiles: Scannen von Dateien + ScramSwitches: Notfallschalter + ShowHistory: Geschichte zeigen + StorageLabel: "Speicher: ${details}" + StorageToDatabase: Lagerung -> Datenbank + VerifyAndRepairAllFiles: Alle Dateien prüfen und reparieren + VerifyAndRepairAllFilesDesc: Vergleicht Dateiinhalte zwischen lokaler Datenbank + und Speicher. Wenn sie nicht übereinstimmen, wirst du gefragt, welche + Version behalten werden soll. + Maintenance: + Cleanup: Bereinigung ausführen + CleanupDesc: Reduziert den Speicherbedarf, indem alle nicht neuesten Revisionen + verworfen werden. Dafür wird derselbe freie Speicherplatz auf dem + entfernten Server und dem lokalen Client benötigt. + DeleteLocalDatabase: Lokale Datenbank löschen, um Self-hosted LiveSync + zurückzusetzen oder zu deinstallieren + EmergencyRestart: Notfall-Neustart + EmergencyRestartDesc: Deaktiviert die gesamte Synchronisierung und startet neu. + FreshStartWipe: Löschen für einen Neustart + FreshStartWipeDesc: Löscht alle Daten auf dem entfernten Server. + GarbageCollection: Müllsammlung V3 (Beta) + GarbageCollectionAction: Müllsammlung durchführen + GarbageCollectionDesc: Führt die Garbage Collection aus, um ungenutzte Chunks zu + entfernen und die Datenbankgröße zu reduzieren. + LockServer: Server sperren + LockServerDesc: Sperrt den entfernten Server, um die Synchronisierung mit + anderen Geräten zu verhindern. + OverwriteRemote: Entfernte Daten überschreiben + OverwriteRemoteDesc: Überschreibt die entfernten Daten mit lokaler DB und Passphrase. + OverwriteServerData: Serverdaten mit den Dateien dieses Geräts überschreiben + OverwriteServerDataDesc: Erstellt die lokale und entfernte Datenbank mit den + Dateien dieses Geräts neu. + PurgeAllJournalCounter: Alle Journalzähler bereinigen + PurgeAllJournalCounterDesc: Bereinigt alle Download- und Upload-Caches. + RebuildingOperations: Rebuilding Operationen (Remote Only) + Resend: Erneut senden + ResendDesc: Sendet alle Chunks erneut an die entfernte Seite. + Reset: Zurücksetzen + ResetAllJournalCounter: Alle Journalzähler zurücksetzen + ResetAllJournalCounterDesc: Initialisiert den gesamten Journalverlauf. Bei der + nächsten Synchronisierung wird jedes Element erneut empfangen und + gesendet. + ResetJournalReceived: Empfangsverlauf des Journals zurücksetzen + ResetJournalReceivedDesc: Initialisiert den Empfangsverlauf des Journals. Bei + der nächsten Synchronisierung werden alle Elemente außer denen von + diesem Gerät erneut heruntergeladen. + ResetJournalSent: Sendeverlauf des Journals zurücksetzen + ResetJournalSentDesc: Initialisiert den Sendeverlauf des Journals. Bei der + nächsten Synchronisierung werden alle Elemente außer denen, die dieses + Gerät empfangen hat, erneut gesendet. + ResetLocalSyncInfo: Synchronisierungsinformationen zurücksetzen + ResetLocalSyncInfoDesc: Stellt die lokale Datenbank aus der entfernten Datenbank + wieder her oder rekonstruiert sie. + ResetReceived: Zurück zur Übersicht + ResetSentHistory: Zurück zur Übersicht + ResetThisDevice: Synchronisierung auf diesem Gerät zurücksetzen + ScheduleAndRestart: Zeitplan und Neustart + Scram: Notfall + SendChunks: Schicke Stücke + Syncing: Synchronisierung + WarningLockedReadyAction: Warnung Gesperrte Aktion + WarningLockedReadyText: Warnen Gesperrter Text + WarningLockedResolveAction: Warnung Gesperrte Lösungsaktion + WarningLockedResolveText: Warnung gesperrter Auflösungstext + WriteRedFlagAndRestart: Flagge und Neustart + Patches: + CompatibilityConflict: Kompatibilität (Konfliktverhalten) + CompatibilityDatabase: Kompatibilität (Datenbankstruktur) + CompatibilityInternalApi: Kompatibilität (Nutzung interner APIs) + CompatibilityMetadata: Kompatibilität (Metadaten) + CompatibilityRemote: Kompatibilität (entfernte Datenbank) + CompatibilityTrouble: Kompatibilität (behobene Probleme) + CurrentAdapter: "Aktueller Adapter: ${adapter}" + DatabaseAdapter: Datenbankadapter + DatabaseAdapterDesc: Wähle den zu verwendenden Datenbankadapter. + EdgeCaseBehaviour: Behandlung von Grenzfällen (Verhalten) + EdgeCaseDatabase: Behandlung von Grenzfällen (Datenbank) + EdgeCaseProcessing: Behandlung von Grenzfällen (Verarbeitung) + IndexedDbWarning: Indizierte Db-Warnung + MigratingToIdb: Zu Idb + MigratingToIndexedDb: Migration zu Indexed Db + MigrationIdbCompleted: Migration Idb abgeschlossen + MigrationIdbCompletedFollowUp: Migration Idb beendet Folgen + MigrationIndexedDbCompleted: Migrationsindex Db abgeschlossen + MigrationIndexedDbCompletedFollowUp: Migration Indexed Db Completeed Follow Up + MigrationWarning: Migrationswarnung + OperationToIdb: Betrieb auf Idb + OperationToIndexedDb: Betrieb zu Index Db + Remediation: Behebung + RemediationChanged: Zurück zur Übersicht + RemediationNoLimit: Zurück zur Übersicht + RemediationRestarting: Zurück zur Übersicht + RemediationRestartLater: Zurück zur Übersicht + RemediationRestartMessage: Zurück zur Übersicht + RemediationRestartNow: Zurück zur Übersicht + RemediationSuffixChanged: Zurück zur Übersicht + RemediationWithValue: "Wert: ${date} (${timestamp})" + RemoteDatabaseSunset: Entfernte Datenbank optimieren (läuft aus) + SwitchToIDB: Zu IDB wechseln + SwitchToIndexedDb: Schalten Sie auf Db + PowerUsers: + ConfigurationEncryption: Konfigurationsverschlüsselung + ConnectionTweak: CouchDB-Verbindung optimieren + ConnectionTweakDesc: Verbindung Tweak Desc + Default: Fehler + Developer: Entwickler + EncryptSensitiveConfig: Sensible Konfigurationseinträge verschlüsseln + PromptPassphraseEveryLaunch: Fragen Sie eine Passphrase bei jedem Start + UseCustomPassphrase: Verwenden Sie eine benutzerdefinierte Passphrase + Remote: + Activate: Aktivieren + ActiveSuffix: Aktiver Suffix + AddConnection: Verbindung hinzufügen + AddRemoteDefaultName: Remote Default Name hinzufügen + ConfigureAndChangeRemote: Remote konfigurieren und ändern + ConfigureE2EE: E2EE konfigurieren + ConfigureRemote: Entfernte Verbindung konfigurieren + DeleteRemoteConfirm: Remote-Konfiguration "${name}" löschen? + DeleteRemoteTitle: Löschen Remote Title + DisplayName: Anzeige Name + DuplicateRemote: Remote-Konfiguration duplizieren + DuplicateRemoteSuffix: Suffix der duplizierten Remote-Konfiguration + E2EEConfiguration: E2EE-Konfiguration + Export: Ausfuhr + FetchRemoteSettings: Fetch Remote Einstellungen + ImportConnection: Verbindung + ImportConnectionPrompt: Verbindungsdaten importieren + ImportedCouchDb: Importierter Couch Db + ImportedRemote: Eingeführte Fernbedienung + MoreActions: Weitere Aktionen + PeerToPeerPanel: Peer-to-Peer-Synchronisierung + RemoteConfigurationPrefix: Präfix der Remote-Konfiguration + RemoteDatabases: Entfernte Datenbanken + RemoteName: Fernname + RemoteNameCouchDb: Remote-Name CouchDB + RemoteNameP2P: Remote-Name P2P + RemoteNameS3: Fernname S3 + Rename: Name + Selector: + AddDefaultPatterns: Standardmuster hinzufügen + CrossPlatform: Cross-Plattform + Default: Fehler + HiddenFiles: Versteckte Dateien + IgnorePatterns: Ignoriermuster + NonSynchronisingFiles: Nicht synchronisierte Dateien + NonSynchronisingFilesDesc: (RegExp) Wenn gesetzt, werden Änderungen an passenden + lokalen und entfernten Dateien übersprungen. + NormalFiles: Normale Dateien + OverwritePatterns: Überschreibmuster + OverwritePatternsDesc: Muster für Dateien, die überschrieben statt zusammengeführt werden + SynchronisingFiles: Synchronisierte Dateien + SynchronisingFilesDesc: (RegExp) Leer lassen, um alle Dateien zu + synchronisieren. Lege einen regulären Ausdruck fest, um synchronisierte + Dateien einzuschränken. + TargetPatterns: Zielmuster + TargetPatternsDesc: Muster für Dateien, die synchronisiert werden sollen + Setup: + RerunWizardButton: Assistent erneut ausführen + RerunWizardDesc: Führt den Einrichtungsassistenten erneut aus, um Self-hosted + LiveSync neu einzurichten. + RerunWizardName: Einrichtungsassistent erneut ausführen + SyncSettings: + Fetch: Gebühren + Merge: Verschmelzung + Overwrite: Überschrift + SetupWizard: + Bucket: + AccessKeyId: Access Key ID + BucketName: Bucket-Name + EndpointUrl: Endpunkt-URL + FolderPrefix: Folder Prefix + FolderPrefixDesc: Wenn Sie Daten in einem bestimmten Ordner im Bucket speichern + möchten, können Sie hier ein Ordnerpräfix angeben. Andernfalls leer + lassen, um Daten im Stammverzeichnis des Buckets zu speichern. + InternalApiDesc: Wenn Sie CORS-Probleme nicht vermeiden können, können Sie diese + Option ausprobieren. Sie nutzt die interne API von Obsidian zur + Kommunikation mit dem S3-Server. Das entspricht nicht den Webstandards, + funktioniert aber. Beachten Sie, dass dies in zukünftigen + Obsidian-Versionen brechen kann. + PlaceholderAccessKeyId: Access Key ID eingeben + PlaceholderBucketName: Bucket-Namen eingeben + PlaceholderFolderPrefix: Ordnerpräfix eingeben (optional) + PlaceholderRegion: Region eingeben (z. B. us-east-1, auto für R2) + PlaceholderSecretAccessKey: Secret Access Key eingeben + Region: Region + SecretAccessKey: Secret Access Key + Title: S3/MinIO/R2 Konfiguration + UseInternalApi: Interne API verwenden + UsePathStyleAccess: Path-Style-Zugriff verwenden + Common: + AdvancedSettings: Erweiterte Einstellungen + Back: Zurück + Cancel: Abbrechen + CheckingConnection: Verbindung wird geprüft... Bitte warten. + ContinueAnyway: Immer noch + CustomHeaders: Benutzerdefinierte Header + ErrorConnectionTest: "Fehler beim Verbindungstest: ${error}" + ErrorConnectServer: Verbindung zum Server fehlgeschlagen. Bitte prüfen Sie Ihre + Einstellungen. + ErrorConnectServerDetail: "Verbindung zum Server fehlgeschlagen: ${error}" + ErrorCreateReplicator: Replikatorinstanz konnte nicht erstellt werden. + ExperimentalSettings: Experimentelle Einstellungen + HttpsOnlyMobile: Wir können nur Secure (HTTPS) Verbindungen auf Obsidian Mobile verwenden. + ProceedSelectOption: Bitte wählen Sie eine Option + CouchDB: + DatabaseName: Datenbankname + DatabaseNameDesc: Im Datenbanknamen dürfen keine Großbuchstaben, Leerzeichen + oder Sonderzeichen verwendet werden. Er darf auch nicht mit einem + Unterstrich (_) beginnen. + InternalApiDesc: Wenn Sie CORS-Probleme nicht vermeiden können, können Sie diese + Option ausprobieren. Sie nutzt die interne API von Obsidian zur + Kommunikation mit dem CouchDB-Server. Das entspricht nicht den + Webstandards, funktioniert aber. Beachten Sie, dass dies in zukünftigen + Obsidian-Versionen brechen kann. + JwtAlgorithm: JWT-Algorithmus + JwtExpirationDuration: JWT-Ablaufdauer (Minuten) + JwtKey: JWT-Schlüssel + JwtKeyDesc: Für HS256/HS512 geben Sie den gemeinsamen geheimen Schlüssel an. Für + ES256/ES512 geben Sie den privaten Schlüssel im pkcs8-PEM-Format an. + JwtKeyId: JWT Key ID (kid) + JwtSubject: JWT Subject (sub) + JwtWarning: JWT-Authentifizierung (JSON Web Token) ermöglicht eine sichere + Authentifizierung am CouchDB-Server mit Tokens. Stellen Sie sicher, dass + Ihr CouchDB-Server JWTs akzeptiert und dass Schlüssel und Einstellungen + zur Serverkonfiguration passen. Diese Funktion wurde noch nicht sehr + gründlich geprüft. + Password: Passwort + PlaceholderDatabaseName: Datenbanknamen eingeben + PlaceholderJwtKey: JWT-Secret oder privaten Schlüssel eingeben + PlaceholderJwtKeyId: JWT Key ID eingeben + PlaceholderJwtSubject: JWT Subject eingeben (CouchDB-Benutzername) + PlaceholderPassword: Passwort eingeben + PlaceholderUsername: Benutzernamen eingeben + Title: CouchDB Konfiguration + Url: Server-URL + UseInternalApi: Interne API verwenden + UseJwtAuthentication: JWT-Authentifizierung verwenden + Username: Benutzername + CouchDBCheck: + DetectAndFix: CouchDB Probleme erkennen und beheben + Fix: Fehler + E2EE: + AlgorithmGuidance: In den meisten Fällen sollten Sie beim Standardalgorithmus + (${algorithm}) bleiben. Diese Einstellung ist nur erforderlich, wenn ein + vorhandener Vault in einem anderen Format verschlüsselt ist. + AlgorithmWarning: Wenn Sie den Verschlüsselungsalgorithmus ändern, können zuvor + mit einem anderen Algorithmus verschlüsselte Daten nicht mehr gelesen + werden. Stellen Sie sicher, dass alle Geräte denselben Algorithmus + verwenden, damit der Zugriff auf Ihre Daten erhalten bleibt. + EncryptionAlgorithm: Verschlüsselungsalgorithmus + Fetch: + BackupDone: Ich habe ein Backup von meinem Vault erstellt. + BackupQuestion: Haben Sie ein Backup erstellt, bevor Sie fortfahren? + BackupRecommendation: Wir empfehlen Ihnen, Ihren Vault-Ordner an einen sicheren + Ort zu kopieren. Dies wird einen Schutz bieten, wenn eine Vielzahl von + Konflikten entstehen, oder wenn Sie versehentlich mit einem falschen + Ziel synchronisieren. + BackupSkipped: Ich verstehe die Risiken und werde ohne Verstärkung fortfahren. + BackupUnable: Ich kann kein Backup von meinem Tresor erstellen. + BackupUnableNote: Wenn Sie die Risiken verstehen und trotzdem fortfahren wollen, + wählen Sie das aus. + BackupUnableWarning: Es wird dringend empfohlen, ein Backup zu erstellen, bevor + Sie fortfahren. Die Fortsetzung ohne Backup kann zu Datenverlust führen. + ConflictNote: Darüber hinaus, wenn Konflikte bereits in den Serverdaten + vorhanden sind, werden sie mit diesem Gerät synchronisiert, wie sie + sind, und Sie müssen sie lokal beheben. + Guidance: Dies wird die lokale Datenbank auf diesem Gerät mit den neuesten Daten + des Servers wieder aufbauen. Diese Aktion soll + Synchronisierungsunkonsistenzen lösen und die korrekte Funktionalität + wiederherzustellen. + ImportantBody: Wenn Sie unsynchronisierte Änderungen in Ihrem Vault auf diesem + Gerät haben, divergieren sie wahrscheinlich von den Versionen des + Servers nach dem Reset. Dies kann zu einer Vielzahl von Dateikonflikten + führen. + ImportantTitle: Wichtige Hinweise + PreventFetchConfig: Verhindern Sie die Abrufkonfiguration vom Server + Proceed: Zurücksetzen und Wiederaufnahme Synchronisation + Title: Synchronisation auf diesem Gerät zurücksetzen + UnbalancedNote: In diesem Szenario wird Self-hosted LiveSync für jede Datei + Metadaten wiedergeben und bewusst Konflikte generieren. Ist der + Dateiinhalt identisch, werden diese Konflikte automatisch behoben. + VaultIdentical: Die Dateien in diesem Vault sind fast identisch mit dem Server. + VaultIdenticalDesc: (z.B. unmittelbar nach der Wiederherstellung auf einem + anderen Computer oder aus einem Backup gewonnen) + VaultIndependent: Dieser Vault ist leer oder enthält nur neue Dateien, die nicht + auf dem Server sind. + VaultIndependentDesc: (z.B. erstmalig auf einem neuen Smartphone, ausgehend von + einem sauberen Schiefer) + VaultQuestion: Um die Schaffung neuer Konflikte zu minimieren, wählen Sie bitte + die Option, die den aktuellen Zustand Ihres Tresors am besten + beschreibt. Die Anwendung wird dann Ihre Dateien auf die am besten + geeignete Weise basierend auf Ihrer Auswahl überprüfen. + VaultUnbalanced: Es kann Unterschiede zwischen den Dateien in diesem Vault und + dem Server geben. + VaultUnbalancedDesc: (z.B. nach der Bearbeitung vieler Dateien während offline) + Intro: + ExistingOption: Ich habe bereits einen konfigurierten Server + ExistingOptionDesc: Verbinden Sie mit einem bestehenden LiveSync Server + Guidance: Willkommen! Legen wir LiveSync ein. Sind Sie neu bei LiveSync oder + haben Sie bereits einen Remoteserver konfiguriert? + NewOption: Ich bin neu bei LiveSync + NewOptionDesc: LiveSync zum ersten Mal einrichten + ProceedExisting: Konnektivieren Sie bestehende + ProceedNew: Neues einrichten + Question: Was beschreibt Ihre Situation? + Title: Einrichtungsassistent + Log: + E2EEConfigurationCancelled: E2EE-Konfiguration abgebrochen. + ManualConfigurationCancelled: Manuelle Konfiguration abgebrochen. + NoSettingsChanges: Keine ?nderungen an den Einstellungen erkannt. Einstellungen + aus dem Assistenten werden nicht angewendet. + OnboardingCancelled: Einrichtung durch Benutzer abgebrochen. + QrCodeDialogClosed: QR-Code-Dialog geschlossen. + QrCodeResult: "QR-Code-Ergebnis: ${result}" + SettingApplied: Einstellung angewendet + SettingsApplied: Einstellungen aus dem Assistenten angewendet. + SetupUriDialogCancelled: Setup-URI-Dialog abgebrochen. + SetupUriDialogClosed: Setup-URI-Dialog geschlossen. + UserCancelledApplyingSettings: Anwenden der Einstellungen aus dem Assistenten + durch Benutzer abgebrochen. + OutroAskUserMode: + CompatibleOption: Verwenden Sie den kompatiblen Modus + CompatibleOptionDesc: Verwenden Sie dies, wenn die Fernbedienung mit einer + älteren Version von LiveSync eingerichtet wurde. Einige Funktionen + können begrenzt sein. + ExistingOption: Dieses Gerät verfügt über vorhandene Daten + ExistingOptionDesc: Lokale Dateien mit der Fernbedienung verschmelzen. Verwenden + Sie dies, wenn Sie bereits Notizen in diesem Tresor haben. + Guidance: Wählen Sie, wie dieses Gerät mit LiveSync verwendet wird. Dies + beeinflusst das anfängliche Sync-Verhalten. + NewOption: Einrichten als neues Gerät + NewOptionDesc: Beginnen Sie frisch mit einem neuen Tresor. Remote-Dateien werden + nach dem Setup abgeholt. + ProceedApplySettings: Anwenden von Einstellungen + ProceedNext: Fortsetzung + Question: "Wählen Sie den Modus für dieses Gerät aus:" + Title: Wie werden Sie dieses Gerät benutzen? + OutroExisting: + Guidance: Das Setup ist komplett. Die Remote-Daten werden nach dem Neustart + abgeholt. Klicken Sie auf die Schaltfläche unten, um die Synchronisation + neu zu starten. + Proceed: Restart- und Fetch-Daten + Question: Bitte wählen Sie die Schaltfläche unten, um neu zu starten und gehen + Sie zur Daten-Fetching-Bestätigung. + Title: "Setup Complete: Vorbereitung auf Fetch Synchronisationsdaten" + OutroNewUser: + GuidancePrimary: Ihre LiveSync-Konfiguration wurde eingerichtet. Die + Einstellungen werden angewendet, wenn Sie diesen Dialog schließen. + GuidanceWarning: Dies wird bestehende Dateien überschreiben, wenn der + Remote-Standard Daten hat. Stellen Sie sicher, dass Sie einen leeren + Tresor verwenden oder Backups haben. + Important: "Wichtig:" + Proceed: Apply und Neustart + Question: Bereit, die Konfiguration anzuwenden? + Title: Setup Komplett + P2P: + AutoBroadcast: Änderungen automatisch übertragen + AutoBroadcastDesc: Wenn automatische Übertragung aktiviert ist, werden + Änderungen ohne manuelles Eingreifen an verbundene Peers übertragen. + Dadurch werden Peers aufgefordert, die Änderungen dieses Geräts + abzurufen. + AutoStart: P2P-Verbindung automatisch starten + AutoStartDesc: Wenn der automatische Start der P2P-Verbindung aktiviert ist, + wird die P2P-Verbindung beim Start des Plugins automatisch gestartet. + DevicePeerId: Geräte-Peer-ID + Enabled: Aktiviert + ErrorConnectPeers: "Verbindung zu anderen Peers fehlgeschlagen: ${error}" + GenerateRandomId: Zufällige ID erzeugen + GroupId: Gruppen-ID + GroupPassphraseDesc: Gruppen-ID und Passphrase werden verwendet, um Ihre + Gerätegruppe zu identifizieren. Verwenden Sie auf allen zu + synchronisierenden Geräten dieselbe Gruppen-ID und Passphrase. Die + Gruppen-ID ist nicht auf das erzeugte Format beschränkt; Sie können eine + beliebige Zeichenkette verwenden. + NoPeersFound: Ihre Einstellungen scheinen korrekt zu sein, aber es wurden keine + anderen Peers gefunden. + PlaceholderRelayUrl: Relay-URL eingeben + PlaceholderTurnCredential: TURN-Zugangsdaten eingeben + PlaceholderTurnUsername: TURN-Benutzernamen eingeben + PublicTurnWarning: Die Nutzung öffentlicher TURN-Server kann Datenschutzfolgen + haben, da Ihre Daten über Server Dritter weitergeleitet werden. Auch + wenn Ihre Daten verschlüsselt sind, kann Ihre Existenz für diese + sichtbar sein. Stellen Sie vor der Nutzung sicher, dass Sie dem + TURN-Server-Anbieter und Ihrem Netzwerkadministrator vertrauen. Wenn + möglich, richten Sie einen eigenen TURN-Server für Ihren FQDN ein. + RelayUrl: Relay-URL + Title: P2P Konfiguration + TurnCredential: TURN-Zugangsdaten + TurnServerDesc: TURN-Server-Einstellungen sind nur erforderlich, wenn Sie sich + hinter einem strengen NAT oder einer Firewall befinden, die direkte + P2P-Verbindungen verhindert. In den meisten Fällen können diese Felder + leer bleiben. + TurnServerUrls: TURN-Server-URLs (kommagetrennt) + TurnUsername: TURN-Benutzername + UseDefaultRelay: Das Relais von vrtmrz verwenden + Rebuild: + BackupBeforeProceeding: Natürlich können wir die Daten sichern, bevor wir fortfahren. + BackupDone: Ich habe ein Backup von meinem Vault erstellt. + BackupQuestion: Haben Sie ein Backup erstellt, bevor Sie fortfahren? + BackupSkipped: Ich verstehe die Risiken und werde ohne Verstärkung fortfahren. + BackupUnable: Ich bin nicht in der Lage, ein Backup meiner Vaults zu erstellen. + BackupUnableAdvice: Sie sollten ein neues Synchronisierungsziel erstellen und + dort Ihre Daten wieder aufbauen. Danach synchronisieren Sie auf ein + brandneues Gewölbe auf dem anderen Gerät mit dem neuen Remote von einem + nach dem anderen. + BackupWarning: Dies ist eine äußerst leistungsfähige Operation. Wir empfehlen + dringend, dass Sie Ihren Vault-Ordner an einen sicheren Ort kopieren. + ConfirmDataLoss: Ich verstehe, dass alle Änderungen auf anderen Smartphones oder + Computern möglicherweise verloren gehen könnten. + ConfirmIrreversible: Ich verstehe, dass diese Aktion unumkehrbar ist, wenn sie + einmal durchgeführt wird. + ConfirmSyncDisabled: Ich verstehe, dass andere Geräte nicht mehr synchronisieren + können und die Synchronisationsinformationen zurücksetzen müssen. + ConfirmTitle: Bitte bestätigen Sie das Folgende + Guidance: Dieses Verfahren wird zunächst alle vorhandenen Synchronisationsdaten + vom Server löschen. Im Anschluss daran werden die Serverdaten + vollständig wiederhergestellt, wobei der aktuelle Zustand Ihres Vault + auf diesem Gerät als einzige, maßgebliche Masterkopie verwendet wird. + PreventFetchConfig: Verhindern Sie die Abrufkonfiguration vom Server + Proceed: Ich verstehe, Overwrite Server + ResetNotifyOtherDevices: durch Zurücksetzen der Fernbedienung werden Sie auf + anderen Geräten informiert. + ResolveOnOtherDevices: Es gibt einen Weg, dies auf anderen Geräten zu lösen. + Title: "Letzte Bestätigung: Überschreiben Sie Serverdaten mit den Dateien dieses + Geräts" + WhenToUse: Sie sollten diese Operation nur unter außergewöhnlichen Umständen + durchführen, z.B. wenn die Serverdaten vollständig beschädigt sind, wenn + Änderungen auf allen anderen Geräten nicht mehr erforderlich sind, oder + wenn die Datenbankgröße im Vergleich zur Standardgröße ungewöhnlich groß + geworden ist. + SelectExisting: + Guidance: Wählen Sie, wie Sie mit Ihrem vorhandenen LiveSync Server verbinden. + ManualOption: manuell konfigurieren + ManualOptionDesc: Geben Sie Serverdetails und Anmeldeinformationen selbst ein + ProceedManual: manuell konfigurieren + ProceedQr: QR-Code Scannen + ProceedSetupUri: Verwenden Sie Setup-URI + QrOption: QR-Code Scannen + QrOptionDesc: Scannen eines QR-Codes von einem bereits konfigurierten Gerät + Question: "Verbindungsmethode auswählen:" + SetupUriOption: Verwenden Sie Setup-URI + SetupUriOptionDesc: Importieren Sie Konfiguration aus einem Setup-URI, das von + Ihrem Server bereitgestellt wird + Title: Verbinden mit dem vorhandenen Server + SelectNew: + Guidance: Wählen Sie, wie Sie Ihre neue LiveSync-Verbindung konfigurieren möchten. + ManualOption: manuell konfigurieren + ManualOptionDesc: Geben Sie Serverdetails und Anmeldeinformationen selbst ein + ProceedManual: manuell konfigurieren + ProceedSetupUri: Verwenden Sie Setup-URI + Question: "Wählen Sie Konfigurationsmethode:" + SetupUriOption: Verwenden Sie Setup-URI + SetupUriOptionDesc: Importieren Sie Konfiguration aus einem Setup-URI, das von + Ihrem Server bereitgestellt wird + Title: Neue Verbindung einrichten + SetupRemote: + BucketOption: LiveSync-Bucket + BucketOptionDesc: Verwenden Sie den gebündelten Eimer-Server im LiveSync-Begleitungsservice + CouchDbOption: CouchDB + CouchDbOptionDesc: Verwenden Sie Ihre eigene CouchDB-Instanz für die volle + Kontrolle über Ihren Sync-Server + Guidance: "Wählen Sie die Art des Remoteservers, den Sie verwenden möchten:" + P2POption: Peer-to-Peer (Experimental) + P2POptionDesc: Synchronisieren direkt zwischen Geräten ohne zentralen Server + ProceedBucket: Setup Bucket + ProceedCouchDb: CouchDB einrichten + ProceedP2P: P2P einrichten + Title: Remote-Ziel einrichten + UseSetupURI: + ButtonCancel: Abbrechen + ButtonProceed: Testeinstellungen und Weiter + ErrorFailedToParse: Versäumt, Setup-URI zu parsen. + ErrorPassphraseRequired: Passphrase ist erforderlich. + Guidance: Bitte geben Sie das Setup-URI ein, das während der Serverinstallation + oder auf einem anderen Gerät erzeugt wurde, zusammen mit dem + Tresorpassphrase. + InvalidInfo: Die Setup-URI scheint nicht gültig zu sein. Bitte überprüfen Sie, + ob Sie es richtig kopiert haben. + Label: Setup-URI + LabelPassphrase: Passphrasen + PlaceholderPassphrase: Geben Sie Ihre Passphrase + Title: Einrichten URI + ValidMessage: Die Setup-URI ist gültig und gebrauchsfertig. +Unique name between all synchronized devices. To edit this setting, please disable customization sync once.: + Einzigartiger Name zwischen allen synchronisierten Geräten. Um diese + Einstellung zu bearbeiten, deaktivieren Sie bitte einmal die + Anpassungssynchronisation. +Use a Setup URI (Recommended): Setup-URI verwenden (empfohlen) +Use Custom HTTP Handler: Benutzerdefinierte HTTP Handler +Use dynamic iteration count: Dynamische Iterationszählung verwenden +Use Only Local Chunks: Nur lokale Chunks verwenden +Use Request API to avoid `inevitable` CORS problem: Request API verwenden, um das `unvermeidliche` CORS-Problem zu vermeiden +Use Segmented-splitter: Segmented Splitter verwenden +Use splitting-limit-capped chunk splitter: Benutzen Sie Splitting-Limit-Caped-Chunk Splitter +Use the trash bin: Verwenden Sie den Müllcontainer +Use timeouts instead of heartbeats: Verwenden Sie Timeouts statt Herzschläge +username: Benutzername +Username: Benutzername +"V1: Legacy": "V1: Legacy" +"V2: Simple (Default)": "V2: Einfach (Standard)" +"V2.5: Lexical chunks": "V2.5: Lexikalische Chunks" +"V3: Fine deduplication": "V3: Feine Deduplizierung" +Verbose Log: Ausführliches Protokoll +Verify all: Alle prüfen +Verify and repair all files: Alle Dateien prüfen und reparieren +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.: + Warnung! Dies wird einen ernsthaften Einfluss auf die Leistung haben. Und die + Protokolle werden nicht unter dem Standardnamen synchronisiert. Bitte seien + Sie vorsichtig mit Protokollen; sie enthalten oft Ihre vertraulichen + Informationen. +We will now guide you through a few questions to simplify the synchronisation setup.: + Wir führen Sie nun durch einige Fragen, um die Synchronisationseinrichtung zu + vereinfachen. +We will now proceed with the server configuration.: Wir fahren nun mit der Serverkonfiguration fort。 +Welcome to Self-hosted LiveSync: Willkommen bei Self-hosted LiveSync +When you save a file in the editor, start a sync automatically: Wenn Sie eine Datei im Editor speichern, starten Sie automatisch einen Sync +While enabled, it causes very performance impact but debugging replication testing and other features will be enabled. Please disable this if you have not read the source code. Requires restart of Obsidian.: + Wenn aktiviert, beeinträchtigt dies die Leistung stark, aktiviert aber + Debugging, Replikationstests und andere Funktionen. Deaktiviere dies, wenn du + den Quellcode nicht gelesen hast. Obsidian muss neu gestartet werden. +Write credentials in the file: Anmeldeinformationen in der Datei schreiben +Write logs into the file: Logs in die Datei schreiben +xxhash32 (Fast but less collision resistance): xxhash32 (schnell, aber geringere Kollisionsresistenz) +xxhash64 (Fastest): xxhash64 (am schnellsten) +xxhash64 is the current default.: Der aktuelle Standard ist xxhash64. +Yes, I want to add this device to my existing synchronisation: Ja, ich möchte dieses Gerät zu meiner bestehenden Synchronisation hinzufügen +Yes, I want to set up a new synchronisation: Ja, ich möchte eine neue Synchronisation einrichten +You are adding this device to an existing synchronisation setup.: Sie fügen dieses Gerät zu einer bestehenden Synchronisationseinrichtung hinzu. +You can enable this setting to process the files with size mismatches, these files can be created by some APIs or integrations.: + Aktiviere diese Einstellung, um Dateien mit abweichender Größe zu verarbeiten; + solche Dateien können von manchen APIs oder Integrationen erstellt werden. diff --git a/src/common/messagesYAML/en.yaml b/src/common/messagesYAML/en.yaml index 8bf98424..6375c964 100644 --- a/src/common/messagesYAML/en.yaml +++ b/src/common/messagesYAML/en.yaml @@ -19,11 +19,31 @@ (RegExp) If this is set, any changes to local and remote files that match this will be skipped.: (RegExp) If this is set, any changes to local and remote files that match this will be skipped. +(Select this if you are already using synchronisation on another computer or smartphone.) This option is suitable if you are new to LiveSync and want to set it up from scratch.: + (Select this if you are already using synchronisation on another computer or + smartphone.) This option is suitable if you are new to LiveSync and want to + set it up from scratch. +(Select this if you are configuring this device as the first synchronisation device.) This option is suitable if you are new to LiveSync and want to set it up from scratch.: + (Select this if you are configuring this device as the first synchronisation + device.) This option is suitable if you are new to LiveSync and want to set it + up from scratch. +"> [!INFO]- The connected devices have been detected as follows:\n${devices}": |- + > [!INFO]- The connected devices have been detected as follows: + ${devices} +A Setup URI is a single string of text containing your server address and authentication details. Using a URI, if one was generated by your server installation script, provides a simple and secure configuration.: + A Setup URI is a single string of text containing your server address and + authentication details. Using a URI, if one was generated by your server + installation script, provides a simple and secure configuration. Access Key: Access Key Activate: Activate Active Remote Configuration: Active Remote Configuration +Active Remote Type: Active Remote Type Add default patterns: Add default patterns Add new connection: Add new connection +Advanced: Advanced +All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.: + All devices have the same progress value (${progress}). Your devices seem to + be synchronised. And be able to proceed with Garbage Collection. Always prompt merge conflicts: Always prompt merge conflicts Analyse: Analyse Analyse database usage: Analyse database usage @@ -33,6 +53,8 @@ Analyse database usage and generate a TSV report for diagnosis yourself. You can Apply Latest Change if Conflicting: Apply Latest Change if Conflicting Apply preset configuration: Apply preset configuration Ask a passphrase at every launch: Ask a passphrase at every launch +Automatically broadcast changes to connected peers: Automatically broadcast changes to connected peers +Automatically start P2P connection on launch: Automatically start P2P connection on launch Automatically Sync all files when opening Obsidian.: Automatically Sync all files when opening Obsidian. Back: Back Back to non-configured: Back to non-configured @@ -47,6 +69,7 @@ Before v0.17.16, we used an old adapter for the local database. Now the new adap fetching from the remote database, you will be asked to disable this. Bucket Name: Bucket Name Cancel: Cancel +Cancel Garbage Collection: Cancel Garbage Collection Changing this setting requires migrating existing data (a bit time may be taken) and restarting Obsidian. Please make sure to back up your data before proceeding.: Changing this setting requires migrating existing data (a bit time may be taken) and restarting Obsidian. Please make sure to back up your data before @@ -56,9 +79,14 @@ Check and convert non-path-obfuscated files: Check and convert non-path-obfuscat Check for documents that have not been converted to path-obfuscated IDs and convert them if necessary.: Check for documents that have not been converted to path-obfuscated IDs and convert them if necessary. +Chunk Splitter: Chunk Splitter cmdConfigSync: showCustomizationSync: Show Customization sync Comma separated `.gitignore, .dockerignore`: Comma separated `.gitignore, .dockerignore` +Compaction in progress on remote database...: Compaction in progress on remote database... +Compaction on remote database completed successfully.: Compaction on remote database completed successfully. +Compaction on remote database failed.: Compaction on remote database failed. +Compaction on remote database timed out.: Compaction on remote database timed out. Compare the content of files between on local database and storage. If not matched, you will be asked which one you want to keep.: Compare the content of files between on local database and storage. If not matched, you will be asked which one you want to keep. @@ -74,11 +102,19 @@ Configure: Configure Configure And Change Remote: Configure And Change Remote Configure E2EE: Configure E2EE Configure Remote: Configure Remote +Configure the same server information as your other devices again, manually, very advanced users only.: + Configure the same server information as your other devices again, manually, + very advanced users only. +Connection Method: Connection Method +Continue to CouchDB setup: Continue to CouchDB setup +Continue to Peer-to-Peer only setup: Continue to Peer-to-Peer only setup +Continue to S3/MinIO/R2 setup: Continue to S3/MinIO/R2 setup Copy: Copy Copy Report to clipboard: Copy Report to clipboard CouchDB Connection Tweak: CouchDB Connection Tweak Cross-platform: Cross-platform "Current adapter: {adapter}": "Current adapter: {adapter}" +Customization sync: Customization sync Customization Sync: Customization Sync Customization Sync (Beta3): Customization Sync (Beta3) Data Compression: Data Compression @@ -98,7 +134,9 @@ Delete Remote Configuration: Delete Remote Configuration Delete remote configuration '{name}'?: Delete remote configuration '{name}'? desktop: desktop Developer: Developer +Device: Device Device name: Device name +Device Setup Method: Device Setup Method dialog: yourLanguageAvailable: _value: >- @@ -197,11 +235,17 @@ E2EE Configuration: E2EE Configuration Edge case addressing (Behaviour): Edge case addressing (Behaviour) Edge case addressing (Database): Edge case addressing (Database) Edge case addressing (Processing): Edge case addressing (Processing) +Effectively a directory. Should end with `/`. e.g., `vault-name/`.: Effectively a directory. Should end with `/`. e.g., `vault-name/`. Emergency restart: Emergency restart Enable advanced features: Enable advanced features +Enable advanced mode: Enable advanced mode Enable customization sync: Enable customization sync Enable Developers' Debug Tools.: Enable Developers' Debug Tools. Enable edge case treatment features: Enable edge case treatment features +Enable forcePathStyle: Enable forcePathStyle +Enable P2P Synchronization: Enable P2P Synchronization +Enable per-file customization sync: Enable per-file customization sync +Enable power user mode: Enable power user mode Enable poweruser features: Enable poweruser features Enable this if your Object Storage doesn't support CORS: 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: @@ -211,29 +255,61 @@ Encrypt contents on the remote database. If you use the plugin's synchronization Encrypt contents on the remote database. If you use the plugin's synchronization feature, enabling this is recommended. Encrypting sensitive configuration items: Encrypting sensitive configuration items +Encryption passphrase. If changed, you should overwrite the server's database with the new (encrypted) files.: + Encryption passphrase. 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.: Encryption phassphrase. If changed, you should overwrite the server's database with the new (encrypted) files. End-to-End Encryption: End-to-End Encryption Endpoint URL: Endpoint URL Enhance chunk size: Enhance chunk size +Enter Server Information: Enter Server Information +Enter the server information manually: Enter the server information manually Export: Export +Failed to connect to remote for compaction.: Failed to connect to remote for compaction. +Failed to connect to remote for compaction. ${reason}: Failed to connect to remote for compaction. ${reason} +Failed to start one-shot replication before Garbage Collection. Garbage Collection Cancelled.: + Failed to start one-shot replication before Garbage Collection. Garbage + Collection Cancelled. +Failed to start replication after Garbage Collection.: Failed to start replication after Garbage Collection. Fetch: Fetch Fetch chunks on demand: Fetch chunks on demand Fetch database with previous behaviour: Fetch database with previous behaviour Fetch remote settings: Fetch remote settings +File prefix on the bucket: File prefix on the bucket File to resolve conflict: File to resolve conflict File to view History: File to view History Filename: Filename +Files with modification times greater than this value (in seconds since the Unix epoch) will not have their events reflected. Set to 0 to disable this limit.: + Files with modification times greater than this value (in seconds since the + Unix epoch) will not have their events reflected. Set to 0 to disable this + limit. +First, please select the option that best describes your current situation.: First, please select the option that best describes your current situation. Flag and restart: Flag and restart Forces the file to be synced when opened.: Forces the file to be synced when opened. Fresh Start Wipe: Fresh Start Wipe +Garbage Collection cancelled by user.: Garbage Collection cancelled by user. +"Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.": + "Garbage Collection completed. Deleted chunks: ${deletedChunks} / + ${totalChunks}. Time taken: ${seconds} seconds." +Garbage Collection Confirmation: Garbage Collection Confirmation Garbage Collection V3 (Beta): Garbage Collection V3 (Beta) +"Garbage Collection: Found ${unusedChunks} unused chunks to delete.": "Garbage Collection: Found ${unusedChunks} unused chunks to delete." +"Garbage Collection: Scanned ${scanned} / ~${docCount}": "Garbage Collection: Scanned ${scanned} / ~${docCount}" +"Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": + "Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used + chunks: ${usedChunks}" Handle files as Case-Sensitive: Handle files as Case-Sensitive +Hatch: Hatch Hidden Files: Hidden Files Hide completely: Hide completely Highlight diff: Highlight diff How to display network errors when the sync server is unreachable.: How to display network errors when the sync server is unreachable. +How would you like to configure the connection to your server?: How would you like to configure the connection to your server? +I am adding a device to an existing synchronisation setup: I am adding a device to an existing synchronisation setup +I am setting this up for the first time: I am setting this up for the first time +I know my server details, let me enter them: I know my server details, let me enter them 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). @@ -241,9 +317,17 @@ If enabled per-filed efficient customization sync will be used. We need a small 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, changes will be automatically broadcasted to all connected peers. Notified peers will start fetching the changes.: + If enabled, changes will be automatically broadcasted to all connected peers. + Notified peers will start fetching the changes. 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. +If enabled, efficient per-file customization sync will be used. A minor migration is required when enabling this feature, and all devices must be updated to v0.23.18. Enabling this feature will result in losing compatibility with older versions.: + If enabled, efficient per-file customization sync will be used. A minor + migration is required when enabling this feature, and all devices must be + updated to v0.23.18. Enabling this feature will result in losing compatibility + with older versions. 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. @@ -251,7 +335,21 @@ If enabled, the ⛔ icon will be shown inside the status instead of the file war 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.: If enabled, the file under 1kb will be processed in the UI thread. +If enabled, the forcePathStyle option will be used for bucket operations.: If enabled, the forcePathStyle option will be used for bucket operations. If enabled, the notification of hidden files change will be suppressed.: If enabled, the notification of hidden files change will be suppressed. +If enabled, the P2P connection will be automatically started when the application launches.: + If enabled, the P2P connection will be automatically started when the + application launches. +If enabled, the plugin will not attempt to connect to the remote database even if the chunk was not found locally.: + If enabled, the plugin will not attempt to connect to the remote database even + if the chunk was not found locally. +If enabled, the request API will be used to avoid `inevitable` CORS problems. This is a workaround and may not work in all cases. PLEASE READ THE DOCUMENTATION BEFORE USING THIS OPTION. This is a less-secure option.: + If enabled, the request API will be used to avoid `inevitable` CORS problems. + This is a workaround and may not work in all cases. PLEASE READ THE + DOCUMENTATION BEFORE USING THIS OPTION. This is a less-secure option. +If this enabled, all chunks will be stored with the revision made from its content.: + If this enabled, all chunks will be stored with the revision made from its + content. 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) @@ -270,6 +368,7 @@ If this option is enabled, PouchDB will hold the connection open for 60 seconds, If you reached the payload size limit when using IBM Cloudant, please decrease batch size and batch limit to a lower value.: If you reached the payload size limit when using IBM Cloudant, please decrease batch size and batch limit to a lower value. +Ignore and Proceed: Ignore and Proceed Ignore files: Ignore files Ignore patterns: Ignore patterns Import connection: Import connection @@ -323,6 +422,9 @@ liveSyncReplicator: liveSyncBegin: LiveSync begin... lockRemoteDb: Lock remote database to prevent data corruption markDeviceResolved: Mark this device as 'resolved'. + mismatchedTweakDetected: Some mismatches have been detected in the configuration + between devices. Running a manual replication will attempt to resolve this + issue. oneShotSyncBegin: OneShot Sync begin... (${syncMode}) remoteDbCorrupted: Remote database is newer or corrupted, make sure to latest version of self-hosted-livesync installed @@ -334,7 +436,6 @@ liveSyncReplicator: replicationInProgress: Replication is already in progress retryLowerBatchSize: Retry with lower batch size:${batch_size}/${batches_limit} unlockRemoteDb: Unlock remote database to prevent data corruption - mismatchedTweakDetected: Some mismatches have been detected in the configuration between devices. Running a manual replication will attempt to resolve this issue. liveSyncSetting: errorNoSuchSettingItem: "No such setting item: ${key}" originalValue: "Original: ${value}" @@ -351,11 +452,15 @@ logPane: pause: Pause title: Self-hosted LiveSync Log wrap: Wrap +Maintenance: Maintenance Maximum delay for batch database updating: Maximum delay for batch database updating +Maximum file modification time for reflected file events: Maximum file modification time for reflected file events Maximum file size: Maximum file size Maximum Incubating Chunk Size: Maximum Incubating Chunk Size Maximum Incubating Chunks: Maximum Incubating Chunks Maximum Incubation Period: Maximum Incubation Period +Maximum size of chunks to send in one request: Maximum size of chunks to send in one request +MB: MB MB (0 to disable).: MB (0 to disable). Memory cache: Memory cache Memory cache size (by total characters): Memory cache size (by total characters) @@ -639,7 +744,11 @@ More actions: More actions Move remotely deleted files to the trash, instead of deleting.: Move remotely deleted files to the trash, instead of deleting. Network warning style: Network warning style New Remote: New Remote +No connected device information found. Cancelling Garbage Collection.: No connected device information found. Cancelling Garbage Collection. No limit configured: No limit configured +No, please take me back: No, please take me back +Node ID: Node ID +Node Information Missing: Node Information Missing Non-Synchronising files: Non-Synchronising files Normal Files: Normal Files Not all messages have been translated. And, please revert to "Default" when reporting errors.: @@ -649,10 +758,14 @@ Notify all setting files: Notify all setting files Notify customized: Notify customized Notify when other device has newly customized.: Notify when other device has newly customized. Notify when the estimated remote storage size exceeds on start up: Notify when the estimated remote storage size exceeds on start up +Now we can choose how to split the chunks; V3 is the most efficient. If you have troubled, please make this Default or Legacy.: + Now we can choose how to split the chunks; V3 is the most efficient. If you + have troubled, please make this Default or Legacy. 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. 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. +Obsidian version: Obsidian version obsidianLiveSyncSettingTab: btnApply: Apply btnCheck: Check @@ -724,7 +837,7 @@ obsidianLiveSyncSettingTab: server! Please check it again!" logRebuildNote: Syncing has been disabled, fetch and re-enabled if desired. logSelectAnyPreset: Select any preset. - logServerConfigurationCheck: obsidianLiveSyncSettingTab.logServerConfigurationCheck + logServerConfigurationCheck: Log Server Configuration Check msgAreYouSureProceed: Are you sure to proceed? msgChangesNeedToBeApplied: Changes need to be applied! msgConfigCheck: --Config check-- @@ -973,9 +1086,11 @@ Passphrase of sensitive configuration items: Passphrase of sensitive configurati password: password Password: Password Paste a connection string: Paste a connection string +Paste the Setup URI generated from one of your active devices.: Paste the Setup URI generated from one of your active devices. Path Obfuscation: Path Obfuscation Patterns to match files for overwriting instead of merging: Patterns to match files for overwriting instead of merging Patterns to match files for syncing: Patterns to match files for syncing +Peer-to-Peer only: Peer-to-Peer only Peer-to-Peer Synchronisation: Peer-to-Peer Synchronisation Per-file-saved customization sync: Per-file-saved customization sync Perform: Perform @@ -985,13 +1100,28 @@ Perform Garbage Collection to remove unused chunks and reduce database size.: Pe Periodic Sync interval: Periodic Sync interval Pick a file to resolve conflict: Pick a file to resolve conflict Pick a file to show history: Pick a file to show history +Please disable 'Read chunks online' in settings to use Garbage Collection.: Please disable 'Read chunks online' in settings to use Garbage Collection. +Please enable 'Compute revisions for chunks' in settings to use Garbage Collection.: + Please enable 'Compute revisions for chunks' in settings to use Garbage + Collection. +Please select 'Cancel' explicitly to cancel this operation.: Please select 'Cancel' explicitly to cancel this operation. +Please select a method to import the settings from another device.: Please select a method to import the settings from another device. +Please select an option to proceed: Please select an option to proceed +Please select the type of server to which you are connecting.: Please select the type of server to which you are connecting. Please set device name to identify this device. This name should be unique among your devices. While not configured, we cannot enable this feature.: Please set device name to identify this device. This name should be unique among your devices. While not configured, we cannot enable this feature. Please set this device name: Please set this device name +Plug-in version: Plug-in version Prepare the 'report' to create an issue: Prepare the 'report' to create an issue Presets: Presets +Proceed Garbage Collection: Proceed Garbage Collection +Proceed with Setup URI: Proceed with Setup URI +Proceeding with Garbage Collection, ignoring missing nodes.: Proceeding with Garbage Collection, ignoring missing nodes. +Proceeding with Garbage Collection.: Proceeding with Garbage Collection. +Process files even if seems to be corrupted: Process files even if seems to be corrupted Process small files in the foreground: Process small files in the foreground +Progress: Progress Property Encryption: Property Encryption PureJS fallback (Fast, W/O WebAssembly): PureJS fallback (Fast, W/O WebAssembly) Purge all download/upload cache.: Purge all download/upload cache. @@ -1081,12 +1211,31 @@ RedFlag: FetchTraditional: Fetch everything from the remote Title: How do you want to fetch? FetchRemoteConfig: + Applied: Remote configuration applied. Buttons: Cancel: No, use local settings Fetch: Yes, fetch and apply remote settings + Retry: Retry (recommended) + SkipAndProceed: Skip and proceed + FailedMessage: Could not fetch configuration from remote. If you are new to the + Self-hosted LiveSync, this might be expected. If not, you should check + your network or server settings. + FailedTitle: Fetch Remote Configuration Failed + MatchesLocal: Remote configuration matches local configuration. No changes applied. Message: Do you want to fetch and apply remotely stored preference settings to the device? + NotApplied: Remote configuration not applied. + SettingsDiffered: Your settings differed slightly from the server's. The plug-in + has supplemented the incompatible parts with the server settings! Title: Fetch Remote Configuration + Log: + FetchEverythingCancelled: Fetch everything cancelled by user. + FetchEverythingCompleted: Fetch everything operation completed. Vault files will be gradually synced. + RebuildEverythingCancelled: Rebuild everything cancelled by user. + RebuildEverythingCompleted: Rebuild everything operation completed. + VaultInitialisationError: Error during vault initialisation. + VaultInitialisationProcessError: Error during vault initialisation process. + ResumeProcessingPrompt: Do you want to resume file and database processing, and restart obsidian now? Reduces storage space by discarding all non-latest revisions. This requires the same amount of free space on the remote server and the local client.: Reduces storage space by discarding all non-latest revisions. This requires the same amount of free space on the remote server and the local client. @@ -1167,10 +1316,12 @@ Restarting Obsidian is strongly recommended. Until restart, some changes may not not take effect, and display may be inconsistent. Are you sure to restart now? Restore or reconstruct local database from remote.: Restore or reconstruct local database from remote. Run Doctor: Run Doctor +S3/MinIO/R2 Object Storage: S3/MinIO/R2 Object Storage 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. Saving will be performed forcefully after this number of seconds.: Saving will be performed forcefully after this number of seconds. +Scan a QR Code (Recommended for mobile): Scan a QR Code (Recommended for mobile) Scan changes on customization sync: Scan changes on customization sync Scan customization automatically: Scan customization automatically Scan customization before replicating.: Scan customization before replicating. @@ -1179,6 +1330,7 @@ Scan customization periodically: Scan customization periodically Scan for Broken files: Scan for Broken files Scan for hidden files before replication: Scan for hidden files before replication Scan hidden files periodically: Scan hidden files periodically +Scan the QR code displayed on an active device using this device's camera.: Scan the QR code displayed on an active device using this device's camera. Schedule and Restart: Schedule and Restart Scram Switches: Scram Switches Scram!: Scram! @@ -1188,6 +1340,7 @@ Seconds. Saving to the local database will be delayed until this value after we we stop typing or saving. Secret Key: Secret Key Select the database adapter to use.: Select the database adapter to use. +Selector: Selector Send: Send Send chunks: Send chunks Server URI: Server URI @@ -1270,6 +1423,7 @@ SettingTab: Message: AskRebuild: Your changes require fetching from the remote database. Do you want to proceed? +Setup URI dialog cancelled.: Setup URI dialog cancelled. Setup: Apply: Buttons: @@ -1296,6 +1450,12 @@ Setup: Title: Apply new configuration from the ${method} WarningRebuildRecommended: "NOTE: after adjusting the settings, it has been determined that a rebuild is required; Just Import is not recommended." + Command: + CopySetupUri: Copy settings as a new setup URI + CopySetupUriFull: Copy settings as a new setup URI (Full) + CopySetupUriWithSync: Copy settings as a new setup URI (With customization sync) + OpenSetupUri: Use the copied setup URI (Formerly Open setup URI) + ShowSettingsQrCode: Show settings as a QR code Doctor: Buttons: No: No, please use the settings in the URI as is @@ -1311,6 +1471,8 @@ Setup: Do you want to run Doctor to check if the imported settings are optimal compared to the latest state? Title: Do you want to consult the doctor? + EncryptSettingsPassphrase: The passphrase to encrypt the setup URI + EncryptSettingsTitle: Encrypt your settings FetchRemoteConf: Buttons: Fetch: Yes, please fetch the configuration @@ -1329,6 +1491,10 @@ Setup: Note: Mostly, you are safe to do this, that your remote database is hosted with a SSL certificate, and your network is not compromised. Title: Fetch configuration from remote database? + Log: + ProtocolHandlerRegistrationFailed: Failed to register protocol handler. This + feature may not work in some environments. + SetupUriCopiedToClipboard: Setup URI copied to clipboard QRCode: >- We have generated a QR code to transfer the settings. Please scan the QR code with your phone or other device. @@ -1339,96 +1505,77 @@ Setup: >[!FOR YOUR EYES ONLY]- >
${qr_image}
- ShowQRCode: - _value: Show QR code - Desc: Show QR code to transfer the settings. + QRCodeTitle: Settings QR Code RemoteE2EE: - Title: End-to-End Encryption + AdvancedTitle: Advanced + AlgorithmWarning: Changing the encryption algorithm will prevent access to any + data previously encrypted with a different algorithm. Ensure that all your + devices are configured to use the same algorithm to maintain access to + your data. + ButtonCancel: Cancel + ButtonProceed: Proceed + DefaultAlgorithmDesc: In most cases, you should stick with the default algorithm + (${algorithm}). This setting is only required if you have an existing + Vault encrypted in a different format. Guidance: Please configure your end-to-end encryption settings. LabelEncrypt: End-to-End Encryption + LabelEncryptionAlgorithm: Encryption Algorithm + LabelObfuscateProperties: Obfuscate Properties + MultiDestinationWarning: This setting must be the same even when connecting to + multiple synchronisation destinations. + ObfuscatePropertiesDesc: Obfuscating properties (e.g., path of file, size, + creation and modification dates) 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. This helps protect your privacy and makes it + more difficult for unauthorized users to infer information about your + data. + PassphraseValidationLine1: 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. If an incorrect passphrase + is entered, the data on the server will become corrupted. Please + understand that this is intended behaviour. PlaceholderPassphrase: Enter your passphrase + StronglyRecommendedLine1: 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. Make sure to remember your + passphrase, as it will be required to decrypt your data on other devices. + 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. 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. This means that even if someone gains access to the server, they won't be able to read your data without the passphrase. Make sure to remember your passphrase, as it will be required to decrypt your data on other devices. - 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. - MultiDestinationWarning: This setting must be the same even when connecting to multiple synchronisation destinations. - LabelObfuscateProperties: Obfuscate Properties - ObfuscatePropertiesDesc: Obfuscating properties (e.g., path of file, size, creation and modification dates) 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. This helps protect your privacy and makes it more difficult for unauthorized users to infer information about your data. - AdvancedTitle: Advanced - LabelEncryptionAlgorithm: Encryption Algorithm - DefaultAlgorithmDesc: In most cases, you should stick with the default algorithm (${algorithm}). This setting is only required if you have an existing Vault encrypted in a different format. - AlgorithmWarning: Changing the encryption algorithm will prevent access to any data previously encrypted with a different algorithm. Ensure that all your devices are configured to use the same algorithm to maintain access to your data. - PassphraseValidationLine1: 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. If an incorrect passphrase is entered, the data on the server will become corrupted. Please understand that this is intended behaviour. - ButtonProceed: Proceed - ButtonCancel: Cancel - UseSetupURI: - Title: Enter Setup URI - GuidanceLine1: Please enter the Setup URI that was generated during server installation or on another device, along with the vault passphrase. - GuidanceLine2: Note that you can generate a new Setup URI by running the "Copy settings as a new Setup URI" command in the command palette. - LabelSetupURI: Setup URI - ValidInfo: The Setup URI is valid and ready to use. - InvalidInfo: The Setup URI is invalid. Please check it and try again. - LabelPassphrase: Vault passphrase - PlaceholderPassphrase: Enter your vault passphrase - ErrorPassphraseRequired: Please enter the vault passphrase. - ErrorFailedToParse: Failed to parse the Setup URI. Please check the URI and passphrase. - ButtonProceed: Test Settings and Continue - ButtonCancel: Cancel + Title: End-to-End Encryption ScanQRCode: - Title: Scan QR Code + ButtonClose: Close this dialog Guidance: 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 -"Please enable 'Compute revisions for chunks' in settings to use Garbage Collection.": Please enable 'Compute revisions for chunks' in settings to use Garbage Collection. -"Please disable 'Read chunks online' in settings to use Garbage Collection.": Please disable 'Read chunks online' in settings to use Garbage Collection. -"Setup URI dialog cancelled.": Setup URI dialog cancelled. -"Please select 'Cancel' explicitly to cancel this operation.": Please select 'Cancel' explicitly to cancel this operation. -"Failed to connect to remote for compaction.": Failed to connect to remote for compaction. -"Failed to connect to remote for compaction. ${reason}": Failed to connect to remote for compaction. ${reason} -"Compaction in progress on remote database...": Compaction in progress on remote database... -"Compaction on remote database timed out.": Compaction on remote database timed out. -"Compaction on remote database completed successfully.": Compaction on remote database completed successfully. -"Compaction on remote database failed.": Compaction on remote database failed. -"Failed to start one-shot replication before Garbage Collection. Garbage Collection Cancelled.": Failed to start one-shot replication before Garbage Collection. Garbage Collection Cancelled. -"Cancel Garbage Collection": Cancel Garbage Collection -"No connected device information found. Cancelling Garbage Collection.": No connected device information found. Cancelling Garbage Collection. -"The following accepted nodes are missing its node information:\n- ${missingNodes}\n\nThis indicates that they have not been connected for some time or have been left on an older version.\nIt is preferable to update all devices if possible. If you have any devices that are no longer in use, you can clear all accepted nodes by locking the remote once.": |- - The following accepted nodes are missing its node information: - - ${missingNodes} - - This indicates that they have not been connected for some time or have been left on an older version. - It is preferable to update all devices if possible. If you have any devices that are no longer in use, you can clear all accepted nodes by locking the remote once. -"Ignore and Proceed": Ignore and Proceed -"Node Information Missing": Node Information Missing -"Garbage Collection cancelled by user.": Garbage Collection cancelled by user. -"Proceeding with Garbage Collection, ignoring missing nodes.": Proceeding with Garbage Collection, ignoring missing nodes. -"Proceed Garbage Collection": Proceed Garbage Collection -"> [!INFO]- The connected devices have been detected as follows:\n${devices}": |- - > [!INFO]- The connected devices have been detected as follows: - ${devices} -"Device": Device -"Node ID": Node ID -"Obsidian version": Obsidian version -"Plug-in version": Plug-in version -"Progress": Progress -"Some devices have differing progress values (max: ${maxProgress}, min: ${minProgress}).\nThis may indicate that some devices have not completed synchronisation, which could lead to conflicts. Strongly recommend confirming that all devices are synchronised before proceeding.": |- - Some devices have differing progress values (max: ${maxProgress}, min: ${minProgress}). - This may indicate that some devices have not completed synchronisation, which could lead to conflicts. Strongly recommend confirming that all devices are synchronised before proceeding. -"All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.": All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection. -"Garbage Collection Confirmation": Garbage Collection Confirmation -"Proceeding with Garbage Collection.": Proceeding with Garbage Collection. -"Garbage Collection: Scanned ${scanned} / ~${docCount}": |- - Garbage Collection: Scanned ${scanned} / ~${docCount} -"Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": |- - Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks} -"Garbage Collection: Found ${unusedChunks} unused chunks to delete.": |- - Garbage Collection: Found ${unusedChunks} unused chunks to delete. -"Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.": |- - Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds. -"Failed to start replication after Garbage Collection.": Failed to start replication after Garbage Collection. + 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. + Title: Scan QR Code + SetupUri: Setup URI + ShowQRCode: + _value: Show QR code + Desc: Show QR code to transfer the settings. + UseSetupURI: + ButtonCancel: Cancel + ButtonProceed: Test Settings and Continue + ErrorFailedToParse: Failed to parse the Setup URI. Please check the URI and passphrase. + ErrorPassphraseRequired: Please enter the vault passphrase. + GuidanceLine1: Please enter the Setup URI that was generated during server + installation or on another device, along with the vault passphrase. + GuidanceLine2: Note that you can generate a new Setup URI by running the "Copy + settings as a new Setup URI" command in the command palette. + InvalidInfo: The Setup URI is invalid. Please check it and try again. + LabelPassphrase: Vault passphrase + LabelSetupURI: Setup URI + PlaceholderPassphrase: Enter your vault passphrase + Title: Enter Setup URI + ValidInfo: The Setup URI is valid and ready to use. Should we keep folders that don't have any files inside?: Should we keep folders that don't have any files inside? Should we only check for conflicts when a file is opened?: Should we only check for conflicts when a file is opened? Should we prompt you about conflicting files when a file is opened?: Should we prompt you about conflicting files when a file is opened? @@ -1444,6 +1591,13 @@ Show status icon instead of file warnings banner: Show status icon instead of fi Show status inside the editor: Show status inside the editor Show status on the status bar: Show status on the status bar Show verbose log. Please enable if you report an issue.: Show verbose log. Please enable if you report an issue. +"Some devices have differing progress values (max: ${maxProgress}, min: ${minProgress}).\nThis may indicate that some devices have not completed synchronisation, which could lead to conflicts. Strongly recommend confirming that all devices are synchronised before proceeding.": >- + Some devices have differing progress values (max: ${maxProgress}, min: + ${minProgress}). + + This may indicate that some devices have not completed synchronisation, which + could lead to conflicts. Strongly recommend confirming that all devices are + synchronised before proceeding. Starts synchronisation when a file is saved.: Starts synchronisation when a file is saved. Stop reflecting database changes to storage files.: Stop reflecting database changes to storage files. Stop watching for file changes.: Stop watching for file changes. @@ -1460,6 +1614,9 @@ Sync on Editor Save: Sync on Editor Save Sync on File Open: Sync on File Open Sync on Save: Sync on Save Sync on Startup: Sync on Startup +Synchronisation utilising journal files. You must have set up an S3/MinIO/R2 compatible object storage.: + Synchronisation utilising journal files. You must have set up an S3/MinIO/R2 + compatible object storage. Synchronising files: Synchronising files Syncing: Syncing Target patterns: Target patterns @@ -1467,6 +1624,18 @@ Testing only - Resolve file conflicts by syncing newer copies of the file, this Testing only - Resolve file conflicts by syncing newer copies of the file, this can overwrite modified files. Be Warned. The delay for consecutive on-demand fetches: The delay for consecutive on-demand fetches +"The following accepted nodes are missing its node information:\n- ${missingNodes}\n\nThis indicates that they have not been connected for some time or have been left on an older version.\nIt is preferable to update all devices if possible. If you have any devices that are no longer in use, you can clear all accepted nodes by locking the remote once.": >- + The following accepted nodes are missing its node information: + + - ${missingNodes} + + + This indicates that they have not been connected for some time or have been + left on an older version. + + It is preferable to update all devices if possible. If you have any devices + that are no longer in use, you can clear all accepted nodes by locking the + remote once. The Hash algorithm for chunk IDs: The Hash algorithm for chunk IDs The IndexedDB adapter often offers superior performance in certain scenarios, but it has been found to cause memory leaks when used with LiveSync mode. When using LiveSync mode, please use IDB adapter instead.: The IndexedDB adapter often offers superior performance in certain scenarios, @@ -1482,6 +1651,17 @@ The maximum total size of chunks that can be incubated within the document. Chun 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.: The minimum interval for automatic synchronisation on event. +This feature enables direct synchronisation between devices. No server is required, but both devices must be online at the same time for synchronisation to occur, and some features may be limited. Internet connection is only required to signalling (detecting peers) and not for data transfer.: + This feature enables direct synchronisation between devices. No server is + required, but both devices must be online at the same time for synchronisation + to occur, and some features may be limited. Internet connection is only + required to signalling (detecting peers) and not for data transfer. +This is an advanced option for users who do not have a URI or who wish to configure detailed settings.: + This is an advanced option for users who do not have a URI or who wish to + configure detailed settings. +This is the most suitable synchronisation method for the design. All functions are available. You must have set up a CouchDB instance.: + This is the most suitable synchronisation method for the design. All functions + are available. You must have set up a CouchDB instance. 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. @@ -1491,7 +1671,9 @@ This will recreate chunks for all files. If there were missing chunks, this may Transfer Tweak: Transfer Tweak TweakMismatchResolve: Action: + DisableAutoAcceptCompatible: Disable auto-accept Dismiss: Dismiss + EnableAutoAcceptCompatible: Enable auto-accept UseConfigured: Use configured settings UseMine: Update remote database settings UseMineAcceptIncompatible: Update remote database settings but keep as is @@ -1499,13 +1681,11 @@ TweakMismatchResolve: UseRemote: Apply settings to this device UseRemoteAcceptIncompatible: Apply settings to this device, but and ignore incompatibility UseRemoteWithRebuild: Apply settings to this device, and fetch again - EnableAutoAcceptCompatible: Enable auto-accept - DisableAutoAcceptCompatible: Disable auto-accept Message: AutoAcceptCompatibleUndefined: >- - - It appears that the settings differ for each device. - You can now automatically apply compatible changes to these configurations. + + It appears that the settings differ for each device. You can now + automatically apply compatible changes to these configurations. Would you like to enable this `auto-accept` setting? Main: >- @@ -1542,6 +1722,8 @@ TweakMismatchResolve: Let us know your decision. ${additionalMessage} + mineUpdated: The device configuration have been adjusted. + remoteUpdated: The configuration stored remotely has been updated. UseRemote: WarningRebuildRecommended: >- @@ -1584,8 +1766,6 @@ TweakMismatchResolve: > 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.** - remoteUpdated: The configuration stored remotely has been updated. - mineUpdated: The device configuration have been adjusted. Table: _value: |+ | Value name | This device | On Remote | @@ -1595,80 +1775,76 @@ TweakMismatchResolve: Row: "| ${name} | ${self} | ${remote} |" Title: _value: Configuration Mismatch Detected + AutoAcceptCompatible: Auto-Accept Available TweakResolving: Configuration Mismatch Detected UseRemoteConfig: Use Remote Configuration - AutoAcceptCompatible: Auto-Accept Available -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 a custom passphrase: Use a custom passphrase -Use Custom HTTP Handler: Use Custom HTTP Handler -Use dynamic iteration count: Use dynamic iteration count -Use Segmented-splitter: Use Segmented-splitter -Use splitting-limit-capped chunk splitter: Use splitting-limit-capped chunk splitter -Use the trash bin: Use the trash bin -Use timeouts instead of heartbeats: Use timeouts instead of heartbeats -username: username -Username: Username -Verbose Log: Verbose Log -Verify all: Verify all -Verify and repair all files: Verify and repair all files -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. -We cannot change the device name while this feature is enabled. Please disable this feature to change the device name.: - We cannot change the device name while this feature is enabled. Please disable - this feature to change the device name. -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 -xxhash32 (Fast but less collision resistance): xxhash32 (Fast but less collision resistance) -xxhash64 (Fastest): xxhash64 (Fastest) -"Welcome to Self-hosted LiveSync": "Welcome to Self-hosted LiveSync" -"We will now guide you through a few questions to simplify the synchronisation setup.": "We will now guide you through a few questions to simplify the synchronisation setup." -"First, please select the option that best describes your current situation.": "First, please select the option that best describes your current situation." -"I am setting this up for the first time": "I am setting this up for the first time" -"(Select this if you are configuring this device as the first synchronisation device.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": "(Select this if you are configuring this device as the first synchronisation device.) This option is suitable if you are new to LiveSync and want to set it up from scratch." -"I am adding a device to an existing synchronisation setup": "I am adding a device to an existing synchronisation setup" -"(Select this if you are already using synchronisation on another computer or smartphone.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": "(Select this if you are already using synchronisation on another computer or smartphone.) This option is suitable if you are new to LiveSync and want to set it up from scratch." -"Yes, I want to set up a new synchronisation": "Yes, I want to set up a new synchronisation" -"Yes, I want to add this device to my existing synchronisation": "Yes, I want to add this device to my existing synchronisation" -"No, please take me back": "No, please take me back" -"Device Setup Method": "Device Setup Method" -"You are adding this device to an existing synchronisation setup.": "You are adding this device to an existing synchronisation setup." -"Please select a method to import the settings from another device.": "Please select a method to import the settings from another device." -"Use a Setup URI (Recommended)": "Use a Setup URI (Recommended)" -"Paste the Setup URI generated from one of your active devices.": "Paste the Setup URI generated from one of your active devices." -"Scan a QR Code (Recommended for mobile)": "Scan a QR Code (Recommended for mobile)" -"Scan the QR code displayed on an active device using this device's camera.": "Scan the QR code displayed on an active device using this device's camera." -"Enter the server information manually": "Enter the server information manually" -"Configure the same server information as your other devices again, manually, very advanced users only.": "Configure the same server information as your other devices again, manually, very advanced users only." -"Proceed with Setup URI": "Proceed with Setup URI" -"I know my server details, let me enter them": "I know my server details, let me enter them" -"Please select an option to proceed": "Please select an option to proceed" -"Connection Method": "Connection Method" -"We will now proceed with the server configuration.": "We will now proceed with the server configuration." -"How would you like to configure the connection to your server?": "How would you like to configure the connection to your server?" -"A Setup URI is a single string of text containing your server address and authentication details. Using a URI, if one was generated by your server installation script, provides a simple and secure configuration.": "A Setup URI is a single string of text containing your server address and authentication details. Using a URI, if one was generated by your server installation script, provides a simple and secure configuration." -"This is an advanced option for users who do not have a URI or who wish to configure detailed settings.": "This is an advanced option for users who do not have a URI or who wish to configure detailed settings." -"Enter Server Information": "Enter Server Information" -"Please select the type of server to which you are connecting.": "Please select the type of server to which you are connecting." -"Continue to CouchDB setup": "Continue to CouchDB setup" -"Continue to S3/MinIO/R2 setup": "Continue to S3/MinIO/R2 setup" -"Continue to Peer-to-Peer only setup": "Continue to Peer-to-Peer only setup" -"This is the most suitable synchronisation method for the design. All functions are available. You must have set up a CouchDB instance.": "This is the most suitable synchronisation method for the design. All functions are available. You must have set up a CouchDB instance." -"S3/MinIO/R2 Object Storage": "S3/MinIO/R2 Object Storage" -"Synchronisation utilising journal files. You must have set up an S3/MinIO/R2 compatible object storage.": "Synchronisation utilising journal files. You must have set up an S3/MinIO/R2 compatible object storage." -"Peer-to-Peer only": "Peer-to-Peer only" -"This feature enables direct synchronisation between devices. No server is required, but both devices must be online at the same time for synchronisation to occur, and some features may be limited. Internet connection is only required to signalling (detecting peers) and not for data transfer.": "This feature enables direct synchronisation between devices. No server is required, but both devices must be online at the same time for synchronisation to occur, and some features may be limited. Internet connection is only required to signalling (detecting peers) and not for data transfer." Ui: + Bucket: + Guidance: Please enter the details required to connect to your S3/MinIO/R2 + compatible object storage service. Common: Signal: - Caution: CAUTION - Danger: DANGER - Notice: NOTICE - Warning: WARNING + Caution: Caution + Danger: Danger + Notice: Notice + Warning: Warning + ConflictResolver: + FileToResolve: File To Resolve + CouchDB: + Guidance: Please enter the CouchDB server information below. + History: + FileToView: File To View + P2P: + Guidance: Please enter the Peer-to-Peer Synchronisation information below. + RemoteE2EE: + AdvancedTitle: Advanced + AlgorithmWarning: Changing the encryption algorithm will prevent access to any + data previously encrypted with a different algorithm. + ButtonCancel: Cancel + ButtonProceed: Proceed + DefaultAlgorithmDesc: In most cases, you should stick with the default algorithm. + Guidance: Please configure your end-to-end encryption settings. + LabelEncrypt: End-to-End Encryption + LabelEncryptionAlgorithm: Encryption Algorithm + LabelObfuscateProperties: Obfuscate Properties + 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. + MultiDestinationWarning: 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. + PassphraseValidationLine1: Please be aware that the End-to-End Encryption + passphrase is not validated until the synchronisation process actually + commences. + PassphraseValidationLine2: Therefore, we ask that you exercise extreme caution + when configuring server information manually. + PlaceholderPassphrase: Enter your passphrase + 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. + 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. + StronglyRecommendedTitle: Strongly Recommended + Title: End-to-End Encryption + WarningSameSetting: This setting must be the same even when connecting to + multiple synchronisation destinations. + ScanQRCode: + ButtonClose: Close this dialog + 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. + Title: Scan QR Code Settings: Advanced: LocalDatabaseTweak: Local Database Tweak @@ -1696,43 +1872,54 @@ Ui: CustomizationSync: OpenDesc: Open the dialog Panel: Customization Sync - WarnChangeDeviceName: We cannot change the device name while this feature is enabled. Please disable this feature to change the device name. - WarnSetDeviceName: Please set device name to identify this device. This name should be unique among your devices. While not configured, we cannot enable this feature. + WarnChangeDeviceName: Warn Change Device Name + WarnSetDeviceName: Warn Set Device Name Hatch: AnalyseDatabaseUsage: Analyse database usage - AnalyseDatabaseUsageDesc: Analyse database usage and generate a TSV report for diagnosis yourself. You can paste the generated report with any spreadsheet you like. + AnalyseDatabaseUsageDesc: Analyse database usage and generate a TSV report for + diagnosis yourself. You can paste the generated report with any + spreadsheet you like. BackToNonConfigured: Back to non-configured ConvertNonObfuscated: Check and convert non-path-obfuscated files - ConvertNonObfuscatedDesc: Check the local database for files that were stored without path obfuscation and convert them when needed. + ConvertNonObfuscatedDesc: Check the local database for files that were stored + without path obfuscation and convert them when needed. CopyIssueReport: Copy Report to clipboard DatabaseLabel: "Database: ${details}" DatabaseToStorage: Database -> Storage DeleteCustomizationSyncData: Delete all customization sync data - GeneratedReport: Generated report + GeneratedReport: Generated Report Missing: Missing - ModifiedSize: "Modified: ${modified}, Size: ${size}" - ModifiedSizeActual: "Modified: ${modified}, Size: ${size} (actual size: ${actualSize})" + ModifiedSize: Modified Size + ModifiedSizeActual: Modified Size Actual PrepareIssueReport: Prepare the 'report' to create an issue + RecoveryAndRepair: Recovery and Repair RecreateAll: Recreate all RecreateMissingChunks: Recreate missing chunks for all files - RecreateMissingChunksDesc: This will recreate chunks for all files. If there were missing chunks, this may fix the errors. - RecoveryAndRepair: Recovery and Repair + RecreateMissingChunksDesc: This will recreate chunks for all files. If there + were missing chunks, this may fix the errors. ResetPanel: Reset ResetRemoteUsage: Reset notification threshold and check the remote database usage - ResetRemoteUsageDesc: Reset the remote storage size threshold and check the remote storage size again. + ResetRemoteUsageDesc: Reset the remote storage size threshold and check the + remote storage size again. ResolveAllConflictedFiles: Resolve all conflicted files by the newer one - ResolveAllConflictedFilesDesc: "Resolve all conflicted files by the newer one. Caution: This will overwrite the older one, and cannot resurrect the overwritten one." + ResolveAllConflictedFilesDesc: "Resolve all conflicted files by the newer one. + Caution: This will overwrite the older one, and cannot resurrect the + overwritten one." RunDoctor: Run Doctor - ScanBrokenFiles: Scan for broken files + ScanBrokenFiles: Scan for Broken files ScramSwitches: Scram Switches ShowHistory: Show history StorageLabel: "Storage: ${details}" StorageToDatabase: Storage -> Database VerifyAndRepairAllFiles: Verify and repair all files - VerifyAndRepairAllFilesDesc: Compare the content of files between the local database and storage. If they do not match, you will be asked which one to keep. + VerifyAndRepairAllFilesDesc: Compare the content of files between the local + database and storage. If they do not match, you will be asked which one + to keep. Maintenance: Cleanup: Perform cleanup - CleanupDesc: Reduces storage space by discarding all non-latest revisions. This requires the same amount of free space on the remote server and the local client. + CleanupDesc: Reduces storage space by discarding all non-latest revisions. This + requires the same amount of free space on the remote server and the + local client. DeleteLocalDatabase: Delete local database to reset or uninstall Self-hosted LiveSync EmergencyRestart: Emergency restart EmergencyRestartDesc: Disable all synchronisation and restart. @@ -1740,38 +1927,42 @@ Ui: FreshStartWipeDesc: Delete all data on the remote server. GarbageCollection: Garbage Collection V3 (Beta) GarbageCollectionAction: Perform Garbage Collection - GarbageCollectionDesc: Perform Garbage Collection to remove unused chunks and reduce database size. + GarbageCollectionDesc: Perform Garbage Collection to remove unused chunks and + reduce database size. LockServer: Lock Server LockServerDesc: Lock the remote server to prevent synchronisation with other devices. - OverwriteServerData: Overwrite Server Data with This Device's Files - OverwriteServerDataDesc: Rebuild the local and remote database with files from this device. OverwriteRemote: Overwrite remote OverwriteRemoteDesc: Overwrite remote with local DB and passphrase. + OverwriteServerData: Overwrite Server Data with This Device's Files + OverwriteServerDataDesc: Rebuild the local and remote database with files from this device. PurgeAllJournalCounter: Purge all journal counter PurgeAllJournalCounterDesc: Purge all download and upload caches. RebuildingOperations: Rebuilding Operations (Remote Only) + Resend: Resend + ResendDesc: Resend all chunks to the remote. Reset: Reset ResetAllJournalCounter: Reset all journal counter - ResetAllJournalCounterDesc: Initialise all journal history. On the next sync, every item will be received and sent again. + ResetAllJournalCounterDesc: Initialise all journal history. On the next sync, + every item will be received and sent again. ResetJournalReceived: Reset journal received history - ResetJournalReceivedDesc: Initialise journal received history. On the next sync, every item except those sent by this device will be downloaded again. - ResetReceived: Reset received + ResetJournalReceivedDesc: Initialise journal received history. On the next sync, + every item except those sent by this device will be downloaded again. ResetJournalSent: Reset journal sent history - ResetJournalSentDesc: Initialise journal sent history. On the next sync, every item except those received by this device will be sent again. + ResetJournalSentDesc: Initialise journal sent history. On the next sync, every + item except those received by this device will be sent again. ResetLocalSyncInfo: Reset Synchronisation information ResetLocalSyncInfoDesc: Restore or reconstruct local database from remote. + ResetReceived: Reset received ResetSentHistory: Reset sent history ResetThisDevice: Reset Synchronisation on This Device - Resend: Resend - ResendDesc: Resend all chunks to the remote. ScheduleAndRestart: Schedule and Restart Scram: Scram! SendChunks: Send chunks Syncing: Syncing - WarningLockedReadyAction: I am ready, unlock the database - WarningLockedReadyText: To prevent unwanted vault corruption, the remote database has been locked for synchronisation. (This device is marked as 'resolved'.) When all your devices are marked as 'resolved', unlock the database. This warning will continue to appear until replication confirms the device is resolved. - WarningLockedResolveAction: I have made a backup, mark this device as resolved - WarningLockedResolveText: The remote database is locked for synchronisation to prevent vault corruption because this device is not marked as 'resolved'. Please back up your vault, reset the local database, and select 'Mark this device as resolved'. This warning will persist until replication confirms the device is resolved. + WarningLockedReadyAction: Warning Locked Ready Action + WarningLockedReadyText: Warning Locked Ready Text + WarningLockedResolveAction: Warning Locked Resolve Action + WarningLockedResolveText: Warning Locked Resolve Text WriteRedFlagAndRestart: Flag and restart Patches: CompatibilityConflict: Compatibility (Conflict Behaviour) @@ -1786,65 +1977,65 @@ Ui: EdgeCaseBehaviour: Edge case addressing (Behaviour) EdgeCaseDatabase: Edge case addressing (Database) EdgeCaseProcessing: Edge case addressing (Processing) - IndexedDbWarning: The IndexedDB adapter often offers superior performance in certain scenarios, but it has been found to cause memory leaks when used with LiveSync mode. When using LiveSync mode, please use the IDB adapter instead. - MigrationWarning: Changing this setting requires migrating existing data, which may take some time, and restarting Obsidian. Please make sure to back up your data before proceeding. - MigratingToIdb: Migrating all data to IDB... - MigratingToIndexedDb: Migrating all data to IndexedDB... - MigrationIdbCompleted: Migration to IDB completed. Obsidian will be restarted with the new configuration immediately. - MigrationIdbCompletedFollowUp: Migration to IDB completed. Please switch the adapter and restart Obsidian. - MigrationIndexedDbCompleted: Migration to IndexedDB completed. Obsidian will be restarted with the new configuration immediately. - MigrationIndexedDbCompletedFollowUp: Migration to IndexedDB completed. Please switch the adapter and restart Obsidian. - OperationToIdb: to IDB - OperationToIndexedDb: to IndexedDB + IndexedDbWarning: Indexed Db Warning + MigratingToIdb: Migrating To Idb + MigratingToIndexedDb: Migrating To Indexed Db + MigrationIdbCompleted: Migration Idb Completed + MigrationIdbCompletedFollowUp: Migration Idb Completed Follow Up + MigrationIndexedDbCompleted: Migration Indexed Db Completed + MigrationIndexedDbCompletedFollowUp: Migration Indexed Db Completed Follow Up + MigrationWarning: Migration Warning + OperationToIdb: Operation To Idb + OperationToIndexedDb: Operation To Indexed Db Remediation: Remediation - RemediationChanged: Remediation Setting Changed - RemediationNoLimit: No limit configured - RemediationRestartLater: Later - RemediationRestartMessage: Restarting Obsidian is strongly recommended. Until restart, some changes may not take effect, and the display may be inconsistent. Are you sure you want to restart now? - RemediationRestartNow: Restart Now - RemediationRestarting: Remediation setting changed. Restarting Obsidian... - RemediationSuffixChanged: Suffix has been changed. Reopening database... - RemediationWithValue: "Limit: ${date} (${timestamp})" + RemediationChanged: Remediation Changed + RemediationNoLimit: Remediation No Limit + RemediationRestarting: Remediation Restarting + RemediationRestartLater: Remediation Restart Later + RemediationRestartMessage: Remediation Restart Message + RemediationRestartNow: Remediation Restart Now + RemediationSuffixChanged: Remediation Suffix Changed + RemediationWithValue: "Value: ${date} (${timestamp})" RemoteDatabaseSunset: Remote Database Tweak (In sunset) - SwitchToIDB: Switch to IDB - SwitchToIndexedDb: Switch to IndexedDB + SwitchToIDB: Switch To IDB + SwitchToIndexedDb: Switch To Indexed Db PowerUsers: ConfigurationEncryption: Configuration Encryption ConnectionTweak: CouchDB Connection Tweak - ConnectionTweakDesc: If you reached the payload size limit when using IBM Cloudant, please decrease batch size and batch limit to a lower value. + ConnectionTweakDesc: Connection Tweak Desc Default: Default Developer: Developer EncryptSensitiveConfig: Encrypt sensitive configuration items - PromptPassphraseEveryLaunch: Ask for a passphrase at every launch + PromptPassphraseEveryLaunch: Ask a passphrase at every launch UseCustomPassphrase: Use a custom passphrase Remote: Activate: Activate - ActiveSuffix: " (Active)" - AddConnection: Add new connection - AddRemoteDefaultName: New Remote - ConfigureAndChangeRemote: Configure and change remote + ActiveSuffix: Active Suffix + AddConnection: Add Connection + AddRemoteDefaultName: Add Remote Default Name + ConfigureAndChangeRemote: Configure And Change Remote ConfigureE2EE: Configure E2EE ConfigureRemote: Configure Remote - DeleteRemoteConfirm: "Delete remote configuration '${name}'?" - DeleteRemoteTitle: Delete Remote Configuration - DisplayName: Display name - DuplicateRemote: Duplicate remote - DuplicateRemoteSuffix: "${name} (Copy)" + DeleteRemoteConfirm: Delete remote configuration "${name}"? + DeleteRemoteTitle: Delete Remote Title + DisplayName: Display Name + DuplicateRemote: Duplicate Remote + DuplicateRemoteSuffix: Duplicate Remote Suffix E2EEConfiguration: E2EE Configuration Export: Export - FetchRemoteSettings: Fetch remote settings - ImportConnection: Import connection - ImportConnectionPrompt: Paste a connection string - ImportedCouchDb: Imported CouchDB - ImportedRemote: Remote - MoreActions: More actions + FetchRemoteSettings: Fetch Remote Settings + ImportConnection: Import Connection + ImportConnectionPrompt: Import Connection Prompt + ImportedCouchDb: Imported Couch Db + ImportedRemote: Imported Remote + MoreActions: More Actions PeerToPeerPanel: Peer-to-Peer Synchronisation - RemoteConfigurationPrefix: Remote configuration + RemoteConfigurationPrefix: Remote Configuration Prefix RemoteDatabases: Remote Databases - RemoteName: Remote name - RemoteNameCouchDb: "CouchDB ${host}" - RemoteNameP2P: "P2P ${room}" - RemoteNameS3: "S3 ${bucket}" + RemoteName: Remote Name + RemoteNameCouchDb: Remote Name Couch Db + RemoteNameP2P: Remote Name P2P + RemoteNameS3: Remote Name S3 Rename: Rename Selector: AddDefaultPatterns: Add default patterns @@ -1853,87 +2044,364 @@ Ui: HiddenFiles: Hidden Files IgnorePatterns: Ignore patterns NonSynchronisingFiles: Non-Synchronising files - NonSynchronisingFilesDesc: (RegExp) If this is set, any changes to local and remote files that match this will be skipped. + NonSynchronisingFilesDesc: (RegExp) If this is set, any changes to local and + remote files that match this will be skipped. NormalFiles: Normal Files OverwritePatterns: Overwrite patterns OverwritePatternsDesc: Patterns to match files for overwriting instead of merging SynchronisingFiles: Synchronising files - SynchronisingFilesDesc: (RegExp) Empty to sync all files. Set a regular expression filter to limit synchronised files. + SynchronisingFilesDesc: (RegExp) Empty to sync all files. Set a regular + expression filter to limit synchronised files. TargetPatterns: Target patterns TargetPatternsDesc: Patterns to match files for syncing Setup: - RerunWizardButton: Rerun Wizard + RerunWizardButton: Rerun Wizard Button RerunWizardDesc: Rerun the onboarding wizard to set up Self-hosted LiveSync again. RerunWizardName: Rerun Onboarding Wizard SyncSettings: - Merge: Merge Fetch: Fetch + Merge: Merge Overwrite: Overwrite SetupWizard: + Bucket: + AccessKeyId: Access Key ID + BucketName: Bucket Name + EndpointUrl: Endpoint URL + FolderPrefix: Folder Prefix + FolderPrefixDesc: If you want to store the data in a specific folder within the + bucket, you can specify a folder prefix here. Otherwise, leave it blank + to store data at the root of the bucket. + InternalApiDesc: If you cannot avoid CORS issues, you might want to try this + option. It uses Obsidian's internal API to communicate with the S3 + server. Not compliant with web standards, but works. Note that this + might break in future Obsidian versions. + PlaceholderAccessKeyId: Enter your Access Key ID + PlaceholderBucketName: Enter your Bucket Name + PlaceholderFolderPrefix: Enter a folder prefix (optional) + PlaceholderRegion: Enter your Region (e.g., us-east-1, auto for R2) + PlaceholderSecretAccessKey: Enter your Secret Access Key + Region: Region + SecretAccessKey: Secret Access Key + Title: S3/MinIO/R2 Configuration + UseInternalApi: Use internal API + UsePathStyleAccess: Use Path-Style Access Common: - Back: No, please take me back + AdvancedSettings: Advanced Settings + Back: Back Cancel: Cancel - ProceedSelectOption: Please select an option to proceed + CheckingConnection: Checking connection... Please wait. + ContinueAnyway: Continue anyway + CustomHeaders: Custom Headers + ErrorConnectionTest: "Error during connection test: ${error}" + ErrorConnectServer: Failed to connect to the server. Please check your settings. + ErrorConnectServerDetail: "Failed to connect to the server: ${error}" + ErrorCreateReplicator: Failed to create replicator instance. + ExperimentalSettings: Experimental Settings + HttpsOnlyMobile: We can use only Secure (HTTPS) connections on Obsidian Mobile. + ProceedSelectOption: Please select an option + CouchDB: + DatabaseName: Database Name + DatabaseNameDesc: You cannot use capital letters, spaces, or special characters + in the database name. It is also not allowed to start with an underscore + (_). + InternalApiDesc: If you cannot avoid CORS issues, you might want to try this + option. It uses Obsidian's internal API to communicate with the CouchDB + server. Not compliant with web standards, but works. Note that this + might break in future Obsidian versions. + JwtAlgorithm: JWT Algorithm + JwtExpirationDuration: JWT Expiration Duration (minutes) + JwtKey: JWT Key + JwtKeyDesc: For HS256/HS512 algorithms, provide the shared secret key. For + ES256/ES512 algorithms, provide the pkcs8 PEM-formatted private key. + JwtKeyId: JWT Key ID (kid) + JwtSubject: JWT Subject (sub) + JwtWarning: JWT (JSON Web Token) authentication allows you to securely + authenticate with the CouchDB server using tokens. Ensure that your + CouchDB server is configured to accept JWTs and that the provided key + and settings match the server's configuration. This feature has not been + verified very thoroughly. + Password: Password + PlaceholderDatabaseName: Enter your database name + PlaceholderJwtKey: Enter your JWT secret or private key + PlaceholderJwtKeyId: Enter your JWT Key ID + PlaceholderJwtSubject: Enter your JWT Subject (CouchDB Username) + PlaceholderPassword: Enter your password + PlaceholderUsername: Enter your username + Title: CouchDB Configuration + Url: Server URL + UseInternalApi: Use Internal API + UseJwtAuthentication: Use JWT Authentication + Username: Username + CouchDBCheck: + DetectAndFix: Detect and Fix CouchDB Issues + Fix: Fix + E2EE: + AlgorithmGuidance: In most cases, you should stick with the default algorithm + (${algorithm}). This setting is only required if you have an existing + Vault encrypted in a different format. + AlgorithmWarning: Changing the encryption algorithm will prevent access to any + data previously encrypted with a different algorithm. Ensure that all + your devices are configured to use the same algorithm to maintain access + to your data. + EncryptionAlgorithm: Encryption Algorithm + Fetch: + BackupDone: I have created a backup of my Vault. + 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. + BackupSkipped: I understand the risks and will proceed without a backup. + BackupUnable: I am unable to create a backup of my Vault. + BackupUnableNote: If you understand the risks and still wish to proceed, select so. + BackupUnableWarning: It is strongly advised to create a backup before + proceeding. Continuing without a backup may lead to data loss. + 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. + 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. + 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. + ImportantTitle: Important Notice + PreventFetchConfig: Prevent fetching configuration from server + Proceed: Reset and Resume Synchronisation + Title: Reset Synchronisation on This Device + 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. + 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) + 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. + VaultUnbalanced: There may be differences between the files in this Vault and the server. + VaultUnbalancedDesc: (e.g., after editing many files whilst offline) Intro: - ExistingOption: I am adding a device to an existing synchronisation setup - ExistingOptionDesc: Select this if you are already using synchronisation on another computer or smartphone. Use this option to connect this device to that existing setup. - NewOption: I am setting this up for the first time - NewOptionDesc: Select this if you are configuring this device as the first synchronisation device. - ProceedExisting: Yes, I want to add this device to my existing synchronisation - ProceedNew: Yes, I want to set up a new synchronisation - Question: First, please select the option that best describes your current situation. - Title: Welcome to Self-hosted LiveSync - Guidance: We will now guide you through a few questions to simplify the synchronisation setup. - SelectExisting: - Guidance: You are adding this device to an existing synchronisation setup. - ManualOption: Enter the server information manually - ManualOptionDesc: Configure the same server information as your other devices again manually. This is intended only for advanced users. - ProceedManual: I know my server details, let me enter them - ProceedQr: Scan the QR code displayed on an active device using this device's camera. - ProceedSetupUri: Proceed with Setup URI - Question: Please select a method to import the settings from another device. - QrOption: Scan a QR Code (Recommended for mobile) - QrOptionDesc: Scan the QR code displayed on an active device using this device's camera. - SetupUriOption: Use a Setup URI (Recommended) - SetupUriOptionDesc: Paste the Setup URI generated from one of your active devices. - Title: Device Setup Method - SelectNew: - Guidance: We will now proceed with the server configuration. - ManualOption: Enter the server information manually - ManualOptionDesc: This is an advanced option for users who do not have a Setup URI or who want to configure detailed settings. - ProceedManual: I know my server details, let me enter them - ProceedSetupUri: Proceed with Setup URI - Question: How would you like to configure the connection to your server? - SetupUriOption: Use a Setup URI (Recommended) - SetupUriOptionDesc: A Setup URI is a single string containing your server address and authentication details. If one was generated by your server installation script, it provides a simple and secure configuration method. - Title: Connection Method + ExistingOption: I already have a configured server + ExistingOptionDesc: Connect to an existing LiveSync server + Guidance: Welcome! Let's set up LiveSync. Are you new to LiveSync, or do you + already have a remote server configured? + NewOption: I'm new to LiveSync + NewOptionDesc: Set up LiveSync for the first time + ProceedExisting: Connect to existing + ProceedNew: Set up new + Question: Which describes your situation? + Title: Setup Wizard + Log: + E2EEConfigurationCancelled: E2EE configuration cancelled. + ManualConfigurationCancelled: Manual configuration cancelled. + NoSettingsChanges: No changes in settings detected. Skipping applying settings from wizard. + OnboardingCancelled: Onboarding cancelled by user. + QrCodeDialogClosed: QR Code dialog closed. + QrCodeResult: "QR Code result: ${result}" + SettingApplied: Setting Applied + SettingsApplied: Settings from wizard applied. + SetupUriDialogCancelled: Setup URI dialog cancelled. + SetupUriDialogClosed: Setup URI dialog closed. + UserCancelledApplyingSettings: User cancelled applying settings from wizard. OutroAskUserMode: - CompatibleOption: The remote is already set up, and the configuration is compatible (or became compatible through this operation). - CompatibleOptionDesc: Unless you are certain, selecting this option is risky. It assumes the server configuration is compatible with this device. If that is not the case, data loss may occur. Please make sure you understand the consequences. - ExistingOption: My remote server is already set up. I want to join this device. - ExistingOptionDesc: Selecting this option will make this device join the existing server. You need to fetch the existing synchronisation data from the server to this device. - Guidance: The connection to the server has been configured successfully. As the next step, the local database, in other words the synchronisation information, must be rebuilt. - NewOption: I am setting up a new server for the first time / I want to reset my existing server. - NewOptionDesc: Selecting this option will initialise the server using the current data on this device. Any existing data on the server will be completely overwritten. - ProceedApplySettings: Apply the settings - ProceedNext: Proceed to the next step. - Question: Please select your situation. - Title: "Mostly Complete: Decision Required" + CompatibleOption: Use compatible mode + CompatibleOptionDesc: Use this if the remote was set up with an older version of + LiveSync. Some features may be limited. + ExistingOption: This device has existing data + ExistingOptionDesc: Merge local files with the remote. Use this if you already + have notes in this vault. + Guidance: Choose how this device will be used with LiveSync. This affects + initial sync behavior. + NewOption: Set up as a new device + NewOptionDesc: Start fresh with a new vault. Remote files will be fetched after setup. + ProceedApplySettings: Apply settings + ProceedNext: Continue + Question: "Select the mode for this device:" + Title: How will you use this device? + OutroExisting: + Guidance: Setup is complete. The remote data will be fetched after restarting. + Click the button below to restart and begin synchronization. + Proceed: Restart and Fetch Data + Question: Please select the button below to restart and proceed to the data + fetching confirmation. + Title: "Setup Complete: Preparing to Fetch Synchronisation Data" OutroNewUser: - GuidancePrimary: The connection to the server has been configured successfully. As the next step, the synchronisation data on the server will be built from the current data on this device. - GuidanceWarning: After restarting, the data on this device will be uploaded to the server as the master copy. Please note that any unintended data currently on the server will be completely overwritten. - Important: IMPORTANT - Proceed: Restart and Initialise Server - Question: Please select the button below to restart and proceed to the final confirmation. - Title: "Setup Complete: Preparing to Initialise Server" + GuidancePrimary: Your LiveSync configuration has been set up. The settings will + be applied when you close this dialog. + GuidanceWarning: This will overwrite existing files if the remote vault has + data. Make sure you are using an empty vault or have backups. + Important: "Important:" + Proceed: Apply and restart + Question: Ready to apply the configuration? + Title: Setup Complete + P2P: + AutoBroadcast: Auto Broadcast Changes + AutoBroadcastDesc: If Auto Broadcast Changes is enabled, changes will be + automatically broadcasted to connected peers without requiring manual + intervention. This requests peers to fetch this device's changes. + AutoStart: Auto Start P2P Connection + AutoStartDesc: If Auto Start P2P Connection is enabled, the P2P connection will + be started automatically when the plug-in launches. + DevicePeerId: Device Peer ID + Enabled: Enabled + ErrorConnectPeers: "Failed to connect to other peers: ${error}" + GenerateRandomId: Generate Random ID + GroupId: Group ID + GroupPassphraseDesc: The Group ID and passphrase are used to identify your group + of devices. Make sure to use the same Group ID and passphrase on all + devices you want to synchronise. The Group ID is not limited to the + generated format; you can use any string as the Group ID. + NoPeersFound: Your settings seem correct, but no other peers were found. + PlaceholderRelayUrl: Enter the Relay URL + PlaceholderTurnCredential: Enter TURN credential + PlaceholderTurnUsername: Enter TURN username + PublicTurnWarning: Using public TURN servers may have privacy implications, as + your data will be relayed through third-party servers. Even if your data + is encrypted, your existence may be known to them. Please ensure you + trust the TURN server provider and your network administrator before + using their services. Consider setting up your own TURN server for your + FQDN if possible. + RelayUrl: Relay URL + Title: P2P Configuration + TurnCredential: TURN Credential + TurnServerDesc: TURN server settings are only necessary if you are behind a + strict NAT or firewall that prevents direct P2P connections. In most + cases, you can leave these fields blank. + TurnServerUrls: TURN Server URLs (comma-separated) + TurnUsername: TURN Username + UseDefaultRelay: Use vrtmrz's relay + Rebuild: + BackupBeforeProceeding: Of course, we can back up the data before proceeding. + BackupDone: I have created a backup of my Vault. + BackupQuestion: Have you created a backup before proceeding? + 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. + BackupWarning: This is an extremely powerful operation. We strongly recommend + that you copy your Vault folder to a safe location. + ConfirmDataLoss: I understand that all changes made on other smartphones or + computers possibly could be lost. + ConfirmIrreversible: I understand that this action is irreversible once performed. + ConfirmSyncDisabled: I understand that other devices will no longer be able to + synchronise, and will need to be reset the synchronisation information. + ConfirmTitle: Please Confirm the Following + 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. + PreventFetchConfig: Prevent fetching configuration from server + Proceed: I Understand, Overwrite Server + ResetNotifyOtherDevices: by resetting the remote, you will be informed on other devices. + ResolveOnOtherDevices: There is a way to resolve this on other devices. + Title: "Final Confirmation: Overwrite Server Data with This Device's Files" + 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. + SelectExisting: + Guidance: Choose how to connect to your existing LiveSync server. + ManualOption: Configure manually + ManualOptionDesc: Enter server details and credentials yourself + ProceedManual: Configure manually + ProceedQr: Scan QR code + ProceedSetupUri: Use Setup URI + QrOption: Scan QR code + QrOptionDesc: Scan a QR code from an already configured device + Question: "Select connection method:" + SetupUriOption: Use Setup URI + SetupUriOptionDesc: Import configuration from a setup URI provided by your server + Title: Connect to Existing Server + SelectNew: + Guidance: Choose how you want to configure your new LiveSync connection. + ManualOption: Configure manually + ManualOptionDesc: Enter server details and credentials yourself + ProceedManual: Configure manually + ProceedSetupUri: Use Setup URI + Question: "Select configuration method:" + SetupUriOption: Use Setup URI + SetupUriOptionDesc: Import configuration from a setup URI provided by your server + Title: Set Up New Connection SetupRemote: - BucketOption: S3/MinIO/R2 Object Storage - BucketOptionDesc: Synchronisation using journal files. You must already have an S3/MinIO/R2 compatible object storage service set up. - CouchDbOptionDesc: This is the most suitable synchronisation method for the current design. All features are available. You must already have a CouchDB instance set up. - Guidance: Please select the type of server you are connecting to. - P2POption: Peer-to-Peer only - P2POptionDesc: This enables direct synchronisation between devices. No server is required, but both devices must be online at the same time and some features may be limited. Internet connectivity is required only for signalling, not for data transfer. - ProceedBucket: Continue to S3/MinIO/R2 setup - ProceedCouchDb: Continue to CouchDB setup - ProceedP2P: Continue to Peer-to-Peer only setup - Title: Enter Server Information + BucketOption: LiveSync Bucket + BucketOptionDesc: Use the bundled bucket server included with the LiveSync + companion service + CouchDbOption: CouchDB + CouchDbOptionDesc: Use your own CouchDB instance for full control over your sync server + Guidance: "Choose the type of remote server you want to use:" + P2POption: Peer-to-peer (Experimental) + P2POptionDesc: Synchronize directly between devices without a central server + ProceedBucket: Set up Bucket + ProceedCouchDb: Set up CouchDB + ProceedP2P: Set up P2P + Title: Setup Remote + UseSetupURI: + ButtonCancel: Cancel + ButtonProceed: Test Settings and Continue + ErrorFailedToParse: Failed to parse Setup-URI. + ErrorPassphraseRequired: Passphrase is required. + Guidance: Please enter the Setup URI that was generated during server + installation or on another device, along with the vault passphrase. + InvalidInfo: The Setup-URI does not appear to be valid. Please check that you + have copied it correctly. + Label: Setup-URI + LabelPassphrase: Passphrase + PlaceholderPassphrase: Enter your passphrase + Title: Enter Setup URI + 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 a custom passphrase: Use a custom passphrase +Use a Setup URI (Recommended): Use a Setup URI (Recommended) +Use Custom HTTP Handler: Use Custom HTTP Handler +Use dynamic iteration count: Use dynamic iteration count +Use Only Local Chunks: Use Only Local Chunks +Use Request API to avoid `inevitable` CORS problem: Use Request API to avoid `inevitable` CORS problem +Use Segmented-splitter: Use Segmented-splitter +Use splitting-limit-capped chunk splitter: Use splitting-limit-capped chunk splitter +Use the trash bin: Use the trash bin +Use timeouts instead of heartbeats: Use timeouts instead of heartbeats +username: username +Username: Username +"V1: Legacy": "V1: Legacy" +"V2: Simple (Default)": "V2: Simple (Default)" +"V2.5: Lexical chunks": "V2.5: Lexical chunks" +"V3: Fine deduplication": "V3: Fine deduplication" +Verbose Log: Verbose Log +Verify all: Verify all +Verify and repair all files: Verify and repair all files +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. +We cannot change the device name while this feature is enabled. Please disable this feature to change the device name.: + We cannot change the device name while this feature is enabled. Please disable + this feature to change the device name. +We will now guide you through a few questions to simplify the synchronisation setup.: + We will now guide you through a few questions to simplify the synchronisation + setup. +We will now proceed with the server configuration.: We will now proceed with the server configuration. +Welcome to Self-hosted LiveSync: Welcome to Self-hosted LiveSync +When you save a file in the editor, start a sync automatically: When you save a file in the editor, start a sync automatically +While enabled, it causes very performance impact but debugging replication testing and other features will be enabled. Please disable this if you have not read the source code. Requires restart of Obsidian.: + While enabled, it causes very performance impact but debugging replication + testing and other features will be enabled. Please disable this if you have + not read the source code. Requires restart of Obsidian. +Write credentials in the file: Write credentials in the file +Write logs into the file: Write logs into the file +xxhash32 (Fast but less collision resistance): xxhash32 (Fast but less collision resistance) +xxhash64 (Fastest): xxhash64 (Fastest) +xxhash64 is the current default.: xxhash64 is the current default. +Yes, I want to add this device to my existing synchronisation: Yes, I want to add this device to my existing synchronisation +Yes, I want to set up a new synchronisation: Yes, I want to set up a new synchronisation +You are adding this device to an existing synchronisation setup.: You are adding this device to an existing synchronisation setup. +You can enable this setting to process the files with size mismatches, these files can be created by some APIs or integrations.: + You can enable this setting to process the files with size mismatches, these + files can be created by some APIs or integrations. diff --git a/src/common/messagesYAML/es.yaml b/src/common/messagesYAML/es.yaml index 8cf4f580..d0cb7038 100644 --- a/src/common/messagesYAML/es.yaml +++ b/src/common/messagesYAML/es.yaml @@ -17,14 +17,38 @@ (RegExp) If this is set, any changes to local and remote files that match this will be skipped.: (RegExp) Si se establece, se omitirá cualquier cambio en archivos locales y remotos que coincida con este patrón. +(Select this if you are already using synchronisation on another computer or smartphone.) This option is suitable if you are new to LiveSync and want to set it up from scratch.: + (Seleccione esto si ya utiliza la sincronización en otro ordenador o + teléfono). Esta opción es adecuada si desea añadir este dispositivo a una + configuración de LiveSync existente。 +(Select this if you are configuring this device as the first synchronisation device.) This option is suitable if you are new to LiveSync and want to set it up from scratch.: + (Seleccione esto si está configurando este dispositivo como el primer + dispositivo de sincronización). Esta opción es adecuada si es nuevo en + LiveSync y desea configurarlo desde cero。 +A Setup URI is a single string of text containing your server address and authentication details. Using a URI, if one was generated by your server installation script, provides a simple and secure configuration.: + Un URI de configuración es una única cadena de texto que contiene la dirección + del servidor y los datos de autenticación. Si el script de instalación de su + servidor generó un URI, usarlo proporciona una configuración sencilla y + segura。 Access Key: Clave de acceso Activate: Activar +Active Remote Configuration: Configuración remota activa +Active Remote Type: Tipo remoto activo Add default patterns: Añadir patrones predeterminados Add new connection: Añadir conexión +Advanced: Avanzado Always prompt merge conflicts: Siempre preguntar en conflictos +Analyse: Analizar +Analyse database usage: Analizar el uso de la base de datos +Analyse database usage and generate a TSV report for diagnosis yourself. You can paste the generated report with any spreadsheet you like.: + Analice el uso de la base de datos y genere un informe TSV para diagnosticarlo + usted mismo. Puede pegar el informe generado en cualquier hoja de cálculo que + prefiera. Apply Latest Change if Conflicting: Aplicar último cambio en conflictos Apply preset configuration: Aplicar configuración predefinida Ask a passphrase at every launch: Solicitar la frase de contraseña en cada inicio +Automatically broadcast changes to connected peers: Difundir cambios automáticamente a pares conectados +Automatically start P2P connection on launch: Iniciar conexión P2P automáticamente al arrancar Automatically Sync all files when opening Obsidian.: Sincronizar automáticamente todos los archivos al abrir Obsidian Back: Volver Back to non-configured: Volver a no configurado @@ -37,10 +61,12 @@ Before v0.17.16, we used an old adapter for the local database. Now the new adap reconstruir BD local. Desactive cuando pueda Bucket Name: Nombre del bucket Cancel: Cancelar +Check: Verificar Check and convert non-path-obfuscated files: Comprobar y convertir archivos sin ofuscación de ruta Check for documents that have not been converted to path-obfuscated IDs and convert them if necessary.: Comprueba los documentos que aún no se hayan convertido a identificadores con ruta ofuscada y conviértelos si es necesario. +Chunk Splitter: Divisor de fragmentos cmdConfigSync: showCustomizationSync: Mostrar sincronización de personalización Comma separated `.gitignore, .dockerignore`: "Separados por comas: `.gitignore, .dockerignore`" @@ -53,16 +79,25 @@ Compatibility (Internal API Usage): Compatibilidad (uso de la API interna) Compatibility (Metadata): Compatibilidad (metadatos) Compatibility (Remote Database): Compatibilidad (base de datos remota) Compatibility (Trouble addressed): Compatibilidad (problemas corregidos) -Compute revisions for chunks (Previous behaviour): Calcular revisiones para chunks (comportamiento anterior) +Compute revisions for chunks: Calcular revisiones para los chunks Configuration Encryption: Cifrado de configuración Configure: Configurar Configure And Change Remote: Configurar y cambiar remoto Configure E2EE: Configurar E2EE Configure Remote: Configurar remoto +Configure the same server information as your other devices again, manually, very advanced users only.: + Configure manualmente la misma información del servidor que en sus otros + dispositivos. Solo para usuarios muy avanzados。 +Connection Method: Método de conexión +Continue to CouchDB setup: Continuar con la configuración de CouchDB +Continue to Peer-to-Peer only setup: Continuar con la configuración solo Peer-to-Peer +Continue to S3/MinIO/R2 setup: Continuar con la configuración de S3/MinIO/R2 Copy: Copiar +Copy Report to clipboard: Copiar el informe al portapapeles CouchDB Connection Tweak: Ajustes de conexión de CouchDB Cross-platform: Multiplataforma "Current adapter: {adapter}": "Adaptador actual: {adapter}" +Customization sync: Sincronizacion de personalizacion Customization Sync: Sincronización de personalización Customization Sync (Beta3): Sincronización de personalización (Beta3) Data Compression: Compresión de datos @@ -84,6 +119,23 @@ Delete remote configuration '{name}'?: ¿Eliminar la configuración remota '{nam desktop: equipo de escritorio Developer: Desarrollador Device name: Nombre del dispositivo +Device Setup Method: Método de configuración del dispositivo +dialog: + yourLanguageAvailable: + _value: >- + LiveSync autohospedado tenía traducciones para su idioma, por lo que se + habilitó la configuración %{Display language}. + + + Nota: No todos los mensajes están traducidos. ¡Esperamos tus aportes! + + Nota 2: Si crea un problema, **vuelva a %{lang-def}** y luego tome + capturas de pantalla, mensajes y registros. Esto se puede hacer en el + diálogo de configuración. + + ¡Que te resulte fácil de usar! + btnRevertToDefault: Mantener %{lang-def} + Title: " ¡La traducción está disponible!" Disables all synchronization and restart.: Desactiva toda la sincronización y reinicia la aplicación. Disables logging, only shows notifications. Please disable if you report an issue.: Desactiva registros, solo muestra notificaciones. Desactívelo si reporta un @@ -94,17 +146,93 @@ Do not check configuration mismatch before replication: No verificar incompatibi 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: + DismissThisVersion: No, y no volver a preguntar hasta la próxima versión + Fix: Corregir + FixButNoRebuild: Corregir sin reconstruir + No: No + Skip: Dejar como está + Yes: Si + Dialogue: + Main: >- + ¡Hola! ¡Config Doctor se ha activado debido a ${activateReason}! + + Y, lamentablemente, se detectaron algunas configuraciones como posibles + problemas. + + Tenga la seguridad. Resolvámoslos uno por uno. + + + Para informarle con anticipación, le preguntaremos sobre los siguientes + elementos. + + + ${issues} + + + ¿Empezamos? + MainFix: |- + + ## ${name} + + | Actual | ideales | + |:---:|:---:| + | ${current} | ${ideal} | + + **Nivel de recomendación:** ${level} + + ### ¿Por qué se ha detectado esto? + + ${reason} + + ${note} + + ¿Fijar esto al valor ideal? + Title: Doctor de configuración de LiveSync autohospedado + TitleAlmostDone: ¡Casi terminado! + TitleFix: Solucionar el problema ${current}/${total} + Level: + Must: Obligatorio + Necessary: Necesario + Optional: Opcional + Recommended: Recomendado + Message: + NoIssues: ¡No se detectaron problemas! + RebuildLocalRequired: ¡Atención! ¡Se requiere una reconstrucción de la base de + datos local para aplicar esto! + RebuildRequired: ¡Atención! ¡Se requiere una reconstrucción para aplicar esto! + SomeSkipped: Dejamos algunos problemas como están. ¿Te lo pregunto de nuevo en + la próxima puesta en marcha? + RULES: + E2EE_V02500: + REASON: El cifrado de extremo a extremo ahora es más robusto y rápido. También + porque se descubrió que el E2EE anterior estaba comprometido en una + revisión de código realizada nuevamente. Se debe aplicar lo antes + posible. Realmente se disculpa por las molestias. Y esta configuración + no es compatible con versiones posteriores. Todos los dispositivos + sincronizados deben estar actualizados a la versión 0.25.0 o superior. + No se requieren reconstrucciones y se convertirán de la nueva + transferencia al nuevo formato. Sin embargo, se recomienda reconstruir + siempre que sea posible. +Document History: Historial del documento Duplicate: Duplicar Duplicate remote: Duplicar remoto E2EE Configuration: Configuración de E2EE Edge case addressing (Behaviour): Tratamiento de casos límite (comportamiento) Edge case addressing (Database): Tratamiento de casos límite (base de datos) Edge case addressing (Processing): Tratamiento de casos límite (procesamiento) +Effectively a directory. Should end with `/`. e.g., `vault-name/`.: Equivale a un directorio. Debe terminar con `/`, por ejemplo `vault-name/`. Emergency restart: Reinicio de emergencia Enable advanced features: Habilitar características avanzadas +Enable advanced mode: Activar modo avanzado Enable customization sync: Habilitar sincronización de personalización Enable Developers' Debug Tools.: Habilitar herramientas de depuración Enable edge case treatment features: Habilitar manejo de casos límite +Enable forcePathStyle: Activar forcePathStyle +Enable P2P Synchronization: Activar sincronización P2P +Enable per-file customization sync: Activar sincronización de personalización por archivo +Enable power user mode: Activar modo para usuarios avanzados Enable poweruser features: Habilitar funciones para usuarios avanzados Enable this if your Object Storage doesn't support CORS: Habilitar si su almacenamiento no soporta CORS Enable this option to automatically apply the most recent change to documents even when it conflicts: Aplicar cambios recientes automáticamente aunque generen conflictos @@ -112,39 +240,79 @@ Encrypt contents on the remote database. If you use the plugin's synchronization Cifrar contenido en la base de datos remota. Se recomienda habilitar si usa la sincronización del plugin. Encrypting sensitive configuration items: Cifrando elementos sensibles +Encryption passphrase. If changed, you should overwrite the server's database with the new (encrypted) files.: + Frase de contraseña de cifrado. Si se cambia, debes sobrescribir la base de + datos del servidor con los nuevos archivos cifrados. Encryption phassphrase. If changed, you should overwrite the server's database with the new (encrypted) files.: Frase de cifrado. Si la cambia, sobrescriba la base del servidor con los nuevos archivos cifrados. End-to-End Encryption: Cifrado de extremo a extremo Endpoint URL: URL del endpoint Enhance chunk size: Mejorar tamaño de chunks +Enter Server Information: Introducir información del servidor +Enter the server information manually: Introducir manualmente la información del servidor Export: Exportar Fetch: Obtener Fetch chunks on demand: Obtener chunks bajo demanda Fetch database with previous behaviour: Obtener BD con comportamiento anterior Fetch remote settings: Obtener ajustes remotos +File prefix on the bucket: Prefijo de archivo en el bucket File to resolve conflict: Archivo para resolver el conflicto Filename: Nombre de archivo +Files with modification times greater than this value (in seconds since the Unix epoch) will not have their events reflected. Set to 0 to disable this limit.: + Los archivos con tiempos de modificación mayores que este valor (segundos + desde la época Unix) no reflejarán sus eventos. Usa 0 para desactivar este + límite. +First, please select the option that best describes your current situation.: Primero, seleccione la opción que describa mejor su situación actual。 Flag and restart: Marcar y reiniciar Forces the file to be synced when opened.: Forzar sincronización al abrir archivo Fresh Start Wipe: Borrado para reinicio completo Garbage Collection V3 (Beta): Recolección de basura V3 (Beta) Handle files as Case-Sensitive: Manejar archivos como sensibles a mayúsculas +Hatch: Herramientas Hidden Files: Archivos ocultos +Hide completely: Ocultar por completo +Highlight diff: Resaltar diferencias How to display network errors when the sync server is unreachable.: - Cómo mostrar los errores de red cuando el servidor de sincronización no está - disponible. + Cómo mostrar los errores de red cuando no se puede alcanzar el servidor de + sincronización. +How would you like to configure the connection to your server?: ¿Cómo desea configurar la conexión con su servidor? +I am adding a device to an existing synchronisation setup: Estoy agregando un dispositivo a una configuración de sincronización existente +I am setting this up for the first time: Estoy configurando esto por primera vez +I know my server details, let me enter them: Conozco los datos de mi servidor; permítame introducirlos If disabled(toggled), chunks will be split on the UI thread (Previous behaviour).: Si se desactiva, chunks se dividen en hilo UI (comportamiento anterior) 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, changes will be automatically broadcasted to all connected peers. Notified peers will start fetching the changes.: + Si se activa, los cambios se difundirán automáticamente a todos los pares + conectados. Los pares notificados empezarán a obtener los cambios. 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, efficient per-file customization sync will be used. A minor migration is required when enabling this feature, and all devices must be updated to v0.23.18. Enabling this feature will result in losing compatibility with older versions.: + Si se activa, se usará una sincronización de personalización eficiente por + archivo. Al activar esta función se requiere una pequeña migración y todos los + dispositivos deben actualizarse a v0.23.18. Al activarla se pierde + compatibilidad con versiones anteriores. 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 forcePathStyle option will be used for bucket operations.: Si se activa, se usará la opción forcePathStyle para operaciones de bucket. 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 enabled, the P2P connection will be automatically started when the application launches.: + Si se activa, la conexión P2P se iniciará automáticamente al arrancar la + aplicación. +If enabled, the plugin will not attempt to connect to the remote database even if the chunk was not found locally.: + Si se activa, el complemento no intentara conectarse a la base de datos remota + aunque el chunk no se encuentre localmente. +If enabled, the request API will be used to avoid `inevitable` CORS problems. This is a workaround and may not work in all cases. PLEASE READ THE DOCUMENTATION BEFORE USING THIS OPTION. This is a less-secure option.: + Si se activa, se usará la API request para evitar problemas CORS inevitables. + Es una solución alternativa y puede no funcionar en todos los casos. LEE LA + DOCUMENTACIÓN ANTES DE USAR ESTA OPCIÓN. Es una opción menos segura. +If this enabled, all chunks will be stored with the revision made from its content.: + Si se activa, todos los fragmentos se almacenarán con una revisión generada a + partir de su contenido. 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) @@ -166,11 +334,22 @@ Initialise all journal history, On the next sync, every item will be received an Restablece todo el historial del diario. En la próxima sincronización se recibirán y enviarán todos los elementos. Interval (sec): Intervalo (segundos) +K: + exp: Experimental + long_p2p_sync: "%{title_p2p_sync}" + P2P: "%{Peer} a %{Peer}" + Peer: Par + ScanCustomization: Analizar personalización + short_p2p_sync: Sincronización P2P + title_p2p_sync: Sincronización Peer-to-Peer Keep empty folder: Mantener carpetas vacías +lang_def: Predeterminado lang-de: Alemán +lang-def: "%{lang_def}" lang-es: Español lang-fr: Français lang-ja: Japonés +lang-ko: 한국어 lang-ru: Ruso lang-zh: Chino simplificado lang-zh-tw: Chino tradicional @@ -184,7 +363,7 @@ liveSyncReplicator: cantReplicateLowerValue: No podemos replicar un valor más bajo. checkingLastSyncPoint: Buscando el último punto sincronizado. couldNotConnectTo: |- - No se pudo conectar a ${uri} : ${name} + No se pudo conectar a ${uri} : ${name} (${db}) couldNotConnectToRemoteDb: "No se pudo conectar a base de datos remota: ${d}" couldNotConnectToServer: No se pudo conectar al servidor. @@ -206,7 +385,7 @@ liveSyncReplicator: unlockRemoteDb: Desbloquear base de datos remota para prevenir corrupción de datos liveSyncSetting: errorNoSuchSettingItem: "No existe el ajuste: ${key}" - originalValue: "Original: ${value}" + originalValue: "Valor original: ${value}" valueShouldBeInRange: El valor debe estar entre ${min} y ${max} liveSyncSettings: btnApply: Aplicar @@ -222,17 +401,22 @@ logPane: pause: Pausar title: Registro de Self-hosted LiveSync wrap: Ajustar +Maintenance: Mantenimiento Maximum delay for batch database updating: Retraso máximo para actualización por lotes +Maximum file modification time for reflected file events: Tiempo máximo de modificación para eventos de archivo reflejados Maximum file size: Tamaño máximo de archivo Maximum Incubating Chunk Size: Tamaño máximo de chunks incubados Maximum Incubating Chunks: Máximo de chunks incubados Maximum Incubation Period: Periodo máximo de incubación +Maximum size of chunks to send in one request: Tamaño máximo de fragmentos enviados en una solicitud +MB: MB MB (0 to disable).: MB (0 para desactivar) Memory cache: Caché en memoria Memory cache size (by total characters): Tamaño caché memoria (por caracteres) Memory cache size (by total items): Tamaño caché memoria (por ítems) Merge: Fusionar Minimum delay for batch database updating: Retraso mínimo para actualización por lotes +Minimum interval for syncing: Intervalo mínimo para sincronizar moduleCheckRemoteSize: logCheckingStorageSizes: Comprobando tamaños de almacenamiento logCurrentStorageSize: "Tamaño del almacenamiento remoto: ${measuredSize}" @@ -346,6 +530,74 @@ moduleLog: showLog: Mostrar registro moduleMigration: docUri: https://github.com/vrtmrz/obsidian-livesync/blob/main/README_ES.md#how-to-use + fix0256: + buttons: + checkItLater: Revisarlo más tarde + DismissForever: Ya lo corregí, y no volver a preguntar + fix: Corregir + message: > + Debido a un error reciente (en v0.25.6), es posible que algunos archivos + no se hayan guardado correctamente en la base de datos de sincronización. + + Escaneamos nuestros archivos y encontramos algunos que necesitan ser + reparados. + + + **Archivos listos para ser reparados:** + + + ${files} + + + Estos archivos tienen el mismo tamaño que el archivo original en el + almacenamiento y es probable que sean recuperables. + + Podemos usarlos para arreglar la base de datos, haga clic en el botón + "Reparar" a continuación para arreglarlos. + + + ${messageUnrecoverable} + + + Si desea ejecutarlo nuevamente, puede hacerlo desde Hatch. + messageUnrecoverable: > + **Los archivos no se pueden reparar en este dispositivo:** + + + ${filesNotRecoverable} + + + Estos archivos tienen metadatos inconsistentes y no se pueden reparar en + este dispositivo (en general, no podemos determinar cuál es el correcto). + + Para restaurarlos, verifique sus otros dispositivos (también mediante esta + función) o restáurelos manualmente desde una copia de seguridad. + title: Se han detectado archivos rotos + insecureChunkExist: + buttons: + fetch: Ya reconstruí el control remoto. Obtener desde el control remoto + later: lo haré más tarde + rebuild: Reconstruir todo + laterMessage: ¡Recomendamos encarecidamente tratar esto lo antes posible! + message: > + Algunos fragmentos no se almacenan de forma segura y no están cifrados en + bases de datos. + + **Reconstruya la base de datos para solucionar este problema**. + + + Si su base de datos remota no está configurada con SSL o utiliza + credenciales menos seguras, **corre el riesgo de exponer datos + confidenciales**. + + + Nota: actualice su LiveSync v0.25.6 o superior en todos sus dispositivos y + haga una copia de seguridad de su bóveda. + + Nota 2: Reconstruir todo y recuperar consume un poco de tiempo y tráfico; + hágalo en horas de menor actividad y garantice una conexión de red + estable. + title: ¡Se encontraron trozos inseguros! 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. @@ -436,101 +688,7 @@ moduleMigration: optionKeepPreviousBehaviour: Mantener comportamiento anterior optionManualSetup: Configurarlo todo manualmente optionNoAskAgain: No, por favor pregúntame de nuevo -Setup: - RemoteE2EE: - Title: Cifrado de extremo a extremo - Guidance: Configura tus ajustes de cifrado de extremo a extremo. - LabelEncrypt: Cifrado de extremo a extremo - PlaceholderPassphrase: Introduce tu frase de contraseña - StronglyRecommendedTitle: Muy recomendable - StronglyRecommendedLine1: Al habilitar el cifrado de extremo a extremo, tus datos se cifran en tu dispositivo antes de enviarse al servidor remoto. Esto significa que, incluso si alguien obtiene acceso al servidor, no podrá leer tus datos sin la frase de contraseña. Asegúrate de recordarla, ya que también será necesaria para descifrar tus datos en otros dispositivos. - StronglyRecommendedLine2: Además, ten en cuenta que si estás usando sincronización Peer-to-Peer, esta configuración se utilizará cuando más adelante cambies a otros métodos y te conectes a un servidor remoto. - MultiDestinationWarning: Este ajuste debe ser el mismo incluso cuando te conectes a varios destinos de sincronización. - LabelObfuscateProperties: Ofuscar propiedades - ObfuscatePropertiesDesc: Ofuscar propiedades (por ejemplo, la ruta del archivo, el tamaño y las fechas de creación y modificación) añade una capa adicional de seguridad al dificultar la identificación de la estructura y los nombres de tus archivos y carpetas en el servidor remoto. Esto ayuda a proteger tu privacidad y dificulta que usuarios no autorizados deduzcan información sobre tus datos. - AdvancedTitle: Avanzado - LabelEncryptionAlgorithm: Algoritmo de cifrado - DefaultAlgorithmDesc: En la mayoría de los casos, debes mantener el algoritmo predeterminado (${algorithm}). Este ajuste solo es necesario si ya tienes un Vault cifrado con un formato diferente. - AlgorithmWarning: Cambiar el algoritmo de cifrado impedirá el acceso a cualquier dato cifrado anteriormente con otro algoritmo. Asegúrate de que todos tus dispositivos estén configurados para usar el mismo algoritmo y así mantener el acceso a tus datos. - PassphraseValidationLine1: Ten en cuenta que la frase de contraseña del cifrado de extremo a extremo no se valida hasta que el proceso de sincronización comienza realmente. Esta es una medida de seguridad diseñada para proteger tus datos. - PassphraseValidationLine2: Por lo tanto, te pedimos que tengas muchísimo cuidado al configurar manualmente la información del servidor. Si introduces una frase de contraseña incorrecta, los datos del servidor se corromperán. Ten en cuenta que este comportamiento es intencionado. - ButtonProceed: Continuar - ButtonCancel: Cancelar - UseSetupURI: - Title: Introducir URI de configuración - GuidanceLine1: Introduce la URI de configuración que se generó durante la instalación del servidor o en otro dispositivo, junto con la frase de contraseña del Vault. - GuidanceLine2: Ten en cuenta que puedes generar una nueva URI de configuración ejecutando el comando "Copiar ajustes como nueva URI de configuración" desde la paleta de comandos. - LabelSetupURI: URI de configuración - ValidInfo: La URI de configuración es válida y está lista para usarse. - InvalidInfo: La URI de configuración no es válida. Revísala e inténtalo de nuevo. - LabelPassphrase: Frase de contraseña del Vault - PlaceholderPassphrase: Introduce la frase de contraseña del Vault - ErrorPassphraseRequired: Introduce la frase de contraseña del Vault. - ErrorFailedToParse: No se pudo procesar la URI de configuración. Revisa la URI y la frase de contraseña. - ButtonProceed: Probar ajustes y continuar - ButtonCancel: Cancelar - ScanQRCode: - Title: Escanear código QR - Guidance: Sigue los pasos de abajo para importar los ajustes desde tu dispositivo actual. - Step1: En este dispositivo, mantén este Vault abierto. - Step2: En el dispositivo de origen, abre Obsidian. - Step3: En el dispositivo de origen, ejecuta desde la paleta de comandos la orden "Mostrar ajustes como código QR". - Step4: En este dispositivo, cambia a la cámara o usa un escáner QR para escanear el código mostrado. - ButtonClose: Cerrar este diálogo - "Please enable 'Compute revisions for chunks' in settings to use Garbage Collection.": Activa "Compute revisions for chunks" en los ajustes para usar la recolección de basura. - "Please disable 'Read chunks online' in settings to use Garbage Collection.": Desactiva "Read chunks online" en los ajustes para usar la recolección de basura. - "Setup URI dialog cancelled.": Se canceló el diálogo de Setup URI. - "Please select 'Cancel' explicitly to cancel this operation.": Selecciona explícitamente "Cancelar" para cancelar esta operación. - "Failed to connect to remote for compaction.": No se pudo conectar a la base de datos remota para la compactación. - "Failed to connect to remote for compaction. ${reason}": No se pudo conectar a la base de datos remota para la compactación. ${reason} - "Compaction in progress on remote database...": La compactación está en curso en la base de datos remota... - "Compaction on remote database timed out.": La compactación en la base de datos remota agotó el tiempo de espera. - "Compaction on remote database completed successfully.": La compactación en la base de datos remota se completó correctamente. - "Compaction on remote database failed.": La compactación en la base de datos remota falló. - "Failed to start one-shot replication before Garbage Collection. Garbage Collection Cancelled.": No se pudo iniciar la replicación de una sola vez antes de la recolección de basura. La recolección de basura se canceló. - "Cancel Garbage Collection": Cancelar la recolección de basura - "No connected device information found. Cancelling Garbage Collection.": No se encontró información de dispositivos conectados. Cancelando la recolección de basura. - "The following accepted nodes are missing its node information:\n- ${missingNodes}\n\nThis indicates that they have not been connected for some time or have been left on an older version.\nIt is preferable to update all devices if possible. If you have any devices that are no longer in use, you can clear all accepted nodes by locking the remote once.": |- - Los siguientes nodos aceptados no tienen información del nodo: - - ${missingNodes} - - Esto indica que no se han conectado desde hace algún tiempo o que se han quedado en una versión anterior. - Si es posible, es preferible actualizar todos los dispositivos. Si tienes dispositivos que ya no se usan, puedes borrar todos los nodos aceptados bloqueando el remoto una vez. - "Ignore and Proceed": Ignorar y continuar - "Node Information Missing": Falta información del nodo - "Garbage Collection cancelled by user.": El usuario canceló la recolección de basura. - "Proceeding with Garbage Collection, ignoring missing nodes.": Continuando con la recolección de basura e ignorando los nodos faltantes. - "Proceed Garbage Collection": Continuar con la recolección de basura - "> [!INFO]- The connected devices have been detected as follows:\n${devices}": |- - > [!INFO]- Se detectaron los siguientes dispositivos conectados: - ${devices} - "Device": Dispositivo - "Node ID": ID del nodo - "Obsidian version": Versión de Obsidian - "Plug-in version": Versión del complemento - "Progress": Progreso - "Some devices have differing progress values (max: ${maxProgress}, min: ${minProgress}).\nThis may indicate that some devices have not completed synchronisation, which could lead to conflicts. Strongly recommend confirming that all devices are synchronised before proceeding.": |- - Algunos dispositivos tienen valores de progreso diferentes (máx.: ${maxProgress}, mín.: ${minProgress}). - Esto puede indicar que algunos dispositivos no han completado la sincronización, lo que podría causar conflictos. Se recomienda encarecidamente confirmar que todos los dispositivos estén sincronizados antes de continuar. - "All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.": Todos los dispositivos tienen el mismo valor de progreso (${progress}). Parece que tus dispositivos están sincronizados y se puede continuar con la recolección de basura. - "Garbage Collection Confirmation": Confirmación de recolección de basura - "Proceeding with Garbage Collection.": Continuando con la recolección de basura. - "Garbage Collection: Scanned ${scanned} / ~${docCount}": |- - Recolección de basura: escaneados ${scanned} / ~${docCount} - "Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": |- - Recolección de basura: escaneo completado. Chunks totales: ${totalChunks}, chunks usados: ${usedChunks} - "Garbage Collection: Found ${unusedChunks} unused chunks to delete.": |- - Recolección de basura: se encontraron ${unusedChunks} chunks no usados para eliminar. - "Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.": |- - Recolección de basura completada. Chunks eliminados: ${deletedChunks} / ${totalChunks}. Tiempo empleado: ${seconds} segundos. - "Failed to start replication after Garbage Collection.": No se pudo iniciar la replicación después de la recolección de basura. - optionNoSetupUri: No, no tengo - optionRemindNextLaunch: Recordármelo en el próximo inicio - optionSetupWizard: Llévame al asistente de configuración - optionYesFetchAgain: Sí, obtener nuevamente - titleCaseSensitivity: Sensibilidad a mayúsculas - titleRecommendSetupUri: Recomendación de uso de URI de configuración - titleWelcome: Bienvenido a Self-hosted LiveSync + optionSetupViaP2P: Usar %{short_p2p_sync} para configurar moduleObsidianMenu: replicate: Replicar More actions: Más acciones @@ -538,6 +696,7 @@ Move remotely deleted files to the trash, instead of deleting.: Mover archivos b Network warning style: Estilo de advertencia de red New Remote: Nuevo remoto No limit configured: Sin límite configurado +No, please take me back: No, volver atrás Non-Synchronising files: Archivos no sincronizados Normal Files: Archivos normales Not all messages have been translated. And, please revert to "Default" when reporting errors.: @@ -547,6 +706,9 @@ Notify all setting files: Notificar todos los archivos de configuración Notify customized: Notificar personalizaciones Notify when other device has newly customized.: Notificar cuando otro dispositivo personalice Notify when the estimated remote storage size exceeds on start up: Notificar cuando el tamaño estimado del almacenamiento remoto exceda al iniciar +Now we can choose how to split the chunks; V3 is the most efficient. If you have troubled, please make this Default or Legacy.: + Ahora puedes elegir cómo dividir los fragmentos; V3 es lo más eficiente. Si + tienes problemas, usa Default o Legacy. 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.: Número de lotes a procesar. Default 40, mínimo 2. Controla documentos en memoria @@ -585,6 +747,7 @@ obsidianLiveSyncSettingTab: errCorsNotAllowingCredentials: CORS no permite credenciales errCorsOrigins: ❗ cors.origins es incorrecto errEnableCors: ❗ httpd.enable_cors es incorrecto + errEnableCorsChttpd: ✖ chttpd.enable_cors es incorrecto errMaxDocumentSize: ❗ couchdb.max_document_size es bajo) errMaxRequestSize: ❗ chttpd.max_http_request_size es bajo) errMissingWwwAuth: ❗ httpd.WWW-Authenticate falta @@ -604,7 +767,7 @@ obsidianLiveSyncSettingTab: logCheckingConfigFailed: La verificación de configuración falló logCheckingDbConfig: Verificando la configuración de la base de datos logCheckPassphraseFailed: |- - ERROR: Error al comprobar la frase de contraseña con el servidor remoto: + ERROR: Error al comprobar la frase de contraseña con el servidor remoto: ${db}. logConfiguredDisabled: "Modo de sincronización configurado: DESACTIVADO" logConfiguredLiveSync: "Modo de sincronización configurado: Sincronización en Vivo" @@ -622,6 +785,7 @@ obsidianLiveSyncSettingTab: el servidor remoto! ¡Por favor, revísala de nuevo!" logRebuildNote: La sincronización ha sido desactivada, obtén y vuelve a activar si lo deseas. logSelectAnyPreset: Selecciona cualquier preestablecido. + logServerConfigurationCheck: Registrar la verificación de la configuración del servidor msgAreYouSureProceed: ¿Estás seguro de proceder? msgChangesNeedToBeApplied: ¡Los cambios deben aplicarse! msgConfigCheck: --Verificación de configuración-- @@ -631,10 +795,11 @@ obsidianLiveSyncSettingTab: msgConnectionProxyNote: 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. - msgCurrentOrigin: "Origen actual: {origin}" + msgCurrentOrigin: "Origen actual: ${origin}" msgDiscardConfirmation: ¿Realmente deseas descartar las configuraciones y bases de datos existentes? msgDone: --Hecho-- msgEnableCors: Configurar httpd.enable_cors + msgEnableCorsChttpd: Configurar chttpd.enable_cors msgEnableEncryptionRecommendation: Recomendamos habilitar el cifrado de extremo a extremo y la obfuscación de ruta. ¿Estás seguro de querer continuar sin cifrado? @@ -647,9 +812,9 @@ obsidianLiveSyncSettingTab: local.ini del servidor. msgInvalidPassphrase: Tu frase de contraseña de cifrado podría ser inválida. ¿Estás seguro de querer continuar? - msgNewVersionNote: ¿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. + msgNewVersionNote: ¿Llegaste aquí por una notificación de actualización? Revisa + el historial de versiones. Si todo está bien, haz clic en el botón. + Normalmente solo se notifica una vez. msgNonHTTPSInfo: Configurado como URI que no es HTTPS. Ten en cuenta que esto puede no funcionar en dispositivos móviles. msgNonHTTPSWarning: No se puede conectar a URI que no sean HTTPS. Por favor, @@ -674,7 +839,7 @@ obsidianLiveSyncSettingTab: favor crea un issue en GitHub. Aprecio mucho tu gran dedicación. - msgOriginCheck: "Verificación de origen: {org}" + msgOriginCheck: "Comprobación de origen: ${org}" msgRebuildRequired: >- Es necesario reconstruir las bases de datos para aplicar los cambios. Por favor selecciona el método para aplicar los cambios. @@ -757,6 +922,7 @@ obsidianLiveSyncSettingTab: okCorsOriginMatched: ✔ Origen de CORS correcto okCorsOrigins: ✔ cors.origins está correcto. okEnableCors: ✔ httpd.enable_cors está correcto. + okEnableCorsChttpd: ✔ chttpd.enable_cors está correcto. okMaxDocumentSize: ✔ couchdb.max_document_size está correcto. okMaxRequestSize: ✔ chttpd.max_http_request_size está correcto. okRequireValidUser: ✔ chttpd.require_valid_user está correcto. @@ -764,12 +930,12 @@ obsidianLiveSyncSettingTab: okWwwAuth: ✔ httpd.WWW-Authenticate está correcto. optionApply: Aplicar optionCancel: Cancelar - optionCouchDB: CouchDB + optionCouchDB: Servidor CouchDB optionDisableAllAutomatic: Desactivar lo automático optionFetchFromRemote: Obtener del remoto optionHere: AQUÍ optionLiveSync: Sincronización LiveSync - optionMinioS3R2: Minio,S3,R2 + optionMinioS3R2: MinIO, S3, R2 optionOkReadEverything: OK, he leído todo. optionOnEvents: En eventos optionPeriodicAndEvents: Periódico y en eventos @@ -781,6 +947,8 @@ obsidianLiveSyncSettingTab: panelPrivacyEncryption: Privacidad y Cifrado panelRemoteConfiguration: Configuración remota panelSetup: Configuración + serverVersion: "Información del servidor: ${info}" + titleActiveRemoteServer: Servidor remoto activo titleAppearance: Apariencia titleConflictResolution: Resolución de conflictos titleCongratulations: ¡Felicidades! @@ -808,7 +976,7 @@ obsidianLiveSyncSettingTab: titleSyncSettings: Configuraciones de Sincronización titleSyncSettingsViaMarkdown: Configuración de sincronización a través de Markdown titleUpdateThinning: Actualización de adelgazamiento - warnCorsOriginUnmatched: "⚠ El origen de CORS no coincide: {from}->{to}" + warnCorsOriginUnmatched: ⚠ El origen CORS no coincide ${from}->${to} warnNoAdmin: ⚠ No tienes privilegios de administrador. Ok: Aceptar Old Algorithm: Algoritmo antiguo @@ -820,6 +988,57 @@ Overwrite patterns: Patrones de sobrescritura Overwrite remote: Sobrescribir remoto Overwrite remote with local DB and passphrase.: Sobrescribe el remoto con la base de datos local y la frase de contraseña. Overwrite Server Data with This Device's Files: Sobrescribir los datos del servidor con los archivos de este dispositivo +P2P: + AskPassphraseForDecrypt: El par remoto compartió la configuración. Ingrese la + frase de contraseña para descifrar la configuración. + AskPassphraseForShare: El par remoto solicitó la configuración de este + dispositivo. Ingrese la frase de contraseña para compartir la configuración. + Puede ignorar la solicitud cancelando este diálogo. + DisabledButNeed: "%{title_p2p_sync} está deshabilitado. ¿Realmente quieres habilitarlo?" + FailedToOpen: No se pudo abrir la conexión P2P al servidor de señalización. + NoAutoSyncPeers: No se encontraron pares de sincronización automática. Configure + pares en el panel %{long_p2p_sync}. + NoKnownPeers: No se han detectado pares, esperando la entrada de otros pares... + Note: + description: >2- + Este replicador nos permite sincronizar nuestra bóveda con otros + dispositivos utilizando una conexión de igual a igual. Podemos usar esto + para sincronizar nuestra bóveda con nuestros otros dispositivos sin usar + un servicio en la nube. + + Este replicador está basado en Trystero. También utiliza un servidor de + señalización para establecer una conexión entre dispositivos. El servidor + de señalización se utiliza para intercambiar información de conexión entre + dispositivos. Conoce (o no debería) conocer ni almacenar ninguno de + nuestros datos. + + + Cualquiera puede alojar el servidor de señalización. Esto es sólo un + relevo de Nostr. En aras de la simplicidad y para comprobar el + comportamiento del replicador, vrtmrz aloja una instancia del servidor de + señalización. Puede utilizar el servidor experimental proporcionado por + vrtmrz o puede utilizar cualquier otro servidor. + + + Por cierto, aunque el servidor de señalización no almacene nuestros datos, + puede ver la información de conexión de algunos de nuestros dispositivos. + Tenga en cuenta esto. Además, tenga cuidado al utilizar el servidor + proporcionado por otra persona. + important_note: Replicador de igual a igual. + important_note_sub: Esta característica todavía está a la vanguardia. Tenga en + cuenta que asegúrese de realizar una copia de seguridad de sus datos antes + de utilizar esta función. Y estaríamos muy contentos si pudiera contribuir + al desarrollo de esta función. + Summary: ¿Cuál es esta característica? (y algunas notas importantes, léalas una vez) + NotEnabled: "%{title_p2p_sync} no está habilitado. No podemos abrir una nueva conexión." + P2PReplication: Replicación %{P2P} + PaneTitle: "%{long_p2p_sync}" + ReplicatorInstanceMissing: No se encuentra el replicador de sincronización P2P; + posiblemente no se haya configurado o habilitado. + SeemsOffline: El par ${name} parece desconectado, omitido. + SyncAlreadyRunning: La sincronización P2P ya se está ejecutando. + SyncCompleted: Sincronización P2P completada. + SyncStartedWith: Se inició la sincronización P2P con ${name}. paneMaintenance: markDeviceResolvedAfterBackup: Marcar el dispositivo como resuelto después de hacer una copia de seguridad remoteLockedAndDeviceNotAccepted: La base de datos remota está bloqueada y este @@ -832,9 +1051,11 @@ Passphrase of sensitive configuration items: Frase para elementos sensibles password: contraseña Password: Contraseña Paste a connection string: Pegar cadena de conexión +Paste the Setup URI generated from one of your active devices.: Pegue el URI de configuración generado desde uno de sus dispositivos activos。 Path Obfuscation: Ofuscación de rutas Patterns to match files for overwriting instead of merging: Patrones para identificar archivos que se sobrescribirán en lugar de fusionarse Patterns to match files for syncing: Patrones para identificar archivos que se sincronizarán +Peer-to-Peer only: Solo Peer-to-Peer Peer-to-Peer Synchronisation: Sincronización entre pares Per-file-saved customization sync: Sincronización de personalización por archivo Perform: Ejecutar @@ -844,14 +1065,22 @@ Perform Garbage Collection to remove unused chunks and reduce database size.: Ejecuta la recolección de basura para eliminar chunks no usados y reducir el tamaño de la base de datos. Periodic Sync interval: Intervalo de sincronización periódica -Pick a file to resolve conflict: Elegir un archivo para resolver el conflicto +Pick a file to resolve conflict: Elija un archivo para resolver el conflicto +Pick a file to show history: Elija un archivo para mostrar el historial +Please select a method to import the settings from another device.: Seleccione un método para importar la configuración desde otro dispositivo。 +Please select an option to proceed: Seleccione una opción para continuar +Please select the type of server to which you are connecting.: Seleccione el tipo de servidor al que se está conectando。 Please set device name to identify this device. This name should be unique among your devices. While not configured, we cannot enable this feature.: Define un nombre para identificar este dispositivo. Debe ser único entre tus dispositivos. Mientras no esté configurado, no podremos habilitar esta función. Please set this device name: Define el nombre de este dispositivo +Prepare the 'report' to create an issue: Preparar el "reporte" para crear un issue Presets: Preconfiguraciones +Proceed with Setup URI: Continuar con el URI de configuración +Process files even if seems to be corrupted: Procesar archivos aunque parezcan dañados Process small files in the foreground: Procesar archivos pequeños en primer plano +Property Encryption: Cifrado de propiedades PureJS fallback (Fast, W/O WebAssembly): Alternativa PureJS (rápida, sin WebAssembly) Purge all download/upload cache.: Purga toda la caché de descarga y carga. Purge all journal counter: Purgar todos los contadores del diario @@ -859,6 +1088,116 @@ Rebuild local and remote database with local files.: Reconstruye la base de dato Rebuilding Operations (Remote Only): Operaciones de reconstrucción (solo remoto) Recreate all: Recrear todo Recreate missing chunks for all files: Recrear fragmentos faltantes para todos los archivos +RedFlag: + Fetch: + Method: + Desc: >- + ¿Cómo desea buscar? + + - %{RedFlag.Fetch.Method.FetchSafer}. + **Bajo tráfico**, **Alta CPU**, **Bajo riesgo** + Recomendado si... + - Archivos posiblemente inconsistentes + - Los archivos no eran tanto. + - %{RedFlag.Fetch.Method.FetchSmoother}. + **Tráfico bajo**, **CPU moderado**, **Riesgo bajo a moderado** + Recomendado si... + - Archivos probablemente consistentes + - Tienes muchos archivos. + - %{RedFlag.Fetch.Method.FetchTraditional}. + **Alto tráfico**, **Baja CPU**, **Riesgo bajo a moderado** + + >[!INFO]- Detalles + + > ## %{RedFlag.Fetch.Method.FetchSafer}. + + > **Bajo tráfico**, **CPU alta**, **Bajo riesgo** + + > Esta opción primero crea una base de datos local utilizando archivos + locales existentes antes de recuperar datos de la fuente remota. + + > Si existen archivos coincidentes tanto local como remotamente, solo se + transferirán las diferencias entre ellos. + + > Sin embargo, los archivos presentes en ambas ubicaciones se tratarán + inicialmente como archivos en conflicto. Se resolverán automáticamente + si en realidad no entran en conflicto, pero este proceso puede llevar + tiempo. + + > Este es generalmente el método más seguro y minimiza el riesgo de + pérdida de datos. + + > ## %{RedFlag.Fetch.Method.FetchSmoother}. + + > **Tráfico bajo**, **CPU moderado**, **Riesgo bajo a moderado** + (dependiendo de la operación) + + > Esta opción primero crea fragmentos de archivos locales para la base + de datos y luego recupera datos. En consecuencia, sólo se transfieren + los fragmentos que faltan localmente. Sin embargo, todos los metadatos + se toman de la fuente remota. + + > Luego, los archivos locales se comparan con estos metadatos en el + momento del lanzamiento. El contenido considerado más nuevo + sobrescribirá al anterior (por hora de modificación). Este resultado + luego se sincroniza nuevamente con la base de datos remota. + + > Esto generalmente es seguro si los archivos locales tienen realmente + la última marca de tiempo. Sin embargo, puede causar problemas si un + archivo tiene una marca de tiempo más nueva pero un contenido más + antiguo (como el `welcome.md` inicial). + + > Esto utiliza menos CPU y es más rápido que + "%{RedFlag.Fetch.Method.FetchSafer}", pero puede provocar la pérdida de + datos si no se usa con cuidado. + + > ## %{RedFlag.Fetch.Method.FetchTraditional}. + + > **Alto tráfico**, **Baja CPU**, **Riesgo bajo a moderado** + (dependiendo de la operación) + + > Todo se recuperará desde el control remoto. + + > Similar al %{RedFlag.Fetch.Method.FetchSmoother}, pero todos los + fragmentos se obtienen de la fuente remota. + + > Esta es la forma más tradicional de recuperar datos y, por lo general, + consume la mayor cantidad de tráfico y tiempo de red. También conlleva + un riesgo similar de sobrescribir archivos remotos con la opción + '%{RedFlag.Fetch.Method.FetchSmoother}'. + + > Sin embargo, a menudo se considera el método más estable porque es el + enfoque más sencillo y más antiguo. + FetchSafer: Cree una base de datos local una vez antes de buscarla + FetchSmoother: Cree fragmentos de archivos locales antes de recuperarlos + FetchTraditional: Obtener todo desde el control remoto + Title: ¿Cómo desea buscar? + FetchRemoteConfig: + Applied: Remote configuration applied. + Buttons: + Cancel: No, usa la configuración local + Fetch: Sí, buscar y aplicar configuraciones remotas + Retry: Retry (recommended) + SkipAndProceed: Skip and proceed + FailedMessage: Could not fetch configuration from remote. If you are new to the + Self-hosted LiveSync, this might be expected. If not, you should check + your network or server settings. + FailedTitle: Fetch Remote Configuration Failed + MatchesLocal: Remote configuration matches local configuration. No changes applied. + Message: ¿Quiere recuperar y aplicar configuraciones de preferencias almacenadas + de forma remota al dispositivo? + NotApplied: Remote configuration not applied. + SettingsDiffered: Your settings differed slightly from the server's. The plug-in + has supplemented the incompatible parts with the server settings! + Title: Obtener configuración remota + Log: + FetchEverythingCancelled: Fetch everything cancelled by user. + FetchEverythingCompleted: Fetch everything operation completed. Vault files will be gradually synced. + RebuildEverythingCancelled: Rebuild everything cancelled by user. + RebuildEverythingCompleted: Rebuild everything operation completed. + VaultInitialisationError: Error during vault initialisation. + VaultInitialisationProcessError: Error during vault initialisation process. + ResumeProcessingPrompt: Do you want to resume file and database processing, and restart obsidian now? Reducing the frequency with which on-disk changes are reflected into the DB: Reducir frecuencia de actualizaciones de disco a BD Region: Región Remediation: Remediación @@ -869,8 +1208,53 @@ Remote name: Nombre del remoto Remote server type: Tipo de servidor remoto Remote Type: Tipo de remoto Rename: Renombrar +Replicator: + Dialogue: + Locked: + Action: + Dismiss: Cancelar para reconfirmación + Fetch: Restablecer sincronización en este dispositivo + Unlock: Desbloquear la base de datos remota + Message: + _value: > + La base de datos remota está bloqueada. Esto se debe a una + reconstrucción en una de las terminales. + + Por lo tanto, se solicita al dispositivo que retenga la conexión para + evitar daños en la base de datos. + + + Hay tres opciones que podemos hacer: + + + - %{Replicator.Dialogue.Locked.Action.Fetch} + La forma más preferida y confiable. Esto eliminará la base de datos local una vez y restablecerá toda la información de sincronización de la base de datos remota nuevamente. En la mayoría de los casos, podemos realizar esto de manera segura. Sin embargo, lleva algo de tiempo y debe realizarse en una red estable. + - %{Replicator.Dialogue.Locked.Action.Unlock} + Este método solo se puede utilizar si ya estamos sincronizados de manera confiable mediante otros métodos de replicación. Esto no significa simplemente que tengamos los mismos archivos. Si no estás seguro, debes evitarlo. + - %{Replicator.Dialogue.Locked.Action.Dismiss} + Esto cancelará la operación. Y le preguntaremos nuevamente en la próxima solicitud. + Fetch: Se ha programado recuperar todo. El complemento se reiniciará para + ejecutarlo. + Unlocked: La base de datos remota ha sido desbloqueada. Vuelva a intentar la + operación. + Title: bloqueado + Message: + Cleaned: La limpieza de la base de datos está en proceso. la replicación ha sido + cancelada + InitialiseFatalError: No hay ningún replicador disponible, este es el error fatal. + Pending: Algunos eventos de archivos están pendientes. La replicación ha sido + cancelada. + SomeModuleFailed: La replicación ha sido cancelada por alguna falla del módulo + VersionUpFlash: Se ha detectado una actualización. Abra el cuadro de diálogo + Configuración y verifique el Registro de cambios. La replicación ha sido + cancelada. Requires restart of Obsidian: Requiere reiniciar Obsidian Requires restart of Obsidian.: Requiere reiniciar Obsidian +Rerun Onboarding Wizard: Volver a ejecutar el asistente de incorporación +Rerun the onboarding wizard to set up Self-hosted LiveSync again.: + Vuelva a ejecutar el asistente de incorporación para configurar LiveSync + autohospedado nuevamente. +Rerun Wizard: Volver a ejecutar el asistente Resend: Reenviar Resend all chunks to the remote.: Reenvía todos los chunks al remoto. Reset: Restablecer @@ -878,10 +1262,16 @@ Reset all: Restablecer todo Reset all journal counter: Restablecer todos los contadores del diario Reset journal received history: Restablecer historial de recepción del diario Reset journal sent history: Restablecer historial de envío del diario +Reset notification threshold and check the remote database usage: + Restablecer el umbral de notificación y revisar el uso de la base de datos + remota Reset received: Restablecer recepción Reset sent history: Restablecer historial de envío Reset Synchronisation information: Restablecer información de sincronización Reset Synchronisation on This Device: Restablecer sincronización en este dispositivo +Reset the remote storage size threshold and check the remote storage size again.: + Restablecer el umbral del tamaño del almacenamiento remoto y volver a revisar + su tamaño Resolve All: Resolver todo Resolve all conflicted files: Resolver todos los archivos en conflicto Resolve All conflicted files by the newer one: Resolver todos los archivos en conflicto con la versión más reciente @@ -890,10 +1280,13 @@ Resolve All conflicted files by the newer one: Resolver todos los archivos en co Precaución: esto sobrescribirá la versión anterior y no podrá recuperarse." Restart Now: Reiniciar ahora Restore or reconstruct local database from remote.: Restaura o reconstruye la base de datos local desde el remoto. +Run Doctor: Ejecutar Doctor +S3/MinIO/R2 Object Storage: Almacenamiento de objetos S3/MinIO/R2 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 Saving will be performed forcefully after this number of seconds.: Guardado forzado tras esta cantidad de segundos +Scan a QR Code (Recommended for mobile): Escanear un código QR (recomendado para móviles) Scan changes on customization sync: Escanear cambios en sincronización de personalización Scan customization automatically: Escanear personalización automáticamente Scan customization before replicating.: Escanear personalización antes de replicar @@ -901,6 +1294,9 @@ Scan customization every 1 minute.: Escanear personalización cada 1 minuto Scan customization periodically: Escanear personalización periódicamente Scan for hidden files before replication: Escanear archivos ocultos antes de replicar Scan hidden files periodically: Escanear archivos ocultos periódicamente +Scan the QR code displayed on an active device using this device's camera.: + Escanee con la cámara de este dispositivo el código QR mostrado en un + dispositivo activo。 Schedule and Restart: Programar y reiniciar Scram!: Medidas de emergencia Seconds, 0 to disable: Segundos, 0 para desactivar @@ -909,6 +1305,7 @@ Seconds. Saving to the local database will be delayed until this value after we escribir/guardar Secret Key: Clave secreta Select the database adapter to use.: Selecciona el adaptador de base de datos que se usará. +Selector: Selector Send: Enviar Send chunks: Enviar chunks Server URI: URI del servidor @@ -978,11 +1375,262 @@ Setting: > Title: ¡Se ha generado un nuevo par de claves! + TroubleShooting: + _value: Solución de problemas + Doctor: + _value: Doctor de configuración + Desc: Detecta configuraciones no óptimas. (Igual que durante la migración) + ScanBrokenFiles: + _value: Buscar archivos dañados + Desc: Busca archivos que no estén almacenados correctamente en la base de datos. +SettingTab: + Message: + AskRebuild: Sus cambios requieren ser recuperados de la base de datos remota. + ¿Quieres continuar? +"Setup.> [!INFO]- The connected devices have been detected as follows:\n${devices}": |- + > [!INFO]- Se detectaron los siguientes dispositivos conectados: + ${devices} +Setup.All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.: + Todos los dispositivos tienen el mismo valor de progreso (${progress}). Parece + que tus dispositivos están sincronizados y se puede continuar con la + recolección de basura. +Setup: + Apply: + Buttons: + ApplyAndFetch: Aplicar y obtener + ApplyAndMerge: Aplicar y fusionar + ApplyAndRebuild: Aplicar y reconstruir + Cancel: Descartar y cancelar + OnlyApply: Solo aplicar + Message: >- + La nueva configuración está lista. Procedamos a aplicarlo. + + Hay varias maneras de aplicar esto: + + + - Aplicar y buscar + Configure este dispositivo como un nuevo cliente. Después de aplicar, sincronice desde el servidor remoto. + - Aplicar y fusionar + Configure en un dispositivo que ya tenga el archivo. Procesa los archivos locales y transfiere las diferencias. Pueden surgir conflictos. + - Aplicar y reconstruir + Reconstruya el control remoto usando archivos locales. Normalmente, esto se hace si el servidor se daña o si deseamos empezar desde cero. + Otros dispositivos se bloquearán y será necesario volver a buscarlos. + - Sólo aplicar + Aplicar únicamente. Pueden surgir conflictos si se requiere una reconstrucción. + Title: Aplicar nueva configuración desde ${method} + WarningRebuildRecommended: "NOTA: después de ajustar la configuración, se ha + determinado que se requiere una reconstrucción; No se recomienda importar + solo." + Command: + CopySetupUri: Copy settings as a new setup URI + CopySetupUriFull: Copy settings as a new setup URI (Full) + CopySetupUriWithSync: Copy settings as a new setup URI (With customization sync) + OpenSetupUri: Use the copied setup URI (Formerly Open setup URI) + ShowSettingsQrCode: Show settings as a QR code + Device: Dispositivo + Doctor: + Buttons: + No: No + Yes: Si + Message: >- + LiveSync autohospedado se ha vuelto gradualmente más largo en la historia + y algunas configuraciones recomendadas han cambiado. + + + Ahora, la configuración es un muy buen momento para hacer esto. + + + ¿Quiere ejecutar Doctor para comprobar si la configuración importada es + óptima en comparación con el estado más reciente? + Title: ¿Quieres consultar al médico? + EncryptSettingsPassphrase: The passphrase to encrypt the setup URI + EncryptSettingsTitle: Encrypt your settings + FetchRemoteConf: + Buttons: + Fetch: Sí, recupera la configuración. + Skip: No, utilice la configuración del URI. + Message: >- + Si ya hemos sincronizado una vez con otro dispositivo, la base de datos + remota almacena los valores de configuración adecuados entre los + dispositivos sincronizados. Al complemento le gustaría recuperarlos para + una configuración sólida. + + + Sin embargo, tenemos que asegurarnos de una cosa. ¿Estamos actualmente en + una situación en la que podemos acceder a la red de forma segura y + recuperar la configuración? + + + Nota: Básicamente, es seguro hacer esto si su base de datos remota está + alojada con un certificado SSL y su red no está comprometida. + Title: ¿Recuperar la configuración de la base de datos remota? + Log: + ProtocolHandlerRegistrationFailed: Failed to register protocol handler. This + feature may not work in some environments. + SetupUriCopiedToClipboard: Setup URI copied to clipboard + optionNoSetupUri: No, no tengo + optionRemindNextLaunch: Recordármelo en el próximo inicio + optionSetupWizard: Llévame al asistente de configuración + optionYesFetchAgain: Sí, obtener nuevamente + Progress: Progreso + QRCode: >- + Hemos generado un código QR para transferir la configuración. Escanee el + código QR con su teléfono u otro dispositivo. + + Nota: El código QR no está cifrado, así que tenga cuidado al abrirlo. + + + >[!SOLO PARA TUS OJOS]- + + >
${qr_image}
+ QRCodeTitle: Settings QR Code + RemoteE2EE: + AdvancedTitle: Avanzado + AlgorithmWarning: Cambiar el algoritmo de cifrado impedirá el acceso a cualquier + dato cifrado anteriormente con otro algoritmo. Asegúrate de que todos tus + dispositivos estén configurados para usar el mismo algoritmo y así + mantener el acceso a tus datos. + ButtonCancel: Cancelar + ButtonProceed: Continuar + DefaultAlgorithmDesc: En la mayoría de los casos, debes mantener el algoritmo + predeterminado (${algorithm}). Este ajuste solo es necesario si ya tienes + un Vault cifrado con un formato diferente. + Guidance: Configura tus ajustes de cifrado de extremo a extremo. + LabelEncrypt: Cifrado de extremo a extremo + LabelEncryptionAlgorithm: Algoritmo de cifrado + LabelObfuscateProperties: Ofuscar propiedades + MultiDestinationWarning: Este ajuste debe ser el mismo incluso cuando te + conectes a varios destinos de sincronización. + ObfuscatePropertiesDesc: Ofuscar propiedades (por ejemplo, la ruta del archivo, + el tamaño y las fechas de creación y modificación) añade una capa + adicional de seguridad al dificultar la identificación de la estructura y + los nombres de tus archivos y carpetas en el servidor remoto. Esto ayuda a + proteger tu privacidad y dificulta que usuarios no autorizados deduzcan + información sobre tus datos. + PassphraseValidationLine1: Ten en cuenta que la frase de contraseña del cifrado + de extremo a extremo no se valida hasta que el proceso de sincronización + comienza realmente. Esta es una medida de seguridad diseñada para proteger + tus datos. + PassphraseValidationLine2: Por lo tanto, te pedimos que tengas muchísimo cuidado + al configurar manualmente la información del servidor. Si introduces una + frase de contraseña incorrecta, los datos del servidor se corromperán. Ten + en cuenta que este comportamiento es intencionado. + PlaceholderPassphrase: Introduce tu frase de contraseña + StronglyRecommendedLine1: Al habilitar el cifrado de extremo a extremo, tus + datos se cifran en tu dispositivo antes de enviarse al servidor remoto. + Esto significa que, incluso si alguien obtiene acceso al servidor, no + podrá leer tus datos sin la frase de contraseña. Asegúrate de recordarla, + ya que también será necesaria para descifrar tus datos en otros + dispositivos. + StronglyRecommendedLine2: Además, ten en cuenta que si estás usando + sincronización Peer-to-Peer, esta configuración se utilizará cuando más + adelante cambies a otros métodos y te conectes a un servidor remoto. + StronglyRecommendedTitle: Muy recomendable + Title: Cifrado de extremo a extremo + ScanQRCode: + ButtonClose: Cerrar este diálogo + Guidance: Sigue los pasos de abajo para importar los ajustes desde tu + dispositivo actual. + Step1: En este dispositivo, mantén este Vault abierto. + Step2: En el dispositivo de origen, abre Obsidian. + Step3: En el dispositivo de origen, ejecuta desde la paleta de comandos la orden + "Mostrar ajustes como código QR". + Step4: En este dispositivo, cambia a la cámara o usa un escáner QR para escanear + el código mostrado. + Title: Escanear código QR + SetupUri: Setup URI + ShowQRCode: + _value: Mostrar código QR + Desc: Mostrar el código QR para transferir la configuración. + titleCaseSensitivity: Sensibilidad a mayúsculas + titleRecommendSetupUri: Recomendación de uso de URI de configuración + titleWelcome: Bienvenido a Self-hosted LiveSync + UseSetupURI: + ButtonCancel: Cancelar + ButtonProceed: Probar ajustes y continuar + ErrorFailedToParse: No se pudo procesar la URI de configuración. Revisa la URI y + la frase de contraseña. + ErrorPassphraseRequired: Introduce la frase de contraseña del Vault. + GuidanceLine1: Introduce la URI de configuración que se generó durante la + instalación del servidor o en otro dispositivo, junto con la frase de + contraseña del Vault. + GuidanceLine2: Ten en cuenta que puedes generar una nueva URI de configuración + ejecutando el comando "Copiar ajustes como nueva URI de configuración" + desde la paleta de comandos. + InvalidInfo: La URI de configuración no es válida. Revísala e inténtalo de nuevo. + LabelPassphrase: Frase de contraseña del Vault + LabelSetupURI: URI de configuración + PlaceholderPassphrase: Introduce la frase de contraseña del Vault + Title: Introducir URI de configuración + ValidInfo: La URI de configuración es válida y está lista para usarse. +Setup.Cancel Garbage Collection: Cancelar la recolección de basura +Setup.Compaction in progress on remote database...: La compactación está en curso en la base de datos remota... +Setup.Compaction on remote database completed successfully.: La compactación en la base de datos remota se completó correctamente. +Setup.Compaction on remote database failed.: La compactación en la base de datos remota falló. +Setup.Compaction on remote database timed out.: La compactación en la base de datos remota agotó el tiempo de espera. +Setup.Failed to connect to remote for compaction.: No se pudo conectar a la base de datos remota para la compactación. +Setup.Failed to connect to remote for compaction. ${reason}: No se pudo conectar a la base de datos remota para la compactación. ${reason} +Setup.Failed to start one-shot replication before Garbage Collection. Garbage Collection Cancelled.: + No se pudo iniciar la replicación de una sola vez antes de la recolección de + basura. La recolección de basura se canceló. +Setup.Failed to start replication after Garbage Collection.: No se pudo iniciar la replicación después de la recolección de basura. +Setup.Garbage Collection cancelled by user.: El usuario canceló la recolección de basura. +"Setup.Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.": + "Recolección de basura completada. Chunks eliminados: ${deletedChunks} / + ${totalChunks}. Tiempo empleado: ${seconds} segundos." +Setup.Garbage Collection Confirmation: Confirmación de recolección de basura +"Setup.Garbage Collection: Found ${unusedChunks} unused chunks to delete.": + "Recolección de basura: se encontraron ${unusedChunks} chunks no usados para + eliminar." +"Setup.Garbage Collection: Scanned ${scanned} / ~${docCount}": "Recolección de basura: escaneados ${scanned} / ~${docCount}" +"Setup.Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": + "Recolección de basura: escaneo completado. Chunks totales: ${totalChunks}, + chunks usados: ${usedChunks}" +Setup.Ignore and Proceed: Ignorar y continuar +Setup.No connected device information found. Cancelling Garbage Collection.: + No se encontró información de dispositivos conectados. Cancelando la + recolección de basura. +Setup.Node ID: ID del nodo +Setup.Node Information Missing: Falta información del nodo +Setup.Obsidian version: Versión de Obsidian +Setup.Please disable 'Read chunks online' in settings to use Garbage Collection.: + Desactiva "Read chunks online" en los ajustes para usar la recolección de + basura. +Setup.Please enable 'Compute revisions for chunks' in settings to use Garbage Collection.: + Activa "Compute revisions for chunks" en los ajustes para usar la recolección + de basura. +Setup.Please select 'Cancel' explicitly to cancel this operation.: Selecciona explícitamente "Cancelar" para cancelar esta operación. +Setup.Plug-in version: Versión del complemento +Setup.Proceed Garbage Collection: Continuar con la recolección de basura +Setup.Proceeding with Garbage Collection, ignoring missing nodes.: Continuando con la recolección de basura e ignorando los nodos faltantes. +Setup.Proceeding with Garbage Collection.: Continuando con la recolección de basura. +Setup.Setup URI dialog cancelled.: Se canceló el diálogo de Setup URI. +"Setup.Some devices have differing progress values (max: ${maxProgress}, min: ${minProgress}).\nThis may indicate that some devices have not completed synchronisation, which could lead to conflicts. Strongly recommend confirming that all devices are synchronised before proceeding.": >- + Algunos dispositivos tienen valores de progreso diferentes (máx.: + ${maxProgress}, mín.: ${minProgress}). + + Esto puede indicar que algunos dispositivos no han completado la + sincronización, lo que podría causar conflictos. Se recomienda encarecidamente + confirmar que todos los dispositivos estén sincronizados antes de continuar. +"Setup.The following accepted nodes are missing its node information:\n- ${missingNodes}\n\nThis indicates that they have not been connected for some time or have been left on an older version.\nIt is preferable to update all devices if possible. If you have any devices that are no longer in use, you can clear all accepted nodes by locking the remote once.": >- + Los siguientes nodos aceptados no tienen información del nodo: + + - ${missingNodes} + + + Esto indica que no se han conectado desde hace algún tiempo o que se han + quedado en una versión anterior. + + Si es posible, es preferible actualizar todos los dispositivos. Si tienes + dispositivos que ya no se usan, puedes borrar todos los nodos aceptados + bloqueando el remoto una vez. 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 full banner: Mostrar banner completo +Show full banner: Mostrar el banner completo +Show history: Mostrar historial +Show icon only: Mostrar solo el icono 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 @@ -1004,6 +1652,9 @@ Sync on Editor Save: Sincronizar al guardar en editor Sync on File Open: Sincronizar al abrir archivo Sync on Save: Sincronizar al guardar Sync on Startup: Sincronizar al iniciar +Synchronisation utilising journal files. You must have set up an S3/MinIO/R2 compatible object storage.: + Sincronización mediante archivos de registro. Debe haber configurado un + almacenamiento de objetos compatible con S3/MinIO/R2。 Synchronising files: Archivos sincronizados Syncing: Sincronización Target patterns: Patrones objetivo @@ -1017,23 +1668,750 @@ The maximum number of chunks that can be incubated within the document. Chunks e 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 +The minimum interval for automatic synchronisation on event.: El intervalo mínimo para la sincronización automática por evento. +This feature enables direct synchronisation between devices. No server is required, but both devices must be online at the same time for synchronisation to occur, and some features may be limited. Internet connection is only required to signalling (detecting peers) and not for data transfer.: + Esta función permite la sincronización directa entre dispositivos. No requiere + servidor, pero ambos dispositivos deben estar en línea al mismo tiempo para + que la sincronización se produzca, y algunas funciones pueden ser limitadas. + La conexión a Internet solo se necesita para la señalización (detección de + pares), no para la transferencia de datos。 +This is an advanced option for users who do not have a URI or who wish to configure detailed settings.: + Esta es una opción avanzada para usuarios que no disponen de un URI o que + desean configurar parámetros detallados。 +This is the most suitable synchronisation method for the design. All functions are available. You must have set up a CouchDB instance.: + Este es el método de sincronización más adecuado para el diseño. Todas las + funciones están disponibles. Debe tener configurada una instancia de CouchDB。 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 This will recreate chunks for all files. If there were missing chunks, this may fix the errors.: Esto recreará los fragmentos de todos los archivos. Si faltaban fragmentos, esto puede corregir los errores. Transfer Tweak: Ajustes de transferencia +TweakMismatchResolve: + Action: + Dismiss: Descartar + UseConfigured: Usar la configuración configurada + UseMine: Actualizar la configuración de la base de datos remota + UseMineAcceptIncompatible: Actualice la configuración de la base de datos remota + pero manténgala como está + UseMineWithRebuild: Actualice la configuración de la base de datos remota y + reconstruya nuevamente + UseRemote: Aplicar configuración a este dispositivo + UseRemoteAcceptIncompatible: Aplicar la configuración a este dispositivo, pero + ignorar la incompatibilidad + UseRemoteWithRebuild: Aplicar la configuración a este dispositivo y recuperarla nuevamente + Message: + Main: >- + + La configuración en la base de datos remota es la siguiente. Estos valores + los configuran otros dispositivos, que se sincronizan con este dispositivo + al menos una vez. + + + Si desea utilizar esta configuración, seleccione + %{TweakMismatchResolve.Action.UseConfigured}. + + Si desea conservar la configuración de este dispositivo, seleccione + %{TweakMismatchResolve.Action.Dismiss}. + + + ${table} + + + >[!CONSEJO] + + > Si desea sincronizar todas las configuraciones, utilice `Sincronizar + configuraciones mediante rebajas` después de aplicar una configuración + mínima con esta función. + + + ${additionalMessage} + MainTweakResolving: |- + Su configuración no coincide con la del servidor remoto. + + Debe coincidir la siguiente configuración: + + ${table} + + Háganos saber su decisión. + + ${additionalMessage} + UseRemote: + WarningRebuildRecommended: >- + + >[!AVISO] + + > Algunos cambios son compatibles pero pueden consumir almacenamiento + adicional y volúmenes de transferencia. Se recomienda una + reconstrucción. Sin embargo, es posible que no se realice una + reconstrucción en este momento, pero se puede implementar en + mantenimiento futuro. + + > ***¡Asegúrese de tener tiempo y estar conectado a una red estable para + presentar la solicitud!*** + WarningRebuildRequired: >- + + >[!ADVERTENCIA] + + > Algunas configuraciones remotas no son compatibles con la base de + datos local de este dispositivo. Será necesario reconstruir la base de + datos local. + + > ***¡Asegúrese de tener tiempo y estar conectado a una red estable para + presentar la solicitud!*** + WarningIncompatibleRebuildRecommended: >- + + >[!AVISO] + + > Hemos detectado que algunos de los valores son diferentes para hacer + incompatible la base de datos local con la base de datos remota. + + > Algunos cambios son compatibles pero pueden consumir almacenamiento + adicional y volúmenes de transferencia. Se recomienda una reconstrucción. + Sin embargo, es posible que no se realice una reconstrucción en este + momento, pero se puede implementar en mantenimiento futuro. + + > Si desea reconstruir, tardará unos minutos o más. **Asegúrate de que sea + seguro realizarlo ahora.** + WarningIncompatibleRebuildRequired: >- + + >[!ADVERTENCIA] + + > Hemos detectado que algunos de los valores son diferentes para hacer + incompatible la base de datos local con la base de datos remota. + + > Se requieren reconstrucciones locales o remotas. Ambos tardan unos + minutos o más. **Asegúrate de que sea seguro realizarlo ahora.** + Table: + _value: | + | Nombre del valor | Este dispositivo | En remoto | + |: --- |: ---- :|: ---- :| + ${rows} + Row: "| ${name} | ${self} | ${remote} |" + Title: + _value: Se detectó una incompatibilidad de configuración + TweakResolving: Se detectó una incompatibilidad de configuración + UseRemoteConfig: Usar configuración remota +Ui: + Bucket: + Guidance: Ingrese los detalles requeridos para conectarse a su servicio de + almacenamiento de objetos compatible con S3/MinIO/R2. + Common: + Signal: + Caution: Precaucion + Danger: Peligro + Notice: Aviso + Warning: Advertencia + ConflictResolver: + FileToResolve: Archivo a resolver + CouchDB: + Guidance: Ingrese la información del servidor CouchDB a continuación. + History: + FileToView: Archivo para ver + P2P: + Guidance: Ingrese la información de sincronización punto a punto a continuación. + RemoteE2EE: + AdvancedTitle: Avanzado + AlgorithmWarning: Cambiar el algoritmo de cifrado impedirá el acceso a cualquier + dato previamente cifrado con un algoritmo diferente. + ButtonCancel: Cancelar + ButtonProceed: Continuar + DefaultAlgorithmDesc: En la mayoría de los casos, debes seguir con el algoritmo predeterminado. + Guidance: Configure sus ajustes de cifrado de extremo a extremo. + LabelEncrypt: Cifrado de extremo a extremo + LabelEncryptionAlgorithm: Algoritmo de cifrado + LabelObfuscateProperties: Ofuscar propiedades + ManualWarning: Tenga en cuenta que la frase de contraseña de cifrado de extremo + a extremo no se valida hasta que realmente comienza el proceso de + sincronización. Esta es una medida de seguridad diseñada para proteger sus + datos. + MultiDestinationWarning: Esta configuración debe ser la misma incluso cuando se + conecte a múltiples destinos de sincronización. + ObfuscatePropertiesDesc: Ofuscar propiedades agrega una capa adicional de + seguridad al dificultar la identificación de la estructura y los nombres + de sus archivos y carpetas en el servidor remoto. + PassphraseValidationLine1: Tenga en cuenta que la frase de contraseña de cifrado + de extremo a extremo no se valida hasta que realmente comienza el proceso + de sincronización. + PassphraseValidationLine2: Por lo tanto, le pedimos que tenga extrema precaución + al configurar la información del servidor manualmente. + PlaceholderPassphrase: Ingrese su contraseña + StronglyRecommended: Habilitar el cifrado de extremo a extremo garantiza que sus + datos estén cifrados en su dispositivo antes de enviarlos al servidor + remoto. Esto significa que incluso si alguien obtiene acceso al servidor, + no podrá leer sus datos sin la frase de contraseña. + StronglyRecommendedLine1: Habilitar el cifrado de extremo a extremo garantiza + que sus datos estén cifrados en su dispositivo antes de enviarlos al + servidor remoto. + StronglyRecommendedLine2: Además, tenga en cuenta que si utiliza la + sincronización punto a punto, esta configuración se utilizará cuando + cambie a otros métodos y se conecte a un servidor remoto en el futuro. + StronglyRecommendedTitle: Muy recomendado + Title: Cifrado de extremo a extremo + WarningSameSetting: Esta configuración debe ser la misma incluso cuando se + conecte a múltiples destinos de sincronización. + ScanQRCode: + ButtonClose: Cerrar este diálogo + Guidance: Siga los pasos a continuación para importar la configuración desde su + dispositivo existente. + Instruction: Siga los pasos a continuación para importar la configuración desde + su dispositivo existente. + Step1: En este dispositivo, mantenga abierta esta bóveda. + Step2: En el dispositivo fuente, abra Obsidian. + Step3: En el dispositivo de origen, desde la paleta de comandos, ejecute el + comando "Mostrar configuración como código QR". + Step4: En este dispositivo, cambie a la aplicación de la cámara o use un escáner + de códigos QR para escanear el código QR que se muestra. + Title: Escanear código QR + Settings: + Advanced: + LocalDatabaseTweak: Ajustes de la base de datos local + MemoryCache: Caché de memoria + TransferTweak: Ajustes de transferencia + Common: + Analyse: Analizar + Back: Volver + Check: Verificar + Configure: Configurar + Delete: Eliminar + Lock: Bloquear + Open: Abrir + Perform: Ejecutar + ResetAll: Restablecer todo + ResolveAll: Resolver todo + Send: Enviar + VerifyAll: Verificar todo + CustomizationSync: + OpenDesc: Abrir el cuadro de diálogo + Panel: Sincronización de personalización + WarnChangeDeviceName: Advertir al cambiar el nombre del dispositivo + WarnSetDeviceName: Advertir al establecer el nombre del dispositivo + Hatch: + AnalyseDatabaseUsage: Analizar el uso de la base de datos + AnalyseDatabaseUsageDesc: Analiza el uso de la base de datos y genera un informe + TSV para diagnóstico. Puedes pegar el informe generado en cualquier hoja + de cálculo. + BackToNonConfigured: Volver al estado no configurado + ConvertNonObfuscated: Comprobar y convertir archivos sin ofuscación de ruta + ConvertNonObfuscatedDesc: Comprueba en la base de datos local los archivos + guardados sin ofuscación de ruta y los convierte cuando sea necesario. + CopyIssueReport: Copiar el informe al portapapeles + DatabaseLabel: "Base de datos: ${details}" + DatabaseToStorage: Base de datos -> Almacenamiento + DeleteCustomizationSyncData: Eliminar todos los datos de sincronización de personalización + GeneratedReport: Informe generado + Missing: Falta + ModifiedSize: Tamaño modificado + ModifiedSizeActual: Tamaño modificado real + PrepareIssueReport: Preparar el informe para crear una incidencia + RecoveryAndRepair: Recuperación y reparación + RecreateAll: Volver a crear todo + RecreateMissingChunks: Volver a crear los fragmentos faltantes de todos los archivos + RecreateMissingChunksDesc: Esto volverá a crear los fragmentos de todos los + archivos. Si faltaban fragmentos, puede corregir los errores. + ResetPanel: Restablecer + ResetRemoteUsage: Restablecer el umbral de notificación y comprobar el uso de la + base de datos remota + ResetRemoteUsageDesc: Restablece el umbral de tamaño del almacenamiento remoto y + comprueba de nuevo su tamaño. + ResolveAllConflictedFiles: Resolver todos los archivos en conflicto usando la versión más reciente + ResolveAllConflictedFilesDesc: "Resuelve todos los archivos en conflicto con la + versión más reciente. Atención: esto sobrescribirá la versión anterior y + no podrá recuperarla." + RunDoctor: Ejecutar Doctor + ScanBrokenFiles: Buscar archivos dañados + ScramSwitches: Interruptores de emergencia + ShowHistory: Mostrar historial + StorageLabel: "Almacenamiento: ${details}" + StorageToDatabase: Almacenamiento -> Base de datos + VerifyAndRepairAllFiles: Verificar y reparar todos los archivos + VerifyAndRepairAllFilesDesc: Compara el contenido de los archivos entre la base + de datos local y el almacenamiento. Si no coinciden, se te preguntará + cuál conservar. + Maintenance: + Cleanup: Realizar limpieza + CleanupDesc: Reduce el espacio usado descartando todas las revisiones que no + sean la más reciente. Requiere la misma cantidad de espacio libre en el + servidor remoto y en el cliente local. + DeleteLocalDatabase: Eliminar la base de datos local para restablecer o + desinstalar Self-hosted LiveSync + EmergencyRestart: Reinicio de emergencia + EmergencyRestartDesc: Desactiva toda sincronización y reinicia. + FreshStartWipe: Borrado para empezar de nuevo + FreshStartWipeDesc: Elimina todos los datos del servidor remoto. + GarbageCollection: Recolección de basura V3 (Beta) + GarbageCollectionAction: Ejecutar recolección de basura + GarbageCollectionDesc: Realiza la recolección de basura para eliminar fragmentos + no usados y reducir el tamaño de la base de datos. + LockServer: Bloquear servidor + LockServerDesc: Bloquea el servidor remoto para evitar la sincronización con + otros dispositivos. + OverwriteRemote: Sobrescribir remoto + OverwriteRemoteDesc: Sobrescribe el remoto con la base de datos local y la frase + de contraseña. + OverwriteServerData: Sobrescribir los datos del servidor con los archivos de este dispositivo + OverwriteServerDataDesc: Reconstruye la base de datos local y remota con los + archivos de este dispositivo. + PurgeAllJournalCounter: Purgar todos los contadores del diario + PurgeAllJournalCounterDesc: Purga todas las cachés de descarga y subida. + RebuildingOperations: Operaciones de reconstrucción (solo remoto) + Resend: Reenviar + ResendDesc: Reenvía todos los fragmentos al remoto. + Reset: Restablecer + ResetAllJournalCounter: Restablecer todos los contadores del diario + ResetAllJournalCounterDesc: Inicializa todo el historial del diario. En la + próxima sincronización, todos los elementos se recibirán y enviarán de + nuevo. + ResetJournalReceived: Restablecer historial de recepción del diario + ResetJournalReceivedDesc: Inicializa el historial de recepción del diario. En la + próxima sincronización, se volverán a descargar todos los elementos + salvo los enviados por este dispositivo. + ResetJournalSent: Restablecer historial de envío del diario + ResetJournalSentDesc: Inicializa el historial de envío del diario. En la próxima + sincronización, se volverán a enviar todos los elementos salvo los + recibidos por este dispositivo. + ResetLocalSyncInfo: Restablecer información de sincronización + ResetLocalSyncInfoDesc: Restaura o reconstruye la base de datos local desde el remoto. + ResetReceived: Restablecer recibidos + ResetSentHistory: Restablecer historial de enviados + ResetThisDevice: Restablecer la sincronización en este dispositivo + ScheduleAndRestart: Programar y reiniciar + Scram: Emergencia + SendChunks: Enviar chunks + Syncing: Sincronización + WarningLockedReadyAction: Acción de advertencia de bloqueo listo + WarningLockedReadyText: Texto de advertencia de bloqueo listo + WarningLockedResolveAction: Acción de advertencia para resolver bloqueo + WarningLockedResolveText: Texto de advertencia para resolver bloqueo + WriteRedFlagAndRestart: Marcar y reiniciar + Patches: + CompatibilityConflict: Compatibilidad (comportamiento ante conflictos) + CompatibilityDatabase: Compatibilidad (estructura de base de datos) + CompatibilityInternalApi: Compatibilidad (uso de API interna) + CompatibilityMetadata: Compatibilidad (metadatos) + CompatibilityRemote: Compatibilidad (base de datos remota) + CompatibilityTrouble: Compatibilidad (problemas tratados) + CurrentAdapter: "Adaptador actual: ${adapter}" + DatabaseAdapter: Adaptador de base de datos + DatabaseAdapterDesc: Selecciona el adaptador de base de datos que se usará. + EdgeCaseBehaviour: Tratamiento de casos límite (comportamiento) + EdgeCaseDatabase: Tratamiento de casos límite (base de datos) + EdgeCaseProcessing: Tratamiento de casos límite (procesamiento) + IndexedDbWarning: Advertencia de IndexedDB + MigratingToIdb: Migrando a IDB + MigratingToIndexedDb: Migrando a IndexedDB + MigrationIdbCompleted: Migración a IDB completada + MigrationIdbCompletedFollowUp: Seguimiento de migración a IDB completada + MigrationIndexedDbCompleted: Migración a IndexedDB completada + MigrationIndexedDbCompletedFollowUp: Seguimiento de migración a IndexedDB completada + MigrationWarning: Advertencia de migración + OperationToIdb: Operación a IDB + OperationToIndexedDb: Operación a IndexedDB + Remediation: Corrección + RemediationChanged: Corrección cambiada + RemediationNoLimit: Corrección sin límite + RemediationRestarting: Reiniciando para corregir + RemediationRestartLater: Reiniciar más tarde para corregir + RemediationRestartMessage: Mensaje de reinicio para corrección + RemediationRestartNow: Reiniciar ahora para corregir + RemediationSuffixChanged: Sufijo de corrección cambiado + RemediationWithValue: "Valor: ${date} (${timestamp})" + RemoteDatabaseSunset: Ajustes de base de datos remota (en retirada) + SwitchToIDB: Cambiar a IDB + SwitchToIndexedDb: Cambiar a IndexedDB + PowerUsers: + ConfigurationEncryption: Cifrado de configuración + ConnectionTweak: Ajustes de conexión de CouchDB + ConnectionTweakDesc: Descripción de ajustes de conexión + Default: Predeterminado + Developer: Desarrollador + EncryptSensitiveConfig: Cifrar elementos de configuración sensibles + PromptPassphraseEveryLaunch: Solicitar una frase de contraseña en cada inicio + UseCustomPassphrase: Usar una frase de contraseña personalizada + Remote: + Activate: Activar + ActiveSuffix: Sufijo activo + AddConnection: Agregar conexión + AddRemoteDefaultName: Agregar nombre remoto predeterminado + ConfigureAndChangeRemote: Configurar y cambiar remoto + ConfigureE2EE: Configurar E2EE + ConfigureRemote: Configurar remoto + DeleteRemoteConfirm: ¿Eliminar la configuración remota "${name}"? + DeleteRemoteTitle: Eliminar remoto + DisplayName: Nombre para mostrar + DuplicateRemote: Duplicar remoto + DuplicateRemoteSuffix: Sufijo de remoto duplicado + E2EEConfiguration: Configuración de E2EE + Export: Exportar + FetchRemoteSettings: Obtener configuración remota + ImportConnection: Importar conexión + ImportConnectionPrompt: Aviso para importar conexión + ImportedCouchDb: CouchDB importado + ImportedRemote: Remoto importado + MoreActions: Más acciones + PeerToPeerPanel: Sincronización punto a punto + RemoteConfigurationPrefix: Prefijo de configuración remota + RemoteDatabases: Bases de datos remotas + RemoteName: Nombre del remoto + RemoteNameCouchDb: Nombre del remoto CouchDB + RemoteNameP2P: Nombre del remoto P2P + RemoteNameS3: Nombre del remoto S3 + Rename: Renombrar + Selector: + AddDefaultPatterns: Añadir patrones predeterminados + CrossPlatform: Multiplataforma + Default: Predeterminado + HiddenFiles: Archivos ocultos + IgnorePatterns: Patrones de ignorados + NonSynchronisingFiles: Archivos no sincronizados + NonSynchronisingFilesDesc: (RegExp) Si se establece, se omitirán los cambios en + archivos locales y remotos que coincidan. + NormalFiles: Archivos normales + OverwritePatterns: Patrones de sobrescritura + OverwritePatternsDesc: Patrones para seleccionar archivos que se sobrescribirán + en lugar de fusionarse + SynchronisingFiles: Archivos sincronizados + SynchronisingFilesDesc: (RegExp) Vacío para sincronizar todos los archivos. + Define un filtro de expresión regular para limitar los archivos + sincronizados. + TargetPatterns: Patrones de destino + TargetPatternsDesc: Patrones para seleccionar archivos que se sincronizarán + Setup: + RerunWizardButton: Botón para volver a ejecutar el asistente + RerunWizardDesc: Vuelve a ejecutar el asistente inicial para configurar + Self-hosted LiveSync de nuevo. + RerunWizardName: Volver a ejecutar el asistente inicial + SyncSettings: + Fetch: Obtener + Merge: Fusionar + Overwrite: Sobrescribir + SetupWizard: + Bucket: + AccessKeyId: ID de clave de acceso + BucketName: Nombre del bucket + EndpointUrl: URL del endpoint + FolderPrefix: Folder Prefix + FolderPrefixDesc: Si quieres almacenar los datos en una carpeta concreta dentro + del bucket, especifica aquí un prefijo de carpeta. Si no, déjalo vacío + para guardar los datos en la raíz del bucket. + InternalApiDesc: Si no puedes evitar problemas de CORS, puedes probar esta + opción. Usa la API interna de Obsidian para comunicarse con el servidor + S3. No cumple los estándares web, pero funciona. Ten en cuenta que puede + romperse en futuras versiones de Obsidian. + PlaceholderAccessKeyId: Introduce tu ID de clave de acceso + PlaceholderBucketName: Introduce el nombre del bucket + PlaceholderFolderPrefix: Introduce un prefijo de carpeta (opcional) + PlaceholderRegion: Introduce la región (por ejemplo, us-east-1, auto para R2) + PlaceholderSecretAccessKey: Introduce tu clave secreta de acceso + Region: Región + SecretAccessKey: Clave secreta de acceso + Title: Configuración de S3/MinIO/R2 + UseInternalApi: Usar API interna + UsePathStyleAccess: Usar acceso de estilo ruta + Common: + AdvancedSettings: Configuración avanzada + Back: Volver + Cancel: Cancelar + CheckingConnection: Comprobando la conexión... espera. + ContinueAnyway: Continuar de todos modos + CustomHeaders: Cabeceras personalizadas + ErrorConnectionTest: "Error durante la prueba de conexión: ${error}" + ErrorConnectServer: No se pudo conectar al servidor. Comprueba la configuración. + ErrorConnectServerDetail: "No se pudo conectar al servidor: ${error}" + ErrorCreateReplicator: No se pudo crear la instancia de replicación. + ExperimentalSettings: Configuraciones experimentales + HttpsOnlyMobile: Solo podemos usar conexiones seguras (HTTPS) en Obsidian Mobile. + ProceedSelectOption: Por favor, seleccione una opción + CouchDB: + DatabaseName: Nombre de la base de datos + DatabaseNameDesc: No puedes usar mayúsculas, espacios ni caracteres especiales + en el nombre de la base de datos. Tampoco puede comenzar con un guion + bajo (_). + InternalApiDesc: Si no puedes evitar problemas de CORS, puedes probar esta + opción. Usa la API interna de Obsidian para comunicarse con el servidor + CouchDB. No cumple los estándares web, pero funciona. Ten en cuenta que + puede romperse en futuras versiones de Obsidian. + JwtAlgorithm: Algoritmo JWT + JwtExpirationDuration: Duración de expiración de JWT (minutos) + JwtKey: Clave JWT + JwtKeyDesc: Para algoritmos HS256/HS512, proporciona la clave secreta + compartida. Para ES256/ES512, proporciona la clave privada en formato + pkcs8 PEM. + JwtKeyId: ID de clave JWT (kid) + JwtSubject: Sujeto JWT (sub) + JwtWarning: La autenticación JWT (JSON Web Token) permite autenticarte de forma + segura con el servidor CouchDB usando tokens. Asegúrate de que tu + servidor CouchDB acepte JWT y de que la clave y los ajustes coincidan + con la configuración del servidor. Esta función no se ha verificado + exhaustivamente. + Password: Contraseña + PlaceholderDatabaseName: Introduce el nombre de la base de datos + PlaceholderJwtKey: Introduce tu secreto JWT o clave privada + PlaceholderJwtKeyId: Introduce el ID de clave JWT + PlaceholderJwtSubject: Introduce el sujeto JWT (usuario de CouchDB) + PlaceholderPassword: Introduce tu contraseña + PlaceholderUsername: Introduce tu nombre de usuario + Title: Configuración de CouchDB + Url: URL del servidor + UseInternalApi: Usar API interna + UseJwtAuthentication: Usar autenticación JWT + Username: Nombre de usuario + CouchDBCheck: + DetectAndFix: Detectar y solucionar problemas de CouchDB + Fix: Corregir + E2EE: + AlgorithmGuidance: En la mayoría de los casos deberías mantener el algoritmo + predeterminado (${algorithm}). Este ajuste solo es necesario si tienes + un Vault existente cifrado con otro formato. + AlgorithmWarning: Cambiar el algoritmo de cifrado impedirá acceder a datos + cifrados previamente con otro algoritmo. Asegúrate de que todos tus + dispositivos usen el mismo algoritmo para mantener el acceso a tus + datos. + EncryptionAlgorithm: Algoritmo de cifrado + Fetch: + BackupDone: He creado una copia de seguridad de mi Bóveda. + BackupQuestion: ¿Ha creado una copia de seguridad antes de continuar? + BackupRecommendation: Le recomendamos que copie su carpeta bóveda en una + ubicación segura. Esto proporcionará una protección en caso de que surja + una gran cantidad de conflictos o si sincroniza accidentalmente con un + destino incorrecto. + BackupSkipped: Entiendo los riesgos y procederé sin respaldo. + BackupUnable: No puedo crear una copia de seguridad de mi Bóveda. + BackupUnableNote: Si comprende los riesgos y aún desea continuar, selecciónelo. + BackupUnableWarning: Se recomienda encarecidamente crear una copia de seguridad + antes de continuar. Continuar sin una copia de seguridad puede provocar + la pérdida de datos. + ConflictNote: Además, si ya hay conflictos en los datos del servidor, se + sincronizarán con este dispositivo tal como están y deberá resolverlos + localmente. + Guidance: Esto reconstruirá la base de datos local en este dispositivo + utilizando los datos más recientes del servidor. Esta acción está + diseñada para resolver inconsistencias de sincronización y restaurar la + funcionalidad correcta. + ImportantBody: Si tiene cambios no sincronizados en su Bóveda en este + dispositivo, es probable que difieran de las versiones del servidor + después del reinicio. Esto puede provocar una gran cantidad de + conflictos de archivos. + ImportantTitle: Aviso importante + PreventFetchConfig: Evitar recuperar la configuración del servidor + Proceed: Restablecer y reanudar la sincronización + Title: Restablecer sincronización en este dispositivo + UnbalancedNote: En este escenario, LiveSync autohospedado recreará metadatos + para cada archivo y generará conflictos deliberadamente. Cuando el + contenido del archivo sea idéntico, estos conflictos se resolverán + automáticamente. + VaultIdentical: Los archivos de esta Bóveda son casi idénticos a los del servidor. + VaultIdenticalDesc: (por ejemplo, inmediatamente después de restaurar en otra + computadora o de haber recuperado una copia de seguridad) + VaultIndependent: Esta Bóveda está vacía o contiene solo archivos nuevos que no + están en el servidor. + VaultIndependentDesc: (por ejemplo, configurar por primera vez en un nuevo + teléfono inteligente, comenzando desde cero) + VaultQuestion: Para minimizar la creación de nuevos conflictos, seleccione la + opción que mejor describa el estado actual de su Bóveda. Luego, la + aplicación verificará sus archivos de la manera más adecuada según su + selección. + VaultUnbalanced: Puede haber diferencias entre los archivos de este bóveda y el servidor. + VaultUnbalancedDesc: (por ejemplo, después de editar muchos archivos sin conexión) + Intro: + ExistingOption: Ya tengo un servidor configurado + ExistingOptionDesc: Conectar a un servidor LiveSync existente + Guidance: ¡Bienvenido! Vamos a configurar LiveSync. ¿Es usted nuevo en LiveSync + o ya tiene un servidor remoto configurado? + NewOption: Soy nuevo en LiveSync + NewOptionDesc: Configurar LiveSync por primera vez + ProceedExisting: Conectar a existente + ProceedNew: Configurar nuevo + Question: ¿Cuál describe su situación? + Title: Asistente de configuración + Log: + E2EEConfigurationCancelled: Configuración E2EE cancelada. + ManualConfigurationCancelled: Configuración manual cancelada. + NoSettingsChanges: No se detectaron cambios en la configuración. Se omite + aplicar la configuración del asistente. + OnboardingCancelled: Configuración inicial cancelada por el usuario. + QrCodeDialogClosed: Diálogo de código QR cerrado. + QrCodeResult: "Resultado del código QR: ${result}" + SettingApplied: Configuración aplicada + SettingsApplied: Configuración del asistente aplicada. + SetupUriDialogCancelled: Diálogo de Setup URI cancelado. + SetupUriDialogClosed: Diálogo de Setup URI cerrado. + UserCancelledApplyingSettings: El usuario canceló la aplicación de la configuración del asistente. + OutroAskUserMode: + CompatibleOption: Usar modo compatible + CompatibleOptionDesc: Use esto si el remoto se configuró con una versión + anterior de LiveSync. Algunas funciones pueden estar limitadas. + ExistingOption: Este dispositivo tiene datos existentes + ExistingOptionDesc: Fusionar archivos locales con los remotos. Use esto si ya + tiene notas en esta bóveda. + Guidance: Elija cómo se usará este dispositivo con LiveSync. Esto afecta el + comportamiento de sincronización inicial. + NewOption: Configurar como dispositivo nuevo + NewOptionDesc: Comenzar con una bóveda nueva. Los archivos remotos se obtendrán + después de la configuración. + ProceedApplySettings: Aplicar ajustes + ProceedNext: Continuar + Question: "Seleccione el modo para este dispositivo:" + Title: ¿Cómo usará este dispositivo? + 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. + Proceed: Reiniciar y obtener datos + Question: Seleccione el botón de abajo para reiniciar y proceder a la + confirmación de obtención de datos. + Title: "Configuración completada: Preparando para obtener datos de + sincronización" + OutroNewUser: + GuidancePrimary: Su configuración de LiveSync se ha completado. Los ajustes se + aplicarán al cerrar este diálogo. + 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. + Important: "Importante:" + Proceed: Aplicar y reiniciar + Question: ¿Listo para aplicar la configuración? + Title: Configuración completada + P2P: + AutoBroadcast: Difundir cambios automáticamente + AutoBroadcastDesc: Si se activa la difusión automática, los cambios se enviarán + automáticamente a los pares conectados sin intervención manual. Esto + pide a los pares que obtengan los cambios de este dispositivo. + AutoStart: Iniciar conexión P2P automáticamente + AutoStartDesc: Si se activa el inicio automático de P2P, la conexión P2P se + iniciará automáticamente al arrancar el complemento. + DevicePeerId: ID de par del dispositivo + Enabled: Activado + ErrorConnectPeers: "No se pudo conectar con otros pares: ${error}" + GenerateRandomId: Generar ID aleatorio + GroupId: ID de grupo + GroupPassphraseDesc: El ID de grupo y la frase de contraseña se usan para + identificar tu grupo de dispositivos. Usa el mismo ID de grupo y la + misma frase en todos los dispositivos que quieras sincronizar. El ID de + grupo no está limitado al formato generado; puedes usar cualquier + cadena. + NoPeersFound: La configuración parece correcta, pero no se encontraron otros pares. + PlaceholderRelayUrl: Introduce la URL del relé + PlaceholderTurnCredential: Introduce la credencial TURN + PlaceholderTurnUsername: Introduce el usuario TURN + PublicTurnWarning: Usar servidores TURN públicos puede tener implicaciones de + privacidad, ya que tus datos se retransmiten a través de servidores de + terceros. Aunque los datos estén cifrados, tu existencia puede ser + visible para ellos. Asegúrate de confiar en el proveedor TURN y en tu + administrador de red antes de usarlos. Si es posible, considera + configurar tu propio servidor TURN para tu FQDN. + RelayUrl: URL del relé + Title: Configuración de P2P + TurnCredential: Credencial TURN + TurnServerDesc: La configuración de servidores TURN solo es necesaria si estás + detrás de una NAT estricta o un firewall que impide conexiones P2P + directas. En la mayoría de los casos puedes dejar estos campos vacíos. + TurnServerUrls: URLs de servidores TURN (separadas por comas) + TurnUsername: Usuario TURN + UseDefaultRelay: Utilice el relé de vrtmrz + Rebuild: + BackupBeforeProceeding: Por supuesto, podemos hacer una copia de seguridad de + los datos antes de continuar. + BackupDone: He creado una copia de seguridad de mi Bóveda. + BackupQuestion: ¿Ha creado una copia de seguridad antes de continuar? + BackupSkipped: Entiendo los riesgos y procederé sin respaldo. + BackupUnable: No puedo crear una copia de seguridad de mis bóvedas. + BackupUnableAdvice: Debe crear un nuevo destino de sincronización y reconstruir + sus datos allí. Después de eso, sincronice una bóveda completamente + nueva en cada dispositivo con el nuevo remoto, uno por uno. + BackupWarning: Esta es una operación extremadamente potente. Le recomendamos + encarecidamente que copie su carpeta de la bóveda en una ubicación + segura. + ConfirmDataLoss: Entiendo que todos los cambios realizados en otros smartphones + o computadoras podrían perderse. + ConfirmIrreversible: Entiendo que esta acción es irreversible una vez realizada. + ConfirmSyncDisabled: Entiendo que los otros dispositivos ya no podrán + sincronizarse y que será necesario restablecer la información de + sincronización. + ConfirmTitle: Confirme lo siguiente + Guidance: Este procedimiento primero eliminará todos los datos de sincronización + existentes del servidor. Después, los datos del servidor se + reconstruirán por completo usando el estado actual de su bóveda en este + dispositivo como única copia maestra autorizada. + PreventFetchConfig: Evitar recuperar la configuración del servidor + Proceed: Entiendo, sobrescribir el servidor + ResetNotifyOtherDevices: al restablecer el remoto, se le informará en los otros dispositivos. + ResolveOnOtherDevices: Hay una forma de resolver esto en otros dispositivos. + Title: "Confirmación final: sobrescribir los datos del servidor con los archivos + de este dispositivo" + WhenToUse: Solo debe realizar esta operación en circunstancias excepcionales, + como cuando los datos del servidor estén completamente dañados, cuando + ya no se necesiten los cambios de todos los demás dispositivos o cuando + el tamaño de la base de datos se haya vuelto inusualmente grande en + comparación con el tamaño de la bóveda. + SelectExisting: + Guidance: Elija cómo conectarse a su servidor LiveSync existente. + ManualOption: Configurar manualmente + ManualOptionDesc: Ingrese los detalles del servidor y las credenciales usted mismo + ProceedManual: Configurar manualmente + ProceedQr: Escanear código QR + ProceedSetupUri: Usar URI de configuración + QrOption: Escanear código QR + QrOptionDesc: Escanear un código QR desde un dispositivo ya configurado + Question: "Seleccione método de conexión:" + SetupUriOption: Usar URI de configuración + SetupUriOptionDesc: Importar configuración desde un URI proporcionado por su servidor + Title: Conectar a servidor existente + SelectNew: + Guidance: Elija cómo desea configurar su nueva conexión LiveSync. + ManualOption: Configurar manualmente + ManualOptionDesc: Ingrese los detalles del servidor y las credenciales usted mismo + ProceedManual: Configurar manualmente + ProceedSetupUri: Usar URI de configuración + Question: "Seleccione método de configuración:" + SetupUriOption: Usar URI de configuración + SetupUriOptionDesc: Importar configuración desde un URI proporcionado por su servidor + Title: Configurar nueva conexión + SetupRemote: + BucketOption: Bucket de LiveSync + BucketOptionDesc: Use el servidor bucket incluido con el servicio complementario + de LiveSync + CouchDbOption: CouchDB + CouchDbOptionDesc: Use su propia instancia de CouchDB para control total del + servidor de sincronización + Guidance: "Elija el tipo de servidor remoto que desea usar:" + P2POption: Peer-to-peer (experimental) + P2POptionDesc: Sincronice directamente entre dispositivos sin un servidor central + ProceedBucket: Configurar Bucket + ProceedCouchDb: Configurar CouchDB + ProceedP2P: Configurar P2P + Title: Configurar servidor remoto + UseSetupURI: + ButtonCancel: Cancelar + ButtonProceed: Probar configuración y continuar + ErrorFailedToParse: No se pudo analizar el Setup-URI. + ErrorPassphraseRequired: La frase de contraseña es obligatoria. + Guidance: Ingrese el Setup-URI generado durante la instalación del servidor o en + otro dispositivo, junto con la frase de contraseña de la bóveda. + InvalidInfo: El Setup-URI no parece válido. Verifique que lo haya copiado correctamente. + Label: Setup-URI + LabelPassphrase: Frase de contraseña + PlaceholderPassphrase: Ingrese su contraseña + Title: Ingresar Setup-URI + ValidMessage: El Setup-URI es válido y está listo para usarse. 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 a custom passphrase: Usar una frase de contraseña personalizada +Use a Setup URI (Recommended): Usar un URI de configuración (recomendado) Use Custom HTTP Handler: Usar manejador HTTP personalizado Use dynamic iteration count: Usar conteo de iteraciones dinámico +Use Only Local Chunks: Usar solo chunks locales +Use Request API to avoid `inevitable` CORS problem: Usar la API Request para evitar el problema CORS `inevitable` Use Segmented-splitter: Usar divisor segmentado Use splitting-limit-capped chunk splitter: Usar divisor de chunks con límite Use the trash bin: Usar papelera Use timeouts instead of heartbeats: Usar timeouts en lugar de latidos username: nombre de usuario Username: Usuario +"V1: Legacy": "V1: Legado" +"V2: Simple (Default)": "V2: Simple (predeterminado)" +"V2.5: Lexical chunks": "V2.5: Chunks lexicos" +"V3: Fine deduplication": "V3: Deduplicacion fina" Verbose Log: Registro detallado Verify all: Verificar todo Verify and repair all files: Verificar y reparar todos los archivos @@ -1043,45 +2421,26 @@ Warning! This will have a serious impact on performance. And the logs will not b We cannot change the device name while this feature is enabled. Please disable this feature to change the device name.: No podemos cambiar el nombre del dispositivo mientras esta función esté habilitada. Deshabilita la función para cambiarlo. +We will now guide you through a few questions to simplify the synchronisation setup.: + Ahora le guiaremos con unas pocas preguntas para simplificar la configuración + de la sincronización。 +We will now proceed with the server configuration.: Ahora continuaremos con la configuración del servidor。 +Welcome to Self-hosted LiveSync: Bienvenido a Self-hosted LiveSync When you save a file in the editor, start a sync automatically: Iniciar sincronización automática al guardar en editor +While enabled, it causes very performance impact but debugging replication testing and other features will be enabled. Please disable this if you have not read the source code. Requires restart of Obsidian.: + Mientras esté activado, afectará mucho al rendimiento, pero habilitará la + depuración, las pruebas de replicación y otras funciones. Desactívalo si no + has leído el código fuente. Requiere reiniciar Obsidian. Write credentials in the file: Escribir credenciales en archivo Write logs into the file: Escribir logs en archivo xxhash32 (Fast but less collision resistance): xxhash32 (rápido, pero con menor resistencia a colisiones) xxhash64 (Fastest): xxhash64 (el más rápido) -"Welcome to Self-hosted LiveSync": "Bienvenido a Self-hosted LiveSync" -"We will now guide you through a few questions to simplify the synchronisation setup.": "Ahora le guiaremos con unas pocas preguntas para simplificar la configuración de la sincronización。" -"First, please select the option that best describes your current situation.": "Primero, seleccione la opción que describa mejor su situación actual。" -"I am setting this up for the first time": "Estoy configurando esto por primera vez" -"(Select this if you are configuring this device as the first synchronisation device.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": "(Seleccione esto si está configurando este dispositivo como el primer dispositivo de sincronización). Esta opción es adecuada si es nuevo en LiveSync y desea configurarlo desde cero。" -"I am adding a device to an existing synchronisation setup": "Estoy agregando un dispositivo a una configuración de sincronización existente" -"(Select this if you are already using synchronisation on another computer or smartphone.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": "(Seleccione esto si ya utiliza la sincronización en otro ordenador o teléfono). Esta opción es adecuada si desea añadir este dispositivo a una configuración de LiveSync existente。" -"Yes, I want to set up a new synchronisation": "Sí, quiero configurar una nueva sincronización" -"Yes, I want to add this device to my existing synchronisation": "Sí, quiero añadir este dispositivo a mi sincronización existente" -"No, please take me back": "No, volver atrás" -"Device Setup Method": "Método de configuración del dispositivo" -"You are adding this device to an existing synchronisation setup.": "Está añadiendo este dispositivo a una configuración de sincronización existente。" -"Please select a method to import the settings from another device.": "Seleccione un método para importar la configuración desde otro dispositivo。" -"Use a Setup URI (Recommended)": "Usar un URI de configuración (recomendado)" -"Paste the Setup URI generated from one of your active devices.": "Pegue el URI de configuración generado desde uno de sus dispositivos activos。" -"Scan a QR Code (Recommended for mobile)": "Escanear un código QR (recomendado para móviles)" -"Scan the QR code displayed on an active device using this device's camera.": "Escanee con la cámara de este dispositivo el código QR mostrado en un dispositivo activo。" -"Enter the server information manually": "Introducir manualmente la información del servidor" -"Configure the same server information as your other devices again, manually, very advanced users only.": "Configure manualmente la misma información del servidor que en sus otros dispositivos. Solo para usuarios muy avanzados。" -"Proceed with Setup URI": "Continuar con el URI de configuración" -"I know my server details, let me enter them": "Conozco los datos de mi servidor; permítame introducirlos" -"Please select an option to proceed": "Seleccione una opción para continuar" -"Connection Method": "Método de conexión" -"We will now proceed with the server configuration.": "Ahora continuaremos con la configuración del servidor。" -"How would you like to configure the connection to your server?": "¿Cómo desea configurar la conexión con su servidor?" -"A Setup URI is a single string of text containing your server address and authentication details. Using a URI, if one was generated by your server installation script, provides a simple and secure configuration.": "Un URI de configuración es una única cadena de texto que contiene la dirección del servidor y los datos de autenticación. Si el script de instalación de su servidor generó un URI, usarlo proporciona una configuración sencilla y segura。" -"This is an advanced option for users who do not have a URI or who wish to configure detailed settings.": "Esta es una opción avanzada para usuarios que no disponen de un URI o que desean configurar parámetros detallados。" -"Enter Server Information": "Introducir información del servidor" -"Please select the type of server to which you are connecting.": "Seleccione el tipo de servidor al que se está conectando。" -"Continue to CouchDB setup": "Continuar con la configuración de CouchDB" -"Continue to S3/MinIO/R2 setup": "Continuar con la configuración de S3/MinIO/R2" -"Continue to Peer-to-Peer only setup": "Continuar con la configuración solo Peer-to-Peer" -"This is the most suitable synchronisation method for the design. All functions are available. You must have set up a CouchDB instance.": "Este es el método de sincronización más adecuado para el diseño. Todas las funciones están disponibles. Debe tener configurada una instancia de CouchDB。" -"S3/MinIO/R2 Object Storage": "Almacenamiento de objetos S3/MinIO/R2" -"Synchronisation utilising journal files. You must have set up an S3/MinIO/R2 compatible object storage.": "Sincronización mediante archivos de registro. Debe haber configurado un almacenamiento de objetos compatible con S3/MinIO/R2。" -"Peer-to-Peer only": "Solo Peer-to-Peer" -"This feature enables direct synchronisation between devices. No server is required, but both devices must be online at the same time for synchronisation to occur, and some features may be limited. Internet connection is only required to signalling (detecting peers) and not for data transfer.": "Esta función permite la sincronización directa entre dispositivos. No requiere servidor, pero ambos dispositivos deben estar en línea al mismo tiempo para que la sincronización se produzca, y algunas funciones pueden ser limitadas. La conexión a Internet solo se necesita para la señalización (detección de pares), no para la transferencia de datos。" +xxhash64 is the current default.: El valor predeterminado actual es xxhash64. +Yes, I want to add this device to my existing synchronisation: Sí, quiero añadir este dispositivo a mi sincronización existente +Yes, I want to set up a new synchronisation: Sí, quiero configurar una nueva sincronización +You are adding this device to an existing synchronisation setup.: + Está añadiendo este dispositivo a una configuración de sincronización + existente。 +You can enable this setting to process the files with size mismatches, these files can be created by some APIs or integrations.: + Puedes activar esta opción para procesar archivos con tamaños no coincidentes; + estos archivos pueden ser creados por algunas API o integraciones. diff --git a/src/common/messagesYAML/ja.yaml b/src/common/messagesYAML/ja.yaml index 6b364977..0fcb7e1a 100644 --- a/src/common/messagesYAML/ja.yaml +++ b/src/common/messagesYAML/ja.yaml @@ -14,14 +14,31 @@ (Obsolete) Use an old adapter for compatibility: (廃止済み)古いアダプターを互換性のために利用 (RegExp) Empty to sync all files. Set filter as a regular expression to limit synchronising files.: (正規表現)空欄で全ファイルを同期します。正規表現を指定すると、同期対象のファイルを絞り込めます。 (RegExp) If this is set, any changes to local and remote files that match this will be skipped.: (正規表現)設定すると、これに一致するローカル/リモートファイルの変更はすべてスキップされます。 +(Select this if you are already using synchronisation on another computer or smartphone.) This option is suitable if you are new to LiveSync and want to set it up from scratch.: (別の PC やスマートフォンですでに同期を利用している場合に選択してください。)この端末を既存の LiveSync 構成に追加する場合に適しています。 +(Select this if you are configuring this device as the first synchronisation device.) This option is suitable if you are new to LiveSync and want to set it up from scratch.: (この端末を最初の同期端末として設定する場合に選択してください。)LiveSync を初めて利用し、最初から設定したい場合に適しています。 +"> [!INFO]- The connected devices have been detected as follows:\n${devices}": |- + > [!INFO]- 次の接続済みデバイスが検出されました: + ${devices} +A Setup URI is a single string of text containing your server address and authentication details. Using a URI, if one was generated by your server installation script, provides a simple and secure configuration.: + Setup URI は、サーバーアドレスと認証情報を含む 1 本の文字列です。サーバーのインストールスクリプトで生成された URI + がある場合は、それを使うと簡単かつ安全に設定できます。 Access Key: アクセスキー Activate: 有効化 +Active Remote Configuration: 有効なリモート設定 +Active Remote Type: 有効なリモートタイプ Add default patterns: デフォルトパターンを追加 Add new connection: 接続を追加 +Advanced: 詳細設定 +All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.: すべてのデバイスで進捗値が同じです(${progress})。デバイスは同期されているようなので、Garbage Collection を続行できます。 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.: データベース使用状況を分析し、自分で診断できるよう TSV レポートを生成します。生成したレポートは任意のスプレッドシートに貼り付けて確認できます。 Apply Latest Change if Conflicting: 競合がある場合は最新の変更を適用する Apply preset configuration: プリセットを適用する Ask a passphrase at every launch: 起動のたびにパスフレーズを確認 +Automatically broadcast changes to connected peers: 接続済みピアへ変更を自動ブロードキャスト +Automatically start P2P connection on launch: 起動時に P2P 接続を自動開始 Automatically Sync all files when opening Obsidian.: Obsidian起動時にすべてのファイルを自動同期します。 Back: 戻る Back to non-configured: 未設定状態に戻す @@ -33,11 +50,18 @@ Before v0.17.16, we used an old adapter for the local database. Now the new adap v0.17.6までは古いアダプターをローカル用のデータベースに使用していましたが、現在は新しいアダプターを推奨しています。しかし、新しいアダプターに変更するにはローカルデータベースの再構築が必要です。有効のままにしておくと、リモートデータベースからフェッチする場合に、この設定を無効にするかの質問が表示されます。 Bucket Name: バケット名 Cancel: キャンセル +Cancel Garbage Collection: Garbage Collection をキャンセル +Check: 確認 Check and convert non-path-obfuscated files: パス難読化されていないファイルを確認して変換 Check for documents that have not been converted to path-obfuscated IDs and convert them if necessary.: まだパス難読化 ID に変換されていないドキュメントを確認し、必要に応じて変換します。 +Chunk Splitter: チャンク分割器 cmdConfigSync: showCustomizationSync: カスタマイズ同期を表示 Comma separated `.gitignore, .dockerignore`: カンマ区切り `.gitignore, .dockerignore` +Compaction in progress on remote database...: リモートデータベースでコンパクションを実行中です... +Compaction on remote database completed successfully.: リモートデータベースでのコンパクションが正常に完了しました。 +Compaction on remote database failed.: リモートデータベースでのコンパクションに失敗しました。 +Compaction on remote database timed out.: リモートデータベースでのコンパクションがタイムアウトしました。 Compare the content of files between on local database and storage. If not matched, you will be asked which one you want to keep.: ローカルデータベースとストレージ上のファイル内容を比較します。一致しない場合は、どちらを残すか選択できます。 Compatibility (Conflict Behaviour): 互換性(競合時の挙動) Compatibility (Database structure): 互換性(データベース構造) @@ -51,10 +75,17 @@ Configure: 設定 Configure And Change Remote: リモートを設定して切り替える Configure E2EE: E2EE を設定 Configure Remote: リモートを設定 +Configure the same server information as your other devices again, manually, very advanced users only.: 他の端末と同じサーバー情報を手動で再入力します。上級者向けの方法です。 +Connection Method: 接続方法 +Continue to CouchDB setup: CouchDB 設定へ進む +Continue to Peer-to-Peer only setup: Peer-to-Peer 専用設定へ進む +Continue to S3/MinIO/R2 setup: S3/MinIO/R2 設定へ進む Copy: コピー +Copy Report to clipboard: レポートをクリップボードにコピー CouchDB Connection Tweak: CouchDB 接続の調整 Cross-platform: クロスプラットフォーム "Current adapter: {adapter}": "現在のアダプター: {adapter}" +Customization sync: カスタマイズ同期 Customization Sync: カスタマイズ同期 Customization Sync (Beta3): カスタマイズ同期 (Beta3) Data Compression: データ圧縮 @@ -73,21 +104,22 @@ Delete Remote Configuration: リモート設定を削除 Delete remote configuration '{name}'?: リモート設定 '{name}' を削除しますか? desktop: デスクトップ Developer: 開発者 +Device: デバイス Device name: デバイス名 +Device Setup Method: 端末の設定方法 dialog: yourLanguageAvailable: _value: >- - Self-hosted LiveSync に設定されている言語の翻訳がありましたので、%{Display Language}が適用されました。 - + Self-hosted LiveSync にはあなたの言語の翻訳があるため、%{Display language} 設定を有効にしました。 - 注意: 全てのメッセージは翻訳されていません。あなたの貢献をお待ちしています! - GithubにIssueを作成する際には、 %{Display Language} を一旦 %{lang-def} - に戻してから、スクショやメッセージ、ログを収集してください。これは設定から変更できます。 + 注意: すべてのメッセージが翻訳されているわけではありません。翻訳へのご協力をお待ちしています! + 注意 2: Issue を作成する場合は、**%{lang-def} + に戻してから**スクリーンショット、メッセージ、ログを取得してください。これは設定ダイアログで変更できます。 - 便利に使用できれば幸いです。 - btnRevertToDefault: Keep %{lang-def} + 使いやすく感じていただければ幸いです! + btnRevertToDefault: "%{lang-def}を維持" Title: 翻訳が利用可能です! Disables all synchronization and restart.: すべての同期を無効にして再起動します。 Disables logging, only shows notifications. Please disable if you report an issue.: ログを無効にし、通知のみを表示します。Issueを報告する場合は無効にしてください。 @@ -149,54 +181,98 @@ Doctor: RULES: E2EE_V02500: REASON: エンドツーエンド暗号化がより堅牢で高速になりました。また、以前のE2EEは再コードレビューにより脆弱性が発見されました。できるだけ早く適用することをお勧めします。ご不便をおかけして申し訳ありません。また、この設定は下位互換性がありません。すべての同期デバイスをv0.25.0以降にアップデートする必要があります。再構築は必須ではなく、新しい転送から新しいフォーマットに変換されますが、可能な限り再構築をお勧めします。 +Document History: ドキュメント履歴 Duplicate: 複製 Duplicate remote: リモート設定を複製 E2EE Configuration: E2EE 設定 Edge case addressing (Behaviour): 特殊なケースへの対応(動作) Edge case addressing (Database): 特殊なケースへの対応(データベース) Edge case addressing (Processing): 特殊なケースへの対応(処理) +Effectively a directory. Should end with `/`. e.g., `vault-name/`.: "実質的にはディレクトリです。`/` で終わる必要があります。例: `vault-name/`。" Emergency restart: 緊急再起動 Enable advanced features: 高度な機能を有効にする +Enable advanced mode: 詳細モードを有効化 Enable customization sync: カスタマイズ同期を有効 Enable Developers' Debug Tools.: 開発者用デバッグツールを有効にする Enable edge case treatment features: エッジケース対応機能を有効にする +Enable forcePathStyle: forcePathStyle を有効化 +Enable P2P Synchronization: P2P 同期を有効化 +Enable per-file customization sync: ファイル単位のカスタマイズ同期を有効化 +Enable power user mode: パワーユーザーモードを有効化 Enable poweruser features: エキスパート機能を有効にする Enable this if your Object Storage doesn't support CORS: オブジェクトストレージがCORSをサポートしていない場合は有効にしてください 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.: リモートデータベースの暗号化(オンにすることを推奨) Encrypting sensitive configuration items: 機密性の高い設定項目の暗号化 +Encryption passphrase. 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.: 暗号化パスフレーズ。変更した場合、新しい(暗号化された)ファイルでサーバーのデータベースを上書きする必要があります。 End-to-End Encryption: E2E暗号化 Endpoint URL: エンドポイントURL Enhance chunk size: チャンクサイズを最適化する +Enter Server Information: サーバー情報の入力 +Enter the server information manually: サーバー情報を手動で入力する Export: エクスポート +Failed to connect to remote for compaction.: リモートデータベースに接続できず、コンパクションを実行できませんでした。 +Failed to connect to remote for compaction. ${reason}: リモートデータベースに接続できず、コンパクションを実行できませんでした。${reason} +Failed to start one-shot replication before Garbage Collection. Garbage Collection Cancelled.: Garbage Collection 前にワンショットレプリケーションを開始できませんでした。Garbage Collection はキャンセルされました。 +Failed to start replication after Garbage Collection.: Garbage Collection 後にレプリケーションを開始できませんでした。 Fetch: 取得 Fetch chunks on demand: ユーザーのタイミングでチャンクの更新を確認する Fetch database with previous behaviour: 以前の動作でデータベースを取得 Fetch remote settings: リモート設定を取得 +File prefix on the bucket: バケット内のファイルプレフィックス File to resolve conflict: 競合を解決するファイル Filename: ファイル名 +Files with modification times greater than this value (in seconds since the Unix epoch) will not have their events reflected. Set to 0 to disable this limit.: この値(Unix エポックからの秒数)より大きい更新時刻のファイルイベントは反映されません。0 に設定するとこの制限を無効にします。 +First, please select the option that best describes your current situation.: まず、現在の状況に最も近い項目を選択してください。 Flag and restart: フラグを立てて再起動 Forces the file to be synced when opened.: ファイルを開いたときに強制的に同期します。 Fresh Start Wipe: 初期化ワイプ +Garbage Collection cancelled by user.: ユーザーによって Garbage Collection がキャンセルされました。 +"Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.": + "Garbage Collection が完了しました。削除したチャンク: ${deletedChunks} / ${totalChunks}。所要時間: + ${seconds} 秒。" +Garbage Collection Confirmation: Garbage Collection の確認 Garbage Collection V3 (Beta): ガーベジコレクション V3 (Beta) +"Garbage Collection: Found ${unusedChunks} unused chunks to delete.": "Garbage Collection: 削除対象の未使用チャンクが ${unusedChunks} 件見つかりました。" +"Garbage Collection: Scanned ${scanned} / ~${docCount}": "Garbage Collection: ${scanned} / ~${docCount} をスキャン済み" +"Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": "Garbage Collection: スキャン完了。総チャンク数: ${totalChunks}、使用中チャンク数: ${usedChunks}" Handle files as Case-Sensitive: ファイルの大文字・小文字を区別する +Hatch: ツール Hidden Files: 隠しファイル -How to display network errors when the sync server is unreachable.: 同期サーバーに到達できない場合のネットワークエラーの表示方法を設定します。 +Hide completely: 完全に非表示 +Highlight diff: 差分を強調表示 +How to display network errors when the sync server is unreachable.: 同期サーバーに到達できないときのネットワークエラーの表示方法。 +How would you like to configure the connection to your server?: サーバー接続をどのように設定しますか? +I am adding a device to an existing synchronisation setup: 既存の同期構成に端末を追加します +I am setting this up for the first time: はじめて設定します +I know my server details, let me enter them: サーバー情報を把握しているので、自分で入力します If disabled(toggled), chunks will be split on the UI thread (Previous behaviour).: 無効(トグル)にすると、チャンクはUIスレッドで分割されます(以前の動作)。 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, changes will be automatically broadcasted to all connected peers. Notified peers will start fetching the changes.: 有効にすると、変更は接続済みのすべてのピアへ自動的にブロードキャストされます。通知されたピアは変更の取得を開始します。 If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker.: 有効にすると、チャンクは最大100項目に分割されます。ただし、重複除去の精度は落ちます。 +If enabled, efficient per-file customization sync will be used. A minor migration is required when enabling this feature, and all devices must be updated to v0.23.18. Enabling this feature will result in losing compatibility with older versions.: + 有効にすると、効率的なファイル単位のカスタマイズ同期を使用します。この機能を有効にする際は小さな移行が必要で、すべてのデバイスを v0.23.18 + に更新する必要があります。有効にすると古いバージョンとの互換性は失われます。 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 forcePathStyle option will be used for bucket operations.: 有効にすると、バケット操作で forcePathStyle オプションを使用します。 If enabled, the notification of hidden files change will be suppressed.: 有効にすると、隠しファイルの変更通知が抑制されます。 +If enabled, the P2P connection will be automatically started when the application launches.: 有効にすると、アプリケーション起動時に P2P 接続を自動的に開始します。 +If enabled, the plugin will not attempt to connect to the remote database even if the chunk was not found locally.: 有効にすると、チャンクがローカルに見つからない場合でも、プラグインはリモートデータベースへの接続を試みません。 +If enabled, the request API will be used to avoid `inevitable` CORS problems. This is a workaround and may not work in all cases. PLEASE READ THE DOCUMENTATION BEFORE USING THIS OPTION. This is a less-secure option.: + 有効にすると、避けられない CORS 問題を回避するために request API + を使用します。これは回避策であり、すべてのケースで動作するとは限りません。このオプションを使用する前に必ずドキュメントを読んでください。安全性は低くなります。 +If this enabled, all chunks will be stored with the revision made from its content.: 有効にすると、すべてのチャンクは内容から生成されたリビジョンとともに保存されます。 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).: 有効にすると、すべてのファイルは大文字小文字を区別して処理されます(以前の動作)。 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.: これを設定すると、除外ファイルに一致するローカルファイルの変更はスキップされます。リモートの変更はローカルの無視ファイルを使用して判定されます。 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.: このオプションを有効にすると、PouchDBは接続を60秒間保持し、その間に通信がない場合、一度接続を閉じて再接続します。接続を無期限に保持する代わりにこの動作を行います。プロキシ(Cloudflareなど)がリクエストの持続時間を制限している場合に有用ですが、リソース使用量が増加する可能性があります。 +Ignore and Proceed: 無視して続行 Ignore files: 除外ファイル Ignore patterns: 除外パターン Import connection: 接続をインポート @@ -205,15 +281,15 @@ Initialise all journal history, On the next sync, every item will be received an Interval (sec): 秒 K: exp: 試験機能 - long_p2p_sync: "%{title_p2p_sync} (%{exp})" - P2P: "%{Peer}-to-%{Peer}" - Peer: Peer - ScanCustomization: Scan customization - short_p2p_sync: P2P Sync (%{exp}) - title_p2p_sync: Peer-to-Peer Sync + long_p2p_sync: "%{title_p2p_sync}" + P2P: "%{Peer}対%{Peer}" + Peer: ピア + ScanCustomization: カスタマイズ同期をスキャン + short_p2p_sync: P2P Sync + title_p2p_sync: P2P同期 Keep empty folder: 空フォルダの維持 -lang_def: Default -lang-de: Deutsche +lang_def: デフォルト +lang-de: Deutsch lang-def: "%{lang_def}" lang-es: Español lang-fr: Français @@ -265,17 +341,22 @@ logPane: pause: 一時停止 title: Self-hosted LiveSync ログ wrap: 折り返し +Maintenance: メンテナンス Maximum delay for batch database updating: バッチデータベース更新の最大遅延 +Maximum file modification time for reflected file events: 反映するファイルイベントの最大更新時刻 Maximum file size: 最大ファイル容量 Maximum Incubating Chunk Size: 保持するチャンクの最大サイズ Maximum Incubating Chunks: 一時保管する最大チャンク数 Maximum Incubation Period: 最大保持期限 +Maximum size of chunks to send in one request: 1 回のリクエストで送信するチャンクの最大サイズ +MB: MB MB (0 to disable).: MB (0で無効化)。 Memory cache: メモリキャッシュ Memory cache size (by total characters): 全体でキャッシュする文字数 Memory cache size (by total items): 全体のキャッシュサイズ Merge: マージ Minimum delay for batch database updating: バッチデータベース更新の最小遅延 +Minimum interval for syncing: 同期間隔の最小値 moduleCheckRemoteSize: logCheckingStorageSizes: ストレージサイズを確認中 logCurrentStorageSize: "リモートストレージサイズ: ${measuredSize}" @@ -465,9 +546,13 @@ moduleObsidianMenu: replicate: レプリケート More actions: その他の操作 Move remotely deleted files to the trash, instead of deleting.: リモートで削除されたファイルを削除せずにゴミ箱に移動する。 -Network warning style: ネットワーク警告の表示方式 +Network warning style: ネットワーク警告の表示形式 New Remote: 新しいリモート +No connected device information found. Cancelling Garbage Collection.: 接続済みデバイスの情報が見つかりませんでした。Garbage Collection をキャンセルします。 No limit configured: 制限は設定されていません +No, please take me back: いいえ、前に戻ります +Node ID: ノード ID +Node Information Missing: ノード情報がありません Non-Synchronising files: 同期しないファイル Normal Files: 通常ファイル Not all messages have been translated. And, please revert to "Default" when reporting errors.: すべてのメッセージが翻訳されているわけではありません。また、Issue報告の際にはいったん"Default"に戻してください @@ -475,8 +560,10 @@ Notify all setting files: すべての設定を通知 Notify customized: カスタマイズが行われたら通知する Notify when other device has newly customized.: 別の端末がカスタマイズを行なったら通知する Notify when the estimated remote storage size exceeds on start up: 起動時に予想リモートストレージサイズを超えたら通知 +Now we can choose how to split the chunks; V3 is the most efficient. If you have troubled, please make this Default or Legacy.: チャンクの分割方法を選択できます。V3 が最も効率的です。問題がある場合は Default または Legacy にしてください。 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.: 1度に処理するバッチの数。デフォルトは40、最小は2。この数値は、どれだけの容量の書類がメモリに保存されるかも定義します。 Number of changes to sync at a time. Defaults to 50. Minimum is 2.: 一度に同期する変更の数。デフォルトは50、最小は2。 +Obsidian version: Obsidian バージョン obsidianLiveSyncSettingTab: btnApply: 適用 btnCheck: 確認 @@ -543,6 +630,7 @@ obsidianLiveSyncSettingTab: logPassphraseNotCompatible: "エラー: パスフレーズがリモートサーバーと適合しません!再度確認してください!" logRebuildNote: 同期が無効になりました。必要に応じてフェッチして再有効化してください。 logSelectAnyPreset: プリセットを選択してください。 + logServerConfigurationCheck: サーバー設定チェックを記録 msgAreYouSureProceed: 本当に続行しますか? msgChangesNeedToBeApplied: 変更を適用する必要があります! msgConfigCheck: --設定確認-- @@ -635,12 +723,12 @@ obsidianLiveSyncSettingTab: okWwwAuth: ✔ httpd.WWW-Authenticateは正常です。 optionApply: 適用 optionCancel: キャンセル - optionCouchDB: CouchDB + optionCouchDB: CouchDB サーバー optionDisableAllAutomatic: すべての自動を無効化 optionFetchFromRemote: リモートからフェッチ optionHere: ここ optionLiveSync: LiveSync 同期 - optionMinioS3R2: Minio,S3,R2 + optionMinioS3R2: MinIO、S3、R2 optionOkReadEverything: OK、すべて読みました。 optionOnEvents: イベント時 optionPeriodicAndEvents: 定期およびイベント時 @@ -729,9 +817,11 @@ Passphrase of sensitive configuration items: 機密性の高い設定項目に password: パスワード Password: パスワード Paste a connection string: 接続文字列を貼り付ける +Paste the Setup URI generated from one of your active devices.: 稼働中の端末で生成した Setup URI を貼り付けてください。 Path Obfuscation: パスの難読化 Patterns to match files for overwriting instead of merging: マージではなく上書きするファイルを判定するパターン Patterns to match files for syncing: 同期対象ファイルを判定するパターン +Peer-to-Peer only: Peer-to-Peer のみ Peer-to-Peer Synchronisation: ピアツーピア同期 Per-file-saved customization sync: ファイルごとのカスタマイズ同期 Perform: 実行 @@ -740,10 +830,26 @@ Perform Garbage Collection: ガーベジコレクションを実行 Perform Garbage Collection to remove unused chunks and reduce database size.: 未使用のチャンクを削除し、データベースサイズを削減するためにガーベジコレクションを実行します。 Periodic Sync interval: 定時同期の感覚 Pick a file to resolve conflict: 競合を解決するファイルを選択 +Pick a file to show history: 履歴を表示するファイルを選択 +Please disable 'Read chunks online' in settings to use Garbage Collection.: Garbage Collection を使うには、設定で「Read chunks online」を無効にしてください。 +Please enable 'Compute revisions for chunks' in settings to use Garbage Collection.: Garbage Collection を使うには、設定で「Compute revisions for chunks」を有効にしてください。 +Please select 'Cancel' explicitly to cancel this operation.: この操作を中止するには、明示的に「キャンセル」を選択してください。 +Please select a method to import the settings from another device.: 別の端末から設定を取り込む方法を選択してください。 +Please select an option to proceed: 続行するには項目を選択してください +Please select the type of server to which you are connecting.: 接続するサーバーの種類を選択してください。 Please set device name to identify this device. This name should be unique among your devices. While not configured, we cannot enable this feature.: このデバイスを識別するためのデバイス名を設定してください。この名前は各デバイスで一意である必要があります。設定されるまで、この機能は有効にできません。 Please set this device name: このデバイス名を設定してください +Plug-in version: プラグインバージョン +Prepare the 'report' to create an issue: Issue 作成用の「レポート」を準備 Presets: プリセット +Proceed Garbage Collection: Garbage Collection を続行 +Proceed with Setup URI: Setup URI で続行 +Proceeding with Garbage Collection, ignoring missing nodes.: 不足しているノードを無視して Garbage Collection を続行します。 +Proceeding with Garbage Collection.: Garbage Collection を実行します。 +Process files even if seems to be corrupted: 破損しているように見えるファイルも処理 Process small files in the foreground: 小さいファイルを最前面で処理 +Progress: 進捗 +Property Encryption: プロパティ暗号化 PureJS fallback (Fast, W/O WebAssembly): PureJS フォールバック (高速、WebAssembly なし) Purge all download/upload cache.: ダウンロード/アップロードキャッシュをすべて削除します。 Purge all journal counter: すべてのジャーナルカウンターを削除 @@ -793,11 +899,31 @@ RedFlag: FetchTraditional: リモートからすべてをフェッチ Title: どのようにフェッチしますか? FetchRemoteConfig: + Applied: Remote configuration applied. Buttons: Cancel: いいえ、ローカル設定を使用 Fetch: はい、リモート設定を取得して適用 + Retry: Retry (recommended) + SkipAndProceed: Skip and proceed + FailedMessage: Could not fetch configuration from remote. If you are new to the + Self-hosted LiveSync, this might be expected. If not, you should check + your network or server settings. + FailedTitle: Fetch Remote Configuration Failed + MatchesLocal: Remote configuration matches local configuration. No changes applied. Message: リモートに保存された設定を取得して、このデバイスに適用しますか? + NotApplied: Remote configuration not applied. + SettingsDiffered: Your settings differed slightly from the server's. The plug-in + has supplemented the incompatible parts with the server settings! Title: リモート設定の取得 + Log: + FetchEverythingCancelled: Fetch everything cancelled by user. + FetchEverythingCompleted: Fetch everything operation completed. Vault files will be gradually synced. + RebuildEverythingCancelled: Rebuild everything cancelled by user. + RebuildEverythingCompleted: Rebuild everything operation completed. + VaultInitialisationError: Error during vault initialisation. + VaultInitialisationProcessError: Error during vault initialisation process. + ResumeProcessingPrompt: Do you want to resume file and database processing, and restart obsidian now? +Reduces storage space by discarding all non-latest revisions. This requires the same amount of free space on the remote server and the local client.: 最新版以外のすべてのリビジョンを破棄して、使用容量を削減します。実行には、リモートサーバーとローカルクライアントの両方に同程度の空き容量が必要です。 Reducing the frequency with which on-disk changes are reflected into the DB: ローカルでの変更がデータベースに反映される頻度を下げる(所定の回数まとめて同期する、逐一反映しない) Region: リージョン Remediation: 是正 @@ -842,6 +968,9 @@ Replicator: 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: ウィザードを再実行 Resend: 再送信 Resend all chunks to the remote.: すべてのチャンクをリモートへ再送信します。 Reset: リセット @@ -849,31 +978,40 @@ Reset all: すべてリセット Reset all journal counter: すべてのジャーナルカウンターをリセット Reset journal received history: ジャーナル受信履歴をリセット Reset journal sent history: ジャーナル送信履歴をリセット +Reset notification threshold and check the remote database usage: 通知しきい値をリセットしてリモートデータベース使用量を確認 Reset received: 受信履歴をリセット Reset sent history: 送信履歴をリセット Reset Synchronisation information: 同期情報をリセット Reset Synchronisation on This Device: このデバイスの同期状態をリセット +Reset the remote storage size threshold and check the remote storage size again.: リモートストレージ容量のしきい値をリセットし、リモートストレージ容量を再確認します。 Resolve All: すべて解決 -Resolve all conflicted files: 競合しているすべてのファイルを解決 +Resolve all conflicted files: すべての競合ファイルを解決 Resolve All conflicted files by the newer one: 競合したすべてのファイルを新しい方で解決 "Resolve all conflicted files by the newer one. Caution: This will overwrite the older one, and cannot resurrect the overwritten one.": 競合しているすべてのファイルを新しい方の内容で解決します。注意:古い方は上書きされ、復元できません。 Restart Now: 今すぐ再起動 Restore or reconstruct local database from remote.: リモートからローカルデータベースを復元または再構築します。 +Run Doctor: 診断を実行 +S3/MinIO/R2 Object Storage: S3/MinIO/R2 オブジェクトストレージ 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 a QR Code (Recommended for mobile): QR コードをスキャンする(モバイル推奨) Scan changes on customization sync: カスタマイズされた同期時に、変更をスキャンする Scan customization automatically: 自動的にカスタマイズをスキャン Scan customization before replicating.: レプリケーション(複製)前に、カスタマイズをスキャン Scan customization every 1 minute.: カスタマイズのスキャンを1分ごとに行う Scan customization periodically: 定期的にカスタマイズをスキャン +Scan for Broken files: 破損ファイルをスキャン Scan for hidden files before replication: レプリケーション(複製)開始前に、隠しファイルのスキャンを行う Scan hidden files periodically: 定期的に隠しファイルのスキャンを行う +Scan the QR code displayed on an active device using this device's camera.: 稼働中の端末に表示された QR コードを、この端末のカメラで読み取ってください。 Schedule and Restart: 予約して再起動 +Scram Switches: 緊急対応スイッチ Scram!: 緊急停止 Seconds, 0 to disable: 秒数、0で無効 Seconds. Saving to the local database will be delayed until this value after we stop typing or saving.: 秒。入力や保存を停止してからこの値の間、ローカルデータベースへの保存が遅延されます。 Secret Key: シークレットキー Select the database adapter to use.: 使用するデータベースアダプターを選択します。 +Selector: セレクター Send: 送信 Send chunks: チャンクを送信 Server URI: URI @@ -924,6 +1062,7 @@ Setting: SettingTab: Message: AskRebuild: 変更にはリモートデータベースからのフェッチが必要です。続行しますか? +Setup URI dialog cancelled.: Setup URI ダイアログはキャンセルされました。 Setup: Apply: Buttons: @@ -947,6 +1086,12 @@ Setup: 適用のみを行います。再構築が必要な場合、競合が発生する可能性があります。 Title: ${method}からの新しい設定を適用 WarningRebuildRecommended: "注意: 設定の調整後、再構築が必要と判断されました。インポートのみは推奨されません。" + Command: + CopySetupUri: Copy settings as a new setup URI + CopySetupUriFull: Copy settings as a new setup URI (Full) + CopySetupUriWithSync: Copy settings as a new setup URI (With customization sync) + OpenSetupUri: Use the copied setup URI (Formerly Open setup URI) + ShowSettingsQrCode: Show settings as a QR code Doctor: Buttons: No: いいえ、URIの設定をそのまま使用 @@ -958,6 +1103,8 @@ Setup: インポートされた設定が最新の状態と比較して最適かどうかを確認するために、診断ツールを実行しますか? Title: 診断ツールに相談しますか? + EncryptSettingsPassphrase: The passphrase to encrypt the setup URI + EncryptSettingsTitle: Encrypt your settings FetchRemoteConf: Buttons: Fetch: はい、設定を取得 @@ -969,113 +1116,78 @@ Setup: 注意: リモートデータベースがSSL証明書でホストされており、ネットワークが侵害されていなければ、ほとんどの場合安全に実行できます。 Title: リモートデータベースから設定を取得しますか? + Log: + ProtocolHandlerRegistrationFailed: Failed to register protocol handler. This + feature may not work in some environments. + SetupUriCopiedToClipboard: Setup URI copied to clipboard QRCode: |- 設定を転送するためのQRコードを生成しました。スマートフォンや他のデバイスでQRコードをスキャンしてください。 注意: QRコードは暗号化されていないため、開く際は注意してください。 >[!FOR YOUR EYES ONLY]- >
${qr_image}
- ShowQRCode: - _value: QRコードを表示 - Desc: 設定を転送するためのQRコードを表示します。 + QRCodeTitle: Settings QR Code RemoteE2EE: - Title: エンドツーエンド暗号化 + AdvancedTitle: 詳細設定 + AlgorithmWarning: 暗号化アルゴリズムを変更すると、別のアルゴリズムで暗号化された既存データにはアクセスできなくなります。すべての端末で同じアルゴリズムを使うよう設定し、データにアクセスできる状態を維持してください。 + ButtonCancel: キャンセル + ButtonProceed: 進む + DefaultAlgorithmDesc: ほとんどの場合は、既定のアルゴリズム(${algorithm})をそのまま使用してください。この設定が必要になるのは、既存の + Vault が別の形式で暗号化されている場合のみです。 Guidance: エンドツーエンド暗号化の設定を行ってください。 LabelEncrypt: エンドツーエンド暗号化 - PlaceholderPassphrase: パスフレーズを入力してください - StronglyRecommendedTitle: 強く推奨 - StronglyRecommendedLine1: エンドツーエンド暗号化を有効にすると、データはリモートサーバーへ送信される前にこの端末上で暗号化されます。つまり、たとえ誰かがサーバーへアクセスできても、パスフレーズがなければデータを読むことはできません。他の端末でデータを復号する際にも必要になるため、パスフレーズは必ず覚えておいてください。 - StronglyRecommendedLine2: また、Peer-to-Peer 同期を使用している場合でも、将来ほかの方式へ切り替えてリモートサーバーへ接続するときには、この設定が使われます。 - MultiDestinationWarning: 複数の同期先へ接続する場合でも、この設定は同一である必要があります。 + LabelEncryptionAlgorithm: 暗号化アルゴリズム LabelObfuscateProperties: プロパティを難読化 + MultiDestinationWarning: 複数の同期先へ接続する場合でも、この設定は同一である必要があります。 ObfuscatePropertiesDesc: プロパティ(ファイルパス、サイズ、作成日時、更新日時など)を難読化すると、リモートサーバー上のファイルやフォルダーの構造や名前を特定しにくくできるため、追加の保護層になります。これによりプライバシーが守られ、権限のない第三者がデータに関する情報を推測しにくくなります。 - AdvancedTitle: 詳細設定 - LabelEncryptionAlgorithm: 暗号化アルゴリズム - DefaultAlgorithmDesc: ほとんどの場合は、既定のアルゴリズム(${algorithm})をそのまま使用してください。この設定が必要になるのは、既存の Vault が別の形式で暗号化されている場合のみです。 - AlgorithmWarning: 暗号化アルゴリズムを変更すると、別のアルゴリズムで暗号化された既存データにはアクセスできなくなります。すべての端末で同じアルゴリズムを使うよう設定し、データにアクセスできる状態を維持してください。 PassphraseValidationLine1: エンドツーエンド暗号化のパスフレーズは、実際に同期処理が開始されるまで検証されない点にご注意ください。これはデータを保護するためのセキュリティ対策です。 PassphraseValidationLine2: そのため、サーバー情報を手動で設定する際は細心の注意を払ってください。誤ったパスフレーズを入力すると、サーバー上のデータが破損します。これは意図された動作ですので、あらかじめご理解ください。 - ButtonProceed: 進む - ButtonCancel: キャンセル - UseSetupURI: - Title: Setup URI を入力 - GuidanceLine1: サーバーのセットアップ時または別の端末で生成された Setup URI と、Vault のパスフレーズを入力してください。 - GuidanceLine2: コマンドパレットで「設定を新しい Setup URI としてコピー」を実行すると、新しい Setup URI を生成できます。 - LabelSetupURI: Setup URI - ValidInfo: Setup URI は有効で、使用できます。 - InvalidInfo: Setup URI が無効です。内容を確認して再試行してください。 - LabelPassphrase: Vault のパスフレーズ - PlaceholderPassphrase: Vault のパスフレーズを入力してください - ErrorPassphraseRequired: Vault のパスフレーズを入力してください。 - ErrorFailedToParse: Setup URI を解析できませんでした。URI とパスフレーズを確認してください。 - ButtonProceed: 設定をテストして続行 - ButtonCancel: キャンセル + PlaceholderPassphrase: パスフレーズを入力してください + StronglyRecommendedLine1: エンドツーエンド暗号化を有効にすると、データはリモートサーバーへ送信される前にこの端末上で暗号化されます。つまり、たとえ誰かがサーバーへアクセスできても、パスフレーズがなければデータを読むことはできません。他の端末でデータを復号する際にも必要になるため、パスフレーズは必ず覚えておいてください。 + StronglyRecommendedLine2: また、Peer-to-Peer 同期を使用している場合でも、将来ほかの方式へ切り替えてリモートサーバーへ接続するときには、この設定が使われます。 + StronglyRecommendedTitle: 強く推奨 + Title: エンドツーエンド暗号化 ScanQRCode: - Title: QRコードをスキャン + ButtonClose: このダイアログを閉じる Guidance: 既存の端末から設定を取り込むには、以下の手順に従ってください。 Step1: この端末では、この Vault を開いたままにしてください。 Step2: 元の端末で Obsidian を開きます。 Step3: 元の端末でコマンドパレットから「設定を QR コードとして表示」を実行します。 Step4: この端末でカメラアプリに切り替えるか QR コードスキャナーを使って、表示された QR コードを読み取ってください。 - ButtonClose: このダイアログを閉じる -"Please enable 'Compute revisions for chunks' in settings to use Garbage Collection.": Garbage Collection を使うには、設定で「Compute revisions for chunks」を有効にしてください。 -"Please disable 'Read chunks online' in settings to use Garbage Collection.": Garbage Collection を使うには、設定で「Read chunks online」を無効にしてください。 -"Setup URI dialog cancelled.": Setup URI ダイアログはキャンセルされました。 -"Please select 'Cancel' explicitly to cancel this operation.": この操作を中止するには、明示的に「キャンセル」を選択してください。 -"Failed to connect to remote for compaction.": リモートデータベースに接続できず、コンパクションを実行できませんでした。 -"Failed to connect to remote for compaction. ${reason}": リモートデータベースに接続できず、コンパクションを実行できませんでした。${reason} -"Compaction in progress on remote database...": リモートデータベースでコンパクションを実行中です... -"Compaction on remote database timed out.": リモートデータベースでのコンパクションがタイムアウトしました。 -"Compaction on remote database completed successfully.": リモートデータベースでのコンパクションが正常に完了しました。 -"Compaction on remote database failed.": リモートデータベースでのコンパクションに失敗しました。 -"Failed to start one-shot replication before Garbage Collection. Garbage Collection Cancelled.": Garbage Collection 前にワンショットレプリケーションを開始できませんでした。Garbage Collection はキャンセルされました。 -"Cancel Garbage Collection": Garbage Collection をキャンセル -"No connected device information found. Cancelling Garbage Collection.": 接続済みデバイスの情報が見つかりませんでした。Garbage Collection をキャンセルします。 -"The following accepted nodes are missing its node information:\n- ${missingNodes}\n\nThis indicates that they have not been connected for some time or have been left on an older version.\nIt is preferable to update all devices if possible. If you have any devices that are no longer in use, you can clear all accepted nodes by locking the remote once.": |- - 次の承認済みノードにはノード情報がありません: - - ${missingNodes} - - これは、それらがしばらく接続されていないか、古いバージョンのままになっていることを示しています。 - 可能であれば、まずすべてのデバイスを更新することをおすすめします。すでに使用していないデバイスがある場合は、リモートを一度ロックすることで承認済みノードをすべてクリアできます。 -"Ignore and Proceed": 無視して続行 -"Node Information Missing": ノード情報がありません -"Garbage Collection cancelled by user.": ユーザーによって Garbage Collection がキャンセルされました。 -"Proceeding with Garbage Collection, ignoring missing nodes.": 不足しているノードを無視して Garbage Collection を続行します。 -"Proceed Garbage Collection": Garbage Collection を続行 -"> [!INFO]- The connected devices have been detected as follows:\n${devices}": |- - > [!INFO]- 次の接続済みデバイスが検出されました: - ${devices} -"Device": デバイス -"Node ID": ノード ID -"Obsidian version": Obsidian バージョン -"Plug-in version": プラグインバージョン -"Progress": 進捗 -"Some devices have differing progress values (max: ${maxProgress}, min: ${minProgress}).\nThis may indicate that some devices have not completed synchronisation, which could lead to conflicts. Strongly recommend confirming that all devices are synchronised before proceeding.": |- - 一部のデバイスで進捗値が異なっています(最大: ${maxProgress}、最小: ${minProgress})。 - これは一部のデバイスで同期が完了していない可能性を示しており、競合の原因になることがあります。続行する前に、すべてのデバイスが同期済みであることを確認することを強くおすすめします。 -"All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.": すべてのデバイスで進捗値が同じです(${progress})。デバイスは同期されているようなので、Garbage Collection を続行できます。 -"Garbage Collection Confirmation": Garbage Collection の確認 -"Proceeding with Garbage Collection.": Garbage Collection を実行します。 -"Garbage Collection: Scanned ${scanned} / ~${docCount}": |- - Garbage Collection: ${scanned} / ~${docCount} をスキャン済み -"Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": |- - Garbage Collection: スキャン完了。総チャンク数: ${totalChunks}、使用中チャンク数: ${usedChunks} -"Garbage Collection: Found ${unusedChunks} unused chunks to delete.": |- - Garbage Collection: 削除対象の未使用チャンクが ${unusedChunks} 件見つかりました。 -"Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.": |- - Garbage Collection が完了しました。削除したチャンク: ${deletedChunks} / ${totalChunks}。所要時間: ${seconds} 秒。 -"Failed to start replication after Garbage Collection.": Garbage Collection 後にレプリケーションを開始できませんでした。 + Title: QRコードをスキャン + SetupUri: Setup URI + ShowQRCode: + _value: QRコードを表示 + Desc: 設定を転送するためのQRコードを表示します。 + UseSetupURI: + ButtonCancel: キャンセル + ButtonProceed: 設定をテストして続行 + ErrorFailedToParse: Setup URI を解析できませんでした。URI とパスフレーズを確認してください。 + ErrorPassphraseRequired: Vault のパスフレーズを入力してください。 + GuidanceLine1: サーバーのセットアップ時または別の端末で生成された Setup URI と、Vault のパスフレーズを入力してください。 + GuidanceLine2: コマンドパレットで「設定を新しい Setup URI としてコピー」を実行すると、新しい Setup URI を生成できます。 + InvalidInfo: Setup URI が無効です。内容を確認して再試行してください。 + LabelPassphrase: Vault のパスフレーズ + LabelSetupURI: Setup URI + PlaceholderPassphrase: Vault のパスフレーズを入力してください + Title: Setup URI を入力 + ValidInfo: Setup URI は有効で、使用できます。 Should we keep folders that don't have any files inside?: 中にファイルがないフォルダーを保持しますか? Should we only check for conflicts when a file is opened?: ファイルを開いたときのみ競合をチェックしますか? 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?: 自動的に安全にマージできる場合でも、すべてのマージについて確認を求めますか? -Show full banner: 完全なバナーを表示 +Show full banner: バナーを完全表示 +Show history: 履歴を表示 +Show icon only: アイコンのみ表示 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.: エラー以外の詳細ログ項目も表示する。問題が発生した場合は有効にしてください。 +"Some devices have differing progress values (max: ${maxProgress}, min: ${minProgress}).\nThis may indicate that some devices have not completed synchronisation, which could lead to conflicts. Strongly recommend confirming that all devices are synchronised before proceeding.": |- + 一部のデバイスで進捗値が異なっています(最大: ${maxProgress}、最小: ${minProgress})。 + これは一部のデバイスで同期が完了していない可能性を示しており、競合の原因になることがあります。続行する前に、すべてのデバイスが同期済みであることを確認することを強くおすすめします。 Starts synchronisation when a file is saved.: ファイルが保存されたときに同期を開始します。 Stop reflecting database changes to storage files.: データベースの変更をストレージファイルに反映させない Stop watching for file changes.: 監視の停止 @@ -1091,15 +1203,27 @@ Sync on Editor Save: エディタでの保存時に、同期されます Sync on File Open: ファイルを開いた時に同期 Sync on Save: 保存時に同期 Sync on Startup: 起動時同期 +Synchronisation utilising journal files. You must have set up an S3/MinIO/R2 compatible object storage.: ジャーナルファイルを利用する同期方式です。S3/MinIO/R2 互換のオブジェクトストレージを事前に構成しておく必要があります。 Synchronising files: 同期するファイル Syncing: 同期 Target patterns: 対象パターン Testing only - Resolve file conflicts by syncing newer copies of the file, this can overwrite modified files. Be Warned.: テスト用 - ファイルの新しいコピーを同期してファイル競合を解決します。これにより変更されたファイルが上書きされる可能性があります。注意してください。 The delay for consecutive on-demand fetches: 連続したオンデマンドフェッチの遅延 +"The following accepted nodes are missing its node information:\n- ${missingNodes}\n\nThis indicates that they have not been connected for some time or have been left on an older version.\nIt is preferable to update all devices if possible. If you have any devices that are no longer in use, you can clear all accepted nodes by locking the remote once.": |- + 次の承認済みノードにはノード情報がありません: + - ${missingNodes} + + これは、それらがしばらく接続されていないか、古いバージョンのままになっていることを示しています。 + 可能であれば、まずすべてのデバイスを更新することをおすすめします。すでに使用していないデバイスがある場合は、リモートを一度ロックすることで承認済みノードをすべてクリアできます。 The Hash algorithm for chunk IDs: チャンクIDのハッシュアルゴリズム 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 feature enables direct synchronisation between devices. No server is required, but both devices must be online at the same time for synchronisation to occur, and some features may be limited. Internet connection is only required to signalling (detecting peers) and not for data transfer.: + この機能では端末同士を直接同期できます。サーバーは不要ですが、同期を行うには両端末が同時にオンラインである必要があり、一部機能は制限されます。インターネット接続はシグナリング(ピア検出)にのみ必要で、データ転送自体には使われません。 +This is an advanced option for users who do not have a URI or who wish to configure detailed settings.: URI を持っていない場合や、詳細設定を手動で行いたいユーザー向けの上級者オプションです。 +This is the most suitable synchronisation method for the design. All functions are available. You must have set up a CouchDB instance.: この設計に最も適した同期方式です。すべての機能が利用できます。CouchDB インスタンスを事前に構成しておく必要があります。 This passphrase will not be copied to another device. It will be set to `Default` until you configure it again.: このパスフレーズは他のデバイスにコピーされません。再度設定するまで`Default`に設定されます。 This will recreate chunks for all files. If there were missing chunks, this may fix the errors.: すべてのファイルについてチャンクを再作成します。欠損しているチャンクがあった場合、エラーが解消される可能性があります。 Transfer Tweak: 転送の調整 @@ -1170,77 +1294,513 @@ TweakMismatchResolve: _value: 設定の不一致が検出されました TweakResolving: 設定の不一致が検出されました UseRemoteConfig: リモート設定を使用 +Ui: + Bucket: + Guidance: S3/MinIO/R2互換のオブジェクトストレージサービスに接続するために必要な情報を入力してください。 + Common: + Signal: + Caution: 注意 + Danger: 危険 + Notice: 通知 + Warning: 警告 + ConflictResolver: + FileToResolve: 解決するファイル + CouchDB: + Guidance: 以下にCouchDBサーバーの情報を入力してください。 + History: + FileToView: 表示するファイル + P2P: + Guidance: 以下にP2P同期の情報を入力してください。 + RemoteE2EE: + AdvancedTitle: 詳細設定 + AlgorithmWarning: 暗号化アルゴリズムを変更すると、別のアルゴリズムで暗号化された既存データにはアクセスできなくなります。 + ButtonCancel: キャンセル + ButtonProceed: 続行 + DefaultAlgorithmDesc: ほとんどの場合、デフォルトのアルゴリズムのままにすることをおすすめします。 + Guidance: E2EEの設定を行ってください。 + LabelEncrypt: E2EE + LabelEncryptionAlgorithm: 暗号化アルゴリズム + LabelObfuscateProperties: プロパティを難読化 + ManualWarning: E2EEのパスフレーズは、実際に同期処理が開始されるまで検証されません。これはデータを保護するためのセキュリティ対策です。 + MultiDestinationWarning: 複数の同期先に接続する場合でも、この設定は同じである必要があります。 + ObfuscatePropertiesDesc: プロパティを難読化すると、リモートサーバー上のファイルやフォルダの構造や名前を特定しにくくなり、セキュリティがさらに向上します。 + PassphraseValidationLine1: E2EEのパスフレーズは、実際に同期処理が開始されるまで検証されません。 + PassphraseValidationLine2: そのため、サーバー情報を手動で設定する場合は、特に慎重に行ってください。 + PlaceholderPassphrase: パスフレーズを入力 + StronglyRecommended: E2EEを有効にすると、データはリモートサーバーへ送信される前にこのデバイス上で暗号化されます。そのため、誰かがサーバーへアクセスできたとしても、パスフレーズがなければデータを読むことはできません。 + StronglyRecommendedLine1: E2EEを有効にすると、データはリモートサーバーへ送信される前にこのデバイス上で暗号化されます。 + StronglyRecommendedLine2: また、P2P同期を使用している場合でも、この設定は今後ほかの方式に切り替えてリモートサーバーへ接続するときに使用されます。 + StronglyRecommendedTitle: 強く推奨 + Title: E2EE + WarningSameSetting: 複数の同期先に接続する場合でも、この設定は同じである必要があります。 + ScanQRCode: + ButtonClose: このダイアログを閉じる + Guidance: 既存のデバイスから設定を取り込むには、以下の手順に従ってください。 + Instruction: 既存のデバイスから設定を取り込むには、以下の手順に従ってください。 + Step1: このデバイスでは、このVaultを開いたままにしてください。 + Step2: 元のデバイスでObsidianを開きます。 + Step3: 元のデバイスでコマンドパレットを開き、「Show settings as a QR code」コマンドを実行します。 + Step4: このデバイスでカメラアプリに切り替えるか、QRコードスキャナーを使って表示されたQRコードを読み取ってください。 + Title: QRコードを読み取る + Settings: + Advanced: + LocalDatabaseTweak: ローカルデータベースの調整 + MemoryCache: メモリーキャッシュ + TransferTweak: 転送の調整 + Common: + Analyse: 解析 + Back: 戻る + Check: 確認 + Configure: 設定 + Delete: 削除 + Lock: ロック + Open: 開く + Perform: 実行 + ResetAll: すべてリセット + ResolveAll: すべて解決 + Send: 送信 + VerifyAll: すべて検証 + CustomizationSync: + OpenDesc: ダイアログを開きます + Panel: カスタマイズ同期 + WarnChangeDeviceName: デバイス名を変更すると、カスタマイズ同期に影響する可能性があります。 + WarnSetDeviceName: まずデバイス名を設定してください。 + Hatch: + AnalyseDatabaseUsage: データベース使用量を分析 + AnalyseDatabaseUsageDesc: データベース使用量を分析し、自己診断用の TSV レポートを生成します。生成されたレポートは任意のスプレッドシートに貼り付けられます。 + BackToNonConfigured: 未設定状態に戻す + ConvertNonObfuscated: パス難読化されていないファイルを確認して変換 + ConvertNonObfuscatedDesc: ローカルデータベース内でパス難読化なしに保存されたファイルを確認し、必要に応じて変換します。 + CopyIssueReport: レポートをクリップボードにコピー + DatabaseLabel: "データベース: ${details}" + DatabaseToStorage: データベース → ストレージ + DeleteCustomizationSyncData: すべてのカスタマイズ同期データを削除 + GeneratedReport: 生成されたレポート + Missing: 見つかりません + ModifiedSize: 変更後サイズ + ModifiedSizeActual: 実際の変更後サイズ + PrepareIssueReport: Issue 作成用のレポートを準備 + RecoveryAndRepair: 復旧と修復 + RecreateAll: すべて再作成 + RecreateMissingChunks: すべてのファイルの不足チャンクを再作成 + RecreateMissingChunksDesc: すべてのファイルのチャンクを再作成します。不足チャンクがある場合、エラーを修正できる可能性があります。 + ResetPanel: リセット + ResetRemoteUsage: 通知しきい値をリセットしてリモートデータベース使用量を確認 + ResetRemoteUsageDesc: リモートストレージサイズのしきい値をリセットし、リモートストレージサイズを再確認します。 + ResolveAllConflictedFiles: すべての競合ファイルを新しい方で解決 + ResolveAllConflictedFilesDesc: "すべての競合ファイルを新しい方で解決します。注意: 古い方は上書きされ、上書きされた内容は復元できません。" + RunDoctor: Doctor を実行 + ScanBrokenFiles: 壊れたファイルをスキャン + ScramSwitches: 緊急停止スイッチ + ShowHistory: 履歴を表示 + StorageLabel: "ストレージ: ${details}" + StorageToDatabase: ストレージ → データベース + VerifyAndRepairAllFiles: すべてのファイルを検証して修復 + VerifyAndRepairAllFilesDesc: ローカルデータベースとストレージのファイル内容を比較します。一致しない場合、どちらを保持するか尋ねられます。 + Maintenance: + Cleanup: クリーンアップを実行 + CleanupDesc: 最新ではないすべてのリビジョンを破棄して使用容量を減らします。リモートサーバーとローカルクライアントの両方に同量の空き容量が必要です。 + DeleteLocalDatabase: Self-hosted LiveSync のリセットまたはアンインストールのためにローカルデータベースを削除 + EmergencyRestart: 緊急再起動 + EmergencyRestartDesc: すべての同期を無効にして再起動します。 + FreshStartWipe: 新規開始のワイプ + FreshStartWipeDesc: リモートサーバー上のすべてのデータを削除します。 + GarbageCollection: ガベージコレクション V3 (Beta) + GarbageCollectionAction: ガベージコレクションを実行 + GarbageCollectionDesc: ガベージコレクションを実行して未使用チャンクを削除し、データベースサイズを削減します。 + LockServer: サーバーをロック + LockServerDesc: 他のデバイスとの同期を防ぐため、リモートサーバーをロックします。 + OverwriteRemote: リモートを上書き + OverwriteRemoteDesc: ローカル DB とパスフレーズでリモートを上書きします。 + OverwriteServerData: このデバイスのファイルでサーバーデータを上書き + OverwriteServerDataDesc: このデバイスのファイルを使ってローカルおよびリモートデータベースを再構築します。 + PurgeAllJournalCounter: すべてのジャーナルカウンターを消去 + PurgeAllJournalCounterDesc: すべてのダウンロードおよびアップロードキャッシュを消去します。 + RebuildingOperations: 再構築操作 (リモートのみ) + Resend: 再送信 + ResendDesc: すべてのチャンクをリモートへ再送信します。 + Reset: リセット + ResetAllJournalCounter: すべてのジャーナルカウンターをリセット + ResetAllJournalCounterDesc: すべてのジャーナル履歴を初期化します。次回同期時に、すべての項目が再度受信および送信されます。 + ResetJournalReceived: ジャーナル受信履歴をリセット + ResetJournalReceivedDesc: ジャーナル受信履歴を初期化します。次回同期時に、このデバイスが送信したもの以外のすべての項目が再ダウンロードされます。 + ResetJournalSent: ジャーナル送信履歴をリセット + ResetJournalSentDesc: ジャーナル送信履歴を初期化します。次回同期時に、このデバイスが受信したもの以外のすべての項目が再送信されます。 + ResetLocalSyncInfo: 同期情報をリセット + ResetLocalSyncInfoDesc: リモートからローカルデータベースを復元または再構築します。 + ResetReceived: 受信履歴をリセット + ResetSentHistory: 送信履歴をリセット + ResetThisDevice: このデバイスの同期をリセット + ScheduleAndRestart: 予約して再起動 + Scram: 緊急停止 + SendChunks: チャンクを送信 + Syncing: 同期 + WarningLockedReadyAction: ロックを解除 + WarningLockedReadyText: リモートデータベースはロックされています。操作が完了している場合はロックを解除してください。 + WarningLockedResolveAction: このデバイスを承認 + WarningLockedResolveText: リモートデータベースはロックされており、このデバイスはまだ承認されていません。 + WriteRedFlagAndRestart: フラグを書き込んで再起動 + Patches: + CompatibilityConflict: 互換性(競合時の動作) + CompatibilityDatabase: 互換性(データベース構造) + CompatibilityInternalApi: 互換性(内部 API の使用) + CompatibilityMetadata: 互換性(メタデータ) + CompatibilityRemote: 互換性(リモートデータベース) + CompatibilityTrouble: 互換性(対処済みの問題) + CurrentAdapter: "現在のアダプター: ${adapter}" + DatabaseAdapter: データベースアダプター + DatabaseAdapterDesc: 使用するデータベースアダプターを選択します。 + EdgeCaseBehaviour: エッジケース対応(動作) + EdgeCaseDatabase: エッジケース対応(データベース) + EdgeCaseProcessing: エッジケース対応(処理) + IndexedDbWarning: IndexedDB の使用には互換性や移行に関する注意点があります。 + MigratingToIdb: IDB へ移行中 + MigratingToIndexedDb: IndexedDB へ移行中 + MigrationIdbCompleted: IDB への移行が完了しました + MigrationIdbCompletedFollowUp: IDB への移行が完了しました。反映するには再起動してください。 + MigrationIndexedDbCompleted: IndexedDB への移行が完了しました + MigrationIndexedDbCompletedFollowUp: IndexedDB への移行が完了しました。反映するには再起動してください。 + MigrationWarning: データベースの移行には時間がかかる場合があります。実行前にバックアップをおすすめします。 + OperationToIdb: IDB へ移行 + OperationToIndexedDb: IndexedDB へ移行 + Remediation: 修復 + RemediationChanged: 反映内容が変更されました + RemediationNoLimit: 制限なし + RemediationRestarting: 変更を反映するため再起動しています + RemediationRestartLater: 後で再起動 + RemediationRestartMessage: 変更を反映するには再起動が必要です。今すぐ再起動しますか? + RemediationRestartNow: 今すぐ再起動 + RemediationSuffixChanged: データベース接尾辞が変更されました + RemediationWithValue: "値: ${date} (${timestamp})" + RemoteDatabaseSunset: リモートデータベース調整(廃止予定) + SwitchToIDB: IDB に切り替え + SwitchToIndexedDb: IndexedDB に切り替え + PowerUsers: + ConfigurationEncryption: 設定の暗号化 + ConnectionTweak: CouchDB 接続の調整 + ConnectionTweakDesc: これらの設定では接続動作を細かく調整できます。影響を理解している場合にのみ変更してください。 + Default: デフォルト + Developer: 開発者 + EncryptSensitiveConfig: 機密性の高い設定項目を暗号化 + PromptPassphraseEveryLaunch: 起動のたびにパスフレーズを尋ねる + UseCustomPassphrase: カスタムパスフレーズを使う + Remote: + Activate: 有効化 + ActiveSuffix: " (使用中)" + AddConnection: 接続を追加 + AddRemoteDefaultName: 新しいリモート設定 + ConfigureAndChangeRemote: 設定してリモートを変更 + ConfigureE2EE: E2EE を設定 + ConfigureRemote: リモートを設定 + DeleteRemoteConfirm: リモート設定「${name}」を削除しますか? + DeleteRemoteTitle: リモート設定を削除 + DisplayName: 表示名 + DuplicateRemote: リモート設定を複製 + DuplicateRemoteSuffix: (コピー) + E2EEConfiguration: E2EE 設定 + Export: エクスポート + FetchRemoteSettings: リモート設定を取得 + ImportConnection: 接続をインポート + ImportConnectionPrompt: インポートする接続 URI を入力してください。 + ImportedCouchDb: インポートした CouchDB + ImportedRemote: インポートしたリモート設定 + MoreActions: その他の操作 + PeerToPeerPanel: ピアツーピア同期 + RemoteConfigurationPrefix: リモート設定 + RemoteDatabases: リモートデータベース + RemoteName: リモート名 + RemoteNameCouchDb: CouchDB 設定 + RemoteNameP2P: P2P 設定 + RemoteNameS3: S3/MinIO/R2 設定 + Rename: 名前を変更 + Selector: + AddDefaultPatterns: 既定のパターンを追加 + CrossPlatform: クロスプラットフォーム + Default: デフォルト + HiddenFiles: 隠しファイル + IgnorePatterns: 無視パターン + NonSynchronisingFiles: 同期しないファイル + NonSynchronisingFilesDesc: (RegExp)これを設定すると、一致するローカルおよびリモートファイルの変更はスキップされます。 + NormalFiles: 通常ファイル + OverwritePatterns: 上書きパターン + OverwritePatternsDesc: マージではなく上書きするファイルに一致させるパターン + SynchronisingFiles: 同期するファイル + SynchronisingFilesDesc: (RegExp)空の場合はすべてのファイルを同期します。同期するファイルを制限するには正規表現フィルターを設定します。 + TargetPatterns: 対象パターン + TargetPatternsDesc: 同期するファイルに一致させるパターン + Setup: + RerunWizardButton: セットアップウィザードを再実行 + RerunWizardDesc: オンボーディングウィザードを再実行して Self-hosted LiveSync を再設定します。 + RerunWizardName: オンボーディングウィザードを再実行 + SyncSettings: + Fetch: 取得 + Merge: マージ + Overwrite: 上書き + SetupWizard: + Bucket: + AccessKeyId: アクセスキー ID + BucketName: バケット名 + EndpointUrl: エンドポイント URL + FolderPrefix: Folder Prefix + FolderPrefixDesc: バケット内の特定フォルダーにデータを保存したい場合は、ここでフォルダープレフィックスを指定できます。空欄にするとバケットのルートに保存されます。 + InternalApiDesc: CORS の問題を避けられない場合、このオプションを試せます。Obsidian の内部 API を使って S3 + サーバーと通信します。Web 標準には準拠していませんが動作します。将来の Obsidian で壊れる可能性があります。 + PlaceholderAccessKeyId: アクセスキー ID を入力 + PlaceholderBucketName: バケット名を入力 + PlaceholderFolderPrefix: フォルダープレフィックスを入力(任意) + PlaceholderRegion: "リージョンを入力(例: us-east-1、R2 は auto)" + PlaceholderSecretAccessKey: シークレットアクセスキーを入力 + Region: リージョン + SecretAccessKey: シークレットアクセスキー + Title: S3/MinIO/R2設定 + UseInternalApi: 内部 API を使用 + UsePathStyleAccess: パス形式アクセスを使用 + Common: + AdvancedSettings: 詳細設定 + Back: 戻る + Cancel: キャンセル + CheckingConnection: 接続を確認しています。しばらくお待ちください。 + ContinueAnyway: このまま続行 + CustomHeaders: カスタムヘッダー + ErrorConnectionTest: "接続テスト中にエラーが発生しました: ${error}" + ErrorConnectServer: サーバーに接続できませんでした。設定を確認してください。 + ErrorConnectServerDetail: "サーバーに接続できませんでした: ${error}" + ErrorCreateReplicator: レプリケーターインスタンスを作成できませんでした。 + ExperimentalSettings: 実験的な設定 + HttpsOnlyMobile: Obsidian Mobileではセキュアな接続 (HTTPS) のみ使用できます。 + ProceedSelectOption: オプションを選択してください + CouchDB: + DatabaseName: データベース名 + DatabaseNameDesc: データベース名には大文字、空白、特殊文字を使用できません。またアンダースコア(_)で始めることもできません。 + InternalApiDesc: CORS の問題を避けられない場合、このオプションを試せます。Obsidian の内部 API を使って CouchDB + サーバーと通信します。Web 標準には準拠していませんが動作します。将来の Obsidian で壊れる可能性があります。 + JwtAlgorithm: JWT アルゴリズム + JwtExpirationDuration: JWT 有効期間(分) + JwtKey: JWT キー + JwtKeyDesc: HS256/HS512 では共有シークレットキーを指定します。ES256/ES512 では pkcs8 PEM 形式の秘密鍵を指定します。 + JwtKeyId: JWT Key ID(kid) + JwtSubject: JWT Subject(sub) + JwtWarning: JWT(JSON Web Token)認証により、トークンを使って CouchDB サーバーへ安全に認証できます。CouchDB が + JWT を受け付けるよう設定され、指定したキーと設定がサーバー設定と一致していることを確認してください。この機能は十分には検証されていません。 + Password: パスワード + PlaceholderDatabaseName: データベース名を入力 + PlaceholderJwtKey: JWT シークレットまたは秘密鍵を入力 + PlaceholderJwtKeyId: JWT Key ID を入力 + PlaceholderJwtSubject: JWT Subject(CouchDB ユーザー名)を入力 + PlaceholderPassword: パスワードを入力 + PlaceholderUsername: ユーザー名を入力 + Title: CouchDB設定 + Url: サーバー URL + UseInternalApi: 内部 API を使用 + UseJwtAuthentication: JWT 認証を使用 + Username: ユーザー名 + CouchDBCheck: + DetectAndFix: CouchDBの問題を検出して修正 + Fix: 修正 + E2EE: + AlgorithmGuidance: ほとんどの場合、既定のアルゴリズム(${algorithm})を使用してください。この設定は、既存の Vault + が別形式で暗号化されている場合にのみ必要です。 + AlgorithmWarning: 暗号化アルゴリズムを変更すると、以前に別のアルゴリズムで暗号化されたデータにアクセスできなくなります。すべてのデバイスで同じアルゴリズムを使用するよう設定してください。 + EncryptionAlgorithm: 暗号化アルゴリズム + Fetch: + BackupDone: Vaultのバックアップを作成しました。 + BackupQuestion: 続行する前にバックアップを作成しましたか? + BackupRecommendation: Vaultフォルダを安全な場所にコピーしておくことをおすすめします。大量の競合が発生した場合や、誤った同期先と同期してしまった場合の保険になります。 + BackupSkipped: リスクを理解したうえで、バックアップなしで続行します。 + BackupUnable: Vaultのバックアップを作成できません。 + BackupUnableNote: リスクを理解したうえで、それでも続行したい場合は選択してください。 + BackupUnableWarning: 続行前にバックアップを作成することを強くおすすめします。バックアップなしで続行すると、データが失われる可能性があります。 + ConflictNote: さらに、サーバー上のデータにすでに競合がある場合は、そのままこのデバイスに同期され、ローカルで解決する必要があります。 + Guidance: この操作では、サーバー上の最新データを使って、このデバイスのローカルデータベースを再構築します。同期の不整合を解消し、正常な動作を回復するための処理です。 + ImportantBody: このデバイスのVaultに未同期の変更がある場合、リセット後にサーバー側の内容と分岐する可能性があります。その結果、多数のファイル競合が発生することがあります。 + ImportantTitle: 重要なお知らせ + PreventFetchConfig: サーバーから設定を取得しない + Proceed: リセットして同期を再開 + Title: このデバイスの同期をリセット + UnbalancedNote: この場合、Self-hosted LiveSync + はすべてのファイルのメタデータを再作成し、意図的に競合を発生させます。ファイル内容が同一であれば、それらの競合は自動的に解決されます。 + VaultIdentical: このVault内のファイルは、サーバー上のものとほぼ同じです。 + VaultIdenticalDesc: (例:別のPCで復元した直後、またはバックアップから復旧した直後) + VaultIndependent: このVaultは空、またはサーバー上にない新規ファイルだけが入っています。 + VaultIndependentDesc: (例:新しいスマートフォンで初回設定する、まっさらな状態から始める) + VaultQuestion: 新たな競合の発生を最小限に抑えるため、現在のVaultの状態に最も近い選択肢を選んでください。選択内容に応じて、アプリが最適な方法でファイルを確認します。 + VaultUnbalanced: このVault内のファイルとサーバーとの間に差分がある可能性があります。 + VaultUnbalancedDesc: (例:オフライン中に多くのファイルを編集した後) + Intro: + ExistingOption: サーバーはすでに設定済みです + ExistingOptionDesc: 既存の LiveSync サーバーに接続する + Guidance: ようこそ!LiveSync をセットアップしましょう。LiveSync の新規ユーザーですか、それともリモートサーバーはすでに設定済みですか? + NewOption: LiveSync の新規ユーザーです + NewOptionDesc: LiveSync を初めてセットアップする + ProceedExisting: 既存サーバーに接続 + ProceedNew: 新規セットアップ + Question: 当てはまるのはどれですか? + Title: セットアップウィザード + Log: + E2EEConfigurationCancelled: E2EE 設定がキャンセルされました。 + ManualConfigurationCancelled: 手動設定がキャンセルされました。 + NoSettingsChanges: 設定の変更は検出されませんでした。ウィザード設定の適用をスキップします。 + OnboardingCancelled: ユーザーがオンボーディングをキャンセルしました。 + QrCodeDialogClosed: QR コードダイアログが閉じられました。 + QrCodeResult: "QR コードの結果: ${result}" + SettingApplied: 設定を適用しました + SettingsApplied: ウィザード設定を適用しました。 + SetupUriDialogCancelled: Setup URI ダイアログがキャンセルされました。 + SetupUriDialogClosed: Setup URI ダイアログが閉じられました。 + UserCancelledApplyingSettings: ユーザーがウィザード設定の適用をキャンセルしました。 + OutroAskUserMode: + CompatibleOption: 互換モードを使用 + CompatibleOptionDesc: リモートが旧バージョンの LiveSync でセットアップされている場合はこちらを選択してください。一部の機能が制限される場合があります。 + ExistingOption: このデバイスには既存データがあります + ExistingOptionDesc: ローカルファイルをリモートとマージします。このボールトにすでにメモがある場合はこちらを選択してください。 + Guidance: このデバイスの LiveSync での使用方法を選択してください。初期同期動作に影響します。 + NewOption: 新しいデバイスとしてセットアップ + NewOptionDesc: 新しいボールトで開始します。セットアップ後にリモートファイルが取得されます。 + ProceedApplySettings: 設定を適用 + ProceedNext: 続行 + Question: このデバイスのモードを選択: + Title: このデバイスをどのように使用しますか? + OutroExisting: + Guidance: セットアップが完了しました。再起動後にリモートデータが取得されます。下のボタンをクリックして再起動し、同期を開始してください。 + Proceed: 再起動してデータを取得 + Question: 下のボタンをクリックして再起動し、データ取得の確認に進んでください。 + Title: セットアップ完了:同期データの取得準備中 + OutroNewUser: + GuidancePrimary: LiveSync の設定が完了しました。このダイアログを閉じると設定が適用されます。 + GuidanceWarning: リモートボールトにデータがある場合、既存のファイルが上書きされます。空のボールトを使用しているか、バックアップがあることを確認してください。 + Important: 重要: + Proceed: 適用して再起動 + Question: 設定を適用する準備はできましたか? + Title: セットアップ完了 + P2P: + AutoBroadcast: 変更を自動ブロードキャスト + AutoBroadcastDesc: 変更の自動ブロードキャストを有効にすると、接続済みピアへ変更が自動的に通知されます。これによりピアはこのデバイスの変更を取得します。 + AutoStart: P2P 接続を自動開始 + AutoStartDesc: P2P 接続の自動開始を有効にすると、プラグイン起動時に P2P 接続が自動的に開始されます。 + DevicePeerId: デバイスピア ID + Enabled: 有効 + ErrorConnectPeers: "他のピアへ接続できませんでした: ${error}" + GenerateRandomId: ランダム ID を生成 + GroupId: グループ ID + GroupPassphraseDesc: グループ ID とパスフレーズはデバイスグループを識別するために使われます。同期したいすべてのデバイスで同じグループ + ID とパスフレーズを使用してください。グループ ID は生成形式に限定されず、任意の文字列を使用できます。 + NoPeersFound: 設定は正しそうですが、他のピアが見つかりませんでした。 + PlaceholderRelayUrl: リレー URL を入力 + PlaceholderTurnCredential: TURN 認証情報を入力 + PlaceholderTurnUsername: TURN ユーザー名を入力 + PublicTurnWarning: 公開 TURN + サーバーを使用すると、データが第三者サーバーを経由するためプライバシー上の影響があります。データが暗号化されていても、存在は知られる可能性があります。使用前に + TURN サーバー提供者とネットワーク管理者を信頼できることを確認してください。可能であれば自分の FQDN 用に TURN + サーバーを用意することを検討してください。 + RelayUrl: リレー URL + Title: P2P設定 + TurnCredential: TURN 認証情報 + TurnServerDesc: TURN サーバー設定は、厳しい NAT やファイアウォールにより直接 P2P + 接続が妨げられる場合にのみ必要です。多くの場合は空欄のままで構いません。 + TurnServerUrls: TURN サーバー URL(カンマ区切り) + TurnUsername: TURN ユーザー名 + UseDefaultRelay: vrtmrz のリレーを使う + Rebuild: + BackupBeforeProceeding: もちろん、続行前にデータをバックアップできます。 + BackupDone: Vaultのバックアップを作成しました。 + BackupQuestion: 続行する前にバックアップを作成しましたか? + BackupSkipped: リスクを理解したうえで、バックアップなしで続行します。 + BackupUnable: Vaultのバックアップを作成できません。 + BackupUnableAdvice: 新しい同期先を作成し、そこでデータを再構築してください。その後、ほかの各デバイスでは新しいリモート先に対して、まっさらなVaultへ1台ずつ同期してください。 + BackupWarning: これは非常に強力な操作です。Vaultフォルダを安全な場所にコピーしておくことを強くおすすめします。 + ConfirmDataLoss: 他のスマートフォンやPCで行った変更が失われる可能性があることを理解しています。 + ConfirmIrreversible: この操作は一度実行すると元に戻せないことを理解しています。 + ConfirmSyncDisabled: 他のデバイスは今後同期できなくなり、同期情報をリセットする必要があることを理解しています。 + ConfirmTitle: 以下を確認してください + Guidance: この手順では、まずサーバー上の既存の同期データをすべて削除します。その後、このデバイス上のVaultの現在の状態を唯一の正本として使用し、サーバー上のデータを完全に再構築します。 + PreventFetchConfig: サーバーから設定を取得しない + Proceed: 理解しました。サーバーを上書きします + ResetNotifyOtherDevices: リモートをリセットすると、他のデバイスにも通知されます。 + ResolveOnOtherDevices: 他のデバイス側で解決する方法があります。 + Title: "最終確認: このデバイスのファイルでサーバーデータを上書き" + WhenToUse: この操作を実行するのは、サーバー上のデータが完全に破損している場合、他のすべてのデバイスでの変更が不要になった場合、またはVaultサイズに比べてデータベースサイズが異常に大きくなった場合など、例外的な状況に限るべきです。 + SelectExisting: + Guidance: 既存の LiveSync サーバーへの接続方法を選択してください。 + ManualOption: 手動で設定 + ManualOptionDesc: サーバーの詳細と認証情報を自分で入力 + ProceedManual: 手動で設定 + ProceedQr: QR コードをスキャン + ProceedSetupUri: セットアップ URI を使用 + QrOption: QR コードをスキャン + QrOptionDesc: 設定済みのデバイスから QR コードをスキャン + Question: 接続方法を選択: + SetupUriOption: セットアップ URI を使用 + SetupUriOptionDesc: サーバーから提供されるセットアップ URI から設定をインポート + Title: 既存サーバーに接続 + SelectNew: + Guidance: 新しい LiveSync 接続の設定方法を選択してください。 + ManualOption: 手動で設定 + ManualOptionDesc: サーバーの詳細と認証情報を自分で入力 + ProceedManual: 手動で設定 + ProceedSetupUri: セットアップ URI を使用 + Question: 設定方法を選択: + SetupUriOption: セットアップ URI を使用 + SetupUriOptionDesc: サーバーから提供されるセットアップ URI から設定をインポート + Title: 新しい接続をセットアップ + SetupRemote: + BucketOption: LiveSync バケット + BucketOptionDesc: LiveSync コンパニオンサービスに同梱されているバケットサーバーを使用 + CouchDbOption: CouchDB + CouchDbOptionDesc: ご自身の CouchDB インスタンスを使用して、同期サーバーを完全に制御 + Guidance: 使用するリモートサーバーの種類を選択してください: + P2POption: ピアツーピア(実験的) + P2POptionDesc: 中央サーバーなしでデバイス間を直接同期 + ProceedBucket: バケットをセットアップ + ProceedCouchDb: CouchDB をセットアップ + ProceedP2P: P2P をセットアップ + Title: リモートサーバーのセットアップ + UseSetupURI: + ButtonCancel: キャンセル + ButtonProceed: 設定をテストして続行 + ErrorFailedToParse: Setup-URI の解析に失敗しました。 + ErrorPassphraseRequired: パスフレーズが必要です。 + Guidance: サーバーのセットアップ時または別のデバイスで生成された Setup URI と、Vault のパスフレーズを入力してください。 + InvalidInfo: Setup-URI が無効なようです。正しくコピーできているか確認してください。 + Label: Setup-URI + LabelPassphrase: パスフレーズ + PlaceholderPassphrase: パスフレーズを入力 + Title: Setup URI を入力 + ValidMessage: Setup-URI は有効で、使用準備ができています。 Unique name between all synchronized devices. To edit this setting, please disable customization sync once.: 同期するすべての端末間で重複しない(一意の)名前。この設定を変更する場合、カスタマイズ同期を無効にしてください。 Use a custom passphrase: カスタムパスフレーズを使う +Use a Setup URI (Recommended): Setup URI を使う(推奨) Use Custom HTTP Handler: カスタムHTTPハンドラーの利用 Use dynamic iteration count: 動的な繰り返し回数 +Use Only Local Chunks: ローカルチャンクのみ使用 +Use Request API to avoid `inevitable` CORS problem: 「避けられない」CORS 問題を回避するため Request API を使用 Use Segmented-splitter: セグメント分割を使用 Use splitting-limit-capped chunk splitter: 分割制限付きチャンク分割を使用 Use the trash bin: ゴミ箱を使用 Use timeouts instead of heartbeats: ハートビートの代わりにタイムアウトを使用 username: ユーザー名 Username: ユーザー名 +"V1: Legacy": "V1: レガシー" +"V2: Simple (Default)": "V2: シンプル (既定)" +"V2.5: Lexical chunks": "V2.5: 字句チャンク" +"V3: Fine deduplication": "V3: 細かな重複排除" Verbose Log: エラー以外のログ項目 Verify all: すべて検証 Verify and repair all files: すべてのファイルを検証して修復 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.: 警告!これはパフォーマンスに重大な影響を与えます。また、ログはデフォルト名では同期されません。ログには機密情報が含まれることが多いため、注意してください。 We cannot change the device name while this feature is enabled. Please disable this feature to change the device name.: この機能が有効な間はデバイス名を変更できません。変更するにはこの機能を無効にしてください。 +We will now guide you through a few questions to simplify the synchronisation setup.: これからいくつかの質問に沿って、同期設定を簡単に進めます。 +We will now proceed with the server configuration.: 次にサーバー設定を進めます。 +Welcome to Self-hosted LiveSync: Self-hosted LiveSync へようこそ When you save a file in the editor, start a sync automatically: エディタでファイルを保存すると、自動的に同期を開始します +While enabled, it causes very performance impact but debugging replication testing and other features will be enabled. Please disable this if you have not read the source code. Requires restart of Obsidian.: + 有効にするとパフォーマンスに大きく影響しますが、デバッグ、レプリケーションテストなどの機能が有効になります。ソースコードを読んでいない場合は無効にしてください。Obsidian + の再起動が必要です。 Write credentials in the file: 認証情報のファイル内保存 Write logs into the file: ファイルにログを記録 xxhash32 (Fast but less collision resistance): xxhash32 (高速ですが衝突耐性は低め) xxhash64 (Fastest): xxhash64 (最速) -Reduces storage space by discarding all non-latest revisions. This requires the same amount of free space on the remote server and the local client.: - 最新版以外のすべてのリビジョンを破棄して、使用容量を削減します。実行には、リモートサーバーとローカルクライアントの両方に同程度の空き容量が必要です。 -Rerun Onboarding Wizard: オンボーディングウィザードを再実行 -Rerun the onboarding wizard to set up Self-hosted LiveSync again.: オンボーディングウィザードを再実行して、Self-hosted LiveSync をもう一度設定します。 -Rerun Wizard: ウィザードを再実行 -Run Doctor: 診断を実行 -Scan for Broken files: 破損ファイルをスキャン -Prepare the 'report' to create an issue: Issue 作成用の「レポート」を準備 -Copy Report to clipboard: レポートをクリップボードにコピー -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 レポートを生成します。生成したレポートは任意のスプレッドシートに貼り付けて確認できます。 -Reset notification threshold and check the remote database usage: 通知しきい値をリセットしてリモートデータベース使用量を確認 -Reset the remote storage size threshold and check the remote storage size again.: リモートストレージ容量のしきい値をリセットし、リモートストレージ容量を再確認します。 -Scram Switches: 緊急対応スイッチ -Minimum interval for syncing: 同期間隔の最小値 -The minimum interval for automatic synchronisation on event.: イベント発生時の自動同期における最小間隔です。 -"Welcome to Self-hosted LiveSync": "Self-hosted LiveSync へようこそ" -"We will now guide you through a few questions to simplify the synchronisation setup.": "これからいくつかの質問に沿って、同期設定を簡単に進めます。" -"First, please select the option that best describes your current situation.": "まず、現在の状況に最も近い項目を選択してください。" -"I am setting this up for the first time": "はじめて設定します" -"(Select this if you are configuring this device as the first synchronisation device.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": "(この端末を最初の同期端末として設定する場合に選択してください。)LiveSync を初めて利用し、最初から設定したい場合に適しています。" -"I am adding a device to an existing synchronisation setup": "既存の同期構成に端末を追加します" -"(Select this if you are already using synchronisation on another computer or smartphone.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": "(別の PC やスマートフォンですでに同期を利用している場合に選択してください。)この端末を既存の LiveSync 構成に追加する場合に適しています。" -"Yes, I want to set up a new synchronisation": "はい、新しい同期を設定します" -"Yes, I want to add this device to my existing synchronisation": "はい、この端末を既存の同期に追加します" -"No, please take me back": "いいえ、前に戻ります" -"Device Setup Method": "端末の設定方法" -"You are adding this device to an existing synchronisation setup.": "この端末を既存の同期構成に追加しようとしています。" -"Please select a method to import the settings from another device.": "別の端末から設定を取り込む方法を選択してください。" -"Use a Setup URI (Recommended)": "Setup URI を使う(推奨)" -"Paste the Setup URI generated from one of your active devices.": "稼働中の端末で生成した Setup URI を貼り付けてください。" -"Scan a QR Code (Recommended for mobile)": "QR コードをスキャンする(モバイル推奨)" -"Scan the QR code displayed on an active device using this device's camera.": "稼働中の端末に表示された QR コードを、この端末のカメラで読み取ってください。" -"Enter the server information manually": "サーバー情報を手動で入力する" -"Configure the same server information as your other devices again, manually, very advanced users only.": "他の端末と同じサーバー情報を手動で再入力します。上級者向けの方法です。" -"Proceed with Setup URI": "Setup URI で続行" -"I know my server details, let me enter them": "サーバー情報を把握しているので、自分で入力します" -"Please select an option to proceed": "続行するには項目を選択してください" -"Connection Method": "接続方法" -"We will now proceed with the server configuration.": "次にサーバー設定を進めます。" -"How would you like to configure the connection to your server?": "サーバー接続をどのように設定しますか?" -"A Setup URI is a single string of text containing your server address and authentication details. Using a URI, if one was generated by your server installation script, provides a simple and secure configuration.": "Setup URI は、サーバーアドレスと認証情報を含む 1 本の文字列です。サーバーのインストールスクリプトで生成された URI がある場合は、それを使うと簡単かつ安全に設定できます。" -"This is an advanced option for users who do not have a URI or who wish to configure detailed settings.": "URI を持っていない場合や、詳細設定を手動で行いたいユーザー向けの上級者オプションです。" -"Enter Server Information": "サーバー情報の入力" -"Please select the type of server to which you are connecting.": "接続するサーバーの種類を選択してください。" -"Continue to CouchDB setup": "CouchDB 設定へ進む" -"Continue to S3/MinIO/R2 setup": "S3/MinIO/R2 設定へ進む" -"Continue to Peer-to-Peer only setup": "Peer-to-Peer 専用設定へ進む" -"This is the most suitable synchronisation method for the design. All functions are available. You must have set up a CouchDB instance.": "この設計に最も適した同期方式です。すべての機能が利用できます。CouchDB インスタンスを事前に構成しておく必要があります。" -"S3/MinIO/R2 Object Storage": "S3/MinIO/R2 オブジェクトストレージ" -"Synchronisation utilising journal files. You must have set up an S3/MinIO/R2 compatible object storage.": "ジャーナルファイルを利用する同期方式です。S3/MinIO/R2 互換のオブジェクトストレージを事前に構成しておく必要があります。" -"Peer-to-Peer only": "Peer-to-Peer のみ" -"This feature enables direct synchronisation between devices. No server is required, but both devices must be online at the same time for synchronisation to occur, and some features may be limited. Internet connection is only required to signalling (detecting peers) and not for data transfer.": "この機能では端末同士を直接同期できます。サーバーは不要ですが、同期を行うには両端末が同時にオンラインである必要があり、一部機能は制限されます。インターネット接続はシグナリング(ピア検出)にのみ必要で、データ転送自体には使われません。" +xxhash64 is the current default.: 現在の既定値は xxhash64 です。 +Yes, I want to add this device to my existing synchronisation: はい、この端末を既存の同期に追加します +Yes, I want to set up a new synchronisation: はい、新しい同期を設定します +You are adding this device to an existing synchronisation setup.: この端末を既存の同期構成に追加しようとしています。 +You can enable this setting to process the files with size mismatches, these files can be created by some APIs or integrations.: サイズが一致しないファイルを処理するには、この設定を有効にできます。これらのファイルは一部の API や連携機能によって作成されることがあります。 diff --git a/src/common/messagesYAML/ko.yaml b/src/common/messagesYAML/ko.yaml index 76071e6b..1a07c842 100644 --- a/src/common/messagesYAML/ko.yaml +++ b/src/common/messagesYAML/ko.yaml @@ -11,14 +11,33 @@ (Obsolete) Use an old adapter for compatibility: (사용 중단) 호환성을 위해 이전 어댑터 사용 (RegExp) Empty to sync all files. Set filter as a regular expression to limit synchronising files.: (정규식) 비워 두면 모든 파일을 동기화합니다. 정규식을 지정하면 동기화할 파일을 제한할 수 있습니다. (RegExp) If this is set, any changes to local and remote files that match this will be skipped.: (정규식) 설정하면 이 패턴과 일치하는 로컬 및 원격 파일 변경은 모두 건너뜁니다. +(Select this if you are already using synchronisation on another computer or smartphone.) This option is suitable if you are new to LiveSync and want to set it up from scratch.: (다른 컴퓨터나 스마트폰에서 이미 동기화를 사용 중인 경우 선택하세요.) 이 장치를 기존 LiveSync 구성에 추가하려는 경우에 적합합니다。 +(Select this if you are configuring this device as the first synchronisation device.) This option is suitable if you are new to LiveSync and want to set it up from scratch.: (이 장치를 첫 번째 동기화 장치로 설정하는 경우 선택하세요.) LiveSync를 처음 사용하며 처음부터 설정하려는 경우에 적합합니다。 +"> [!INFO]- The connected devices have been detected as follows:\n${devices}": |- + > [!INFO]- 다음 연결된 기기가 감지되었습니다: + ${devices} +A Setup URI is a single string of text containing your server address and authentication details. Using a URI, if one was generated by your server installation script, provides a simple and secure configuration.: + 설정 URI는 서버 주소와 인증 정보를 포함한 단일 문자열입니다. 서버 설치 스크립트가 URI를 생성했다면 이를 사용하면 간단하고 안전하게 + 구성할 수 있습니다。 Access Key: 액세스 키 Activate: 활성화 +Active Remote Configuration: 활성 원격 구성 +Active Remote Type: 활성 원격 유형 Add default patterns: 기본 패턴 추가 Add new connection: 연결 추가 +Advanced: 고급 +All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.: + 모든 기기의 진행 값이 동일합니다(${progress}). 기기들이 동기화된 것으로 보이므로 Garbage Collection을 진행할 수 + 있습니다. 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.: 데이터베이스 사용량을 분석하고 직접 진단할 수 있는 TSV 보고서를 생성합니다. 생성된 보고서를 원하는 스프레드시트에 붙여 넣을 수 있습니다. Apply Latest Change if Conflicting: 충돌 시 최신 변경 사항 적용 Apply preset configuration: 프리셋 구성 적용 Ask a passphrase at every launch: 시작할 때마다 암호문구 묻기 +Automatically broadcast changes to connected peers: 연결된 피어에 변경 사항 자동 브로드캐스트 +Automatically start P2P connection on launch: 시작 시 P2P 연결 자동 시작 Automatically Sync all files when opening Obsidian.: Obsidian을 열 때 모든 파일을 자동으로 동기화합니다. Back: 뒤로 Back to non-configured: 미구성 상태로 되돌리기 @@ -32,11 +51,18 @@ Before v0.17.16, we used an old adapter for the local database. Now the new adap 비활성화하라는 메시지가 나타납니다. Bucket Name: 버킷 이름 Cancel: 취소 +Cancel Garbage Collection: Garbage Collection 취소 +Check: 확인 Check and convert non-path-obfuscated files: 경로 난독화되지 않은 파일 검사 및 변환 Check for documents that have not been converted to path-obfuscated IDs and convert them if necessary.: 아직 경로 난독화 ID로 변환되지 않은 문서를 확인하고 필요하면 변환합니다. +Chunk Splitter: 청크 분할기 cmdConfigSync: showCustomizationSync: 사용자 설정 동기화 표시 Comma separated `.gitignore, .dockerignore`: 쉼표로 구분된 `.gitignore, .dockerignore` +Compaction in progress on remote database...: 원격 데이터베이스에서 압축을 진행 중입니다... +Compaction on remote database completed successfully.: 원격 데이터베이스 압축이 성공적으로 완료되었습니다. +Compaction on remote database failed.: 원격 데이터베이스 압축에 실패했습니다. +Compaction on remote database timed out.: 원격 데이터베이스 압축 시간이 초과되었습니다. Compare the content of files between on local database and storage. If not matched, you will be asked which one you want to keep.: 로컬 데이터베이스와 저장소 간의 파일 내용을 비교합니다. 일치하지 않으면 어떤 쪽을 유지할지 묻게 됩니다. Compatibility (Conflict Behaviour): 호환성 (충돌 동작) Compatibility (Database structure): 호환성 (데이터베이스 구조) @@ -50,10 +76,17 @@ Configure: 설정 Configure And Change Remote: 원격 구성 및 변경 Configure E2EE: E2EE 구성 Configure Remote: 원격 구성 +Configure the same server information as your other devices again, manually, very advanced users only.: 다른 장치와 동일한 서버 정보를 다시 수동으로 입력합니다. 고급 사용자 전용입니다。 +Connection Method: 연결 방법 +Continue to CouchDB setup: CouchDB 설정으로 계속 +Continue to Peer-to-Peer only setup: Peer-to-Peer 전용 설정으로 계속 +Continue to S3/MinIO/R2 setup: S3/MinIO/R2 설정으로 계속 Copy: 복사 +Copy Report to clipboard: 보고서를 클립보드에 복사 CouchDB Connection Tweak: CouchDB 연결 조정 Cross-platform: 크로스 플랫폼 "Current adapter: {adapter}": "현재 어댑터: {adapter}" +Customization sync: 사용자 지정 동기화 Customization Sync: 사용자 지정 동기화 Customization Sync (Beta3): 사용자 지정 동기화 (Beta3) Data Compression: 데이터 압축 @@ -72,7 +105,9 @@ Delete Remote Configuration: 원격 구성 삭제 Delete remote configuration '{name}'?: "'{name}' 원격 구성을 삭제할까요?" desktop: 데스크톱 Developer: 개발자 +Device: 기기 Device name: 기기 이름 +Device Setup Method: 장치 설정 방법 dialog: yourLanguageAvailable: _value: >- @@ -102,7 +137,7 @@ Doctor: FixButNoRebuild: 수정하지만 재구축하지 않음 No: 아니요 Skip: 그대로 두기 - Yes: 예 + Yes: "?" Dialogue: Main: |- 안녕하세요! ${activateReason} 로 인해 구성 진단 마법사가 활성화되었습니다! @@ -138,49 +173,98 @@ Doctor: RebuildLocalRequired: 주의! 이를 적용하려면 로컬 데이터베이스 재구축이 필요합니다! RebuildRequired: 주의! 이를 적용하려면 재구축이 필요합니다! SomeSkipped: 일부 문제를 그대로 두었습니다. 다음 시작 시 다시 질문할까요? + RULES: + E2EE_V02500: + REASON: 종단 간 암호화(E2EE)가 더 견고하고 빨라졌습니다. 또한 이전 E2EE가 재검토에서 취약한 것으로 확인되었습니다. 가능한 한 + 빨리 적용해야 합니다. 불편을 드려 죄송합니다. 이 설정은 이전 방식과 호환되지 않습니다. 동기화된 모든 기기는 v0.25.0 + 이상으로 업데이트해야 합니다. 재구축은 필수는 아니며 새 전송 방식에서 새 형식으로 변환됩니다. 가능하면 재구축하는 것을 + 권장합니다. +Document History: 문서 기록 Duplicate: 복제 Duplicate remote: 원격 구성 복제 E2EE Configuration: E2EE 구성 Edge case addressing (Behaviour): 특수 상황 처리 (동작) Edge case addressing (Database): 특수 상황 처리 (데이터베이스) Edge case addressing (Processing): 특수 상황 처리 (처리) +Effectively a directory. Should end with `/`. e.g., `vault-name/`.: "사실상 디렉터리입니다. `/`로 끝나야 합니다. 예: `vault-name/`." Emergency restart: 긴급 재시작 Enable advanced features: 고급 기능 활성화 +Enable advanced mode: 고급 모드 사용 Enable customization sync: 사용자 설정 동기화 활성화 Enable Developers' Debug Tools.: 개발자 디버그 도구 활성화 Enable edge case treatment features: 특수 사례 처리 기능 활성화 +Enable forcePathStyle: forcePathStyle 사용 +Enable P2P Synchronization: P2P 동기화 사용 +Enable per-file customization sync: 파일별 사용자 지정 동기화 사용 +Enable power user mode: 고급 사용자 모드 사용 Enable poweruser features: 파워 유저 기능 활성화 Enable this if your Object Storage doesn't support CORS: 객체 스토리지가 CORS를 지원하지 않는 경우 활성화하세요 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.: 원격 데이터베이스의 내용을 암호화합니다. 플러그인의 동기화 기능을 사용하는 경우 활성화를 권장합니다. Encrypting sensitive configuration items: 민감한 구성 항목 암호화 +Encryption passphrase. 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.: 패스프레이즈는 암호화에 사용되는 긴 암호 문구입니다. 변경한 경우, 암호화된 새 파일로 서버의 데이터베이스를 덮어써야 합니다. End-to-End Encryption: 종단간 암호화 Endpoint URL: 엔드포인트 URL Enhance chunk size: 청크 크기 향상 +Enter Server Information: 서버 정보 입력 +Enter the server information manually: 서버 정보를 수동으로 입력 Export: 내보내기 +Failed to connect to remote for compaction.: 압축을 위해 원격 데이터베이스에 연결하지 못했습니다. +Failed to connect to remote for compaction. ${reason}: 압축을 위해 원격 데이터베이스에 연결하지 못했습니다. ${reason} +Failed to start one-shot replication before Garbage Collection. Garbage Collection Cancelled.: Garbage Collection 전에 일회성 복제를 시작하지 못했습니다. Garbage Collection을 취소합니다. +Failed to start replication after Garbage Collection.: Garbage Collection 후 복제를 시작하지 못했습니다. Fetch: 가져오기 Fetch chunks on demand: 필요 시 청크 원격 가져오기 Fetch database with previous behaviour: 이전 동작으로 데이터베이스 가져오기 Fetch remote settings: 원격 설정 가져오기 +File prefix on the bucket: 버킷의 파일 접두사 File to resolve conflict: 충돌을 해결할 파일 Filename: 파일명 +Files with modification times greater than this value (in seconds since the Unix epoch) will not have their events reflected. Set to 0 to disable this limit.: 수정 시간이 이 값(Unix epoch 이후 초)보다 큰 파일은 이벤트가 반영되지 않습니다. 0으로 설정하면 이 제한을 비활성화합니다. +First, please select the option that best describes your current situation.: 먼저 현재 상황에 가장 잘 맞는 항목을 선택해 주세요。 Flag and restart: 표시 후 재시작 Forces the file to be synced when opened.: 파일을 열 때 강제로 동기화합니다. Fresh Start Wipe: 새로 시작 지우기 +Garbage Collection cancelled by user.: 사용자가 Garbage Collection을 취소했습니다. +"Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.": + "Garbage Collection이 완료되었습니다. 삭제된 청크: ${deletedChunks} / ${totalChunks}. 소요 + 시간: ${seconds}초." +Garbage Collection Confirmation: Garbage Collection 확인 Garbage Collection V3 (Beta): 가비지 컬렉션 V3 (Beta) +"Garbage Collection: Found ${unusedChunks} unused chunks to delete.": "Garbage Collection: 삭제할 미사용 청크 ${unusedChunks}개를 찾았습니다." +"Garbage Collection: Scanned ${scanned} / ~${docCount}": "Garbage Collection: ${scanned} / ~${docCount} 스캔됨" +"Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": "Garbage Collection: 스캔 완료. 전체 청크 수: ${totalChunks}, 사용 중인 청크 수: ${usedChunks}" Handle files as Case-Sensitive: 파일을 대소문자 구분으로 처리 +Hatch: 도구 Hidden Files: 숨김 파일 -How to display network errors when the sync server is unreachable.: 동기화 서버에 연결할 수 없을 때 네트워크 오류를 어떻게 표시할지 설정합니다. +Hide completely: 완전히 숨기기 +Highlight diff: 차이점 강조 +How to display network errors when the sync server is unreachable.: 동기화 서버에 연결할 수 없을 때 네트워크 오류를 표시하는 방식입니다. +How would you like to configure the connection to your server?: 서버 연결을 어떻게 구성하시겠습니까? +I am adding a device to an existing synchronisation setup: 기존 동기화 구성에 장치를 추가합니다 +I am setting this up for the first time: 처음으로 설정합니다 +I know my server details, let me enter them: 서버 정보를 알고 있으니 직접 입력하겠습니다 If disabled(toggled), chunks will be split on the UI thread (Previous behaviour).: 비활성화(토글)되면 청크는 UI 스레드에서 분할됩니다 (이전 동작). 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, changes will be automatically broadcasted to all connected peers. Notified peers will start fetching the changes.: 활성화하면 변경 사항이 연결된 모든 피어에 자동으로 브로드캐스트됩니다. 알림을 받은 피어는 변경 사항 가져오기를 시작합니다. If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker.: 활성화하면 청크는 최대 100개 항목으로 분할됩니다. 하지만 중복 제거 기능이 약간 약해집니다. +If enabled, efficient per-file customization sync will be used. A minor migration is required when enabling this feature, and all devices must be updated to v0.23.18. Enabling this feature will result in losing compatibility with older versions.: + 활성화하면 효율적인 파일별 사용자 지정 동기화를 사용합니다. 이 기능을 활성화할 때 작은 마이그레이션이 필요하며 모든 장치를 + v0.23.18로 업데이트해야 합니다. 활성화하면 이전 버전과의 호환성이 사라집니다. 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 forcePathStyle option will be used for bucket operations.: 활성화하면 버킷 작업에 forcePathStyle 옵션을 사용합니다. If enabled, the notification of hidden files change will be suppressed.: 활성화하면 숨겨진 파일 변경 알림이 억제됩니다. +If enabled, the P2P connection will be automatically started when the application launches.: 활성화하면 애플리케이션 시작 시 P2P 연결이 자동으로 시작됩니다. +If enabled, the plugin will not attempt to connect to the remote database even if the chunk was not found locally.: 활성화하면 청크를 로컬에서 찾지 못해도 플러그인이 원격 데이터베이스에 연결을 시도하지 않습니다. +If enabled, the request API will be used to avoid `inevitable` CORS problems. This is a workaround and may not work in all cases. PLEASE READ THE DOCUMENTATION BEFORE USING THIS OPTION. This is a less-secure option.: + 활성화하면 피할 수 없는 CORS 문제를 피하기 위해 request API를 사용합니다. 이는 우회 방법이며 모든 경우에 동작하지 않을 수 + 있습니다. 이 옵션을 사용하기 전에 반드시 문서를 읽어 주세요. 보안성이 낮은 옵션입니다. +If this enabled, all chunks will be stored with the revision made from its content.: 활성화하면 모든 청크가 내용에서 생성된 리비전과 함께 저장됩니다. 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).: 이 옵션이 활성화되면 모든 파일이 대소문자를 구분하여 처리됩니다 (이전 동작). If this enabled, chunks will be split into semantically meaningful segments. Not all platforms support this feature.: 이 옵션을 활성화하면 청크가 문단이나 의미 단위로 나뉘어 저장됩니다. 단, 이 기능은 일부 플랫폼에서는 지원되지 않을 수 있습니다. @@ -190,6 +274,7 @@ If this is set, changes to local files which are matched by the ignore files wil 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.: 이 옵션이 활성화되면 PouchDB는 연결을 더이상 무한히 열어두지 않고 60초 동안 유지합니다. 그 시간 내에 변경 사항이 없으면 소켓을 닫고 다시 엽니다. 프록시가 요청 지속 시간을 제한할 때 유용하지만 리소스 사용량이 증가할 수 있습니다. +Ignore and Proceed: 무시하고 계속 Ignore files: 제외 규칙 파일 Ignore patterns: 무시 패턴 Import connection: 연결 가져오기 @@ -198,15 +283,15 @@ Initialise all journal history, On the next sync, every item will be received an Interval (sec): 간격 (초) K: exp: 실험 기능 - long_p2p_sync: "%{title_p2p_sync} (%{exp})" - P2P: "%{Peer}-to-%{Peer}" + long_p2p_sync: "%{title_p2p_sync}" + P2P: "%{Peer} ? %{Peer}" Peer: 피어 ScanCustomization: 사용자 설정 검색 - short_p2p_sync: P2P 동기화 (%{exp}) + short_p2p_sync: P2P Sync title_p2p_sync: 피어 투 피어(P2P) 동기화 Keep empty folder: 빈 폴더 유지 -lang_def: Default -lang-de: Deutsche +lang_def: 기본값 +lang-de: Deutsch lang-def: "%{lang_def}" lang-es: Español lang-fr: Français @@ -223,7 +308,7 @@ liveSyncReplicator: cantReplicateLowerValue: 더 낮은 값으로 복제할 수 없습니다. checkingLastSyncPoint: 마지막으로 동기화된 지점을 찾고 있습니다. couldNotConnectTo: |- - ${uri}에 연결할 수 없습니다: ${name} + ${uri}에 연결할 수 없습니다: ${name} (${db}) couldNotConnectToRemoteDb: "원격 데이터베이스에 연결할 수 없습니다: ${d}" couldNotConnectToServer: 서버에 연결할 수 없습니다. @@ -258,17 +343,22 @@ logPane: pause: 일시 중단 title: Self-hosted LiveSync 로그 wrap: 줄 바꿈 +Maintenance: 유지보수 Maximum delay for batch database updating: 일괄 데이터베이스 업데이트 최대 지연 +Maximum file modification time for reflected file events: 반영할 파일 이벤트의 최대 파일 수정 시간 Maximum file size: 최대 파일 크기 Maximum Incubating Chunk Size: 임시 보관 변경 기록의 최대 크기 Maximum Incubating Chunks: 임시 보관 중인 변경 기록 최대 수 Maximum Incubation Period: 변경 기록 임시 보관 최대 시간 +Maximum size of chunks to send in one request: 한 요청에서 보낼 청크의 최대 크기 +MB: MB MB (0 to disable).: MB (0으로 설정하면 비활성화). Memory cache: 메모리 캐시 Memory cache size (by total characters): 메모리 캐시 크기 (총 문자 수) Memory cache size (by total items): 메모리 캐시 크기 (총 항목 수) Merge: 병합 Minimum delay for batch database updating: 일괄 데이터베이스 업데이트 최소 지연 +Minimum interval for syncing: 동기화 최소 간격 moduleCheckRemoteSize: logCheckingStorageSizes: 스토리지 크기 확인 중 logCurrentStorageSize: "원격 스토리지 크기: ${measuredSize}" @@ -284,9 +374,9 @@ moduleCheckRemoteSize: > [!MORE]- > 오랜 기간 사용했다면 참조되지 않는 청크, 즉 '쓰레기 데이터'가 쌓였을 수 있습니다. 이 경우 전체 재구성을 권장합니다. 용량이 훨씬 줄어들 수 있습니다. - > + > > 단순히 볼트 자체 용량이 커지고 있는 것이라면, 먼저 파일을 정리한 후 전체를 재구성하는 것이 좋습니다. Self-hosted LiveSync는 처리 속도를 위해 삭제해도 실제 데이터를 바로 지우지 않습니다. 이 내용은 [기술 문서](https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/tech_info.md)에 간략히 정리되어 있습니다. - > + > > 용량 증가가 괜찮다면 알림 임계치를 100MB 단위로 높일 수 있습니다. 직접 서버를 운영하는 경우에 적합한 방법입니다. 다만, 가끔은 전체 재구성을 해주는 것이 바람직합니다. > [!WARNING] @@ -304,7 +394,7 @@ moduleCheckRemoteSize: 설정한 용량 한도에 도달하면, 단계적으로 경고 한도를 늘릴지 여부를 묻게 됩니다. option2GB: 2GB (표준) - option800MB: 800MB (Cloudant, fly.io) + option800MB: 800MB optionAskMeLater: 나중에 물어보기 optionDismiss: 무시 optionIncreaseLimit: ${newMax}MB로 증가 @@ -358,7 +448,54 @@ moduleLocalDatabase: moduleLog: showLog: 로그 표시 moduleMigration: - docUri: https://github.com/vrtmrz/obsidian-livesync/blob/main/README.md#how-to-use + docUri: https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/troubleshooting.md + fix0256: + buttons: + checkItLater: 나중에 확인 + DismissForever: 수정했으며 다시 묻지 않음 + fix: 수정 + message: | + 최근 버그(v0.25.6)로 인해 일부 파일이 동기화 데이터베이스에 올바르게 저장되지 않았을 수 있습니다. + 파일을 스캔하여 수정이 필요한 항목을 찾았습니다. + + **수정할 수 있는 파일:** + + ${files} + + 이 파일들은 스토리지에 크기가 일치하는 원본 파일이 있어 복구 가능성이 높습니다. + 이를 사용하여 데이터베이스를 수정할 수 있습니다. 아래의 "Fix" 버튼을 눌러 수정하세요. + + ${messageUnrecoverable} + + 다시 실행하려면 Hatch에서 실행할 수 있습니다. + messageUnrecoverable: | + **이 기기에서 수정할 수 없는 파일:** + + ${filesNotRecoverable} + + 이 파일들은 메타데이터가 일치하지 않아 이 기기에서 수정할 수 없습니다(대부분 어떤 것이 올바른지 판단할 수 없습니다). + 복원하려면 다른 기기에서도 이 기능으로 확인하거나 백업에서 수동으로 복원하세요. + title: 손상된 파일이 감지되었습니다 + insecureChunkExist: + buttons: + fetch: 원격을 이미 재구축했습니다. 원격에서 가져오기 + later: 나중에 처리 + rebuild: 전체 재구축 + laterMessage: 가능한 한 빨리 처리하는 것을 강력히 권장합니다! + message: > + 일부 청크가 안전하게 저장되지 않았으며 데이터베이스에서 암호화되지 않았습니다. + + **이 문제를 해결하려면 데이터베이스를 재구축하세요**. + + + 원격 데이터베이스가 SSL로 구성되어 있지 않거나 보안이 낮은 자격 증명을 사용하는 경우, **민감한 데이터가 노출될 위험이 + 있습니다**. + + + 참고: 모든 기기에서 Self-hosted LiveSync를 v0.25.6 이상으로 업그레이드하고 Vault를 반드시 백업하세요. + + 참고 2: 전체 재구축과 가져오기는 시간과 트래픽을 어느 정도 사용하므로, 사용량이 적은 시간대에 안정적인 네트워크에서 실행하세요. + title: 안전하지 않은 청크 발견! logBulkSendCorrupted: 청크 일괄 전송이 활성화되었지만, 이 기능에 문제가 있었습니다. 불편을 드려 죄송합니다. 자동으로 비활성화되었습니다. logFetchRemoteTweakFailed: 원격 조정 값을 가져오는데 실패했습니다 logLocalDatabaseNotReady: 문제가 발생했습니다! 로컬 데이터베이스가 준비되지 않았습니다 @@ -443,7 +580,11 @@ More actions: 추가 작업 Move remotely deleted files to the trash, instead of deleting.: 원격에서 삭제된 파일을 삭제하는 대신 휴지통으로 이동합니다. Network warning style: 네트워크 경고 표시 방식 New Remote: 새 원격 +No connected device information found. Cancelling Garbage Collection.: 연결된 기기 정보를 찾을 수 없습니다. Garbage Collection을 취소합니다. No limit configured: 제한이 설정되지 않음 +No, please take me back: 아니요, 이전으로 돌아가겠습니다 +Node ID: 노드 ID +Node Information Missing: 노드 정보 누락 Non-Synchronising files: 동기화하지 않는 파일 Normal Files: 일반 파일 Not all messages have been translated. And, please revert to "Default" when reporting errors.: 모든 메시지가 번역되지 않았습니다. 오류 신고 시 "기본값"으로 되돌려 주세요. @@ -451,8 +592,10 @@ Notify all setting files: 모든 설정 파일 알림 Notify customized: 사용자 설정 알림 Notify when other device has newly customized.: 다른 기기에서 새로운 사용자 설정이 있을 때 알림을 받습니다. Notify when the estimated remote storage size exceeds on start up: 시작 시 예상 원격 스토리지 크기가 초과되면 알림 +Now we can choose how to split the chunks; V3 is the most efficient. If you have troubled, please make this Default or Legacy.: 청크를 분할하는 방식을 선택할 수 있습니다. V3가 가장 효율적입니다. 문제가 있으면 Default 또는 Legacy로 설정하세요. 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.: 한 번에 처리할 일괄 처리 수입니다. 기본값은 40입니다. 최소값은 2입니다. 이는 일괄 크기와 함께 메모리에 보관되는 문서 수를 제어합니다. Number of changes to sync at a time. Defaults to 50. Minimum is 2.: 한 번에 동기화할 변경 사항의 수입니다. 기본값은 50입니다. 최소값은 2입니다. +Obsidian version: Obsidian 버전 obsidianLiveSyncSettingTab: btnApply: 적용 btnCheck: 확인 @@ -482,6 +625,7 @@ obsidianLiveSyncSettingTab: errCorsNotAllowingCredentials: ❗ CORS에서 자격 증명을 허용하지 않습니다 errCorsOrigins: ❗ cors.origins가 잘못되었습니다 errEnableCors: ❗ httpd.enable_cors가 잘못되었습니다 + errEnableCorsChttpd: ❗ chttpd.enable_cors가 잘못되었습니다 errMaxDocumentSize: ❗ couchdb.max_document_size가 낮습니다) errMaxRequestSize: ❗ chttpd.max_http_request_size가 낮습니다) errMissingWwwAuth: ❗ httpd.WWW-Authenticate가 누락되었습니다 @@ -501,7 +645,7 @@ obsidianLiveSyncSettingTab: logCheckingConfigFailed: 구성 확인 실패 logCheckingDbConfig: 데이터베이스 구성 확인 중 logCheckPassphraseFailed: |- - 오류: 원격 서버와 패스프레이즈 확인에 실패했습니다: + 오류: 원격 서버와 패스프레이즈 확인에 실패했습니다: ${db}. logConfiguredDisabled: "구성된 동기화 모드: 비활성화됨" logConfiguredLiveSync: "구성된 동기화 모드: LiveSync" @@ -518,16 +662,18 @@ obsidianLiveSyncSettingTab: logPassphraseNotCompatible: "오류: 패스프레이즈가 원격 서버와 호환되지 않습니다! 다시 확인해 주세요!" logRebuildNote: 동기화가 비활성화되었습니다. 원하는 경우 가져오기 후 다시 활성화하세요. logSelectAnyPreset: 프리셋을 선택하세요. + logServerConfigurationCheck: 서버 구성 확인 로그 msgAreYouSureProceed: 정말로 진행하시겠습니까? msgChangesNeedToBeApplied: 변경사항을 적용해야 합니다! msgConfigCheck: --구성 확인-- msgConfigCheckFailed: 구성 확인에 실패했습니다. 그래도 계속하시겠습니까? msgConnectionCheck: --연결 확인-- msgConnectionProxyNote: 구성 확인 후에도 연결 확인에 문제가 있는 경우, 리버스 프록시 구성을 확인해 주세요. - msgCurrentOrigin: "현재 원점: {origin}" + msgCurrentOrigin: "현재 원점: ${origin}" msgDiscardConfirmation: 정말로 기존 설정과 데이터베이스를 삭제하시겠습니까? msgDone: --완료-- msgEnableCors: httpd.enable_cors 설정 + msgEnableCorsChttpd: cthttpd.enable_cors 설정 msgEnableEncryptionRecommendation: 종단간 암호화와 경로 난독화를 활성화하는 것을 권장합니다. 정말로 암호화 없이 계속하시겠습니까? msgFetchConfigFromRemote: 원격 서버에서 구성을 가져오시겠습니까? msgGenerateSetupURI: 모든 작업이 완료되었습니다! 다른 기기를 설정하기 위해 Setup URI를 생성하시겠습니까? @@ -547,7 +693,7 @@ obsidianLiveSyncSettingTab: 문제가 발생했거나 개선 아이디어가 있으시면 GitHub에 이슈를 등록해 주세요. 기여에 깊이 감사드립니다. - msgOriginCheck: "원점 확인: {org}" + msgOriginCheck: "원점 확인: ${org}" msgRebuildRequired: |- 변경사항을 적용하려면 데이터베이스를 재구축해야 합니다. 아래 중 한 가지 방법을 선택해 주세요. @@ -604,6 +750,7 @@ obsidianLiveSyncSettingTab: okCorsOriginMatched: ✔ CORS 원점 정상 okCorsOrigins: ✔ cors.origins가 정상입니다. okEnableCors: ✔ httpd.enable_cors가 정상입니다. + okEnableCorsChttpd: ✔ chttpd.enable_cors가 정상입니다. okMaxDocumentSize: ✔ couchdb.max_document_size가 정상입니다. okMaxRequestSize: ✔ chttpd.max_http_request_size가 정상입니다. okRequireValidUser: ✔ chttpd.require_valid_user가 정상입니다. @@ -611,12 +758,12 @@ obsidianLiveSyncSettingTab: okWwwAuth: ✔ httpd.WWW-Authenticate가 정상입니다. optionApply: 적용 optionCancel: 취소 - optionCouchDB: CouchDB + optionCouchDB: CouchDB 서버 optionDisableAllAutomatic: 모든 자동 비활성화 optionFetchFromRemote: 원격에서 가져오기 optionHere: 여기 optionLiveSync: LiveSync 동기화 - optionMinioS3R2: Minio,S3,R2 + optionMinioS3R2: MinIO, S3, R2 optionOkReadEverything: 네, 모든 것을 읽었습니다. optionOnEvents: 이벤트 시 optionPeriodicAndEvents: 주기적 및 이벤트 시 @@ -628,6 +775,8 @@ obsidianLiveSyncSettingTab: panelPrivacyEncryption: 개인정보 보호 및 암호화 panelRemoteConfiguration: 원격 구성 panelSetup: 설정 + serverVersion: "서버 정보: ${info}" + titleActiveRemoteServer: 활성 원격 서버 titleAppearance: 외관 titleConflictResolution: 충돌 해결 titleCongratulations: 축하합니다! @@ -655,7 +804,7 @@ obsidianLiveSyncSettingTab: titleSyncSettings: 동기화 설정 titleSyncSettingsViaMarkdown: 마크다운을 통한 동기화 설정 titleUpdateThinning: 업데이트 솎아내기 - warnCorsOriginUnmatched: ⚠ CORS 원점이 일치하지 않습니다 {from}->{to} + warnCorsOriginUnmatched: ⚠ CORS 원점이 일치하지 않습니다 ${from}->${to} warnNoAdmin: ⚠ 관리자 권한이 없습니다. Ok: 확인 Old Algorithm: 이전 알고리즘 @@ -714,9 +863,11 @@ Passphrase of sensitive configuration items: 민감한 구성 항목의 패스 password: 비밀번호 Password: 비밀번호 Paste a connection string: 연결 문자열 붙여넣기 +Paste the Setup URI generated from one of your active devices.: 현재 사용 중인 장치 중 하나에서 생성한 설정 URI를 붙여 넣으세요。 Path Obfuscation: 경로 난독화 Patterns to match files for overwriting instead of merging: 병합 대신 덮어쓸 파일을 판별하는 패턴 Patterns to match files for syncing: 동기화할 파일을 판별하는 패턴 +Peer-to-Peer only: Peer-to-Peer 전용 Peer-to-Peer Synchronisation: 피어 투 피어 동기화 Per-file-saved customization sync: 파일별 저장 사용자 설정 동기화 Perform: 실행 @@ -725,10 +876,26 @@ Perform Garbage Collection: 가비지 컬렉션 실행 Perform Garbage Collection to remove unused chunks and reduce database size.: 사용하지 않는 청크를 제거하고 데이터베이스 크기를 줄이기 위해 가비지 컬렉션을 실행합니다. Periodic Sync interval: 주기적 동기화 간격 Pick a file to resolve conflict: 충돌을 해결할 파일 선택 +Pick a file to show history: 기록을 표시할 파일 선택 +Please disable 'Read chunks online' in settings to use Garbage Collection.: Garbage Collection을 사용하려면 설정에서 "Read chunks online"을 비활성화해 주세요. +Please enable 'Compute revisions for chunks' in settings to use Garbage Collection.: Garbage Collection을 사용하려면 설정에서 "Compute revisions for chunks"를 활성화해 주세요. +Please select 'Cancel' explicitly to cancel this operation.: 이 작업을 취소하려면 반드시 "취소"를 명시적으로 선택해 주세요. +Please select a method to import the settings from another device.: 다른 장치에서 설정을 가져올 방법을 선택해 주세요。 +Please select an option to proceed: 계속하려면 항목을 선택해 주세요 +Please select the type of server to which you are connecting.: 연결할 서버 유형을 선택해 주세요。 Please set device name to identify this device. This name should be unique among your devices. While not configured, we cannot enable this feature.: 이 장치를 식별할 장치 이름을 설정해 주세요. 이 이름은 장치 간에 고유해야 합니다. 설정되기 전까지는 이 기능을 활성화할 수 없습니다. Please set this device name: 이 장치 이름을 설정해 주세요 +Plug-in version: 플러그인 버전 +Prepare the 'report' to create an issue: 이슈 생성을 위한 '보고서' 준비 Presets: 프리셋 +Proceed Garbage Collection: Garbage Collection 계속 +Proceed with Setup URI: 설정 URI로 계속 +Proceeding with Garbage Collection, ignoring missing nodes.: 누락된 노드를 무시하고 Garbage Collection을 계속 진행합니다. +Proceeding with Garbage Collection.: Garbage Collection을 진행합니다. +Process files even if seems to be corrupted: 손상된 것처럼 보이는 파일도 처리 Process small files in the foreground: 포그라운드에서 작은 파일 처리 +Progress: 진행 상태 +Property Encryption: 속성 암호화 PureJS fallback (Fast, W/O WebAssembly): PureJS 대체 방식 (빠름, WebAssembly 없음) Purge all download/upload cache.: 모든 다운로드/업로드 캐시를 제거합니다. Purge all journal counter: 모든 저널 카운터 삭제 @@ -796,6 +963,34 @@ RedFlag: FetchSmoother: 가져오기 전에 로컬 파일 청크 생성 FetchTraditional: 원격에서 모든 것 가져오기 Title: 어떻게 가져오시겠습니까? + FetchRemoteConfig: + Applied: Remote configuration applied. + Buttons: + Cancel: 아니요, 이 장치의 설정 유지 + Fetch: 예, 원격 설정 가져오기 + Retry: Retry (recommended) + SkipAndProceed: Skip and proceed + FailedMessage: Could not fetch configuration from remote. If you are new to the + Self-hosted LiveSync, this might be expected. If not, you should check + your network or server settings. + FailedTitle: Fetch Remote Configuration Failed + MatchesLocal: Remote configuration matches local configuration. No changes applied. + Message: 원격 데이터베이스에서 설정을 가져오시겠습니까? + NotApplied: Remote configuration not applied. + SettingsDiffered: Your settings differed slightly from the server's. The plug-in + has supplemented the incompatible parts with the server settings! + Title: 원격 설정 가져오기 + Log: + FetchEverythingCancelled: Fetch everything cancelled by user. + FetchEverythingCompleted: Fetch everything operation completed. Vault files will be gradually synced. + RebuildEverythingCancelled: Rebuild everything cancelled by user. + RebuildEverythingCompleted: Rebuild everything operation completed. + VaultInitialisationError: Error during vault initialisation. + VaultInitialisationProcessError: Error during vault initialisation process. + ResumeProcessingPrompt: Do you want to resume file and database processing, and restart obsidian now? +Reduces storage space by discarding all non-latest revisions. This requires the same amount of free space on the remote server and the local client.: + 최신 버전이 아닌 모든 리비전을 제거하여 저장 공간을 줄입니다. 이 작업을 수행하려면 원격 서버와 로컬 클라이언트에 동일한 양의 여유 공간이 + 필요합니다. Reducing the frequency with which on-disk changes are reflected into the DB: 디스크 변경 사항이 데이터베이스에 반영되는 빈도를 줄입니다 Region: 지역 Remediation: 복구 조치 @@ -840,6 +1035,9 @@ Replicator: 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: 마법사 다시 실행 Resend: 다시 보내기 Resend all chunks to the remote.: 모든 청크를 원격으로 다시 보냅니다. Reset: 재설정 @@ -847,31 +1045,40 @@ Reset all: 모두 재설정 Reset all journal counter: 모든 저널 카운터 재설정 Reset journal received history: 저널 수신 기록 재설정 Reset journal sent history: 저널 송신 기록 재설정 +Reset notification threshold and check the remote database usage: 알림 임계값을 초기화하고 원격 데이터베이스 사용량 확인 Reset received: 수신 기록 재설정 Reset sent history: 송신 기록 재설정 Reset Synchronisation information: 동기화 정보 재설정 Reset Synchronisation on This Device: 이 장치의 동기화 상태 재설정 +Reset the remote storage size threshold and check the remote storage size again.: 원격 저장소 크기 임계값을 초기화하고 원격 저장소 크기를 다시 확인합니다. Resolve All: 모두 해결 -Resolve all conflicted files: 충돌한 모든 파일 해결 +Resolve all conflicted files: 모든 충돌 파일 해결 Resolve All conflicted files by the newer one: 충돌한 모든 파일을 최신 버전으로 해결 "Resolve all conflicted files by the newer one. Caution: This will overwrite the older one, and cannot resurrect the overwritten one.": "충돌한 모든 파일을 더 최신 버전으로 해결합니다. 주의: 이전 버전은 덮어써지며 복원할 수 없습니다." Restart Now: 지금 재시작 Restore or reconstruct local database from remote.: 원격에서 로컬 데이터베이스를 복원하거나 재구축합니다. +Run Doctor: 진단 실행 +S3/MinIO/R2 Object Storage: S3/MinIO/R2 객체 스토리지 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 a QR Code (Recommended for mobile): QR 코드 스캔(모바일 권장) Scan changes on customization sync: 사용자 설정 동기화 시 변경 사항 검색 Scan customization automatically: 사용자 설정 자동 검색 Scan customization before replicating.: 복제하기 전에 사용자 설정을 검색합니다. Scan customization every 1 minute.: 1분마다 사용자 설정을 검색합니다. Scan customization periodically: 주기적으로 사용자 설정 검색 +Scan for Broken files: 손상된 파일 검사 Scan for hidden files before replication: 복제 전 숨겨진 파일 검색 Scan hidden files periodically: 주기적으로 숨겨진 파일 검색 +Scan the QR code displayed on an active device using this device's camera.: 이 장치의 카메라로 활성 장치에 표시된 QR 코드를 스캔하세요。 Schedule and Restart: 예약 후 재시작 +Scram Switches: 긴급 전환 스위치 Scram!: 긴급 조치 Seconds, 0 to disable: 초 단위, 0으로 설정하면 비활성화 Seconds. Saving to the local database will be delayed until this value after we stop typing or saving.: 초 단위입니다. 타이핑이나 저장을 중단한 후 이 시간동안 로컬 데이터베이스 저장이 지연됩니다. Secret Key: 시크릿 키 Select the database adapter to use.: 사용할 데이터베이스 어댑터를 선택합니다. +Selector: 선택기 Send: 보내기 Send chunks: 청크 보내기 Server URI: 서버 URI @@ -923,115 +1130,120 @@ Setting: SettingTab: Message: AskRebuild: 변경 사항을 적용하려면 원격 데이터베이스에서 가져와야 합니다. 계속 진행하시겠습니까? +Setup URI dialog cancelled.: Setup URI 대화 상자가 취소되었습니다. Setup: + Apply: + Buttons: + ApplyAndFetch: 적용 후 가져오기 + ApplyAndMerge: 적용 후 병합 + ApplyAndRebuild: 적용 후 재구축 + Cancel: 취소 + OnlyApply: 적용만 + Message: 설정이 준비되었습니다. 적용 방법을 선택하세요. + Title: ${method}로 설정 적용 + WarningRebuildRecommended: "주의: 안전한 적용을 위해 데이터베이스 재구축을 권장합니다. 재구축하지 않으면 동기화 문제가 발생할 수 있습니다." + Command: + CopySetupUri: Copy settings as a new setup URI + CopySetupUriFull: Copy settings as a new setup URI (Full) + CopySetupUriWithSync: Copy settings as a new setup URI (With customization sync) + OpenSetupUri: Use the copied setup URI (Formerly Open setup URI) + ShowSettingsQrCode: Show settings as a QR code + Doctor: + Buttons: + No: 아니요 + Yes: "?" + Message: Self-hosted LiveSync가 설정을 확인했습니다. 일부 항목은 조정하는 것이 좋습니다. 계속하시겠습니까? + Title: 설정 진단 + EncryptSettingsPassphrase: The passphrase to encrypt the setup URI + EncryptSettingsTitle: Encrypt your settings + FetchRemoteConf: + Buttons: + Fetch: 예, 원격 설정 가져오기 + Skip: 아니요, URI 설정 사용 + Message: 원격 설정을 가져올 수 있습니다. 가져오면 현재 설정 일부가 원격 설정으로 대체될 수 있습니다. 이 설정을 가져오시겠습니까? + Title: 원격 설정을 가져오시겠습니까? + Log: + ProtocolHandlerRegistrationFailed: Failed to register protocol handler. This + feature may not work in some environments. + SetupUriCopiedToClipboard: Setup URI copied to clipboard QRCode: |- 설정을 전송하기 위한 QR 코드를 생성했습니다. 휴대폰이나 다른 기기로 QR 코드를 스캔해 주세요. 참고: QR 코드는 암호화되지 않았으므로 열 때 주의하세요. >[!FOR YOUR EYES ONLY]- >
${qr_image}
- ShowQRCode: - _value: QR 코드 표시 - Desc: 설정을 전송하기 위한 QR 코드를 표시합니다. + QRCodeTitle: Settings QR Code RemoteE2EE: - Title: 엔드투엔드 암호화 + AdvancedTitle: 고급 + AlgorithmWarning: 암호화 알고리즘을 변경하면 다른 알고리즘으로 암호화된 기존 데이터에 접근할 수 없게 됩니다. 모든 기기에서 + 동일한 알고리즘을 사용하도록 설정해 데이터 접근성을 유지하세요. + ButtonCancel: 취소 + ButtonProceed: 진행 + DefaultAlgorithmDesc: 대부분의 경우 기본 알고리즘(${algorithm})을 그대로 사용하는 것이 좋습니다. 이 설정은 기존 + Vault가 다른 형식으로 암호화되어 있는 경우에만 필요합니다. Guidance: 엔드투엔드 암호화 설정을 구성해 주세요. LabelEncrypt: 엔드투엔드 암호화 + LabelEncryptionAlgorithm: 암호화 알고리즘 + LabelObfuscateProperties: 속성 난독화 + MultiDestinationWarning: 여러 동기화 대상에 연결하는 경우에도 이 설정은 동일해야 합니다. + ObfuscatePropertiesDesc: "속성(예: 파일 경로, 크기, 생성일 및 수정일)을 난독화하면 원격 서버에서 파일과 폴더의 구조 + 및 이름을 식별하기 어렵게 만들어 보안을 한층 강화할 수 있습니다. 이는 개인 정보를 보호하고 권한 없는 사용자가 데이터에 관한 + 정보를 추론하기 어렵게 만듭니다." + PassphraseValidationLine1: 엔드투엔드 암호화 패스프레이즈는 실제 동기화가 시작되기 전까지 검증되지 않는다는 점에 + 유의하세요. 이것은 데이터를 보호하기 위한 보안 조치입니다. + PassphraseValidationLine2: 따라서 서버 정보를 수동으로 구성할 때는 각별히 주의해 주세요. 잘못된 패스프레이즈를 입력하면 + 서버의 데이터가 손상됩니다. 이는 의도된 동작이니 반드시 이해하고 진행해 주세요. PlaceholderPassphrase: 패스프레이즈를 입력하세요 + StronglyRecommendedLine1: 엔드투엔드 암호화를 활성화하면 데이터가 원격 서버로 전송되기 전에 이 기기에서 암호화됩니다. 즉, + 누군가 서버에 접근하더라도 패스프레이즈 없이는 데이터를 읽을 수 없습니다. 다른 기기에서 데이터를 복호화할 때도 필요하므로 + 패스프레이즈를 반드시 기억해 두세요. + StronglyRecommendedLine2: 또한 Peer-to-Peer 동기화를 사용 중이더라도, 나중에 다른 방식으로 전환하여 원격 서버에 + 연결하면 이 설정이 그대로 사용됩니다. StronglyRecommendedTitle: 강력 권장 - StronglyRecommendedLine1: 엔드투엔드 암호화를 활성화하면 데이터가 원격 서버로 전송되기 전에 이 기기에서 암호화됩니다. 즉, 누군가 서버에 접근하더라도 패스프레이즈 없이는 데이터를 읽을 수 없습니다. 다른 기기에서 데이터를 복호화할 때도 필요하므로 패스프레이즈를 반드시 기억해 두세요. - StronglyRecommendedLine2: 또한 Peer-to-Peer 동기화를 사용 중이더라도, 나중에 다른 방식으로 전환하여 원격 서버에 연결하면 이 설정이 그대로 사용됩니다. - MultiDestinationWarning: 여러 동기화 대상에 연결하는 경우에도 이 설정은 동일해야 합니다. - LabelObfuscateProperties: 속성 난독화 - ObfuscatePropertiesDesc: >- - 속성(예: 파일 경로, 크기, 생성일 및 수정일)을 난독화하면 원격 서버에서 파일과 폴더의 구조 및 이름을 식별하기 어렵게 만들어 보안을 한층 강화할 수 있습니다. 이는 개인 정보를 보호하고 권한 없는 사용자가 데이터에 관한 정보를 추론하기 어렵게 만듭니다. - AdvancedTitle: 고급 - LabelEncryptionAlgorithm: 암호화 알고리즘 - DefaultAlgorithmDesc: 대부분의 경우 기본 알고리즘(${algorithm})을 그대로 사용하는 것이 좋습니다. 이 설정은 기존 Vault가 다른 형식으로 암호화되어 있는 경우에만 필요합니다. - AlgorithmWarning: 암호화 알고리즘을 변경하면 다른 알고리즘으로 암호화된 기존 데이터에 접근할 수 없게 됩니다. 모든 기기에서 동일한 알고리즘을 사용하도록 설정해 데이터 접근성을 유지하세요. - PassphraseValidationLine1: 엔드투엔드 암호화 패스프레이즈는 실제 동기화가 시작되기 전까지 검증되지 않는다는 점에 유의하세요. 이것은 데이터를 보호하기 위한 보안 조치입니다. - PassphraseValidationLine2: 따라서 서버 정보를 수동으로 구성할 때는 각별히 주의해 주세요. 잘못된 패스프레이즈를 입력하면 서버의 데이터가 손상됩니다. 이는 의도된 동작이니 반드시 이해하고 진행해 주세요. - ButtonProceed: 진행 - ButtonCancel: 취소 - UseSetupURI: - Title: Setup URI 입력 - GuidanceLine1: 서버 설치 중 또는 다른 기기에서 생성된 Setup URI와 Vault 패스프레이즈를 입력해 주세요. - GuidanceLine2: 명령 팔레트에서 "설정을 새 Setup URI로 복사" 명령을 실행하면 새 Setup URI를 생성할 수 있습니다. - LabelSetupURI: Setup URI - ValidInfo: Setup URI가 유효하며 사용할 준비가 되었습니다. - InvalidInfo: Setup URI가 올바르지 않습니다. 확인한 뒤 다시 시도해 주세요. - LabelPassphrase: Vault 패스프레이즈 - PlaceholderPassphrase: Vault 패스프레이즈를 입력하세요 - ErrorPassphraseRequired: Vault 패스프레이즈를 입력해 주세요. - ErrorFailedToParse: Setup URI를 해석하지 못했습니다. URI와 패스프레이즈를 확인해 주세요. - ButtonProceed: 설정 테스트 후 계속 - ButtonCancel: 취소 + Title: 엔드투엔드 암호화 ScanQRCode: - Title: QR 코드 스캔 + ButtonClose: 이 대화 상자 닫기 Guidance: 기존 기기에서 설정을 가져오려면 아래 단계를 따라 주세요. Step1: 이 기기에서는 이 Vault를 계속 열어 두세요. Step2: 원본 기기에서 Obsidian을 엽니다. Step3: 원본 기기에서 명령 팔레트를 열고 "설정을 QR 코드로 표시" 명령을 실행합니다. Step4: 이 기기에서 카메라 앱으로 전환하거나 QR 코드 스캐너를 사용해 표시된 QR 코드를 스캔하세요. - ButtonClose: 이 대화 상자 닫기 -"Please enable 'Compute revisions for chunks' in settings to use Garbage Collection.": Garbage Collection을 사용하려면 설정에서 "Compute revisions for chunks"를 활성화해 주세요. -"Please disable 'Read chunks online' in settings to use Garbage Collection.": Garbage Collection을 사용하려면 설정에서 "Read chunks online"을 비활성화해 주세요. -"Setup URI dialog cancelled.": Setup URI 대화 상자가 취소되었습니다. -"Please select 'Cancel' explicitly to cancel this operation.": 이 작업을 취소하려면 반드시 "취소"를 명시적으로 선택해 주세요. -"Failed to connect to remote for compaction.": 압축을 위해 원격 데이터베이스에 연결하지 못했습니다. -"Failed to connect to remote for compaction. ${reason}": 압축을 위해 원격 데이터베이스에 연결하지 못했습니다. ${reason} -"Compaction in progress on remote database...": 원격 데이터베이스에서 압축을 진행 중입니다... -"Compaction on remote database timed out.": 원격 데이터베이스 압축 시간이 초과되었습니다. -"Compaction on remote database completed successfully.": 원격 데이터베이스 압축이 성공적으로 완료되었습니다. -"Compaction on remote database failed.": 원격 데이터베이스 압축에 실패했습니다. -"Failed to start one-shot replication before Garbage Collection. Garbage Collection Cancelled.": Garbage Collection 전에 일회성 복제를 시작하지 못했습니다. Garbage Collection을 취소합니다. -"Cancel Garbage Collection": Garbage Collection 취소 -"No connected device information found. Cancelling Garbage Collection.": 연결된 기기 정보를 찾을 수 없습니다. Garbage Collection을 취소합니다. -"The following accepted nodes are missing its node information:\n- ${missingNodes}\n\nThis indicates that they have not been connected for some time or have been left on an older version.\nIt is preferable to update all devices if possible. If you have any devices that are no longer in use, you can clear all accepted nodes by locking the remote once.": |- - 다음 승인된 노드에는 노드 정보가 없습니다: - - ${missingNodes} - - 이는 해당 노드가 한동안 연결되지 않았거나 이전 버전에 머물러 있음을 의미합니다. - 가능하다면 먼저 모든 기기를 업데이트하는 것이 좋습니다. 더 이상 사용하지 않는 기기가 있다면 원격을 한 번 잠가 승인된 노드를 모두 정리할 수 있습니다. -"Ignore and Proceed": 무시하고 계속 -"Node Information Missing": 노드 정보 누락 -"Garbage Collection cancelled by user.": 사용자가 Garbage Collection을 취소했습니다. -"Proceeding with Garbage Collection, ignoring missing nodes.": 누락된 노드를 무시하고 Garbage Collection을 계속 진행합니다. -"Proceed Garbage Collection": Garbage Collection 계속 -"> [!INFO]- The connected devices have been detected as follows:\n${devices}": |- - > [!INFO]- 다음 연결된 기기가 감지되었습니다: - ${devices} -"Device": 기기 -"Node ID": 노드 ID -"Obsidian version": Obsidian 버전 -"Plug-in version": 플러그인 버전 -"Progress": 진행 상태 -"Some devices have differing progress values (max: ${maxProgress}, min: ${minProgress}).\nThis may indicate that some devices have not completed synchronisation, which could lead to conflicts. Strongly recommend confirming that all devices are synchronised before proceeding.": |- - 일부 기기의 진행 값이 다릅니다(최대: ${maxProgress}, 최소: ${minProgress}). - 이는 일부 기기가 동기화를 완료하지 않았음을 의미할 수 있으며, 충돌로 이어질 수 있습니다. 계속 진행하기 전에 모든 기기가 동기화되었는지 반드시 확인하는 것을 강력히 권장합니다. -"All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.": 모든 기기의 진행 값이 동일합니다(${progress}). 기기들이 동기화된 것으로 보이므로 Garbage Collection을 진행할 수 있습니다. -"Garbage Collection Confirmation": Garbage Collection 확인 -"Proceeding with Garbage Collection.": Garbage Collection을 진행합니다. -"Garbage Collection: Scanned ${scanned} / ~${docCount}": |- - Garbage Collection: ${scanned} / ~${docCount} 스캔됨 -"Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": |- - Garbage Collection: 스캔 완료. 전체 청크 수: ${totalChunks}, 사용 중인 청크 수: ${usedChunks} -"Garbage Collection: Found ${unusedChunks} unused chunks to delete.": |- - Garbage Collection: 삭제할 미사용 청크 ${unusedChunks}개를 찾았습니다. -"Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.": |- - Garbage Collection이 완료되었습니다. 삭제된 청크: ${deletedChunks} / ${totalChunks}. 소요 시간: ${seconds}초. -"Failed to start replication after Garbage Collection.": Garbage Collection 후 복제를 시작하지 못했습니다. + Title: QR 코드 스캔 + SetupUri: Setup URI + ShowQRCode: + _value: QR 코드 표시 + Desc: 설정을 전송하기 위한 QR 코드를 표시합니다. + UseSetupURI: + ButtonCancel: 취소 + ButtonProceed: 설정 테스트 후 계속 + ErrorFailedToParse: Setup URI를 해석하지 못했습니다. URI와 패스프레이즈를 확인해 주세요. + ErrorPassphraseRequired: Vault 패스프레이즈를 입력해 주세요. + GuidanceLine1: 서버 설치 중 또는 다른 기기에서 생성된 Setup URI와 Vault 패스프레이즈를 입력해 주세요. + GuidanceLine2: 명령 팔레트에서 "설정을 새 Setup URI로 복사" 명령을 실행하면 새 Setup URI를 생성할 수 있습니다. + InvalidInfo: Setup URI가 올바르지 않습니다. 확인한 뒤 다시 시도해 주세요. + LabelPassphrase: Vault 패스프레이즈 + LabelSetupURI: Setup URI + PlaceholderPassphrase: Vault 패스프레이즈를 입력하세요 + Title: Setup URI 입력 + ValidInfo: Setup URI가 유효하며 사용할 준비가 되었습니다. Should we keep folders that don't have any files inside?: 내부에 파일이 없는 폴더를 유지하시겠습니까? Should we only check for conflicts when a file is opened?: 파일을 열 때만 충돌을 확인하시겠습니까? 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?: 안전하게 자동 병합할 수 있는 경우에도 모든 병합에 대해 알림을 받으시겠습니까? Show full banner: 전체 배너 표시 +Show history: 기록 보기 +Show icon only: 아이콘만 표시 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.: 자세한 로그를 표시합니다. 문제를 신고하는 경우 활성화해 주세요. +"Some devices have differing progress values (max: ${maxProgress}, min: ${minProgress}).\nThis may indicate that some devices have not completed synchronisation, which could lead to conflicts. Strongly recommend confirming that all devices are synchronised before proceeding.": >- + 일부 기기의 진행 값이 다릅니다(최대: ${maxProgress}, 최소: ${minProgress}). + + 이는 일부 기기가 동기화를 완료하지 않았음을 의미할 수 있으며, 충돌로 이어질 수 있습니다. 계속 진행하기 전에 모든 기기가 동기화되었는지 + 반드시 확인하는 것을 강력히 권장합니다. Starts synchronisation when a file is saved.: 파일이 저장될 때 동기화를 시작합니다. Stop reflecting database changes to storage files.: 데이터베이스 변경 사항을 스토리지 파일에 반영하는 것을 중단합니다. Stop watching for file changes.: 파일 변경 사항 감시를 중단합니다. @@ -1047,15 +1259,32 @@ Sync on Editor Save: 편집기 저장 시 동기화 Sync on File Open: 파일 열기 시 동기화 Sync on Save: 저장 시 동기화 Sync on Startup: 시작 시 동기화 +Synchronisation utilising journal files. You must have set up an S3/MinIO/R2 compatible object storage.: 저널 파일을 활용하는 동기화 방식입니다. S3/MinIO/R2 호환 객체 스토리지를 미리 구성해야 합니다。 Synchronising files: 동기화할 파일 Syncing: 동기화 Target patterns: 대상 패턴 Testing only - Resolve file conflicts by syncing newer copies of the file, this can overwrite modified files. Be Warned.: 테스트 전용 - 파일의 새로운 사본을 동기화하여 파일 충돌을 해결하며, 수정된 파일을 덮어쓸 수 있습니다. 주의하세요. The delay for consecutive on-demand fetches: 연속 청크 요청 간 대기 시간 +"The following accepted nodes are missing its node information:\n- ${missingNodes}\n\nThis indicates that they have not been connected for some time or have been left on an older version.\nIt is preferable to update all devices if possible. If you have any devices that are no longer in use, you can clear all accepted nodes by locking the remote once.": >- + 다음 승인된 노드에는 노드 정보가 없습니다: + + - ${missingNodes} + + + 이는 해당 노드가 한동안 연결되지 않았거나 이전 버전에 머물러 있음을 의미합니다. + + 가능하다면 먼저 모든 기기를 업데이트하는 것이 좋습니다. 더 이상 사용하지 않는 기기가 있다면 원격을 한 번 잠가 승인된 노드를 모두 정리할 + 수 있습니다. The Hash algorithm for chunk IDs: 청크 ID용 해시 알고리즘 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 feature enables direct synchronisation between devices. No server is required, but both devices must be online at the same time for synchronisation to occur, and some features may be limited. Internet connection is only required to signalling (detecting peers) and not for data transfer.: + 이 기능은 장치 간 직접 동기화를 제공합니다. 서버는 필요 없지만 동기화가 이루어지려면 두 장치가 동시에 온라인 상태여야 하며 일부 기능은 + 제한될 수 있습니다. 인터넷 연결은 시그널링(피어 감지)에만 필요하며 데이터 전송 자체에는 필요하지 않습니다。 +This is an advanced option for users who do not have a URI or who wish to configure detailed settings.: URI가 없거나 세부 설정을 직접 구성하려는 사용자를 위한 고급 옵션입니다。 +This is the most suitable synchronisation method for the design. All functions are available. You must have set up a CouchDB instance.: 이 설계에 가장 적합한 동기화 방식입니다. 모든 기능을 사용할 수 있습니다. CouchDB 인스턴스를 미리 구성해야 합니다。 This passphrase will not be copied to another device. It will be set to `Default` until you configure it again.: 이 패스프레이즈는 다른 기기로 복사되지 않습니다. 다시 구성할 때까지 `기본값`으로 설정됩니다. This will recreate chunks for all files. If there were missing chunks, this may fix the errors.: 모든 파일의 청크를 다시 생성합니다. 누락된 청크가 있었다면 이 작업으로 오류가 해결될 수 있습니다. Transfer Tweak: 전송 조정 @@ -1133,16 +1362,506 @@ TweakMismatchResolve: _value: 구성 불일치 감지 TweakResolving: 구성 불일치 감지 UseRemoteConfig: 원격 구성 사용 +Ui: + Bucket: + Guidance: S3/MinIO/R2 원격 저장소 연결 정보를 입력하세요. + Common: + Signal: + Caution: 주의 + Danger: 위험 + Notice: 알림 + Warning: 경고 + ConflictResolver: + FileToResolve: 해결할 파일 + CouchDB: + Guidance: CouchDB 연결 정보를 입력하세요. + History: + FileToView: 볼 파일 + P2P: + Guidance: P2P 연결을 설정하세요. + RemoteE2EE: + AdvancedTitle: 고급 + AlgorithmWarning: 알고리즘을 변경하면 기존 데이터와 호환되지 않을 수 있습니다. + ButtonCancel: 취소 + ButtonProceed: 진행 + DefaultAlgorithmDesc: 기본 알고리즘은 대부분의 경우 권장됩니다. + Guidance: 원격 암호화를 설정하세요. + LabelEncrypt: 암호화 사용 + LabelEncryptionAlgorithm: 암호화 알고리즘 + LabelObfuscateProperties: 속성 난독화 + ManualWarning: 수동 설정은 고급 사용자용입니다. 모든 장치에서 동일한 설정을 사용해야 합니다. + MultiDestinationWarning: 여러 원격 대상을 사용하는 경우 모든 대상의 암호화 설정을 일치시켜야 합니다. + ObfuscatePropertiesDesc: 파일 속성 이름을 난독화하여 원격 데이터베이스에 저장되는 정보를 줄입니다. + PassphraseValidationLine1: 이 암호문은 모든 장치에서 동일해야 합니다. + PassphraseValidationLine2: 암호문을 잊으면 기존 원격 데이터를 읽을 수 없습니다. + PlaceholderPassphrase: 암호문 입력 + StronglyRecommended: 동기화 기능을 사용하는 경우 암호화를 강력히 권장합니다. + StronglyRecommendedLine1: 동기화 기능을 사용하는 경우 암호화를 강력히 권장합니다. + StronglyRecommendedLine2: 특히 P2P 이외의 원격 저장소를 사용하는 경우 원격 서버 관리자가 데이터를 볼 수 없도록 보호합니다. + StronglyRecommendedTitle: 강력 권장 + Title: 원격 암호화 + WarningSameSetting: 이 설정은 모든 장치에서 동일해야 합니다. + ScanQRCode: + ButtonClose: 닫기 + Guidance: 다른 장치에서 표시한 QR 코드를 스캔하세요. + Instruction: 카메라로 QR 코드를 스캔하세요. + Step1: 다른 장치에서 이 Vault를 엽니다. + Step2: 다른 장치에서 Obsidian을 엽니다. + Step3: 다른 장치의 설정에서 'QR 코드 표시'를 선택합니다. + Step4: 이 장치에서 표시된 QR 코드를 스캔합니다. + Title: QR 코드 스캔 + Settings: + Advanced: + LocalDatabaseTweak: 로컬 데이터베이스 조정 + MemoryCache: 메모리 캐시 + TransferTweak: 전송 조정 + Common: + Analyse: 분석 + Back: 뒤로 + Check: 확인 + Configure: 구성 + Delete: 삭제 + Lock: 잠금 + Open: 열기 + Perform: 실행 + ResetAll: 모두 초기화 + ResolveAll: 모두 해결 + Send: 보내기 + VerifyAll: 모두 확인 + CustomizationSync: + OpenDesc: 대화 상자를 엽니다 + Panel: 사용자 지정 동기화 + WarnChangeDeviceName: 기기 이름 변경 경고 + WarnSetDeviceName: 기기 이름 설정 경고 + Hatch: + AnalyseDatabaseUsage: 데이터베이스 사용량 분석 + AnalyseDatabaseUsageDesc: 데이터베이스 사용량을 분석하고 직접 진단할 수 있는 TSV 보고서를 생성합니다. 생성된 보고서를 + 원하는 스프레드시트에 붙여 넣을 수 있습니다. + BackToNonConfigured: 미구성 상태로 되돌리기 + ConvertNonObfuscated: 경로가 난독화되지 않은 파일 확인 및 변환 + ConvertNonObfuscatedDesc: 로컬 데이터베이스에서 경로 난독화 없이 저장된 파일을 확인하고 필요하면 변환합니다. + CopyIssueReport: 보고서를 클립보드에 복사 + DatabaseLabel: "데이터베이스: ${details}" + DatabaseToStorage: 데이터베이스 -> 스토리지 + DeleteCustomizationSyncData: 모든 사용자 지정 동기화 데이터 삭제 + GeneratedReport: 생성된 보고서 + Missing: 누락됨 + ModifiedSize: 수정된 크기 + ModifiedSizeActual: 실제 수정된 크기 + PrepareIssueReport: 이슈 생성을 위한 보고서 준비 + RecoveryAndRepair: 복구 및 복원 + RecreateAll: 모두 다시 생성 + RecreateMissingChunks: 모든 파일의 누락된 청크 다시 생성 + RecreateMissingChunksDesc: 모든 파일의 청크를 다시 생성합니다. 누락된 청크가 있었다면 오류가 해결될 수 있습니다. + ResetPanel: 초기화 + ResetRemoteUsage: 알림 임계값을 초기화하고 원격 데이터베이스 사용량 확인 + ResetRemoteUsageDesc: 원격 저장소 크기 임계값을 초기화하고 원격 저장소 크기를 다시 확인합니다. + ResolveAllConflictedFiles: 모든 충돌 파일을 더 최신 버전으로 해결 + ResolveAllConflictedFilesDesc: "모든 충돌 파일을 더 최신 버전으로 해결합니다. 주의: 이전 버전을 덮어쓰며 덮어쓴 내용은 복구할 수 없습니다." + RunDoctor: Doctor 실행 + ScanBrokenFiles: 손상된 파일 스캔 + ScramSwitches: 긴급 중지 스위치 + ShowHistory: 기록 표시 + StorageLabel: "스토리지: ${details}" + StorageToDatabase: 스토리지 -> 데이터베이스 + VerifyAndRepairAllFiles: 모든 파일 검증 및 복구 + VerifyAndRepairAllFilesDesc: 로컬 데이터베이스와 저장소의 파일 내용을 비교합니다. 일치하지 않으면 어느 쪽을 유지할지 묻습니다. + Maintenance: + Cleanup: 정리 수행 + CleanupDesc: 최신이 아닌 모든 리비전을 버려 저장 공간을 줄입니다. 원격 서버와 로컬 클라이언트 모두에 같은 양의 여유 공간이 필요합니다. + DeleteLocalDatabase: Self-hosted LiveSync를 초기화하거나 제거하기 위해 로컬 데이터베이스 삭제 + EmergencyRestart: 긴급 재시작 + EmergencyRestartDesc: 모든 동기화를 비활성화하고 다시 시작합니다. + FreshStartWipe: 새로 시작을 위한 삭제 + FreshStartWipeDesc: 원격 서버의 모든 데이터를 삭제합니다. + GarbageCollection: 가비지 컬렉션 V3 (베타) + GarbageCollectionAction: 가비지 컬렉션 실행 + GarbageCollectionDesc: 가비지 컬렉션을 수행하여 사용하지 않는 청크를 제거하고 데이터베이스 크기를 줄입니다. + LockServer: 서버 잠금 + LockServerDesc: 다른 기기와 동기화되지 않도록 원격 서버를 잠급니다. + OverwriteRemote: 원격 덮어쓰기 + OverwriteRemoteDesc: 로컬 DB와 암호 구문으로 원격을 덮어씁니다. + OverwriteServerData: 이 기기의 파일로 서버 데이터 덮어쓰기 + OverwriteServerDataDesc: 이 기기의 파일로 로컬 및 원격 데이터베이스를 다시 빌드합니다. + PurgeAllJournalCounter: 모든 저널 카운터 비우기 + PurgeAllJournalCounterDesc: 모든 다운로드 및 업로드 캐시를 비웁니다. + RebuildingOperations: 재구축 작업 (원격 전용) + Resend: 다시 보내기 + ResendDesc: 모든 청크를 원격으로 다시 보냅니다. + Reset: 초기화 + ResetAllJournalCounter: 모든 저널 카운터 초기화 + ResetAllJournalCounterDesc: 모든 저널 기록을 초기화합니다. 다음 동기화 때 모든 항목을 다시 받고 다시 보냅니다. + ResetJournalReceived: 저널 수신 기록 초기화 + ResetJournalReceivedDesc: 저널 수신 기록을 초기화합니다. 다음 동기화 때 이 기기에서 보낸 항목을 제외한 모든 항목을 다시 다운로드합니다. + ResetJournalSent: 저널 전송 기록 초기화 + ResetJournalSentDesc: 저널 전송 기록을 초기화합니다. 다음 동기화 때 이 기기에서 받은 항목을 제외한 모든 항목을 다시 보냅니다. + ResetLocalSyncInfo: 동기화 정보 초기화 + ResetLocalSyncInfoDesc: 원격에서 로컬 데이터베이스를 복원하거나 재구성합니다. + ResetReceived: 수신 기록 초기화 + ResetSentHistory: 전송 기록 초기화 + ResetThisDevice: 이 기기의 동기화 초기화 + ScheduleAndRestart: 예약 후 다시 시작 + Scram: 긴급 처리 + SendChunks: 청크 전송 + Syncing: 동기화 + WarningLockedReadyAction: 경고 잠금 준비 동작 + WarningLockedReadyText: 경고 잠금 준비 설명 + WarningLockedResolveAction: 경고 잠금 해결 동작 + WarningLockedResolveText: 경고 잠금 해결 설명 + WriteRedFlagAndRestart: Red Flag 기록 후 다시 시작 + Patches: + CompatibilityConflict: 호환성(충돌 동작) + CompatibilityDatabase: 호환성(데이터베이스 구조) + CompatibilityInternalApi: 호환성(내부 API 사용) + CompatibilityMetadata: 호환성(메타데이터) + CompatibilityRemote: 호환성(원격 데이터베이스) + CompatibilityTrouble: 호환성(처리된 문제) + CurrentAdapter: "현재 어댑터: ${adapter}" + DatabaseAdapter: 데이터베이스 어댑터 + DatabaseAdapterDesc: 사용할 데이터베이스 어댑터를 선택합니다. + EdgeCaseBehaviour: 예외 상황 처리(동작) + EdgeCaseDatabase: 예외 상황 처리(데이터베이스) + EdgeCaseProcessing: 예외 상황 처리(처리) + IndexedDbWarning: IndexedDB 경고 + MigratingToIdb: IDB로 마이그레이션 중 + MigratingToIndexedDb: IndexedDB로 마이그레이션 중 + MigrationIdbCompleted: IDB 마이그레이션 완료 + MigrationIdbCompletedFollowUp: IDB 마이그레이션 완료 후속 조치 + MigrationIndexedDbCompleted: IndexedDB 마이그레이션 완료 + MigrationIndexedDbCompletedFollowUp: IndexedDB 마이그레이션 완료 후속 조치 + MigrationWarning: 마이그레이션 경고 + OperationToIdb: IDB로 전환 + OperationToIndexedDb: IndexedDB로 전환 + Remediation: 수정 + RemediationChanged: 수정 값이 변경됨 + RemediationNoLimit: 제한 없음 + RemediationRestarting: 다시 시작하는 중... + RemediationRestartLater: 나중에 다시 시작 + RemediationRestartMessage: 변경 사항을 적용하려면 Obsidian을 다시 시작해야 합니다. + RemediationRestartNow: 지금 다시 시작 + RemediationSuffixChanged: 변경됨 + RemediationWithValue: "값: ${date} (${timestamp})" + RemoteDatabaseSunset: 원격 데이터베이스 조정(지원 종료 예정) + SwitchToIDB: IDB로 전환 + SwitchToIndexedDb: IndexedDB로 전환 + PowerUsers: + ConfigurationEncryption: 구성 암호화 + ConnectionTweak: CouchDB 연결 조정 + ConnectionTweakDesc: 연결 관련 세부 동작을 조정합니다. 문제가 있을 때만 변경하세요. + Default: 기본값 + Developer: 개발자 + EncryptSensitiveConfig: 민감한 구성 항목 암호화 + PromptPassphraseEveryLaunch: 시작할 때마다 암호 구문 요청 + UseCustomPassphrase: 사용자 지정 암호 구문 사용 + Remote: + Activate: 활성화 + ActiveSuffix: (활성) + AddConnection: 연결 추가 + AddRemoteDefaultName: 새 원격 + ConfigureAndChangeRemote: 원격 구성 및 변경 + ConfigureE2EE: E2EE 구성 + ConfigureRemote: 원격 구성 + DeleteRemoteConfirm: 원격 구성 "${name}"을 삭제하시겠습니까? + DeleteRemoteTitle: 원격 구성 삭제 + DisplayName: 표시 이름 + DuplicateRemote: 원격 복제 + DuplicateRemoteSuffix: (복사본) + E2EEConfiguration: E2EE 구성 + Export: 내보내기 + FetchRemoteSettings: 원격 설정 가져오기 + ImportConnection: 연결 가져오기 + ImportConnectionPrompt: 가져올 연결 설정을 입력하세요. + ImportedCouchDb: 가져온 CouchDB + ImportedRemote: 가져온 원격 + MoreActions: 추가 작업 + PeerToPeerPanel: 피어 투 피어 동기화 + RemoteConfigurationPrefix: 원격 구성 + RemoteDatabases: 원격 데이터베이스 + RemoteName: 원격 이름 + RemoteNameCouchDb: CouchDB 원격 + RemoteNameP2P: P2P 원격 + RemoteNameS3: S3/MinIO/R2 원격 + Rename: 이름 변경 + Selector: + AddDefaultPatterns: 기본 패턴 추가 + CrossPlatform: 크로스 플랫폼 + Default: 기본값 + HiddenFiles: 숨김 파일 + IgnorePatterns: 무시 패턴 + NonSynchronisingFiles: 동기화하지 않는 파일 + NonSynchronisingFilesDesc: (RegExp) 이 값을 설정하면 로컬 및 원격 파일 중 일치하는 변경 사항을 건너뜁니다. + NormalFiles: 일반 파일 + OverwritePatterns: 덮어쓰기 패턴 + OverwritePatternsDesc: 병합 대신 덮어쓸 파일을 찾는 패턴 + SynchronisingFiles: 동기화할 파일 + SynchronisingFilesDesc: (RegExp) 비워 두면 모든 파일을 동기화합니다. 동기화할 파일을 제한하려면 정규식 필터를 설정합니다. + TargetPatterns: 대상 패턴 + TargetPatternsDesc: 동기화할 파일을 찾는 패턴 + Setup: + RerunWizardButton: 마법사 다시 실행 + RerunWizardDesc: 온보딩 마법사를 다시 실행하여 Self-hosted LiveSync를 다시 설정합니다. + RerunWizardName: 온보딩 마법사 다시 실행 + SyncSettings: + Fetch: 가져오기 + Merge: 병합 + Overwrite: 덮어쓰기 + SetupWizard: + Bucket: + AccessKeyId: 액세스 키 ID + BucketName: 버킷 이름 + EndpointUrl: 엔드포인트 URL + FolderPrefix: Folder Prefix + FolderPrefixDesc: 버킷 내 특정 폴더에 데이터를 저장하려면 여기에 폴더 접두사를 지정할 수 있습니다. 비워 두면 버킷 루트에 저장됩니다. + InternalApiDesc: CORS 문제를 피할 수 없다면 이 옵션을 시도할 수 있습니다. Obsidian의 내부 API를 사용해 S3 + 서버와 통신합니다. 웹 표준을 따르지는 않지만 동작합니다. 향후 Obsidian 버전에서 깨질 수 있습니다. + PlaceholderAccessKeyId: 액세스 키 ID 입력 + PlaceholderBucketName: 버킷 이름 입력 + PlaceholderFolderPrefix: 폴더 접두사 입력 (선택 사항) + PlaceholderRegion: "리전 입력 (예: us-east-1, R2는 auto)" + PlaceholderSecretAccessKey: 비밀 액세스 키 입력 + Region: 리전 + SecretAccessKey: 비밀 액세스 키 + Title: S3/MinIO/R2 구성 + UseInternalApi: 내부 API 사용 + UsePathStyleAccess: 경로 스타일 액세스 사용 + Common: + AdvancedSettings: 고급 설정 + Back: 뒤로 + Cancel: 취소 + CheckingConnection: 연결을 확인하는 중입니다. 잠시 기다려 주세요. + ContinueAnyway: 그래도 계속 + CustomHeaders: 사용자 지정 헤더 + ErrorConnectionTest: "연결 테스트 중 오류가 발생했습니다: ${error}" + ErrorConnectServer: 서버에 연결하지 못했습니다. 설정을 확인하세요. + ErrorConnectServerDetail: "서버에 연결하지 못했습니다: ${error}" + ErrorCreateReplicator: 복제기 인스턴스를 만들지 못했습니다. + ExperimentalSettings: 실험적 설정 + HttpsOnlyMobile: Obsidian 모바일에서는 보안 연결(HTTPS)만 사용할 수 있습니다. + ProceedSelectOption: 옵션을 선택해 주세요 + CouchDB: + DatabaseName: 데이터베이스 이름 + DatabaseNameDesc: 데이터베이스 이름에는 대문자, 공백, 특수 문자를 사용할 수 없습니다. 밑줄(_)로 시작할 수도 없습니다. + InternalApiDesc: CORS 문제를 피할 수 없다면 이 옵션을 시도할 수 있습니다. Obsidian의 내부 API를 사용해 + CouchDB 서버와 통신합니다. 웹 표준을 따르지는 않지만 동작합니다. 향후 Obsidian 버전에서 깨질 수 있습니다. + JwtAlgorithm: JWT 알고리즘 + JwtExpirationDuration: JWT 만료 시간(분) + JwtKey: JWT 키 + JwtKeyDesc: HS256/HS512 알고리즘에는 공유 비밀 키를 입력하세요. ES256/ES512 알고리즘에는 pkcs8 PEM 형식의 + 개인 키를 입력하세요. + JwtKeyId: JWT Key ID (kid) + JwtSubject: JWT Subject (sub) + JwtWarning: JWT(JSON Web Token) 인증을 사용하면 토큰으로 CouchDB 서버에 안전하게 인증할 수 있습니다. + CouchDB 서버가 JWT를 허용하도록 구성되어 있고 제공한 키와 설정이 서버 구성과 일치하는지 확인하세요. 이 기능은 아직 + 충분히 검증되지 않았습니다. + Password: 비밀번호 + PlaceholderDatabaseName: 데이터베이스 이름 입력 + PlaceholderJwtKey: JWT 비밀 키 또는 개인 키 입력 + PlaceholderJwtKeyId: JWT Key ID 입력 + PlaceholderJwtSubject: JWT Subject(CouchDB 사용자 이름) 입력 + PlaceholderPassword: 비밀번호 입력 + PlaceholderUsername: 사용자 이름 입력 + Title: CouchDB 구성 + Url: 서버 URL + UseInternalApi: 내부 API 사용 + UseJwtAuthentication: JWT 인증 사용 + Username: 사용자 이름 + CouchDBCheck: + DetectAndFix: CouchDB 문제 감지 및 수정 + Fix: 수정 + E2EE: + AlgorithmGuidance: 대부분의 경우 기본 알고리즘(${algorithm})을 사용하는 것이 좋습니다. 기존 Vault가 다른 + 형식으로 암호화되어 있는 경우에만 이 설정이 필요합니다. + AlgorithmWarning: 암호화 알고리즘을 변경하면 이전에 다른 알고리즘으로 암호화된 데이터에 접근할 수 없습니다. 데이터 접근을 + 유지하려면 모든 장치가 같은 알고리즘을 사용하도록 설정하세요. + EncryptionAlgorithm: 암호화 알고리즘 + Fetch: + BackupDone: Vault 백업을 만들었습니다. + BackupQuestion: 계속하기 전에 백업을 만들었습니까? + BackupRecommendation: Vault 폴더를 안전한 위치에 복사해 두는 것을 권장합니다. 많은 충돌이 발생하거나 잘못된 대상으로 + 동기화했을 때 보호 장치가 됩니다. + BackupSkipped: 위험을 이해했으며 백업 없이 계속합니다. + BackupUnable: Vault 백업을 만들 수 없습니다. + BackupUnableNote: 위험을 이해했으며 그래도 계속하려면 이 항목을 선택하세요. + BackupUnableWarning: 계속하기 전에 백업을 만드는 것을 강력히 권장합니다. 백업 없이 계속하면 데이터가 손실될 수 있습니다. + ConflictNote: 또한 서버 데이터에 이미 충돌이 있으면 그대로 이 기기에 동기화되며, 로컬에서 직접 해결해야 합니다. + Guidance: 서버의 최신 데이터를 사용하여 이 기기의 로컬 데이터베이스를 다시 만듭니다. 이 작업은 동기화 불일치를 해결하고 올바른 동작을 + 복구하기 위한 것입니다. + ImportantBody: 이 기기의 Vault에 아직 동기화되지 않은 변경 사항이 있으면 초기화 후 서버 버전과 갈라질 수 있습니다. 그 결과 + 많은 파일 충돌이 발생할 수 있습니다. + ImportantTitle: 중요 알림 + PreventFetchConfig: 서버에서 구성 가져오기 방지 + Proceed: 초기화 후 동기화 재개 + Title: 이 기기의 동기화 초기화 + UnbalancedNote: 이 경우 Self-hosted LiveSync는 모든 파일의 메타데이터를 다시 만들고 의도적으로 충돌을 생성합니다. + 파일 내용이 같으면 이러한 충돌은 자동으로 해결됩니다. + VaultIdentical: 이 Vault의 파일은 서버의 파일과 거의 같습니다. + VaultIdenticalDesc: "(예: 다른 컴퓨터에서 복원한 직후이거나 백업에서 복구한 경우)" + VaultIndependent: 이 Vault가 비어 있거나 서버에 없는 새 파일만 포함하고 있습니다. + VaultIndependentDesc: "(예: 새 스마트폰에서 처음 설정하거나 깨끗한 상태에서 시작하는 경우)" + VaultQuestion: 새 충돌 생성을 최소화하려면 현재 Vault 상태를 가장 잘 설명하는 항목을 선택하세요. 선택한 내용에 따라 + 애플리케이션이 가장 적절한 방식으로 파일을 확인합니다. + VaultUnbalanced: 이 Vault의 파일과 서버 사이에 차이가 있을 수 있습니다. + VaultUnbalancedDesc: "(예: 오프라인 상태에서 많은 파일을 편집한 뒤)" + Intro: + ExistingOption: 이미 서버를 설정했습니다 + ExistingOptionDesc: 기존 LiveSync 서버에 연결하기 + Guidance: 환영합니다! LiveSync를 설정하겠습니다. LiveSync를 처음 사용하시나요, 아니면 이미 원격 서버를 설정하셨나요? + NewOption: LiveSync를 처음 사용합니다 + NewOptionDesc: LiveSync를 처음으로 설정하기 + ProceedExisting: 기존 서버에 연결 + ProceedNew: 새로 설정 + Question: 어떤 상황에 해당하시나요? + Title: 설정 마법사 + Log: + E2EEConfigurationCancelled: E2EE 구성이 취소되었습니다. + ManualConfigurationCancelled: 수동 구성이 취소되었습니다. + NoSettingsChanges: 설정 변경 사항이 감지되지 않았습니다. 마법사 설정 적용을 건너뜁니다. + OnboardingCancelled: 사용자가 온보딩을 취소했습니다. + QrCodeDialogClosed: QR 코드 대화 상자가 닫혔습니다. + QrCodeResult: "QR 코드 결과: ${result}" + SettingApplied: 설정이 적용되었습니다 + SettingsApplied: 마법사 설정이 적용되었습니다. + SetupUriDialogCancelled: Setup URI 대화 상자가 취소되었습니다. + SetupUriDialogClosed: Setup URI 대화 상자가 닫혔습니다. + UserCancelledApplyingSettings: 사용자가 마법사 설정 적용을 취소했습니다. + OutroAskUserMode: + CompatibleOption: 호환 모드 사용 + CompatibleOptionDesc: 원격이 이전 버전의 LiveSync로 설정된 경우 이 옵션을 사용하세요. 일부 기능이 제한될 수 있습니다. + ExistingOption: 이 장치에 기존 데이터가 있습니다 + ExistingOptionDesc: 로컬 파일을 원격과 병합합니다. 이 볼트에 이미 메모가 있는 경우 이 옵션을 사용하세요. + Guidance: 이 장치의 LiveSync 사용 방법을 선택해 주세요. 초기 동기화 동작에 영향을 줍니다. + NewOption: 새 장치로 설정 + NewOptionDesc: 새 볼트로 시작합니다. 설정 후 원격 파일을 가져옵니다. + ProceedApplySettings: 설정 적용 + ProceedNext: 계속 + Question: "이 장치의 모드를 선택하세요:" + Title: 이 장치를 어떻게 사용하시겠습니까? + OutroExisting: + Guidance: 설정이 완료되었습니다. 재시작 후 원격 데이터를 가져옵니다. 아래 버튼을 클릭하여 재시작하고 동기화를 시작하세요. + Proceed: 재시작하고 데이터 가져오기 + Question: 아래 버튼을 클릭하여 재시작하고 데이터 가져오기 확인으로 진행하세요. + Title: "설정 완료: 동기화 데이터 가져오기 준비 중" + OutroNewUser: + GuidancePrimary: LiveSync 구성이 완료되었습니다. 이 대화 상자를 닫으면 설정이 적용됩니다. + GuidanceWarning: 원격 볼트에 데이터가 있으면 기존 파일이 덮어쓰여집니다. 빈 볼트를 사용하거나 백업이 있는지 확인해 주세요. + Important: "중요:" + Proceed: 적용하고 재시작 + Question: 구성을 적용할 준비가 되셨나요? + Title: 설정 완료 + P2P: + AutoBroadcast: 변경 사항 자동 브로드캐스트 + AutoBroadcastDesc: 변경 사항 자동 브로드캐스트를 활성화하면 수동 작업 없이 연결된 피어에 변경 사항이 자동으로 + 브로드캐스트됩니다. 피어가 이 장치의 변경 사항을 가져오도록 요청합니다. + AutoStart: P2P 연결 자동 시작 + AutoStartDesc: P2P 연결 자동 시작을 활성화하면 플러그인이 시작될 때 P2P 연결이 자동으로 시작됩니다. + DevicePeerId: 장치 피어 ID + Enabled: 사용 + ErrorConnectPeers: "다른 피어에 연결하지 못했습니다: ${error}" + GenerateRandomId: 무작위 ID 생성 + GroupId: 그룹 ID + GroupPassphraseDesc: 그룹 ID와 암호 구문은 장치 그룹을 식별하는 데 사용됩니다. 동기화하려는 모든 장치에서 동일한 그룹 + ID와 암호 구문을 사용하세요. 그룹 ID는 생성된 형식으로 제한되지 않으며 원하는 문자열을 사용할 수 있습니다. + NoPeersFound: 설정은 올바른 것 같지만 다른 피어를 찾지 못했습니다. + PlaceholderRelayUrl: 릴레이 URL 입력 + PlaceholderTurnCredential: TURN 자격 증명 입력 + PlaceholderTurnUsername: TURN 사용자 이름 입력 + PublicTurnWarning: 공용 TURN 서버를 사용하면 데이터가 타사 서버를 통해 중계되므로 개인 정보 영향이 있을 수 있습니다. + 데이터가 암호화되어 있어도 존재 자체는 알려질 수 있습니다. 사용하기 전에 TURN 서버 제공자와 네트워크 관리자를 신뢰할 수 + 있는지 확인하세요. 가능하다면 자신의 FQDN용 TURN 서버를 설정하는 것을 고려하세요. + RelayUrl: 릴레이 URL + Title: P2P 구성 + TurnCredential: TURN 자격 증명 + TurnServerDesc: TURN 서버 설정은 엄격한 NAT 또는 방화벽 때문에 직접 P2P 연결이 차단되는 경우에만 필요합니다. 대부분의 + 경우 비워 둘 수 있습니다. + TurnServerUrls: TURN 서버 URL(쉼표로 구분) + TurnUsername: TURN 사용자 이름 + UseDefaultRelay: vrtmrz 릴레이 사용 + Rebuild: + BackupBeforeProceeding: 물론 계속하기 전에 데이터를 백업할 수 있습니다. + BackupDone: Vault 백업을 만들었습니다. + BackupQuestion: 계속하기 전에 백업을 만들었습니까? + BackupSkipped: 위험을 이해했으며 백업 없이 계속합니다. + BackupUnable: Vault 백업을 만들 수 없습니다. + BackupUnableAdvice: 새 동기화 대상을 만들고 그곳에 데이터를 재구축하는 것이 좋습니다. 그런 다음 각 다른 기기에서 새 원격으로 + 새 Vault에 하나씩 동기화하세요. + BackupWarning: 매우 강력한 작업입니다. Vault 폴더를 안전한 위치에 복사해 두는 것을 강력히 권장합니다. + ConfirmDataLoss: 다른 스마트폰이나 컴퓨터에서 만든 모든 변경 사항이 손실될 수 있음을 이해했습니다. + ConfirmIrreversible: 이 작업은 실행 후 되돌릴 수 없음을 이해했습니다. + ConfirmSyncDisabled: 다른 기기는 더 이상 동기화할 수 없으며 동기화 정보를 초기화해야 함을 이해했습니다. + ConfirmTitle: 다음 내용을 확인하세요 + Guidance: 이 절차는 먼저 서버의 기존 동기화 데이터를 모두 삭제합니다. 그런 다음 이 기기의 현재 Vault 상태를 유일한 기준 + 복사본으로 사용하여 서버 데이터를 완전히 다시 만듭니다. + PreventFetchConfig: 서버에서 구성 가져오기 방지 + Proceed: 이해했습니다, 서버 덮어쓰기 + ResetNotifyOtherDevices: 원격을 초기화하면 다른 기기에도 알림이 표시됩니다. + ResolveOnOtherDevices: 다른 기기에서 이 문제를 해결하는 방법이 있습니다. + Title: "최종 확인: 이 기기의 파일로 서버 데이터 덮어쓰기" + WhenToUse: 서버 데이터가 완전히 손상되었거나, 다른 모든 기기의 변경 사항이 더 이상 필요하지 않거나, 데이터베이스 크기가 Vault + 크기에 비해 비정상적으로 커진 경우와 같은 예외적인 상황에서만 이 작업을 수행해야 합니다. + SelectExisting: + Guidance: 기존 LiveSync 서버에 연결하는 방법을 선택해 주세요. + ManualOption: 수동으로 설정 + ManualOptionDesc: 서버 세부 정보와 자격 증명을 직접 입력 + ProceedManual: 수동으로 설정 + ProceedQr: QR 코드 스캔 + ProceedSetupUri: 설정 URI 사용 + QrOption: QR 코드 스캔 + QrOptionDesc: 이미 구성된 장치에서 QR 코드 스캔 + Question: "연결 방법 선택:" + SetupUriOption: 설정 URI 사용 + SetupUriOptionDesc: 서버에서 제공하는 설정 URI에서 구성 가져오기 + Title: 기존 서버에 연결 + SelectNew: + Guidance: 새 LiveSync 연결을 구성하는 방법을 선택해 주세요. + ManualOption: 수동으로 설정 + ManualOptionDesc: 서버 세부 정보와 자격 증명을 직접 입력 + ProceedManual: 수동으로 설정 + ProceedSetupUri: 설정 URI 사용 + Question: "구성 방법 선택:" + SetupUriOption: 설정 URI 사용 + SetupUriOptionDesc: 서버에서 제공하는 설정 URI에서 구성 가져오기 + Title: 새 연결 설정 + SetupRemote: + BucketOption: LiveSync 버킷 + BucketOptionDesc: LiveSync 컴패니언 서비스에 포함된 버킷 서버 사용 + CouchDbOption: CouchDB + CouchDbOptionDesc: 자체 CouchDB 인스턴스를 사용하여 동기화 서버를 완전히 제어 + Guidance: "사용할 원격 서버 유형을 선택해 주세요:" + P2POption: 피어 투 피어 (실험적) + P2POptionDesc: 중앙 서버 없이 장치 간 직접 동기화 + ProceedBucket: 버킷 설정 + ProceedCouchDb: CouchDB 설정 + ProceedP2P: P2P 설정 + Title: 원격 서버 설정 + UseSetupURI: + ButtonCancel: 취소 + ButtonProceed: 설정 테스트 후 계속 + ErrorFailedToParse: Setup-URI를 해석하지 못했습니다. + ErrorPassphraseRequired: 암호 구문이 필요합니다. + Guidance: 서버 설치 중 또는 다른 기기에서 생성된 Setup URI와 Vault 암호 구문을 입력하세요. + InvalidInfo: Setup-URI가 유효하지 않은 것 같습니다. 올바르게 복사했는지 확인하세요. + Label: Setup-URI + LabelPassphrase: 암호 구문 + PlaceholderPassphrase: 암호 구문 입력 + Title: Setup URI 입력 + ValidMessage: Setup-URI가 유효하며 사용할 준비가 되었습니다. Unique name between all synchronized devices. To edit this setting, please disable customization sync once.: 모든 동기화된 기기 간 고유 이름입니다. 이 설정을 편집하려면 사용자 설정 동기화를 한 번 비활성화해 주세요. Use a custom passphrase: 사용자 지정 암호문구 사용 +Use a Setup URI (Recommended): 설정 URI 사용(권장) Use Custom HTTP Handler: 커스텀 HTTP 핸들러 사용 Use dynamic iteration count: 동적 반복 횟수 사용 +Use Only Local Chunks: 로컬 청크만 사용 +Use Request API to avoid `inevitable` CORS problem: 피할 수 없는 CORS 문제를 피하기 위해 Request API 사용 Use Segmented-splitter: 의미 기반 분할 사용 Use splitting-limit-capped chunk splitter: 분할 제한 상한 청크 분할기 사용 Use the trash bin: 휴지통 사용 Use timeouts instead of heartbeats: 하트비트 대신 타임아웃 사용 username: 사용자명 Username: 사용자명 +"V1: Legacy": "V1: 레거시" +"V2: Simple (Default)": "V2: 단순 (기본값)" +"V2.5: Lexical chunks": "V2.5: 어휘 청크" +"V3: Fine deduplication": "V3: 세밀한 중복 제거" Verbose Log: 자세한 로그 Verify all: 모두 검증 Verify and repair all files: 모든 파일 검증 및 복구 @@ -1150,62 +1869,19 @@ Warning! This will have a serious impact on performance. And the logs will not b 경고! 이는 성능에 심각한 영향을 미칩니다. 로그는 기본 이름으로 동기화되지 않습니다. 로그에는 종종 기밀 정보가 포함되어 있으므로 주의해 주세요. We cannot change the device name while this feature is enabled. Please disable this feature to change the device name.: 이 기능이 활성화되어 있는 동안에는 장치 이름을 변경할 수 없습니다. 장치 이름을 변경하려면 이 기능을 비활성화하세요. +We will now guide you through a few questions to simplify the synchronisation setup.: 동기화 설정을 더 쉽게 진행할 수 있도록 몇 가지 질문으로 안내해 드리겠습니다。 +We will now proceed with the server configuration.: 이제 서버 구성을 진행하겠습니다。 +Welcome to Self-hosted LiveSync: Self-hosted LiveSync에 오신 것을 환영합니다 When you save a file in the editor, start a sync automatically: 편집기에서 파일을 저장할 때 자동으로 동기화를 시작합니다 +While enabled, it causes very performance impact but debugging replication testing and other features will be enabled. Please disable this if you have not read the source code. Requires restart of Obsidian.: + 활성화하면 성능에 큰 영향을 주지만 디버깅, 복제 테스트 및 기타 기능이 활성화됩니다. 소스 코드를 읽지 않았다면 비활성화하세요. + Obsidian 재시작이 필요합니다. Write credentials in the file: 파일에 자격 증명 저장 Write logs into the file: 파일에 로그 기록 xxhash32 (Fast but less collision resistance): xxhash32 (빠르지만 충돌 저항성은 낮음) xxhash64 (Fastest): xxhash64 (가장 빠름) -Reduces storage space by discarding all non-latest revisions. This requires the same amount of free space on the remote server and the local client.: - 최신 버전이 아닌 모든 리비전을 제거하여 저장 공간을 줄입니다. 이 작업을 수행하려면 원격 서버와 로컬 클라이언트에 동일한 양의 여유 공간이 필요합니다. -Rerun Onboarding Wizard: 온보딩 마법사 다시 실행 -Rerun the onboarding wizard to set up Self-hosted LiveSync again.: 온보딩 마법사를 다시 실행하여 Self-hosted LiveSync를 다시 설정합니다. -Rerun Wizard: 마법사 다시 실행 -Run Doctor: 진단 실행 -Scan for Broken files: 손상된 파일 검사 -Prepare the 'report' to create an issue: 이슈 생성을 위한 '보고서' 준비 -Copy Report to clipboard: 보고서를 클립보드에 복사 -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 보고서를 생성합니다. 생성된 보고서는 원하는 스프레드시트에 붙여 넣어 확인할 수 있습니다. -Reset notification threshold and check the remote database usage: 알림 임계값을 초기화하고 원격 데이터베이스 사용량 확인 -Reset the remote storage size threshold and check the remote storage size again.: 원격 저장소 크기 임계값을 초기화하고 원격 저장소 크기를 다시 확인합니다. -Scram Switches: 긴급 전환 스위치 -Minimum interval for syncing: 동기화 최소 간격 -The minimum interval for automatic synchronisation on event.: 이벤트 발생 시 자동 동기화의 최소 간격입니다. -"Welcome to Self-hosted LiveSync": "Self-hosted LiveSync에 오신 것을 환영합니다" -"We will now guide you through a few questions to simplify the synchronisation setup.": "동기화 설정을 더 쉽게 진행할 수 있도록 몇 가지 질문으로 안내해 드리겠습니다。" -"First, please select the option that best describes your current situation.": "먼저 현재 상황에 가장 잘 맞는 항목을 선택해 주세요。" -"I am setting this up for the first time": "처음으로 설정합니다" -"(Select this if you are configuring this device as the first synchronisation device.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": "(이 장치를 첫 번째 동기화 장치로 설정하는 경우 선택하세요.) LiveSync를 처음 사용하며 처음부터 설정하려는 경우에 적합합니다。" -"I am adding a device to an existing synchronisation setup": "기존 동기화 구성에 장치를 추가합니다" -"(Select this if you are already using synchronisation on another computer or smartphone.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": "(다른 컴퓨터나 스마트폰에서 이미 동기화를 사용 중인 경우 선택하세요.) 이 장치를 기존 LiveSync 구성에 추가하려는 경우에 적합합니다。" -"Yes, I want to set up a new synchronisation": "예, 새 동기화를 설정하겠습니다" -"Yes, I want to add this device to my existing synchronisation": "예, 이 장치를 기존 동기화에 추가하겠습니다" -"No, please take me back": "아니요, 이전으로 돌아가겠습니다" -"Device Setup Method": "장치 설정 방법" -"You are adding this device to an existing synchronisation setup.": "이 장치를 기존 동기화 구성에 추가하려고 합니다。" -"Please select a method to import the settings from another device.": "다른 장치에서 설정을 가져올 방법을 선택해 주세요。" -"Use a Setup URI (Recommended)": "설정 URI 사용(권장)" -"Paste the Setup URI generated from one of your active devices.": "현재 사용 중인 장치 중 하나에서 생성한 설정 URI를 붙여 넣으세요。" -"Scan a QR Code (Recommended for mobile)": "QR 코드 스캔(모바일 권장)" -"Scan the QR code displayed on an active device using this device's camera.": "이 장치의 카메라로 활성 장치에 표시된 QR 코드를 스캔하세요。" -"Enter the server information manually": "서버 정보를 수동으로 입력" -"Configure the same server information as your other devices again, manually, very advanced users only.": "다른 장치와 동일한 서버 정보를 다시 수동으로 입력합니다. 고급 사용자 전용입니다。" -"Proceed with Setup URI": "설정 URI로 계속" -"I know my server details, let me enter them": "서버 정보를 알고 있으니 직접 입력하겠습니다" -"Please select an option to proceed": "계속하려면 항목을 선택해 주세요" -"Connection Method": "연결 방법" -"We will now proceed with the server configuration.": "이제 서버 구성을 진행하겠습니다。" -"How would you like to configure the connection to your server?": "서버 연결을 어떻게 구성하시겠습니까?" -"A Setup URI is a single string of text containing your server address and authentication details. Using a URI, if one was generated by your server installation script, provides a simple and secure configuration.": "설정 URI는 서버 주소와 인증 정보를 포함한 단일 문자열입니다. 서버 설치 스크립트가 URI를 생성했다면 이를 사용하면 간단하고 안전하게 구성할 수 있습니다。" -"This is an advanced option for users who do not have a URI or who wish to configure detailed settings.": "URI가 없거나 세부 설정을 직접 구성하려는 사용자를 위한 고급 옵션입니다。" -"Enter Server Information": "서버 정보 입력" -"Please select the type of server to which you are connecting.": "연결할 서버 유형을 선택해 주세요。" -"Continue to CouchDB setup": "CouchDB 설정으로 계속" -"Continue to S3/MinIO/R2 setup": "S3/MinIO/R2 설정으로 계속" -"Continue to Peer-to-Peer only setup": "Peer-to-Peer 전용 설정으로 계속" -"This is the most suitable synchronisation method for the design. All functions are available. You must have set up a CouchDB instance.": "이 설계에 가장 적합한 동기화 방식입니다. 모든 기능을 사용할 수 있습니다. CouchDB 인스턴스를 미리 구성해야 합니다。" -"S3/MinIO/R2 Object Storage": "S3/MinIO/R2 객체 스토리지" -"Synchronisation utilising journal files. You must have set up an S3/MinIO/R2 compatible object storage.": "저널 파일을 활용하는 동기화 방식입니다. S3/MinIO/R2 호환 객체 스토리지를 미리 구성해야 합니다。" -"Peer-to-Peer only": "Peer-to-Peer 전용" -"This feature enables direct synchronisation between devices. No server is required, but both devices must be online at the same time for synchronisation to occur, and some features may be limited. Internet connection is only required to signalling (detecting peers) and not for data transfer.": "이 기능은 장치 간 직접 동기화를 제공합니다. 서버는 필요 없지만 동기화가 이루어지려면 두 장치가 동시에 온라인 상태여야 하며 일부 기능은 제한될 수 있습니다. 인터넷 연결은 시그널링(피어 감지)에만 필요하며 데이터 전송 자체에는 필요하지 않습니다。" +xxhash64 is the current default.: 현재 기본값은 xxhash64입니다. +Yes, I want to add this device to my existing synchronisation: 예, 이 장치를 기존 동기화에 추가하겠습니다 +Yes, I want to set up a new synchronisation: 예, 새 동기화를 설정하겠습니다 +You are adding this device to an existing synchronisation setup.: 이 장치를 기존 동기화 구성에 추가하려고 합니다。 +You can enable this setting to process the files with size mismatches, these files can be created by some APIs or integrations.: 크기가 일치하지 않는 파일을 처리하려면 이 설정을 활성화할 수 있습니다. 이러한 파일은 일부 API나 통합 기능에서 생성될 수 있습니다. diff --git a/src/common/messagesYAML/ru.yaml b/src/common/messagesYAML/ru.yaml index 665f84b9..a51e4d97 100644 --- a/src/common/messagesYAML/ru.yaml +++ b/src/common/messagesYAML/ru.yaml @@ -3,16 +3,15 @@ (Beta) Use ignore files: (Бета) Использовать файлы игнорирования (Days passed, 0 to disable automatic-deletion): (Дней прошло, 0 для отключения автоматического удаления) (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. + (например, читать чанки онлайн) Если эта опция включена, LiveSync будет читать + чанки напрямую онлайн вместо локальной репликации. Рекомендуется увеличить + пользовательский размер чанка. (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. + (МБ) Если задано это значение, изменения локальных и удалённых файлов, размер + которых превышает его, будут пропускаться. Если файл снова станет меньше, + будет использована более новая версия. (Mega chars): (Мега символов) -(Not recommended) If set, credentials will be stored in the file: (Не рекомендуется) Если установлено, учётные данные будут сохранены в файле -(Not recommended) If set, credentials will be stored in the file.: (Not recommended) If set, credentials will be stored in the file. +(Not recommended) If set, credentials will be stored in the file.: (Не рекомендуется) Если включено, учётные данные будут сохранены в файле. (Obsolete) Use an old adapter for compatibility: (Устарело) Использовать старый адаптер для совместимости (RegExp) Empty to sync all files. Set filter as a regular expression to limit synchronising files.: (RegExp) Оставьте пустым, чтобы синхронизировать все файлы. Укажите регулярное @@ -20,19 +19,43 @@ (RegExp) If this is set, any changes to local and remote files that match this will be skipped.: (RegExp) Если задано, любые изменения локальных и удалённых файлов, соответствующих этому шаблону, будут пропускаться. +(Select this if you are already using synchronisation on another computer or smartphone.) This option is suitable if you are new to LiveSync and want to set it up from scratch.: + (Выберите этот вариант, если вы уже используете синхронизацию на другом + компьютере или смартфоне.) Он подходит, если вы хотите добавить это устройство + к уже существующей конфигурации LiveSync。 +(Select this if you are configuring this device as the first synchronisation device.) This option is suitable if you are new to LiveSync and want to set it up from scratch.: + (Выберите этот вариант, если настраиваете это устройство как первое устройство + синхронизации.) Он подходит, если вы впервые используете LiveSync и хотите + настроить всё с нуля。 +"> [!INFO]- The connected devices have been detected as follows:\n${devices}": |- + > [!INFO]- Обнаружены следующие подключённые устройства: + ${devices} +A Setup URI is a single string of text containing your server address and authentication details. Using a URI, if one was generated by your server installation script, provides a simple and secure configuration.: + Setup URI — это одна строка текста, содержащая адрес сервера и данные + аутентификации. Если URI был создан скриптом установки сервера, его + использование обеспечивает простую и безопасную настройку。 Access Key: Ключ доступа Activate: Активировать Active Remote Configuration: Активная удалённая конфигурация +Active Remote Type: Активный тип удаленного подключения Add default patterns: Добавить шаблоны по умолчанию Add new connection: Добавить подключение +Advanced: Дополнительно +All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.: + У всех устройств одинаковое значение прогресса (${progress}). Похоже, ваши + устройства синхронизированы, и можно продолжать Garbage Collection. 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.: - Проанализируйте использование базы данных и создайте TSV-отчёт для самостоятельной диагностики. Полученный отчёт можно вставить в любую удобную для вас таблицу. + Проанализируйте использование базы данных и создайте TSV-отчёт для + самостоятельной диагностики. Полученный отчёт можно вставить в любую удобную + для вас таблицу. Apply Latest Change if Conflicting: Применить последнее изменение при конфликте Apply preset configuration: Применить предустановленную конфигурацию Ask a passphrase at every launch: Запрашивать парольную фразу при каждом запуске +Automatically broadcast changes to connected peers: Автоматически рассылать изменения подключенным пирам +Automatically start P2P connection on launch: Автоматически запускать P2P-подключение при запуске Automatically Sync all files when opening Obsidian.: Автоматически синхронизировать все файлы при открытии Obsidian. Back: Назад Back to non-configured: Вернуть в состояние без настройки @@ -40,25 +63,28 @@ Batch database update: Пакетное обновление базы данны Batch limit: Пакетный лимит Batch size: Размер пакета 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.: - До v0.17.16 мы использовали старый адаптер для локальной базы данных. Теперь - предпочтителен новый адаптер. Однако требуется перестроение локальной базы - данных. 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. + До v0.17.16 для локальной базы данных использовался старый адаптер. Теперь + предпочтителен новый адаптер. Однако для него требуется перестроение локальной + базы данных. Отключите этот переключатель, когда у вас будет достаточно + времени. Если оставить его включённым, при получении данных из удалённой базы + вам также будет предложено его отключить. Bucket Name: Имя бакета Cancel: Отмена +Cancel Garbage Collection: Отменить Garbage Collection Check: Проверить Check and convert non-path-obfuscated files: Проверить и преобразовать файлы без обфускации пути Check for documents that have not been converted to path-obfuscated IDs and convert them if necessary.: Проверяет документы, которые ещё не были преобразованы в path-obfuscated ID, и при необходимости преобразует их. +Chunk Splitter: Разделитель фрагментов cmdConfigSync: showCustomizationSync: Показать синхронизацию настроек Comma separated `.gitignore, .dockerignore`: Через запятую `.gitignore, .dockerignore` +Compaction in progress on remote database...: Выполняется компакция удалённой базы данных... +Compaction on remote database completed successfully.: Компакция удалённой базы данных успешно завершена. +Compaction on remote database failed.: Компакция удалённой базы данных завершилась ошибкой. +Compaction on remote database timed out.: Время ожидания компакции удалённой базы данных истекло. Compare the content of files between on local database and storage. If not matched, you will be asked which one you want to keep.: Сравнивает содержимое файлов между локальной базой данных и хранилищем. Если они не совпадут, вам предложат выбрать, какую версию сохранить. @@ -74,11 +100,19 @@ Configure: Настроить Configure And Change Remote: Настроить и переключить удалённое хранилище Configure E2EE: Настроить сквозное шифрование Configure Remote: Настроить удалённое хранилище +Configure the same server information as your other devices again, manually, very advanced users only.: + Снова вручную укажите те же параметры сервера, что и на других устройствах. + Только для очень опытных пользователей。 +Connection Method: Способ подключения +Continue to CouchDB setup: Перейти к настройке CouchDB +Continue to Peer-to-Peer only setup: Перейти к настройке только Peer-to-Peer +Continue to S3/MinIO/R2 setup: Перейти к настройке S3/MinIO/R2 Copy: Копировать Copy Report to clipboard: Копировать отчёт в буфер обмена CouchDB Connection Tweak: Настройки подключения CouchDB Cross-platform: Кроссплатформенные "Current adapter: {adapter}": "Текущий адаптер: {adapter}" +Customization sync: Синхронизация настроек Customization Sync: Синхронизация настроек Customization Sync (Beta3): Синхронизация настроек (Beta3) Data Compression: Сжатие данных @@ -95,30 +129,26 @@ Delete local database to reset or uninstall Self-hosted LiveSync: Удалить Delete old metadata of deleted files on start-up: Удалять старые метаданные удалённых файлов при запуске Delete Remote Configuration: Удалить удалённую конфигурацию Delete remote configuration '{name}'?: Удалить удалённую конфигурацию '{name}'? -descConnectSetupURI: Это рекомендуемый способ настройки Self-hosted LiveSync с помощью Setup URI. -descCopySetupURI: Идеально для настройки нового устройства! -descEnableLiveSync: Включайте это только после настройки одного из двух вариантов выше. -descFetchConfigFromRemote: Загрузить необходимые настройки с уже настроенного удалённого сервера. -descManualSetup: Не рекомендуется, но полезно, если у вас нет Setup URI -descTestDatabaseConnection: Открыть подключение к базе данных. -descValidateDatabaseConfig: Проверяет и исправляет потенциальные проблемы с конфигурацией базы данных. desktop: рабочий стол Developer: Разработчик +Device: Устройство Device name: Имя устройства +Device Setup Method: Способ настройки устройства dialog: yourLanguageAvailable: _value: >- Self-hosted LiveSync имеет переводы для вашего языка, поэтому была - включена настройка языка Display language. + включена настройка %{Display language}. - Примечание: Не все сообщения переведены. Мы ждём ваших предложений! + Примечание: не все сообщения переведены. Мы ждём ваших предложений! - Примечание 2: При создании Issue, пожалуйста, вернитесь к lang-def, затем - сделайте скриншоты, сообщения и логи. Это можно сделать в настройках. + Примечание 2: если вы создаёте Issue, **сначала вернитесь к %{lang-def}**, + а затем сделайте скриншоты, сообщения и логи. Это можно сделать в диалоге + настроек. - Надеемся, вам будет удобно использовать! - btnRevertToDefault: Оставить lang-def + Надеемся, вам будет удобно пользоваться! + btnRevertToDefault: Оставить %{lang-def} Title: Доступен перевод! Disables all synchronization and restart.: Отключает всю синхронизацию и перезапускает приложение. Disables logging, only shows notifications. Please disable if you report an issue.: @@ -140,40 +170,42 @@ Doctor: Yes: Да Dialogue: Main: >- - Привет! Диагностика настроек активирована из-за activateReason! + Здравствуйте! Диагностика настроек была активирована по причине: + ${activateReason}! - К сожалению, некоторые настройки были обнаружены как потенциальные + К сожалению, некоторые настройки были определены как потенциальные проблемы. Не волнуйтесь. Давайте решим их по очереди. - Сообщаем вам заранее, мы спросим о следующих пунктах. + Чтобы заранее сообщить вам, мы спросим о следующих пунктах. - issues + ${issues} Начнём? MainFix: |- - name + + ## ${name} - | Текущее | Идеальное | + | Текущее | Рекомендуемое | |:---:|:---:| - | current | ideal | + | ${current} | ${ideal} | - **Уровень рекомендации:** level + **Уровень рекомендации:** ${level} ### Почему это было обнаружено? - reason + ${reason} - note + ${note} - Исправить на идеальное значение? + Исправить до рекомендуемого значения? Title: Диагностика Self-hosted LiveSync TitleAlmostDone: Почти готово! - TitleFix: Исправление проблемы current/total + TitleFix: Исправление проблемы ${current}/${total} Level: Must: Обязательно Necessary: Необходимо @@ -189,17 +221,24 @@ Doctor: E2EE_V02500: REASON: Сквозное шифрование стало более надёжным и быстрым. Предыдущее E2EE было скомпрометировано. Следует применить как можно скорее. +Document History: История документа Duplicate: Дублировать Duplicate remote: Дублировать удалённую конфигурацию E2EE Configuration: Конфигурация сквозного шифрования Edge case addressing (Behaviour): Обработка особых случаев (поведение) Edge case addressing (Database): Обработка особых случаев (база данных) Edge case addressing (Processing): Обработка особых случаев (обработка) +Effectively a directory. Should end with `/`. e.g., `vault-name/`.: Фактически это каталог. Должен заканчиваться на `/`, например `vault-name/`. Emergency restart: Аварийный перезапуск Enable advanced features: Включить расширенные функции +Enable advanced mode: Включить расширенный режим Enable customization sync: Включить синхронизацию настроек Enable Developers' Debug Tools.: Включить инструменты разработчика. Enable edge case treatment features: Включить функции обработки граничных случаев +Enable forcePathStyle: Включить forcePathStyle +Enable P2P Synchronization: Включить P2P-синхронизацию +Enable per-file customization sync: Включить синхронизацию настроек по файлам +Enable power user mode: Включить режим опытного пользователя Enable poweruser features: Включить функции для опытных пользователей Enable this if your Object Storage doesn't support CORS: Включите, если ваше объектное хранилище не поддерживает CORS Enable this option to automatically apply the most recent change to documents even when it conflicts: @@ -209,54 +248,109 @@ Encrypt contents on the remote database. If you use the plugin's synchronization Шифровать содержимое на удалённой базе данных. Рекомендуется включить при использовании функции синхронизации плагина. Encrypting sensitive configuration items: Шифрование конфиденциальных настроек +Encryption passphrase. 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.: Парольная фраза шифрования. При изменении нужно перезаписать базу данных сервера новыми (зашифрованными) файлами. End-to-End Encryption: Сквозное шифрование Endpoint URL: URL конечной точки Enhance chunk size: Улучшить размер чанка +Enter Server Information: Ввести данные сервера +Enter the server information manually: Ввести данные сервера вручную Export: Экспорт +Failed to connect to remote for compaction.: Не удалось подключиться к удалённой базе данных для компакции. +Failed to connect to remote for compaction. ${reason}: Не удалось подключиться к удалённой базе данных для компакции. ${reason} +Failed to start one-shot replication before Garbage Collection. Garbage Collection Cancelled.: + Не удалось запустить одноразовую репликацию перед Garbage Collection. Garbage + Collection отменена. +Failed to start replication after Garbage Collection.: Не удалось запустить репликацию после Garbage Collection. Fetch: Получить Fetch chunks on demand: Загружать чанки по требованию Fetch database with previous behaviour: Загрузить базу данных с предыдущим поведением Fetch remote settings: Получить настройки с удалённого хранилища +File prefix on the bucket: Префикс файлов в бакете File to resolve conflict: Файл для разрешения конфликта Filename: Имя файла +Files with modification times greater than this value (in seconds since the Unix epoch) will not have their events reflected. Set to 0 to disable this limit.: + События файлов со временем изменения больше этого значения (в секундах с эпохи + Unix) не будут отражаться. Установите 0, чтобы отключить ограничение. +First, please select the option that best describes your current situation.: Сначала выберите вариант, который лучше всего описывает вашу текущую ситуацию。 Flag and restart: Пометить и перезапустить Forces the file to be synced when opened.: Принудительно синхронизировать файл при открытии. Fresh Start Wipe: Полный сброс для чистого старта +Garbage Collection cancelled by user.: Пользователь отменил Garbage Collection. +"Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.": + "Garbage Collection завершена. Удалено чанков: ${deletedChunks} / + ${totalChunks}. Затраченное время: ${seconds} сек." +Garbage Collection Confirmation: Подтверждение Garbage Collection Garbage Collection V3 (Beta): Сборка мусора V3 (Beta) +"Garbage Collection: Found ${unusedChunks} unused chunks to delete.": + "Garbage Collection: найдено ${unusedChunks} неиспользуемых чанков для + удаления." +"Garbage Collection: Scanned ${scanned} / ~${docCount}": "Garbage Collection: просканировано ${scanned} / ~${docCount}" +"Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": + "Garbage Collection: сканирование завершено. Всего чанков: ${totalChunks}, + используемых чанков: ${usedChunks}" Handle files as Case-Sensitive: Обрабатывать файлы с учётом регистра +Hatch: Инструменты Hidden Files: Скрытые файлы -How to display network errors when the sync server is unreachable.: - Определяет, как отображать сетевые ошибки, если сервер синхронизации - недоступен. +Hide completely: Полностью скрыть +Highlight diff: Подсветить различия +How to display network errors when the sync server is unreachable.: Как показывать сетевые ошибки, когда сервер синхронизации недоступен. +How would you like to configure the connection to your server?: Как вы хотите настроить подключение к серверу? +I am adding a device to an existing synchronisation setup: Я добавляю устройство к существующей настройке синхронизации +I am setting this up for the first time: Я настраиваю это впервые +I know my server details, let me enter them: Я знаю параметры сервера, позвольте ввести их вручную 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.: - Если включено, будет использоваться эффективная синхронизация настроек для - каждого файла. 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. + Если включено, будет использоваться эффективная синхронизация настроек для + каждого файла. При включении потребуется небольшая миграция. Все устройства + также должны быть обновлены до v0.23.18. После включения совместимость со + старыми версиями будет утрачена. +If enabled, changes will be automatically broadcasted to all connected peers. Notified peers will start fetching the changes.: + Если включено, изменения будут автоматически рассылаться всем подключенным + пирам. Уведомленные пиры начнут получать изменения. If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker.: Если включено, чанки будут разделены не более чем на 100 элементов. +If enabled, efficient per-file customization sync will be used. A minor migration is required when enabling this feature, and all devices must be updated to v0.23.18. Enabling this feature will result in losing compatibility with older versions.: + Если включено, будет использоваться эффективная синхронизация настроек по + файлам. При включении требуется небольшая миграция, а все устройства должны + быть обновлены до v0.23.18. После включения совместимость со старыми версиями + будет потеряна. 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.: Если включено, файлы меньше 1КБ будут обрабатываться в основном потоке. +If enabled, the forcePathStyle option will be used for bucket operations.: Если включено, для операций с бакетом будет использоваться forcePathStyle. If enabled, the notification of hidden files change will be suppressed.: Если включено, уведомление об изменении скрытых файлов будет подавлено. +If enabled, the P2P connection will be automatically started when the application launches.: + Если включено, P2P-подключение будет автоматически запускаться при запуске + приложения. +If enabled, the plugin will not attempt to connect to the remote database even if the chunk was not found locally.: + Если включено, плагин не будет пытаться подключаться к удаленной базе данных, + даже если чанк не найден локально. +If enabled, the request API will be used to avoid `inevitable` CORS problems. This is a workaround and may not work in all cases. PLEASE READ THE DOCUMENTATION BEFORE USING THIS OPTION. This is a less-secure option.: + Если включено, request API будет использоваться для обхода «неизбежных» + проблем CORS. Это обходной путь и он может работать не во всех случаях. + ОБЯЗАТЕЛЬНО ПРОЧИТАЙТЕ ДОКУМЕНТАЦИЮ ПЕРЕД ИСПОЛЬЗОВАНИЕМ. Этот вариант менее + безопасен. +If this enabled, all chunks will be stored with the revision made from its content.: + Если включено, все фрагменты будут сохраняться с ревизией, созданной из их + содержимого. 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).: Если включено, все файлы обрабатываются с учётом регистра. 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.: Если установлено, изменения файлов из списка игнорирования будут пропущены. 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. -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.: Если эта опция включена, PouchDB будет держать соединение открытым 60 секунд. + Если задано это значение, изменения локальных файлов, соответствующих файлам + игнорирования, будут пропускаться. Удалённые изменения определяются с + использованием локальных файлов игнорирования. 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. + Если эта опция включена, PouchDB будет удерживать соединение открытым 60 + секунд, а если за это время не поступит изменений, закроет и снова откроет + сокет вместо того, чтобы держать соединение открытым бесконечно. Это полезно, + если прокси ограничивает длительность запросов, но может увеличить потребление + ресурсов. +Ignore and Proceed: Игнорировать и продолжить Ignore files: Файлы для игнорирования Ignore patterns: Шаблоны исключения Import connection: Импортировать подключение @@ -267,16 +361,16 @@ Initialise all journal history, On the next sync, every item will be received an Interval (sec): Интервал (сек) K: exp: Экспериментальная - long_p2p_sync: title_p2p_sync - P2P: Peer-к-Peer - Peer: Устройство - ScanCustomization: Scan customization + long_p2p_sync: "%{title_p2p_sync}" + P2P: "%{Peer}-%{Peer}" + Peer: Узел + ScanCustomization: Сканировать настройки short_p2p_sync: P2P Синхр. title_p2p_sync: Синхронизация между устройствами Keep empty folder: Сохранять пустые папки lang_def: По умолчанию lang-de: Deutsch -lang-def: lang_def +lang-def: "%{lang_def}" lang-es: Español lang-fr: Français lang-ja: 日本語 @@ -294,16 +388,16 @@ liveSyncReplicator: cantReplicateLowerValue: Нельзя реплицировать с меньшим значением. checkingLastSyncPoint: Поиск последней точки синхронизации. couldNotConnectTo: |- - Не удалось подключиться к uri : name - (db) - couldNotConnectToRemoteDb: "Не удалось подключиться к удалённой базе данных: d" + Не удалось подключиться к ${uri} : ${name} + (${db}) + couldNotConnectToRemoteDb: "Не удалось подключиться к удалённой базе данных: ${d}" couldNotConnectToServer: Не удалось подключиться к серверу. - couldNotConnectToURI: Не удалось подключиться к uri:dbRet + couldNotConnectToURI: Не удалось подключиться к ${uri}:${dbRet} couldNotMarkResolveRemoteDb: Не удалось отметить удалённую базу данных как разрешённую. liveSyncBegin: Начало LiveSync... lockRemoteDb: Блокировка удалённой базы данных для предотвращения повреждения данных markDeviceResolved: Отметить это устройство как «разрешённое». - oneShotSyncBegin: Начало OneShot синхронизации... (syncMode) + oneShotSyncBegin: Начало OneShot Sync... (${syncMode}) remoteDbCorrupted: Удалённая база данных новее или повреждена, убедитесь, что установлена последняя версия self-hosted-livesync remoteDbCreatedOrConnected: Удалённая база данных создана или подключена @@ -312,12 +406,12 @@ liveSyncReplicator: remoteDbMarkedResolved: Удалённая база данных отмечена как разрешённая. replicationClosed: Репликация закрыта replicationInProgress: Репликация уже выполняется - retryLowerBatchSize: "Повтор с меньшим размером пакета: batch_size/batches_limit" + retryLowerBatchSize: "Повтор с меньшим размером пакета: ${batch_size}/${batches_limit}" unlockRemoteDb: Разблокировка удалённой базы данных для предотвращения повреждения данных liveSyncSetting: - errorNoSuchSettingItem: "Такого параметра настройки не существует: key" - originalValue: "Оригинал: value" - valueShouldBeInRange: Значение должно быть min < значение < max + errorNoSuchSettingItem: "Такого элемента настройки не существует: ${key}" + originalValue: "Исходное значение: ${value}" + valueShouldBeInRange: Значение должно быть в диапазоне ${min} < значение < ${max} liveSyncSettings: btnApply: Применить Local Database Tweak: Настройки локальной базы данных @@ -332,11 +426,15 @@ logPane: pause: Пауза title: Лог Self-hosted LiveSync wrap: Перенос +Maintenance: Обслуживание Maximum delay for batch database updating: Максимальная задержка пакетного обновления базы данных +Maximum file modification time for reflected file events: Максимальное время изменения файла для отражаемых событий Maximum file size: Максимальный размер файла Maximum Incubating Chunk Size: Максимальный размер инкубируемого чанка Maximum Incubating Chunks: Максимальное количество инкубируемых чанков Maximum Incubation Period: Максимальный период инкубации +Maximum size of chunks to send in one request: Максимальный размер фрагментов, отправляемых за один запрос +MB: MB MB (0 to disable).: МБ (0 для отключения). Memory cache: Кэш в памяти Memory cache size (by total characters): Размер кэша памяти (по общему количеству символов) @@ -346,18 +444,34 @@ Minimum delay for batch database updating: Минимальная задержк Minimum interval for syncing: Минимальный интервал синхронизации moduleCheckRemoteSize: logCheckingStorageSizes: Проверка размеров хранилища - logCurrentStorageSize: "Размер удалённого хранилища: measuredSize" - logExceededWarning: "Размер удалённого хранилища: measuredSize превысил notifySize" - logThresholdEnlarged: Порог увеличен до sizeМБ + logCurrentStorageSize: "Размер удалённого хранилища: ${measuredSize}" + logExceededWarning: Размер удалённого хранилища ${measuredSize} превысил ${notifySize} + logThresholdEnlarged: Порог увеличен до ${size}MB msgConfirmRebuild: Это может занять некоторое время. Вы действительно хотите перестроить всё сейчас? - msgDatabaseGrowing: Ваша база данных увеличивается! Но не волнуйтесь, мы можем решить это сейчас. + msgDatabaseGrowing: | + **Ваша база данных становится больше!** Но не беспокойтесь, это можно исправить сейчас, до того как закончится место в удаленном хранилище. + + | Измеренный размер | Настроенный размер | + | --- | --- | + | ${estimatedSize} | ${maxSize} | + + > [!MORE]- + > Если вы пользуетесь хранилищем много лет, в базе могли накопиться неиспользуемые фрагменты, то есть мусор. Поэтому рекомендуется выполнить полную перестройку. Скорее всего, база станет заметно меньше. + > + > Если объем вашего хранилища просто растет, лучше выполнить перестройку после наведения порядка в файлах. Self-hosted LiveSync не удаляет фактические данные сразу после удаления файлов, чтобы ускорить работу. Это кратко [описано](https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/tech_info.md). + > + > Если рост вас не беспокоит, можно увеличить порог уведомления на 100MB. Это подходит, если вы используете собственный сервер. Тем не менее время от времени лучше выполнять перестройку. + > + + > [!WARNING] + > Перед полной перестройкой убедитесь, что все устройства синхронизированы. Плагин постарается выполнить слияние насколько возможно. msgSetDBCapacity: Можно установить предупреждение о максимальной ёмкости базы данных. option2GB: 2ГБ (Стандарт) option800MB: 800МБ (Cloudant, fly.io) optionAskMeLater: Спросить позже optionDismiss: Отклонить - optionIncreaseLimit: увеличить до newMaxМБ + optionIncreaseLimit: увеличить до ${newMax}MB optionNoWarn: Нет, не уведомлять optionRebuildAll: Перестроить всё сейчас titleDatabaseSizeLimitExceeded: Размер удалённого хранилища превысил лимит @@ -371,7 +485,7 @@ moduleLiveSyncMain: logAdditionalSafetyScan: Дополнительная проверка безопасности... logLoadingPlugin: Загрузка плагина... logPluginInitCancelled: Инициализация плагина отменена модулем - logPluginVersion: Self-hosted LiveSync vmanifestVersion packageVersion + logPluginVersion: Self-hosted LiveSync v${manifestVersion} ${packageVersion} logReadChangelog: LiveSync обновлён, пожалуйста, прочитайте список изменений! logSafetyScanCompleted: Дополнительная проверка безопасности завершена logSafetyScanFailed: Дополнительная проверка безопасности не удалась в модуле @@ -379,32 +493,33 @@ moduleLiveSyncMain: logVersionUpdate: LiveSync обновлён. В случае критических изменений автоматическая синхронизация временно отключена. Убедитесь, что все устройства обновлены перед включением. - msgScramEnabled: > - Self-hosted LiveSync has been configured to ignore some events. Is this - correct? + msgScramEnabled: >- + Self-hosted LiveSync настроен так, чтобы игнорировать некоторые события. Это + верно? - | Type | Status | Note | + | Тип | Статус | Примечание | |:---:|:---:|---| - | Storage Events | ${fileWatchingStatus} | Every modification will be - ignored | + | События хранилища | ${fileWatchingStatus} | Каждое изменение будет + игнорироваться | - | Database Events | ${parseReplicationStatus} | Every synchronised change - will be postponed | + | События базы данных | ${parseReplicationStatus} | Каждое + синхронизированное изменение будет отложено | - Do you want to resume them and restart Obsidian? + Хотите возобновить их и перезапустить Obsidian? > [!DETAILS]- - > These flags are set by the plug-in while rebuilding, or fetching. If the - process ends abnormally, it may be kept unintended. + > Эти флаги устанавливаются плагином во время перестроения или получения + данных. Если процесс завершится ненормально, они могут остаться включёнными + непреднамеренно. - > If you are not sure, you can try to rerun these processes. Make sure to - back your vault up. + > Если вы не уверены, попробуйте повторно запустить эти процессы. + Обязательно сделайте резервную копию своего Vault. optionKeepLiveSyncDisabled: Оставить LiveSync отключённым optionResumeAndRestart: Продолжить и перезапустить Obsidian titleScramEnabled: Экстренная остановка включена @@ -419,8 +534,43 @@ moduleMigration: checkItLater: Проверить позже DismissForever: Исправлено, больше не спрашивать fix: Исправить - message: Из-за недавней ошибки некоторые файлы могут быть неправильно сохранены. - messageUnrecoverable: "Файлы не могут быть исправлены на этом устройстве:" + message: > + Из-за недавней ошибки (в v0.25.6) некоторые файлы могли быть неправильно + сохранены в базе данных синхронизации. + + Мы просканировали файлы и нашли те, которые нужно исправить. + + + **Файлы, готовые к исправлению:** + + + ${files} + + + У этих файлов есть совпадающий по размеру исходный файл в хранилище, + поэтому они, скорее всего, восстановимы. + + Мы можем использовать их для исправления базы данных. Нажмите кнопку + "Исправить" ниже. + + + ${messageUnrecoverable} + + + Если вы хотите запустить проверку снова, это можно сделать из Hatch. + messageUnrecoverable: > + **Файлы, которые нельзя исправить на этом устройстве:** + + + ${filesNotRecoverable} + + + У этих файлов несогласованные метаданные, поэтому их нельзя исправить на + этом устройстве (чаще всего невозможно определить, какая версия + правильная). + + Чтобы восстановить их, проверьте другие устройства с помощью этой функции + или восстановите файлы вручную из резервной копии. title: Обнаружены повреждённые файлы insecureChunkExist: buttons: @@ -434,17 +584,61 @@ moduleMigration: была повреждена. Приносим извинения. Автоматически отключено. logFetchRemoteTweakFailed: Не удалось загрузить удалённые настройки logLocalDatabaseNotReady: Что-то пошло не так! Локальная база данных не готова - logMigratedSameBehaviour: Миграция на db:current с тем же поведением, что и раньше - logMigrationFailed: Миграция не удалась или отменена с old на current + logMigratedSameBehaviour: Выполнена миграция на db:${current} с тем же поведением, что и раньше + logMigrationFailed: Миграция с ${old} на ${current} не выполнена или отменена logRedflag2CreationFail: Не удалось создать redflag2 logRemoteTweakUnavailable: Не удалось получить удалённые настройки logSetupCancelled: Настройка отменена, Self-hosted LiveSync ожидает вашей настройки! msgFetchRemoteAgain: Удалённая база данных, похоже, уже была мигрирована. Конфигурация этого устройства несовместима. - msgInitialSetup: Ваше устройство ещё не настроено. У вас есть Setup URI? - msgRecommendSetupUri: Мы рекомендуем сгенерировать Setup URI. - msgSinceV02321: Начиная с v0.23.21, self-hosted LiveSync изменил поведение и - структуру базы данных. + msgInitialSetup: >- + Ваше устройство **еще не настроено**. Я проведу вас через процесс настройки. + + + Помните, что содержимое каждого диалога можно скопировать в буфер обмена. + Если оно понадобится позже, вставьте его в заметку Obsidian. Также его можно + перевести на ваш язык с помощью переводчика. + + + Сначала: у вас есть **Setup URI**? + + + Примечание: если вы не знаете, что это такое, обратитесь к + [документации](${URI_DOC}). + msgRecommendSetupUri: >- + Мы настоятельно рекомендуем создать и использовать Setup URI. + + Если вы не знакомы с этим, обратитесь к [документации](${URI_DOC}) + (извините, но это действительно важно). + + + Как вы хотите настроить подключение вручную? + msgSinceV02321: >- + Начиная с v0.23.21, Self-hosted LiveSync изменил поведение по умолчанию и + структуру базы данных. Были внесены следующие изменения: + + + 1. **Чувствительность имен файлов к регистру** + Обработка имен файлов теперь не чувствительна к регистру. Это полезно для большинства платформ, кроме Linux и iOS, где регистр имен файлов обрабатывается иначе. + (На таких платформах будет показано предупреждение для файлов с одинаковым именем, но разным регистром.) + + 2. **Обработка ревизий фрагментов** + Фрагменты стали неизменяемыми, что позволяет фиксировать их ревизии. Это повышает производительность сохранения файлов. + + ___Однако, чтобы включить любое из этих изменений, нужно перестроить и + удаленную, и локальную базы данных. Этот процесс занимает несколько минут, + поэтому лучше делать это, когда у вас достаточно времени.___ + + + - Если вы хотите сохранить прежнее поведение, пропустите процесс с помощью + `${KEEP}`. + + - Если у вас сейчас недостаточно времени, выберите `${DISMISS}`. Позже + появится повторный запрос. + + - Если вы уже перестроили базу данных на другом устройстве, выберите + `${DISMISS}` и попробуйте синхронизироваться снова. Так как обнаружено + различие, запрос появится повторно. optionAdjustRemote: Настроить под удалённую optionDecideLater: Решить позже optionEnableBoth: Включить оба @@ -456,7 +650,7 @@ moduleMigration: optionNoAskAgain: Нет, спросить снова optionNoSetupUri: Нет, нет optionRemindNextLaunch: Напомнить при следующем запуске - optionSetupViaP2P: Использовать short_p2p_sync для настройки + optionSetupViaP2P: Настроить через %{short_p2p_sync} optionSetupWizard: Перейти в мастер настройки optionYesFetchAgain: Да, загрузить снова titleCaseSensitivity: Чувствительность к регистру @@ -466,9 +660,15 @@ moduleObsidianMenu: replicate: Реплицировать More actions: Другие действия Move remotely deleted files to the trash, instead of deleting.: Перемещать удалённые на удалённом сервере файлы в корзину вместо удаления. -Network warning style: Стиль сетевого предупреждения +Network warning style: Стиль сетевых предупреждений New Remote: Новое удалённое хранилище +No connected device information found. Cancelling Garbage Collection.: + Не найдена информация о подключённых устройствах. Garbage Collection + отменяется. No limit configured: Лимит не задан +No, please take me back: Нет, верните меня назад +Node ID: ID узла +Node Information Missing: Отсутствует информация об узле Non-Synchronising files: Несинхронизируемые файлы Normal Files: Обычные файлы Not all messages have been translated. And, please revert to "Default" when reporting errors.: @@ -478,11 +678,15 @@ Notify all setting files: Уведомлять обо всех файлах на Notify customized: Уведомлять о настройках Notify when other device has newly customized.: Уведомлять, когда другое устройство изменило настройки. 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.: Количество пакетов для обработки за раз. По умолчанию 40. Минимум 2. +Now we can choose how to split the chunks; V3 is the most efficient. If you have troubled, please make this Default or Legacy.: + Теперь можно выбрать способ разделения фрагментов; V3 наиболее эффективен. + Если возникнут проблемы, используйте Default или Legacy. 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. + Количество пакетов, обрабатываемых за один раз. По умолчанию — 40. Минимум — + 2. Этот параметр вместе с размером пакета определяет, сколько документов + одновременно хранится в памяти. Number of changes to sync at a time. Defaults to 50. Minimum is 2.: Количество изменений для синхронизации за раз. По умолчанию 50. Минимум 2. +Obsidian version: Версия Obsidian obsidianLiveSyncSettingTab: btnApply: Применить btnCheck: Проверить @@ -501,11 +705,15 @@ obsidianLiveSyncSettingTab: defaultLanguage: По умолчанию descConnectSetupURI: Это рекомендуемый способ настройки Self-hosted LiveSync с помощью Setup URI. descCopySetupURI: Идеально подходит для настройки нового устройства! - descEnableLiveSync: Включайте это только после настройки одного из двух вариантов выше или после полного ручного завершения всей конфигурации. + descEnableLiveSync: Включайте это только после настройки одного из двух + вариантов выше или после полного ручного завершения всей конфигурации. descFetchConfigFromRemote: Получить необходимые настройки с уже настроенного удалённого сервера. descManualSetup: Не рекомендуется, но полезно, если у вас нет Setup URI. - descTestDatabaseConnection: Открыть подключение к базе данных. Если удалённая база данных не найдена и у вас есть право на её создание, база будет создана. - descValidateDatabaseConfig: Проверяет и исправляет любые потенциальные проблемы в конфигурации базы данных. + descTestDatabaseConnection: Открыть подключение к базе данных. Если удалённая + база данных не найдена и у вас есть право на её создание, база будет + создана. + descValidateDatabaseConfig: Проверяет и исправляет любые потенциальные проблемы + в конфигурации базы данных. errAccessForbidden: ❗ Доступ запрещён. errCannotContinueTest: Мы не можем продолжить тест. errCorsCredentials: ❗ cors.credentials неверно @@ -531,22 +739,25 @@ obsidianLiveSyncSettingTab: logCheckingConfigDone: Проверка конфигурации завершена logCheckingConfigFailed: Проверка конфигурации не удалась logCheckingDbConfig: Проверка конфигурации базы данных - logCheckPassphraseFailed: "ОШИБКА: Не удалось проверить пароль с удалённым сервером: db." + logCheckPassphraseFailed: |- + ОШИБКА: не удалось проверить парольную фразу на удалённом сервере: + ${db}. logConfiguredDisabled: "Настроенный режим синхронизации: ОТКЛЮЧЕН" logConfiguredLiveSync: "Настроенный режим синхронизации: LiveSync" logConfiguredPeriodic: "Настроенный режим синхронизации: Периодический" - logCouchDbConfigFail: "Конфигурация CouchDB: title не удалась" - logCouchDbConfigSet: "Конфигурация CouchDB: title -> Установить key в value" - logCouchDbConfigUpdated: "Конфигурация CouchDB: title успешно обновлена" + logCouchDbConfigFail: "Конфигурация CouchDB: ${title} — ошибка" + logCouchDbConfigSet: "Конфигурация CouchDB: ${title} -> установить ${key} в ${value}" + logCouchDbConfigUpdated: "Конфигурация CouchDB: ${title} успешно обновлена" logDatabaseConnected: База данных подключена logEncryptionNoPassphrase: Вы не можете включить шифрование без парольной фразы logEncryptionNoSupport: Ваше устройство не поддерживает шифрование. logErrorOccurred: Произошла ошибка!! - logEstimatedSize: "Примерный размер: size" + logEstimatedSize: "Оценочный размер: ${size}" logPassphraseInvalid: Парольная фраза недействительна, пожалуйста, исправьте. logPassphraseNotCompatible: "ОШИБКА: Парольная фраза несовместима с удалённым сервером!" logRebuildNote: Синхронизация отключена, загрузите и включите снова при желании. logSelectAnyPreset: Выберите любой пресет. + logServerConfigurationCheck: Проверка конфигурации сервера msgAreYouSureProceed: Вы уверены, что хотите продолжить? msgChangesNeedToBeApplied: Изменения нужно применить! msgConfigCheck: --Проверка конфигурации-- @@ -554,7 +765,7 @@ obsidianLiveSyncSettingTab: msgConnectionCheck: --Проверка подключения-- msgConnectionProxyNote: Если у вас проблемы с проверкой подключения, проверьте конфигурацию обратного прокси. - msgCurrentOrigin: "Текущий origin: origin" + msgCurrentOrigin: "Текущий origin: ${origin}" msgDiscardConfirmation: Вы действительно хотите отменить существующие настройки и базы данных? msgDone: --Готово-- msgEnableCors: Установить httpd.enable_cors @@ -570,8 +781,56 @@ obsidianLiveSyncSettingTab: msgNonHTTPSWarning: Не удаётся подключиться к не-HTTPS URI. Обновите конфигурацию. msgNotice: ---Уведомление--- msgObjectStorageWarning: "ПРЕДУПРЕЖДЕНИЕ: Эта функция в разработке." - msgOriginCheck: "Проверка origin: org" - msgRebuildRequired: Требуется перестроение баз данных для применения изменений. + msgOriginCheck: "Проверка origin: ${org}" + msgRebuildRequired: >- + Для применения изменений требуется перестроить базы данных. Выберите способ + применения изменений. + + +
+ + Обозначения + + + | Символ | Значение | + + |: ------ :| ------- | + + | ⇔ | Актуально | + + | ⇄ | Синхронизировать для выравнивания | + + | ⇐,⇒ | Передать с перезаписью | + + | ⇠,⇢ | Передать с перезаписью с другой стороны | + + +
+ + + ## ${OPTION_REBUILD_BOTH} + + Кратко: 📄 ⇒¹ 💻 ⇒² 🛰️ ⇢ⁿ 💻 ⇄ⁿ⁺¹ 📄 + + Перестроить локальную и удаленную базы данных с использованием существующих + файлов на этом устройстве. + + Это заблокирует другие устройства, и им потребуется выполнить получение + данных. + + ## ${OPTION_FETCH} + + Кратко: 📄 ⇄² 💻 ⇐¹ 🛰️ ⇔ 💻 ⇔ 📄 + + Инициализировать локальную базу данных и восстановить ее данными, + полученными из удаленной базы. + + Этот вариант также подходит, если удаленная база уже была перестроена. + + ## ${OPTION_ONLY_SETTING} + + Сохранить только настройки. **Внимание: это может привести к повреждению + данных**; обычно требуется перестройка базы данных. msgSelectAndApplyPreset: Выберите и примените любой пресет для завершения мастера. msgSetCorsCredentials: Установить cors.credentials msgSetCorsOrigins: Установить cors.origins @@ -579,7 +838,9 @@ obsidianLiveSyncSettingTab: msgSetMaxRequestSize: Установить chttpd.max_http_request_size msgSetRequireValidUser: Установить chttpd.require_valid_user = true msgSetRequireValidUserAuth: Установить chttpd_auth.require_valid_user = true - msgSettingModified: Настройка setting была изменена с другого устройства. + msgSettingModified: Настройка "${setting}" была изменена с другого устройства. + Нажмите {HERE}, чтобы перезагрузить настройки. Нажмите в другом месте, чтобы + игнорировать изменения. msgSettingsUnchangeableDuringSync: Эти настройки нельзя изменить во время синхронизации. msgSetWwwAuth: Установить httpd.WWW-Authenticate nameApplySettings: Применить настройки @@ -608,12 +869,12 @@ obsidianLiveSyncSettingTab: okWwwAuth: ✔ httpd.WWW-Authenticate в порядке. optionApply: Применить optionCancel: Отмена - optionCouchDB: CouchDB + optionCouchDB: Сервер CouchDB optionDisableAllAutomatic: Отключить всё автоматическое optionFetchFromRemote: Загрузить с удалённого optionHere: ЗДЕСЬ optionLiveSync: Синхронизация LiveSync - optionMinioS3R2: Minio,S3,R2 + optionMinioS3R2: MinIO, S3, R2 optionOkReadEverything: ОК, я всё прочитал. optionOnEvents: По событиям optionPeriodicAndEvents: Периодически и по событиям @@ -625,7 +886,7 @@ obsidianLiveSyncSettingTab: panelPrivacyEncryption: Конфиденциальность и шифрование panelRemoteConfiguration: Удалённая конфигурация panelSetup: Настройка - serverVersion: "Информация о сервере: info" + serverVersion: "Информация о сервере: ${info}" titleActiveRemoteServer: Активный удалённый сервер titleAppearance: Внешний вид titleConflictResolution: Разрешение конфликтов @@ -654,7 +915,7 @@ obsidianLiveSyncSettingTab: titleSyncSettings: Настройки синхронизации titleSyncSettingsViaMarkdown: Синхронизация настроек через Markdown titleUpdateThinning: Оптимизация обновлений - warnCorsOriginUnmatched: ⚠ CORS Origin не совпадает from->to + warnCorsOriginUnmatched: ⚠ CORS Origin не совпадает ${from}->${to} warnNoAdmin: ⚠ У вас нет прав администратора. Ok: ОК Old Algorithm: Старый алгоритм @@ -671,9 +932,10 @@ P2P: пароль для расшифровки. AskPassphraseForShare: Удалённое устройство запрашивает эту конфигурацию. Введите пароль для передачи. - DisabledButNeed: title_p2p_sync отключён. Вы действительно хотите включить? + DisabledButNeed: "%{title_p2p_sync} отключён. Вы действительно хотите включить его?" FailedToOpen: Не удалось открыть P2P подключение к серверу сигнализации. - NoAutoSyncPeers: Автосинхронизируемые устройства не найдены. + NoAutoSyncPeers: Устройства для автосинхронизации не найдены. Укажите их на + панели %{long_p2p_sync}. NoKnownPeers: Устройства не обнаружены, ожидаем другие устройства... Note: description: Этот репликатор позволяет синхронизировать хранилище с другими @@ -682,14 +944,14 @@ P2P: important_note_sub: Эта функция всё ещё на стадии разработки. Пожалуйста, убедитесь, что ваши данные зарезервированы. Summary: Что это за функция? (важные замечания) - NotEnabled: title_p2p_sync не включён. Мы не можем открыть новое подключение. - P2PReplication: P2P Репликация - PaneTitle: long_p2p_sync + NotEnabled: "%{title_p2p_sync} не включён. Мы не можем открыть новое подключение." + P2PReplication: Репликация %{P2P} + PaneTitle: "%{long_p2p_sync}" ReplicatorInstanceMissing: P2P Sync репликатор не найден, возможно, не настроен. - SeemsOffline: Устройство name офлайн, пропущено. + SeemsOffline: Пир ${name}, похоже, офлайн; пропущено. SyncAlreadyRunning: P2P Sync уже запущен. SyncCompleted: P2P Sync завершён. - SyncStartedWith: P2P Sync с name начат. + SyncStartedWith: P2P Sync с ${name} запущен. paneMaintenance: markDeviceResolvedAfterBackup: Пометить устройство как обработанное после резервного копирования remoteLockedAndDeviceNotAccepted: Удалённая база данных заблокирована, и это устройство ещё не одобрено. @@ -700,9 +962,11 @@ Passphrase of sensitive configuration items: Парольная фраза дл password: пароль Password: Пароль Paste a connection string: Вставить строку подключения +Paste the Setup URI generated from one of your active devices.: Вставьте Setup URI, созданный на одном из ваших активных устройств。 Path Obfuscation: Обфускация путей Patterns to match files for overwriting instead of merging: Шаблоны для файлов, которые нужно перезаписывать вместо объединения Patterns to match files for syncing: Шаблоны для файлов, которые нужно синхронизировать +Peer-to-Peer only: Только Peer-to-Peer Peer-to-Peer Synchronisation: Одноранговая синхронизация Per-file-saved customization sync: Синхронизация настроек для каждого файла Perform: Выполнить @@ -712,15 +976,33 @@ Perform Garbage Collection to remove unused chunks and reduce database size.: Выполняет сборку мусора, чтобы удалить неиспользуемые чанки и уменьшить размер базы данных. Periodic Sync interval: Интервал периодической синхронизации -Pick a file to resolve conflict: Выбрать файл для разрешения конфликта +Pick a file to resolve conflict: Выберите файл для разрешения конфликта +Pick a file to show history: Выберите файл для просмотра истории +Please disable 'Read chunks online' in settings to use Garbage Collection.: + Чтобы использовать Garbage Collection, отключите в настройках «Read chunks + online». +Please enable 'Compute revisions for chunks' in settings to use Garbage Collection.: + Чтобы использовать Garbage Collection, включите в настройках «Compute + revisions for chunks». +Please select 'Cancel' explicitly to cancel this operation.: Чтобы отменить эту операцию, явно выберите «Отмена». +Please select a method to import the settings from another device.: Выберите способ импорта настроек с другого устройства。 +Please select an option to proceed: Чтобы продолжить, выберите вариант +Please select the type of server to which you are connecting.: Выберите тип сервера, к которому вы подключаетесь。 Please set device name to identify this device. This name should be unique among your devices. While not configured, we cannot enable this feature.: Укажите имя устройства для идентификации этого устройства. Имя должно быть уникальным среди ваших устройств. Пока оно не задано, мы не можем включить эту функцию. Please set this device name: Укажите имя этого устройства +Plug-in version: Версия плагина Prepare the 'report' to create an issue: Подготовить «отчёт» для создания Issue Presets: Пресеты +Proceed Garbage Collection: Продолжить Garbage Collection +Proceed with Setup URI: Продолжить с Setup URI +Proceeding with Garbage Collection, ignoring missing nodes.: Продолжаем Garbage Collection, игнорируя отсутствующие узлы. +Proceeding with Garbage Collection.: Запускаем Garbage Collection. +Process files even if seems to be corrupted: Обрабатывать файлы, даже если они выглядят поврежденными Process small files in the foreground: Обрабатывать маленькие файлы в основном потоке +Progress: Прогресс Property Encryption: Шифрование свойств PureJS fallback (Fast, W/O WebAssembly): Вариант PureJS (быстрый, без WebAssembly) Purge all download/upload cache.: Очистить весь кэш загрузки/выгрузки. @@ -732,17 +1014,108 @@ Recreate missing chunks for all files: Пересоздать отсутству RedFlag: Fetch: Method: - Desc: Как вы хотите загрузить? + Desc: >- + Как вы хотите выполнить получение? + + - %{RedFlag.Fetch.Method.FetchSafer}. + **Меньше трафика**, **больше нагрузки на CPU**, **низкий риск** + Рекомендуется, если ... + - файлы могут быть несогласованы + - файлов не слишком много + - %{RedFlag.Fetch.Method.FetchSmoother}. + **Меньше трафика**, **умеренная нагрузка на CPU**, **низкий или умеренный риск** + Рекомендуется, если ... + - файлы, скорее всего, согласованы + - у вас много файлов. + - %{RedFlag.Fetch.Method.FetchTraditional}. + **Больше трафика**, **меньше нагрузки на CPU**, **низкий или умеренный риск** + + >[!INFO]- Подробности + + > ## %{RedFlag.Fetch.Method.FetchSafer}. + + > **Меньше трафика**, **больше нагрузки на CPU**, **низкий риск** + + > Этот вариант сначала создаёт локальную базу данных из существующих + локальных файлов, а затем получает данные из удалённого источника. + + > Если совпадающие файлы есть и локально, и удалённо, будут переданы + только различия между ними. + + > Однако файлы, присутствующие в обоих местах, сначала будут обработаны + как конфликтующие. Если реального конфликта нет, они будут разрешены + автоматически, но это может занять время. + + > Обычно это самый безопасный способ, минимизирующий риск потери данных. + + > ## %{RedFlag.Fetch.Method.FetchSmoother}. + + > **Меньше трафика**, **умеренная нагрузка на CPU**, **низкий или + умеренный риск** (зависит от операции) + + > Этот вариант сначала создаёт чанки из локальных файлов для базы + данных, а затем получает данные. Поэтому передаются только отсутствующие + локально чанки. Но все метаданные берутся из удалённого источника. + + > При запуске локальные файлы сравниваются с этими метаданными. + Содержимое, которое считается более новым, перезаписывает старое (по + времени изменения). Затем результат синхронизируется обратно в удалённую + базу данных. + + > Обычно это безопасно, если локальные файлы действительно имеют самый + новый timestamp. Но возможны проблемы, если файл имеет более новый + timestamp, но более старое содержимое (например, начальный + `welcome.md`). + + > Это использует меньше CPU и работает быстрее, чем + "%{RedFlag.Fetch.Method.FetchSafer}", но при неосторожном использовании + может привести к потере данных. + + > ## %{RedFlag.Fetch.Method.FetchTraditional}. + + > **Больше трафика**, **меньше нагрузки на CPU**, **низкий или умеренный + риск** (зависит от операции) + + > Всё будет получено из удалённого источника. + + > Похоже на %{RedFlag.Fetch.Method.FetchSmoother}, но все чанки + загружаются из удалённого источника. + + > Это самый традиционный способ получения, обычно требующий больше всего + сетевого трафика и времени. Он также несёт риск перезаписи удалённых + файлов, похожий на вариант '%{RedFlag.Fetch.Method.FetchSmoother}'. + + > Однако его часто считают самым стабильным, потому что это самый старый + и прямой подход. FetchSafer: Создать локальную базу данных перед загрузкой FetchSmoother: Создать локальные чанки перед загрузкой FetchTraditional: Загрузить всё с удалённого Title: Как вы хотите загрузить? FetchRemoteConfig: + Applied: Remote configuration applied. Buttons: Cancel: Нет, использовать локальные настройки Fetch: Да, загрузить и применить удалённые настройки + Retry: Retry (recommended) + SkipAndProceed: Skip and proceed + FailedMessage: Could not fetch configuration from remote. If you are new to the + Self-hosted LiveSync, this might be expected. If not, you should check + your network or server settings. + FailedTitle: Fetch Remote Configuration Failed + MatchesLocal: Remote configuration matches local configuration. No changes applied. Message: Вы хотите загрузить и применить удалённые настройки? + NotApplied: Remote configuration not applied. + SettingsDiffered: Your settings differed slightly from the server's. The plug-in + has supplemented the incompatible parts with the server settings! Title: Загрузить удалённую конфигурацию + Log: + FetchEverythingCancelled: Fetch everything cancelled by user. + FetchEverythingCompleted: Fetch everything operation completed. Vault files will be gradually synced. + RebuildEverythingCancelled: Rebuild everything cancelled by user. + RebuildEverythingCompleted: Rebuild everything operation completed. + VaultInitialisationError: Error during vault initialisation. + VaultInitialisationProcessError: Error during vault initialisation process. + ResumeProcessingPrompt: Do you want to resume file and database processing, and restart obsidian now? Reducing the frequency with which on-disk changes are reflected into the DB: Уменьшение частоты отражения изменений с диска в БД Region: Регион Remediation: Исправление @@ -761,8 +1134,23 @@ Replicator: Fetch: Сбросить синхронизацию на этом устройстве Unlock: Разблокировать удалённую базу данных Message: - _value: Удалённая база данных заблокирована. Это связано с перестроением на - одном из устройств. + _value: > + Удалённая база данных заблокирована. Это связано с перестроением на + одном из терминалов. + + Поэтому этому устройству предлагается воздержаться от подключения, + чтобы избежать повреждения базы данных. + + + Доступны три варианта: + + + - %{Replicator.Dialogue.Locked.Action.Fetch} + Самый предпочтительный и надёжный способ. Он один раз удалит локальную базу данных и заново сбросит всю информацию синхронизации из удалённой базы данных. В большинстве случаев это можно выполнить безопасно. Однако это занимает время и должно выполняться при стабильной сети. + - %{Replicator.Dialogue.Locked.Action.Unlock} + Этот способ можно использовать только если мы уже надёжно синхронизированы другими методами репликации. Это не просто означает, что у нас одинаковые файлы. Если вы не уверены, лучше избегать этого варианта. + - %{Replicator.Dialogue.Locked.Action.Dismiss} + Операция будет отменена. При следующем запросе вопрос будет задан снова. Fetch: Загрузка всего запланирована. Плагин будет перезапущен. Unlocked: Удалённая база данных разблокирована. Повторите операцию. Title: Заблокировано @@ -799,11 +1187,12 @@ Resolve All conflicted files by the newer one: Разрешить все кон Restart Now: Перезапустить сейчас Restore or reconstruct local database from remote.: Восстановить или перестроить локальную базу данных из удалённой. Run Doctor: Запустить диагностику -Save settings to a markdown file.: Сохранить настройки в файл markdown. +S3/MinIO/R2 Object Storage: Объектное хранилище S3/MinIO/R2 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. + Сохранять настройки в файл Markdown. Когда появятся новые настройки, вы + получите уведомление. Для каждой платформы можно указать свой файл. Saving will be performed forcefully after this number of seconds.: Сохранение будет принудительно выполнено после этого количества секунд. +Scan a QR Code (Recommended for mobile): Сканировать QR-код (рекомендуется для мобильных устройств) Scan changes on customization sync: Сканировать изменения при синхронизации настроек Scan customization automatically: Сканировать настройки автоматически Scan customization before replicating.: Сканировать настройки перед репликацией. @@ -811,18 +1200,85 @@ Scan customization every 1 minute.: Сканировать настройки к Scan customization periodically: Сканировать настройки периодически Scan for hidden files before replication: Сканировать скрытые файлы перед репликацией Scan hidden files periodically: Сканировать скрытые файлы периодически +Scan the QR code displayed on an active device using this device's camera.: + Отсканируйте QR-код, показанный на активном устройстве, с помощью камеры этого + устройства。 Schedule and Restart: Запланировать и перезапустить Scram!: Экстренные меры Seconds, 0 to disable: Секунд, 0 для отключения Seconds. Saving to the local database will be delayed until this value after we stop typing or saving.: Секунды. Сохранение в локальную базу данных будет отложено. Secret Key: Секретный ключ Select the database adapter to use.: Выберите используемый адаптер базы данных. +Selector: Селектор Send: Отправить Send chunks: Отправить чанки Server URI: URI сервера Setting: GenerateKeyPair: - Desc: Мы сгенерировали пару ключей! + Desc: >+ + Мы сгенерировали пару ключей! + + + Примечание: эта пара ключей больше никогда не будет показана. Сохраните её + в безопасном месте. Если вы её потеряете, нужно будет создать новую пару + ключей. + + Примечание 2: публичный ключ имеет формат spki, а приватный ключ — pkcs8. + Для удобства переносы строк в публичном ключе преобразованы в `\n`. + + Примечание 3: публичный ключ должен быть настроен в удалённой базе данных, + а приватный ключ — на локальных устройствах. + + + >[!FOR YOUR EYES ONLY]- + + >
+ + > + + > ### Публичный ключ + + > ``` + + ${public_key} + + > ``` + + > + + > ### Приватный ключ + + > ``` + + ${private_key} + + > ``` + + > + + >
+ + + >[!Both for copying]- + + > + + >
+ + > + + > ``` + + ${public_key} + + ${private_key} + + > ``` + + > + + >
+ Title: Новая пара ключей сгенерирована! TroubleShooting: _value: Устранение неполадок @@ -836,6 +1292,7 @@ SettingTab: Message: AskRebuild: Ваши изменения требуют загрузки из удалённой базы данных. Хотите продолжить? +Setup URI dialog cancelled.: Диалог Setup URI был отменён. Setup: Apply: Buttons: @@ -845,9 +1302,15 @@ Setup: Cancel: Отменить и отменить OnlyApply: Только применить Message: Новая конфигурация готова. Есть несколько способов применить её. - Title: Применить новую конфигурацию из method + Title: Применить новую конфигурацию из ${method} WarningRebuildRecommended: "ПРИМЕЧАНИЕ: после настройки изменений определено, что требуется перестроение." + Command: + CopySetupUri: Copy settings as a new setup URI + CopySetupUriFull: Copy settings as a new setup URI (Full) + CopySetupUriWithSync: Copy settings as a new setup URI (With customization sync) + OpenSetupUri: Use the copied setup URI (Formerly Open setup URI) + ShowSettingsQrCode: Show settings as a QR code Doctor: Buttons: No: Нет, использовать настройки из URI как есть @@ -855,6 +1318,8 @@ Setup: Message: Self-hosted LiveSync постепенно набрал историю и некоторые рекомендуемые настройки изменились. Title: Хотите запустить диагностику? + EncryptSettingsPassphrase: The passphrase to encrypt the setup URI + EncryptSettingsTitle: Encrypt your settings FetchRemoteConf: Buttons: Fetch: Да, загрузить конфигурацию @@ -862,110 +1327,111 @@ Setup: Message: Если мы уже синхронизировались с другим устройством, удалённая база данных хранит подходящие значения конфигурации. Title: Загрузить конфигурацию с удалённой базы данных? - QRCode: Мы сгенерировали QR-код для передачи настроек. Отсканируйте QR-код телефоном. - ShowQRCode: - _value: Показать QR код - Desc: Показать QR код для передачи настроек. + Log: + ProtocolHandlerRegistrationFailed: Failed to register protocol handler. This + feature may not work in some environments. + SetupUriCopiedToClipboard: Setup URI copied to clipboard + QRCode: >- + We have generated a QR code to transfer the settings. Please scan the QR + code with your phone or other device. + + Note: The QR code is not encrypted, so be careful to open this. + + + >[!FOR YOUR EYES ONLY]- + + >
${qr_image}
+ QRCodeTitle: Settings QR Code RemoteE2EE: - Title: Сквозное шифрование + AdvancedTitle: Дополнительно + AlgorithmWarning: Изменение алгоритма шифрования лишит доступа к данным, которые + ранее были зашифрованы другим алгоритмом. Убедитесь, что все ваши + устройства настроены на использование одного и того же алгоритма, чтобы + сохранить доступ к данным. + ButtonCancel: Отмена + ButtonProceed: Продолжить + DefaultAlgorithmDesc: В большинстве случаев следует оставить алгоритм по + умолчанию (${algorithm}). Этот параметр нужен только в том случае, если у + вас уже есть Vault, зашифрованный в другом формате. Guidance: Пожалуйста, настройте параметры сквозного шифрования. LabelEncrypt: Сквозное шифрование + LabelEncryptionAlgorithm: Алгоритм шифрования + LabelObfuscateProperties: Обфусцировать свойства + MultiDestinationWarning: Этот параметр должен быть одинаковым даже при + подключении к нескольким направлениям синхронизации. + ObfuscatePropertiesDesc: Обфускация свойств (например, пути к файлу, размера, + дат создания и изменения) добавляет дополнительный уровень защиты, + затрудняя определение структуры и названий ваших файлов и папок на + удалённом сервере. Это помогает защитить вашу конфиденциальность и + усложняет для посторонних вывод информации о ваших данных. + PassphraseValidationLine1: "Обратите внимание: парольная фраза для сквозного + шифрования не проверяется до фактического начала процесса синхронизации. + Это сделано в целях безопасности ваших данных." + PassphraseValidationLine2: Поэтому при ручной настройке информации о сервере + требуется предельная осторожность. Если будет введена неверная парольная + фраза, данные на сервере будут повреждены. Пожалуйста, учтите, что это + ожидаемое поведение. PlaceholderPassphrase: Введите парольную фразу + StronglyRecommendedLine1: При включении сквозного шифрования ваши данные + шифруются на устройстве до отправки на удалённый сервер. Это означает, что + даже если кто-то получит доступ к серверу, он не сможет прочитать ваши + данные без парольной фразы. Обязательно запомните парольную фразу, так как + она потребуется для расшифровки данных на других устройствах. + StronglyRecommendedLine2: "Также обратите внимание: если вы используете + синхронизацию Peer-to-Peer, эта конфигурация будет использована, когда вы + позже переключитесь на другие методы и подключитесь к удалённому серверу." StronglyRecommendedTitle: Настоятельно рекомендуется - StronglyRecommendedLine1: При включении сквозного шифрования ваши данные шифруются на устройстве до отправки на удалённый сервер. Это означает, что даже если кто-то получит доступ к серверу, он не сможет прочитать ваши данные без парольной фразы. Обязательно запомните парольную фразу, так как она потребуется для расшифровки данных на других устройствах. - StronglyRecommendedLine2: >- - Также обратите внимание: если вы используете синхронизацию Peer-to-Peer, эта конфигурация будет использована, когда вы позже переключитесь на другие методы и подключитесь к удалённому серверу. - MultiDestinationWarning: Этот параметр должен быть одинаковым даже при подключении к нескольким направлениям синхронизации. - LabelObfuscateProperties: Обфусцировать свойства - ObfuscatePropertiesDesc: Обфускация свойств (например, пути к файлу, размера, дат создания и изменения) добавляет дополнительный уровень защиты, затрудняя определение структуры и названий ваших файлов и папок на удалённом сервере. Это помогает защитить вашу конфиденциальность и усложняет для посторонних вывод информации о ваших данных. - AdvancedTitle: Дополнительно - LabelEncryptionAlgorithm: Алгоритм шифрования - DefaultAlgorithmDesc: В большинстве случаев следует оставить алгоритм по умолчанию (${algorithm}). Этот параметр нужен только в том случае, если у вас уже есть Vault, зашифрованный в другом формате. - AlgorithmWarning: Изменение алгоритма шифрования лишит доступа к данным, которые ранее были зашифрованы другим алгоритмом. Убедитесь, что все ваши устройства настроены на использование одного и того же алгоритма, чтобы сохранить доступ к данным. - PassphraseValidationLine1: >- - Обратите внимание: парольная фраза для сквозного шифрования не проверяется до фактического начала процесса синхронизации. Это сделано в целях безопасности ваших данных. - PassphraseValidationLine2: Поэтому при ручной настройке информации о сервере требуется предельная осторожность. Если будет введена неверная парольная фраза, данные на сервере будут повреждены. Пожалуйста, учтите, что это ожидаемое поведение. - ButtonProceed: Продолжить - ButtonCancel: Отмена + Title: Сквозное шифрование + ScanQRCode: + ButtonClose: Закрыть это окно + Guidance: Чтобы импортировать настройки с существующего устройства, выполните + следующие шаги. + Step1: На этом устройстве оставьте данный Vault открытым. + Step2: На исходном устройстве откройте Obsidian. + Step3: На исходном устройстве в палитре команд выполните команду «Показать + настройки как QR-код». + Step4: На этом устройстве откройте приложение камеры или используйте сканер + QR-кодов, чтобы считать показанный QR-код. + Title: Сканировать QR-код + SetupUri: Setup URI + ShowQRCode: + _value: Показать QR код + Desc: Показать QR код для передачи настроек. UseSetupURI: - Title: Ввести Setup URI - GuidanceLine1: Введите Setup URI, созданный во время установки сервера или на другом устройстве, а также парольную фразу Vault. - GuidanceLine2: Новый Setup URI можно создать, выполнив в палитре команд команду «Скопировать настройки как новый Setup URI». - LabelSetupURI: Setup URI - ValidInfo: Setup URI корректен и готов к использованию. + ButtonCancel: Отмена + ButtonProceed: Проверить настройки и продолжить + ErrorFailedToParse: Не удалось обработать Setup URI. Проверьте URI и парольную фразу. + ErrorPassphraseRequired: Пожалуйста, введите парольную фразу Vault. + GuidanceLine1: Введите Setup URI, созданный во время установки сервера или на + другом устройстве, а также парольную фразу Vault. + GuidanceLine2: Новый Setup URI можно создать, выполнив в палитре команд команду + «Скопировать настройки как новый Setup URI». InvalidInfo: Setup URI некорректен. Проверьте его и попробуйте снова. LabelPassphrase: Парольная фраза Vault + LabelSetupURI: Setup URI PlaceholderPassphrase: Введите парольную фразу Vault - ErrorPassphraseRequired: Пожалуйста, введите парольную фразу Vault. - ErrorFailedToParse: Не удалось обработать Setup URI. Проверьте URI и парольную фразу. - ButtonProceed: Проверить настройки и продолжить - ButtonCancel: Отмена - ScanQRCode: - Title: Сканировать QR-код - Guidance: Чтобы импортировать настройки с существующего устройства, выполните следующие шаги. - Step1: На этом устройстве оставьте данный Vault открытым. - Step2: На исходном устройстве откройте Obsidian. - Step3: На исходном устройстве в палитре команд выполните команду «Показать настройки как QR-код». - Step4: На этом устройстве откройте приложение камеры или используйте сканер QR-кодов, чтобы считать показанный QR-код. - ButtonClose: Закрыть это окно -"Please enable 'Compute revisions for chunks' in settings to use Garbage Collection.": Чтобы использовать Garbage Collection, включите в настройках «Compute revisions for chunks». -"Please disable 'Read chunks online' in settings to use Garbage Collection.": Чтобы использовать Garbage Collection, отключите в настройках «Read chunks online». -"Setup URI dialog cancelled.": Диалог Setup URI был отменён. -"Please select 'Cancel' explicitly to cancel this operation.": Чтобы отменить эту операцию, явно выберите «Отмена». -"Failed to connect to remote for compaction.": Не удалось подключиться к удалённой базе данных для компакции. -"Failed to connect to remote for compaction. ${reason}": Не удалось подключиться к удалённой базе данных для компакции. ${reason} -"Compaction in progress on remote database...": Выполняется компакция удалённой базы данных... -"Compaction on remote database timed out.": Время ожидания компакции удалённой базы данных истекло. -"Compaction on remote database completed successfully.": Компакция удалённой базы данных успешно завершена. -"Compaction on remote database failed.": Компакция удалённой базы данных завершилась ошибкой. -"Failed to start one-shot replication before Garbage Collection. Garbage Collection Cancelled.": Не удалось запустить одноразовую репликацию перед Garbage Collection. Garbage Collection отменена. -"Cancel Garbage Collection": Отменить Garbage Collection -"No connected device information found. Cancelling Garbage Collection.": Не найдена информация о подключённых устройствах. Garbage Collection отменяется. -"The following accepted nodes are missing its node information:\n- ${missingNodes}\n\nThis indicates that they have not been connected for some time or have been left on an older version.\nIt is preferable to update all devices if possible. If you have any devices that are no longer in use, you can clear all accepted nodes by locking the remote once.": |- - Для следующих принятых узлов отсутствует информация об узле: - - ${missingNodes} - - Это означает, что они давно не подключались или остались на старой версии. - По возможности рекомендуется сначала обновить все устройства. Если у вас есть устройства, которые больше не используются, вы можете очистить список всех принятых узлов, один раз заблокировав удалённую базу. -"Ignore and Proceed": Игнорировать и продолжить -"Node Information Missing": Отсутствует информация об узле -"Garbage Collection cancelled by user.": Пользователь отменил Garbage Collection. -"Proceeding with Garbage Collection, ignoring missing nodes.": Продолжаем Garbage Collection, игнорируя отсутствующие узлы. -"Proceed Garbage Collection": Продолжить Garbage Collection -"> [!INFO]- The connected devices have been detected as follows:\n${devices}": |- - > [!INFO]- Обнаружены следующие подключённые устройства: - ${devices} -"Device": Устройство -"Node ID": ID узла -"Obsidian version": Версия Obsidian -"Plug-in version": Версия плагина -"Progress": Прогресс -"Some devices have differing progress values (max: ${maxProgress}, min: ${minProgress}).\nThis may indicate that some devices have not completed synchronisation, which could lead to conflicts. Strongly recommend confirming that all devices are synchronised before proceeding.": |- - У некоторых устройств различаются значения прогресса (макс.: ${maxProgress}, мин.: ${minProgress}). - Это может означать, что некоторые устройства ещё не завершили синхронизацию, что может привести к конфликтам. Настоятельно рекомендуется перед продолжением убедиться, что все устройства синхронизированы. -"All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.": У всех устройств одинаковое значение прогресса (${progress}). Похоже, ваши устройства синхронизированы, и можно продолжать Garbage Collection. -"Garbage Collection Confirmation": Подтверждение Garbage Collection -"Proceeding with Garbage Collection.": Запускаем Garbage Collection. -"Garbage Collection: Scanned ${scanned} / ~${docCount}": |- - Garbage Collection: просканировано ${scanned} / ~${docCount} -"Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": |- - Garbage Collection: сканирование завершено. Всего чанков: ${totalChunks}, используемых чанков: ${usedChunks} -"Garbage Collection: Found ${unusedChunks} unused chunks to delete.": |- - Garbage Collection: найдено ${unusedChunks} неиспользуемых чанков для удаления. -"Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.": |- - Garbage Collection завершена. Удалено чанков: ${deletedChunks} / ${totalChunks}. Затраченное время: ${seconds} сек. -"Failed to start replication after Garbage Collection.": Не удалось запустить репликацию после Garbage Collection. + Title: Ввести Setup URI + ValidInfo: Setup URI корректен и готов к использованию. Should we keep folders that don't have any files inside?: Сохранять папки без файлов? Should we only check for conflicts when a file is opened?: Проверять конфликты только при открытии файла? 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?: Спрашивать о каждом слиянии, даже если мы можем безопасно слить автоматически? Show full banner: Показывать полный баннер +Show history: Показать историю +Show icon only: Показывать только значок 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.: Показывать подробный лог. Пожалуйста, включите при сообщении о проблеме. +"Some devices have differing progress values (max: ${maxProgress}, min: ${minProgress}).\nThis may indicate that some devices have not completed synchronisation, which could lead to conflicts. Strongly recommend confirming that all devices are synchronised before proceeding.": >- + У некоторых устройств различаются значения прогресса (макс.: ${maxProgress}, + мин.: ${minProgress}). + + Это может означать, что некоторые устройства ещё не завершили синхронизацию, + что может привести к конфликтам. Настоятельно рекомендуется перед продолжением + убедиться, что все устройства синхронизированы. Starts synchronisation when a file is saved.: Запускать синхронизацию при сохранении файла. Stop reflecting database changes to storage files.: Остановить отражение изменений базы данных в файлы хранилища. Stop watching for file changes.: Остановить отслеживание изменений файлов. @@ -981,6 +1447,9 @@ Sync on Editor Save: Синхронизация при сохранении в Sync on File Open: Синхронизация при открытии файла Sync on Save: Синхронизация при сохранении Sync on Startup: Синхронизация при запуске +Synchronisation utilising journal files. You must have set up an S3/MinIO/R2 compatible object storage.: + Синхронизация с использованием файлов журнала. Необходимо заранее настроить + объектное хранилище, совместимое с S3/MinIO/R2。 Synchronising files: Синхронизируемые файлы Syncing: Синхронизация Target patterns: Целевые шаблоны @@ -988,24 +1457,45 @@ Testing only - Resolve file conflicts by syncing newer copies of the file, this Только для тестирования - разрешать конфликты файлов синхронизацией новых копий. The delay for consecutive on-demand fetches: Задержка для последовательных запросов по требованию +"The following accepted nodes are missing its node information:\n- ${missingNodes}\n\nThis indicates that they have not been connected for some time or have been left on an older version.\nIt is preferable to update all devices if possible. If you have any devices that are no longer in use, you can clear all accepted nodes by locking the remote once.": >- + Для следующих принятых узлов отсутствует информация об узле: + + - ${missingNodes} + + + Это означает, что они давно не подключались или остались на старой версии. + + По возможности рекомендуется сначала обновить все устройства. Если у вас есть + устройства, которые больше не используются, вы можете очистить список всех + принятых узлов, один раз заблокировав удалённую базу. The Hash algorithm for chunk IDs: Хэш-алгоритм для ID чанков -The maximum duration for which chunks can be incubated within the document.: Максимальная продолжительность инкубации чанков в документе. 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. -The maximum number of chunks that can be incubated within the document.: Максимальное количество инкубируемых чанков в документе. + Максимальное время, в течение которого чанки могут инкубироваться внутри + документа. Чанки, превышающие этот срок, будут преобразованы в независимые + чанки. 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. -The maximum total size of chunks that can be incubated within the document.: Максимальный общий размер инкубируемых чанков в документе. + Максимальное количество чанков, которые могут инкубироваться внутри документа. + Чанки, превышающие это число, будут немедленно преобразованы в независимые + чанки. 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. + Максимальный суммарный размер чанков, которые могут инкубироваться внутри + документа. Чанки, превышающие этот размер, будут немедленно преобразованы в + независимые чанки. The minimum interval for automatic synchronisation on event.: Минимальный интервал автоматической синхронизации по событию. -This passphrase will not be copied to another device. It will be set to until you configure it again.: Эта парольная фраза не будет скопирована на другое устройство. +This feature enables direct synchronisation between devices. No server is required, but both devices must be online at the same time for synchronisation to occur, and some features may be limited. Internet connection is only required to signalling (detecting peers) and not for data transfer.: + Эта функция обеспечивает прямую синхронизацию между устройствами. Сервер не + требуется, но для синхронизации оба устройства должны быть одновременно в + сети, а некоторые функции могут быть ограничены. Подключение к Интернету нужно + только для сигнализации (обнаружения пиров), а не для передачи данных。 +This is an advanced option for users who do not have a URI or who wish to configure detailed settings.: + Это расширенный вариант для пользователей, у которых нет URI или которые хотят + вручную задать подробные параметры。 +This is the most suitable synchronisation method for the design. All functions are available. You must have set up a CouchDB instance.: + Это наиболее подходящий для данной архитектуры способ синхронизации. Доступны + все функции. Необходимо заранее развернуть экземпляр CouchDB。 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. + Эта парольная фраза не будет скопирована на другое устройство. Она будет + установлена в значение `Default`, пока вы не настроите её снова. This will recreate chunks for all files. If there were missing chunks, this may fix the errors.: Это пересоздаст чанки для всех файлов. Если какие-то чанки отсутствовали, это может исправить ошибки. @@ -1021,9 +1511,46 @@ TweakMismatchResolve: UseRemoteAcceptIncompatible: Применить настройки, но игнорировать несовместимость UseRemoteWithRebuild: Применить настройки и загрузить снова Message: - Main: Настройки в удалённой базе данных следующие. Эти значения настроены - другими устройствами. - MainTweakResolving: Ваша конфигурация не совпадает с удалённым сервером. + Main: >- + + Настройки в удаленной базе данных приведены ниже. Эти значения были + настроены другими устройствами, которые хотя бы один раз + синхронизировались с этим устройством. + + + Если вы хотите использовать эти настройки, выберите + %{TweakMismatchResolve.Action.UseConfigured}. + + Если вы хотите сохранить настройки этого устройства, выберите + %{TweakMismatchResolve.Action.Dismiss}. + + + ${table} + + + >[!TIP] + + > Если вы хотите синхронизировать все настройки, используйте `Sync + settings via markdown` после применения минимальной конфигурации с помощью + этой функции. + + + ${additionalMessage} + MainTweakResolving: >- + Конфигурация вашего устройства не совпадает с конфигурацией на удаленном + сервере. + + + Следующие параметры должны совпадать: + + + ${table} + + + Сообщите, какое решение вы выбираете. + + + ${additionalMessage} UseRemote: WarningRebuildRecommended: Некоторые изменения совместимы, но могут потребовать дополнительного хранилища. Рекомендуется перестроение. @@ -1034,74 +1561,649 @@ TweakMismatchResolve: WarningIncompatibleRebuildRequired: Обнаружены значения, несовместимые с удалённой базой данных. Требуется перестроение. Table: - _value: |- - | Имя значения | Это устройство | На удалённом | + _value: |+ + | Имя значения | Это устройство | На удаленной стороне | |: --- |: ---- :|: ---- :| - Row: "| name | self | remote |" + ${rows} + + Row: "| ${name} | ${self} | ${remote} |" Title: _value: Обнаружено несоответствие конфигурации TweakResolving: Обнаружено несоответствие конфигурации UseRemoteConfig: Использовать удалённую конфигурацию +Ui: + Bucket: + Guidance: Пожалуйста, введите данные, необходимые для подключения к совместимому + сервису объектного хранилища S3/MinIO/R2. + Common: + Signal: + Caution: Осторожно + Danger: Опасно + Notice: Уведомление + Warning: Предупреждение + ConflictResolver: + FileToResolve: Файл для разрешения + CouchDB: + Guidance: Пожалуйста, введите ниже информацию о сервере CouchDB. + History: + FileToView: Файл для просмотра + P2P: + Guidance: Пожалуйста, введите ниже информацию для синхронизации Peer-to-Peer. + RemoteE2EE: + AdvancedTitle: Дополнительно + AlgorithmWarning: Изменение алгоритма шифрования сделает недоступными все + данные, ранее зашифрованные другим алгоритмом. + ButtonCancel: Отмена + ButtonProceed: Продолжить + DefaultAlgorithmDesc: В большинстве случаев следует использовать алгоритм по умолчанию. + Guidance: Пожалуйста, настройте параметры сквозного шифрования. + LabelEncrypt: Сквозное шифрование + LabelEncryptionAlgorithm: Алгоритм шифрования + LabelObfuscateProperties: Обфусцировать свойства + ManualWarning: "Обратите внимание: парольная фраза сквозного шифрования не + проверяется, пока фактически не начнётся процесс синхронизации. Это мера + безопасности, предназначенная для защиты ваших данных." + MultiDestinationWarning: Этот параметр должен быть одинаковым даже при + подключении к нескольким целям синхронизации. + ObfuscatePropertiesDesc: Обфускация свойств добавляет дополнительный уровень + безопасности, затрудняя определение структуры и имён ваших файлов и папок + на удалённом сервере. + PassphraseValidationLine1: "Обратите внимание: парольная фраза сквозного + шифрования не проверяется, пока фактически не начнётся процесс + синхронизации." + PassphraseValidationLine2: Поэтому мы просим вас быть предельно осторожными при + ручной настройке сведений о сервере. + PlaceholderPassphrase: Введите парольную фразу + StronglyRecommended: Включение сквозного шифрования гарантирует, что ваши данные + будут зашифрованы на устройстве до отправки на удалённый сервер. Это + означает, что даже если кто-то получит доступ к серверу, он не сможет + прочитать ваши данные без парольной фразы. + StronglyRecommendedLine1: Включение сквозного шифрования гарантирует, что ваши + данные будут зашифрованы на устройстве до отправки на удалённый сервер. + StronglyRecommendedLine2: "Также обратите внимание: если вы используете + синхронизацию Peer-to-Peer, эта конфигурация будет применяться, когда в + будущем вы переключитесь на другие методы и подключитесь к удалённому + серверу." + StronglyRecommendedTitle: Настоятельно рекомендуется + Title: Сквозное шифрование + WarningSameSetting: Этот параметр должен быть одинаковым даже при подключении к + нескольким целям синхронизации. + ScanQRCode: + ButtonClose: Закрыть это окно + Guidance: Следуйте приведённым ниже шагам, чтобы импортировать настройки с + существующего устройства. + Instruction: Следуйте приведённым ниже шагам, чтобы импортировать настройки с + существующего устройства. + Step1: На этом устройстве оставьте данный Vault открытым. + Step2: На исходном устройстве откройте Obsidian. + Step3: На исходном устройстве в палитре команд выполните команду «Show settings + as a QR code». + Step4: На этом устройстве переключитесь в приложение камеры или используйте + сканер QR-кодов, чтобы отсканировать показанный QR-код. + Title: Сканировать QR-код + Settings: + Advanced: + LocalDatabaseTweak: Настройка локальной базы данных + MemoryCache: Кэш памяти + TransferTweak: Настройка передачи + Common: + Analyse: Анализировать + Back: Назад + Check: Проверить + Configure: Настроить + Delete: Удалить + Lock: Заблокировать + Open: Открыть + Perform: Выполнить + ResetAll: Сбросить всё + ResolveAll: Разрешить всё + Send: Отправить + VerifyAll: Проверить всё + CustomizationSync: + OpenDesc: Открыть диалог + Panel: Синхронизация настроек + WarnChangeDeviceName: "Предупреждение: изменение имени устройства" + WarnSetDeviceName: "Предупреждение: задайте имя устройства" + Hatch: + AnalyseDatabaseUsage: Проанализировать использование базы данных + AnalyseDatabaseUsageDesc: Анализирует использование базы данных и создает + TSV-отчет для самостоятельной диагностики. Его можно вставить в любую + электронную таблицу. + BackToNonConfigured: Вернуться к состоянию без настройки + ConvertNonObfuscated: Проверить и преобразовать файлы без обфускации пути + ConvertNonObfuscatedDesc: Проверяет локальную базу данных на файлы, сохраненные + без обфускации пути, и при необходимости преобразует их. + CopyIssueReport: Скопировать отчёт в буфер обмена + DatabaseLabel: "База данных: ${details}" + DatabaseToStorage: База данных -> хранилище + DeleteCustomizationSyncData: Удалить все данные синхронизации настроек + GeneratedReport: Сформированный отчёт + Missing: Отсутствует + ModifiedSize: Изменённый размер + ModifiedSizeActual: Фактический изменённый размер + PrepareIssueReport: Подготовить отчет для создания issue + RecoveryAndRepair: Восстановление и исправление + RecreateAll: Создать всё заново + RecreateMissingChunks: Повторно создать отсутствующие фрагменты для всех файлов + RecreateMissingChunksDesc: Будут повторно созданы фрагменты для всех файлов. + Если какие-то фрагменты отсутствовали, это может исправить ошибки. + ResetPanel: Сброс + ResetRemoteUsage: Сбросить порог уведомлений и проверить использование удаленной + базы данных + ResetRemoteUsageDesc: Сбрасывает порог размера удаленного хранилища и снова + проверяет его размер. + ResolveAllConflictedFiles: Разрешить все конфликтующие файлы более новой версией + ResolveAllConflictedFilesDesc: "Разрешает все конфликтующие файлы более новой + версией. Внимание: старая версия будет перезаписана, восстановить ее + будет нельзя." + RunDoctor: Запустить Doctor + ScanBrokenFiles: Сканировать повреждённые файлы + ScramSwitches: Аварийные переключатели + ShowHistory: Показать историю + StorageLabel: "Хранилище: ${details}" + StorageToDatabase: Хранилище -> база данных + VerifyAndRepairAllFiles: Проверить и исправить все файлы + VerifyAndRepairAllFilesDesc: Сравнивает содержимое файлов в локальной базе + данных и хранилище. Если они не совпадают, будет предложено выбрать, что + сохранить. + Maintenance: + Cleanup: Выполнить очистку + CleanupDesc: Уменьшает занимаемое место, удаляя все не последние ревизии. + Требует такой же объем свободного места на удаленном сервере и локальном + клиенте. + DeleteLocalDatabase: Удалить локальную базу данных для сброса или удаления + Self-hosted LiveSync + EmergencyRestart: Аварийный перезапуск + EmergencyRestartDesc: Отключает всю синхронизацию и перезапускает. + FreshStartWipe: Очистка для нового старта + FreshStartWipeDesc: Удаляет все данные на удаленном сервере. + GarbageCollection: Сборка мусора V3 (Beta) + GarbageCollectionAction: Выполнить сборку мусора + GarbageCollectionDesc: Выполняет сборку мусора для удаления неиспользуемых + фрагментов и уменьшения размера базы данных. + LockServer: Заблокировать сервер + LockServerDesc: Блокирует удаленный сервер, чтобы предотвратить синхронизацию с + другими устройствами. + OverwriteRemote: Перезаписать удаленные данные + OverwriteRemoteDesc: Перезаписывает удаленные данные локальной базой данных и + парольной фразой. + OverwriteServerData: Перезаписать данные сервера файлами с этого устройства + OverwriteServerDataDesc: Перестраивает локальную и удаленную базы данных из + файлов на этом устройстве. + PurgeAllJournalCounter: Очистить все счетчики журнала + PurgeAllJournalCounterDesc: Очищает все кэши загрузки и отправки. + RebuildingOperations: Операции перестроения (только удалённое хранилище) + Resend: Отправить повторно + ResendDesc: Повторно отправляет все фрагменты на удаленную сторону. + Reset: Сброс + ResetAllJournalCounter: Сбросить все счетчики журнала + ResetAllJournalCounterDesc: Инициализирует всю историю журнала. При следующей + синхронизации каждый элемент будет снова получен и отправлен. + ResetJournalReceived: Сбросить историю полученных записей журнала + ResetJournalReceivedDesc: Инициализирует историю полученных записей журнала. При + следующей синхронизации все элементы, кроме отправленных этим + устройством, будут загружены снова. + ResetJournalSent: Сбросить историю отправленных записей журнала + ResetJournalSentDesc: Инициализирует историю отправленных записей журнала. При + следующей синхронизации все элементы, кроме полученных этим устройством, + будут отправлены снова. + ResetLocalSyncInfo: Сбросить сведения о синхронизации + ResetLocalSyncInfoDesc: Восстанавливает или перестраивает локальную базу данных из удаленной. + ResetReceived: Сбросить полученное + ResetSentHistory: Сбросить историю отправленного + ResetThisDevice: Сбросить синхронизацию на этом устройстве + ScheduleAndRestart: Запланировать и перезапустить + Scram: Аварийная остановка + SendChunks: Отправить чанки + Syncing: Синхронизация + WarningLockedReadyAction: Разблокировать удалённую базу данных + WarningLockedReadyText: Удалённая база данных заблокирована. Разблокируйте её, + если операция уже завершена. + WarningLockedResolveAction: Подтвердить это устройство + WarningLockedResolveText: Удалённая база данных заблокирована и это устройство ещё не подтверждено. + WriteRedFlagAndRestart: Установить флаг и перезапустить + Patches: + CompatibilityConflict: Совместимость (поведение при конфликтах) + CompatibilityDatabase: Совместимость (структура базы данных) + CompatibilityInternalApi: Совместимость (использование внутреннего API) + CompatibilityMetadata: Совместимость (метаданные) + CompatibilityRemote: Совместимость (удаленная база данных) + CompatibilityTrouble: Совместимость (устраненные проблемы) + CurrentAdapter: "Текущий адаптер: ${adapter}" + DatabaseAdapter: Адаптер базы данных + DatabaseAdapterDesc: Выберите используемый адаптер базы данных. + EdgeCaseBehaviour: Обработка крайних случаев (поведение) + EdgeCaseDatabase: Обработка крайних случаев (база данных) + EdgeCaseProcessing: Обработка крайних случаев (обработка) + IndexedDbWarning: Предупреждение IndexedDB + MigratingToIdb: Миграция в IDB + MigratingToIndexedDb: Миграция в IndexedDB + MigrationIdbCompleted: Миграция в IDB завершена + MigrationIdbCompletedFollowUp: Дальнейшие действия после завершения миграции в IDB + MigrationIndexedDbCompleted: Миграция в IndexedDB завершена + MigrationIndexedDbCompletedFollowUp: Дальнейшие действия после завершения миграции в IndexedDB + MigrationWarning: Предупреждение о миграции + OperationToIdb: Перевести операцию в IDB + OperationToIndexedDb: Перевести операцию в IndexedDB + Remediation: Исправление + RemediationChanged: Исправление изменено + RemediationNoLimit: Исправление без ограничений + RemediationRestarting: Перезапуск для исправления + RemediationRestartLater: Перезапустить позже для исправления + RemediationRestartMessage: Сообщение о перезапуске для исправления + RemediationRestartNow: Перезапустить сейчас для исправления + RemediationSuffixChanged: Суффикс исправления изменён + RemediationWithValue: "Значение: ${date} (${timestamp})" + RemoteDatabaseSunset: Настройка удаленной базы данных (устаревает) + SwitchToIDB: Переключиться на IDB + SwitchToIndexedDb: Переключиться на IndexedDB + PowerUsers: + ConfigurationEncryption: Шифрование конфигурации + ConnectionTweak: Настройка подключения CouchDB + ConnectionTweakDesc: Эти параметры позволяют тонко настроить подключение. + Изменяйте их только если понимаете последствия. + Default: По умолчанию + Developer: Разработчик + EncryptSensitiveConfig: Шифровать чувствительные элементы конфигурации + PromptPassphraseEveryLaunch: Запрашивать парольную фразу при каждом запуске + UseCustomPassphrase: Использовать пользовательскую парольную фразу + Remote: + Activate: Активировать + ActiveSuffix: Активно + AddConnection: Добавить подключение + AddRemoteDefaultName: Новое удалённое хранилище + ConfigureAndChangeRemote: Настроить и изменить удалённое хранилище + ConfigureE2EE: Настроить E2EE + ConfigureRemote: Настроить удаленное подключение + DeleteRemoteConfirm: Удалить удалённую конфигурацию "${name}"? + DeleteRemoteTitle: Удалить удалённое хранилище + DisplayName: Отображаемое имя + DuplicateRemote: Дублировать удалённое хранилище + DuplicateRemoteSuffix: копия + E2EEConfiguration: Конфигурация E2EE + Export: Экспорт + FetchRemoteSettings: Получить настройки с удалённого хранилища + ImportConnection: Импортировать подключение + ImportConnectionPrompt: Вставьте URI подключения для импорта. + ImportedCouchDb: Импортированный CouchDB + ImportedRemote: Импортированное удалённое хранилище + MoreActions: Другие действия + PeerToPeerPanel: Одноранговая синхронизация + RemoteConfigurationPrefix: Префикс конфигурации удалённого хранилища + RemoteDatabases: Удаленные базы данных + RemoteName: Имя удалённого хранилища + RemoteNameCouchDb: Имя удалённого хранилища CouchDB + RemoteNameP2P: Имя удалённого хранилища P2P + RemoteNameS3: Имя удалённого хранилища S3 + Rename: Переименовать + Selector: + AddDefaultPatterns: Добавить шаблоны по умолчанию + CrossPlatform: Кроссплатформенно + Default: По умолчанию + HiddenFiles: Скрытые файлы + IgnorePatterns: Шаблоны игнорирования + NonSynchronisingFiles: Несинхронизируемые файлы + NonSynchronisingFilesDesc: (RegExp) Если задано, изменения локальных и удаленных + файлов, совпадающих с выражением, будут пропущены. + NormalFiles: Обычные файлы + OverwritePatterns: Шаблоны перезаписи + OverwritePatternsDesc: Шаблоны файлов, которые будут перезаписаны вместо слияния + SynchronisingFiles: Синхронизируемые файлы + SynchronisingFilesDesc: (RegExp) Оставьте пустым для синхронизации всех файлов. + Задайте регулярное выражение, чтобы ограничить синхронизируемые файлы. + TargetPatterns: Целевые шаблоны + TargetPatternsDesc: Шаблоны файлов для синхронизации + Setup: + RerunWizardButton: Запустить мастер снова + RerunWizardDesc: Повторно запустить мастер первоначальной настройки Self-hosted LiveSync. + RerunWizardName: Повторно запустить мастер настройки + SyncSettings: + Fetch: Получить + Merge: Объединить + Overwrite: Перезаписать + SetupWizard: + Bucket: + AccessKeyId: ID ключа доступа + BucketName: Имя бакета + EndpointUrl: URL конечной точки + FolderPrefix: Folder Prefix + FolderPrefixDesc: Если вы хотите хранить данные в определённой папке внутри + бакета, укажите здесь префикс папки. Иначе оставьте поле пустым, чтобы + хранить данные в корне бакета. + InternalApiDesc: Если невозможно избежать проблем CORS, можно попробовать этот + вариант. Он использует внутренний API Obsidian для связи с сервером S3. + Это не соответствует веб-стандартам, но работает. Учтите, что будущие + версии Obsidian могут нарушить этот способ. + PlaceholderAccessKeyId: Введите ID ключа доступа + PlaceholderBucketName: Введите имя бакета + PlaceholderFolderPrefix: Введите префикс папки (необязательно) + PlaceholderRegion: Введите регион (например, us-east-1, auto для R2) + PlaceholderSecretAccessKey: Введите секретный ключ доступа + Region: Регион + SecretAccessKey: Секретный ключ доступа + Title: Настройка S3/MinIO/R2 + UseInternalApi: Использовать внутренний API + UsePathStyleAccess: Использовать доступ в стиле пути + Common: + AdvancedSettings: Дополнительные настройки + Back: Назад + Cancel: Отмена + CheckingConnection: Проверка подключения... Подождите. + ContinueAnyway: Всё равно продолжить + CustomHeaders: Пользовательские заголовки + ErrorConnectionTest: "Ошибка во время проверки подключения: ${error}" + ErrorConnectServer: Не удалось подключиться к серверу. Проверьте настройки. + ErrorConnectServerDetail: "Не удалось подключиться к серверу: ${error}" + ErrorCreateReplicator: Не удалось создать экземпляр репликатора. + ExperimentalSettings: Экспериментальные настройки + HttpsOnlyMobile: В Obsidian Mobile можно использовать только защищённые + соединения (HTTPS). + ProceedSelectOption: Пожалуйста, выберите вариант + CouchDB: + DatabaseName: Имя базы данных + DatabaseNameDesc: В имени базы данных нельзя использовать заглавные буквы, + пробелы или специальные символы. Также оно не может начинаться с + подчёркивания (_). + InternalApiDesc: Если невозможно избежать проблем CORS, можно попробовать этот + вариант. Он использует внутренний API Obsidian для связи с сервером + CouchDB. Это не соответствует веб-стандартам, но работает. Учтите, что + будущие версии Obsidian могут нарушить этот способ. + JwtAlgorithm: Алгоритм JWT + JwtExpirationDuration: Срок действия JWT (минуты) + JwtKey: Ключ JWT + JwtKeyDesc: Для алгоритмов HS256/HS512 укажите общий секретный ключ. Для + ES256/ES512 укажите приватный ключ в формате pkcs8 PEM. + JwtKeyId: ID ключа JWT (kid) + JwtSubject: Subject JWT (sub) + JwtWarning: JWT (JSON Web Token) позволяет безопасно аутентифицироваться на + сервере CouchDB с помощью токенов. Убедитесь, что сервер CouchDB + настроен на приём JWT, а указанные ключ и настройки соответствуют + конфигурации сервера. Эта функция пока не была тщательно проверена. + Password: Пароль + PlaceholderDatabaseName: Введите имя базы данных + PlaceholderJwtKey: Введите секрет JWT или приватный ключ + PlaceholderJwtKeyId: Введите ID ключа JWT + PlaceholderJwtSubject: Введите Subject JWT (имя пользователя CouchDB) + PlaceholderPassword: Введите пароль + PlaceholderUsername: Введите имя пользователя + Title: Настройка CouchDB + Url: URL сервера + UseInternalApi: Использовать внутренний API + UseJwtAuthentication: Использовать JWT-аутентификацию + Username: Имя пользователя + CouchDBCheck: + DetectAndFix: Обнаружить и исправить проблемы CouchDB + Fix: Исправить + E2EE: + AlgorithmGuidance: В большинстве случаев следует оставить алгоритм по умолчанию + (${algorithm}). Этот параметр нужен только если существующий Vault + зашифрован в другом формате. + AlgorithmWarning: Изменение алгоритма шифрования сделает недоступными данные, + ранее зашифрованные другим алгоритмом. Убедитесь, что все устройства + настроены на один и тот же алгоритм, чтобы сохранить доступ к данным. + EncryptionAlgorithm: Алгоритм шифрования + Fetch: + BackupDone: Я создал(а) резервную копию своего Vault. + BackupQuestion: Создали ли вы резервную копию перед продолжением? + BackupRecommendation: Рекомендуем скопировать папку Vault в безопасное место. + Это послужит защитой на случай большого количества конфликтов или если + вы по ошибке синхронизируетесь с неверной целью. + BackupSkipped: Я понимаю риски и продолжу без резервной копии. + BackupUnable: Я не могу создать резервную копию своего Vault. + BackupUnableNote: Если вы понимаете риски и всё равно хотите продолжить, + выберите этот вариант. + BackupUnableWarning: Настоятельно рекомендуется создать резервную копию перед + продолжением. Продолжение без резервной копии может привести к потере + данных. + ConflictNote: Кроме того, если в данных сервера уже есть конфликты, они будут + синхронизированы на это устройство как есть, и вам придётся разрешать их + локально. + Guidance: Это действие перестроит локальную базу данных на этом устройстве с + использованием самых свежих данных с сервера. Оно предназначено для + устранения несогласованности синхронизации и восстановления корректной + работы. + ImportantBody: Если в Vault на этом устройстве есть несинхронизированные + изменения, после сброса они, вероятно, разойдутся с версиями на сервере. + Это может привести к большому числу конфликтов файлов. + ImportantTitle: Важное уведомление + PreventFetchConfig: Не получать конфигурацию с сервера + Proceed: Сбросить и возобновить синхронизацию + Title: Сбросить синхронизацию на этом устройстве + UnbalancedNote: В этом сценарии Self-hosted LiveSync заново создаст метаданные + для каждого файла и намеренно создаст конфликты. Если содержимое файлов + одинаково, эти конфликты будут разрешены автоматически. + VaultIdentical: Файлы в этом Vault почти идентичны файлам на сервере. + VaultIdenticalDesc: (например, сразу после восстановления на другом компьютере + или после восстановления из резервной копии) + VaultIndependent: Этот Vault пуст или содержит только новые файлы, которых нет на сервере. + VaultIndependentDesc: (например, при первой настройке на новом смартфоне, + начиная с чистого листа) + VaultQuestion: Чтобы свести к минимуму создание новых конфликтов, выберите + вариант, который лучше всего описывает текущее состояние вашего Vault. + Затем приложение проверит файлы наиболее подходящим способом на основе + вашего выбора. + VaultUnbalanced: Между файлами в этом Vault и на сервере могут быть различия. + VaultUnbalancedDesc: (например, после редактирования большого количества файлов + в офлайн-режиме) + Intro: + ExistingOption: У меня уже есть настроенный сервер + ExistingOptionDesc: Подключиться к существующему серверу LiveSync + Guidance: Добро пожаловать! Давайте настроим LiveSync. Вы новый пользователь + LiveSync или у вас уже есть настроенный удалённый сервер? + NewOption: Я новый пользователь LiveSync + NewOptionDesc: Настроить LiveSync впервые + ProceedExisting: Подключиться к существующему + ProceedNew: Новая настройка + Question: Какая ситуация вам подходит? + Title: Мастер настройки + Log: + E2EEConfigurationCancelled: Настройка E2EE отменена. + ManualConfigurationCancelled: Ручная настройка отменена. + NoSettingsChanges: Изменений настроек не обнаружено. Применение настроек мастера пропущено. + OnboardingCancelled: Первоначальная настройка отменена пользователем. + QrCodeDialogClosed: Диалог QR-кода закрыт. + QrCodeResult: "Результат QR-кода: ${result}" + SettingApplied: Настройка применена + SettingsApplied: Настройки мастера применены. + SetupUriDialogCancelled: Диалог Setup URI отменен. + SetupUriDialogClosed: Диалог Setup URI закрыт. + UserCancelledApplyingSettings: Пользователь отменил применение настроек мастера. + OutroAskUserMode: + CompatibleOption: Использовать совместимый режим + CompatibleOptionDesc: Используйте это, если удалённый сервер был настроен со + старой версией LiveSync. Некоторые функции могут быть ограничены. + ExistingOption: На этом устройстве есть существующие данные + ExistingOptionDesc: Объединить локальные файлы с удалёнными. Используйте это, + если в хранилище уже есть заметки. + Guidance: Выберите, как это устройство будет использоваться с LiveSync. Это + влияет на начальное поведение синхронизации. + NewOption: Настроить как новое устройство + NewOptionDesc: Начать с нового хранилища. Удалённые файлы будут получены после + настройки. + ProceedApplySettings: Применить настройки + ProceedNext: Продолжить + Question: "Выберите режим для этого устройства:" + Title: Как вы будете использовать это устройство? + OutroExisting: + Guidance: Настройка завершена. Удалённые данные будут получены после + перезапуска. Нажмите кнопку ниже, чтобы перезапустить и начать + синхронизацию. + Proceed: Перезапустить и получить данные + Question: Нажмите кнопку ниже, чтобы перезапустить и перейти к подтверждению + получения данных. + Title: "Настройка завершена: Подготовка к получению данных синхронизации" + OutroNewUser: + GuidancePrimary: Ваша конфигурация LiveSync настроена. Настройки будут применены + при закрытии этого диалога. + GuidanceWarning: Это перезапишет существующие файлы, если в удалённом хранилище + есть данные. Убедитесь, что вы используете пустое хранилище или имеете + резервные копии. + Important: "Важно:" + Proceed: Применить и перезапустить + Question: Готовы применить конфигурацию? + Title: Настройка завершена + P2P: + AutoBroadcast: Автоматически рассылать изменения + AutoBroadcastDesc: Если автоматическая рассылка включена, изменения будут + автоматически отправляться подключённым пирам без ручного вмешательства. + Это попросит пиры получить изменения с этого устройства. + AutoStart: Автоматически запускать P2P-подключение + AutoStartDesc: Если автоматический запуск P2P включён, P2P-подключение будет + запускаться автоматически при запуске плагина. + DevicePeerId: ID пира устройства + Enabled: Включено + ErrorConnectPeers: "Не удалось подключиться к другим пирам: ${error}" + GenerateRandomId: Сгенерировать случайный ID + GroupId: ID группы + GroupPassphraseDesc: ID группы и парольная фраза используются для идентификации + группы устройств. Используйте одинаковый ID группы и парольную фразу на + всех устройствах, которые хотите синхронизировать. ID группы не + ограничен сгенерированным форматом; можно использовать любую строку. + NoPeersFound: Настройки выглядят корректно, но другие пиры не найдены. + PlaceholderRelayUrl: Введите URL ретранслятора + PlaceholderTurnCredential: Введите учётные данные TURN + PlaceholderTurnUsername: Введите имя пользователя TURN + PublicTurnWarning: Использование публичных TURN-серверов может иметь последствия + для приватности, так как данные передаются через сторонние серверы. Даже + если данные зашифрованы, сам факт вашего присутствия может быть им + известен. Перед использованием убедитесь, что доверяете провайдеру + TURN-сервера и своему сетевому администратору. По возможности настройте + собственный TURN-сервер для своего FQDN. + RelayUrl: URL ретранслятора + Title: Настройка P2P + TurnCredential: Учётные данные TURN + TurnServerDesc: Настройки TURN-сервера нужны только если вы находитесь за + строгим NAT или firewall, которые мешают прямым P2P-соединениям. В + большинстве случаев эти поля можно оставить пустыми. + TurnServerUrls: URL TURN-серверов (через запятую) + TurnUsername: Имя пользователя TURN + UseDefaultRelay: Использовать relay-сервер vrtmrz + Rebuild: + BackupBeforeProceeding: Конечно, мы можем создать резервную копию данных перед продолжением. + BackupDone: Я создал(а) резервную копию своего Vault. + BackupQuestion: Создали ли вы резервную копию перед продолжением? + BackupSkipped: Я понимаю риски и продолжу без резервной копии. + BackupUnable: Я не могу создать резервную копию своих Vault. + BackupUnableAdvice: Вам следует создать новую цель синхронизации и перестроить + там данные. После этого синхронизируйте с новым удалённым хранилищем + поочерёдно каждый другой девайс в совершенно новый Vault. + BackupWarning: Это чрезвычайно мощная операция. Мы настоятельно рекомендуем + скопировать папку Vault в безопасное место. + ConfirmDataLoss: Я понимаю, что все изменения, сделанные на других смартфонах + или компьютерах, могут быть потеряны. + ConfirmIrreversible: Я понимаю, что после выполнения это действие необратимо. + ConfirmSyncDisabled: Я понимаю, что другие устройства больше не смогут + синхронизироваться и им потребуется сбросить сведения о синхронизации. + ConfirmTitle: Подтвердите следующее + Guidance: Эта процедура сначала удалит с сервера все существующие данные + синхронизации. После этого данные на сервере будут полностью перестроены + с использованием текущего состояния вашего Vault на этом устройстве как + единственной авторитетной основной копии. + PreventFetchConfig: Не получать конфигурацию с сервера + Proceed: Я понимаю, перезаписать сервер + ResetNotifyOtherDevices: после сброса удалённого хранилища вы получите + уведомление на других устройствах. + ResolveOnOtherDevices: Есть способ решить это на других устройствах. + Title: "Последнее подтверждение: перезаписать данные сервера файлами с этого + устройства" + WhenToUse: Выполнять эту операцию следует только в исключительных + обстоятельствах, например если данные на сервере полностью повреждены, + изменения на всех остальных устройствах больше не нужны или размер базы + данных стал необычно большим по сравнению с размером Vault. + SelectExisting: + Guidance: Выберите способ подключения к существующему серверу LiveSync. + ManualOption: Настроить вручную + ManualOptionDesc: Введите данные сервера и учётные данные самостоятельно + ProceedManual: Настроить вручную + ProceedQr: Сканировать QR-код + ProceedSetupUri: Использовать URI настройки + QrOption: Сканировать QR-код + QrOptionDesc: Сканировать QR-код с уже настроенного устройства + Question: "Выберите способ подключения:" + SetupUriOption: Использовать URI настройки + SetupUriOptionDesc: Импортировать конфигурацию из URI, предоставленного сервером + Title: Подключение к существующему серверу + SelectNew: + Guidance: Выберите, как вы хотите настроить новое подключение LiveSync. + ManualOption: Настроить вручную + ManualOptionDesc: Введите данные сервера и учётные данные самостоятельно + ProceedManual: Настроить вручную + ProceedSetupUri: Использовать URI настройки + Question: "Выберите метод настройки:" + SetupUriOption: Использовать URI настройки + SetupUriOptionDesc: Импортировать конфигурацию из URI, предоставленного сервером + Title: Настройка нового подключения + SetupRemote: + BucketOption: Хранилище LiveSync + BucketOptionDesc: Используйте встроенный сервер хранилища, входящий в + компаньон-сервис LiveSync + CouchDbOption: CouchDB + CouchDbOptionDesc: Используйте свой экземпляр CouchDB для полного контроля над + сервером синхронизации + Guidance: "Выберите тип удалённого сервера, который хотите использовать:" + P2POption: Одноранговая сеть (Экспериментально) + P2POptionDesc: Синхронизация напрямую между устройствами без центрального сервера + ProceedBucket: Настроить хранилище + ProceedCouchDb: Настроить CouchDB + ProceedP2P: Настроить P2P + Title: Настройка удалённого сервера + UseSetupURI: + ButtonCancel: Отмена + ButtonProceed: Проверить настройки и продолжить + ErrorFailedToParse: Не удалось разобрать Setup-URI. + ErrorPassphraseRequired: Требуется парольная фраза. + Guidance: Введите Setup URI, сгенерированный во время установки сервера или на + другом устройстве, а также парольную фразу Vault. + InvalidInfo: Setup-URI выглядит недействительным. Проверьте, правильно ли вы его + скопировали. + Label: Setup-URI + LabelPassphrase: Парольная фраза + PlaceholderPassphrase: Введите парольную фразу + Title: Введите Setup URI + ValidMessage: Setup-URI действителен и готов к использованию. Unique name between all synchronized devices. To edit this setting, please disable customization sync once.: Уникальное имя между всеми синхронизируемыми устройствами. Use a custom passphrase: Использовать пользовательскую парольную фразу +Use a Setup URI (Recommended): Использовать Setup URI (рекомендуется) Use Custom HTTP Handler: Использовать пользовательский HTTP обработчик Use dynamic iteration count: Использовать динамическое количество итераций +Use Only Local Chunks: Использовать только локальные чанки +Use Request API to avoid `inevitable` CORS problem: Использовать Request API, чтобы обойти «неизбежную» проблему CORS Use Segmented-splitter: Использовать сегментный разделитель Use splitting-limit-capped chunk splitter: Использовать разделитель чанков с ограничением Use the trash bin: Использовать корзину Use timeouts instead of heartbeats: Использовать таймауты вместо пульса username: имя пользователя Username: Имя пользователя +"V1: Legacy": "V1: Устаревший" +"V2: Simple (Default)": "V2: Простой (по умолчанию)" +"V2.5: Lexical chunks": "V2.5: Лексические чанки" +"V3: Fine deduplication": "V3: Точная дедупликация" Verbose Log: Подробный лог Verify all: Проверить всё Verify and repair all files: Проверить и восстановить все файлы -Warning! This will have a serious impact on performance. And the logs will not be synchronised under the default name.: Внимание! Это серьёзно повлияет на производительность. 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. + "Внимание! Это серьёзно повлияет на производительность. Кроме того, журналы не + будут синхронизироваться под именем по умолчанию. Будьте осторожны с логами: + они часто содержат конфиденциальную информацию." We cannot change the device name while this feature is enabled. Please disable this feature to change the device name.: Невозможно изменить имя устройства, пока эта функция включена. Отключите её, чтобы изменить имя устройства. +We will now guide you through a few questions to simplify the synchronisation setup.: Сейчас мы зададим несколько вопросов, чтобы упростить настройку синхронизации。 +We will now proceed with the server configuration.: Теперь перейдём к настройке сервера。 +Welcome to Self-hosted LiveSync: Добро пожаловать в Self-hosted LiveSync When you save a file in the editor, start a sync automatically: Когда вы сохраняете файл в редакторе, автоматически запускать синхронизацию +While enabled, it causes very performance impact but debugging replication testing and other features will be enabled. Please disable this if you have not read the source code. Requires restart of Obsidian.: + При включении сильно влияет на производительность, но включает отладку, + тестирование репликации и другие функции. Отключите это, если вы не читали + исходный код. Требуется перезапуск Obsidian. Write credentials in the file: Записывать учётные данные в файл Write logs into the file: Записывать логи в файл xxhash32 (Fast but less collision resistance): xxhash32 (быстрый, но с меньшей устойчивостью к коллизиям) xxhash64 (Fastest): xxhash64 (самый быстрый) -"Welcome to Self-hosted LiveSync": "Добро пожаловать в Self-hosted LiveSync" -"We will now guide you through a few questions to simplify the synchronisation setup.": "Сейчас мы зададим несколько вопросов, чтобы упростить настройку синхронизации。" -"First, please select the option that best describes your current situation.": "Сначала выберите вариант, который лучше всего описывает вашу текущую ситуацию。" -"I am setting this up for the first time": "Я настраиваю это впервые" -"(Select this if you are configuring this device as the first synchronisation device.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": "(Выберите этот вариант, если настраиваете это устройство как первое устройство синхронизации.) Он подходит, если вы впервые используете LiveSync и хотите настроить всё с нуля。" -"I am adding a device to an existing synchronisation setup": "Я добавляю устройство к существующей настройке синхронизации" -"(Select this if you are already using synchronisation on another computer or smartphone.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": "(Выберите этот вариант, если вы уже используете синхронизацию на другом компьютере или смартфоне.) Он подходит, если вы хотите добавить это устройство к уже существующей конфигурации LiveSync。" -"Yes, I want to set up a new synchronisation": "Да, я хочу настроить новую синхронизацию" -"Yes, I want to add this device to my existing synchronisation": "Да, я хочу добавить это устройство к существующей синхронизации" -"No, please take me back": "Нет, верните меня назад" -"Device Setup Method": "Способ настройки устройства" -"You are adding this device to an existing synchronisation setup.": "Вы добавляете это устройство к существующей настройке синхронизации。" -"Please select a method to import the settings from another device.": "Выберите способ импорта настроек с другого устройства。" -"Use a Setup URI (Recommended)": "Использовать Setup URI (рекомендуется)" -"Paste the Setup URI generated from one of your active devices.": "Вставьте Setup URI, созданный на одном из ваших активных устройств。" -"Scan a QR Code (Recommended for mobile)": "Сканировать QR-код (рекомендуется для мобильных устройств)" -"Scan the QR code displayed on an active device using this device's camera.": "Отсканируйте QR-код, показанный на активном устройстве, с помощью камеры этого устройства。" -"Enter the server information manually": "Ввести данные сервера вручную" -"Configure the same server information as your other devices again, manually, very advanced users only.": "Снова вручную укажите те же параметры сервера, что и на других устройствах. Только для очень опытных пользователей。" -"Proceed with Setup URI": "Продолжить с Setup URI" -"I know my server details, let me enter them": "Я знаю параметры сервера, позвольте ввести их вручную" -"Please select an option to proceed": "Чтобы продолжить, выберите вариант" -"Connection Method": "Способ подключения" -"We will now proceed with the server configuration.": "Теперь перейдём к настройке сервера。" -"How would you like to configure the connection to your server?": "Как вы хотите настроить подключение к серверу?" -"A Setup URI is a single string of text containing your server address and authentication details. Using a URI, if one was generated by your server installation script, provides a simple and secure configuration.": "Setup URI — это одна строка текста, содержащая адрес сервера и данные аутентификации. Если URI был создан скриптом установки сервера, его использование обеспечивает простую и безопасную настройку。" -"This is an advanced option for users who do not have a URI or who wish to configure detailed settings.": "Это расширенный вариант для пользователей, у которых нет URI или которые хотят вручную задать подробные параметры。" -"Enter Server Information": "Ввести данные сервера" -"Please select the type of server to which you are connecting.": "Выберите тип сервера, к которому вы подключаетесь。" -"Continue to CouchDB setup": "Перейти к настройке CouchDB" -"Continue to S3/MinIO/R2 setup": "Перейти к настройке S3/MinIO/R2" -"Continue to Peer-to-Peer only setup": "Перейти к настройке только Peer-to-Peer" -"This is the most suitable synchronisation method for the design. All functions are available. You must have set up a CouchDB instance.": "Это наиболее подходящий для данной архитектуры способ синхронизации. Доступны все функции. Необходимо заранее развернуть экземпляр CouchDB。" -"S3/MinIO/R2 Object Storage": "Объектное хранилище S3/MinIO/R2" -"Synchronisation utilising journal files. You must have set up an S3/MinIO/R2 compatible object storage.": "Синхронизация с использованием файлов журнала. Необходимо заранее настроить объектное хранилище, совместимое с S3/MinIO/R2。" -"Peer-to-Peer only": "Только Peer-to-Peer" -"This feature enables direct synchronisation between devices. No server is required, but both devices must be online at the same time for synchronisation to occur, and some features may be limited. Internet connection is only required to signalling (detecting peers) and not for data transfer.": "Эта функция обеспечивает прямую синхронизацию между устройствами. Сервер не требуется, но для синхронизации оба устройства должны быть одновременно в сети, а некоторые функции могут быть ограничены. Подключение к Интернету нужно только для сигнализации (обнаружения пиров), а не для передачи данных。" +xxhash64 is the current default.: "Текущее значение по умолчанию: xxhash64." +Yes, I want to add this device to my existing synchronisation: Да, я хочу добавить это устройство к существующей синхронизации +Yes, I want to set up a new synchronisation: Да, я хочу настроить новую синхронизацию +You are adding this device to an existing synchronisation setup.: Вы добавляете это устройство к существующей настройке синхронизации。 +You can enable this setting to process the files with size mismatches, these files can be created by some APIs or integrations.: + Можно включить этот параметр для обработки файлов с несовпадающим размером; + такие файлы могут создаваться некоторыми API или интеграциями. diff --git a/src/common/messagesYAML/zh-tw.yaml b/src/common/messagesYAML/zh-tw.yaml index 78424a22..f9b7a3c6 100644 --- a/src/common/messagesYAML/zh-tw.yaml +++ b/src/common/messagesYAML/zh-tw.yaml @@ -1,45 +1,61 @@ (Active): (已啟用) +(BETA) Always overwrite with a newer file: 始終使用更新的檔案覆蓋(測試版) +(Beta) Use ignore files: (測試版)使用忽略檔案 +(Days passed, 0 to disable automatic-deletion): (已過天數,0為禁用自動刪除) +(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.: (例如,線上讀取塊)如果啟用此選項,LiveSync 將直接線上讀取塊,而不是在本地複製塊。建議增加自定義塊大小 +(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)如果設定了此項,大於此大小的本地和遠端檔案的更改將被跳過。如果檔案再次變小,將使用更新的檔案 +(Mega chars): (百萬字元) +(Not recommended) If set, credentials will be stored in the file.: (不建議)如果設定,憑據將儲存在檔案中 +(Obsolete) Use an old adapter for compatibility: (已棄用)為相容性使用舊介面卡 (RegExp) Empty to sync all files. Set filter as a regular expression to limit synchronising files.: (正則表示式)留空即同步所有檔案。設定正則表示式可限制要同步的檔案。 (RegExp) If this is set, any changes to local and remote files that match this will be skipped.: (正則表示式)若已設定,所有符合此模式的本機與遠端檔案變更都會被略過。 +(Select this if you are already using synchronisation on another computer or smartphone.) This option is suitable if you are new to LiveSync and want to set it up from scratch.: (如果你已經在另一台電腦或手機上使用同步,請選擇此項。)此選項適合將目前裝置加入既有 LiveSync 設定的使用者。 +(Select this if you are configuring this device as the first synchronisation device.) This option is suitable if you are new to LiveSync and want to set it up from scratch.: (如果你正在將此裝置設定為第一台同步裝置,請選擇此項。)此選項適合初次使用 LiveSync,並希望從頭開始設定的使用者。 +"> [!INFO]- The connected devices have been detected as follows:\n${devices}": |- + > [!INFO]- 已偵測到以下已連線裝置: + ${devices} +A Setup URI is a single string of text containing your server address and authentication details. Using a URI, if one was generated by your server installation script, provides a simple and secure configuration.: Setup URI 是一段包含伺服器位址與驗證資訊的文字。如果伺服器安裝腳本已經產生 URI,使用它可以更簡單且更安全地完成設定。 +Access Key: 訪問金鑰 Activate: 啟用 -Active Remote Configuration: 目前啟用的遠端設定 +Active Remote Configuration: 生效中的遠端配置 +Active Remote Type: 作用中的遠端類型 Add default patterns: 新增預設模式 -Always prompt merge conflicts: 總是提示合併衝突 -Analyse: 分析 -Apply Latest Change if Conflicting: 發生衝突時套用最新變更 -Apply preset configuration: 套用預設配置 -Ask a passphrase at every launch: 每次啟動時都詢問密語 -Automatically Sync all files when opening Obsidian.: 開啟 Obsidian 時自動同步所有檔案。 -Batch database update: 批次更新資料庫 -Batch limit: 批次上限 -Batch size: 批次大小 -Batch size of on-demand fetching: 按需抓取的批次大小 -Bucket Name: 儲存桶名稱 -Check: 檢查 -Configuration Encryption: 設定加密 -CouchDB Connection Tweak: CouchDB 連線調校 -Customization Sync: 自訂同步 -Data Compression: 資料壓縮 -Database Name: 資料庫名稱 -Database suffix: 資料庫後綴 -Delay conflict resolution of inactive files: 延後處理非活動檔案的衝突 -Delay merge conflict prompt for inactive files.: 延後顯示非活動檔案的合併衝突提示。 -Delete old metadata of deleted files on start-up: 啟動時刪除已刪除檔案的舊中繼資料 -Developer: 開發者 -Disables logging, only shows notifications. Please disable if you report an issue.: 停用日誌記錄,只顯示通知。如果你要回報問題,請關閉此選項。 -Display Language: 顯示語言 -Do not check configuration mismatch before replication: 複寫前不檢查設定是否不一致 -Do not keep metadata of deleted files.: 不保留已刪除檔案的中繼資料。 -Do not split chunks in the background: 不在背景分割 chunks -Do not use internal API: 不使用內部 API Add new connection: 新增連線 +Advanced: 進階 +All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.: 所有裝置的進度值均相同(${progress})。看起來你的裝置已同步,可以繼續執行垃圾回收。 +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.: 分析資料庫使用情況並生成 TSV 報告以供您自行診斷。您可以將生成的報告貼上到您喜歡的任何電子表格中。 +Apply Latest Change if Conflicting: 如果衝突則應用最新更改 +Apply preset configuration: 應用預設配置 +Ask a passphrase at every launch: 每次啟動時都詢問密語 +Automatically broadcast changes to connected peers: 自動向已連線的對等裝置廣播變更 +Automatically start P2P connection on launch: 啟動時自動開始 P2P 連線 +Automatically Sync all files when opening Obsidian.: 開啟 Obsidian 時自動同步所有檔案 Back: 返回 Back to non-configured: 恢復為未設定狀態 +Batch database update: 批次資料庫更新 +Batch limit: 批次限制 +Batch size: 批次大小 +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: 儲存桶名稱 Cancel: 取消 +Cancel Garbage Collection: 取消垃圾回收 +Check: 立即檢查 Check and convert non-path-obfuscated files: 檢查並轉換未進行路徑混淆的檔案 Check for documents that have not been converted to path-obfuscated IDs and convert them if necessary.: 檢查尚未轉換為路徑混淆 ID 的文件,並在需要時進行轉換。 +Chunk Splitter: 資料區塊分割器 cmdConfigSync: - showCustomizationSync: 顯示自訂同步 + showCustomizationSync: 顯示自定義同步 +Comma separated `.gitignore, .dockerignore`: 用逗號分隔,例如 `.gitignore, .dockerignore` +Compaction in progress on remote database...: 正在遠端資料庫上執行壓縮... +Compaction on remote database completed successfully.: 遠端資料庫壓縮已成功完成。 +Compaction on remote database failed.: 遠端資料庫壓縮失敗。 +Compaction on remote database timed out.: 遠端資料庫壓縮逾時。 Compare the content of files between on local database and storage. If not matched, you will be asked which one you want to keep.: 比較本機資料庫與儲存空間中的檔案內容;若不一致,系統會詢問你要保留哪一份。 Compatibility (Conflict Behaviour): 相容性(衝突行為) Compatibility (Database structure): 相容性(資料庫結構) @@ -47,144 +63,704 @@ Compatibility (Internal API Usage): 相容性(內部 API 使用) Compatibility (Metadata): 相容性(中繼資料) Compatibility (Remote Database): 相容性(遠端資料庫) Compatibility (Trouble addressed): 相容性(問題修復) +Compute revisions for chunks: 為 chunks 計算修訂版本(以前的行為) +Configuration Encryption: 設定加密 Configure: 設定 Configure And Change Remote: 設定並切換遠端 Configure E2EE: 設定 E2EE Configure Remote: 設定遠端 +Configure the same server information as your other devices again, manually, very advanced users only.: 手動重新輸入與其他裝置相同的伺服器資訊。僅適合進階使用者。 +Connection Method: 連線方式 +Continue to CouchDB setup: 繼續進行 CouchDB 設定 +Continue to Peer-to-Peer only setup: 繼續進行僅 Peer-to-Peer 設定 +Continue to S3/MinIO/R2 setup: 繼續進行 S3/MinIO/R2 設定 Copy: 複製 +Copy Report to clipboard: 將報告複製到剪貼簿 +CouchDB Connection Tweak: CouchDB 連線調校 Cross-platform: 跨平台 "Current adapter: {adapter}": 目前的適配器:{adapter} -Customization Sync (Beta3): 自訂同步(Beta3) +Customization sync: 自訂同步 +Customization Sync: 自訂同步 +Customization Sync (Beta3): 自定義同步(Beta3) +Data Compression: 資料壓縮 +Database -> Storage: 資料庫 -> 儲存空間 Database Adapter: 資料庫適配器 +Database Name: 資料庫名稱 +Database suffix: 資料庫字尾 Default: 預設 +Delay conflict resolution of inactive files: 推遲解決不活動檔案 +Delay merge conflict prompt for inactive files.: 推遲手動解決不活動檔案 Delete: 刪除 Delete all customization sync data: 刪除所有自訂同步資料 Delete all data on the remote server.: 刪除遠端伺服器上的所有資料。 Delete local database to reset or uninstall Self-hosted LiveSync: 刪除本機資料庫以重設或解除安裝 Self-hosted LiveSync +Delete old metadata of deleted files on start-up: 啟動時刪除已刪除檔案的舊後設資料 Delete Remote Configuration: 刪除遠端設定 Delete remote configuration '{name}'?: 要刪除遠端設定「{name}」嗎? desktop: 桌面裝置 +Developer: 開發者 +Device: 裝置 Device name: 裝置名稱 -Disables all synchronization and restart.: 停用所有同步並重新啟動。 -Display name: 顯示名稱 -Duplicate: 複製 -Duplicate remote: 複製遠端設定 +Device Setup Method: 裝置設定方式 dialog: yourLanguageAvailable: _value: |- - Self-hosted LiveSync 已提供你目前語言的翻譯,因此已啟用顯示語言設定。 + Self-hosted LiveSync已提供您語言的翻譯,因此啟用了%{Display language} - 注意:並非所有訊息都已完成翻譯,歡迎協助補充! - 注意 2:如果你要回報問題,請先切回預設語言,再附上截圖、訊息與日誌。 + 注意:並非所有訊息都已翻譯。我們期待您的貢獻! + 注意 2:若您建立問題報告, **請切換回%{lang-def}** ,然後擷取螢幕截圖、訊息和日誌,此操作可在設定對話方塊中完成 + 願您使用順心! + btnRevertToDefault: 保留%{lang-def} + Title: " 翻譯可用!" +Disables all synchronization and restart.: 停用所有同步並重新啟動。 +Disables logging, only shows notifications. Please disable if you report an issue.: 禁用日誌記錄,僅顯示通知。如果您報告問題,請禁用此選項 +Display Language: 顯示語言 +Display name: 顯示名稱 +Do not check configuration mismatch before replication: 在複製前不檢查配置不匹配 +Do not keep metadata of deleted files.: "不保留已刪除檔案的後設資料 " +Do not split chunks in the background: 不在後臺分割 chunks +Do not use internal API: 不使用內部 API +Doctor: + Button: + DismissThisVersion: 拒絕,並且直到下個版本前不再詢問 + Fix: 修復 + FixButNoRebuild: 修復但不重建 + No: "?" + Skip: 保持不變 + Yes: "?" + Dialogue: + Main: |- + 你好!由於 ${activateReason},Config Doctor 已啟動! + 很遺憾,偵測到某些設定可能存在問題。 + 請放心,我們會逐項解決。 + + 先讓你知道,我們將詢問以下項目。 + + ${issues} + + 現在開始嗎? + MainFix: |- + + ## ${name} + + | 當前 | 理想 | + |:---:|:---:| + | ${current} | ${ideal} | - 希望你使用愉快! - btnRevertToDefault: 恢復為預設語言 - Title: 已提供你的語言翻譯! + **推薦級別:** ${level} + + ### 為什麼會檢測到這個問題? + + ${reason} + + ${note} + + 是否修復為理想值? + Title: Self-hosted LiveSync 配置診斷 + TitleAlmostDone: 全部完成! + TitleFix: 修復問題 ${current}/${total} + Level: + Must: 必須 + Necessary: 必要 + Optional: 可選 + Recommended: 推薦 + Message: + NoIssues: 未發現問題! + RebuildLocalRequired: 注意!需要重建本地資料庫以應用此項! + RebuildRequired: 注意!需要重建才能應用此項! + SomeSkipped: 我們將某些問題留給了以後處理。是否要在下次啟動時再次詢問您? + RULES: + E2EE_V02500: + REASON: 端到端加密(E2EE)現已更加強大和快速。此外,之前的 E2EE + 在重新進行的程式碼審查中被發現存在安全問題。應儘快應用此更新。對於給您帶來的不便深表歉意。請注意,此設定不向前相容。所有已同步的裝置必須更新至 + v0.25.0 或更高版本。不需要重建,系統會自動從新的傳輸轉換為新格式,但建議在可能的情況下進行重建。 +Document History: 文件歷史 +Duplicate: 複製 +Duplicate remote: 複製遠端設定 E2EE Configuration: E2EE 設定 -Enable advanced features: 啟用進階功能 -Enable customization sync: 啟用自訂同步 -Enable Developers' Debug Tools.: 啟用開發者除錯工具。 -Enable edge case treatment features: 啟用邊緣情況處理功能 -Enable poweruser features: 啟用進階使用者功能 -Enable this if your Object Storage doesn't support CORS: 如果你的物件儲存不支援 CORS,請啟用此選項 -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.: 加密遠端資料庫中的內容。如果你使用外掛的同步功能,建議啟用此選項。 -Encryption phassphrase. If changed, you should overwrite the server's database with the new (encrypted) files.: 加密密語。如果變更了它,你應以新的(已加密)檔案覆寫伺服器上的資料庫。 -End-to-End Encryption: 端對端加密 -Endpoint URL: 端點 URL -Enhance chunk size: 擴大 chunk 大小 -Fetch: 抓取 -Fetch chunks on demand: 按需抓取 chunks -Fetch database with previous behaviour: 以前一種行為抓取資料庫 -Filename: 檔名 -Forces the file to be synced when opened.: 開啟檔案時強制同步該檔案。 -Handle files as Case-Sensitive: 將檔案視為區分大小寫 -Highlight diff: 醒目顯示差異 -If disabled(toggled), chunks will be split on the UI thread (Previous behaviour).: 若停用(關閉)此選項,chunks 會在 UI 執行緒上分割(舊有行為)。 -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.: 啟用後,chunks 最多會分成 100 個項目,但去重效果會稍微變弱。 -If enabled, newly created chunks are temporarily kept within the document, and graduated to become independent chunks once stabilised.: 啟用後,新建立的 chunks 會暫時保留在文件中,待穩定後再獨立出去。 -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): 啟用後,所有 chunks 都會以其內容產生的修訂版本儲存(舊有行為)。 -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.: 啟用後,chunks 會依語意切分成有意義的區段,並非所有平台都支援此功能。 -If you reached the payload size limit when using IBM Cloudant, please decrease batch size and batch limit to a lower value.: 如果你在使用 IBM Cloudant 時遇到負載大小上限,請調低批次大小與批次上限。 -Initialise journal received history. On the next sync, every item except this device sent will be downloaded again.: 初始化接收日誌歷程。下次同步時,除了此裝置已送出的項目外,其他項目都會再次下載。 -Initialise journal sent history. On the next sync, every item except this device received will be sent again.: 初始化傳送日誌歷程。下次同步時,除了此裝置已接收的項目外,其他項目都會再次傳送。 Edge case addressing (Behaviour): 邊緣情況處理(行為) Edge case addressing (Database): 邊緣情況處理(資料庫) Edge case addressing (Processing): 邊緣情況處理(處理) +Effectively a directory. Should end with `/`. e.g., `vault-name/`.: 相當於目錄。應以 `/` 結尾,例如 `vault-name/`。 Emergency restart: 緊急重新啟動 -Encrypting sensitive configuration items: 加密敏感設定項目 +Enable advanced features: 啟用高階功能 +Enable advanced mode: 啟用進階模式 +Enable customization sync: 啟用自定義同步 +Enable Developers' Debug Tools.: "啟用開發者除錯工具 " +Enable edge case treatment features: 啟用邊緣情況處理功能 +Enable forcePathStyle: 啟用 forcePathStyle +Enable P2P Synchronization: 啟用 P2P 同步 +Enable per-file customization sync: 啟用逐檔自訂同步 +Enable power user mode: 啟用進階使用者模式 +Enable poweruser features: 啟用高階使用者功能 +Enable this if your Object Storage doesn't support CORS: "如果您的物件儲存不支援 CORS,請啟用此功能 " +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.: "加密遠端資料庫中的內容。如果您使用外掛的同步功能,則建議啟用此功能 " +Encrypting sensitive configuration items: 加密敏感配置項 +Encryption passphrase. 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.: "加密密碼。如果更改,您應該用新的(加密的)檔案覆蓋伺服器的資料庫 " +End-to-End Encryption: 端到端加密 +Endpoint URL: 終端URL +Enhance chunk size: 增大塊大小 +Enter Server Information: 輸入伺服器資訊 +Enter the server information manually: 手動輸入伺服器資訊 Export: 匯出 +Failed to connect to remote for compaction.: 無法連線到遠端資料庫以執行壓縮。 +Failed to connect to remote for compaction. ${reason}: 無法連線到遠端資料庫以執行壓縮。${reason} +Failed to start one-shot replication before Garbage Collection. Garbage Collection Cancelled.: 無法在垃圾回收前啟動一次性複寫。垃圾回收已取消。 +Failed to start replication after Garbage Collection.: 垃圾回收後無法啟動複寫。 +Fetch: 抓取 +Fetch chunks on demand: 按需獲取塊 +Fetch database with previous behaviour: 使用以前的行為獲取資料庫 Fetch remote settings: 抓取遠端設定 +File prefix on the bucket: 儲存桶中的檔案前綴 File to resolve conflict: 要解決衝突的檔案 +File to view History: 要檢視歷程的檔案 +Filename: 檔名 +Files with modification times greater than this value (in seconds since the Unix epoch) will not have their events reflected. Set to 0 to disable this limit.: 修改時間大於此值(Unix Epoch 以來秒數)的檔案,其事件不會被反映。設為 0 可停用此限制。 +First, please select the option that best describes your current situation.: 首先,請選擇最符合你目前情況的選項。 Flag and restart: 標記後重新啟動 +Forces the file to be synced when opened.: "開啟檔案時強制同步該檔案 " Fresh Start Wipe: 全新開始清除 +Garbage Collection cancelled by user.: 使用者已取消垃圾回收。 +"Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.": 垃圾回收完成。已刪除 chunks:${deletedChunks} / ${totalChunks}。耗時:${seconds} 秒。 +Garbage Collection Confirmation: 垃圾回收確認 Garbage Collection V3 (Beta): 垃圾回收 V3(Beta) +"Garbage Collection: Found ${unusedChunks} unused chunks to delete.": 垃圾回收:找到 ${unusedChunks} 個未使用的 chunks 可刪除。 +"Garbage Collection: Scanned ${scanned} / ~${docCount}": 垃圾回收:已掃描 ${scanned} / ~${docCount} +"Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": 垃圾回收:掃描完成。總 chunks:${totalChunks},已使用 chunks:${usedChunks} +Handle files as Case-Sensitive: 將檔案視為區分大小寫 +Hatch: 工具箱 Hidden Files: 隱藏檔案 Hide completely: 完全隱藏 -How to display network errors when the sync server is unreachable.: 當同步伺服器無法連線時,如何顯示網路錯誤。 -If enabled, the ⛔ icon will be shown inside the status instead of the file warnings banner. No details will be shown.: 啟用後,將在狀態列中顯示 ⛔ 圖示,而不是檔案警告橫幅,且不會顯示詳細資訊。 +Highlight diff: 高亮差異 +How to display network errors when the sync server is unreachable.: 同步伺服器無法連線時,如何顯示網路錯誤。 +How would you like to configure the connection to your server?: 你希望如何設定與伺服器的連線? +I am adding a device to an existing synchronisation setup: 我要將裝置加入既有同步設定 +I am setting this up for the first time: 我是第一次進行設定 +I know my server details, let me enter them: 我知道伺服器資訊,讓我手動輸入 +If disabled(toggled), chunks will be split on the UI thread (Previous behaviour).: 如果禁用(切換),chunks 將在 UI 執行緒上分割(以前的行為) +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, changes will be automatically broadcasted to all connected peers. Notified peers will start fetching the changes.: 啟用後,變更會自動廣播給所有已連線的對等裝置。收到通知的裝置會開始取得這些變更。 +If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker.: 如果啟用,資料塊將被分割成不超過 100 項。但是,去重效果會稍弱 +If enabled, efficient per-file customization sync will be used. A minor migration is required when enabling this feature, and all devices must be updated to v0.23.18. Enabling this feature will result in losing compatibility with older versions.: 啟用後,將使用更有效率的逐檔自訂同步。啟用此功能時需要一次小型遷移,且所有裝置都必須更新到 v0.23.18。啟用後將失去與舊版本的相容性。 +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 forcePathStyle option will be used for bucket operations.: 啟用後,儲存桶操作將使用 forcePathStyle 選項。 +If enabled, the notification of hidden files change will be suppressed.: 如果啟用,將不再通知隱藏檔案被更改 +If enabled, the P2P connection will be automatically started when the application launches.: 啟用後,應用程式啟動時會自動開始 P2P 連線。 +If enabled, the plugin will not attempt to connect to the remote database even if the chunk was not found locally.: 啟用後,即使本機找不到該區塊,外掛也不會嘗試連線到遠端資料庫。 +If enabled, the request API will be used to avoid `inevitable` CORS problems. This is a workaround and may not work in all cases. PLEASE READ THE DOCUMENTATION BEFORE USING THIS OPTION. This is a less-secure option.: + 啟用後,將使用 request API 避免「不可避免」的 CORS + 問題。這是變通方案,不一定適用於所有情況。使用此選項前請務必閱讀文件。這是安全性較低的選項。 +If this enabled, all chunks will be stored with the revision made from its content.: 啟用後,所有資料區塊都會使用由其內容產生的修訂版本儲存。 +If this enabled, all chunks will be stored with the revision made from its content. (Previous behaviour): 如果啟用,所有 chunks 將使用根據其內容生成的修訂版本儲存(以前的行為) +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.: 如果啟用此功能,資料塊將被分割成具有語義意義的段落。並非所有平臺都支援此功能 +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.: + 如果啟用此選項,PouchDB 將保持連線開啟 60 + 秒,如果在此時間內沒有更改到達,則關閉並重新開啟套接字,而不是無限期保持開啟。當代理限制請求持續時間時有用,但可能會增加資源使用ß +If you reached the payload size limit when using IBM Cloudant, please decrease batch size and batch limit to a lower value.: 如果你在使用 IBM Cloudant 時遇到負載大小上限,請調低批次大小與批次上限。 +Ignore and Proceed: 忽略並繼續 +Ignore files: 忽略檔案 Ignore patterns: 忽略模式 Import connection: 匯入連線 +Incubate Chunks in Document: 在文件中孵化塊 Initialise all journal history, On the next sync, every item will be received and sent.: 初始化所有日誌歷史。下次同步時,每個項目都會重新接收與傳送。 +Initialise journal received history. On the next sync, every item except this device sent will be downloaded again.: 初始化接收日誌歷程。下次同步時,除了此裝置已送出的項目外,其他項目都會再次下載。 +Initialise journal sent history. On the next sync, every item except this device received will be sent again.: 初始化傳送日誌歷程。下次同步時,除了此裝置已接收的項目外,其他項目都會再次傳送。 +Interval (sec): 間隔(秒) +K: + exp: 實驗性 + long_p2p_sync: "%{title_p2p_sync}" + P2P: "%{Peer}對%{Peer}" + Peer: 節點 + ScanCustomization: 掃描自定義 + short_p2p_sync: P2P Sync + title_p2p_sync: Peer-to-Peer同步 +Keep empty folder: 保留空資料夾 +lang_def: 預設 +lang-de: Deutsch +lang-def: "%{lang_def}" +lang-es: Español +lang-ja: 日本語 +lang-ko: 한국어 +lang-ru: Русский +lang-zh: 簡體中文 +lang-zh-tw: 繁體中文 Later: 稍後 "Limit: {datetime} ({timestamp})": 限制:{datetime}({timestamp}) +LiveSync could not handle multiple vaults which have same name without different prefix, This should be automatically configured.: LiveSync 無法處理具有相同名稱但沒有不同字首的多個庫。這應該自動配置 +liveSyncReplicator: + beforeLiveSync: 在LiveSync前,先啟動OneShot一次... + cantReplicateLowerValue: 我們無法複製更小的值 + checkingLastSyncPoint: 查詢上次同步點 + couldNotConnectTo: |- + 無法連線到 ${uri} : ${name} + (${db}) + couldNotConnectToRemoteDb: 無法連線到遠端資料庫:${d} + couldNotConnectToServer: 無法連線到伺服器 + couldNotConnectToURI: 無法連線到 ${uri}:${dbRet} + couldNotMarkResolveRemoteDb: 無法標記並解決遠端資料庫 + liveSyncBegin: LiveSync 開始... + lockRemoteDb: 鎖定遠端資料庫以防止資料損壞 + markDeviceResolved: 將此裝置標記為“已解決” + oneShotSyncBegin: OneShot同步開始...(${syncMode}) + remoteDbCorrupted: 遠端資料庫較新或已損壞,請確保已安裝最新版本的self-hosted-livesync + remoteDbCreatedOrConnected: 遠端資料庫已建立或連線 + remoteDbDestroyed: 遠端資料庫已銷燬 + remoteDbDestroyError: 遠端資料庫銷燬時發生錯誤: + remoteDbMarkedResolved: 遠端資料庫已標記為已解決 + replicationClosed: 同步已關閉 + replicationInProgress: 同步正在進行中 + retryLowerBatchSize: 使用更小的批次大小重試:${batch_size}/${batches_limit} + unlockRemoteDb: 解鎖遠端資料庫以防止資料損壞 +liveSyncSetting: + errorNoSuchSettingItem: 沒有此設定項:${key} + originalValue: 原始值:${value} + valueShouldBeInRange: 值應該在 ${min} < value < ${max} 之間 +liveSyncSettings: + btnApply: 應用 Lock: 鎖定 Lock Server: 鎖定伺服器 Lock the remote server to prevent synchronization with other devices.: 鎖定遠端伺服器,以防止其他裝置進行同步。 +logPane: + autoScroll: 自動滾動 + logWindowOpened: 日誌視窗已開啟 + pause: 暫停 + title: Self-hosted LiveSync 日誌 + wrap: 自動換行 +Maintenance: 維護 +Maximum delay for batch database updating: 批次資料庫更新的最大延遲 +Maximum file modification time for reflected file events: 反映檔案事件的最大檔案修改時間 +Maximum file size: 最大檔案大小 +Maximum Incubating Chunk Size: 最大孵化塊大小 +Maximum Incubating Chunks: 最大孵化塊數 +Maximum Incubation Period: 最大孵化期 +Maximum size of chunks to send in one request: 單次請求傳送資料區塊的最大大小 +MB: MB +MB (0 to disable).: MB(0為禁用) +Memory cache size (by total characters): 記憶體快取大小(按總字元數) +Memory cache size (by total items): 記憶體快取大小(按總專案數) +Minimum delay for batch database updating: 批次資料庫更新的最小延遲 +Minimum interval for syncing: 同步最小間隔 +moduleCheckRemoteSize: + logCheckingStorageSizes: 正在檢查儲存大小 + logCurrentStorageSize: 遠端儲存大小:${measuredSize} + logExceededWarning: 遠端儲存大小:${measuredSize} 超過 ${notifySize} + logThresholdEnlarged: 閾值已擴大到 ${size}MB + msgConfirmRebuild: 這可能需要一些時間。您真的想現在重建所有內容嗎? + msgDatabaseGrowing: | + **您的資料庫正在變大!** 但別擔心,我們現在可以解決它。在遠端儲存空間用完之前還有時間。 + + | 測量大小 | 配置大小 | + | --- | --- | + | ${estimatedSize} | ${maxSize} | + + > [!MORE]- + > 如果您已經使用了很多年,資料庫中可能會積累未引用的 chunks——也就是垃圾。因此,我們建議重建所有內容。它可能會變得小得多。 + > + > 如果您的庫容量只是在增加,最好在整理檔案後重建所有內容。即使您為了加速過程刪除了檔案,Self-hosted LiveSync 也不會刪除實際資料。這大致[有文件記錄](https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/tech_info.md)。 + > + > 如果您不介意增加,可以將通知限制增加 100MB。如果您在自己的伺服器上執行,就是這種情況。但是,最好還是不時地重建所有內容。 + > + + > [!WARNING] + > 如果您執行重建所有內容,請確保所有裝置都已同步。儘管如此,外掛會儘可能地合併 + msgSetDBCapacity: | + 我們可以設定一個最大資料庫容量警告,**以便在遠端儲存空間耗盡前採取行動**。 + 您想啟用這個功能嗎? + + > [!MORE]- + > - 0: 不警告儲存大小。 + > 如果您在遠端儲存(尤其是自託管)上有足夠的空間,則推薦此選項。您可以手動檢查儲存大小並重建。 + > - 800: 如果遠端儲存大小超過 800MB 則發出警告。 + > 如果您使用的是 fly.io(1GB 限制) 或 IBM Cloudant,則推薦此選項。 + > - 2000: 如果遠端儲存大小超過 2GB 則發出警告。 + + 如果達到限制,系統會要求我們逐步增大限制 + option2GB: 2GB (標準) + option800MB: 800MB(Cloudant, fly.io) + optionAskMeLater: 稍後問我 + optionDismiss: 忽略 + optionIncreaseLimit: 增加到 ${newMax}MB + optionNoWarn: 不,請永遠不要警告 + optionRebuildAll: 立即重建所有內容 + titleDatabaseSizeLimitExceeded: 遠端儲存大小超出限制 + titleDatabaseSizeNotify: 設定資料庫大小通知 +moduleInputUIObsidian: + defaultTitleConfirmation: 確認 + defaultTitleSelect: 選擇 + optionNo: 否 + optionYes: 是 +moduleLiveSyncMain: + logAdditionalSafetyScan: 額外的安全掃描... + logLoadingPlugin: 正在載入外掛... + logPluginInitCancelled: 外掛初始化被某個模組取消 + logPluginVersion: Self-hosted LiveSync v${manifestVersion} ${packageVersion} + logReadChangelog: LiveSync 已更新,請閱讀更新日誌! + logSafetyScanCompleted: 額外的安全掃描完成 + logSafetyScanFailed: 額外的安全掃描在某個模組上失敗 + logUnloadingPlugin: 正在解除安裝外掛... + logVersionUpdate: LiveSync 已更新,如果存在破壞性更新,所有自動同步已暫時禁用。請確保所有裝置都更新到最新版本後再啟用 + msgScramEnabled: | + Self-hosted LiveSync 已被配置為忽略某些事件。這樣對嗎? + + | 型別 | 狀態 | 說明 | + |:---:|:---:|---| + | 儲存事件 | ${fileWatchingStatus} | 所有修改都將被忽略 | + | 資料庫事件 | ${parseReplicationStatus} | 所有同步的更改都將被推遲 | + + 您想恢復它們並重啟 Obsidian 嗎? + + > [!DETAILS]- + > 這些標誌是在重建或獲取時由外掛設定的。如果過程異常結束,它們可能會被無意中保留。 + > 如果您不確定,可以嘗試重新執行這些過程。請確保備份您的庫。 + optionKeepLiveSyncDisabled: 保持 LiveSync 禁用 + optionResumeAndRestart: 恢復並重啟 Obsidian + titleScramEnabled: 緊急停止已啟用 +moduleLocalDatabase: + logWaitingForReady: 等待就緒... +moduleLog: + showLog: 顯示日誌 +moduleMigration: + docUri: 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 + fix0256: + buttons: + checkItLater: 稍後檢查 + DismissForever: 我已經修復了,不再詢問 + fix: 修復 + message: | + 由於最近的一個 bug(在 v0.25.6 版本中),某些檔案可能未正確儲存到同步資料庫中 + 我們已經掃描了檔案,並發現一些需要修復的檔案 + + **準備修復的檔案:** + + ${files} + + 這些檔案在儲存中與原檔案的大小匹配,可能是可恢復的 + 我們可以使用它們修復資料庫,請點選下方的“修復”按鈕進行修復 + + ${messageUnrecoverable} + + + 如果你希望再次執行此操作,可以前往 Hatch 頁面進行操作 + messageUnrecoverable: | + **無法在此裝置上修復的檔案:** + + ${filesNotRecoverable} + + 這些檔案的後設資料不一致,無法在此裝置上修復(大多數情況下我們無法確定哪一個是正確的) + 要恢復它們,請檢查你的其他裝置(同樣使用此功能),或從備份中手動恢復 + title: 檢測到損壞的檔案 + insecureChunkExist: + buttons: + fetch: 我已經重建了遠端資料庫,將從遠端獲取 + later: 我稍後再做 + rebuild: 重建所有內容 + laterMessage: 我們強烈建議儘快處理此問題! + message: | + 一些塊未安全儲存,並且在資料庫中未加密 + **請重建資料庫以修復此問題**. + + 如果你的遠端資料庫未配置 SSL,或者使用了不安全的憑據 **你可能面臨暴露敏感資料的風險**. + + 注意:請在所有裝置上將 Self-hosted LiveSync 升級到 v0.25.6 或更高版本,並確保備份你的保險庫 + + 注意2:重建所有內容和獲取操作會消耗一些時間和流量,請在非高峰時段進行,並確保網路連線穩定 + title: 發現不安全的塊! + logBulkSendCorrupted: 已啟用批次傳送 chunks,但此功能已損壞。給您帶來不便,我們深表歉意。已自動禁用 + logFetchRemoteTweakFailed: 獲取遠端調整值失敗 + logLocalDatabaseNotReady: 出錯了!本地資料庫尚未準備好 + logMigratedSameBehaviour: 已遷移到 db:${current},行為與之前相同 + logMigrationFailed: 從 ${old} 到 ${current} 的遷移失敗或已取消 + logRedflag2CreationFail: 建立 redflag2 失敗 + logRemoteTweakUnavailable: 無法獲取遠端調整值 + logSetupCancelled: 設定已取消,Self-hosted LiveSync 正在等待您的設定! + msgFetchRemoteAgain: |- + 您可能已經知道,Self-hosted LiveSync 更改了其預設行為和資料庫結構。 + + 值得慶幸的是,在您的時間和努力下,遠端資料庫似乎已經遷移完成。恭喜! + + 但是,我們還需要一點點操作。此裝置的配置與遠端資料庫不相容。我們需要再次從遠端資料庫獲取。我們現在應該再次從遠端獲取嗎? + + ___注意:在更改配置並再次獲取資料庫之前,我們無法進行同步。___ + ___注意2:chunks 是完全不可變的,我們只能獲取後設資料和差異 + msgInitialSetup: |- + 您的裝置**尚未設定**。讓我引導您完成設定過程。 + + 請記住,每個對話方塊內容都可以複製到剪貼簿。如果以後需要參考,可以將其貼上到 Obsidian 的筆記中。您也可以使用翻譯工具將其翻譯成您的語言。 + + 首先,您有**設定 URI** 嗎? + + 注意:如果您不知道這是什麼,請參閱[文件](${URI_DOC}) + msgRecommendSetupUri: |- + 我們強烈建議您生成一個設定 URI 並使用它。 + 如果您對此不瞭解,請參閱[文件](${URI_DOC})(再次抱歉,但這很重要)。 + + 您想如何手動設定? + msgSinceV02321: |- + 自 v0.23.21 起,Self-hosted LiveSync 更改了預設行為和資料庫結構。進行了以下更改: + + 1. **檔名的區分大小寫** + 現在處理檔名時不區分大小寫。這對於大多數平臺來說是一個有益的更改,除了 Linux 和 iOS,它們不能有效地管理檔名的大小寫敏感性。 + (在這些平臺上,對於名稱相同但大小寫不同的檔案將顯示警告)。 + + 2. **chunks 的版本處理** + chunks 是不可變的,這使得它們的版本可以固定。此更改將提高檔案儲存的效能。 + + ___然而,要啟用這些更改中的任何一個,都需要重建遠端和本地資料庫。這個過程需要幾分鐘,我們建議您在有充足時間時進行。___ + + - 如果您希望保持以前的行為,可以使用 `${KEEP}` 跳過此過程。 + - 如果您沒有足夠的時間,請選擇 `${DISMISS}`。稍後會再次提示您。 + - 如果您已在另一臺裝置上重建了資料庫,請選擇 `${DISMISS}` 並嘗試再次同步。由於檢測到差異,系統會再次提示您 + optionAdjustRemote: 調整到遠端設定 + optionDecideLater: 稍後決定 + optionEnableBoth: 啟用兩者 + optionEnableFilenameCaseInsensitive: "僅啟用 #1" + optionEnableFixedRevisionForChunks: "僅啟用 #2" + optionHaveSetupUri: 是的,我有 + optionKeepPreviousBehaviour: 保持以前的行為 + optionManualSetup: 全部手動設定 + optionNoAskAgain: 不,請稍後再次詢問 + optionNoSetupUri: 不,我沒有 + optionRemindNextLaunch: 下次啟動時提醒我 + optionSetupViaP2P: 使用 %{short_p2p_sync} 進行設定 + optionSetupWizard: 帶我進入設定嚮導 + optionYesFetchAgain: 是的,再次獲取 + titleCaseSensitivity: 大小寫敏感性 + titleRecommendSetupUri: 推薦使用設定 URI + titleWelcome: 歡迎使用 Self-hosted LiveSync +moduleObsidianMenu: + replicate: 複製 More actions: 更多操作 +Move remotely deleted files to the trash, instead of deleting.: 將遠端刪除的檔案移至回收站,而不是直接刪除 Network warning style: 網路警告樣式 New Remote: 新增遠端 +No connected device information found. Cancelling Garbage Collection.: 找不到已連線裝置的資訊。正在取消垃圾回收。 No limit configured: 尚未設定限制 +No, please take me back: 不,返回上一步 +Node ID: 節點 ID +Node Information Missing: 節點資訊缺失 Non-Synchronising files: 不同步的檔案 Normal Files: 一般檔案 +Not all messages have been translated. And, please revert to "Default" when reporting errors.: 並非所有訊息都已翻譯。請在報告錯誤時恢復為"預設" +Notify all setting files: 通知所有設定檔案 +Notify customized: 通知自定義設定 +Notify when other device has newly customized.: "當其他裝置有新的自定義設定時通知 " +Notify when the estimated remote storage size exceeds on start up: 啟動時當估計的遠端儲存大小超出時通知 +Now we can choose how to split the chunks; V3 is the most efficient. If you have troubled, please make this Default or Legacy.: 現在可以選擇如何分割資料區塊;V3 效率最高。如果遇到問題,請改為 Default 或 Legacy。 +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.: 一次處理的批次數量。預設為 40。最小為 2。此設定與批次大小一起控制一次在記憶體中保留多少文件 +Number of changes to sync at a time. Defaults to 50. Minimum is 2.: 一次同步的更改數量。預設為 50。最小為 2。 +Obsidian version: Obsidian 版本 obsidianLiveSyncSettingTab: - btnApply: 套用 - btnDisable: 停用 + btnApply: 應用 + btnCheck: 檢查 + btnCopy: 複製 + btnDisable: 禁用 + btnDiscard: 丟棄 + btnEnable: 啟用 + btnFix: 修復 + btnGotItAndUpdated: 我明白了並且已更新 btnNext: 下一步 + btnStart: 開始 + btnTest: 測試 + btnUse: 使用 + buttonFetch: 獲取 buttonNext: 下一步 - defaultLanguage: 預設語言 - labelDisabled: "⏹️ : 已停用" + defaultLanguage: 預設 + descConnectSetupURI: 這是使用設定 URI 設定 Self-hosted LiveSync 的推薦方法 + descCopySetupURI: 非常適合設定新裝置! + descEnableLiveSync: 僅在配置了上述兩個選項之一或手動完成所有配置後啟用此選項 + descFetchConfigFromRemote: 從已配置的遠端伺服器獲取必要的設定 + descManualSetup: 不推薦,但如果您沒有設定 URI 則很有用 + descTestDatabaseConnection: 開啟資料庫連線。如果未找到遠端資料庫並且您有建立資料庫的許可權,則將建立資料庫 + descValidateDatabaseConfig: 檢查並修復資料庫配置中的任何潛在問題 + errAccessForbidden: ❗ 訪問被禁止 + errCannotContinueTest: 我們無法繼續測試。 + errCorsCredentials: ❗ cors.credentials 設定錯誤 + errCorsNotAllowingCredentials: ❗ CORS 不允許憑據 + errCorsOrigins: ❗ cors.origins 設定錯誤 + errEnableCors: ❗ httpd.enable_cors 設定錯誤 + errEnableCorsChttpd: ❗ chttpd.enable_cors 設定錯誤 + errMaxDocumentSize: ❗ couchdb.max_document_size 設定過低) + errMaxRequestSize: ❗ chttpd.max_http_request_size 設定過低) + errMissingWwwAuth: ❗ 缺少 httpd.WWW-Authenticate 設定 + errRequireValidUser: ❗ chttpd.require_valid_user 設定錯誤 + errRequireValidUserAuth: ❗ chttpd_auth.require_valid_user 設定錯誤 + labelDisabled: "⏹️ : 已禁用" labelEnabled: "🔁 : 已啟用" - logConfiguredDisabled: 已設定的同步模式:已停用 - logConfiguredLiveSync: 已設定的同步模式:LiveSync - logConfiguredPeriodic: 已設定的同步模式:定期同步 - logSelectAnyPreset: 請選擇任一預設項目。 - msgConfigCheckFailed: 設定檢查失敗。仍要繼續嗎? - msgEnableEncryptionRecommendation: 我們建議啟用端對端加密與路徑混淆。你確定要在未加密的情況下繼續嗎? - msgFetchConfigFromRemote: 要從遠端伺服器抓取設定嗎? - msgGenerateSetupURI: 全部完成!要產生 Setup URI 以便設定其他裝置嗎? - msgInvalidPassphrase: 你的加密密語可能無效。你確定要繼續嗎? - msgSelectAndApplyPreset: 請選擇並套用任一預設項目以完成精靈。 - nameDisableHiddenFileSync: 停用隱藏檔案同步 + levelAdvanced: (進階) + levelEdgeCase: (邊緣情況) + levelPowerUser: (高階使用者) + linkOpenInBrowser: 在瀏覽器中開啟 + linkPageTop: 頁面頂部 + linkTipsAndTroubleshooting: 提示和故障排除 + linkTroubleshooting: /docs/troubleshooting.md + logCannotUseCloudant: "此功能不能與 IBM Cloudant 一起使用 " + logCheckingConfigDone: 配置檢查完成 + logCheckingConfigFailed: 配置檢查失敗 + logCheckingDbConfig: 正在檢查資料庫配置 + logCheckPassphraseFailed: |- + 錯誤:無法使用遠端伺服器檢查密碼: + ${db} + logConfiguredDisabled: 配置的同步模式:已禁用 + logConfiguredLiveSync: 配置的同步模式:LiveSync + logConfiguredPeriodic: 配置的同步模式:定期 + logCouchDbConfigFail: CouchDB 配置:${title} 失敗 + logCouchDbConfigSet: CouchDB 配置:${title} -> 設定 ${key} 為 ${value} + logCouchDbConfigUpdated: CouchDB 配置:${title} 成功更新 + logDatabaseConnected: 資料庫已連線 + logEncryptionNoPassphrase: 沒有密碼無法啟用加密 + logEncryptionNoSupport: "您的裝置不支援加密 " + logErrorOccurred: 發生錯誤!! + logEstimatedSize: 估計大小:${size} + logPassphraseInvalid: 密碼無效,請修正 + logPassphraseNotCompatible: 錯誤:密碼與遠端伺服器不相容!請再次檢查! + logRebuildNote: 同步已禁用,如果需要,請獲取並重新啟用 + logSelectAnyPreset: 選擇任何預設 + logServerConfigurationCheck: 日誌伺服器配置檢查 + msgAreYouSureProceed: 您確定要繼續嗎? + msgChangesNeedToBeApplied: 需要應用更改! + msgConfigCheck: --配置檢查-- + msgConfigCheckFailed: 配置檢查失敗。您仍要繼續嗎? + msgConnectionCheck: --連線檢查-- + msgConnectionProxyNote: 如果您在連線檢查時遇到問題(即使檢查了配置後),請檢查您的反向代理配置 + msgCurrentOrigin: "目前 origin: ${origin}" + msgDiscardConfirmation: 您真的要丟棄現有的設定和資料庫嗎? + msgDone: --完成-- + msgEnableCors: 設定 httpd.enable_cors + msgEnableCorsChttpd: 設定 chttpd.enable_cors + msgEnableEncryptionRecommendation: 我們建議啟用端到端加密和路徑混淆。您確定要在沒有加密的情況下繼續嗎? + msgFetchConfigFromRemote: 您想從遠端伺服器獲取配置嗎? + msgGenerateSetupURI: 全部完成!您想生成一個設定 URI 來設定其他裝置嗎? + msgIfConfigNotPersistent: 如果伺服器配置不是持久的(例如,在 docker 上執行),此處的值可能會更改。一旦能夠連線,請更新伺服器 local.ini 中的設定 + msgInvalidPassphrase: 您的加密密碼可能無效。您確定要繼續嗎? + msgNewVersionNote: 因為升級通知來到這裡?請檢視版本歷史。如果您滿意,請點選按鈕。新的更新將再次提示此資訊 + msgNonHTTPSInfo: 配置為非 HTTPS URI。請注意,這可能在移動裝置上無法工作 + msgNonHTTPSWarning: 無法連線到非 HTTPS URI。請更新您的配置並重試 + msgNotice: ---注意--- + msgObjectStorageWarning: |- + 警告:此功能仍在開發中,請注意以下幾點: + - 僅追加架構。需要重建才能縮小儲存空間。 + - 有點脆弱。 + - 首次同步時,所有歷史記錄將從遠端傳輸。注意資料上限和慢速。 + - 只有差異會實時同步。 + + 如果您遇到任何問題,或對此功能有任何想法,請在 GitHub 上建立 issue。 + 感謝您的巨大貢獻 + msgOriginCheck: "正在檢查 origin: ${org}" + msgRebuildRequired: |- + 需要重建資料庫以應用更改。請選擇應用更改的方法。 + +
+ 圖例 + + | 符號 | 含義 | + |: ------ :| ------- | + | ⇔ | 最新 | + | ⇄ | 同步以平衡 | + | ⇐,⇒ | 傳輸以覆蓋 | + | ⇠,⇢ | 從另一側傳輸以覆蓋 | + +
+ + ## ${OPTION_REBUILD_BOTH} + 概覽:📄 ⇒¹ 💻 ⇒² 🛰️ ⇢ⁿ 💻 ⇄ⁿ⁺¹ 📄 + 使用此裝置的現有檔案重建本地和遠端資料庫。 + 這將導致其他裝置被鎖定,並且它們需要執行獲取操作。 + ## ${OPTION_FETCH} + 概覽:📄 ⇄² 💻 ⇐¹ 🛰️ ⇔ 💻 ⇔ 📄 + 初始化本地資料庫並使用從遠端資料庫獲取的資料重建它。 + 這種情況包括您已經重建了遠端資料庫的情況。 + ## ${OPTION_ONLY_SETTING} + 僅儲存設定。**注意:這可能導致資料損壞**;通常需要重建資料庫 + msgSelectAndApplyPreset: 請選擇並應用任何預設項以完成嚮導 + msgSetCorsCredentials: 設定 cors.credentials + msgSetCorsOrigins: 設定 cors.origins + msgSetMaxDocSize: 設定 couchdb.max_document_size + msgSetMaxRequestSize: 設定 chttpd.max_http_request_size + msgSetRequireValidUser: 設定 chttpd.require_valid_user = true + msgSetRequireValidUserAuth: 設定 chttpd_auth.require_valid_user = true + msgSettingModified: 設定 "${setting}" 已從另一臺裝置修改。點選 {HERE} 重新載入設定。點選其他地方忽略更改 + msgSettingsUnchangeableDuringSync: 這些設定在同步期間無法更改。請在“同步設定”中禁用所有同步以解鎖 + msgSetWwwAuth: 設定 httpd.WWW-Authenticate + nameApplySettings: 應用設定 + nameConnectSetupURI: 使用設定 URI 連線 + nameCopySetupURI: 將當前設定複製為設定 URI + nameDisableHiddenFileSync: 禁用隱藏檔案同步 + nameDiscardSettings: 丟棄現有設定和資料庫 nameEnableHiddenFileSync: 啟用隱藏檔案同步 + nameEnableLiveSync: 啟用 LiveSync nameHiddenFileSynchronization: 隱藏檔案同步 - optionDisableAllAutomatic: 停用所有自動同步 - optionLiveSync: LiveSync 同步 - optionOnEvents: 事件觸發時 - optionPeriodicAndEvents: 定期與事件觸發 - optionPeriodicWithBatch: 定期(批次) + nameManualSetup: 手動設定 + nameTestConnection: 測試連線 + nameTestDatabaseConnection: 測試資料庫連線 + nameValidateDatabaseConfig: 驗證資料庫配置 + okAdminPrivileges: ✔ 您擁有管理員許可權 + okCorsCredentials: ✔ cors.credentials 設定正確 + okCorsCredentialsForOrigin: CORS 憑據正常 + okCorsOriginMatched: ✔ CORS 源正常 + okCorsOrigins: ✔ cors.origins 設定正確 + okEnableCors: ✔ httpd.enable_cors 設定正確 + okEnableCorsChttpd: ✔ chttpd.enable_cors 已就緒。 + okMaxDocumentSize: ✔ couchdb.max_document_size 設定正確 + okMaxRequestSize: ✔ chttpd.max_http_request_size 設定正確 + okRequireValidUser: ✔ chttpd.require_valid_user 設定正確 + okRequireValidUserAuth: ✔ chttpd_auth.require_valid_user 設定正確 + okWwwAuth: ✔ httpd.WWW-Authenticate 設定正確 + optionApply: 應用 + optionCancel: 取消 + optionCouchDB: CouchDB + optionDisableAllAutomatic: 禁用所有自動同步 + optionFetchFromRemote: 從遠端獲取 + optionHere: 這裡 + optionLiveSync: LiveSync + optionMinioS3R2: Minio, S3, R2 + optionOkReadEverything: "好的,我已經閱讀了所有內容 " + optionOnEvents: 基於事件 + optionPeriodicAndEvents: 定期和基於事件 + optionPeriodicWithBatch: 定期與批次 + optionRebuildBoth: 從此裝置重建兩者 + optionSaveOnlySettings: (危險)僅儲存設定 + panelChangeLog: 更新日誌 + panelGeneralSettings: 常規設定 + panelPrivacyEncryption: 隱私與加密 + panelRemoteConfiguration: 遠端配置 + panelSetup: 設定 + serverVersion: "伺服器資訊: ${info}" + titleActiveRemoteServer: 活動遠端伺服器 titleAppearance: 外觀 - titleConflictResolution: 衝突處理 + titleConflictResolution: 衝突解決 titleCongratulations: 恭喜! - titleCouchDB: CouchDB 伺服器 + titleCouchDB: CouchDB titleDeletionPropagation: 刪除傳播 - titleEncryptionNotEnabled: 尚未啟用加密 - titleEncryptionPassphraseInvalid: 加密密語無效 - titleFetchConfig: 抓取設定 + titleEncryptionNotEnabled: 未啟用加密 + titleEncryptionPassphraseInvalid: 加密密碼無效 + titleExtraFeatures: 啟用額外和高階功能 + titleFetchConfig: 獲取配置 + titleFetchConfigFromRemote: 從遠端伺服器獲取配置 + titleFetchSettings: 獲取設定 titleHiddenFiles: 隱藏檔案 - titleLogging: 記錄 - titleMinioS3R2: MinIO、S3、R2 + titleLogging: 日誌記錄 + titleMinioS3R2: Minio, S3, R2 titleNotification: 通知 - titleRemoteConfigCheckFailed: 遠端設定檢查失敗 + titleOnlineTips: 線上提示 + titleQuickSetup: 快速設定 + titleRebuildRequired: 需要重建 + titleRemoteConfigCheckFailed: 遠端配置檢查失敗 titleRemoteServer: 遠端伺服器 - titleSynchronizationMethod: 同步方式 + titleReset: 重置 + titleSetupOtherDevices: 設定其他裝置 + titleSynchronizationMethod: 同步方法 titleSynchronizationPreset: 同步預設 + titleSyncSettings: 同步設定 titleSyncSettingsViaMarkdown: 透過 Markdown 同步設定 - titleUpdateThinning: 更新精簡 + titleUpdateThinning: 更新頻率限制 + warnCorsOriginUnmatched: ⚠ CORS Origin 不符合 ${from}->${to} + warnNoAdmin: ⚠ 您沒有管理員許可權 Ok: 確定 Old Algorithm: 舊演算法 Older fallback (Slow, W/O WebAssembly): 舊版回退(較慢,無 WebAssembly) @@ -192,34 +768,211 @@ Overwrite patterns: 覆寫模式 Overwrite remote: 覆寫遠端 Overwrite remote with local DB and passphrase.: 使用本機資料庫與密語覆寫遠端。 Overwrite Server Data with This Device's Files: 以此裝置的檔案覆寫伺服器資料 +P2P: + AskPassphraseForDecrypt: 遠端對等方共享了配置,請輸入密碼短語以解密配置 + AskPassphraseForShare: 遠端對等方請求此裝置配置,請輸入密碼短語以共享配置。你可以透過取消此對話方塊來忽略此請求 + DisabledButNeed: "%{title_p2p_sync} 已禁用。你確定要啟用它嗎?" + FailedToOpen: 無法開啟 P2P 連線到信令伺服器 + NoAutoSyncPeers: 未找到自動同步的對等方,請在 %{long_p2p_sync} 面板中設定對等方 + NoKnownPeers: 未檢測到對等方,正在等待其他對等方的連線... + 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. + + This 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. + + + The 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. + + + By 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. + important_note: The Experimental Implementation of the Peer-to-Peer Replicator. + important_note_sub: 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. + Summary: What is this feature? (and some important notes, please read once) + NotEnabled: "%{title_p2p_sync} 未啟用,無法建立新連線。" + P2PReplication: "%{P2P} 同步" + PaneTitle: "%{long_p2p_sync}" + ReplicatorInstanceMissing: 未找到 P2P 同步複製器,可能尚未配置或啟用。 + SeemsOffline: 節點 ${name} 似乎離線,已跳過。 + SyncAlreadyRunning: P2P 同步已在執行中。 + SyncCompleted: P2P 同步已完成。 + SyncStartedWith: 已與 ${name} 開始 P2P 同步。 paneMaintenance: markDeviceResolvedAfterBackup: 請在完成備份後將此裝置標記為已處理。 remoteLockedAndDeviceNotAccepted: 遠端資料庫已鎖定,且此裝置尚未被接受。 remoteLockedResolvedDevice: 遠端資料庫已鎖定,但此裝置已被接受。 unlockDatabaseReady: 現在可以解鎖資料庫。 +Passphrase: 密碼 +Passphrase of sensitive configuration items: 敏感配置項的密碼 +password: 密碼 +Password: 密碼 Paste a connection string: 貼上連線字串 +Paste the Setup URI generated from one of your active devices.: 貼上從一台已在使用裝置上產生的 Setup URI。 +Path Obfuscation: 路徑混淆 Patterns to match files for overwriting instead of merging: 用於匹配需覆寫而非合併檔案的模式 Patterns to match files for syncing: 用於匹配同步檔案的模式 +Peer-to-Peer only: 僅 Peer-to-Peer Peer-to-Peer Synchronisation: 點對點同步 +Per-file-saved customization sync: 按檔案儲存的自定義同步 Perform: 執行 Perform cleanup: 執行清理 Perform Garbage Collection: 執行垃圾回收 Perform Garbage Collection to remove unused chunks and reduce database size.: 執行垃圾回收以移除未使用的 chunks 並減少資料庫大小。 +Periodic Sync interval: 定期同步間隔 Pick a file to resolve conflict: 選擇要解決衝突的檔案 +Pick a file to show history: 選擇要顯示歷史的檔案 +Please disable 'Read chunks online' in settings to use Garbage Collection.: 若要使用垃圾回收,請在設定中停用「Read chunks online」。 +Please enable 'Compute revisions for chunks' in settings to use Garbage Collection.: 若要使用垃圾回收,請在設定中啟用「Compute revisions for chunks」。 +Please select 'Cancel' explicitly to cancel this operation.: 若要取消此操作,請明確選擇「取消」。 +Please select a method to import the settings from another device.: 請選擇一種從其他裝置匯入設定的方法。 +Please select an option to proceed: 請選擇一個選項以繼續 +Please select the type of server to which you are connecting.: 請選擇你要連線的伺服器類型。 Please set this device name: 請設定此裝置名稱 +Plug-in version: 外掛版本 +Prepare the 'report' to create an issue: 準備 '報告' 以建立問題單 +Presets: 預設 +Proceed Garbage Collection: 繼續執行垃圾回收 +Proceed with Setup URI: 繼續使用 Setup URI +Proceeding with Garbage Collection, ignoring missing nodes.: 正在繼續執行垃圾回收,並忽略缺失節點。 +Proceeding with Garbage Collection.: 正在執行垃圾回收。 +Process files even if seems to be corrupted: 即使檔案看似已損壞也處理 +Process small files in the foreground: 在前臺處理小檔案 +Progress: 進度 +Property Encryption: 屬性加密 PureJS fallback (Fast, W/O WebAssembly): PureJS 回退(快速,無 WebAssembly) Purge all download/upload cache.: 清除所有下載/上傳快取。 Purge all journal counter: 清除所有日誌計數器 Rebuild local and remote database with local files.: 以本機檔案重建本機與遠端資料庫。 Rebuilding Operations (Remote Only): 重建作業(僅遠端) +Recovery and Repair: 修復與修補 Recreate all: 全部重建 Recreate missing chunks for all files: 為所有檔案重建遺失的 chunks +RedFlag: + Fetch: + Method: + Desc: |- + 您希望如何獲取資料? + - %{RedFlag.Fetch.Method.FetchSafer} + **低流量**、**高 CPU 佔用**、**低風險** + 推薦用於... + - 檔案可能不一致 + - 檔案數量不多 + - %{RedFlag.Fetch.Method.FetchSmoother} + **低流量**、**中等 CPU 佔用**、**低到中等風險** + 推薦用於... + - 檔案可能一致 + - 檔案數量較多 + - %{RedFlag.Fetch.Method.FetchTraditional} + **高流量**、**低 CPU 佔用**、**低到中等風險** + + >[!INFO]- 詳細資訊 + > ## %{RedFlag.Fetch.Method.FetchSafer} + > **低流量**、**高 CPU 佔用**、**低風險** + > 此選項首先使用現有本地檔案建立本地資料庫,然後從遠端源獲取資料。 + > 如果本地和遠端存在匹配的檔案,則僅傳輸兩者之間的差異。 + > 但是,兩端都存在的檔案最初會被視為衝突檔案。如果它們實際上沒有衝突,將自動解決,但此過程可能需要時間。 + > 這通常是最安全的方法,能最大限度地降低資料丟失風險。 + > ## %{RedFlag.Fetch.Method.FetchSmoother} + > **低流量**、**中等 CPU 佔用**、**低到中等風險**(取決於操作) + > 此選項首先從本地檔案建立資料塊,然後獲取資料。因此,僅傳輸本地缺少的資料塊。但是,所有後設資料均從遠端源獲取。 + > 啟動時會將本地檔案與該後設資料進行比較。內容較新的一方將覆蓋較舊的一方(按修改時間)。然後將結果同步回遠端資料庫。 + > 如果本地檔案的時間戳確實是最新的一般來說是安全的。但是,如果檔案具有較新的時間戳但內容較舊(如初始的 `welcome.md`),則可能導致問題。 + > 此方法使用較少的 CPU 且比"%{RedFlag.Fetch.Method.FetchSafer}"更快,但如果使用不當可能導致資料丟失。 + > ## %{RedFlag.Fetch.Method.FetchTraditional} + > **高流量**、**低 CPU 佔用**、**低到中等風險**(取決於操作) + > 所有資料將從遠端獲取。 + > 與 %{RedFlag.Fetch.Method.FetchSmoother} 類似,但所有資料塊都從遠端源獲取。 + > 這是最傳統的獲取方式,通常消耗最多的網路流量和時間。它也存在與"%{RedFlag.Fetch.Method.FetchSmoother}"選項類似的覆蓋遠端檔案的風險。 + > 但是,由於它是最久經考驗和最直接的方法,通常被認為是最穩定的。 + FetchSafer: 獲取前先建立本地資料庫 + FetchSmoother: 獲取前先建立本地檔案塊 + FetchTraditional: 從遠端獲取所有資料 + Title: 您希望如何獲取資料? + FetchRemoteConfig: + Applied: 已應用遠端配置。 + Buttons: + Cancel: 否,使用本地設定 + Fetch: 是,獲取並應用遠端設定 + Retry: 重試(建議) + SkipAndProceed: 跳過並繼續 + FailedMessage: 無法從遠端獲取配置。如果您是 Self-hosted LiveSync 新使用者,這可能是正常情況。否則,請檢查網路或伺服器設定。 + FailedTitle: 獲取遠端配置失敗 + MatchesLocal: 遠端配置與本地配置一致。未應用任何更改。 + Message: 是否獲取並應用遠端儲存的偏好設定到本裝置? + NotApplied: 未應用遠端配置。 + SettingsDiffered: 您的設定與伺服器略有不同。外掛程式已使用伺服器設定補充不相容的部分! + Title: 獲取遠端配置 + Log: + FetchEverythingCancelled: 使用者已取消獲取全部資料。 + FetchEverythingCompleted: 獲取全部資料操作已完成。Vault 檔案將逐步同步。 + RebuildEverythingCancelled: 使用者已取消重建全部資料。 + RebuildEverythingCompleted: 重建全部資料操作已完成。 + VaultInitialisationError: Vault 初始化時發生錯誤。 + VaultInitialisationProcessError: Vault 初始化流程中發生錯誤。 + ResumeProcessingPrompt: 是否恢復檔案和資料庫處理,並立即重新啟動 Obsidian? +Reduces storage space by discarding all non-latest revisions. This requires the same amount of free space on the remote server and the local client.: 透過捨棄所有非最新版本來減少儲存空間占用。執行此操作時,遠端伺服器與本機用戶端都需要具備相同數量的可用空間。 +Reducing the frequency with which on-disk changes are reflected into the DB: 降低將磁碟上的更改反映到資料庫中的頻率 +Region: 區域 Remediation: 修復設定 Remediation Setting Changed: 修復設定已變更 Remote Database Tweak (In sunset): 遠端資料庫調校(即將淘汰) Remote Databases: 遠端資料庫 Remote name: 遠端名稱 +Remote server type: 遠端伺服器型別 +Remote Type: 遠端型別 Rename: 重新命名 +Replicator: + Dialogue: + Locked: + Action: + Dismiss: 取消以重新確認 + Fetch: 重置此裝置上的同步 + Unlock: 解鎖遠端資料庫 + Message: + _value: > + Remote database is locked. This is due to a rebuild on one of the + terminals. + + The device is therefore asked to withhold the connection to avoid + database corruption. + + + There are three options that we can do: + + + - %{Replicator.Dialogue.Locked.Action.Fetch} + 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. + - %{Replicator.Dialogue.Locked.Action.Unlock} + 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. + - %{Replicator.Dialogue.Locked.Action.Dismiss} + This will cancel the operation. And we will asked again on next request. + Fetch: 已安排全部獲取操作。外掛將重新啟動以執行此操作。 + Unlocked: 遠端資料庫已解鎖。請重試該操作。 + Title: 已鎖定 + Message: + Cleaned: 資料庫正在清理中,同步已被取消 + InitialiseFatalError: 沒有可用的同步器,這是致命錯誤。 + Pending: 部分檔案事件待處理。同步已被取消。 + SomeModuleFailed: 由於某些模組失敗,同步已被取消 + 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: 重新執行嚮導 Resend: 重新傳送 Resend all chunks to the remote.: 將所有 chunks 重新傳送到遠端。 Reset: 重設 @@ -227,31 +980,54 @@ Reset all: 全部重設 Reset all journal counter: 重設所有日誌計數器 Reset journal received history: 重設日誌接收歷史 Reset journal sent history: 重設日誌傳送歷史 +Reset notification threshold and check the remote database usage: 重置通知閾值並檢查遠端資料庫使用情況 Reset received: 重設接收紀錄 Reset sent history: 重設傳送歷史 Reset Synchronisation information: 重設同步資訊 Reset Synchronisation on This Device: 重設此裝置上的同步 +Reset the remote storage size threshold and check the remote storage size again.: 重置遠端儲存大小閾值並再次檢查遠端儲存大小。 Resolve All: 全部處理 Resolve all conflicted files: 解決所有衝突檔案 Resolve All conflicted files by the newer one: 將所有衝突檔案統一為較新的版本 "Resolve all conflicted files by the newer one. Caution: This will overwrite the older one, and cannot resurrect the overwritten one.": 將所有衝突檔案統一保留較新的版本。注意:這會覆寫較舊的版本,且被覆寫的內容無法復原。 Restart Now: 立即重新啟動 +Restarting Obsidian is strongly recommended. Until restart, some changes may not take effect, and display may be inconsistent. Are you sure to restart now?: 強烈建議重新啟動 Obsidian。在重新啟動之前,部分變更可能尚未生效,顯示也可能不一致。你確定要現在重新啟動嗎? Restore or reconstruct local database from remote.: 從遠端還原或重建本機資料庫。 +Run Doctor: 立即診斷 +S3/MinIO/R2 Object Storage: S3/MinIO/R2 物件儲存 +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 a QR Code (Recommended for mobile): 掃描 QR Code(行動裝置推薦) +Scan changes on customization sync: 在自定義同步時掃描更改 +Scan customization automatically: 自動掃描自定義設定 +Scan customization before replicating.: "在複製前掃描自定義設定 " +Scan customization every 1 minute.: "每1分鐘掃描自定義設定 " +Scan customization periodically: 定期掃描自定義設定 +Scan for Broken files: 掃描損壞檔案 +Scan for hidden files before replication: 複製前掃描隱藏檔案 +Scan hidden files periodically: 定期掃描隱藏檔案 +Scan the QR code displayed on an active device using this device's camera.: 使用目前裝置的相機掃描另一台已在使用裝置上顯示的 QR Code。 Schedule and Restart: 排程後重新啟動 +Scram Switches: 緊急處置開關 Scram!: 緊急處置 +Seconds, 0 to disable: 秒,0為禁用 +Seconds. Saving to the local database will be delayed until this value after we stop typing or saving.: "秒。在我們停止輸入或儲存後,儲存到本地資料庫將延遲此值 " +Secret Key: 金鑰 Select the database adapter to use.: 選擇要使用的資料庫適配器。 +Selector: 選擇器 Send: 傳送 Send chunks: 傳送 chunks +Server URI: 伺服器 URI Setting: GenerateKeyPair: - Desc: |- - 我們已產生新的金鑰對! + Desc: |+ + 金鑰對已生成! - 注意:此金鑰對之後將不會再次顯示。請務必妥善保存;若遺失,必須重新產生新的金鑰對。 - 注意 2:公鑰採用 spki 格式,私鑰採用 pkcs8 格式。為了方便複製,公鑰中的換行會轉換為 `\n`。 - 注意 3:公鑰應設定在遠端資料庫中,私鑰則應設定在本機裝置上。 + 注意:此金鑰對不會再次顯示。請妥善儲存。如果丟失,需要生成新的金鑰對。 + 注意 2:公鑰為 spki 格式,私鑰為 pkcs8 格式。為了方便起見,公鑰中的換行符已轉換為 `\n`。 + 注意 3:公鑰應在遠端資料庫中配置,私鑰應在本地裝置中配置。 - >[!僅供本人查看]- + >[!僅供您檢視]- >
> > ### 公鑰 @@ -266,7 +1042,7 @@ Setting: > >
- >[!便於整段複製]- + >[!用於複製兩者]- > >
> @@ -276,168 +1052,750 @@ Setting: > ``` > >
- Title: 已產生新的金鑰對! -Show full banner: 顯示完整橫幅 -Show icon only: 僅顯示圖示 -Show status icon instead of file warnings banner: 以狀態圖示取代檔案警告橫幅 -Switch to IDB: 切換至 IDB -Switch to IndexedDB: 切換至 IndexedDB -Synchronising files: 同步中的檔案 -Syncing: 同步中 -Target patterns: 目標模式 -This will recreate chunks for all files. If there were missing chunks, this may fix the errors.: 這會為所有檔案重新建立 chunks。若先前有遺失的 chunks,這可能修復相關錯誤。 -Verify all: 全部驗證 -Verify and repair all files: 驗證並修復所有檔案 -Reduces storage space by discarding all non-latest revisions. This requires the same amount of free space on the remote server and the local client.: - 透過捨棄所有非最新版本來減少儲存空間占用。執行此操作時,遠端伺服器與本機用戶端都需要具備相同數量的可用空間。 -Run Doctor: 執行診斷 -Scan for Broken files: 掃描損壞檔案 -Prepare the 'report' to create an issue: 準備建立 Issue 用的「報告」 -Copy Report to clipboard: 將報告複製到剪貼簿 -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 報告,方便你自行診斷。你可以將產生的報告貼到任何慣用的試算表中查看。 -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.: 重設遠端儲存空間大小閾值,並再次檢查遠端儲存空間大小。 -Document History: 文件歷程 -File to view History: 要檢視歷程的檔案 -Pick a file to show history: 選擇要顯示歷程的檔案 -Recovery and Repair: 修復與修補 -Database -> Storage: 資料庫 -> 儲存空間 -Storage -> Database: 儲存空間 -> 資料庫 -Show history: 顯示歷程 -Restarting Obsidian is strongly recommended. Until restart, some changes may not take effect, and display may be inconsistent. Are you sure to restart now?: 強烈建議重新啟動 Obsidian。在重新啟動之前,部分變更可能尚未生效,顯示也可能不一致。你確定要現在重新啟動嗎? -The IndexedDB adapter often offers superior performance in certain scenarios, but it has been found to cause memory leaks when used with LiveSync mode. When using LiveSync mode, please use IDB adapter instead.: IndexedDB 適配器在某些情況下通常能提供較佳效能,但在 LiveSync 模式下已發現可能導致記憶體洩漏。使用 LiveSync 模式時,請改用 IDB 適配器。 -Scram Switches: 緊急處置開關 -Minimum interval for syncing: 同步最小間隔 -The minimum interval for automatic synchronisation on event.: 事件觸發自動同步的最小間隔。 -xxhash32 (Fast but less collision resistance): xxhash32(速度快,但抗碰撞能力較弱) -xxhash64 (Fastest): xxhash64(最快) -"Welcome to Self-hosted LiveSync": "歡迎使用 Self-hosted LiveSync" -"We will now guide you through a few questions to simplify the synchronisation setup.": "接下來我們會透過幾個問題,引導你更輕鬆地完成同步設定。" -"First, please select the option that best describes your current situation.": "首先,請選擇最符合你目前情況的選項。" -"I am setting this up for the first time": "我是第一次進行設定" -"(Select this if you are configuring this device as the first synchronisation device.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": "(如果你正在將此裝置設定為第一台同步裝置,請選擇此項。)此選項適合初次使用 LiveSync,並希望從頭開始設定的使用者。" -"I am adding a device to an existing synchronisation setup": "我要將裝置加入既有同步設定" -"(Select this if you are already using synchronisation on another computer or smartphone.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": "(如果你已經在另一台電腦或手機上使用同步,請選擇此項。)此選項適合將目前裝置加入既有 LiveSync 設定的使用者。" -"Yes, I want to set up a new synchronisation": "是的,我要設定新的同步" -"Yes, I want to add this device to my existing synchronisation": "是的,我要把這台裝置加入既有同步" -"No, please take me back": "不,返回上一步" -"Device Setup Method": "裝置設定方式" -"You are adding this device to an existing synchronisation setup.": "你正在將此裝置加入既有同步設定中。" -"Please select a method to import the settings from another device.": "請選擇一種從其他裝置匯入設定的方法。" -"Use a Setup URI (Recommended)": "使用 Setup URI(推薦)" -"Paste the Setup URI generated from one of your active devices.": "貼上從一台已在使用裝置上產生的 Setup URI。" -"Scan a QR Code (Recommended for mobile)": "掃描 QR Code(行動裝置推薦)" -"Scan the QR code displayed on an active device using this device's camera.": "使用目前裝置的相機掃描另一台已在使用裝置上顯示的 QR Code。" -"Enter the server information manually": "手動輸入伺服器資訊" -"Configure the same server information as your other devices again, manually, very advanced users only.": "手動重新輸入與其他裝置相同的伺服器資訊。僅適合進階使用者。" -"Proceed with Setup URI": "繼續使用 Setup URI" -"I know my server details, let me enter them": "我知道伺服器資訊,讓我手動輸入" -"Please select an option to proceed": "請選擇一個選項以繼續" -"Connection Method": "連線方式" -"We will now proceed with the server configuration.": "接下來將繼續進行伺服器設定。" -"How would you like to configure the connection to your server?": "你希望如何設定與伺服器的連線?" -"A Setup URI is a single string of text containing your server address and authentication details. Using a URI, if one was generated by your server installation script, provides a simple and secure configuration.": "Setup URI 是一段包含伺服器位址與驗證資訊的文字。如果伺服器安裝腳本已經產生 URI,使用它可以更簡單且更安全地完成設定。" -"This is an advanced option for users who do not have a URI or who wish to configure detailed settings.": "這是面向沒有 URI 或希望手動設定詳細參數的進階選項。" -"Enter Server Information": "輸入伺服器資訊" -"Please select the type of server to which you are connecting.": "請選擇你要連線的伺服器類型。" -"Continue to CouchDB setup": "繼續進行 CouchDB 設定" -"Continue to S3/MinIO/R2 setup": "繼續進行 S3/MinIO/R2 設定" -"Continue to Peer-to-Peer only setup": "繼續進行僅 Peer-to-Peer 設定" -"This is the most suitable synchronisation method for the design. All functions are available. You must have set up a CouchDB instance.": "這是最符合目前設計的同步方式,所有功能皆可使用。你需要事先部署好 CouchDB 實例。" -"S3/MinIO/R2 Object Storage": "S3/MinIO/R2 物件儲存" -"Synchronisation utilising journal files. You must have set up an S3/MinIO/R2 compatible object storage.": "透過日誌檔進行同步。你需要事先部署好相容 S3/MinIO/R2 的物件儲存服務。" -"Peer-to-Peer only": "僅 Peer-to-Peer" -"This feature enables direct synchronisation between devices. No server is required, but both devices must be online at the same time for synchronisation to occur, and some features may be limited. Internet connection is only required to signalling (detecting peers) and not for data transfer.": "此功能可在裝置之間直接同步,無需伺服器;但同步時兩台裝置必須同時在線,且部分功能可能受限。網際網路連線僅用於訊號交換(偵測對端),不用於資料傳輸。" + + Title: 新金鑰對已生成! + TroubleShooting: + _value: 故障排除 + Doctor: + _value: 設定診斷 + Desc: 檢測系統中不合理的設定。(與遷移期間邏輯相同) + ScanBrokenFiles: + _value: 掃描損壞或異常的檔案 + Desc: 掃描資料庫中未正確儲存的檔案。 +SettingTab: + Message: + AskRebuild: 您的更改需要從遠端資料庫獲取。是否繼續? +Setup URI dialog cancelled.: Setup URI 對話框已取消。 Setup: + Apply: + Buttons: + ApplyAndFetch: 應用並獲取 + ApplyAndMerge: 應用併合並 + ApplyAndRebuild: 應用並重建 + Cancel: 丟棄並取消 + OnlyApply: 僅應用 + Message: |- + 新配置已準備就緒。讓我們繼續應用它。 + 有幾種應用方式: + + - 應用並獲取 + 將此裝置配置為新客戶端。應用後從遠端伺服器同步。 + - 應用併合並 + 在已有檔案的裝置上配置。處理本地檔案並傳輸差異。可能會出現衝突。 + - 應用並重建 + 使用本地檔案重建遠端資料。通常在伺服器損壞或希望從頭開始時使用。 + 其他裝置將被鎖定,需要重新獲取。 + - 僅應用 + 僅應用配置。如果需要重建,可能會出現衝突。 + Title: 應用來自 ${method} 的新配置 + WarningRebuildRecommended: 注意:調整設定後,已確定需要重建;不建議僅匯入。 + Command: + CopySetupUri: 將設定複製為新的設定 URI + CopySetupUriFull: 將設定複製為新的設定 URI(完整) + CopySetupUriWithSync: 將設定複製為新的設定 URI(包含自訂同步) + OpenSetupUri: 使用已複製的設定 URI(原「開啟設定 URI」) + ShowSettingsQrCode: 以 QR 碼顯示設定 + Doctor: + Buttons: + No: "?" + Yes: "?" + Message: |- + Self-hosted LiveSync 的歷史已逐漸悠久,部分推薦設定已發生變化。 + + 現在是進行檢查的絕佳時機。 + + 是否執行診斷程式,檢查匯入的設定是否與最新狀態一致? + Title: 是否執行診斷程式? + EncryptSettingsPassphrase: 用於加密設定 URI 的密碼短語 + EncryptSettingsTitle: 加密您的設定 + FetchRemoteConf: + Buttons: + Fetch: 是,請獲取配置 + Skip: 不,請使用 URI 中的設定 + Message: |- + 如果我們已透過其他裝置同步過一次,遠端資料庫會儲存同步裝置之間合適的配置值。外掛希望獲取這些值以進行可靠的配置。 + + 但是,我們需要確認一件事:當前是否處於可以安全訪問網路並獲取設定的環境? + + 注意:大多數情況下這樣做是安全的,前提是您的遠端資料庫使用了 SSL 證書,且網路未受攻擊。 + Title: 是否從遠端資料庫獲取配置? + Log: + ProtocolHandlerRegistrationFailed: 註冊協定處理程式失敗。此功能在某些環境中可能無法運作。 + SetupUriCopiedToClipboard: 設定 URI 已複製到剪貼簿 + QRCode: |- + 已生成用於傳輸設定的二維碼。請使用手機或其他裝置掃描此二維碼。 + 注意:二維碼未加密,請謹慎開啟。 + + >[!僅供您檢視]- + >
${qr_image}
+ QRCodeTitle: 設定 QR 碼 RemoteE2EE: - Title: 端對端加密 + AdvancedTitle: 進階 + AlgorithmWarning: 變更加密演算法後,先前以其他演算法加密的資料將無法再存取。請確認所有裝置都設定為使用相同演算法,以維持對資料的存取能力。 + ButtonCancel: 取消 + ButtonProceed: 繼續 + DefaultAlgorithmDesc: 在大多數情況下,建議維持使用預設演算法(${algorithm})。只有當你現有的 Vault 是以不同格式加密時,才需要調整這項設定。 Guidance: 請設定你的端對端加密選項。 LabelEncrypt: 端對端加密 - PlaceholderPassphrase: 輸入你的密語 - StronglyRecommendedTitle: 強烈建議 - StronglyRecommendedLine1: 啟用端對端加密後,資料會先在你的裝置上完成加密,再傳送到遠端伺服器。這表示即使有人取得伺服器存取權,沒有密語也無法讀取你的資料。請務必記住你的密語,因為其他裝置在解密資料時也需要它。 - StronglyRecommendedLine2: 另外請注意,即使你目前使用的是 Peer-to-Peer 同步,日後若切換到其他方式並連線到遠端伺服器時,也會沿用這組設定。 - MultiDestinationWarning: 即使連線到多個同步目標,這項設定也必須保持一致。 + LabelEncryptionAlgorithm: 加密演算法 LabelObfuscateProperties: 混淆屬性 + MultiDestinationWarning: 即使連線到多個同步目標,這項設定也必須保持一致。 ObfuscatePropertiesDesc: 混淆屬性(例如檔案路徑、大小、建立時間與修改時間)可以額外增加一層安全保護,讓遠端伺服器上的檔案與資料夾結構及名稱更難被辨識。這有助於保護你的隱私,也讓未授權使用者更難推測你的資料資訊。 - AdvancedTitle: 進階 - LabelEncryptionAlgorithm: 加密演算法 - DefaultAlgorithmDesc: 在大多數情況下,建議維持使用預設演算法(${algorithm})。只有當你現有的 Vault 是以不同格式加密時,才需要調整這項設定。 - AlgorithmWarning: 變更加密演算法後,先前以其他演算法加密的資料將無法再存取。請確認所有裝置都設定為使用相同演算法,以維持對資料的存取能力。 PassphraseValidationLine1: 請注意,端對端加密的密語要到同步程序實際開始時才會進行驗證。這是為了保護你資料而設計的安全措施。 PassphraseValidationLine2: 因此,在手動設定伺服器資訊時請務必格外小心。如果輸入了錯誤的密語,伺服器上的資料將會損毀。請理解這是系統的預期行為。 - ButtonProceed: 繼續 - ButtonCancel: 取消 - UseSetupURI: - Title: 輸入 Setup URI - GuidanceLine1: 請輸入在伺服器安裝期間或其他裝置上產生的 Setup URI,以及 Vault 的密語。 - GuidanceLine2: 你可以在命令面板中執行「將設定複製為新的 Setup URI」命令來產生新的 Setup URI。 - LabelSetupURI: Setup URI - ValidInfo: Setup URI 有效,可以使用。 - InvalidInfo: Setup URI 無效,請檢查後再試一次。 - LabelPassphrase: Vault 密語 - PlaceholderPassphrase: 輸入 Vault 密語 - ErrorPassphraseRequired: 請輸入 Vault 的密語。 - ErrorFailedToParse: 無法解析 Setup URI,請檢查 URI 與密語。 - ButtonProceed: 測試設定並繼續 - ButtonCancel: 取消 + PlaceholderPassphrase: 輸入你的密語 + StronglyRecommendedLine1: 啟用端對端加密後,資料會先在你的裝置上完成加密,再傳送到遠端伺服器。這表示即使有人取得伺服器存取權,沒有密語也無法讀取你的資料。請務必記住你的密語,因為其他裝置在解密資料時也需要它。 + StronglyRecommendedLine2: 另外請注意,即使你目前使用的是 Peer-to-Peer 同步,日後若切換到其他方式並連線到遠端伺服器時,也會沿用這組設定。 + StronglyRecommendedTitle: 強烈建議 + Title: 端對端加密 ScanQRCode: - Title: 掃描 QR 碼 + ButtonClose: 關閉此對話框 Guidance: 請依照以下步驟,從現有裝置匯入設定。 Step1: 在這台裝置上,請保持此 Vault 開啟。 Step2: 在來源裝置上開啟 Obsidian。 Step3: 在來源裝置上,從命令面板執行「將設定顯示為 QR 碼」命令。 Step4: 在這台裝置上切換到相機 App,或使用 QR 碼掃描器掃描顯示出的 QR 碼。 - ButtonClose: 關閉此對話框 -"Please enable 'Compute revisions for chunks' in settings to use Garbage Collection.": 若要使用垃圾回收,請在設定中啟用「Compute revisions for chunks」。 -"Please disable 'Read chunks online' in settings to use Garbage Collection.": 若要使用垃圾回收,請在設定中停用「Read chunks online」。 -"Setup URI dialog cancelled.": Setup URI 對話框已取消。 -"Please select 'Cancel' explicitly to cancel this operation.": 若要取消此操作,請明確選擇「取消」。 -"Failed to connect to remote for compaction.": 無法連線到遠端資料庫以執行壓縮。 -"Failed to connect to remote for compaction. ${reason}": 無法連線到遠端資料庫以執行壓縮。${reason} -"Compaction in progress on remote database...": 正在遠端資料庫上執行壓縮... -"Compaction on remote database timed out.": 遠端資料庫壓縮逾時。 -"Compaction on remote database completed successfully.": 遠端資料庫壓縮已成功完成。 -"Compaction on remote database failed.": 遠端資料庫壓縮失敗。 -"Failed to start one-shot replication before Garbage Collection. Garbage Collection Cancelled.": 無法在垃圾回收前啟動一次性複寫。垃圾回收已取消。 -"Cancel Garbage Collection": 取消垃圾回收 -"No connected device information found. Cancelling Garbage Collection.": 找不到已連線裝置的資訊。正在取消垃圾回收。 + Title: 掃描 QR 碼 + SetupUri: 設定 URI + ShowQRCode: + _value: 使用QR碼 + Desc: 使用QR碼來傳遞配置 + UseSetupURI: + ButtonCancel: 取消 + ButtonProceed: 測試設定並繼續 + ErrorFailedToParse: 無法解析 Setup URI,請檢查 URI 與密語。 + ErrorPassphraseRequired: 請輸入 Vault 的密語。 + GuidanceLine1: 請輸入在伺服器安裝期間或其他裝置上產生的 Setup URI,以及 Vault 的密語。 + GuidanceLine2: 你可以在命令面板中執行「將設定複製為新的 Setup URI」命令來產生新的 Setup URI。 + InvalidInfo: Setup URI 無效,請檢查後再試一次。 + LabelPassphrase: Vault 密語 + LabelSetupURI: Setup URI + PlaceholderPassphrase: 輸入 Vault 密語 + Title: 輸入 Setup URI + ValidInfo: Setup URI 有效,可以使用。 +Should we keep folders that don't have any files inside?: 我們是否應該保留內部沒有任何檔案的資料夾? +Should we only check for conflicts when a file is opened?: 我們是否應該僅在檔案開啟時檢查衝突? +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?: 即使我們可以安全地自動合併,是否也應該為每一次合併提示您? +Show full banner: 顯示完整橫幅 +Show history: 顯示歷史 +Show icon only: 僅顯示圖示 +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.: "顯示詳細日誌。如果您報告問題,請啟用此選項 " +"Some devices have differing progress values (max: ${maxProgress}, min: ${minProgress}).\nThis may indicate that some devices have not completed synchronisation, which could lead to conflicts. Strongly recommend confirming that all devices are synchronised before proceeding.": |- + 某些裝置的進度值不同(最大:${maxProgress},最小:${minProgress})。 + 這可能表示某些裝置尚未完成同步,進而可能導致衝突。強烈建議在繼續之前先確認所有裝置都已同步。 +Starts synchronisation when a file is saved.: "當檔案儲存時啟動同步 " +Stop reflecting database changes to storage files.: "停止將資料庫更改反映到儲存檔案 " +Stop watching for file changes.: "停止監視檔案更改 " +Storage -> Database: 儲存空間 -> 資料庫 +Suppress notification of hidden files change: 暫停隱藏檔案更改的通知 +Suspend database reflecting: 暫停資料庫反映 +Suspend file watching: 暫停檔案監視 +Switch to IDB: 切換至 IDB +Switch to IndexedDB: 切換至 IndexedDB +Sync after merging file: 合併檔案後同步 +Sync automatically after merging files: 合併檔案後自動同步 +Sync Mode: 同步模式 +Sync on Editor Save: 編輯器儲存時同步 +Sync on File Open: 開啟檔案時同步 +Sync on Save: 儲存時同步 +Sync on Startup: 啟動時同步 +Synchronisation utilising journal files. You must have set up an S3/MinIO/R2 compatible object storage.: 透過日誌檔進行同步。你需要事先部署好相容 S3/MinIO/R2 的物件儲存服務。 +Synchronising files: 同步中的檔案 +Syncing: 同步中 +Target patterns: 目標模式 +Testing only - Resolve file conflicts by syncing newer copies of the file, this can overwrite modified files. Be Warned.: "僅供測試 - 透過同步檔案的較新副本來解決檔案衝突,這可能會覆蓋修改過的檔案。請注意 " +The delay for consecutive on-demand fetches: 連續按需獲取的延遲 "The following accepted nodes are missing its node information:\n- ${missingNodes}\n\nThis indicates that they have not been connected for some time or have been left on an older version.\nIt is preferable to update all devices if possible. If you have any devices that are no longer in use, you can clear all accepted nodes by locking the remote once.": |- 以下已接受節點缺少節點資訊: - ${missingNodes} 這表示它們已有一段時間未連線,或仍停留在較舊版本。 如有可能,建議先更新所有裝置。如果有已不再使用的裝置,可以先鎖定一次遠端端以清除全部已接受節點。 -"Ignore and Proceed": 忽略並繼續 -"Node Information Missing": 節點資訊缺失 -"Garbage Collection cancelled by user.": 使用者已取消垃圾回收。 -"Proceeding with Garbage Collection, ignoring missing nodes.": 正在繼續執行垃圾回收,並忽略缺失節點。 -"Proceed Garbage Collection": 繼續執行垃圾回收 -"> [!INFO]- The connected devices have been detected as follows:\n${devices}": |- - > [!INFO]- 已偵測到以下已連線裝置: - ${devices} -"Device": 裝置 -"Node ID": 節點 ID -"Obsidian version": Obsidian 版本 -"Plug-in version": 外掛版本 -"Progress": 進度 -"Some devices have differing progress values (max: ${maxProgress}, min: ${minProgress}).\nThis may indicate that some devices have not completed synchronisation, which could lead to conflicts. Strongly recommend confirming that all devices are synchronised before proceeding.": |- - 某些裝置的進度值不同(最大:${maxProgress},最小:${minProgress})。 - 這可能表示某些裝置尚未完成同步,進而可能導致衝突。強烈建議在繼續之前先確認所有裝置都已同步。 -"All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.": 所有裝置的進度值均相同(${progress})。看起來你的裝置已同步,可以繼續執行垃圾回收。 -"Garbage Collection Confirmation": 垃圾回收確認 -"Proceeding with Garbage Collection.": 正在執行垃圾回收。 -"Garbage Collection: Scanned ${scanned} / ~${docCount}": |- - 垃圾回收:已掃描 ${scanned} / ~${docCount} -"Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": |- - 垃圾回收:掃描完成。總 chunks:${totalChunks},已使用 chunks:${usedChunks} -"Garbage Collection: Found ${unusedChunks} unused chunks to delete.": |- - 垃圾回收:找到 ${unusedChunks} 個未使用的 chunks 可刪除。 -"Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.": |- - 垃圾回收完成。已刪除 chunks:${deletedChunks} / ${totalChunks}。耗時:${seconds} 秒。 -"Failed to start replication after Garbage Collection.": 垃圾回收後無法啟動複寫。 +The Hash algorithm for chunk IDs: 塊 ID 的雜湊演算法(實驗性) +The IndexedDB adapter often offers superior performance in certain scenarios, but it has been found to cause memory leaks when used with LiveSync mode. When using LiveSync mode, please use IDB adapter instead.: + IndexedDB 適配器在某些情況下通常能提供較佳效能,但在 LiveSync 模式下已發現可能導致記憶體洩漏。使用 LiveSync 模式時,請改用 + IDB 適配器。 +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 feature enables direct synchronisation between devices. No server is required, but both devices must be online at the same time for synchronisation to occur, and some features may be limited. Internet connection is only required to signalling (detecting peers) and not for data transfer.: 此功能可在裝置之間直接同步,無需伺服器;但同步時兩台裝置必須同時在線,且部分功能可能受限。網際網路連線僅用於訊號交換(偵測對端),不用於資料傳輸。 +This is an advanced option for users who do not have a URI or who wish to configure detailed settings.: 這是面向沒有 URI 或希望手動設定詳細參數的進階選項。 +This is the most suitable synchronisation method for the design. All functions are available. You must have set up a CouchDB instance.: 這是最符合目前設計的同步方式,所有功能皆可使用。你需要事先部署好 CouchDB 實例。 +This passphrase will not be copied to another device. It will be set to `Default` until you configure it again.: "此密碼不會複製到另一臺裝置。在您再次配置之前,它將設定為 `Default` " +This will recreate chunks for all files. If there were missing chunks, this may fix the errors.: 這會為所有檔案重新建立 chunks。若先前有遺失的 chunks,這可能修復相關錯誤。 +TweakMismatchResolve: + Action: + Dismiss: 關閉 + UseConfigured: 使用已配置的設定 + UseMine: 更新遠端資料庫設定 + UseMineAcceptIncompatible: 更新遠端資料庫設定但保持不變 + UseMineWithRebuild: 更新遠端資料庫設定並重新重建 + UseRemote: 將設定應用到此裝置 + UseRemoteAcceptIncompatible: 將設定應用到此裝置,但忽略不相容性 + UseRemoteWithRebuild: 將設定應用到此裝置並重新獲取 + Message: + Main: |- + + 遠端資料庫中的設定如下。這些值由其他裝置配置,這些裝置至少與此裝置同步過一次。 + + 如果要使用這些設定,請選擇 %{TweakMismatchResolve.Action.UseConfigured}。 + 如果要保留此裝置的設定,請選擇 %{TweakMismatchResolve.Action.Dismiss}。 + + ${table} + + >[!TIP] + > 如果要同步所有設定,請在此功能應用最小配置後使用 `透過 Markdown 同步設定`。 + + ${additionalMessage} + MainTweakResolving: |- + 您的配置與遠端伺服器上的配置不匹配。 + + 以下配置需要保持一致: + + ${table} + + 請告訴我們您的決定。 + + ${additionalMessage} + UseRemote: + WarningRebuildRecommended: |- + + >[!NOTICE] + > 部分更改相容,但可能消耗額外的儲存空間和傳輸流量。建議進行重建。但是,重建可能不會立即執行,將在未來的維護中實施。 + > ***請確保您有充足的時間並連線到穩定的網路!*** + WarningRebuildRequired: |- + + >[!WARNING] + > 部分遠端配置與此裝置的本地資料庫不相容。需要重建本地資料庫。 + > ***請確保您有充足的時間並連線到穩定的網路!*** + WarningIncompatibleRebuildRecommended: |- + + >[!NOTICE] + > 檢測到部分值存在差異,導致本地資料庫與遠端資料庫不相容。 + > 部分更改相容,但可能消耗額外的儲存空間和傳輸流量。建議進行重建。但是,重建可能不會立即執行,將在未來的維護中實施。 + > 如果要重建,可能需要幾分鐘或更長時間。**請確保現在是安全的操作時機。** + WarningIncompatibleRebuildRequired: |- + + >[!WARNING] + > 檢測到部分值存在差異,導致本地資料庫與遠端資料庫不相容。 + > 需要重建本地或遠端資料庫。兩者都需要幾分鐘或更長時間。**請確保現在是安全的操作時機。** + Table: + _value: |+ + | 值名稱 | 此裝置 | 遠端 | + |: --- |: ---- :|: ---- :| + ${rows} + + Row: "| ${name} | ${self} | ${remote} |" + Title: + _value: 檢測到配置不匹配 + TweakResolving: 檢測到配置不匹配 + UseRemoteConfig: 使用遠端配置 +Ui: + Bucket: + Guidance: 請在下方輸入連線到 S3/MinIO/R2 相容物件儲存服務所需的詳細資訊。 + Common: + Signal: + Caution: 注意 + Danger: 危險 + Notice: 提示 + Warning: 警告 + ConflictResolver: + FileToResolve: 待解決的檔案 + CouchDB: + Guidance: 請在下方輸入 CouchDB 伺服器資訊。 + History: + FileToView: 待檢視的檔案 + P2P: + Guidance: 請在下方輸入點對點同步資訊。 + RemoteE2EE: + AdvancedTitle: 高階 + AlgorithmWarning: 更改加密演算法將導致無法訪問之前使用不同演算法加密的任何資料。 + ButtonCancel: 取消 + ButtonProceed: 繼續 + DefaultAlgorithmDesc: 在大多數情況下,您應使用預設演算法。 + Guidance: 請配置您的端到端加密設定。 + LabelEncrypt: 端到端加密 + LabelEncryptionAlgorithm: 加密演算法 + LabelObfuscateProperties: 混淆屬性 + ManualWarning: 請注意,端到端加密密碼直到同步過程實際開始時才會被驗證。這是為保護您的資料而設計的安全措施。 + MultiDestinationWarning: 連線到多個同步目標時,此設定必須保持一致。 + ObfuscatePropertiesDesc: 混淆屬性透過使遠端伺服器上的檔案和資料夾結構及名稱更難以識別,從而增加了一層額外的安全保障。 + PassphraseValidationLine1: 請注意,端到端加密密碼直到同步過程實際開始時才會被驗證。 + PassphraseValidationLine2: 因此,我們要求您在手動配置伺服器資訊時格外謹慎。 + PlaceholderPassphrase: 請輸入您的密碼 + StronglyRecommended: 啟用端到端加密可確保您的資料在傳送到遠端伺服器之前已在裝置上加密。這意味著即使有人獲得伺服器訪問許可權,沒有密碼也無法讀取您的資料。 + StronglyRecommendedLine1: 啟用端到端加密可確保您的資料在傳送到遠端伺服器之前已在裝置上加密。 + StronglyRecommendedLine2: 另外請注意,如果您正在使用點對點同步,將來切換到其他方式並連線到遠端伺服器時將使用此配置。 + StronglyRecommendedTitle: 強烈推薦 + Title: 端到端加密 + WarningSameSetting: 連線到多個同步目標時,此設定必須保持一致。 + ScanQRCode: + ButtonClose: 關閉此對話方塊 + Guidance: 請按照以下步驟從現有裝置匯入設定。 + Instruction: 請按照以下步驟從現有裝置匯入設定。 + Step1: 在此裝置上,請保持此 Vault 處於開啟狀態。 + Step2: 在源裝置上開啟 Obsidian。 + Step3: 在源裝置上,從命令面板執行"將設定顯示為二維碼"命令。 + Step4: 在此裝置上,切換到相機應用或使用二維碼掃描器掃描顯示的二維碼。 + Title: 掃描二維碼 + Settings: + Advanced: + LocalDatabaseTweak: 本機資料庫調整 + MemoryCache: 記憶體快取 + TransferTweak: 傳輸調整 + Common: + Analyse: 分析 + Back: 返回 + Check: 檢查 + Configure: 配置 + Delete: 刪除 + Lock: 鎖定 + Open: 開啟 + Perform: 執行 + ResetAll: 全部重置 + ResolveAll: 全部解決 + Send: 傳送 + VerifyAll: 全部驗證 + CustomizationSync: + OpenDesc: 開啟此對話框 + Panel: 自訂同步 + WarnChangeDeviceName: 更改裝置名稱警告 + WarnSetDeviceName: 設定裝置名稱警告 + Hatch: + AnalyseDatabaseUsage: 分析資料庫使用情況 + AnalyseDatabaseUsageDesc: 分析資料庫使用情況,並產生 TSV 報告供你自行診斷。你可以將產生的報告貼到任何試算表工具中查看。 + BackToNonConfigured: 返回未設定狀態 + ConvertNonObfuscated: 檢查並轉換未進行路徑混淆的檔案 + ConvertNonObfuscatedDesc: 檢查本機資料庫中未以路徑混淆方式儲存的檔案,並在需要時轉換為正確格式。 + CopyIssueReport: 將報告複製到剪貼簿 + DatabaseLabel: 資料庫:${details} + DatabaseToStorage: 資料庫 -> 儲存 + DeleteCustomizationSyncData: 刪除所有自訂同步資料 + GeneratedReport: 生成的報告 + Missing: 缺失 + ModifiedSize: 修改大小 + ModifiedSizeActual: 實際修改大小 + PrepareIssueReport: 準備用於建立 Issue 的報告 + RecoveryAndRepair: 復原與修復 + RecreateAll: 全部重建 + RecreateMissingChunks: 為所有檔案重新建立遺失的資料區塊 + RecreateMissingChunksDesc: 此操作會為所有檔案重新建立資料區塊。如果有遺失的資料區塊,可能會修復相關錯誤。 + ResetPanel: 重置 + ResetRemoteUsage: 重置通知閾值並檢查遠端資料庫使用情況 + ResetRemoteUsageDesc: 重置遠端儲存空間大小閾值,並再次檢查遠端儲存空間大小。 + ResolveAllConflictedFiles: 使用較新的版本解決所有衝突檔案 + ResolveAllConflictedFilesDesc: 使用較新的版本解決所有衝突檔案。注意:此操作會覆蓋較舊版本,且無法恢復被覆蓋的內容。 + RunDoctor: 執行診斷 + ScanBrokenFiles: 掃描損壞檔案 + ScramSwitches: 緊急開關 + ShowHistory: 顯示歷史 + StorageLabel: 儲存:${details} + StorageToDatabase: 儲存 -> 資料庫 + VerifyAndRepairAllFiles: 驗證並修復所有檔案 + VerifyAndRepairAllFilesDesc: 比較本機資料庫與儲存空間中的檔案內容。如果內容不一致,系統會詢問要保留哪一份。 + Maintenance: + Cleanup: 執行清理 + CleanupDesc: 捨棄所有非最新修訂版本,以減少儲存空間占用。此操作需要遠端伺服器與本機用戶端都有同等大小的可用空間。 + DeleteLocalDatabase: 刪除本機資料庫以重置或解除安裝 Self-hosted LiveSync + EmergencyRestart: 緊急重新啟動 + EmergencyRestartDesc: 停用所有同步並重新啟動。 + FreshStartWipe: 全新開始清除 + FreshStartWipeDesc: 刪除遠端伺服器上的所有資料。 + GarbageCollection: 垃圾回收 V3(測試版) + GarbageCollectionAction: 執行垃圾回收 + GarbageCollectionDesc: 執行垃圾回收以移除未使用的資料區塊並減少資料庫大小。 + LockServer: 鎖定伺服器 + LockServerDesc: 鎖定遠端伺服器,防止與其他裝置繼續同步。 + OverwriteRemote: 覆寫遠端 + OverwriteRemoteDesc: 使用本機資料庫與密碼短語覆寫遠端資料。 + OverwriteServerData: 用此裝置的檔案覆寫伺服器資料 + OverwriteServerDataDesc: 使用此裝置上的檔案重建本機與遠端資料庫。 + PurgeAllJournalCounter: 清除全部日誌計數器 + PurgeAllJournalCounterDesc: 清除所有下載與上傳快取。 + RebuildingOperations: 重建操作(僅限遠端) + Resend: 重新傳送 + ResendDesc: 將所有資料區塊重新傳送到遠端。 + Reset: 重置 + ResetAllJournalCounter: 重置全部日誌計數器 + ResetAllJournalCounterDesc: 初始化全部日誌歷史。下次同步時,所有項目都會重新接收並重新傳送。 + ResetJournalReceived: 重置日誌接收歷史 + ResetJournalReceivedDesc: 初始化日誌接收歷史。下次同步時,除了此裝置傳送的項目外,其餘項目都會重新下載。 + ResetJournalSent: 重置日誌傳送歷史 + ResetJournalSentDesc: 初始化日誌傳送歷史。下次同步時,除了此裝置已接收的項目外,其餘項目都會重新傳送。 + ResetLocalSyncInfo: 重置同步資訊 + ResetLocalSyncInfoDesc: 從遠端還原或重建本機資料庫。 + ResetReceived: 重置已接收 + ResetSentHistory: 重置已傳送歷史 + ResetThisDevice: 重置此裝置上的同步狀態 + ScheduleAndRestart: 定時並重啟 + Scram: 緊急處理 + SendChunks: 傳送資料塊 + Syncing: 同步 + WarningLockedReadyAction: 警告已鎖定準備操作 + WarningLockedReadyText: 警告已鎖定準備文字 + WarningLockedResolveAction: 警告已鎖定解決操作 + WarningLockedResolveText: 警告已鎖定解決文字 + WriteRedFlagAndRestart: 標記並重啟 + Patches: + CompatibilityConflict: 相容性(衝突行為) + CompatibilityDatabase: 相容性(資料庫結構) + CompatibilityInternalApi: 相容性(內部 API 使用) + CompatibilityMetadata: 相容性(中繼資料) + CompatibilityRemote: 相容性(遠端資料庫) + CompatibilityTrouble: 相容性(已處理問題) + CurrentAdapter: 目前介面卡:${adapter} + DatabaseAdapter: 資料庫配接器 + DatabaseAdapterDesc: 選擇要使用的資料庫配接器。 + EdgeCaseBehaviour: 邊界情況處理(行為) + EdgeCaseDatabase: 邊界情況處理(資料庫) + EdgeCaseProcessing: 邊界情況處理(處理流程) + IndexedDbWarning: IndexedDB 警告 + MigratingToIdb: 正在遷移到 IDB + MigratingToIndexedDb: 正在遷移到 IndexedDB + MigrationIdbCompleted: IDB 遷移完成 + MigrationIdbCompletedFollowUp: IDB 遷移完成後續操作 + MigrationIndexedDbCompleted: IndexedDB 遷移完成 + MigrationIndexedDbCompletedFollowUp: IndexedDB 遷移完成後續操作 + MigrationWarning: 遷移警告 + OperationToIdb: 操作遷移到 IDB + OperationToIndexedDb: 操作遷移到 IndexedDB + Remediation: 修正 + RemediationChanged: 修復已更改 + RemediationNoLimit: 修復無限制 + RemediationRestarting: 修復正在重啟 + RemediationRestartLater: 修復稍後重啟 + RemediationRestartMessage: 修復重啟訊息 + RemediationRestartNow: 修復立即重啟 + RemediationSuffixChanged: 修復字尾已更改 + RemediationWithValue: 值:${date}(${timestamp}) + RemoteDatabaseSunset: 遠端資料庫調整(即將棄用) + SwitchToIDB: 切換到 IDB + SwitchToIndexedDb: 切換到 IndexedDB + PowerUsers: + ConfigurationEncryption: 設定加密 + ConnectionTweak: CouchDB 連線調整 + ConnectionTweakDesc: 連線調優描述 + Default: 預設 + Developer: 開發者 + EncryptSensitiveConfig: 加密敏感設定項目 + PromptPassphraseEveryLaunch: 每次啟動時詢問密碼 + UseCustomPassphrase: 使用自定義密碼 + Remote: + Activate: 啟用 + ActiveSuffix: 活動字尾 + AddConnection: 新增連線 + AddRemoteDefaultName: 新增遠端預設名稱 + ConfigureAndChangeRemote: 配置並更改遠端 + ConfigureE2EE: 設定端對端加密 + ConfigureRemote: 設定遠端 + DeleteRemoteConfirm: 刪除遠端設定「${name}」? + DeleteRemoteTitle: 刪除遠端標題 + DisplayName: 顯示名稱 + DuplicateRemote: 複製遠端 + DuplicateRemoteSuffix: 複製遠端字尾 + E2EEConfiguration: 端對端加密設定 + Export: 匯出 + FetchRemoteSettings: 獲取遠端設定 + ImportConnection: 匯入連線 + ImportConnectionPrompt: 匯入連線提示 + ImportedCouchDb: 已匯入的 CouchDB + ImportedRemote: 已匯入的遠端 + MoreActions: 更多操作 + PeerToPeerPanel: 點對點同步 + RemoteConfigurationPrefix: 遠端配置字首 + RemoteDatabases: 遠端資料庫 + RemoteName: 遠端名稱 + RemoteNameCouchDb: 遠端名稱 CouchDB + RemoteNameP2P: 遠端名稱 P2P + RemoteNameS3: 遠端名稱 S3 + Rename: 重新命名 + Selector: + AddDefaultPatterns: 新增預設模式 + CrossPlatform: 跨平臺 + Default: 預設 + HiddenFiles: 隱藏檔案 + IgnorePatterns: 忽略模式 + NonSynchronisingFiles: 不同步檔案 + NonSynchronisingFilesDesc: (RegExp)如果設定此項,則本機和遠端中符合規則的檔案變更會被略過。 + NormalFiles: 一般檔案 + OverwritePatterns: 覆寫模式 + OverwritePatternsDesc: 符合後將覆寫而非合併的檔案模式 + SynchronisingFiles: 同步檔案 + SynchronisingFilesDesc: (RegExp)留空則同步所有檔案。可設定正規表示式篩選器以限制同步檔案。 + TargetPatterns: 目標模式 + TargetPatternsDesc: 用於符合需要同步檔案的模式 + Setup: + RerunWizardButton: 重新執行嚮導按鈕 + RerunWizardDesc: 重新執行引導精靈,再次設定 Self-hosted LiveSync。 + RerunWizardName: 重新執行引導精靈 + SyncSettings: + Fetch: 獲取 + Merge: 合併 + Overwrite: 覆蓋 + SetupWizard: + Bucket: + AccessKeyId: 存取金鑰 ID + BucketName: 儲存桶名稱 + EndpointUrl: 端點 URL + FolderPrefix: 資料夾前綴 + FolderPrefixDesc: 如果你想把資料儲存在儲存桶內的特定資料夾,可以在這裡指定資料夾前綴。否則留空,資料會儲存在儲存桶根目錄。 + InternalApiDesc: 如果無法避免 CORS 問題,可以嘗試此選項。它會使用 Obsidian 的內部 API 與 S3 伺服器通訊。不符合 Web + 標準,但可以運作。請注意,未來 Obsidian 版本可能會破壞此方式。 + PlaceholderAccessKeyId: 輸入存取金鑰 ID + PlaceholderBucketName: 輸入儲存桶名稱 + PlaceholderFolderPrefix: 輸入資料夾前綴(可選) + PlaceholderRegion: 輸入區域(例如 us-east-1,R2 可用 auto) + PlaceholderSecretAccessKey: 輸入秘密存取金鑰 + Region: 區域 + SecretAccessKey: 秘密存取金鑰 + Title: S3/MinIO/R2 配置 + UseInternalApi: 使用內部 API + UsePathStyleAccess: 使用路徑樣式存取 + Common: + AdvancedSettings: 高階設定 + Back: 返回 + Cancel: 取消 + CheckingConnection: 正在檢查連線,請稍候。 + ContinueAnyway: 仍然繼續 + CustomHeaders: 自訂請求標頭 + ErrorConnectionTest: 連線測試時發生錯誤:${error} + ErrorConnectServer: 無法連線到伺服器。請檢查設定。 + ErrorConnectServerDetail: 無法連線到伺服器:${error} + ErrorCreateReplicator: 無法建立同步實例。 + ExperimentalSettings: 實驗性設定 + HttpsOnlyMobile: 在 Obsidian 移動端只能使用安全(HTTPS)連線。 + ProceedSelectOption: 請選擇一個選項 + CouchDB: + DatabaseName: 資料庫名稱 + DatabaseNameDesc: 資料庫名稱不能使用大寫字母、空格或特殊字元,也不能以下劃線(_)開頭。 + InternalApiDesc: 如果無法避免 CORS 問題,可以嘗試此選項。它會使用 Obsidian 的內部 API 與 CouchDB + 伺服器通訊。不符合 Web 標準,但可以運作。請注意,未來 Obsidian 版本可能會破壞此方式。 + JwtAlgorithm: JWT 算法 + JwtExpirationDuration: JWT 过期时间(分钟) + JwtKey: JWT 密钥 + JwtKeyDesc: HS256/HS512 算法请提供共享密钥。ES256/ES512 算法请提供 pkcs8 PEM 格式私钥。 + JwtKeyId: JWT Key ID(kid) + JwtSubject: JWT Subject(sub) + JwtWarning: JWT(JSON Web Token)认证允许你使用令牌安全地连接 CouchDB 服务器。请确保 CouchDB 已配置为接受 + JWT,并且提供的密钥和设置与服务器配置匹配。此功能尚未经过非常充分的验证。 + Password: 密碼 + PlaceholderDatabaseName: 輸入資料庫名稱 + PlaceholderJwtKey: 输入 JWT 共享密钥或私钥 + PlaceholderJwtKeyId: 输入 JWT Key ID + PlaceholderJwtSubject: 输入 JWT Subject(CouchDB 用户名) + PlaceholderPassword: 輸入密碼 + PlaceholderUsername: 輸入使用者名稱 + Title: CouchDB 配置 + Url: 伺服器 URL + UseInternalApi: 使用内部 API + UseJwtAuthentication: 使用 JWT 认证 + Username: 使用者名稱 + CouchDBCheck: + DetectAndFix: 檢測並修復 CouchDB 問題 + Fix: 修復 + E2EE: + AlgorithmGuidance: 大多數情況下應使用預設算法(${algorithm})。只有在現有 Vault 使用不同格式加密時才需要變更此設定。 + AlgorithmWarning: 變更加密算法會導致無法存取以前用其他算法加密的資料。請確保所有裝置都設定為使用相同算法,以保持資料可存取。 + EncryptionAlgorithm: 加密算法 + Fetch: + BackupDone: 我已建立 Vault 備份。 + BackupQuestion: 繼續之前是否已建立備份? + BackupRecommendation: 建議您將 Vault 資料夾複製到安全位置。這將作為保障,以防出現大量衝突或意外同步到錯誤的目標。 + BackupSkipped: 我瞭解風險,將在沒有備份的情況下繼續。 + BackupUnable: 我無法建立 Vault 備份。 + BackupUnableNote: 如果您瞭解風險仍希望繼續,請選擇此項。 + BackupUnableWarning: 強烈建議在繼續之前建立備份。不備份繼續可能導致資料丟失。 + ConflictNote: 此外,如果伺服器資料中已存在衝突,它們將原樣同步到此裝置,您需要在本地解決它們。 + Guidance: 這將使用伺服器上的最新資料重建此裝置上的本地資料庫。此操作旨在解決同步不一致並恢復正常功能。 + ImportantBody: 如果此裝置上的 Vault 中有未同步的更改,重置後它們可能會與伺服器版本產生分歧。這可能導致大量檔案衝突。 + ImportantTitle: 重要提示 + PreventFetchConfig: 防止從伺服器獲取配置 + Proceed: 重置並恢復同步 + Title: 重置此裝置上的同步 + UnbalancedNote: 在此場景下,Self-hosted LiveSync 將為每個檔案重新建立後設資料,並會刻意生成衝突。如果檔案內容相同,這些衝突將自動解決。 + VaultIdentical: 此 Vault 中的檔案與伺服器上的檔案幾乎相同。 + VaultIdenticalDesc: (例如,在另一臺電腦上恢復後立即、或從備份恢復後) + VaultIndependent: 此 Vault 為空,或僅包含伺服器上沒有的新檔案。 + VaultIndependentDesc: (例如,首次在新智慧手機上設定、從全新狀態開始) + VaultQuestion: 為了儘量減少新衝突的建立,請選擇最能描述當前 Vault 狀態的選項。應用將根據您的選擇以最合適的方式檢查您的檔案。 + VaultUnbalanced: 此 Vault 中的檔案與伺服器之間可能存在差異。 + VaultUnbalancedDesc: (例如,在離線狀態下編輯了大量檔案後) + Intro: + ExistingOption: 我已經設定好伺服器 + ExistingOptionDesc: 連線到現有的 LiveSync 伺服器 + Guidance: 歡迎!讓我們設定 LiveSync。您是 LiveSync 新用戶,還是已經設定遠端伺服器? + NewOption: 我是 LiveSync 新用戶 + NewOptionDesc: 首次設定 LiveSync + ProceedExisting: 連線到現有伺服器 + ProceedNew: 新建設定 + Question: 您的情況是? + Title: 設定精靈 + Log: + E2EEConfigurationCancelled: 已取消 E2EE 配置。 + ManualConfigurationCancelled: 已取消手動配置。 + NoSettingsChanges: 未偵測到設定更改。跳過應用向導中的設定。 + OnboardingCancelled: 使用者已取消引導流程。 + QrCodeDialogClosed: QR 碼對話方塊已關閉。 + QrCodeResult: QR 碼結果:${result} + SettingApplied: 設定已應用 + SettingsApplied: 向導中的設定已應用。 + SetupUriDialogCancelled: 已取消設定 URI 對話方塊。 + SetupUriDialogClosed: 設定 URI 對話方塊已關閉。 + UserCancelledApplyingSettings: 使用者已取消應用向導中的設定。 + OutroAskUserMode: + CompatibleOption: 使用相容模式 + CompatibleOptionDesc: 如果遠端是使用舊版 LiveSync 設定的,請使用此選項。某些功能可能受限。 + ExistingOption: 此裝置已有資料 + ExistingOptionDesc: 將本機檔案與遠端合併。如果此保險庫中已有筆記,請使用此選項。 + Guidance: 選擇此裝置在 LiveSync 中的使用方式。這會影響初始同步行為。 + NewOption: 設定為新裝置 + NewOptionDesc: 從新的保險庫開始。設定後將取得遠端檔案。 + ProceedApplySettings: 套用設定 + ProceedNext: 繼續 + Question: 選擇此裝置的模式: + Title: 您將如何使用此裝置? + OutroExisting: + Guidance: 設定已完成。重新啟動後將取得遠端資料。點擊下方按鈕重新啟動並開始同步。 + Proceed: 重新啟動並取得資料 + Question: 請點擊下方按鈕重新啟動並進入資料取得確認。 + Title: 設定完成:準備取得同步資料 + OutroNewUser: + GuidancePrimary: 您的 LiveSync 設定已完成。關閉此對話方塊後將套用設定。 + GuidanceWarning: 如果遠端保險庫中有資料,這將覆蓋現有檔案。請確保您使用的是空保險庫或已做好備份。 + Important: 重要提示: + Proceed: 套用並重新啟動 + Question: 準備好套用設定了嗎? + Title: 設定完成 + P2P: + AutoBroadcast: 自动广播更改 + AutoBroadcastDesc: 啟用自動廣播變更後,變更會自動廣播給已連線的對等裝置,無需手動操作。這會請求對等裝置取得此裝置的變更。 + AutoStart: 自动启动 P2P 连接 + AutoStartDesc: 啟用自動啟動 P2P 連線後,外掛啟動時會自動開始 P2P 連線。 + DevicePeerId: 裝置對等 ID + Enabled: 已啟用 + ErrorConnectPeers: 无法连接到其他对等设备:${error} + GenerateRandomId: 產生隨機 ID + GroupId: 组 ID + GroupPassphraseDesc: 組 ID 和密碼片語用於識別你的裝置群組。請確保所有要同步的裝置使用相同的組 ID 和密碼片語。組 ID + 不限於產生格式,你可以使用任意字串作為組 ID。 + NoPeersFound: 你的设置看起来正确,但没有找到其他对等设备。 + PlaceholderRelayUrl: 输入中继 URL + PlaceholderTurnCredential: 輸入 TURN 憑據 + PlaceholderTurnUsername: 輸入 TURN 使用者名稱 + PublicTurnWarning: 使用公共 TURN + 伺服器可能帶來隱私影響,因為你的資料會透過第三方伺服器中繼。即使資料已加密,對方仍可能知道你的存在。使用前請確保你信任 TURN + 伺服器提供者和網路管理員。如果可行,請考慮為自己的 FQDN 設定 TURN 伺服器。 + RelayUrl: 中继 URL + Title: P2P 配置 + TurnCredential: TURN 憑據 + TurnServerDesc: 只有在嚴格 NAT 或防火牆阻止直接 P2P 連線時,才需要 TURN 伺服器設定。大多數情況下可以留空。 + TurnServerUrls: TURN 伺服器 URL(逗號分隔) + TurnUsername: TURN 使用者名稱 + UseDefaultRelay: 使用 vrtmrz 的中繼伺服器 + Rebuild: + BackupBeforeProceeding: 當然,我們可以在繼續之前備份資料。 + BackupDone: 我已建立 Vault 備份。 + BackupQuestion: 繼續之前是否已建立備份? + BackupSkipped: 我瞭解風險,將在沒有備份的情況下繼續。 + BackupUnable: 我無法建立 Vault 備份。 + BackupUnableAdvice: 您應該建立一個新的同步目標並在那裡重建資料。之後,逐一將每臺裝置同步到使用新遠端的新 Vault。 + BackupWarning: 這是一個極其強大的操作。強烈建議您將 Vault 資料夾複製到安全位置。 + ConfirmDataLoss: 我理解其他手機或電腦上所做的所有更改可能會丟失。 + ConfirmIrreversible: 我理解此操作一旦執行不可逆轉。 + ConfirmSyncDisabled: 我理解其他裝置將無法再同步,需要重置同步資訊。 + ConfirmTitle: 請確認以下事項 + Guidance: 此過程將首先刪除伺服器上的所有現有同步資料。隨後,將使用此裝置上當前 Vault 的狀態作為唯一權威主副本,完全重建伺服器資料。 + PreventFetchConfig: 防止從伺服器獲取配置 + Proceed: 我理解,覆蓋伺服器 + ResetNotifyOtherDevices: 重置遠端後,其他裝置將收到通知。 + ResolveOnOtherDevices: 有一種方法可以在其他裝置上解決此問題。 + Title: 最終確認:用此裝置的檔案覆蓋伺服器資料 + WhenToUse: 僅在特殊情況下才應執行此操作,例如伺服器資料完全損壞、其他所有裝置上的更改不再需要、或資料庫大小與 Vault 大小相比異常龐大時。 + SelectExisting: + Guidance: 選擇如何連線到您現有的 LiveSync 伺服器。 + ManualOption: 手動設定 + ManualOptionDesc: 自行輸入伺服器詳細資料和憑證 + ProceedManual: 手動設定 + ProceedQr: 掃描 QR 碼 + ProceedSetupUri: 使用設定 URI + QrOption: 掃描 QR 碼 + QrOptionDesc: 從已設定的裝置掃描 QR 碼 + Question: 選擇連線方式: + SetupUriOption: 使用設定 URI + SetupUriOptionDesc: 從伺服器提供的設定 URI 匯入設定 + Title: 連線到現有伺服器 + SelectNew: + Guidance: 選擇您想如何設定新的 LiveSync 連線。 + ManualOption: 手動設定 + ManualOptionDesc: 自行輸入伺服器詳細資料和憑證 + ProceedManual: 手動設定 + ProceedSetupUri: 使用設定 URI + Question: 選擇設定方式: + SetupUriOption: 使用設定 URI + SetupUriOptionDesc: 從伺服器提供的設定 URI 匯入設定 + Title: 設定新連線 + SetupRemote: + BucketOption: LiveSync 儲存桶 + BucketOptionDesc: 使用 LiveSync 配套服務內建的儲存桶伺服器 + CouchDbOption: CouchDB + CouchDbOptionDesc: 使用您自己的 CouchDB 執行個體,完全控制同步伺服器 + Guidance: 選擇您要使用的遠端伺服器類型: + P2POption: 點對點(實驗性) + P2POptionDesc: 無需中央伺服器,直接在裝置之間同步 + ProceedBucket: 設定儲存桶 + ProceedCouchDb: 設定 CouchDB + ProceedP2P: 設定 P2P + Title: 設定遠端伺服器 + UseSetupURI: + ButtonCancel: 取消 + ButtonProceed: 測試設定並繼續 + ErrorFailedToParse: 解析設定 URI 失敗。 + ErrorPassphraseRequired: 密碼為必填項。 + Guidance: 請輸入在伺服器安裝期間或在其他裝置上生成的設定 URI,以及 Vault 密碼。 + InvalidInfo: 設定 URI 似乎無效。請檢查是否正確複製。 + Label: 設定 URI + LabelPassphrase: 密碼 + PlaceholderPassphrase: 請輸入您的密碼 + Title: 輸入設定 URI + ValidMessage: 設定 URI 有效,可以使用。 +Unique name between all synchronized devices. To edit this setting, please disable customization sync once.: 所有同步裝置之間的唯一名稱。要編輯此設定,請首先禁用自定義同步 +Use a Setup URI (Recommended): 使用 Setup URI(推薦) +Use Custom HTTP Handler: 使用自定義 HTTP 處理程式 +Use dynamic iteration count: 使用動態迭代次數 +Use Only Local Chunks: 僅使用本機區塊 +Use Request API to avoid `inevitable` CORS problem: 使用 Request API 避免「不可避免」的 CORS 問題 +Use Segmented-splitter: 使用分段分割器 +Use splitting-limit-capped chunk splitter: 使用分割限制上限的塊分割器 +Use the trash bin: 使用回收站 +Use timeouts instead of heartbeats: 使用超時而不是心跳 +username: 使用者名稱 +Username: 使用者名稱 +"V1: Legacy": V1:舊版 +"V2: Simple (Default)": V2:簡單(預設) +"V2.5: Lexical chunks": V2.5:詞法區塊 +"V3: Fine deduplication": V3:精細去重 +Verbose Log: 詳細日誌 +Verify all: 全部驗證 +Verify and repair all files: 驗證並修復所有檔案 +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.: "警告!這將嚴重影響效能。並且日誌不會以預設名稱同步。請小心處理日誌;它們通常包含您的敏感資訊 " +We will now guide you through a few questions to simplify the synchronisation setup.: 接下來我們會透過幾個問題,引導你更輕鬆地完成同步設定。 +We will now proceed with the server configuration.: 接下來將繼續進行伺服器設定。 +Welcome to Self-hosted LiveSync: 歡迎使用 Self-hosted LiveSync +When you save a file in the editor, start a sync automatically: 當您在編輯器中儲存檔案時,自動開始同步 +While enabled, it causes very performance impact but debugging replication testing and other features will be enabled. Please disable this if you have not read the source code. Requires restart of Obsidian.: 啟用後會對效能造成很大影響,但會啟用除錯、複製測試與其他功能。如果你沒有閱讀原始碼,請關閉此項。需要重新啟動 Obsidian。 +Write credentials in the file: 將憑據寫入檔案 +Write logs into the file: 將日誌寫入檔案 +xxhash32 (Fast but less collision resistance): xxhash32(速度快,但抗碰撞能力較弱) +xxhash64 (Fastest): xxhash64(最快) +xxhash64 is the current default.: 目前預設值為 xxhash64。 +Yes, I want to add this device to my existing synchronisation: 是的,我要把這台裝置加入既有同步 +Yes, I want to set up a new synchronisation: 是的,我要設定新的同步 +You are adding this device to an existing synchronisation setup.: 你正在將此裝置加入既有同步設定中。 +You can enable this setting to process the files with size mismatches, these files can be created by some APIs or integrations.: 可啟用此設定來處理大小不符的檔案;這些檔案可能由某些 API 或整合建立。 diff --git a/src/common/messagesYAML/zh.yaml b/src/common/messagesYAML/zh.yaml index f93e4bec..f3e98306 100644 --- a/src/common/messagesYAML/zh.yaml +++ b/src/common/messagesYAML/zh.yaml @@ -9,11 +9,20 @@ (Obsolete) Use an old adapter for compatibility: (已弃用)为兼容性使用旧适配器 (RegExp) Empty to sync all files. Set filter as a regular expression to limit synchronising files.: (正则表达式)留空表示同步所有文件。可设置正则表达式来限制需要同步的文件。 (RegExp) If this is set, any changes to local and remote files that match this will be skipped.: (正则表达式)如果已设置,则所有匹配此模式的本地和远端文件变更都会被跳过。 +(Select this if you are already using synchronisation on another computer or smartphone.) This option is suitable if you are new to LiveSync and want to set it up from scratch.: (如果你已经在另一台电脑或手机上使用同步,请选择此项。)此选项适合将当前设备加入现有 LiveSync 配置的用户。 +(Select this if you are configuring this device as the first synchronisation device.) This option is suitable if you are new to LiveSync and want to set it up from scratch.: (如果你正在将此设备配置为第一台同步设备,请选择此项。)此选项适合初次使用 LiveSync,并希望从头开始配置的用户。 +"> [!INFO]- The connected devices have been detected as follows:\n${devices}": |- + > [!INFO]- 已检测到以下已连接设备: + ${devices} +A Setup URI is a single string of text containing your server address and authentication details. Using a URI, if one was generated by your server installation script, provides a simple and secure configuration.: Setup URI 是一段包含服务器地址与认证信息的文本。如果服务器安装脚本已经生成了 URI,使用它可以更简单且更安全地完成配置。 Access Key: 访问密钥 Activate: 启用 Active Remote Configuration: 生效中的远程配置 +Active Remote Type: 活动远程类型 Add default patterns: 添加默认模式 Add new connection: 新增连接 +Advanced: 高级 +All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.: 所有设备的进度值均相同(${progress})。看起来你的设备已经同步,可以继续执行垃圾回收。 Always prompt merge conflicts: 始终提示合并冲突 Analyse: 立即分析 Analyse database usage: 分析数据库使用情况 @@ -21,6 +30,8 @@ Analyse database usage and generate a TSV report for diagnosis yourself. You can Apply Latest Change if Conflicting: 如果冲突则应用最新更改 Apply preset configuration: 应用预设配置 Ask a passphrase at every launch: 每次启动时询问密码短语 +Automatically broadcast changes to connected peers: 自动向已连接的对等设备广播更改 +Automatically start P2P connection on launch: 启动时自动开始 P2P 连接 Automatically Sync all files when opening Obsidian.: 打开 Obsidian 时自动同步所有文件 Back: 返回 Back to non-configured: 恢复为未配置状态 @@ -33,12 +44,18 @@ Before v0.17.16, we used an old adapter for the local database. Now the new adap 之前,我们使用旧适配器作为本地数据库。现在首选新适配器。但是,它需要重建本地数据库。请在有足够时间时禁用此开关。如果保持启用状态,并且在从远程数据库获取时,系统将要求您禁用此开关。 Bucket Name: 存储桶名称 Cancel: 取消 +Cancel Garbage Collection: 取消垃圾回收 Check: 立即检查 Check and convert non-path-obfuscated files: 检查并转换未进行路径混淆的文件 Check for documents that have not been converted to path-obfuscated IDs and convert them if necessary.: 检查尚未转换为路径混淆 ID 的文档,并在需要时将其转换。 +Chunk Splitter: 数据块分割器 cmdConfigSync: showCustomizationSync: 显示自定义同步 Comma separated `.gitignore, .dockerignore`: 用逗号分隔,例如 `.gitignore, .dockerignore` +Compaction in progress on remote database...: 正在远程数据库上执行压缩... +Compaction on remote database completed successfully.: 远程数据库压缩已成功完成。 +Compaction on remote database failed.: 远程数据库压缩失败。 +Compaction on remote database timed out.: 远程数据库压缩超时。 Compare the content of files between on local database and storage. If not matched, you will be asked which one you want to keep.: 比较本地数据库与存储中的文件内容;如果不一致,你将被询问要保留哪一份。 Compatibility (Conflict Behaviour): 兼容性(冲突行为) Compatibility (Database structure): 兼容性(数据库结构) @@ -52,11 +69,17 @@ Configure: 配置 Configure And Change Remote: 配置并切换远端 Configure E2EE: 配置 E2EE Configure Remote: 配置远端 +Configure the same server information as your other devices again, manually, very advanced users only.: 手动重新输入与你其他设备相同的服务器信息。仅适合高级用户。 +Connection Method: 连接方式 +Continue to CouchDB setup: 继续进行 CouchDB 设置 +Continue to Peer-to-Peer only setup: 继续进行仅 Peer-to-Peer 设置 +Continue to S3/MinIO/R2 setup: 继续进行 S3/MinIO/R2 设置 Copy: 复制 Copy Report to clipboard: 将报告复制到剪贴板 CouchDB Connection Tweak: CouchDB 连接调优 Cross-platform: 跨平台 "Current adapter: {adapter}": 当前适配器:{adapter} +Customization sync: 自定义同步 Customization Sync: 自定义同步 Customization Sync (Beta3): 自定义同步(Beta3) Data Compression: 数据压缩 @@ -75,7 +98,9 @@ Delete Remote Configuration: 删除远端配置 Delete remote configuration '{name}'?: 要删除远端配置“{name}”吗? desktop: 桌面设备 Developer: 开发者 +Device: 设备 Device name: 设备名称 +Device Setup Method: 设备设置方式 dialog: yourLanguageAvailable: _value: |- @@ -99,36 +124,37 @@ Doctor: DismissThisVersion: 拒绝,并且直到下个版本前不再询问 Fix: 修复 FixButNoRebuild: 修复但不重建 - No: 拒绝 + No: "?" Skip: 保持不变 - Yes: 确定 + Yes: "?" Dialogue: Main: |- - 您好!配置医生已根据您的要求启动(感谢您)!!遗憾的是,检测到部分配置存在潜在问题。请放心,我们将逐一解决这些问题。 + 你好!由于 ${activateReason},Config Doctor 已启动! + 遗憾的是,检测到某些配置可能存在问题。 + 请放心,我们会逐项解决。 - 提前告知您,我们将就以下事项进行确认: + 提前说明一下,我们将询问以下项目。 - 为数据块计算修订版本(此前行为) - 增强块大小 + ${issues} - 我们开始处理吗? + 现在开始吗? MainFix: |- ## ${name} - | Current | Ideal | + | 当前 | 理想 | |:---:|:---:| | ${current} | ${ideal} | - **Recommendation Level:** ${level} + **推荐级别:** ${level} - ### Why this has been detected? + ### 为什么会检测到这个问题? ${reason} ${note} - Fix this to the ideal value? + 是否修复为理想值? Title: Self-hosted LiveSync 配置诊断 TitleAlmostDone: 全部完成! TitleFix: 修复问题 ${current}/${total} @@ -144,55 +170,89 @@ Doctor: SomeSkipped: 我们将某些问题留给了以后处理。是否要在下次启动时再次询问您? 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. + REASON: 端到端加密(E2EE)现已更加强大和快速。此外,之前的 E2EE + 在重新进行的代码审查中被发现存在安全问题。应尽快应用此更新。对于给您带来的不便深表歉意。请注意,此设置不向前兼容。所有已同步的设备必须更新至 + v0.25.0 或更高版本。不需要重建,系统会自动从新的传输转换为新格式,但建议在可能的情况下进行重建。 +Document History: 文档历史 Duplicate: 复制 Duplicate remote: 复制远端配置 E2EE Configuration: E2EE 配置 Edge case addressing (Behaviour): 边缘情况处理(行为) Edge case addressing (Database): 边缘情况处理(数据库) Edge case addressing (Processing): 边缘情况处理(处理) +Effectively a directory. Should end with `/`. e.g., `vault-name/`.: 相当于目录。应以 `/` 结尾,例如 `vault-name/`。 Emergency restart: 紧急重启 Enable advanced features: 启用高级功能 +Enable advanced mode: 启用高级模式 Enable customization sync: 启用自定义同步 Enable Developers' Debug Tools.: "启用开发者调试工具 " Enable edge case treatment features: 启用边缘情况处理功能 +Enable forcePathStyle: 启用 forcePathStyle +Enable P2P Synchronization: 启用 P2P 同步 +Enable per-file customization sync: 启用按文件自定义同步 +Enable power user mode: 启用高级用户模式 Enable poweruser features: 启用高级用户功能 Enable this if your Object Storage doesn't support CORS: "如果您的对象存储不支持 CORS,请启用此功能 " 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.: "加密远程数据库中的内容。如果您使用插件的同步功能,则建议启用此功能 " Encrypting sensitive configuration items: 加密敏感配置项 +Encryption passphrase. 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.: "加密密码。如果更改,您应该用新的(加密的)文件覆盖服务器的数据库 " End-to-End Encryption: 端到端加密 Endpoint URL: 终端URL Enhance chunk size: 增大块大小 +Enter Server Information: 输入服务器信息 +Enter the server information manually: 手动输入服务器信息 Export: 导出 +Failed to connect to remote for compaction.: 无法连接到远程数据库以执行压缩。 +Failed to connect to remote for compaction. ${reason}: 无法连接到远程数据库以执行压缩。${reason} +Failed to start one-shot replication before Garbage Collection. Garbage Collection Cancelled.: 无法在垃圾回收前启动一次性复制。垃圾回收已取消。 +Failed to start replication after Garbage Collection.: 垃圾回收后无法启动复制。 Fetch: 获取 Fetch chunks on demand: 按需获取块 Fetch database with previous behaviour: 使用以前的行为获取数据库 Fetch remote settings: 获取远端设置 +File prefix on the bucket: 存储桶中的文件前缀 File to resolve conflict: 选择要解决冲突的文件 Filename: 文件名 +Files with modification times greater than this value (in seconds since the Unix epoch) will not have their events reflected. Set to 0 to disable this limit.: 修改时间大于此值(Unix 纪元以来的秒数)的文件,其事件不会被反映。设为 0 可禁用此限制。 +First, please select the option that best describes your current situation.: 首先,请选择最符合你当前情况的选项。 Flag and restart: 标记后重启 Forces the file to be synced when opened.: "打开文件时强制同步该文件 " Fresh Start Wipe: 全新开始清除 +Garbage Collection cancelled by user.: 用户已取消垃圾回收。 +"Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.": 垃圾回收完成。已删除 chunks:${deletedChunks} / ${totalChunks}。耗时:${seconds} 秒。 +Garbage Collection Confirmation: 垃圾回收确认 Garbage Collection V3 (Beta): 垃圾回收 V3(Beta) +"Garbage Collection: Found ${unusedChunks} unused chunks to delete.": 垃圾回收:发现 ${unusedChunks} 个未使用的 chunks 待删除。 +"Garbage Collection: Scanned ${scanned} / ~${docCount}": 垃圾回收:已扫描 ${scanned} / ~${docCount} +"Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": 垃圾回收:扫描完成。总 chunks:${totalChunks},已使用 chunks:${usedChunks} Handle files as Case-Sensitive: 将文件视为区分大小写 +Hatch: 工具箱 Hidden Files: 隐藏文件 Hide completely: 完全隐藏 -How to display network errors when the sync server is unreachable.: 当同步服务器不可达时,如何显示网络错误。 +Highlight diff: 高亮差异 +How to display network errors when the sync server is unreachable.: 同步服务器无法访问时,如何显示网络错误。 +How would you like to configure the connection to your server?: 你希望如何配置与服务器的连接? +I am adding a device to an existing synchronisation setup: 我要将设备加入现有同步配置 +I am setting this up for the first time: 我是第一次进行设置 +I know my server details, let me enter them: 我知道服务器详情,让我手动输入 If disabled(toggled), chunks will be split on the UI thread (Previous behaviour).: 如果禁用(切换),chunks 将在 UI 线程上分割(以前的行为) 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, changes will be automatically broadcasted to all connected peers. Notified peers will start fetching the changes.: 启用后,更改会自动广播给所有已连接的对等设备。收到通知的设备会开始获取这些更改。 If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker.: 如果启用,数据块将被分割成不超过 100 项。但是,去重效果会稍弱 +If enabled, efficient per-file customization sync will be used. A minor migration is required when enabling this feature, and all devices must be updated to v0.23.18. Enabling this feature will result in losing compatibility with older versions.: 启用后,将使用更高效的按文件自定义同步。启用此功能时需要一次小迁移,且所有设备都必须更新到 v0.23.18。启用后将失去与旧版本的兼容性。 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 forcePathStyle option will be used for bucket operations.: 启用后,存储桶操作将使用 forcePathStyle 选项。 If enabled, the notification of hidden files change will be suppressed.: 如果启用,将不再通知隐藏文件被更改 +If enabled, the P2P connection will be automatically started when the application launches.: 启用后,应用启动时会自动开始 P2P 连接。 +If enabled, the plugin will not attempt to connect to the remote database even if the chunk was not found locally.: 启用后,即使本地找不到该块,插件也不会尝试连接远程数据库。 +If enabled, the request API will be used to avoid `inevitable` CORS problems. This is a workaround and may not work in all cases. PLEASE READ THE DOCUMENTATION BEFORE USING THIS OPTION. This is a less-secure option.: + 启用后,将使用 request API 避免“不可避免”的 CORS + 问题。这是一个变通方案,并不一定适用于所有情况。使用此选项前请务必阅读文档。这是安全性较低的选项。 +If this enabled, all chunks will be stored with the revision made from its content.: 启用后,所有数据块都会使用由其内容生成的修订版本存储。 If this enabled, all chunks will be stored with the revision made from its content. (Previous behaviour): 如果启用,所有 chunks 将使用根据其内容生成的修订版本存储(以前的行为) 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.: 如果启用此功能,数据块将被分割成具有语义意义的段落。并非所有平台都支持此功能 @@ -200,6 +260,7 @@ If this is set, changes to local files which are matched by the ignore files wil 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.: 如果启用此选项,PouchDB 将保持连接打开 60 秒,如果在此时间内没有更改到达,则关闭并重新打开套接字,而不是无限期保持打开。当代理限制请求持续时间时有用,但可能会增加资源使用ß +Ignore and Proceed: 忽略并继续 Ignore files: 忽略文件 Ignore patterns: 忽略模式 Import connection: 导入连接 @@ -208,15 +269,15 @@ Initialise all journal history, On the next sync, every item will be received an Interval (sec): 间隔(秒) K: exp: 实验性 - long_p2p_sync: "%{title_p2p_sync} (%{exp})" - P2P: "%{Peer}-to-%{Peer}" - Peer: Peer + long_p2p_sync: "%{title_p2p_sync}" + P2P: "%{Peer}-对-%{Peer}" + Peer: 节点 ScanCustomization: 扫描自定义 - short_p2p_sync: P2P同步(%{exp}) + short_p2p_sync: P2P Sync title_p2p_sync: Peer-to-Peer同步 Keep empty folder: 保留空文件夹 -lang_def: Default -lang-de: Deutsche +lang_def: 默认 +lang-de: Deutsch lang-def: "%{lang_def}" lang-es: Español lang-fr: Français @@ -267,11 +328,15 @@ logPane: pause: 暂停 title: Self-hosted LiveSync 日志 wrap: 自动换行 +Maintenance: 维护 Maximum delay for batch database updating: 批量数据库更新的最大延迟 +Maximum file modification time for reflected file events: 反映文件事件的最大文件修改时间 Maximum file size: 最大文件大小 Maximum Incubating Chunk Size: 最大孵化块大小 Maximum Incubating Chunks: 最大孵化块数 Maximum Incubation Period: 最大孵化期 +Maximum size of chunks to send in one request: 单次请求发送数据块的最大大小 +MB: MB MB (0 to disable).: MB(0为禁用) Memory cache size (by total characters): 内存缓存大小(按总字符数) Memory cache size (by total items): 内存缓存大小(按总项目数) @@ -293,11 +358,11 @@ moduleCheckRemoteSize: > [!MORE]- > 如果您已经使用了很多年,数据库中可能会积累未引用的 chunks——也就是垃圾。因此,我们建议重建所有内容。它可能会变得小得多。 - > + > > 如果您的库容量只是在增加,最好在整理文件后重建所有内容。即使您为了加速过程删除了文件,Self-hosted LiveSync 也不会删除实际数据。这大致[有文档记录](https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/tech_info.md)。 - > + > > 如果您不介意增加,可以将通知限制增加 100MB。如果您在自己的服务器上运行,就是这种情况。但是,最好还是不时地重建所有内容。 - > + > > [!WARNING] > 如果您执行重建所有内容,请确保所有设备都已同步。尽管如此,插件会尽可能地合并 @@ -314,7 +379,7 @@ moduleCheckRemoteSize: 如果达到限制,系统会要求我们逐步增大限制 option2GB: 2GB (标准) - option800MB: 800MB (Cloudant, fly.io) + option800MB: 800MB(Cloudant, fly.io) optionAskMeLater: 稍后问我 optionDismiss: 忽略 optionIncreaseLimit: 增加到 ${newMax}MB @@ -436,11 +501,11 @@ moduleMigration: msgSinceV02321: |- 自 v0.23.21 起,Self-hosted LiveSync 更改了默认行为和数据库结构。进行了以下更改: - 1. **文件名的区分大小写** + 1. **文件名的区分大小写** 现在处理文件名时不区分大小写。这对于大多数平台来说是一个有益的更改,除了 Linux 和 iOS,它们不能有效地管理文件名的大小写敏感性。 (在这些平台上,对于名称相同但大小写不同的文件将显示警告)。 - 2. **chunks 的版本处理** + 2. **chunks 的版本处理** chunks 是不可变的,这使得它们的版本可以固定。此更改将提高文件保存的性能。 ___然而,要启用这些更改中的任何一个,都需要重建远程和本地数据库。这个过程需要几分钟,我们建议您在有充足时间时进行。___ @@ -459,7 +524,7 @@ moduleMigration: optionNoAskAgain: 不,请稍后再次询问 optionNoSetupUri: 不,我没有 optionRemindNextLaunch: 下次启动时提醒我 - optionSetupViaP2P: Use %{short_p2p_sync} to set up + optionSetupViaP2P: 使用 %{short_p2p_sync} 进行设置 optionSetupWizard: 带我进入设置向导 optionYesFetchAgain: 是的,再次获取 titleCaseSensitivity: 大小写敏感性 @@ -471,7 +536,11 @@ More actions: 更多操作 Move remotely deleted files to the trash, instead of deleting.: 将远程删除的文件移至回收站,而不是直接删除 Network warning style: 网络警告样式 New Remote: 新建远端 +No connected device information found. Cancelling Garbage Collection.: 未找到已连接设备的信息。正在取消垃圾回收。 No limit configured: 未配置限制 +No, please take me back: 不,返回上一步 +Node ID: 节点 ID +Node Information Missing: 节点信息缺失 Non-Synchronising files: 不同步的文件 Normal Files: 普通文件 Not all messages have been translated. And, please revert to "Default" when reporting errors.: 并非所有消息都已翻译。请在报告错误时恢复为"默认" @@ -479,8 +548,10 @@ Notify all setting files: 通知所有设置文件 Notify customized: 通知自定义设置 Notify when other device has newly customized.: "当其他设备有新的自定义设置时通知 " Notify when the estimated remote storage size exceeds on start up: 启动时当估计的远程存储大小超出时通知 +Now we can choose how to split the chunks; V3 is the most efficient. If you have troubled, please make this Default or Legacy.: 现在可以选择如何分割数据块;V3 效率最高。如果遇到问题,请改为 Default 或 Legacy。 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.: 一次处理的批量数量。默认为 40。最小为 2。此设置与批量大小一起控制一次在内存中保留多少文档 Number of changes to sync at a time. Defaults to 50. Minimum is 2.: 一次同步的更改数量。默认为 50。最小为 2。 +Obsidian version: Obsidian 版本 obsidianLiveSyncSettingTab: btnApply: 应用 btnCheck: 检查 @@ -531,7 +602,7 @@ obsidianLiveSyncSettingTab: logCheckingDbConfig: 正在检查数据库配置 logCheckPassphraseFailed: |- 错误:无法使用远程服务器检查密码: - ${db} + ${db} logConfiguredDisabled: 已配置的同步模式:已禁用 logConfiguredLiveSync: 已配置的同步模式:LiveSync logConfiguredPeriodic: 已配置的同步模式:定期同步 @@ -547,13 +618,14 @@ obsidianLiveSyncSettingTab: logPassphraseNotCompatible: 错误:密码与远程服务器不兼容!请再次检查! logRebuildNote: 同步已禁用,如果需要,请获取并重新启用 logSelectAnyPreset: 请选择任一预设。 + logServerConfigurationCheck: 日志服务器配置检查 msgAreYouSureProceed: 您确定要继续吗? msgChangesNeedToBeApplied: 需要应用更改! msgConfigCheck: --配置检查-- msgConfigCheckFailed: 配置检查失败。仍要继续吗? msgConnectionCheck: --连接检查-- msgConnectionProxyNote: 如果您在连接检查时遇到问题(即使检查了配置后),请检查您的反向代理配置 - msgCurrentOrigin: "当前源: {origin}" + msgCurrentOrigin: "当前 origin: ${origin}" msgDiscardConfirmation: 您真的要丢弃现有的设置和数据库吗? msgDone: --完成-- msgEnableCors: 设置 httpd.enable_cors @@ -576,7 +648,7 @@ obsidianLiveSyncSettingTab: 如果您遇到任何问题,或对此功能有任何想法,请在 GitHub 上创建 issue。 感谢您的巨大贡献 - msgOriginCheck: "源检查: {org}" + msgOriginCheck: "正在检查 origin: ${org}" msgRebuildRequired: |- 需要重建数据库以应用更改。请选择应用更改的方法。 @@ -630,7 +702,7 @@ obsidianLiveSyncSettingTab: okCorsOriginMatched: ✔ CORS 源正常 okCorsOrigins: ✔ cors.origins 设置正确 okEnableCors: ✔ httpd.enable_cors 设置正确 - okEnableCorsChttpd: ✔ chttpd.enable_cors is ok. + okEnableCorsChttpd: ✔ chttpd.enable_cors 已就绪。 okMaxDocumentSize: ✔ couchdb.max_document_size 设置正确 okMaxRequestSize: ✔ chttpd.max_http_request_size 设置正确 okRequireValidUser: ✔ chttpd.require_valid_user 设置正确 @@ -684,7 +756,7 @@ obsidianLiveSyncSettingTab: titleSyncSettings: 同步设置 titleSyncSettingsViaMarkdown: 通过 Markdown 同步设置 titleUpdateThinning: 更新精简 - warnCorsOriginUnmatched: ⚠ CORS 源不匹配 {from}->{to} + warnCorsOriginUnmatched: ⚠ CORS Origin 不匹配 ${from}->${to} warnNoAdmin: ⚠ 您没有管理员权限 Ok: 确定 Old Algorithm: 旧算法 @@ -730,15 +802,14 @@ P2P: some bugs, security issues, and other issues. Please use this feature at your own risk. Please 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." - P2PReplication: "%{P2P} Replication" + NotEnabled: "%{title_p2p_sync} 未启用,无法建立新连接。" + P2PReplication: "%{P2P} 同步" PaneTitle: "%{long_p2p_sync}" - ReplicatorInstanceMissing: P2P Sync replicator is not found, possibly not have - been configured or enabled. - SeemsOffline: Peer ${name} seems offline, skipped. - SyncAlreadyRunning: P2P Sync is already running. - SyncCompleted: P2P Sync completed. - SyncStartedWith: P2P Sync with ${name} have been started. + ReplicatorInstanceMissing: 未找到 P2P 同步复制器,可能尚未配置或启用。 + SeemsOffline: 节点 ${name} 似乎离线,已跳过。 + SyncAlreadyRunning: P2P 同步已在运行中。 + SyncCompleted: P2P 同步已完成。 + SyncStartedWith: 已与 ${name} 开始 P2P 同步。 paneMaintenance: markDeviceResolvedAfterBackup: 请在完成备份后将此设备标记为已处理。 remoteLockedAndDeviceNotAccepted: 远端数据库已锁定,且此设备尚未被接受。 @@ -749,9 +820,11 @@ Passphrase of sensitive configuration items: 敏感配置项的密码 password: 密码 Password: 密码 Paste a connection string: 粘贴连接字符串 +Paste the Setup URI generated from one of your active devices.: 粘贴从一台已在使用的设备上生成的 Setup URI。 Path Obfuscation: 路径混淆 Patterns to match files for overwriting instead of merging: 用于匹配需覆盖而非合并文件的模式 Patterns to match files for syncing: 用于匹配同步文件的模式 +Peer-to-Peer only: 仅 Peer-to-Peer Peer-to-Peer Synchronisation: 点对点同步 Per-file-saved customization sync: 按文件保存的自定义同步 Perform: 执行 @@ -760,11 +833,25 @@ Perform Garbage Collection: 执行垃圾回收 Perform Garbage Collection to remove unused chunks and reduce database size.: 执行垃圾回收以清理未使用的 chunks 并减小数据库体积。 Periodic Sync interval: 定期同步间隔 Pick a file to resolve conflict: 选择要解决冲突的文件 +Pick a file to show history: 选择要显示历史的文件 +Please disable 'Read chunks online' in settings to use Garbage Collection.: 要使用垃圾回收,请在设置中禁用“Read chunks online”。 +Please enable 'Compute revisions for chunks' in settings to use Garbage Collection.: 要使用垃圾回收,请在设置中启用“Compute revisions for chunks”。 +Please select 'Cancel' explicitly to cancel this operation.: 如需取消此操作,请明确选择“取消”。 +Please select a method to import the settings from another device.: 请选择一种从其他设备导入设置的方法。 +Please select an option to proceed: 请选择一个选项以继续 +Please select the type of server to which you are connecting.: 请选择你要连接的服务器类型。 Please set device name to identify this device. This name should be unique among your devices. While not configured, we cannot enable this feature.: 请设置设备名称以标识此设备。该名称在你的所有设备之间应保持唯一;未配置前无法启用此功能。 Please set this device name: 请设置此设备名称 +Plug-in version: 插件版本 Prepare the 'report' to create an issue: 准备 '报告' 以创建问题单 Presets: 预设 +Proceed Garbage Collection: 继续执行垃圾回收 +Proceed with Setup URI: 继续使用 Setup URI +Proceeding with Garbage Collection, ignoring missing nodes.: 正在继续执行垃圾回收,并忽略缺失节点。 +Proceeding with Garbage Collection.: 正在执行垃圾回收。 +Process files even if seems to be corrupted: 即使文件看起来已损坏也处理 Process small files in the foreground: 在前台处理小文件 +Progress: 进度 Property Encryption: 属性加密 PureJS fallback (Fast, W/O WebAssembly): PureJS 回退(快速,无 WebAssembly) Purge all download/upload cache.: 清除所有下载/上传缓存。 @@ -776,89 +863,67 @@ Recreate missing chunks for all files: 为所有文件重建缺失的 chunks RedFlag: Fetch: Method: - Desc: >- - How do you want to fetch? - - - %{RedFlag.Fetch.Method.FetchSafer}. - **Low Traffic**, **High CPU**, **Low Risk** - Recommended if ... - - Files possibly inconsistent - - Files were not so much - - %{RedFlag.Fetch.Method.FetchSmoother}. - **Low Traffic**, **Moderate CPU**, **Low to Moderate Risk** - Recommended if ... - - Files probably consistent - - You have a lot of files. - - %{RedFlag.Fetch.Method.FetchTraditional}. - **High Traffic**, **Low CPU**, **Low to Moderate Risk** - - >[!INFO]- Details - - > ## %{RedFlag.Fetch.Method.FetchSafer}. - - > **Low Traffic**, **High CPU**, **Low Risk** - - > This option first creates a local database using existing local files - before fetching data from the remote source. - - > If matching files exist both locally and remotely, only the - differences between them will be transferred. - - > 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. - - > This is generally the safest method, minimizing data loss risk. - - > ## %{RedFlag.Fetch.Method.FetchSmoother}. - - > **Low Traffic**, **Moderate CPU**, **Low to Moderate Risk** (depending - operation) - - > 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. - - > 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. - - > 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`). - - > This uses less CPU and faster than - "%{RedFlag.Fetch.Method.FetchSafer}", but it may lead to data loss if - not used carefully. - - > ## %{RedFlag.Fetch.Method.FetchTraditional}. - - > **High Traffic**, **Low CPU**, **Low to Moderate Risk** (depending - operation) - - > All things will be fetched from the remote. - - > Similar to the %{RedFlag.Fetch.Method.FetchSmoother}, but all chunks - are fetched from the remote source. - - > 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. - - > However, it is often considered the most stable method because it is - the longest-established and most straightforward approach. - FetchSafer: Create a local database once before fetching - FetchSmoother: Create local file chunks before fetching - FetchTraditional: Fetch everything from the remote - Title: How do you want to fetch? + Desc: |- + 您希望如何获取数据? + - %{RedFlag.Fetch.Method.FetchSafer} + **低流量**、**高 CPU 占用**、**低风险** + 推荐用于... + - 文件可能不一致 + - 文件数量不多 + - %{RedFlag.Fetch.Method.FetchSmoother} + **低流量**、**中等 CPU 占用**、**低到中等风险** + 推荐用于... + - 文件可能一致 + - 文件数量较多 + - %{RedFlag.Fetch.Method.FetchTraditional} + **高流量**、**低 CPU 占用**、**低到中等风险** + + >[!INFO]- 详细信息 + > ## %{RedFlag.Fetch.Method.FetchSafer} + > **低流量**、**高 CPU 占用**、**低风险** + > 此选项首先使用现有本地文件创建本地数据库,然后从远程源获取数据。 + > 如果本地和远程存在匹配的文件,则仅传输两者之间的差异。 + > 但是,两端都存在的文件最初会被视为冲突文件。如果它们实际上没有冲突,将自动解决,但此过程可能需要时间。 + > 这通常是最安全的方法,能最大限度地降低数据丢失风险。 + > ## %{RedFlag.Fetch.Method.FetchSmoother} + > **低流量**、**中等 CPU 占用**、**低到中等风险**(取决于操作) + > 此选项首先从本地文件创建数据块,然后获取数据。因此,仅传输本地缺少的数据块。但是,所有元数据均从远程源获取。 + > 启动时会将本地文件与该元数据进行比较。内容较新的一方将覆盖较旧的一方(按修改时间)。然后将结果同步回远程数据库。 + > 如果本地文件的时间戳确实是最新的一般来说是安全的。但是,如果文件具有较新的时间戳但内容较旧(如初始的 `welcome.md`),则可能导致问题。 + > 此方法使用较少的 CPU 且比"%{RedFlag.Fetch.Method.FetchSafer}"更快,但如果使用不当可能导致数据丢失。 + > ## %{RedFlag.Fetch.Method.FetchTraditional} + > **高流量**、**低 CPU 占用**、**低到中等风险**(取决于操作) + > 所有数据将从远程获取。 + > 与 %{RedFlag.Fetch.Method.FetchSmoother} 类似,但所有数据块都从远程源获取。 + > 这是最传统的获取方式,通常消耗最多的网络流量和时间。它也存在与"%{RedFlag.Fetch.Method.FetchSmoother}"选项类似的覆盖远程文件的风险。 + > 但是,由于它是最久经考验和最直接的方法,通常被认为是最稳定的。 + FetchSafer: 获取前先创建本地数据库 + FetchSmoother: 获取前先创建本地文件块 + FetchTraditional: 从远程获取所有数据 + Title: 您希望如何获取数据? FetchRemoteConfig: + Applied: 已应用远程配置。 Buttons: - Cancel: No, use local settings - Fetch: Yes, fetch and apply remote settings - Message: Do you want to fetch and apply remotely stored preference settings to - the device? - Title: Fetch Remote Configuration + Cancel: 否,使用本地设置 + Fetch: 是,获取并应用远程设置 + Retry: 重试(推荐) + SkipAndProceed: 跳过并继续 + FailedMessage: 无法从远程获取配置。如果您是 Self-hosted LiveSync 新用户,这可能是正常情况。否则,请检查网络或服务器设置。 + FailedTitle: 获取远程配置失败 + MatchesLocal: 远程配置与本地配置一致。未应用任何更改。 + Message: 是否获取并应用远程存储的偏好设置到本设备? + NotApplied: 未应用远程配置。 + SettingsDiffered: 您的设置与服务器略有不同。插件已使用服务器设置补充不兼容的部分! + Title: 获取远程配置 + Log: + FetchEverythingCancelled: 用户已取消获取全部数据。 + FetchEverythingCompleted: 获取全部数据操作已完成。Vault 文件将逐步同步。 + RebuildEverythingCancelled: 用户已取消重建全部数据。 + RebuildEverythingCompleted: 重建全部数据操作已完成。 + VaultInitialisationError: Vault 初始化时出错。 + VaultInitialisationProcessError: Vault 初始化流程中出错。 + ResumeProcessingPrompt: 是否恢复文件和数据库处理,并立即重启 Obsidian? +Reduces storage space by discarding all non-latest revisions. This requires the same amount of free space on the remote server and the local client.: 通过丢弃所有非最新版本来减少存储空间。这需要远程服务器和本地客户端具备相同数量的可用空间。 Reducing the frequency with which on-disk changes are reflected into the DB: 降低将磁盘上的更改反映到数据库中的频率 Region: 区域 Remediation: 修复设置 @@ -873,9 +938,9 @@ Replicator: Dialogue: Locked: Action: - Dismiss: Cancel for reconfirmation - Fetch: Reset Synchronisation on This Device - Unlock: Unlock the remote database + Dismiss: 取消以重新确认 + Fetch: 重置此设备上的同步 + Unlock: 解锁远程数据库 Message: _value: > Remote database is locked. This is due to a rebuild on one of the @@ -894,16 +959,15 @@ Replicator: 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. - %{Replicator.Dialogue.Locked.Action.Dismiss} This will cancel the operation. And we will asked again on next request. - Fetch: Fetch all has been scheduled. Plug-in will be restarted to perform it. - Unlocked: The remote database has been unlocked. Please retry the operation. - Title: Locked + Fetch: 已安排全部获取操作。插件将重新启动以执行此操作。 + Unlocked: 远程数据库已解锁。请重试该操作。 + Title: 已锁定 Message: - Cleaned: Database cleaning up is in process. replication has been cancelled - InitialiseFatalError: No replicator is available, this is the fatal error. - Pending: Some file events are pending. Replication has been cancelled. - SomeModuleFailed: Replication has been cancelled by some module failure - VersionUpFlash: An update has been detected. Please open the Settings dialogue - and check the Change Log. Replication has been cancelled. + Cleaned: 数据库正在清理中,同步已被取消 + InitialiseFatalError: 没有可用的同步器,这是致命错误。 + Pending: 部分文件事件待处理。同步已被取消。 + SomeModuleFailed: 由于某些模块失败,同步已被取消 + VersionUpFlash: 检测到更新。请打开设置对话框并查看更新日志。同步已被取消。 Requires restart of Obsidian: 需要重启 Obsidian Requires restart of Obsidian.: "需要重启 Obsidian " Rerun Onboarding Wizard: 重新运行引导向导 @@ -922,8 +986,6 @@ Reset sent history: 重置发送历史 Reset Synchronisation information: 重置同步信息 Reset Synchronisation on This Device: 重置此设备上的同步 Reset the remote storage size threshold and check the remote storage size again.: 重置远程存储大小阈值并再次检查远程存储大小。 -Reduces storage space by discarding all non-latest revisions. This requires the same amount of free space on the remote server and the local client.: - 通过丢弃所有非最新版本来减少存储空间。这需要远程服务器和本地客户端具备相同数量的可用空间。 Resolve All: 全部处理 Resolve all conflicted files: 解决所有冲突文件 Resolve All conflicted files by the newer one: 将所有冲突文件解析为较新的版本 @@ -931,36 +993,40 @@ Resolve All conflicted files by the newer one: 将所有冲突文件解析为较 Restart Now: 立即重启 Restore or reconstruct local database from remote.: 从远端恢复或重建本地数据库。 Run Doctor: 立即诊断 -Scan for Broken files: 扫描损坏文件 -Scram Switches: 紧急开关 +S3/MinIO/R2 Object Storage: S3/MinIO/R2 对象存储 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 a QR Code (Recommended for mobile): 扫描二维码(移动端推荐) Scan changes on customization sync: 在自定义同步时扫描更改 Scan customization automatically: 自动扫描自定义设置 Scan customization before replicating.: "在复制前扫描自定义设置 " Scan customization every 1 minute.: "每1分钟扫描自定义设置 " Scan customization periodically: 定期扫描自定义设置 +Scan for Broken files: 扫描损坏文件 Scan for hidden files before replication: 复制前扫描隐藏文件 Scan hidden files periodically: 定期扫描隐藏文件 +Scan the QR code displayed on an active device using this device's camera.: 使用当前设备的摄像头扫描另一台已在使用设备上显示的二维码。 Schedule and Restart: 安排并重启 +Scram Switches: 紧急开关 Scram!: 紧急处置 Seconds, 0 to disable: 秒,0为禁用 Seconds. Saving to the local database will be delayed until this value after we stop typing or saving.: "秒。在我们停止输入或保存后,保存到本地数据库将延迟此值 " -Secret Key: Secret Key +Secret Key: 密钥 Select the database adapter to use.: 选择要使用的数据库适配器。 +Selector: 选择器 Send: 发送 Send chunks: 发送 chunks Server URI: 服务器 URI Setting: GenerateKeyPair: - Desc: |- - 我们已经生成了一组密钥对! + Desc: |+ + 密钥对已生成! - 注意:这组密钥对之后将不会再次显示。请务必妥善保管;如果丢失,你需要重新生成新的密钥对。 - 注意 2:公钥采用 spki 格式,私钥采用 pkcs8 格式。为方便复制,公钥中的换行会被转换为 `\n`。 - 注意 3:公钥应配置在远端数据库中,私钥应配置在本地设备上。 + 注意:此密钥对不会再次显示。请妥善保存。如果丢失,需要生成新的密钥对。 + 注意 2:公钥为 spki 格式,私钥为 pkcs8 格式。为了方便起见,公钥中的换行符已转换为 `\n`。 + 注意 3:公钥应在远程数据库中配置,私钥应在本地设备中配置。 - >[!仅限本人查看]- + >[!仅供您查看]- >
> > ### 公钥 @@ -975,7 +1041,7 @@ Setting: > >
- >[!整段复制]- + >[!用于复制两者]- > >
> @@ -985,7 +1051,8 @@ Setting: > ``` > >
- Title: 已生成新的密钥对! + + Title: 新密钥对已生成! TroubleShooting: _value: 故障排除 Doctor: @@ -996,172 +1063,121 @@ Setting: Desc: 扫描数据库中未正确存储的文件。 SettingTab: Message: - AskRebuild: Your changes require fetching from the remote database. Do you want - to proceed? + AskRebuild: 您的更改需要从远程数据库获取。是否继续? +Setup URI dialog cancelled.: Setup URI 对话框已取消。 Setup: Apply: Buttons: - ApplyAndFetch: Apply and Fetch - ApplyAndMerge: Apply and Merge - ApplyAndRebuild: Apply and Rebuild - Cancel: Discard and Cancel - OnlyApply: Only Apply - Message: >- - The new configuration is ready. Let us proceed to apply it. - - There are several ways to apply this: - - - - Apply and Fetch - Configure this device as a new client. After applying, synchronise from the remote server. - - Apply and Merge - Configure on a device that already has the file. It processes the local files and transfers the differences. Conflicts may arise. - - Apply and Rebuild - Rebuild the remote using local files. This is typically done if the server becomes corrupted or we wish to start from scratch. - Other devices will be locked and required to re-fetch. - - Only Apply - Apply only. Conflicts may arise if a rebuild is required. - Title: Apply new configuration from the ${method} - WarningRebuildRecommended: "NOTE: after adjusting the settings, it has been - determined that a rebuild is required; Just Import is not recommended." + ApplyAndFetch: 应用并获取 + ApplyAndMerge: 应用并合并 + ApplyAndRebuild: 应用并重建 + Cancel: 丢弃并取消 + OnlyApply: 仅应用 + Message: |- + 新配置已准备就绪。让我们继续应用它。 + 有几种应用方式: + + - 应用并获取 + 将此设备配置为新客户端。应用后从远程服务器同步。 + - 应用并合并 + 在已有文件的设备上配置。处理本地文件并传输差异。可能会出现冲突。 + - 应用并重建 + 使用本地文件重建远程数据。通常在服务器损坏或希望从头开始时使用。 + 其他设备将被锁定,需要重新获取。 + - 仅应用 + 仅应用配置。如果需要重建,可能会出现冲突。 + Title: 应用来自 ${method} 的新配置 + WarningRebuildRecommended: 注意:调整设置后,已确定需要重建;不建议仅导入。 + Command: + CopySetupUri: 将设置复制为新的设置 URI + CopySetupUriFull: 将设置复制为新的设置 URI(完整) + CopySetupUriWithSync: 将设置复制为新的设置 URI(包含自定义同步) + OpenSetupUri: 使用已复制的设置 URI(原“打开设置 URI”) + ShowSettingsQrCode: 以二维码显示设置 Doctor: Buttons: - No: No, please use the settings in the URI as is - Yes: Yes, please consult the doctor - Message: >- - Self-hosted LiveSync has gradually become longer in history and some - recommended settings have changed. - + No: "?" + Yes: "?" + Message: |- + Self-hosted LiveSync 的历史已逐渐悠久,部分推荐设置已发生变化。 - Now, setup is a very good time to do this. + 现在是进行检查的绝佳时机。 - - Do you want to run Doctor to check if the imported settings are optimal - compared to the latest state? - Title: Do you want to consult the doctor? + 是否运行诊断程序,检查导入的设置是否与最新状态一致? + Title: 是否运行诊断程序? + EncryptSettingsPassphrase: 用于加密设置 URI 的密码短语 + EncryptSettingsTitle: 加密您的设置 FetchRemoteConf: Buttons: - Fetch: Yes, please fetch the configuration - Skip: No, please use the settings in the URI - 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. - - - However, 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? - - - Note: Mostly, you are safe to do this, that your remote database is hosted - with a SSL certificate, and your network is not compromised. - Title: Fetch configuration from remote database? - QRCode: >- - We have generated a QR code to transfer the settings. Please scan the QR - code with your phone or other device. - - Note: The QR code is not encrypted, so be careful to open this. - - - >[!FOR YOUR EYES ONLY]- - + Fetch: 是,请获取配置 + Skip: 不,请使用 URI 中的设置 + Message: |- + 如果我们已通过其他设备同步过一次,远程数据库会存储同步设备之间合适的配置值。插件希望获取这些值以进行可靠的配置。 + + 但是,我们需要确认一件事:当前是否处于可以安全访问网络并获取设置的环境? + + 注意:大多数情况下这样做是安全的,前提是您的远程数据库使用了 SSL 证书,且网络未受攻击。 + Title: 是否从远程数据库获取配置? + Log: + ProtocolHandlerRegistrationFailed: 注册协议处理程序失败。此功能在某些环境中可能无法工作。 + SetupUriCopiedToClipboard: 设置 URI 已复制到剪贴板 + QRCode: |- + 已生成用于传输设置的二维码。请使用手机或其他设备扫描此二维码。 + 注意:二维码未加密,请谨慎打开。 + + >[!仅供您查看]- >
${qr_image}
- ShowQRCode: - _value: 使用QR码 - Desc: 使用QR码来传递配置 + QRCodeTitle: 设置二维码 RemoteE2EE: - Title: 端到端加密 + AdvancedTitle: 高级 + AlgorithmWarning: 更改加密算法会导致之前使用其他算法加密的数据无法访问。请确保所有设备都配置为使用同一算法,以保持对数据的访问能力。 + ButtonCancel: 取消 + ButtonProceed: 继续 + DefaultAlgorithmDesc: 在大多数情况下,你应继续使用默认算法(${algorithm})。只有当你已有一个采用不同格式加密的 Vault 时,才需要调整此设置。 Guidance: 请配置你的端到端加密设置。 LabelEncrypt: 端到端加密 - PlaceholderPassphrase: 输入你的密码短语 - StronglyRecommendedTitle: 强烈推荐 - StronglyRecommendedLine1: 启用端到端加密后,数据会先在你的设备上加密,再发送到远程服务器。这意味着即使有人获得了服务器访问权限,没有密码短语也无法读取你的数据。请务必记住你的密码短语,因为在其他设备上解密数据时也需要它。 - StronglyRecommendedLine2: 另外请注意,如果你正在使用 Peer-to-Peer 同步,当你以后切换到其他同步方式并连接远程服务器时,也会使用这组配置。 - MultiDestinationWarning: 即使连接到多个同步目标,此设置也必须保持一致。 + LabelEncryptionAlgorithm: 加密算法 LabelObfuscateProperties: 混淆属性 + MultiDestinationWarning: 即使连接到多个同步目标,此设置也必须保持一致。 ObfuscatePropertiesDesc: 混淆属性(例如文件路径、大小、创建和修改日期)可以增加一层额外保护,使远程服务器上的文件与文件夹结构及名称更难被识别。这有助于保护你的隐私,也让未授权用户更难推断你的数据相关信息。 - AdvancedTitle: 高级 - LabelEncryptionAlgorithm: 加密算法 - DefaultAlgorithmDesc: 在大多数情况下,你应继续使用默认算法(${algorithm})。只有当你已有一个采用不同格式加密的 Vault 时,才需要调整此设置。 - AlgorithmWarning: 更改加密算法会导致之前使用其他算法加密的数据无法访问。请确保所有设备都配置为使用同一算法,以保持对数据的访问能力。 PassphraseValidationLine1: 请注意,在同步过程真正开始之前,端到端加密密码短语不会被校验。这是一项用于保护你数据的安全措施。 PassphraseValidationLine2: 因此,在手动配置服务器信息时请务必格外小心。如果输入了错误的密码短语,服务器上的数据将会损坏。请理解这属于预期行为。 - ButtonProceed: 继续 - ButtonCancel: 取消 - UseSetupURI: - Title: 输入 Setup URI - GuidanceLine1: 请输入在服务器安装期间或另一台设备上生成的 Setup URI,以及 Vault 密码短语。 - GuidanceLine2: 你可以在命令面板中运行“将设置复制为新的 Setup URI”命令来生成新的 Setup URI。 - LabelSetupURI: Setup URI - ValidInfo: Setup URI 有效,可以使用。 - InvalidInfo: Setup URI 无效,请检查后重试。 - LabelPassphrase: Vault 密码短语 - PlaceholderPassphrase: 输入 Vault 密码短语 - ErrorPassphraseRequired: 请输入 Vault 密码短语。 - ErrorFailedToParse: 无法解析 Setup URI,请检查 URI 和密码短语。 - ButtonProceed: 测试设置并继续 - ButtonCancel: 取消 + PlaceholderPassphrase: 输入你的密码短语 + StronglyRecommendedLine1: 启用端到端加密后,数据会先在你的设备上加密,再发送到远程服务器。这意味着即使有人获得了服务器访问权限,没有密码短语也无法读取你的数据。请务必记住你的密码短语,因为在其他设备上解密数据时也需要它。 + StronglyRecommendedLine2: 另外请注意,如果你正在使用 Peer-to-Peer 同步,当你以后切换到其他同步方式并连接远程服务器时,也会使用这组配置。 + StronglyRecommendedTitle: 强烈推荐 + Title: 端到端加密 ScanQRCode: - Title: 扫描二维码 + ButtonClose: 关闭此对话框 Guidance: 请按照以下步骤从现有设备导入设置。 Step1: 在这台设备上,请保持此 Vault 处于打开状态。 Step2: 在源设备上打开 Obsidian。 Step3: 在源设备上,从命令面板运行“将设置显示为二维码”命令。 Step4: 在这台设备上,切换到相机应用或使用二维码扫描器扫描显示出的二维码。 - ButtonClose: 关闭此对话框 -"Please enable 'Compute revisions for chunks' in settings to use Garbage Collection.": 要使用垃圾回收,请在设置中启用“Compute revisions for chunks”。 -"Please disable 'Read chunks online' in settings to use Garbage Collection.": 要使用垃圾回收,请在设置中禁用“Read chunks online”。 -"Setup URI dialog cancelled.": Setup URI 对话框已取消。 -"Please select 'Cancel' explicitly to cancel this operation.": 如需取消此操作,请明确选择“取消”。 -"Failed to connect to remote for compaction.": 无法连接到远程数据库以执行压缩。 -"Failed to connect to remote for compaction. ${reason}": 无法连接到远程数据库以执行压缩。${reason} -"Compaction in progress on remote database...": 正在远程数据库上执行压缩... -"Compaction on remote database timed out.": 远程数据库压缩超时。 -"Compaction on remote database completed successfully.": 远程数据库压缩已成功完成。 -"Compaction on remote database failed.": 远程数据库压缩失败。 -"Failed to start one-shot replication before Garbage Collection. Garbage Collection Cancelled.": 无法在垃圾回收前启动一次性复制。垃圾回收已取消。 -"Cancel Garbage Collection": 取消垃圾回收 -"No connected device information found. Cancelling Garbage Collection.": 未找到已连接设备的信息。正在取消垃圾回收。 -"The following accepted nodes are missing its node information:\n- ${missingNodes}\n\nThis indicates that they have not been connected for some time or have been left on an older version.\nIt is preferable to update all devices if possible. If you have any devices that are no longer in use, you can clear all accepted nodes by locking the remote once.": |- - 以下已接受节点缺少节点信息: - - ${missingNodes} - - 这表示它们已有一段时间未连接,或仍停留在较旧版本。 - 如有可能,建议先更新所有设备。如果有已不再使用的设备,可以先锁定一次远程端以清除全部已接受节点。 -"Ignore and Proceed": 忽略并继续 -"Node Information Missing": 节点信息缺失 -"Garbage Collection cancelled by user.": 用户已取消垃圾回收。 -"Proceeding with Garbage Collection, ignoring missing nodes.": 正在继续执行垃圾回收,并忽略缺失节点。 -"Proceed Garbage Collection": 继续执行垃圾回收 -"> [!INFO]- The connected devices have been detected as follows:\n${devices}": |- - > [!INFO]- 已检测到以下已连接设备: - ${devices} -"Device": 设备 -"Node ID": 节点 ID -"Obsidian version": Obsidian 版本 -"Plug-in version": 插件版本 -"Progress": 进度 -"Some devices have differing progress values (max: ${maxProgress}, min: ${minProgress}).\nThis may indicate that some devices have not completed synchronisation, which could lead to conflicts. Strongly recommend confirming that all devices are synchronised before proceeding.": |- - 某些设备的进度值不同(最大:${maxProgress},最小:${minProgress})。 - 这可能表示某些设备尚未完成同步,从而可能引发冲突。强烈建议在继续之前先确认所有设备都已同步。 -"All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.": 所有设备的进度值均相同(${progress})。看起来你的设备已经同步,可以继续执行垃圾回收。 -"Garbage Collection Confirmation": 垃圾回收确认 -"Proceeding with Garbage Collection.": 正在执行垃圾回收。 -"Garbage Collection: Scanned ${scanned} / ~${docCount}": |- - 垃圾回收:已扫描 ${scanned} / ~${docCount} -"Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": |- - 垃圾回收:扫描完成。总 chunks:${totalChunks},已使用 chunks:${usedChunks} -"Garbage Collection: Found ${unusedChunks} unused chunks to delete.": |- - 垃圾回收:发现 ${unusedChunks} 个未使用的 chunks 待删除。 -"Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.": |- - 垃圾回收完成。已删除 chunks:${deletedChunks} / ${totalChunks}。耗时:${seconds} 秒。 -"Failed to start replication after Garbage Collection.": 垃圾回收后无法启动复制。 + Title: 扫描二维码 + SetupUri: 设置 URI + ShowQRCode: + _value: 使用QR码 + Desc: 使用QR码来传递配置 + UseSetupURI: + ButtonCancel: 取消 + ButtonProceed: 测试设置并继续 + ErrorFailedToParse: 无法解析 Setup URI,请检查 URI 和密码短语。 + ErrorPassphraseRequired: 请输入 Vault 密码短语。 + GuidanceLine1: 请输入在服务器安装期间或另一台设备上生成的 Setup URI,以及 Vault 密码短语。 + GuidanceLine2: 你可以在命令面板中运行“将设置复制为新的 Setup URI”命令来生成新的 Setup URI。 + InvalidInfo: Setup URI 无效,请检查后重试。 + LabelPassphrase: Vault 密码短语 + LabelSetupURI: Setup URI + PlaceholderPassphrase: 输入 Vault 密码短语 + Title: 输入 Setup URI + ValidInfo: Setup URI 有效,可以使用。 Should we keep folders that don't have any files inside?: 我们是否应该保留内部没有任何文件的文件夹? Should we only check for conflicts when a file is opened?: 我们是否应该仅在文件打开时检查冲突? 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?: 即使我们可以安全地自动合并,是否也应该为每一次合并提示您? Show full banner: 显示完整横幅 +Show history: 显示历史 Show icon only: 仅显示图标 Show only notifications: 仅显示通知 Show status as icons only: 仅以图标显示状态 @@ -1169,6 +1185,9 @@ 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.: "显示详细日志。如果您报告问题,请启用此选项 " +"Some devices have differing progress values (max: ${maxProgress}, min: ${minProgress}).\nThis may indicate that some devices have not completed synchronisation, which could lead to conflicts. Strongly recommend confirming that all devices are synchronised before proceeding.": |- + 某些设备的进度值不同(最大:${maxProgress},最小:${minProgress})。 + 这可能表示某些设备尚未完成同步,从而可能引发冲突。强烈建议在继续之前先确认所有设备都已同步。 Starts synchronisation when a file is saved.: "当文件保存时启动同步 " Stop reflecting database changes to storage files.: "停止将数据库更改反映到存储文件 " Stop watching for file changes.: "停止监视文件更改 " @@ -1184,124 +1203,148 @@ Sync on Editor Save: 编辑器保存时同步 Sync on File Open: 打开文件时同步 Sync on Save: 保存时同步 Sync on Startup: 启动时同步 +Synchronisation utilising journal files. You must have set up an S3/MinIO/R2 compatible object storage.: 通过日志文件进行同步。你需要事先部署好兼容 S3/MinIO/R2 的对象存储服务。 Synchronising files: 同步文件 Syncing: 同步中 Target patterns: 目标模式 Testing only - Resolve file conflicts by syncing newer copies of the file, this can overwrite modified files. Be Warned.: "仅供测试 - 通过同步文件的较新副本来解决文件冲突,这可能会覆盖修改过的文件。请注意 " The delay for consecutive on-demand fetches: 连续按需获取的延迟 +"The following accepted nodes are missing its node information:\n- ${missingNodes}\n\nThis indicates that they have not been connected for some time or have been left on an older version.\nIt is preferable to update all devices if possible. If you have any devices that are no longer in use, you can clear all accepted nodes by locking the remote once.": |- + 以下已接受节点缺少节点信息: + - ${missingNodes} + + 这表示它们已有一段时间未连接,或仍停留在较旧版本。 + 如有可能,建议先更新所有设备。如果有已不再使用的设备,可以先锁定一次远程端以清除全部已接受节点。 The Hash algorithm for chunk IDs: 块 ID 的哈希算法(实验性) 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 feature enables direct synchronisation between devices. No server is required, but both devices must be online at the same time for synchronisation to occur, and some features may be limited. Internet connection is only required to signalling (detecting peers) and not for data transfer.: 此功能可在设备之间直接同步,无需服务器;但同步时两台设备必须同时在线,且部分功能可能受限。互联网连接仅用于信令(发现对端),不用于数据传输。 +This is an advanced option for users who do not have a URI or who wish to configure detailed settings.: 这是面向没有 URI 或希望手动配置详细参数的高级选项。 +This is the most suitable synchronisation method for the design. All functions are available. You must have set up a CouchDB instance.: 这是最符合当前设计的同步方式,所有功能均可用。你需要事先部署好 CouchDB 实例。 This passphrase will not be copied to another device. It will be set to `Default` until you configure it again.: "此密码不会复制到另一台设备。在您再次配置之前,它将设置为 `Default` " This will recreate chunks for all files. If there were missing chunks, this may fix the errors.: 这会为所有文件重新生成 chunks。如果之前存在缺失的 chunks,这可能修复相关错误。 TweakMismatchResolve: Action: - Dismiss: Dismiss - UseConfigured: Use configured settings - UseMine: Update remote database settings - UseMineAcceptIncompatible: Update remote database settings but keep as is - UseMineWithRebuild: Update remote database settings and rebuild again - UseRemote: Apply settings to this device - UseRemoteAcceptIncompatible: Apply settings to this device, but and ignore incompatibility - UseRemoteWithRebuild: Apply settings to this device, and fetch again + Dismiss: 关闭 + UseConfigured: 使用已配置的设置 + UseMine: 更新远程数据库设置 + UseMineAcceptIncompatible: 更新远程数据库设置但保持不变 + UseMineWithRebuild: 更新远程数据库设置并重新重建 + UseRemote: 将设置应用到此设备 + UseRemoteAcceptIncompatible: 将设置应用到此设备,但忽略不兼容性 + UseRemoteWithRebuild: 将设置应用到此设备并重新获取 Message: - Main: >- + Main: |- - The settings in the remote database are as follows. These values are - configured by other devices, which are synchronised with this device at - least once. - - - If you want to use these settings, please select - %{TweakMismatchResolve.Action.UseConfigured}. - - If you want to keep the settings of this device, please select - %{TweakMismatchResolve.Action.Dismiss}. + 远程数据库中的设置如下。这些值由其他设备配置,这些设备至少与此设备同步过一次。 + 如果要使用这些设置,请选择 %{TweakMismatchResolve.Action.UseConfigured}。 + 如果要保留此设备的设置,请选择 %{TweakMismatchResolve.Action.Dismiss}。 ${table} - >[!TIP] - - > If you want to synchronise all settings, please use `Sync settings via - markdown` after applying minimal configuration with this feature. - + > 如果要同步所有设置,请在此功能应用最小配置后使用 `通过 Markdown 同步设置`。 ${additionalMessage} MainTweakResolving: |- - Your configuration has not been matched with the one on the remote server. + 您的配置与远程服务器上的配置不匹配。 - Following configuration should be matched: + 以下配置需要保持一致: ${table} - Let us know your decision. + 请告诉我们您的决定。 ${additionalMessage} UseRemote: - WarningRebuildRecommended: >- + WarningRebuildRecommended: |- >[!NOTICE] - - > 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. - - > ***Please ensure that you have time and are connected to a stable - network to apply!*** - WarningRebuildRequired: >- + > 部分更改兼容,但可能消耗额外的存储空间和传输流量。建议进行重建。但是,重建可能不会立即执行,将在未来的维护中实施。 + > ***请确保您有充足的时间并连接到稳定的网络!*** + WarningRebuildRequired: |- >[!WARNING] - - > Some remote configurations are not compatible with the local database - of this device. Rebuilding the local database will be required. - - > ***Please ensure that you have time and are connected to a stable - network to apply!*** - WarningIncompatibleRebuildRecommended: >- + > 部分远程配置与此设备的本地数据库不兼容。需要重建本地数据库。 + > ***请确保您有充足的时间并连接到稳定的网络!*** + WarningIncompatibleRebuildRecommended: |- >[!NOTICE] - - > We have detected that some of the values are different to make - incompatible the local database with the remote database. - - > 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. - - > If you want to rebuild, it takes a few minutes or more. **Make sure it - is safe to perform it now.** - WarningIncompatibleRebuildRequired: >- + > 检测到部分值存在差异,导致本地数据库与远程数据库不兼容。 + > 部分更改兼容,但可能消耗额外的存储空间和传输流量。建议进行重建。但是,重建可能不会立即执行,将在未来的维护中实施。 + > 如果要重建,可能需要几分钟或更长时间。**请确保现在是安全的操作时机。** + WarningIncompatibleRebuildRequired: |- >[!WARNING] - - > We have detected that some of the values are different to make - incompatible the local database with the remote database. - - > 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.** + > 检测到部分值存在差异,导致本地数据库与远程数据库不兼容。 + > 需要重建本地或远程数据库。两者都需要几分钟或更长时间。**请确保现在是安全的操作时机。** Table: _value: |+ - | Value name | This device | On Remote | + | 值名称 | 此设备 | 远程 | |: --- |: ---- :|: ---- :| ${rows} Row: "| ${name} | ${self} | ${remote} |" Title: - _value: Configuration Mismatch Detected - TweakResolving: Configuration Mismatch Detected - UseRemoteConfig: Use Remote Configuration + _value: 检测到配置不匹配 + TweakResolving: 检测到配置不匹配 + UseRemoteConfig: 使用远程配置 Ui: + Bucket: + Guidance: 请在下方输入连接到 S3/MinIO/R2 兼容对象存储服务所需的详细信息。 Common: Signal: Caution: 注意 Danger: 危险 Notice: 提示 Warning: 警告 + ConflictResolver: + FileToResolve: 待解决的文件 + CouchDB: + Guidance: 请在下方输入 CouchDB 服务器信息。 + History: + FileToView: 待查看的文件 + P2P: + Guidance: 请在下方输入点对点同步信息。 + RemoteE2EE: + AdvancedTitle: 高级 + AlgorithmWarning: 更改加密算法将导致无法访问之前使用不同算法加密的任何数据。 + ButtonCancel: 取消 + ButtonProceed: 继续 + DefaultAlgorithmDesc: 在大多数情况下,您应使用默认算法。 + Guidance: 请配置您的端到端加密设置。 + LabelEncrypt: 端到端加密 + LabelEncryptionAlgorithm: 加密算法 + LabelObfuscateProperties: 混淆属性 + ManualWarning: 请注意,端到端加密密码直到同步过程实际开始时才会被验证。这是为保护您的数据而设计的安全措施。 + MultiDestinationWarning: 连接到多个同步目标时,此设置必须保持一致。 + ObfuscatePropertiesDesc: 混淆属性通过使远程服务器上的文件和文件夹结构及名称更难以识别,从而增加了一层额外的安全保障。 + PassphraseValidationLine1: 请注意,端到端加密密码直到同步过程实际开始时才会被验证。 + PassphraseValidationLine2: 因此,我们要求您在手动配置服务器信息时格外谨慎。 + PlaceholderPassphrase: 请输入您的密码 + StronglyRecommended: 启用端到端加密可确保您的数据在发送到远程服务器之前已在设备上加密。这意味着即使有人获得服务器访问权限,没有密码也无法读取您的数据。 + StronglyRecommendedLine1: 启用端到端加密可确保您的数据在发送到远程服务器之前已在设备上加密。 + StronglyRecommendedLine2: 另外请注意,如果您正在使用点对点同步,将来切换到其他方式并连接到远程服务器时将使用此配置。 + StronglyRecommendedTitle: 强烈推荐 + Title: 端到端加密 + WarningSameSetting: 连接到多个同步目标时,此设置必须保持一致。 + ScanQRCode: + ButtonClose: 关闭此对话框 + Guidance: 请按照以下步骤从现有设备导入设置。 + Instruction: 请按照以下步骤从现有设备导入设置。 + Step1: 在此设备上,请保持此 Vault 处于打开状态。 + Step2: 在源设备上打开 Obsidian。 + Step3: 在源设备上,从命令面板运行"将设置显示为二维码"命令。 + Step4: 在此设备上,切换到相机应用或使用二维码扫描器扫描显示的二维码。 + Title: 扫描二维码 Settings: + Advanced: + LocalDatabaseTweak: 本地数据库调整 + MemoryCache: 内存缓存 + TransferTweak: 传输调整 Common: Analyse: 分析 Back: 返回 @@ -1320,35 +1363,31 @@ Ui: Scan: 扫描 Send: 发送 Use: 使用 - VerifyAll: 全部校验 - Advanced: - LocalDatabaseTweak: 本地数据库调整 - MemoryCache: 内存缓存 - TransferTweak: 传输调整 + VerifyAll: 全部验证 CustomizationSync: OpenDesc: 打开此对话框 Panel: 自定义同步 - WarnChangeDeviceName: 启用此功能时无法修改设备名称。请先关闭此功能,再修改设备名称。 - WarnSetDeviceName: 请先设置用于标识此设备的设备名称。该名称应在你的设备之间保持唯一。未设置前无法启用此功能。 + WarnChangeDeviceName: 更改设备名称警告 + WarnSetDeviceName: 设置设备名称警告 Hatch: AnalyseDatabaseUsage: 分析数据库使用情况 AnalyseDatabaseUsageDesc: 分析数据库使用情况,并生成 TSV 报告供你自行诊断。你可以将生成的报告粘贴到任意电子表格工具中查看。 BackToNonConfigured: 返回未配置状态 ConvertNonObfuscated: 检查并转换未进行路径混淆的文件 ConvertNonObfuscatedDesc: 检查本地数据库中未按路径混淆方式存储的文件,并在需要时将其转换为正确格式。 - CopyIssueReport: 复制报告到剪贴板 + CopyIssueReport: 将报告复制到剪贴板 DatabaseLabel: 数据库:${details} DatabaseToStorage: 数据库 -> 存储 DeleteCustomizationSyncData: 删除所有自定义同步数据 - GeneratedReport: 已生成的报告 + GeneratedReport: 生成的报告 Missing: 缺失 - ModifiedSize: 修改时间:${modified},大小:${size} - ModifiedSizeActual: 修改时间:${modified},大小:${size}(实际大小:${actualSize}) + ModifiedSize: 修改大小 + ModifiedSizeActual: 实际修改大小 PrepareIssueReport: 准备用于提交问题的报告 + RecoveryAndRepair: 恢复与修复 RecreateAll: 全部重建 RecreateMissingChunks: 为所有文件重新创建缺失的数据块 RecreateMissingChunksDesc: 此操作会为所有文件重新创建数据块。如果存在缺失的数据块,可能会修复相关错误。 - RecoveryAndRepair: 恢复与修复 ResetPanel: 重置 ResetRemoteUsage: 重置通知阈值并检查远程数据库使用情况 ResetRemoteUsageDesc: 重置远程存储大小阈值,并再次检查远程存储大小。 @@ -1357,7 +1396,7 @@ Ui: RunDoctor: 运行诊断 ScanBrokenFiles: 扫描损坏文件 ScramSwitches: 紧急开关 - ShowHistory: 查看历史 + ShowHistory: 显示历史 StorageLabel: 存储:${details} StorageToDatabase: 存储 -> 数据库 VerifyAndRepairAllFiles: 校验并修复所有文件 @@ -1375,35 +1414,35 @@ Ui: GarbageCollectionDesc: 执行垃圾回收以移除未使用的数据块并减少数据库大小。 LockServer: 锁定服务器 LockServerDesc: 锁定远程服务器,防止与其他设备继续同步。 - OverwriteServerData: 用此设备的文件覆盖服务器数据 - OverwriteServerDataDesc: 使用此设备上的文件重建本地和远程数据库。 OverwriteRemote: 覆盖远程端 OverwriteRemoteDesc: 使用本地数据库和密码短语覆盖远程端数据。 + OverwriteServerData: 用此设备的文件覆盖服务器数据 + OverwriteServerDataDesc: 使用此设备上的文件重建本地和远程数据库。 PurgeAllJournalCounter: 清空全部日志计数器 PurgeAllJournalCounterDesc: 清空所有下载与上传缓存。 - RebuildingOperations: 重建操作(仅远程端) + RebuildingOperations: 重建操作(仅限远程) + Resend: 重新发送 + ResendDesc: 将所有数据块重新发送到远程端。 Reset: 重置 ResetAllJournalCounter: 重置全部日志计数器 ResetAllJournalCounterDesc: 初始化全部日志历史。下次同步时,所有项目都会重新接收并重新发送。 ResetJournalReceived: 重置日志接收历史 ResetJournalReceivedDesc: 初始化日志接收历史。下次同步时,除当前设备发送的项目外,其余项目都会重新下载。 - ResetReceived: 重置接收记录 ResetJournalSent: 重置日志发送历史 ResetJournalSentDesc: 初始化日志发送历史。下次同步时,除当前设备已接收的项目外,其余项目都会重新发送。 ResetLocalSyncInfo: 重置同步信息 ResetLocalSyncInfoDesc: 从远程端恢复或重建本地数据库。 - ResetSentHistory: 重置发送记录 + ResetReceived: 重置已接收 + ResetSentHistory: 重置已发送历史 ResetThisDevice: 重置此设备上的同步状态 - Resend: 重新发送 - ResendDesc: 将所有数据块重新发送到远程端。 - ScheduleAndRestart: 计划执行并重启 + ScheduleAndRestart: 定时并重启 Scram: 紧急处理 SendChunks: 发送数据块 Syncing: 同步 - WarningLockedReadyAction: 我已准备好,立即解锁数据库 - WarningLockedReadyText: 为防止意外的数据仓库损坏,远程数据库已被锁定,暂停同步。(此设备已被标记为“已确认”)当你的所有设备都标记为“已确认”后,再解锁数据库。在复制过程确认此设备已完成确认之前,此警告会持续显示。 - WarningLockedResolveAction: 我已完成备份,将此设备标记为“已确认” - WarningLockedResolveText: 为防止数据仓库损坏,由于此设备尚未标记为“已确认”,远程数据库已被锁定,暂停同步。请先备份你的仓库、重置本地数据库,然后选择“将此设备标记为已确认”。在复制过程确认此设备已完成确认之前,此警告会持续显示。 + WarningLockedReadyAction: 警告已锁定准备操作 + WarningLockedReadyText: 警告已锁定准备文本 + WarningLockedResolveAction: 警告已锁定解决操作 + WarningLockedResolveText: 警告已锁定解决文本 WriteRedFlagAndRestart: 标记并重启 Patches: CompatibilityConflict: 兼容性(冲突行为) @@ -1418,65 +1457,65 @@ Ui: EdgeCaseBehaviour: 边界情况处理(行为) EdgeCaseDatabase: 边界情况处理(数据库) EdgeCaseProcessing: 边界情况处理(处理流程) - IndexedDbWarning: IndexedDB 适配器在某些场景下通常具有更好的性能,但在 LiveSync 模式下已发现可能导致内存泄漏。使用 LiveSync 模式时,请改用 IDB 适配器。 - MigrationWarning: 修改此设置需要迁移现有数据(可能需要一些时间)并重新启动 Obsidian。请先备份你的数据后再继续。 - MigratingToIdb: 正在将所有数据迁移到 IDB... - MigratingToIndexedDb: 正在将所有数据迁移到 IndexedDB... - MigrationIdbCompleted: 已完成迁移到 IDB。Obsidian 将立即使用新配置重新启动。 - MigrationIdbCompletedFollowUp: 已完成迁移到 IDB。请切换适配器并重新启动 Obsidian。 - MigrationIndexedDbCompleted: 已完成迁移到 IndexedDB。Obsidian 将立即使用新配置重新启动。 - MigrationIndexedDbCompletedFollowUp: 已完成迁移到 IndexedDB。请切换适配器并重新启动 Obsidian。 - OperationToIdb: 迁移到 IDB - OperationToIndexedDb: 迁移到 IndexedDB + IndexedDbWarning: IndexedDB 警告 + MigratingToIdb: 正在迁移到 IDB + MigratingToIndexedDb: 正在迁移到 IndexedDB + MigrationIdbCompleted: IDB 迁移完成 + MigrationIdbCompletedFollowUp: IDB 迁移完成后续操作 + MigrationIndexedDbCompleted: IndexedDB 迁移完成 + MigrationIndexedDbCompletedFollowUp: IndexedDB 迁移完成后续操作 + MigrationWarning: 迁移警告 + OperationToIdb: 操作迁移到 IDB + OperationToIndexedDb: 操作迁移到 IndexedDB Remediation: 修正 - RemediationChanged: 修正设置已更改 - RemediationNoLimit: 未设置限制 - RemediationRestartLater: 稍后 - RemediationRestartMessage: 强烈建议重新启动 Obsidian。在重启之前,部分更改可能不会生效,界面显示也可能不一致。确定要现在重启吗? - RemediationRestartNow: 立即重启 - RemediationRestarting: 修正设置已更改,正在重新启动 Obsidian... - RemediationSuffixChanged: 后缀已更改,正在重新打开数据库... - RemediationWithValue: 限制:${date}(${timestamp}) + RemediationChanged: 修复已更改 + RemediationNoLimit: 修复无限制 + RemediationRestarting: 修复正在重启 + RemediationRestartLater: 修复稍后重启 + RemediationRestartMessage: 修复重启消息 + RemediationRestartNow: 修复立即重启 + RemediationSuffixChanged: 修复后缀已更改 + RemediationWithValue: 值:${date}(${timestamp}) RemoteDatabaseSunset: 远程数据库调整(即将弃用) SwitchToIDB: 切换到 IDB SwitchToIndexedDb: 切换到 IndexedDB PowerUsers: ConfigurationEncryption: 配置加密 ConnectionTweak: CouchDB 连接调整 - ConnectionTweakDesc: 如果你在使用 IBM Cloudant 时遇到负载大小限制,请将 batch size 和 batch limit 调低。 + ConnectionTweakDesc: 连接调优描述 Default: 默认 Developer: 开发者 EncryptSensitiveConfig: 加密敏感配置项 - PromptPassphraseEveryLaunch: 每次启动时询问密码短语 - UseCustomPassphrase: 使用自定义密码短语 + PromptPassphraseEveryLaunch: 每次启动时询问密码 + UseCustomPassphrase: 使用自定义密码 Remote: - Activate: 启用 - ActiveSuffix: (当前启用) - AddConnection: 新增连接 - AddRemoteDefaultName: 新远程端 - ConfigureAndChangeRemote: 配置并切换远程端 + Activate: 激活 + ActiveSuffix: 活动后缀 + AddConnection: 添加连接 + AddRemoteDefaultName: 添加远程默认名称 + ConfigureAndChangeRemote: 配置并更改远程 ConfigureE2EE: 配置端到端加密 ConfigureRemote: 配置远程端 - DeleteRemoteConfirm: 确定要删除远程配置“${name}”吗? - DeleteRemoteTitle: 删除远程配置 + DeleteRemoteConfirm: 删除远程配置“${name}”? + DeleteRemoteTitle: 删除远程标题 DisplayName: 显示名称 - DuplicateRemote: 复制远程配置 - DuplicateRemoteSuffix: ${name}(副本) + DuplicateRemote: 复制远程 + DuplicateRemoteSuffix: 复制远程后缀 E2EEConfiguration: 端到端加密配置 Export: 导出 FetchRemoteSettings: 获取远程设置 ImportConnection: 导入连接 - ImportConnectionPrompt: 粘贴连接字符串 + ImportConnectionPrompt: 导入连接提示 ImportedCouchDb: 已导入的 CouchDB - ImportedRemote: 远程端 + ImportedRemote: 已导入的远程 MoreActions: 更多操作 PeerToPeerPanel: 点对点同步 - RemoteConfigurationPrefix: 远程配置 + RemoteConfigurationPrefix: 远程配置前缀 RemoteDatabases: 远程数据库 RemoteName: 远程名称 - RemoteNameCouchDb: CouchDB ${host} - RemoteNameP2P: P2P ${room} - RemoteNameS3: S3 ${bucket} + RemoteNameCouchDb: 远程名称 CouchDB + RemoteNameP2P: 远程名称 P2P + RemoteNameS3: 远程名称 S3 Rename: 重命名 Selector: AddDefaultPatterns: 添加默认模式 @@ -1494,135 +1533,272 @@ Ui: TargetPatterns: 目标模式 TargetPatternsDesc: 用于匹配需要同步文件的模式 Setup: - RerunWizardButton: 重新运行向导 + RerunWizardButton: 重新运行向导按钮 RerunWizardDesc: 重新运行引导向导,再次设置 Self-hosted LiveSync。 RerunWizardName: 重新运行引导向导 SyncSettings: - Merge: 合并 Fetch: 获取 + Merge: 合并 Overwrite: 覆盖 SetupWizard: + Bucket: + AccessKeyId: 访问密钥 ID + BucketName: 存储桶名称 + EndpointUrl: 端点 URL + FolderPrefix: 文件夹前缀 + FolderPrefixDesc: 如果你想把数据存储在存储桶内的特定文件夹,可以在这里指定文件夹前缀。否则留空,数据会存储在存储桶根目录。 + InternalApiDesc: 如果无法避免 CORS 问题,可以尝试此选项。它会使用 Obsidian 的内部 API 与 S3 服务器通信。不符合 Web + 标准,但可以工作。请注意,未来 Obsidian 版本可能会破坏此方式。 + PlaceholderAccessKeyId: 输入访问密钥 ID + PlaceholderBucketName: 输入存储桶名称 + PlaceholderFolderPrefix: 输入文件夹前缀(可选) + PlaceholderRegion: 输入区域(例如 us-east-1,R2 可用 auto) + PlaceholderSecretAccessKey: 输入秘密访问密钥 + Region: 区域 + SecretAccessKey: 秘密访问密钥 + Title: S3/MinIO/R2 配置 + UseInternalApi: 使用内部 API + UsePathStyleAccess: 使用路径样式访问 Common: - Back: 不,带我返回 + AdvancedSettings: 高级设置 + Back: 返回 Cancel: 取消 - ProceedSelectOption: 请选择一个选项后继续 + CheckingConnection: 正在检查连接,请稍候。 + ContinueAnyway: 仍然继续 + CustomHeaders: 自定义请求头 + ErrorConnectionTest: 连接测试时发生错误:${error} + ErrorConnectServer: 无法连接到服务器。请检查设置。 + ErrorConnectServerDetail: 无法连接到服务器:${error} + ErrorCreateReplicator: 无法创建同步实例。 + ExperimentalSettings: 实验性设置 + HttpsOnlyMobile: 在 Obsidian 移动端只能使用安全(HTTPS)连接。 + ProceedSelectOption: 请选择一个选项 + CouchDB: + DatabaseName: 数据库名称 + DatabaseNameDesc: 数据库名称不能使用大写字母、空格或特殊字符,也不能以下划线(_)开头。 + InternalApiDesc: 如果无法避免 CORS 问题,可以尝试此选项。它会使用 Obsidian 的内部 API 与 CouchDB + 服务器通信。不符合 Web 标准,但可以工作。请注意,未来 Obsidian 版本可能会破坏此方式。 + JwtAlgorithm: JWT 算法 + JwtExpirationDuration: JWT 过期时间(分钟) + JwtKey: JWT 密钥 + JwtKeyDesc: HS256/HS512 算法请提供共享密钥。ES256/ES512 算法请提供 pkcs8 PEM 格式私钥。 + JwtKeyId: JWT Key ID(kid) + JwtSubject: JWT Subject(sub) + JwtWarning: JWT(JSON Web Token)认证允许你使用令牌安全地连接 CouchDB 服务器。请确保 CouchDB 已配置为接受 + JWT,并且提供的密钥和设置与服务器配置匹配。此功能尚未经过非常充分的验证。 + Password: 密码 + PlaceholderDatabaseName: 输入数据库名称 + PlaceholderJwtKey: 输入 JWT 共享密钥或私钥 + PlaceholderJwtKeyId: 输入 JWT Key ID + PlaceholderJwtSubject: 输入 JWT Subject(CouchDB 用户名) + PlaceholderPassword: 输入密码 + PlaceholderUsername: 输入用户名 + Title: CouchDB 配置 + Url: 服务器 URL + UseInternalApi: 使用内部 API + UseJwtAuthentication: 使用 JWT 认证 + Username: 用户名 + CouchDBCheck: + DetectAndFix: 检测并修复 CouchDB 问题 + Fix: 修复 + E2EE: + AlgorithmGuidance: 大多数情况下应使用默认算法(${algorithm})。只有在现有 Vault 使用不同格式加密时才需要更改此设置。 + AlgorithmWarning: 更改加密算法会导致无法访问以前用其他算法加密的数据。请确保所有设备都配置为使用相同算法,以保持数据可访问。 + EncryptionAlgorithm: 加密算法 + Fetch: + BackupDone: 我已创建 Vault 备份。 + BackupQuestion: 继续之前是否已创建备份? + BackupRecommendation: 建议您将 Vault 文件夹复制到安全位置。这将作为保障,以防出现大量冲突或意外同步到错误的目标。 + BackupSkipped: 我了解风险,将在没有备份的情况下继续。 + BackupUnable: 我无法创建 Vault 备份。 + BackupUnableNote: 如果您了解风险仍希望继续,请选择此项。 + BackupUnableWarning: 强烈建议在继续之前创建备份。不备份继续可能导致数据丢失。 + ConflictNote: 此外,如果服务器数据中已存在冲突,它们将原样同步到此设备,您需要在本地解决它们。 + Guidance: 这将使用服务器上的最新数据重建此设备上的本地数据库。此操作旨在解决同步不一致并恢复正常功能。 + ImportantBody: 如果此设备上的 Vault 中有未同步的更改,重置后它们可能会与服务器版本产生分歧。这可能导致大量文件冲突。 + ImportantTitle: 重要提示 + PreventFetchConfig: 防止从服务器获取配置 + Proceed: 重置并恢复同步 + Title: 重置此设备上的同步 + UnbalancedNote: 在此场景下,Self-hosted LiveSync 将为每个文件重新创建元数据,并会刻意生成冲突。如果文件内容相同,这些冲突将自动解决。 + VaultIdentical: 此 Vault 中的文件与服务器上的文件几乎相同。 + VaultIdenticalDesc: (例如,在另一台电脑上恢复后立即、或从备份恢复后) + VaultIndependent: 此 Vault 为空,或仅包含服务器上没有的新文件。 + VaultIndependentDesc: (例如,首次在新智能手机上设置、从全新状态开始) + VaultQuestion: 为了尽量减少新冲突的创建,请选择最能描述当前 Vault 状态的选项。应用将根据您的选择以最合适的方式检查您的文件。 + VaultUnbalanced: 此 Vault 中的文件与服务器之间可能存在差异。 + VaultUnbalancedDesc: (例如,在离线状态下编辑了大量文件后) Intro: - ExistingOption: 将此设备加入已有同步配置 - ExistingOptionDesc: 如果你已经在另一台电脑或手机上使用同步,请选择此项。此选项用于将当前设备连接到既有同步配置。 - NewOption: 首次设置同步 - NewOptionDesc: 如果你正把这台设备作为第一台同步设备进行配置,请选择此项。 - ProceedExisting: 是的,我要将此设备加入现有同步 - ProceedNew: 是的,我要开始新的同步配置 - Question: 首先,请选择最符合你当前情况的选项。 - Title: 欢迎使用 Self-hosted LiveSync - Guidance: 接下来我们会通过几个问题,帮助你更轻松地完成同步配置。 - SelectExisting: - Guidance: 你正在将此设备加入已有同步配置。 - ManualOption: 手动输入服务器信息 - ManualOptionDesc: 手动重新配置与你其他设备相同的服务器信息。此方式仅适用于高级用户。 - ProceedManual: 我知道服务器信息,让我手动输入 - ProceedQr: 使用本设备摄像头扫描活动设备上显示的二维码 - ProceedSetupUri: 使用 Setup URI 继续 - Question: 请选择一种从其他设备导入设置的方法。 - QrOption: 扫描二维码(移动端推荐) - QrOptionDesc: 使用本设备摄像头扫描活动设备上显示的二维码。 - SetupUriOption: 使用 Setup URI(推荐) - SetupUriOptionDesc: 粘贴从某台已启用设备生成的 Setup URI。 - Title: 设备设置方式 - SelectNew: - Guidance: 接下来将继续配置服务器连接信息。 - ManualOption: 手动输入服务器信息 - ManualOptionDesc: 如果你没有 Setup URI,或希望自行配置更详细的参数,可选择此高级选项。 - ProceedManual: 我知道服务器信息,让我手动输入 - ProceedSetupUri: 使用 Setup URI 继续 - Question: 你希望如何配置服务器连接? - SetupUriOption: 使用 Setup URI(推荐) - SetupUriOptionDesc: Setup URI 是一段包含服务器地址和认证信息的文本。如果你的服务器安装脚本已经生成了它,这是最简单且安全的配置方式。 - Title: 连接方式 + ExistingOption: 我已经配置了服务器 + ExistingOptionDesc: 连接到现有的 LiveSync 服务器 + Guidance: 欢迎!让我们设置 LiveSync。您是 LiveSync 新用户,还是已经配置了远程服务器? + NewOption: 我是 LiveSync 新用户 + NewOptionDesc: 首次设置 LiveSync + ProceedExisting: 连接到现有服务器 + ProceedNew: 新建设置 + Question: 您的情况是? + Title: 设置向导 + Log: + E2EEConfigurationCancelled: 已取消 E2EE 配置。 + ManualConfigurationCancelled: 已取消手动配置。 + NoSettingsChanges: 未检测到设置更改。跳过应用向导中的设置。 + OnboardingCancelled: 用户已取消引导流程。 + QrCodeDialogClosed: 二维码对话框已关闭。 + QrCodeResult: 二维码结果:${result} + SettingApplied: 设置已应用 + SettingsApplied: 向导中的设置已应用。 + SetupUriDialogCancelled: 已取消设置 URI 对话框。 + SetupUriDialogClosed: 设置 URI 对话框已关闭。 + UserCancelledApplyingSettings: 用户已取消应用向导中的设置。 OutroAskUserMode: - CompatibleOption: 远程端已配置完成,且当前配置兼容(或已通过本次操作变为兼容)。 - CompatibleOptionDesc: 除非你非常确定,否则选择此项存在风险。它假定服务器配置与当前设备兼容。如果事实并非如此,可能会导致数据丢失。请确认你了解后果。 - ExistingOption: 远程服务器已经配置完成,我想让此设备加入同步。 - ExistingOptionDesc: 选择此项后,此设备会加入已有服务器。你需要将服务器上的现有同步数据获取到此设备。 - Guidance: 服务器连接已成功配置。下一步需要重建本地数据库,也就是同步状态信息。 - NewOption: 我是第一次配置新服务器 / 我想重置现有服务器。 - NewOptionDesc: 选择此项后,服务器会使用当前设备上的数据进行初始化。服务器上的现有数据将被完全覆盖。 - ProceedApplySettings: 应用这些设置 - ProceedNext: 继续下一步 - Question: 请选择你的当前情况。 - Title: 即将完成:还需要做出选择 + CompatibleOption: 使用兼容模式 + CompatibleOptionDesc: 如果远程是使用旧版 LiveSync 设置的,请使用此选项。某些功能可能受限。 + ExistingOption: 此设备已有数据 + ExistingOptionDesc: 将本地文件与远程合并。如果此保险库中已有笔记,请使用此选项。 + Guidance: 选择此设备在 LiveSync 中的使用方式。这会影响初始同步行为。 + NewOption: 设置为新设备 + NewOptionDesc: 从新的保险库开始。设置后将获取远程文件。 + ProceedApplySettings: 应用设置 + ProceedNext: 继续 + Question: 选择此设备的模式: + Title: 您将如何使用此设备? + OutroExisting: + Guidance: 设置已完成。重启后将获取远程数据。点击下方按钮重启并开始同步。 + Proceed: 重启并获取数据 + Question: 请点击下方按钮重启并进入数据获取确认。 + Title: 设置完成:准备获取同步数据 OutroNewUser: - GuidancePrimary: 服务器连接已成功配置。下一步将根据当前设备上的数据,在服务器端建立同步数据。 - GuidanceWarning: 重启后,当前设备上的数据会作为主副本上传到服务器。请注意,服务器上现有的非预期数据将被完全覆盖。 - Important: 重要 - Proceed: 重启并初始化服务器 - Question: 请选择下方按钮,重启并进入最终确认步骤。 - Title: 设置完成:准备初始化服务器 + GuidancePrimary: 您的 LiveSync 配置已设置完成。关闭此对话框后将应用设置。 + GuidanceWarning: 如果远程保险库中有数据,这将覆盖现有文件。请确保您使用的是空保险库或已做好备份。 + Important: 重要提示: + Proceed: 应用并重启 + Question: 准备好应用配置了吗? + Title: 设置完成 + P2P: + AutoBroadcast: 自动广播更改 + AutoBroadcastDesc: 启用自动广播更改后,更改会自动广播给已连接的对等设备,无需手动操作。这会请求对等设备获取此设备的更改。 + AutoStart: 自动启动 P2P 连接 + AutoStartDesc: 启用自动启动 P2P 连接后,插件启动时会自动开始 P2P 连接。 + DevicePeerId: 设备对等 ID + Enabled: 已启用 + ErrorConnectPeers: 无法连接到其他对等设备:${error} + GenerateRandomId: 生成随机 ID + GroupId: 组 ID + GroupPassphraseDesc: 组 ID 和密码短语用于识别你的设备组。请确保所有要同步的设备使用相同的组 ID 和密码短语。组 ID + 不限于生成格式,你可以使用任意字符串作为组 ID。 + NoPeersFound: 你的设置看起来正确,但没有找到其他对等设备。 + PlaceholderRelayUrl: 输入中继 URL + PlaceholderTurnCredential: 输入 TURN 凭据 + PlaceholderTurnUsername: 输入 TURN 用户名 + PublicTurnWarning: 使用公共 TURN + 服务器可能带来隐私影响,因为你的数据会通过第三方服务器中继。即使数据已加密,对方仍可能知道你的存在。使用前请确保你信任 TURN + 服务器提供者和网络管理员。如果可行,请考虑为自己的 FQDN 设置 TURN 服务器。 + RelayUrl: 中继 URL + Title: P2P 配置 + TurnCredential: TURN 凭据 + TurnServerDesc: 只有在严格 NAT 或防火墙阻止直接 P2P 连接时,才需要 TURN 服务器设置。大多数情况下可以留空。 + TurnServerUrls: TURN 服务器 URL(逗号分隔) + TurnUsername: TURN 用户名 + UseDefaultRelay: 使用 vrtmrz 的中继服务器 + Rebuild: + BackupBeforeProceeding: 当然,我们可以在继续之前备份数据。 + BackupDone: 我已创建 Vault 备份。 + BackupQuestion: 继续之前是否已创建备份? + BackupSkipped: 我了解风险,将在没有备份的情况下继续。 + BackupUnable: 我无法创建 Vault 备份。 + BackupUnableAdvice: 您应该创建一个新的同步目标并在那里重建数据。之后,逐一将每台设备同步到使用新远程的新 Vault。 + BackupWarning: 这是一个极其强大的操作。强烈建议您将 Vault 文件夹复制到安全位置。 + ConfirmDataLoss: 我理解其他手机或电脑上所做的所有更改可能会丢失。 + ConfirmIrreversible: 我理解此操作一旦执行不可逆转。 + ConfirmSyncDisabled: 我理解其他设备将无法再同步,需要重置同步信息。 + ConfirmTitle: 请确认以下事项 + Guidance: 此过程将首先删除服务器上的所有现有同步数据。随后,将使用此设备上当前 Vault 的状态作为唯一权威主副本,完全重建服务器数据。 + PreventFetchConfig: 防止从服务器获取配置 + Proceed: 我理解,覆盖服务器 + ResetNotifyOtherDevices: 重置远程后,其他设备将收到通知。 + ResolveOnOtherDevices: 有一种方法可以在其他设备上解决此问题。 + Title: 最终确认:用此设备的文件覆盖服务器数据 + WhenToUse: 仅在特殊情况下才应执行此操作,例如服务器数据完全损坏、其他所有设备上的更改不再需要、或数据库大小与 Vault 大小相比异常庞大时。 + SelectExisting: + Guidance: 选择如何连接到您现有的 LiveSync 服务器。 + ManualOption: 手动配置 + ManualOptionDesc: 自行输入服务器详细信息和凭据 + ProceedManual: 手动配置 + ProceedQr: 扫描二维码 + ProceedSetupUri: 使用设置 URI + QrOption: 扫描二维码 + QrOptionDesc: 从已配置的设备扫描二维码 + Question: 选择连接方式: + SetupUriOption: 使用设置 URI + SetupUriOptionDesc: 从服务器提供的设置 URI 导入配置 + Title: 连接到现有服务器 + SelectNew: + Guidance: 选择您想如何配置新的 LiveSync 连接。 + ManualOption: 手动配置 + ManualOptionDesc: 自行输入服务器详细信息和凭据 + ProceedManual: 手动配置 + ProceedSetupUri: 使用设置 URI + Question: 选择配置方式: + SetupUriOption: 使用设置 URI + SetupUriOptionDesc: 从服务器提供的设置 URI 导入配置 + Title: 设置新连接 SetupRemote: - BucketOption: S3/MinIO/R2 对象存储 - BucketOptionDesc: 使用日志文件进行同步。你需要先准备好兼容 S3/MinIO/R2 的对象存储服务。 - CouchDbOptionDesc: 这是当前设计下最适合的同步方式,所有功能都可用。你需要先准备好 CouchDB 实例。 - Guidance: 请选择你要连接的服务器类型。 - P2POption: 仅点对点 - P2POptionDesc: 启用设备之间的直接同步。无需服务器,但两台设备必须同时在线,且部分功能可能受限。互联网连接仅用于信令,不用于传输数据。 - ProceedBucket: 继续配置 S3/MinIO/R2 - ProceedCouchDb: 继续配置 CouchDB - ProceedP2P: 继续配置仅点对点模式 - Title: 输入服务器信息 + BucketOption: LiveSync 存储桶 + BucketOptionDesc: 使用 LiveSync 配套服务内置的存储桶服务器 + CouchDbOption: CouchDB + CouchDbOptionDesc: 使用您自己的 CouchDB 实例,完全控制同步服务器 + Guidance: 选择您要使用的远程服务器类型: + P2POption: 点对点(实验性) + P2POptionDesc: 无需中央服务器,直接在设备之间同步 + ProceedBucket: 设置存储桶 + ProceedCouchDb: 设置 CouchDB + ProceedP2P: 设置 P2P + Title: 设置远程服务器 + UseSetupURI: + ButtonCancel: 取消 + ButtonProceed: 测试设置并继续 + ErrorFailedToParse: 解析设置 URI 失败。 + ErrorPassphraseRequired: 密码为必填项。 + Guidance: 请输入在服务器安装期间或在其他设备上生成的设置 URI,以及 Vault 密码。 + InvalidInfo: 设置 URI 似乎无效。请检查是否正确复制。 + Label: 设置 URI + LabelPassphrase: 密码 + PlaceholderPassphrase: 请输入您的密码 + Title: 输入设置 URI + ValidMessage: 设置 URI 有效,可以使用。 Unique name between all synchronized devices. To edit this setting, please disable customization sync once.: 所有同步设备之间的唯一名称。要编辑此设置,请首先禁用自定义同步 Use a custom passphrase: 使用自定义密码短语 +Use a Setup URI (Recommended): 使用 Setup URI(推荐) Use Custom HTTP Handler: 使用自定义 HTTP 处理程序 Use dynamic iteration count: 使用动态迭代次数 +Use Only Local Chunks: 仅使用本地块 +Use Request API to avoid `inevitable` CORS problem: 使用 Request API 避免“不可避免”的 CORS 问题 Use Segmented-splitter: 使用分段分割器 Use splitting-limit-capped chunk splitter: 使用分割限制上限的块分割器 Use the trash bin: 使用回收站 Use timeouts instead of heartbeats: 使用超时而不是心跳 username: 用户名 Username: 用户名 +"V1: Legacy": V1:旧版 +"V2: Simple (Default)": V2:简单(默认) +"V2.5: Lexical chunks": V2.5:词法块 +"V3: Fine deduplication": V3:精细去重 Verbose Log: 详细日志 Verify all: 全部校验 Verify and repair all files: 校验并修复所有文件 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.: "警告!这将严重影响性能。并且日志不会以默认名称同步。请小心处理日志;它们通常包含您的敏感信息 " We cannot change the device name while this feature is enabled. Please disable this feature to change the device name.: 启用此功能时无法更改设备名称。如需修改设备名称,请先禁用此功能。 +We will now guide you through a few questions to simplify the synchronisation setup.: 接下来我们会通过几个问题,引导你更轻松地完成同步设置。 +We will now proceed with the server configuration.: 接下来将继续进行服务器配置。 +Welcome to Self-hosted LiveSync: 欢迎使用 Self-hosted LiveSync When you save a file in the editor, start a sync automatically: 当您在编辑器中保存文件时,自动开始同步 +While enabled, it causes very performance impact but debugging replication testing and other features will be enabled. Please disable this if you have not read the source code. Requires restart of Obsidian.: 启用后会对性能造成很大影响,但会启用调试、复制测试和其他功能。如果你没有阅读源码,请关闭此项。需要重启 Obsidian。 Write credentials in the file: 将凭据写入文件 Write logs into the file: 将日志写入文件 xxhash32 (Fast but less collision resistance): xxhash32(速度快,但抗碰撞能力较弱) xxhash64 (Fastest): xxhash64(最快) -"Welcome to Self-hosted LiveSync": "欢迎使用 Self-hosted LiveSync" -"We will now guide you through a few questions to simplify the synchronisation setup.": "接下来我们会通过几个问题,引导你更轻松地完成同步设置。" -"First, please select the option that best describes your current situation.": "首先,请选择最符合你当前情况的选项。" -"I am setting this up for the first time": "我是第一次进行设置" -"(Select this if you are configuring this device as the first synchronisation device.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": "(如果你正在将此设备配置为第一台同步设备,请选择此项。)此选项适合初次使用 LiveSync,并希望从头开始配置的用户。" -"I am adding a device to an existing synchronisation setup": "我要将设备加入现有同步配置" -"(Select this if you are already using synchronisation on another computer or smartphone.) This option is suitable if you are new to LiveSync and want to set it up from scratch.": "(如果你已经在另一台电脑或手机上使用同步,请选择此项。)此选项适合将当前设备加入现有 LiveSync 配置的用户。" -"Yes, I want to set up a new synchronisation": "是的,我要配置新的同步" -"Yes, I want to add this device to my existing synchronisation": "是的,我要把这台设备加入现有同步" -"No, please take me back": "不,返回上一步" -"Device Setup Method": "设备设置方式" -"You are adding this device to an existing synchronisation setup.": "你正在将此设备加入到现有同步配置中。" -"Please select a method to import the settings from another device.": "请选择一种从其他设备导入设置的方法。" -"Use a Setup URI (Recommended)": "使用 Setup URI(推荐)" -"Paste the Setup URI generated from one of your active devices.": "粘贴从一台已在使用的设备上生成的 Setup URI。" -"Scan a QR Code (Recommended for mobile)": "扫描二维码(移动端推荐)" -"Scan the QR code displayed on an active device using this device's camera.": "使用当前设备的摄像头扫描另一台已在使用设备上显示的二维码。" -"Enter the server information manually": "手动输入服务器信息" -"Configure the same server information as your other devices again, manually, very advanced users only.": "手动重新输入与你其他设备相同的服务器信息。仅适合高级用户。" -"Proceed with Setup URI": "继续使用 Setup URI" -"I know my server details, let me enter them": "我知道服务器详情,让我手动输入" -"Please select an option to proceed": "请选择一个选项以继续" -"Connection Method": "连接方式" -"We will now proceed with the server configuration.": "接下来将继续进行服务器配置。" -"How would you like to configure the connection to your server?": "你希望如何配置与服务器的连接?" -"A Setup URI is a single string of text containing your server address and authentication details. Using a URI, if one was generated by your server installation script, provides a simple and secure configuration.": "Setup URI 是一段包含服务器地址与认证信息的文本。如果服务器安装脚本已经生成了 URI,使用它可以更简单且更安全地完成配置。" -"This is an advanced option for users who do not have a URI or who wish to configure detailed settings.": "这是面向没有 URI 或希望手动配置详细参数的高级选项。" -"Enter Server Information": "输入服务器信息" -"Please select the type of server to which you are connecting.": "请选择你要连接的服务器类型。" -"Continue to CouchDB setup": "继续进行 CouchDB 设置" -"Continue to S3/MinIO/R2 setup": "继续进行 S3/MinIO/R2 设置" -"Continue to Peer-to-Peer only setup": "继续进行仅 Peer-to-Peer 设置" -"This is the most suitable synchronisation method for the design. All functions are available. You must have set up a CouchDB instance.": "这是最符合当前设计的同步方式,所有功能均可用。你需要事先部署好 CouchDB 实例。" -"S3/MinIO/R2 Object Storage": "S3/MinIO/R2 对象存储" -"Synchronisation utilising journal files. You must have set up an S3/MinIO/R2 compatible object storage.": "通过日志文件进行同步。你需要事先部署好兼容 S3/MinIO/R2 的对象存储服务。" -"Peer-to-Peer only": "仅 Peer-to-Peer" -"This feature enables direct synchronisation between devices. No server is required, but both devices must be online at the same time for synchronisation to occur, and some features may be limited. Internet connection is only required to signalling (detecting peers) and not for data transfer.": "此功能可在设备之间直接同步,无需服务器;但同步时两台设备必须同时在线,且部分功能可能受限。互联网连接仅用于信令(发现对端),不用于数据传输。" +xxhash64 is the current default.: 当前默认值为 xxhash64。 +Yes, I want to add this device to my existing synchronisation: 是的,我要把这台设备加入现有同步 +Yes, I want to set up a new synchronisation: 是的,我要配置新的同步 +You are adding this device to an existing synchronisation setup.: 你正在将此设备加入到现有同步配置中。 +You can enable this setting to process the files with size mismatches, these files can be created by some APIs or integrations.: 可启用此设置来处理大小不匹配的文件;这些文件可能由某些 API 或集成创建。