12de5a230a
- suggestion_service: fix scorer (stringList unmarshal accepts scalar|array; anchor scoring on base universal score so bool matches no longer tie); add localizeReasons for human-readable, Accept-Language-localized match reasons - lookup_i18n: localize lookup display names, home-profile options, document types/categories via internal/i18n - static_data_handler: per-locale seeded-data response (display_name, home profile options, document types/categories) with per-locale cache + ETag - settings_handler: invalidate per-locale seeded-data cache on lookup change instead of pre-warming a single non-localized blob - cache_service: per-locale seeded-data keys + ETag - DTOs: add DisplayName fields (task/residence/contractor) - translations: add suggestion.reason.* and lookup.* keys across all 10 langs - cmd/api: extract startup helpers + tests Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
248 lines
15 KiB
JSON
248 lines
15 KiB
JSON
{
|
|
"error.invalid_request_body": "Corpo della richiesta non valido",
|
|
"error.invalid_credentials": "Credenziali non valide",
|
|
"error.account_inactive": "L'account non è attivo",
|
|
"error.username_taken": "Nome utente già in uso",
|
|
"error.email_taken": "Email già registrata",
|
|
"error.email_already_taken": "Email già in uso",
|
|
"error.registration_failed": "Registrazione fallita",
|
|
"error.not_authenticated": "Non autenticato",
|
|
"error.invalid_token": "Token non valido",
|
|
"error.failed_to_get_user": "Impossibile recuperare l'utente",
|
|
"error.failed_to_update_profile": "Impossibile aggiornare il profilo",
|
|
"error.invalid_verification_code": "Codice di verifica non valido",
|
|
"error.verification_code_expired": "Il codice di verifica è scaduto",
|
|
"error.email_already_verified": "Email già verificata",
|
|
"error.verification_failed": "Verifica fallita",
|
|
"error.failed_to_resend_verification": "Impossibile reinviare la verifica",
|
|
"error.rate_limit_exceeded": "Troppe richieste di reimpostazione password. Riprova più tardi.",
|
|
"error.too_many_attempts": "Troppi tentativi. Richiedi un nuovo codice.",
|
|
"error.invalid_reset_token": "Token di reimpostazione non valido o scaduto",
|
|
"error.password_reset_failed": "Reimpostazione password fallita",
|
|
"error.apple_signin_not_configured": "L'accesso con Apple non è configurato",
|
|
"error.apple_signin_failed": "Accesso con Apple fallito",
|
|
"error.invalid_apple_token": "Token di identità Apple non valido",
|
|
"error.google_signin_not_configured": "L'accesso con Google non è configurato",
|
|
"error.google_signin_failed": "Accesso con Google fallito",
|
|
"error.invalid_google_token": "Token di identità Google non valido",
|
|
"error.invalid_task_id": "ID attività non valido",
|
|
"error.invalid_residence_id": "ID immobile non valido",
|
|
"error.invalid_contractor_id": "ID fornitore non valido",
|
|
"error.invalid_document_id": "ID documento non valido",
|
|
"error.invalid_completion_id": "ID completamento non valido",
|
|
"error.invalid_user_id": "ID utente non valido",
|
|
"error.invalid_notification_id": "ID notifica non valido",
|
|
"error.invalid_device_id": "ID dispositivo non valido",
|
|
"error.task_not_found": "Attività non trovata",
|
|
"error.residence_not_found": "Immobile non trovato",
|
|
"error.contractor_not_found": "Fornitore non trovato",
|
|
"error.document_not_found": "Documento non trovato",
|
|
"error.completion_not_found": "Completamento attività non trovato",
|
|
"error.user_not_found": "Utente non trovato",
|
|
"error.share_code_invalid": "Codice di condivisione non valido",
|
|
"error.share_code_expired": "Il codice di condivisione è scaduto",
|
|
"error.task_access_denied": "Non hai accesso a questa attività",
|
|
"error.residence_access_denied": "Non hai accesso a questo immobile",
|
|
"error.contractor_access_denied": "Non hai accesso a questo fornitore",
|
|
"error.document_access_denied": "Non hai accesso a questo documento",
|
|
"error.not_residence_owner": "Solo il proprietario dell'immobile può eseguire questa azione",
|
|
"error.cannot_remove_owner": "Impossibile rimuovere il proprietario dell'immobile",
|
|
"error.user_already_member": "L'utente è già membro di questo immobile",
|
|
"error.properties_limit_reached": "Hai raggiunto il numero massimo di immobili per il tuo abbonamento",
|
|
"error.task_already_cancelled": "L'attività è già stata annullata",
|
|
"error.task_already_archived": "L'attività è già stata archiviata",
|
|
"error.failed_to_parse_form": "Impossibile analizzare il modulo multipart",
|
|
"error.task_id_required": "task_id è obbligatorio",
|
|
"error.invalid_task_id_value": "task_id non valido",
|
|
"error.failed_to_upload_image": "Impossibile caricare l'immagine",
|
|
"error.residence_id_required": "residence_id è obbligatorio",
|
|
"error.invalid_residence_id_value": "residence_id non valido",
|
|
"error.title_required": "title è obbligatorio",
|
|
"error.failed_to_upload_file": "Impossibile caricare il file",
|
|
"message.logged_out": "Disconnessione avvenuta con successo",
|
|
"message.email_verified": "Email verificata con successo",
|
|
"message.verification_email_sent": "Email di verifica inviata",
|
|
"message.password_reset_email_sent": "Se esiste un account con quell'email, è stato inviato un codice di reimpostazione password.",
|
|
"message.reset_code_verified": "Codice verificato con successo",
|
|
"message.password_reset_success": "Password reimpostata con successo. Accedi con la tua nuova password.",
|
|
"message.task_deleted": "Attività eliminata con successo",
|
|
"message.task_in_progress": "Attività contrassegnata come in corso",
|
|
"message.task_cancelled": "Attività annullata",
|
|
"message.task_uncancelled": "Annullamento attività revocato",
|
|
"message.task_archived": "Attività archiviata",
|
|
"message.task_unarchived": "Attività ripristinata dall'archivio",
|
|
"message.completion_deleted": "Completamento eliminato con successo",
|
|
"message.residence_deleted": "Immobile eliminato con successo",
|
|
"message.user_removed": "Utente rimosso dall'immobile",
|
|
"message.tasks_report_generated": "Report attività generato con successo",
|
|
"message.tasks_report_sent": "Report attività generato e inviato a {{.Email}}",
|
|
"message.tasks_report_email_failed": "Report attività generato ma l'email non è stata inviata",
|
|
"message.contractor_deleted": "Fornitore eliminato con successo",
|
|
"message.document_deleted": "Documento eliminato con successo",
|
|
"message.document_activated": "Documento attivato",
|
|
"message.document_deactivated": "Documento disattivato",
|
|
"message.notification_marked_read": "Notifica contrassegnata come letta",
|
|
"message.all_notifications_marked_read": "Tutte le notifiche contrassegnate come lette",
|
|
"message.device_removed": "Dispositivo rimosso",
|
|
"message.subscription_upgraded": "Abbonamento aggiornato con successo",
|
|
"message.subscription_cancelled": "Abbonamento annullato. Manterrai i vantaggi Pro fino alla fine del periodo di fatturazione.",
|
|
"message.subscription_restored": "Abbonamento ripristinato con successo",
|
|
"message.file_deleted": "File eliminato con successo",
|
|
"message.static_data_refreshed": "Dati statici aggiornati",
|
|
"error.notification_not_found": "Notifica non trovata",
|
|
"error.invalid_platform": "Piattaforma non valida",
|
|
"error.upgrade_trigger_not_found": "Trigger di aggiornamento non trovato",
|
|
"error.receipt_data_required": "receipt_data è obbligatorio per iOS",
|
|
"error.purchase_token_required": "purchase_token è obbligatorio per Android",
|
|
"error.no_file_provided": "Nessun file fornito",
|
|
"error.failed_to_fetch_residence_types": "Impossibile recuperare i tipi di immobile",
|
|
"error.failed_to_fetch_task_categories": "Impossibile recuperare le categorie di attività",
|
|
"error.failed_to_fetch_task_priorities": "Impossibile recuperare le priorità delle attività",
|
|
"error.failed_to_fetch_task_frequencies": "Impossibile recuperare le frequenze delle attività",
|
|
"error.failed_to_fetch_task_statuses": "Impossibile recuperare gli stati delle attività",
|
|
"error.failed_to_fetch_contractor_specialties": "Impossibile recuperare le specializzazioni dei fornitori",
|
|
"push.task_due_soon.title": "Attività in Scadenza",
|
|
"push.task_due_soon.body": "{{.TaskTitle}} scade {{.DueDate}}",
|
|
"push.task_overdue.title": "Attività Scaduta",
|
|
"push.task_overdue.body": "{{.TaskTitle}} è scaduta",
|
|
"push.task_completed.title": "Attività Completata",
|
|
"push.task_completed.body": "{{.UserName}} ha completato {{.TaskTitle}}",
|
|
"push.task_assigned.title": "Nuova Attività Assegnata",
|
|
"push.task_assigned.body": "Ti è stata assegnata {{.TaskTitle}}",
|
|
"push.residence_shared.title": "Immobile Condiviso",
|
|
"push.residence_shared.body": "{{.UserName}} ha condiviso {{.ResidenceName}} con te",
|
|
"email.welcome.subject": "Benvenuto su honeyDue!",
|
|
"email.verification.subject": "Verifica la Tua Email",
|
|
"email.password_reset.subject": "Codice di Reimpostazione Password",
|
|
"email.tasks_report.subject": "Report Attività per {{.ResidenceName}}",
|
|
"lookup.residence_type.house": "Casa",
|
|
"lookup.residence_type.apartment": "Appartamento",
|
|
"lookup.residence_type.condo": "Condominio",
|
|
"lookup.residence_type.townhouse": "Villetta a schiera",
|
|
"lookup.residence_type.mobile_home": "Casa mobile",
|
|
"lookup.residence_type.other": "Altro",
|
|
"lookup.task_category.plumbing": "Idraulica",
|
|
"lookup.task_category.electrical": "Elettrico",
|
|
"lookup.task_category.hvac": "HVAC",
|
|
"lookup.task_category.appliances": "Elettrodomestici",
|
|
"lookup.task_category.exterior": "Esterno",
|
|
"lookup.task_category.interior": "Interno",
|
|
"lookup.task_category.landscaping": "Giardinaggio",
|
|
"lookup.task_category.safety": "Sicurezza",
|
|
"lookup.task_category.cleaning": "Pulizia",
|
|
"lookup.task_category.pest_control": "Disinfestazione",
|
|
"lookup.task_category.seasonal": "Stagionale",
|
|
"lookup.task_category.other": "Altro",
|
|
"lookup.task_priority.low": "Bassa",
|
|
"lookup.task_priority.medium": "Media",
|
|
"lookup.task_priority.high": "Alta",
|
|
"lookup.task_priority.urgent": "Urgente",
|
|
"lookup.task_status.pending": "In Attesa",
|
|
"lookup.task_status.in_progress": "In Corso",
|
|
"lookup.task_status.completed": "Completata",
|
|
"lookup.task_status.cancelled": "Annullata",
|
|
"lookup.task_status.archived": "Archiviata",
|
|
"lookup.task_frequency.once": "Una volta",
|
|
"lookup.task_frequency.daily": "Giornaliero",
|
|
"lookup.task_frequency.weekly": "Settimanale",
|
|
"lookup.task_frequency.biweekly": "Ogni 2 Settimane",
|
|
"lookup.task_frequency.monthly": "Mensile",
|
|
"lookup.task_frequency.quarterly": "Trimestrale",
|
|
"lookup.task_frequency.semiannually": "Ogni 6 Mesi",
|
|
"lookup.task_frequency.annually": "Annuale",
|
|
"lookup.contractor_specialty.plumber": "Idraulico",
|
|
"lookup.contractor_specialty.electrician": "Elettricista",
|
|
"lookup.contractor_specialty.hvac_technician": "Tecnico HVAC",
|
|
"lookup.contractor_specialty.handyman": "Tuttofare",
|
|
"lookup.contractor_specialty.landscaper": "Giardiniere",
|
|
"lookup.contractor_specialty.roofer": "Conciatetti",
|
|
"lookup.contractor_specialty.painter": "Imbianchino",
|
|
"lookup.contractor_specialty.carpenter": "Falegname",
|
|
"lookup.contractor_specialty.pest_control": "Disinfestazione",
|
|
"lookup.contractor_specialty.cleaning": "Pulizia",
|
|
"lookup.contractor_specialty.pool_service": "Servizio piscina",
|
|
"lookup.contractor_specialty.general_contractor": "Imprenditore generale",
|
|
"lookup.contractor_specialty.other": "Altro",
|
|
"suggestion.reason.has_pool": "La tua casa ha una piscina",
|
|
"suggestion.reason.has_sprinkler_system": "La tua casa ha un impianto di irrigazione",
|
|
"suggestion.reason.has_septic": "La tua casa ha una fossa settica",
|
|
"suggestion.reason.has_fireplace": "La tua casa ha un camino",
|
|
"suggestion.reason.has_garage": "La tua casa ha un garage",
|
|
"suggestion.reason.has_basement": "La tua casa ha un seminterrato",
|
|
"suggestion.reason.has_attic": "La tua casa ha una soffitta",
|
|
"suggestion.reason.heating_type": "Corrisponde al tuo impianto di riscaldamento",
|
|
"suggestion.reason.cooling_type": "Corrisponde al tuo impianto di raffreddamento",
|
|
"suggestion.reason.water_heater_type": "Corrisponde al tuo scaldabagno",
|
|
"suggestion.reason.roof_type": "Corrisponde al tuo tetto",
|
|
"suggestion.reason.exterior_type": "Corrisponde al tuo esterno",
|
|
"suggestion.reason.flooring_primary": "Corrisponde alla tua pavimentazione",
|
|
"suggestion.reason.landscaping_type": "Corrisponde al tuo giardino",
|
|
"suggestion.reason.property_type": "Consigliato per il tuo tipo di immobile",
|
|
"suggestion.reason.climate_region": "Consigliato per il tuo clima",
|
|
"lookup.residence_type.duplex": "Bifamiliare",
|
|
"lookup.residence_type.vacation_home": "Casa vacanze",
|
|
"lookup.task_category.general": "Generale",
|
|
"lookup.task_frequency.bi_weekly": "Bisettimanale",
|
|
"lookup.task_frequency.semi_annually": "Semestrale",
|
|
"lookup.task_frequency.custom": "Personalizzato",
|
|
"lookup.contractor_specialty.appliance_repair": "Riparazione elettrodomestici",
|
|
"lookup.contractor_specialty.cleaner": "Addetto alle pulizie",
|
|
"lookup.contractor_specialty.locksmith": "Fabbro",
|
|
"lookup.home_profile.gas_furnace": "Caldaia a gas",
|
|
"lookup.home_profile.electric_furnace": "Caldaia elettrica",
|
|
"lookup.home_profile.heat_pump": "Pompa di calore",
|
|
"lookup.home_profile.boiler": "Caldaia",
|
|
"lookup.home_profile.radiant": "Radiante",
|
|
"lookup.home_profile.other": "Altro",
|
|
"lookup.home_profile.central_ac": "Climatizzatore centrale",
|
|
"lookup.home_profile.window_ac": "Climatizzatore a finestra",
|
|
"lookup.home_profile.evaporative": "Evaporativo",
|
|
"lookup.home_profile.none": "Nessuno",
|
|
"lookup.home_profile.tank_gas": "Serbatoio (gas)",
|
|
"lookup.home_profile.tank_electric": "Serbatoio (elettrico)",
|
|
"lookup.home_profile.tankless_gas": "Senza serbatoio (gas)",
|
|
"lookup.home_profile.tankless_electric": "Senza serbatoio (elettrico)",
|
|
"lookup.home_profile.solar": "Solare",
|
|
"lookup.home_profile.asphalt_shingle": "Tegola bituminosa",
|
|
"lookup.home_profile.metal": "Metallo",
|
|
"lookup.home_profile.tile": "Tegola",
|
|
"lookup.home_profile.slate": "Ardesia",
|
|
"lookup.home_profile.wood_shake": "Scandola di legno",
|
|
"lookup.home_profile.flat": "Piatto",
|
|
"lookup.home_profile.brick": "Mattone",
|
|
"lookup.home_profile.vinyl_siding": "Rivestimento in vinile",
|
|
"lookup.home_profile.wood_siding": "Rivestimento in legno",
|
|
"lookup.home_profile.stucco": "Stucco",
|
|
"lookup.home_profile.stone": "Pietra",
|
|
"lookup.home_profile.fiber_cement": "Fibrocemento",
|
|
"lookup.home_profile.hardwood": "Legno duro",
|
|
"lookup.home_profile.laminate": "Laminato",
|
|
"lookup.home_profile.carpet": "Moquette",
|
|
"lookup.home_profile.vinyl": "Vinile",
|
|
"lookup.home_profile.concrete": "Cemento",
|
|
"lookup.home_profile.lawn": "Prato",
|
|
"lookup.home_profile.desert": "Deserto",
|
|
"lookup.home_profile.xeriscape": "Xeriscaping",
|
|
"lookup.home_profile.garden": "Giardino",
|
|
"lookup.home_profile.mixed": "Misto",
|
|
"lookup.document_type.warranty": "Garanzia",
|
|
"lookup.document_type.manual": "Manuale d'uso",
|
|
"lookup.document_type.receipt": "Ricevuta/Fattura",
|
|
"lookup.document_type.inspection": "Rapporto di ispezione",
|
|
"lookup.document_type.permit": "Permesso",
|
|
"lookup.document_type.deed": "Atto/Titolo",
|
|
"lookup.document_type.insurance": "Assicurazione",
|
|
"lookup.document_type.contract": "Contratto",
|
|
"lookup.document_type.photo": "Foto",
|
|
"lookup.document_type.other": "Altro",
|
|
"lookup.document_category.appliance": "Elettrodomestico",
|
|
"lookup.document_category.hvac": "HVAC",
|
|
"lookup.document_category.plumbing": "Idraulica",
|
|
"lookup.document_category.electrical": "Elettrico",
|
|
"lookup.document_category.roofing": "Tetto",
|
|
"lookup.document_category.structural": "Strutturale",
|
|
"lookup.document_category.landscaping": "Giardinaggio",
|
|
"lookup.document_category.general": "Generale",
|
|
"lookup.document_category.other": "Altro"
|
|
}
|