mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-18 21:16:47 +00:00
d4f4ab3891
Deleting a booking also deletes the expenses linked to it, but the question only said the booking would be deleted. A booking with a linked expense now says so in every place that asks: the bookings list and detail, the transport and transit dialogs, and the phone's booking cards. The MCP delete_reservation description names the linked expenses and the stay a hotel booking created as well. Refs #2604
261 lines
14 KiB
TypeScript
261 lines
14 KiB
TypeScript
import type { TranslationStrings } from '../types';
|
|
|
|
const reservations: TranslationStrings = {
|
|
'reservations.title': '예약',
|
|
'reservations.empty': '아직 예약이 없습니다',
|
|
'reservations.emptyHint': '항공, 호텔 등의 예약을 추가하세요',
|
|
'reservations.add': '예약 추가',
|
|
'reservations.addManual': '직접 예약',
|
|
'reservations.placeHint': '팁: 예약은 일별 계획과 연결하기 위해 장소에서 직접 만드는 것이 가장 좋습니다.',
|
|
'reservations.confirmed': '확정됨',
|
|
'reservations.pending': '대기 중',
|
|
'reservations.summary': '{confirmed}개 확정, {pending}개 대기 중',
|
|
'reservations.showFiles': '파일 보기',
|
|
'reservations.editTitle': '예약 편집',
|
|
'reservations.status': '상태',
|
|
'reservations.datetime': '날짜 및 시간',
|
|
'reservations.startTime': '시작 시간',
|
|
'reservations.endTime': '종료 시간',
|
|
'reservations.date': '날짜',
|
|
'reservations.time': '시간',
|
|
'reservations.timeAlt': '시간 (대안, 예: 19:30)',
|
|
'reservations.notes': '메모',
|
|
'reservations.notesPlaceholder': '추가 메모...',
|
|
'reservations.meta.airline': '항공사',
|
|
'reservations.meta.flightNumber': '항공편 번호',
|
|
'reservations.meta.from': '출발',
|
|
'reservations.meta.to': '도착',
|
|
'reservations.layover.route': '경로',
|
|
'reservations.layover.stop': '경유',
|
|
'reservations.layover.addStop': '경유지 추가',
|
|
'reservations.cruise.embark': '승선',
|
|
'reservations.cruise.disembark': '하선',
|
|
'reservations.cruise.port': '기항지',
|
|
'reservations.cruise.addPort': '기항지 추가',
|
|
'reservations.layover.connection': '연결편',
|
|
'reservations.layover.layover': '경유 대기',
|
|
'reservations.needsReview': '검토 필요',
|
|
'reservations.needsReviewHint': '공항이 자동으로 매칭되지 않았습니다 — 위치를 확인해 주세요.',
|
|
'reservations.searchLocation': '역, 항구, 주소 검색…',
|
|
'reservations.meta.trainNumber': '열차 번호',
|
|
'reservations.meta.platform': '플랫폼',
|
|
'reservations.meta.seat': '좌석',
|
|
'reservations.meta.checkIn': '체크인',
|
|
'reservations.meta.checkInUntil': '체크인 마감',
|
|
'reservations.meta.checkOut': '체크아웃',
|
|
'reservations.meta.linkAccommodation': '숙박',
|
|
'reservations.meta.pickAccommodation': '숙박 연결',
|
|
'reservations.meta.noAccommodation': '없음',
|
|
'reservations.meta.hotelPlace': '숙박',
|
|
'reservations.meta.linkPlace': '장소 / 활동',
|
|
'reservations.meta.pickPlace': '장소 / 활동 선택',
|
|
'reservations.meta.pickHotel': '숙박 선택',
|
|
'reservations.meta.fromDay': '부터',
|
|
'reservations.meta.toDay': '까지',
|
|
'reservations.meta.selectDay': '날 선택',
|
|
'reservations.type.flight': '항공',
|
|
'reservations.type.hotel': '숙박',
|
|
'reservations.type.restaurant': '레스토랑',
|
|
'reservations.type.train': '기차',
|
|
'reservations.type.car': '차량',
|
|
'reservations.type.cruise': '크루즈',
|
|
'reservations.type.event': '이벤트',
|
|
'reservations.type.tour': '투어',
|
|
'reservations.type.parking': '주차',
|
|
'reservations.type.other': '기타',
|
|
'reservations.type.bus': '버스',
|
|
'reservations.type.ferry': '페리',
|
|
'reservations.type.cable_car': '케이블카',
|
|
'reservations.type.bicycle': '자전거',
|
|
'reservations.type.taxi': '택시',
|
|
'reservations.type.transit': '대중교통',
|
|
'reservations.typeShort.transit': '대중교통',
|
|
'reservations.type.transport_other': '기타',
|
|
'reservations.confirm.delete': '예약 "{name}"을(를) 삭제할까요?',
|
|
'reservations.confirm.deleteTitle': '예약을 삭제할까요?',
|
|
'reservations.confirm.deleteBody': '"{name}"이(가) 영구 삭제됩니다.',
|
|
'reservations.confirm.deleteBodyWithExpense': '"{name}"과(와) 연결된 비용이 영구 삭제됩니다.',
|
|
'reservations.toast.updated': '예약이 업데이트되었습니다',
|
|
'reservations.toast.removed': '예약이 삭제되었습니다',
|
|
'reservations.toast.fileUploaded': '파일이 업로드되었습니다',
|
|
'reservations.toast.uploadError': '업로드 실패',
|
|
'reservations.newTitle': '새 예약',
|
|
'reservations.bookingType': '예약 유형',
|
|
'reservations.titleLabel': '제목',
|
|
'reservations.titlePlaceholder': '예: 대한항공 KE123, 호텔 신라, ...',
|
|
'reservations.locationAddress': '위치 / 주소',
|
|
'reservations.locationPlaceholder': '주소, 공항, 호텔...',
|
|
'reservations.confirmationCode': '예약 코드',
|
|
'reservations.routeLabel': '경로',
|
|
'reservations.segmentCodes': '구간별 코드',
|
|
'reservations.confirmationPlaceholder': '예: ABC12345',
|
|
'reservations.day': '날',
|
|
'reservations.noDay': '날 없음',
|
|
'reservations.place': '장소',
|
|
'reservations.noPlace': '장소 없음',
|
|
'reservations.pendingSave': '저장될 예정…',
|
|
'reservations.uploading': '업로드 중...',
|
|
'reservations.attachFile': '파일 첨부',
|
|
'reservations.linkExisting': '기존 파일 연결',
|
|
'reservations.toast.saveError': '저장 실패',
|
|
'reservations.toast.updateError': '업데이트 실패',
|
|
'reservations.toast.deleteError': '삭제 실패',
|
|
'reservations.confirm.remove': '"{name}"의 예약을 제거할까요?',
|
|
'reservations.linkAssignment': '날 배정에 연결',
|
|
'reservations.linkedTo': '연결 대상',
|
|
'reservations.pickAssignment': '계획에서 배정을 선택하세요...',
|
|
'reservations.noAssignment': '연결 없음 (독립)',
|
|
'reservations.price': '가격',
|
|
'reservations.budgetCategory': '예산 카테고리',
|
|
'reservations.budgetCategoryPlaceholder': '예: 교통, 숙박',
|
|
'reservations.budgetCategoryAuto': '자동 (예약 유형에서)',
|
|
'reservations.budgetHint': '저장 시 예산 항목이 자동으로 생성됩니다.',
|
|
'reservations.departureDate': '출발',
|
|
'reservations.arrivalDate': '도착',
|
|
'reservations.departureTime': '출발 시간',
|
|
'reservations.arrivalTime': '도착 시간',
|
|
'reservations.pickupDate': '픽업',
|
|
'reservations.returnDate': '반납',
|
|
'reservations.pickupTime': '픽업 시간',
|
|
'reservations.returnTime': '반납 시간',
|
|
'reservations.endDate': '종료 날짜',
|
|
'reservations.meta.departureTimezone': '출발 시간대',
|
|
'reservations.meta.arrivalTimezone': '도착 시간대',
|
|
'reservations.span.departure': '출발',
|
|
'reservations.span.arrival': '도착',
|
|
'reservations.span.inTransit': '이동 중',
|
|
'reservations.span.pickup': '픽업',
|
|
'reservations.span.dropOff': '입차',
|
|
'reservations.span.return': '반납',
|
|
'reservations.span.active': '활성',
|
|
'reservations.span.start': '시작',
|
|
'reservations.span.end': '종료',
|
|
'reservations.span.ongoing': '진행 중',
|
|
'reservations.validation.endBeforeStart': '종료 날짜/시간은 시작 날짜/시간 이후여야 합니다',
|
|
'reservations.validation.endTimeBeforeStartTime': '종료 시간이 시작 시간보다 이릅니다. 다음 날 끝나면 종료 날짜를 설정하세요.',
|
|
'reservations.addBooking': '예약 추가',
|
|
'reservations.import.title': '예약 확인서 가져오기',
|
|
'reservations.import.cta': '파일에서 가져오기',
|
|
'reservations.import.dropHere': '예약 확인 파일을 여기에 끌어다 놓거나 클릭하여 선택',
|
|
'reservations.import.dropActive': '가져올 파일을 여기에 놓으세요',
|
|
'reservations.import.acceptedFormats': '허용 형식: EML, PDF, PKPass, HTML, TXT (파일당 최대 10 MB, 최대 5개)',
|
|
'reservations.import.acceptedPhotos': '사진(JPG, PNG, WEBP)은 AI 모델이 읽습니다.',
|
|
'reservations.import.parsing': '파일 분석 중…',
|
|
'reservations.import.previewHeading': '{count}개 예약 발견',
|
|
'reservations.import.previewEmpty': '업로드된 파일에서 예약을 추출할 수 없었습니다.',
|
|
'reservations.import.removeItem': '제거',
|
|
'reservations.import.needsReview': '검토 필요',
|
|
'reservations.import.tryAi': 'AI로 읽어 보기',
|
|
'reservations.import.aiParsing': 'AI로 읽는 중…',
|
|
'reservations.import.confirm': '{count}개 예약 가져오기',
|
|
'reservations.import.back': '뒤로',
|
|
'reservations.import.success': '{count}개 예약을 가져왔습니다',
|
|
'reservations.import.partialFailure': '{created}개 가져옴, {failed}개 실패',
|
|
'reservations.import.error': '분석 실패. 파일이 유효한 예약 확인서인지 확인하세요.',
|
|
'reservations.import.unavailable': '이 서버에서는 예약 가져오기를 사용할 수 없습니다.',
|
|
'reservations.import.unsupportedFormat':
|
|
'지원하지 않는 파일 형식입니다. EML, PDF, PKPass, HTML 또는 TXT를 사용하세요.',
|
|
'reservations.import.fileTooLarge': '파일 "{name}"이(가) 10 MB 제한을 초과합니다.',
|
|
'reservations.airtrail.title': 'AirTrail에서 가져오기',
|
|
'reservations.airtrail.cta': 'AirTrail',
|
|
'reservations.airtrail.synced': 'AirTrail',
|
|
'reservations.airtrail.syncedHint': 'AirTrail에서 동기화됨 — 수정 사항이 양방향으로 동기화됩니다.',
|
|
'reservations.airtrail.notSynced': '동기화되지 않음',
|
|
'reservations.airtrail.notSyncedHint': '이 항공편은 AirTrail에서 삭제되어 더 이상 동기화되지 않습니다.',
|
|
'reservations.airtrail.layoverHint':
|
|
'AirTrail에서 가져왔습니다. 경유가 있는 여러 구간 항공편은 동기화할 단일 AirTrail 항공편이 없으므로 일회성 가져오기로 유지됩니다.',
|
|
'reservations.airtrail.loadError': 'AirTrail 항공편을 불러올 수 없습니다.',
|
|
'reservations.airtrail.imported': '{count}개 항공편을 가져왔습니다',
|
|
'reservations.airtrail.skippedDuplicate': '{count}개는 이미 이 여행에 있어 건너뛰었습니다',
|
|
'reservations.airtrail.nothingImported': '가져올 항목이 없습니다.',
|
|
'reservations.airtrail.importError': '가져오기에 실패했습니다. 다시 시도하세요.',
|
|
'reservations.airtrail.undo': 'AirTrail에서 가져오기',
|
|
'reservations.airtrail.alreadyImported': '가져옴',
|
|
'reservations.airtrail.duringTrip': '이 여행 기간',
|
|
'reservations.airtrail.otherFlights': '기타 항공편',
|
|
'reservations.airtrail.empty': 'AirTrail 계정에서 항공편을 찾을 수 없습니다.',
|
|
'reservations.airtrail.importCta': '{count}개 가져오기',
|
|
'reservations.airtrail.joinConnection': '{stops} 경유 항공편 하나로 가져오기',
|
|
'reservations.costsLabel': '비용',
|
|
'reservations.createExpense': '지출 만들기',
|
|
'reservations.createExpenseHint': '예약을 저장한 뒤 비용 편집기를 엽니다.',
|
|
'reservations.linkedExpense': '연결된 지출',
|
|
'reservations.removeExpense': '지출 삭제',
|
|
'reservations.linkedExpenses': '연결된 지출',
|
|
'reservations.linkExpense': '기존 지출 연결',
|
|
'reservations.unlinkExpense': '연결 해제, 지출은 유지',
|
|
'reservations.noUnlinkedExpenses': '연결되지 않은 지출이 없습니다',
|
|
'reservations.urlLabel': '링크',
|
|
'reservations.urlPlaceholder': 'https://...',
|
|
'reservations.travelers.label': '동행자',
|
|
'reservations.travelers.assign': '동행자 지정',
|
|
'reservations.travelers.none': '아직 여행 멤버가 없습니다.',
|
|
'reservations.status.switchTo': '{status}(으)로 변경',
|
|
'reservations.view.label': '보기',
|
|
'reservations.view.cards': '카드',
|
|
'reservations.view.list': '목록',
|
|
'reservations.view.timeline': '타임라인',
|
|
'reservations.filter': '필터',
|
|
'reservations.searchPlaceholder': '검색',
|
|
'reservations.results': '{total}개 중 {shown}개',
|
|
'reservations.resetFilters': '필터 초기화',
|
|
'reservations.noMatches': '이 필터에 맞는 항목이 없습니다',
|
|
'reservations.viewOptions': '보기 옵션',
|
|
'reservations.exportCsv': '스프레드시트로 내보내기 (CSV)',
|
|
'reservations.export.type': '유형',
|
|
'reservations.export.title': '제목',
|
|
'reservations.export.start': '시작',
|
|
'reservations.export.end': '종료',
|
|
'reservations.export.from': '출발지',
|
|
'reservations.export.to': '도착지',
|
|
'reservations.export.location': '위치',
|
|
'reservations.export.confirmation': '예약 번호',
|
|
'reservations.export.notes': '메모',
|
|
'reservations.resetView': '보기 초기화',
|
|
'reservations.group.label': '그룹 기준',
|
|
'reservations.group.status': '상태',
|
|
'reservations.group.day': '일자',
|
|
'reservations.group.type': '유형',
|
|
'reservations.group.none': '그룹 없음',
|
|
'reservations.transitApart': '대중교통을 별도 구역으로',
|
|
'reservations.group.before': '여행 전',
|
|
'reservations.group.after': '여행 후',
|
|
'reservations.group.undated': '날짜 없음',
|
|
'reservations.sort.label': '정렬 기준',
|
|
'reservations.sort.date': '날짜',
|
|
'reservations.sort.title': '제목',
|
|
'reservations.sort.type': '유형',
|
|
'reservations.sort.status': '상태',
|
|
'reservations.sort.earlyFirst': '이른 순',
|
|
'reservations.sort.lateFirst': '늦은 순',
|
|
'reservations.sort.aToZ': 'A→Z',
|
|
'reservations.sort.zToA': 'Z→A',
|
|
'reservations.timeline.dayCount': '{count}일',
|
|
'reservations.timeline.zoom': '확대',
|
|
'reservations.timeline.trip': '여행',
|
|
'reservations.timeline.day': '하루',
|
|
'reservations.timeline.prevDay': '이전 날',
|
|
'reservations.timeline.nextDay': '다음 날',
|
|
'reservations.timeline.openDay': '{day} 시간별로 보기',
|
|
'reservations.timeline.nothingThisDay': '이 날에는 아무것도 없습니다.',
|
|
'reservations.timeline.today': '오늘',
|
|
'reservations.timeline.now': '지금',
|
|
'reservations.timeline.byType': '유형별로 한 줄씩',
|
|
'reservations.timeline.context': '다른 탭도 표시',
|
|
'reservations.timeline.contextBookings': '예약',
|
|
'reservations.timeline.contextTransports': '교통',
|
|
'reservations.timeline.noneDated': '아직 날짜가 있는 항목이 없습니다.',
|
|
'reservations.undated': '날짜 없음',
|
|
'reservations.nights': '박',
|
|
'reservations.start': '시작',
|
|
'reservations.end': '종료',
|
|
'reservations.rename': '이름 변경',
|
|
'reservations.copyCode': '예약 코드 복사',
|
|
'reservations.copyFailed': '복사하지 못했습니다',
|
|
'reservations.showInFiles': '파일에서 보기',
|
|
'reservations.filesNeedConnection':
|
|
'파일을 업로드하려면 연결이 필요합니다. 오프라인으로 예약을 저장하려면 새 파일을 제거하거나, 다시 온라인이 되면 저장하세요.',
|
|
'reservations.needsConnection': '연결이 필요한 작업입니다. TREK가 다시 온라인이 되면 다시 시도하세요.',
|
|
};
|
|
export default reservations;
|