Compare commits

...

9 Commits

Author SHA1 Message Date
vorotamoroz
a36fe6c36e Prepare 1.0.5 release notes 2026-08-05 10:39:17 +00:00
vorotamoroz
92a5e6e145 Merge pull request #1067 from Hsiii/fix/mobile-status-header-offset
fix(ios): position sync status below header controls
2026-08-05 19:32:11 +09:00
vorotamoroz
be6da86a3a Merge pull request #1075 from motolies/korean-translations-100
Complete the Korean translations to full coverage
2026-08-05 19:31:37 +09:00
vorotamoroz
8bb2d5038d Merge pull request #1077 from vrtmrz/fix/issue-1073-sleep-during-synchronisation
Allow desktop sleep during finite synchronisation
2026-08-05 19:13:37 +09:00
vorotamoroz
9d25a00c1d Add sleep preferences for finite synchronisation 2026-08-05 09:50:13 +00:00
vorotamoroz
277337af40 Merge pull request #1076 from vrtmrz/1_0_4
Releasing 1.0.4
2026-08-05 15:08:06 +09:00
Namwon Kim
697ebe8272 Complete Korean translations to full coverage
Fill in the 318 remaining untranslated message keys for Korean, bringing
`ko` from 1132/1450 to 1450/1450 against the English base locale.

The gap was concentrated in recently added areas: P2P synchronisation UI,
the setup wizard confirmation dialogues, S3/MinIO/R2 and JWT authentication
settings, and the diagnostics/maintenance panels. These keys are looked up
by their English source text, so an absent translation silently fell back
to English.

Terminology follows the existing Korean resource: Vault as 보관함, chunk as
청크, passphrase as 패스프레이즈, replication as 복제, rebuild as 재구축.
Proper nouns (CouchDB, LiveSync, Setup URI, JWT, TURN) are left as-is.

