mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-18 21:16:47 +00:00
f2368f86cf
Reads fail-open, unlike the three older places_* switches. Those read === 'true', which is why migration 185 had to backfill a row on every existing install; there is nothing here that warrants repeating that. The three hand-rolled toggles next to it move to ToggleSwitch while I am in there - they were bare buttons with an inline transform and no aria-pressed or label, so a screen reader could not tell their state.
655 lines
50 KiB
TypeScript
655 lines
50 KiB
TypeScript
import type { TranslationStrings } from '../types';
|
|
|
|
const admin: TranslationStrings = {
|
|
'admin.notifications.title': '알림',
|
|
'admin.notifications.hint': '알림 채널을 하나 선택하세요. 한 번에 하나만 활성화할 수 있습니다.',
|
|
'admin.notifications.none': '비활성화',
|
|
'admin.notifications.email': '이메일 (SMTP)',
|
|
'admin.notifications.webhook': '웹훅',
|
|
'admin.notifications.ntfy': 'Ntfy',
|
|
'admin.ntfy.hint':
|
|
'사용자가 자신의 ntfy 토픽을 설정하여 푸시 알림을 받을 수 있습니다. 아래에 기본 서버를 설정하면 사용자 설정에 미리 채워집니다.',
|
|
'admin.notifications.save': '알림 설정 저장',
|
|
'admin.notifications.saved': '알림 설정이 저장되었습니다',
|
|
'admin.notifications.testWebhook': '테스트 웹훅 전송',
|
|
'admin.notifications.testWebhookSuccess': '테스트 웹훅이 성공적으로 전송되었습니다',
|
|
'admin.notifications.testWebhookFailed': '테스트 웹훅 실패',
|
|
'admin.notifications.testNtfy': '테스트 ntfy 전송',
|
|
'admin.notifications.testNtfySuccess': '테스트 ntfy가 성공적으로 전송되었습니다',
|
|
'admin.notifications.testNtfyFailed': '테스트 ntfy 실패',
|
|
'admin.notifications.emailPanel.title': '이메일 (SMTP)',
|
|
'admin.notifications.webhookPanel.title': '웹훅',
|
|
'admin.notifications.inappPanel.title': '앱 내',
|
|
'admin.notifications.inappPanel.hint': '앱 내 알림은 항상 활성화되어 있으며 전역으로 비활성화할 수 없습니다.',
|
|
'admin.notifications.adminWebhookPanel.title': '관리자 웹훅',
|
|
'admin.notifications.adminWebhookPanel.hint':
|
|
'이 웹훅은 관리자 알림 전용입니다 (예: 버전 알림). 사용자별 웹훅과 별개이며 설정 시 항상 실행됩니다.',
|
|
'admin.notifications.adminWebhookPanel.saved': '관리자 웹훅 URL이 저장되었습니다',
|
|
'admin.notifications.adminWebhookPanel.testSuccess': '테스트 웹훅이 성공적으로 전송되었습니다',
|
|
'admin.notifications.adminWebhookPanel.testFailed': '테스트 웹훅 실패',
|
|
'admin.notifications.adminWebhookPanel.alwaysOnHint': 'URL이 설정되면 관리자 웹훅은 항상 실행됩니다',
|
|
'admin.notifications.adminNtfyPanel.title': '관리자 Ntfy',
|
|
'admin.notifications.adminNtfyPanel.hint':
|
|
'이 ntfy 토픽은 관리자 알림 전용입니다 (예: 버전 알림). 사용자별 토픽과 별개이며 설정 시 항상 실행됩니다.',
|
|
'admin.notifications.adminNtfyPanel.serverLabel': 'Ntfy 서버 URL',
|
|
'admin.notifications.adminNtfyPanel.serverHint':
|
|
'사용자 ntfy 알림의 기본 서버로도 사용됩니다. 비워두면 ntfy.sh가 기본값입니다. 사용자는 자신의 설정에서 변경할 수 있습니다.',
|
|
'admin.notifications.adminNtfyPanel.serverPlaceholder': 'https://ntfy.sh',
|
|
'admin.notifications.adminNtfyPanel.topicLabel': '관리자 토픽',
|
|
'admin.notifications.adminNtfyPanel.topicPlaceholder': 'trek-admin-alerts',
|
|
'admin.notifications.adminNtfyPanel.tokenLabel': '액세스 토큰 (선택)',
|
|
'admin.notifications.adminNtfyPanel.tokenCleared': '관리자 액세스 토큰이 삭제되었습니다',
|
|
'admin.notifications.adminNtfyPanel.saved': '관리자 ntfy 설정이 저장되었습니다',
|
|
'admin.notifications.adminNtfyPanel.test': '테스트 ntfy 전송',
|
|
'admin.notifications.adminNtfyPanel.testSuccess': '테스트 ntfy가 성공적으로 전송되었습니다',
|
|
'admin.notifications.adminNtfyPanel.testFailed': '테스트 ntfy 실패',
|
|
'admin.notifications.adminNtfyPanel.alwaysOnHint': '토픽이 설정되면 관리자 ntfy는 항상 실행됩니다',
|
|
'admin.notifications.adminNotificationsHint': '관리자 전용 알림 (예: 버전 알림)을 전달할 채널을 설정하세요.',
|
|
'admin.notifications.tripReminders.title': '여행 리마인더',
|
|
'admin.notifications.tripReminders.hint':
|
|
'여행 시작 전에 리마인더 알림을 전송합니다 (여행에 리마인더 일수가 설정되어 있어야 합니다).',
|
|
'admin.notifications.tripReminders.enabled': '여행 리마인더 활성화됨',
|
|
'admin.notifications.tripReminders.disabled': '여행 리마인더 비활성화됨',
|
|
'admin.smtp.title': '이메일 및 알림',
|
|
'admin.smtp.hint': '이메일 알림 전송을 위한 SMTP 설정입니다.',
|
|
'admin.smtp.testButton': '테스트 이메일 전송',
|
|
'admin.webhook.hint': '사용자가 알림용 웹훅 URL을 설정할 수 있습니다 (Discord, Slack 등).',
|
|
'admin.smtp.testSuccess': '테스트 이메일이 성공적으로 전송되었습니다',
|
|
'admin.smtp.testFailed': '테스트 이메일 실패',
|
|
'admin.title': '관리자',
|
|
'admin.subtitle': '사용자 관리 및 시스템 설정',
|
|
'admin.tabs.users': '사용자',
|
|
'admin.tabs.categories': '카테고리',
|
|
'admin.tabs.backup': '백업',
|
|
'admin.tabs.notifications': '알림',
|
|
'admin.tabs.audit': '감사',
|
|
'admin.stats.users': '사용자',
|
|
'admin.stats.trips': '여행',
|
|
'admin.stats.places': '장소',
|
|
'admin.stats.photos': '사진',
|
|
'admin.stats.files': '파일',
|
|
'admin.table.user': '사용자',
|
|
'admin.table.email': '이메일',
|
|
'admin.table.role': '역할',
|
|
'admin.table.created': '생성일',
|
|
'admin.table.lastLogin': '마지막 로그인',
|
|
'admin.table.actions': '작업',
|
|
'admin.you': '(나)',
|
|
'admin.editUser': '사용자 편집',
|
|
'admin.newPassword': '새 비밀번호',
|
|
'admin.newPasswordHint': '비워두면 현재 비밀번호 유지',
|
|
'admin.deleteUser': '사용자 "{name}"을(를) 삭제할까요? 모든 여행이 영구 삭제됩니다.',
|
|
'admin.deleteUserTitle': '사용자 삭제',
|
|
'admin.newPasswordPlaceholder': '새 비밀번호 입력…',
|
|
'admin.toast.loadError': '관리자 데이터 불러오기 실패',
|
|
'admin.toast.userUpdated': '사용자가 업데이트되었습니다',
|
|
'admin.toast.updateError': '업데이트 실패',
|
|
'admin.toast.userDeleted': '사용자가 삭제되었습니다',
|
|
'admin.toast.deleteError': '삭제 실패',
|
|
'admin.toast.cannotDeleteSelf': '자신의 계정은 삭제할 수 없습니다',
|
|
'admin.toast.userCreated': '사용자가 생성되었습니다',
|
|
'admin.toast.createError': '사용자 생성 실패',
|
|
'admin.toast.fieldsRequired': '사용자 이름, 이메일, 비밀번호가 필요합니다',
|
|
'admin.createUser': '사용자 만들기',
|
|
'admin.invite.title': '초대 링크',
|
|
'admin.invite.subtitle': '일회용 회원가입 링크 만들기',
|
|
'admin.invite.create': '링크 만들기',
|
|
'admin.invite.createAndCopy': '만들기 및 복사',
|
|
'admin.invite.empty': '아직 초대 링크가 없습니다',
|
|
'admin.invite.maxUses': '최대 사용 횟수',
|
|
'admin.invite.expiry': '만료 기간',
|
|
'admin.invite.uses': '사용됨',
|
|
'admin.invite.expiresAt': '만료',
|
|
'admin.invite.createdBy': '작성자',
|
|
'admin.invite.active': '활성',
|
|
'admin.invite.expired': '만료됨',
|
|
'admin.invite.usedUp': '사용 완료',
|
|
'admin.invite.copied': '초대 링크가 클립보드에 복사되었습니다',
|
|
'admin.invite.copyLink': '링크 복사',
|
|
'admin.invite.deleted': '초대 링크가 삭제되었습니다',
|
|
'admin.invite.createError': '초대 링크 생성 실패',
|
|
'admin.invite.deleteError': '초대 링크 삭제 실패',
|
|
'admin.tabs.settings': '설정',
|
|
'admin.allowRegistration': '회원가입 허용',
|
|
'admin.allowRegistrationHint': '새 사용자가 직접 회원가입할 수 있습니다',
|
|
'admin.authMethods': '인증 방법',
|
|
'admin.passwordLogin': '비밀번호 로그인',
|
|
'admin.passwordLoginHint': '사용자가 이메일과 비밀번호로 로그인할 수 있습니다',
|
|
'admin.passwordRegistration': '비밀번호 회원가입',
|
|
'admin.passwordRegistrationHint': '새 사용자가 이메일과 비밀번호로 가입할 수 있습니다',
|
|
'admin.oidcLogin': 'SSO 로그인',
|
|
'admin.oidcLoginHint': '사용자가 SSO로 로그인할 수 있습니다',
|
|
'admin.oidcRegistration': 'SSO 자동 프로비저닝',
|
|
'admin.oidcRegistrationHint': '새 SSO 사용자의 계정을 자동으로 생성합니다',
|
|
'admin.envOverrideHint': '비밀번호 로그인 설정은 OIDC_ONLY 환경 변수로 제어되며 여기서 변경할 수 없습니다.',
|
|
'admin.lockoutWarning': '최소 하나의 로그인 방법이 활성화되어 있어야 합니다',
|
|
'admin.requireMfa': '2단계 인증 (2FA) 요구',
|
|
'admin.requireMfaHint': '2FA가 없는 사용자는 앱을 사용하기 전에 설정에서 설정을 완료해야 합니다.',
|
|
'admin.apiKeys': 'API 키',
|
|
'admin.apiKeysHint': '선택 사항. 사진 및 날씨 등 확장된 장소 데이터를 활성화합니다.',
|
|
'admin.mapsKey': 'Google Maps API 키',
|
|
'admin.mapsKeyHint': '장소 검색에 필요합니다. console.cloud.google.com에서 발급',
|
|
'admin.mapsKeyHintLong':
|
|
'API 키 없이는 장소 검색에 OpenStreetMap이 사용됩니다. Google API 키가 있으면 사진, 평점, 영업 시간도 불러올 수 있습니다. console.cloud.google.com에서 발급하세요.',
|
|
'admin.recommended': '권장',
|
|
'admin.weatherKey': 'OpenWeatherMap API 키',
|
|
'admin.weatherKeyHint': '날씨 데이터용. openweathermap.org에서 무료 발급',
|
|
'admin.unsplashKey': 'Unsplash API 키',
|
|
'admin.unsplashKeyHint': '이미지 검색용. unsplash.com/developers에서 무료 발급',
|
|
'admin.validateKey': '테스트',
|
|
'admin.keyValid': '연결됨',
|
|
'admin.keyInvalid': '유효하지 않음',
|
|
'admin.keySaved': 'API 키가 저장되었습니다',
|
|
'admin.oidcTitle': 'Single Sign-On (OIDC)',
|
|
'admin.oidcSubtitle': 'Google, Apple, Authentik 또는 Keycloak 등 외부 공급자를 통한 로그인을 허용합니다.',
|
|
'admin.oidcDisplayName': '표시 이름',
|
|
'admin.oidcIssuer': '발급자 URL',
|
|
'admin.oidcIssuerHint': '공급자의 OpenID Connect 발급자 URL. 예: https://accounts.google.com',
|
|
'admin.oidcSaved': 'OIDC 설정이 저장되었습니다',
|
|
'admin.oidcOnlyMode': '비밀번호 인증 비활성화',
|
|
'admin.oidcOnlyModeHint': '활성화하면 SSO 로그인만 허용됩니다. 비밀번호 기반 로그인 및 회원가입이 차단됩니다.',
|
|
'admin.fileTypes': '허용된 파일 형식',
|
|
'admin.fileTypesHint': '사용자가 업로드할 수 있는 파일 형식을 설정합니다.',
|
|
'admin.fileTypesFormat': '쉼표로 구분된 확장자 (예: jpg,png,pdf,doc). 모든 형식을 허용하려면 *를 사용하세요.',
|
|
'admin.fileTypesSaved': '파일 형식 설정이 저장되었습니다',
|
|
'admin.placesPhotos.title': '장소 사진',
|
|
'admin.placesPhotos.subtitle':
|
|
'Google Places API에서 사진을 가져옵니다. API 할당량 절약을 위해 비활성화할 수 있습니다. Wikimedia 사진은 영향을 받지 않습니다.',
|
|
'admin.placesAutocomplete.title': '장소 자동완성',
|
|
'admin.placesAutocomplete.subtitle':
|
|
'검색 제안에 Google Places API를 사용합니다. API 할당량 절약을 위해 비활성화할 수 있습니다.',
|
|
'admin.placesDetails.title': '장소 상세 정보',
|
|
'admin.placesDetails.subtitle':
|
|
'Google Places API에서 상세 장소 정보 (영업 시간, 평점, 웹사이트)를 가져옵니다. API 할당량 절약을 위해 비활성화할 수 있습니다.',
|
|
'admin.placesEnrich.title': '장소 정보 보강',
|
|
'admin.placesEnrich.subtitle':
|
|
'장소를 추가할 때 사진과 설명을 표시합니다. Wikipedia와 OpenStreetMap은 항상 사용되며, 장소 사진 또는 장소 세부정보가 켜져 있으면 Google도 함께 사용됩니다.',
|
|
'admin.bagTracking.title': '가방 추적',
|
|
'admin.bagTracking.subtitle': '짐 항목에 무게 및 가방 배정을 활성화합니다',
|
|
'admin.collab.chat.title': '채팅',
|
|
'admin.collab.chat.subtitle': '여행 협업을 위한 실시간 메시지',
|
|
'admin.collab.notes.title': '메모',
|
|
'admin.collab.notes.subtitle': '공유 메모 및 문서',
|
|
'admin.collab.polls.title': '투표',
|
|
'admin.collab.polls.subtitle': '그룹 투표',
|
|
'admin.collab.whatsnext.title': '다음 할 일',
|
|
'admin.collab.whatsnext.subtitle': '활동 제안 및 다음 단계',
|
|
'admin.tabs.config': '개인 설정',
|
|
'admin.tabs.defaults': '기본값',
|
|
'admin.defaultSettings.title': '기본 사용자 설정',
|
|
'admin.defaultSettings.description':
|
|
'인스턴스 전체 기본값을 설정합니다. 설정을 변경하지 않은 사용자에게 이 값이 표시됩니다. 사용자의 변경 사항이 항상 우선합니다.',
|
|
'admin.defaultSettings.saved': '기본값이 저장되었습니다',
|
|
'admin.defaultSettings.reset': '기본 내장값으로 초기화',
|
|
'admin.defaultSettings.resetToBuiltIn': '초기화',
|
|
'admin.tabs.templates': '짐 목록 템플릿',
|
|
'admin.packingTemplates.title': '짐 목록 템플릿',
|
|
'admin.packingTemplates.subtitle': '여행을 위한 재사용 가능한 짐 목록을 만드세요',
|
|
'admin.packingTemplates.create': '새 템플릿',
|
|
'admin.packingTemplates.namePlaceholder': '템플릿 이름 (예: 해변 휴가)',
|
|
'admin.packingTemplates.empty': '아직 템플릿이 없습니다',
|
|
'admin.packingTemplates.items': '항목',
|
|
'admin.packingTemplates.categories': '카테고리',
|
|
'admin.packingTemplates.itemName': '항목 이름',
|
|
'admin.packingTemplates.itemCategory': '카테고리',
|
|
'admin.packingTemplates.categoryName': '카테고리 이름 (예: 의류)',
|
|
'admin.packingTemplates.addCategory': '카테고리 추가',
|
|
'admin.packingTemplates.created': '템플릿이 생성되었습니다',
|
|
'admin.packingTemplates.deleted': '템플릿이 삭제되었습니다',
|
|
'admin.packingTemplates.loadError': '템플릿 불러오기 실패',
|
|
'admin.packingTemplates.createError': '템플릿 생성 실패',
|
|
'admin.packingTemplates.deleteError': '템플릿 삭제 실패',
|
|
'admin.packingTemplates.deleteCategoryError': '카테고리를 삭제하지 못했습니다',
|
|
'admin.packingTemplates.deleteItemError': '항목을 삭제하지 못했습니다',
|
|
'admin.packingTemplates.saveError': '저장 실패',
|
|
'admin.tabs.addons': '애드온',
|
|
'admin.tabs.plugins': '플러그인',
|
|
'admin.plugins.rescan': '다시 스캔',
|
|
'admin.plugins.rescanned': '플러그인 폴더를 다시 스캔했습니다',
|
|
'admin.plugins.upload': '플러그인 업로드',
|
|
'admin.plugins.dropToUpload': '플러그인 .zip을 여기에 놓아 설치',
|
|
'admin.plugins.uploaded': '플러그인 “{name}” 업로드됨 — 실행하려면 활성화하세요',
|
|
'admin.plugins.sideloaded': '수동 로드',
|
|
'admin.plugins.devLinkBadge': 'Dev-Link',
|
|
'admin.plugins.devLinkHint': '로컬 빌드 디렉터리에서 로드되어 실제 데이터로 핫 리로드됩니다 — 개발 전용',
|
|
'admin.plugins.devLinkTitle': '로컬 플러그인 링크',
|
|
'admin.plugins.devLinkPathPlaceholder': '/absolute/path/to/your/plugin',
|
|
'admin.plugins.devLinkButton': '링크',
|
|
'admin.plugins.devLinkLinked': '{id} 링크됨 — 실행하려면 활성화하세요',
|
|
'admin.plugins.sideloadedHint': '수동으로 업로드됨 — 레지스트리가 아니며 서명·검토되지 않음',
|
|
'admin.plugins.browse': '플러그인 둘러보기',
|
|
'admin.plugins.installed': '설치됨',
|
|
'admin.plugins.install': '설치',
|
|
'admin.plugins.registryEmpty': '아직 레지스트리에 사용 가능한 플러그인이 없습니다.',
|
|
'admin.plugins.actionError': '작업 실패',
|
|
'admin.plugins.activate': '활성화',
|
|
'admin.plugins.activated': '플러그인이 활성화되었습니다',
|
|
'admin.plugins.deactivate': '비활성화',
|
|
'admin.plugins.deactivated': '플러그인이 비활성화되었습니다',
|
|
'admin.plugins.viewErrors': '오류 로그 보기',
|
|
'admin.plugins.errorLog': '오류 로그',
|
|
'admin.plugins.allowedHosts': '허용된 호스트',
|
|
'admin.plugins.allowedHosts.hint':
|
|
'이 플러그인은 관리자만 알 수 있는 서비스(자체 호스팅 서버)와 통신합니다. 접근을 허용할 호스트를 추가하세요 — 그 외에는 접근할 수 없습니다.',
|
|
'admin.plugins.allowedHosts.none': '아직 추가된 호스트가 없습니다.',
|
|
'admin.plugins.allowedHosts.unsupported':
|
|
'이 플러그인은 운영자가 지정하는 호스트를 사용하지 않습니다. 허용 호스트는 매니페스트에 고정되어 있습니다.',
|
|
'admin.plugins.allowedHosts.restartNote': '저장하면 플러그인이 재시작되어 새 목록을 적용합니다.',
|
|
'admin.plugins.allowedHosts.add': '허용 호스트 추가',
|
|
'admin.plugins.allowedHosts.count': '허용 호스트 {n}개',
|
|
'admin.plugins.operatorEgressPill': '+ 직접 추가하는 호스트',
|
|
'admin.plugins.operatorEgressHint':
|
|
'이 플러그인은 관리자만 알 수 있는 서비스(자체 호스팅 서버)와 통신합니다. 설치 후 ⋯ → 허용된 호스트에서 추가하세요. 그 외에는 접근할 수 없습니다.',
|
|
'admin.plugins.noErrors': '기록된 오류가 없습니다.',
|
|
'admin.plugins.uninstalled': '플러그인이 제거되었습니다',
|
|
'admin.plugins.uninstallTitle': '플러그인을 제거할까요?',
|
|
'admin.plugins.uninstallBody':
|
|
'플러그인이 중지되고 코드가 제거되며 모든 데이터가 삭제됩니다. 이 작업은 되돌릴 수 없습니다.',
|
|
'admin.plugins.status.starting': '시작 중…',
|
|
'admin.plugins.type.widget': '위젯',
|
|
'admin.plugins.type.page': '페이지',
|
|
'admin.plugins.type.integration': '통합',
|
|
'admin.plugins.type.trip-page': '여행 페이지',
|
|
'admin.plugins.reviewed': '검토됨',
|
|
'admin.plugins.unreviewed': '검토되지 않음',
|
|
'admin.plugins.updated': '플러그인이 업데이트되었습니다',
|
|
'admin.plugins.updateTo': '업데이트 → v{version}',
|
|
'admin.plugins.enabledToggle': '플러그인 활성화',
|
|
'plugins.notFound': '플러그인을 찾을 수 없습니다',
|
|
'admin.plugins.title': '플러그인',
|
|
'admin.plugins.subtitle': '인스턴스에 서드파티 플러그인을 설치하고 관리하세요.',
|
|
'admin.plugins.disabledTitle': '플러그인이 비활성화되어 있습니다',
|
|
'admin.plugins.disabledBody':
|
|
'플러그인 런타임이 꺼져 있습니다 (TREK_PLUGINS_ENABLED). 관리자가 서버 설정에서 활성화하기 전까지 어떤 플러그인도 실행할 수 없습니다.',
|
|
'admin.plugins.empty': '아직 설치된 플러그인이 없습니다.',
|
|
'admin.plugins.loadError': '플러그인을 불러올 수 없습니다.',
|
|
'admin.plugins.scaffoldNote':
|
|
'플러그인 설치 및 활성화는 이후 업데이트에서 제공됩니다. 현재 이 패널은 설치된 플러그인만 표시합니다.',
|
|
'admin.plugins.status.active': '활성',
|
|
'admin.plugins.status.inactive': '비활성',
|
|
'admin.plugins.status.disabled': '비활성화됨',
|
|
'admin.plugins.status.error': '오류',
|
|
'admin.plugins.status.incompatible': '호환되지 않음',
|
|
'admin.plugins.details': '상세 정보',
|
|
'admin.plugins.detailError': '플러그인 상세 정보를 불러올 수 없습니다.',
|
|
'admin.plugins.permissionsTitle': '권한',
|
|
'admin.plugins.noPermissions': '이 플러그인은 특별한 권한을 요청하지 않습니다.',
|
|
'admin.plugins.egressNote': '연결 가능 호스트: {hosts}',
|
|
'admin.plugins.setupTitle': '설정',
|
|
'admin.plugins.noSetup': '별도의 설정 없이 바로 사용할 수 있습니다.',
|
|
'admin.plugins.scope.instance': '인스턴스 전체',
|
|
'admin.plugins.scope.user': '사용자별',
|
|
'admin.plugins.fieldRequired': '필수',
|
|
'admin.plugins.sourceRepo': '소스 저장소',
|
|
'admin.plugins.reportIssue': '문제 신고',
|
|
'admin.plugins.homepage': '홈페이지',
|
|
'admin.plugins.requiresTrek': 'TREK {version} 이상 필요',
|
|
'admin.plugins.reviewedOn': '{date} 검토됨',
|
|
'admin.plugins.perm.db:own': '격리된 데이터베이스에 자체 데이터 저장',
|
|
'admin.plugins.perm.db:read:trips': '현재 사용자가 접근할 수 있는 여행 읽기',
|
|
'admin.plugins.perm.db:read:users': '기본 프로필 정보 읽기 (이름, 아바타 — 자격 증명은 제외)',
|
|
'admin.plugins.perm.db:read:costs': '현재 사용자가 접근할 수 있는 지출(예산 항목) 읽기',
|
|
'admin.plugins.perm.db:read:packing': '현재 사용자가 접근할 수 있는 여행의 짐 목록 읽기',
|
|
'admin.plugins.perm.db:write:packing': '현재 사용자가 편집할 수 있는 여행에서 짐 목록 항목 만들기, 편집 및 삭제',
|
|
'admin.plugins.perm.weather:read': '호스트의 캐시된 날씨 예보 읽기(좌표 기준)',
|
|
'admin.plugins.perm.db:read:categories': '전역 장소 카테고리 목록 읽기',
|
|
'admin.plugins.perm.db:read:tags': '현재 사용자의 태그 읽기',
|
|
'admin.plugins.perm.db:write:tags': '현재 사용자의 태그 만들기, 편집 및 삭제',
|
|
'admin.plugins.perm.db:read:todos': '현재 사용자가 접근할 수 있는 여행의 할 일 읽기',
|
|
'admin.plugins.perm.db:write:todos': '현재 사용자가 편집할 수 있는 여행에서 할 일 만들기, 편집 및 삭제',
|
|
'admin.plugins.perm.db:write:atlas':
|
|
'현재 사용자의 방문한 국가와 지역을 표시하고 버킷 리스트 관리(Atlas 애드온 필요)',
|
|
'admin.plugins.perm.db:write:vacay': '현재 사용자의 활성 계획에서 휴가일과 회사 휴일 전환(Vacay 애드온 필요)',
|
|
'admin.plugins.perm.db:write:journal':
|
|
'현재 사용자가 편집할 수 있는 일지에서 항목 만들기, 편집 및 삭제(Journey 애드온 필요)',
|
|
'admin.plugins.perm.db:write:collections':
|
|
'컬렉션을 만들고 편집하며 장소 저장(현재 사용자의 컬렉션 역할 기준, Collections 애드온 필요)',
|
|
'admin.plugins.perm.db:write:files':
|
|
'현재 사용자가 편집할 수 있는 여행에 파일 첨부(10MB 제한, 차단된 확장자 거부) 및 링크 관리',
|
|
'admin.plugins.perm.db:write:collab':
|
|
'현재 사용자가 편집할 수 있는 여행에 메모, 투표 및 채팅 메시지 게시(Collab 애드온 필요)',
|
|
'admin.plugins.perm.db:write:members':
|
|
'여행에 사용자 추가 — 여행 접근 권한 부여; 현재 사용자의 멤버 관리 권한으로 보호',
|
|
'admin.plugins.perm.notify:send':
|
|
'현재 사용자 또는 그가 속한 여행에 알림(벨 받은함 + 이메일/ntfy) 전송 — 임의의 수신자에게는 보내지 않음',
|
|
'admin.plugins.perm.ai:invoke':
|
|
'관리자가 구성한 AI 공급자(텍스트 완성 + 문서 추출)를 현재 사용자를 대신하여 실행 — 플러그인은 키를 보유하지 않음',
|
|
'admin.plugins.perm.oauth:client':
|
|
'호스트가 중개하는 OAuth로 사용자를 대신해 타사 서비스에 연결(토큰은 호스트가 보유하며 플러그인은 볼 수 없음)',
|
|
'admin.plugins.perm.db:read:files': '현재 사용자가 접근할 수 있는 여행의 파일 읽기',
|
|
'admin.plugins.perm.db:write:reservations': '현재 사용자가 편집할 수 있는 여행에서 예약 만들기, 편집 및 삭제',
|
|
'admin.plugins.perm.db:write:accommodations': '현재 사용자가 편집할 수 있는 여행에서 숙소 만들기, 편집 및 삭제',
|
|
'admin.plugins.perm.db:read:journal': '현재 사용자의 여행 일지 읽기(Journey 애드온 필요)',
|
|
'admin.plugins.perm.db:read:atlas': '현재 사용자가 방문한 국가 및 지역 읽기(Atlas 애드온 필요)',
|
|
'admin.plugins.perm.db:read:vacay': '현재 사용자의 휴가 계획 읽기(Vacay 애드온 필요)',
|
|
'admin.plugins.perm.db:read:daynotes': '현재 사용자가 접근할 수 있는 여행의 일자 메모 읽기',
|
|
'admin.plugins.perm.db:read:collections': '현재 사용자의 저장한 장소 컬렉션 읽기(Collections 애드온 필요)',
|
|
'admin.plugins.perm.db:write:daynotes': '현재 사용자가 편집할 수 있는 여행에서 일자 메모 만들기, 편집 및 삭제',
|
|
'admin.plugins.perm.jobs:run':
|
|
'선언된 백그라운드 작업을 예약에 따라 실행(사용자 컨텍스트 없음 — 사용자 데이터를 읽을 수 없음)',
|
|
'admin.plugins.perm.db:write:costs': '현재 사용자가 편집할 수 있는 여행에 지출(예산 항목) 만들기',
|
|
'admin.plugins.perm.db:write:places': '현재 사용자가 편집할 수 있는 여행에서 장소 추가, 편집 및 삭제',
|
|
'admin.plugins.perm.db:write:days': '현재 사용자가 편집할 수 있는 여행에서 날짜 추가, 편집 및 삭제',
|
|
'admin.plugins.perm.db:write:itinerary': '현재 사용자가 편집할 수 있는 여행의 날짜에 장소 지정 및 삭제',
|
|
'admin.plugins.perm.db:write:trips': '현재 사용자가 편집할 수 있는 여행의 세부 정보(제목, 날짜, 통화…) 편집',
|
|
'admin.plugins.perm.db:meta': '현재 사용자가 접근할 수 있는 여행, 장소, 날짜에 플러그인 고유의 비공개 데이터 첨부',
|
|
'admin.plugins.perm.ws:broadcast:trip': '여행 멤버에게 실시간 업데이트 전송',
|
|
'admin.plugins.perm.ws:broadcast:user': '개별 사용자에게 실시간 업데이트 전송',
|
|
'admin.plugins.perm.hook:photo-provider': '사진 기능에 사진 제공',
|
|
'admin.plugins.perm.hook:calendar-source': '캘린더에 일정 제공',
|
|
'admin.plugins.perm.hook:place-detail-provider': '장소에 추가 정보(리뷰, 평점, 링크)를 제공',
|
|
'admin.plugins.perm.hook:trip-warning-provider': '여행에 검증 경고를 표시 (플래너에 표시됨)',
|
|
'admin.plugins.perm.hook:table-contributor': '여행 보기(예약, 장소, 일자)에 열과 작업 추가',
|
|
'admin.plugins.perm.hook:map-marker-provider': '여행 지도에 마커 추가(예: 예약 또는 POI 표시)',
|
|
'admin.plugins.perm.hook:map-layer-provider': '여행 지도에 경로, 회랑, 구역 그리기',
|
|
'admin.plugins.perm.hook:route-provider':
|
|
'플래너가 일자 경로 계산에 사용할 라우팅 프로필 제공(예: 충전소 경유 전기차 라우팅)',
|
|
'admin.plugins.perm.hook:day-schedule-provider': '일자 계획에 시간 항목 추가(충전 정차, 보안 검색 여유 시간)',
|
|
'admin.plugins.perm.hook:day-tint-provider': '일자 계획에서 날짜를 색으로 구분(예: 해당 날짜가 여행의 어느 구간인지)',
|
|
'admin.plugins.perm.geolocation:read':
|
|
'해당 플러그인 화면이 열려 있는 동안 실시간 위치 요청 (브라우저에서 추가로 확인함)',
|
|
'admin.plugins.perm.hook:pdf-section-provider': '여행 PDF 내보내기에 텍스트 섹션 추가',
|
|
'admin.plugins.perm.hook:atlas-layer-provider': 'Atlas 세계 지도에서 국가 강조 표시(예: 위시리스트 또는 여행 경보)',
|
|
'admin.plugins.perm.hook:journal-entry-provider': '저널 항목에 추가 행(링크, 통계) 제공',
|
|
'admin.plugins.perm.hook:user-data':
|
|
'사용자에 대해 저장한 데이터를 삭제하거나 내보내기 (GDPR: 계정 삭제 및 데이터 요청)',
|
|
'admin.plugins.perm.hook:trip-card-provider': '대시보드 여행 카드에 작은 배지(상태, 개수) 추가',
|
|
'admin.plugins.perm.hook:notification-channel': '추가 채널을 통해 알림을 전달합니다',
|
|
'admin.plugins.perm.events:subscribe': '핵심 활동 이벤트에 반응 (이벤트 이름과 여행만, 내용은 절대 표시 안 함)',
|
|
'admin.plugins.perm.http:outbound': '선언된 호스트로 아웃바운드 요청 전송',
|
|
'admin.plugins.perm.db:read:collab':
|
|
'현재 사용자가 접근할 수 있는 여행의 메모, 투표 및 채팅 메시지 읽기(Collab 애드온 필요)',
|
|
'admin.plugins.perm.db:read:files:content': '현재 사용자가 접근할 수 있는 여행의 파일 내용(바이트) 읽기',
|
|
'admin.plugins.perm.db:create:trips': '현재 사용자 소유의 새 여행 만들기',
|
|
'admin.plugins.perm.rates:read': '호스트의 캐시된 환율 읽기',
|
|
'admin.plugins.updateConsentTitle': '이 업데이트에는 새로운 권한이 필요합니다',
|
|
'admin.plugins.updateConsentBody':
|
|
'{name} v{version}이(가) 아직 부여하지 않은 권한을 요청합니다. 새 버전은 설치되었지만 승인하기 전까지는 꺼진 상태로 유지됩니다.',
|
|
'admin.plugins.updateNewPermissions': '새로 요청된 권한',
|
|
'admin.plugins.updateNewEgress': '새로운 아웃바운드 연결',
|
|
'admin.plugins.updateApprove': '승인하고 켜기',
|
|
'admin.plugins.updateLater': '일단 꺼두기',
|
|
'admin.plugins.updateKeptOff': '업데이트가 설치되었습니다 — 새 권한을 승인하기 전까지 꺼진 상태로 둡니다',
|
|
'admin.plugins.reviewedMeaning':
|
|
'"검토됨"은 TREK 관리자가 각 버전마다 이 플러그인에 악성코드가 있는지 검사했다는 의미입니다 — 품질이나 정상 작동 여부를 검사한 것이 아닙니다. 플러그인이 무해하다는 보장은 아닙니다.',
|
|
'admin.plugins.security.title': '플러그인이 격리되는 방식 — 그리고 그 한계',
|
|
'admin.plugins.security.isolationTitle': '모든 플러그인은 격리된 상태로 실행됩니다',
|
|
'admin.plugins.security.isolationBody':
|
|
'플러그인은 자체 파일만 읽을 수 있는 잠긴 별도 프로세스로 실행됩니다. 데이터베이스, 로그인 비밀 값, 암호화 키를 읽을 수 없고, 다른 프로그램을 실행할 수 없으며, 어디에도 파일을 쓸 수 없습니다. 플러그인의 인터페이스는 세션 쿠키를 읽거나 주변 TREK 페이지를 건드릴 수 없는 봉인된 브라우저 프레임에서 실행됩니다.',
|
|
'admin.plugins.security.permsTitle': '권한이 의미하는 것',
|
|
'admin.plugins.security.permsBody':
|
|
'설치 전에 표시되는 권한은 플러그인이 실행되는 동안 TREK이 강제하는 엄격한 한계입니다 — 목록에 없는 것은 말 그대로 아무것도 할 수 없습니다. 하지만 이는 플러그인이 무엇을 할 수 있는지를 알려줄 뿐, 실제로 무엇을 하는지는 알려주지 않습니다. 여행을 읽고 서버에 연결할 수 있는 플러그인은 그 서버로 여행 데이터를 전송할 수 있으므로, 설명뿐만 아니라 권한과 아웃바운드 호스트도 확인하세요.',
|
|
'admin.plugins.security.limitsTitle': '보장할 수 없는 것',
|
|
'admin.plugins.security.limitsBody':
|
|
'이 격리는 강력한 소프트웨어 경계이지만 절대적인 것은 아닙니다. 플러그인은 정확히 승인한 권한만큼 동작하므로, 그 권한 범위 내에서는 설명과 다르게 동작할 수 있으며, 정당하게 보유한 데이터를 선언한 호스트로 전송할 수 있습니다. TREK은 플러그인의 코드가 실제로 무엇을 하는지 읽거나 판단하지 않습니다.',
|
|
'admin.plugins.security.worstTitle': '최악의 경우',
|
|
'admin.plugins.security.worstBody':
|
|
'활성화한 악의적인 플러그인은 부여한 데이터와 연결을 오용할 수 있습니다 — 예를 들어 읽을 수 있는 여행 데이터를 유출할 수 있습니다. 하지만 비밀번호를 훔치거나, 관리자 로그인을 위조하거나, 서버에서 명령을 실행하거나, 부여하지 않은 데이터에 접근할 수는 없습니다. 피해는 승인한 범위 안에 머물며, 플러그인을 끄면 중단됩니다.',
|
|
'admin.plugins.security.reviewedTitle': '"검토됨"의 의미',
|
|
'admin.plugins.security.reviewedBody':
|
|
'검토된 플러그인은 각 버전마다 TREK 관리자가 악성코드를 수동으로 검사한 것입니다 — 정상 작동 여부가 아니라 악의적인 코드가 있는지 확인한 것입니다. 플러그인이 무해하다는 약속은 아닙니다.',
|
|
'admin.plugins.security.signedTitle': '"서명됨"의 의미',
|
|
'admin.plugins.security.signedBody':
|
|
'TREK이 설치할 때마다 검증하는 체크섬은 파일이 레지스트리가 보증하는 것과 정확히 일치함을 증명합니다. 서명은 다른 것을 증명합니다. 그 파일이 작성자에게서 왔으며, 작성자만 가진 키로 서명되었다는 사실입니다. 서명된 플러그인은 두 가지를 모두 갖추고 있습니다. 서명되지 않았다고 해서 안전하지 않다는 뜻은 아닙니다 — 보장이 하나 적을 뿐이며, 현재 레지스트리의 플러그인 대부분은 서명되어 있지 않습니다.',
|
|
'admin.plugins.signed': '서명됨',
|
|
'admin.plugins.signedHint': '설치 당시 작성자의 서명 키로 검증되었습니다',
|
|
'admin.plugins.unsigned': '서명 없음',
|
|
'admin.plugins.unsignedHint':
|
|
'파일은 레지스트리가 보증하는 것과 일치하지만, 작성자와 연결해 주는 것은 없습니다. 보장이 하나 적을 뿐, 안전하지 않다는 뜻은 아닙니다.',
|
|
'admin.plugins.updateBlocked': '업데이트가 차단되었습니다 — {reason}',
|
|
'admin.plugins.reviewBlock': '확인',
|
|
'admin.plugins.retrusted': '새 서명 키를 신뢰했습니다 — 플러그인이 업데이트되었습니다',
|
|
'admin.plugins.sig.title': '{name}의 서명을 검증할 수 없습니다',
|
|
'admin.plugins.sig.keyChangedBody':
|
|
'작성자의 서명 키가 이 플러그인을 설치할 때 사용된 키와 다릅니다. 작성자가 키를 교체하는 일은 실제로 있습니다 — 하지만 플러그인을 탈취한 공격자도 여기서는 이와 똑같아 보입니다.',
|
|
'admin.plugins.sig.invalidBody':
|
|
'파일이 작성자의 서명과 일치하지 않습니다. 작성자가 서명한 파일이 아니며, 손상되었거나 변조된 것입니다. 이 경우는 무시하고 진행할 수 없습니다.',
|
|
'admin.plugins.sig.missingBody':
|
|
'설치할 때 이 플러그인에는 서명이 있었지만, 새 버전에는 서명이 없습니다. TREK은 이런 후퇴를 조용히 받아들이지 않습니다. 이 경우는 무시하고 진행할 수 없습니다.',
|
|
'admin.plugins.sig.incompleteBody':
|
|
'레지스트리 항목이 반만 서명되어 있습니다. 작성자 키는 선언되어 있지만 해당 버전에는 서명이 없습니다(또는 그 반대입니다). 이는 플러그인 쪽의 실수입니다. 이 경우는 무시하고 진행할 수 없습니다.',
|
|
'admin.plugins.sig.pinnedKey': '설치할 때 사용된 키',
|
|
'admin.plugins.sig.newKey': '지금 제시하는 키',
|
|
'admin.plugins.sig.confirmOutOfBand':
|
|
'TREK은 정당한 키 교체와 탈취를 구분할 수 없습니다 — 여기서는 둘이 똑같아 보입니다. 받아들이기 전에 이미 신뢰하는 경로를 통해 작성자에게 새 키를 확인하세요. 받아들이면 플러그인이 업데이트되고 새 키가 기억됩니다.',
|
|
'admin.plugins.sig.retrustConfirm': '새 키를 신뢰하고 업데이트',
|
|
'admin.plugins.sig.cancel': '신뢰하지 않기',
|
|
'admin.plugins.sig.consentUnsigned':
|
|
'이 버전과 작성자를 연결해 주는 것이 없습니다 — 파일은 레지스트리와 일치하지만 작성자 서명이 없습니다.',
|
|
'admin.plugins.security.trustTitle': '핵심 요약',
|
|
'admin.plugins.security.trustBody':
|
|
'플러그인을 설치하는 것은 다른 서드파티 앱을 설치하는 것과 같습니다: 신뢰할 수 있는 작성자의 코드만 추가하고, 의심스러우면 먼저 직접 확인하세요. TREK은 서드파티 플러그인에 대해 어떠한 책임도 지지 않습니다.',
|
|
'admin.plugins.runtimeOn': '런타임 켜짐',
|
|
'admin.plugins.tabDiscover': '둘러보기',
|
|
'admin.plugins.searchPlaceholder': '플러그인 검색…',
|
|
'admin.plugins.filterType': '유형',
|
|
'admin.plugins.filterStatus': '상태',
|
|
'admin.plugins.sortBy': '정렬',
|
|
'admin.plugins.allTypes': '모든 유형',
|
|
'admin.plugins.allStatuses': '전체',
|
|
'admin.plugins.stateOff': '꺼짐',
|
|
'admin.plugins.filterUpdate': '업데이트 가능',
|
|
'admin.plugins.sortName': '이름',
|
|
'admin.plugins.sortRecent': '최근 업데이트순',
|
|
'admin.plugins.sortUpdates': '업데이트 우선',
|
|
'admin.plugins.sortDownloads': '다운로드순',
|
|
'admin.plugins.updatesAvailable': '플러그인 업데이트 {count}건이 있습니다.',
|
|
'admin.plugins.updateAll': '모두 업데이트',
|
|
'admin.plugins.noMatchInstalled': '검색과 일치하는 설치된 플러그인이 없습니다.',
|
|
'admin.plugins.noMatchRegistry': '레지스트리에 검색과 일치하는 플러그인이 없습니다.',
|
|
'admin.plugins.restart': '다시 시작',
|
|
'admin.plugins.restarted': '플러그인이 다시 시작되었습니다',
|
|
'admin.plugins.cap.readsTrips': '여행 읽기',
|
|
'admin.plugins.cap.readsUsers': '기본 프로필 읽기',
|
|
'admin.plugins.cap.readsCosts': '지출 읽기',
|
|
'admin.plugins.cap.readsPacking': '짐 목록 읽기',
|
|
'admin.plugins.cap.readsFiles': '여행 파일 읽기',
|
|
'admin.plugins.cap.writesCosts': '지출 추가',
|
|
'admin.plugins.cap.writesPlaces': '장소 편집',
|
|
'admin.plugins.cap.writesDays': '날짜 편집',
|
|
'admin.plugins.cap.writesItinerary': '일정 편집',
|
|
'admin.plugins.cap.writesTrips': '여행 편집',
|
|
'admin.plugins.cap.metadata': '메타데이터 추가',
|
|
'admin.plugins.cap.widget': '대시보드 위젯',
|
|
'admin.plugins.cap.heroWidget': '탑승권 위젯',
|
|
'admin.plugins.cap.placeSlot': '장소 상세',
|
|
'admin.plugins.cap.daySlot': '일자 상세',
|
|
'admin.plugins.cap.reservationSlot': '예약 상세',
|
|
'admin.plugins.cap.replacesTabs': '플래너 탭 대체',
|
|
'admin.plugins.cap.realtime': '실시간 업데이트',
|
|
'admin.plugins.cap.notificationChannel': '알림 채널',
|
|
'admin.plugins.cap.photos': '사진 제공',
|
|
'admin.plugins.cap.calendar': '캘린더 일정 제공',
|
|
'admin.plugins.cap.placeDetails': '장소 정보 강화',
|
|
'admin.plugins.cap.warnings': '문제 표시',
|
|
'admin.plugins.cap.mapLayers': '지도에 그리기',
|
|
'admin.plugins.cap.routing': '라우팅 제공',
|
|
'admin.plugins.cap.daySchedule': '계획 시간 추가',
|
|
'admin.plugins.cap.dayTint': '날짜 색상 표시',
|
|
'admin.plugins.cap.geolocation': '위치 읽기',
|
|
'admin.plugins.cap.events': '활동에 반응',
|
|
'admin.plugins.cap.requiresAddon': '{addon} 필요',
|
|
'admin.plugins.cap.dependsOn': '{id} {version} 필요',
|
|
'admin.plugins.dep.addonDisabledToast': '필요한 애드온을 먼저 활성화하세요: {addons}',
|
|
'admin.plugins.dep.autoEnabled': '필요한 플러그인을 먼저 활성화했습니다: {plugins}',
|
|
'admin.plugins.dep.downloaded': '{id} 다운로드 완료',
|
|
'admin.plugins.dep.resolveTitle': '누락된 종속성',
|
|
'admin.plugins.dep.resolveBody': '“{name}”을(를) 활성화하려면 다음 플러그인을 먼저 설치해야 합니다.',
|
|
'admin.plugins.dep.requires': '{version} 필요',
|
|
'admin.plugins.dep.mismatch': '{wanted} 필요 — 현재 {installed} 설치됨',
|
|
'admin.plugins.dep.download': '다운로드',
|
|
'admin.plugins.dep.update': '업데이트',
|
|
'admin.plugins.dep.resolveHint': '자체 종속성을 포함하여 호환되는 최신 버전을 다운로드합니다.',
|
|
'admin.plugins.dep.trekIncompatible': 'TREK {range}이(가) 필요합니다 — 이 서버는 {host}입니다',
|
|
'admin.plugins.dep.trekUnknown': '지원하는 TREK 버전을 명시하지 않았습니다',
|
|
'admin.plugins.installCompatible': '{version} 설치',
|
|
'admin.plugins.incompatible': '호환되지 않음',
|
|
'admin.plugins.accessTitle': '접근할 수 있는 항목',
|
|
'admin.plugins.connectsTitle': '연결 대상',
|
|
'admin.plugins.detailsTitle': '상세 정보',
|
|
'admin.plugins.noAccess': '특별한 접근 권한이 필요하지 않습니다.',
|
|
'admin.plugins.metaVersion': '버전',
|
|
'admin.plugins.metaSize': '크기',
|
|
'admin.plugins.metaRequires': '요구 사항',
|
|
'admin.plugins.metaReviewed': '검토일',
|
|
'admin.plugins.downloads': '다운로드',
|
|
'admin.addons.title': '애드온',
|
|
'admin.addons.subtitle': '기능을 활성화 또는 비활성화하여 TREK 경험을 맞춤 설정하세요.',
|
|
'admin.addons.catalog.packing.name': '목록',
|
|
'admin.addons.catalog.packing.description': '여행을 위한 짐 목록 및 할 일 작업',
|
|
'admin.addons.catalog.budget.name': '비용',
|
|
'admin.addons.catalog.budget.description': '지출 추적 및 여행 예산 계획',
|
|
'admin.addons.catalog.documents.name': '문서',
|
|
'admin.addons.catalog.documents.description': '여행 서류 저장 및 관리',
|
|
'admin.addons.catalog.vacay.name': 'Vacay',
|
|
'admin.addons.catalog.vacay.description': '캘린더 보기가 있는 개인 휴가 플래너',
|
|
'admin.addons.catalog.atlas.name': 'Atlas',
|
|
'admin.addons.catalog.atlas.description': '방문한 나라와 여행 통계가 있는 세계 지도',
|
|
'admin.addons.catalog.collab.name': 'Collab',
|
|
'admin.addons.catalog.collab.description': '여행 계획을 위한 실시간 메모, 투표, 채팅',
|
|
'admin.addons.catalog.memories.name': '사진 (Immich)',
|
|
'admin.addons.catalog.memories.description': 'Immich 인스턴스를 통해 여행 사진 공유',
|
|
'admin.addons.catalog.mcp.name': 'MCP',
|
|
'admin.addons.catalog.mcp.description': 'AI 어시스턴트 통합을 위한 모델 컨텍스트 프로토콜',
|
|
'admin.addons.subtitleBefore': '기능을 활성화 또는 비활성화하여 ',
|
|
'admin.addons.subtitleAfter': ' 경험을 맞춤 설정하세요.',
|
|
'admin.addons.enabled': '활성화됨',
|
|
'admin.addons.disabled': '비활성화됨',
|
|
'admin.addons.type.trip': '여행',
|
|
'admin.addons.type.global': '전역',
|
|
'admin.addons.type.integration': '통합',
|
|
'admin.addons.tripHint': '각 여행 내 탭으로 사용 가능',
|
|
'admin.addons.globalHint': '메인 내비게이션의 독립 섹션으로 사용 가능',
|
|
'admin.addons.integrationHint': '전용 페이지가 없는 백엔드 서비스 및 API 통합',
|
|
'admin.addons.toast.updated': '애드온이 업데이트되었습니다',
|
|
'admin.addons.toast.error': '애드온 업데이트 실패',
|
|
'admin.addons.noAddons': '사용 가능한 애드온이 없습니다',
|
|
'admin.weather.title': '날씨 데이터',
|
|
'admin.weather.badge': '2026년 3월 24일부터',
|
|
'admin.weather.description':
|
|
'TREK은 날씨 데이터 소스로 Open-Meteo를 사용합니다. Open-Meteo는 무료 오픈 소스 날씨 서비스로 API 키가 필요 없습니다.',
|
|
'admin.weather.forecast': '16일 예보',
|
|
'admin.weather.forecastDesc': '이전: 5일 (OpenWeatherMap)',
|
|
'admin.weather.climate': '과거 기후 데이터',
|
|
'admin.weather.climateDesc': '16일 예보 이후 날짜의 85년 평균값',
|
|
'admin.weather.requests': '하루 10,000 요청',
|
|
'admin.weather.requestsDesc': '무료, API 키 불필요',
|
|
'admin.weather.locationHint':
|
|
'날씨는 각 날의 좌표가 있는 첫 번째 장소를 기준으로 합니다. 날에 배정된 장소가 없으면 장소 목록의 임의 장소가 참조로 사용됩니다.',
|
|
'admin.tabs.mcpTokens': 'MCP 접근',
|
|
'admin.mcpTokens.title': 'MCP 접근',
|
|
'admin.mcpTokens.subtitle': '모든 사용자의 OAuth 세션 및 API 토큰을 관리합니다',
|
|
'admin.mcpTokens.sectionTitle': 'API 토큰',
|
|
'admin.mcpTokens.owner': '소유자',
|
|
'admin.mcpTokens.tokenName': '토큰 이름',
|
|
'admin.mcpTokens.created': '생성일',
|
|
'admin.mcpTokens.lastUsed': '마지막 사용',
|
|
'admin.mcpTokens.never': '없음',
|
|
'admin.mcpTokens.empty': '생성된 MCP 토큰이 없습니다',
|
|
'admin.mcpTokens.deleteTitle': '토큰 삭제',
|
|
'admin.mcpTokens.deleteMessage': '토큰이 즉시 취소됩니다. 사용자는 이 토큰을 통한 MCP 접근 권한을 잃게 됩니다.',
|
|
'admin.mcpTokens.deleteSuccess': '토큰이 삭제되었습니다',
|
|
'admin.mcpTokens.deleteError': '토큰 삭제 실패',
|
|
'admin.mcpTokens.loadError': '토큰 불러오기 실패',
|
|
'admin.oauthSessions.sectionTitle': 'OAuth 세션',
|
|
'admin.oauthSessions.clientName': '클라이언트',
|
|
'admin.oauthSessions.owner': '소유자',
|
|
'admin.oauthSessions.scopes': '권한 범위',
|
|
'admin.oauthSessions.created': '생성일',
|
|
'admin.oauthSessions.empty': '활성 OAuth 세션이 없습니다',
|
|
'admin.oauthSessions.revokeTitle': '세션 취소',
|
|
'admin.oauthSessions.revokeMessage': 'OAuth 세션이 즉시 취소됩니다. 클라이언트는 MCP 접근 권한을 잃게 됩니다.',
|
|
'admin.oauthSessions.revokeSuccess': '세션이 취소되었습니다',
|
|
'admin.oauthSessions.revokeError': '세션 취소 실패',
|
|
'admin.oauthSessions.loadError': 'OAuth 세션 불러오기 실패',
|
|
'admin.tabs.github': 'GitHub',
|
|
'admin.audit.subtitle': '보안 및 관리 이벤트 (백업, 사용자, MFA, 설정).',
|
|
'admin.audit.empty': '아직 감사 항목이 없습니다.',
|
|
'admin.audit.refresh': '새로 고침',
|
|
'admin.audit.loadMore': '더 불러오기',
|
|
'admin.audit.showing': '{count}개 불러옴 · 총 {total}개',
|
|
'admin.audit.col.time': '시간',
|
|
'admin.audit.col.user': '사용자',
|
|
'admin.audit.col.action': '작업',
|
|
'admin.audit.col.resource': '리소스',
|
|
'admin.audit.col.ip': 'IP',
|
|
'admin.audit.col.details': '상세',
|
|
'admin.github.title': '릴리스 히스토리',
|
|
'admin.github.subtitle': '{repo}의 최신 업데이트',
|
|
'admin.github.latest': '최신',
|
|
'admin.github.prerelease': '사전 릴리스',
|
|
'admin.github.showDetails': '상세 보기',
|
|
'admin.github.hideDetails': '상세 숨기기',
|
|
'admin.github.loadMore': '더 불러오기',
|
|
'admin.github.loading': '불러오는 중...',
|
|
'admin.github.error': '릴리스 불러오기 실패',
|
|
'admin.github.by': '작성자',
|
|
'admin.github.support': 'TREK 개발 지속에 도움이 됩니다',
|
|
'admin.update.available': '업데이트 사용 가능',
|
|
'admin.update.text': 'TREK {version}이(가) 사용 가능합니다. 현재 {current}을(를) 실행 중입니다.',
|
|
'admin.update.button': 'GitHub에서 보기',
|
|
'admin.update.install': '업데이트 설치',
|
|
'admin.update.confirmTitle': '업데이트를 설치할까요?',
|
|
'admin.update.confirmText': 'TREK이 {current}에서 {version}으로 업데이트됩니다. 서버가 이후 자동으로 재시작됩니다.',
|
|
'admin.update.dataInfo': '모든 데이터 (여행, 사용자, API 키, 업로드, Vacay, Atlas, 예산)가 보존됩니다.',
|
|
'admin.update.warning': '재시작 중에 앱이 잠시 사용할 수 없게 됩니다.',
|
|
'admin.update.confirm': '지금 업데이트',
|
|
'admin.update.installing': '업데이트 중…',
|
|
'admin.update.success': '업데이트 완료! 서버가 재시작 중입니다…',
|
|
'admin.update.failed': '업데이트 실패',
|
|
'admin.update.backupHint': '업데이트 전에 백업을 생성하는 것을 권장합니다.',
|
|
'admin.update.backupLink': '백업으로 이동',
|
|
'admin.update.howTo': '업데이트 방법',
|
|
'admin.update.dockerText':
|
|
'TREK 인스턴스가 Docker에서 실행 중입니다. {version}으로 업데이트하려면 서버에서 다음 명령을 실행하세요:',
|
|
'admin.update.nonDockerText':
|
|
'이 TREK 인스턴스는 Docker에서 실행되고 있지 않습니다. {version}으로 업데이트하려면 사용했던 설치 또는 업데이트 방법을 다시 실행하세요 — 예를 들어 Proxmox Community Scripts에서는 LXC 콘솔에서 업데이트를 실행하세요:',
|
|
'admin.update.wikiLink': '업데이트 가이드 열기',
|
|
'admin.update.reloadHint': '잠시 후 페이지를 새로 고침하세요.',
|
|
'admin.tabs.permissions': '권한',
|
|
'admin.addons.catalog.journey.name': 'Journey',
|
|
'admin.addons.catalog.journey.description': '체크인, 사진, 일별 이야기가 있는 여행 기록 및 여행 일지',
|
|
'admin.addons.catalog.collections.name': '컬렉션',
|
|
'admin.addons.catalog.collections.description':
|
|
'개인 장소 라이브러리 — 여행 전반의 장소를 이름이 있는 목록에 저장하고, 어떤 여행에도 복사하고, 다른 사람과 공유하세요',
|
|
'admin.passkey.title': '패스키 로그인',
|
|
'admin.passkey.cardHint': '사용자가 패스키(WebAuthn)로 로그인할 수 있게 합니다. 기본값은 꺼짐입니다.',
|
|
'admin.passkey.login': '패스키 로그인 활성화',
|
|
'admin.passkey.loginHint': '"패스키로 로그인" 옵션을 표시하고 사용자가 설정에서 패스키를 등록할 수 있게 합니다.',
|
|
'admin.passkey.notConfigured':
|
|
'이 배포에 아직 WebAuthn 도메인이 확인되지 않습니다. 아래에서 APP_URL 또는 Relying Party ID를 설정하세요 — 그 전까지 패스키는 숨겨진 상태로 유지됩니다.',
|
|
'admin.passkey.rpId': 'Relying Party ID (도메인)',
|
|
'admin.passkey.rpIdHint':
|
|
'패스키가 바인딩되는 순수 도메인입니다. 예: trek.example.org. 비워두면 APP_URL에서 자동으로 가져옵니다. 나중에 변경하면 기존 패스키가 무효화됩니다.',
|
|
'admin.passkey.origins': '허용된 오리진',
|
|
'admin.passkey.originsHint':
|
|
'쉼표로 구분된 전체 오리진입니다. 예: https://trek.example.org. 비워두면 APP_URL을 사용합니다.',
|
|
'admin.passkey.reset': '패스키 초기화',
|
|
'admin.passkey.resetHint':
|
|
'이 사용자의 모든 패스키를 삭제합니다 (예: 기기 분실 시). 사용자는 비밀번호로 계속 로그인할 수 있습니다.',
|
|
'admin.passkey.resetConfirm': '{name}의 모든 패스키를 삭제할까요?',
|
|
'admin.passkey.resetDone': '패스키 {count}개를 삭제했습니다',
|
|
'admin.defaultSettings.mapProvider': '지도 엔진',
|
|
'admin.defaultSettings.mapProviderHint':
|
|
'이 인스턴스의 모든 사용자에게 적용되는 기본 지도입니다. 각 사용자는 자신의 설정에서 이를 변경할 수 있습니다.',
|
|
'admin.defaultSettings.providerLeaflet': '표준 (무료)',
|
|
'admin.defaultSettings.providerMapbox': 'Mapbox (3D)',
|
|
'admin.defaultSettings.providerMapLibre': 'MapLibre (OpenFreeMap)',
|
|
'admin.defaultSettings.mapboxToken': '공유 Mapbox 토큰',
|
|
'admin.defaultSettings.mapboxTokenHint':
|
|
'자신의 토큰을 입력하지 않은 모든 사용자에게 사용됩니다 — 키를 개별적으로 공유하지 않아도 인스턴스 전체에서 Mapbox를 사용할 수 있습니다. 암호화하여 저장됩니다.',
|
|
'admin.defaultSettings.mapboxStyle': '지도 스타일',
|
|
'admin.defaultSettings.mapboxStylePlaceholder': '스타일을 선택하세요…',
|
|
'admin.defaultSettings.mapbox3d': '3D 건물 & 지형',
|
|
'admin.defaultSettings.mapboxQuality': '고품질 모드',
|
|
'admin.group.users': 'Users',
|
|
'admin.group.config': 'Configuration',
|
|
'admin.group.integration': 'Integrations',
|
|
'admin.group.maintenance': 'Maintenance',
|
|
'admin.invite.tripLabel': '여행에 추가 (선택 사항)',
|
|
'admin.invite.tripNone': '여행 없음',
|
|
'admin.invite.tripHint': '새 사용자가 이 링크를 통해 가입하면 해당 여행에 자동으로 추가됩니다.',
|
|
'admin.invite.boundTo': '{trip}에 추가',
|
|
};
|
|
export default admin;
|