Files
TREK/shared/src/i18n/sv/reservations.ts
T
fbnlrz 3dc9ac6ac6 fix(airtrail): stop labelling a merged multi-leg import "removed in AirTrail"
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.
2026-07-24 12:28:49 +02:00

176 lines
9.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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;