Sentence fragments that are concatenated in the setup wizard were adapted
to Korean word order — Korean places the predicate last, so the emphasised
trailing fragment carries the verb (e.g. "the single, authoritative master
copy" renders as a complete predicate).

Only ko.yaml was hand-edited; ko.json and combinedMessages.prod.ts are
regenerated by `npm run i18n:bake`.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01R5avHoUL5zBwBfakGHyeFz
2026-08-05 12:37:15 +09:00
Hsi
96a69c85bd docs: document iOS status layout fix 2026-08-03 18:24:10 +08:00
Hsi
de190e2b23 fix: position ios sync status below header controls 2026-08-03 17:37:00 +08:00
13 changed files with 1186 additions and 22 deletions

View File

@@ -528,7 +528,19 @@ Sync automatically after merging files
Setting key: keepReplicationActiveInBackground
Desktop only; uses more battery and network. This setting applies to continuous and periodic replication.
Finite remote operations, including one-shot replication, P2P peer discovery and selection, rebuilds, fetches, and remote chunk fetching, request best-effort screen-awake protection automatically and do not require this setting. That protection does not guarantee execution while Obsidian is hidden or while the operating system suspends the device.
#### Allow sleep during synchronisation
Setting key: allowSleepDuringSynchronisation
Allow the operating system to sleep while finite synchronisation operations are in progress. This option applies on every platform and is disabled by default. When it is disabled, finite operations request best-effort screen-awake protection.
#### Allow sleep during synchronisation on the desktop
Setting key: allowSleepDuringSynchronisationOnDesktop
Desktop only. Allow the operating system to sleep during finite synchronisation operations even when the general option is disabled. This option is enabled by default, so periodic or event-driven synchronisation does not repeatedly prevent automatic desktop sleep. Disable it to retain best-effort screen-awake protection on desktop.
Setup URIs preserve both sleep preferences. Older Setup URIs which do not contain them use the defaults described above. The preferences cover finite remote operations, including one-shot replication, P2P peer discovery and selection, rebuilds, fetches, remote chunk fetching, and applying downloaded documents to the Vault. They do not control whether continuous replication remains active while Obsidian is hidden, and allowing sleep does not force the operating system to suspend the device.
### 3. Update thinning

8
package-lock.json generated
View File

@@ -23,7 +23,7 @@
"@smithy/types": "^4.14.3",
"@smithy/util-retry": "^4.4.5",
"@vrtmrz/browser-ui-kit": "0.1.0",
"@vrtmrz/livesync-commonlib": "0.1.3",
"@vrtmrz/livesync-commonlib": "0.1.4",
"@vrtmrz/obsidian-plugin-kit": "0.1.3",
"@vrtmrz/ui-interactions": "0.1.2",
"diff-match-patch": "^1.0.5",
@@ -4775,9 +4775,9 @@
}
},
"node_modules/@vrtmrz/livesync-commonlib": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/@vrtmrz/livesync-commonlib/-/livesync-commonlib-0.1.3.tgz",
"integrity": "sha512-M6+mOlf4R60pf6mMuQdIlOoeIjOlDQn/hIRjELCkAwAcJXo5V/l8LfBCujeuvVk9FOzO3S0Q4WET9VaDHDxosw==",
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/@vrtmrz/livesync-commonlib/-/livesync-commonlib-0.1.4.tgz",
"integrity": "sha512-qQst1QCZEgfxwpdjnjFmXE3JNy4ATKhN8ihJSUUho4mdWC1O4zyRRhmQjg0GHu5hQPZokufr2mrP4Hur8niDNg==",
"license": "MIT",
"dependencies": {
"@aws-sdk/client-s3": "^3.808.0",

View File

@@ -177,7 +177,7 @@
"@smithy/types": "^4.14.3",
"@smithy/util-retry": "^4.4.5",
"@vrtmrz/browser-ui-kit": "0.1.0",
"@vrtmrz/livesync-commonlib": "0.1.3",
"@vrtmrz/livesync-commonlib": "0.1.4",
"@vrtmrz/obsidian-plugin-kit": "0.1.3",
"@vrtmrz/ui-interactions": "0.1.2",
"diff-match-patch": "^1.0.5",

File diff suppressed because it is too large Load Diff

View File

@@ -1,33 +1,78 @@
{
", please select the option that best describes the current state of your Vault. The application will then check your files in the most appropriate way based on your selection.": ", 이 보관함의 현재 상태를 가장 잘 설명하는 옵션을 선택해 주세요. 선택하신 내용에 따라 가장 적절한 방식으로 파일을 확인합니다.",
"(Active)": "(활성)",
"(BETA) Always overwrite with a newer file": "(베타) 항상 새로운 파일로 덮어쓰기",
"(Beta) Use ignore files": "(베타) 제외 규칙 파일 사용",
"(Days passed, 0 to disable automatic-deletion)": "(지난 일수, 0으로 설정하면 자동 삭제 비활성화)",
"(e.g., after editing many files whilst offline)": "(예: 오프라인 상태에서 많은 파일을 편집한 뒤)",
"(e.g., immediately after restoring on another computer, or having recovered from a backup)": "(예: 다른 컴퓨터에서 복원한 직후이거나 백업에서 복구한 경우)",
"(e.g., setting up for the first time on a new smartphone, starting from a clean slate)": "(예: 새 스마트폰에서 처음 설정하여 빈 상태에서 시작하는 경우)",
"(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)": "(백만 자 단위)",
"(Missing)": "(없음)",
"(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를 처음 사용하며 처음부터 설정하려는 경우에 적합합니다.",
"↑: Overwrite Remote": "↑: 원격 덮어쓰기",
"↓: Overwrite Local": "↓: 로컬 덮어쓰기",
"⇅: Use newer": "⇅: 더 새로운 쪽 사용",
"+1 week": "+1주",
"> [!INFO]- The connected devices have been detected as follows:\n${devices}": "> [!INFO]- 다음 연결된 기기가 감지되었습니다:\n${devices}",
"⚠️ Important Notice": "⚠️ 중요 안내",
"⚠️ Please Confirm the Following": "⚠️ 다음 내용을 확인해 주세요",
"✔ SELECT": "✔ 선택",
"✔ SYNC": "✔ 동기화",
"✔ WATCH": "✔ 감시",
"📡 Off": "📡 꺼짐",
"📡 On": "📡 켜짐",
"🔴 Disconnected": "🔴 연결 끊김",
"🕵️ Diag": "🕵️ 진단",
"🗑 Delete": "🗑 삭제",
"🟢 Connected": "🟢 연결됨",
"${count} issue(s) detected!": "${count}개의 문제가 감지되었습니다!",
"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를 생성했다면, 이를 사용해 간단하고 안전하게 구성할 수 있습니다.",
"Accept": "수락",
"Accept in session": "이 세션에서만 수락",
"ACCEPTED": "수락됨",
"ACCEPTED (in session)": "수락됨 (이 세션에서만)",
"Access Key": "액세스 키",
"Access Key ID": "액세스 키 ID",
"Action": "작업",
"Activate": "활성화",
"Active Remote Configuration": "활성 원격 구성",
"Add default patterns": "기본 패턴 추가",
"Add new connection": "연결 추가",
"AddOn Module (ConfigSync) has not been loaded. This is very unexpected situation. Please report this issue.": "애드온 모듈(ConfigSync)이 로드되지 않았습니다. 매우 예기치 못한 상황입니다. 이 문제를 신고해 주세요.",
"AddOn Module (HiddenFileSync) has not been loaded. This is very unexpected situation. Please report this issue.": "애드온 모듈(HiddenFileSync)이 로드되지 않았습니다. 매우 예기치 못한 상황입니다. 이 문제를 신고해 주세요.",
"Advanced": "고급",
"Advanced Settings": "고급 설정",
"After restarting, the data on this device will be uploaded to the server as the 'master copy'. Please be aware that any unintended data currently on the server will be completely overwritten.": "재시작하면 이 기기의 데이터가 '원본'으로서 서버에 업로드됩니다. 현재 서버에 있는 의도치 않은 데이터는 모두 완전히 덮어써진다는 점에 유의해 주세요.",
"After restarting, the database on this device will be rebuilt using data from the server. If there are any unsynchronised files in this vault, conflicts may occur with the server data.": "재시작하면 서버의 데이터를 사용해 이 기기의 데이터베이스가 재구축됩니다. 이 보관함에 동기화되지 않은 파일이 있다면 서버 데이터와 충돌이 발생할 수 있습니다.",
"After that, synchronise to a brand new vault on each other device with the new remote one by one.": "그런 다음 다른 기기에서도 하나씩 새 원격을 사용해 완전히 새로운 보관함에 동기화하세요.",
"All checks passed successfully!": "모든 검사를 통과했습니다!",
"All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.": "모든 기기의 진행 값이 동일합니다(${progress}). 기기들이 동기화된 것으로 보이므로 가비지 컬렉션을 진행할 수 있습니다.",
"All the same or non-existent": "모두 동일하거나 존재하지 않음",
"Allow in session": "이 세션에서만 허용",
"Allow permanently": "항상 허용",
"Also, please note that if you are using Peer-to-Peer synchronization, this configuration will be used when you switch to other methods and connect to a remote server in the future.": "또한 Peer-to-Peer 동기화를 사용 중이라면, 이 구성은 나중에 다른 방식으로 전환하여 원격 서버에 연결할 때 사용된다는 점에 유의해 주세요.",
"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 All Selected": "선택 항목 모두 적용",
"Apply Latest Change if Conflicting": "충돌 시 최신 변경 사항 적용",
"Apply preset configuration": "프리셋 구성 적용",
"Apply the settings": "설정 적용",
"Ask a passphrase at every launch": "시작할 때마다 패스프레이즈 묻기",
"Auto Connect": "자동 연결",
"Auto Start P2P Connection": "P2P 연결 자동 시작",
"Automatic": "자동",
"Automatically Sync all files when opening Obsidian.": "Obsidian을 열 때 모든 파일을 자동으로 동기화합니다.",
"Available Peers": "사용 가능한 피어",
"Back": "뒤로",
"Back to non-configured": "미구성 상태로 되돌리기",
"Batch database update": "일괄 데이터베이스 업데이트",
@@ -35,19 +80,31 @@
"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 이전에는 로컬 데이터베이스에 이전 어댑터를 사용했습니다. 이제는 새로운 어댑터를 권장합니다. 하지만 로컬 데이터베이스 재구축이 필요합니다. 충분한 시간이 있을 때 이 토글을 비활성화해 주세요. 활성화된 상태로 두면 원격 데이터베이스에서 가져올 때도 이를 비활성화하라는 메시지가 나타납니다.",
"Broadcasting?": "브로드캐스트란?",
"Bucket Name": "버킷 이름",
"by resetting the remote, you will be informed on other devices.": "원격을 초기화하면 다른 기기에서 알림을 받게 됩니다.",
"Cancel": "취소",
"Cancel Garbage Collection": "가비지 컬렉션 취소",
"Changing the encryption algorithm will prevent access to any data previously encrypted with a different algorithm. Ensure that all your devices are configured to use the same algorithm to maintain access to your data.": "암호화 알고리즘을 변경하면 이전에 다른 알고리즘으로 암호화된 데이터에는 접근할 수 없게 됩니다. 데이터에 계속 접근할 수 있도록 모든 기기가 동일한 알고리즘을 사용하도록 설정해 주세요.",
"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로 변환되지 않은 문서를 확인하고 필요하면 변환합니다.",
"Checking connection... Please wait.": "연결을 확인하는 중입니다... 잠시만 기다려 주세요.",
"Chunks": "청크",
"Close": "닫기",
"Close & Disconnect": "닫고 연결 끊기",
"Close this dialog": "이 대화 상자 닫기",
"Closed:": "종료됨:",
"cmdConfigSync.showCustomizationSync": "사용자 설정 동기화 표시",
"Comma separated `.gitignore, .dockerignore`": "쉼표로 구분된 `.gitignore, .dockerignore`",
"Command": "명령",
"Communicating": "통신 중",
"Compaction in progress on remote database...": "원격 데이터베이스에서 압축 정리를 진행 중입니다...",
"Compaction on remote database completed successfully.": "원격 데이터베이스 압축 정리가 성공적으로 완료되었습니다.",
"Compaction on remote database failed.": "원격 데이터베이스 압축 정리에 실패했습니다.",
"Compaction on remote database timed out.": "원격 데이터베이스 압축 정리 시간이 초과되었습니다.",
"Compare file": "파일 비교",
"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)": "호환성 (데이터베이스 구조)",
@@ -56,48 +113,78 @@
"Compatibility (Remote Database)": "호환성 (원격 데이터베이스)",
"Compatibility (Trouble addressed)": "호환성 (문제 대응)",
"Compute revisions for chunks": "청크에 대한 리비전 계산",
"Configuration": "구성",
"Configuration Encryption": "구성 암호화",
"Configure": "설정",
"Configure And Change Remote": "원격 구성 및 변경",
"Configure E2EE": "E2EE 구성",
"Configure Remote": "원격 구성",
"Configure the same server information as your other devices again, manually, very advanced users only.": "다른 기기와 동일한 서버 정보를 다시 직접 입력합니다. 숙련된 사용자 전용입니다.",
"Connect": "연결",
"Connected to Signaling Server (as Peer ID: ${peerId})": "시그널링 서버에 연결되었습니다 (피어 ID: ${peerId})",
"Connected:": "연결됨:",
"Connection Method": "연결 방법",
"Connection Settings": "연결 설정",
"Connection:": "연결:",
"Continue anyway": "무시하고 계속",
"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 Configuration": "CouchDB 구성",
"CouchDB Connection Tweak": "CouchDB 연결 조정",
"Create P2P remote": "P2P 원격 만들기",
"Cross-platform": "크로스 플랫폼",
"Current adapter: {adapter}": "현재 어댑터: {adapter}",
"Custom Headers": "사용자 지정 헤더",
"Customization Sync": "사용자 설정 동기화",
"Customization Sync (Beta3)": "사용자 설정 동기화 (Beta3)",
"Data Compression": "데이터 압축",
"Data to Copy": "복사할 데이터",
"Database -> Storage": "데이터베이스 -> 스토리지",
"Database Adapter": "데이터베이스 어댑터",
"Database Name": "데이터베이스 이름",
"Database suffix": "데이터베이스 접미사",
"Date": "날짜",
"Default": "기본값",
"Delay conflict resolution of inactive files": "비활성 파일의 충돌 해결 지연",
"Delay merge conflict prompt for inactive files.": "비활성 파일의 병합 충돌 프롬프트 지연.",
"Delete": "삭제",
"Delete all customization sync data": "모든 사용자 설정 동기화 데이터 삭제",
"Delete all data on the remote server.": "원격 서버의 모든 데이터를 삭제합니다.",
"Delete All of": "모두 삭제할 대상",
"Delete local database to reset or uninstall Self-hosted LiveSync": "Self-hosted LiveSync를 초기화하거나 제거하기 위해 로컬 데이터베이스를 삭제",
"Delete old metadata of deleted files on start-up": "시작 시 삭제된 파일의 오래된 메타데이터 삭제",
"Delete Remote Configuration": "원격 구성 삭제",
"Delete remote configuration '{name}'?": "'{name}' 원격 구성을 삭제할까요?",
"Delete remote configuration '${name}'?": "'${name}' 원격 구성을 삭제할까요?",
"DENIED": "거부됨",
"DENIED (in session)": "거부됨 (이 세션에서만)",
"Deny": "거부",
"Deny in session": "이 세션에서만 거부",
"Deny permanently": "항상 거부",
"Deselect all": "선택 모두 해제",
"desktop": "데스크톱",
"Detected Peers": "감지된 피어",
"Developer": "개발자",
"Device": "기기",
"device name": "기기 이름",
"Device name": "기기 이름",
"Device name to identify the device. Please use shorter one for the stable peer detection, i.e., \"iphone-16\" or \"macbook-2021\".": "기기를 식별하기 위한 기기 이름입니다. 피어를 안정적으로 감지할 수 있도록 \"iphone-16\"이나 \"macbook-2021\"처럼 짧은 이름을 사용해 주세요.",
"Device Peer ID": "기기 피어 ID",
"Device Setup Method": "기기 설정 방법",
"Devices:": "기기:",
"Diagnostic RTCPeerConnection is enabled": "진단용 RTCPeerConnection이 활성화되어 있습니다",
"dialog.yourLanguageAvailable": "Self-hosted LiveSync가 사용 중인 언어의 번역을 제공하므로 %{Display Language} 설정이 활성화되었습니다.\n\n참고: 모든 메시지가 번역되어 있지는 않습니다. 여러분의 기여를 기다리고 있습니다!\n참고 2: 이슈를 등록할 때는 **%{lang-def} 로 되돌린 뒤** 스크린샷과 메시지, 로그를 첨부해 주세요. 설정 대화 상자에서 되돌릴 수 있습니다.\n편하게 사용하실 수 있기를 바랍니다!",
"dialog.yourLanguageAvailable.btnRevertToDefault": "%{lang-def} 유지",
"dialog.yourLanguageAvailable.Title": " 번역을 사용할 수 있습니다!",
"Diff": "차이",
"Different": "다름",
"Disables all synchronization and restart.": "모든 동기화를 비활성화하고 재시작합니다.",
"Disables logging, only shows notifications. Please disable if you report an issue.": "로깅을 비활성화하고 알림만 표시합니다. 문제를 신고하는 경우 비활성화해 주세요.",
"Disconnect": "연결 끊기",
"Dismiss": "닫기",
"Display Language": "표시 언어",
"Display name": "표시 이름",
"Do not check configuration mismatch before replication": "복제 전 구성 불일치 확인 안 함",
@@ -136,33 +223,70 @@
"Enable customization sync": "사용자 설정 동기화 활성화",
"Enable Developers' Debug Tools.": "개발자 디버그 도구 활성화",
"Enable edge case treatment features": "특수 사례 처리 기능 활성화",
"Enable P2P Replicator": "P2P 복제기 활성화",
"Enable poweruser features": "파워 유저 기능 활성화",
"Enable this if your Object Storage doesn't support CORS": "객체 스토리지가 CORS를 지원하지 않는 경우 활성화하세요",
"Enable this option to automatically apply the most recent change to documents even when it conflicts": "이 옵션을 활성화하면 충돌이 있어도 문서에 가장 최근 변경 사항을 자동으로 적용합니다",
"Enabled": "활성화됨",
"Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server. This means that even if someone gains access to the server, they won't be able to read your data without the passphrase. Make sure to remember your passphrase, as it will be required to decrypt your data on other devices.": "종단 간 암호화를 활성화하면 데이터가 원격 서버로 전송되기 전에 기기에서 암호화됩니다. 따라서 누군가 서버에 접근하더라도 패스프레이즈 없이는 데이터를 읽을 수 없습니다. 다른 기기에서 데이터를 복호화할 때 필요하므로 패스프레이즈를 반드시 기억해 두세요.",
"Encrypt contents on the remote database. If you use the plugin's synchronization feature, enabling this is recommended.": "원격 데이터베이스의 내용을 암호화합니다. 플러그인의 동기화 기능을 사용하는 경우 활성화를 권장합니다.",
"Encrypting sensitive configuration items": "민감한 구성 항목 암호화",
"Encryption Algorithm": "암호화 알고리즘",
"Encryption phassphrase. If changed, you should overwrite the server's database with the new (encrypted) files.": "암호화에 사용할 패스프레이즈입니다. 변경한 경우, 새로 암호화된 파일로 서버의 데이터베이스를 덮어써야 합니다.",
"End-to-End Encryption": "종단 간 암호화",
"Endpoint URL": "엔드포인트 URL",
"Enhance chunk size": "청크 크기 확대",
"Enter a folder prefix (optional)": "폴더 접두사를 입력하세요 (선택 사항)",
"Enter Server Information": "서버 정보 입력",
"Enter Setup URI": "Setup URI 입력",
"Enter the server information manually": "서버 정보를 수동으로 입력",
"Enter TURN credential": "TURN 자격 증명을 입력하세요",
"Enter TURN username": "TURN 사용자 이름을 입력하세요",
"Enter your Access Key ID": "액세스 키 ID를 입력하세요",
"Enter your Bucket Name": "버킷 이름을 입력하세요",
"Enter your database name": "데이터베이스 이름을 입력하세요",
"Enter your JWT Key ID": "JWT 키 ID를 입력하세요",
"Enter your JWT secret or private key": "JWT 시크릿 또는 개인 키를 입력하세요",
"Enter your JWT Subject (CouchDB Username)": "JWT 주체(CouchDB 사용자 이름)를 입력하세요",
"Enter your passphrase": "패스프레이즈를 입력하세요",
"Enter your password": "비밀번호를 입력하세요",
"Enter your Region (e.g., us-east-1, auto for R2)": "리전을 입력하세요 (예: us-east-1, R2는 auto)",
"Enter your Secret Access Key": "시크릿 액세스 키를 입력하세요",
"Enter your username": "사용자 이름을 입력하세요",
"Error during connection test: ${reason}": "연결 테스트 중 오류가 발생했습니다: ${reason}",
"Error during testAndFixSettings: ${reason}": "testAndFixSettings 실행 중 오류가 발생했습니다: ${reason}",
"Experimental Settings": "실험적 설정",
"Export": "내보내기",
"Failed to connect to remote for compaction.": "압축 정리를 위해 원격 데이터베이스에 연결하지 못했습니다.",
"Failed to connect to remote for compaction. ${reason}": "압축 정리를 위해 원격 데이터베이스에 연결하지 못했습니다. ${reason}",
"Failed to connect to the server: ${reason}": "서버에 연결하지 못했습니다: ${reason}",
"Failed to connect to the server. Please check your settings.": "서버에 연결하지 못했습니다. 설정을 확인해 주세요.",
"Failed to connect to the signalling relay: ${reason}": "시그널링 중계 서버에 연결하지 못했습니다: ${reason}",
"Failed to create replicator instance.": "복제기 인스턴스를 생성하지 못했습니다.",
"Failed to parse Setup-URI.": "Setup-URI를 해석하지 못했습니다.",
"Failed to start one-shot replication before Garbage Collection. Garbage Collection Cancelled.": "가비지 컬렉션 전에 일회성 복제를 시작하지 못했습니다. 가비지 컬렉션을 취소합니다.",
"Failed to start replication after Garbage Collection.": "가비지 컬렉션 후 복제를 시작하지 못했습니다.",
"Failed:": "실패:",
"Fetch": "가져오기",
"Fetch chunks on demand": "필요 시 청크 원격 가져오기",
"Fetch database with previous behaviour": "이전 동작으로 데이터베이스 가져오기",
"Fetch remote settings": "원격 설정 가져오기",
"FETCHING": "가져오는 중",
"Fetching status...": "상태를 가져오는 중입니다...",
"File integrity": "파일 무결성",
"File to resolve conflict": "충돌을 해결할 파일",
"File to view History": "기록을 볼 파일",
"Filename": "파일명",
"Final Confirmation: Overwrite Server Data with This Device's Files": "최종 확인: 이 기기의 파일로 서버 데이터 덮어쓰기",
"First, please select the option that best describes your current situation.": "먼저 현재 상황에 가장 잘 맞는 항목을 선택해 주세요.",
"Fix": "수정",
"Flag and restart": "표시 후 재시작",
"Flagged Selective": "플래그 지정 선택적",
"Folder Prefix": "폴더 접두사",
"For HS256/HS512 algorithms, provide the shared secret key. For ES256/ES512 algorithms, provide the pkcs8 PEM-formatted private key.": "HS256/HS512 알고리즘에는 공유 시크릿 키를, ES256/ES512 알고리즘에는 pkcs8 PEM 형식의 개인 키를 입력하세요.",
"Forces the file to be synced when opened.": "파일을 열 때 강제로 동기화합니다.",
"Fresh Start Wipe": "초기화 후 새로 시작",
"Furthermore, if conflicts are already present in the server data, they will be synchronised to this device as they are, and you will need to resolve them locally.": "또한 서버 데이터에 이미 충돌이 존재한다면 그 상태 그대로 이 기기에 동기화되므로, 로컬에서 직접 해결해야 합니다.",
"Garbage Collection cancelled by user.": "사용자가 가비지 컬렉션을 취소했습니다.",
"Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.": "가비지 컬렉션이 완료되었습니다. 삭제된 청크: ${deletedChunks} / ${totalChunks}. 소요 시간: ${seconds}초.",
"Garbage Collection Confirmation": "가비지 컬렉션 확인",
@@ -170,15 +294,33 @@
"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}",
"Gathering information...": "정보를 수집하는 중입니다...",
"Generate Random ID": "임의 ID 생성",
"Group ID": "그룹 ID",
"Handle files as Case-Sensitive": "파일을 대소문자 구분으로 처리",
"Have you created a backup before proceeding?": "진행하기 전에 백업을 만드셨나요?",
"Hidden file synchronization have been temporarily disabled. Please enable them after the fetching, if you need them.": "숨김 파일 동기화가 일시적으로 비활성화되었습니다. 필요하다면 가져오기가 끝난 뒤에 다시 활성화해 주세요.",
"Hidden Files": "숨김 파일",
"Hide completely": "완전히 숨기기",
"Hide not applicable items": "해당 없는 항목 숨기기",
"Higher (${local} > ${remote})": "더 높음 (${local} > ${remote})",
"Highlight diff": "차이 강조",
"How to display network errors when the sync server is unreachable.": "동기화 서버에 연결할 수 없을 때 네트워크 오류를 어떻게 표시할지 설정합니다.",
"How would you like to configure the connection to your server?": "서버 연결을 어떻게 구성하시겠습니까?",
"However, This should not be enabled if you want to increase your secrecy more.": "다만 기밀성을 더 높이고 싶다면 이 옵션은 활성화하지 않는 것이 좋습니다.",
"I am adding a device to an existing synchronisation setup": "기존 동기화 구성에 기기를 추가합니다",
"I am setting this up for the first time": "처음으로 설정합니다",
"I am setting up a new server for the first time / I want to reset my existing server.": "새 서버를 처음 설정하거나, 기존 서버를 초기화하려고 합니다.",
"I am unable to create a backup of my Vault.": "보관함을 백업할 수 없습니다.",
"I am unable to create a backup of my Vaults.": "보관함들을 백업할 수 없습니다.",
"I have created a backup of my Vault.": "보관함을 백업했습니다.",
"I know my server details, let me enter them": "서버 정보를 알고 있으니 직접 입력하겠습니다",
"I understand that all changes made on other smartphones or computers possibly could be lost.": "다른 스마트폰이나 컴퓨터에서 변경한 내용이 모두 사라질 수 있다는 점을 이해합니다.",
"I understand that other devices will no longer be able to synchronise, and will need to be reset the synchronisation information.": "다른 기기는 더 이상 동기화할 수 없게 되며, 동기화 정보를 초기화해야 한다는 점을 이해합니다.",
"I understand that this action is irreversible once performed.": "이 작업은 한 번 수행하면 되돌릴 수 없다는 점을 이해합니다.",
"I understand the risks and will proceed without a backup.": "위험을 이해하며 백업 없이 진행하겠습니다.",
"I Understand, Overwrite Server": "이해했습니다, 서버 덮어쓰기",
"If \"Auto Start P2P Connection\" is enabled, the P2P connection will be started automatically when the plug-in launches.": "\"P2P 연결 자동 시작\"이 활성화되어 있으면 플러그인이 시작될 때 P2P 연결이 자동으로 시작됩니다.",
"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개 항목으로 분할됩니다. 하지만 중복 제거 기능이 약간 약해집니다.",
@@ -191,16 +333,38 @@
"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 cannot avoid CORS issues, you might want to try this option. It uses Obsidian's internal API to communicate with the CouchDB server. Not compliant with web standards, but works. Note that this might break in future Obsidian versions.": "CORS 문제를 피할 수 없다면 이 옵션을 시도해 볼 수 있습니다. Obsidian의 내부 API를 사용해 CouchDB 서버와 통신합니다. 웹 표준을 따르지는 않지만 동작합니다. 향후 Obsidian 버전에서 동작하지 않을 수 있다는 점에 유의하세요.",
"If you cannot avoid CORS issues, you might want to try this option. It uses Obsidian's internal API to communicate with the S3 server. Not compliant with web standards, but works. Note that this might break in future Obsidian versions.": "CORS 문제를 피할 수 없다면 이 옵션을 시도해 볼 수 있습니다. Obsidian의 내부 API를 사용해 S3 서버와 통신합니다. 웹 표준을 따르지는 않지만 동작합니다. 향후 Obsidian 버전에서 동작하지 않을 수 있다는 점에 유의하세요.",
"If you have unsynchronised changes in your Vault on this device, they will likely diverge from the server's versions after the reset. This may result in a large number of file conflicts.": "이 기기의 보관함에 동기화되지 않은 변경 사항이 있다면, 초기화 후 서버의 버전과 어긋나기 쉽습니다. 그 결과 많은 파일에서 충돌이 발생할 수 있습니다.",
"If you reached the payload size limit when using IBM Cloudant, please decrease batch size and batch limit to a lower value.": "IBM Cloudant를 사용하다가 페이로드 크기 제한에 도달했다면, 배치 크기와 배치 개수 제한을 더 낮은 값으로 줄여 주세요.",
"If you understand the risks and still wish to proceed, select so.": "위험을 이해하고도 진행하려면 그렇게 선택해 주세요.",
"If you want to store the data in a specific folder within the bucket, you can specify a folder prefix here. Otherwise, leave it blank to store data at the root of the bucket.": "버킷 안의 특정 폴더에 데이터를 저장하려면 여기에 폴더 접두사를 지정할 수 있습니다. 그렇지 않다면 비워 두어 버킷 최상위에 데이터를 저장하세요.",
"If you want to use `LiveSync`, you should broadcast changes. All `watching` peers which detects this will start the replication for fetching.": "`LiveSync`를 사용하려면 변경 사항을 브로드캐스트해야 합니다. 이를 감지한 모든 `watching` 상태의 피어가 가져오기를 위한 복제를 시작합니다.",
"Ignore": "무시",
"Ignore and Proceed": "무시하고 계속",
"Ignore files": "제외 규칙 파일",
"Ignore patterns": "무시 패턴",
"Import connection": "연결 가져오기",
"IMPORTANT": "중요",
"In most cases, you should stick with the default algorithm (${algorithm}), This setting is only required if you have an existing Vault encrypted in a different format.": "대부분의 경우 기본 알고리즘(${algorithm})을 그대로 사용하는 것이 좋습니다. 이 설정은 기존 보관함이 다른 형식으로 암호화되어 있는 경우에만 필요합니다.",
"In this scenario, Self-hosted LiveSync will recreate metadata for every file and deliberately generate conflicts. Where the file content is identical, these conflicts will be resolved automatically.": "이 경우 Self-hosted LiveSync는 모든 파일의 메타데이터를 다시 만들면서 의도적으로 충돌을 발생시킵니다. 파일 내용이 동일한 경우 이러한 충돌은 자동으로 해결됩니다.",
"Incoming:": "수신:",
"Incubate Chunks in Document": "문서 내 청크 임시 보관",
"Initial Action": "초기 작업",
"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)": "간격 (초)",
"INVERTED": "반전됨",
"Issue detection log:": "문제 감지 로그:",
"It is strongly advised to create a backup before proceeding. Continuing without a backup may lead to data loss.": "진행하기 전에 백업을 만드시기를 강력히 권장합니다. 백업 없이 진행하면 데이터가 손실될 수 있습니다.",
"Just for a minute, please!": "잠시만 기다려 주세요!",
"JWT (JSON Web Token) authentication allows you to securely authenticate with the CouchDB server using tokens. Ensure that your CouchDB server is configured to accept JWTs and that the provided key and settings match the server's configuration. Incidentally, I have not verified it very thoroughly.": "JWT(JSON Web Token) 인증을 사용하면 토큰으로 CouchDB 서버에 안전하게 인증할 수 있습니다. CouchDB 서버가 JWT를 받아들이도록 설정되어 있는지, 그리고 입력한 키와 설정이 서버 구성과 일치하는지 확인해 주세요. 참고로 이 기능은 그리 철저하게 검증되지는 않았습니다.",
"JWT Algorithm": "JWT 알고리즘",
"JWT Expiration Duration (minutes)": "JWT 만료 시간(분)",
"JWT Key": "JWT 키",
"JWT Key ID (kid)": "JWT 키 ID (kid)",
"JWT Subject (sub)": "JWT 주체 (sub)",
"K.exp": "실험 기능",
"K.long_p2p_sync": "%{title_p2p_sync} (%{exp})",
"K.P2P": "%{Peer}-to-%{Peer}",
@@ -222,6 +386,7 @@
"lang-zh-tw": "繁體中文",
"Later": "나중에",
"Limit: {datetime} ({timestamp})": "제한: {datetime} ({timestamp})",
"live": "실시간",
"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": "더 낮은 값으로 복제할 수 없습니다.",
@@ -250,6 +415,7 @@
"liveSyncSetting.valueShouldBeInRange": "값은 ${min} < 값 < ${max} 범위에 있어야 합니다",
"liveSyncSettings.btnApply": "적용",
"Local Database Tweak": "로컬 데이터베이스 조정",
"Local only": "로컬에만 있음",
"Lock": "잠금",
"Lock Server": "서버 잠금",
"Lock the remote server to prevent synchronization with other devices.": "다른 기기와의 동기화를 방지하기 위해 원격 서버를 잠급니다.",
@@ -258,6 +424,9 @@
"logPane.pause": "일시 정지",
"logPane.title": "Self-hosted LiveSync 로그",
"logPane.wrap": "줄 바꿈",
"Lower (${local} < ${remote})": "더 낮음 (${local} < ${remote})",
"Maintenance Commands": "유지보수 명령",
"Maintenance mode": "유지보수 모드",
"Maximum delay for batch database updating": "일괄 데이터베이스 업데이트 최대 지연",
"Maximum file size": "최대 파일 크기",
"Maximum Incubating Chunk Size": "임시 보관 청크의 최대 크기",
@@ -270,6 +439,7 @@
"Merge": "병합",
"Minimum delay for batch database updating": "일괄 데이터베이스 업데이트 최소 지연",
"Minimum interval for syncing": "동기화 최소 간격",
"Mixed": "혼합",
"moduleCheckRemoteSize.logCheckingStorageSizes": "스토리지 크기 확인 중",
"moduleCheckRemoteSize.logCurrentStorageSize": "원격 스토리지 크기: ${measuredSize}",
"moduleCheckRemoteSize.logExceededWarning": "원격 스토리지 크기: ${measuredSize}이(가) ${notifySize}을(를) 초과했습니다",
@@ -352,23 +522,39 @@
"moduleMigration.titleWelcome": "Self-hosted LiveSync에 오신 것을 환영합니다",
"moduleObsidianMenu.replicate": "복제",
"More actions": "추가 작업",
"Mostly Complete: Decision Required": "거의 완료: 결정이 필요합니다",
"Move remotely deleted files to the trash, instead of deleting.": "원격에서 삭제된 파일을 삭제하는 대신 휴지통으로 이동합니다.",
"My remote server is already set up. I want to join this device.": "원격 서버가 이미 설정되어 있습니다. 이 기기를 참여시키고 싶습니다.",
"Name": "이름",
"Network warning style": "네트워크 경고 표시 방식",
"NEW": "신규",
"New Remote": "새 원격",
"Newer (${diff})": "더 새로움 (${diff})",
"No checks have been performed yet.": "아직 검사를 수행하지 않았습니다.",
"No connected device information found. Cancelling Garbage Collection.": "연결된 기기 정보를 찾을 수 없습니다. 가비지 컬렉션을 취소합니다.",
"No Connection": "연결 없음",
"No devices available. Waiting for other devices to connect...": "사용 가능한 기기가 없습니다. 다른 기기가 연결되기를 기다리는 중입니다...",
"No Items.": "항목이 없습니다.",
"No limit configured": "제한이 설정되지 않음",
"NO PREVIEW": "미리 보기 없음",
"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.": "모든 메시지가 번역되지 않았습니다. 오류 신고 시 \"기본값\"으로 되돌려 주세요.",
"Not configured": "구성되지 않음",
"Not now": "나중에",
"Note that the Group ID is not limited to the generated format; you can use any string as the Group ID.": "그룹 ID는 생성된 형식으로 제한되지 않으며, 어떤 문자열이든 그룹 ID로 사용할 수 있습니다.",
"Note that you can generate a new Setup URI by running the \"Copy settings as a new Setup URI\" command in the command palette.": "명령 팔레트에서 \"Copy settings as a new Setup URI\" 명령을 실행하면 새 Setup URI를 생성할 수 있습니다.",
"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 changes to sync at a time. Defaults to 50. Minimum is 2.": "한 번에 동기화할 변경 사항의 수입니다. 기본값은 50입니다. 최소값은 2입니다.",
"Obfuscate Properties": "속성 난독화",
"Obfuscating properties (e.g., path of file, size, creation and modification dates) adds an additional layer of security by making it harder to identify the structure and names of your files and folders on the remote server. This helps protect your privacy and makes it more difficult for unauthorized users to infer information about your data.": "속성(예: 파일 경로, 크기, 생성 및 수정 날짜)을 난독화하면 원격 서버에서 파일과 폴더의 구조 및 이름을 파악하기 어려워져 보안이 한층 강화됩니다. 이는 개인 정보를 보호하는 데 도움이 되며, 권한 없는 사용자가 데이터에 대한 정보를 추측하기 어렵게 만듭니다.",
"Obsidian version": "Obsidian 버전",
"obsidianLiveSyncSettingTab.btnApply": "적용",
"obsidianLiveSyncSettingTab.btnCheck": "확인",
@@ -541,16 +727,29 @@
"obsidianLiveSyncSettingTab.titleUpdateThinning": "업데이트 솎아내기",
"obsidianLiveSyncSettingTab.warnCorsOriginUnmatched": "⚠ CORS 출처가 일치하지 않습니다 ${from}->${to}",
"obsidianLiveSyncSettingTab.warnNoAdmin": "⚠ 관리자 권한이 없습니다.",
"Of course, we can back up the data before proceeding.": "물론 진행하기 전에 데이터를 백업할 수 있습니다.",
"Off": "꺼짐",
"Ok": "확인",
"Old Algorithm": "이전 알고리즘",
"Older (${diff})": "더 오래됨 (${diff})",
"Older fallback (Slow, W/O WebAssembly)": "이전 대체 방식 (느림, WebAssembly 없음)",
"On": "켜짐",
"On the source device, from the command palette, run the 'Show settings as a QR code' command.": "원본 기기에서 명령 팔레트를 열고 'Show settings as a QR code' 명령을 실행합니다.",
"On the source device, open Obsidian.": "원본 기기에서 Obsidian을 엽니다.",
"On this device, please keep this Vault open.": "이 기기에서는 이 보관함을 계속 열어 두세요.",
"On this device, switch to the camera app or use a QR code scanner to scan the displayed QR code.": "이 기기에서 카메라 앱으로 전환하거나 QR 코드 스캐너를 사용해 화면에 표시된 QR 코드를 스캔합니다.",
"Open": "열기",
"Open connection": "연결 열기",
"Open P2P Setup...": "P2P 설정 열기...",
"Open the dialog": "대화상자 열기",
"Other files": "기타 파일",
"Overwrite": "덮어쓰기",
"Overwrite patterns": "덮어쓰기 패턴",
"Overwrite remote": "원격 덮어쓰기",
"Overwrite remote with local DB and passphrase.": "로컬 DB와 패스프레이즈로 원격을 덮어씁니다.",
"Overwrite Server Data with This Device's Files": "이 기기의 파일로 서버 데이터를 덮어쓰기",
"P2P Configuration": "P2P 구성",
"P2P Status": "P2P 상태",
"P2P.AskPassphraseForDecrypt": "원격 피어가 구성을 공유했습니다. 구성을 복호화하려면 패스프레이즈를 입력해 주세요.",
"P2P.AskPassphraseForShare": "원격 피어가 이 기기의 구성을 요청했습니다. 구성을 공유하려면 패스프레이즈를 입력해 주세요. 이 대화상자를 취소하여 요청을 무시할 수 있습니다.",
"P2P.DisabledButNeed": "%{title_p2p_sync}가 비활성화되어 있습니다. 정말로 활성화하시겠습니까?",
@@ -574,36 +773,59 @@
"paneMaintenance.remoteLockedResolvedDevice": "원격 데이터베이스가 잠겨 있지만 이 기기는 이미 승인되었습니다.",
"paneMaintenance.unlockDatabaseReady": "데이터베이스 잠금 해제",
"Passphrase": "패스프레이즈",
"Passphrase is required.": "패스프레이즈가 필요합니다.",
"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": "경로",
"Path Obfuscation": "경로 난독화",
"Patterns to match files for overwriting instead of merging": "병합 대신 덮어쓸 파일을 판별하는 패턴",
"Patterns to match files for syncing": "동기화할 파일을 판별하는 패턴",
"Peer ID:": "피어 ID:",
"Peer to Peer Replicator": "Peer to Peer 복제기",
"Peer-to-Peer only": "Peer-to-Peer 전용",
"Peer-to-Peer Synchronisation": "피어 투 피어(P2P) 동기화",
"Peers": "피어",
"Per-file-saved customization sync": "파일별 저장 사용자 설정 동기화",
"Perform": "실행",
"Perform cleanup": "정리 실행",
"Perform Garbage Collection": "가비지 컬렉션 실행",
"Perform Garbage Collection to remove unused chunks and reduce database size.": "사용하지 않는 청크를 제거하고 데이터베이스 크기를 줄이기 위해 가비지 컬렉션을 실행합니다.",
"Periodic Sync interval": "주기적 동기화 간격",
"PERMANENT": "영구",
"Pick a file to resolve conflict": "충돌을 해결할 파일 선택",
"Pick a file to show history": "기록을 표시할 파일 선택",
"Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences. This is a security measure designed to protect your data.": "종단 간 암호화 패스프레이즈는 동기화가 실제로 시작되기 전까지 검증되지 않는다는 점에 유의해 주세요. 이는 데이터를 보호하기 위한 보안 조치입니다.",
"Please configure your end-to-end encryption settings.": "종단 간 암호화 설정을 구성해 주세요.",
"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 enter the CouchDB server information below.": "아래에 CouchDB 서버 정보를 입력해 주세요.",
"Please enter the details required to connect to your S3/MinIO/R2 compatible object storage service.": "S3/MinIO/R2 호환 오브젝트 스토리지 서비스에 연결하는 데 필요한 정보를 입력해 주세요.",
"Please enter the Peer-to-Peer Synchronisation information below.": "아래에 Peer-to-Peer 동기화 정보를 입력해 주세요.",
"Please enter the Setup URI that was generated during server installation or on another device, along with the vault passphrase.": "서버 설치 과정이나 다른 기기에서 생성된 Setup URI를 보관함 패스프레이즈와 함께 입력해 주세요.",
"Please follow the steps below to import settings from your existing device.": "기존 기기에서 설정을 가져오려면 아래 단계를 따라 주세요.",
"PLEASE NOTE": "유의 사항",
"Please select 'Cancel' explicitly to cancel this operation.": "이 작업을 취소하려면 반드시 \"취소\"를 명시적으로 선택해 주세요.",
"Please select a method to import the settings from another device.": "다른 기기에서 설정을 가져올 방법을 선택해 주세요.",
"Please select an active P2P remote configuration to change P2P sync targets.": "P2P 동기화 대상을 변경하려면 활성 P2P 원격 구성을 선택해 주세요.",
"Please select an option to proceed": "계속하려면 항목을 선택해 주세요",
"Please select the button below to restart and proceed to the data fetching confirmation.": "아래 버튼을 선택하면 재시작 후 데이터 가져오기 확인 단계로 진행합니다.",
"Please select the button below to restart and proceed to the final confirmation.": "아래 버튼을 선택하면 재시작 후 최종 확인 단계로 진행합니다.",
"Please select the type of server to which you are connecting.": "연결할 서버 유형을 선택해 주세요.",
"Please select your situation.": "현재 상황을 선택해 주세요.",
"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 understand that this is intended behaviour.": "이는 의도된 동작이라는 점을 이해해 주세요.",
"Plug-in version": "플러그인 버전",
"Plugins": "플러그인",
"Prepare the 'report' to create an issue": "이슈 생성을 위한 '보고서' 준비",
"Presets": "프리셋",
"Prevent fetching configuration from server": "서버에서 구성 가져오기 방지",
"Proceed": "진행",
"Proceed Garbage Collection": "가비지 컬렉션 계속",
"Proceed to the next step.": "다음 단계로 진행합니다.",
"Proceed with Setup URI": "Setup URI로 계속",
"Proceeding with Garbage Collection, ignoring missing nodes.": "누락된 노드를 무시하고 가비지 컬렉션을 계속 진행합니다.",
"Proceeding with Garbage Collection.": "가비지 컬렉션을 진행합니다.",
@@ -629,15 +851,22 @@
"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": "디스크 변경 사항이 데이터베이스에 반영되는 빈도를 줄입니다",
"Refresh": "새로 고침",
"Region": "지역",
"Relay settings": "중계 서버 설정",
"Reload": "다시 불러오기",
"Remediation": "복구 조치",
"Remediation Setting Changed": "복구 설정이 변경됨",
"Remote Database Tweak (In sunset)": "원격 데이터베이스 조정 (폐기 예정)",
"Remote Databases": "원격 데이터베이스",
"Remote name": "원격 이름",
"Remote only": "원격에만 있음",
"Remote server type": "원격 서버 유형",
"Remote Type": "원격 유형",
"Rename": "이름 바꾸기",
"Replicate now": "지금 복제",
"Replicating": "복제 중",
"Replicating...": "복제 중입니다...",
"Replicator.Dialogue.Locked.Action.Dismiss": "재확인을 위해 취소",
"Replicator.Dialogue.Locked.Action.Fetch": "이 기기의 동기화 재설정",
"Replicator.Dialogue.Locked.Action.Unlock": "원격 데이터베이스 잠금 해제",
@@ -660,6 +889,7 @@
"Reset": "재설정",
"Reset all": "모두 재설정",
"Reset all journal counter": "모든 저널 카운터 재설정",
"Reset and Resume Synchronisation": "동기화 초기화 후 재개",
"Reset journal received history": "저널 수신 기록 재설정",
"Reset journal sent history": "저널 송신 기록 재설정",
"Reset notification threshold and check the remote database usage": "알림 임계값을 초기화하고 원격 데이터베이스 사용량 확인",
@@ -672,14 +902,26 @@
"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 and Fetch Data": "재시작 후 데이터 가져오기",
"Restart and Initialise Server": "재시작 후 서버 초기화",
"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.": "원격에서 로컬 데이터베이스를 복원하거나 재구축합니다.",
"Rev": "리비전",
"Revert changes": "변경 사항 되돌리기",
"Revoke": "철회",
"Room ID": "룸 ID",
"Room ID suffix:": "룸 ID 접미사:",
"Run Doctor": "진단 실행",
"S3/MinIO/R2 Configuration": "S3/MinIO/R2 구성",
"S3/MinIO/R2 Object Storage": "S3/MinIO/R2 객체 스토리지",
"Same": "동일",
"Same or local only": "동일하거나 로컬에만 있음",
"Save and Apply": "저장 후 적용",
"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": "변경 사항 검사",
"Scan changes on customization sync": "사용자 설정 동기화 시 변경 사항 검색",
"Scan customization automatically": "사용자 설정 자동 검색",
"Scan customization before replicating.": "복제하기 전에 사용자 설정을 검색합니다.",
@@ -688,17 +930,28 @@
"Scan for Broken files": "손상된 파일 검사",
"Scan for hidden files before replication": "복제 전 숨김 파일 검사",
"Scan hidden files periodically": "주기적으로 숨김 파일 검사",
"Scan QR Code": "QR 코드 스캔",
"Scan the QR code displayed on an active device using this device's camera.": "이 기기의 카메라로 사용 중인 기기에 표시된 QR 코드를 스캔하세요.",
"Schedule and Restart": "예약 후 재시작",
"Scram Switches": "긴급 정지 스위치",
"Scram!": "긴급 정지",
"Seconds, 0 to disable": "초 단위, 0으로 설정하면 비활성화",
"Seconds. Saving to the local database will be delayed until this value after we stop typing or saving.": "초 단위입니다. 타이핑이나 저장을 중단한 후 이 시간동안 로컬 데이터베이스 저장이 지연됩니다.",
"Secret Access Key": "시크릿 액세스 키",
"Secret Key": "시크릿 키",
"Select active P2P remote": "활성 P2P 원격 선택",
"Select All Shiny": "새 항목 모두 선택",
"Select Flagged Shiny": "플래그된 새 항목 선택",
"Select P2P remote...": "P2P 원격 선택...",
"Select the database adapter to use.": "사용할 데이터베이스 어댑터를 선택합니다.",
"Selecting this option will result in the current data on this device being used to initialise the server. Any existing data on the server will be completely overwritten.": "이 옵션을 선택하면 이 기기의 현재 데이터로 서버를 초기화합니다. 서버에 있는 기존 데이터는 모두 완전히 덮어써집니다.",
"Selecting this option will result in this device joining the existing server. You need to fetching the existing synchronisation data from the server to this device.": "이 옵션을 선택하면 이 기기가 기존 서버에 참여합니다. 서버에 있는 기존 동기화 데이터를 이 기기로 가져와야 합니다.",
"Selective": "선택적",
"Send": "보내기",
"Send chunks": "청크 보내기",
"SENDING": "전송 중",
"Server URI": "서버 URI",
"SESSION": "세션",
"Setting.GenerateKeyPair.Desc": "키 페어를 생성했습니다!\n\n참고: 이 키 페어는 다시 표시되지 않습니다. 안전한 곳에 저장해 주세요. 분실하면 새 키 페어를 생성해야 합니다.\n참고 2: 공개 키는 spki 형식이고, 개인 키는 pkcs8 형식입니다. 편의를 위해 공개 키의 줄 바꿈은 `\\n`으로 변환됩니다.\n참고 3: 공개 키는 원격 데이터베이스에, 개인 키는 로컬 기기에 설정해야 합니다.\n\n>[!FOR YOUR EYES ONLY]-\n> <div class=\"sls-keypair\">\n>\n> ### 공개 키\n> ```\n${public_key}\n> ```\n>\n> ### 개인 키\n> ```\n${private_key}\n> ```\n>\n> </div>\n\n>[!Both for copying]-\n>\n> <div class=\"sls-keypair\">\n>\n> ```\n${public_key}\n${private_key}\n> ```\n>\n> </div>\n\n",
"Setting.GenerateKeyPair.Title": "새 키 페어가 생성되었습니다!",
"Setting.TroubleShooting": "문제 해결",
@@ -707,7 +960,10 @@
"Setting.TroubleShooting.ScanBrokenFiles": "손상된 파일 검사",
"Setting.TroubleShooting.ScanBrokenFiles.Desc": "데이터베이스에 올바르게 저장되지 않은 파일을 검사합니다.",
"SettingTab.Message.AskRebuild": "변경 사항을 적용하려면 원격 데이터베이스에서 가져와야 합니다. 계속 진행하시겠습니까?",
"Setup Complete: Preparing to Fetch Synchronisation Data": "설정 완료: 동기화 데이터를 가져올 준비 중",
"Setup Complete: Preparing to Initialise Server": "설정 완료: 서버를 초기화할 준비 중",
"Setup URI dialog cancelled.": "Setup URI 대화 상자가 취소되었습니다.",
"Setup-URI": "Setup-URI",
"Setup.Apply.Buttons.ApplyAndFetch": "적용 후 가져오기",
"Setup.Apply.Buttons.ApplyAndMerge": "적용 후 병합",
"Setup.Apply.Buttons.ApplyAndRebuild": "적용 후 재구축",
@@ -777,16 +1033,29 @@
"Show status inside the editor": "편집기 내부에 상태 표시",
"Show status on the status bar": "상태 표시줄에 상태 표시",
"Show verbose log. Please enable if you report an issue.": "자세한 로그를 표시합니다. 문제를 신고하는 경우 활성화해 주세요.",
"Signaling Server Connection": "시그널링 서버 연결",
"Signalling Status": "시그널링 상태",
"Skip and close": "건너뛰고 닫기",
"Snippets": "스니펫",
"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이는 일부 기기가 동기화를 완료하지 않았음을 의미할 수 있으며, 충돌로 이어질 수 있습니다. 계속 진행하기 전에 모든 기기가 동기화되었는지 반드시 확인하는 것을 강력히 권장합니다.",
"Start Broadcasting": "브로드캐스트 시작",
"Start change-broadcasting on Connect": "연결 시 변경 사항 브로드캐스트 시작",
"Start Sync & Close": "동기화 시작 후 닫기",
"Starts synchronisation when a file is saved.": "파일이 저장될 때 동기화를 시작합니다.",
"Stat": "상태",
"Stats": "통계",
"Stop ⚡": "중지 ⚡",
"Stop Broadcasting": "브로드캐스트 중지",
"Stop reflecting database changes to storage files.": "데이터베이스 변경 사항을 스토리지 파일에 반영하는 것을 중단합니다.",
"Stop watching for file changes.": "파일 변경 사항 감시를 중단합니다.",
"Storage -> Database": "스토리지 -> 데이터베이스",
"Strongly Recommended": "적극 권장",
"Suppress notification of hidden files change": "숨김 파일 변경 알림 억제",
"Suspend database reflecting": "데이터베이스 반영 일시 중단",
"Suspend file watching": "파일 감시 일시 중단",
"Switch to IDB": "IDB로 전환",
"Switch to IndexedDB": "IndexedDB로 전환",
"Sync": "동기화",
"Sync after merging file": "파일 병합 후 동기화",
"Sync automatically after merging files": "파일 병합 후 자동으로 동기화",
"Sync Mode": "동기화 모드",
@@ -794,25 +1063,56 @@
"Sync on File Open": "파일 열기 시 동기화",
"Sync on Save": "저장 시 동기화",
"Sync on Startup": "시작 시 동기화",
"Sync once": "한 번 동기화",
"Synchronisation utilising journal files. You must have set up an S3/MinIO/R2 compatible object storage.": "저널 파일을 활용하는 동기화 방식입니다. S3/MinIO/R2 호환 객체 스토리지를 미리 구성해 두어야 합니다.",
"Synchronising files": "동기화할 파일",
"Syncing": "동기화",
"Syncing...": "동기화 중입니다...",
"Target patterns": "대상 패턴",
"Test Settings and Continue": "설정 테스트 후 계속",
"Testing only - Resolve file conflicts by syncing newer copies of the file, this can overwrite modified files. Be Warned.": "테스트 전용 - 파일의 새로운 사본을 동기화하여 파일 충돌을 해결하며, 수정된 파일을 덮어쓸 수 있습니다. 주의하세요.",
"The connection to the server has been configured successfully. As the next step,": "서버 연결이 성공적으로 구성되었습니다. 다음 단계로,",
"The delay for consecutive on-demand fetches": "연속 청크 요청 간 대기 시간",
"The files in this Vault are almost identical to the server's.": "이 보관함의 파일은 서버의 파일과 거의 동일합니다.",
"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 Group ID and passphrase are used to identify your group of devices. Make sure to use the same Group ID and passphrase on all devices you want to synchronise.": "그룹 ID와 패스프레이즈는 기기 그룹을 식별하는 데 사용됩니다. 동기화하려는 모든 기기에서 동일한 그룹 ID와 패스프레이즈를 사용해야 합니다.",
"The Hash algorithm for chunk IDs": "청크 ID용 해시 알고리즘",
"The IndexedDB adapter often offers superior performance in certain scenarios, but it has been found to cause memory leaks when used with LiveSync mode. When using LiveSync mode, please use IDB adapter instead.": "IndexedDB 어댑터는 특정 상황에서 더 나은 성능을 보이는 경우가 많지만, LiveSync 모드에서 사용하면 메모리 누수를 일으키는 것으로 확인되었습니다. LiveSync 모드를 사용할 때는 IDB 어댑터를 사용해 주세요.",
"the latest synchronisation data will be downloaded from the server to this device.": "서버의 최신 동기화 데이터를 이 기기로 내려받습니다.",
"the local database, that is to say the synchronisation information, must be reconstituted.": "로컬 데이터베이스, 즉 동기화 정보를 다시 구성해야 합니다.",
"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.": "이벤트 발생 시 자동 동기화의 최소 간격입니다.",
"The remote is already set up, and the configuration is compatible (or got compatible by this operation).": "원격은 이미 설정되어 있으며, 구성도 호환됩니다(또는 이번 작업으로 호환되었습니다).",
"The Setup-URI does not appear to be valid. Please check that you have copied it correctly.": "Setup-URI가 유효하지 않은 것으로 보입니다. 올바르게 복사했는지 확인해 주세요.",
"The Setup-URI is valid and ready to use.": "Setup-URI가 유효하며 사용할 준비가 되었습니다.",
"the single, authoritative master copy": "유일하고 확실한 원본이 됩니다",
"the synchronisation data on the server will be built based on the current data on this device.": "이 기기의 현재 데이터를 바탕으로 서버의 동기화 데이터를 구축합니다.",
"Themes": "테마",
"There is a way to resolve this on other devices.": "다른 기기에서 이를 해결할 방법이 있습니다.",
"There may be differences between the files in this Vault and the server.": "이 보관함의 파일과 서버의 파일 사이에 차이가 있을 수 있습니다.",
"Therefore, we ask that you exercise extreme caution when configuring server information manually. If an incorrect passphrase is entered, the data on the server will become corrupted.": "따라서 서버 정보를 수동으로 구성할 때에는 각별히 주의해 주시기 바랍니다. 잘못된 패스프레이즈를 입력하면 서버의 데이터가 손상됩니다.",
"This can isolate your connections between devices. Use the same Room ID for the same devices.": "이를 통해 기기 간 연결을 서로 격리할 수 있습니다. 같은 기기들끼리는 동일한 룸 ID를 사용하세요.",
"This device": "이 기기",
"This device name": "이 기기의 이름",
"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 an extremely powerful operation. We strongly recommend that you copy your Vault folder to a safe location.": "이는 매우 강력한 작업입니다. 보관함 폴더를 안전한 위치에 복사해 두시기를 강력히 권장합니다.",
"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 password is used to encrypt the connection. Use something long enough.": "이 비밀번호는 연결을 암호화하는 데 사용됩니다. 충분히 긴 값을 사용하세요.",
"This procedure will first delete all existing synchronisation data from the server. Following this, the server data will be completely rebuilt, using the current state of your Vault on this device (including its local database) as": "이 절차는 먼저 서버에서 기존 동기화 데이터를 모두 삭제합니다. 그다음 이 기기에 있는 보관함의 현재 상태(로컬 데이터베이스 포함)를 바탕으로 서버 데이터를 완전히 재구축합니다. 즉, 이 기기의 데이터가",
"This setting must be the same even when connecting to multiple synchronisation destinations.": "이 설정은 여러 동기화 대상에 연결하는 경우에도 동일해야 합니다.",
"This Vault is empty, or contains only new files that are not on the server.": "이 보관함은 비어 있거나, 서버에 없는 새 파일만 포함하고 있습니다.",
"This will rebuild the local database on this device using the most recent data from the server. This action is designed to resolve synchronisation inconsistencies and restore correct functionality.": "서버의 최신 데이터를 사용해 이 기기의 로컬 데이터베이스를 재구축합니다. 이 작업은 동기화 불일치를 해결하고 정상적인 동작을 복구하기 위한 것입니다.",
"This will recreate chunks for all files. If there were missing chunks, this may fix the errors.": "모든 파일의 청크를 다시 생성합니다. 누락된 청크가 있었다면 이 작업으로 오류가 해결될 수 있습니다.",
"To minimise the creation of new conflicts": "새로운 충돌 발생을 최소화하기 위해",
"Transfer Tweak": "전송 조정",
"TURN Credential": "TURN 자격 증명",
"TURN server settings are only necessary if you are behind a strict NAT or firewall that prevents direct P2P connections. In most cases, you can leave these fields blank.": "TURN 서버 설정은 직접적인 P2P 연결을 막는 엄격한 NAT나 방화벽 뒤에 있는 경우에만 필요합니다. 대부분의 경우 이 항목들은 비워 두어도 됩니다.",
"TURN Server URLs (comma-separated)": "TURN 서버 URL (쉼표로 구분)",
"TURN Username": "TURN 사용자 이름",
"TweakMismatchResolve.Action.DisableAutoAcceptCompatible": "자동 수용 비활성화",
"TweakMismatchResolve.Action.Dismiss": "무시",
"TweakMismatchResolve.Action.EnableAutoAcceptCompatible": "자동 수용 활성화",
@@ -1105,21 +1405,36 @@
"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.": "모든 동기화된 기기 간 고유 이름입니다. 이 설정을 편집하려면 사용자 설정 동기화를 한 번 비활성화해 주세요.",
"Unless you are certain, selecting this options is bit dangerous. It assumes that the server configuration is compatible with this device. If this is not the case, data loss may occur. Please ensure you know what you are doing.": "확신이 없다면 이 옵션을 선택하는 것은 다소 위험합니다. 이 옵션은 서버 구성이 이 기기와 호환된다고 가정합니다. 그렇지 않은 경우 데이터가 손실될 수 있습니다. 무엇을 하려는지 충분히 이해한 상태에서 진행해 주세요.",
"Updating list...": "목록을 갱신하는 중입니다...",
"URL": "URL",
"Use a custom passphrase": "사용자 지정 패스프레이즈 사용",
"Use a Setup URI (Recommended)": "Setup URI 사용(권장)",
"Use Custom HTTP Handler": "커스텀 HTTP 핸들러 사용",
"Use Diagnostic RTCPeerConnection for statistics": "통계에 진단용 RTCPeerConnection 사용",
"Use dynamic iteration count": "동적 반복 횟수 사용",
"Use internal API": "내부 API 사용",
"Use Internal API": "내부 API 사용",
"Use JWT Authentication": "JWT 인증 사용",
"Use Path-Style Access": "경로 방식(Path-Style) 접근 사용",
"Use Random Number": "임의의 숫자 사용",
"Use Segmented-splitter": "의미 기반 분할 사용",
"Use splitting-limit-capped chunk splitter": "분할 제한 상한 청크 분할기 사용",
"Use the trash bin": "휴지통 사용",
"Use timeouts instead of heartbeats": "하트비트 대신 타임아웃 사용",
"Use vrtmrz's relay": "vrtmrz의 중계 서버 사용",
"username": "사용자명",
"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.": "경고! 이는 성능에 심각한 영향을 미칩니다. 로그는 기본 이름으로 동기화되지 않습니다. 로그에는 종종 기밀 정보가 포함되어 있으므로 주의해 주세요.",
"WATCHING": "감시 중",
"We can not use \"/\" to the device name": "기기 이름에는 \"/\"를 사용할 수 없습니다",
"We can use only Secure (HTTPS) connections on Obsidian Mobile.": "Obsidian 모바일에서는 보안(HTTPS) 연결만 사용할 수 있습니다.",
"We cannot change the device name while this feature is enabled. Please disable this feature to change the device name.": "이 기능이 활성화되어 있는 동안에는 기기 이름을 변경할 수 없습니다. 기기 이름을 변경하려면 이 기능을 비활성화하세요.",
"We have to configure the device name": "기기 이름을 설정해야 합니다",
"We recommend that you copy your Vault folder to a safe location. This will provide a safeguard in case a large number of conflicts arise, or if you accidentally synchronise with an incorrect destination.": "보관함 폴더를 안전한 위치에 복사해 두시기를 권장합니다. 충돌이 대량으로 발생하거나 실수로 잘못된 대상과 동기화한 경우에 대비할 수 있습니다.",
"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에 오신 것을 환영합니다",
@@ -1130,5 +1445,8 @@
"xxhash64 (Fastest)": "xxhash64 (가장 빠름)",
"Yes, I want to add this device to my existing synchronisation": "예, 이 기기를 기존 동기화 구성에 추가하겠습니다",
"Yes, I want to set up a new synchronisation": "예, 새 동기화를 설정하겠습니다",
"You are adding this device to an existing synchronisation setup.": "이 기기를 기존 동기화 구성에 추가합니다."
"You are adding this device to an existing synchronisation setup.": "이 기기를 기존 동기화 구성에 추가합니다.",
"You can configure in the Obsidian Plugin Settings.": "Obsidian 플러그인 설정에서 구성할 수 있습니다.",
"You should create a new synchronisation destination and rebuild your data there.": "새로운 동기화 대상을 만들고 그곳에서 데이터를 재구축해야 합니다.",
"You should perform this operation only in exceptional circumstances, such as when the server data is completely corrupted, when changes on all other devices are no longer needed, or when the database size has become unusually large in comparison to the Vault size.": "이 작업은 서버 데이터가 완전히 손상된 경우, 다른 모든 기기의 변경 사항이 더 이상 필요하지 않은 경우, 또는 데이터베이스 크기가 보관함 크기에 비해 비정상적으로 커진 경우처럼 예외적인 상황에서만 수행해야 합니다."
}

View File

@@ -1,34 +1,79 @@
", please select the option that best describes the current state of your Vault. The application will then check your files in the most appropriate way based on your selection.": ", 이 보관함의 현재 상태를 가장 잘 설명하는 옵션을 선택해 주세요. 선택하신 내용에 따라 가장 적절한 방식으로 파일을 확인합니다."
(Active): (활성)
(BETA) Always overwrite with a newer file: (베타) 항상 새로운 파일로 덮어쓰기
(Beta) Use ignore files: (베타) 제외 규칙 파일 사용
(Days passed, 0 to disable automatic-deletion): (지난 일수, 0으로 설정하면 자동 삭제 비활성화)
(e.g., after editing many files whilst offline): "(예: 오프라인 상태에서 많은 파일을 편집한 뒤)"
(e.g., immediately after restoring on another computer, or having recovered from a backup): "(예: 다른 컴퓨터에서 복원한 직후이거나 백업에서 복구한 경우)"
(e.g., setting up for the first time on a new smartphone, starting from a clean slate): "(예: 새 스마트폰에서 처음 설정하여 빈 상태에서 시작하는 경우)"
(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): (백만 자 단위)
(Missing): (없음)
(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를 처음 사용하며 처음부터 설정하려는 경우에 적합합니다.
"↑: Overwrite Remote": "↑: 원격 덮어쓰기"
"↓: Overwrite Local": "↓: 로컬 덮어쓰기"
"⇅: Use newer": "⇅: 더 새로운 쪽 사용"
+1 week: +1주
"> [!INFO]- The connected devices have been detected as follows:\n${devices}": |-
> [!INFO]- 다음 연결된 기기가 감지되었습니다:
${devices}
⚠️ Important Notice: ⚠️ 중요 안내
⚠️ Please Confirm the Following: ⚠️ 다음 내용을 확인해 주세요
✔ SELECT: ✔ 선택
✔ SYNC: ✔ 동기화
✔ WATCH: ✔ 감시
📡 Off: 📡 꺼짐
📡 On: 📡 켜짐
🔴 Disconnected: 🔴 연결 끊김
🕵️ Diag: 🕵️ 진단
🗑 Delete: 🗑 삭제
🟢 Connected: 🟢 연결됨
${count} issue(s) detected!: ${count}개의 문제가 감지되었습니다!
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를 생성했다면, 이를 사용해 간단하고 안전하게 구성할 수 있습니다.
Accept: 수락
Accept in session: 이 세션에서만 수락
ACCEPTED: 수락됨
ACCEPTED (in session): 수락됨 (이 세션에서만)
Access Key: 액세스 키
Access Key ID: 액세스 키 ID
Action: 작업
Activate: 활성화
Active Remote Configuration: 활성 원격 구성
Add default patterns: 기본 패턴 추가
Add new connection: 연결 추가
AddOn Module (ConfigSync) has not been loaded. This is very unexpected situation. Please report this issue.: 애드온 모듈(ConfigSync)이 로드되지 않았습니다. 매우 예기치 못한 상황입니다. 이 문제를 신고해 주세요.
AddOn Module (HiddenFileSync) has not been loaded. This is very unexpected situation. Please report this issue.: 애드온 모듈(HiddenFileSync)이 로드되지 않았습니다. 매우 예기치 못한 상황입니다. 이 문제를 신고해 주세요.
Advanced: 고급
Advanced Settings: 고급 설정
After restarting, the data on this device will be uploaded to the server as the 'master copy'. Please be aware that any unintended data currently on the server will be completely overwritten.: 재시작하면 이 기기의 데이터가 '원본'으로서 서버에 업로드됩니다. 현재 서버에 있는 의도치 않은 데이터는 모두 완전히 덮어써진다는 점에 유의해 주세요.
After restarting, the database on this device will be rebuilt using data from the server. If there are any unsynchronised files in this vault, conflicts may occur with the server data.: 재시작하면 서버의 데이터를 사용해 이 기기의 데이터베이스가 재구축됩니다. 이 보관함에 동기화되지 않은 파일이 있다면 서버 데이터와 충돌이 발생할 수 있습니다.
After that, synchronise to a brand new vault on each other device with the new remote one by one.: 그런 다음 다른 기기에서도 하나씩 새 원격을 사용해 완전히 새로운 보관함에 동기화하세요.
All checks passed successfully!: 모든 검사를 통과했습니다!
All devices have the same progress value (${progress}). Your devices seem to be synchronised. And be able to proceed with Garbage Collection.: 모든 기기의 진행 값이 동일합니다(${progress}). 기기들이 동기화된 것으로 보이므로 가비지 컬렉션을 진행할 수 있습니다.
All the same or non-existent: 모두 동일하거나 존재하지 않음
Allow in session: 이 세션에서만 허용
Allow permanently: 항상 허용
Also, please note that if you are using Peer-to-Peer synchronization, this configuration will be used when you switch to other methods and connect to a remote server in the future.: 또한 Peer-to-Peer 동기화를 사용 중이라면, 이 구성은 나중에 다른 방식으로 전환하여 원격 서버에 연결할 때 사용된다는 점에 유의해 주세요.
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 All Selected: 선택 항목 모두 적용
Apply Latest Change if Conflicting: 충돌 시 최신 변경 사항 적용
Apply preset configuration: 프리셋 구성 적용
Apply the settings: 설정 적용
Ask a passphrase at every launch: 시작할 때마다 패스프레이즈 묻기
Auto Connect: 자동 연결
Auto Start P2P Connection: P2P 연결 자동 시작
Automatic: 자동
Automatically Sync all files when opening Obsidian.: Obsidian을 열 때 모든 파일을 자동으로 동기화합니다.
Available Peers: 사용 가능한 피어
Back: 뒤로
Back to non-configured: 미구성 상태로 되돌리기
Batch database update: 일괄 데이터베이스 업데이트
@@ -36,20 +81,32 @@ 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 이전에는 로컬 데이터베이스에 이전 어댑터를 사용했습니다. 이제는 새로운 어댑터를 권장합니다. 하지만 로컬 데이터베이스 재구축이 필요합니다. 충분한 시간이 있을 때 이 토글을 비활성화해 주세요. 활성화된 상태로 두면 원격 데이터베이스에서 가져올 때도 이를 비활성화하라는 메시지가 나타납니다.
Broadcasting?: 브로드캐스트란?
Bucket Name: 버킷 이름
by resetting the remote, you will be informed on other devices.: 원격을 초기화하면 다른 기기에서 알림을 받게 됩니다.
Cancel: 취소
Cancel Garbage Collection: 가비지 컬렉션 취소
Changing the encryption algorithm will prevent access to any data previously encrypted with a different algorithm. Ensure that all your devices are configured to use the same algorithm to maintain access to your data.: 암호화 알고리즘을 변경하면 이전에 다른 알고리즘으로 암호화된 데이터에는 접근할 수 없게 됩니다. 데이터에 계속 접근할 수 있도록 모든 기기가 동일한 알고리즘을 사용하도록 설정해 주세요.
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로 변환되지 않은 문서를 확인하고 필요하면 변환합니다.
Checking connection... Please wait.: 연결을 확인하는 중입니다... 잠시만 기다려 주세요.
Chunks: 청크
Close: 닫기
Close & Disconnect: 닫고 연결 끊기
Close this dialog: 이 대화 상자 닫기
"Closed:": "종료됨:"
cmdConfigSync:
showCustomizationSync: 사용자 설정 동기화 표시
Comma separated `.gitignore, .dockerignore`: 쉼표로 구분된 `.gitignore, .dockerignore`
Command: 명령
Communicating: 통신 중
Compaction in progress on remote database...: 원격 데이터베이스에서 압축 정리를 진행 중입니다...
Compaction on remote database completed successfully.: 원격 데이터베이스 압축 정리가 성공적으로 완료되었습니다.
Compaction on remote database failed.: 원격 데이터베이스 압축 정리에 실패했습니다.
Compaction on remote database timed out.: 원격 데이터베이스 압축 정리 시간이 초과되었습니다.
Compare file: 파일 비교
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): 호환성 (데이터베이스 구조)
@@ -58,43 +115,69 @@ Compatibility (Metadata): 호환성 (메타데이터)
Compatibility (Remote Database): 호환성 (원격 데이터베이스)
Compatibility (Trouble addressed): 호환성 (문제 대응)
Compute revisions for chunks: 청크에 대한 리비전 계산
Configuration: 구성
Configuration Encryption: 구성 암호화
Configure: 설정
Configure And Change Remote: 원격 구성 및 변경
Configure E2EE: E2EE 구성
Configure Remote: 원격 구성
Configure the same server information as your other devices again, manually, very advanced users only.: 다른 기기와 동일한 서버 정보를 다시 직접 입력합니다. 숙련된 사용자 전용입니다.
Connect: 연결
"Connected to Signaling Server (as Peer ID: ${peerId})": "시그널링 서버에 연결되었습니다 (피어 ID: ${peerId})"
"Connected:": "연결됨:"
Connection Method: 연결 방법
Connection Settings: 연결 설정
"Connection:": "연결:"
Continue anyway: 무시하고 계속
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 Configuration: CouchDB 구성
CouchDB Connection Tweak: CouchDB 연결 조정
Create P2P remote: P2P 원격 만들기
Cross-platform: 크로스 플랫폼
"Current adapter: {adapter}": "현재 어댑터: {adapter}"
Custom Headers: 사용자 지정 헤더
Customization Sync: 사용자 설정 동기화
Customization Sync (Beta3): 사용자 설정 동기화 (Beta3)
Data Compression: 데이터 압축
Data to Copy: 복사할 데이터
Database -> Storage: 데이터베이스 -> 스토리지
Database Adapter: 데이터베이스 어댑터
Database Name: 데이터베이스 이름
Database suffix: 데이터베이스 접미사
Date: 날짜
Default: 기본값
Delay conflict resolution of inactive files: 비활성 파일의 충돌 해결 지연
Delay merge conflict prompt for inactive files.: 비활성 파일의 병합 충돌 프롬프트 지연.
Delete: 삭제
Delete all customization sync data: 모든 사용자 설정 동기화 데이터 삭제
Delete all data on the remote server.: 원격 서버의 모든 데이터를 삭제합니다.
Delete All of: 모두 삭제할 대상
Delete local database to reset or uninstall Self-hosted LiveSync: Self-hosted LiveSync를 초기화하거나 제거하기 위해 로컬 데이터베이스를 삭제
Delete old metadata of deleted files on start-up: 시작 시 삭제된 파일의 오래된 메타데이터 삭제
Delete Remote Configuration: 원격 구성 삭제
Delete remote configuration '{name}'?: "'{name}' 원격 구성을 삭제할까요?"
Delete remote configuration '${name}'?: "'${name}' 원격 구성을 삭제할까요?"
DENIED: 거부됨
DENIED (in session): 거부됨 (이 세션에서만)
Deny: 거부
Deny in session: 이 세션에서만 거부
Deny permanently: 항상 거부
Deselect all: 선택 모두 해제
desktop: 데스크톱
Detected Peers: 감지된 피어
Developer: 개발자
Device: 기기
device name: 기기 이름
Device name: 기기 이름
Device name to identify the device. Please use shorter one for the stable peer detection, i.e., "iphone-16" or "macbook-2021".: 기기를 식별하기 위한 기기 이름입니다. 피어를 안정적으로 감지할 수 있도록 "iphone-16"이나 "macbook-2021"처럼 짧은 이름을 사용해 주세요.
Device Peer ID: 기기 피어 ID
Device Setup Method: 기기 설정 방법
"Devices:": "기기:"
Diagnostic RTCPeerConnection is enabled: 진단용 RTCPeerConnection이 활성화되어 있습니다
dialog:
yourLanguageAvailable:
_value: |-
@@ -105,8 +188,12 @@ dialog:
편하게 사용하실 수 있기를 바랍니다!
btnRevertToDefault: "%{lang-def} 유지"
Title: " 번역을 사용할 수 있습니다!"
Diff: 차이
Different: 다름
Disables all synchronization and restart.: 모든 동기화를 비활성화하고 재시작합니다.
Disables logging, only shows notifications. Please disable if you report an issue.: 로깅을 비활성화하고 알림만 표시합니다. 문제를 신고하는 경우 비활성화해 주세요.
Disconnect: 연결 끊기
Dismiss: 닫기
Display Language: 표시 언어
Display name: 표시 이름
Do not check configuration mismatch before replication: 복제 전 구성 불일치 확인 안 함
@@ -177,33 +264,70 @@ Enable advanced features: 고급 기능 활성화
Enable customization sync: 사용자 설정 동기화 활성화
Enable Developers' Debug Tools.: 개발자 디버그 도구 활성화
Enable edge case treatment features: 특수 사례 처리 기능 활성화
Enable P2P Replicator: P2P 복제기 활성화
Enable poweruser features: 파워 유저 기능 활성화
Enable this if your Object Storage doesn't support CORS: 객체 스토리지가 CORS를 지원하지 않는 경우 활성화하세요
Enable this option to automatically apply the most recent change to documents even when it conflicts: 이 옵션을 활성화하면 충돌이 있어도 문서에 가장 최근 변경 사항을 자동으로 적용합니다
Enabled: 활성화됨
Enabling end-to-end encryption ensures that your data is encrypted on your device before being sent to the remote server. This means that even if someone gains access to the server, they won't be able to read your data without the passphrase. Make sure to remember your passphrase, as it will be required to decrypt your data on other devices.: 종단 간 암호화를 활성화하면 데이터가 원격 서버로 전송되기 전에 기기에서 암호화됩니다. 따라서 누군가 서버에 접근하더라도 패스프레이즈 없이는 데이터를 읽을 수 없습니다. 다른 기기에서 데이터를 복호화할 때 필요하므로 패스프레이즈를 반드시 기억해 두세요.
Encrypt contents on the remote database. If you use the plugin's synchronization feature, enabling this is recommended.: 원격 데이터베이스의 내용을 암호화합니다. 플러그인의 동기화 기능을 사용하는 경우 활성화를 권장합니다.
Encrypting sensitive configuration items: 민감한 구성 항목 암호화
Encryption Algorithm: 암호화 알고리즘
Encryption phassphrase. If changed, you should overwrite the server's database with the new (encrypted) files.: 암호화에 사용할 패스프레이즈입니다. 변경한 경우, 새로 암호화된 파일로 서버의 데이터베이스를 덮어써야 합니다.
End-to-End Encryption: 종단 간 암호화
Endpoint URL: 엔드포인트 URL
Enhance chunk size: 청크 크기 확대
Enter a folder prefix (optional): 폴더 접두사를 입력하세요 (선택 사항)
Enter Server Information: 서버 정보 입력
Enter Setup URI: Setup URI 입력
Enter the server information manually: 서버 정보를 수동으로 입력
Enter TURN credential: TURN 자격 증명을 입력하세요
Enter TURN username: TURN 사용자 이름을 입력하세요
Enter your Access Key ID: 액세스 키 ID를 입력하세요
Enter your Bucket Name: 버킷 이름을 입력하세요
Enter your database name: 데이터베이스 이름을 입력하세요
Enter your JWT Key ID: JWT 키 ID를 입력하세요
Enter your JWT secret or private key: JWT 시크릿 또는 개인 키를 입력하세요
Enter your JWT Subject (CouchDB Username): JWT 주체(CouchDB 사용자 이름)를 입력하세요
Enter your passphrase: 패스프레이즈를 입력하세요
Enter your password: 비밀번호를 입력하세요
Enter your Region (e.g., us-east-1, auto for R2): "리전을 입력하세요 (예: us-east-1, R2는 auto)"
Enter your Secret Access Key: 시크릿 액세스 키를 입력하세요
Enter your username: 사용자 이름을 입력하세요
"Error during connection test: ${reason}": "연결 테스트 중 오류가 발생했습니다: ${reason}"
"Error during testAndFixSettings: ${reason}": "testAndFixSettings 실행 중 오류가 발생했습니다: ${reason}"
Experimental Settings: 실험적 설정
Export: 내보내기
Failed to connect to remote for compaction.: 압축 정리를 위해 원격 데이터베이스에 연결하지 못했습니다.
Failed to connect to remote for compaction. ${reason}: 압축 정리를 위해 원격 데이터베이스에 연결하지 못했습니다. ${reason}
"Failed to connect to the server: ${reason}": "서버에 연결하지 못했습니다: ${reason}"
Failed to connect to the server. Please check your settings.: 서버에 연결하지 못했습니다. 설정을 확인해 주세요.
"Failed to connect to the signalling relay: ${reason}": "시그널링 중계 서버에 연결하지 못했습니다: ${reason}"
Failed to create replicator instance.: 복제기 인스턴스를 생성하지 못했습니다.
Failed to parse Setup-URI.: Setup-URI를 해석하지 못했습니다.
Failed to start one-shot replication before Garbage Collection. Garbage Collection Cancelled.: 가비지 컬렉션 전에 일회성 복제를 시작하지 못했습니다. 가비지 컬렉션을 취소합니다.
Failed to start replication after Garbage Collection.: 가비지 컬렉션 후 복제를 시작하지 못했습니다.
"Failed:": "실패:"
Fetch: 가져오기
Fetch chunks on demand: 필요 시 청크 원격 가져오기
Fetch database with previous behaviour: 이전 동작으로 데이터베이스 가져오기
Fetch remote settings: 원격 설정 가져오기
FETCHING: 가져오는 중
Fetching status...: 상태를 가져오는 중입니다...
File integrity: 파일 무결성
File to resolve conflict: 충돌을 해결할 파일
File to view History: 기록을 볼 파일
Filename: 파일명
"Final Confirmation: Overwrite Server Data with This Device's Files": "최종 확인: 이 기기의 파일로 서버 데이터 덮어쓰기"
First, please select the option that best describes your current situation.: 먼저 현재 상황에 가장 잘 맞는 항목을 선택해 주세요.
Fix: 수정
Flag and restart: 표시 후 재시작
Flagged Selective: 플래그 지정 선택적
Folder Prefix: 폴더 접두사
For HS256/HS512 algorithms, provide the shared secret key. For ES256/ES512 algorithms, provide the pkcs8 PEM-formatted private key.: HS256/HS512 알고리즘에는 공유 시크릿 키를, ES256/ES512 알고리즘에는 pkcs8 PEM 형식의 개인 키를 입력하세요.
Forces the file to be synced when opened.: 파일을 열 때 강제로 동기화합니다.
Fresh Start Wipe: 초기화 후 새로 시작
Furthermore, if conflicts are already present in the server data, they will be synchronised to this device as they are, and you will need to resolve them locally.: 또한 서버 데이터에 이미 충돌이 존재한다면 그 상태 그대로 이 기기에 동기화되므로, 로컬에서 직접 해결해야 합니다.
Garbage Collection cancelled by user.: 사용자가 가비지 컬렉션을 취소했습니다.
"Garbage Collection completed. Deleted chunks: ${deletedChunks} / ${totalChunks}. Time taken: ${seconds} seconds.": "가비지 컬렉션이 완료되었습니다. 삭제된 청크: ${deletedChunks} / ${totalChunks}. 소요 시간: ${seconds}초."
Garbage Collection Confirmation: 가비지 컬렉션 확인
@@ -211,15 +335,33 @@ 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}"
Gathering information...: 정보를 수집하는 중입니다...
Generate Random ID: 임의 ID 생성
Group ID: 그룹 ID
Handle files as Case-Sensitive: 파일을 대소문자 구분으로 처리
Have you created a backup before proceeding?: 진행하기 전에 백업을 만드셨나요?
Hidden file synchronization have been temporarily disabled. Please enable them after the fetching, if you need them.: 숨김 파일 동기화가 일시적으로 비활성화되었습니다. 필요하다면 가져오기가 끝난 뒤에 다시 활성화해 주세요.
Hidden Files: 숨김 파일
Hide completely: 완전히 숨기기
Hide not applicable items: 해당 없는 항목 숨기기
Higher (${local} > ${remote}): 더 높음 (${local} > ${remote})
Highlight diff: 차이 강조
How to display network errors when the sync server is unreachable.: 동기화 서버에 연결할 수 없을 때 네트워크 오류를 어떻게 표시할지 설정합니다.
How would you like to configure the connection to your server?: 서버 연결을 어떻게 구성하시겠습니까?
However, This should not be enabled if you want to increase your secrecy more.: 다만 기밀성을 더 높이고 싶다면 이 옵션은 활성화하지 않는 것이 좋습니다.
I am adding a device to an existing synchronisation setup: 기존 동기화 구성에 기기를 추가합니다
I am setting this up for the first time: 처음으로 설정합니다
I am setting up a new server for the first time / I want to reset my existing server.: 새 서버를 처음 설정하거나, 기존 서버를 초기화하려고 합니다.
I am unable to create a backup of my Vault.: 보관함을 백업할 수 없습니다.
I am unable to create a backup of my Vaults.: 보관함들을 백업할 수 없습니다.
I have created a backup of my Vault.: 보관함을 백업했습니다.
I know my server details, let me enter them: 서버 정보를 알고 있으니 직접 입력하겠습니다
I understand that all changes made on other smartphones or computers possibly could be lost.: 다른 스마트폰이나 컴퓨터에서 변경한 내용이 모두 사라질 수 있다는 점을 이해합니다.
I understand that other devices will no longer be able to synchronise, and will need to be reset the synchronisation information.: 다른 기기는 더 이상 동기화할 수 없게 되며, 동기화 정보를 초기화해야 한다는 점을 이해합니다.
I understand that this action is irreversible once performed.: 이 작업은 한 번 수행하면 되돌릴 수 없다는 점을 이해합니다.
I understand the risks and will proceed without a backup.: 위험을 이해하며 백업 없이 진행하겠습니다.
I Understand, Overwrite Server: 이해했습니다, 서버 덮어쓰기
If "Auto Start P2P Connection" is enabled, the P2P connection will be started automatically when the plug-in launches.: '"P2P 연결 자동 시작"이 활성화되어 있으면 플러그인이 시작될 때 P2P 연결이 자동으로 시작됩니다.'
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개 항목으로 분할됩니다. 하지만 중복 제거 기능이 약간 약해집니다.
@@ -232,16 +374,38 @@ 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 cannot avoid CORS issues, you might want to try this option. It uses Obsidian's internal API to communicate with the CouchDB server. Not compliant with web standards, but works. Note that this might break in future Obsidian versions.: CORS 문제를 피할 수 없다면 이 옵션을 시도해 볼 수 있습니다. Obsidian의 내부 API를 사용해 CouchDB 서버와 통신합니다. 웹 표준을 따르지는 않지만 동작합니다. 향후 Obsidian 버전에서 동작하지 않을 수 있다는 점에 유의하세요.
If you cannot avoid CORS issues, you might want to try this option. It uses Obsidian's internal API to communicate with the S3 server. Not compliant with web standards, but works. Note that this might break in future Obsidian versions.: CORS 문제를 피할 수 없다면 이 옵션을 시도해 볼 수 있습니다. Obsidian의 내부 API를 사용해 S3 서버와 통신합니다. 웹 표준을 따르지는 않지만 동작합니다. 향후 Obsidian 버전에서 동작하지 않을 수 있다는 점에 유의하세요.
If you have unsynchronised changes in your Vault on this device, they will likely diverge from the server's versions after the reset. This may result in a large number of file conflicts.: 이 기기의 보관함에 동기화되지 않은 변경 사항이 있다면, 초기화 후 서버의 버전과 어긋나기 쉽습니다. 그 결과 많은 파일에서 충돌이 발생할 수 있습니다.
If you reached the payload size limit when using IBM Cloudant, please decrease batch size and batch limit to a lower value.: IBM Cloudant를 사용하다가 페이로드 크기 제한에 도달했다면, 배치 크기와 배치 개수 제한을 더 낮은 값으로 줄여 주세요.
If you understand the risks and still wish to proceed, select so.: 위험을 이해하고도 진행하려면 그렇게 선택해 주세요.
If you want to store the data in a specific folder within the bucket, you can specify a folder prefix here. Otherwise, leave it blank to store data at the root of the bucket.: 버킷 안의 특정 폴더에 데이터를 저장하려면 여기에 폴더 접두사를 지정할 수 있습니다. 그렇지 않다면 비워 두어 버킷 최상위에 데이터를 저장하세요.
If you want to use `LiveSync`, you should broadcast changes. All `watching` peers which detects this will start the replication for fetching.: "`LiveSync`를 사용하려면 변경 사항을 브로드캐스트해야 합니다. 이를 감지한 모든 `watching` 상태의 피어가 가져오기를 위한 복제를 시작합니다."
Ignore: 무시
Ignore and Proceed: 무시하고 계속
Ignore files: 제외 규칙 파일
Ignore patterns: 무시 패턴
Import connection: 연결 가져오기
IMPORTANT: 중요
In most cases, you should stick with the default algorithm (${algorithm}), This setting is only required if you have an existing Vault encrypted in a different format.: 대부분의 경우 기본 알고리즘(${algorithm})을 그대로 사용하는 것이 좋습니다. 이 설정은 기존 보관함이 다른 형식으로 암호화되어 있는 경우에만 필요합니다.
In this scenario, Self-hosted LiveSync will recreate metadata for every file and deliberately generate conflicts. Where the file content is identical, these conflicts will be resolved automatically.: 이 경우 Self-hosted LiveSync는 모든 파일의 메타데이터를 다시 만들면서 의도적으로 충돌을 발생시킵니다. 파일 내용이 동일한 경우 이러한 충돌은 자동으로 해결됩니다.
"Incoming:": "수신:"
Incubate Chunks in Document: 문서 내 청크 임시 보관
Initial Action: 초기 작업
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): 간격 (초)
INVERTED: 반전됨
"Issue detection log:": "문제 감지 로그:"
It is strongly advised to create a backup before proceeding. Continuing without a backup may lead to data loss.: 진행하기 전에 백업을 만드시기를 강력히 권장합니다. 백업 없이 진행하면 데이터가 손실될 수 있습니다.
Just for a minute, please!: 잠시만 기다려 주세요!
JWT (JSON Web Token) authentication allows you to securely authenticate with the CouchDB server using tokens. Ensure that your CouchDB server is configured to accept JWTs and that the provided key and settings match the server's configuration. Incidentally, I have not verified it very thoroughly.: JWT(JSON Web Token) 인증을 사용하면 토큰으로 CouchDB 서버에 안전하게 인증할 수 있습니다. CouchDB 서버가 JWT를 받아들이도록 설정되어 있는지, 그리고 입력한 키와 설정이 서버 구성과 일치하는지 확인해 주세요. 참고로 이 기능은 그리 철저하게 검증되지는 않았습니다.
JWT Algorithm: JWT 알고리즘
JWT Expiration Duration (minutes): JWT 만료 시간(분)
JWT Key: JWT 키
JWT Key ID (kid): JWT 키 ID (kid)
JWT Subject (sub): JWT 주체 (sub)
K:
exp: 실험 기능
long_p2p_sync: "%{title_p2p_sync} (%{exp})"
@@ -264,6 +428,7 @@ lang-zh: 简体中文
lang-zh-tw: 繁體中文
Later: 나중에
"Limit: {datetime} ({timestamp})": "제한: {datetime} ({timestamp})"
live: 실시간
LiveSync could not handle multiple vaults which have same name without different prefix, This should be automatically configured.: LiveSync는 접두사로 구분되지 않은 동일한 이름의 보관함을 여러 개 처리할 수 없습니다. 이 값은 자동으로 구성되어야 합니다.
liveSyncReplicator:
beforeLiveSync: LiveSync 전에 OneShot을 먼저 시작합니다...
@@ -297,6 +462,7 @@ liveSyncSetting:
liveSyncSettings:
btnApply: 적용
Local Database Tweak: 로컬 데이터베이스 조정
Local only: 로컬에만 있음
Lock: 잠금
Lock Server: 서버 잠금
Lock the remote server to prevent synchronization with other devices.: 다른 기기와의 동기화를 방지하기 위해 원격 서버를 잠급니다.
@@ -306,6 +472,9 @@ logPane:
pause: 일시 정지
title: Self-hosted LiveSync 로그
wrap: 줄 바꿈
Lower (${local} < ${remote}): 더 낮음 (${local} < ${remote})
Maintenance Commands: 유지보수 명령
Maintenance mode: 유지보수 모드
Maximum delay for batch database updating: 일괄 데이터베이스 업데이트 최대 지연
Maximum file size: 최대 파일 크기
Maximum Incubating Chunk Size: 임시 보관 청크의 최대 크기
@@ -318,6 +487,7 @@ Memory cache size (by total items): 메모리 캐시 크기 (총 항목 수)
Merge: 병합
Minimum delay for batch database updating: 일괄 데이터베이스 업데이트 최소 지연
Minimum interval for syncing: 동기화 최소 간격
Mixed: 혼합
moduleCheckRemoteSize:
logCheckingStorageSizes: 스토리지 크기 확인 중
logCurrentStorageSize: "원격 스토리지 크기: ${measuredSize}"
@@ -509,23 +679,39 @@ moduleMigration:
moduleObsidianMenu:
replicate: 복제
More actions: 추가 작업
"Mostly Complete: Decision Required": "거의 완료: 결정이 필요합니다"
Move remotely deleted files to the trash, instead of deleting.: 원격에서 삭제된 파일을 삭제하는 대신 휴지통으로 이동합니다.
My remote server is already set up. I want to join this device.: 원격 서버가 이미 설정되어 있습니다. 이 기기를 참여시키고 싶습니다.
Name: 이름
Network warning style: 네트워크 경고 표시 방식
NEW: 신규
New Remote: 새 원격
Newer (${diff}): 더 새로움 (${diff})
No checks have been performed yet.: 아직 검사를 수행하지 않았습니다.
No connected device information found. Cancelling Garbage Collection.: 연결된 기기 정보를 찾을 수 없습니다. 가비지 컬렉션을 취소합니다.
No Connection: 연결 없음
No devices available. Waiting for other devices to connect...: 사용 가능한 기기가 없습니다. 다른 기기가 연결되기를 기다리는 중입니다...
No Items.: 항목이 없습니다.
No limit configured: 제한이 설정되지 않음
NO PREVIEW: 미리 보기 없음
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.: 모든 메시지가 번역되지 않았습니다. 오류 신고 시 "기본값"으로 되돌려 주세요.
Not configured: 구성되지 않음
Not now: 나중에
Note that the Group ID is not limited to the generated format; you can use any string as the Group ID.: 그룹 ID는 생성된 형식으로 제한되지 않으며, 어떤 문자열이든 그룹 ID로 사용할 수 있습니다.
Note that you can generate a new Setup URI by running the "Copy settings as a new Setup URI" command in the command palette.: 명령 팔레트에서 "Copy settings as a new Setup URI" 명령을 실행하면 새 Setup URI를 생성할 수 있습니다.
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 changes to sync at a time. Defaults to 50. Minimum is 2.: 한 번에 동기화할 변경 사항의 수입니다. 기본값은 50입니다. 최소값은 2입니다.
Obfuscate Properties: 속성 난독화
Obfuscating properties (e.g., path of file, size, creation and modification dates) adds an additional layer of security by making it harder to identify the structure and names of your files and folders on the remote server. This helps protect your privacy and makes it more difficult for unauthorized users to infer information about your data.: "속성(예: 파일 경로, 크기, 생성 및 수정 날짜)을 난독화하면 원격 서버에서 파일과 폴더의 구조 및 이름을 파악하기 어려워져 보안이 한층 강화됩니다. 이는 개인 정보를 보호하는 데 도움이 되며, 권한 없는 사용자가 데이터에 대한 정보를 추측하기 어렵게 만듭니다."
Obsidian version: Obsidian 버전
obsidianLiveSyncSettingTab:
btnApply: 적용
@@ -733,11 +919,22 @@ obsidianLiveSyncSettingTab:
titleUpdateThinning: 업데이트 솎아내기
warnCorsOriginUnmatched: ⚠ CORS 출처가 일치하지 않습니다 ${from}->${to}
warnNoAdmin: ⚠ 관리자 권한이 없습니다.
Of course, we can back up the data before proceeding.: 물론 진행하기 전에 데이터를 백업할 수 있습니다.
Off: 꺼짐
Ok: 확인
Old Algorithm: 이전 알고리즘
Older (${diff}): 더 오래됨 (${diff})
Older fallback (Slow, W/O WebAssembly): 이전 대체 방식 (느림, WebAssembly 없음)
On: 켜짐
On the source device, from the command palette, run the 'Show settings as a QR code' command.: 원본 기기에서 명령 팔레트를 열고 'Show settings as a QR code' 명령을 실행합니다.
On the source device, open Obsidian.: 원본 기기에서 Obsidian을 엽니다.
On this device, please keep this Vault open.: 이 기기에서는 이 보관함을 계속 열어 두세요.
On this device, switch to the camera app or use a QR code scanner to scan the displayed QR code.: 이 기기에서 카메라 앱으로 전환하거나 QR 코드 스캐너를 사용해 화면에 표시된 QR 코드를 스캔합니다.
Open: 열기
Open connection: 연결 열기
Open P2P Setup...: P2P 설정 열기...
Open the dialog: 대화상자 열기
Other files: 기타 파일
Overwrite: 덮어쓰기
Overwrite patterns: 덮어쓰기 패턴
Overwrite remote: 원격 덮어쓰기
@@ -770,42 +967,67 @@ P2P:
SyncAlreadyRunning: P2P 동기화가 이미 실행 중입니다.
SyncCompleted: P2P 동기화가 완료되었습니다.
SyncStartedWith: ${name}과의 P2P 동기화가 시작되었습니다.
P2P Configuration: P2P 구성
P2P Status: P2P 상태
paneMaintenance:
markDeviceResolvedAfterBackup: 백업 후 이 기기를 해결됨으로 표시
remoteLockedAndDeviceNotAccepted: 원격 데이터베이스가 잠겨 있으며 이 기기는 아직 승인되지 않았습니다.
remoteLockedResolvedDevice: 원격 데이터베이스가 잠겨 있지만 이 기기는 이미 승인되었습니다.
unlockDatabaseReady: 데이터베이스 잠금 해제
Passphrase: 패스프레이즈
Passphrase is required.: 패스프레이즈가 필요합니다.
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: 경로
Path Obfuscation: 경로 난독화
Patterns to match files for overwriting instead of merging: 병합 대신 덮어쓸 파일을 판별하는 패턴
Patterns to match files for syncing: 동기화할 파일을 판별하는 패턴
"Peer ID:": "피어 ID:"
Peer to Peer Replicator: Peer to Peer 복제기
Peer-to-Peer only: Peer-to-Peer 전용
Peer-to-Peer Synchronisation: 피어 투 피어(P2P) 동기화
Peers: 피어
Per-file-saved customization sync: 파일별 저장 사용자 설정 동기화
Perform: 실행
Perform cleanup: 정리 실행
Perform Garbage Collection: 가비지 컬렉션 실행
Perform Garbage Collection to remove unused chunks and reduce database size.: 사용하지 않는 청크를 제거하고 데이터베이스 크기를 줄이기 위해 가비지 컬렉션을 실행합니다.
Periodic Sync interval: 주기적 동기화 간격
PERMANENT: 영구
Pick a file to resolve conflict: 충돌을 해결할 파일 선택
Pick a file to show history: 기록을 표시할 파일 선택
Please be aware that the End-to-End Encryption passphrase is not validated until the synchronisation process actually commences. This is a security measure designed to protect your data.: 종단 간 암호화 패스프레이즈는 동기화가 실제로 시작되기 전까지 검증되지 않는다는 점에 유의해 주세요. 이는 데이터를 보호하기 위한 보안 조치입니다.
Please configure your end-to-end encryption settings.: 종단 간 암호화 설정을 구성해 주세요.
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 enter the CouchDB server information below.: 아래에 CouchDB 서버 정보를 입력해 주세요.
Please enter the details required to connect to your S3/MinIO/R2 compatible object storage service.: S3/MinIO/R2 호환 오브젝트 스토리지 서비스에 연결하는 데 필요한 정보를 입력해 주세요.
Please enter the Peer-to-Peer Synchronisation information below.: 아래에 Peer-to-Peer 동기화 정보를 입력해 주세요.
Please enter the Setup URI that was generated during server installation or on another device, along with the vault passphrase.: 서버 설치 과정이나 다른 기기에서 생성된 Setup URI를 보관함 패스프레이즈와 함께 입력해 주세요.
Please follow the steps below to import settings from your existing device.: 기존 기기에서 설정을 가져오려면 아래 단계를 따라 주세요.
PLEASE NOTE: 유의 사항
Please select 'Cancel' explicitly to cancel this operation.: 이 작업을 취소하려면 반드시 "취소"를 명시적으로 선택해 주세요.
Please select a method to import the settings from another device.: 다른 기기에서 설정을 가져올 방법을 선택해 주세요.
Please select an active P2P remote configuration to change P2P sync targets.: P2P 동기화 대상을 변경하려면 활성 P2P 원격 구성을 선택해 주세요.
Please select an option to proceed: 계속하려면 항목을 선택해 주세요
Please select the button below to restart and proceed to the data fetching confirmation.: 아래 버튼을 선택하면 재시작 후 데이터 가져오기 확인 단계로 진행합니다.
Please select the button below to restart and proceed to the final confirmation.: 아래 버튼을 선택하면 재시작 후 최종 확인 단계로 진행합니다.
Please select the type of server to which you are connecting.: 연결할 서버 유형을 선택해 주세요.
Please select your situation.: 현재 상황을 선택해 주세요.
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 understand that this is intended behaviour.: 이는 의도된 동작이라는 점을 이해해 주세요.
Plug-in version: 플러그인 버전
Plugins: 플러그인
Prepare the 'report' to create an issue: 이슈 생성을 위한 '보고서' 준비
Presets: 프리셋
Prevent fetching configuration from server: 서버에서 구성 가져오기 방지
Proceed: 진행
Proceed Garbage Collection: 가비지 컬렉션 계속
Proceed to the next step.: 다음 단계로 진행합니다.
Proceed with Setup URI: Setup URI로 계속
Proceeding with Garbage Collection, ignoring missing nodes.: 누락된 노드를 무시하고 가비지 컬렉션을 계속 진행합니다.
Proceeding with Garbage Collection.: 가비지 컬렉션을 진행합니다.
@@ -869,15 +1091,22 @@ RedFlag:
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: 디스크 변경 사항이 데이터베이스에 반영되는 빈도를 줄입니다
Refresh: 새로 고침
Region: 지역
Relay settings: 중계 서버 설정
Reload: 다시 불러오기
Remediation: 복구 조치
Remediation Setting Changed: 복구 설정이 변경됨
Remote Database Tweak (In sunset): 원격 데이터베이스 조정 (폐기 예정)
Remote Databases: 원격 데이터베이스
Remote name: 원격 이름
Remote only: 원격에만 있음
Remote server type: 원격 서버 유형
Remote Type: 원격 유형
Rename: 이름 바꾸기
Replicate now: 지금 복제
Replicating: 복제 중
Replicating...: 복제 중입니다...
Replicator:
Dialogue:
Locked:
@@ -917,6 +1146,7 @@ Resend all chunks to the remote.: 모든 청크를 원격으로 다시 보냅니
Reset: 재설정
Reset all: 모두 재설정
Reset all journal counter: 모든 저널 카운터 재설정
Reset and Resume Synchronisation: 동기화 초기화 후 재개
Reset journal received history: 저널 수신 기록 재설정
Reset journal sent history: 저널 송신 기록 재설정
Reset notification threshold and check the remote database usage: 알림 임계값을 초기화하고 원격 데이터베이스 사용량 확인
@@ -929,14 +1159,26 @@ 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 and Fetch Data: 재시작 후 데이터 가져오기
Restart and Initialise Server: 재시작 후 서버 초기화
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.: 원격에서 로컬 데이터베이스를 복원하거나 재구축합니다.
Rev: 리비전
Revert changes: 변경 사항 되돌리기
Revoke: 철회
Room ID: 룸 ID
"Room ID suffix:": "룸 ID 접미사:"
Run Doctor: 진단 실행
S3/MinIO/R2 Configuration: S3/MinIO/R2 구성
S3/MinIO/R2 Object Storage: S3/MinIO/R2 객체 스토리지
Same: 동일
Same or local only: 동일하거나 로컬에만 있음
Save and Apply: 저장 후 적용
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: 변경 사항 검사
Scan changes on customization sync: 사용자 설정 동기화 시 변경 사항 검색
Scan customization automatically: 사용자 설정 자동 검색
Scan customization before replicating.: 복제하기 전에 사용자 설정을 검색합니다.
@@ -945,17 +1187,28 @@ Scan customization periodically: 주기적으로 사용자 설정 검색
Scan for Broken files: 손상된 파일 검사
Scan for hidden files before replication: 복제 전 숨김 파일 검사
Scan hidden files periodically: 주기적으로 숨김 파일 검사
Scan QR Code: QR 코드 스캔
Scan the QR code displayed on an active device using this device's camera.: 이 기기의 카메라로 사용 중인 기기에 표시된 QR 코드를 스캔하세요.
Schedule and Restart: 예약 후 재시작
Scram Switches: 긴급 정지 스위치
Scram!: 긴급 정지
Seconds, 0 to disable: 초 단위, 0으로 설정하면 비활성화
Seconds. Saving to the local database will be delayed until this value after we stop typing or saving.: 초 단위입니다. 타이핑이나 저장을 중단한 후 이 시간동안 로컬 데이터베이스 저장이 지연됩니다.
Secret Access Key: 시크릿 액세스 키
Secret Key: 시크릿 키
Select active P2P remote: 활성 P2P 원격 선택
Select All Shiny: 새 항목 모두 선택
Select Flagged Shiny: 플래그된 새 항목 선택
Select P2P remote...: P2P 원격 선택...
Select the database adapter to use.: 사용할 데이터베이스 어댑터를 선택합니다.
Selecting this option will result in the current data on this device being used to initialise the server. Any existing data on the server will be completely overwritten.: 이 옵션을 선택하면 이 기기의 현재 데이터로 서버를 초기화합니다. 서버에 있는 기존 데이터는 모두 완전히 덮어써집니다.
Selecting this option will result in this device joining the existing server. You need to fetching the existing synchronisation data from the server to this device.: 이 옵션을 선택하면 이 기기가 기존 서버에 참여합니다. 서버에 있는 기존 동기화 데이터를 이 기기로 가져와야 합니다.
Selective: 선택적
Send: 보내기
Send chunks: 청크 보내기
SENDING: 전송 중
Server URI: 서버 URI
SESSION: 세션
Setting:
GenerateKeyPair:
Desc: |+
@@ -1003,6 +1256,8 @@ Setting:
SettingTab:
Message:
AskRebuild: 변경 사항을 적용하려면 원격 데이터베이스에서 가져와야 합니다. 계속 진행하시겠습니까?
"Setup Complete: Preparing to Fetch Synchronisation Data": "설정 완료: 동기화 데이터를 가져올 준비 중"
"Setup Complete: Preparing to Initialise Server": "설정 완료: 서버를 초기화할 준비 중"
Setup URI dialog cancelled.: Setup URI 대화 상자가 취소되었습니다.
Setup:
Apply:
@@ -1098,6 +1353,7 @@ Setup:
PlaceholderPassphrase: 보관함 패스프레이즈를 입력하세요
Title: Setup URI 입력
ValidInfo: Setup URI가 유효하며 사용할 준비가 되었습니다.
Setup-URI: 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?: 파일을 열 때 충돌하는 파일에 대해 알림을 표시하시겠습니까?
@@ -1111,18 +1367,31 @@ Show status icon instead of file warnings banner: 파일 경고 배너 대신
Show status inside the editor: 편집기 내부에 상태 표시
Show status on the status bar: 상태 표시줄에 상태 표시
Show verbose log. Please enable if you report an issue.: 자세한 로그를 표시합니다. 문제를 신고하는 경우 활성화해 주세요.
Signaling Server Connection: 시그널링 서버 연결
Signalling Status: 시그널링 상태
Skip and close: 건너뛰고 닫기
Snippets: 스니펫
"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}).
이는 일부 기기가 동기화를 완료하지 않았음을 의미할 수 있으며, 충돌로 이어질 수 있습니다. 계속 진행하기 전에 모든 기기가 동기화되었는지 반드시 확인하는 것을 강력히 권장합니다.
Start Broadcasting: 브로드캐스트 시작
Start change-broadcasting on Connect: 연결 시 변경 사항 브로드캐스트 시작
Start Sync & Close: 동기화 시작 후 닫기
Starts synchronisation when a file is saved.: 파일이 저장될 때 동기화를 시작합니다.
Stat: 상태
Stats: 통계
Stop ⚡: 중지 ⚡
Stop Broadcasting: 브로드캐스트 중지
Stop reflecting database changes to storage files.: 데이터베이스 변경 사항을 스토리지 파일에 반영하는 것을 중단합니다.
Stop watching for file changes.: 파일 변경 사항 감시를 중단합니다.
Storage -> Database: 스토리지 -> 데이터베이스
Strongly Recommended: 적극 권장
Suppress notification of hidden files change: 숨김 파일 변경 알림 억제
Suspend database reflecting: 데이터베이스 반영 일시 중단
Suspend file watching: 파일 감시 일시 중단
Switch to IDB: IDB로 전환
Switch to IndexedDB: IndexedDB로 전환
Sync: 동기화
Sync after merging file: 파일 병합 후 동기화
Sync automatically after merging files: 파일 병합 후 자동으로 동기화
Sync Mode: 동기화 모드
@@ -1130,30 +1399,61 @@ Sync on Editor Save: 편집기 저장 시 동기화
Sync on File Open: 파일 열기 시 동기화
Sync on Save: 저장 시 동기화
Sync on Startup: 시작 시 동기화
Sync once: 한 번 동기화
Synchronisation utilising journal files. You must have set up an S3/MinIO/R2 compatible object storage.: 저널 파일을 활용하는 동기화 방식입니다. S3/MinIO/R2 호환 객체 스토리지를 미리 구성해 두어야 합니다.
Synchronising files: 동기화할 파일
Syncing: 동기화
Syncing...: 동기화 중입니다...
Target patterns: 대상 패턴
Test Settings and Continue: 설정 테스트 후 계속
Testing only - Resolve file conflicts by syncing newer copies of the file, this can overwrite modified files. Be Warned.: 테스트 전용 - 파일의 새로운 사본을 동기화하여 파일 충돌을 해결하며, 수정된 파일을 덮어쓸 수 있습니다. 주의하세요.
The connection to the server has been configured successfully. As the next step,: 서버 연결이 성공적으로 구성되었습니다. 다음 단계로,
The delay for consecutive on-demand fetches: 연속 청크 요청 간 대기 시간
The files in this Vault are almost identical to the server's.: 이 보관함의 파일은 서버의 파일과 거의 동일합니다.
"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 Group ID and passphrase are used to identify your group of devices. Make sure to use the same Group ID and passphrase on all devices you want to synchronise.: 그룹 ID와 패스프레이즈는 기기 그룹을 식별하는 데 사용됩니다. 동기화하려는 모든 기기에서 동일한 그룹 ID와 패스프레이즈를 사용해야 합니다.
The Hash algorithm for chunk IDs: 청크 ID용 해시 알고리즘
The IndexedDB adapter often offers superior performance in certain scenarios, but it has been found to cause memory leaks when used with LiveSync mode. When using LiveSync mode, please use IDB adapter instead.: IndexedDB 어댑터는 특정 상황에서 더 나은 성능을 보이는 경우가 많지만, LiveSync 모드에서 사용하면 메모리 누수를 일으키는 것으로 확인되었습니다. LiveSync 모드를 사용할 때는 IDB 어댑터를 사용해 주세요.
the latest synchronisation data will be downloaded from the server to this device.: 서버의 최신 동기화 데이터를 이 기기로 내려받습니다.
the local database, that is to say the synchronisation information, must be reconstituted.: 로컬 데이터베이스, 즉 동기화 정보를 다시 구성해야 합니다.
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.: 이벤트 발생 시 자동 동기화의 최소 간격입니다.
The remote is already set up, and the configuration is compatible (or got compatible by this operation).: 원격은 이미 설정되어 있으며, 구성도 호환됩니다(또는 이번 작업으로 호환되었습니다).
The Setup-URI does not appear to be valid. Please check that you have copied it correctly.: Setup-URI가 유효하지 않은 것으로 보입니다. 올바르게 복사했는지 확인해 주세요.
The Setup-URI is valid and ready to use.: Setup-URI가 유효하며 사용할 준비가 되었습니다.
the single, authoritative master copy: 유일하고 확실한 원본이 됩니다
the synchronisation data on the server will be built based on the current data on this device.: 이 기기의 현재 데이터를 바탕으로 서버의 동기화 데이터를 구축합니다.
Themes: 테마
There is a way to resolve this on other devices.: 다른 기기에서 이를 해결할 방법이 있습니다.
There may be differences between the files in this Vault and the server.: 이 보관함의 파일과 서버의 파일 사이에 차이가 있을 수 있습니다.
Therefore, we ask that you exercise extreme caution when configuring server information manually. If an incorrect passphrase is entered, the data on the server will become corrupted.: 따라서 서버 정보를 수동으로 구성할 때에는 각별히 주의해 주시기 바랍니다. 잘못된 패스프레이즈를 입력하면 서버의 데이터가 손상됩니다.
This can isolate your connections between devices. Use the same Room ID for the same devices.: 이를 통해 기기 간 연결을 서로 격리할 수 있습니다. 같은 기기들끼리는 동일한 룸 ID를 사용하세요.
This device: 이 기기
This device name: 이 기기의 이름
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 an extremely powerful operation. We strongly recommend that you copy your Vault folder to a safe location.: 이는 매우 강력한 작업입니다. 보관함 폴더를 안전한 위치에 복사해 두시기를 강력히 권장합니다.
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 password is used to encrypt the connection. Use something long enough.: 이 비밀번호는 연결을 암호화하는 데 사용됩니다. 충분히 긴 값을 사용하세요.
This procedure will first delete all existing synchronisation data from the server. Following this, the server data will be completely rebuilt, using the current state of your Vault on this device (including its local database) as: 이 절차는 먼저 서버에서 기존 동기화 데이터를 모두 삭제합니다. 그다음 이 기기에 있는 보관함의 현재 상태(로컬 데이터베이스 포함)를 바탕으로 서버 데이터를 완전히 재구축합니다. 즉, 이 기기의 데이터가
This setting must be the same even when connecting to multiple synchronisation destinations.: 이 설정은 여러 동기화 대상에 연결하는 경우에도 동일해야 합니다.
This Vault is empty, or contains only new files that are not on the server.: 이 보관함은 비어 있거나, 서버에 없는 새 파일만 포함하고 있습니다.
This will rebuild the local database on this device using the most recent data from the server. This action is designed to resolve synchronisation inconsistencies and restore correct functionality.: 서버의 최신 데이터를 사용해 이 기기의 로컬 데이터베이스를 재구축합니다. 이 작업은 동기화 불일치를 해결하고 정상적인 동작을 복구하기 위한 것입니다.
This will recreate chunks for all files. If there were missing chunks, this may fix the errors.: 모든 파일의 청크를 다시 생성합니다. 누락된 청크가 있었다면 이 작업으로 오류가 해결될 수 있습니다.
To minimise the creation of new conflicts: 새로운 충돌 발생을 최소화하기 위해
Transfer Tweak: 전송 조정
TURN Credential: TURN 자격 증명
TURN server settings are only necessary if you are behind a strict NAT or firewall that prevents direct P2P connections. In most cases, you can leave these fields blank.: TURN 서버 설정은 직접적인 P2P 연결을 막는 엄격한 NAT나 방화벽 뒤에 있는 경우에만 필요합니다. 대부분의 경우 이 항목들은 비워 두어도 됩니다.
TURN Server URLs (comma-separated): TURN 서버 URL (쉼표로 구분)
TURN Username: TURN 사용자 이름
TweakMismatchResolve:
Action:
DisableAutoAcceptCompatible: 자동 수용 비활성화
@@ -1523,21 +1823,36 @@ Ui:
ProceedP2P: Peer-to-Peer 전용 설정으로 계속
Title: 서버 정보 입력
Unique name between all synchronized devices. To edit this setting, please disable customization sync once.: 모든 동기화된 기기 간 고유 이름입니다. 이 설정을 편집하려면 사용자 설정 동기화를 한 번 비활성화해 주세요.
Unless you are certain, selecting this options is bit dangerous. It assumes that the server configuration is compatible with this device. If this is not the case, data loss may occur. Please ensure you know what you are doing.: 확신이 없다면 이 옵션을 선택하는 것은 다소 위험합니다. 이 옵션은 서버 구성이 이 기기와 호환된다고 가정합니다. 그렇지 않은 경우 데이터가 손실될 수 있습니다. 무엇을 하려는지 충분히 이해한 상태에서 진행해 주세요.
Updating list...: 목록을 갱신하는 중입니다...
URL: URL
Use a custom passphrase: 사용자 지정 패스프레이즈 사용
Use a Setup URI (Recommended): Setup URI 사용(권장)
Use Custom HTTP Handler: 커스텀 HTTP 핸들러 사용
Use Diagnostic RTCPeerConnection for statistics: 통계에 진단용 RTCPeerConnection 사용
Use dynamic iteration count: 동적 반복 횟수 사용
Use internal API: 내부 API 사용
Use Internal API: 내부 API 사용
Use JWT Authentication: JWT 인증 사용
Use Path-Style Access: 경로 방식(Path-Style) 접근 사용
Use Random Number: 임의의 숫자 사용
Use Segmented-splitter: 의미 기반 분할 사용
Use splitting-limit-capped chunk splitter: 분할 제한 상한 청크 분할기 사용
Use the trash bin: 휴지통 사용
Use timeouts instead of heartbeats: 하트비트 대신 타임아웃 사용
Use vrtmrz's relay: vrtmrz의 중계 서버 사용
username: 사용자명
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.: 경고! 이는 성능에 심각한 영향을 미칩니다. 로그는 기본 이름으로 동기화되지 않습니다. 로그에는 종종 기밀 정보가 포함되어 있으므로 주의해 주세요.
WATCHING: 감시 중
We can not use "/" to the device name: 기기 이름에는 "/"를 사용할 수 없습니다
We can use only Secure (HTTPS) connections on Obsidian Mobile.: Obsidian 모바일에서는 보안(HTTPS) 연결만 사용할 수 있습니다.
We cannot change the device name while this feature is enabled. Please disable this feature to change the device name.: 이 기능이 활성화되어 있는 동안에는 기기 이름을 변경할 수 없습니다. 기기 이름을 변경하려면 이 기능을 비활성화하세요.
We have to configure the device name: 기기 이름을 설정해야 합니다
We recommend that you copy your Vault folder to a safe location. This will provide a safeguard in case a large number of conflicts arise, or if you accidentally synchronise with an incorrect destination.: 보관함 폴더를 안전한 위치에 복사해 두시기를 권장합니다. 충돌이 대량으로 발생하거나 실수로 잘못된 대상과 동기화한 경우에 대비할 수 있습니다.
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에 오신 것을 환영합니다
@@ -1549,3 +1864,6 @@ xxhash64 (Fastest): xxhash64 (가장 빠름)
Yes, I want to add this device to my existing synchronisation: 예, 이 기기를 기존 동기화 구성에 추가하겠습니다
Yes, I want to set up a new synchronisation: 예, 새 동기화를 설정하겠습니다
You are adding this device to an existing synchronisation setup.: 이 기기를 기존 동기화 구성에 추가합니다.
You can configure in the Obsidian Plugin Settings.: Obsidian 플러그인 설정에서 구성할 수 있습니다.
You should create a new synchronisation destination and rebuild your data there.: 새로운 동기화 대상을 만들고 그곳에서 데이터를 재구축해야 합니다.
You should perform this operation only in exceptional circumstances, such as when the server data is completely corrupted, when changes on all other devices are no longer needed, or when the database size has become unusually large in comparison to the Vault size.: 이 작업은 서버 데이터가 완전히 손상된 경우, 다른 모든 기기의 변경 사항이 더 이상 필요하지 않은 경우, 또는 데이터베이스 크기가 보관함 크기에 비해 비정상적으로 커진 경우처럼 예외적인 상황에서만 수행해야 합니다.

