From 697a4043bde7d2b2753f61e53ba80a8af76f9366 Mon Sep 17 00:00:00 2001 From: Alex Mantoni Date: Fri, 19 Jun 2026 09:35:40 +0200 Subject: [PATCH] Added full Italian localization --- web/themes/default/app.js | 5 +- web/themes/default/index.html | 2 + web/translations/it.json | 291 ++++++++++++++++++++++++++++++++++ 3 files changed, 296 insertions(+), 2 deletions(-) create mode 100644 web/translations/it.json diff --git a/web/themes/default/app.js b/web/themes/default/app.js index 02e0de0..2fa47d9 100644 --- a/web/themes/default/app.js +++ b/web/themes/default/app.js @@ -108,6 +108,7 @@ function _langToggleLabel(lang){ if(lang==='de')return 'Deutsch'; if(lang==='en')return 'English'; if(lang==='fr')return 'Français'; + if(lang==='it')return 'Italiano'; if(lang==='zh-cn')return '简体中文'; return 'Espanol'; } @@ -115,10 +116,10 @@ function _langToggleLabel(lang){ function _mapSupportedLang(lang){ if(!lang)return ''; var l=String(lang).toLowerCase().replace(/_/g,'-').trim(); - if(l==='de'||l==='en'||l==='es'||l==='fr'||l==='zh-cn')return l; + if(l==='de'||l==='en'||l==='es'||l==='fr'||l==='it'||l==='zh-cn')return l; var base=l.split('-')[0]; - if(base==='de'||base==='en'||base==='es'||base==='fr')return base; + if(base==='de'||base==='en'||base==='es'||base==='fr'||base==='it')return base; if(base==='zh'){ if(l.indexOf('cn')>=0||l.indexOf('hans')>=0||l==='zh')return 'zh-cn'; diff --git a/web/themes/default/index.html b/web/themes/default/index.html index a783654..345db9a 100644 --- a/web/themes/default/index.html +++ b/web/themes/default/index.html @@ -39,6 +39,7 @@ + @@ -521,6 +522,7 @@ + diff --git a/web/translations/it.json b/web/translations/it.json new file mode 100644 index 0000000..56ed376 --- /dev/null +++ b/web/translations/it.json @@ -0,0 +1,291 @@ +{ + "header_status_standby": "Pronto", + "header_status_printing": "In stampa", + "header_status_complete": "Completato", + "header_status_error": "Errore", + "kobra_free": "Pronto", + "kobra_busy": "Occupato", + "kobra_printing": "In stampa", + "kobra_preheating": "Preriscaldamento", + "kobra_auto_leveling": "Livellamento automatico", + "kobra_checking": "Verifica", + "kobra_updated": "Aggiornamento", + "kobra_init": "Inizializzazione", + "kobra_pausing": "Pausa in corso...", + "kobra_paused": "In pausa", + "kobra_resuming": "Ripresa...", + "kobra_resumed": "Ripreso", + "kobra_stopping": "Arresto...", + "kobra_stoped": "Arrestato", + "kobra_finished": "Finito", + "kobra_failed": "Errore", + "kobra_canceled": "Annullato", + "kobra_offline": "Offline", + "nav_dashboard": "Dashboard", + "nav_print": "Stampa", + "nav_temps": "Temperature", + "nav_motion": "Movimento", + "nav_ams": "AMS", + "nav_extras": "Luce / Ventola", + "nav_console": "Console", + "card_progress": "Avanzamento", + "card_temps": "Temperature", + "card_light_fan": "Ventola", + "card_speed": "Velocità di stampa", + "card_cam": "Camera", + "lbl_elapsed": "Trascorso:", + "lbl_remaining": "Rimanente:", + "lbl_slicer_time": "Stima slicer:", + "lbl_layers": "Layer", + "lbl_zpos": "Z (mm)", + "speed_silent": "🐢 Silenzioso", + "speed_normal": "⚡ Normale", + "speed_sport": "🚀 Sport", + "lbl_light": "💡 Luce", + "lbl_feed": "Carica", + "lbl_unload": "Rimuovi", + "card_ace_dry": "Essiccazione ACE", + "ace_dry_dryer": "Essiccatore", + "ace_dry_status_off": "Stato: Spento", + "ace_dry_status_on": "Stato: Attivo", + "ace_dry_status_remaining": "Rimanente", + "ace_dry_humidity": "Umidità", + "ace_dry_current_temp": "Temperatura", + "ace_dry_chart": "Cronologia (Temp/Umidità)", + "ace_dry_temp": "Temperatura (°C)", + "ace_dry_duration": "Durata (min)", + "ace_dry_start": "▶ Avvia", + "ace_dry_stop": "■ Ferma", + "ace_dry_auto_refill": "Ricarica automatica", + "ace_dry_enable": "Abilita essiccazione", + "ace_dry_temp_line": "Temperatura di essiccazione", + "ace_dry_time_line": "Tempo di essiccazione", + "ace_dry_ui_pending": "(Solo interfaccia, backend a seguire)", + "ace_dry_dialog_title": "Impostazioni Temp/Tempo essiccatore", + "ace_dry_dialog_temp": "Temperatura (30-80°C)", + "ace_dry_dialog_time": "Tempo rim. (h:m:s)", + "ace_dry_dialog_confirm": "Conferma", + "ace_dry_dialog_cancel": "Annulla", + "ace_dry_dialog_save_restart": "Salva e riavvia", + "ace_dry_dialog_custom_name": "Nome personalizzato", + "ace_dry_dialog_reset_default": "Ripristina predefiniti", + "ace_dry_preset_pla": "PLA", + "ace_dry_preset_pla_plus": "PLA+", + "ace_dry_preset_petg": "PETG", + "ace_dry_preset_tpu": "TPU", + "ace_dry_preset_abs_asa": "ABS / ASA", + "ace_dry_preset_pa_pc": "PA / PC", + "ace_dry_preset_custom": "Personalizzato", + "cam_placeholder": "📷 Camera non avviata", + "cam_stream_unavailable": "Flusso video non disponibile", + "btn_cam_start": "▶ Camera", + "btn_cam_stop": "◼ Camera", + "btn_pause": "⏸ Pausa", + "btn_resume": "▶ Riprendi", + "btn_cancel": "✕ Stop", + "label_nozzle": "Ugello", + "label_bed": "Piatto", + "label_fan": "🌀 Ventola", + "label_light": "💡 Luce", + "label_on_off": "On / Off", + "label_speed": "Velocità", + "panel_print_title": "Controllo stampa", + "panel_print_btn_pause": "⏸ Pausa", + "panel_print_btn_resume": "▶ Riprendi", + "panel_print_btn_cancel": "✕ Annulla", + "panel_print_temps_live": "Temperature (In tempo reale)", + "label_set": "Imposta", + "label_off": "Off", + "panel_temps_nozzle": "Ugello", + "panel_temps_bed": "Piatto riscaldato", + "panel_temps_chart": "Cronologia (ultime 60 letture)", + "label_target_c": "Target:", + "panel_motion_xy": "Assi XY", + "panel_motion_z": "Asse Z", + "label_step": "Ampiezza passo:", + "btn_home_z": "Home Z", + "btn_home_xy": "Home XY", + "btn_home_all": "Home generale", + "btn_disable_motors": "Spegni motori", + "panel_ams_title": "Filamento", + "card_ams": "Filamento", + "ams_no_data": "Nessun dato ricevuto dall' AMS", + "label_slot": "Slot", + "ams_empty": "Vuoto", + "panel_extras_light": "Luce", + "panel_extras_fan": "Ventola", + "panel_extras_camera": "Camera", + "btn_cam_start2": "▶ Avvia", + "btn_cam_stop2": "◼ Ferma", + "panel_console_title": "Registro eventi", + "log_light_on": "Luce accesa", + "log_light_off": "Luce spenta", + "log_fan": "Ventola →", + "log_nozzle": "Ugello →", + "log_bed": "Piatto →", + "log_axis": "Asse", + "log_home": "Home", + "log_home_all": "Home generale", + "log_cam_start": "Camera avviata:", + "log_cam_stop": "Camera arrestata", + "log_poll_error": "Errore di sincronizzazione:", + "log_error": "Errore:", + "confirm_cancel": "Annullare davvero la stampa?", + "settings_title": "Impostazioni", + "settings_connection": "Connessione", + "settings_print": "Impostazioni di stampa", + "settings_poll": "Intervallo di sincronizzazione (secondi)", + "nav_settings": "Impostazioni", + "settings_cat_display": "Aspetto", + "settings_cat_filament": "Filamento", + "settings_cat_language": "Lingua", + "settings_cat_theme": "Alterna chiaro / scuro", + "settings_filament_mapping": "Mappatura profilo filamento (per slot)", + "settings_filament_mapping_save": "Salva mappatura", + "settings_visible_vendors": "Produttori visibili (menu del profilo)", + "settings_visible_vendors_hint": "Solo questi produttori appariranno nel menu del profilo dello slot. Se non selezioni nulla = mostra tutti. I profili \"Generici\" e i tuoi personali sono sempre visibili.", + "settings_visible_vendors_save": "Salva selezione", + "progress_action_print": "Stampa", + "progress_action_slots": "Mappa slot", + "progress_action_clear": "Cancella", + "settings_version": "Versione", + "settings_save": "Salva e riavvia", + "settings_printer_name": "Nome stampante", + "settings_printer_ip": "IP stampante", + "settings_mqtt_port": "Porta MQTT", + "settings_username": "Nome utente MQTT", + "settings_password": "Password MQTT", + "settings_device_id": "ID dispositivo", + "settings_mode_id": "ID modalità", + "hint_ip_no_port": "Solo indirizzo IP, senza porta (es. 192.168.1.102)", + "settings_default_slot": "Slot predefinito (colore singolo)", + "settings_slot_auto": "Auto (tutti gli slot caricati)", + "settings_auto_leveling": "Livellamento automatico predefinito", + "fd_options_title": "Opzioni di stampa", + "print_auto_leveling": "Livellamento automatico", + "settings_file_ready_mode": "Comportamento all'avvio stampa", + "settings_file_ready_banner": "Barra di stampa", + "settings_file_ready_dialog": "Finestra di dialogo di stampa", + "settings_camera_on_print": "Attiva la camera all'avvio della stampa", + "settings_web_upload_warning": "Mostra un avviso quando si stampano caricamenti web", + "update_check": "Controlla aggiornamenti", + "update_checking": "Verifica in corso...", + "update_available": "disponibile", + "update_none": "Già aggiornato", + "update_apply": "Installa ora", + "update_applying": "Download in corso...", + "update_restarting": "Riavvio in corso...", + "update_error": "Errore", + "btn_connect": "⚡ Connetti", + "btn_disconnect": "✕ Disconnetti", + "lbl_conn_error": "Errore di connessione:", + "slot_edit_title": "Modifica slot", + "slot_edit_color": "Colore", + "slot_edit_material": "Materiale", + "slot_edit_load": "⬇ Carica", + "slot_edit_unload": "⬆ Rimuovi", + "slot_edit_save": "💾 Salva", + "slot_edit_custom": "es. PLA, PETG, ABS…", + "slot_edit_ok": "Slot AMS", + "slot_edit_profile": "Profilo OrcaSlicer", + "slot_edit_profile_hint": "Inviato durante la sincronizzazione con OrcaSlicer come marchio specifico invece di un semplice \"Generico\"", + "slot_edit_profile_default": "— Generico (predefinito) —", + "orca_profile_section": "Profili OrcaSlicer", + "orca_profile_hint": "Importa i tuoi profili di filamento OrcaSlicer (apri la cartella utente tramite Aiuto → Mostra cartella di configurazione)", + "orca_profile_import_btn": "Importa profili", + "orca_profile_import_link": "★ Importa i tuoi profili…", + "orca_profile_import_title": "Importa i tuoi profili OrcaSlicer", + "orca_profile_help_html": "Carica un file ZIP della tua cartella filamenti di OrcaSlicer o file singoli .json.
In OrcaSlicer: Aiuto → Mostra cartella di configurazione → user/<id>/filament/", + "orca_profile_dropmsg": "Trascina qui o fai clic", + "orca_profile_list_label": "Attualmente importati", + "orca_profile_user_label": "Profili personali", + "orca_profile_user_empty": "– nessuno –", + "orca_profile_uploading": "Caricamento in corso…", + "orca_profile_done": "Importato", + "orca_profile_skipped": "saltato", + "log_dir_all": "Tutti", + "log_dir_rx": "RX", + "log_dir_tx": "TX", + "log_dir_label": "Dir:", + "log_lvl_label": "Livello:", + "log_lvl_err": "⛔ Errori", + "log_lvl_warn": "⚠ Avvisi", + "log_topic_label": "Argomento:", + "log_topic_ams": "AMS", + "log_topic_print": "Stampa", + "log_topic_info": "Info", + "log_topic_status": "Stato", + "log_download": "⬇ Scarica", + "log_auto": "⬇ Auto", + "log_clear": "✕ Cancella", + "log_filter_placeholder": "Filtra…", + "file_ready_btn": "▶ Avvia stampa", + "file_slots_btn": "🎨 Seleziona slot", + "file_cancel_btn": "✕ Annulla", + "nav_printers": "Stampanti", + "skip_title": "✂ Salta oggetti", + "skip_hint": "Deseleziona gli oggetti che non vuoi più stampare:", + "skip_btn_label": "Oggetti", + "skip_no_objects": "Nessun oggetto in questa stampa.", + "skip_already": "saltato", + "skip_cancel": "Annulla", + "skip_confirm": "Salta", + "skip_select_at_least_one": "Seleziona almeno un oggetto.", + "skip_sending": "Invio in corso …", + "skip_success": "Gli oggetti verranno saltati.", + "fd_objects_hint": "Salta oggetti (opzionale):", + "fd_objects_toggle": "Salta oggetti", + "fd_slots_hint": "Assegna il canale GCode allo slot AMS:", + "fd_cancel": "Annulla", + "fd_print": "▶ Stampa", + "fd_no_slots_msg": "Nessuno slot AMS caricato.{br}Avviare comunque la stampa?", + "fd_slot": "Slot", + "fd_no_matching_material": "Nessun materiale corrispondente", + "fd_used": "USATO", + "add_printer": "Aggiungi stampante", + "apd_lbl_ip": "IP stampante", + "apd_lbl_name": "Nome (opzionale)", + "apd_placeholder_name": "es. Kobra X Soggiorno", + "apd_cancel": "Annulla", + "apd_confirm": "Aggiungi", + "apd_fetching": "Recupero dati dalla stampante…", + "apd_success": "Stampante aggiunta, riavvio del bridge in corso…", + "apd_err_ip": "Inserisci un indirizzo IP", + "printers_remove": "Rimuovi stampante", + "printers_remove_confirm": "Rimuovere la stampante \"{name}\"? Il bridge si riavvierà.", + "printers_active": "● attiva", + "printers_switch": "Cambia →", + "printers_current": "Stampante corrente", + "printers_loading": "Caricamento in corso…", + "printers_none": "Nessuna stampante configurata.", + "printers_empty_hint": "Nessuna stampante ancora configurata.", + "nav_browser": "Browser", + "panel_browser_title": "Browser dei file", + "store_search_placeholder": "🔍 Cerca…", + "store_empty": "Nessun file caricato.", + "store_refresh": "↻ Aggiorna", + "store_print": "▶ Stampa", + "store_download": "⬇ Scarica", + "store_delete_confirm": "Eliminare il file?", + "store_print_confirm": "Stampare il file?", + "store_web_verify_title": "Verifica file", + "store_web_verify_msg": "Verifica che questo file sia stato creato per Anycubic Kobra X.", + "store_web_verify_confirm": "Conferma", + "store_web_verify_abort": "Interrompi", + "store_no_results": "Nessun file trovato.", + "store_never": "mai stampato", + "store_estimate": "Stima", + "store_upload_label_prefix": "Trascina il GCode qui o ", + "store_upload_label_browse": "sfoglia", + "store_upload_busy": "⏳ Caricamento in corso…", + "store_upload_success": "✓ {file}", + "store_upload_error": "✗ {error}", + "store_upload_only_gcode": "✗ Sono consentiti solo file GCode (.gcode, .3mf, .bgcode)", + "sf_all": "Tutti", + "sf_ok": "✓ Completato", + "sf_err": "✗ Fallito", + "sf_new": "Nuovo", + "ss_date": "↓ Data", + "ss_name": "Nome A–Z", + "ss_dur": "⏱ Tempo di stampa" +} \ No newline at end of file