import type { TranslationStrings } from '../types'; const settings: TranslationStrings = { 'settings.title': '설정', 'settings.subtitle': '개인 설정을 구성하세요', 'settings.tabs.display': '화면', 'settings.tabs.map': '지도', 'settings.tabs.notifications': '알림', 'settings.tabs.integrations': '통합', 'settings.tabs.account': '계정', 'settings.tabs.offline': '오프라인', 'settings.tabs.about': '정보', 'settings.map': '지도', 'settings.mapTemplate': '지도 템플릿', 'settings.mapTemplatePlaceholder.select': '템플릿 선택...', 'settings.mapDefaultHint': '비워두면 OpenStreetMap (기본값) 사용', 'settings.mapTemplatePlaceholder': 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', 'settings.mapHint': '지도 타일 URL 템플릿', 'settings.mapProvider': '지도 공급자', 'settings.mapProviderHint': '여행 플래너 및 Journey 지도에 영향을 줍니다. Atlas는 항상 Leaflet을 사용합니다.', 'settings.mapLeafletSubtitle': '클래식 2D, 모든 래스터 타일', 'settings.mapMapboxSubtitle': '벡터 타일, 3D 건물 및 지형', 'settings.mapExperimental': '실험적', 'settings.mapMapboxToken': 'Mapbox 액세스 토큰', 'settings.mapMapboxTokenHint': '공개 토큰 (pk.*) 출처', 'settings.mapMapboxTokenLink': 'mapbox.com → 액세스 토큰', 'settings.mapStyle': '지도 스타일', 'settings.mapStylePlaceholder': 'Mapbox 스타일 선택', 'settings.mapStyleHint': '프리셋 또는 mapbox://styles/USER/ID URL 직접 입력', 'settings.map3dBuildings': '3D 건물 및 지형', 'settings.map3dHint': '기울기 + 실제 3D 건물 돌출 — 위성 포함 모든 스타일에서 작동합니다.', 'settings.mapHighQuality': '고품질 모드', 'settings.mapHighQualityHint': '안티앨리어싱 + 구형 투영으로 선명한 경계와 현실적인 지구 뷰를 제공합니다.', 'settings.mapHighQualityWarning': '저사양 기기에서 성능에 영향을 줄 수 있습니다.', 'settings.mapTipLabel': '팁:', 'settings.mapTip': '우클릭 후 드래그하여 지도를 회전/기울이세요. 가운데 클릭으로 장소를 추가할 수 있습니다 (우클릭은 회전 전용).', 'settings.latitude': '위도', 'settings.longitude': '경도', 'settings.saveMap': '지도 저장', 'settings.apiKeys': 'API 키', 'settings.mapsKey': 'Google Maps API 키', 'settings.mapsKeyHint': '장소 검색용. Places API (New) 필요. console.cloud.google.com에서 발급', 'settings.weatherKey': 'OpenWeatherMap API 키', 'settings.weatherKeyHint': '날씨 데이터용. openweathermap.org/api에서 무료 발급', 'settings.keyPlaceholder': '키 입력...', 'settings.configured': '설정됨', 'settings.saveKeys': '키 저장', 'settings.display': '화면', 'settings.colorMode': '색상 모드', 'settings.light': '라이트', 'settings.dark': '다크', 'settings.auto': '자동', 'settings.language': '언어', 'settings.temperature': '온도 단위', 'settings.timeFormat': '시간 형식', 'settings.bookingLabels': '예약 경로 레이블', 'settings.bookingLabelsHint': '지도에 역 / 공항 이름을 표시합니다. 끄면 아이콘만 표시됩니다.', 'settings.blurBookingCodes': '예약 코드 흐리게', 'settings.optimizeFromAccommodation': '숙소 기준으로 경로 최적화', 'settings.optimizeFromAccommodationHint': '하루 일정을 최적화할 때, 아침에 머무는 숙소에서 경로를 시작하고 그날 저녁에 체크인하는 숙소에서 경로를 끝냅니다.', 'settings.notifications': '알림', 'settings.notifyTripInvite': '여행 초대', 'settings.notifyBookingChange': '예약 변경', 'settings.notifyTripReminder': '여행 리마인더', 'settings.notifyTodoDue': '할 일 마감 임박', 'settings.notifyVacayInvite': 'Vacay 퓨전 초대', 'settings.notifyPhotosShared': '공유된 사진 (Immich)', 'settings.notifyCollabMessage': '채팅 메시지 (Collab)', 'settings.notifyPackingTagged': '짐 목록: 배정', 'settings.notifyWebhook': '웹훅 알림', 'settings.notifyVersionAvailable': '새 버전 사용 가능', 'settings.notificationPreferences.email': '이메일', 'settings.notificationPreferences.webhook': '웹훅', 'settings.notificationPreferences.inapp': '앱 내', 'settings.notificationPreferences.ntfy': 'Ntfy', 'settings.notificationPreferences.noChannels': '알림 채널이 설정되지 않았습니다. 관리자에게 이메일 또는 웹훅 알림 설정을 요청하세요.', 'settings.webhookUrl.label': '웹훅 URL', 'settings.webhookUrl.placeholder': 'https://discord.com/api/webhooks/...', 'settings.webhookUrl.hint': 'Discord, Slack 또는 사용자 지정 웹훅 URL을 입력하여 알림을 받으세요.', 'settings.webhookUrl.saved': '웹훅 URL이 저장되었습니다', 'settings.webhookUrl.test': '테스트', 'settings.webhookUrl.testSuccess': '테스트 웹훅이 성공적으로 전송되었습니다', 'settings.webhookUrl.testFailed': '테스트 웹훅 실패', 'settings.ntfyUrl.topicLabel': 'Ntfy 토픽', 'settings.ntfyUrl.topicPlaceholder': 'my-trek-alerts', 'settings.ntfyUrl.serverLabel': 'Ntfy 서버 URL (선택)', 'settings.ntfyUrl.serverPlaceholder': 'https://ntfy.sh', 'settings.ntfyUrl.hint': 'ntfy 토픽을 입력하여 푸시 알림을 받으세요. 서버를 비워두면 관리자가 설정한 기본값을 사용합니다.', 'settings.ntfyUrl.tokenLabel': '액세스 토큰 (선택)', 'settings.ntfyUrl.tokenHint': '비밀번호로 보호된 토픽에 필요합니다.', 'settings.ntfyUrl.saved': 'Ntfy 설정이 저장되었습니다', 'settings.ntfyUrl.test': '테스트', 'settings.ntfyUrl.testSuccess': '테스트 ntfy 알림이 성공적으로 전송되었습니다', 'settings.ntfyUrl.testFailed': '테스트 ntfy 알림 실패', 'settings.ntfyUrl.tokenCleared': '액세스 토큰이 삭제되었습니다', 'settings.notificationsDisabled': '알림이 설정되지 않았습니다. 관리자에게 이메일 또는 웹훅 알림 활성화를 요청하세요.', 'settings.notificationsActive': '활성 채널', 'settings.notificationsManagedByAdmin': '알림 이벤트는 관리자가 설정합니다.', 'settings.on': '켜기', 'settings.off': '끄기', 'settings.mcp.title': 'MCP 설정', 'settings.mcp.endpoint': 'MCP 엔드포인트', 'settings.mcp.clientConfig': '클라이언트 설정', 'settings.mcp.clientConfigHint': '을 아래 목록의 API 토큰으로 교체하세요. npx 경로는 시스템에 따라 조정해야 할 수 있습니다 (예: Windows의 경우 C:\\PROGRA~1\\nodejs\\npx.cmd).', 'settings.mcp.clientConfigHintOAuth': '을 위에서 생성한 OAuth 2.1 클라이언트 자격 증명으로 교체하세요. mcp-remote가 처음 연결 시 브라우저를 열어 인증을 완료합니다. npx 경로는 시스템에 따라 조정해야 할 수 있습니다 (예: Windows의 경우 C:\\PROGRA~1\\nodejs\\npx.cmd).', 'settings.mcp.copy': '복사', 'settings.mcp.copied': '복사됨!', 'settings.mcp.apiTokens': 'API 토큰', 'settings.mcp.createToken': '새 토큰 만들기', 'settings.mcp.noTokens': '토큰이 없습니다. MCP 클라이언트 연결을 위해 토큰을 만드세요.', 'settings.mcp.tokenCreatedAt': '생성일', 'settings.mcp.tokenUsedAt': '사용일', 'settings.mcp.deleteTokenTitle': '토큰 삭제', 'settings.mcp.deleteTokenMessage': '이 토큰은 즉시 무효화됩니다. 이 토큰을 사용하는 MCP 클라이언트는 접근 권한을 잃게 됩니다.', 'settings.mcp.modal.createTitle': 'API 토큰 만들기', 'settings.mcp.modal.tokenName': '토큰 이름', 'settings.mcp.modal.tokenNamePlaceholder': '예: Claude Desktop, 업무용 노트북', 'settings.mcp.modal.creating': '생성 중…', 'settings.mcp.modal.create': '토큰 만들기', 'settings.mcp.modal.createdTitle': '토큰이 생성되었습니다', 'settings.mcp.modal.createdWarning': '이 토큰은 한 번만 표시됩니다. 지금 복사하여 저장하세요 — 다시 복구할 수 없습니다.', 'settings.mcp.modal.done': '완료', 'settings.mcp.toast.created': '토큰이 생성되었습니다', 'settings.mcp.toast.createError': '토큰 생성 실패', 'settings.mcp.toast.deleted': '토큰이 삭제되었습니다', 'settings.mcp.toast.deleteError': '토큰 삭제 실패', 'settings.mcp.apiTokensDeprecated': 'API 토큰은 더 이상 사용되지 않으며 향후 버전에서 제거될 예정입니다. 대신 OAuth 2.1 클라이언트를 사용하세요.', 'settings.oauth.clients': 'OAuth 2.1 클라이언트', 'settings.oauth.clientsHint': 'OAuth 2.1 클라이언트를 등록하여 타사 MCP 앱 (Claude Web, Cursor 등)이 정적 토큰 없이 연결할 수 있도록 하세요.', 'settings.oauth.createClient': '새 클라이언트', 'settings.oauth.noClients': '등록된 OAuth 클라이언트가 없습니다.', 'settings.oauth.clientId': '클라이언트 ID', 'settings.oauth.clientSecret': '클라이언트 시크릿', 'settings.oauth.deleteClient': '클라이언트 삭제', 'settings.oauth.deleteClientMessage': '이 클라이언트와 모든 활성 세션이 영구 삭제됩니다. 이 클라이언트를 사용하는 앱은 즉시 접근 권한을 잃게 됩니다.', 'settings.oauth.rotateSecret': '시크릿 교체', 'settings.oauth.rotateSecretMessage': '새 클라이언트 시크릿이 생성되고 기존 세션은 즉시 무효화됩니다. 이 대화창을 닫기 전에 앱을 업데이트하세요.', 'settings.oauth.rotateSecretConfirm': '교체', 'settings.oauth.rotateSecretConfirming': '교체 중…', 'settings.oauth.rotateSecretDoneTitle': '새 시크릿이 생성되었습니다', 'settings.oauth.rotateSecretDoneWarning': '이 시크릿은 한 번만 표시됩니다. 지금 복사하여 앱을 업데이트하세요 — 이전 세션은 모두 무효화되었습니다.', 'settings.oauth.activeSessions': '활성 OAuth 세션', 'settings.oauth.sessionScopes': '권한 범위', 'settings.oauth.sessionExpires': '만료', 'settings.oauth.revoke': '취소', 'settings.oauth.revokeSession': '세션 취소', 'settings.oauth.revokeSessionMessage': '이 OAuth 세션의 접근 권한이 즉시 취소됩니다.', 'settings.oauth.modal.createTitle': 'OAuth 클라이언트 등록', 'settings.oauth.modal.presets': '빠른 프리셋', 'settings.oauth.modal.clientName': '앱 이름', 'settings.oauth.modal.clientNamePlaceholder': '예: Claude Web, My MCP App', 'settings.oauth.modal.redirectUris': '리디렉션 URI', 'settings.oauth.modal.redirectUrisPlaceholder': 'https://your-app.com/callback\nhttps://your-app.com/auth', 'settings.oauth.modal.redirectUrisHint': '한 줄에 URI 하나. HTTPS 필수 (localhost 예외). 정확히 일치해야 합니다.', 'settings.oauth.modal.scopes': '허용 권한 범위', 'settings.oauth.modal.scopesHint': 'list_trips 및 get_trip_summary는 항상 사용 가능합니다 — 권한 범위 불필요. AI가 다른 도구를 사용하는 데 필요한 여행 ID를 찾을 수 있습니다.', 'settings.oauth.modal.selectAll': '전체 선택', 'settings.oauth.modal.deselectAll': '전체 해제', 'settings.oauth.modal.creating': '등록 중…', 'settings.oauth.modal.create': '클라이언트 등록', 'settings.oauth.modal.createdTitle': '클라이언트가 등록되었습니다', 'settings.oauth.modal.createdWarning': '클라이언트 시크릿은 한 번만 표시됩니다. 지금 복사하세요 — 다시 복구할 수 없습니다.', 'settings.oauth.toast.createError': 'OAuth 클라이언트 등록 실패', 'settings.oauth.toast.deleted': 'OAuth 클라이언트가 삭제되었습니다', 'settings.oauth.toast.deleteError': 'OAuth 클라이언트 삭제 실패', 'settings.oauth.toast.revoked': '세션이 취소되었습니다', 'settings.oauth.toast.revokeError': '세션 취소 실패', 'settings.oauth.toast.rotateError': '클라이언트 시크릿 교체 실패', 'settings.account': '계정', 'settings.about': '정보', 'settings.about.reportBug': '버그 신고', 'settings.about.reportBugHint': '문제를 발견하셨나요? 알려주세요', 'settings.about.featureRequest': '기능 요청', 'settings.about.featureRequestHint': '새로운 기능을 제안하세요', 'settings.about.wikiHint': '문서 및 가이드', 'settings.about.supporters.badge': '월간 후원자', 'settings.about.supporters.title': 'TREK의 여행 동반자', 'settings.about.supporters.subtitle': '다음 여정을 계획하는 동안, 이분들이 TREK의 미래를 함께 만들어가고 있습니다. 월간 후원금은 개발과 실제 작업 시간에 직접 사용되어 TREK이 오픈 소스로 유지될 수 있게 합니다.', 'settings.about.supporters.since': '{date}부터 후원자', 'settings.about.supporters.tierEmpty': '첫 번째 후원자가 되어보세요', 'settings.about.supporter.tier.noReturnTicket': '편도 티켓', 'settings.about.supporter.tier.lostLuggageVip': '분실 수하물 VIP', 'settings.about.supporter.tier.businessClassDreamer': '비즈니스 클래스 꿈꾸기', 'settings.about.supporter.tier.budgetTraveller': '알뜰 여행자', 'settings.about.supporter.tier.hostelBunkmate': '호스텔 룸메이트', 'settings.about.description': 'TREK은 첫 아이디어부터 마지막 추억까지 여행을 체계적으로 관리하는 자체 호스팅 여행 플래너입니다. 일별 계획, 예산, 짐 목록, 사진 등 모든 것이 하나의 서버에 담겨 있습니다.', 'settings.about.madeWith': '으로 만들어졌습니다', 'settings.about.madeBy': 'Maurice와 성장하는 오픈 소스 커뮤니티가 함께', 'settings.username': '사용자 이름', 'settings.email': '이메일', 'settings.role': '역할', 'settings.roleAdmin': '관리자', 'settings.oidcLinked': '연결됨', 'settings.changePassword': '비밀번호 변경', 'settings.currentPassword': '현재 비밀번호', 'settings.currentPasswordRequired': '현재 비밀번호를 입력하세요', 'settings.newPassword': '새 비밀번호', 'settings.confirmPassword': '새 비밀번호 확인', 'settings.updatePassword': '비밀번호 업데이트', 'settings.passwordRequired': '현재 비밀번호와 새 비밀번호를 입력하세요', 'settings.passwordTooShort': '비밀번호는 최소 8자 이상이어야 합니다', 'settings.passwordMismatch': '비밀번호가 일치하지 않습니다', 'settings.passwordWeak': '비밀번호는 대문자, 소문자, 숫자, 특수문자를 포함해야 합니다', 'settings.passwordChanged': '비밀번호가 성공적으로 변경되었습니다', 'settings.mustChangePassword': '계속하기 전에 비밀번호를 변경해야 합니다. 아래에서 새 비밀번호를 설정하세요.', 'settings.deleteAccount': '계정 삭제', 'settings.deleteAccountTitle': '계정을 삭제할까요?', 'settings.deleteAccountWarning': '계정과 모든 여행, 장소, 파일이 영구 삭제됩니다. 이 작업은 취소할 수 없습니다.', 'settings.deleteAccountConfirm': '영구 삭제', 'settings.deleteBlockedTitle': '삭제 불가', 'settings.deleteBlockedMessage': '유일한 관리자입니다. 계정을 삭제하기 전에 다른 사용자를 관리자로 승격하세요.', 'settings.roleUser': '사용자', 'settings.saveProfile': '프로필 저장', 'settings.toast.mapSaved': '지도 설정이 저장되었습니다', 'settings.toast.keysSaved': 'API 키가 저장되었습니다', 'settings.toast.displaySaved': '화면 설정이 저장되었습니다', 'settings.toast.profileSaved': '프로필이 저장되었습니다', 'settings.uploadAvatar': '프로필 사진 업로드', 'settings.removeAvatar': '프로필 사진 삭제', 'settings.avatarUploaded': '프로필 사진이 업데이트되었습니다', 'settings.avatarRemoved': '프로필 사진이 삭제되었습니다', 'settings.avatarError': '업로드 실패', 'settings.mfa.title': '2단계 인증 (2FA)', 'settings.mfa.description': '이메일 및 비밀번호로 로그인할 때 두 번째 단계를 추가합니다. 인증 앱 (Google Authenticator, Authy 등)을 사용하세요.', 'settings.mfa.requiredByPolicy': '관리자가 2단계 인증을 요구합니다. 앱을 계속 사용하려면 아래에서 인증 앱을 설정하세요.', 'settings.mfa.backupTitle': '백업 코드', 'settings.mfa.backupDescription': '인증 앱에 접근할 수 없을 때 이 일회용 백업 코드를 사용하세요.', 'settings.mfa.backupWarning': '지금 이 코드를 저장하세요. 각 코드는 한 번만 사용할 수 있습니다.', 'settings.mfa.backupCopy': '코드 복사', 'settings.mfa.backupDownload': 'TXT 다운로드', 'settings.mfa.backupPrint': '인쇄 / PDF', 'settings.mfa.backupCopied': '백업 코드가 복사되었습니다', 'settings.mfa.enabled': '계정에 2FA가 활성화되어 있습니다.', 'settings.mfa.disabled': '2FA가 활성화되지 않았습니다.', 'settings.mfa.setup': '인증 앱 설정', 'settings.mfa.scanQr': '앱으로 이 QR 코드를 스캔하거나 시크릿을 수동으로 입력하세요.', 'settings.mfa.secretLabel': '시크릿 키 (수동 입력)', 'settings.mfa.codePlaceholder': '6자리 코드', 'settings.mfa.enable': '2FA 활성화', 'settings.mfa.cancelSetup': '취소', 'settings.mfa.disableTitle': '2FA 비활성화', 'settings.mfa.disableHint': '계정 비밀번호와 인증 앱의 현재 코드를 입력하세요.', 'settings.mfa.disable': '2FA 비활성화', 'settings.mfa.toastEnabled': '2단계 인증이 활성화되었습니다', 'settings.mfa.toastDisabled': '2단계 인증이 비활성화되었습니다', 'settings.mfa.demoBlocked': '데모 모드에서는 사용할 수 없습니다', 'settings.oauth.modal.machineClient': '머신 클라이언트(브라우저 로그인 없음)', 'settings.oauth.modal.machineClientHint': 'client_credentials 권한 부여를 사용합니다 — 리디렉션 URI가 필요하지 않습니다. 토큰은 client_id + client_secret을 통해 직접 발급되며 선택한 범위 내에서 사용자로 작동합니다.', 'settings.oauth.modal.machineClientUsage': '토큰 받기: grant_type=client_credentials, client_id, client_secret으로 POST /oauth/token을 호출하세요. 브라우저도 새로 고침 토큰도 필요 없습니다.', 'settings.oauth.badge.machine': '머신', "settings.currency": "Currency", "settings.currencyHint": "All amounts in Costs are converted to and shown in this currency.", 'settings.passkey.title': '패스키', 'settings.passkey.description': '지문, 얼굴, PIN 또는 하드웨어 키 같은 패스키로 더 빠르고 피싱에 강하게 로그인하세요. 비밀번호는 백업으로 그대로 유지됩니다.', 'settings.passkey.notConfigured': '패스키가 활성화되어 있지만 이 서버에 아직 완전히 설정되지 않았습니다. 관리자에게 WebAuthn 도메인 설정을 요청하세요.', 'settings.passkey.add': '패스키 추가', 'settings.passkey.addTitle': '패스키 추가', 'settings.passkey.passwordPrompt': '현재 비밀번호를 확인한 뒤 기기 안내에 따라 진행하세요.', 'settings.passkey.passwordRequired': '현재 비밀번호가 필요합니다.', 'settings.passkey.namePlaceholder': '이름 (선택, 예: "iPhone")', 'settings.passkey.addedToast': '패스키가 추가되었습니다', 'settings.passkey.added': '추가됨', 'settings.passkey.addError': '패스키를 추가할 수 없습니다', 'settings.passkey.cancelled': '패스키 설정이 취소되었습니다', 'settings.passkey.deleted': '패스키가 삭제되었습니다', 'settings.passkey.deleteConfirm': '이 패스키를 삭제할까요? 비밀번호로 확인하세요.', 'settings.passkey.rename': '이름 변경', 'settings.passkey.defaultName': '패스키', 'settings.passkey.synced': '동기화됨', 'settings.passkey.deviceBound': '이 기기', 'settings.passkey.lastUsed': '마지막 사용', 'settings.passkey.neverUsed': '사용한 적 없음', 'settings.mapPoiPill': '지도에서 장소 탐색', 'settings.mapPoiPillHint': '여행 지도에 카테고리 칩을 표시하여 OpenStreetMap에서 주변 음식점, 숙소 등을 찾아보세요.', 'settings.airtrail.title': 'AirTrail', 'settings.airtrail.hint': '자체 호스팅한 AirTrail을 연결하여 항공편을 가져오고 동기화하세요. AirTrail의 설정 → 보안에서 API 키를 생성하세요.', 'settings.airtrail.url': '인스턴스 URL', 'settings.airtrail.apiKey': 'API 키', 'settings.airtrail.apiKeyPlaceholder': 'Bearer API 키', 'settings.airtrail.apiKeyHint': 'AirTrail의 설정 → 보안에서 생성됩니다. 암호화하여 저장됩니다.', 'settings.airtrail.allowInsecureTls': '자체 서명 인증서 허용', 'settings.airtrail.allowInsecureTlsHint': '자체 네트워크의 신뢰할 수 있는 인스턴스에서만 활성화하세요.', 'settings.airtrail.connected': '연결됨', 'settings.airtrail.notConnected': '연결되지 않음', 'settings.airtrail.toast.saved': 'AirTrail 연결이 저장되었습니다', 'settings.airtrail.toast.saveError': '연결을 저장할 수 없습니다', 'settings.airtrail.test.button': '연결 테스트', 'settings.airtrail.test.success': '연결됨 — {count}개 항공편을 찾았습니다', 'settings.airtrail.test.failed': '연결에 실패했습니다', }; export default settings;