mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-18 21:16:47 +00:00
3dc9ac6ac6
A multi-leg flight imported "as one flight with a layover" is detached from sync by design — AirTrail has no single flight to round-trip a layover chain to, so it is created with sync_enabled=0 (#1535). The reservations badge collapsed every sync_enabled=0 AirTrail row into "Not synced" with the tooltip "This flight was removed in AirTrail", which is false for a merged booking that was never removed (#1646). Give the multi-leg case (metadata.legs.length > 1) its own state: show the normal AirTrail badge with a truthful tooltip explaining it stays a one-time import. A genuinely removed single-leg flight still shows "Not synced". Adds reservations.airtrail.layoverHint across all locales.
176 lines
9.6 KiB
TypeScript
176 lines
9.6 KiB
TypeScript
import type { TranslationStrings } from '../types';
|
||
|
||
const reservations: TranslationStrings = {
|
||
'reservations.title': 'Bokningar',
|
||
'reservations.empty': 'Inga bokningar än',
|
||
'reservations.emptyHint': 'Lägg till bokningar av flyg, hotell och annat',
|
||
'reservations.add': 'Lägg till bokning',
|
||
'reservations.addManual': 'Manuell bokning',
|
||
'reservations.placeHint':
|
||
'Tips: Det är bäst att göra bokningar direkt från en plats för att koppla dem till din dagsplan.',
|
||
'reservations.confirmed': 'Bekräftat',
|
||
'reservations.pending': 'Väntar på beslut',
|
||
'reservations.summary': '{confirmed} bekräftat, {pending} väntar på beslut',
|
||
'reservations.fromPlan': 'Från plan',
|
||
'reservations.showFiles': 'Visa filer',
|
||
'reservations.editTitle': 'Redigera reservation',
|
||
'reservations.status': 'Status',
|
||
'reservations.datetime': 'Datum & Tid',
|
||
'reservations.startTime': 'Starttid',
|
||
'reservations.endTime': 'Sluttid',
|
||
'reservations.date': 'Datum',
|
||
'reservations.time': 'Tid',
|
||
'reservations.timeAlt': 'Tid (alternativ, t.ex. 19:30)',
|
||
'reservations.notes': 'Noteringar',
|
||
'reservations.notesPlaceholder': 'Ytterligare noteringar...',
|
||
'reservations.meta.airline': 'Flygbolag',
|
||
'reservations.meta.flightNumber': 'Flygnummer',
|
||
'reservations.meta.from': 'Från',
|
||
'reservations.meta.to': 'Till',
|
||
'reservations.layover.route': 'Rutt',
|
||
'reservations.layover.stop': 'Stopp',
|
||
'reservations.layover.addStop': 'Lägg till stopp',
|
||
'reservations.layover.connection': 'Anslutning',
|
||
'reservations.layover.layover': 'Mellanlandning',
|
||
'reservations.needsReview': 'Granska',
|
||
'reservations.needsReviewHint': 'Flygplatsen kunde inte matchas automatiskt – bekräfta platsen.',
|
||
'reservations.searchLocation': 'Sök efter station, hamn, adress…',
|
||
'reservations.meta.trainNumber': 'Tågnummer',
|
||
'reservations.meta.platform': 'Plattform',
|
||
'reservations.meta.seat': 'Säte',
|
||
'reservations.meta.checkIn': 'Incheckning',
|
||
'reservations.meta.checkInUntil': 'Incheckning fram till',
|
||
'reservations.meta.checkOut': 'Utcheckning',
|
||
'reservations.meta.linkAccommodation': 'Boende',
|
||
'reservations.meta.pickAccommodation': 'Länk till boende',
|
||
'reservations.meta.noAccommodation': 'Inget',
|
||
'reservations.meta.hotelPlace': 'Boende',
|
||
'reservations.meta.linkPlace': 'Plats / Aktivitet',
|
||
'reservations.meta.pickPlace': 'Välj plats / aktivitet',
|
||
'reservations.meta.pickHotel': 'Välj boende',
|
||
'reservations.meta.fromDay': 'Från',
|
||
'reservations.meta.toDay': 'Till',
|
||
'reservations.meta.selectDay': 'Välj dag',
|
||
'reservations.type.flight': 'Flygning',
|
||
'reservations.type.hotel': 'Boende',
|
||
'reservations.type.restaurant': 'Restaurang',
|
||
'reservations.type.train': 'Tåg',
|
||
'reservations.type.car': 'Bil',
|
||
'reservations.type.cruise': 'Kryssning',
|
||
'reservations.type.event': 'Evenemang',
|
||
'reservations.type.tour': 'Rundtur',
|
||
'reservations.type.parking': 'Parkering',
|
||
'reservations.type.other': 'Övrigt',
|
||
'reservations.type.bus': 'Buss',
|
||
'reservations.type.ferry': 'Färja',
|
||
'reservations.type.bicycle': 'Cyckel',
|
||
'reservations.type.taxi': 'Taxi',
|
||
'reservations.type.transit': 'Kollektivtrafik',
|
||
'reservations.type.transport_other': 'Annat',
|
||
'reservations.confirm.delete': 'Är du säker på att du vill ta bort bokningen "{name}"?',
|
||
'reservations.confirm.deleteTitle': 'Ta bort bokningen?',
|
||
'reservations.confirm.deleteBody': '"{name}" kommer att raderas permanent.',
|
||
'reservations.toast.updated': 'Bokning uppdaterad',
|
||
'reservations.toast.removed': 'Bokning borttagen',
|
||
'reservations.toast.fileUploaded': 'Fil uppladdad',
|
||
'reservations.toast.uploadError': 'Det gick inte att ladda upp',
|
||
'reservations.newTitle': 'Ny bokning',
|
||
'reservations.bookingType': 'Bokningstyp',
|
||
'reservations.titleLabel': 'Titel',
|
||
'reservations.titlePlaceholder': 't.ex. Lufthansa LH123, Hotel Adlon, ...',
|
||
'reservations.locationAddress': 'Plats / Adress',
|
||
'reservations.locationPlaceholder': 'Adress, flygplats, hotell...',
|
||
'reservations.confirmationCode': 'Bokningskod',
|
||
'reservations.confirmationPlaceholder': 't.ex. ABC12345',
|
||
'reservations.day': 'Dag',
|
||
'reservations.noDay': 'Ingen dag',
|
||
'reservations.place': 'Plats',
|
||
'reservations.noPlace': 'Ingen Plats',
|
||
'reservations.pendingSave': 'kommer att sparas...',
|
||
'reservations.uploading': 'Laddar upp...',
|
||
'reservations.attachFile': 'Bifoga fil',
|
||
'reservations.linkExisting': 'Länka till befintlig fil',
|
||
'reservations.toast.saveError': 'Det gick inte att spara',
|
||
'reservations.toast.updateError': 'Uppdateringen misslyckades',
|
||
'reservations.toast.deleteError': 'Det gick inte att ta bort',
|
||
'reservations.confirm.remove': 'Ta bort bokningen för "{name}"?',
|
||
'reservations.linkAssignment': 'Länk till dagsuppgift',
|
||
'reservations.pickAssignment': 'Välj en uppgift från din plan...',
|
||
'reservations.noAssignment': 'Ingen länk (fristående)',
|
||
'reservations.price': 'Pris',
|
||
'reservations.budgetCategory': 'Budgetkategori',
|
||
'reservations.budgetCategoryPlaceholder': 't.ex. transport, boende',
|
||
'reservations.budgetCategoryAuto': 'Auto (från bokningstyp)',
|
||
'reservations.budgetHint': 'En budgetpost skapas automatiskt när du sparar.',
|
||
'reservations.departureDate': 'Avgång',
|
||
'reservations.arrivalDate': 'Ankomst',
|
||
'reservations.departureTime': 'Avgångstid',
|
||
'reservations.arrivalTime': 'Ankomsttid',
|
||
'reservations.pickupDate': 'Upphämtning',
|
||
'reservations.returnDate': 'Återlämning',
|
||
'reservations.pickupTime': 'Upphämtningstid',
|
||
'reservations.returnTime': 'Återlämningstid',
|
||
'reservations.endDate': 'Slutdatum',
|
||
'reservations.meta.departureTimezone': 'Avgång Tidzon',
|
||
'reservations.meta.arrivalTimezone': 'Ankomst Tidzon',
|
||
'reservations.span.departure': 'Avgång',
|
||
'reservations.span.arrival': 'Ankomst',
|
||
'reservations.span.inTransit': 'Under transport',
|
||
'reservations.span.pickup': 'Upphämtning',
|
||
'reservations.span.return': 'Återlämning',
|
||
'reservations.span.active': 'Aktiv',
|
||
'reservations.span.start': 'Start',
|
||
'reservations.span.end': 'Slut',
|
||
'reservations.span.ongoing': 'Pågår',
|
||
'reservations.validation.endBeforeStart': 'Slutdatum och -tid måste ligga efter startdatum och -tid',
|
||
'reservations.addBooking': 'Lägg till bokning',
|
||
'reservations.import.title': 'Importera bokningsbekräftelser',
|
||
'reservations.import.cta': 'Importera från fil',
|
||
'reservations.import.dropHere': 'Dra och släpp bokningsbekräftelser här, eller klicka för att välja',
|
||
'reservations.import.dropActive': 'Dra och släpp filerna som ska importeras',
|
||
'reservations.import.acceptedFormats':
|
||
'Godkända filformat: EML, PDF, PKPass, HTML, TXT (högst 10 MB per fil, upp till 5 filer)',
|
||
'reservations.import.parsing': 'Analyserar filer…',
|
||
'reservations.import.previewHeading': '{count} reservation(er) hittades',
|
||
'reservations.import.previewEmpty': 'Inga bokningar kunde extraheras från de uppladdade filerna.',
|
||
'reservations.import.removeItem': 'Ta bort',
|
||
'reservations.import.needsReview': 'Granska',
|
||
'reservations.import.tryAi': 'Försök med AI-analys',
|
||
'reservations.import.aiParsing': 'Analyserar med AI…',
|
||
'reservations.import.confirm': 'Importera {count} reservation(er)',
|
||
'reservations.import.back': 'Tillbaka',
|
||
'reservations.import.success': '{count} reservation(er) importerades',
|
||
'reservations.import.partialFailure': '{created} importerades, {failed} misslyckades',
|
||
'reservations.import.error': 'Analysen misslyckades. Kontrollera att filen är en giltig bokningsbekräftelse.',
|
||
'reservations.import.unavailable': 'Import av bokningar är inte tillgängligt på den här servern.',
|
||
'reservations.import.unsupportedFormat': 'Filformatet stöds inte. Använd EML, PDF, PKPass, HTML eller TXT.',
|
||
'reservations.import.fileTooLarge': 'Filen "{name}" överskrider gränsen på 10 MB.',
|
||
'reservations.airtrail.title': 'Importera från AirTrail',
|
||
'reservations.airtrail.cta': 'AirTrail',
|
||
'reservations.airtrail.synced': 'AirTrail',
|
||
'reservations.airtrail.syncedHint': 'Synkroniserat från AirTrail – ändringarna synkroniseras åt båda hållen.',
|
||
'reservations.airtrail.notSynced': 'Ej synkroniserad',
|
||
'reservations.airtrail.notSyncedHint': 'Denna flygning har tagits bort i AirTrail och synkroniseras inte längre.',
|
||
'reservations.airtrail.layoverHint': 'Importerad från AirTrail. En flerdelad flygning med mellanlandning har ingen enskild AirTrail-flygning att synkronisera mot och förblir därför en engångsimport.',
|
||
'reservations.airtrail.loadError': 'Det gick inte att hämta dina AirTrail-flygningar.',
|
||
'reservations.airtrail.imported': '{count} flygning(ar) importerades',
|
||
'reservations.airtrail.skippedDuplicate': '{count} redan under den här resan, hoppade över',
|
||
'reservations.airtrail.nothingImported': 'Inget att importera.',
|
||
'reservations.airtrail.importError': 'Importen misslyckades. Försök igen.',
|
||
'reservations.airtrail.undo': 'Importera från AirTrail',
|
||
'reservations.airtrail.alreadyImported': 'Importerad',
|
||
'reservations.airtrail.duringTrip': 'Under denna resa',
|
||
'reservations.airtrail.otherFlights': 'Övriga flygningar',
|
||
'reservations.airtrail.empty': 'Inga flygningar hittades i ditt AirTrail-konto.',
|
||
'reservations.airtrail.importCta': 'Importera {count}',
|
||
'reservations.airtrail.joinConnection': 'Importera som en flygning med mellanlandning i {stops}',
|
||
'reservations.costsLabel': 'Kostnader',
|
||
'reservations.createExpense': 'Skapa utgift',
|
||
'reservations.createExpenseHint': 'Sparar bokningen och öppnar sedan kostnadsredigeraren.',
|
||
'reservations.linkedExpense': 'Relaterade kostnader',
|
||
'reservations.removeExpense': 'Ta bort utgiften',
|
||
'reservations.urlLabel': 'Länk',
|
||
'reservations.urlPlaceholder': 'https://...',
|
||
};
|
||
export default reservations;
|