From 17fe6c1518fa3a5379fd28fda062218aa5949eed Mon Sep 17 00:00:00 2001 From: Namwon Kim Date: Thu, 30 Jul 2026 09:15:41 +0900 Subject: [PATCH] Complete and correct the Korean translations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Korean coverage was 796 of 1132 keys (70%), so a large part of the UI fell back to English. Alongside the missing entries, the existing translations carried a few defects that were visible to users. Fixes: - Three messages had lost the `$` from their placeholders, leaving a literal `{origin}`, `{org}` and `{from}->{to}` on screen, because `$msg()` only substitutes `${...}`. - `dialog.yourLanguageAvailable` referenced `%{Display language}`, but the key is `Display Language`, so the raw token was shown. Corrected to match ja. - Sixteen onboarding messages ended with the Japanese full stop `。`. - Four messages hard-coded a particle after a variable (`${measuredSize}가`), which is ungrammatical for values ending in a consonant. They now use the paired form `이(가)`, `을(를)`, `(으)로`. Terminology is now consistent with the Obsidian Korean UI and with the definitions in docs/terms.md: - `vault` is 보관함, `device` is 기기, `status bar` is 상태 표시줄. - `chunk` is 청크 everywhere; the Eden settings had rendered it as 변경 기록 ("change record"), which is not what a chunk is. - `Compaction` is 압축 정리, separating it from `Data Compression` (데이터 압축), which had shared the same word. - HTTP `Origin` is 출처; it had been 원점, the geometric origin. - Six English strings that had mapped to two different Korean strings each are now unified. The remaining 336 keys are translated, including the setup wizard outro, the insecure-chunk and v0.25.6 recovery dialogues, and the database adapter migration messages. This ports vrtmrz/livesync-commonlib#79 to this repository, following the v1.0.0 boundary change that moved application translations here. On top of the original work, the 17 keys newly introduced in v1.0.0 (the P2P setup wizard Invitation, OutroNewP2PUser and RebuildEverythingP2P dialogues, and the moduleCheckRemoteSize notices) are translated as well. Verified with _tools/checkI18nCoverage.ts (ko: 1132/1132, 0 missing), tsc --noEmit, and a dev build. Generated resources are committed as produced by `npm run i18n:bake`; besides the `ko` entries it also trims a stale trailing space from five es/zh entries in combinedMessages.prod.ts that had been left behind by the migration. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01EtFsro96LHztmoYmRjtfAy --- src/common/messages/combinedMessages.prod.ts | 624 +++++++--- src/common/messagesJson/ko.json | 606 +++++++--- src/common/messagesYAML/ko.yaml | 1144 ++++++++++++------ 3 files changed, 1693 insertions(+), 681 deletions(-) diff --git a/src/common/messages/combinedMessages.prod.ts b/src/common/messages/combinedMessages.prod.ts index 00cfba16..d1225fdc 100644 --- a/src/common/messages/combinedMessages.prod.ts +++ b/src/common/messages/combinedMessages.prod.ts @@ -66,7 +66,7 @@ export const allMessages: Readonly Storage": { def: "Database -> Storage", + ko: "데이터베이스 -> 스토리지", "zh-tw": "資料庫 -> 儲存空間", }, "Database Adapter": { @@ -787,7 +792,7 @@ export const allMessages: Readonly [!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> 전체 재구성을 실행할 경우, 모든 기기가 반드시 동기화되어 있어야 합니다. 플러그인이 최대한 병합하려고 시도하긴 하지만 완전하지 않을 수 있습니다.", + 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\n> [!WARNING]\n> 전체 재구축을 실행할 때는 모든 기기가 동기화되어 있는지 확인해 주세요. 플러그인이 최대한 병합하려고 시도하기는 합니다.\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", + 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", }, "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", @@ -2620,15 +2635,17 @@ export const allMessages: Readonly [!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", ja: "リモートストレージの容量が不足する前に対策を講じるため、**最大データベース容量の警告**を設定できます。\nこれを有効にしますか?\n\n> [!MORE]-\n> - 0: ストレージサイズについて警告しない。\n> 自宅サーバーなど、リモートストレージに十分な容量がある場合に推奨されます。ストレージサイズを確認し、手動で再構築できます。\n> - 800: リモートストレージサイズが800MBを超えたら警告。\n> 1GB制限のfly.ioやIBM Cloudantを使用している場合に推奨されます。\n> - 2000: リモートストレージサイズが2GBを超えたら警告。\n\n制限に達した場合、段階的に制限を増やすよう求められます。\n", - ko: "**원격 스토리지 공간이 부족해지기 전에 미리 조치할 수 있도록** 데이터베이스 용량 경고를 설정할 수 있습니다.\n이 기능을 활성화하시겠습니까?\n\n> [!MORE]-\n> - 0: 스토리지 용량에 대한 경고 없음\n> 자체 서버를 사용하는 등 여유 공간이 충분한 경우에 권장됩니다. 스토리지 용량을 직접 확인하고 수동으로 재구성할 수 있습니다.\n> - 800: 원격 스토리지 용량이 800MB를 초과하면 경고\n> 1GB 제한이 있는 fly.io나 IBM Cloudant 사용 시 권장됩니다.\n> - 2000: 원격 스토리지 용량이 2GB를 초과하면 경고\n\n설정한 용량 한도에 도달하면, 단계적으로 경고 한도를 늘릴지 여부를 묻게 됩니다.\n", + 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", }, "moduleCheckRemoteSize.noticeExceeded": { def: "Remote storage size is ${measuredSize}, above the configured ${notifySize} notification threshold. {HERE}", + ko: "원격 스토리지 크기 ${measuredSize}이(가) 설정된 알림 임계값 ${notifySize}을(를) 초과했습니다. {HERE}", }, "moduleCheckRemoteSize.noticeNotConfigured": { def: "Remote storage size notifications are not configured. {HERE}", + ko: "원격 스토리지 크기 알림이 설정되어 있지 않습니다. {HERE}", }, "moduleCheckRemoteSize.option2GB": { def: "2GB (Standard)", @@ -2702,6 +2719,7 @@ export const allMessages: Readonly [!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> 상태가 확실하지 않다면 이 과정을 다시 실행해 보세요. 재시작 전에 반드시 볼트를 백업해 주세요.", + ko: "Self-hosted LiveSync가 일부 이벤트를 무시하도록 설정되어 있습니다. 이 설정이 맞습니까?\n\n| 유형 | 상태 | 설명 |\n|:---:|:---:|---|\n| 스토리지 이벤트 | ${fileWatchingStatus} | 모든 수정 사항이 무시됩니다 |\n| 데이터베이스 이벤트 | ${parseReplicationStatus} | 모든 동기화 변경이 지연됩니다 |\n\n이벤트 감지를 다시 활성화하고 Obsidian을 재시작하시겠습니까?\n\n> [!DETAILS]-\n> 이 플래그는 플러그인이 재구축하거나 가져오는 동안 설정한 것입니다. 처리가 비정상적으로 종료되면 의도치 않게 남아 있을 수 있습니다.\n> 확실하지 않다면 해당 처리를 다시 실행해 보세요. 반드시 보관함을 백업해 두시기 바랍니다.\n", ru: "Self-hosted LiveSync has been configured to ignore some events. Is this correct?\n\n| Type | Status | Note |\n|:---:|:---:|---|\n| Storage Events | ${fileWatchingStatus} | Every modification will be ignored |\n| Database Events | ${parseReplicationStatus} | Every synchronised change will be postponed |\n\nDo you want to resume them and restart Obsidian?\n\n> [!DETAILS]-\n> These flags are set by the plug-in while rebuilding, or fetching. If the process ends abnormally, it may be kept unintended.\n> If you are not sure, you can try to rerun these processes. Make sure to back your vault up.\n", zh: "Self-hosted LiveSync 已被配置为忽略某些事件。这样对吗?\n\n| 类型 | 状态 | 说明 |\n|:---:|:---:|---|\n| 存储事件 | ${fileWatchingStatus} | 所有修改都将被忽略 |\n| 数据库事件 | ${parseReplicationStatus} | 所有同步的更改都将被推迟 |\n\n您想恢复它们并重启 Obsidian 吗?\n\n> [!DETAILS]-\n> 这些标志是在重建或获取时由插件设置的。如果过程异常结束,它们可能会被无意中保留。\n> 如果您不确定,可以尝试重新运行这些过程。请确保备份您的库。\n", }, @@ -2889,7 +2907,7 @@ export const allMessages: Readonly ${key} défini à ${value}", he: "תצורת CouchDB: ${title} -> הגדר ${key} ל-${value}", ja: "CouchDB設定: ${title} -> ${key}を${value}に設定", - ko: "CouchDB 구성: ${title} -> ${key}를 ${value}로 설정", + ko: "CouchDB 구성: ${title} -> ${key}을(를) ${value}(으)로 설정", ru: "Конфигурация CouchDB: title -> Установить key в value", zh: "CouchDB 配置:${title} -> 设置 ${key} 为 ${value}", }, @@ -4128,6 +4159,7 @@ export const allMessages: Readonly\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설정만 저장합니다. **⚠️ 주의: 이 방법은 데이터 손상을 일으킬 수 있습니다.** 일반적으로는 전체 데이터베이스 재구축이 필요합니다.", + ko: "변경 사항을 적용하려면 데이터베이스를 재구축해야 합니다. 변경 사항을 적용할 방법을 선택해 주세요.\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설정만 저장합니다. **주의: 데이터가 손상될 수 있습니다.** 일반적으로는 데이터베이스 재구축이 필요합니다.", ru: "Требуется перестроение баз данных для применения изменений.", zh: "需要重建数据库以应用更改。请选择应用更改的方法。\n\n
\n图例\n\n| 符号 | 含义 |\n|: ------ :| ------- |\n| ⇔ | 最新 |\n| ⇄ | 同步以平衡 |\n| ⇐,⇒ | 传输以覆盖 |\n| ⇠,⇢ | 从另一侧传输以覆盖 |\n\n
\n\n## ${OPTION_REBUILD_BOTH}\n概览:📄 ⇒¹ 💻 ⇒² 🛰️ ⇢ⁿ 💻 ⇄ⁿ⁺¹ 📄\n使用此设备的现有文件重建本地和远程数据库。\n这将导致其他设备被锁定,并且它们需要执行获取操作。\n## ${OPTION_FETCH}\n概览:📄 ⇄² 💻 ⇐¹ 🛰️ ⇔ 💻 ⇔ 📄\n初始化本地数据库并使用从远程数据库获取的数据重建它。\n这种情况包括您已经重建了远程数据库的情况。\n## ${OPTION_ONLY_SETTING}\n仅存储设置。**注意:这可能导致数据损坏**;通常需要重建数据库", }, @@ -4622,7 +4655,7 @@ export const allMessages: Readonly${to}", he: "⚠ CORS Origin אינו תואם ${from}->${to}", ja: "⚠ CORS Originが一致しません ${from}->${to}", - ko: "⚠ CORS 원점이 일치하지 않습니다 {from}->{to}", + ko: "⚠ CORS 출처가 일치하지 않습니다 ${from}->${to}", ru: "⚠ CORS Origin не совпадает from->to", zh: "⚠ CORS 源不匹配 {from}->{to}", }, @@ -5296,7 +5332,7 @@ export const allMessages: Readonly[!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> 하지만 가장 오래되고 가장 직접적인 접근 방식이기 때문에 종종 가장 안정적인 방법으로 간주됩니다.", + ko: "어떻게 가져오시겠습니까?\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> 다만 가장 오래되고 단순한 방식이기 때문에 가장 안정적인 방법으로 여겨지는 경우가 많습니다.", 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.", }, @@ -5953,6 +5992,7 @@ export const allMessages: Readonly[!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', + 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', 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>
', "zh-tw": @@ -6738,6 +6782,7 @@ export const allMessages: Readonly Database": { def: "Storage -> Database", + ko: "스토리지 -> 데이터베이스", "zh-tw": "儲存空間 -> 資料庫", }, "Suppress notification of hidden files change": { @@ -7396,7 +7459,7 @@ export const allMessages: Readonly[!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}", @@ -7791,9 +7858,11 @@ export const allMessages: Readonly[!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!***", @@ -7860,6 +7929,7 @@ export const allMessages: Readonly Storage", + ko: "데이터베이스 -> 스토리지", zh: "数据库 -> 存储", }, "Ui.Settings.Hatch.DeleteCustomizationSyncData": { def: "Delete all customization sync data", + ko: "모든 사용자 설정 동기화 데이터 삭제", zh: "删除所有自定义同步数据", }, "Ui.Settings.Hatch.GeneratedReport": { def: "Generated report", + ko: "생성된 보고서", zh: "已生成的报告", }, "Ui.Settings.Hatch.Missing": { def: "Missing", + ko: "누락됨", zh: "缺失", }, "Ui.Settings.Hatch.ModifiedSize": { def: "Modified: ${modified}, Size: ${size}", + ko: "수정: ${modified}, 크기: ${size}", zh: "修改时间:${modified},大小:${size}", }, "Ui.Settings.Hatch.ModifiedSizeActual": { def: "Modified: ${modified}, Size: ${size} (actual size: ${actualSize})", + ko: "수정: ${modified}, 크기: ${size} (실제 크기: ${actualSize})", zh: "修改时间:${modified},大小:${size}(实际大小:${actualSize})", }, "Ui.Settings.Hatch.PrepareIssueReport": { def: "Prepare the 'report' to create an issue", + ko: "이슈 생성을 위한 '보고서' 준비", zh: "准备用于提交问题的报告", }, "Ui.Settings.Hatch.RecoveryAndRepair": { def: "Recovery and Repair", + ko: "복구 및 수리", zh: "恢复与修复", }, "Ui.Settings.Hatch.RecreateAll": { def: "Recreate all", + ko: "모두 다시 생성", zh: "全部重建", }, "Ui.Settings.Hatch.RecreateMissingChunks": { def: "Recreate missing chunks for all files", + ko: "모든 파일의 누락된 청크 다시 생성", zh: "为所有文件重新创建缺失的数据块", }, "Ui.Settings.Hatch.RecreateMissingChunksDesc": { def: "This will recreate chunks for all files. If there were missing chunks, this may fix the errors.", + ko: "모든 파일의 청크를 다시 생성합니다. 누락된 청크가 있었다면 이 작업으로 오류가 해결될 수 있습니다.", zh: "此操作会为所有文件重新创建数据块。如果存在缺失的数据块,可能会修复相关错误。", }, "Ui.Settings.Hatch.ResetPanel": { def: "Reset", + ko: "재설정", zh: "重置", }, "Ui.Settings.Hatch.ResetRemoteUsage": { def: "Reset notification threshold and check the remote database usage", + ko: "알림 임계값을 초기화하고 원격 데이터베이스 사용량 확인", zh: "重置通知阈值并检查远程数据库使用情况", }, "Ui.Settings.Hatch.ResetRemoteUsageDesc": { def: "Reset the remote storage size threshold and check the remote storage size again.", + ko: "원격 저장소 크기 임계값을 초기화하고 원격 저장소 크기를 다시 확인합니다.", zh: "重置远程存储大小阈值,并再次检查远程存储大小。", }, "Ui.Settings.Hatch.ResolveAllConflictedFiles": { def: "Resolve all conflicted files by the newer one", + ko: "충돌한 모든 파일을 최신 버전으로 해결", zh: "使用较新的版本解决所有冲突文件", }, "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.", + ko: "충돌한 모든 파일을 더 최신 버전으로 해결합니다. 주의: 이전 버전은 덮어써지며 복원할 수 없습니다.", zh: "使用较新的版本解决所有冲突文件。注意:此操作会覆盖较旧版本,且无法恢复被覆盖的内容。", }, "Ui.Settings.Hatch.RunDoctor": { def: "Run Doctor", + ko: "진단 실행", zh: "运行诊断", }, "Ui.Settings.Hatch.ScanBrokenFiles": { def: "Scan for broken files", + ko: "손상된 파일 검사", zh: "扫描损坏文件", }, "Ui.Settings.Hatch.ScramSwitches": { def: "Scram Switches", + ko: "긴급 정지 스위치", zh: "紧急开关", }, "Ui.Settings.Hatch.ShowHistory": { def: "Show history", + ko: "기록 표시", zh: "查看历史", }, "Ui.Settings.Hatch.StorageLabel": { def: "Storage: ${details}", + ko: "스토리지: ${details}", zh: "存储:${details}", }, "Ui.Settings.Hatch.StorageToDatabase": { def: "Storage -> Database", + ko: "스토리지 -> 데이터베이스", zh: "存储 -> 数据库", }, "Ui.Settings.Hatch.VerifyAndRepairAllFiles": { def: "Verify and repair all files", + ko: "모든 파일 검증 및 복구", zh: "校验并修复所有文件", }, "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.", + ko: "로컬 데이터베이스와 스토리지의 파일 내용을 비교합니다. 일치하지 않으면 어느 쪽을 유지할지 묻습니다.", zh: "比较本地数据库与存储中的文件内容。如果内容不一致,系统会询问你保留哪一份。", }, "Ui.Settings.Maintenance.Cleanup": { def: "Perform cleanup", + ko: "정리 실행", zh: "执行清理", }, "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.", + ko: "최신 버전이 아닌 모든 리비전을 제거하여 저장 공간을 줄입니다. 이 작업을 수행하려면 원격 서버와 로컬 클라이언트에 동일한 양의 여유 공간이 필요합니다.", zh: "丢弃所有非最新修订版本,以减少存储空间占用。此操作要求远程服务器和本地客户端都具备同等大小的可用空间。", }, "Ui.Settings.Maintenance.DeleteLocalDatabase": { def: "Delete local database to reset or uninstall Self-hosted LiveSync", + ko: "Self-hosted LiveSync를 초기화하거나 제거하기 위해 로컬 데이터베이스를 삭제", zh: "删除本地数据库以重置或卸载 Self-hosted LiveSync", }, "Ui.Settings.Maintenance.EmergencyRestart": { def: "Emergency restart", + ko: "긴급 재시작", zh: "紧急重启", }, "Ui.Settings.Maintenance.EmergencyRestartDesc": { def: "Disable all synchronisation and restart.", + ko: "모든 동기화를 비활성화하고 재시작합니다.", zh: "禁用所有同步并重新启动。", }, "Ui.Settings.Maintenance.FreshStartWipe": { def: "Fresh Start Wipe", + ko: "초기화 후 새로 시작", zh: "全新开始清空", }, "Ui.Settings.Maintenance.FreshStartWipeDesc": { def: "Delete all data on the remote server.", + ko: "원격 서버의 모든 데이터를 삭제합니다.", zh: "删除远程服务器上的所有数据。", }, "Ui.Settings.Maintenance.GarbageCollection": { def: "Garbage Collection V3 (Beta)", + ko: "가비지 컬렉션 V3 (Beta)", zh: "垃圾回收 V3(测试版)", }, "Ui.Settings.Maintenance.GarbageCollectionAction": { def: "Perform Garbage Collection", + ko: "가비지 컬렉션 실행", zh: "执行垃圾回收", }, "Ui.Settings.Maintenance.GarbageCollectionDesc": { def: "Perform Garbage Collection to remove unused chunks and reduce database size.", + ko: "사용하지 않는 청크를 제거하고 데이터베이스 크기를 줄이기 위해 가비지 컬렉션을 실행합니다.", zh: "执行垃圾回收以移除未使用的数据块并减少数据库大小。", }, "Ui.Settings.Maintenance.LockServer": { def: "Lock Server", + ko: "서버 잠금", zh: "锁定服务器", }, "Ui.Settings.Maintenance.LockServerDesc": { def: "Lock the remote server to prevent synchronisation with other devices.", + ko: "다른 기기와 동기화되지 않도록 원격 서버를 잠급니다.", zh: "锁定远程服务器,防止与其他设备继续同步。", }, "Ui.Settings.Maintenance.OverwriteRemote": { def: "Overwrite remote", + ko: "원격 덮어쓰기", zh: "覆盖远程端", }, "Ui.Settings.Maintenance.OverwriteRemoteDesc": { def: "Overwrite remote with local DB and passphrase.", + ko: "로컬 DB와 패스프레이즈로 원격을 덮어씁니다.", zh: "使用本地数据库和密码短语覆盖远程端数据。", }, "Ui.Settings.Maintenance.OverwriteServerData": { def: "Overwrite Server Data with This Device's Files", + ko: "이 기기의 파일로 서버 데이터를 덮어쓰기", zh: "用此设备的文件覆盖服务器数据", }, "Ui.Settings.Maintenance.OverwriteServerDataDesc": { def: "Rebuild the local and remote database with files from this device.", + ko: "이 기기의 파일로 로컬과 원격 데이터베이스를 재구축합니다.", zh: "使用此设备上的文件重建本地和远程数据库。", }, "Ui.Settings.Maintenance.PurgeAllJournalCounter": { def: "Purge all journal counter", + ko: "모든 저널 카운터 삭제", zh: "清空全部日志计数器", }, "Ui.Settings.Maintenance.PurgeAllJournalCounterDesc": { def: "Purge all download and upload caches.", + ko: "모든 다운로드 및 업로드 캐시를 제거합니다.", zh: "清空所有下载与上传缓存。", }, "Ui.Settings.Maintenance.RebuildingOperations": { def: "Rebuilding Operations (Remote Only)", + ko: "재구축 작업 (원격 전용)", zh: "重建操作(仅远程端)", }, "Ui.Settings.Maintenance.Resend": { def: "Resend", + ko: "다시 보내기", zh: "重新发送", }, "Ui.Settings.Maintenance.ResendDesc": { def: "Resend all chunks to the remote.", + ko: "모든 청크를 원격으로 다시 보냅니다.", zh: "将所有数据块重新发送到远程端。", }, "Ui.Settings.Maintenance.Reset": { def: "Reset", + ko: "재설정", zh: "重置", }, "Ui.Settings.Maintenance.ResetAllJournalCounter": { def: "Reset all journal counter", + ko: "모든 저널 카운터 재설정", zh: "重置全部日志计数器", }, "Ui.Settings.Maintenance.ResetAllJournalCounterDesc": { def: "Initialise all journal history. On the next sync, every item will be received and sent again.", + ko: "모든 저널 기록을 초기화합니다. 다음 동기화 때 모든 항목을 다시 주고받습니다.", zh: "初始化全部日志历史。下次同步时,所有项目都会重新接收并重新发送。", }, "Ui.Settings.Maintenance.ResetJournalReceived": { def: "Reset journal received history", + ko: "저널 수신 기록 재설정", zh: "重置日志接收历史", }, "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.", + ko: "저널 수신 기록을 초기화합니다. 다음 동기화 때 이 기기가 보낸 항목을 제외한 모든 항목을 다시 내려받습니다.", zh: "初始化日志接收历史。下次同步时,除当前设备发送的项目外,其余项目都会重新下载。", }, "Ui.Settings.Maintenance.ResetJournalSent": { def: "Reset journal sent history", + ko: "저널 송신 기록 재설정", zh: "重置日志发送历史", }, "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.", + ko: "저널 송신 기록을 초기화합니다. 다음 동기화 때 이 기기가 받은 항목을 제외한 모든 항목을 다시 보냅니다.", zh: "初始化日志发送历史。下次同步时,除当前设备已接收的项目外,其余项目都会重新发送。", }, "Ui.Settings.Maintenance.ResetLocalSyncInfo": { def: "Reset Synchronisation information", + ko: "동기화 정보 재설정", zh: "重置同步信息", }, "Ui.Settings.Maintenance.ResetLocalSyncInfoDesc": { def: "Restore or reconstruct local database from remote.", + ko: "원격에서 로컬 데이터베이스를 복원하거나 재구축합니다.", zh: "从远程端恢复或重建本地数据库。", }, "Ui.Settings.Maintenance.ResetReceived": { def: "Reset received", + ko: "수신 기록 재설정", zh: "重置接收记录", }, "Ui.Settings.Maintenance.ResetSentHistory": { def: "Reset sent history", + ko: "송신 기록 재설정", zh: "重置发送记录", }, "Ui.Settings.Maintenance.ResetThisDevice": { def: "Reset Synchronisation on This Device", + ko: "이 기기의 동기화 재설정", zh: "重置此设备上的同步状态", }, "Ui.Settings.Maintenance.ScheduleAndRestart": { def: "Schedule and Restart", + ko: "예약 후 재시작", zh: "计划执行并重启", }, "Ui.Settings.Maintenance.Scram": { def: "Scram!", + ko: "긴급 정지", zh: "紧急处理", }, "Ui.Settings.Maintenance.SendChunks": { def: "Send chunks", + ko: "청크 보내기", zh: "发送数据块", }, "Ui.Settings.Maintenance.Syncing": { def: "Syncing", + ko: "동기화", zh: "同步", }, "Ui.Settings.Maintenance.WarningLockedReadyAction": { def: "I am ready, unlock the database", + ko: "준비되었습니다. 데이터베이스 잠금 해제", zh: "我已准备好,立即解锁数据库", }, "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.", + ko: "의도치 않은 보관함 손상을 막기 위해 원격 데이터베이스가 동기화 잠금 상태입니다. (이 기기는 '해결됨'으로 표시되어 있습니다.) 모든 기기가 '해결됨'으로 표시되면 데이터베이스 잠금을 해제하세요. 이 경고는 복제를 통해 기기가 해결되었음이 확인될 때까지 계속 표시됩니다.", zh: "为防止意外的数据仓库损坏,远程数据库已被锁定,暂停同步。(此设备已被标记为“已确认”)当你的所有设备都标记为“已确认”后,再解锁数据库。在复制过程确认此设备已完成确认之前,此警告会持续显示。", }, "Ui.Settings.Maintenance.WarningLockedResolveAction": { def: "I have made a backup, mark this device as resolved", + ko: "백업했습니다. 이 기기를 해결됨으로 표시", zh: "我已完成备份,将此设备标记为“已确认”", }, "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.", + ko: "이 기기가 '해결됨'으로 표시되어 있지 않아, 보관함 손상을 막기 위해 원격 데이터베이스가 동기화 잠금 상태입니다. 보관함을 백업하고 로컬 데이터베이스를 재설정한 뒤 '이 기기를 해결됨으로 표시'를 선택해 주세요. 이 경고는 복제를 통해 기기가 해결되었음이 확인될 때까지 계속 표시됩니다.", zh: "为防止数据仓库损坏,由于此设备尚未标记为“已确认”,远程数据库已被锁定,暂停同步。请先备份你的仓库、重置本地数据库,然后选择“将此设备标记为已确认”。在复制过程确认此设备已完成确认之前,此警告会持续显示。", }, "Ui.Settings.Maintenance.WriteRedFlagAndRestart": { def: "Flag and restart", + ko: "표시 후 재시작", zh: "标记并重启", }, "Ui.Settings.Patches.CompatibilityConflict": { def: "Compatibility (Conflict Behaviour)", + ko: "호환성 (충돌 동작)", zh: "兼容性(冲突行为)", }, "Ui.Settings.Patches.CompatibilityDatabase": { def: "Compatibility (Database structure)", + ko: "호환성 (데이터베이스 구조)", zh: "兼容性(数据库结构)", }, "Ui.Settings.Patches.CompatibilityInternalApi": { def: "Compatibility (Internal API Usage)", + ko: "호환성 (내부 API 사용)", zh: "兼容性(内部 API 使用)", }, "Ui.Settings.Patches.CompatibilityMetadata": { def: "Compatibility (Metadata)", + ko: "호환성 (메타데이터)", zh: "兼容性(元数据)", }, "Ui.Settings.Patches.CompatibilityRemote": { def: "Compatibility (Remote Database)", + ko: "호환성 (원격 데이터베이스)", zh: "兼容性(远程数据库)", }, "Ui.Settings.Patches.CompatibilityTrouble": { def: "Compatibility (Trouble addressed)", + ko: "호환성 (문제 대응)", zh: "兼容性(已处理问题)", }, "Ui.Settings.Patches.CurrentAdapter": { def: "Current adapter: ${adapter}", + ko: "현재 어댑터: ${adapter}", zh: "当前适配器:${adapter}", }, "Ui.Settings.Patches.DatabaseAdapter": { def: "Database Adapter", + ko: "데이터베이스 어댑터", zh: "数据库适配器", }, "Ui.Settings.Patches.DatabaseAdapterDesc": { def: "Select the database adapter to use.", + ko: "사용할 데이터베이스 어댑터를 선택합니다.", zh: "选择要使用的数据库适配器。", }, "Ui.Settings.Patches.EdgeCaseBehaviour": { def: "Edge case addressing (Behaviour)", + ko: "특수 상황 처리 (동작)", zh: "边界情况处理(行为)", }, "Ui.Settings.Patches.EdgeCaseDatabase": { def: "Edge case addressing (Database)", + ko: "특수 상황 처리 (데이터베이스)", zh: "边界情况处理(数据库)", }, "Ui.Settings.Patches.EdgeCaseProcessing": { def: "Edge case addressing (Processing)", + ko: "특수 상황 처리 (처리)", zh: "边界情况处理(处理流程)", }, "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.", + ko: "IndexedDB 어댑터는 특정 상황에서 더 나은 성능을 보이는 경우가 많지만, LiveSync 모드에서 사용하면 메모리 누수를 일으키는 것으로 확인되었습니다. LiveSync 모드를 사용할 때는 IDB 어댑터를 사용해 주세요.", zh: "IndexedDB 适配器在某些场景下通常具有更好的性能,但在 LiveSync 模式下已发现可能导致内存泄漏。使用 LiveSync 模式时,请改用 IDB 适配器。", }, "Ui.Settings.Patches.MigratingToIdb": { def: "Migrating all data to IDB...", + ko: "모든 데이터를 IDB로 마이그레이션하는 중...", zh: "正在将所有数据迁移到 IDB...", }, "Ui.Settings.Patches.MigratingToIndexedDb": { def: "Migrating all data to IndexedDB...", + ko: "모든 데이터를 IndexedDB로 마이그레이션하는 중...", zh: "正在将所有数据迁移到 IndexedDB...", }, "Ui.Settings.Patches.MigrationIdbCompleted": { def: "Migration to IDB completed. Obsidian will be restarted with the new configuration immediately.", + ko: "IDB로 마이그레이션이 완료되었습니다. 새 구성을 적용하기 위해 Obsidian이 곧 재시작됩니다.", zh: "已完成迁移到 IDB。Obsidian 将立即使用新配置重新启动。", }, "Ui.Settings.Patches.MigrationIdbCompletedFollowUp": { def: "Migration to IDB completed. Please switch the adapter and restart Obsidian.", + ko: "IDB로 마이그레이션이 완료되었습니다. 어댑터를 전환하고 Obsidian을 재시작해 주세요.", zh: "已完成迁移到 IDB。请切换适配器并重新启动 Obsidian。", }, "Ui.Settings.Patches.MigrationIndexedDbCompleted": { def: "Migration to IndexedDB completed. Obsidian will be restarted with the new configuration immediately.", + ko: "IndexedDB로 마이그레이션이 완료되었습니다. 새 구성을 적용하기 위해 Obsidian이 곧 재시작됩니다.", zh: "已完成迁移到 IndexedDB。Obsidian 将立即使用新配置重新启动。", }, "Ui.Settings.Patches.MigrationIndexedDbCompletedFollowUp": { def: "Migration to IndexedDB completed. Please switch the adapter and restart Obsidian.", + ko: "IndexedDB로 마이그레이션이 완료되었습니다. 어댑터를 전환하고 Obsidian을 재시작해 주세요.", zh: "已完成迁移到 IndexedDB。请切换适配器并重新启动 Obsidian。", }, "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.", + ko: "이 설정을 변경하려면 기존 데이터를 마이그레이션하고(시간이 다소 걸릴 수 있습니다) Obsidian을 재시작해야 합니다. 진행하기 전에 반드시 데이터를 백업해 주세요.", zh: "修改此设置需要迁移现有数据(可能需要一些时间)并重新启动 Obsidian。请先备份你的数据后再继续。", }, "Ui.Settings.Patches.OperationToIdb": { def: "to IDB", + ko: "IDB로", zh: "迁移到 IDB", }, "Ui.Settings.Patches.OperationToIndexedDb": { def: "to IndexedDB", + ko: "IndexedDB로", zh: "迁移到 IndexedDB", }, "Ui.Settings.Patches.Remediation": { def: "Remediation", + ko: "복구 조치", zh: "修正", }, "Ui.Settings.Patches.RemediationChanged": { def: "Remediation Setting Changed", + ko: "복구 설정이 변경됨", zh: "修正设置已更改", }, "Ui.Settings.Patches.RemediationNoLimit": { def: "No limit configured", + ko: "제한이 설정되지 않음", zh: "未设置限制", }, "Ui.Settings.Patches.RemediationRestarting": { def: "Remediation setting changed. Restarting Obsidian...", + ko: "복구 조치 설정이 변경되었습니다. Obsidian을 재시작하는 중...", zh: "修正设置已更改,正在重新启动 Obsidian...", }, "Ui.Settings.Patches.RemediationRestartLater": { def: "Later", + ko: "나중에", zh: "稍后", }, "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?", + ko: "Obsidian을 재시작하는 것을 강력히 권장합니다. 재시작하기 전까지는 일부 변경 사항이 적용되지 않거나 화면이 일관되지 않게 표시될 수 있습니다. 지금 재시작하시겠습니까?", zh: "强烈建议重新启动 Obsidian。在重启之前,部分更改可能不会生效,界面显示也可能不一致。确定要现在重启吗?", }, "Ui.Settings.Patches.RemediationRestartNow": { def: "Restart Now", + ko: "지금 재시작", zh: "立即重启", }, "Ui.Settings.Patches.RemediationSuffixChanged": { def: "Suffix has been changed. Reopening database...", + ko: "접미사가 변경되었습니다. 데이터베이스를 다시 여는 중...", zh: "后缀已更改,正在重新打开数据库...", }, "Ui.Settings.Patches.RemediationWithValue": { def: "Limit: ${date} (${timestamp})", + ko: "제한: ${date} (${timestamp})", zh: "限制:${date}(${timestamp})", }, "Ui.Settings.Patches.RemoteDatabaseSunset": { def: "Remote Database Tweak (In sunset)", + ko: "원격 데이터베이스 조정 (폐기 예정)", zh: "远程数据库调整(即将弃用)", }, "Ui.Settings.Patches.SwitchToIDB": { def: "Switch to IDB", + ko: "IDB로 전환", zh: "切换到 IDB", }, "Ui.Settings.Patches.SwitchToIndexedDb": { def: "Switch to IndexedDB", + ko: "IndexedDB로 전환", zh: "切换到 IndexedDB", }, "Ui.Settings.PowerUsers.ConfigurationEncryption": { def: "Configuration Encryption", + ko: "구성 암호화", zh: "配置加密", }, "Ui.Settings.PowerUsers.ConnectionTweak": { def: "CouchDB Connection Tweak", + ko: "CouchDB 연결 조정", zh: "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.", + ko: "IBM Cloudant를 사용하다가 페이로드 크기 제한에 도달했다면, 배치 크기와 배치 개수 제한을 더 낮은 값으로 줄여 주세요.", zh: "如果你在使用 IBM Cloudant 时遇到负载大小限制,请将 batch size 和 batch limit 调低。", }, "Ui.Settings.PowerUsers.Default": { def: "Default", + ko: "기본값", zh: "默认", }, "Ui.Settings.PowerUsers.Developer": { def: "Developer", + ko: "개발자", zh: "开发者", }, "Ui.Settings.PowerUsers.EncryptSensitiveConfig": { def: "Encrypt sensitive configuration items", + ko: "민감한 구성 항목 암호화", zh: "加密敏感配置项", }, "Ui.Settings.PowerUsers.PromptPassphraseEveryLaunch": { def: "Ask for a passphrase at every launch", + ko: "시작할 때마다 패스프레이즈 묻기", zh: "每次启动时询问密码短语", }, "Ui.Settings.PowerUsers.UseCustomPassphrase": { def: "Use a custom passphrase", + ko: "사용자 지정 패스프레이즈 사용", zh: "使用自定义密码短语", }, "Ui.Settings.Remote.Activate": { def: "Activate", + ko: "활성화", zh: "启用", }, "Ui.Settings.Remote.ActiveSuffix": { def: " (Active)", + ko: " (활성)", zh: "(当前启用)", }, "Ui.Settings.Remote.AddConnection": { def: "Add new connection", + ko: "연결 추가", zh: "新增连接", }, "Ui.Settings.Remote.AddRemoteDefaultName": { def: "New Remote", + ko: "새 원격", zh: "新远程端", }, "Ui.Settings.Remote.ConfigureAndChangeRemote": { def: "Configure and change remote", + ko: "원격 구성 및 변경", zh: "配置并切换远程端", }, "Ui.Settings.Remote.ConfigureE2EE": { def: "Configure E2EE", + ko: "E2EE 구성", zh: "配置端到端加密", }, "Ui.Settings.Remote.ConfigureRemote": { def: "Configure Remote", + ko: "원격 구성", zh: "配置远程端", }, "Ui.Settings.Remote.DeleteRemoteConfirm": { def: "Delete remote configuration '${name}'?", + ko: "'${name}' 원격 구성을 삭제할까요?", zh: "确定要删除远程配置“${name}”吗?", }, "Ui.Settings.Remote.DeleteRemoteTitle": { def: "Delete Remote Configuration", + ko: "원격 구성 삭제", zh: "删除远程配置", }, "Ui.Settings.Remote.DisplayName": { def: "Display name", + ko: "표시 이름", zh: "显示名称", }, "Ui.Settings.Remote.DuplicateRemote": { def: "Duplicate remote", + ko: "원격 구성 복사", zh: "复制远程配置", }, "Ui.Settings.Remote.DuplicateRemoteSuffix": { def: "${name} (Copy)", + ko: "${name} (사본)", zh: "${name}(副本)", }, "Ui.Settings.Remote.E2EEConfiguration": { def: "E2EE Configuration", + ko: "E2EE 구성", zh: "端到端加密配置", }, "Ui.Settings.Remote.Export": { def: "Export", + ko: "내보내기", zh: "导出", }, "Ui.Settings.Remote.FetchRemoteSettings": { def: "Fetch remote settings", + ko: "원격 설정 가져오기", zh: "获取远程设置", }, "Ui.Settings.Remote.ImportConnection": { def: "Import connection", + ko: "연결 가져오기", zh: "导入连接", }, "Ui.Settings.Remote.ImportConnectionPrompt": { def: "Paste a connection string", + ko: "연결 문자열 붙여넣기", zh: "粘贴连接字符串", }, "Ui.Settings.Remote.ImportedCouchDb": { def: "Imported CouchDB", + ko: "가져온 CouchDB", zh: "已导入的 CouchDB", }, "Ui.Settings.Remote.ImportedRemote": { def: "Remote", + ko: "원격", zh: "远程端", }, "Ui.Settings.Remote.MoreActions": { def: "More actions", + ko: "추가 작업", zh: "更多操作", }, "Ui.Settings.Remote.PeerToPeerPanel": { def: "Peer-to-Peer Synchronisation", + ko: "피어 투 피어(P2P) 동기화", zh: "点对点同步", }, "Ui.Settings.Remote.RemoteConfigurationPrefix": { def: "Remote configuration", + ko: "원격 구성", zh: "远程配置", }, "Ui.Settings.Remote.RemoteDatabases": { def: "Remote Databases", + ko: "원격 데이터베이스", zh: "远程数据库", }, "Ui.Settings.Remote.RemoteName": { def: "Remote name", + ko: "원격 이름", zh: "远程名称", }, "Ui.Settings.Remote.RemoteNameCouchDb": { def: "CouchDB ${host}", + ko: "CouchDB ${host}", zh: "CouchDB ${host}", }, "Ui.Settings.Remote.RemoteNameP2P": { def: "P2P ${room}", + ko: "P2P ${room}", zh: "P2P ${room}", }, "Ui.Settings.Remote.RemoteNameS3": { def: "S3 ${bucket}", + ko: "S3 ${bucket}", zh: "S3 ${bucket}", }, "Ui.Settings.Remote.Rename": { def: "Rename", + ko: "이름 바꾸기", zh: "重命名", }, "Ui.Settings.Selector.AddDefaultPatterns": { def: "Add default patterns", + ko: "기본 패턴 추가", zh: "添加默认模式", }, "Ui.Settings.Selector.CrossPlatform": { def: "Cross-platform", + ko: "크로스 플랫폼", zh: "跨平台", }, "Ui.Settings.Selector.Default": { def: "Default", + ko: "기본값", zh: "默认", }, "Ui.Settings.Selector.HiddenFiles": { def: "Hidden Files", + ko: "숨김 파일", zh: "隐藏文件", }, "Ui.Settings.Selector.IgnorePatterns": { def: "Ignore patterns", + ko: "무시 패턴", zh: "忽略模式", }, "Ui.Settings.Selector.NonSynchronisingFiles": { def: "Non-Synchronising files", + ko: "동기화하지 않는 파일", zh: "不同步文件", }, "Ui.Settings.Selector.NonSynchronisingFilesDesc": { def: "(RegExp) If this is set, any changes to local and remote files that match this will be skipped.", + ko: "(정규식) 설정하면 이 패턴과 일치하는 로컬 및 원격 파일 변경은 모두 건너뜁니다.", zh: "(RegExp)如果设置了该项,则本地和远程中匹配这些规则的文件变更将被跳过。", }, "Ui.Settings.Selector.NormalFiles": { def: "Normal Files", + ko: "일반 파일", zh: "普通文件", }, "Ui.Settings.Selector.OverwritePatterns": { def: "Overwrite patterns", + ko: "덮어쓰기 패턴", zh: "覆盖模式", }, "Ui.Settings.Selector.OverwritePatternsDesc": { def: "Patterns to match files for overwriting instead of merging", + ko: "병합 대신 덮어쓸 파일을 판별하는 패턴", zh: "匹配后将执行覆盖而非合并的文件模式", }, "Ui.Settings.Selector.SynchronisingFiles": { def: "Synchronising files", + ko: "동기화할 파일", zh: "同步文件", }, "Ui.Settings.Selector.SynchronisingFilesDesc": { def: "(RegExp) Empty to sync all files. Set a regular expression filter to limit synchronised files.", + ko: "(정규식) 비워 두면 모든 파일을 동기화합니다. 정규식 필터를 지정하면 동기화할 파일을 제한할 수 있습니다.", zh: "(RegExp)留空则同步所有文件。可设置正则表达式以限制需要同步的文件。", }, "Ui.Settings.Selector.TargetPatterns": { def: "Target patterns", + ko: "대상 패턴", zh: "目标模式", }, "Ui.Settings.Selector.TargetPatternsDesc": { def: "Patterns to match files for syncing", + ko: "동기화할 파일을 판별하는 패턴", zh: "用于匹配需要同步文件的模式", }, "Ui.Settings.Setup.RerunWizardButton": { def: "Rerun Wizard", + ko: "마법사 다시 실행", zh: "重新运行向导", }, "Ui.Settings.Setup.RerunWizardDesc": { def: "Rerun the onboarding wizard to set up Self-hosted LiveSync again.", + ko: "온보딩 마법사를 다시 실행하여 Self-hosted LiveSync를 다시 설정합니다.", zh: "重新运行引导向导,再次设置 Self-hosted LiveSync。", }, "Ui.Settings.Setup.RerunWizardName": { def: "Rerun Onboarding Wizard", + ko: "온보딩 마법사 다시 실행", zh: "重新运行引导向导", }, "Ui.Settings.SyncSettings.Fetch": { def: "Fetch", + ko: "가져오기", zh: "获取", }, "Ui.Settings.SyncSettings.Merge": { def: "Merge", + ko: "병합", zh: "合并", }, "Ui.Settings.SyncSettings.Overwrite": { def: "Overwrite", + ko: "덮어쓰기", zh: "覆盖", }, "Ui.SetupWizard.Common.Back": { def: "No, please take me back", + ko: "아니요, 이전으로 돌아가겠습니다", zh: "不,带我返回", }, "Ui.SetupWizard.Common.Cancel": { def: "Cancel", + ko: "취소", zh: "取消", }, "Ui.SetupWizard.Common.ProceedSelectOption": { def: "Please select an option to proceed", + ko: "계속하려면 항목을 선택해 주세요", zh: "请选择一个选项后继续", }, "Ui.SetupWizard.Intro.ExistingOption": { def: "I am adding a device to an existing synchronisation setup", + ko: "기존 동기화 구성에 기기를 추가합니다", zh: "将此设备加入已有同步配置", }, "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.", + ko: "다른 컴퓨터나 스마트폰에서 이미 동기화를 사용 중이라면 선택하세요. 이 기기를 기존 구성에 연결할 때 사용합니다.", zh: "如果你已经在另一台电脑或手机上使用同步,请选择此项。此选项用于将当前设备连接到既有同步配置。", }, "Ui.SetupWizard.Intro.Guidance": { def: "We will now guide you through a few questions to simplify the synchronisation setup.", + ko: "동기화 설정을 간단히 마칠 수 있도록 몇 가지 질문으로 안내해 드리겠습니다.", zh: "接下来我们会通过几个问题,帮助你更轻松地完成同步配置。", }, "Ui.SetupWizard.Intro.NewOption": { def: "I am setting this up for the first time", + ko: "처음으로 설정합니다", zh: "首次设置同步", }, "Ui.SetupWizard.Intro.NewOptionDesc": { def: "Select this if you are configuring this device as the first synchronisation device.", + ko: "이 기기를 첫 번째 동기화 기기로 설정한다면 선택하세요.", zh: "如果你正把这台设备作为第一台同步设备进行配置,请选择此项。", }, "Ui.SetupWizard.Intro.ProceedExisting": { def: "Yes, I want to add this device to my existing synchronisation", + ko: "예, 이 기기를 기존 동기화 구성에 추가하겠습니다", zh: "是的,我要将此设备加入现有同步", }, "Ui.SetupWizard.Intro.ProceedNew": { def: "Yes, I want to set up a new synchronisation", + ko: "예, 새 동기화를 설정하겠습니다", zh: "是的,我要开始新的同步配置", }, "Ui.SetupWizard.Intro.Question": { def: "First, please select the option that best describes your current situation.", + ko: "먼저 현재 상황에 가장 잘 맞는 항목을 선택해 주세요.", zh: "首先,请选择最符合你当前情况的选项。", }, "Ui.SetupWizard.Intro.Title": { def: "Welcome to Self-hosted LiveSync", + ko: "Self-hosted LiveSync에 오신 것을 환영합니다", zh: "欢迎使用 Self-hosted LiveSync", }, "Ui.SetupWizard.Invitation.Start": { def: "Start setup", + ko: "설정 시작", }, "Ui.SetupWizard.OutroAskUserMode.CompatibleOption": { def: "The remote is already set up, and the configuration is compatible (or became compatible through this operation).", + ko: "원격이 이미 설정되어 있고, 구성도 호환됩니다(또는 이번 작업으로 호환되었습니다).", zh: "远程端已配置完成,且当前配置兼容(或已通过本次操作变为兼容)。", }, "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.", + ko: "확신이 없다면 이 옵션을 선택하는 것은 위험합니다. 서버 구성이 이 기기와 호환된다고 가정하기 때문에, 그렇지 않을 경우 데이터가 손실될 수 있습니다. 결과를 충분히 이해한 뒤에 선택해 주세요.", zh: "除非你非常确定,否则选择此项存在风险。它假定服务器配置与当前设备兼容。如果事实并非如此,可能会导致数据丢失。请确认你了解后果。", }, "Ui.SetupWizard.OutroAskUserMode.ExistingOption": { def: "My remote server is already set up. I want to join this device.", + ko: "원격 서버가 이미 설정되어 있습니다. 이 기기를 참여시키려고 합니다.", zh: "远程服务器已经配置完成,我想让此设备加入同步。", }, "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.", + ko: "이 옵션을 선택하면 이 기기가 기존 서버에 참여합니다. 서버에 있는 기존 동기화 데이터를 이 기기로 가져와야 합니다.", zh: "选择此项后,此设备会加入已有服务器。你需要将服务器上的现有同步数据获取到此设备。", }, "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.", + ko: "서버 연결이 정상적으로 구성되었습니다. 다음 단계로, 로컬 데이터베이스 즉 동기화 정보를 재구축해야 합니다.", zh: "服务器连接已成功配置。下一步需要重建本地数据库,也就是同步状态信息。", }, "Ui.SetupWizard.OutroAskUserMode.NewOption": { def: "I am setting up a new server for the first time / I want to reset my existing server.", + ko: "서버를 처음 설정합니다 / 기존 서버를 초기화하려고 합니다.", zh: "我是第一次配置新服务器 / 我想重置现有服务器。", }, "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.", + ko: "이 옵션을 선택하면 이 기기의 현재 데이터로 서버를 초기화합니다. 서버에 있던 기존 데이터는 완전히 덮어써집니다.", zh: "选择此项后,服务器会使用当前设备上的数据进行初始化。服务器上的现有数据将被完全覆盖。", }, "Ui.SetupWizard.OutroAskUserMode.ProceedApplySettings": { def: "Apply the settings", + ko: "설정 적용", zh: "应用这些设置", }, "Ui.SetupWizard.OutroAskUserMode.ProceedNext": { def: "Proceed to the next step.", + ko: "다음 단계로 진행합니다.", zh: "继续下一步", }, "Ui.SetupWizard.OutroAskUserMode.Question": { def: "Please select your situation.", + ko: "현재 상황을 선택해 주세요.", zh: "请选择你的当前情况。", }, "Ui.SetupWizard.OutroAskUserMode.Title": { def: "Mostly Complete: Decision Required", + ko: "거의 완료: 선택이 필요합니다", zh: "即将完成:还需要做出选择", }, "Ui.SetupWizard.OutroNewP2PUser.GuidanceNotice": { def: "P2P has no central server copy to overwrite. This step prepares only this device; keep it online when another device fetches its initial data.", + ko: "P2P에는 덮어쓸 중앙 서버 사본이 없습니다. 이 단계는 이 기기만 준비하며, 다른 기기가 초기 데이터를 가져올 때는 이 기기를 온라인 상태로 유지해 주세요.", }, "Ui.SetupWizard.OutroNewP2PUser.GuidancePrimary": { def: "The peer-to-peer connection has been configured successfully. Next, the local LiveSync database will be built from the current files in this Vault.", + ko: "Peer-to-Peer 연결이 정상적으로 구성되었습니다. 다음 단계로, 이 보관함의 현재 파일을 사용해 로컬 LiveSync 데이터베이스를 만듭니다.", }, "Ui.SetupWizard.OutroNewP2PUser.Important": { def: "PLEASE NOTE", + ko: "유의해 주세요", }, "Ui.SetupWizard.OutroNewP2PUser.Proceed": { def: "Restart and Prepare This Device", + ko: "재시작하고 이 기기 준비", }, "Ui.SetupWizard.OutroNewP2PUser.Question": { def: "Please select the button below to restart and proceed to the local initialisation confirmation.", + ko: "재시작하고 로컬 초기화 확인 단계로 넘어가려면 아래 버튼을 선택해 주세요.", }, "Ui.SetupWizard.OutroNewP2PUser.Title": { def: "Setup Complete: Preparing This P2P Device", + ko: "설정 완료: 이 P2P 기기 준비", }, "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.", + ko: "서버 연결이 정상적으로 구성되었습니다. 다음 단계로, 이 기기의 현재 데이터를 사용해 서버의 동기화 데이터를 만듭니다.", zh: "服务器连接已成功配置。下一步将根据当前设备上的数据,在服务器端建立同步数据。", }, "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.", + ko: "재시작하면 이 기기의 데이터가 원본으로서 서버에 업로드됩니다. 현재 서버에 있는 데이터는 의도치 않은 것이라도 완전히 덮어써지므로 유의해 주세요.", zh: "重启后,当前设备上的数据会作为主副本上传到服务器。请注意,服务器上现有的非预期数据将被完全覆盖。", }, "Ui.SetupWizard.OutroNewUser.Important": { def: "IMPORTANT", + ko: "중요", zh: "重要", }, "Ui.SetupWizard.OutroNewUser.Proceed": { def: "Restart and Initialise Server", + ko: "재시작하고 서버 초기화", zh: "重启并初始化服务器", }, "Ui.SetupWizard.OutroNewUser.Question": { def: "Please select the button below to restart and proceed to the final confirmation.", + ko: "재시작하고 마지막 확인 단계로 넘어가려면 아래 버튼을 선택해 주세요.", zh: "请选择下方按钮,重启并进入最终确认步骤。", }, "Ui.SetupWizard.OutroNewUser.Title": { def: "Setup Complete: Preparing to Initialise Server", + ko: "설정 완료: 서버 초기화 준비", zh: "设置完成:准备初始化服务器", }, "Ui.SetupWizard.RebuildEverythingP2P.ConfirmLocalReset": { def: "I understand that this resets only this device's local synchronisation database.", + ko: "이 작업이 이 기기의 로컬 동기화 데이터베이스만 초기화한다는 것을 이해했습니다.", }, "Ui.SetupWizard.RebuildEverythingP2P.ConfirmLocalResetNote": { def: "The files currently in this Vault are used to rebuild it.", + ko: "현재 이 보관함에 있는 파일을 사용해 재구축합니다.", }, "Ui.SetupWizard.RebuildEverythingP2P.ConfirmTitle": { def: "⚠️ Please Confirm the Following", + ko: "⚠️ 다음 내용을 확인해 주세요", }, "Ui.SetupWizard.RebuildEverythingP2P.Guidance": { def: "This procedure will discard the local LiveSync database on this device and rebuild it from the current files in this Vault. It does not delete or overwrite data on another device.", + ko: "이 절차는 이 기기의 로컬 LiveSync 데이터베이스를 삭제하고, 이 보관함의 현재 파일로 재구축합니다. 다른 기기의 데이터는 삭제하거나 덮어쓰지 않습니다.", }, "Ui.SetupWizard.RebuildEverythingP2P.Note": { def: "Keep this device online after initialisation so that another device can fetch the Vault from it.", + ko: "초기화 후에도 다른 기기가 이 기기에서 보관함을 가져올 수 있도록 이 기기를 온라인 상태로 유지해 주세요.", }, "Ui.SetupWizard.RebuildEverythingP2P.Proceed": { def: "I Understand, Prepare This Device", + ko: "이해했습니다, 이 기기 준비", }, "Ui.SetupWizard.RebuildEverythingP2P.Title": { def: "Final Confirmation: Prepare This Device for P2P", + ko: "최종 확인: P2P를 위한 이 기기 준비", }, "Ui.SetupWizard.SelectExisting.Guidance": { def: "You are adding this device to an existing synchronisation setup.", + ko: "이 기기를 기존 동기화 구성에 추가합니다.", zh: "你正在将此设备加入已有同步配置。", }, "Ui.SetupWizard.SelectExisting.ManualOption": { def: "Configure a remote manually", + ko: "서버 정보를 수동으로 입력", zh: "手动输入服务器信息", }, "Ui.SetupWizard.SelectExisting.ManualOptionDesc": { def: "Configure the same remote as your other devices again manually. This is intended only for advanced users.", + ko: "다른 기기와 동일한 서버 정보를 다시 직접 입력합니다. 숙련된 사용자 전용입니다.", zh: "手动重新配置与你其他设备相同的服务器信息。此方式仅适用于高级用户。", }, "Ui.SetupWizard.SelectExisting.ProceedManual": { def: "Proceed with manual configuration", + ko: "서버 정보를 알고 있으니 직접 입력하겠습니다", zh: "我知道服务器信息,让我手动输入", }, "Ui.SetupWizard.SelectExisting.ProceedQr": { def: "Scan the QR code displayed on an active device using this device's camera.", + ko: "이 기기의 카메라로 사용 중인 기기에 표시된 QR 코드를 스캔하세요.", zh: "使用本设备摄像头扫描活动设备上显示的二维码", }, "Ui.SetupWizard.SelectExisting.ProceedSetupUri": { def: "Proceed with Setup URI", + ko: "Setup URI로 계속", zh: "使用 Setup URI 继续", }, "Ui.SetupWizard.SelectExisting.QrOption": { def: "Scan a QR Code (Recommended for mobile)", + ko: "QR 코드 스캔(모바일 권장)", zh: "扫描二维码(移动端推荐)", }, "Ui.SetupWizard.SelectExisting.QrOptionDesc": { def: "Scan the QR code displayed on an active device using this device's camera.", + ko: "이 기기의 카메라로 사용 중인 기기에 표시된 QR 코드를 스캔하세요.", zh: "使用本设备摄像头扫描活动设备上显示的二维码。", }, "Ui.SetupWizard.SelectExisting.Question": { def: "Please select a method to import the settings from another device.", + ko: "다른 기기에서 설정을 가져올 방법을 선택해 주세요.", zh: "请选择一种从其他设备导入设置的方法。", }, "Ui.SetupWizard.SelectExisting.SetupUriOption": { def: "Use a Setup URI (Recommended)", + ko: "Setup URI 사용(권장)", zh: "使用 Setup URI(推荐)", }, "Ui.SetupWizard.SelectExisting.SetupUriOptionDesc": { def: "Paste the Setup URI generated from one of your active devices.", + ko: "사용 중인 기기 중 하나에서 생성한 Setup URI를 붙여 넣으세요.", zh: "粘贴从某台已启用设备生成的 Setup URI。", }, "Ui.SetupWizard.SelectExisting.Title": { def: "Device Setup Method", + ko: "기기 설정 방법", zh: "设备设置方式", }, "Ui.SetupWizard.SelectNew.Guidance": { def: "We will now configure the synchronisation connection.", + ko: "이제 서버 구성을 진행하겠습니다.", zh: "接下来将继续配置服务器连接信息。", }, "Ui.SetupWizard.SelectNew.ManualOption": { def: "Configure a remote manually", + ko: "서버 정보를 수동으로 입력", zh: "手动输入服务器信息", }, "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. You can also use it for P2P synchronisation instead of CouchDB or S3-compatible Object Storage.", + ko: "Setup URI가 없거나 세부 설정을 직접 구성하려는 사용자를 위한 고급 옵션입니다.", zh: "如果你没有 Setup URI,或希望自行配置更详细的参数,可选择此高级选项。", }, "Ui.SetupWizard.SelectNew.ProceedManual": { def: "Proceed with manual configuration", + ko: "서버 정보를 알고 있으니 직접 입력하겠습니다", zh: "我知道服务器信息,让我手动输入", }, "Ui.SetupWizard.SelectNew.ProceedSetupUri": { def: "Proceed with Setup URI", + ko: "Setup URI로 계속", zh: "使用 Setup URI 继续", }, "Ui.SetupWizard.SelectNew.Question": { def: "How would you like to configure this synchronisation connection?", + ko: "서버 연결을 어떻게 구성하시겠습니까?", zh: "你希望如何配置服务器连接?", }, "Ui.SetupWizard.SelectNew.SetupUriOption": { def: "Use a Setup URI (Recommended)", + ko: "Setup URI 사용(권장)", zh: "使用 Setup URI(推荐)", }, "Ui.SetupWizard.SelectNew.SetupUriOptionDesc": { def: "A Setup URI is a single string containing connection and authentication details. When one is available from a setup script, it provides a simple and secure configuration method.", + ko: "Setup URI는 서버 주소와 인증 정보를 담은 하나의 문자열입니다. 서버 설치 스크립트가 URI를 생성했다면, 간단하고 안전하게 구성할 수 있는 방법입니다.", zh: "Setup URI 是一段包含服务器地址和认证信息的文本。如果你的服务器安装脚本已经生成了它,这是最简单且安全的配置方式。", }, "Ui.SetupWizard.SelectNew.Title": { def: "Connection Method", + ko: "연결 방법", zh: "连接方式", }, "Ui.SetupWizard.SetupRemote.BucketOption": { def: "S3-compatible Object Storage", + ko: "S3/MinIO/R2 객체 스토리지", zh: "S3/MinIO/R2 对象存储", }, "Ui.SetupWizard.SetupRemote.BucketOptionDesc": { def: "Synchronisation using journal files. You must already have an S3-compatible Object Storage service set up, such as Amazon S3, MinIO, or Cloudflare R2.", + ko: "저널 파일을 사용하는 동기화 방식입니다. S3/MinIO/R2 호환 객체 스토리지 서비스를 미리 구성해 두어야 합니다.", zh: "使用日志文件进行同步。你需要先准备好兼容 S3/MinIO/R2 的对象存储服务。", }, "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.", + ko: "현재 설계에 가장 적합한 동기화 방식입니다. 모든 기능을 사용할 수 있습니다. CouchDB 인스턴스를 미리 구성해 두어야 합니다.", zh: "这是当前设计下最适合的同步方式,所有功能都可用。你需要先准备好 CouchDB 实例。", }, "Ui.SetupWizard.SetupRemote.Guidance": { def: "Select the remote type for this synchronisation setup.", + ko: "연결할 서버 유형을 선택해 주세요.", zh: "请选择你要连接的服务器类型。", }, "Ui.SetupWizard.SetupRemote.P2POption": { def: "Peer-to-Peer (P2P)", + ko: "Peer-to-Peer 전용", zh: "仅点对点", }, "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.", + ko: "기기 간에 직접 동기화하는 방식입니다. 서버는 필요 없지만 두 기기가 동시에 온라인 상태여야 하며, 일부 기능은 제한될 수 있습니다. 인터넷 연결은 시그널링에만 필요하고 데이터 전송에는 필요하지 않습니다.", zh: "启用设备之间的直接同步。无需服务器,但两台设备必须同时在线,且部分功能可能受限。互联网连接仅用于信令,不用于传输数据。", }, "Ui.SetupWizard.SetupRemote.ProceedBucket": { def: "Continue to Object Storage setup", + ko: "S3/MinIO/R2 설정으로 계속", zh: "继续配置 S3/MinIO/R2", }, "Ui.SetupWizard.SetupRemote.ProceedCouchDb": { def: "Continue to CouchDB setup", + ko: "CouchDB 설정으로 계속", zh: "继续配置 CouchDB", }, "Ui.SetupWizard.SetupRemote.ProceedP2P": { def: "Continue to P2P setup", + ko: "Peer-to-Peer 전용 설정으로 계속", zh: "继续配置仅点对点模式", }, "Ui.SetupWizard.SetupRemote.Title": { def: "Choose a synchronisation remote", + ko: "서버 정보 입력", zh: "输入服务器信息", }, "Unique name between all synchronized devices. To edit this setting, please disable customization sync once.": { @@ -8943,7 +9279,7 @@ export const allMessages: Readonly [!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.": "설정 URI는 서버 주소와 인증 정보를 포함한 단일 문자열입니다. 서버 설치 스크립트가 URI를 생성했다면 이를 사용하면 간단하고 안전하게 구성할 수 있습니다。", + "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": "활성 원격 구성", "Add default patterns": "기본 패턴 추가", "Add new connection": "연결 추가", - "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을 진행할 수 있습니다.", + "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": "시작할 때마다 암호문구 묻기", + "Ask a passphrase at every launch": "시작할 때마다 패스프레이즈 묻기", "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": "필요 시 가져올 청크 묶음 크기", + "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": "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.": "이 설정을 변경하려면 기존 데이터를 마이그레이션하고(시간이 다소 걸릴 수 있습니다) Obsidian을 재시작해야 합니다. 진행하기 전에 반드시 데이터를 백업해 주세요.", + "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": "사용자 설정 동기화 표시", "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.": "원격 데이터베이스 압축 시간이 초과되었습니다.", + "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)": "호환성 (데이터베이스 구조)", @@ -57,7 +61,7 @@ "Configure And Change Remote": "원격 구성 및 변경", "Configure E2EE": "E2EE 구성", "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": "연결 방법", "Continue to CouchDB setup": "CouchDB 설정으로 계속", "Continue to Peer-to-Peer only setup": "Peer-to-Peer 전용 설정으로 계속", @@ -67,9 +71,10 @@ "CouchDB Connection Tweak": "CouchDB 연결 조정", "Cross-platform": "크로스 플랫폼", "Current adapter: {adapter}": "현재 어댑터: {adapter}", - "Customization Sync": "사용자 지정 동기화", - "Customization Sync (Beta3)": "사용자 지정 동기화 (Beta3)", + "Customization Sync": "사용자 설정 동기화", + "Customization Sync (Beta3)": "사용자 설정 동기화 (Beta3)", "Data Compression": "데이터 압축", + "Database -> Storage": "데이터베이스 -> 스토리지", "Database Adapter": "데이터베이스 어댑터", "Database Name": "데이터베이스 이름", "Database suffix": "데이터베이스 접미사", @@ -77,7 +82,7 @@ "Delay conflict resolution of inactive files": "비활성 파일의 충돌 해결 지연", "Delay merge conflict prompt for inactive files.": "비활성 파일의 병합 충돌 프롬프트 지연.", "Delete": "삭제", - "Delete all customization sync data": "모든 사용자 정의 동기화 데이터 삭제", + "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": "시작 시 삭제된 파일의 오래된 메타데이터 삭제", @@ -87,8 +92,8 @@ "Developer": "개발자", "Device": "기기", "Device name": "기기 이름", - "Device Setup Method": "장치 설정 방법", - "dialog.yourLanguageAvailable": "Self-hosted LiveSync에서 귀하의 언어로 번역을 제공하므로 %{Display language} 설정이 활성화되었습니다.\n\n참고: 모든 메시지가 번역되지는 않습니다. 귀하의 기여를 기다리고 있습니다!\n참고 2: 이슈를 생성하는 경우 **%{lang-def}로 되돌린 후** 스크린샷, 메시지, 로그를 가져와 주세요. 이는 설정 대화 상자에서 할 수 있습니다.\n간편하게 사용하실 수 있었으면 좋겠습니다!", + "Device Setup Method": "기기 설정 방법", + "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.": "모든 동기화를 비활성화하고 재시작합니다.", @@ -105,21 +110,23 @@ "Doctor.Button.No": "아니요", "Doctor.Button.Skip": "그대로 두기", "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.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.Level.Must": "필수", - "Doctor.Level.Necessary": "필수", + "Doctor.Level.Necessary": "필요", "Doctor.Level.Optional": "선택사항", "Doctor.Level.Recommended": "권장", "Doctor.Message.NoIssues": "문제가 감지되지 않았습니다!", "Doctor.Message.RebuildLocalRequired": "주의! 이를 적용하려면 로컬 데이터베이스 재구축이 필요합니다!", "Doctor.Message.RebuildRequired": "주의! 이를 적용하려면 재구축이 필요합니다!", "Doctor.Message.SomeSkipped": "일부 문제를 그대로 두었습니다. 다음 시작 시 다시 질문할까요?", - "Duplicate": "복제", - "Duplicate remote": "원격 구성 복제", + "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)": "특수 상황 처리 (데이터베이스)", @@ -134,73 +141,80 @@ "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": "종단간 암호화", + "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": "청크 크기 향상", + "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 후 복제를 시작하지 못했습니다.", + "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 to resolve conflict": "충돌을 해결할 파일", + "File to view History": "기록을 볼 파일", "Filename": "파일명", - "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": "표시 후 재시작", "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 확인", + "Fresh Start Wipe": "초기화 후 새로 시작", + "Garbage Collection cancelled by user.": "사용자가 가비지 컬렉션을 취소했습니다.", + "Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.": "가비지 컬렉션이 완료되었습니다. 삭제된 청크: ${deletedChunks} / ${totalChunks}. 소요 시간: ${seconds}초.", + "Garbage Collection Confirmation": "가비지 컬렉션 확인", "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}", + "Garbage Collection: Found ${unusedChunks} unused chunks to delete.": "가비지 컬렉션: 삭제할 미사용 청크 ${unusedChunks}개를 찾았습니다.", + "Garbage Collection: Scanned ${scanned} / ~${docCount}": "가비지 컬렉션: ${scanned} / ~${docCount} 검사함", + "Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": "가비지 컬렉션: 검사 완료. 전체 청크 수: ${totalChunks}, 사용 중인 청크 수: ${usedChunks}", "Handle files as Case-Sensitive": "파일을 대소문자 구분으로 처리", "Hidden Files": "숨김 파일", + "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 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, chunks will be split into no more than 100 items. However, dedupe is slightly weaker.": "활성화하면 청크는 최대 100개 항목으로 분할됩니다. 하지만 중복 제거 기능이 약간 약해집니다.", - "If enabled, newly created chunks are temporarily kept within the document, and graduated to become independent chunks once stabilised.": "활성화하면 새로 생성된 변경 기록(청크)은 문서 안에 임시로 보관되며, 일정 조건을 만족하면 자동으로 문서 밖으로 분리되어 저장됩니다.", + "If enabled, newly created chunks are temporarily kept within the document, and graduated to become independent chunks once stabilised.": "활성화하면 새로 생성된 청크가 문서 안에 임시로 보관되며, 안정화된 뒤에 독립된 청크로 분리됩니다.", "If enabled, the ⛔ icon will be shown inside the status instead of the file warnings banner. No details will be shown.": "활성화하면 파일 경고 배너 대신 상태 영역에 ⛔ 아이콘만 표시됩니다. 자세한 내용은 표시되지 않습니다.", "If enabled, the file under 1kb will be processed in the UI thread.": "활성화하면 1kb 미만의 파일은 UI 스레드에서 처리됩니다.", - "If enabled, the notification of hidden files change will be suppressed.": "활성화하면 숨겨진 파일 변경 알림이 억제됩니다.", + "If 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)": "이 옵션이 활성화되면 모든 청크는 콘텐츠에서 생성된 리비전과 함께 저장됩니다. (이전 동작)", "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": "문서 내 변경 기록 임시 보관", + "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} (%{exp})", "K.P2P": "%{Peer}-to-%{Peer}", "K.Peer": "피어", "K.ScanCustomization": "사용자 설정 검색", - "K.short_p2p_sync": "P2P 동기화 (%{exp})", + "K.short_p2p_sync": "P2P 동기화", "K.title_p2p_sync": "피어 투 피어(P2P) 동기화", "Keep empty folder": "빈 폴더 유지", - "lang_def": "Default", + "lang_def": "기본값", "lang-de": "Deutsche", "lang-def": "%{lang_def}", "lang-es": "Español", "lang-fr": "Français", + "lang-he": "עברית", "lang-ja": "日本語", "lang-ko": "한국어", "lang-ru": "Русский", @@ -208,18 +222,19 @@ "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는 서로 다른 접두사 없이 동일한 이름을 가진 여러 볼트를 처리할 수 없습니다. 이는 자동으로 구성되어야 합니다.", + "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.couldNotConnectTo": "${uri}에 연결할 수 없습니다: ${name}\n(${db})", "liveSyncReplicator.couldNotConnectToRemoteDb": "원격 데이터베이스에 연결할 수 없습니다: ${d}", - "liveSyncReplicator.couldNotConnectToServer": "서버에 연결할 수 없습니다.", + "liveSyncReplicator.couldNotConnectToServer": "원격에 대한 연결이 차단되었거나 실패했습니다.", "liveSyncReplicator.couldNotConnectToURI": "${uri}에 연결할 수 없습니다: ${dbRet}", "liveSyncReplicator.couldNotMarkResolveRemoteDb": "원격 데이터베이스를 해결됨으로 표시할 수 없습니다.", "liveSyncReplicator.liveSyncBegin": "LiveSync 시작...", "liveSyncReplicator.lockRemoteDb": "데이터 손상을 방지하기 위해 원격 데이터베이스를 잠급니다", "liveSyncReplicator.markDeviceResolved": "이 기기를 '해결됨'으로 표시합니다.", + "liveSyncReplicator.mismatchedTweakDetected": "기기 간 구성에서 일부 불일치가 감지되었습니다. 수동으로 복제를 실행하면 이 문제를 해결하려고 시도합니다.", "liveSyncReplicator.oneShotSyncBegin": "OneShot 동기화 시작... (${syncMode})", "liveSyncReplicator.remoteDbCorrupted": "원격 데이터베이스가 더 최신이거나 손상되었습니다. 최신 버전의 self-hosted-livesync가 설치되어 있는지 확인하세요", "liveSyncReplicator.remoteDbCreatedOrConnected": "원격 데이터베이스가 생성되거나 연결되었습니다", @@ -228,7 +243,7 @@ "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}", @@ -240,14 +255,14 @@ "Lock the remote server to prevent synchronization with other devices.": "다른 기기와의 동기화를 방지하기 위해 원격 서버를 잠급니다.", "logPane.autoScroll": "자동 스크롤", "logPane.logWindowOpened": "로그 창이 열렸습니다", - "logPane.pause": "일시 중단", + "logPane.pause": "일시 정지", "logPane.title": "Self-hosted LiveSync 로그", "logPane.wrap": "줄 바꿈", "Maximum delay for batch database updating": "일괄 데이터베이스 업데이트 최대 지연", "Maximum file size": "최대 파일 크기", - "Maximum Incubating Chunk Size": "임시 보관 변경 기록의 최대 크기", - "Maximum Incubating Chunks": "임시 보관 중인 변경 기록 최대 수", - "Maximum Incubation Period": "변경 기록 임시 보관 최대 시간", + "Maximum Incubating Chunk Size": "임시 보관 청크의 최대 크기", + "Maximum Incubating Chunks": "임시 보관 청크의 최대 개수", + "Maximum Incubation Period": "청크 임시 보관 최대 기간", "MB (0 to disable).": "MB (0으로 설정하면 비활성화).", "Memory cache": "메모리 캐시", "Memory cache size (by total characters)": "메모리 캐시 크기 (총 문자 수)", @@ -257,11 +272,13 @@ "Minimum interval for syncing": "동기화 최소 간격", "moduleCheckRemoteSize.logCheckingStorageSizes": "스토리지 크기 확인 중", "moduleCheckRemoteSize.logCurrentStorageSize": "원격 스토리지 크기: ${measuredSize}", - "moduleCheckRemoteSize.logExceededWarning": "원격 스토리지 크기: ${measuredSize}가 ${notifySize}를 초과했습니다", + "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.msgSetDBCapacity": "**원격 스토리지 공간이 부족해지기 전에 미리 조치할 수 있도록** 데이터베이스 용량 경고를 설정할 수 있습니다.\n이 기능을 활성화하시겠습니까?\n\n> [!MORE]-\n> - 0: 스토리지 용량에 대한 경고 없음\n> 자체 서버를 사용하는 등 여유 공간이 충분한 경우에 권장됩니다. 스토리지 용량을 직접 확인하고 수동으로 재구성할 수 있습니다.\n> - 800: 원격 스토리지 용량이 800MB를 초과하면 경고\n> 1GB 제한이 있는 fly.io나 IBM Cloudant 사용 시 권장됩니다.\n> - 2000: 원격 스토리지 용량이 2GB를 초과하면 경고\n\n설정한 용량 한도에 도달하면, 단계적으로 경고 한도를 늘릴지 여부를 묻게 됩니다.\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\n> [!WARNING]\n> 전체 재구축을 실행할 때는 모든 기기가 동기화되어 있는지 확인해 주세요. 플러그인이 최대한 병합하려고 시도하기는 합니다.\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.noticeExceeded": "원격 스토리지 크기 ${measuredSize}이(가) 설정된 알림 임계값 ${notifySize}을(를) 초과했습니다. {HERE}", + "moduleCheckRemoteSize.noticeNotConfigured": "원격 스토리지 크기 알림이 설정되어 있지 않습니다. {HERE}", "moduleCheckRemoteSize.option2GB": "2GB (표준)", "moduleCheckRemoteSize.option800MB": "800MB (Cloudant, fly.io)", "moduleCheckRemoteSize.optionAskMeLater": "나중에 물어보기", @@ -269,6 +286,7 @@ "moduleCheckRemoteSize.optionIncreaseLimit": "${newMax}MB로 증가", "moduleCheckRemoteSize.optionNoWarn": "아니요, 경고하지 마세요", "moduleCheckRemoteSize.optionRebuildAll": "지금 모든 것 재구축", + "moduleCheckRemoteSize.optionReview": "옵션 검토", "moduleCheckRemoteSize.titleDatabaseSizeLimitExceeded": "원격 스토리지 크기가 제한을 초과했습니다", "moduleCheckRemoteSize.titleDatabaseSizeNotify": "데이터베이스 크기 알림 설정", "moduleInputUIObsidian.defaultTitleConfirmation": "확인", @@ -284,17 +302,29 @@ "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> 상태가 확실하지 않다면 이 과정을 다시 실행해 보세요. 재시작 전에 반드시 볼트를 백업해 주세요.", + "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": "Scram 활성화됨", + "moduleLiveSyncMain.titleScramEnabled": "긴급 정지 활성화됨", "moduleLocalDatabase.logWaitingForReady": "준비 대기 중...", "moduleLog.showLog": "로그 표시", "moduleMigration.docUri": "https://github.com/vrtmrz/obsidian-livesync/blob/main/README.md#how-to-use", + "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이를 이용해 데이터베이스를 고칠 수 있으니, 아래 \"수정\" 버튼을 눌러 주세요.\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 이상으로 업그레이드하고, 보관함을 반드시 백업해 주세요.\n참고 2: 모두 재구축과 가져오기는 시간과 트래픽을 다소 소모하므로, 사용량이 적은 시간대에 안정적인 네트워크 환경에서 진행해 주세요.\n", + "moduleMigration.insecureChunkExist.title": "안전하지 않은 청크가 발견되었습니다!", "moduleMigration.logBulkSendCorrupted": "청크 일괄 전송이 활성화되었지만, 이 기능에 문제가 있었습니다. 불편을 드려 죄송합니다. 자동으로 비활성화되었습니다.", "moduleMigration.logFetchRemoteTweakFailed": "원격 조정 값을 가져오는데 실패했습니다", "moduleMigration.logLocalDatabaseNotReady": "문제가 발생했습니다! 로컬 데이터베이스가 준비되지 않았습니다", - "moduleMigration.logMigratedSameBehaviour": "이전과 같은 방식으로 동작하도록 db:${current}로 데이터 구조 전환이 완료되었습니다", + "moduleMigration.logMigratedSameBehaviour": "이전과 동일하게 동작하도록 db:${current}(으)로 마이그레이션했습니다", "moduleMigration.logMigrationFailed": "${old}에서 ${current}로의 데이터 구조 전환이 실패했거나 중단되었습니다", "moduleMigration.logRedflag2CreationFail": "redflag2 생성에 실패했습니다", "moduleMigration.logRemoteTweakUnavailable": "원격 조정 값을 가져올 수 없습니다", @@ -302,7 +332,7 @@ "moduleMigration.msgFetchRemoteAgain": "이미 알고 계시겠지만, Self-hosted LiveSync의 기본 동작 방식과 데이터베이스 구조가 변경되었습니다.\n\n다행히도 여러분의 노력 덕분에 원격 데이터베이스는 이미 성공적으로 데이터 구조 전환이 완료된 것으로 보입니다. 축하드립니다!\n\n하지만 아직 일부 추가 작업이 필요합니다. 이 기기의 설정이 원격 데이터베이스와 호환되지 않으므로, 원격 데이터를 다시 가져와야 합니다. 지금 원격 데이터베이스를 다시 가져오시겠습니까?\n\n___참고: 설정이 변경되고 데이터베이스를 다시 불러오기 전까지는 동기화가 불가능합니다.___\n___참고2: 청크는 변경이 불가능한 구조이므로, 메타데이터와 차이점만 가져올 수 있습니다.___", "moduleMigration.msgInitialSetup": "이 기기는 **아직 초기 설정이 완료되지 않았습니다**. 지금부터 설정 과정을 안내해 드리겠습니다.\n\n모든 대화 내용은 클립보드에 복사할 수 있습니다. 나중에 참고하려면 Obsidian 노트에 붙여넣거나 번역 도구를 활용해 번역하셔도 됩니다.\n\n먼저, **Setup URI**를 가지고 계신가요?\n\n참고: Setup URI가 무엇인지 잘 모르시겠다면 [문서](${URI_DOC})를 참고해 주세요.", "moduleMigration.msgRecommendSetupUri": "Setup URI를 생성해 사용하는 것을 강력히 권장합니다.\nSetup URI가 무엇인지 잘 모르시겠다면 [문서](${URI_DOC})를 참고해 주세요. 중요한 내용이니 꼭 확인하시기 바랍니다.\n\n직접 수동 설정을 진행하시겠습니까?", - "moduleMigration.msgSinceV02321": "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}`를 선택한 뒤 다시 동기화해 보세요. 차이점이 감지되면 다시 안내드리겠습니다.", + "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": "둘 다 활성화", @@ -325,7 +355,7 @@ "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 connected device information found. Cancelling Garbage Collection.": "연결된 기기 정보를 찾을 수 없습니다. 가비지 컬렉션을 취소합니다.", "No limit configured": "제한이 설정되지 않음", "No, please take me back": "아니요, 이전으로 돌아가겠습니다", "Node ID": "노드 ID", @@ -337,14 +367,14 @@ "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. This along with batch size controls how many docs are kept in memory at a time.": "한 번에 처리할 일괄 처리 수입니다. 기본값은 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.": "한 번에 처리할 배치 개수입니다. 기본값은 40이고 최소값은 2입니다. 배치 크기와 함께 한 번에 메모리에 보관되는 문서 수를 결정합니다.", "Number of changes to sync at a time. Defaults to 50. Minimum is 2.": "한 번에 동기화할 변경 사항의 수입니다. 기본값은 50입니다. 최소값은 2입니다.", "Obsidian version": "Obsidian 버전", "obsidianLiveSyncSettingTab.btnApply": "적용", "obsidianLiveSyncSettingTab.btnCheck": "확인", "obsidianLiveSyncSettingTab.btnCopy": "복사", "obsidianLiveSyncSettingTab.btnDisable": "비활성화", - "obsidianLiveSyncSettingTab.btnDiscard": "삭제", + "obsidianLiveSyncSettingTab.btnDiscard": "폐기", "obsidianLiveSyncSettingTab.btnEnable": "활성화", "obsidianLiveSyncSettingTab.btnFix": "수정", "obsidianLiveSyncSettingTab.btnGotItAndUpdated": "알겠습니다. 업데이트했습니다.", @@ -368,6 +398,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,12 +417,12 @@ "obsidianLiveSyncSettingTab.logCheckingConfigDone": "구성 확인 완료", "obsidianLiveSyncSettingTab.logCheckingConfigFailed": "구성 확인 실패", "obsidianLiveSyncSettingTab.logCheckingDbConfig": "데이터베이스 구성 확인 중", - "obsidianLiveSyncSettingTab.logCheckPassphraseFailed": "오류: 원격 서버와 패스프레이즈 확인에 실패했습니다: \n${db}.", + "obsidianLiveSyncSettingTab.logCheckPassphraseFailed": "오류: 원격 서버와 패스프레이즈 확인에 실패했습니다:\n${db}.", "obsidianLiveSyncSettingTab.logConfiguredDisabled": "구성된 동기화 모드: 비활성화됨", "obsidianLiveSyncSettingTab.logConfiguredLiveSync": "구성된 동기화 모드: LiveSync", "obsidianLiveSyncSettingTab.logConfiguredPeriodic": "구성된 동기화 모드: 주기적", "obsidianLiveSyncSettingTab.logCouchDbConfigFail": "CouchDB 구성: ${title} 실패", - "obsidianLiveSyncSettingTab.logCouchDbConfigSet": "CouchDB 구성: ${title} -> ${key}를 ${value}로 설정", + "obsidianLiveSyncSettingTab.logCouchDbConfigSet": "CouchDB 구성: ${title} -> ${key}을(를) ${value}(으)로 설정", "obsidianLiveSyncSettingTab.logCouchDbConfigUpdated": "CouchDB 구성: ${title} 성공적으로 업데이트됨", "obsidianLiveSyncSettingTab.logDatabaseConnected": "데이터베이스 연결됨", "obsidianLiveSyncSettingTab.logEncryptionNoPassphrase": "패스프레이즈 없이는 암호화를 활성화할 수 없습니다", @@ -402,17 +433,19 @@ "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.msgEnableEncryptionRecommendation": "종단간 암호화와 경로 난독화를 활성화하는 것을 권장합니다. 정말로 암호화 없이 계속하시겠습니까?", + "obsidianLiveSyncSettingTab.msgEnableCorsChttpd": "chttpd.enable_cors 설정", + "obsidianLiveSyncSettingTab.msgEnableEncryptionRecommendation": "종단 간 암호화와 경로 난독화를 활성화하는 것을 권장합니다. 정말로 암호화 없이 계속하시겠습니까?", "obsidianLiveSyncSettingTab.msgFetchConfigFromRemote": "원격 서버에서 구성을 가져오시겠습니까?", "obsidianLiveSyncSettingTab.msgGenerateSetupURI": "모든 작업이 완료되었습니다! 다른 기기를 설정하기 위해 Setup URI를 생성하시겠습니까?", "obsidianLiveSyncSettingTab.msgIfConfigNotPersistent": "서버 설정이 영구적으로 저장되지 않는 환경(예: Docker에서 실행 중)에서는 이곳의 값들이 변경될 수 있습니다. 연결이 가능해지면 서버의 local.ini 파일에서 설정을 수동으로 업데이트해 주세요.", @@ -421,9 +454,9 @@ "obsidianLiveSyncSettingTab.msgNonHTTPSInfo": "비 HTTPS URI로 구성되었습니다. 모바일 기기에서는 작동하지 않을 수 있으니 주의하세요.", "obsidianLiveSyncSettingTab.msgNonHTTPSWarning": "비 HTTPS URI에 연결할 수 없습니다. 구성을 업데이트하고 다시 시도해 주세요.", "obsidianLiveSyncSettingTab.msgNotice": "---공지사항---", - "obsidianLiveSyncSettingTab.msgObjectStorageWarning": "⚠️ 주의: 이 기능은 아직 개발 중(WIP)입니다. 다음 사항을 유의해 주세요:\n- 추가 전용 구조(append-only)로 동작합니다. 저장 용량을 줄이려면 데이터 재구성이 필요합니다.\n- 기능이 다소 불안정할 수 있습니다.\n- 최초 동기화 시, 전체 히스토리가 원격 서버에서 전송됩니다. 데이터 용량 제한 및 느린 속도에 유의해 주세요.\n- 실시간 동기화는 변경된 부분만 처리됩니다.\n\n문제가 발생했거나 개선 아이디어가 있으시면 GitHub에 이슈를 등록해 주세요.\n기여에 깊이 감사드립니다.", - "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.msgObjectStorageWarning": "경고: 이 기능은 아직 개발 중이므로 다음 사항을 유의해 주세요:\n- 추가 전용 구조로 동작합니다. 저장 용량을 줄이려면 재구축이 필요합니다.\n- 다소 불안정합니다.\n- 최초 동기화 시 모든 기록이 원격에서 전송됩니다. 데이터 사용량 제한과 느린 속도에 유의해 주세요.\n- 실시간 동기화는 변경분만 처리합니다.\n\n문제가 발생했거나 이 기능에 대한 아이디어가 있다면 GitHub에 이슈를 등록해 주세요.\n큰 관심에 깊이 감사드립니다.", + "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## ${OPTION_FETCH}\n한눈에 보기: 📄 ⇄² 💻 ⇐¹ 🛰️ ⇔ 💻 ⇔ 📄\n로컬 데이터베이스를 초기화한 뒤, 원격 데이터베이스에서 가져온 데이터로 재구축합니다.\n원격 데이터베이스를 이미 재구축한 경우도 여기에 해당합니다.\n## ${OPTION_ONLY_SETTING}\n설정만 저장합니다. **주의: 데이터가 손상될 수 있습니다.** 일반적으로는 데이터베이스 재구축이 필요합니다.", "obsidianLiveSyncSettingTab.msgSelectAndApplyPreset": "마법사를 완료하려면 프리셋 항목을 선택하고 적용해 주세요.", "obsidianLiveSyncSettingTab.msgSetCorsCredentials": "cors.credentials 설정", "obsidianLiveSyncSettingTab.msgSetCorsOrigins": "cors.origins 설정", @@ -449,9 +482,10 @@ "obsidianLiveSyncSettingTab.okAdminPrivileges": "✔ 관리자 권한이 있습니다.", "obsidianLiveSyncSettingTab.okCorsCredentials": "✔ cors.credentials가 정상입니다.", "obsidianLiveSyncSettingTab.okCorsCredentialsForOrigin": "CORS 자격 증명 정상", - "obsidianLiveSyncSettingTab.okCorsOriginMatched": "✔ 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가 정상입니다.", @@ -463,8 +497,8 @@ "obsidianLiveSyncSettingTab.optionDisableAllAutomatic": "모든 자동 비활성화", "obsidianLiveSyncSettingTab.optionFetchFromRemote": "원격에서 가져오기", "obsidianLiveSyncSettingTab.optionHere": "여기", - "obsidianLiveSyncSettingTab.optionLiveSync": "LiveSync 동기화", - "obsidianLiveSyncSettingTab.optionMinioS3R2": "Minio,S3,R2", + "obsidianLiveSyncSettingTab.optionLiveSync": "LiveSync", + "obsidianLiveSyncSettingTab.optionMinioS3R2": "MinIO, S3, R2", "obsidianLiveSyncSettingTab.optionOkReadEverything": "네, 모든 것을 읽었습니다.", "obsidianLiveSyncSettingTab.optionOnEvents": "이벤트 시", "obsidianLiveSyncSettingTab.optionPeriodicAndEvents": "주기적 및 이벤트 시", @@ -476,10 +510,12 @@ "obsidianLiveSyncSettingTab.panelPrivacyEncryption": "개인정보 보호 및 암호화", "obsidianLiveSyncSettingTab.panelRemoteConfiguration": "원격 구성", "obsidianLiveSyncSettingTab.panelSetup": "설정", - "obsidianLiveSyncSettingTab.titleAppearance": "외관", + "obsidianLiveSyncSettingTab.serverVersion": "서버 정보: ${info}", + "obsidianLiveSyncSettingTab.titleActiveRemoteServer": "활성 원격 서버", + "obsidianLiveSyncSettingTab.titleAppearance": "모양", "obsidianLiveSyncSettingTab.titleConflictResolution": "충돌 해결", "obsidianLiveSyncSettingTab.titleCongratulations": "축하합니다!", - "obsidianLiveSyncSettingTab.titleCouchDB": "CouchDB 서버", + "obsidianLiveSyncSettingTab.titleCouchDB": "CouchDB", "obsidianLiveSyncSettingTab.titleDeletionPropagation": "삭제 전파", "obsidianLiveSyncSettingTab.titleEncryptionNotEnabled": "암호화가 활성화되지 않음", "obsidianLiveSyncSettingTab.titleEncryptionPassphraseInvalid": "암호화 패스프레이즈 유효하지 않음", @@ -496,14 +532,14 @@ "obsidianLiveSyncSettingTab.titleRebuildRequired": "재구축 필요", "obsidianLiveSyncSettingTab.titleRemoteConfigCheckFailed": "원격 구성 확인 실패", "obsidianLiveSyncSettingTab.titleRemoteServer": "원격 서버", - "obsidianLiveSyncSettingTab.titleReset": "리셋", + "obsidianLiveSyncSettingTab.titleReset": "재설정", "obsidianLiveSyncSettingTab.titleSetupOtherDevices": "다른 기기 설정", "obsidianLiveSyncSettingTab.titleSynchronizationMethod": "동기화 방법", "obsidianLiveSyncSettingTab.titleSynchronizationPreset": "동기화 프리셋", "obsidianLiveSyncSettingTab.titleSyncSettings": "동기화 설정", - "obsidianLiveSyncSettingTab.titleSyncSettingsViaMarkdown": "마크다운을 통한 동기화 설정", + "obsidianLiveSyncSettingTab.titleSyncSettingsViaMarkdown": "마크다운을 통한 설정 동기화", "obsidianLiveSyncSettingTab.titleUpdateThinning": "업데이트 솎아내기", - "obsidianLiveSyncSettingTab.warnCorsOriginUnmatched": "⚠ CORS 원점이 일치하지 않습니다 {from}->{to}", + "obsidianLiveSyncSettingTab.warnCorsOriginUnmatched": "⚠ CORS 출처가 일치하지 않습니다 ${from}->${to}", "obsidianLiveSyncSettingTab.warnNoAdmin": "⚠ 관리자 권한이 없습니다.", "Ok": "확인", "Old Algorithm": "이전 알고리즘", @@ -513,7 +549,7 @@ "Overwrite": "덮어쓰기", "Overwrite patterns": "덮어쓰기 패턴", "Overwrite remote": "원격 덮어쓰기", - "Overwrite remote with local DB and passphrase.": "로컬 DB와 암호문구로 원격을 덮어씁니다.", + "Overwrite remote with local DB and passphrase.": "로컬 DB와 패스프레이즈로 원격을 덮어씁니다.", "Overwrite Server Data with This Device's Files": "이 기기의 파일로 서버 데이터를 덮어쓰기", "P2P.AskPassphraseForDecrypt": "원격 피어가 구성을 공유했습니다. 구성을 복호화하려면 패스프레이즈를 입력해 주세요.", "P2P.AskPassphraseForShare": "원격 피어가 이 기기의 구성을 요청했습니다. 구성을 공유하려면 패스프레이즈를 입력해 주세요. 이 대화상자를 취소하여 요청을 무시할 수 있습니다.", @@ -521,9 +557,9 @@ "P2P.FailedToOpen": "시그널링 서버에 P2P 연결을 열 수 없습니다.", "P2P.NoAutoSyncPeers": "자동 동기화 피어를 찾을 수 없습니다. %{long_p2p_sync} 창에서 피어를 설정해 주세요.", "P2P.NoKnownPeers": "피어가 감지되지 않았습니다. 다른 피어의 접속을 기다리고 있습니다...", - "P2P.Note.description": "이 복제기는 피어 투 피어(P2P) 연결을 통해 다른 기기들과 볼트를 동기화할 수 있도록 합니다. 클라우드 서비스를 거치지 않고도 기기간 동기화를 구현할 수 있습니다.\n\n이 복제기는 Trystero를 기반으로 하며, 기기 간 연결을 설정하기 위해 시그널링 서버를 사용합니다. 시그널링 서버는 단순히 연결 정보를 교환하는 용도로만 사용되며, 사용자 데이터를 저장하거나 접근하지 않습니다 (또는 그래야만 합니다).\n\n시그널링 서버는 누구나 운영할 수 있으며, 이는 단순한 Nostr 릴레이입니다. 편의성과 복제기의 작동 확인을 위해 `vrtmrz`가 자체적으로 시그널링 서버 인스턴스를 운영 중입니다. 사용자는 `vrtmrz`가 제공하는 실험용 서버를 사용할 수도 있고, 별도로 자신만의 서버를 설정할 수도 있습니다.\n\n참고로, 시그널링 서버는 사용자 데이터를 저장하지 않더라도 일부 기기의 연결 정보는 볼 수 있습니다. 이 점을 유의해 주세요. 특히 타인이 운영하는 서버를 사용할 경우 주의가 필요합니다.", - "P2P.Note.important_note": "피어 투 피어(P2P) 복제기의 실험적 구현입니다.", - "P2P.Note.important_note_sub": "이 기능은 아직 실험 단계에 있습니다. 이 기능이 예상대로 작동하지 않을 수 있음을 알아주세요. 또한 버그, 보안 문제 및 기타 문제가 있을 수 있습니다. 이 기능을 사용할 때는 본인의 책임 하에 사용하세요. 이 기능의 개발에 기여해 주세요.", + "P2P.Note.description": " 이 복제기는 피어 투 피어 연결을 이용해 다른 기기와 보관함을 동기화할 수 있게 해 줍니다.\n클라우드 서비스를 사용하지 않고도 다른 기기와 보관함을 동기화할 수 있습니다.\n이 복제기는 Trystero를 기반으로 합니다. 기기 간 연결을 맺기 위해 시그널링 서버도 사용합니다. 시그널링 서버는 기기 사이의 연결 정보를 교환하는 데 쓰이며, 사용자의 데이터는 알지도 저장하지도 않습니다(또는 그래야 합니다).\n\n시그널링 서버는 누구나 운영할 수 있습니다. 단순한 Nostr 릴레이일 뿐입니다. 편의를 위해, 그리고 복제기의 동작을 확인할 수 있도록 vrtmrz가 시그널링 서버 인스턴스를 하나 운영하고 있습니다. vrtmrz가 제공하는 실험용 서버를 사용해도 되고, 다른 서버를 사용해도 됩니다.\n\n참고로, 시그널링 서버가 데이터를 저장하지 않더라도 일부 기기의 연결 정보는 볼 수 있습니다. 이 점을 유의해 주세요. 또한 다른 사람이 제공하는 서버를 사용할 때는 주의하시기 바랍니다.", + "P2P.Note.important_note": "피어 투 피어 복제기입니다.", + "P2P.Note.important_note_sub": "이 기능은 아직 실험 단계입니다. 사용하기 전에 반드시 데이터를 백업해 주세요. 그리고 이 기능의 개발에 기여해 주신다면 매우 감사하겠습니다.", "P2P.Note.Summary": "이 기능은 무엇인가요? (설명과 참고사항이 적혀있습니다. 한 번 읽어보세요!)", "P2P.NotEnabled": "%{title_p2p_sync}가 활성화되지 않았습니다. 새로운 연결을 열 수 없습니다.", "P2P.P2PReplication": "%{P2P} 복제", @@ -533,21 +569,21 @@ "P2P.SyncAlreadyRunning": "P2P 동기화가 이미 실행 중입니다.", "P2P.SyncCompleted": "P2P 동기화가 완료되었습니다.", "P2P.SyncStartedWith": "${name}과의 P2P 동기화가 시작되었습니다.", - "paneMaintenance.markDeviceResolvedAfterBackup": "백업 후 장치를 해결됨으로 표시", - "paneMaintenance.remoteLockedAndDeviceNotAccepted": "원격 데이터베이스가 잠겨 있으며 이 장치는 아직 승인되지 않았습니다.", - "paneMaintenance.remoteLockedResolvedDevice": "원격 데이터베이스가 잠겨 있지만 이 장치는 이미 승인되었습니다.", + "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.": "현재 사용 중인 장치 중 하나에서 생성한 설정 URI를 붙여 넣으세요。", + "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": "피어 투 피어 동기화", + "Peer-to-Peer Synchronisation": "피어 투 피어(P2P) 동기화", "Per-file-saved customization sync": "파일별 저장 사용자 설정 동기화", "Perform": "실행", "Perform cleanup": "정리 실행", @@ -555,35 +591,42 @@ "Perform Garbage Collection to remove unused chunks and reduce database size.": "사용하지 않는 청크를 제거하고 데이터베이스 크기를 줄이기 위해 가비지 컬렉션을 실행합니다.", "Periodic Sync interval": "주기적 동기화 간격", "Pick a file to resolve conflict": "충돌을 해결할 파일 선택", - "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\"를 활성화해 주세요.", + "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 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": "이 장치 이름을 설정해 주세요", + "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을 진행합니다.", + "Proceed Garbage Collection": "가비지 컬렉션 계속", + "Proceed with Setup URI": "Setup URI로 계속", + "Proceeding with Garbage Collection, ignoring missing nodes.": "누락된 노드를 무시하고 가비지 컬렉션을 계속 진행합니다.", + "Proceeding with Garbage Collection.": "가비지 컬렉션을 진행합니다.", "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": "모든 파일의 누락된 청크 다시 생성", - "RedFlag.Fetch.Method.Desc": "어떻게 가져오시겠습니까?\n- %{RedFlag.Fetch.Method.FetchSafer}. (권장)\n **낮은 트래픽**, **높은 CPU**, **낮은 위험**\n- %{RedFlag.Fetch.Method.FetchSmoother}.\n **낮은 트래픽**, **보통 CPU**, **낮음에서 보통 위험**\n- %{RedFlag.Fetch.Method.FetchTraditional}.\n **높은 트래픽**, **낮은 CPU**, **낮음에서 보통 위험**\n\n>[!INFO]- 세부 사항\n> ## %{RedFlag.Fetch.Method.FetchSafer}. (권장)\n> **낮은 트래픽**, **높은 CPU**, **낮은 위험**\n> 이 옵션은 원격 소스에서 데이터를 가져오기 전에 기존 로컬 파일을 사용하여 로컬 데이터베이스를 먼저 생성합니다.\n> 로컬과 원격 모두에 일치하는 파일이 있으면 둘 사이의 차이점만 전송됩니다.\n> 하지만 두 위치 모두에 있는 파일은 초기에 충돌 파일로 처리됩니다. 실제로 충돌하지 않는다면 자동으로 해결되지만 이 과정은 시간이 걸릴 수 있습니다.\n> 이는 일반적으로 가장 안전한 방법으로 데이터 손실 위험을 최소화합니다.\n> ## %{RedFlag.Fetch.Method.FetchSmoother}.\n> **낮은 트래픽**, **보통 CPU**, **낮음에서 보통 위험** (작업에 따라)\n> 이 옵션은 먼저 로컬 파일에서 데이터베이스용 청크를 생성한 다음 데이터를 가져옵니다. 따라서 로컬에 없는 청크만 전송됩니다. 하지만 모든 메타데이터는 원격 소스에서 가져옵니다.\n> 그런 다음 로컬 파일이 시작 시 이 메타데이터와 비교됩니다. 더 새로운 것으로 간주되는 콘텐츠가 오래된 것을 덮어씁니다(수정 시간 기준). 이 결과는 원격 데이터베이스에 다시 동기화됩니다.\n> 로컬 파일이 실제로 최신 타임스탬프라면 일반적으로 안전합니다. 하지만 파일이 더 새로운 타임스탬프를 가지고 있지만 더 오래된 콘텐츠를 가지고 있다면(초기 `welcome.md`처럼) 문제가 발생할 수 있습니다.\n> 이는 \"%{RedFlag.Fetch.Method.FetchSafer}\"보다 CPU를 덜 사용하고 더 빠르지만 주의 깊게 사용하지 않으면 데이터 손실로 이어질 수 있습니다.\n> ## %{RedFlag.Fetch.Method.FetchTraditional}.\n> **높은 트래픽**, **낮은 CPU**, **낮음에서 보통 위험** (작업에 따라)\n> 모든 것이 원격에서 가져와집니다.\n> %{RedFlag.Fetch.Method.FetchSmoother}와 유사하지만 모든 청크가 원격 소스에서 가져와집니다.\n> 이는 가장 전통적인 가져오기 방법으로 일반적으로 가장 많은 네트워크 트래픽과 시간을 소모합니다. 또한 '%{RedFlag.Fetch.Method.FetchSmoother}' 옵션과 유사하게 원격 파일을 덮어쓸 위험이 있습니다.\n> 하지만 가장 오래되고 가장 직접적인 접근 방식이기 때문에 종종 가장 안정적인 방법으로 간주됩니다.", + "RedFlag.Fetch.Method.Desc": "어떻게 가져오시겠습니까?\n- %{RedFlag.Fetch.Method.FetchSafer}.\n **낮은 트래픽**, **높은 CPU**, **낮은 위험**\n 다음의 경우에 권장합니다.\n - 파일이 일관되지 않을 가능성이 있음\n - 파일이 그리 많지 않음\n- %{RedFlag.Fetch.Method.FetchSmoother}.\n **낮은 트래픽**, **보통 CPU**, **낮음~보통 위험**\n 다음의 경우에 권장합니다.\n - 파일이 대체로 일관됨\n - 파일이 많음\n- %{RedFlag.Fetch.Method.FetchTraditional}.\n **높은 트래픽**, **낮은 CPU**, **낮음~보통 위험**\n\n>[!INFO]- 자세히\n> ## %{RedFlag.Fetch.Method.FetchSafer}.\n> **낮은 트래픽**, **높은 CPU**, **낮은 위험**\n> 원격에서 데이터를 가져오기 전에 기존 로컬 파일로 로컬 데이터베이스를 먼저 만듭니다.\n> 로컬과 원격 양쪽에 일치하는 파일이 있으면 둘 사이의 차이만 전송됩니다.\n> 다만 양쪽에 모두 있는 파일은 처음에 충돌 파일로 처리됩니다. 실제로 충돌하지 않는다면 자동으로 해결되지만, 이 과정에 시간이 걸릴 수 있습니다.\n> 일반적으로 가장 안전한 방법이며 데이터 손실 위험이 가장 낮습니다.\n> ## %{RedFlag.Fetch.Method.FetchSmoother}.\n> **낮은 트래픽**, **보통 CPU**, **낮음~보통 위험** (작업에 따라 다름)\n> 먼저 로컬 파일로 데이터베이스용 청크를 만든 다음 데이터를 가져옵니다. 따라서 로컬에 없는 청크만 전송됩니다. 다만 메타데이터는 모두 원격에서 가져옵니다.\n> 그다음 시작 시점에 로컬 파일을 이 메타데이터와 비교합니다. 수정 시각을 기준으로 더 새롭다고 판단된 내용이 오래된 쪽을 덮어씁니다. 그 결과는 다시 원격 데이터베이스로 동기화됩니다.\n> 로컬 파일이 실제로 가장 최신 타임스탬프를 가지고 있다면 대체로 안전합니다. 하지만 타임스탬프는 더 새롭지만 내용은 더 오래된 파일(처음 만들어지는 `welcome.md` 같은)이 있으면 문제가 생길 수 있습니다.\n> \"%{RedFlag.Fetch.Method.FetchSafer}\"보다 CPU를 적게 쓰고 더 빠르지만, 주의해서 사용하지 않으면 데이터가 손실될 수 있습니다.\n> ## %{RedFlag.Fetch.Method.FetchTraditional}.\n> **높은 트래픽**, **낮은 CPU**, **낮음~보통 위험** (작업에 따라 다름)\n> 모든 것을 원격에서 가져옵니다.\n> %{RedFlag.Fetch.Method.FetchSmoother}와 비슷하지만, 모든 청크를 원격에서 가져옵니다.\n> 가장 전통적인 가져오기 방식으로, 보통 네트워크 트래픽과 시간을 가장 많이 소모합니다. 또한 '%{RedFlag.Fetch.Method.FetchSmoother}' 옵션과 마찬가지로 원격 파일을 덮어쓸 위험이 있습니다.\n> 다만 가장 오래되고 단순한 방식이기 때문에 가장 안정적인 방법으로 여겨지는 경우가 많습니다.", "RedFlag.Fetch.Method.FetchSafer": "가져오기 전에 로컬 데이터베이스를 한 번 생성", "RedFlag.Fetch.Method.FetchSmoother": "가져오기 전에 로컬 파일 청크 생성", "RedFlag.Fetch.Method.FetchTraditional": "원격에서 모든 것 가져오기", "RedFlag.Fetch.Method.Title": "어떻게 가져오시겠습니까?", + "RedFlag.FetchRemoteConfig.Buttons.Cancel": "아니요, 로컬 설정을 사용합니다", + "RedFlag.FetchRemoteConfig.Buttons.Fetch": "예, 원격 설정을 가져와 적용합니다", + "RedFlag.FetchRemoteConfig.Message": "원격에 저장된 환경 설정을 가져와 이 기기에 적용하시겠습니까?", + "RedFlag.FetchRemoteConfig.Title": "원격 구성 가져오기", "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": "지역", @@ -596,7 +639,7 @@ "Remote Type": "원격 유형", "Rename": "이름 바꾸기", "Replicator.Dialogue.Locked.Action.Dismiss": "재확인을 위해 취소", - "Replicator.Dialogue.Locked.Action.Fetch": "원격 데이터베이스에서 모든 것을 다시 가져오기", + "Replicator.Dialogue.Locked.Action.Fetch": "이 기기의 동기화 재설정", "Replicator.Dialogue.Locked.Action.Unlock": "원격 데이터베이스 잠금 해제", "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": "모든 것 가져오기가 예약되었습니다. 이를 수행하기 위해 플러그인이 재시작됩니다.", @@ -606,7 +649,7 @@ "Replicator.Message.InitialiseFatalError": "사용 가능한 복제기가 없습니다. 치명적인 오류입니다.", "Replicator.Message.Pending": "일부 파일 이벤트가 대기 중입니다. 복제가 취소되었습니다.", "Replicator.Message.SomeModuleFailed": "일부 모듈 실패로 복제가 취소되었습니다", - "Replicator.Message.VersionUpFlash": "설정을 열고 메시지를 확인해 주세요. 복제가 취소되었습니다.", + "Replicator.Message.VersionUpFlash": "업데이트가 감지되었습니다. 설정 대화 상자를 열어 변경 로그를 확인해 주세요. 복제가 취소되었습니다.", "Requires restart of Obsidian": "Obsidian 재시작 필요", "Requires restart of Obsidian.": "Obsidian 재시작이 필요합니다.", "Rerun Onboarding Wizard": "온보딩 마법사 다시 실행", @@ -623,13 +666,14 @@ "Reset received": "수신 기록 재설정", "Reset sent history": "송신 기록 재설정", "Reset Synchronisation information": "동기화 정보 재설정", - "Reset Synchronisation on This Device": "이 장치의 동기화 상태 재설정", + "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 객체 스토리지", @@ -642,12 +686,12 @@ "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 코드를 스캔하세요。", + "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!": "긴급 조치", + "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": "시크릿 키", @@ -655,7 +699,7 @@ "Send": "보내기", "Send chunks": "청크 보내기", "Server URI": "서버 URI", - "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\n", + "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": "설정 진단 마법사", @@ -664,28 +708,44 @@ "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.Doctor.Buttons.No": "아니요, URI에 담긴 설정을 그대로 사용합니다", + "Setup.Doctor.Buttons.Yes": "예, 설정 진단 마법사를 실행합니다", + "Setup.Doctor.Message": "Self-hosted LiveSync는 오랜 기간에 걸쳐 발전해 왔고, 그동안 권장 설정도 일부 바뀌었습니다.\n\n지금 설정 단계가 이를 점검하기에 아주 좋은 시점입니다.\n\n가져온 설정이 최신 기준에 비추어 최적인지 확인하도록 설정 진단 마법사를 실행하시겠습니까?", + "Setup.Doctor.Title": "설정 진단 마법사를 실행할까요?", + "Setup.FetchRemoteConf.Buttons.Fetch": "예, 구성을 가져옵니다", + "Setup.FetchRemoteConf.Buttons.Skip": "아니요, URI에 담긴 설정을 사용합니다", + "Setup.FetchRemoteConf.Message": "다른 기기와 이미 한 번이라도 동기화했다면, 원격 데이터베이스에 동기화된 기기 사이에 적합한 구성 값이 저장되어 있습니다. 플러그인은 더 견고한 구성을 위해 이 값을 가져오려고 합니다.\n\n다만 한 가지 확인이 필요합니다. 지금 네트워크에 안전하게 접근해 설정을 가져올 수 있는 상황인가요?\n\n참고: 원격 데이터베이스가 SSL 인증서로 보호되어 있고 네트워크가 안전하다면, 대부분의 경우 그대로 진행해도 괜찮습니다.", + "Setup.FetchRemoteConf.Title": "원격 데이터베이스에서 구성을 가져올까요?", "Setup.QRCode": "설정을 전송하기 위한 QR 코드를 생성했습니다. 휴대폰이나 다른 기기로 QR 코드를 스캔해 주세요.\n참고: QR 코드는 암호화되지 않았으므로 열 때 주의하세요.\n\n>[!FOR YOUR EYES ONLY]-\n>
${qr_image}
", "Setup.RemoteE2EE.AdvancedTitle": "고급", "Setup.RemoteE2EE.AlgorithmWarning": "암호화 알고리즘을 변경하면 다른 알고리즘으로 암호화된 기존 데이터에 접근할 수 없게 됩니다. 모든 기기에서 동일한 알고리즘을 사용하도록 설정해 데이터 접근성을 유지하세요.", "Setup.RemoteE2EE.ButtonCancel": "취소", "Setup.RemoteE2EE.ButtonProceed": "진행", - "Setup.RemoteE2EE.DefaultAlgorithmDesc": "대부분의 경우 기본 알고리즘(${algorithm})을 그대로 사용하는 것이 좋습니다. 이 설정은 기존 Vault가 다른 형식으로 암호화되어 있는 경우에만 필요합니다.", - "Setup.RemoteE2EE.Guidance": "엔드투엔드 암호화 설정을 구성해 주세요.", - "Setup.RemoteE2EE.LabelEncrypt": "엔드투엔드 암호화", + "Setup.RemoteE2EE.DefaultAlgorithmDesc": "대부분의 경우 기본 알고리즘(${algorithm})을 그대로 사용하는 것이 좋습니다. 이 설정은 기존 보관함이 다른 형식으로 암호화되어 있는 경우에만 필요합니다.", + "Setup.RemoteE2EE.Guidance": "종단 간 암호화 설정을 구성해 주세요.", + "Setup.RemoteE2EE.LabelEncrypt": "종단 간 암호화", "Setup.RemoteE2EE.LabelEncryptionAlgorithm": "암호화 알고리즘", "Setup.RemoteE2EE.LabelObfuscateProperties": "속성 난독화", "Setup.RemoteE2EE.MultiDestinationWarning": "여러 동기화 대상에 연결하는 경우에도 이 설정은 동일해야 합니다.", "Setup.RemoteE2EE.ObfuscatePropertiesDesc": "속성(예: 파일 경로, 크기, 생성일 및 수정일)을 난독화하면 원격 서버에서 파일과 폴더의 구조 및 이름을 식별하기 어렵게 만들어 보안을 한층 강화할 수 있습니다. 이는 개인 정보를 보호하고 권한 없는 사용자가 데이터에 관한 정보를 추론하기 어렵게 만듭니다.", - "Setup.RemoteE2EE.PassphraseValidationLine1": "엔드투엔드 암호화 패스프레이즈는 실제 동기화가 시작되기 전까지 검증되지 않는다는 점에 유의하세요. 이것은 데이터를 보호하기 위한 보안 조치입니다.", + "Setup.RemoteE2EE.PassphraseValidationLine1": "종단 간 암호화 패스프레이즈는 실제 동기화가 시작되기 전까지 검증되지 않는다는 점에 유의하세요. 데이터를 보호하기 위한 보안 조치입니다.", "Setup.RemoteE2EE.PassphraseValidationLine2": "따라서 서버 정보를 수동으로 구성할 때는 각별히 주의해 주세요. 잘못된 패스프레이즈를 입력하면 서버의 데이터가 손상됩니다. 이는 의도된 동작이니 반드시 이해하고 진행해 주세요.", "Setup.RemoteE2EE.PlaceholderPassphrase": "패스프레이즈를 입력하세요", - "Setup.RemoteE2EE.StronglyRecommendedLine1": "엔드투엔드 암호화를 활성화하면 데이터가 원격 서버로 전송되기 전에 이 기기에서 암호화됩니다. 즉, 누군가 서버에 접근하더라도 패스프레이즈 없이는 데이터를 읽을 수 없습니다. 다른 기기에서 데이터를 복호화할 때도 필요하므로 패스프레이즈를 반드시 기억해 두세요.", + "Setup.RemoteE2EE.StronglyRecommendedLine1": "종단 간 암호화를 활성화하면 데이터가 원격 서버로 전송되기 전에 이 기기에서 암호화됩니다. 즉, 누군가 서버에 접근하더라도 패스프레이즈 없이는 데이터를 읽을 수 없습니다. 다른 기기에서 데이터를 복호화할 때도 필요하므로 패스프레이즈를 반드시 기억해 두세요.", "Setup.RemoteE2EE.StronglyRecommendedLine2": "또한 Peer-to-Peer 동기화를 사용 중이더라도, 나중에 다른 방식으로 전환하여 원격 서버에 연결하면 이 설정이 그대로 사용됩니다.", "Setup.RemoteE2EE.StronglyRecommendedTitle": "강력 권장", - "Setup.RemoteE2EE.Title": "엔드투엔드 암호화", + "Setup.RemoteE2EE.Title": "종단 간 암호화", "Setup.ScanQRCode.ButtonClose": "이 대화 상자 닫기", "Setup.ScanQRCode.Guidance": "기존 기기에서 설정을 가져오려면 아래 단계를 따라 주세요.", - "Setup.ScanQRCode.Step1": "이 기기에서는 이 Vault를 계속 열어 두세요.", + "Setup.ScanQRCode.Step1": "이 기기에서는 이 보관함을 계속 열어 두세요.", "Setup.ScanQRCode.Step2": "원본 기기에서 Obsidian을 엽니다.", "Setup.ScanQRCode.Step3": "원본 기기에서 명령 팔레트를 열고 \"설정을 QR 코드로 표시\" 명령을 실행합니다.", "Setup.ScanQRCode.Step4": "이 기기에서 카메라 앱으로 전환하거나 QR 코드 스캐너를 사용해 표시된 QR 코드를 스캔하세요.", @@ -695,13 +755,13 @@ "Setup.UseSetupURI.ButtonCancel": "취소", "Setup.UseSetupURI.ButtonProceed": "설정 테스트 후 계속", "Setup.UseSetupURI.ErrorFailedToParse": "Setup URI를 해석하지 못했습니다. URI와 패스프레이즈를 확인해 주세요.", - "Setup.UseSetupURI.ErrorPassphraseRequired": "Vault 패스프레이즈를 입력해 주세요.", - "Setup.UseSetupURI.GuidanceLine1": "서버 설치 중 또는 다른 기기에서 생성된 Setup URI와 Vault 패스프레이즈를 입력해 주세요.", + "Setup.UseSetupURI.ErrorPassphraseRequired": "보관함 패스프레이즈를 입력해 주세요.", + "Setup.UseSetupURI.GuidanceLine1": "서버 설치 중에 또는 다른 기기에서 생성한 Setup URI와 보관함 패스프레이즈를 입력해 주세요.", "Setup.UseSetupURI.GuidanceLine2": "명령 팔레트에서 \"설정을 새 Setup URI로 복사\" 명령을 실행하면 새 Setup URI를 생성할 수 있습니다.", "Setup.UseSetupURI.InvalidInfo": "Setup URI가 올바르지 않습니다. 확인한 뒤 다시 시도해 주세요.", - "Setup.UseSetupURI.LabelPassphrase": "Vault 패스프레이즈", + "Setup.UseSetupURI.LabelPassphrase": "보관함 패스프레이즈", "Setup.UseSetupURI.LabelSetupURI": "Setup URI", - "Setup.UseSetupURI.PlaceholderPassphrase": "Vault 패스프레이즈를 입력하세요", + "Setup.UseSetupURI.PlaceholderPassphrase": "보관함 패스프레이즈를 입력하세요", "Setup.UseSetupURI.Title": "Setup URI 입력", "Setup.UseSetupURI.ValidInfo": "Setup URI가 유효하며 사용할 준비가 되었습니다.", "Should we keep folders that don't have any files inside?": "내부에 파일이 없는 폴더를 유지하시겠습니까?", @@ -709,17 +769,20 @@ "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 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.": "파일 변경 사항 감시를 중단합니다.", - "Suppress notification of hidden files change": "숨겨진 파일 변경 알림 억제", + "Storage -> Database": "스토리지 -> 데이터베이스", + "Suppress notification of hidden files change": "숨김 파일 변경 알림 억제", "Suspend database reflecting": "데이터베이스 반영 일시 중단", "Suspend file watching": "파일 감시 일시 중단", "Switch to IDB": "IDB로 전환", @@ -731,7 +794,7 @@ "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 호환 객체 스토리지를 미리 구성해야 합니다。", + "Synchronisation utilising journal files. You must have set up an S3/MinIO/R2 compatible object storage.": "저널 파일을 활용하는 동기화 방식입니다. S3/MinIO/R2 호환 객체 스토리지를 미리 구성해 두어야 합니다.", "Synchronising files": "동기화할 파일", "Syncing": "동기화", "Target patterns": "대상 패턴", @@ -739,17 +802,20 @@ "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. 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 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 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": "전송 조정", + "TweakMismatchResolve.Action.DisableAutoAcceptCompatible": "자동 수용 비활성화", "TweakMismatchResolve.Action.Dismiss": "무시", + "TweakMismatchResolve.Action.EnableAutoAcceptCompatible": "자동 수용 활성화", "TweakMismatchResolve.Action.UseConfigured": "구성된 설정 사용", "TweakMismatchResolve.Action.UseMine": "원격 데이터베이스 설정 업데이트", "TweakMismatchResolve.Action.UseMineAcceptIncompatible": "원격 데이터베이스 설정 업데이트하지만 그대로 유지", @@ -757,8 +823,11 @@ "TweakMismatchResolve.Action.UseRemote": "이 기기에 설정 적용", "TweakMismatchResolve.Action.UseRemoteAcceptIncompatible": "이 기기에 설정 적용하지만 호환성 문제 무시", "TweakMismatchResolve.Action.UseRemoteWithRebuild": "이 기기에 설정 적용하고 다시 가져오기", + "TweakMismatchResolve.Message.AutoAcceptCompatibleUndefined": "\n기기마다 설정이 다른 것으로 보입니다. 이제 호환되는 변경 사항은 자동으로 적용할 수 있습니다.\n이 `자동 수용` 설정을 활성화하시겠습니까?", "TweakMismatchResolve.Message.Main": "\n원격 데이터베이스의 설정은 다음과 같습니다. 이 값들은 이 기기와 최소 한 번 동기화된 다른 기기에서 구성된 것입니다.\n\n이 설정을 사용하려면 %{TweakMismatchResolve.Action.UseConfigured}를 선택해 주세요.\n이 기기의 설정을 유지하려면 %{TweakMismatchResolve.Action.Dismiss}를 선택해 주세요.\n\n${table}\n\n>[!TIP]\n> 모든 설정을 동기화하려면 이 기능으로 최소 구성을 적용한 후 `마크다운을 통한 설정 동기화`를 사용해 주세요.\n\n${additionalMessage}", "TweakMismatchResolve.Message.MainTweakResolving": "구성이 원격 서버의 것과 일치하지 않습니다.\n\n다음 구성이 일치해야 합니다:\n\n${table}\n\n결정을 알려주세요.\n\n${additionalMessage}", + "TweakMismatchResolve.Message.mineUpdated": "이 기기의 구성이 조정되었습니다.", + "TweakMismatchResolve.Message.remoteUpdated": "원격에 저장된 구성이 업데이트되었습니다.", "TweakMismatchResolve.Message.UseRemote.WarningRebuildRecommended": "\n>[!NOTICE]\n> 일부 변경사항은 호환 가능하지만 추가 스토리지 및 전송량을 소모할 수 있습니다. 재구축을 권장합니다. 하지만 현재 재구축을 수행하지 않더라도 향후 유지보수에서 구현될 수 있습니다.\n> ***시간적 여유가 있고 안정적인 네트워크에 연결된 상태에서 적용해 주세요!***", "TweakMismatchResolve.Message.UseRemote.WarningRebuildRequired": "\n>[!WARNING]\n> 일부 원격 구성이 이 기기의 로컬 데이터베이스와 호환되지 않습니다. 로컬 데이터베이스 재구축이 필요합니다.\n> ***시간적 여유가 있고 안정적인 네트워크에 연결된 상태에서 적용해 주세요!***", "TweakMismatchResolve.Message.WarningIncompatibleRebuildRecommended": "\n>[!NOTICE]\n> 로컬 데이터베이스와 원격 데이터베이스가 호환되지 않도록 만드는 값들이 다른 것을 감지했습니다.\n> 일부 변경사항은 호환 가능하지만 추가 스토리지 및 전송량을 소모할 수 있습니다. 재구축을 권장합니다. 하지만 현재 재구축을 수행하지 않더라도 향후 유지보수에서 구현될 수 있습니다.\n> 재구축을 원한다면 몇 분 이상 소요됩니다. **지금 수행해도 안전한지 확인해 주세요.**", @@ -766,11 +835,278 @@ "TweakMismatchResolve.Table": "| 값 이름 | 이 기기 | 원격 |\n|: --- |: ---- :|: ---- :|\n${rows}\n\n", "TweakMismatchResolve.Table.Row": "| ${name} | ${self} | ${remote} |", "TweakMismatchResolve.Title": "구성 불일치 감지", + "TweakMismatchResolve.Title.AutoAcceptCompatible": "자동 수용 사용 가능", "TweakMismatchResolve.Title.TweakResolving": "구성 불일치 감지", "TweakMismatchResolve.Title.UseRemoteConfig": "원격 구성 사용", + "Ui.Common.Signal.Caution": "주의", + "Ui.Common.Signal.Danger": "위험", + "Ui.Common.Signal.Notice": "알림", + "Ui.Common.Signal.Warning": "경고", + "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.Continue": "계속", + "Ui.Settings.Common.Delete": "삭제", + "Ui.Settings.Common.Fetch": "가져오기", + "Ui.Settings.Common.Lock": "잠금", + "Ui.Settings.Common.Merge": "병합", + "Ui.Settings.Common.Open": "열기", + "Ui.Settings.Common.Overwrite": "덮어쓰기", + "Ui.Settings.Common.Perform": "실행", + "Ui.Settings.Common.ResetAll": "모두 재설정", + "Ui.Settings.Common.ResolveAll": "모두 해결", + "Ui.Settings.Common.Scan": "검사", + "Ui.Settings.Common.Send": "보내기", + "Ui.Settings.Common.Use": "사용", + "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": "수정: ${modified}, 크기: ${size}", + "Ui.Settings.Hatch.ModifiedSizeActual": "수정: ${modified}, 크기: ${size} (실제 크기: ${actualSize})", + "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": "진단 실행", + "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 어댑터는 특정 상황에서 더 나은 성능을 보이는 경우가 많지만, 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.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.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를 사용하다가 페이로드 크기 제한에 도달했다면, 배치 크기와 배치 개수 제한을 더 낮은 값으로 줄여 주세요.", + "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": "${name} (사본)", + "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": "피어 투 피어(P2P) 동기화", + "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.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": "(정규식) 설정하면 이 패턴과 일치하는 로컬 및 원격 파일 변경은 모두 건너뜁니다.", + "Ui.Settings.Selector.NormalFiles": "일반 파일", + "Ui.Settings.Selector.OverwritePatterns": "덮어쓰기 패턴", + "Ui.Settings.Selector.OverwritePatternsDesc": "병합 대신 덮어쓸 파일을 판별하는 패턴", + "Ui.Settings.Selector.SynchronisingFiles": "동기화할 파일", + "Ui.Settings.Selector.SynchronisingFilesDesc": "(정규식) 비워 두면 모든 파일을 동기화합니다. 정규식 필터를 지정하면 동기화할 파일을 제한할 수 있습니다.", + "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.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.Invitation.Start": "설정 시작", + "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.OutroNewP2PUser.GuidanceNotice": "P2P에는 덮어쓸 중앙 서버 사본이 없습니다. 이 단계는 이 기기만 준비하며, 다른 기기가 초기 데이터를 가져올 때는 이 기기를 온라인 상태로 유지해 주세요.", + "Ui.SetupWizard.OutroNewP2PUser.GuidancePrimary": "Peer-to-Peer 연결이 정상적으로 구성되었습니다. 다음 단계로, 이 보관함의 현재 파일을 사용해 로컬 LiveSync 데이터베이스를 만듭니다.", + "Ui.SetupWizard.OutroNewP2PUser.Important": "유의해 주세요", + "Ui.SetupWizard.OutroNewP2PUser.Proceed": "재시작하고 이 기기 준비", + "Ui.SetupWizard.OutroNewP2PUser.Question": "재시작하고 로컬 초기화 확인 단계로 넘어가려면 아래 버튼을 선택해 주세요.", + "Ui.SetupWizard.OutroNewP2PUser.Title": "설정 완료: 이 P2P 기기 준비", + "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.RebuildEverythingP2P.ConfirmLocalReset": "이 작업이 이 기기의 로컬 동기화 데이터베이스만 초기화한다는 것을 이해했습니다.", + "Ui.SetupWizard.RebuildEverythingP2P.ConfirmLocalResetNote": "현재 이 보관함에 있는 파일을 사용해 재구축합니다.", + "Ui.SetupWizard.RebuildEverythingP2P.ConfirmTitle": "⚠️ 다음 내용을 확인해 주세요", + "Ui.SetupWizard.RebuildEverythingP2P.Guidance": "이 절차는 이 기기의 로컬 LiveSync 데이터베이스를 삭제하고, 이 보관함의 현재 파일로 재구축합니다. 다른 기기의 데이터는 삭제하거나 덮어쓰지 않습니다.", + "Ui.SetupWizard.RebuildEverythingP2P.Note": "초기화 후에도 다른 기기가 이 기기에서 보관함을 가져올 수 있도록 이 기기를 온라인 상태로 유지해 주세요.", + "Ui.SetupWizard.RebuildEverythingP2P.Proceed": "이해했습니다, 이 기기 준비", + "Ui.SetupWizard.RebuildEverythingP2P.Title": "최종 확인: P2P를 위한 이 기기 준비", + "Ui.SetupWizard.SelectExisting.Guidance": "이 기기를 기존 동기화 구성에 추가합니다.", + "Ui.SetupWizard.SelectExisting.ManualOption": "서버 정보를 수동으로 입력", + "Ui.SetupWizard.SelectExisting.ManualOptionDesc": "다른 기기와 동일한 서버 정보를 다시 직접 입력합니다. 숙련된 사용자 전용입니다.", + "Ui.SetupWizard.SelectExisting.ProceedManual": "서버 정보를 알고 있으니 직접 입력하겠습니다", + "Ui.SetupWizard.SelectExisting.ProceedQr": "이 기기의 카메라로 사용 중인 기기에 표시된 QR 코드를 스캔하세요.", + "Ui.SetupWizard.SelectExisting.ProceedSetupUri": "Setup URI로 계속", + "Ui.SetupWizard.SelectExisting.QrOption": "QR 코드 스캔(모바일 권장)", + "Ui.SetupWizard.SelectExisting.QrOptionDesc": "이 기기의 카메라로 사용 중인 기기에 표시된 QR 코드를 스캔하세요.", + "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는 서버 주소와 인증 정보를 담은 하나의 문자열입니다. 서버 설치 스크립트가 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": "Peer-to-Peer 전용", + "Ui.SetupWizard.SetupRemote.P2POptionDesc": "기기 간에 직접 동기화하는 방식입니다. 서버는 필요 없지만 두 기기가 동시에 온라인 상태여야 하며, 일부 기능은 제한될 수 있습니다. 인터넷 연결은 시그널링에만 필요하고 데이터 전송에는 필요하지 않습니다.", + "Ui.SetupWizard.SetupRemote.ProceedBucket": "S3/MinIO/R2 설정으로 계속", + "Ui.SetupWizard.SetupRemote.ProceedCouchDb": "CouchDB 설정으로 계속", + "Ui.SetupWizard.SetupRemote.ProceedP2P": "Peer-to-Peer 전용 설정으로 계속", + "Ui.SetupWizard.SetupRemote.Title": "서버 정보 입력", "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 a custom passphrase": "사용자 지정 패스프레이즈 사용", + "Use a Setup URI (Recommended)": "Setup URI 사용(권장)", "Use Custom HTTP Handler": "커스텀 HTTP 핸들러 사용", "Use dynamic iteration count": "동적 반복 횟수 사용", "Use Segmented-splitter": "의미 기반 분할 사용", @@ -783,16 +1119,16 @@ "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.": "이제 서버 구성을 진행하겠습니다。", + "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": "편집기에서 파일을 저장할 때 자동으로 동기화를 시작합니다", "Write credentials in the file": "파일에 자격 증명 저장", "Write logs into the file": "파일에 로그 기록", "xxhash32 (Fast but less collision resistance)": "xxhash32 (빠르지만 충돌 저항성은 낮음)", "xxhash64 (Fastest)": "xxhash64 (가장 빠름)", - "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": "예, 새 동기화를 설정하겠습니다", - "You are adding this device to an existing synchronisation setup.": "이 장치를 기존 동기화 구성에 추가하려고 합니다。" + "You are adding this device to an existing synchronisation setup.": "이 기기를 기존 동기화 구성에 추가합니다." } diff --git a/src/common/messagesYAML/ko.yaml b/src/common/messagesYAML/ko.yaml index 3167321f..1e9f8c0f 100644 --- a/src/common/messagesYAML/ko.yaml +++ b/src/common/messagesYAML/ko.yaml @@ -2,41 +2,54 @@ (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는 청크를 로컬에 복제하지 않고 원격에서 직접 읽습니다. 커스텀 청크 - 크기를 키우는 것을 권장합니다." +(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): (메가 문자) +(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: 활성 원격 구성 Add default patterns: 기본 패턴 추가 Add new connection: 연결 추가 +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: 시작할 때마다 암호문구 묻기 +Ask a passphrase at every launch: 시작할 때마다 패스프레이즈 묻기 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 이전에는 로컬 데이터베이스에 이전 어댑터를 사용했습니다. 이제는 새로운 어댑터를 권장합니다. 하지만 로컬 데이터베이스 - 재구축이 필요합니다. 충분한 시간이 있을 때 이 토글을 비활성화해 주세요. 활성화된 상태로 두면 원격 데이터베이스에서 가져올 때도 이를 - 비활성화하라는 메시지가 나타납니다. +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: 가비지 컬렉션 취소 +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.: 이 설정을 변경하려면 기존 데이터를 마이그레이션하고(시간이 다소 걸릴 수 있습니다) Obsidian을 재시작해야 합니다. 진행하기 전에 반드시 데이터를 백업해 주세요. +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: 사용자 설정 동기화 표시 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,13 +63,20 @@ 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 (Beta3): 사용자 지정 동기화 (Beta3) +Customization Sync: 사용자 설정 동기화 +Customization Sync (Beta3): 사용자 설정 동기화 (Beta3) Data Compression: 데이터 압축 +Database -> Storage: 데이터베이스 -> 스토리지 Database Adapter: 데이터베이스 어댑터 Database Name: 데이터베이스 이름 Database suffix: 데이터베이스 접미사 @@ -64,7 +84,7 @@ Default: 기본값 Delay conflict resolution of inactive files: 비활성 파일의 충돌 해결 지연 Delay merge conflict prompt for inactive files.: 비활성 파일의 병합 충돌 프롬프트 지연. Delete: 삭제 -Delete all customization sync data: 모든 사용자 정의 동기화 데이터 삭제 +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: 시작 시 삭제된 파일의 오래된 메타데이터 삭제 @@ -72,19 +92,17 @@ Delete Remote Configuration: 원격 구성 삭제 Delete remote configuration '{name}'?: "'{name}' 원격 구성을 삭제할까요?" desktop: 데스크톱 Developer: 개발자 +Device: 기기 Device name: 기기 이름 +Device Setup Method: 기기 설정 방법 dialog: yourLanguageAvailable: - _value: >- - Self-hosted LiveSync에서 귀하의 언어로 번역을 제공하므로 %{Display language} 설정이 활성화되었습니다. + _value: |- + Self-hosted LiveSync가 사용 중인 언어의 번역을 제공하므로 %{Display Language} 설정이 활성화되었습니다. - - 참고: 모든 메시지가 번역되지는 않습니다. 귀하의 기여를 기다리고 있습니다! - - 참고 2: 이슈를 생성하는 경우 **%{lang-def}로 되돌린 후** 스크린샷, 메시지, 로그를 가져와 주세요. 이는 설정 대화 - 상자에서 할 수 있습니다. - - 간편하게 사용하실 수 있었으면 좋겠습니다! + 참고: 모든 메시지가 번역되어 있지는 않습니다. 여러분의 기여를 기다리고 있습니다! + 참고 2: 이슈를 등록할 때는 **%{lang-def} 로 되돌린 뒤** 스크린샷과 메시지, 로그를 첨부해 주세요. 설정 대화 상자에서 되돌릴 수 있습니다. + 편하게 사용하실 수 있기를 바랍니다! btnRevertToDefault: "%{lang-def} 유지" Title: " 번역을 사용할 수 있습니다!" Disables all synchronization and restart.: 모든 동기화를 비활성화하고 재시작합니다. @@ -105,32 +123,38 @@ Doctor: Yes: 예 Dialogue: Main: |- - 안녕하세요! ${activateReason} 로 인해 구성 진단 마법사가 활성화되었습니다! - 그리고 일부 구성이 잠재적인 문제로 감지되었습니다. - 안심하세요. 하나씩 해결해 봅시다. + 안녕하세요! ${activateReason}(으)로 인해 구성 진단 마법사가 실행되었습니다! + 아쉽게도 일부 구성에서 잠재적인 문제가 감지되었습니다. + 걱정하지 마세요. 하나씩 함께 해결해 보겠습니다. - 대상 항목은 다음과 같습니다. + 미리 알려드리자면, 다음 항목들에 대해 여쭤보겠습니다. ${issues} - 시작하시겠습니까? + 시작할까요? MainFix: |- - **구성 이름:** `${name}` - **현재 값:** `${current}`, **이상적인 값:** `${ideal}` - **권장 수준:** ${level} - **왜 이것이 감지되었나요?** - ${reason} + ## ${name} + + | 현재 값 | 이상적인 값 | + |:---:|:---:| + | ${current} | ${ideal} | + + **권장 수준:** ${level} + + ### 왜 이것이 감지되었나요? + + ${reason} ${note} - 이상적인 값으로 수정하시겠습니까? + 이상적인 값으로 수정할까요? Title: Self-hosted LiveSync 구성 진단 마법사 TitleAlmostDone: 거의 완료되었습니다! TitleFix: 문제 해결 ${current}/${total} Level: Must: 필수 - Necessary: 필수 + Necessary: 필요 Optional: 선택사항 Recommended: 권장 Message: @@ -138,8 +162,12 @@ Doctor: RebuildLocalRequired: 주의! 이를 적용하려면 로컬 데이터베이스 재구축이 필요합니다! RebuildRequired: 주의! 이를 적용하려면 재구축이 필요합니다! SomeSkipped: 일부 문제를 그대로 두었습니다. 다음 시작 시 다시 질문할까요? -Duplicate: 복제 -Duplicate remote: 원격 구성 복제 + RULES: + E2EE_V02500: + REASON: 종단 간 암호화가 더 견고하고 빨라졌습니다. 또한 다시 진행한 코드 검토에서 이전 E2EE에 취약점이 있는 것으로 확인되었기 때문에, 가능한 한 빨리 적용해 주시기 바랍니다. 불편을 드려 대단히 죄송합니다. 그리고 이 설정은 이전 버전과 호환되지 않습니다. 동기화 중인 모든 기기를 v0.25.0 이상으로 업데이트해야 합니다. 재구축은 필요하지 않으며 새로 전송되는 항목부터 새 형식으로 변환됩니다. 다만 가능하다면 재구축하시기를 권장합니다. +Document History: 문서 기록 +Duplicate: 복사본 만들기 +Duplicate remote: 원격 구성 복사 E2EE Configuration: E2EE 구성 Edge case addressing (Behaviour): 특수 상황 처리 (동작) Edge case addressing (Database): 특수 상황 처리 (데이터베이스) @@ -154,47 +182,65 @@ 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: 이 옵션을 활성화하면 충돌이 있어도 문서에 가장 최근 변경 사항을 자동으로 적용합니다 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: 종단간 암호화 +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: 청크 크기 향상 +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 to resolve conflict: 충돌을 해결할 파일 +File to view History: 기록을 볼 파일 Filename: 파일명 +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: 새로 시작 지우기 +Fresh Start Wipe: 초기화 후 새로 시작 +Garbage Collection cancelled by user.: 사용자가 가비지 컬렉션을 취소했습니다. +"Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.": "가비지 컬렉션이 완료되었습니다. 삭제된 청크: ${deletedChunks} / ${totalChunks}. 소요 시간: ${seconds}초." +Garbage Collection Confirmation: 가비지 컬렉션 확인 Garbage Collection V3 (Beta): 가비지 컬렉션 V3 (Beta) +"Garbage Collection: Found ${unusedChunks} unused chunks to delete.": "가비지 컬렉션: 삭제할 미사용 청크 ${unusedChunks}개를 찾았습니다." +"Garbage Collection: Scanned ${scanned} / ~${docCount}": "가비지 컬렉션: ${scanned} / ~${docCount} 검사함" +"Garbage Collection: Scanning completed. Total chunks: ${totalChunks}, Used chunks: ${usedChunks}": "가비지 컬렉션: 검사 완료. 전체 청크 수: ${totalChunks}, 사용 중인 청크 수: ${usedChunks}" Handle files as Case-Sensitive: 파일을 대소문자 구분으로 처리 Hidden Files: 숨김 파일 +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 per-filed efficient customization sync will be used. We need a small migration when enabling this. And all devices should be updated to v0.23.18. Once we enabled this, we lost a compatibility with old versions.: 활성화하면 파일별 효율적인 사용자 설정 동기화가 사용됩니다. 이를 활성화할 때 소규모 데이터 구조 전환이 필요합니다. 모든 기기를 v0.23.18로 업데이트해야 합니다. 이를 활성화하면 이전 버전과의 호환성이 사라집니다. If enabled, chunks will be split into no more than 100 items. However, dedupe is slightly weaker.: 활성화하면 청크는 최대 100개 항목으로 분할됩니다. 하지만 중복 제거 기능이 약간 약해집니다. -If enabled, newly created chunks are temporarily kept within the document, and graduated to become independent chunks once stabilised.: 활성화하면 새로 생성된 변경 기록(청크)은 문서 안에 임시로 보관되며, 일정 조건을 만족하면 자동으로 문서 밖으로 분리되어 저장됩니다. +If enabled, newly created chunks are temporarily kept within the document, and graduated to become independent chunks once stabilised.: 활성화하면 새로 생성된 청크가 문서 안에 임시로 보관되며, 안정화된 뒤에 독립된 청크로 분리됩니다. If enabled, the ⛔ icon will be shown inside the status instead of the file warnings banner. No details will be shown.: 활성화하면 파일 경고 배너 대신 상태 영역에 ⛔ 아이콘만 표시됩니다. 자세한 내용은 표시되지 않습니다. If enabled, the file under 1kb will be processed in the UI thread.: 활성화하면 1kb 미만의 파일은 UI 스레드에서 처리됩니다. -If enabled, the notification of hidden files change will be suppressed.: 활성화하면 숨겨진 파일 변경 알림이 억제됩니다. +If 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): 이 옵션이 활성화되면 모든 청크는 콘텐츠에서 생성된 리비전과 함께 저장됩니다. (이전 동작) 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 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: 문서 내 변경 기록 임시 보관 +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: 실험 기능 @@ -202,14 +248,15 @@ K: P2P: "%{Peer}-to-%{Peer}" Peer: 피어 ScanCustomization: 사용자 설정 검색 - short_p2p_sync: P2P 동기화 (%{exp}) + short_p2p_sync: P2P 동기화 title_p2p_sync: 피어 투 피어(P2P) 동기화 Keep empty folder: 빈 폴더 유지 -lang_def: Default +lang_def: 기본값 lang-de: Deutsche lang-def: "%{lang_def}" lang-es: Español lang-fr: Français +lang-he: עברית lang-ja: 日本語 lang-ko: 한국어 lang-ru: Русский @@ -217,7 +264,7 @@ 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는 서로 다른 접두사 없이 동일한 이름을 가진 여러 볼트를 처리할 수 없습니다. 이는 자동으로 구성되어야 합니다. +LiveSync could not handle multiple vaults which have same name without different prefix, This should be automatically configured.: LiveSync는 접두사로 구분되지 않은 동일한 이름의 보관함을 여러 개 처리할 수 없습니다. 이 값은 자동으로 구성되어야 합니다. liveSyncReplicator: beforeLiveSync: LiveSync 전에 OneShot을 먼저 시작합니다... cantReplicateLowerValue: 더 낮은 값으로 복제할 수 없습니다. @@ -226,12 +273,13 @@ liveSyncReplicator: ${uri}에 연결할 수 없습니다: ${name} (${db}) couldNotConnectToRemoteDb: "원격 데이터베이스에 연결할 수 없습니다: ${d}" - couldNotConnectToServer: 서버에 연결할 수 없습니다. + couldNotConnectToServer: 원격에 대한 연결이 차단되었거나 실패했습니다. couldNotConnectToURI: "${uri}에 연결할 수 없습니다: ${dbRet}" couldNotMarkResolveRemoteDb: 원격 데이터베이스를 해결됨으로 표시할 수 없습니다. liveSyncBegin: LiveSync 시작... lockRemoteDb: 데이터 손상을 방지하기 위해 원격 데이터베이스를 잠급니다 markDeviceResolved: 이 기기를 '해결됨'으로 표시합니다. + mismatchedTweakDetected: 기기 간 구성에서 일부 불일치가 감지되었습니다. 수동으로 복제를 실행하면 이 문제를 해결하려고 시도합니다. oneShotSyncBegin: OneShot 동기화 시작... (${syncMode}) remoteDbCorrupted: 원격 데이터베이스가 더 최신이거나 손상되었습니다. 최신 버전의 self-hosted-livesync가 설치되어 있는지 확인하세요 remoteDbCreatedOrConnected: 원격 데이터베이스가 생성되거나 연결되었습니다 @@ -240,7 +288,7 @@ liveSyncReplicator: remoteDbMarkedResolved: 원격 데이터베이스가 해결됨으로 표시되었습니다. replicationClosed: 복제가 종료되었습니다 replicationInProgress: 복제가 이미 진행 중입니다 - retryLowerBatchSize: "더 낮은 일괄 크기로 재시도: ${batch_size}/${batches_limit}" + retryLowerBatchSize: "더 작은 배치 크기로 재시도: ${batch_size}/${batches_limit}" unlockRemoteDb: 데이터 손상을 방지하기 위해 원격 데이터베이스를 잠금 해제합니다 liveSyncSetting: errorNoSuchSettingItem: "해당 설정 항목이 없습니다: ${key}" @@ -255,54 +303,58 @@ Lock the remote server to prevent synchronization with other devices.: 다른 logPane: autoScroll: 자동 스크롤 logWindowOpened: 로그 창이 열렸습니다 - pause: 일시 중단 + pause: 일시 정지 title: Self-hosted LiveSync 로그 wrap: 줄 바꿈 Maximum delay for batch database updating: 일괄 데이터베이스 업데이트 최대 지연 Maximum file size: 최대 파일 크기 -Maximum Incubating Chunk Size: 임시 보관 변경 기록의 최대 크기 -Maximum Incubating Chunks: 임시 보관 중인 변경 기록 최대 수 -Maximum Incubation Period: 변경 기록 임시 보관 최대 시간 +Maximum Incubating Chunk Size: 임시 보관 청크의 최대 크기 +Maximum Incubating Chunks: 임시 보관 청크의 최대 개수 +Maximum Incubation Period: 청크 임시 보관 최대 기간 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}" - logExceededWarning: "원격 스토리지 크기: ${measuredSize}가 ${notifySize}를 초과했습니다" + 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)에 간략히 정리되어 있습니다. + > 단순히 보관함 용량이 커지고 있는 것이라면, 파일을 정리한 뒤에 전체를 재구축하는 것이 좋습니다. Self-hosted LiveSync는 처리 속도를 위해 파일을 삭제해도 실제 데이터를 바로 지우지 않습니다. 이 내용은 [기술 문서](https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/tech_info.md)에 간략히 정리되어 있습니다. + > + > 용량 증가가 괜찮다면 알림 한도를 100MB 단위로 높일 수 있습니다. 직접 서버를 운영하는 경우에 적합한 방법입니다. 다만 가끔은 전체를 재구축해 주는 것이 좋습니다. > - > 용량 증가가 괜찮다면 알림 임계치를 100MB 단위로 높일 수 있습니다. 직접 서버를 운영하는 경우에 적합한 방법입니다. 다만, 가끔은 전체 재구성을 해주는 것이 바람직합니다. > [!WARNING] - > 전체 재구성을 실행할 경우, 모든 기기가 반드시 동기화되어 있어야 합니다. 플러그인이 최대한 병합하려고 시도하긴 하지만 완전하지 않을 수 있습니다. + > 전체 재구축을 실행할 때는 모든 기기가 동기화되어 있는지 확인해 주세요. 플러그인이 최대한 병합하려고 시도하기는 합니다. msgSetDBCapacity: | **원격 스토리지 공간이 부족해지기 전에 미리 조치할 수 있도록** 데이터베이스 용량 경고를 설정할 수 있습니다. 이 기능을 활성화하시겠습니까? > [!MORE]- - > - 0: 스토리지 용량에 대한 경고 없음 - > 자체 서버를 사용하는 등 여유 공간이 충분한 경우에 권장됩니다. 스토리지 용량을 직접 확인하고 수동으로 재구성할 수 있습니다. - > - 800: 원격 스토리지 용량이 800MB를 초과하면 경고 - > 1GB 제한이 있는 fly.io나 IBM Cloudant 사용 시 권장됩니다. - > - 2000: 원격 스토리지 용량이 2GB를 초과하면 경고 + > - 0: 스토리지 용량을 경고하지 않습니다. + > 직접 서버를 운영하는 등 원격 스토리지에 여유 공간이 충분한 경우에 권장합니다. 스토리지 용량을 직접 확인하고 수동으로 재구축할 수 있습니다. + > - 800: 원격 스토리지 용량이 800MB를 초과하면 경고합니다. + > 1GB 제한이 있는 fly.io나 IBM Cloudant를 사용하는 경우에 권장합니다. + > - 2000: 원격 스토리지 용량이 2GB를 초과하면 경고합니다. - 설정한 용량 한도에 도달하면, 단계적으로 경고 한도를 늘릴지 여부를 묻게 됩니다. + 한도에 도달하면 한도를 단계적으로 늘릴지 여쭤보겠습니다. + noticeExceeded: 원격 스토리지 크기 ${measuredSize}이(가) 설정된 알림 임계값 ${notifySize}을(를) 초과했습니다. {HERE} + noticeNotConfigured: 원격 스토리지 크기 알림이 설정되어 있지 않습니다. {HERE} option2GB: 2GB (표준) option800MB: 800MB (Cloudant, fly.io) optionAskMeLater: 나중에 물어보기 @@ -310,6 +362,7 @@ moduleCheckRemoteSize: optionIncreaseLimit: ${newMax}MB로 증가 optionNoWarn: 아니요, 경고하지 마세요 optionRebuildAll: 지금 모든 것 재구축 + optionReview: 옵션 검토 titleDatabaseSizeLimitExceeded: 원격 스토리지 크기가 제한을 초과했습니다 titleDatabaseSizeNotify: 데이터베이스 크기 알림 설정 moduleInputUIObsidian: @@ -326,100 +379,116 @@ moduleLiveSyncMain: logSafetyScanCompleted: 추가 안전 검사가 완료되었습니다 logSafetyScanFailed: 모듈에서 추가 안전 검사가 실패했습니다 logUnloadingPlugin: 플러그인 언로딩 중... - logVersionUpdate: LiveSync가 업데이트되었습니다. 호환성 문제가 있는 업데이트의 경우 모든 자동 동기화가 일시적으로 - 비활성화되었습니다. 활성화하기 전에 모든 기기가 최신 상태인지 확인하세요. - msgScramEnabled: >- + logVersionUpdate: LiveSync가 업데이트되었습니다. 호환성 문제가 있는 업데이트의 경우 모든 자동 동기화가 일시적으로 비활성화되었습니다. 활성화하기 전에 모든 기기가 최신 상태인지 확인하세요. + msgScramEnabled: | Self-hosted LiveSync가 일부 이벤트를 무시하도록 설정되어 있습니다. 이 설정이 맞습니까? - | 유형 | 상태 | 설명 | - |:---:|:---:|---| - | 스토리지 이벤트 | ${fileWatchingStatus} | 모든 수정 사항이 무시됩니다 | - | 데이터베이스 이벤트 | ${parseReplicationStatus} | 모든 동기화 변경이 지연됩니다 | - 이벤트 감지를 다시 활성화하고 Obsidian을 재시작하시겠습니까? - > [!DETAILS]- - - > 이러한 설정은 플러그인이 재구성 또는 데이터 가져오기 중에 자동으로 설정한 것입니다. 프로세스가 비정상적으로 종료되면 이 상태가 - 의도치 않게 유지될 수 있습니다. - - > 상태가 확실하지 않다면 이 과정을 다시 실행해 보세요. 재시작 전에 반드시 볼트를 백업해 주세요. + > 이 플래그는 플러그인이 재구축하거나 가져오는 동안 설정한 것입니다. 처리가 비정상적으로 종료되면 의도치 않게 남아 있을 수 있습니다. + > 확실하지 않다면 해당 처리를 다시 실행해 보세요. 반드시 보관함을 백업해 두시기 바랍니다. optionKeepLiveSyncDisabled: LiveSync 비활성화 유지 optionResumeAndRestart: 재개 후 Obsidian 재시작 - titleScramEnabled: Scram 활성화됨 + titleScramEnabled: 긴급 정지 활성화됨 moduleLocalDatabase: logWaitingForReady: 준비 대기 중... moduleLog: showLog: 로그 표시 moduleMigration: docUri: https://github.com/vrtmrz/obsidian-livesync/blob/main/README.md#how-to-use + fix0256: + buttons: + checkItLater: 나중에 확인 + DismissForever: 이미 해결했으니 다시 묻지 않기 + fix: 수정 + message: | + 최근 버그(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: 청크 일괄 전송이 활성화되었지만, 이 기능에 문제가 있었습니다. 불편을 드려 죄송합니다. 자동으로 비활성화되었습니다. logFetchRemoteTweakFailed: 원격 조정 값을 가져오는데 실패했습니다 logLocalDatabaseNotReady: 문제가 발생했습니다! 로컬 데이터베이스가 준비되지 않았습니다 - logMigratedSameBehaviour: 이전과 같은 방식으로 동작하도록 db:${current}로 데이터 구조 전환이 완료되었습니다 + logMigratedSameBehaviour: 이전과 동일하게 동작하도록 db:${current}(으)로 마이그레이션했습니다 logMigrationFailed: ${old}에서 ${current}로의 데이터 구조 전환이 실패했거나 중단되었습니다 logRedflag2CreationFail: redflag2 생성에 실패했습니다 logRemoteTweakUnavailable: 원격 조정 값을 가져올 수 없습니다 logSetupCancelled: 설정이 취소되었습니다. Self-hosted LiveSync가 설정을 기다리고 있습니다! - msgFetchRemoteAgain: >- + msgFetchRemoteAgain: |- 이미 알고 계시겠지만, Self-hosted LiveSync의 기본 동작 방식과 데이터베이스 구조가 변경되었습니다. - 다행히도 여러분의 노력 덕분에 원격 데이터베이스는 이미 성공적으로 데이터 구조 전환이 완료된 것으로 보입니다. 축하드립니다! - - 하지만 아직 일부 추가 작업이 필요합니다. 이 기기의 설정이 원격 데이터베이스와 호환되지 않으므로, 원격 데이터를 다시 가져와야 합니다. - 지금 원격 데이터베이스를 다시 가져오시겠습니까? - + 하지만 아직 일부 추가 작업이 필요합니다. 이 기기의 설정이 원격 데이터베이스와 호환되지 않으므로, 원격 데이터를 다시 가져와야 합니다. 지금 원격 데이터베이스를 다시 가져오시겠습니까? ___참고: 설정이 변경되고 데이터베이스를 다시 불러오기 전까지는 동기화가 불가능합니다.___ - ___참고2: 청크는 변경이 불가능한 구조이므로, 메타데이터와 차이점만 가져올 수 있습니다.___ - msgInitialSetup: >- + msgInitialSetup: |- 이 기기는 **아직 초기 설정이 완료되지 않았습니다**. 지금부터 설정 과정을 안내해 드리겠습니다. - - 모든 대화 내용은 클립보드에 복사할 수 있습니다. 나중에 참고하려면 Obsidian 노트에 붙여넣거나 번역 도구를 활용해 번역하셔도 - 됩니다. - + 모든 대화 내용은 클립보드에 복사할 수 있습니다. 나중에 참고하려면 Obsidian 노트에 붙여넣거나 번역 도구를 활용해 번역하셔도 됩니다. 먼저, **Setup URI**를 가지고 계신가요? - 참고: Setup URI가 무엇인지 잘 모르시겠다면 [문서](${URI_DOC})를 참고해 주세요. msgRecommendSetupUri: |- Setup URI를 생성해 사용하는 것을 강력히 권장합니다. Setup URI가 무엇인지 잘 모르시겠다면 [문서](${URI_DOC})를 참고해 주세요. 중요한 내용이니 꼭 확인하시기 바랍니다. 직접 수동 설정을 진행하시겠습니까? - msgSinceV02321: >- - v0.23.21부터 Self-hosted LiveSync의 기본 동작 방식과 데이터베이스 구조가 변경되었습니다. 주요 변경사항은 다음과 - 같습니다: + msgSinceV02321: |- + v0.23.21부터 Self-hosted LiveSync의 기본 동작 방식과 데이터베이스 구조가 변경되었습니다. 변경 내용은 다음과 같습니다: + 1. **파일명의 대소문자 구분** + 이제 파일명을 대소문자 구분 없이 처리합니다. 파일명의 대소문자를 제대로 관리하지 못하는 Linux와 iOS를 제외한 대부분의 플랫폼에서 유리한 변경입니다. + (해당 플랫폼에서는 이름이 같고 대소문자만 다른 파일에 대해 경고가 표시됩니다) - 1. **파일명 대소문자 구분 처리** - 이제 파일명은 대소문자를 구분하지 않고 처리됩니다. 이는 파일명 구분을 제대로 지원하지 않는 Linux 및 iOS를 제외한 대부분의 플랫폼에서 유리한 변화입니다. - (Linux나 iOS에서는 대소문자만 다른 파일이 존재할 경우 경고가 표시됩니다) + 2. **청크의 리비전 처리** + 청크는 변경 불가능하므로 리비전을 고정할 수 있습니다. 이 변경으로 파일 저장 성능이 향상됩니다. - 2. **청크 리비전 관리 방식 개선** - 청크는 변경 불가능한(immutable) 구조로 고정되며, 이를 통해 리비전 처리가 안정화되고 파일 저장 성능이 향상됩니다. + ___다만 이 변경 중 어느 하나라도 적용하려면 원격과 로컬 데이터베이스를 모두 재구축해야 합니다. 이 과정은 몇 분이 걸리므로 시간이 충분할 때 진행하시기를 권장합니다.___ - ___단, 위 기능을 활성화하려면 원격 및 로컬 데이터베이스를 모두 재구성해야 합니다. 이 과정은 수 분이 소요되므로 여유가 있을 때 - 실행하시는 것을 권장합니다.___ - - - - 기존 방식대로 유지하려면 `${KEEP}`을 선택해 이 과정을 건너뛸 수 있습니다. - - - 시간이 부족하다면 `${DISMISS}`를 눌러주시면 나중에 다시 안내드리겠습니다. - - - 이미 다른 기기에서 데이터베이스를 재구성하셨다면 `${DISMISS}`를 선택한 뒤 다시 동기화해 보세요. 차이점이 감지되면 다시 - 안내드리겠습니다. + - 기존 동작을 유지하려면 `${KEEP}`을 선택해 이 과정을 건너뛸 수 있습니다. + - 시간이 충분하지 않다면 `${DISMISS}`를 선택해 주세요. 나중에 다시 여쭤보겠습니다. + - 다른 기기에서 이미 데이터베이스를 재구축했다면 `${DISMISS}`를 선택한 뒤 다시 동기화해 보세요. 차이가 감지되면 다시 안내해 드립니다. optionAdjustRemote: 원격에 맞추기 optionDecideLater: 나중에 결정하기 optionEnableBoth: 둘 다 활성화 @@ -443,7 +512,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.: 모든 메시지가 번역되지 않았습니다. 오류 신고 시 "기본값"으로 되돌려 주세요. @@ -451,14 +524,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. This along with batch size controls how many docs are kept in memory at a time.: 한 번에 처리할 일괄 처리 수입니다. 기본값은 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.: 한 번에 처리할 배치 개수입니다. 기본값은 40이고 최소값은 2입니다. 배치 크기와 함께 한 번에 메모리에 보관되는 문서 수를 결정합니다. Number of changes to sync at a time. Defaults to 50. Minimum is 2.: 한 번에 동기화할 변경 사항의 수입니다. 기본값은 50입니다. 최소값은 2입니다. +Obsidian version: Obsidian 버전 obsidianLiveSyncSettingTab: btnApply: 적용 btnCheck: 확인 btnCopy: 복사 btnDisable: 비활성화 - btnDiscard: 삭제 + btnDiscard: 폐기 btnEnable: 활성화 btnFix: 수정 btnGotItAndUpdated: 알겠습니다. 업데이트했습니다. @@ -482,6 +556,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가 누락되었습니다 @@ -507,7 +582,7 @@ obsidianLiveSyncSettingTab: logConfiguredLiveSync: "구성된 동기화 모드: LiveSync" logConfiguredPeriodic: "구성된 동기화 모드: 주기적" logCouchDbConfigFail: "CouchDB 구성: ${title} 실패" - logCouchDbConfigSet: "CouchDB 구성: ${title} -> ${key}를 ${value}로 설정" + logCouchDbConfigSet: "CouchDB 구성: ${title} -> ${key}을(를) ${value}(으)로 설정" logCouchDbConfigUpdated: "CouchDB 구성: ${title} 성공적으로 업데이트됨" logDatabaseConnected: 데이터베이스 연결됨 logEncryptionNoPassphrase: 패스프레이즈 없이는 암호화를 활성화할 수 없습니다 @@ -518,38 +593,39 @@ obsidianLiveSyncSettingTab: logPassphraseNotCompatible: "오류: 패스프레이즈가 원격 서버와 호환되지 않습니다! 다시 확인해 주세요!" logRebuildNote: 동기화가 비활성화되었습니다. 원하는 경우 가져오기 후 다시 활성화하세요. logSelectAnyPreset: 프리셋을 선택하세요. + logServerConfigurationCheck: --서버 구성 확인-- msgAreYouSureProceed: 정말로 진행하시겠습니까? msgChangesNeedToBeApplied: 변경사항을 적용해야 합니다! msgConfigCheck: --구성 확인-- msgConfigCheckFailed: 구성 확인에 실패했습니다. 그래도 계속하시겠습니까? msgConnectionCheck: --연결 확인-- msgConnectionProxyNote: 구성 확인 후에도 연결 확인에 문제가 있는 경우, 리버스 프록시 구성을 확인해 주세요. - msgCurrentOrigin: "현재 원점: {origin}" + msgCurrentOrigin: "현재 출처: ${origin}" msgDiscardConfirmation: 정말로 기존 설정과 데이터베이스를 삭제하시겠습니까? msgDone: --완료-- msgEnableCors: httpd.enable_cors 설정 - msgEnableEncryptionRecommendation: 종단간 암호화와 경로 난독화를 활성화하는 것을 권장합니다. 정말로 암호화 없이 계속하시겠습니까? + msgEnableCorsChttpd: chttpd.enable_cors 설정 + msgEnableEncryptionRecommendation: 종단 간 암호화와 경로 난독화를 활성화하는 것을 권장합니다. 정말로 암호화 없이 계속하시겠습니까? msgFetchConfigFromRemote: 원격 서버에서 구성을 가져오시겠습니까? msgGenerateSetupURI: 모든 작업이 완료되었습니다! 다른 기기를 설정하기 위해 Setup URI를 생성하시겠습니까? - msgIfConfigNotPersistent: "서버 설정이 영구적으로 저장되지 않는 환경(예: Docker에서 실행 중)에서는 이곳의 값들이 - 변경될 수 있습니다. 연결이 가능해지면 서버의 local.ini 파일에서 설정을 수동으로 업데이트해 주세요." + msgIfConfigNotPersistent: "서버 설정이 영구적으로 저장되지 않는 환경(예: Docker에서 실행 중)에서는 이곳의 값들이 변경될 수 있습니다. 연결이 가능해지면 서버의 local.ini 파일에서 설정을 수동으로 업데이트해 주세요." msgInvalidPassphrase: 암호화 패스프레이즈가 유효하지 않을 수 있습니다. 정말로 계속하시겠습니까? msgNewVersionNote: 업그레이드 알림으로 여기에 오셨나요? 버전 기록을 검토해 주세요. 만족하신다면 버튼을 클릭하세요. 새로운 업데이트 시 다시 안내됩니다. msgNonHTTPSInfo: 비 HTTPS URI로 구성되었습니다. 모바일 기기에서는 작동하지 않을 수 있으니 주의하세요. msgNonHTTPSWarning: 비 HTTPS URI에 연결할 수 없습니다. 구성을 업데이트하고 다시 시도해 주세요. msgNotice: ---공지사항--- msgObjectStorageWarning: |- - ⚠️ 주의: 이 기능은 아직 개발 중(WIP)입니다. 다음 사항을 유의해 주세요: - - 추가 전용 구조(append-only)로 동작합니다. 저장 용량을 줄이려면 데이터 재구성이 필요합니다. - - 기능이 다소 불안정할 수 있습니다. - - 최초 동기화 시, 전체 히스토리가 원격 서버에서 전송됩니다. 데이터 용량 제한 및 느린 속도에 유의해 주세요. - - 실시간 동기화는 변경된 부분만 처리됩니다. + 경고: 이 기능은 아직 개발 중이므로 다음 사항을 유의해 주세요: + - 추가 전용 구조로 동작합니다. 저장 용량을 줄이려면 재구축이 필요합니다. + - 다소 불안정합니다. + - 최초 동기화 시 모든 기록이 원격에서 전송됩니다. 데이터 사용량 제한과 느린 속도에 유의해 주세요. + - 실시간 동기화는 변경분만 처리합니다. - 문제가 발생했거나 개선 아이디어가 있으시면 GitHub에 이슈를 등록해 주세요. - 기여에 깊이 감사드립니다. - msgOriginCheck: "원점 확인: {org}" + 문제가 발생했거나 이 기능에 대한 아이디어가 있다면 GitHub에 이슈를 등록해 주세요. + 큰 관심에 깊이 감사드립니다. + msgOriginCheck: "출처 확인: ${org}" msgRebuildRequired: |- - 변경사항을 적용하려면 데이터베이스를 재구축해야 합니다. 아래 중 한 가지 방법을 선택해 주세요. + 변경 사항을 적용하려면 데이터베이스를 재구축해야 합니다. 변경 사항을 적용할 방법을 선택해 주세요.
범례 @@ -557,24 +633,22 @@ obsidianLiveSyncSettingTab: | 기호 | 의미 | |: ------ :| ------- | | ⇔ | 최신 상태 | - | ⇄ | 동기화 균형 유지 | - | ⇐,⇒ | 덮어쓰기 방식의 전송 | - | ⇠,⇢ | 상대편에서 가져와 덮어쓰기 | + | ⇄ | 양쪽을 맞추는 동기화 | + | ⇐,⇒ | 덮어쓰기 전송 | + | ⇠,⇢ | 반대편에서 덮어쓰기 전송 |
## ${OPTION_REBUILD_BOTH} - 개요: 📄 ⇒¹ 💻 ⇒² 🛰️ ⇢ⁿ 💻 ⇄ⁿ⁺¹ 📄 - 이 기기의 기존 파일을 기반으로 로컬과 원격 데이터베이스를 모두 재구축합니다. - 이 과정에서 다른 기기는 일시적으로 접근이 제한되며, 가져오기 작업을 별도로 수행해야 합니다. - + 한눈에 보기: 📄 ⇒¹ 💻 ⇒² 🛰️ ⇢ⁿ 💻 ⇄ⁿ⁺¹ 📄 + 이 기기의 기존 파일을 사용해 로컬과 원격 데이터베이스를 모두 재구축합니다. + 이 경우 다른 기기는 잠기며, 가져오기를 수행해야 합니다. ## ${OPTION_FETCH} - 개요: 📄 ⇄² 💻 ⇐¹ 🛰️ ⇔ 💻 ⇔ 📄 - 로컬 데이터베이스를 초기화한 후, 원격 데이터베이스에서 데이터를 가져와 재구축합니다. - 이는 원격 측에서 데이터베이스를 먼저 재구축한 경우에도 해당됩니다. - + 한눈에 보기: 📄 ⇄² 💻 ⇐¹ 🛰️ ⇔ 💻 ⇔ 📄 + 로컬 데이터베이스를 초기화한 뒤, 원격 데이터베이스에서 가져온 데이터로 재구축합니다. + 원격 데이터베이스를 이미 재구축한 경우도 여기에 해당합니다. ## ${OPTION_ONLY_SETTING} - 설정만 저장합니다. **⚠️ 주의: 이 방법은 데이터 손상을 일으킬 수 있습니다.** 일반적으로는 전체 데이터베이스 재구축이 필요합니다. + 설정만 저장합니다. **주의: 데이터가 손상될 수 있습니다.** 일반적으로는 데이터베이스 재구축이 필요합니다. msgSelectAndApplyPreset: 마법사를 완료하려면 프리셋 항목을 선택하고 적용해 주세요. msgSetCorsCredentials: cors.credentials 설정 msgSetCorsOrigins: cors.origins 설정 @@ -582,8 +656,7 @@ obsidianLiveSyncSettingTab: msgSetMaxRequestSize: chttpd.max_http_request_size 설정 msgSetRequireValidUser: chttpd.require_valid_user = true로 설정 msgSetRequireValidUserAuth: chttpd_auth.require_valid_user = true로 설정 - msgSettingModified: '"${setting}" 설정이 다른 기기에서 수정되었습니다. 설정을 다시 로드하려면 {HERE}를 - 클릭하세요. 변경사항을 무시하려면 다른 곳을 클릭하세요.' + msgSettingModified: '"${setting}" 설정이 다른 기기에서 수정되었습니다. 설정을 다시 로드하려면 {HERE}를 클릭하세요. 변경사항을 무시하려면 다른 곳을 클릭하세요.' msgSettingsUnchangeableDuringSync: 동기화 중에는 이 설정들을 변경할 수 없습니다. 잠금을 해제하려면 "동기화 설정"에서 모든 동기화를 비활성화해 주세요. msgSetWwwAuth: httpd.WWW-Authenticate 설정 nameApplySettings: 설정 적용 @@ -601,9 +674,10 @@ obsidianLiveSyncSettingTab: okAdminPrivileges: ✔ 관리자 권한이 있습니다. okCorsCredentials: ✔ cors.credentials가 정상입니다. okCorsCredentialsForOrigin: CORS 자격 증명 정상 - okCorsOriginMatched: ✔ 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가 정상입니다. @@ -615,8 +689,8 @@ obsidianLiveSyncSettingTab: optionDisableAllAutomatic: 모든 자동 비활성화 optionFetchFromRemote: 원격에서 가져오기 optionHere: 여기 - optionLiveSync: LiveSync 동기화 - optionMinioS3R2: Minio,S3,R2 + optionLiveSync: LiveSync + optionMinioS3R2: MinIO, S3, R2 optionOkReadEverything: 네, 모든 것을 읽었습니다. optionOnEvents: 이벤트 시 optionPeriodicAndEvents: 주기적 및 이벤트 시 @@ -628,10 +702,12 @@ obsidianLiveSyncSettingTab: panelPrivacyEncryption: 개인정보 보호 및 암호화 panelRemoteConfiguration: 원격 구성 panelSetup: 설정 - titleAppearance: 외관 + serverVersion: "서버 정보: ${info}" + titleActiveRemoteServer: 활성 원격 서버 + titleAppearance: 모양 titleConflictResolution: 충돌 해결 titleCongratulations: 축하합니다! - titleCouchDB: CouchDB 서버 + titleCouchDB: CouchDB titleDeletionPropagation: 삭제 전파 titleEncryptionNotEnabled: 암호화가 활성화되지 않음 titleEncryptionPassphraseInvalid: 암호화 패스프레이즈 유효하지 않음 @@ -648,14 +724,14 @@ obsidianLiveSyncSettingTab: titleRebuildRequired: 재구축 필요 titleRemoteConfigCheckFailed: 원격 구성 확인 실패 titleRemoteServer: 원격 서버 - titleReset: 리셋 + titleReset: 재설정 titleSetupOtherDevices: 다른 기기 설정 titleSynchronizationMethod: 동기화 방법 titleSynchronizationPreset: 동기화 프리셋 titleSyncSettings: 동기화 설정 - titleSyncSettingsViaMarkdown: 마크다운을 통한 동기화 설정 + titleSyncSettingsViaMarkdown: 마크다운을 통한 설정 동기화 titleUpdateThinning: 업데이트 솎아내기 - warnCorsOriginUnmatched: ⚠ CORS 원점이 일치하지 않습니다 {from}->{to} + warnCorsOriginUnmatched: ⚠ CORS 출처가 일치하지 않습니다 ${from}->${to} warnNoAdmin: ⚠ 관리자 권한이 없습니다. Ok: 확인 Old Algorithm: 이전 알고리즘 @@ -665,36 +741,26 @@ Open the dialog: 대화상자 열기 Overwrite: 덮어쓰기 Overwrite patterns: 덮어쓰기 패턴 Overwrite remote: 원격 덮어쓰기 -Overwrite remote with local DB and passphrase.: 로컬 DB와 암호문구로 원격을 덮어씁니다. +Overwrite remote with local DB and passphrase.: 로컬 DB와 패스프레이즈로 원격을 덮어씁니다. Overwrite Server Data with This Device's Files: 이 기기의 파일로 서버 데이터를 덮어쓰기 P2P: AskPassphraseForDecrypt: 원격 피어가 구성을 공유했습니다. 구성을 복호화하려면 패스프레이즈를 입력해 주세요. - AskPassphraseForShare: 원격 피어가 이 기기의 구성을 요청했습니다. 구성을 공유하려면 패스프레이즈를 입력해 주세요. 이 - 대화상자를 취소하여 요청을 무시할 수 있습니다. + AskPassphraseForShare: 원격 피어가 이 기기의 구성을 요청했습니다. 구성을 공유하려면 패스프레이즈를 입력해 주세요. 이 대화상자를 취소하여 요청을 무시할 수 있습니다. DisabledButNeed: "%{title_p2p_sync}가 비활성화되어 있습니다. 정말로 활성화하시겠습니까?" FailedToOpen: 시그널링 서버에 P2P 연결을 열 수 없습니다. NoAutoSyncPeers: 자동 동기화 피어를 찾을 수 없습니다. %{long_p2p_sync} 창에서 피어를 설정해 주세요. NoKnownPeers: 피어가 감지되지 않았습니다. 다른 피어의 접속을 기다리고 있습니다... Note: - description: >- - 이 복제기는 피어 투 피어(P2P) 연결을 통해 다른 기기들과 볼트를 동기화할 수 있도록 합니다. 클라우드 서비스를 거치지 않고도 - 기기간 동기화를 구현할 수 있습니다. + description: |2- + 이 복제기는 피어 투 피어 연결을 이용해 다른 기기와 보관함을 동기화할 수 있게 해 줍니다. + 클라우드 서비스를 사용하지 않고도 다른 기기와 보관함을 동기화할 수 있습니다. + 이 복제기는 Trystero를 기반으로 합니다. 기기 간 연결을 맺기 위해 시그널링 서버도 사용합니다. 시그널링 서버는 기기 사이의 연결 정보를 교환하는 데 쓰이며, 사용자의 데이터는 알지도 저장하지도 않습니다(또는 그래야 합니다). + 시그널링 서버는 누구나 운영할 수 있습니다. 단순한 Nostr 릴레이일 뿐입니다. 편의를 위해, 그리고 복제기의 동작을 확인할 수 있도록 vrtmrz가 시그널링 서버 인스턴스를 하나 운영하고 있습니다. vrtmrz가 제공하는 실험용 서버를 사용해도 되고, 다른 서버를 사용해도 됩니다. - 이 복제기는 Trystero를 기반으로 하며, 기기 간 연결을 설정하기 위해 시그널링 서버를 사용합니다. 시그널링 서버는 단순히 연결 - 정보를 교환하는 용도로만 사용되며, 사용자 데이터를 저장하거나 접근하지 않습니다 (또는 그래야만 합니다). - - - 시그널링 서버는 누구나 운영할 수 있으며, 이는 단순한 Nostr 릴레이입니다. 편의성과 복제기의 작동 확인을 위해 `vrtmrz`가 - 자체적으로 시그널링 서버 인스턴스를 운영 중입니다. 사용자는 `vrtmrz`가 제공하는 실험용 서버를 사용할 수도 있고, 별도로 - 자신만의 서버를 설정할 수도 있습니다. - - - 참고로, 시그널링 서버는 사용자 데이터를 저장하지 않더라도 일부 기기의 연결 정보는 볼 수 있습니다. 이 점을 유의해 주세요. 특히 - 타인이 운영하는 서버를 사용할 경우 주의가 필요합니다. - important_note: 피어 투 피어(P2P) 복제기의 실험적 구현입니다. - important_note_sub: 이 기능은 아직 실험 단계에 있습니다. 이 기능이 예상대로 작동하지 않을 수 있음을 알아주세요. 또한 버그, - 보안 문제 및 기타 문제가 있을 수 있습니다. 이 기능을 사용할 때는 본인의 책임 하에 사용하세요. 이 기능의 개발에 기여해 주세요. + 참고로, 시그널링 서버가 데이터를 저장하지 않더라도 일부 기기의 연결 정보는 볼 수 있습니다. 이 점을 유의해 주세요. 또한 다른 사람이 제공하는 서버를 사용할 때는 주의하시기 바랍니다. + important_note: 피어 투 피어 복제기입니다. + important_note_sub: 이 기능은 아직 실험 단계입니다. 사용하기 전에 반드시 데이터를 백업해 주세요. 그리고 이 기능의 개발에 기여해 주신다면 매우 감사하겠습니다. Summary: 이 기능은 무엇인가요? (설명과 참고사항이 적혀있습니다. 한 번 읽어보세요!) NotEnabled: "%{title_p2p_sync}가 활성화되지 않았습니다. 새로운 연결을 열 수 없습니다." P2PReplication: "%{P2P} 복제" @@ -705,19 +771,21 @@ P2P: SyncCompleted: P2P 동기화가 완료되었습니다. SyncStartedWith: ${name}과의 P2P 동기화가 시작되었습니다. paneMaintenance: - markDeviceResolvedAfterBackup: 백업 후 장치를 해결됨으로 표시 - remoteLockedAndDeviceNotAccepted: 원격 데이터베이스가 잠겨 있으며 이 장치는 아직 승인되지 않았습니다. - remoteLockedResolvedDevice: 원격 데이터베이스가 잠겨 있지만 이 장치는 이미 승인되었습니다. + 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 Synchronisation: 피어 투 피어 동기화 +Peer-to-Peer only: Peer-to-Peer 전용 +Peer-to-Peer Synchronisation: 피어 투 피어(P2P) 동기화 Per-file-saved customization sync: 파일별 저장 사용자 설정 동기화 Perform: 실행 Perform cleanup: 정리 실행 @@ -725,77 +793,81 @@ Perform Garbage Collection: 가비지 컬렉션 실행 Perform Garbage Collection to remove unused chunks and reduce database size.: 사용하지 않는 청크를 제거하고 데이터베이스 크기를 줄이기 위해 가비지 컬렉션을 실행합니다. Periodic Sync interval: 주기적 동기화 간격 Pick a file to resolve conflict: 충돌을 해결할 파일 선택 -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: 이 장치 이름을 설정해 주세요 +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 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: 모든 파일의 누락된 청크 다시 생성 RedFlag: Fetch: Method: - Desc: >- + Desc: |- 어떻게 가져오시겠습니까? - - - %{RedFlag.Fetch.Method.FetchSafer}. (권장) + - %{RedFlag.Fetch.Method.FetchSafer}. **낮은 트래픽**, **높은 CPU**, **낮은 위험** + 다음의 경우에 권장합니다. + - 파일이 일관되지 않을 가능성이 있음 + - 파일이 그리 많지 않음 - %{RedFlag.Fetch.Method.FetchSmoother}. - **낮은 트래픽**, **보통 CPU**, **낮음에서 보통 위험** + **낮은 트래픽**, **보통 CPU**, **낮음~보통 위험** + 다음의 경우에 권장합니다. + - 파일이 대체로 일관됨 + - 파일이 많음 - %{RedFlag.Fetch.Method.FetchTraditional}. - **높은 트래픽**, **낮은 CPU**, **낮음에서 보통 위험** - - >[!INFO]- 세부 사항 - - > ## %{RedFlag.Fetch.Method.FetchSafer}. (권장) + **높은 트래픽**, **낮은 CPU**, **낮음~보통 위험** + >[!INFO]- 자세히 + > ## %{RedFlag.Fetch.Method.FetchSafer}. > **낮은 트래픽**, **높은 CPU**, **낮은 위험** - - > 이 옵션은 원격 소스에서 데이터를 가져오기 전에 기존 로컬 파일을 사용하여 로컬 데이터베이스를 먼저 생성합니다. - - > 로컬과 원격 모두에 일치하는 파일이 있으면 둘 사이의 차이점만 전송됩니다. - - > 하지만 두 위치 모두에 있는 파일은 초기에 충돌 파일로 처리됩니다. 실제로 충돌하지 않는다면 자동으로 해결되지만 이 과정은 - 시간이 걸릴 수 있습니다. - - > 이는 일반적으로 가장 안전한 방법으로 데이터 손실 위험을 최소화합니다. - + > 원격에서 데이터를 가져오기 전에 기존 로컬 파일로 로컬 데이터베이스를 먼저 만듭니다. + > 로컬과 원격 양쪽에 일치하는 파일이 있으면 둘 사이의 차이만 전송됩니다. + > 다만 양쪽에 모두 있는 파일은 처음에 충돌 파일로 처리됩니다. 실제로 충돌하지 않는다면 자동으로 해결되지만, 이 과정에 시간이 걸릴 수 있습니다. + > 일반적으로 가장 안전한 방법이며 데이터 손실 위험이 가장 낮습니다. > ## %{RedFlag.Fetch.Method.FetchSmoother}. - - > **낮은 트래픽**, **보통 CPU**, **낮음에서 보통 위험** (작업에 따라) - - > 이 옵션은 먼저 로컬 파일에서 데이터베이스용 청크를 생성한 다음 데이터를 가져옵니다. 따라서 로컬에 없는 청크만 전송됩니다. - 하지만 모든 메타데이터는 원격 소스에서 가져옵니다. - - > 그런 다음 로컬 파일이 시작 시 이 메타데이터와 비교됩니다. 더 새로운 것으로 간주되는 콘텐츠가 오래된 것을 덮어씁니다(수정 - 시간 기준). 이 결과는 원격 데이터베이스에 다시 동기화됩니다. - - > 로컬 파일이 실제로 최신 타임스탬프라면 일반적으로 안전합니다. 하지만 파일이 더 새로운 타임스탬프를 가지고 있지만 더 오래된 - 콘텐츠를 가지고 있다면(초기 `welcome.md`처럼) 문제가 발생할 수 있습니다. - - > 이는 "%{RedFlag.Fetch.Method.FetchSafer}"보다 CPU를 덜 사용하고 더 빠르지만 주의 깊게 - 사용하지 않으면 데이터 손실로 이어질 수 있습니다. - + > **낮은 트래픽**, **보통 CPU**, **낮음~보통 위험** (작업에 따라 다름) + > 먼저 로컬 파일로 데이터베이스용 청크를 만든 다음 데이터를 가져옵니다. 따라서 로컬에 없는 청크만 전송됩니다. 다만 메타데이터는 모두 원격에서 가져옵니다. + > 그다음 시작 시점에 로컬 파일을 이 메타데이터와 비교합니다. 수정 시각을 기준으로 더 새롭다고 판단된 내용이 오래된 쪽을 덮어씁니다. 그 결과는 다시 원격 데이터베이스로 동기화됩니다. + > 로컬 파일이 실제로 가장 최신 타임스탬프를 가지고 있다면 대체로 안전합니다. 하지만 타임스탬프는 더 새롭지만 내용은 더 오래된 파일(처음 만들어지는 `welcome.md` 같은)이 있으면 문제가 생길 수 있습니다. + > "%{RedFlag.Fetch.Method.FetchSafer}"보다 CPU를 적게 쓰고 더 빠르지만, 주의해서 사용하지 않으면 데이터가 손실될 수 있습니다. > ## %{RedFlag.Fetch.Method.FetchTraditional}. - - > **높은 트래픽**, **낮은 CPU**, **낮음에서 보통 위험** (작업에 따라) - - > 모든 것이 원격에서 가져와집니다. - - > %{RedFlag.Fetch.Method.FetchSmoother}와 유사하지만 모든 청크가 원격 소스에서 가져와집니다. - - > 이는 가장 전통적인 가져오기 방법으로 일반적으로 가장 많은 네트워크 트래픽과 시간을 소모합니다. 또한 - '%{RedFlag.Fetch.Method.FetchSmoother}' 옵션과 유사하게 원격 파일을 덮어쓸 위험이 있습니다. - - > 하지만 가장 오래되고 가장 직접적인 접근 방식이기 때문에 종종 가장 안정적인 방법으로 간주됩니다. + > **높은 트래픽**, **낮은 CPU**, **낮음~보통 위험** (작업에 따라 다름) + > 모든 것을 원격에서 가져옵니다. + > %{RedFlag.Fetch.Method.FetchSmoother}와 비슷하지만, 모든 청크를 원격에서 가져옵니다. + > 가장 전통적인 가져오기 방식으로, 보통 네트워크 트래픽과 시간을 가장 많이 소모합니다. 또한 '%{RedFlag.Fetch.Method.FetchSmoother}' 옵션과 마찬가지로 원격 파일을 덮어쓸 위험이 있습니다. + > 다만 가장 오래되고 단순한 방식이기 때문에 가장 안정적인 방법으로 여겨지는 경우가 많습니다. FetchSafer: 가져오기 전에 로컬 데이터베이스를 한 번 생성 FetchSmoother: 가져오기 전에 로컬 파일 청크 생성 FetchTraditional: 원격에서 모든 것 가져오기 Title: 어떻게 가져오시겠습니까? + FetchRemoteConfig: + Buttons: + Cancel: 아니요, 로컬 설정을 사용합니다 + Fetch: 예, 원격 설정을 가져와 적용합니다 + Message: 원격에 저장된 환경 설정을 가져와 이 기기에 적용하시겠습니까? + Title: 원격 구성 가져오기 +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: 복구 조치 @@ -811,18 +883,15 @@ Replicator: Locked: Action: Dismiss: 재확인을 위해 취소 - Fetch: 원격 데이터베이스에서 모든 것을 다시 가져오기 + Fetch: 이 기기의 동기화 재설정 Unlock: 원격 데이터베이스 잠금 해제 Message: - _value: > + _value: | 원격 데이터베이스가 잠겨 있습니다. 이는 일부 터미널에서 데이터베이스를 재구축했기 때문입니다. - 따라서 현재 기기는 데이터베이스 손상을 방지하기 위해 연결을 일시적으로 보류해야 합니다. - 선택할 수 있는 세 가지 방법이 있습니다: - - %{Replicator.Dialogue.Locked.Action.Fetch} 가장 권장되고 신뢰할 수 있는 방법입니다. 로컬 데이터베이스를 초기화한 뒤, 원격 데이터베이스의 전체 데이터를 다시 가져옵니다. 대부분의 경우 안전하게 수행할 수 있으나, 시간이 다소 걸리며 안정적인 네트워크 환경에서 진행해야 합니다. - %{Replicator.Dialogue.Locked.Action.Unlock} @@ -837,9 +906,12 @@ Replicator: InitialiseFatalError: 사용 가능한 복제기가 없습니다. 치명적인 오류입니다. Pending: 일부 파일 이벤트가 대기 중입니다. 복제가 취소되었습니다. SomeModuleFailed: 일부 모듈 실패로 복제가 취소되었습니다 - VersionUpFlash: 설정을 열고 메시지를 확인해 주세요. 복제가 취소되었습니다. + 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,27 +919,36 @@ 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 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.: 설정을 마크다운 파일에 저장합니다. 새로운 설정이 도착하면 알림을 받게 됩니다. 플랫폼별로 다른 파일을 설정할 수 있습니다. 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 hidden files before replication: 복제 전 숨겨진 파일 검색 -Scan hidden files 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!: 긴급 조치 +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: 시크릿 키 @@ -881,8 +962,8 @@ Setting: 키 페어를 생성했습니다! 참고: 이 키 페어는 다시 표시되지 않습니다. 안전한 곳에 저장해 주세요. 분실하면 새 키 페어를 생성해야 합니다. - 참고 2: 공개 키는 spki 형식이고, 개인 키는 pkcs8 형식입니다. 편의상 공개 키의 줄 바꿈은 `\n`으로 변환됩니다. - 참고 3: 공개 키는 원격 데이터베이스에서 구성되어야 하고, 개인 키는 로컬 기기에서 구성되어야 합니다. + 참고 2: 공개 키는 spki 형식이고, 개인 키는 pkcs8 형식입니다. 편의를 위해 공개 키의 줄 바꿈은 `\n`으로 변환됩니다. + 참고 3: 공개 키는 원격 데이터베이스에, 개인 키는 로컬 기기에 설정해야 합니다. >[!FOR YOUR EYES ONLY]- >
@@ -910,7 +991,6 @@ Setting: > >
- Title: 새 키 페어가 생성되었습니다! TroubleShooting: _value: 문제 해결 @@ -923,119 +1003,122 @@ Setting: SettingTab: Message: AskRebuild: 변경 사항을 적용하려면 원격 데이터베이스에서 가져와야 합니다. 계속 진행하시겠습니까? +Setup URI dialog cancelled.: Setup URI 대화 상자가 취소되었습니다. Setup: + Apply: + Buttons: + ApplyAndFetch: 적용 후 가져오기 + ApplyAndMerge: 적용 후 병합 + ApplyAndRebuild: 적용 후 재구축 + Cancel: 폐기하고 취소 + OnlyApply: 적용만 하기 + Message: |- + 새 구성이 준비되었습니다. 이제 적용해 보겠습니다. + 적용 방법은 여러 가지가 있습니다: + + - 적용 후 가져오기 + 이 기기를 새 클라이언트로 구성합니다. 적용한 뒤 원격 서버에서 동기화합니다. + - 적용 후 병합 + 이미 파일이 있는 기기에서 구성합니다. 로컬 파일을 처리한 뒤 차이만 전송합니다. 충돌이 발생할 수 있습니다. + - 적용 후 재구축 + 로컬 파일로 원격을 재구축합니다. 보통 서버가 손상되었거나 처음부터 다시 시작하려는 경우에 사용합니다. + 다른 기기는 잠기며 다시 가져오기를 수행해야 합니다. + - 적용만 하기 + 적용만 합니다. 재구축이 필요한 경우 충돌이 발생할 수 있습니다. + Title: ${method}에서 가져온 새 구성 적용 + WarningRebuildRecommended: "참고: 설정을 조정한 결과 재구축이 필요한 것으로 판단되었습니다. 적용만 하는 것은 권장하지 않습니다." + Doctor: + Buttons: + No: 아니요, URI에 담긴 설정을 그대로 사용합니다 + Yes: 예, 설정 진단 마법사를 실행합니다 + Message: |- + Self-hosted LiveSync는 오랜 기간에 걸쳐 발전해 왔고, 그동안 권장 설정도 일부 바뀌었습니다. + + 지금 설정 단계가 이를 점검하기에 아주 좋은 시점입니다. + + 가져온 설정이 최신 기준에 비추어 최적인지 확인하도록 설정 진단 마법사를 실행하시겠습니까? + Title: 설정 진단 마법사를 실행할까요? + FetchRemoteConf: + Buttons: + Fetch: 예, 구성을 가져옵니다 + Skip: 아니요, URI에 담긴 설정을 사용합니다 + Message: |- + 다른 기기와 이미 한 번이라도 동기화했다면, 원격 데이터베이스에 동기화된 기기 사이에 적합한 구성 값이 저장되어 있습니다. 플러그인은 더 견고한 구성을 위해 이 값을 가져오려고 합니다. + + 다만 한 가지 확인이 필요합니다. 지금 네트워크에 안전하게 접근해 설정을 가져올 수 있는 상황인가요? + + 참고: 원격 데이터베이스가 SSL 인증서로 보호되어 있고 네트워크가 안전하다면, 대부분의 경우 그대로 진행해도 괜찮습니다. + Title: 원격 데이터베이스에서 구성을 가져올까요? QRCode: |- 설정을 전송하기 위한 QR 코드를 생성했습니다. 휴대폰이나 다른 기기로 QR 코드를 스캔해 주세요. 참고: QR 코드는 암호화되지 않았으므로 열 때 주의하세요. >[!FOR YOUR EYES ONLY]- >
${qr_image}
- ShowQRCode: - _value: QR 코드 표시 - Desc: 설정을 전송하기 위한 QR 코드를 표시합니다. RemoteE2EE: - Title: 엔드투엔드 암호화 - Guidance: 엔드투엔드 암호화 설정을 구성해 주세요. - LabelEncrypt: 엔드투엔드 암호화 - PlaceholderPassphrase: 패스프레이즈를 입력하세요 - StronglyRecommendedTitle: 강력 권장 - StronglyRecommendedLine1: 엔드투엔드 암호화를 활성화하면 데이터가 원격 서버로 전송되기 전에 이 기기에서 암호화됩니다. 즉, 누군가 서버에 접근하더라도 패스프레이즈 없이는 데이터를 읽을 수 없습니다. 다른 기기에서 데이터를 복호화할 때도 필요하므로 패스프레이즈를 반드시 기억해 두세요. - StronglyRecommendedLine2: 또한 Peer-to-Peer 동기화를 사용 중이더라도, 나중에 다른 방식으로 전환하여 원격 서버에 연결하면 이 설정이 그대로 사용됩니다. - MultiDestinationWarning: 여러 동기화 대상에 연결하는 경우에도 이 설정은 동일해야 합니다. - LabelObfuscateProperties: 속성 난독화 - ObfuscatePropertiesDesc: >- - 속성(예: 파일 경로, 크기, 생성일 및 수정일)을 난독화하면 원격 서버에서 파일과 폴더의 구조 및 이름을 식별하기 어렵게 만들어 보안을 한층 강화할 수 있습니다. 이는 개인 정보를 보호하고 권한 없는 사용자가 데이터에 관한 정보를 추론하기 어렵게 만듭니다. AdvancedTitle: 고급 - LabelEncryptionAlgorithm: 암호화 알고리즘 - DefaultAlgorithmDesc: 대부분의 경우 기본 알고리즘(${algorithm})을 그대로 사용하는 것이 좋습니다. 이 설정은 기존 Vault가 다른 형식으로 암호화되어 있는 경우에만 필요합니다. AlgorithmWarning: 암호화 알고리즘을 변경하면 다른 알고리즘으로 암호화된 기존 데이터에 접근할 수 없게 됩니다. 모든 기기에서 동일한 알고리즘을 사용하도록 설정해 데이터 접근성을 유지하세요. - PassphraseValidationLine1: 엔드투엔드 암호화 패스프레이즈는 실제 동기화가 시작되기 전까지 검증되지 않는다는 점에 유의하세요. 이것은 데이터를 보호하기 위한 보안 조치입니다. - PassphraseValidationLine2: 따라서 서버 정보를 수동으로 구성할 때는 각별히 주의해 주세요. 잘못된 패스프레이즈를 입력하면 서버의 데이터가 손상됩니다. 이는 의도된 동작이니 반드시 이해하고 진행해 주세요. + ButtonCancel: 취소 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: 취소 + DefaultAlgorithmDesc: 대부분의 경우 기본 알고리즘(${algorithm})을 그대로 사용하는 것이 좋습니다. 이 설정은 기존 보관함이 다른 형식으로 암호화되어 있는 경우에만 필요합니다. + Guidance: 종단 간 암호화 설정을 구성해 주세요. + LabelEncrypt: 종단 간 암호화 + LabelEncryptionAlgorithm: 암호화 알고리즘 + LabelObfuscateProperties: 속성 난독화 + MultiDestinationWarning: 여러 동기화 대상에 연결하는 경우에도 이 설정은 동일해야 합니다. + ObfuscatePropertiesDesc: "속성(예: 파일 경로, 크기, 생성일 및 수정일)을 난독화하면 원격 서버에서 파일과 폴더의 구조 및 이름을 식별하기 어렵게 만들어 보안을 한층 강화할 수 있습니다. 이는 개인 정보를 보호하고 권한 없는 사용자가 데이터에 관한 정보를 추론하기 어렵게 만듭니다." + PassphraseValidationLine1: 종단 간 암호화 패스프레이즈는 실제 동기화가 시작되기 전까지 검증되지 않는다는 점에 유의하세요. 데이터를 보호하기 위한 보안 조치입니다. + PassphraseValidationLine2: 따라서 서버 정보를 수동으로 구성할 때는 각별히 주의해 주세요. 잘못된 패스프레이즈를 입력하면 서버의 데이터가 손상됩니다. 이는 의도된 동작이니 반드시 이해하고 진행해 주세요. + PlaceholderPassphrase: 패스프레이즈를 입력하세요 + StronglyRecommendedLine1: 종단 간 암호화를 활성화하면 데이터가 원격 서버로 전송되기 전에 이 기기에서 암호화됩니다. 즉, 누군가 서버에 접근하더라도 패스프레이즈 없이는 데이터를 읽을 수 없습니다. 다른 기기에서 데이터를 복호화할 때도 필요하므로 패스프레이즈를 반드시 기억해 두세요. + StronglyRecommendedLine2: 또한 Peer-to-Peer 동기화를 사용 중이더라도, 나중에 다른 방식으로 전환하여 원격 서버에 연결하면 이 설정이 그대로 사용됩니다. + StronglyRecommendedTitle: 강력 권장 + Title: 종단 간 암호화 ScanQRCode: - Title: QR 코드 스캔 + ButtonClose: 이 대화 상자 닫기 Guidance: 기존 기기에서 설정을 가져오려면 아래 단계를 따라 주세요. - Step1: 이 기기에서는 이 Vault를 계속 열어 두세요. + Step1: 이 기기에서는 이 보관함을 계속 열어 두세요. 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 코드 스캔 + ShowQRCode: + _value: QR 코드 표시 + Desc: 설정을 전송하기 위한 QR 코드를 표시합니다. + UseSetupURI: + ButtonCancel: 취소 + ButtonProceed: 설정 테스트 후 계속 + ErrorFailedToParse: Setup URI를 해석하지 못했습니다. URI와 패스프레이즈를 확인해 주세요. + ErrorPassphraseRequired: 보관함 패스프레이즈를 입력해 주세요. + GuidanceLine1: 서버 설치 중에 또는 다른 기기에서 생성한 Setup URI와 보관함 패스프레이즈를 입력해 주세요. + GuidanceLine2: 명령 팔레트에서 "설정을 새 Setup URI로 복사" 명령을 실행하면 새 Setup URI를 생성할 수 있습니다. + InvalidInfo: Setup URI가 올바르지 않습니다. 확인한 뒤 다시 시도해 주세요. + LabelPassphrase: 보관함 패스프레이즈 + LabelSetupURI: Setup URI + PlaceholderPassphrase: 보관함 패스프레이즈를 입력하세요 + 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 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.: 파일 변경 사항 감시를 중단합니다. -Suppress notification of hidden files change: 숨겨진 파일 변경 알림 억제 +Storage -> Database: 스토리지 -> 데이터베이스 +Suppress notification of hidden files change: 숨김 파일 변경 알림 억제 Suspend database reflecting: 데이터베이스 반영 일시 중단 Suspend file watching: 파일 감시 일시 중단 Switch to IDB: IDB로 전환 @@ -1047,21 +1130,35 @@ 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 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.: 이 패스프레이즈는 다른 기기로 복사되지 않습니다. 다시 구성할 때까지 `기본값`으로 설정됩니다. This will recreate chunks for all files. If there were missing chunks, this may fix the errors.: 모든 파일의 청크를 다시 생성합니다. 누락된 청크가 있었다면 이 작업으로 오류가 해결될 수 있습니다. Transfer Tweak: 전송 조정 TweakMismatchResolve: Action: + DisableAutoAcceptCompatible: 자동 수용 비활성화 Dismiss: 무시 + EnableAutoAcceptCompatible: 자동 수용 활성화 UseConfigured: 구성된 설정 사용 UseMine: 원격 데이터베이스 설정 업데이트 UseMineAcceptIncompatible: 원격 데이터베이스 설정 업데이트하지만 그대로 유지 @@ -1070,6 +1167,10 @@ TweakMismatchResolve: UseRemoteAcceptIncompatible: 이 기기에 설정 적용하지만 호환성 문제 무시 UseRemoteWithRebuild: 이 기기에 설정 적용하고 다시 가져오기 Message: + AutoAcceptCompatibleUndefined: |- + + 기기마다 설정이 다른 것으로 보입니다. 이제 호환되는 변경 사항은 자동으로 적용할 수 있습니다. + 이 `자동 수용` 설정을 활성화하시겠습니까? Main: |- 원격 데이터베이스의 설정은 다음과 같습니다. 이 값들은 이 기기와 최소 한 번 동기화된 다른 기기에서 구성된 것입니다. @@ -1093,29 +1194,24 @@ TweakMismatchResolve: 결정을 알려주세요. ${additionalMessage} + mineUpdated: 이 기기의 구성이 조정되었습니다. + remoteUpdated: 원격에 저장된 구성이 업데이트되었습니다. UseRemote: - WarningRebuildRecommended: >- + WarningRebuildRecommended: |- >[!NOTICE] - - > 일부 변경사항은 호환 가능하지만 추가 스토리지 및 전송량을 소모할 수 있습니다. 재구축을 권장합니다. 하지만 현재 재구축을 - 수행하지 않더라도 향후 유지보수에서 구현될 수 있습니다. - + > 일부 변경사항은 호환 가능하지만 추가 스토리지 및 전송량을 소모할 수 있습니다. 재구축을 권장합니다. 하지만 현재 재구축을 수행하지 않더라도 향후 유지보수에서 구현될 수 있습니다. > ***시간적 여유가 있고 안정적인 네트워크에 연결된 상태에서 적용해 주세요!*** WarningRebuildRequired: |- >[!WARNING] > 일부 원격 구성이 이 기기의 로컬 데이터베이스와 호환되지 않습니다. 로컬 데이터베이스 재구축이 필요합니다. > ***시간적 여유가 있고 안정적인 네트워크에 연결된 상태에서 적용해 주세요!*** - WarningIncompatibleRebuildRecommended: >- + WarningIncompatibleRebuildRecommended: |- >[!NOTICE] - > 로컬 데이터베이스와 원격 데이터베이스가 호환되지 않도록 만드는 값들이 다른 것을 감지했습니다. - - > 일부 변경사항은 호환 가능하지만 추가 스토리지 및 전송량을 소모할 수 있습니다. 재구축을 권장합니다. 하지만 현재 재구축을 - 수행하지 않더라도 향후 유지보수에서 구현될 수 있습니다. - + > 일부 변경사항은 호환 가능하지만 추가 스토리지 및 전송량을 소모할 수 있습니다. 재구축을 권장합니다. 하지만 현재 재구축을 수행하지 않더라도 향후 유지보수에서 구현될 수 있습니다. > 재구축을 원한다면 몇 분 이상 소요됩니다. **지금 수행해도 안전한지 확인해 주세요.** WarningIncompatibleRebuildRequired: |- @@ -1131,10 +1227,304 @@ TweakMismatchResolve: Row: "| ${name} | ${self} | ${remote} |" Title: _value: 구성 불일치 감지 + AutoAcceptCompatible: 자동 수용 사용 가능 TweakResolving: 구성 불일치 감지 UseRemoteConfig: 원격 구성 사용 +Ui: + Common: + Signal: + Caution: 주의 + Danger: 위험 + Notice: 알림 + Warning: 경고 + Settings: + Advanced: + LocalDatabaseTweak: 로컬 데이터베이스 조정 + MemoryCache: 메모리 캐시 + TransferTweak: 전송 조정 + Common: + Analyse: 분석 + Back: 뒤로 + Check: 확인 + Configure: 설정 + Continue: 계속 + Delete: 삭제 + Fetch: 가져오기 + Lock: 잠금 + Merge: 병합 + Open: 열기 + Overwrite: 덮어쓰기 + Perform: 실행 + ResetAll: 모두 재설정 + ResolveAll: 모두 해결 + Scan: 검사 + Send: 보내기 + Use: 사용 + VerifyAll: 모두 검증 + CustomizationSync: + OpenDesc: 대화상자 열기 + Panel: 사용자 설정 동기화 + WarnChangeDeviceName: 이 기능이 활성화되어 있는 동안에는 기기 이름을 변경할 수 없습니다. 기기 이름을 변경하려면 이 기능을 비활성화하세요. + WarnSetDeviceName: 이 기기를 식별할 기기 이름을 설정해 주세요. 이 이름은 기기 간에 고유해야 합니다. 설정하기 전까지는 이 기능을 활성화할 수 없습니다. + Hatch: + AnalyseDatabaseUsage: 데이터베이스 사용량 분석 + AnalyseDatabaseUsageDesc: 데이터베이스 사용량을 분석하고 직접 진단할 수 있도록 TSV 보고서를 생성합니다. 생성된 보고서는 원하는 스프레드시트에 붙여 넣어 확인할 수 있습니다. + BackToNonConfigured: 미구성 상태로 되돌리기 + ConvertNonObfuscated: 경로 난독화되지 않은 파일 검사 및 변환 + ConvertNonObfuscatedDesc: 경로 난독화 없이 저장된 파일이 있는지 로컬 데이터베이스를 확인하고, 필요하면 변환합니다. + CopyIssueReport: 보고서를 클립보드에 복사 + DatabaseLabel: "데이터베이스: ${details}" + DatabaseToStorage: 데이터베이스 -> 스토리지 + DeleteCustomizationSyncData: 모든 사용자 설정 동기화 데이터 삭제 + GeneratedReport: 생성된 보고서 + Missing: 누락됨 + ModifiedSize: "수정: ${modified}, 크기: ${size}" + ModifiedSizeActual: "수정: ${modified}, 크기: ${size} (실제 크기: ${actualSize})" + PrepareIssueReport: 이슈 생성을 위한 '보고서' 준비 + 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 (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 어댑터는 특정 상황에서 더 나은 성능을 보이는 경우가 많지만, LiveSync 모드에서 사용하면 메모리 누수를 일으키는 것으로 확인되었습니다. LiveSync 모드를 사용할 때는 IDB 어댑터를 사용해 주세요. + MigratingToIdb: 모든 데이터를 IDB로 마이그레이션하는 중... + MigratingToIndexedDb: 모든 데이터를 IndexedDB로 마이그레이션하는 중... + MigrationIdbCompleted: IDB로 마이그레이션이 완료되었습니다. 새 구성을 적용하기 위해 Obsidian이 곧 재시작됩니다. + MigrationIdbCompletedFollowUp: IDB로 마이그레이션이 완료되었습니다. 어댑터를 전환하고 Obsidian을 재시작해 주세요. + MigrationIndexedDbCompleted: IndexedDB로 마이그레이션이 완료되었습니다. 새 구성을 적용하기 위해 Obsidian이 곧 재시작됩니다. + MigrationIndexedDbCompletedFollowUp: IndexedDB로 마이그레이션이 완료되었습니다. 어댑터를 전환하고 Obsidian을 재시작해 주세요. + MigrationWarning: 이 설정을 변경하려면 기존 데이터를 마이그레이션하고(시간이 다소 걸릴 수 있습니다) Obsidian을 재시작해야 합니다. 진행하기 전에 반드시 데이터를 백업해 주세요. + OperationToIdb: IDB로 + OperationToIndexedDb: IndexedDB로 + Remediation: 복구 조치 + RemediationChanged: 복구 설정이 변경됨 + RemediationNoLimit: 제한이 설정되지 않음 + RemediationRestarting: 복구 조치 설정이 변경되었습니다. Obsidian을 재시작하는 중... + RemediationRestartLater: 나중에 + RemediationRestartMessage: Obsidian을 재시작하는 것을 강력히 권장합니다. 재시작하기 전까지는 일부 변경 사항이 적용되지 않거나 화면이 일관되지 않게 표시될 수 있습니다. 지금 재시작하시겠습니까? + RemediationRestartNow: 지금 재시작 + RemediationSuffixChanged: 접미사가 변경되었습니다. 데이터베이스를 다시 여는 중... + RemediationWithValue: "제한: ${date} (${timestamp})" + RemoteDatabaseSunset: 원격 데이터베이스 조정 (폐기 예정) + SwitchToIDB: IDB로 전환 + SwitchToIndexedDb: IndexedDB로 전환 + PowerUsers: + ConfigurationEncryption: 구성 암호화 + ConnectionTweak: CouchDB 연결 조정 + ConnectionTweakDesc: IBM Cloudant를 사용하다가 페이로드 크기 제한에 도달했다면, 배치 크기와 배치 개수 제한을 더 낮은 값으로 줄여 주세요. + Default: 기본값 + Developer: 개발자 + EncryptSensitiveConfig: 민감한 구성 항목 암호화 + PromptPassphraseEveryLaunch: 시작할 때마다 패스프레이즈 묻기 + UseCustomPassphrase: 사용자 지정 패스프레이즈 사용 + Remote: + Activate: 활성화 + ActiveSuffix: " (활성)" + AddConnection: 연결 추가 + AddRemoteDefaultName: 새 원격 + ConfigureAndChangeRemote: 원격 구성 및 변경 + ConfigureE2EE: E2EE 구성 + ConfigureRemote: 원격 구성 + DeleteRemoteConfirm: "'${name}' 원격 구성을 삭제할까요?" + DeleteRemoteTitle: 원격 구성 삭제 + DisplayName: 표시 이름 + DuplicateRemote: 원격 구성 복사 + DuplicateRemoteSuffix: ${name} (사본) + E2EEConfiguration: E2EE 구성 + Export: 내보내기 + FetchRemoteSettings: 원격 설정 가져오기 + ImportConnection: 연결 가져오기 + ImportConnectionPrompt: 연결 문자열 붙여넣기 + ImportedCouchDb: 가져온 CouchDB + ImportedRemote: 원격 + MoreActions: 추가 작업 + PeerToPeerPanel: 피어 투 피어(P2P) 동기화 + RemoteConfigurationPrefix: 원격 구성 + RemoteDatabases: 원격 데이터베이스 + RemoteName: 원격 이름 + RemoteNameCouchDb: CouchDB ${host} + RemoteNameP2P: P2P ${room} + RemoteNameS3: S3 ${bucket} + Rename: 이름 바꾸기 + Selector: + AddDefaultPatterns: 기본 패턴 추가 + CrossPlatform: 크로스 플랫폼 + Default: 기본값 + HiddenFiles: 숨김 파일 + IgnorePatterns: 무시 패턴 + NonSynchronisingFiles: 동기화하지 않는 파일 + NonSynchronisingFilesDesc: (정규식) 설정하면 이 패턴과 일치하는 로컬 및 원격 파일 변경은 모두 건너뜁니다. + NormalFiles: 일반 파일 + OverwritePatterns: 덮어쓰기 패턴 + OverwritePatternsDesc: 병합 대신 덮어쓸 파일을 판별하는 패턴 + SynchronisingFiles: 동기화할 파일 + SynchronisingFilesDesc: (정규식) 비워 두면 모든 파일을 동기화합니다. 정규식 필터를 지정하면 동기화할 파일을 제한할 수 있습니다. + TargetPatterns: 대상 패턴 + TargetPatternsDesc: 동기화할 파일을 판별하는 패턴 + Setup: + RerunWizardButton: 마법사 다시 실행 + RerunWizardDesc: 온보딩 마법사를 다시 실행하여 Self-hosted LiveSync를 다시 설정합니다. + RerunWizardName: 온보딩 마법사 다시 실행 + SyncSettings: + Fetch: 가져오기 + Merge: 병합 + Overwrite: 덮어쓰기 + SetupWizard: + Common: + Back: 아니요, 이전으로 돌아가겠습니다 + Cancel: 취소 + ProceedSelectOption: 계속하려면 항목을 선택해 주세요 + Intro: + ExistingOption: 기존 동기화 구성에 기기를 추가합니다 + ExistingOptionDesc: 다른 컴퓨터나 스마트폰에서 이미 동기화를 사용 중이라면 선택하세요. 이 기기를 기존 구성에 연결할 때 사용합니다. + Guidance: 동기화 설정을 간단히 마칠 수 있도록 몇 가지 질문으로 안내해 드리겠습니다. + NewOption: 처음으로 설정합니다 + NewOptionDesc: 이 기기를 첫 번째 동기화 기기로 설정한다면 선택하세요. + ProceedExisting: 예, 이 기기를 기존 동기화 구성에 추가하겠습니다 + ProceedNew: 예, 새 동기화를 설정하겠습니다 + Question: 먼저 현재 상황에 가장 잘 맞는 항목을 선택해 주세요. + Title: Self-hosted LiveSync에 오신 것을 환영합니다 + Invitation: + Start: 설정 시작 + OutroAskUserMode: + CompatibleOption: 원격이 이미 설정되어 있고, 구성도 호환됩니다(또는 이번 작업으로 호환되었습니다). + CompatibleOptionDesc: 확신이 없다면 이 옵션을 선택하는 것은 위험합니다. 서버 구성이 이 기기와 호환된다고 가정하기 때문에, 그렇지 않을 경우 데이터가 손실될 수 있습니다. 결과를 충분히 이해한 뒤에 선택해 주세요. + ExistingOption: 원격 서버가 이미 설정되어 있습니다. 이 기기를 참여시키려고 합니다. + ExistingOptionDesc: 이 옵션을 선택하면 이 기기가 기존 서버에 참여합니다. 서버에 있는 기존 동기화 데이터를 이 기기로 가져와야 합니다. + Guidance: 서버 연결이 정상적으로 구성되었습니다. 다음 단계로, 로컬 데이터베이스 즉 동기화 정보를 재구축해야 합니다. + NewOption: 서버를 처음 설정합니다 / 기존 서버를 초기화하려고 합니다. + NewOptionDesc: 이 옵션을 선택하면 이 기기의 현재 데이터로 서버를 초기화합니다. 서버에 있던 기존 데이터는 완전히 덮어써집니다. + ProceedApplySettings: 설정 적용 + ProceedNext: 다음 단계로 진행합니다. + Question: 현재 상황을 선택해 주세요. + Title: "거의 완료: 선택이 필요합니다" + OutroNewP2PUser: + GuidanceNotice: P2P에는 덮어쓸 중앙 서버 사본이 없습니다. 이 단계는 이 기기만 준비하며, 다른 기기가 초기 데이터를 가져올 때는 이 기기를 온라인 상태로 유지해 주세요. + GuidancePrimary: Peer-to-Peer 연결이 정상적으로 구성되었습니다. 다음 단계로, 이 보관함의 현재 파일을 사용해 로컬 LiveSync 데이터베이스를 만듭니다. + Important: 유의해 주세요 + Proceed: 재시작하고 이 기기 준비 + Question: 재시작하고 로컬 초기화 확인 단계로 넘어가려면 아래 버튼을 선택해 주세요. + Title: "설정 완료: 이 P2P 기기 준비" + OutroNewUser: + GuidancePrimary: 서버 연결이 정상적으로 구성되었습니다. 다음 단계로, 이 기기의 현재 데이터를 사용해 서버의 동기화 데이터를 만듭니다. + GuidanceWarning: 재시작하면 이 기기의 데이터가 원본으로서 서버에 업로드됩니다. 현재 서버에 있는 데이터는 의도치 않은 것이라도 완전히 덮어써지므로 유의해 주세요. + Important: 중요 + Proceed: 재시작하고 서버 초기화 + Question: 재시작하고 마지막 확인 단계로 넘어가려면 아래 버튼을 선택해 주세요. + Title: "설정 완료: 서버 초기화 준비" + RebuildEverythingP2P: + ConfirmLocalReset: 이 작업이 이 기기의 로컬 동기화 데이터베이스만 초기화한다는 것을 이해했습니다. + ConfirmLocalResetNote: 현재 이 보관함에 있는 파일을 사용해 재구축합니다. + ConfirmTitle: ⚠️ 다음 내용을 확인해 주세요 + Guidance: 이 절차는 이 기기의 로컬 LiveSync 데이터베이스를 삭제하고, 이 보관함의 현재 파일로 재구축합니다. 다른 기기의 데이터는 삭제하거나 덮어쓰지 않습니다. + Note: 초기화 후에도 다른 기기가 이 기기에서 보관함을 가져올 수 있도록 이 기기를 온라인 상태로 유지해 주세요. + Proceed: 이해했습니다, 이 기기 준비 + Title: "최종 확인: P2P를 위한 이 기기 준비" + SelectExisting: + Guidance: 이 기기를 기존 동기화 구성에 추가합니다. + ManualOption: 서버 정보를 수동으로 입력 + ManualOptionDesc: 다른 기기와 동일한 서버 정보를 다시 직접 입력합니다. 숙련된 사용자 전용입니다. + ProceedManual: 서버 정보를 알고 있으니 직접 입력하겠습니다 + ProceedQr: 이 기기의 카메라로 사용 중인 기기에 표시된 QR 코드를 스캔하세요. + ProceedSetupUri: Setup URI로 계속 + QrOption: QR 코드 스캔(모바일 권장) + QrOptionDesc: 이 기기의 카메라로 사용 중인 기기에 표시된 QR 코드를 스캔하세요. + Question: 다른 기기에서 설정을 가져올 방법을 선택해 주세요. + SetupUriOption: Setup URI 사용(권장) + SetupUriOptionDesc: 사용 중인 기기 중 하나에서 생성한 Setup URI를 붙여 넣으세요. + Title: 기기 설정 방법 + SelectNew: + Guidance: 이제 서버 구성을 진행하겠습니다. + ManualOption: 서버 정보를 수동으로 입력 + ManualOptionDesc: Setup URI가 없거나 세부 설정을 직접 구성하려는 사용자를 위한 고급 옵션입니다. + ProceedManual: 서버 정보를 알고 있으니 직접 입력하겠습니다 + ProceedSetupUri: Setup URI로 계속 + Question: 서버 연결을 어떻게 구성하시겠습니까? + SetupUriOption: Setup URI 사용(권장) + SetupUriOptionDesc: Setup URI는 서버 주소와 인증 정보를 담은 하나의 문자열입니다. 서버 설치 스크립트가 URI를 생성했다면, 간단하고 안전하게 구성할 수 있는 방법입니다. + Title: 연결 방법 + SetupRemote: + BucketOption: S3/MinIO/R2 객체 스토리지 + BucketOptionDesc: 저널 파일을 사용하는 동기화 방식입니다. S3/MinIO/R2 호환 객체 스토리지 서비스를 미리 구성해 두어야 합니다. + CouchDbOptionDesc: 현재 설계에 가장 적합한 동기화 방식입니다. 모든 기능을 사용할 수 있습니다. CouchDB 인스턴스를 미리 구성해 두어야 합니다. + Guidance: 연결할 서버 유형을 선택해 주세요. + P2POption: Peer-to-Peer 전용 + P2POptionDesc: 기기 간에 직접 동기화하는 방식입니다. 서버는 필요 없지만 두 기기가 동시에 온라인 상태여야 하며, 일부 기능은 제한될 수 있습니다. 인터넷 연결은 시그널링에만 필요하고 데이터 전송에는 필요하지 않습니다. + ProceedBucket: S3/MinIO/R2 설정으로 계속 + ProceedCouchDb: CouchDB 설정으로 계속 + ProceedP2P: Peer-to-Peer 전용 설정으로 계속 + Title: 서버 정보 입력 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): Setup URI 사용(권장) Use Custom HTTP Handler: 커스텀 HTTP 핸들러 사용 Use dynamic iteration count: 동적 반복 횟수 사용 Use Segmented-splitter: 의미 기반 분할 사용 @@ -1146,66 +1536,16 @@ Username: 사용자명 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.: 이 기능이 활성화되어 있는 동안에는 장치 이름을 변경할 수 없습니다. 장치 이름을 변경하려면 이 기능을 비활성화하세요. +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: 편집기에서 파일을 저장할 때 자동으로 동기화를 시작합니다 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.": "이 기능은 장치 간 직접 동기화를 제공합니다. 서버는 필요 없지만 동기화가 이루어지려면 두 장치가 동시에 온라인 상태여야 하며 일부 기능은 제한될 수 있습니다. 인터넷 연결은 시그널링(피어 감지)에만 필요하며 데이터 전송 자체에는 필요하지 않습니다。" +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.: 이 기기를 기존 동기화 구성에 추가합니다.