{ "common": { "loading": "로딩 중...", "error": "오류", "save": "저장", "cancel": "취소", "back": "뒤로", "done": "완료", "continue": "계속", "refresh": "새로고침", "create": "생성", "delete": "삭제", "confirm": "확인", "created": "생성일", "expires": "만료일", "name": "이름", "dashboard": "대시보드", "backToDashboard": "← 대시보드", "copied": "복사됨!", "copyToClipboard": "클립보드에 복사", "verifying": "확인 중...", "saving": "저장 중...", "creating": "생성 중...", "updating": "업데이트 중...", "sending": "전송 중...", "authenticating": "인증 중...", "checking": "확인 중...", "redirecting": "리디렉션 중...", "signIn": "로그인", "verify": "확인", "remove": "삭제", "revoke": "취소", "resendCode": "코드 재전송", "startOver": "처음부터 다시", "tryAgain": "다시 시도", "password": "비밀번호", "email": "이메일", "emailAddress": "이메일 주소", "handle": "핸들", "did": "DID", "verificationCode": "인증 코드", "inviteCode": "초대 코드", "newPassword": "새 비밀번호", "confirmPassword": "비밀번호 확인", "enterSixDigitCode": "6자리 코드 입력", "passwordHint": "8자 이상", "enterPassword": "비밀번호를 입력하세요", "emailPlaceholder": "you@example.com", "verified": "인증됨", "disabled": "비활성화됨", "available": "사용 가능", "deactivated": "비활성화됨", "unverified": "미인증", "backToLogin": "로그인으로 돌아가기", "backToSettings": "설정으로 돌아가기", "alreadyHaveAccount": "이미 계정이 있으신가요?", "createAccount": "계정 만들기", "passwordsMismatch": "비밀번호가 일치하지 않습니다", "passwordTooShort": "비밀번호는 8자 이상이어야 합니다" }, "login": { "title": "로그인", "subtitle": "PDS 계정을 관리하려면 로그인하세요", "button": "로그인", "redirecting": "리디렉션 중...", "chooseAccount": "계정 선택", "signInToAnother": "다른 계정으로 로그인", "backToSaved": "← 저장된 계정으로 돌아가기", "forgotPassword": "비밀번호를 잊으셨나요?", "lostPasskey": "패스키를 분실하셨나요?", "noAccount": "계정이 없으신가요?", "createAccount": "계정 만들기", "removeAccount": "저장된 계정에서 삭제", "infoSavedAccountsTitle": "저장된 계정", "infoSavedAccountsDesc": "계정을 클릭하면 즉시 로그인할 수 있습니다. 세션 토큰은 이 브라우저에 안전하게 저장됩니다.", "infoNewAccountTitle": "새 계정", "infoNewAccountDesc": "로그인 버튼을 사용하여 다른 계정을 추가하세요. ×를 클릭하여 저장된 계정을 제거할 수 있습니다.", "infoSecureSignInTitle": "안전한 로그인", "infoSecureSignInDesc": "안전한 인증을 위해 리디렉션됩니다. 패스키나 2단계 인증이 활성화되어 있으면 해당 인증도 요청됩니다.", "infoStaySignedInTitle": "로그인 유지", "infoStaySignedInDesc": "로그인 후 계정이 이 브라우저에 저장되어 다음에 빠르게 접속할 수 있습니다.", "infoRecoveryTitle": "계정 복구", "infoRecoveryDesc": "비밀번호나 패스키를 분실하셨나요? 로그인 버튼 아래의 복구 링크를 사용하세요." }, "verification": { "title": "계정 인증", "subtitle": "계정 인증이 필요합니다. 인증 방법으로 전송된 코드를 입력하세요.", "codeLabel": "인증 코드", "codePlaceholder": "6자리 코드 입력", "verifyButton": "계정 인증", "resent": "인증 코드를 다시 보냈습니다!" }, "register": { "title": "계정 만들기", "subtitle": "이 PDS에 새 계정을 만듭니다", "subtitleKeyChoice": "외부 did:web 신원을 설정하는 방법을 선택하세요.", "subtitleInitialDidDoc": "계속하려면 DID 문서를 업로드하세요.", "subtitleVerify": "계속하려면 {channel}을(를) 인증하세요.", "subtitleUpdatedDidDoc": "PDS 서명 키로 DID 문서를 업데이트하세요.", "subtitleActivating": "계정을 활성화하는 중...", "subtitleComplete": "계정이 성공적으로 생성되었습니다!", "redirecting": "대시보드로 이동 중...", "infoIdentityDesc": "신원은 ATProto 네트워크에서 계정이 어떻게 식별되는지를 결정합니다. 대부분의 사용자는 표준 옵션을 선택해야 합니다.", "infoContactDesc": "이 정보는 계정 인증과 계정 보안에 관한 중요한 알림을 보내는 데 사용됩니다.", "infoNextTitle": "다음 단계는?", "infoNextDesc": "계정 생성 후 연락 방법을 인증하면 새로운 신원으로 모든 ATProto 앱을 사용할 수 있습니다.", "migrateTitle": "이미 Bluesky 계정이 있으신가요?", "migrateDescription": "새 계정을 만드는 대신 기존 계정을 이 PDS로 마이그레이션할 수 있습니다. 팔로워, 게시물, ID가 함께 이전됩니다.", "migrateLink": "PDS Moover로 마이그레이션", "handle": "핸들", "handlePlaceholder": "사용자 이름", "handleHint": "전체 핸들: @{handle}", "handleDotWarning": "사용자 정의 도메인 핸들은 계정 생성 후 설정에서 구성할 수 있습니다.", "password": "비밀번호", "passwordPlaceholder": "8자 이상", "confirmPassword": "비밀번호 확인", "confirmPasswordPlaceholder": "비밀번호 재입력", "identityType": "ID 유형", "identityHint": "분산 ID를 관리하는 방법을 선택하세요.", "didPlc": "did:plc", "didPlcRecommended": "(권장)", "didPlcHint": "PLC 디렉토리에서 관리하는 이동 가능한 ID", "didWeb": "did:web", "didWebHint": "이 PDS에서 호스팅되는 ID (아래 경고 참조)", "didWebDisabledHint": "이 PDS에서 사용할 수 없음 - did:plc를 사용하거나 자체 did:web을 가져오세요", "didWebBYOD": "did:web (자체 도메인)", "didWebBYODHint": "자체 도메인 사용", "didWebWarningTitle": "중요: 장단점을 이해하세요", "didWebWarning1": "이 PDS에 영구 연결:", "didWebWarning1Detail": "ID는 {did}가 됩니다. 나중에 다른 PDS로 마이그레이션하더라도 이 서버는 계속 DID 문서를 호스팅해야 합니다.", "didWebWarning2": "복구 메커니즘 없음:", "didWebWarning2Detail": "did:plc와 달리 did:web에는 순환 키가 없습니다. 이 PDS가 영구적으로 오프라인이 되면 ID를 복구할 수 없습니다.", "didWebWarning3": "우리의 약속:", "didWebWarning3Detail": "마이그레이션하면 새 PDS를 가리키는 최소한의 DID 문서를 계속 제공합니다. ID는 계속 작동합니다.", "didWebWarning4": "권장:", "didWebWarning4Detail": "did:web을 선호하는 특별한 이유가 없다면 did:plc를 선택하세요.", "externalDid": "귀하의 did:web", "externalDidPlaceholder": "did:web:yourdomain.com", "externalDidHint": "도메인은 /.well-known/did.json에서 이 PDS를 가리키는 유효한 DID 문서를 제공해야 합니다", "contactMethod": "연락 방법", "contactMethodHint": "계정 인증 및 알림 수신 방법을 선택하세요. 하나만 필요합니다.", "verificationMethod": "인증 방법", "email": "이메일", "emailAddress": "이메일 주소", "emailPlaceholder": "you@example.com", "discord": "Discord", "discordId": "Discord 사용자 ID", "discordIdPlaceholder": "Discord 사용자 ID", "discordIdHint": "숫자 Discord 사용자 ID (개발자 모드를 활성화하여 찾기)", "telegram": "Telegram", "telegramUsername": "Telegram 사용자 이름", "telegramUsernamePlaceholder": "@yourusername", "signal": "Signal", "signalNumber": "Signal 전화번호", "signalNumberPlaceholder": "+821012345678", "signalNumberHint": "국가 코드 포함 (예: 한국 +82)", "notConfigured": "구성되지 않음", "inviteCode": "초대 코드", "inviteCodePlaceholder": "초대 코드 입력", "inviteCodeRequired": "필수", "createButton": "계정 만들기", "alreadyHaveAccount": "이미 계정이 있으신가요?", "signIn": "로그인", "passkeyAccount": "패스키", "passwordAccount": "비밀번호", "validation": { "handleRequired": "핸들은 필수입니다", "handleNoDots": "핸들에 점을 포함할 수 없습니다. 계정 생성 후 사용자 정의 도메인을 설정할 수 있습니다.", "passwordRequired": "비밀번호는 필수입니다", "passwordLength": "비밀번호는 8자 이상이어야 합니다", "passwordsMismatch": "비밀번호가 일치하지 않습니다", "inviteCodeRequired": "초대 코드는 필수입니다", "externalDidRequired": "외부 did:web은 필수입니다", "externalDidFormat": "외부 DID는 did:web:으로 시작해야 합니다", "emailRequired": "이메일 인증에는 이메일이 필요합니다", "discordIdRequired": "Discord 인증에는 Discord ID가 필요합니다", "telegramRequired": "Telegram 인증에는 Telegram 사용자 이름이 필요합니다", "signalRequired": "Signal 인증에는 전화번호가 필요합니다" } }, "dashboard": { "title": "대시보드", "switchAccount": "계정 전환", "addAnotherAccount": "다른 계정 추가", "signOut": "@{handle} 로그아웃", "deactivatedTitle": "계정 비활성화됨", "deactivatedMessage": "계정이 현재 비활성화되어 있습니다. 이는 일반적으로 계정 마이그레이션 중에 발생합니다. 계정이 다시 활성화될 때까지 일부 기능이 제한될 수 있습니다.", "accountOverview": "계정 개요", "handle": "핸들", "did": "DID", "primaryContact": "주요 연락처", "admin": "관리자", "deactivated": "비활성화됨", "verified": "인증됨", "unverified": "미인증", "navAppPasswords": "앱 비밀번호", "navAppPasswordsDesc": "타사 앱의 비밀번호 관리", "navSessions": "활성 세션", "navSessionsDesc": "로그인 세션 보기 및 관리", "navInviteCodes": "초대 코드", "navInviteCodesDesc": "초대 코드 보기 및 생성", "navSettings": "계정 설정", "navSettingsDesc": "이메일, 비밀번호, 핸들 등", "navSecurity": "보안", "navSecurityDesc": "2단계 인증", "navComms": "통신 설정", "navCommsDesc": "Discord, Telegram, Signal 채널", "navRepo": "저장소 탐색기", "navRepoDesc": "AT Protocol 레코드 탐색 및 관리", "navDelegation": "위임", "navDelegationDesc": "계정 컨트롤러 및 위임된 계정 관리", "navAdmin": "관리 패널", "navAdminDesc": "서버 통계 및 관리 작업", "navDidDocument": "DID 문서", "navDidDocumentDesc": "DID 문서 및 키 관리", "navDidDocumentDescActive": "DID 문서 설정 편집", "navBackup": "백업 다운로드", "navBackupDesc": "저장소를 CAR 파일로 다운로드", "downloadingBackup": "다운로드 중...", "backupFailed": "백업 다운로드 실패", "migrated": "마이그레이션됨", "migratedTitle": "계정 마이그레이션됨", "migratedMessage": "계정이 {pds}로 마이그레이션되었습니다. DID 문서는 여전히 여기에서 호스팅됩니다.", "navMigrateAgain": "다시 마이그레이션", "navMigrateAgainDesc": "다른 PDS로 이동하고 DID 문서 업데이트" }, "didEditor": { "title": "DID 문서 편집기", "preview": "현재 DID 문서", "verificationMethods": "검증 방법 (서명 키)", "verificationMethodsDesc": "DID를 대신하여 동작할 수 있는 서명 키입니다. 새 PDS로 마이그레이션할 때 해당 서명 키를 여기에 추가하세요.", "addKey": "키 추가", "removeKey": "삭제", "keyId": "키 ID", "keyIdPlaceholder": "#atproto", "publicKey": "공개 키 (Multibase)", "publicKeyPlaceholder": "zQ3sh...", "noKeys": "구성된 검증 방법이 없습니다. 로컬 PDS 키를 사용 중입니다.", "alsoKnownAs": "다른 이름 (핸들)", "alsoKnownAsDesc": "DID를 가리키는 핸들입니다. 새 PDS에서 핸들이 변경되면 업데이트하세요.", "addHandle": "핸들 추가", "removeHandle": "삭제", "handle": "핸들", "handlePlaceholder": "at://handle.pds.com", "noHandles": "구성된 핸들이 없습니다. 로컬 핸들을 사용 중입니다.", "serviceEndpoint": "서비스 엔드포인트", "serviceEndpointDesc": "현재 계정 데이터를 호스팅하는 PDS입니다. 마이그레이션할 때 업데이트하세요.", "currentPds": "현재 PDS URL", "save": "변경사항 저장", "success": "DID 문서가 업데이트되었습니다", "saveFailed": "DID 문서 저장에 실패했습니다", "loadFailed": "DID 문서 로드에 실패했습니다", "invalidMultibase": "공개 키는 'z'로 시작하는 유효한 multibase 문자열이어야 합니다", "invalidHandle": "핸들은 at:// URI여야 합니다 (예: at://handle.example.com)", "helpTitle": "이것은 무엇인가요?", "helpText": "다른 PDS로 마이그레이션하면 해당 PDS가 새 서명 키를 생성합니다. 여기에서 DID 문서를 업데이트하여 새 키와 위치를 가리키도록 하세요." }, "settings": { "title": "계정 설정", "language": "언어", "languageDescription": "선호하는 언어를 선택하세요", "changeEmail": "이메일 변경", "currentEmail": "현재: {email}", "newEmail": "새 이메일", "newEmailPlaceholder": "new@example.com", "changeEmailButton": "이메일 변경", "requesting": "요청 중...", "verificationCode": "인증 코드", "verificationCodePlaceholder": "인증 코드 입력", "confirmEmailChange": "이메일 변경 확인", "updating": "업데이트 중...", "changeHandle": "핸들 변경", "currentHandle": "현재: @{handle}", "pdsHandle": "PDS 핸들", "customDomain": "사용자 정의 도메인", "customDomainDescription": "자체 도메인을 핸들로 사용합니다. 먼저 도메인 소유권을 확인해야 합니다.", "setupInstructions": "설정 지침", "setupMethodsIntro": "다음 인증 방법 중 하나를 선택하세요:", "dnsMethod": "방법 1: DNS TXT 레코드 (권장)", "dnsMethodDesc": "도메인에 이 TXT 레코드 추가:", "httpMethod": "방법 2: HTTP Well-Known 파일", "httpMethodDesc": "이 URL에서 DID 제공:", "httpMethodContent": "파일에는 다음만 포함:", "yourDomain": "도메인", "yourDomainPlaceholder": "example.com", "verifyAndUpdate": "확인 후 핸들 업데이트", "newHandle": "새 핸들", "newHandlePlaceholder": "yourhandle", "changeHandleButton": "핸들 변경", "changePassword": "비밀번호 변경", "currentPassword": "현재 비밀번호", "currentPasswordPlaceholder": "현재 비밀번호 입력", "newPassword": "새 비밀번호", "newPasswordPlaceholder": "8자 이상", "confirmNewPassword": "새 비밀번호 확인", "confirmNewPasswordPlaceholder": "새 비밀번호 재입력", "changePasswordButton": "비밀번호 변경", "changing": "변경 중...", "setPassword": "비밀번호 설정", "setPasswordDescription": "현재 계정은 패스키 전용입니다. 비밀번호를 추가하면 패스키와 함께 기존 로그인 방식도 사용할 수 있습니다.", "setPasswordButton": "비밀번호 설정", "setting": "설정 중...", "exportData": "데이터 내보내기", "exportDataDescription": "전체 저장소를 CAR (Content Addressable Archive) 파일로 다운로드합니다. 모든 게시물, 좋아요, 팔로우 및 기타 데이터가 포함됩니다.", "downloadRepo": "저장소 다운로드", "downloadBlobs": "미디어 다운로드", "exporting": "내보내기 중...", "backups": { "title": "백업", "description": "자동 백업을 관리하고 계정 데이터를 복원하세요. 백업에는 모든 기록과 blob이 포함됩니다.", "enableAutomatic": "자동 백업", "enabled": "활성화됨", "disabled": "비활성화됨", "toggleFailed": "백업 설정 변경 실패", "noBackups": "아직 백업이 없습니다", "blocks": "블록", "download": "다운로드", "delete": "삭제", "createNow": "지금 백업 생성", "created": "백업이 생성되었습니다", "createFailed": "백업 생성 실패", "downloadFailed": "백업 다운로드 실패", "deleted": "백업이 삭제되었습니다", "deleteFailed": "백업 삭제 실패", "restoreTitle": "백업에서 복원", "restoreDescription": "이전에 내보낸 CAR 파일에서 계정 데이터를 복원합니다. 이렇게 하면 현재 저장소가 업로드한 백업으로 교체됩니다.", "selectFile": "CAR 파일 선택", "selectedFile": "선택된 파일", "restore": "백업 복원", "restoring": "복원 중...", "restored": "백업이 성공적으로 복원되었습니다", "restoreFailed": "백업 복원 실패" }, "deleteAccount": "계정 삭제", "deleteWarning": "이 작업은 되돌릴 수 없습니다. 모든 데이터가 영구적으로 삭제됩니다.", "requestDeletion": "계정 삭제 요청", "confirmationCode": "확인 코드", "confirmationCodePlaceholder": "확인 코드 입력", "yourPassword": "비밀번호", "yourPasswordPlaceholder": "비밀번호 입력", "permanentlyDelete": "계정 영구 삭제", "deleting": "삭제 중...", "messages": { "emailCodeSent": "알림 채널로 인증 코드를 보냈습니다", "emailCodeSentToCurrent": "현재 이메일 주소로 인증 코드를 보냈습니다", "emailUpdated": "이메일이 업데이트되었습니다", "emailUpdateFailed": "이메일 업데이트에 실패했습니다", "handleUpdated": "핸들이 업데이트되었습니다", "handleUpdateFailed": "핸들 업데이트에 실패했습니다", "passwordChanged": "비밀번호가 변경되었습니다", "passwordChangeFailed": "비밀번호 변경에 실패했습니다", "passwordSet": "비밀번호가 설정되었습니다", "passwordSetFailed": "비밀번호 설정에 실패했습니다", "passwordsMismatch": "비밀번호가 일치하지 않습니다", "passwordsDoNotMatch": "비밀번호가 일치하지 않습니다", "passwordLength": "비밀번호는 8자 이상이어야 합니다", "passwordTooShort": "비밀번호는 8자 이상이어야 합니다", "deletionCodeSent": "이메일로 삭제 확인을 보냈습니다", "deletionConfirmationSent": "이메일로 삭제 확인을 보냈습니다", "deletionRequestFailed": "계정 삭제 요청에 실패했습니다", "deleteConfirmation": "정말로 계정을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", "deletionFailed": "계정 삭제에 실패했습니다", "repoExported": "저장소를 내보냈습니다", "blobsExported": "미디어 파일을 내보냈습니다", "noBlobsToExport": "내보낼 미디어 파일이 없습니다", "exportFailed": "내보내기에 실패했습니다", "confirmDelete": "정말로 계정을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다." } }, "appPasswords": { "title": "앱 비밀번호", "description": "앱 비밀번호를 사용하면 기본 비밀번호를 제공하지 않고 타사 앱에 로그인할 수 있습니다. 각 앱 비밀번호는 개별적으로 취소할 수 있습니다.", "createNew": "새 앱 비밀번호 만들기", "appNamePlaceholder": "앱 이름 (예: Graysky, Skeets)", "created": "앱 비밀번호가 생성되었습니다", "createdMessage": "지금 이 비밀번호를 복사하세요. 다시 볼 수 없습니다.", "yourPasswords": "앱 비밀번호 목록", "noPasswords": "앱 비밀번호가 아직 없습니다", "revoke": "취소", "revoking": "취소 중...", "revokeConfirm": "앱 비밀번호 \"{name}\"을(를) 취소하시겠습니까? 이 비밀번호를 사용하는 앱은 더 이상 계정에 액세스할 수 없습니다.", "saveWarningTitle": "중요: 이 앱 비밀번호를 저장하세요!", "saveWarningMessage": "이 비밀번호는 패스키 또는 OAuth를 지원하지 않는 앱에 로그인하는 데 필요합니다. 한 번만 볼 수 있습니다.", "acknowledgeLabel": "앱 비밀번호를 안전한 곳에 저장했습니다", "permissions": "권한", "scopeFull": "전체 권한", "scopeReadOnly": "읽기 전용", "scopePostOnly": "게시만 가능", "scopeCustom": "사용자 지정", "byController": "컨트롤러 생성" }, "sessions": { "title": "활성 세션", "loadingSessions": "세션 로딩 중...", "noSessions": "활성 세션이 없습니다.", "current": "현재", "oauth": "OAuth", "session": "세션", "signOut": "로그아웃", "revoke": "취소", "revokeAll": "다른 모든 세션 취소", "revokeCurrentConfirm": "이 세션에서 로그아웃됩니다. 계속하시겠습니까?", "revokeConfirm": "이 세션을 취소하시겠습니까?", "revokeAllConfirm": "{count}개의 다른 세션을 취소합니다. 계속하시겠습니까?", "noOtherSessions": "취소할 다른 세션이 없습니다", "failedToLoad": "세션 로딩에 실패했습니다", "failedToRevoke": "세션 취소에 실패했습니다", "failedToRevokeAll": "세션 취소에 실패했습니다", "created": "생성일:", "expires": "만료일:", "daysAgo": "{count}일 전", "hoursAgo": "{count}시간 전", "minutesAgo": "{count}분 전", "justNow": "방금" }, "inviteCodes": { "title": "초대 코드", "description": "초대 코드로 친구를 이 PDS에 초대할 수 있습니다. 각 코드는 한 번만 사용할 수 있습니다.", "createNew": "새 초대 코드 만들기", "uses": "사용 횟수", "usesPlaceholder": "사용 횟수 (1-100)", "yourCodes": "초대 코드 목록", "noCodes": "초대 코드가 아직 없습니다", "available": "사용 가능", "used": "@{handle}이(가) 사용함", "disabled": "비활성화됨", "usedBy": "사용자", "disableConfirm": "이 초대 코드를 비활성화하시겠습니까? 더 이상 사용할 수 없습니다.", "created": "초대 코드가 생성되었습니다", "copy": "복사", "createdOn": "{date}에 생성됨" }, "security": { "title": "보안", "passkeys": "패스키", "passkeysDescription": "패스키는 기기의 내장 보안(지문, 얼굴 또는 PIN)을 사용하여 안전한 비밀번호 없는 인증을 제공합니다.", "addPasskey": "패스키 추가", "adding": "추가 중...", "noPasskeys": "등록된 패스키가 없습니다", "passkeyName": "패스키 이름", "passkeyNamePlaceholder": "예: MacBook Pro, iPhone", "register": "등록", "registering": "등록 중...", "rename": "이름 변경", "renaming": "이름 변경 중...", "deletePasskey": "삭제", "deletePasskeyConfirm": "패스키 \"{name}\"을(를) 삭제하시겠습니까? 더 이상 로그인에 사용할 수 없습니다.", "totp": "인증 앱 (TOTP)", "totpDescription": "Google Authenticator, Authy 또는 1Password와 같은 인증 앱을 2단계 인증에 사용합니다.", "totpEnabled": "TOTP가 활성화되었습니다", "totpDisabled": "TOTP가 비활성화되었습니다", "enableTotp": "TOTP 활성화", "disableTotp": "TOTP 비활성화", "disabling": "비활성화 중...", "totpSetup": "인증 앱 설정", "totpSetupInstructions": "인증 앱으로 이 QR 코드를 스캔한 다음 6자리 코드를 입력하여 확인합니다.", "totpCode": "인증 코드", "totpCodePlaceholder": "6자리 코드 입력", "verifyAndEnable": "확인 후 활성화", "backupCodes": "백업 코드", "backupCodesDescription": "인증 앱에 액세스할 수 없는 경우 이 코드를 사용하여 로그인합니다. 각 코드는 한 번만 사용할 수 있습니다.", "regenerateBackupCodes": "백업 코드 재생성", "regenerating": "재생성 중...", "regenerateConfirm": "백업 코드를 재생성하시겠습니까? 현재 코드는 더 이상 작동하지 않습니다.", "legacyLogin": "레거시 로그인", "legacyLoginDescription": "사용자 이름/비밀번호로 직접 로그인(레거시 모드)을 허용합니다. 비활성화하면 MFA가 있는 OAuth를 사용해야 합니다.", "legacyLoginOn": "레거시 로그인이 활성화되었습니다", "legacyLoginOff": "레거시 로그인이 비활성화되었습니다", "enableLegacyLogin": "레거시 로그인 활성화", "disableLegacyLogin": "레거시 로그인 비활성화", "legacyLoginWarning": "경고: 레거시 로그인을 활성화하면 직접 비밀번호 로그인에 대한 MFA가 우회됩니다. 앱 호환성이 필요한 경우에만 활성화하세요.", "totpPasswordWarning": "TOTP가 활성화되면 Bluesky 앱(또는 기타 레거시 앱)에서 비밀번호를 변경할 수 없습니다. 비밀번호를 변경하려면 두 가지 방법이 있습니다:", "totpPasswordOption1Label": "여기에서 변경:", "totpPasswordOption1Text": "이 웹사이트의", "totpPasswordOption1Link": "설정 페이지", "totpPasswordOption1Suffix": "에서 인증 앱으로 확인할 수 있습니다.", "totpPasswordOption2Label": "먼저 세션 확인:", "totpPasswordOption2Text": "", "totpPasswordOption2Link": "재인증 옵션", "totpPasswordOption2Suffix": "을 사용하여 TOTP로 Bluesky 세션을 확인하면 일시적으로 비밀번호 변경이 가능합니다.", "legacyAppsTitle": "레거시 앱이란?", "legacyAppsDescription": "일부 앱(공식 Bluesky 앱 등)은 비밀번호만 필요한 이전 인증을 사용합니다. MFA가 활성화되어 있으면 이러한 앱은 두 번째 인증 요소를 우회합니다. 레거시 로그인을 비활성화하면 모든 앱이 OAuth를 사용하도록 강제되어 MFA가 적절히 적용됩니다.", "password": "비밀번호", "passwordStatus": "비밀번호가 설정되었습니다", "noPassword": "비밀번호가 설정되지 않음 (패스키 전용 계정)", "setPassword": "비밀번호 설정", "removePassword": "비밀번호 제거", "removePasswordConfirm": "비밀번호를 제거하시겠습니까? 로그인에 패스키가 필요합니다.", "removing": "제거 중...", "loading": "로딩 중...", "loadingPasskeys": "패스키 로딩 중...", "cancel": "취소", "save": "저장", "back": "뒤로", "next": "다음: 코드 확인", "copyToClipboard": "클립보드에 복사", "savedMyCodes": "코드를 저장했습니다", "cantScan": "스캔할 수 없나요? 수동 입력", "unnamedPasskey": "이름 없는 패스키", "added": "추가됨", "lastUsed": "마지막 사용", "passwordDescription": "계정 비밀번호를 관리합니다. 패스키를 설정한 경우 완전한 비밀번호 없는 경험을 위해 비밀번호를 제거할 수 있습니다.", "disableTotpWarning": "이렇게 하면 계정 보안이 약해집니다.", "removePasswordWarning": "이렇게 하면 계정이 패스키 전용이 됩니다. 등록된 패스키로만 로그인할 수 있습니다. 모든 패스키에 액세스할 수 없게 되면 알림 채널을 사용하여 계정을 복구할 수 있습니다.", "beforeProceeding": "계속하기 전에:", "beforeProceedingItem1": "최소 하나의 신뢰할 수 있는 패스키가 등록되어 있는지 확인", "beforeProceedingItem2": "여러 기기에 패스키 등록을 고려", "beforeProceedingItem3": "복구 알림 채널이 최신인지 확인", "addPasskeyFirst": "비밀번호를 제거하려면 먼저 최소 하나의 패스키를 추가하세요.", "passkeyOnlyHint": "패스키로만 로그인합니다. 패스키에 액세스할 수 없게 되면 로그인 페이지의 '패스키를 분실하셨나요?' 링크를 사용하여 계정을 복구할 수 있습니다.", "addPasswordHint": "비밀번호를 추가하시겠습니까? 설정에서 설정하세요.", "goToSettings": "설정으로 이동", "trustedDevices": "신뢰할 수 있는 기기", "trustedDevicesDescription": "로그인 시 2단계 인증을 건너뛸 수 있는 기기를 관리합니다. 신뢰는 30일간 유효하며 기기를 사용하면 자동으로 연장됩니다.", "manageTrustedDevices": "신뢰할 수 있는 기기 관리", "appCompatibility": "앱 호환성", "enterPassword": "비밀번호를 입력하세요", "sessionExpired": "세션이 만료되었습니다. 다시 로그인하세요.", "legacyLoginEnabled": "레거시 앱 로그인 활성화됨", "legacyLoginDisabled": "레거시 앱 로그인 비활성화됨 - OAuth 앱만 로그인 가능", "failedToUpdatePreference": "설정 업데이트에 실패했습니다", "passwordRemoved": "비밀번호가 제거되었습니다. 이제 계정은 패스키 전용입니다.", "failedToRemovePassword": "비밀번호 제거에 실패했습니다", "failedToLoadTotpStatus": "TOTP 상태 로딩에 실패했습니다", "totpEnabledSuccess": "2단계 인증이 활성화되었습니다", "totpDisabledSuccess": "2단계 인증이 비활성화되었습니다", "backupCodesCopied": "백업 코드가 클립보드에 복사되었습니다", "failedToLoadPasskeys": "패스키 로딩에 실패했습니다", "passkeysNotSupported": "이 브라우저에서 패스키가 지원되지 않습니다", "passkeyCreationCancelled": "패스키 생성이 취소되었습니다", "passkeyAddedSuccess": "패스키가 추가되었습니다", "passkeyDeleted": "패스키가 삭제되었습니다", "passkeyRenamed": "패스키 이름이 변경되었습니다" }, "comms": { "title": "통신 설정", "description": "비밀번호 재설정, 보안 알림, 계정 업데이트 등 중요한 메시지를 받는 방법을 선택하세요.", "preferredChannel": "선호 채널", "preferredChannelDescription": "메시지 수신 방법을 선택하세요. 선택하기 전에 채널을 설정해야 합니다.", "channelConfiguration": "채널 설정", "emailVia": "이메일로 메시지 받기", "discordVia": "Discord DM으로 메시지 받기", "telegramVia": "Telegram으로 메시지 받기", "signalVia": "Signal로 메시지 받기", "configureToEnable": "활성화하려면 아래에서 설정", "notConfiguredOnServer": "이 서버에서 설정되지 않음", "emailManagedInSettings": "이메일은 계정 설정에서 관리됩니다", "discordIdHint": "Discord 사용자 ID (사용자 이름 아님). Discord에서 개발자 모드를 활성화하여 복사하세요.", "telegramHint": "@ 기호 없이 Telegram 사용자 이름", "signalHint": "국가 코드가 포함된 Signal 전화번호", "primary": "기본", "verified": "인증됨", "notVerified": "미인증", "verifyButton": "인증", "verifyCodePlaceholder": "인증 코드 입력", "submit": "제출", "savePreferences": "설정 저장", "preferencesSaved": "통신 설정이 저장되었습니다", "verifiedSuccess": "{channel} 인증 완료", "messageHistory": "메시지 기록", "historyDescription": "계정에 전송된 최근 메시지를 확인합니다.", "loadHistory": "기록 불러오기", "hideHistory": "기록 숨기기", "noMessages": "메시지가 없습니다.", "sent": "전송됨", "failed": "실패" }, "repoExplorer": { "title": "저장소 탐색기", "description": "AT Protocol 레코드를 탐색하고 관리합니다.", "collections": "컬렉션", "noCollections": "컬렉션을 찾을 수 없습니다", "records": "레코드", "noRecords": "이 컬렉션에 레코드가 없습니다", "recordDetails": "레코드 세부 정보", "rkey": "레코드 키", "uri": "URI", "cid": "CID", "value": "값", "deleteRecord": "레코드 삭제", "deleteConfirm": "레코드 {rkey}을(를) 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", "unknownError": "알 수 없는 오류가 발생했습니다", "invalidJson": "잘못된 JSON", "collectionRequired": "컬렉션은 필수입니다", "recordCreated": "레코드 생성됨: {uri}", "recordUpdated": "레코드가 업데이트되었습니다", "recordDeleted": "레코드가 삭제되었습니다", "newRecord": "새 레코드", "createRecord": "레코드 생성", "filterCollections": "컬렉션 검색...", "filterRecords": "레코드 검색...", "noCollectionsYet": "컬렉션이 아직 없습니다. 첫 번째 레코드를 만들어 시작하세요.", "loadMore": "더 불러오기", "recordJson": "레코드 JSON", "updateRecord": "레코드 업데이트", "collectionNsid": "컬렉션 (NSID)", "recordKeyOptional": "레코드 키 (선택사항)", "autoGenerated": "비워두면 자동 생성 (TID)", "autoGeneratedHint": "비워두면 TID 기반 키가 자동 생성됩니다", "demoPostText": "안녕하세요, 제 PDS에서 보내는 첫 번째 게시물입니다!", "demoDisplayName": "표시 이름", "demoBio": "간단한 자기소개를 작성하세요." }, "admin": { "title": "관리 패널", "loading": "로딩 중...", "serverConfig": "서버 설정", "serverName": "서버 이름", "serverNamePlaceholder": "내 PDS", "serverNameHelp": "브라우저 탭 및 다른 곳에 표시됩니다", "serverLogo": "서버 로고", "logoPreview": "로고 미리보기", "removeLogo": "삭제", "logoHelp": "파비콘으로 사용되며 네비게이션 바에 표시됩니다", "themeColors": "테마 색상", "themeColorsHint": "기본 색상을 사용하려면 비워 두세요.", "primaryLight": "기본 (라이트 모드)", "primaryDark": "기본 (다크 모드)", "configSaved": "서버 설정이 저장되었습니다", "saveConfig": "설정 저장", "serverStats": "서버 통계", "users": "사용자", "repos": "저장소", "records": "레코드", "blobStorage": "Blob 저장소", "refreshStats": "통계 새로고침", "userManagement": "사용자 관리", "searchPlaceholder": "핸들로 검색 (선택사항)", "searchUsers": "사용자 검색", "noUsers": "사용자를 찾을 수 없습니다", "handle": "핸들", "email": "이메일", "status": "상태", "created": "생성일", "loadMore": "더 불러오기", "inviteCodes": "초대 코드", "loadInviteCodes": "초대 코드 불러오기", "refresh": "새로고침", "noInvites": "초대 코드가 없습니다", "code": "코드", "available": "사용 가능", "uses": "사용 횟수", "actions": "작업", "disable": "비활성화", "disableInviteConfirm": "초대 코드 {code}을(를) 비활성화하시겠습니까?", "active": "활성", "exhausted": "소진됨", "disabled": "비활성화됨", "userDetails": "사용자 세부 정보", "did": "DID", "invites": "초대", "enabled": "활성화됨", "enableInvites": "초대 활성화", "disableInvites": "초대 비활성화", "deleteAccount": "계정 삭제", "deleteConfirm": "계정 @{handle}을(를) 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", "verified": "인증됨", "unverified": "미인증", "deactivated": "비활성화됨", "colorDefault": "{color} (기본값)", "secondaryLight": "보조 (라이트 모드)", "secondaryDark": "보조 (다크 모드)" }, "oauth": { "login": { "title": "로그인", "subtitle": "앱을 계속하려면 로그인하세요", "signingIn": "로그인 중...", "authenticating": "인증 중...", "checkingPasskey": "패스키 확인 중...", "signInWithPasskey": "패스키로 로그인", "passkeyNotSetUp": "패스키가 설정되지 않음", "orUsePassword": "또는 비밀번호 사용", "password": "비밀번호", "rememberDevice": "이 기기 기억하기", "passkeyHintChecking": "패스키 상태 확인 중...", "passkeyHintAvailable": "패스키로 로그인", "passkeyHintNotAvailable": "이 계정에 등록된 패스키가 없습니다", "passkeyHint": "기기의 생체 인식 또는 보안 키 사용", "passwordPlaceholder": "비밀번호 입력", "usePasskey": "패스키 사용" }, "consent": { "title": "앱 승인", "appWantsAccess": "{app}이(가) 계정에 액세스하려고 합니다", "permissions": "이 앱은 다음을 수행할 수 있습니다:", "readProfile": "프로필 정보 읽기", "readPosts": "게시물 및 콘텐츠 읽기", "writePosts": "대신 게시물 작성 및 삭제", "readNotifications": "알림 읽기", "fullAccess": "계정에 대한 전체 액세스", "authorize": "승인", "deny": "거부", "authorizing": "승인 중...", "rememberChoice": "이 선택 기억", "signingInAs": "로그인 계정:", "permissionsRequested": "요청된 권한", "required": "필수", "rememberChoiceLabel": "이 앱에 대한 선택 기억하기" }, "accounts": { "title": "계정 선택", "subtitle": "계속할 계정 선택", "useAnother": "다른 계정 사용" }, "twoFactor": { "title": "2단계 인증", "subtitle": "추가 확인이 필요합니다", "usePasskey": "패스키 사용", "useTotp": "인증 앱 사용" }, "twoFactorCode": { "title": "2단계 인증", "subtitle": "{channel}(으)로 인증 코드를 보냈습니다. 아래에 코드를 입력하여 계속하세요.", "codeLabel": "인증 코드", "codePlaceholder": "6자리 코드 입력", "errors": { "missingRequestUri": "request_uri 매개변수가 없습니다", "verificationFailed": "인증에 실패했습니다", "connectionFailed": "서버에 연결하지 못했습니다", "unexpectedResponse": "서버로부터 예기치 않은 응답" } }, "totp": { "title": "인증 코드 입력", "subtitle": "인증 앱의 6자리 코드를 입력하세요", "codePlaceholder": "6자리 코드 입력", "useBackupCode": "백업 코드 사용", "backupCodePlaceholder": "백업 코드 입력", "trustDevice": "이 기기를 30일간 신뢰", "hintBackupCode": "백업 코드 사용 중", "hintTotpCode": "인증 코드 사용 중", "hintDefault": "인증 앱은 6자리, 백업 코드는 8자" }, "passkey": { "title": "패스키 확인", "subtitle": "패스키를 사용하여 본인 확인", "waiting": "패스키 대기 중...", "useTotp": "인증 앱 사용" }, "error": { "title": "승인 오류", "genericError": "승인 중 오류가 발생했습니다.", "tryAgain": "다시 시도", "backToApp": "앱으로 돌아가기" } }, "verify": { "title": "계정 인증", "subtitle": "{channel}(으)로 인증 코드를 보냈습니다. 아래에 입력하여 등록을 완료하세요.", "tokenTitle": "인증", "tokenSubtitle": "인증 코드와 전송된 식별자를 입력하세요.", "codePlaceholder": "XXXX-XXXX-XXXX-XXXX...", "codeLabel": "인증 코드", "codeHelp": "메시지에서 하이픈을 포함한 전체 코드를 복사하세요", "verifyButton": "계정 인증", "pleaseWait": "잠시 기다려 주세요...", "codeResent": "인증 코드를 다시 보냈습니다!", "codeResentDetail": "인증 코드가 전송되었습니다! 받은 편지함을 확인하세요.", "verified": "인증 완료!", "channelVerified": "{channel}이(가) 성공적으로 인증되었습니다.", "canNowSignIn": "이제 계정에 로그인할 수 있습니다.", "migrationContinue": "이 탭을 닫고 원래 창에서 마이그레이션을 계속할 수 있습니다.", "continue": "계속", "identifierLabel": "이메일 또는 식별자", "identifierPlaceholder": "you@example.com", "identifierHelp": "코드가 전송된 이메일 주소 또는 식별자", "verifyingAccount": "인증 중인 계정: @{handle}", "startOver": "다른 계정으로 다시 시작", "noPending": "보류 중인 인증이 없습니다.", "noPendingInfo": "최근에 계정을 만들고 인증이 필요한 경우 새 계정을 만들어야 합니다. 이미 계정을 인증한 경우 로그인할 수 있습니다.", "createAccount": "계정 만들기", "signIn": "로그인", "emailUpdateCodeHelp": "코드가 현재 이메일 주소로 전송되었습니다", "emailUpdateFailed": "이메일 주소 업데이트 실패", "emailUpdateRequiresAuth": "이메일 주소를 업데이트하려면 로그인해야 합니다.", "emailUpdateSubtitle": "새 이메일 주소와 현재 이메일로 전송된 인증 코드를 입력하세요.", "emailUpdateTitle": "이메일 주소 업데이트", "emailUpdated": "이메일 주소가 성공적으로 업데이트되었습니다.", "emailUpdatedInfo": "새 이메일 주소를 인증해야 할 수 있습니다.", "newEmailLabel": "새 이메일 주소", "newEmailPlaceholder": "new@example.com", "updateEmail": "이메일 업데이트", "updating": "업데이트 중..." }, "resetPassword": { "title": "비밀번호 재설정", "forgotTitle": "비밀번호를 잊으셨나요", "subtitle": "받은 코드를 입력하고 새 비밀번호를 선택하세요.", "forgotSubtitle": "핸들 또는 이메일을 입력하면 비밀번호 재설정 코드를 보내드립니다.", "handleOrEmail": "핸들 또는 이메일", "emailPlaceholder": "핸들 또는 you@example.com", "sendCode": "재설정 코드 보내기", "sending": "전송 중...", "codeSent": "비밀번호 재설정 코드를 보냈습니다! 선호하는 알림 채널을 확인하세요.", "enterCode": "받은 코드와 새 비밀번호를 입력하세요.", "code": "재설정 코드", "codePlaceholder": "재설정 코드 입력", "newPassword": "새 비밀번호", "newPasswordPlaceholder": "8자 이상", "confirmPassword": "비밀번호 확인", "confirmPasswordPlaceholder": "새 비밀번호 재입력", "resetButton": "비밀번호 재설정", "resetting": "재설정 중...", "success": "비밀번호가 재설정되었습니다!", "requestNewCode": "새 코드 요청", "passwordsMismatch": "비밀번호가 일치하지 않습니다", "passwordLength": "비밀번호는 8자 이상이어야 합니다" }, "recoverPasskey": { "title": "계정 복구", "invalidLinkTitle": "잘못된 복구 링크", "invalidLinkMessage": "이 복구 링크가 잘못되었거나 손상되었습니다. 새 복구 이메일을 요청하세요.", "goToLogin": "로그인으로 이동", "successTitle": "비밀번호가 설정되었습니다!", "successMessage": "임시 비밀번호가 설정되었습니다. 이 비밀번호로 로그인할 수 있습니다.", "successNextSteps": "로그인 후 보안 설정에서 새 패스키를 추가하여 패스키 전용 인증을 복원하는 것이 좋습니다.", "signIn": "로그인", "subtitle": "패스키 전용 계정에 대한 액세스를 복구하기 위해 임시 비밀번호를 설정합니다.", "newPassword": "새 비밀번호", "newPasswordPlaceholder": "8자 이상", "confirmPassword": "비밀번호 확인", "confirmPasswordPlaceholder": "비밀번호 재입력", "whatHappensNext": "다음 단계", "whatHappensNextDetail": "이 비밀번호를 설정한 후 로그인하여 보안 설정에서 새 패스키를 추가할 수 있습니다. 새 패스키를 추가한 후 임시 비밀번호를 제거할 수 있습니다.", "setPassword": "비밀번호 설정", "settingPassword": "비밀번호 설정 중...", "validation": { "passwordRequired": "새 비밀번호는 필수입니다", "passwordLength": "비밀번호는 8자 이상이어야 합니다", "passwordsMismatch": "비밀번호가 일치하지 않습니다" }, "errors": { "invalidLink": "잘못된 복구 링크입니다. 새 링크를 요청하세요.", "expired": "이 복구 링크가 만료되었습니다. 새 링크를 요청하세요." } }, "requestPasskeyRecovery": { "title": "패스키 계정 복구", "subtitle": "패스키에 액세스할 수 없나요? 핸들 또는 이메일을 입력하면 복구 링크를 보내드립니다.", "successTitle": "복구 링크 전송됨", "successMessage": "계정이 존재하고 패스키 전용 계정인 경우 선호하는 알림 채널로 복구 링크를 받게 됩니다.", "successInfo": "링크는 1시간 후 만료됩니다. 계정 설정에 따라 이메일, Discord, Telegram 또는 Signal을 확인하세요.", "handleOrEmail": "핸들 또는 이메일", "emailPlaceholder": "핸들 또는 you@example.com", "howItWorks": "작동 방식", "howItWorksDetail": "등록된 알림 채널로 보안 링크를 보냅니다. 링크를 클릭하여 임시 비밀번호를 설정합니다. 그런 다음 로그인하여 새 패스키를 추가할 수 있습니다.", "sendRecoveryLink": "복구 링크 보내기", "sending": "전송 중..." }, "registerPasskey": { "title": "패스키 계정 만들기", "subtitle": "비밀번호 대신 패스키를 사용하여 초안전 계정을 만듭니다.", "subtitleKeyChoice": "외부 did:web 아이덴티티 설정 방법을 선택하세요.", "subtitleVerify": "{channel}(으)로 인증 코드를 보냈습니다. 코드를 입력하여 계속하세요.", "subtitlePasskey": "패스키를 만들어 계정 설정을 완료하세요.", "handle": "핸들", "handlePlaceholder": "사용자 이름", "handleHint": "전체 핸들: @{handle}", "contactMethod": "연락 방법", "contactMethodHint": "계정 인증 및 알림 수신 방법을 선택하세요.", "verificationMethod": "인증 방법", "email": "이메일 주소", "emailPlaceholder": "you@example.com", "inviteCode": "초대 코드", "inviteCodePlaceholder": "초대 코드 입력", "externalDid": "귀하의 did:web", "externalDidPlaceholder": "did:web:yourdomain.com", "createButton": "계정 만들기", "alreadyHaveAccount": "이미 계정이 있으신가요?", "signIn": "로그인", "wantPassword": "비밀번호를 사용하시겠습니까?", "createPasswordAccount": "비밀번호 계정 만들기", "errors": { "handleRequired": "핸들은 필수입니다", "handleNoDots": "핸들에 점을 포함할 수 없습니다. 계정 생성 후 사용자 정의 도메인을 설정할 수 있습니다.", "passkeysNotSupported": "이 브라우저에서 패스키가 지원되지 않습니다. 비밀번호 기반 계정을 만들거나 패스키를 지원하는 브라우저를 사용하세요.", "passkeyCancelled": "패스키 생성이 취소되었습니다", "passkeyFailed": "패스키 등록에 실패했습니다", "signalRequired": "Signal 인증에는 전화번호가 필요합니다", "inviteRequired": "초대 코드가 필요합니다", "externalDidRequired": "외부 did:web이 필요합니다", "emailRequired": "이메일 인증에는 이메일이 필요합니다", "telegramRequired": "Telegram 인증에는 Telegram 사용자 이름이 필요합니다", "externalDidFormat": "외부 DID는 did:web:으로 시작해야 합니다", "discordRequired": "Discord 인증에는 Discord ID가 필요합니다" }, "whyPasskeyBullet1": "피싱이나 데이터 유출로 도난당할 수 없음", "whyPasskeyBullet2": "하드웨어 기반 암호화 키 사용", "whyPasskeyBullet3": "생체 인식 또는 기기 PIN 필요", "infoWhyPasskey": "왜 패스키를 사용하나요?", "infoWhyPasskeyDesc": "패스키는 기기에 저장된 암호화 자격 증명입니다. 비밀번호처럼 피싱, 추측 또는 데이터 유출로 도난당할 수 없습니다.", "infoHowItWorks": "작동 방식", "infoHowItWorksDesc": "로그인할 때 기기에서 Face ID, Touch ID 또는 기기 PIN으로 인증하라는 메시지가 표시됩니다. 기억하거나 입력할 비밀번호가 없습니다.", "infoAppAccess": "서드파티 앱 사용", "infoAppAccessDesc": "계정 생성 후 앱 비밀번호를 받게 됩니다. Bluesky 앱 및 기타 AT Protocol 클라이언트에 로그인할 때 사용하세요.", "whyPasskeyOnly": "왜 패스키만 사용하나요?", "whyPasskeyOnlyDesc": "패스키 계정은 비밀번호 기반 계정보다 안전합니다:", "subtitleInitialDidDoc": "계속하려면 DID 문서를 업로드하세요.", "subtitleUpdatedDidDoc": "PDS 서명 키로 DID 문서를 업데이트하세요.", "subtitleActivating": "계정을 활성화하는 중...", "subtitleComplete": "계정이 성공적으로 생성되었습니다!", "subtitleCreating": "계정을 생성하는 중...", "subtitleAppPassword": "서드파티 앱용 앱 비밀번호를 저장하세요.", "creatingPasskey": "패스키 생성 중...", "passkeyPrompt": "아래 버튼을 클릭하여 패스키를 생성하세요. 다음을 사용하라는 메시지가 표시됩니다:", "passkeyPromptBullet1": "Touch ID 또는 Face ID", "passkeyPromptBullet2": "기기 PIN 또는 비밀번호", "passkeyPromptBullet3": "보안 키 (있는 경우)", "identityType": "아이덴티티 유형", "identityTypeHint": "분산 아이덴티티 관리 방법을 선택하세요.", "passkeyNameLabel": "패스키 이름 (선택사항)", "passkeyNamePlaceholder": "예: MacBook Touch ID", "passkeyNameHint": "이 패스키를 식별할 수 있는 이름", "createPasskey": "패스키 생성", "didPlcRecommended": "did:plc (권장)", "didPlcHint": "PLC Directory에서 관리하는 이동 가능한 아이덴티티", "didWeb": "did:web", "didWebHint": "이 PDS에서 호스팅되는 아이덴티티 (아래 경고 읽기)", "didWebDisabledHint": "이 PDS에서 사용할 수 없음 - did:plc를 사용하거나 자체 did:web을 가져오세요", "didWebBYOD": "did:web (BYOD)", "didWebBYODHint": "자체 도메인 사용", "didWebWarningTitle": "중요: 장단점 이해하기", "didWebWarning1": "이 PDS에 영구적으로 연결됨:", "didWebWarning1Detail": "귀하의 아이덴티티 {did}는 이 서버에 연결됩니다.", "didWebWarning2": "복구 메커니즘 없음:", "didWebWarning2Detail": "did:plc와 달리 did:web에는 순환 키가 없습니다.", "didWebWarning3": "우리의 약속:", "didWebWarning3Detail": "마이그레이션하더라도 최소한의 DID 문서를 계속 제공합니다.", "didWebWarning4": "권장 사항:", "didWebWarning4Detail": "did:web을 선호할 특별한 이유가 없다면 did:plc를 선택하세요.", "externalDidHint": "다음 위치에서 DID 문서를 제공해야 합니다", "continue": "계속", "back": "뒤로", "loading": "로딩 중...", "redirecting": "대시보드로 이동 중...", "handleDotWarning": "사용자 정의 도메인 핸들은 계정 생성 후 설정할 수 있습니다.", "wantTraditional": "기존 비밀번호를 원하시나요?", "registerWithPassword": "비밀번호로 가입" }, "trustedDevices": { "title": "신뢰할 수 있는 기기", "backToSecurity": "← 보안 설정", "description": "신뢰할 수 있는 기기는 로그인 시 2단계 인증을 건너뛸 수 있습니다. 신뢰는 30일간 유효하며 기기를 사용할 때 자동으로 연장됩니다.", "failedToLoad": "신뢰할 수 있는 기기를 불러오지 못했습니다", "noDevices": "신뢰할 수 있는 기기가 아직 없습니다.", "noDevicesHint": "2단계 인증이 활성화된 상태로 로그인할 때 기기를 30일간 신뢰하도록 선택할 수 있습니다.", "lastSeen": "마지막 접속:", "trustedSince": "신뢰 시작:", "trustExpires": "신뢰 만료:", "expired": "만료됨", "tomorrow": "내일", "inDays": "{days}일 후", "revoke": "신뢰 취소", "revokeConfirm": "이 기기에 대한 신뢰를 취소하시겠습니까? 다음에 이 기기에서 로그인할 때 2FA 코드를 입력해야 합니다.", "deviceRevoked": "기기 신뢰가 취소되었습니다", "deviceRenamed": "기기 이름이 변경되었습니다", "deviceNamePlaceholder": "기기 이름", "browser": "브라우저:", "unknownDevice": "알 수 없는 기기" }, "reauth": { "title": "재인증 필요", "subtitle": "계속하려면 본인 확인을 해주세요.", "password": "비밀번호", "totp": "TOTP", "passkey": "패스키", "authenticatorCode": "인증 코드", "usePassword": "비밀번호 사용", "usePasskey": "패스키 사용", "useTotp": "인증 앱 사용", "passwordPlaceholder": "비밀번호 입력", "totpPlaceholder": "6자리 코드 입력", "authenticating": "인증 중...", "passkeyPrompt": "아래 버튼을 클릭하여 패스키로 인증하세요.", "cancel": "취소" }, "verifyChannel": { "title": "채널 인증", "subtitle": "알림 채널로 전송된 인증 코드를 입력하세요.", "signInRequired": "로그인 필요", "signInRequiredDesc": "채널을 인증하려면 로그인해야 합니다.", "signIn": "로그인", "verifying": "인증 중...", "pleaseWait": "채널을 인증하는 중입니다. 잠시 기다려 주세요.", "successTitle": "인증 완료!", "successDesc": "{channel}이(가) 성공적으로 인증되었습니다.", "backToSettings": "설정으로 돌아가기", "channelLabel": "채널", "selectChannel": "채널 선택...", "identifierLabel": "식별자", "identifierPlaceholder": "이메일, Discord ID 등", "identifierHelp": "인증할 이메일 주소, Discord ID, Telegram 사용자 이름 또는 Signal 번호.", "codeLabel": "인증 코드", "codeHelp": "메시지에서 하이픈을 포함한 전체 코드를 복사하세요.", "verifyButton": "인증" }, "delegation": { "title": "계정 위임", "controllers": "컨트롤러", "controlledAccounts": "관리 계정", "noControllers": "아직 컨트롤러가 없습니다", "noControlledAccounts": "관리 계정이 없습니다", "addController": "컨트롤러 추가", "handle": "핸들", "did": "DID", "scopeOwner": "소유자", "scopeViewer": "뷰어", "scopeCustom": "사용자 정의", "actAs": "로 활동", "auditLog": "감사 로그", "auditLogTitle": "위임 감사 로그", "backToControllers": "← 컨트롤러로 돌아가기", "loading": "로딩 중...", "noActivity": "아직 활동이 없습니다", "actor": "액터", "controller": "컨트롤러", "account": "계정", "details": "세부정보", "actionGrantCreated": "권한 생성", "actionGrantRevoked": "권한 취소", "actionScopesModified": "권한 수정", "actionTokenIssued": "토큰 발급", "actionRepoWrite": "저장소 쓰기", "actionBlobUpload": "Blob 업로드", "actionAccountAction": "계정 작업", "previous": "이전", "next": "다음", "showing": "{start}~{end} / {total}개", "refresh": "새로고침", "failedToLoadAuditLog": "감사 로그를 불러오지 못했습니다", "adding": "추가 중...", "accessLevel": "액세스 수준", "addControllerButton": "+ 컨트롤러 추가", "auditLogDesc": "모든 위임 활동 보기", "cannotAddControllers": "다른 계정을 관리하고 있어 컨트롤러를 추가할 수 없습니다. 계정은 컨트롤러를 가지거나 다른 계정을 관리할 수 있지만 둘 다는 불가능합니다.", "cannotControlAccounts": "이 계정에 컨트롤러가 있어 다른 계정을 관리할 수 없습니다. 계정은 컨트롤러를 가지거나 다른 계정을 관리할 수 있지만 둘 다는 불가능합니다.", "controlledAccountsDesc": "귀하가 대신 작업할 수 있는 계정", "controllerAdded": "컨트롤러가 추가되었습니다", "controllerDid": "컨트롤러 DID", "controllerRemoved": "컨트롤러가 제거되었습니다", "controllersDesc": "귀하를 대신하여 작업할 수 있는 계정", "createAccount": "계정 생성", "createDelegatedAccount": "위임 계정 생성", "createDelegatedAccountButton": "+ 위임 계정 생성", "emailOptional": "이메일 (선택사항)", "failedToAddController": "컨트롤러 추가에 실패했습니다", "failedToCreateAccount": "위임 계정 생성에 실패했습니다", "failedToRemoveController": "컨트롤러 제거에 실패했습니다", "granted": "허용일", "inactive": "비활성", "remove": "제거", "removeConfirm": "이 컨트롤러를 제거하시겠습니까?", "viewAuditLog": "감사 로그 보기", "yourAccessLevel": "귀하의 액세스 수준", "accountCreated": "위임 계정이 생성되었습니다: {handle}" }, "actAs": { "title": "로 활동", "noAccountSpecified": "계정 DID가 지정되지 않았습니다", "failedToVerify": "계정 액세스를 확인하지 못했습니다", "noAccess": "이 계정에 대한 액세스 권한이 없습니다", "failedToInitiate": "인증 시작에 실패했습니다", "invalidResponse": "서버에서 잘못된 응답을 받았습니다", "failedError": "실패: {error}", "preparing": "위임 계정 로그인 준비 중...", "backToControllers": "컨트롤러로 돌아가기" }, "oauthDelegation": { "loading": "로딩 중...", "title": "위임 계정", "isDelegated": "{handle}은(는) 위임 계정입니다.", "enterControllerHandle": "이 계정에 액세스하려면 컨트롤러 계정으로 로그인하세요.", "controllerHandle": "컨트롤러 핸들", "handlePlaceholder": "handle.example.com", "checking": "확인 중...", "controllerNotFound": "계정을 찾을 수 없거나 이 위임 계정에 대한 액세스 권한이 없습니다", "missingParams": "위임 매개변수가 없습니다", "missingInfo": "필요한 정보가 없습니다", "passkeyCancelled": "패스키 인증이 취소되었습니다", "passkeyFailed": "패스키 인증에 실패했습니다", "failedPasskeyStart": "패스키 로그인 시작에 실패했습니다", "authFailed": "인증에 실패했습니다", "unexpectedResponse": "서버에서 예기치 않은 응답을 받았습니다", "signInAsController": "컨트롤러로 로그인", "authenticateAs": "{controller}(으)로 인증하여 {delegated}를 대신합니다", "useDifferentController": "다른 컨트롤러 사용", "signInWithPasskey": "패스키로 로그인", "authenticating": "인증 중...", "usePasskey": "패스키 사용", "or": "또는", "password": "비밀번호", "enterPassword": "비밀번호 입력", "rememberDevice": "이 기기 기억하기", "signingIn": "로그인 중...", "signIn": "로그인", "goBack": "뒤로", "unableToLoad": "위임 정보를 로드할 수 없습니다" }, "oauthConsent": { "delegatedAccess": "위임 액세스", "actingAs": "활동 계정", "controller": "컨트롤러", "accessLevel": "액세스 수준", "readOnlyAccess": "읽기 전용 액세스", "readOnlyDesc": "공개 정보만 볼 수 있습니다. 이 계정에 대한 쓰기 권한이 없습니다.", "permissionsLimited": "권한 제한됨", "permissionsLimitedDesc": "앱이 무엇을 요청하든 실제 권한은 {level} 액세스 수준으로 제한됩니다.", "viewerLimitedDesc": "뷰어로서 읽기 전용 액세스 권한만 있습니다. 이 앱은 이 계정에서 콘텐츠를 생성, 수정 또는 삭제할 수 없습니다.", "editorLimitedDesc": "편집자로서 콘텐츠를 생성하고 편집할 수 있지만 계정 설정이나 보안을 관리할 수 없습니다." }, "migration": { "title": "계정 마이그레이션", "subtitle": "AT Protocol 아이덴티티를 서버 간에 이동", "navTitle": "마이그레이션", "navDesc": "다른 PDS로 또는 다른 PDS에서 계정 이동", "migrateHere": "여기로 마이그레이션", "migrateHereDesc": "기존 AT Protocol 계정을 다른 서버에서 이 PDS로 이동합니다.", "bringDid": "DID와 아이덴티티 가져오기", "transferData": "모든 데이터 전송", "keepFollowers": "팔로워 유지", "whatIsMigration": "계정 마이그레이션이란?", "whatIsMigrationDesc": "계정 마이그레이션을 통해 AT Protocol 아이덴티티를 개인 데이터 서버(PDS) 간에 이동할 수 있습니다. DID(분산 식별자)는 동일하게 유지되므로 팔로워와 소셜 연결이 보존됩니다.", "beforeMigrate": "마이그레이션 전 확인사항", "beforeMigrate1": "현재 계정 인증 정보가 필요합니다", "beforeMigrate2": "보안을 위해 이메일 인증이 필요합니다", "beforeMigrate3": "이미지가 많은 대용량 계정은 몇 분이 걸릴 수 있습니다", "beforeMigrate4": "이전 PDS에 계정 비활성화가 통보됩니다", "importantWarning": "계정 마이그레이션은 중요한 작업입니다. 대상 PDS를 신뢰하고 데이터가 이동된다는 것을 이해하세요. 문제가 발생하면 수동 복구가 필요할 수 있습니다.", "learnMore": "마이그레이션 위험에 대해 자세히 알아보기", "offlineRestore": "오프라인 복원", "offlineRestoreDesc": "이전 PDS를 사용할 수 없을 때 백업에서 복원합니다.", "offlineFeature1": "CAR 파일 백업 사용", "offlineFeature2": "회전 키로 소유권 증명", "offlineFeature3": "종료된 서버 복구", "oauthCompleting": "인증 완료 중...", "oauthFailed": "인증 실패", "tryAgain": "다시 시도", "resume": { "title": "마이그레이션을 재개하시겠습니까?", "incomplete": "완료되지 않은 마이그레이션이 있습니다:", "direction": "방향", "migratingHere": "여기로 마이그레이션 중", "from": "출발지", "to": "목적지", "progress": "진행 상황", "reenterCredentials": "계속하려면 인증 정보를 다시 입력해야 합니다.", "startOver": "처음부터 다시 시작", "resumeButton": "재개" }, "inbound": { "welcome": { "title": "이 PDS로 마이그레이션", "desc": "기존 AT Protocol 계정을 이 서버로 이동합니다.", "understand": "위험을 이해하고 계속 진행합니다" }, "sourceAuth": { "title": "현재 핸들 입력", "titleResume": "마이그레이션 재개", "desc": "마이그레이션할 계정의 핸들을 입력하세요.", "descResume": "마이그레이션을 계속하려면 소스 PDS에 재인증하세요.", "handle": "핸들", "handlePlaceholder": "alice.bsky.social", "handleHint": "현재 PDS에서의 핸들", "continue": "계속", "connecting": "연결 중...", "reauthenticate": "재인증", "resumeTitle": "마이그레이션 진행 중", "resumeFrom": "출발지", "resumeTo": "목적지", "resumeProgress": "진행 상황", "resumeOAuthNote": "계속하려면 OAuth로 재인증이 필요합니다." }, "chooseHandle": { "title": "새 핸들 선택", "desc": "이 PDS에서 사용할 계정 핸들을 선택하세요.", "migratingFrom": "마이그레이션 원본", "newHandle": "새 핸들", "checkingAvailability": "사용 가능 여부 확인 중...", "handleAvailable": "핸들을 사용할 수 있습니다!", "handleTaken": "핸들이 이미 사용 중입니다", "handleHint": "전체 핸들(예: alice.mydomain.com)을 입력하여 자체 도메인을 사용할 수도 있습니다", "email": "이메일 주소", "authMethod": "인증 방법", "authPassword": "비밀번호", "authPasswordDesc": "기존 비밀번호 기반 로그인", "authPasskey": "패스키", "authPasskeyDesc": "생체 인식 또는 보안 키를 사용한 비밀번호 없는 로그인", "password": "비밀번호", "passwordHint": "최소 8자", "passkeyInfo": "계정 생성 후 패스키를 설정합니다. 기기에서 생체 인식(지문, Face ID) 또는 보안 키 사용을 요청합니다.", "inviteCode": "초대 코드" }, "review": { "title": "마이그레이션 검토", "desc": "마이그레이션 세부 정보를 확인하세요.", "currentHandle": "현재 핸들", "newHandle": "새 핸들", "did": "DID", "sourcePds": "소스 PDS", "targetPds": "대상 PDS", "email": "이메일", "authentication": "인증", "authPasskey": "패스키 (비밀번호 없음)", "authPassword": "비밀번호", "inviteCode": "초대 코드", "warning": "\"마이그레이션 시작\"을 클릭하면 저장소와 데이터 전송이 시작됩니다. 이 과정은 쉽게 되돌릴 수 없습니다.", "startMigration": "마이그레이션 시작", "starting": "시작 중..." }, "migrating": { "title": "마이그레이션 진행 중", "desc": "계정을 전송하는 중입니다...", "exportRepo": "저장소 내보내기", "importRepo": "저장소 가져오기", "migrateBlobs": "blob 마이그레이션", "migratePrefs": "환경설정 마이그레이션" }, "passkeySetup": { "title": "패스키 설정", "desc": "이메일이 인증되었습니다. 안전한 비밀번호 없는 로그인을 위해 패스키를 설정하세요.", "nameLabel": "패스키 이름 (선택사항)", "namePlaceholder": "예: MacBook Pro, iPhone", "nameHint": "이 패스키를 식별하기 위한 이름", "instructions": "아래 버튼을 클릭하여 패스키를 등록하세요. 기기에서 생체 인식(지문, Face ID) 또는 보안 키 사용을 요청합니다.", "register": "패스키 등록", "registering": "등록 중..." }, "appPassword": { "title": "앱 비밀번호 저장", "desc": "패스키가 생성되었습니다. 아직 패스키를 지원하지 않는 앱에서 사용할 앱 비밀번호가 생성되었습니다.", "warning": "이 앱 비밀번호는 아직 패스키를 지원하지 않는 앱(예: bsky.app)에 로그인할 때 필요합니다. 이 비밀번호는 한 번만 표시됩니다.", "label": "앱 비밀번호:", "saved": "앱 비밀번호를 안전한 곳에 저장했습니다", "continue": "계속" }, "emailVerify": { "title": "이메일 인증", "desc": "인증 코드가 {email}(으)로 전송되었습니다.", "hint": "아래에 코드를 입력하거나, 이메일의 링크를 클릭하여 자동으로 계속할 수 있습니다.", "tokenLabel": "인증 코드", "tokenPlaceholder": "이메일에서 받은 코드 입력", "resend": "코드 재전송", "verify": "이메일 인증", "verifying": "인증 중..." }, "plcToken": { "title": "마이그레이션 확인", "desc": "이전 계정에 등록된 이메일로 인증 코드가 전송되었습니다.", "info": "이 코드는 계정 접근 권한을 확인하고 이 PDS를 가리키도록 아이덴티티 업데이트를 승인합니다.", "tokenLabel": "인증 코드", "tokenPlaceholder": "이메일에서 받은 코드 입력", "resend": "코드 재전송", "complete": "마이그레이션 완료", "completing": "확인 중..." }, "didWebUpdate": { "title": "DID 문서 업데이트", "desc": "did:web 아이덴티티를 사용하고 있으므로 DID 문서를 이 PDS를 가리키도록 업데이트해야 합니다.", "yourDid": "당신의 DID:", "updateInstructions": "도메인의 did.json 파일을 업데이트하여 atproto_pds 서비스 엔드포인트가 이 PDS를 가리키도록 하세요:", "important": "중요:", "verifyFirst": "마이그레이션을 완료하기 전에 DID 문서가 업데이트되고 공개적으로 접근 가능한지 확인하세요.", "fileLocation": "파일 위치:", "complete": "마이그레이션 완료", "completing": "완료 중..." }, "finalizing": { "title": "마이그레이션 완료 중", "desc": "마이그레이션을 완료하는 중입니다...", "signingPlc": "아이덴티티 업데이트 서명", "activating": "새 PDS에서 계정 활성화", "deactivating": "이전 PDS에서 계정 비활성화" }, "success": { "title": "마이그레이션 완료!", "desc": "계정이 이 PDS로 성공적으로 마이그레이션되었습니다.", "yourNewHandle": "새 핸들", "did": "DID", "blobsWarning": "{count}개의 blob을 마이그레이션할 수 없습니다. 더 이상 사용할 수 없는 이미지나 기타 미디어일 수 있습니다.", "redirecting": "대시보드로 리디렉션 중..." }, "error": { "title": "마이그레이션 오류", "desc": "마이그레이션 중 오류가 발생했습니다.", "startOver": "처음부터 다시 시작", "unknown": "알 수 없는 오류가 발생했습니다." }, "common": { "back": "뒤로", "cancel": "취소", "continue": "계속", "whatWillHappen": "진행 과정:", "step1": "현재 PDS에 로그인", "step2": "이 서버에서 새 핸들 선택", "step3": "저장소와 blob이 전송됩니다", "step4": "이메일로 마이그레이션 확인", "step5": "아이덴티티가 여기를 가리키도록 업데이트됩니다", "beforeProceed": "진행하기 전에:", "warning1": "현재 계정에 등록된 이메일에 접근할 수 있어야 합니다", "warning2": "대용량 계정 전송에는 몇 분이 걸릴 수 있습니다", "warning3": "마이그레이션 후 이전 계정은 비활성화됩니다" } }, "offline": { "welcome": { "title": "백업에서 복원", "desc": "CAR 파일 백업과 회전 키를 사용하여 계정을 복원합니다. 이전 PDS를 사용할 수 없을 때 사용하세요.", "warningTitle": "이 방법을 사용해야 할 때", "warningDesc": "이 오프라인 복원은 이전 PDS가 종료되었거나, 접근할 수 없거나, 잠긴 경우의 재해 복구용입니다. 이전 PDS가 여전히 사용 가능하면 표준 마이그레이션을 사용하세요.", "requirementsTitle": "필요한 것", "requirement1": "저장소의 CAR 파일 백업", "requirement2": "회전 키 (DID의 개인 키)", "requirement3": "당신의 DID (did:plc:xxx)", "understand": "이해하고 계속 진행합니다" }, "provideDid": { "title": "DID 입력", "desc": "복원할 계정의 DID를 입력하세요.", "label": "당신의 DID", "hint": "분산 식별자 (예: did:plc:abc123)" }, "uploadCar": { "title": "CAR 파일 업로드", "desc": "저장소 백업 파일을 업로드하세요.", "label": "CAR 파일", "hint": "백업에서 .car 파일을 선택하세요", "reuploadWarningTitle": "CAR 파일 필요", "reuploadWarning": "세션이 복원되었지만 CAR 파일을 다시 업로드해야 합니다. 보안상의 이유로 파일 내용은 세션 간에 저장되지 않습니다." }, "rotationKey": { "title": "회전 키 제공", "desc": "이 DID의 소유권을 증명하기 위해 회전 키를 입력하세요.", "securityWarningTitle": "보안 경고", "securityWarning1": "회전 키는 매우 민감합니다 - 마스터 비밀번호처럼 취급하세요", "securityWarning2": "신뢰할 수 있는 장치와 네트워크에서만 입력하세요", "securityWarning3": "이 키는 마이그레이션 완료 후 저장되지 않습니다", "label": "회전 키", "placeholder": "개인 키 입력 (hex, base58 또는 JWK)", "hint": "DID 문서의 회전 키 중 하나에 해당하는 개인 키", "valid": "키가 유효하고 DID의 회전 키와 일치합니다", "invalid": "키가 DID 문서의 어떤 회전 키와도 일치하지 않습니다", "validating": "키 검증 중...", "validate": "키 검증" }, "chooseHandle": { "migratingDid": "DID 복원 중" }, "review": { "desc": "오프라인 복원 세부 정보를 확인하세요.", "carFile": "CAR 파일", "rotationKey": "회전 키", "warning": "복원을 시작하면 아이덴티티가 이 PDS를 가리키도록 업데이트됩니다. 이것은 쉽게 되돌릴 수 없습니다.", "plcWarningTitle": "되돌릴 수 없는 지점", "plcWarning": "시작하면 DID 문서가 이 PDS를 가리키도록 업데이트됩니다. 문제가 발생하면 회전 키를 사용하여 복구할 수 있지만, 손상된 아이덴티티 상태를 피하려면 마이그레이션을 완료해야 합니다." }, "migrating": { "title": "계정 복원 중", "desc": "계정을 복원하는 중입니다...", "creating": "계정 생성 중", "importing": "저장소 가져오는 중", "plcSigning": "아이덴티티 업데이트 중", "activating": "계정 활성화 중" }, "success": { "desc": "계정이 이 PDS에 성공적으로 복원되었습니다." }, "blobs": { "title": "Blob 마이그레이션 중", "desc": "이전 PDS에서 이미지와 미디어를 복구하는 중...", "migrating": "Blob 마이그레이션 중", "failedTitle": "일부 Blob을 마이그레이션할 수 없음", "failedDesc": "{count}개의 Blob을 이전 PDS에서 가져올 수 없습니다. 서버에 연결할 수 없거나 파일이 삭제되었을 수 있습니다.", "sourceUnreachableTitle": "원본 PDS에 연결할 수 없음", "sourceUnreachable": "이전 PDS에 연결하여 미디어 파일을 가져올 수 없습니다. 종료된 서버에서 마이그레이션할 때 흔히 발생합니다. 게시물은 작동하지만 일부 이미지가 누락될 수 있습니다." } }, "progress": { "repoExported": "저장소 내보내기 완료", "repoImported": "저장소 가져오기 완료", "blobsMigrated": "{count}개 blob 마이그레이션됨", "prefsMigrated": "환경설정 마이그레이션됨", "plcSigned": "아이덴티티 업데이트됨", "activated": "계정 활성화됨", "deactivated": "이전 계정 비활성화됨" }, "errors": { "connectionFailed": "PDS에 연결할 수 없습니다", "invalidCredentials": "잘못된 인증 정보", "twoFactorRequired": "2단계 인증이 필요합니다", "accountExists": "대상 PDS에 계정이 이미 존재합니다", "plcFailed": "PLC 작업 실패", "blobFailed": "blob 마이그레이션 실패: {cid}", "networkError": "네트워크 오류. 다시 시도하세요." } } }