码桶
发现社区成员的开源项目
ko.js47.2 KB
export default {
title: 'DNS 관리 패널',
subtitle: 'Cloudflare 도메인을 안전하게 관리하세요',
serverMode: '서버 모드',
clientMode: '클라이언트 모드',
usernameLabel: '사용자 이름',
usernamePlaceholder: '사용자 이름 입력...',
passwordLabel: '비밀번호',
passwordPlaceholder: '비밀번호 입력...',
tokenLabel: 'Cloudflare API 토큰',
tokenPlaceholder: 'API 토큰 붙여넣기...',
tokenHint: '토큰은 헤더를 통해 전송되며, 백엔드는 투명 프록시로 동작합니다.',
apiTokenTab: 'API Token',
globalKeyTab: 'Global API Key',
globalKeyEmailLabel: 'Cloudflare 계정 이메일',
globalKeyEmailPlaceholder: '[email protected]',
globalKeyLabel: 'Global API Key',
globalKeyPlaceholder: 'Global API Key 입력',
globalKeyHint: 'Cloudflare 대시보드 > My Profile > API Tokens > Global API Key에서 확인:',
globalKeyWarning: '보안 주의: Global API Key는 계정 전체 제어 권한을 가집니다. 유출 시 공격자가 Cloudflare 계정을 완전히 제어할 수 있습니다. 세분화된 권한을 위해 API Token을 권장합니다.',
serverHint: '백엔드는 Pages 환경 변수로 실행됩니다.',
loginBtn: '대시보드 접속',
loginFailed: '로그인 실패',
sessionExpired: '세션이 만료되었습니다. 다시 로그인해 주세요.',
errorOccurred: '오류가 발생했습니다',
yourDomains: '내 도메인',
domainSubtitle: 'DNS 및 SaaS 설정을 관리할 영역을 선택하세요',
refresh: '새로고침',
id: 'ID',
manage: '관리',
back: '영역 목록으로 돌아가기',
dnsRecords: 'DNS 레코드',
saasHostnames: '사용자 지정 호스트명',
addRecord: '레코드 추가',
type: '유형',
name: '이름',
content: '내용',
proxied: '프록시',
actions: '작업',
hostname: '호스트명',
status: '상태',
sslStatus: 'SSL 상태',
confirmDelete: '이 레코드를 삭제하시겠습니까?',
logout: '로그아웃',
managed: '관리형',
clientOnly: '클라이언트 전용',
cancel: '취소',
save: '저장',
saving: '저장 중...',
addModalTitle: '새 DNS 레코드 추가',
confirmTitle: '작업 확인',
confirmDeleteText: '이 작업은 되돌릴 수 없습니다. 계속하시겠습니까?',
yes: '확인',
no: '아니요',
statusActive: '활성',
statusPending: '대기 중',
statusInitializing: '초기화 중',
statusMoved: '이동됨',
statusDeactivated: '비활성화',
rememberMe: '로그인 상태 유지',
rememberToken: 'API 토큰 저장',
searchPlaceholder: '레코드 검색...',
editRecord: '레코드 편집',
addSaaS: '사용자 지정 호스트명 추가',
confirmDeleteSaaS: '이 사용자 지정 호스트명을 삭제하시겠습니까?',
proxiedHint: '활성화하면 트래픽이 Cloudflare를 통해 가속 및 보호됩니다',
hostnamePlaceholder: '예: app.example.com',
fallbackOrigin: '폴백 오리진',
fallbackOriginPlaceholder: '예: origin.example.com',
updateFallback: '폴백 오리진 업데이트',
fallbackStatus: '폴백 상태',
sslMethod: 'SSL 검증 방법',
sslType: 'SSL 유형',
sslMethodTxt: 'TXT 레코드',
sslMethodHttp: 'HTTP 검증',
sslMethodCname: 'CNAME 검증',
sslMethodEmail: '이메일 검증',
httpWarning: '보안 경고: 안전하지 않은 HTTP 연결이 감지되었습니다. 토큰 보호를 위해 비HTTPS 환경에서의 민감한 정보 전송이 차단됩니다(localhost 제외).',
recommended: '권장',
copied: '클립보드에 복사되었습니다',
updateSuccess: '업데이트 성공',
addSuccess: '추가 성공',
deleteSuccess: '삭제 성공',
importSuccess: '가져오기 성공',
exportSuccess: '내보내기 성공',
batchDelete: '일괄 삭제',
confirmBatchDelete: '선택한 {count}개의 레코드를 삭제하시겠습니까?',
comment: '코멘트',
tags: '태그',
addTag: '태그 추가',
commentPlaceholder: '코멘트 추가...',
tagsPlaceholder: '태그 입력 후 Enter',
priority: '우선순위',
weight: '가중치',
port: '포트',
service: '서비스',
protocol: '프로토콜',
tag: '태그',
flags: '플래그',
import: '가져오기',
export: '내보내기',
uploadFile: '설정 파일 업로드',
order: '순서',
preference: '우선순위',
regex: '정규 표현식',
replacement: '대체값',
algorithm: '알고리즘',
fingerprint: '지문',
keyTag: '키 태그',
digestType: '다이제스트 유형',
digest: '다이제스트',
usage: '용도',
selector: '선택자',
matchingType: '매칭 유형',
certificate: '인증서',
target: '대상',
value: '값',
ttl: 'TTL',
ttlAuto: '자동',
ttl1min: '1분',
ttl2min: '2분',
ttl5min: '5분',
ttl10min: '10분',
ttl15min: '15분',
ttl30min: '30분',
ttl1h: '1시간',
ttl2h: '2시간',
ttl5h: '5시간',
ttl12h: '12시간',
ttl1d: '1일',
ownership: '소유권 확인',
sslValidation: 'SSL 검증',
verifyMethod: '검증 방법',
verifyType: '검증 유형',
verifyName: '검증 이름',
verifyValue: '검증 값',
certificateStatus: '인증서 상태',
hostnameStatus: '호스트명 상태',
verificationRecords: '검증 레코드',
noVerificationNeeded: '검증이 필요하지 않습니다',
editSaaS: '사용자 지정 호스트명 편집',
minTlsVersion: '최소 TLS 버전',
certType: '인증서 유형',
certCloudflare: 'Cloudflare 제공',
certCustom: '사용자 지정 인증서',
originServer: '오리진 서버',
defaultOrigin: '기본 오리진',
customOrigin: '사용자 지정 오리진',
originPlaceholder: '예: origin.example.com',
tlsDefault: 'TLS 1.0 (기본)',
active: '활성',
pending_validation: '검증 대기 중',
pending_deployment: '배포 중',
pending: '대기 중',
switchZone: '도메인 전환',
deleteZone: '존 삭제',
deleteZoneWarning: '이 작업은 이 도메인과 모든 DNS 레코드, 설정 및 구성을 Cloudflare 계정에서 영구적으로 제거합니다. 이 작업은 되돌릴 수 없습니다.',
deleteZoneTypeConfirm: '삭제를 확인하려면 {zone}을(를) 입력하세요:',
zoneDeleted: '존이 성공적으로 삭제되었습니다',
zoneDeleteFailed: '존 삭제에 실패했습니다',
saasNotEnabled: '사용자 지정 호스트 이름이 활성화되지 않았습니다',
saasNotEnabledDesc: 'Cloudflare는 모든 플랜에서 100개의 무료 사용자 지정 호스트 이름(SSL for SaaS)을 제공하지만, 먼저 Cloudflare 대시보드에서 활성화하고 유효한 결제 수단을 추가해야 합니다.',
saasStep1: '1. Cloudflare 대시보드 → SSL/TLS → 사용자 지정 호스트 이름으로 이동',
saasStep2: '2. 유효한 결제 수단 추가 (요금이 청구되지 않습니다)',
saasStep3: '3. 활성화 후 최대 100개의 사용자 지정 호스트 이름을 무료로 관리할 수 있습니다',
unbindZone: '존 해제',
unbindZoneDesc: '이 관리자에서만 도메인을 제거합니다. 존은 Cloudflare 계정에 그대로 유지됩니다. 새로고침하면 다시 표시됩니다.',
zoneUnbound: '관리자에서 존이 제거되었습니다',
unbindZoneConfirmShort: '이 존을 관리자에서 제거하시겠습니까?',
deleteGroup: '자격 증명 그룹 삭제',
deleteGroupDesc: '이 자격 증명과 하위 {count}개 존이 제거됩니다. 존은 Cloudflare 계정에 남아 있지만 토큰/키가 삭제됩니다.',
zoneActions: '존 작업',
toggleSidebar: '사이드바 전환',
overview: '개요',
selectZone: '존 선택',
noZonesFound: '도메인을 찾을 수 없습니다. 토큰을 확인하거나 Cloudflare에서 도메인을 추가하세요.',
fallbackError: '이 레코드는 SSL for SaaS의 폴백 오리진으로 설정되어 있어 편집할 수 없습니다.',
invalidPassword: '잘못된 비밀번호',
accountLocked: '계정이 일시적으로 잠겼습니다. 나중에 다시 시도하세요.',
serverNotConfigured: '서버가 비밀번호 로그인용으로 구성되지 않았습니다',
switchAccount: '계정 전환',
not_set: '미설정',
invalidToken: '유효하지 않은 API 토큰',
tokenRequired: 'API 토큰이 필요합니다',
verifyFailed: '토큰 검증 실패',
noZonesServerExplanation: '서버 모드이지만 서버에 CF_API_TOKEN이 설정되지 않았거나, 토큰에 도메인 접근 권한이 없습니다.',
noZonesClientExplanation: 'API 토큰이 유효하지 않거나, 만료되었거나, 필요한 권한이 부족할 수 있습니다.',
noZonesRetryWithToken: 'API 토큰으로 재시도',
noZonesEnterToken: 'Cloudflare API 토큰을 입력하여 직접 연결하세요.',
noZonesGetToken: '토큰을 생성하세요:',
tokenRequiredPermissions: '필요한 권한: Zone > Zone Read, DNS Edit, Zone Settings Edit, Cache Purge, SSL and Certificates Edit',
backToLogin: '로그인으로 돌아가기',
retryFetch: '재시도',
saveToServer: '서버에 저장',
saveToServerHint: '토큰을 서버에 저장하면 다음에 비밀번호 로그인만으로 도메인을 관리할 수 있습니다.',
tokenSaved: '토큰이 서버에 저장되었습니다',
tokenSaveFailed: '저장 실패',
useDirectly: '바로 사용',
addAccount: '계정 추가',
addNewToken: '새 토큰 추가',
addAccountTitle: 'Cloudflare 계정 추가',
accountName: '계정 이름 (선택사항)',
accountNamePlaceholder: '예: 내 블로그',
removeAccount: '계정 삭제',
confirmRemoveAccount: '이 계정을 삭제하시겠습니까? 토큰이 서버에서 삭제됩니다.',
accountAdded: '계정이 추가되었습니다',
accountRemoved: '계정이 삭제되었습니다',
storageServer: '관리형',
storageLocal: '로컬',
switchingStorage: '전환 중...',
switchedToLocal: '로컬 모드로 전환되었습니다',
switchedToServer: '관리형 모드로 전환되었습니다',
localModeTitle: '로컬 모드',
localModeDesc: '토큰은 브라우저에만 저장되며 서버를 거치지 않습니다.',
localTokens: '로컬 토큰',
noLocalTokens: '로컬 토큰이 없습니다. Cloudflare API 토큰을 추가하세요.',
addLocalToken: '로컬 토큰 추가',
localTokenAdded: '토큰이 로컬에 추가되었습니다',
removeLocalToken: '삭제',
confirmRemoveLocalToken: '이 로컬 토큰을 삭제하시겠습니까?',
localTokenRemoved: '로컬 토큰이 삭제되었습니다',
uploadToServer: '서버에 업로드',
uploadedToServer: '서버에 업로드되었습니다',
switchToLocal: '로컬 저장소로 전환',
localBadge: '로컬',
apiTokenBadge: 'API Token',
globalKeyBadge: 'Global Key',
usersManagement: '사용자 관리',
addUser: '사용자 추가',
editUser: '사용자 편집',
deleteUser: '사용자 삭제',
confirmDeleteUser: '이 사용자를 삭제하시겠습니까? 해당 사용자의 모든 토큰도 삭제됩니다.',
roleAdmin: '관리자',
roleUser: '일반 사용자',
userCreated: '사용자가 생성되었습니다',
userUpdated: '사용자가 업데이트되었습니다',
userDeleted: '사용자가 삭제되었습니다',
newPassword: '새 비밀번호',
newPasswordPlaceholder: '새 비밀번호 입력 (빈칸이면 변경 없음)',
role: '역할',
loginAnotherAccount: '다른 계정으로 로그인',
addSessionTitle: '다른 계정으로 로그인',
sessionAdded: '계정이 추가되었습니다',
removeSession: '이 계정에서 로그아웃',
setupAccount: '계정 설정',
setupAccountDesc: '관리자가 제공한 설정 토큰으로 비밀번호를 설정하세요',
setupTokenLabel: '설정 토큰',
setupTokenPlaceholder: '관리자의 설정 토큰 붙여넣기...',
setupSuccess: '계정이 활성화되었습니다. 로그인하세요.',
setupFailed: '설정 실패',
needsSetup: '계정이 아직 설정되지 않았습니다. 먼저 설정 토큰을 사용하세요.',
changePassword: '비밀번호 변경',
currentPassword: '현재 비밀번호',
currentPasswordPlaceholder: '현재 비밀번호 입력...',
newPasswordPlaceholder2: '새 비밀번호 입력...',
confirmNewPassword: '새 비밀번호 확인',
confirmNewPasswordPlaceholder: '새 비밀번호 다시 입력...',
passwordChanged: '비밀번호가 변경되었습니다',
passwordMismatch: '비밀번호가 일치하지 않습니다',
passwordTooWeak: '비밀번호는 8자 이상이며, 영문자와 숫자를 포함해야 합니다',
passwordChangeError: '비밀번호 변경 실패',
setupTokenCopied: '설정 토큰이 복사되었습니다',
resetSetupToken: '설정 토큰 재생성',
userStatusPending: '미활성화',
userStatusActive: '활성화됨',
adminPasswordNote: '관리자 비밀번호는 환경 변수로 관리됩니다',
register: '회원가입',
registerDesc: '새 계정 만들기',
registerSuccess: '가입 완료. 로그인하세요.',
registerFailed: '가입 실패',
registrationDisabled: '가입이 비활성화되어 있습니다. 관리자에게 초대를 요청하세요.',
appSettings: '설정',
openRegistration: '공개 가입',
openRegistrationDesc: '초대 토큰 없이 누구나 자유롭게 가입할 수 있도록 허용',
settingsSaved: '설정이 저장되었습니다',
inviteTokenMode: '초대 토큰 모드',
inviteTokenModeDesc: '신규 사용자는 가입 시 관리자가 제공하는 초대 토큰이 필요합니다',
badgeE2E: 'E2E 암호화',
badgeZeroKnowledge: '제로 날리지',
badgeSHA256: 'PBKDF2 해시',
badgeJWT: 'JWT 인증',
badgeHTTPS: 'HTTPS 전용',
badgeNoPlaintext: '평문 비밀번호 미전송',
passkey: '패스키',
passkeyLogin: '패스키 로그인',
passkeyLoginDesc: '등록된 패스키로 로그인',
passkeyLoginBtn: '패스키로 로그인',
passkeyManage: '패스키 관리',
passkeyRegister: '패스키 등록',
passkeyRegistered: '패스키가 등록되었습니다',
passkeyDeleted: '패스키가 삭제되었습니다',
passkeyNone: '등록된 패스키가 없습니다',
passkeyName: '이름',
passkeyCreatedAt: '등록일시',
passkeyNoSupport: '이 브라우저는 패스키를 지원하지 않습니다',
passkeyNoCredentials: '이 사용자에게 등록된 패스키가 없습니다',
passkeyError: '패스키 작업 실패',
passkeyUsernameRequired: '먼저 사용자 이름을 입력하세요',
badgePasskey: '패스키 지원',
darkMode: '다크 모드',
lightMode: '라이트 모드',
// Audit Log
auditLog: '감사 로그',
auditLogEmpty: '감사 기록이 없습니다',
auditLogClear: '로그 삭제',
auditLogClearConfirm: '모든 감사 로그를 삭제하시겠습니까?',
auditLogCleared: '감사 로그가 삭제되었습니다',
auditTime: '시간',
auditUser: '사용자',
auditAction: '작업',
auditDetail: '상세',
auditPrev: '이전',
auditNext: '다음',
// Global Search
globalSearchPlaceholder: '전체 영역의 DNS 레코드 검색...',
searchResults: '검색 결과',
searchNoResults: '일치하는 레코드가 없습니다',
searchMinChars: '2자 이상 입력하세요',
searching: '검색 중...',
searchResultCount: '{count}개 레코드 발견 ({zones}개 영역 검색)',
// TOTP/2FA
totpManage: '2단계 인증',
totpSetupDesc: '인증 앱으로 보안을 강화하세요',
totpEnabled: '2단계 인증이 활성화되어 있습니다',
totpNotEnabled: '2단계 인증이 비활성화되어 있습니다',
totpEnable: '2단계 인증 활성화',
totpDisable: '2단계 인증 비활성화',
totpScanQR: '인증 앱으로 QR 코드를 스캔하거나 키를 수동 입력하세요',
totpSecretKey: '비밀 키',
totpEnterCode: '설정을 완료하려면 코드를 입력하세요',
totpCodePlaceholder: '6자리 코드',
totpVerify: '확인',
totpVerified: '2단계 인증이 활성화되었습니다',
totpDisabled: '2단계 인증이 비활성화되었습니다',
totpDisableDesc: '2단계 인증을 비활성화하려면 현재 코드를 입력하세요',
totpRequired: '2단계 인증 코드를 입력하세요',
totpInvalid: '인증 코드가 유효하지 않습니다',
totpStep: '2단계 인증',
// DNS History/Rollback
dnsHistory: 'DNS 기록',
noSnapshots: '스냅샷이 없습니다',
snapshotTime: '시간',
snapshotUser: '사용자',
snapshotAction: '작업',
rollback: '롤백',
rollbackConfirm: '이 스냅샷으로 롤백하시겠습니까? 현재 레코드가 대체됩니다.',
rollbackSuccess: '롤백 완료',
rollbackDetail: '삭제: {deleted}, 생성: {created}, 업데이트: {updated}',
// Diff View
compare: '비교',
diffTitle: '스냅샷 차이',
diffNoChanges: '스냅샷과 현재 레코드 간에 차이가 없습니다',
diffAdded: '추가됨',
diffRemoved: '삭제됨',
diffModified: '수정됨',
diffAddedSection: '추가된 레코드 (현재에 있고 스냅샷에 없음)',
diffRemovedSection: '삭제된 레코드 (스냅샷에 있고 현재에 없음)',
diffModifiedSection: '수정된 레코드',
diffBefore: '스냅샷',
diffAfter: '현재',
// Bulk Operations
bulkOperations: '일괄 작업',
bulkDesc: '여러 영역의 DNS 레코드를 일괄 관리',
bulkCreate: '일괄 생성',
bulkDelete: '일괄 삭제',
bulkAllZones: '전체 영역',
bulkSelectedZones: '선택된 영역',
bulkExecute: '실행',
bulkExecuting: '실행 중...',
bulkResults: '결과',
bulkSuccess: '일괄 작업이 완료되었습니다',
bulkSelectZones: '영역 선택',
bulkRecordType: '레코드 유형',
bulkRecordName: '레코드 이름',
bulkRecordContent: '레코드 값',
// Webhook
webhookUrl: 'Webhook URL',
webhookUrlPlaceholder: 'https://example.com/webhook',
webhookDesc: 'DNS 변경 및 로그인 이벤트 알림을 받을 Webhook을 설정하세요',
webhookSaved: 'Webhook이 저장되었습니다',
// DNS Templates
templates: '템플릿',
templateSpf: 'SPF (도메인 메일 서버 허용)',
templateDmarc: 'DMARC (기본 정책)',
templateGoogleMx: 'Google Workspace MX',
templateWwwCname: 'WWW 리디렉션 (CNAME)',
templateMailMx: '메일 (MX 기본)',
templateGoogleVerify: '인증 (Google)',
templateApplied: '템플릿이 적용되었습니다',
// Bulk Import
bulkImport: '일괄 가져오기',
bulkImportDesc: 'JSON으로 DNS 레코드를 일괄 가져오기',
pasteJson: 'JSON 붙여넣기',
uploadJsonFile: '또는 .json 파일 업로드',
previewRecords: '레코드 미리보기',
importRecords: '레코드 가져오기',
importing: '가져오는 중...',
importResultCreated: '{count}개의 레코드를 생성했습니다',
importResultErrors: '{count}개의 레코드 가져오기 실패',
invalidJson: '유효하지 않은 JSON 형식',
noRecordsFound: '레코드를 찾을 수 없습니다',
jsonFormatHint: '형식: { "records": [{ "type": "A", "name": "@", "content": "1.2.3.4" }] }',
// Zone Permissions
allowedZones: '영역 권한',
allowedZonesDesc: '이 사용자가 관리할 수 있는 영역을 제한합니다 (비어 있으면 모든 영역)',
allowedZonesPlaceholder: '영역 이름 입력 후 Enter (예: example.com)',
allowedZonesAll: '모든 영역 (제한 없음)',
allowedZonesAdd: '추가',
allowedZonesRemove: '삭제',
// Dashboard
dashboard: '대시보드',
dashboardZones: '영역 수',
dashboardRecords: 'DNS 레코드 수',
dashboardAccounts: '계정 수',
dashboardLastLogin: '마지막 로그인',
dashboardRecentActivity: '최근 활동',
dashboardNoActivity: '최근 활동이 없습니다',
dashboardJustNow: '방금',
// Scheduled Changes
scheduledChanges: '예약 변경',
scheduleForLater: '나중에 실행',
scheduleDateTime: '실행 일시',
scheduleConfirm: '예약',
scheduleCreated: '예약 변경이 생성되었습니다',
scheduleCancelled: '예약 변경이 취소되었습니다',
scheduleMustBeFuture: '실행 시간은 미래여야 합니다',
noScheduledChanges: '예약된 변경이 없습니다',
scheduledFor: '예약 시간',
cancelSchedule: '예약 취소',
scheduleActionCreate: '생성',
scheduleActionUpdate: '업데이트',
scheduleActionDelete: '삭제',
// Keyboard Shortcuts
keyboardShortcuts: '키보드 단축키',
shortcutFocusSearch: '검색에 포커스',
shortcutNewRecord: '새 DNS 레코드',
shortcutCloseModal: '모달 닫기',
shortcutShowHelp: '단축키 도움말 보기',
shortcutGeneral: '일반',
shortcutOr: '또는',
errorBoundaryTitle: '문제가 발생했습니다',
errorBoundaryMessage: '이 섹션에서 예기치 않은 오류가 발생했습니다. 다시 시도하거나 문제가 지속되면 페이지를 새로고침해 주세요.',
errorBoundaryRetry: '다시 시도',
errorBoundaryDetails: '오류 상세',
offlineMessage: '오프라인 상태입니다. 일부 기능을 사용할 수 없습니다.',
// Onboarding Tour
onboardingWelcomeTitle: 'DNS Manager에 오신 것을 환영합니다',
onboardingWelcomeDesc: '주요 기능을 간단히 둘러보겠습니다.',
onboardingZoneTitle: '영역 선택기',
onboardingZoneDesc: '여기에서 다양한 도메인을 전환하고 관리할 수 있습니다. 도메인 이름을 클릭하면 전환 메뉴가 열립니다.',
onboardingDnsTitle: 'DNS 레코드',
onboardingDnsDesc: '모든 DNS 레코드를 조회, 편집, 관리할 수 있습니다. 인라인 프록시 상태 전환을 지원합니다.',
onboardingTemplatesTitle: '템플릿',
onboardingTemplatesDesc: 'SPF, DMARC, Google MX 등 미리 만들어진 템플릿을 사용하여 자주 사용하는 DNS 레코드를 빠르게 추가하세요.',
onboardingSearchTitle: '검색',
onboardingSearchDesc: '검색 상자를 사용하여 레코드를 빠르게 필터링하세요. 이름, 유형, 내용으로 검색할 수 있습니다.',
onboardingDoneTitle: '준비 완료!',
onboardingDoneDesc: '기본 기능을 알았습니다. DNS 레코드 관리를 시작하세요!',
onboardingSkip: '건너뛰기',
onboardingNext: '다음',
onboardingFinish: '완료',
// DNS Record Grouping
groupBy: '그룹화',
groupByNone: '없음',
groupByType: '유형별',
groupBySubdomain: '서브도메인별',
// Import Formats
importFormatHint: 'JSON, BIND 영역 파일, CSV 형식을 지원합니다. 형식은 자동으로 감지됩니다.',
importDetectedFormat: '감지된 형식',
importPasteData: '데이터 붙여넣기',
importUploadFile: '파일 업로드',
importPlaceholder: 'JSON: [{"type":"A","name":"@","content":"1.2.3.4"}]\nBIND: @ IN A 1.2.3.4\nCSV: type,name,content,ttl,proxied',
importCsvMissingHeaders: 'CSV에 필수 열 헤더(type, name, content)가 없습니다',
// Share Snapshot
shareSnapshot: '공유',
shareSnapshotTitle: '스냅샷 공유',
shareSnapshotDesc: '읽기 전용 공유 링크 생성 (7일간 유효)',
shareLinkCopied: '공유 링크가 복사되었습니다',
// Inline Edit
inlineEditHint: '더블 클릭하여 빠르게 편집',
inlineEditSave: '저장',
inlineEditCancel: '취소',
inlineEditSaving: '저장 중...',
// Drag and Drop Reorder
dragHandle: '드래그하여 정렬',
dragReorderHint: '행을 드래그하여 우선순위 변경',
priorityUpdated: '우선순위가 업데이트되었습니다',
priorityUpdateFailed: '우선순위 업데이트 실패',
// DNS Monitors
monitors: 'DNS 모니터링',
monitorAdd: '모니터 추가',
monitorDelete: '모니터 삭제',
monitorAdded: '모니터가 추가되었습니다',
monitorDeleted: '모니터가 삭제되었습니다',
monitorNone: '모니터가 없습니다',
monitorNoneHint: '모니터를 추가하여 DNS 레코드 변경을 추적하세요',
monitorZone: '영역',
monitorSelectZone: '영역 선택...',
monitorRecordName: '레코드 이름',
monitorExpectedContent: '예상 콘텐츠',
monitorExpected: '예상',
monitorLastCheck: '마지막 확인',
monitorAutoRefresh: '60초마다 자동 새로고침',
// Cache Management
cacheTab: '캐시',
cacheDevMode: '개발 모드',
cacheDevModeDesc: '개발 모드는 캐싱을 일시적으로 비활성화합니다. 3시간 후 자동으로 만료됩니다.',
cacheDevModeOn: '개발 모드 활성화',
cacheDevModeOff: '개발 모드 비활성화',
cacheDevModeExpires: '{time} 후 자동 만료',
devModeEnabled: '개발 모드가 활성화되었습니다',
devModeDisabled: '개발 모드가 비활성화되었습니다',
cachePurgeAll: '전체 캐시 제거',
cachePurgeAllDesc: '이 영역의 모든 캐시 파일을 제거합니다. 이 작업은 취소할 수 없습니다.',
cachePurgeAllBtn: '전체 캐시 제거',
cachePurgeAllConfirm: '이 영역의 모든 캐시를 제거하시겠습니까?',
cachePurgeAllSuccess: '모든 캐시가 제거되었습니다',
cachePurgeUrls: 'URL별 캐시 제거',
cachePurgeUrlsDesc: '캐시를 제거할 URL을 한 줄에 하나씩 입력하세요 (요청당 최대 30개).',
cachePurgeUrlsPlaceholder: 'https://example.com/page1\nhttps://example.com/page2',
cachePurgeUrlsBtn: 'URL 캐시 제거',
cachePurgeUrlsSuccess: '{count}개 URL의 캐시가 제거되었습니다',
cacheUrlsEmpty: 'URL을 하나 이상 입력하세요',
cacheUrlsLimit: '요청당 최대 30개 URL (Cloudflare API 제한)',
tokenPermissionHint: 'API 토큰에 권한이 부족합니다. Zone Settings Edit, Cache Purge, SSL and Certificates Edit 를 추가하세요.',
loadSettingsError: '설정을 불러오지 못했습니다: {error}',
// Speed Optimization
speedTab: '속도',
speedQuickActions: '원클릭 속도 최적화',
speedQuickActionsDesc: '압축, 프리로드, 프로토콜 최적화 등 모든 속도 최적화 설정을 한 번에 활성화하거나 비활성화합니다.',
speedEnableAll: '모든 속도 최적화 활성화',
speedDisableAll: '모두 비활성화',
speedEnableAllSuccess: '모든 속도 최적화가 활성화되었습니다',
speedDisableAllSuccess: '모든 속도 최적화가 비활성화되었습니다',
speedAdvanced: '고급 / 사용자 정의',
speed_rocket_loader: 'Rocket Loader',
speedRocketLoaderDesc: 'JavaScript 로딩을 지연시켜 페인트 시간을 개선합니다. 일부 JS 종속 기능에 문제가 발생할 수 있습니다.',
speedRocketLoaderWarning: '인라인 스크립트에 문제가 발생할 수 있습니다',
speed_minify: '자동 압축',
speedMinifyDesc: '불필요한 문자를 제거하여 파일 크기를 줄입니다',
speed_brotli: 'Brotli 압축',
speedBrotliDesc: 'Brotli 압축을 적용하여 페이지 로드 속도를 높입니다',
speed_early_hints: 'Early Hints (스마트 힌트)',
speedEarlyHintsDesc: '전체 응답이 준비되기 전에 브라우저에 프리로드 힌트를 전송합니다',
speed_h2_prioritization: 'HTTP/2 우선순위 지정',
speedH2Desc: 'HTTP/2를 통한 리소스 전달 순서를 최적화합니다',
speed_0rtt: '0-RTT 연결 재개',
speed0rttDesc: '전체 핸드셰이크 없이 TLS 1.3 연결을 재개할 수 있습니다',
speed_fonts: 'Cloudflare 글꼴',
speedFontsDesc: 'Google Fonts를 도메인에서 직접 제공하도록 변환하여 타사 연결을 제거하고 개인정보 보호 및 성능을 향상시킵니다.',
speed_polish: 'Polish (이미지 최적화)',
speedPolishDesc: '사이트 이미지 크기를 최적화합니다. 무손실은 품질 저하 없이 파일 크기를 줄이고, 손실은 더 높은 압축률을 제공합니다.',
speedPolish_off: '끄기',
speedPolish_lossless: '무손실',
speedPolish_lossy: '손실',
speed_mirage: 'Mirage',
speedMirageDesc: '이미지 지연 로딩과 최적화된 플레이스홀더로 모바일 기기에서 이미지 로딩을 가속화합니다.',
speed_image_resizing: '이미지 크기 조정',
speedImageResizingDesc: 'URL 매개변수 또는 Workers를 통해 실시간으로 이미지를 크기 조정, 자르기, 변환합니다.',
// SSL/TLS
sslTab: 'SSL/TLS',
sslModeTitle: 'SSL/TLS 암호화 모드',
sslModeDescription: 'Cloudflare가 방문자와 원본 서버 간의 트래픽을 암호화하는 방식을 선택합니다.',
sslModeOff: '끄기',
sslModeOffDesc: '암호화 없음. 모든 트래픽이 평문으로 전송됩니다.',
sslModeFlexible: '유연',
sslModeFlexibleDesc: '브라우저와 Cloudflare 간의 트래픽만 암호화합니다. 원본에 SSL 인증서가 필요하지 않습니다.',
sslModeFull: '전체',
sslModeFullDesc: '엔드투엔드 암호화이지만 원본 인증서를 검증하지 않습니다.',
sslModeStrict: '전체 (엄격)',
sslModeStrictDesc: '원본 인증서를 검증하는 엔드투엔드 암호화. 가장 안전한 옵션입니다.',
sslAlwaysHttps: '항상 HTTPS 사용',
sslAlwaysHttpsDesc: '모든 HTTP 요청을 HTTPS로 리디렉션합니다.',
sslMinTls: '최소 TLS 버전',
sslMinTlsDesc: '도메인에 연결할 수 있는 최소 TLS 버전을 설정합니다.',
sslAutoRewrites: '자동 HTTPS 재작성',
sslAutoRewritesDesc: 'HTTP를 HTTPS로 재작성하여 혼합 콘텐츠를 수정합니다.',
sslUpdateSuccess: 'SSL/TLS 설정이 업데이트되었습니다',
sslOffWarning: '경고: SSL이 꺼져 있습니다. 사이트 트래픽이 암호화되지 않아 가로채기에 취약합니다.',
sslDiagramBrowser: '브라우저',
sslDiagramOrigin: '원본',
errPermission: '권한 부족',
errPermissionDesc: '이 API 토큰에 필요한 권한이 없습니다. Zone:Read 및 DNS:Edit 범위가 있는지 확인하세요.',
errAuth: '유효하지 않거나 만료된 자격 증명',
errAuthDesc: '이 API 토큰 또는 키가 유효하지 않거나, 삭제되었거나, 만료되었습니다. 유효한 자격 증명을 다시 추가하세요.',
errNetwork: '네트워크 오류',
errNetworkDesc: 'Cloudflare API에 연결할 수 없습니다. 네트워크 연결을 확인한 후 다시 시도하세요.',
errUnknown: '예기치 않은 오류가 발생했습니다',
retry: '재시도',
goToCfDashboard: 'CF 대시보드 열기',
loadingRecords: '로딩 중...',
searchZones: '도메인 검색...',
sidebarPerformance: '성능',
sidebarSecurity: '보안',
sidebarConfig: '구성',
sidebarMonitoring: '모니터링',
pageRulesTab: '페이지 규칙',
securityTab: '보안',
networkTab: '네트워크',
scrapeShieldTab: '스크레이프 보호',
workersTab: 'Workers',
rulesTab: '리디렉트 규칙',
analyticsTab: '분석',
dnsSettingsTab: 'DNS 설정',
dnsSettingsTitle: 'DNS 설정',
enable: '활성화',
disable: '비활성화',
disabled: '비활성',
dnssecDesc: 'DNSSEC는 DNS 레코드에 디지털 서명하여 DNS 스푸핑 및 캐시 포이즈닝으로부터 도메인을 보호합니다. 활성화 후 도메인 등록 기관에 DS 레코드를 추가해야 합니다.',
dnssecPending: 'DNSSEC 활성화 대기 중입니다. 도메인 등록 기관에 DS 레코드를 추가하세요.',
cnameFlattening: 'CNAME 플래트닝',
cnameFlattenRoot: '루트에서만 플래트닝',
cnameFlattenAll: '모든 CNAME 플래트닝',
cnameFlatteningDesc: 'CNAME 플래트닝은 CNAME 레코드를 A 레코드로 변환하여 호환성을 개선합니다. 기본적으로 루트(@)에서만 활성화됩니다.',
cnameFlattenPaidOnly: '"모든 CNAME 플래트닝"은 유료 플랜에서만 사용할 수 있습니다.',
paidOnly: '유료',
nameservers: '네임서버',
nameserversDesc: '이 도메인에 현재 할당된 Cloudflare 네임서버입니다.',
pointDnsTo: '도메인 DNS를 다음으로 지정:',
transformTab: '변환 규칙',
originTab: '오리진 규칙',
emailTab: '이메일 라우팅',
customPagesTab: '사용자 정의 페이지',
sidebarEmail: '이메일 및 페이지',
// DNS Settings
dsTitle: 'DNS 설정',
dsDesc: 'DNSSEC, CNAME 플래트닝, 네임서버 등 DNS 수준 설정을 관리합니다.',
dsDnssec: 'DNSSEC',
dsDnssecDesc: '디지털 서명으로 DNS 쿼리를 보호하여 DNS 스푸핑 및 캐시 포이즈닝을 방지합니다.',
dsDnssecEnabled: 'DNSSEC 활성화됨',
dsDnssecDisabled: 'DNSSEC 비활성화됨',
dsDnssecPending: 'DNSSEC 대기 중',
dsDsRecord: 'DS 레코드',
dsDsRecordHint: 'DNSSEC를 활성화하려면 도메인 등록기관에 이 DS 레코드를 추가하세요.',
dsCnameFlattening: 'CNAME 플래트닝',
dsCnameFlatteningDesc: 'CNAME 플래트닝 동작을 제어합니다. 플래트닝은 CNAME 레코드를 최종 IP 주소로 해석합니다.',
dsFlattenAll: '모든 CNAME 플래트닝',
dsFlattenAtRoot: '루트에서만 플래트닝',
dsNameservers: '네임서버',
dsNameserversDesc: '이 존에 할당된 Cloudflare 네임서버.',
// Transform Rules
trTitle: '변환 규칙',
trDesc: 'URL 리라이트 및 HTTP 요청/응답 헤더 수정 규칙을 관리합니다.',
trUrlRewrites: 'URL 리라이트',
trHeaderMods: '헤더 수정',
trNoRules: '변환 규칙이 없습니다.',
trInfoCard: '변환 규칙은 Cloudflare 규칙 세트 엔진의 일부입니다. 복잡한 규칙 생성 및 편집은 Cloudflare 대시보드에서 가능합니다. 여기서는 기존 규칙을 활성화/비활성화할 수 있습니다.',
trManageInDashboard: '대시보드에서 관리',
// Origin Rules
orTitle: '오리진 규칙',
orDesc: '호스트 헤더 재작성, 포트 오버라이드 등 요청이 오리진 서버에 도달하는 방식을 제어하는 규칙을 관리합니다.',
orNoRules: '오리진 규칙이 없습니다.',
orInfoCard: '오리진 규칙은 Cloudflare 규칙 세트 엔진의 일부입니다. 복잡한 규칙 생성 및 편집은 Cloudflare 대시보드에서 가능합니다. 여기서는 기존 규칙을 활성화/비활성화할 수 있습니다.',
orManageInDashboard: '대시보드에서 관리',
// Email Routing
erTitle: '이메일 라우팅',
erDesc: '도메인으로 전송된 이메일을 대상 메일함으로 라우팅하는 이메일 전달 규칙을 구성합니다.',
erAddRule: '규칙 추가',
erEditRule: '규칙 편집',
erDeleteConfirm: '이 이메일 라우팅 규칙을 삭제하시겠습니까?',
erSaved: '이메일 라우팅 규칙이 저장되었습니다',
erDeleted: '이메일 라우팅 규칙이 삭제되었습니다',
erNoRules: '이메일 라우팅 규칙이 없습니다.',
erEnable: '이메일 라우팅',
erEnableDesc: '이 존의 이메일 라우팅을 활성화합니다.',
erMatchType: '매치 유형',
erExactMatch: '정확한 주소',
erCatchAll: '캐치올',
erFromAddress: '보낸 주소',
erForwardTo: '전달 대상',
// Custom Pages
cpTitle: '사용자 정의 오류 페이지',
cpDesc: 'WAF 챌린지, 속도 제한 등 특정 이벤트 시 Cloudflare가 방문자에게 표시하는 페이지를 사용자 정의합니다.',
cpNoPages: '사용 가능한 사용자 정의 페이지가 없습니다.',
cpCustomUrl: '사용자 정의 페이지 URL',
cpUrlHint: '비워두면 기본 페이지로 되돌립니다.',
ssTitle: '스크레이프 보호',
ssDesc: '콘텐츠 스크레이핑 및 데이터 유출로부터 웹사이트를 보호합니다.',
ss_email_obfuscation: '이메일 주소 난독화',
ssEmailObfuscationDesc: '봇으로부터 이메일 주소를 숨기면서 사람에게는 보이게 합니다.',
ss_server_side_exclude: '서버측 제외',
ssServerSideExcludeDesc: '의심스러운 방문자로부터 특정 콘텐츠를 자동으로 숨깁니다.',
ss_hotlink_protection: '핫링크 보호',
ssHotlinkProtectionDesc: '다른 사이트에서 이미지 등 리소스에 직접 링크하는 것을 차단합니다.',
netTitle: '네트워크 설정',
netDesc: 'HTTP/3, WebSocket, IPv6 등 네트워크 수준 설정을 관리합니다.',
net_websockets: 'WebSocket',
netWebsocketsDesc: '원본 서버로의 WebSocket 연결을 허용합니다.',
net_ip_geolocation: 'IP 지오로케이션',
netIpGeoDesc: '요청 헤더에 방문자의 국가 코드를 포함합니다 (CF-IPCountry).',
net_ipv6: 'IPv6 호환',
netIpv6Desc: '도메인의 IPv6 지원을 활성화합니다.',
net_pseudo_ipv4: 'Pseudo IPv4',
netPseudoIpv4Desc: 'IPv6로 연결하는 방문자에게 가상 IPv4 헤더를 추가합니다.',
net_opportunistic_onion: 'Onion 라우팅',
netOnionDesc: 'Tor 네트워크를 통한 사이트 접근을 허용합니다.',
net_http3: 'HTTP/3 (QUIC)',
netHttp3Desc: '더 빠른 연결을 위해 HTTP/3 프로토콜을 활성화합니다.',
net_true_client_ip_header: 'True-Client-IP',
netTrueClientIpDesc: '최종 사용자 IP가 포함된 True-Client-IP 헤더를 원본에 전송합니다.',
net_max_upload: '최대 업로드 크기',
netMaxUploadDesc: '허용되는 최대 HTTP 요청 본문 크기 (플랜에 따라 다름).',
secTitle: '보안 설정',
secLevel: '보안 수준',
secLevelDesc: 'Cloudflare 보안 기능의 엄격도를 제어합니다.',
secEssentiallyOff: '거의 끔',
secEssentiallyOffDesc: '가장 악의적인 요청에만 챌린지합니다.',
secLow: '낮음',
secLowDesc: '가장 위협적인 방문자에게만 챌린지합니다.',
secMedium: '중간',
secMediumDesc: '중간 및 높은 위협 방문자에게 챌린지합니다.',
secHigh: '높음',
secHighDesc: '낮은, 중간, 높은 위협 점수의 방문자 모두에게 챌린지합니다.',
secUnderAttack: '공격 받는 중!',
secUnderAttackDesc: '모든 요청에 JS 챌린지 페이지를 표시합니다. DDoS 공격 중에만 사용하세요.',
secUnderAttackWarning: '공격 모드가 활성화되었습니다! 모든 방문자에게 5초 챌린지 페이지가 표시됩니다.',
secBrowserCheck: '브라우저 무결성 검사',
secBrowserCheckDesc: '방문자 브라우저의 HTTP 헤더를 평가하여 일반적인 악용 패턴을 감지합니다.',
secChallengeTtl: '챌린지 유효기간',
secChallengeTtlDesc: '챌린지를 통과한 방문자가 다시 챌린지를 받기까지의 시간.',
secPrivacyPass: 'Privacy Pass',
secPrivacyPassDesc: 'Privacy Pass 토큰을 가진 방문자에게 표시되는 CAPTCHA를 줄입니다.',
secFirewallRules: '방화벽 규칙',
secFirewallRulesDesc: '기존 방화벽 규칙을 확인합니다. 여기서 규칙을 활성화/비활성화할 수 있습니다.',
secNoFirewallRules: '방화벽 규칙이 없습니다.',
wrTitle: 'Workers 라우트',
wrDesc: 'Cloudflare Workers로 요청을 라우팅하는 규칙을 관리합니다.',
wrAddRoute: '라우트 추가',
wrPattern: '라우트 패턴',
wrPatternPlaceholder: '*example.com/path/*',
wrScript: 'Worker 스크립트',
wrScriptPlaceholder: 'my-worker',
wrScriptHint: '비워두면 라우트 제외가 됩니다',
wrWorkerScript: 'Worker 스크립트',
wrNoRoutes: 'Workers 라우트가 없습니다.',
wrNoScript: '스크립트 없음 (라우트 비활성)',
wrDeleteConfirm: '이 Workers 라우트를 삭제하시겠습니까?',
wrSaved: 'Workers 라우트가 저장되었습니다',
wrDeleted: 'Workers 라우트가 삭제되었습니다',
wrEditRoute: '라우트 편집',
prTitle: '페이지 규칙',
prDesc: 'URL 패턴과 일치하는 요청에 대한 특정 설정과 동작을 구성합니다.',
prAddRule: '규칙 추가',
prUrlPattern: 'URL 패턴',
prUrlPlaceholder: '*example.com/path/*',
prActions: '작업',
prAddAction: '작업 추가',
prActive: '활성',
prPaused: '일시 중지',
prDeleteConfirm: '이 페이지 규칙을 삭제하시겠습니까?',
prSaved: '페이지 규칙이 저장되었습니다',
prDeleted: '페이지 규칙이 삭제되었습니다',
prNoRules: '페이지 규칙이 없습니다.',
prEditRule: '규칙 편집',
rlTitle: '리디렉트 규칙',
rlDesc: 'Cloudflare 규칙 세트 엔진 기반의 URL 리디렉트를 관리합니다.',
rlManageInDashboard: '대시보드에서 관리',
rlInfoCard: '리디렉트 규칙은 Cloudflare 규칙 세트 엔진의 일부입니다. 복잡한 규칙 생성 및 편집은 Cloudflare 대시보드에서 가능합니다. 여기서는 기존 규칙을 활성화/비활성화할 수 있습니다.',
rlNoRules: '리디렉트 규칙이 없습니다.',
// Rule CRUD
addRule: '규칙 추가',
editRule: '규칙 편집',
saveRule: '규칙 저장',
deleteRuleConfirm: '이 규칙을 삭제하시겠습니까?',
ruleSaved: '규칙이 저장되었습니다',
ruleDeleted: '규칙이 삭제되었습니다',
ruleDescription: '설명',
ruleExpression: '표현식 (Wirefilter)',
ruleExpressionPlaceholder: '(http.host eq "example.com")',
ruleEnabled: '활성화',
staticValue: '정적',
dynamicExpression: '동적',
rlTargetUrl: '대상 URL',
rlStatusCode: '상태 코드',
rlPreserveQuery: '쿼리 문자열 유지',
orOriginHost: '오리진 호스트명',
orOriginPort: '오리진 포트',
orHostHeader: 'Host 헤더 오버라이드',
trRewritePath: '경로 재작성',
trRewriteQuery: '쿼리 재작성',
trHeaderOperation: '헤더 작업',
trHeaderName: '헤더 이름',
trHeaderValue: '값',
trHeaderOpSet: '설정',
trHeaderOpAdd: '추가',
trHeaderOpRemove: '제거',
trAddHeaderOp: '헤더 추가',
copyToken: '토큰 복사',
tokenCopied: '토큰이 클립보드에 복사되었습니다',
anTitle: '트래픽 분석',
anTotalRequests: '총 요청 수',
anCachedRequests: '캐시됨',
anBandwidth: '대역폭',
anCachedBandwidth: '캐시됨',
anThreats: '차단된 위협',
anVisitors: '고유 방문자',
anHttpStatus: 'HTTP 상태 분포',
anCountries: '상위 국가',
// DNS Analytics
dnsAnalyticsTab: 'DNS 분석',
dnsAnTitle: 'DNS 분석',
dnsAnQueryCount: '총 쿼리 수',
dnsAnNxdomain: 'NXDOMAIN',
dnsAnOfTotal: '전체 대비',
dnsAnQueryTypes: '쿼리 유형',
dnsAnResponseCodes: '응답 코드',
dnsAnNoData: '이 기간에 대한 DNS 분석 데이터가 없습니다.',
// Bulk Settings
bulkApplySetting: '설정 적용',
bulkSettingName: '설정',
bulkSettingValue: '값',
// Enhanced Monitors
monitorTrafficSpike: '트래픽 급증',
monitorErrorRate: '오류율',
monitorSslExpiry: 'SSL 만료',
monitorThreshold: '임계값',
monitorTimeWindow: '시간 창',
monitorStatusType: '상태 유형',
monitorDaysBefore: '알림',
monitorDaysBeforeUnit: '일 전에 알림',
// Firewall CRUD
fwCreateRule: '규칙 생성',
fwEditRule: '규칙 편집',
fwExpression: '표현식',
fwAction: '동작',
fwPriority: '우선순위',
fwPaused: '일시 중지됨',
fwDeleteConfirm: '이 방화벽 규칙을 삭제하시겠습니까?',
fwSaved: '방화벽 규칙이 저장되었습니다',
fwDeleted: '방화벽 규칙이 삭제되었습니다',
// Bot Fight Mode
botFightMode: '봇 파이트 모드',
botFightModeDesc: '봇 트래픽을 자동으로 감지하고 완화합니다.',
// Accessibility
skipToContent: '콘텐츠로 건너뛰기',
};