{
  "common": {
    "loading": "로딩 중",
    "error": "오류",
    "save": "저장",
    "cancel": "취소",
    "back": "뒤로",
    "done": "완료",
    "continue": "계속",
    "refresh": "새로고침",
    "delete": "삭제",
    "created": "생성일",
    "name": "이름",
    "backToDashboard": "← 대시보드",
    "copied": "복사됨",
    "copyToClipboard": "복사",
    "verifying": "확인 중",
    "saving": "저장 중",
    "creating": "생성 중",
    "sending": "전송 중",
    "checking": "확인 중",
    "signIn": "로그인",
    "verify": "확인",
    "revoke": "취소",
    "resendCode": "재전송",
    "backToLogin": "로그인으로 돌아가기",
    "backToSettings": "설정으로 돌아가기"
  },
  "login": {
    "title": "로그인",
    "button": "로그인",
    "redirecting": "리디렉션 중",
    "chooseAccount": "계정 선택",
    "signInToAnother": "또는 다른 계정으로 로그인",
    "forgotPassword": "비밀번호를 잊으셨나요?",
    "lostPasskey": "패스키를 분실하셨나요?",
    "noAccount": "계정이 없나요?",
    "createAccount": "만들기",
    "removeAccount": "삭제"
  },
  "verification": {
    "title": "계정 인증",
    "subtitle": "연락처로 전송된 코드를 입력하세요",
    "codeLabel": "코드",
    "codePlaceholder": "6자리 코드",
    "resent": "코드 전송됨"
  },
  "register": {
    "title": "계정 만들기",
    "redirecting": "리디렉션 중",
    "migrateTitle": "이미 계정이 있으신가요?",
    "migrateDescription": "기존 계정 마이그레이션",
    "migrateLink": "계정 마이그레이션",
    "handle": "핸들",
    "handlePlaceholder": "사용자 이름",
    "handleHint": "전체 핸들: @{handle}",
    "handleTaken": "이 핸들은 이미 사용 중입니다",
    "handleDotWarning": "사용자 정의 도메인 핸들은 계정 생성 후 설정에서 구성할 수 있습니다.",
    "password": "비밀번호",
    "passwordPlaceholder": "8자 이상",
    "confirmPassword": "비밀번호 확인",
    "confirmPasswordPlaceholder": "비밀번호 재입력",
    "identityType": "ID 유형",
    "didPlc": "did:plc",
    "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는 계속 작동합니다.",
    "externalDid": "귀하의 did:web",
    "externalDidPlaceholder": "did:web:yourdomain.com",
    "externalDidHint": "도메인은 /.well-known/did.json에서 이 PDS를 가리키는 유효한 DID 문서를 제공해야 합니다",
    "contactMethod": "연락 방법",
    "verificationMethod": "인증 방법",
    "email": "이메일",
    "emailAddress": "이메일 주소",
    "emailPlaceholder": "you@example.com",
    "discord": "Discord",
    "discordUsername": "Discord 사용자명",
    "discordUsernamePlaceholder": "yourusername",
    "telegram": "Telegram",
    "telegramUsername": "Telegram 사용자 이름",
    "telegramUsernamePlaceholder": "@yourusername",
    "signal": "Signal",
    "signalUsername": "Signal 사용자명",
    "signalUsernamePlaceholder": "username.01",
    "notConfigured": "구성되지 않음",
    "inviteCode": "초대 코드",
    "inviteCodePlaceholder": "초대 코드 입력",
    "inviteCodeRequired": "필수",
    "alreadyHaveAccount": "이미 계정이 있으신가요?",
    "signIn": "로그인",
    "passkeyAccount": "패스키",
    "passwordAccount": "비밀번호",
    "ssoAccount": "SSO",
    "noSsoProviders": "이 서버에 SSO 제공자가 설정되어 있지 않습니다.",
    "continueWith": "{provider}로 계속",
    "validation": {
      "handleRequired": "핸들은 필수입니다",
      "handleNoDots": "핸들에 점을 포함할 수 없습니다. 계정 생성 후 사용자 정의 도메인을 설정할 수 있습니다.",
      "passwordRequired": "비밀번호는 필수입니다",
      "passwordLength": "비밀번호는 8자 이상이어야 합니다",
      "passwordsMismatch": "비밀번호가 일치하지 않습니다",
      "inviteCodeRequired": "초대 코드는 필수입니다",
      "externalDidRequired": "외부 did:web은 필수입니다",
      "externalDidFormat": "외부 DID는 did:web:으로 시작해야 합니다",
      "emailRequired": "이메일 인증에는 이메일이 필요합니다",
      "discordUsernameRequired": "Discord 인증에는 Discord 사용자명이 필요합니다",
      "telegramRequired": "Telegram 인증에는 Telegram 사용자 이름이 필요합니다",
      "signalRequired": "Signal 인증에는 사용자명이 필요합니다"
    }
  },
  "dashboard": {
    "title": "대시보드",
    "accountManager": "계정 관리",
    "switchAccount": "계정 전환",
    "addAnotherAccount": "다른 계정 추가",
    "signOut": "@{handle} 로그아웃",
    "deactivatedTitle": "계정 비활성화됨",
    "deactivatedMessage": "계정이 현재 비활성화되어 있습니다. 이는 일반적으로 계정 마이그레이션 중에 발생합니다. 계정이 다시 활성화될 때까지 일부 기능이 제한될 수 있습니다.",
    "handle": "핸들",
    "did": "DID",
    "primaryContact": "주요 연락처",
    "admin": "관리자",
    "deactivated": "비활성화됨",
    "verified": "인증됨",
    "unverified": "미인증",
    "navAppPasswords": "앱 비밀번호",
    "navSessions": "활성 세션",
    "navInviteCodes": "초대 코드",
    "navSettings": "일반",
    "navSecurity": "보안",
    "navComms": "통신 설정",
    "navRepo": "저장소 탐색기",
    "navDelegation": "위임",
    "navAdmin": "관리 패널",
    "navDidDocument": "DID 문서",
    "migrated": "마이그레이션됨",
    "migratedTitle": "계정 마이그레이션됨",
    "migratedMessage": "계정이 {pds}로 마이그레이션되었습니다. DID 문서는 여전히 여기에서 호스팅됩니다.",
    "navAbout": "정보"
  },
  "about": {
    "title": "정보",
    "copyDebugInfo": "디버그 정보 복사",
    "copied": "디버그 정보가 클립보드에 복사되었습니다",
    "copyFailed": "디버그 정보 복사에 실패했습니다",
    "serverSection": "서버",
    "frontendSection": "프론트엔드",
    "accountSection": "계정",
    "environmentSection": "환경",
    "serverName": "서버 이름",
    "pdsVersion": "PDS 버전",
    "serverUrl": "서버 URL",
    "availableDomains": "사용 가능한 도메인",
    "did": "DID",
    "handle": "핸들",
    "accountStatus": "계정 상태",
    "adminStatus": "관리자",
    "userAgent": "사용자 에이전트",
    "locale": "언어",
    "screenSize": "화면 크기",
    "yes": "예",
    "no": "아니요",
    "unknown": "알 수 없음",
    "notConfigured": "구성되지 않음",
    "serverDid": "서버 DID",
    "inviteCodeRequired": "초대 코드 필요",
    "selfHostedDidWeb": "자체 호스팅 DID:web",
    "enabled": "활성화됨",
    "disabled": "비활성화됨",
    "contactSection": "연락처 및 정책",
    "contactEmail": "연락처 이메일",
    "privacyPolicy": "개인정보 처리방침",
    "termsOfService": "서비스 약관",
    "communicationSection": "통신",
    "availableChannels": "사용 가능한 채널",
    "discordBot": "Discord 봇",
    "discordAppId": "Discord 앱 ID",
    "telegramBot": "Telegram 봇",
    "svelteVersion": "Svelte",
    "svelteI18nVersion": "svelte-i18n",
    "viteVersion": "Vite",
    "buildMode": "빌드 모드",
    "userCount": "사용자 수"
  },
  "didEditor": {
    "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 문자열이어야 합니다",
    "helpTitle": "이것은 무엇인가요?",
    "helpText": "다른 PDS로 마이그레이션하면 해당 PDS가 새 서명 키를 생성합니다. 여기에서 DID 문서를 업데이트하여 새 키와 위치를 가리키도록 하세요."
  },
  "settings": {
    "language": "언어",
    "changeEmail": "이메일 변경",
    "currentEmail": "현재: {email}",
    "newEmail": "새 이메일",
    "newEmailPlaceholder": "new@example.com",
    "changeEmailButton": "이메일 변경",
    "emailInUseWarning": "이 이메일은 이미 다른 계정과 연결되어 있습니다. 계속 사용하실 수 있지만, 계정 복구 시 이메일 대신 핸들을 사용해야 할 수 있습니다.",
    "requesting": "요청 중...",
    "verificationCode": "인증 코드",
    "verificationCodePlaceholder": "인증 코드 입력",
    "confirmEmailChange": "이메일 변경 확인",
    "emailTokenHint": "이메일의 코드를 입력하거나 다른 기기에서 이메일의 링크를 클릭하세요.",
    "emailUpdateAuthorized": "이메일 변경이 승인되었습니다! 확인을 클릭하여 완료하세요.",
    "updating": "업데이트 중...",
    "changeHandle": "핸들 변경",
    "currentHandle": "현재: @{handle}",
    "pdsHandle": "PDS 핸들",
    "customDomain": "사용자 정의 도메인",
    "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": "핸들 변경",
    "exportData": "데이터 내보내기",
    "downloadRepo": "저장소 다운로드",
    "exporting": "내보내기 중...",
    "deleteAccount": "계정 삭제",
    "deleteWarning": "이 작업은 되돌릴 수 없습니다. 모든 데이터가 영구적으로 삭제됩니다.",
    "requestDeletion": "계정 삭제 요청",
    "confirmationCode": "확인 코드",
    "confirmationCodePlaceholder": "확인 코드 입력",
    "yourPassword": "비밀번호",
    "yourPasswordPlaceholder": "비밀번호 입력",
    "permanentlyDelete": "계정 영구 삭제",
    "deleting": "삭제 중...",
    "messages": {
      "emailCodeSentToCurrent": "현재 이메일 주소로 인증 코드를 보냈습니다",
      "emailUpdated": "이메일이 업데이트되었습니다",
      "emailUpdateFailed": "이메일 업데이트에 실패했습니다",
      "handleUpdated": "핸들이 업데이트되었습니다",
      "handleUpdateFailed": "핸들 업데이트에 실패했습니다",
      "deletionConfirmationSent": "이메일로 삭제 확인을 보냈습니다",
      "deletionRequestFailed": "계정 삭제 요청에 실패했습니다",
      "deleteConfirmation": "정말로 계정을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.",
      "deletionFailed": "계정 삭제에 실패했습니다",
      "repoExported": "저장소를 내보냈습니다",
      "exportFailed": "내보내기에 실패했습니다"
    }
  },
  "appPasswords": {
    "created": "앱 비밀번호가 생성되었습니다",
    "createdMessage": "지금 이 비밀번호를 복사하세요. 다시 볼 수 없습니다.",
    "noPasswords": "앱 비밀번호가 아직 없습니다",
    "saveWarningTitle": "중요: 이 앱 비밀번호를 저장하세요!",
    "saveWarningMessage": "이 비밀번호는 패스키 또는 OAuth를 지원하지 않는 앱에 로그인하는 데 필요합니다. 한 번만 볼 수 있습니다.",
    "acknowledgeLabel": "앱 비밀번호를 안전한 곳에 저장했습니다",
    "permissions": "권한",
    "scopeFull": "전체 권한",
    "scopeReadOnly": "읽기 전용",
    "scopePostOnly": "게시만",
    "scopeCustom": "사용자 지정",
    "byController": "컨트롤러 생성",
    "create": "생성",
    "name": "이름",
    "namePlaceholder": "앱 이름 (예: Witchsky)",
    "deleteConfirm": "앱 비밀번호 \"{name}\"을(를) 취소하시겠습니까?",
    "deleted": "앱 비밀번호가 취소되었습니다",
    "loadFailed": "앱 비밀번호 로딩 실패",
    "createFailed": "앱 비밀번호 생성 실패",
    "deleteFailed": "앱 비밀번호 취소 실패",
    "saveWarning": "지금 이 비밀번호를 저장하세요 - 다시 볼 수 없습니다"
  },
  "sessions": {
    "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": "방금",
    "sessionRevoked": "세션이 취소되었습니다",
    "allSessionsRevoked": "다른 모든 세션이 취소되었습니다"
  },
  "inviteCodes": {
    "createNew": "새 초대 코드 만들기",
    "yourCodes": "초대 코드 목록",
    "noCodes": "초대 코드가 아직 없습니다",
    "available": "사용 가능",
    "used": "@{handle}이(가) 사용함",
    "spent": "소진됨",
    "disabled": "비활성화됨",
    "created": "초대 코드가 생성되었습니다",
    "copy": "복사",
    "disable": "비활성화",
    "disableConfirm": "초대 코드 {code}을(를) 비활성화하시겠습니까?",
    "disableSuccess": "초대 코드가 비활성화되었습니다",
    "disableFailed": "초대 코드 비활성화 실패",
    "createdOn": "{date}에 생성됨",
    "loadFailed": "초대 코드 로딩 실패",
    "createFailed": "초대 코드 생성 실패"
  },
  "security": {
    "passkeys": "패스키",
    "addPasskey": "패스키 추가",
    "adding": "추가 중...",
    "noPasskeys": "등록된 패스키가 없습니다",
    "passkeyName": "패스키 이름",
    "passkeyNamePlaceholder": "예: yubikey, 휴대폰",
    "rename": "이름 변경",
    "deletePasskey": "삭제",
    "deletePasskeyConfirm": "패스키 \"{name}\"을(를) 삭제하시겠습니까? 더 이상 로그인에 사용할 수 없습니다.",
    "totp": "인증 앱 (TOTP)",
    "totpEnabled": "TOTP가 활성화되었습니다",
    "totpDisabled": "TOTP가 비활성화되었습니다",
    "enableTotp": "TOTP 활성화",
    "disableTotp": "TOTP 비활성화",
    "disabling": "비활성화 중...",
    "totpSetupInstructions": "인증 앱으로 이 QR 코드를 스캔한 다음 6자리 코드를 입력하여 확인합니다.",
    "totpCode": "TOTP 코드",
    "totpCodePlaceholder": "6자리",
    "verifyAndEnable": "확인 후 활성화",
    "backupCodes": "백업 코드",
    "backupCodesDescription": "인증 앱에 액세스할 수 없는 경우 이 코드를 사용하여 로그인합니다. 각 코드는 한 번만 사용할 수 있습니다.",
    "regenerateBackupCodes": "백업 코드 재생성",
    "regenerating": "재생성 중...",
    "regenerateConfirm": "백업 코드를 재생성하시겠습니까? 현재 코드는 더 이상 작동하지 않습니다.",
    "legacyLogin": "레거시 로그인",
    "legacyLoginDescription": "사용자 이름/비밀번호로 직접 로그인(레거시 모드)을 허용합니다. 비활성화하면 MFA가 있는 OAuth를 사용해야 합니다.",
    "legacyLoginOn": "레거시 로그인이 활성화되었습니다",
    "legacyLoginOff": "레거시 로그인이 비활성화되었습니다",
    "enableLegacyLogin": "레거시 로그인 활성화",
    "disableLegacyLogin": "레거시 로그인 비활성화",
    "legacyLoginWarning": "경고: 레거시 로그인을 활성화하면 직접 비밀번호 로그인에 대한 MFA가 우회됩니다. 앱 호환성이 필요한 경우에만 활성화하세요.",
    "legacyAppsTitle": "레거시 앱이란?",
    "legacyAppsDescription": "일부 앱(공식 Bluesky 앱 등)은 비밀번호만 필요한 이전 인증을 사용합니다. MFA가 활성화되어 있으면 이러한 앱은 두 번째 인증 요소를 우회합니다. 레거시 로그인을 비활성화하면 모든 앱이 OAuth를 사용하도록 강제되어 MFA가 적절히 적용됩니다.",
    "password": "비밀번호",
    "passwordStatus": "비밀번호가 설정되었습니다",
    "noPassword": "비밀번호가 설정되지 않음 (패스키 전용 계정)",
    "setPassword": "비밀번호 설정",
    "removePassword": "비밀번호 제거",
    "removing": "제거 중...",
    "next": "다음: 코드 확인",
    "copyToClipboard": "클립보드에 복사",
    "savedMyCodes": "코드를 저장했습니다",
    "cantScan": "스캔할 수 없나요? 수동 입력",
    "unnamedPasskey": "이름 없는 패스키",
    "added": "추가됨",
    "lastUsed": "마지막 사용",
    "disableTotpWarning": "이렇게 하면 계정 보안이 약해집니다.",
    "removePasswordWarning": "이렇게 하면 계정이 패스키 전용이 됩니다. 등록된 패스키로만 로그인할 수 있습니다. 모든 패스키에 액세스할 수 없게 되면 알림 채널을 사용하여 계정을 복구할 수 있습니다.",
    "trustedDevices": "신뢰할 수 있는 기기",
    "trustedDevicesDescription": "로그인 시 2단계 인증을 건너뛸 수 있는 기기. 신뢰는 30일간 유효하며 기기를 사용하면 자동으로 연장됩니다.",
    "appCompatibility": "앱 호환성",
    "enterPassword": "비밀번호를 입력하세요",
    "sessionExpired": "세션이 만료되었습니다. 다시 로그인하세요.",
    "legacyLoginEnabled": "레거시 앱 로그인 활성화됨",
    "legacyLoginDisabled": "레거시 앱 로그인 비활성화됨 - OAuth 앱만 로그인 가능",
    "failedToUpdatePreference": "설정 업데이트에 실패했습니다",
    "passwordRemoved": "비밀번호가 제거되었습니다. 이제 계정은 패스키 전용입니다.",
    "failedToRemovePassword": "비밀번호 제거에 실패했습니다",
    "failedToLoadTotpStatus": "TOTP 상태 로딩에 실패했습니다",
    "failedToRegenerateBackupCodes": "백업 코드 재생성에 실패했습니다",
    "totpEnabledSuccess": "2단계 인증이 활성화되었습니다",
    "totpDisabledSuccess": "2단계 인증이 비활성화되었습니다",
    "backupCodesCopied": "백업 코드가 클립보드에 복사되었습니다",
    "failedToLoadPasskeys": "패스키 로딩에 실패했습니다",
    "passkeysNotSupported": "이 브라우저에서 패스키가 지원되지 않습니다",
    "passkeyCreationCancelled": "패스키 생성이 취소되었습니다",
    "passkeyAddedSuccess": "패스키가 추가되었습니다",
    "passkeyDeleted": "패스키가 삭제되었습니다",
    "passkeyRenamed": "패스키 이름이 변경되었습니다",
    "changePassword": "비밀번호 변경",
    "currentPassword": "현재 비밀번호",
    "currentPasswordPlaceholder": "현재 비밀번호 입력",
    "newPassword": "새 비밀번호",
    "newPasswordPlaceholder": "새 비밀번호 입력",
    "confirmPassword": "새 비밀번호 확인",
    "confirmPasswordPlaceholder": "새 비밀번호 재입력",
    "passwordsDoNotMatch": "비밀번호가 일치하지 않습니다",
    "passwordTooShort": "비밀번호는 8자 이상이어야 합니다",
    "passwordChanged": "비밀번호가 변경되었습니다",
    "failedToChangePassword": "비밀번호 변경 실패",
    "changing": "변경 중...",
    "setting": "설정 중...",
    "passwordSet": "비밀번호가 설정되었습니다",
    "failedToSetPassword": "비밀번호 설정 실패",
    "failedToDisableTotp": "TOTP 비활성화 실패"
  },
  "comms": {
    "preferredChannel": "선호 채널",
    "channelConfiguration": "채널 설정",
    "emailVia": "이메일로 메시지 받기",
    "discordVia": "Discord DM으로 메시지 받기",
    "telegramVia": "Telegram으로 메시지 받기",
    "signalVia": "Signal로 메시지 받기",
    "configureToEnable": "활성화하려면 아래에서 설정",
    "notConfiguredOnServer": "이 서버에서 설정되지 않음",
    "primary": "기본",
    "verified": "인증됨",
    "notVerified": "미인증",
    "verifyButton": "인증",
    "verifyCodePlaceholder": "인증 코드 입력",
    "submit": "제출",
    "savePreferences": "설정 저장",
    "preferencesSaved": "통신 설정이 저장되었습니다",
    "verifiedSuccess": "{channel} 인증 완료",
    "messageHistory": "메시지 기록",
    "noMessages": "메시지가 없습니다.",
    "telegramStartBot": "또는 @{botUsername}에게 /start {handle}을 직접 보내세요",
    "telegramOpenLink": "Telegram에서 인증하기",
    "discordStartBot": "Discord에서 @{botUsername}에게 DM으로 /start {handle} 보내기",
    "discordOpenLink": "Discord에서 인증",
    "failedToLoad": "설정 로딩 실패",
    "failedToSave": "설정 저장 실패",
    "failedToVerify": "인증 실패",
    "failedToLoadHistory": "메시지 기록 로딩 실패"
  },
  "repoExplorer": {
    "collections": "컬렉션",
    "noRecords": "이 컬렉션에 레코드가 없습니다",
    "uri": "URI",
    "cid": "CID",
    "deleteConfirm": "레코드 {rkey}을(를) 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.",
    "unknownError": "알 수 없는 오류가 발생했습니다",
    "invalidJson": "잘못된 JSON",
    "collectionRequired": "컬렉션은 필수입니다",
    "recordCreated": "레코드 생성됨: {uri}",
    "recordUpdated": "레코드가 업데이트되었습니다",
    "recordDeleted": "레코드가 삭제되었습니다",
    "newRecord": "새 레코드",
    "createRecord": "레코드 생성",
    "filterCollections": "컬렉션 검색...",
    "filterRecords": "레코드 검색...",
    "noCollectionsYet": "컬렉션이 아직 없습니다. 첫 번째 레코드를 만들어 시작하세요.",
    "recordJson": "레코드 JSON",
    "updateRecord": "레코드 업데이트",
    "collectionNsid": "컬렉션 (NSID)",
    "recordKeyOptional": "레코드 키 (선택사항)",
    "autoGenerated": "비워두면 자동 생성 (TID)",
    "autoGeneratedHint": "비워두면 TID 기반 키가 자동 생성됩니다",
    "demoPostText": "안녕하세요, 제 PDS에서 보내는 첫 번째 게시물입니다!",
    "demoDisplayName": "표시 이름",
    "demoBio": "간단한 자기소개를 작성하세요."
  },
  "admin": {
    "serverConfig": "서버 설정",
    "serverName": "서버 이름",
    "serverNamePlaceholder": "내 PDS",
    "serverNameHelp": "브라우저 탭 및 다른 곳에 표시됩니다",
    "serverLogo": "서버 로고",
    "logoPreview": "로고 미리보기",
    "removeLogo": "삭제",
    "logoHelp": "파비콘으로 사용되며 네비게이션 바에 표시됩니다",
    "themeColors": "테마 색상",
    "themeColorsHint": "기본 색상을 사용하려면 비워 두세요.",
    "primaryLight": "기본 (라이트 모드)",
    "primaryDark": "기본 (다크 모드)",
    "configSaved": "서버 설정이 저장되었습니다",
    "saveConfig": "설정 저장",
    "serverStats": "서버 통계",
    "users": "사용자",
    "repos": "저장소",
    "records": "레코드",
    "blobStorage": "Blob 저장소",
    "refreshStats": "통계 새로고침",
    "userManagement": "사용자 관리",
    "searchPlaceholder": "핸들로 검색 (선택사항)",
    "handle": "핸들",
    "email": "이메일",
    "status": "상태",
    "created": "생성일",
    "loadMore": "더 불러오기",
    "disabled": "비활성화됨",
    "userDetails": "사용자 세부 정보",
    "did": "DID",
    "invites": "초대",
    "enabled": "활성화됨",
    "enableInvites": "초대 활성화",
    "disableInvites": "초대 비활성화",
    "deleteAccount": "계정 삭제",
    "deleteConfirm": "계정 @{handle}을(를) 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.",
    "verified": "인증됨",
    "unverified": "미인증",
    "deactivated": "비활성화됨",
    "secondaryLight": "보조 (라이트 모드)",
    "secondaryDark": "보조 (다크 모드)",
    "failedToLoadStats": "서버 통계 로딩 실패",
    "failedToLoadUsers": "사용자 로딩 실패",
    "searchToSeeUsers": "검색하여 사용자 보기",
    "search": "검색",
    "invitesEnabled": "사용자 초대가 활성화되었습니다",
    "invitesDisabled": "사용자 초대가 비활성화되었습니다",
    "userDeleted": "사용자 계정이 삭제되었습니다",
    "failedToDeleteAccount": "계정 삭제에 실패했습니다",
    "failedToSaveConfig": "서버 설정 저장에 실패했습니다",
    "failedToLoadConfig": "서버 설정 로딩 실패",
    "signalIntegration": "Signal",
    "signalLinked": "연결됨",
    "signalNotLinked": "연결되지 않음",
    "signalLinkDevice": "기기 연결",
    "signalUnlinkDevice": "연결 해제",
    "signalLinking": "Signal로 스캔",
    "signalLinkSuccess": "Signal 기기가 연결되었습니다",
    "signalUnlinkSuccess": "Signal 기기 연결이 해제되었습니다",
    "signalUnlinkConfirm": "Signal 기기 연결을 해제하시겠습니까? 알림이 중지됩니다.",
    "signalLinkFailed": "Signal 기기 연결에 실패했습니다",
    "signalLinkTimedOut": "Signal 연결 시간이 초과되었습니다",
    "signalUnlinkFailed": "Signal 기기 연결 해제에 실패했습니다",
    "signalFailedToLoad": "Signal 상태 로딩에 실패했습니다"
  },
  "oauth": {
    "login": {
      "title": "로그인",
      "subtitle": "로그인 중",
      "signingIn": "로그인 중",
      "authenticating": "인증 중",
      "checkingPasskey": "확인 중",
      "signInWithPasskey": "패스키",
      "passkeyNotSetUp": "패스키 없음",
      "orUsePassword": "또는",
      "password": "비밀번호",
      "rememberDevice": "이 기기 기억하기",
      "passkeyHintChecking": "확인 중",
      "passkeyHintAvailable": "패스키 사용",
      "passkeyHintNotAvailable": "패스키 없음",
      "passwordPlaceholder": "비밀번호",
      "usePasskey": "패스키 사용",
      "passkeyNotAllowed": "이 사이트에 사용 가능한 패스키가 없습니다",
      "orUseCredentials": "또는",
      "verificationResent": "인증 코드 전송됨"
    },
    "register": {
      "title": "계정 만들기",
      "subtitle": "앱",
      "subtitleGeneric": "계정 만들기",
      "haveAccount": "계정이 있으신가요? 로그인"
    },
    "sso": {
      "linkedAccounts": "연결된 계정",
      "noLinkedAccounts": "연결된 계정 없음",
      "unlinkConfirm": "이 계정의 연결을 해제하시겠습니까?",
      "unlinked": "{provider} 연결 해제됨",
      "linkedAt": "연결됨",
      "unlink": "연결 해제",
      "linkNewAccount": "계정 연결",
      "linked": "연결됨",
      "linkSuccess": "계정이 연결되었습니다",
      "linkFailed": "계정 연결 실패",
      "unlinkFailed": "연결 해제 실패"
    },
    "consent": {
      "title": "앱 승인",
      "appWantsAccess": "{app}이(가) 계정에 액세스하려고 합니다",
      "authorize": "승인",
      "deny": "거부",
      "authorizing": "승인 중...",
      "signingInAs": "로그인 계정:",
      "permissionsRequested": "요청된 권한",
      "required": "필수",
      "rememberChoiceLabel": "이 앱에 대한 선택 기억하기",
      "scopes": {
        "atproto": {
          "name": "AT Protocol 액세스",
          "description": "신원 확인 및 세션 설정"
        },
        "atprotoWithGranular": {
          "name": "AT Protocol 액세스",
          "description": "AT Protocol 기본 범위 (권한은 아래 선택한 옵션에 의해 결정됨)"
        }
      },
      "unexpectedState": {
        "title": "예기치 않은 상태",
        "description": "동의 페이지가 예기치 않은 상태입니다. 브라우저 콘솔에서 오류를 확인하세요.",
        "reload": "페이지 새로고침"
      }
    },
    "accounts": {
      "title": "계정 선택",
      "useAnother": "다른 계정 사용"
    },
    "twoFactorCode": {
      "title": "인증",
      "subtitle": "{channel}(으)로 코드 전송됨",
      "codeLabel": "코드",
      "codePlaceholder": "6자리 코드",
      "errors": {
        "missingRequestUri": "요청 URI 없음",
        "verificationFailed": "인증 실패",
        "connectionFailed": "연결 실패",
        "unexpectedResponse": "예기치 않은 응답"
      }
    },
    "totp": {
      "title": "인증 코드",
      "codePlaceholder": "6자리 코드",
      "backupCodePlaceholder": "백업 코드",
      "trustDevice": "이 기기를 30일간 신뢰",
      "hintBackupCode": "백업 코드",
      "hintTotpCode": "인증 코드"
    },
    "error": {
      "title": "승인 실패",
      "tryAgain": "다시 시도",
      "genericError": "예기치 않은 오류가 발생했습니다"
    }
  },
  "sso_register": {
    "title": "등록 완료",
    "subtitle": "{provider}로 계정 생성",
    "handle_label": "핸들 선택",
    "handle_available": "사용 가능",
    "handle_taken": "이미 사용 중",
    "submit": "계정 생성",
    "error_expired": "등록 세션이 만료되었습니다. 다시 시도해 주세요.",
    "error_handle_required": "핸들을 선택해 주세요",
    "emailVerifiedByProvider": "이 이메일은 {provider}에서 인증되었습니다. 추가 인증이 필요하지 않습니다.",
    "emailChangedNeedsVerification": "다른 이메일을 사용하시면 인증이 필요합니다.",
    "infoAfterTitle": "계정 생성 후",
    "infoAddPassword": "기존 로그인을 위한 비밀번호 추가",
    "infoAddPasskey": "비밀번호 없는 로그인을 위한 패스키 설정",
    "infoLinkProviders": "추가 SSO 제공자 연결",
    "infoChangeHandle": "핸들 변경 또는 사용자 정의 도메인 사용",
    "tryAgain": "다시 시도"
  },
  "verify": {
    "title": "계정 인증",
    "subtitle": "{channel}(으)로 인증 코드를 보냈습니다. 아래에 입력하여 등록을 완료하세요.",
    "tokenTitle": "인증",
    "tokenSubtitle": "인증 코드와 전송된 식별자를 입력하세요.",
    "codePlaceholder": "인증 코드 붙여넣기",
    "codeLabel": "인증 코드",
    "codeHelp": "메시지에서 하이픈을 를 복사하세요",
    "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": "새 이메일 주소를 인증해야 할 수 있습니다.",
    "emailAuthorizeSuccess": "이메일 업데이트가 승인되었습니다.",
    "emailAuthorizeInfo": "이제 원래 기기에서 변경을 완료할 수 있습니다.",
    "newEmailLabel": "새 이메일 주소",
    "newEmailPlaceholder": "new@example.com",
    "updateEmail": "이메일 업데이트",
    "updating": "업데이트 중..."
  },
  "resetPassword": {
    "title": "비밀번호 재설정",
    "forgotTitle": "비밀번호를 잊으셨나요",
    "subtitle": "받은 코드를 입력하고 새 비밀번호를 선택하세요.",
    "forgotSubtitle": "핸들 또는 이메일을 입력하면 비밀번호 재설정 코드를 보내드립니다.",
    "handleOrEmail": "핸들 또는 이메일",
    "emailPlaceholder": "핸들 또는 you@example.com",
    "sendCode": "재설정 코드 보내기",
    "sending": "전송 중...",
    "codeSent": "비밀번호 재설정 코드를 보냈습니다! 선호하는 알림 채널을 확인하세요.",
    "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": {
    "externalDid": "귀하의 did:web",
    "externalDidPlaceholder": "did:web:yourdomain.com",
    "errors": {
      "handleRequired": "핸들은 필수입니다",
      "handleNoDots": "핸들에 점을 포함할 수 없습니다. 계정 생성 후 사용자 정의 도메인을 설정할 수 있습니다.",
      "passkeysNotSupported": "이 브라우저에서 패스키가 지원되지 않습니다. 비밀번호 기반 계정을 만들거나 패스키를 지원하는 브라우저를 사용하세요.",
      "passkeyCancelled": "패스키 생성이 취소되었습니다",
      "passkeyFailed": "패스키 등록에 실패했습니다",
      "signalRequired": "Signal 인증에는 사용자명이 필요합니다",
      "inviteRequired": "초대 코드가 필요합니다",
      "externalDidRequired": "외부 did:web이 필요합니다",
      "emailRequired": "이메일 인증에는 이메일이 필요합니다",
      "telegramRequired": "Telegram 인증에는 Telegram 사용자 이름이 필요합니다",
      "externalDidFormat": "외부 DID는 did:web:으로 시작해야 합니다",
      "discordRequired": "Discord 인증에는 Discord 사용자명이 필요합니다"
    },
    "identityType": "아이덴티티 유형",
    "identityTypeHint": "분산 아이덴티티 관리 방법을 선택하세요.",
    "passkeyNamePlaceholder": "예: yubikey, 휴대폰",
    "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 문서를 제공해야 합니다",
    "activatingAccount": "활성화 중",
    "creatingAccount": "계정 생성 중",
    "passkeyDescription": "이 계정에 패스키 등록",
    "passkeyName": "패스키 이름",
    "setupPasskey": "패스키 생성"
  },
  "trustedDevices": {
    "noDevices": "신뢰할 수 있는 기기가 아직 없습니다.",
    "noDevicesHint": "2단계 인증이 활성화된 상태로 로그인할 때 기기를 30일간 신뢰하도록 선택할 수 있습니다.",
    "lastSeen": "마지막 접속:",
    "trustedSince": "신뢰 시작:",
    "expired": "만료됨",
    "tomorrow": "내일",
    "inDays": "{days}일 후",
    "revoke": "신뢰 취소",
    "revokeConfirm": "이 기기에 대한 신뢰를 취소하시겠습니까? 다음에 이 기기에서 로그인할 때 2FA 코드를 입력해야 합니다.",
    "deviceRevoked": "기기 신뢰가 취소되었습니다",
    "deviceRenamed": "기기 이름이 변경되었습니다",
    "deviceNamePlaceholder": "기기 이름",
    "unknownDevice": "알 수 없는 기기"
  },
  "reauth": {
    "title": "재인증",
    "password": "비밀번호",
    "totp": "TOTP",
    "passkey": "패스키",
    "authenticatorCode": "인증 코드",
    "usePasskey": "패스키",
    "authenticating": "인증 중",
    "cancel": "취소"
  },
  "delegation": {
    "controllers": "컨트롤러",
    "controlledAccounts": "관리 계정",
    "noControllers": "아직 컨트롤러가 없습니다",
    "noControlledAccounts": "관리 계정이 없습니다",
    "addController": "컨트롤러 추가",
    "handle": "핸들",
    "did": "DID",
    "scopeOwner": "소유자",
    "scopeViewer": "뷰어",
    "scopeCustom": "사용자 정의",
    "actAs": "로 활동",
    "auditLog": "감사 로그",
    "actor": "액터",
    "details": "세부정보",
    "actionGrantCreated": "권한 생성",
    "actionGrantRevoked": "권한 취소",
    "actionScopesModified": "권한 수정",
    "actionTokenIssued": "토큰 발급",
    "actionRepoWrite": "저장소 쓰기",
    "actionBlobUpload": "Blob 업로드",
    "actionAccountAction": "계정 작업",
    "previous": "이전",
    "next": "다음",
    "adding": "추가 중...",
    "accessLevel": "액세스 수준",
    "addControllerButton": "+ 컨트롤러 추가",
    "addControllerWarningTitle": "중요: 로그인 방식이 변경됩니다",
    "addControllerWarningText": "컨트롤러를 추가하면 OAuth를 통해 이 계정에 로그인할 수 있는 것은 컨트롤러 계정뿐입니다. 서드파티 앱이나 웹 인터페이스에서 본인 자격 증명으로 직접 로그인할 수 없게 됩니다.",
    "addControllerWarningBullet1": "컨트롤러는 부여한 권한으로 귀하를 대신하여 작업할 수 있습니다",
    "addControllerWarningBullet2": "먼저 컨트롤러로 로그인한 후 이 계정으로 전환해야 합니다",
    "addControllerWarningBullet3": "나중에 컨트롤러를 제거하면 직접 로그인 권한을 복구할 수 있습니다",
    "addControllerConfirm": "직접 로그인할 수 없게 되는 것을 이해합니다",
    "auditLogDesc": "모든 위임 활동 보기",
    "cannotAddControllers": "다른 계정을 관리하고 있어 컨트롤러를 추가할 수 없습니다. 계정은 컨트롤러를 가지거나 다른 계정을 관리할 수 있지만 둘 다는 불가능합니다.",
    "cannotControlAccounts": "이 계정에 컨트롤러가 있어 다른 계정을 관리할 수 없습니다. 계정은 컨트롤러를 가지거나 다른 계정을 관리할 수 있지만 둘 다는 불가능합니다.",
    "controlledAccountsDesc": "귀하가 대신 작업할 수 있는 계정",
    "controlledAccountsLocalOnly": "이 PDS의 계정만 표시됩니다. 다른 PDS에서 별도로 컨트롤러 액세스를 부여했을 수 있습니다",
    "controllerAdded": "컨트롤러가 추가되었습니다",
    "controllerDid": "컨트롤러 DID",
    "controllerIdentifier": "컨트롤러 핸들 또는 DID",
    "controllerRemoved": "컨트롤러가 제거되었습니다",
    "controllersDesc": "귀하를 대신하여 작업할 수 있는 계정",
    "createAccount": "계정 생성",
    "createDelegatedAccount": "위임 계정 생성",
    "createDelegatedAccountButton": "+ 위임 계정 생성",
    "emailOptional": "이메일 (선택사항)",
    "granted": "허용일",
    "inactive": "비활성",
    "remove": "제거",
    "removeConfirm": "이 컨트롤러를 제거하시겠습니까?",
    "yourAccessLevel": "귀하의 액세스 수준",
    "accountCreated": "위임 계정이 생성되었습니다: {handle}",
    "noAuditEntries": "감사 항목 없음",
    "target": "대상",
    "failedToLoadAudit": "감사 로그 로딩 실패"
  },
  "actAs": {
    "title": "로 활동",
    "noAccountSpecified": "계정 DID가 지정되지 않았습니다",
    "noAccess": "이 계정에 대한 액세스 권한이 없습니다",
    "failedToInitiate": "인증 시작에 실패했습니다",
    "invalidResponse": "서버에서 잘못된 응답을 받았습니다",
    "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 아이덴티티를 서버 간에 이동",
    "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": "마이그레이션 원본",
        "handleChoice": "핸들",
        "keepExisting": "기존 핸들 유지",
        "createNew": "새 핸들 생성",
        "existingHandle": "현재 핸들",
        "verifyInstructions": "DNS 또는 HTTP로 소유권 확인",
        "or": "또는",
        "returning": "반환값",
        "verifyOwnership": "소유권 확인",
        "verifying": "확인 중",
        "verified": "확인됨",
        "checkAgain": "다시 확인",
        "newHandle": "새 핸들",
        "checkingAvailability": "사용 가능 여부 확인 중...",
        "handleAvailable": "핸들을 사용할 수 있습니다!",
        "handleTaken": "핸들이 이미 사용 중입니다",
        "handleTooShort": "핸들은 최소 3자 이상이어야 합니다",
        "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": "비밀번호",
        "warning": "\"마이그레이션 시작\"을 클릭하면 저장소와 데이터 전송이 시작됩니다. 이 과정은 쉽게 되돌릴 수 없습니다.",
        "startMigration": "마이그레이션 시작",
        "starting": "시작 중..."
      },
      "migrating": {
        "title": "마이그레이션 진행 중",
        "desc": "계정을 전송하는 중입니다...",
        "exportRepo": "저장소 내보내기",
        "importRepo": "저장소 가져오기",
        "migrateBlobs": "blob 마이그레이션",
        "migratePrefs": "환경설정 마이그레이션"
      },
      "passkeySetup": {
        "title": "패스키 설정",
        "desc": "이메일이 인증되었습니다. 안전한 비밀번호 없는 로그인을 위해 패스키를 설정하세요.",
        "nameLabel": "패스키 이름 (선택사항)",
        "namePlaceholder": "예: yubikey, 휴대폰",
        "nameHint": "이 패스키를 식별하기 위한 이름",
        "instructions": "아래 버튼을 클릭하여 패스키를 등록하세요. 기기에서 생체 인식(지문, Face ID) 또는 보안 키 사용을 요청합니다.",
        "register": "패스키 등록",
        "registering": "등록 중..."
      },
      "appPassword": {
        "title": "앱 비밀번호 저장",
        "desc": "패스키가 생성되었습니다. 아직 패스키를 지원하지 않는 앱에서 사용할 앱 비밀번호가 생성되었습니다.",
        "warning": "이 앱 비밀번호는 아직 패스키를 지원하지 않는 앱(예: bsky.app)에 로그인할 때 필요합니다. 이 비밀번호는 한 번만 표시됩니다.",
        "label": "앱 비밀번호:",
        "saved": "앱 비밀번호를 안전한 곳에 저장했습니다",
        "continue": "계속"
      },
      "emailVerify": {
        "title": "계정 인증",
        "desc": "인증 코드가 {email}(으)로 전송되었습니다.",
        "hint": "아래에 코드를 입력하거나, 메시지의 링크를 클릭하여 자동으로 계속할 수 있습니다.",
        "tokenLabel": "인증 코드",
        "tokenPlaceholder": "인증 코드 입력",
        "resend": "코드 재전송",
        "telegramInstructions": "Telegram 봇에 메시지를 보내 계정을 인증하세요.",
        "discordInstructions": "Discord 봇에 메시지를 보내 계정을 인증하세요.",
        "openTelegram": "Telegram에서 인증하기",
        "openDiscord": "Discord에서 인증하기",
        "waitingForVerification": "인증 대기 중..."
      },
      "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": "회전 키",
        "plcWarningTitle": "되돌릴 수 없는 지점",
        "plcWarning": "시작하면 DID 문서가 이 PDS를 가리키도록 업데이트됩니다. 문제가 발생하면 회전 키를 사용하여 복구할 수 있지만, 손상된 아이덴티티 상태를 피하려면 마이그레이션을 완료해야 합니다."
      },
      "migrating": {
        "title": "계정 복원 중",
        "desc": "계정을 복원하는 중입니다...",
        "creating": "계정 생성 중",
        "importing": "저장소 가져오는 중"
      },
      "success": {
        "desc": "계정이 이 PDS에 성공적으로 복원되었습니다."
      },
      "blobs": {
        "title": "Blob 마이그레이션 중",
        "desc": "이전 PDS에서 이미지와 미디어를 복구하는 중...",
        "migrating": "Blob 마이그레이션 중",
        "failedTitle": "일부 Blob을 마이그레이션할 수 없음",
        "failedDesc": "{count}개의 Blob을 이전 PDS에서 가져올 수 없습니다. 서버에 연결할 수 없거나 파일이 삭제되었을 수 있습니다."
      }
    }
  }
}
