// Albanian (sq) — the DEFAULT and fallback language. Customer/operator-facing copy. // Keys are dot-namespaced by area (common, nav, booth, …). When adding a string, // add it here first (the fallback), then mirror the key in en.ts. // See wiki/concepts/i18n.md. export const sq = { common: { loading: "Duke u ngarkuar…", logout: "Dil", cancel: "Anulo", close: "Mbyll", save: "Ruaj", none: "—", }, auth: { title: "Sistemi i Parkimit", username: "Përdoruesi", password: "Fjalëkalimi", signIn: "Hyr", signingIn: "Duke hyrë…", }, nav: { booth: "Kabina", shift: "Turni", setup: "Konfigurimi", tariff: "Tarifa", subscriptions: "Abonimet", site: "Vendi", }, status: { live: "LIVE", connecting: "DUKE U LIDHUR", offline: "JASHTË LINJE", }, devices: { footerTitle: "Pajisjet", none: "Asnjë pajisje e konfiguruar.", catAccess: "Barriera", catReader: "Lexuesi", catCamera: "Kamera", catPrinter: "Printer", // Role/direction suffixes for the chip label (e.g. "Lexuesi hyrje"). role: { entry: "hyrje", exit: "dalje", both: "hyrje/dalje", mixed: "hyrje/dalje", lane: "në korsi", booth: "në kabinë", }, state: { ready: "gati", degraded: "i dëmtuar", offline: "jashtë linje", }, allOk: "të gjitha gati", issuesCount: "{{count}} me probleme", issuesTitle: "Problemet e pajisjeve", clickForIssues: "Kliko për detajet", checkedAt: "kontrolluar {{time}}", }, booth: { processTicket: "Proceso biletën", scanPlaceholder: "Skano ose shkruaj numrin e biletës…", open: "Hap", occupancy: "Prania", occUnavailable: "zënia e padisponueshme", inside: "brenda", of: "nga", uncapped: "pa kufi", free: "Vende të lira", lotFull: "● parkimi plot", liveFeed: "Aktiviteti live", events: "Evente", noEventsYet: "Asnjë event ende — hyrjet dhe daljet do të shfaqen këtu.", activeSessions: "Sesionet aktive", insideCount: "brenda", noActiveSessions: "Asnjë sesion aktiv.", inAt: "në", openPayExit: "Hap pagesën / daljen", openBarrier: "Hap barrierën", openBarrierTitle: "Hap barrierën manualisht", barrierOpened: "barriera u hap", openManually: "hape me dorë", // session row badges badgeExiting: "duke dalë", badgePaid: "paguar", badgeUnpaid: "papaguar", badgeSubscription: "abonim", // event types (live feed labels) evtEntry: "HYRJE", evtExit: "DALJE", evtPay: "PAGESË", evtVoid: "ANULIM", evtOpenCmd: "HAP→", evtOpenObserved: "HAP✓", evtShiftOpen: "TURN+", evtShiftZ: "TURN Z", evtCashMovement: "ARKË", evtAnomaly: "ANOMALI", }, tariff: { title: "Tarifa", noRateCard: "Asnjë kartë tarifore e publikuar — arka nuk mund të faturojë derisa të publikoni një.", activeSince: "Aktive që nga {{date}} · {{count}} version(e) në histori. Publikimi krijon një version të ri; sesionet e kaluara ruajnë çmimin origjinal.", currency: "Monedha", freeEntryGrace: "Periudha pa pagesë në hyrje (min)", billingIncrement: "Intervali i faturimit (min)", dailyCap: "Kufiri ditor (bosh = pa kufi)", dailyCapPh: "p.sh. 12.00", lostTicketFee: "Tarifa për biletë të humbur", exitGrace: "Periudha e kthimit në dalje (min)", rateBlocks: "Blloqet tarifore", rateBlocksHint: "Çdo brez zgjat një numër orësh dhe faturohet me çmimin e tij; brezat konsumohen me radhë (orët e para, pastaj orët në vijim). Brezi i fundit është \"më pas\" (i hapur) — çmimi i tij zbatohet pas mbarimit të shkallës. Çmimi është për interval faturimi.", bandDuration: "Kohëzgjatja e brezit", hoursUnit: "orë", egHours: "p.sh. 2", pricePerIncrement: "Çmimi / interval", thereafter: "më pas (i hapur)", remove: "Hiq", addBlock: "+ Shto bllok", publishNewVersion: "Publiko version të ri", publishing: "Duke publikuar…", publishedOk: "U publikua versioni i ri i tarifës — tani është karta tarifore aktive.", defaultCard: "Karta e parazgjedhur (gjithmonë aktive)", defaultCardHint: "Çmimi bazë i zbatuar kur asnjë nivel kohor/sezonal nuk vlen. Kjo e vetme është mjaftueshëm për shumicën e parkimeve.", modeLadder: "Shkallë orësh", modeFlat: "Çmim fiks", tiersAdvanced: "Të avancuara: nivele kohore & sezonale", tiersHint: "Opsionale. Shto karta që vlejnë vetëm në orë/ditë/data ose kategori të caktuara (p.sh. orë e lirë, tarifë nate, fundjavë, autobus). Pa nivele, publikohet karta e thjeshtë.", tierName: "Emri", tierPriority: "Përparësia", tierCategory: "Kategoria", tierCategoryPh: "p.sh. autobus", tierDays: "Ditët", tierHours: "Orët", tierDates: "Datat", tierOvernight: "(kalon mesnatën)", addTier: "+ Shto nivel", dow1: "Hën", dow2: "Mar", dow3: "Mër", dow4: "Enj", dow5: "Pre", dow6: "Sht", dow0: "Die", }, subs: { title: "Abonimet", unnamed: "(pa emër)", unbound: "pa kufizim", car_one: "{{count}} makinë", car_other: "{{count}} makina", cred: "kredencial", plates: "{{count}} targë(a)", noPrice: "pa çmim", perMonth: "muaj", monthlyPrice: "Çmimi mujor", pricePlaceholder: "p.sh. 10000", edit: "Ndrysho", revoke: "Anulo", delete: "Fshij", noneYet: "Asnjë abonim ende.", add: "+ Shto abonim", new: "Abonim i ri", editTitle: "Ndrysho abonimin", holderName: "Emri i mbajtësit", contact: "Kontakti", carLimit: "Kufiri i makinave", limitCarsInAtOnce: "kufizo makinat brenda njëkohësisht", validFrom: "Vlen nga", validTo: "Vlen deri", months: "Muaj", monthsHint: "muaj të paguar", coverageHint: "deri më {{end}}", totalDue: "gjithsej {{total}}", validToOverride: "Vlen deri (manual)", isoDateOptional: "Datë ISO (opsionale)", boundPlates: "Targat e lidhura", commaSeparatedOptional: "të ndara me presje (opsionale)", credentials: "Kredencialet", credentialsCardQr: "Kredencialet (kartë / QR)", rfCardTag: "Kartë/etiketë RF", rfCardTagSoon: "Kartë/etiketë RF (së shpejti)", rfPlaceholder: "numri i kartës (ose lexo kartën)", readCard: "Lexo kartën", captureChooseReader: "Zgjidh lexuesin, pastaj afro kartën:", captureNoReaders: "Asnjë lexues i konfiguruar.", captureWaiting: "Afro kartën te lexuesi…", captureTimeout: "Skadoi pa lexuar kartë. Provo sërish.", captured: "Karta u lexua: {{value}}", qr: "QR", qrAutoGen: "kodi QR gjenerohet automatikisht në ruajtje", credentialValue: "vlera e kredencialit", addCredential: "+ kredencial", needCredentialOrPlate: "Një abonim kërkon të paktën një kredencial OSE një targë të lidhur.", save: "Ruaj", cancel: "Anulo", saved: "Abonimi u ruajt.", savedPrinted: "Abonimi u ruajt — kodi QR u printua.", savedPrintFailed: "Abonimi u ruajt, por printimi dështoi ({{error}}). Përdor \"Printo kodin\".", printCode: "Printo kodin", printedOn: "Kodi u printua te {{printer}}.", confirmRevoke: "Të anulohet abonimi për {{name}}? Do të refuzohet te barriera.", confirmDelete: "Të fshihet abonimi për {{name}}? (t e kaluara ruhen.)", statusActive: "aktiv", statusSuspended: "pezulluar", statusRevoked: "anuluar", }, site: { occupancy: "Prania:", noCapacitySet: "(pa kapacitet të caktuar)", free: "lirë", full: "PLOT", capacityLabel: "Kapaciteti (bosh = pa kufi):", capacityPlaceholder: "p.sh. 120", printExitDefault: "Printo biletën e daljes si parazgjedhje", printExitHint: "(kabina larg daljes → klienti del vetë me biletë)", parkDetails: "Të dhënat e parkimit (opsionale — shfaqen në bileta/fatura)", save: "Ruaj", saved: "U ruajt.", fieldParkName: "Emri i parkimit", fieldParkNamePh: "p.sh. Acme Parking", fieldOperator: "Operatori (emri ligjor)", fieldOperatorPh: "kompania operuese", fieldNius: "NIUS", fieldNiusPh: "p.sh. L01234567A", fieldAddress: "Adresa", fieldPhone: "Telefoni", fieldEmail: "Email", }, shift: { label: "Turni:", open: "hapur", notStarted: "i panisur", since: "që nga", startShift: "Fillo turnin", starting: "Duke filluar…", endShift: "Mbyll turnin", ending: "Duke mbyllur…", drawer: "Arka:", openingFloatInherited: "(bilanci fillestar i trashëguar nga turni i mëparshëm)", drawerCashAdmin: "Para në arkë (admin) — shto ose hiq bilancin", amount: "shuma", reasonPlaceholder: "arsyeja (p.sh. bilanci fillestar)", load: "Shto +", remove: "Hiq −", enterPositive: "Shkruaj një shumë pozitive.", drawerNow: "Arka tani {{amount}}.", zReport: "RAPORT Z", payments: "Pagesa:", cash: "Para:", card: "Kartë:", drawerSection: "— Arka —", openingFloat: "Bilanci fillestar:", cashTaken: "Para të marra:", cashAdded: "Para të shtuara:", cashRemoved: "Para të hequra:", expectedDrawer: "Arka e pritshme:", printedToReceipt: "Printuar te printeri i kabinës.", recordedNoPrinter: "Regjistruar (pa printer për të printuar).", // Header shift control + the booth shift gate. headerNoShift: "Asnjë turn", headerOpen: "Hap turnin", headerClose: "Mbyll turnin", headerHeldBy: "Turn i hapur nga {{operator}}", headerHeldByShort: "Turni: {{operator}}", gateTitle: "Hap një turn për të proceduar biletat", gateBody: "Asnjë turn nuk është i hapur. Hap turnin tënd që pagesat dhe daljet të regjistrohen te ky turn.", gateOtherTitle: "Turni i hapur i përket një operatori tjetër", gateOtherBody: "{{operator}} ka një turn të hapur. Vetëm një turn mund të jetë i hapur njëkohësisht — ai duhet të mbyllë turnin para se ti të hapësh tëndin.", openNow: "Hap turnin tani", opening: "Duke hapur…", }, pay: { ticket: "Bileta", entry: "Hyrja", now: "Tani", duration: "Kohëzgjatja", statusLabel: "Statusi", paid: "PAGUAR", unpaid: "PAPAGUAR", total: "Totali", noTariff: "pa tarifë", tender: "Mënyra", cash: "Para", card: "Kartë", printExitVoucher: "Printo biletë dalje", selfExitHint: "(klienti del vetë te dalja)", payAndOpen: "Paguaj + hap barrierën", payAndVoucher: "Paguaj + printo biletën", openBarrier: "Hap barrierën", printVoucher: "Printo biletën", takingPayment: "Duke marrë pagesën…", printingVoucher: "Duke printuar biletën…", opening: "Duke hapur…", noSessionFound: "Nuk u gjet asnjë sesion për këtë biletë.", alreadyClosed: "Ky sesion është mbyllur tashmë (doli {{time}}).", lookingUp: "Duke kërkuar…", paidBarrierOpened: "Paguar — barriera u hap. Automjeti mund të dalë.", paidExitRecorded: "Paguar dhe dalja u regjistrua, por barriera nuk u hap: {{reason}}.", subscription: "ABONIM", plan: "Plani", prepaid: "I PARAPAGUAR", subAssistHint: "Abonim i parapaguar. Hap barrierën për të ndihmuar daljen (lexues me defekt / kartë e munguar). S'ka pagesë.", subBarrierOpened: "Barriera u hap për abonentin (ndërhyrje e regjistruar).", voucherPrinted: "Bileta e daljes u printua në {{printer}}. Klienti del vetë te dalja.", // payment receipt (transparency slip) receiptPrintFailed: "(fatura nuk u printua — provoni \"Riprinto faturën\".)", receiptReprinted: "Fatura u riprintua në {{printer}}.", reprintReceipt: "Riprinto faturën", reprinting: "duke printuar…", // snapshots noSnapshots: "asnjë foto", loadingSnapshots: "duke ngarkuar fotot…", }, }; // The catalog SHAPE (keys + nesting), with string-typed values — so en.ts must // supply every key but may differ in value. (Not `typeof sq` with `as const`, which // would pin en.ts to the Albanian literals.) type Stringify = { [K in keyof T]: T[K] extends object ? Stringify : string }; export type Catalog = Stringify;