| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478 |
- {
- "page": {
- "notFound": "Registro di servizio non trovato",
- "updated": "Registro di servizio aggiornato",
- "failedUpdate": "Impossibile aggiornare il registro di servizio",
- "deleteTitle": "Elimina Registro di Servizio",
- "deleteDescription": "Questo eliminerà permanentemente questo registro di servizio e tutti i dati associati. Non può essere annullato.",
- "deleted": "Registro di servizio eliminato",
- "failedDelete": "Impossibile eliminare",
- "datesExpiredTitle": "Date della fattura scadute",
- "datesExpiredDescription": "La data della fattura o la data di scadenza è passata. Vuoi aggiornare le date prima di procedere?",
- "datesExpiredUpdate": "Aggiorna le date e procedi",
- "datesExpiredProceed": "Procedi senza modifiche",
- "datesExpiredUseToday": "Aggiorna alla data di oggi",
- "datesExpiredCustomize": "Scegli le date manualmente",
- "datesExpiredBack": "Indietro",
- "datesExpiredSetToday": "Imposta a oggi",
- "customFieldsInvalid": "Compila tutti i campi personalizzati obbligatori",
- "customFieldsSaveFailed": "Impossibile salvare i campi personalizzati",
- "problems": {
- "title": "Il lavoro deve avere un titolo prima di poter essere salvato.",
- "negative": "Quantità, ore, prezzi e costi non possono essere negativi.",
- "partName": "Ogni ricambio con un prezzo deve avere un nome.",
- "laborDescription": "Ogni riga di manodopera con ore o tariffa deve avere una descrizione."
- }
- },
- "header": {
- "tabs": {
- "details": "Dettagli",
- "images": "Immagini",
- "video": "Video",
- "documents": "Documenti",
- "statusReports": "Rapporti di stato"
- },
- "save": "Salva",
- "pdf": "PDF",
- "email": "Email",
- "share": "Condividi",
- "notify": "Notifica",
- "delete": "Elimina",
- "unpaid": "Non Pagato",
- "unsavedChanges": "Modifiche non salvate",
- "saved": "Salvato",
- "joinCall": "Partecipa alla videochiamata"
- },
- "basicInfo": {
- "title": "Informazioni di Base",
- "invoiceDetails": "Dettagli fattura",
- "customerInfo": "Cliente e veicolo",
- "paid": "Pagato",
- "markPaid": "Segna come pagato",
- "markUnpaid": "Segna come non pagato",
- "vehicle": "Veicolo",
- "open": "Apri",
- "customer": "Cliente",
- "titleLabel": "Titolo *",
- "titlePlaceholder": "Cambio Olio",
- "date": "Data",
- "type": "Tipo",
- "mileage": "Chilometraggio",
- "mileageMarine": "Ore Motore",
- "status": "Stato",
- "technician": "Tecnico",
- "invoiceNumber": "Numero Fattura",
- "invoiceDate": "Data fattura",
- "invoiceDueDate": "Data di scadenza",
- "typeOptions": {
- "maintenance": "Manutenzione",
- "repair": "Riparazione",
- "upgrade": "Aggiornamento",
- "inspection": "Ispezione"
- },
- "statusOptions": {
- "pending": "In Sospeso",
- "in_progress": "In Corso",
- "waiting_parts": "In Attesa di Pezzi",
- "completed": "Completato"
- },
- "searchVehicles": "Cerca veicoli...",
- "noVehicleFound": "Nessun veicolo trovato.",
- "techPicker": {
- "placeholder": "Seleziona o digita un nome...",
- "searchPlaceholder": "Cerca o digita nome...",
- "useCustom": "Usa \"{search}\"",
- "typePrompt": "Digita un nome...",
- "boardTechnicians": "Tecnici della Lavagna",
- "teamMembers": "Membri del Team"
- },
- "design": "Design della fattura",
- "designDefault": "Predefinito dell'officina",
- "designFollowing": "Predefinito ({name})",
- "designPinned": "Il foglio è stato congelato all'emissione della fattura il {date}. Una nuova scelta vale solo dopo che un titolare sblocca la fattura e questa viene inviata di nuovo.",
- "designSaved": "Design della fattura aggiornato",
- "designFollowingRule": "Predefinito ({name}, {rule})",
- "designRule": {
- "parts_sale": "Vendita solo ricambi"
- },
- "designSaveFailed": "Impossibile cambiare il design della fattura"
- },
- "parts": {
- "title": "Pezzi",
- "fromInventory": "Da Inventario",
- "addPart": "Aggiungi Pezzo",
- "partNumber": "Numero Pezzo",
- "name": "Nome",
- "qty": "Qty",
- "unitCost": "Costo",
- "unitCostHint": "Costo fornitore (interno — non mostrato al cliente)",
- "markupPercent": "Ricarico %",
- "markupPercentHint": "Ricarico applicato al costo (interno — non mostrato al cliente)",
- "applyMarkup": "Applica {percent}%",
- "applyMarkupHint": "Riapplicare il ricarico del {percent}% al costo su ogni riga",
- "unitPrice": "Prezzo Unitario",
- "total": "Totale",
- "namePlaceholder": "Nome *",
- "subtotal": "Subtotale Pezzi: {amount}",
- "inventoryTitle": "Seleziona Pezzo da Inventario",
- "searchInventory": "Cerca inventario...",
- "inStock": "{quantity} in magazzino",
- "noInventory": "Nessun pezzo inventario trovato.",
- "scanBarcode": "Scansiona",
- "scanTitle": "Scansiona codice a barre",
- "partFound": "\"{name}\" aggiunto dall'inventario",
- "partNotFound": "Nessun pezzo trovato per il codice a barre \"{barcode}\"",
- "deleteRow": "Delete row",
- "outOfStock": "Esaurito",
- "onBackorder": "In arretrato ({count})",
- "nameMissingHint": "Le righe senza nome del ricambio non vengono salvate."
- },
- "labor": {
- "title": "Manodopera",
- "addLabor": "Aggiungi Manodopera",
- "fromPresets": "Da modelli",
- "description": "Descrizione",
- "hours": "Ore",
- "rate": "Tariffa ({currency}/h)",
- "total": "Totale",
- "descriptionPlaceholder": "Descrizione *",
- "subtotal": "Subtotale Manodopera: {amount}",
- "addService": "Add Service",
- "addFinding": "Osservazione",
- "newObservation": "Nuova osservazione",
- "addExisting": "Mostra esistenti ({count})",
- "qty": "Qty",
- "qtyOrHours": "Unit / Hours",
- "hourlyTag": "HR",
- "serviceTag": "SVC",
- "switchToHourly": "Switch to hourly pricing",
- "switchToService": "Switch to service pricing",
- "switchToHourlyHint": "A ore: calcolato sulle ore lavorate (ore × tariffa/h). Clicca per cambiare.",
- "switchToServiceHint": "Servizio: addebitato come importo fisso per unità. Clicca per cambiare.",
- "deleteRow": "Delete row",
- "descriptionMissingHint": "Le righe senza descrizione non vengono salvate."
- },
- "totals": {
- "title": "Totali",
- "parts": "Pezzi",
- "labor": "Manodopera",
- "subtotal": "Subtotale",
- "subtotalInclTax": "Subtotale (incl. imposta)",
- "discount": "Sconto",
- "discountNone": "Nessuno",
- "discountPercentage": "Percentuale",
- "discountFixed": "Fisso",
- "tax": "Imposta",
- "taxIncluded": "Imposta (incl.)",
- "total": "Totale",
- "inclusiveModeHint": "I prezzi delle righe sono inseriti con imposta inclusa. I totali mostrano la suddivisione netto + imposta.",
- "partsCost": "Costo ricambi (interno)"
- },
- "notes": {
- "title": "Note",
- "public": "Pubblico",
- "internal": "Interno",
- "publicPlaceholder": "Note visibili sulla fattura...",
- "internalPlaceholder": "Note interne (non mostrate sulla fattura)...",
- "publicHelper": "Mostrato sulla fattura e nei documenti condivisi",
- "internalHelper": "Visibile solo al tuo team",
- "aiWrite": "AI Scrivi",
- "aiGenerated": "Note AI generate con successo",
- "aiGenerateFailed": "Generazione note AI non riuscita",
- "aiDialogTitle": "AI Scrivi",
- "aiDialogDescription": "L'IA analizzerà le parti e la manodopera in questo record di servizio e genererà una descrizione professionale. Il risultato verrà scritto nel tipo di nota selezionato.",
- "aiGenerate": "Genera",
- "aiOverwriteDescription": "Questa nota ha già del contenuto. Puoi sostituirlo o aggiungere il testo generato dall'IA sotto.",
- "aiOverwriteReplace": "Sostituisci",
- "aiOverwriteAppend": "Aggiungi",
- "aiOverwriteCancel": "Annulla",
- "aiDontShowAgain": "Non mostrare più"
- },
- "invoice": {
- "title": "Riepilogo Fattura",
- "parts": "Pezzi",
- "labor": "Manodopera",
- "subtotal": "Subtotale",
- "subtotalInclTax": "Subtotale (incl. imposta)",
- "discount": "Sconto",
- "tax": "Imposta ({rate}%)",
- "taxIncluded": "Imposta (incl., {rate}%)",
- "total": "Totale",
- "paid": "Pagato",
- "balanceDue": "Importo Dovuto",
- "paidBadge": "PAGATO",
- "entityLabel": "Fattura",
- "emailSubject": "Conferma Pagamento",
- "statusEmailSubject": "Aggiornamento dello stato del servizio",
- "markCompletedTitle": "Contrassegnare questa fattura come completata?",
- "markCompletedDescription": "È stata inviata al cliente ma risulta ancora non conclusa, quindi resterà visibile sulla lavagna.",
- "markCompletedConfirm": "Segna come completata",
- "lockedFieldsetLabel": "Fattura bloccata, modifica disattivata"
- },
- "payments": {
- "title": "Pagamenti",
- "markUnpaid": "Contrassegna come Non Pagato",
- "markPaid": "Contrassegna come Pagato",
- "recordPayment": "Registra Pagamento",
- "totalPaid": "Totale Pagato",
- "amount": "Importo",
- "date": "Data",
- "method": "Metodo",
- "note": "Nota",
- "notePlaceholder": "Nota facoltativa",
- "savePayment": "Salva Pagamento",
- "methodOptions": {
- "cash": "Contanti",
- "card": "Carta",
- "transfer": "Trasferimento",
- "other": "Altro"
- },
- "recorded": "Pagamento registrato",
- "markedPaid": "Contrassegnato come pagato",
- "markedUnpaid": "Contrassegnato come non pagato",
- "deleted": "Pagamento eliminato",
- "failedRecord": "Impossibile registrare il pagamento",
- "failedStatus": "Impossibile aggiornare lo stato del pagamento",
- "failedDelete": "Impossibile eliminare il pagamento",
- "deleteTitle": "Elimina Pagamento",
- "deleteDescription": "Questo rimuoverà questo record di pagamento.",
- "failedPdf": "Impossibile generare PDF fattura"
- },
- "attachments": {
- "deleteTitle": "Elimina Allegato",
- "deleteDescription": "Questo eliminerà permanentemente questo allegato. Non può essere annullato.",
- "deleted": "Allegato eliminato",
- "failedDelete": "Impossibile eliminare",
- "images": "Immagini ({count})",
- "videos": "Video ({count})",
- "diagnostics": "Rapporti Diagnostici ({count})",
- "documents": "Documenti ({count})",
- "download": "Download",
- "close": "Close"
- },
- "share": {
- "title": "Condividi Fattura",
- "description": "Genera un collegamento pubblico che consente a chiunque di visualizzare e scaricare questa fattura senza accedere.",
- "notifyTitle": "Notifica {name}",
- "email": "Email",
- "noEmail": "(nessun email in archivio)",
- "sms": "SMS",
- "noPhone": "(nessun telefono in archivio)",
- "sendNotification": "Invia Notifica",
- "revokeLink": "Revoca Collegamento",
- "generateLink": "Genera Collegamento Pubblico",
- "emailSent": "Email inviata",
- "failedEmail": "Impossibile inviare email",
- "smsSent": "SMS inviato",
- "failedSms": "Impossibile inviare SMS",
- "copyLink": "Copy link"
- },
- "sidebar": {
- "vehicle": "Veicolo",
- "customer": "Cliente",
- "vin": "VIN: {vin}",
- "mileageAtService": "Chilometraggio al servizio: {mileage} {unit}",
- "engineHoursAtService": "Ore motore al servizio: {mileage} {unit}",
- "sharedLink": {
- "title": "Link condiviso",
- "sharedOn": "Condiviso il {date}",
- "notViewed": "Non ancora visualizzato",
- "viewedTimes": "Visualizzato {count, plural, one {# volta} other {# volte}}",
- "lastViewed": "Ultimo {date}",
- "copyLink": "Copia link",
- "linkCopied": "Link copiato"
- }
- },
- "images": {
- "title": "Immagini del Servizio",
- "dropzone": "Trascina le immagini qui o clicca per sfogliare",
- "uploading": "Caricamento...",
- "formats": "JPG, PNG, WebP — max 10 MB ciascuna",
- "uploadingImages": "Caricamento immagini...",
- "limitReached": "Limite immagini raggiunto ({count}/{max})",
- "upgradePrompt": "Aggiorna il tuo piano per caricare più immagini.",
- "onlyAllowed": "Sono consentite solo immagini JPG, PNG e WebP. {names} saltati.",
- "onlyUploading": "Verranno caricate solo {count} immagine/i per rispettare il limite.",
- "uploadingCount": "Caricamento di {count} immagine/i...",
- "uploadedCount": "{count} immagine/i caricata/e",
- "uploadFailed": "Caricamento fallito",
- "deleted": "Immagine eliminata",
- "failedDelete": "Impossibile eliminare l'immagine",
- "failedUpdate": "Impossibile aggiornare",
- "description": "Descrizione...",
- "invoice": "Fattura"
- },
- "videos": {
- "title": "Video del Servizio",
- "dropzone": "Trascina i video qui o clicca per sfogliare",
- "uploading": "Caricamento...",
- "formats": "MP4, WebM, MOV — max 10 MB ciascuno",
- "uploadingVideos": "Caricamento video...",
- "uploadingCount": "Caricamento di {count} video...",
- "uploadedCount": "{count} video caricato/i",
- "uploadFailed": "Caricamento fallito",
- "deleted": "Video eliminato",
- "failedDelete": "Impossibile eliminare il video",
- "failedUpdate": "Impossibile aggiornare",
- "invoice": "Fattura"
- },
- "documents": {
- "diagnosticTitle": "Rapporti Diagnostici",
- "documentsTitle": "Documenti",
- "dropzone": "Trascina i file qui o clicca per sfogliare",
- "uploading": "Caricamento...",
- "diagnosticFormats": "PDF, CSV, TXT — max 10 MB ciascuno",
- "documentFormats": "PDF, DOCX, XLSX, CSV, TXT — max 10 MB ciascuno",
- "uploadingReports": "Caricamento rapporti...",
- "uploadingDocuments": "Caricamento documenti...",
- "diagnosticLimitReached": "Limite rapporti diagnostici raggiunto ({count}/{max})",
- "documentLimitReached": "Limite documenti raggiunto ({count}/{max})",
- "upgradePrompt": "Aggiorna il tuo piano per caricare di più.",
- "diagnosticLabel": "Rapporto diagnostico",
- "documentLabel": "Documento",
- "limitReachedToast": "Limite {label} raggiunto ({count}/{max}). Aggiorna il tuo piano per di più.",
- "onlyUploading": "Verranno caricati solo {count} file per rispettare il limite.",
- "uploadingCount": "Caricamento di {count} file...",
- "uploadedCount": "{count} file caricato/i",
- "uploadFailed": "Caricamento fallito",
- "deleted": "File eliminato",
- "failedDelete": "Impossibile eliminare il file",
- "failedUpdate": "Impossibile aggiornare",
- "invoice": "Fattura"
- },
- "schedule": {
- "title": "Pianificazione",
- "date": "Data",
- "startTime": "Ora di inizio",
- "endTime": "Ora di fine",
- "technician": "Tecnico",
- "selectTechnician": "Seleziona tecnico...",
- "searchOrCreate": "Cerca o crea tecnico...",
- "createTechnician": "Crea \"{name}\"",
- "creating": "Creazione...",
- "failedCreate": "Impossibile creare il tecnico",
- "addNew": "+ Aggiungi nuovo",
- "add": "Aggiungi",
- "newTechPlaceholder": "Nome del tecnico...",
- "assign": "Assegna alla bacheca",
- "assigned": "Assegnato alla bacheca di lavoro",
- "failedAssign": "Assegnazione fallita",
- "endBeforeStart": "L'ora di fine deve essere dopo l'ora di inizio",
- "failedUpdate": "Impossibile aggiornare la pianificazione",
- "splitCreated": "Il lavoro si estende su più giorni — continuazione creata per il giorno successivo",
- "platformUsers": "Platform Users",
- "customTechnicians": "Custom",
- "readMore": "Scopri di più",
- "setDefaults": "Valori predefiniti",
- "workBay": "Postazione",
- "selectWorkBay": "Seleziona postazione…",
- "noWorkBay": "Nessuna postazione",
- "noTechnician": "Senza tecnico",
- "technicians": "Tecnici",
- "otherTeamMembers": "Altri membri del team",
- "makeTechnician": "Lo rende un tecnico",
- "addSomeoneNew": "Aggiungi qualcuno",
- "notOnBoard": "Non ancora sulla lavagna",
- "putOnBoard": "Metti sulla lavagna",
- "slotTaken": "{count, plural, one {Questa fascia è già occupata} other {Questa fascia ha # conflitti}}",
- "anotherJob": "un altro lavoro",
- "clashTechnician": "il tecnico è occupato",
- "clashBay": "la postazione è occupata",
- "clashBoth": "entrambi sono occupati",
- "bookedAnyway": "Salvato comunque. Cambia l'orario o scegli la prossima fascia libera.",
- "pickNextAvailable": "Scegli la prossima fascia libera",
- "findingSlot": "Ricerca di una fascia…",
- "slotPicked": "Spostato sulla prossima fascia libera",
- "noSlotFound": "Nessuna fascia libera trovata nelle prossime settimane"
- },
- "notifications": {
- "title": "Notifiche al cliente",
- "viaSms": "via SMS",
- "viaEmail": "via e-mail",
- "justNow": "Proprio ora",
- "minutesAgo": "{count}m fa",
- "hoursAgo": "{count}h fa",
- "daysAgo": "{count}g fa"
- },
- "table": {
- "warranty": "Garanzia"
- },
- "warranty": {
- "title": "Garanzia",
- "months": "Durata (mesi)",
- "mileage": "Limite chilometrico",
- "notes": "Termini di garanzia",
- "notesPlaceholder": "es. Garanzia di 12 mesi su tutti i ricambi e la manodopera...",
- "expiresAt": "Scadenza",
- "presets": {
- "3months": "3 m",
- "6months": "6 m",
- "12months": "12 m",
- "24months": "24 m"
- },
- "status": {
- "active": "Attiva",
- "expiring": "In scadenza",
- "expired": "Scaduta",
- "none": "Nessuna"
- },
- "defaults": {
- "title": "Impostazioni garanzia predefinite",
- "description": "Imposta i termini di garanzia predefiniti per i nuovi interventi"
- }
- },
- "concerns": {
- "title": "Segnalazioni del cliente",
- "addFirst": "Aggiungi una segnalazione del cliente",
- "add": "Aggiungine un altro",
- "placeholder": "C'è un rumore dietro quando freno",
- "remove": "Rimuovi questo punto",
- "notAnswered": "Non è ancora stato trovato nulla",
- "answered": "{count} riscontro/i su questo"
- },
- "videoCall": {
- "title": "Videochiamata",
- "none": "Nessuna videochiamata su questo ordine di lavoro.",
- "needsSchedule": "Imposta prima un'ora di inizio. La riunione segue la programmazione.",
- "add": "Aggiungi riunione {provider}",
- "addedHere": "aggiunta da questo ordine di lavoro",
- "fromCalendar": "dall'evento del calendario",
- "join": "Partecipa",
- "copy": "Copia link",
- "copied": "Link copiato",
- "remove": "Rimuovi",
- "removeTitle": "Rimuovere la videochiamata?",
- "removeDescription": "La riunione viene eliminata presso il fornitore. Chi ha già il link non potrà più partecipare.",
- "created": "Riunione creata. Il link è sull'ordine di lavoro.",
- "removed": "Riunione rimossa",
- "failed": "Qualcosa è andato storto",
- "shareHint": "Il cliente riceve questo link solo quando lo invii.",
- "shareHintNoChannel": "Il cliente riceve questo link solo quando lo invii. Nessun canale di messaggistica è configurato, quindi copialo tu in un messaggio.",
- "send": {
- "button": "Invia al cliente",
- "title": "Invia il link della videochiamata",
- "description": "Invia il link per partecipare a {name}.",
- "messageLabel": "Nota (facoltativa)",
- "messagePlaceholder": "Ciò che il cliente deve sapere prima della chiamata...",
- "linkAlwaysIncluded": "Il link per partecipare viene sempre aggiunto sotto la tua nota.",
- "sms": "SMS",
- "email": "Email",
- "telegram": "Telegram",
- "noPhone": "(nessun telefono)",
- "noEmail": "(nessuna email)",
- "noTelegram": "(nessuna chat collegata)",
- "notAvailable": "(non configurato)",
- "cancel": "Annulla",
- "send": "Invia",
- "sent": "Link della videochiamata inviato",
- "partlySent": "Inviato via {sent}; non via {failed}",
- "failed": "Impossibile inviare il link"
- },
- "notify": {
- "invitation": "Ciao {name}, la tua videochiamata per la {vehicle} è il {when}. Partecipa qui: {url}",
- "invitationNoTime": "Ciao {name}, ecco il link della videochiamata per la {vehicle}: {url}",
- "joinLine": "Partecipa alla videochiamata qui: {url}",
- "emailSubject": "Videochiamata per la tua {vehicle}"
- }
- }
- }
|