[I18N] Modulo Fornitori bilingue IT/EN (#8b) — v1.24.5

- supplier-portal.html (portale esterno OTP): i18n self-contained (dizionario inline + toggle IT/EN, ~79 stringhe), flusso OTP/token/ID/API invariato; domande questionario restano dati (non tradotte).
- supply-chain.html (interno): i18n estesa (5->25 data-i18n + 97 I18n.t).
- i18n.js: +82 chiavi sp.* (38->120). Cache-buster i18n.js su supply-chain.html. node --check OK, pagine 200, parita IT/EN.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
DevEnv nis2-agile
2026-06-21 10:32:18 +02:00
co-authored by Claude Opus 4.8
parent 14c4c2a7d2
commit 05a1436d8c
4 changed files with 502 additions and 182 deletions
+83
View File
@@ -491,6 +491,89 @@ const I18n = (function () {
'sp.import_too_many': { it: 'Troppi record (max 1000).', en: 'Too many records (max 1000).' },
'sp.import_done': { it: 'Completato: creati {created}, aggiornati {updated}, saltati {skipped}.', en: 'Done: {created} created, {updated} updated, {skipped} skipped.' },
'sp.conn_error': { it: 'Errore di connessione.', en: 'Connection error.' },
// ── Supply Chain / Fornitori — i18n estesa pagina interna (2026-06-21) ──
'sp.stat_total': { it: 'Totale Fornitori', en: 'Total Suppliers' },
'sp.stat_critical': { it: 'Critici Non Conformi', en: 'Critical Non-Compliant' },
'sp.stat_expiring': { it: 'Contratti in Scadenza', en: 'Expiring Contracts' },
'sp.stat_avg_score': { it: 'Score Rischio Medio', en: 'Average Risk Score' },
'sp.crit_distribution': { it: 'Distribuzione Criticità', en: 'Criticality Distribution' },
'sp.crit_critical': { it: 'Critico', en: 'Critical' },
'sp.crit_high': { it: 'Alto', en: 'High' },
'sp.crit_medium': { it: 'Medio', en: 'Medium' },
'sp.crit_low': { it: 'Basso', en: 'Low' },
'sp.filter_all_crit': { it: 'Tutte le Criticità', en: 'All Criticalities' },
'sp.filter_all_status': { it: 'Tutti gli Stati', en: 'All Statuses' },
'sp.status_active': { it: 'Attivo', en: 'Active' },
'sp.status_under_review':{ it: 'In Revisione', en: 'Under Review' },
'sp.status_suspended': { it: 'Sospeso', en: 'Suspended' },
'sp.status_terminated': { it: 'Terminato', en: 'Terminated' },
'sp.loading_suppliers': { it: 'Caricamento fornitori...', en: 'Loading suppliers...' },
'sp.loading': { it: 'Caricamento...', en: 'Loading...' },
'sp.no_suppliers': { it: 'Nessun fornitore trovato', en: 'No suppliers found' },
'sp.no_suppliers_hint': { it: 'Aggiungi il tuo primo fornitore per iniziare il monitoraggio della supply chain.', en: 'Add your first supplier to start monitoring the supply chain.' },
'sp.col_name': { it: 'Nome', en: 'Name' },
'sp.col_service_type': { it: 'Tipo Servizio', en: 'Service Type' },
'sp.col_criticality': { it: 'Criticità', en: 'Criticality' },
'sp.col_risk_score': { it: 'Score Rischio', en: 'Risk Score' },
'sp.col_status': { it: 'Stato', en: 'Status' },
'sp.col_last_assessment':{ it: 'Ultima Valutazione', en: 'Last Assessment' },
'sp.col_actions': { it: 'Azioni', en: 'Actions' },
'sp.back_to_list': { it: "Torna all'elenco", en: 'Back to list' },
'sp.compliant': { it: 'Conforme', en: 'Compliant' },
'sp.non_compliant': { it: 'Non Conforme', en: 'Non-Compliant' },
'sp.assess_supplier': { it: 'Valuta Fornitore', en: 'Assess Supplier' },
'sp.send_questionnaire': { it: 'Invia questionario', en: 'Send questionnaire' },
'sp.edit': { it: 'Modifica', en: 'Edit' },
'sp.delete': { it: 'Elimina', en: 'Delete' },
'sp.info_title': { it: 'Informazioni Fornitore', en: 'Supplier Information' },
'sp.field_name': { it: 'Nome', en: 'Name' },
'sp.field_vat': { it: 'Partita IVA', en: 'VAT Number' },
'sp.field_contact_name': { it: 'Referente', en: 'Contact Person' },
'sp.field_email': { it: 'Email', en: 'Email' },
'sp.field_service_type': { it: 'Tipo Servizio', en: 'Service Type' },
'sp.field_contract_start':{ it: 'Inizio Contratto', en: 'Contract Start' },
'sp.field_contract_expiry':{ it: 'Scadenza Contratto', en: 'Contract Expiry' },
'sp.service_desc_title': { it: 'Descrizione Servizio', en: 'Service Description' },
'sp.notes_title': { it: 'Note', en: 'Notes' },
'sp.out_of_100': { it: 'su 100', en: 'out of 100' },
'sp.sec_req_met': { it: 'Requisiti di sicurezza soddisfatti', en: 'Security requirements met' },
'sp.sec_req_not_met': { it: 'Requisiti di sicurezza non soddisfatti', en: 'Security requirements not met' },
'sp.no_assessment_done': { it: 'Nessuna valutazione effettuata', en: 'No assessment performed' },
'sp.assessment_label': { it: 'Valutazione', en: 'Assessment' },
'sp.last_assessment': { it: 'Ultima Valutazione', en: 'Last Assessment' },
'sp.next_assessment': { it: 'Prossima Valutazione', en: 'Next Assessment' },
'sp.sec_requirements': { it: 'Requisiti Sicurezza', en: 'Security Requirements' },
'sp.met': { it: 'Soddisfatti', en: 'Met' },
'sp.not_met': { it: 'Non Soddisfatti', en: 'Not Met' },
'sp.created_at': { it: 'Creato il', en: 'Created on' },
'sp.edit_supplier': { it: 'Modifica Fornitore', en: 'Edit Supplier' },
'sp.new_supplier_modal': { it: 'Nuovo Fornitore', en: 'New Supplier' },
'sp.field_supplier_name':{ it: 'Nome Fornitore', en: 'Supplier Name' },
'sp.field_contact_email':{ it: 'Email Contatto', en: 'Contact Email' },
'sp.ph_company_name': { it: "Nome dell'azienda", en: 'Company name' },
'sp.ph_full_name': { it: 'Nome e cognome', en: 'Full name' },
'sp.ph_service_type': { it: 'es. Cloud Hosting, Sviluppo SW, Consulenza', en: 'e.g. Cloud Hosting, SW Development, Consulting' },
'sp.ph_service_desc': { it: 'Descrivi il servizio fornito...', en: 'Describe the service provided...' },
'sp.ph_notes': { it: 'Note aggiuntive...', en: 'Additional notes...' },
'sp.cancel': { it: 'Annulla', en: 'Cancel' },
'sp.save_changes': { it: 'Salva Modifiche', en: 'Save Changes' },
'sp.add_supplier': { it: 'Aggiungi Fornitore', en: 'Add Supplier' },
'sp.assess_modal_title': { it: 'Valutazione Fornitore', en: 'Supplier Assessment' },
'sp.assess_intro': { it: "Rispondi alle domande per valutare il livello di sicurezza del fornitore. Il punteggio di rischio verrà calcolato automaticamente.", en: 'Answer the questions to assess the supplier security level. The risk score will be calculated automatically.' },
'sp.answer_yes': { it: 'Sì', en: 'Yes' },
'sp.answer_partial': { it: 'Parziale', en: 'Partial' },
'sp.answer_no': { it: 'No', en: 'No' },
'sp.calculated_risk_score':{ it: 'Score Rischio Calcolato', en: 'Calculated Risk Score' },
'sp.save_assessment': { it: 'Salva Valutazione', en: 'Save Assessment' },
'sp.cat_empty': { it: 'Nessuna categoria.', en: 'No categories.' },
'sp.cat_new_title': { it: 'Nuova categoria', en: 'New category' },
'sp.cat_edit': { it: 'Modifica categoria', en: 'Edit category' },
'sp.ph_cat_name': { it: 'es. Cloud Provider', en: 'e.g. Cloud Provider' },
'sp.ph_cat_desc': { it: 'Descrizione opzionale...', en: 'Optional description...' },
'sp.save': { it: 'Salva', en: 'Save' },
'sp.create': { it: 'Crea', en: 'Create' },
'sp.close': { it: 'Chiudi', en: 'Close' },
'sp.tpl_back_plain': { it: 'Torna ai template', en: 'Back to templates' },
});
return { init, getLang, setLang, t, applyTranslations, addTranslations };