View File

@@ -194,6 +194,10 @@ export function paneSyncSettings(
),
});
}
new Setting(paneEl).setClass("wizardHidden").autoWireToggle("allowSleepDuringSynchronisation");
if (!this.services.API.isMobile()) {
new Setting(paneEl).setClass("wizardHidden").autoWireToggle("allowSleepDuringSynchronisationOnDesktop");
}
});
void addPanel(

View File

@@ -91,6 +91,7 @@ export class ObsidianServiceHub extends InjectableServiceHub<ObsidianServiceCont
appLifecycleService: appLifecycle,
databaseEventService: databaseEvents,
activityRunner: screenWakeLock,
isMobile: () => API.isMobile(),
});
const replication = new ObsidianReplicationService(context, {
APIService: API,

View File

@@ -11,17 +11,53 @@ import type { ObsidianServiceContext } from "@/modules/services/ObsidianServiceC
import { KeyValueDBService } from "@vrtmrz/livesync-commonlib/compat/services/base/KeyValueDBService";
import { ControlService } from "@vrtmrz/livesync-commonlib/compat/services/base/ControlService";
import { reactiveSource } from "octagonal-wheels/dataobject/reactive";
import type { ReplicatorServiceDependencies } from "@vrtmrz/livesync-commonlib/compat/services/base/ReplicatorService";
import type { ObsidianLiveSyncSettings } from "@vrtmrz/livesync-commonlib/compat/common/types";
type ActivityOptions = {
label?: string;
};
type ObsidianReplicatorServiceDependencies = ReplicatorServiceDependencies & {
isMobile: () => boolean;
};
type SleepPreferenceSettings = Pick<
ObsidianLiveSyncSettings,
"allowSleepDuringSynchronisation" | "allowSleepDuringSynchronisationOnDesktop"
>;
export function shouldAllowSleepDuringSynchronisation(settings: SleepPreferenceSettings, isMobile: boolean): boolean {
return settings.allowSleepDuringSynchronisation || (!isMobile && settings.allowSleepDuringSynchronisationOnDesktop);
}
function withSleepPreference(dependencies: ObsidianReplicatorServiceDependencies): ReplicatorServiceDependencies {
const activityRunner = dependencies.activityRunner;
if (!activityRunner) return dependencies;
return {
...dependencies,
activityRunner: {
async run<T>(task: () => T | PromiseLike<T>, options?: ActivityOptions): Promise<T> {
const allowSleep = shouldAllowSleepDuringSynchronisation(
dependencies.settingService.currentSettings(),
dependencies.isMobile()
);
return allowSleep ? await task() : await activityRunner.run(task, options);
},
},
};
}
export class ObsidianDatabaseEventService extends InjectableDatabaseEventService<ObsidianServiceContext> {}
// InjectableReplicatorService
export class ObsidianReplicatorService extends InjectableReplicatorService<ObsidianServiceContext> {
readonly boundedLocalApplicationActivityCount = reactiveSource(0);
constructor(context: ObsidianServiceContext, dependencies: ObsidianReplicatorServiceDependencies) {
super(context, withSleepPreference(dependencies));
}
async runBoundedLocalApplicationActivity<T>(
task: () => T | PromiseLike<T>,
options?: ActivityOptions

View File

@@ -1,25 +1,53 @@
import { promiseWithResolvers } from "octagonal-wheels/promises";
import { describe, expect, it, vi } from "vitest";
import { ObsidianReplicatorService } from "./ObsidianServices";
import { ObsidianReplicatorService, shouldAllowSleepDuringSynchronisation } from "./ObsidianServices";
function handler() {
return { addHandler: vi.fn() };
}
describe("ObsidianReplicatorService", () => {
it.each([
{ general: false, desktop: false, mobile: false, expected: false },
{ general: false, desktop: true, mobile: false, expected: true },
{ general: false, desktop: true, mobile: true, expected: false },
{ general: true, desktop: false, mobile: false, expected: true },
{ general: true, desktop: false, mobile: true, expected: true },
])("applies the sleep preference policy: $general/$desktop/$mobile", ({ general, desktop, mobile, expected }) => {
expect(
shouldAllowSleepDuringSynchronisation(
{
allowSleepDuringSynchronisation: general,
allowSleepDuringSynchronisationOnDesktop: desktop,
},
mobile
)
).toBe(expected);
});
it("tracks local application activity without extending remote activity", async () => {
const activity = promiseWithResolvers<void>();
const service = new ObsidianReplicatorService({ events: {}, translate: String } as never, {
settingService: { onRealiseSetting: handler() },
appLifecycleService: { onSuspending: handler(), getUnresolvedMessages: handler() },
databaseEventService: {
onResetDatabase: handler(),
onDatabaseInitialisation: handler(),
onDatabaseInitialised: handler(),
onDatabaseHasReady: handler(),
},
activityRunner: { run: vi.fn(async (task: () => Promise<void>) => await task()) },
} as never);
const service = new ObsidianReplicatorService(
{ events: {}, translate: String } as never,
{
settingService: {
onRealiseSetting: handler(),
currentSettings: () => ({
allowSleepDuringSynchronisation: false,
allowSleepDuringSynchronisationOnDesktop: false,
}),
},
appLifecycleService: { onSuspending: handler(), getUnresolvedMessages: handler() },
databaseEventService: {
onResetDatabase: handler(),
onDatabaseInitialisation: handler(),
onDatabaseInitialised: handler(),
onDatabaseHasReady: handler(),
},
activityRunner: { run: vi.fn(async (task: () => Promise<void>) => await task()) },
isMobile: () => false,
} as never
);
const running = service.runBoundedLocalApplicationActivity(() => activity.promise);
@@ -32,4 +60,34 @@ describe("ObsidianReplicatorService", () => {
expect(service.boundedLocalApplicationActivityCount.value).toBe(0);
expect(service.boundedRemoteActivityCount.value).toBe(0);
});
it("allows desktop sleep throughout bounded synchronisation activity when configured", async () => {
const runWithWakeLock = vi.fn(async (task: () => Promise<void>) => await task());
const service = new ObsidianReplicatorService(
{ events: {}, translate: String } as never,
{
settingService: {
onRealiseSetting: handler(),
currentSettings: () => ({
allowSleepDuringSynchronisation: false,
allowSleepDuringSynchronisationOnDesktop: true,
}),
},
appLifecycleService: { onSuspending: handler(), getUnresolvedMessages: handler() },
databaseEventService: {
onResetDatabase: handler(),
onDatabaseInitialisation: handler(),
onDatabaseInitialised: handler(),
onDatabaseHasReady: handler(),
},
activityRunner: { run: runWithWakeLock },
isMobile: () => false,
} as never
);
await service.runBoundedRemoteActivity(async () => undefined);
await service.runBoundedLocalApplicationActivity(async () => undefined);
expect(runWithWakeLock).not.toHaveBeenCalled();
});
});

View File

@@ -481,6 +481,11 @@ span.ls-mark-cr::after {
font-size: 80%;
}
.is-mobile.is-ios .livesync-status {
box-sizing: border-box;
top: calc(var(--header-height) + var(--view-header-height, var(--header-height)) + var(--size-4-2));
}
div.workspace-leaf-content[data-type="bases"] .livesync-status {
top: calc(var(--bases-header-height) + var(--header-height));
padding: 5px;
@@ -493,6 +498,13 @@ div.workspace-leaf-content[data-type="bases"] .livesync-status {
padding-right: 18px;
}
.is-mobile.is-ios div.workspace-leaf-content[data-type="bases"] .livesync-status {
top: calc(
var(--bases-header-height) + var(--header-height) + var(--view-header-height, var(--header-height)) +
var(--size-4-2)
);
}
.livesync-status div {
opacity: 0.6;
-webkit-filter: grayscale(100%);

View File

@@ -18,7 +18,14 @@ type LiveSyncTestPlugin = {
core: {
services: {
setting: {
currentSettings(): { versionUpFlash: string };
currentSettings(): {
versionUpFlash: string;
allowSleepDuringSynchronisation: boolean;
allowSleepDuringSynchronisationOnDesktop: boolean;
useAdvancedMode: boolean;
usePowerUserMode: boolean;
useEdgeCaseMode: boolean;
};
getSmallConfig(key: string): string | null;
};
};
@@ -196,6 +203,30 @@ async function verifyConfigDoctorFollowsCompatibilityReview(): Promise<void> {
async function verifyEffectiveSettings(): Promise<void> {
await withObsidianPage(obsidianRemoteDebuggingPort(), async (page) => {
const sleepPreferences = await page.evaluate(() => {
const plugin = (globalThis as ObsidianTestGlobal).app?.plugins?.plugins["obsidian-livesync"];
if (plugin === undefined) throw new Error("Self-hosted LiveSync is unavailable");
const settings = plugin.core.services.setting.currentSettings();
return {
general: settings.allowSleepDuringSynchronisation,
desktop: settings.allowSleepDuringSynchronisationOnDesktop,
advancedMode: settings.useAdvancedMode,
powerUserMode: settings.usePowerUserMode,
edgeCaseMode: settings.useEdgeCaseMode,
};
});
if (
sleepPreferences.general !== false ||
sleepPreferences.desktop !== true ||
sleepPreferences.advancedMode !== false ||
sleepPreferences.powerUserMode !== false ||
sleepPreferences.edgeCaseMode !== false
) {
throw new Error(
`Unexpected effective sleep preferences: ${JSON.stringify(sleepPreferences)}`
);
}
await page.evaluate(() => {
const setting = (globalThis as ObsidianTestGlobal).app?.setting;
if (setting === undefined) throw new Error("Obsidian settings are unavailable");
@@ -205,6 +236,16 @@ async function verifyEffectiveSettings(): Promise<void> {
const liveSyncSettings = page.locator(".sls-setting");
await liveSyncSettings.waitFor({ state: "visible", timeout: uiTimeoutMs });
const settingsClass = await liveSyncSettings.getAttribute("class");
for (const modeClass of [
"menu-setting-advanced-disabled",
"menu-setting-poweruser-disabled",
"menu-setting-edgecase-disabled",
]) {
if (!settingsClass?.split(/\s+/u).includes(modeClass)) {
throw new Error(`The settings UI did not disable ${modeClass}.`);
}
}
await liveSyncSettings.locator('.sls-setting-menu-btn[title="Change Log"]').click();
const removedAcknowledgements = liveSyncSettings.getByRole("button", {
@@ -226,6 +267,35 @@ async function verifyEffectiveSettings(): Promise<void> {
});
await liveSyncSettings.locator('.sls-setting-menu-btn[title="Sync Settings"]').click();
const generalSleepSetting = liveSyncSettings.locator(".setting-item").filter({
has: page.getByText("Allow sleep during synchronisation", { exact: true }),
});
await generalSleepSetting.waitFor({ state: "visible", timeout: uiTimeoutMs });
if ((await generalSleepSetting.locator(".checkbox-container.is-enabled").count()) !== 0) {
throw new Error("The general sleep preference must be disabled by default.");
}
const desktopSleepSetting = liveSyncSettings.locator(".setting-item").filter({
has: page.getByText("Allow sleep during synchronisation on the desktop", { exact: true }),
});
await desktopSleepSetting.waitFor({ state: "visible", timeout: uiTimeoutMs });
if ((await desktopSleepSetting.locator(".checkbox-container.is-enabled").count()) !== 1) {
throw new Error("The desktop sleep preference must be enabled by default.");
}
await liveSyncSettings.locator('.sls-setting-menu-btn[title="Setup"]').click();
const advancedModeSetting = liveSyncSettings.locator(".setting-item").filter({
has: page.getByText("Enable advanced features", { exact: true }),
});
await advancedModeSetting.waitFor({ state: "visible", timeout: uiTimeoutMs });
await advancedModeSetting.locator(".checkbox-container").click();
await page.waitForFunction(
() => document.querySelector(".sls-setting")?.classList.contains("menu-setting-advanced-enabled") === true,
undefined,
{ timeout: uiTimeoutMs }
);
await liveSyncSettings.locator('.sls-setting-menu-btn[title="Sync Settings"]').click();
const deletionPanel = liveSyncSettings
.locator("h4.sls-setting-panel-title")
.filter({ hasText: "Deletion Propagation" })
@@ -271,8 +341,9 @@ async function main(): Promise<void> {
syncAfterMerge: false,
periodicReplication: false,
handleFilenameCaseSensitive: false,
useAdvancedMode: true,
useEdgeCaseMode: true,
useAdvancedMode: false,
usePowerUserMode: false,
useEdgeCaseMode: false,
},
});
await waitForLiveSyncCoreReady(cli.binary, session.cliEnv);

View File

@@ -12,6 +12,22 @@ Earlier releases remain available in the 0.25 release history and the legacy rel
## Unreleased
### Synchronisation and storage
#### Improved
- Added settings to control whether finite synchronisation operations keep the screen awake. Desktop devices now allow automatic sleep by default, while mobile devices retain screen-awake protection unless the general option is enabled (#1073).
### Interface and translation
#### Improved
- Korean translations now cover the complete current catalogue across Setup, P2P, remote configuration, diagnostics, and maintenance (PR #1075). Thank you to @motolies for the improvement!
#### Fixed
- The in-editor LiveSync status on iOS now remains below the view-header controls instead of overlapping them (PR #1067). Thank you to @Hsiii for the improvement!
## 1.0.4
5th August, 2026