diff --git a/web/themes/default/app.js b/web/themes/default/app.js index 26f24bd..96817b6 100644 --- a/web/themes/default/app.js +++ b/web/themes/default/app.js @@ -480,6 +480,16 @@ function applyLang(){ setText('file-ready-btn',T.file_ready_btn); setText('file-slots-btn',T.file_slots_btn); setText('file-cancel-btn',T.file_cancel_btn); + // Elements not yet covered by setText above + var settingsBtn=document.getElementById('settings-btn'); + if(settingsBtn)settingsBtn.title=T.settings_btn_tooltip||T.settings_title||'Einstellungen'; + var snpEl=document.getElementById('s-printer-name'); + if(snpEl)snpEl.placeholder=T.settings_printer_name_placeholder||'z.B. Kobra X Links'; + var sdidEl=document.getElementById('s-device-id'); + if(sdidEl)sdidEl.placeholder=T.settings_device_id_placeholder||'32 Hex-Zeichen'; + setText('d-fan-off',T.label_off||'Aus'); + setText('skip-confirm',T.skip_confirm_btn||'Überspringen'); + setText('ams-no-data',T.ams_no_data||'Keine AMS-Daten empfangen'); // GCode-Browser-Karten: Texte sind via innerHTML eingebacken, // bei Sprachwechsel komplett neu rendern. if(typeof renderStore==='function' && typeof storeFiles!=='undefined'){ @@ -1235,7 +1245,7 @@ function refreshUserProfileList(){ return '
' +'★ '+label+'' +'' + +'style="background:none;border:none;color:var(--err);cursor:pointer;font-size:14px" title="'+tr('btn_delete','Löschen')+'">🗑' +'
'; }).join(''); }).catch(function(){}); @@ -1272,7 +1282,7 @@ function refreshImportDialogList(){ return '
' +'★ '+label+'' +'' + +'style="background:none;border:none;color:var(--err);cursor:pointer;font-size:14px" title="'+tr('btn_delete','Löschen')+'">🗑' +'
'; }).join(''); }).catch(function(){}); @@ -1312,7 +1322,7 @@ function doProfileImportUpload(files){ _one(idx+1); }) .catch(function(e){ - status.textContent='Fehler: '+e; + status.textContent=tr('log_error','Fehler:')+' '+e; status.style.color='var(--err)'; }); } @@ -1470,7 +1480,7 @@ function startReadyFile(filename){ if(btn){btn.disabled=false;setText('file-ready-btn',T.file_ready_btn);} }) .catch(function(e){ - clog(tr('log_error')+' '+e,'msg-err'); + clog(tr('log_error','Fehler:')+' '+e,'msg-err'); if(btn){btn.disabled=false;setText('file-ready-btn',T.file_ready_btn);} }); } @@ -1598,7 +1608,7 @@ function saveSlotEdit(){ if(typeof applyState==='function') applyState(); if(typeof poll==='function') poll(); }) - .catch(function(e){clog('Fehler: '+e,'msg-err');}); + .catch(function(e){clog(tr('log_error','Fehler:')+' '+e,'msg-err');}); } document.addEventListener('DOMContentLoaded',function(){ document.getElementById('s-printer-ip').addEventListener('input',function(){ @@ -1646,7 +1656,7 @@ function saveSettings(){ },4000); }).catch(function(e){ btn.disabled=false;setText('btn-save-settings',T.settings_save); - clog('Settings-Fehler: '+e,'msg-err'); + clog(T.settings_title+' '+tr('log_error','Fehler:')+' '+e,'msg-err'); }); } function checkUpdate(){ @@ -1719,8 +1729,8 @@ var pollTimer; // ── Print actions ── function printAction(a){ - post('/printer/print/'+a,{}).then(function(){clog('Druck: '+a,'msg-ok');poll()}) - .catch(function(e){clog('Fehler: '+e,'msg-err')}); + post('/printer/print/'+a,{}).then(function(){clog(tr('log_print_action','Druck:')+' '+a,'msg-ok');poll()}) + .catch(function(e){clog(tr('log_error','Fehler:')+' '+e,'msg-err')}); } function togglePauseResume(){ // Druckt → pause; Pausiert → resume. Status kommt aus dem zuletzt gepollten @@ -1759,42 +1769,42 @@ function move(axis,dir,dist){ // axis: 0=X,1=Y,2=Z → printer axis codes: 1=X,2=Y,3=Z var axisMap={0:1,1:2,2:3}; post('/api/axis',{axis:axisMap[axis],move_type:1,distance:dir*dist}) - .then(function(){clog('Achse '+(axis===0?'X':axis===1?'Y':'Z')+' '+(dir>0?'+':'')+dir*dist+'mm','msg-ok')}) - .catch(function(e){clog('Achse-Fehler: '+e,'msg-err')}); + .then(function(){clog(tr('log_axis','Achse')+' '+(axis===0?'X':axis===1?'Y':'Z')+' '+(dir>0?'+':'')+dir*dist+'mm','msg-ok')}) + .catch(function(e){clog(tr('log_axis','Achse')+'-'+tr('log_error','Fehler:')+' '+e,'msg-err')}); } function homeAll(){ post('/api/axis',{axis:5,move_type:2,distance:0}) - .then(function(){clog('Home All','msg-ok')}) - .catch(function(e){clog('Home-Fehler: '+e,'msg-err')}); + .then(function(){clog(tr('log_home_all','Home All'),'msg-ok')}) + .catch(function(e){clog(tr('log_home_all','Home All')+' '+tr('log_error','Fehler:')+' '+e,'msg-err')}); } function homeXY(){ post('/api/axis',{axis:4,move_type:2,distance:0}) - .then(function(){clog('Home XY','msg-ok')}) - .catch(function(e){clog('Home-Fehler: '+e,'msg-err')}); + .then(function(){clog(tr('btn_home_xy','Home XY'),'msg-ok')}) + .catch(function(e){clog(tr('btn_home_xy','Home XY')+' '+tr('log_error','Fehler:')+' '+e,'msg-err')}); } function homeZ(){ post('/api/axis',{axis:3,move_type:2,distance:0}) - .then(function(){clog('Home Z','msg-ok')}) - .catch(function(e){clog('Home-Fehler: '+e,'msg-err')}); + .then(function(){clog(tr('btn_home_z','Home Z'),'msg-ok')}) + .catch(function(e){clog(tr('btn_home_z','Home Z')+' '+tr('log_error','Fehler:')+' '+e,'msg-err')}); } function disableMotors(){ post('/api/axis',{action:'turnOff'}) - .then(function(){clog('Motors Off','msg-ok')}) - .catch(function(e){clog('Motors-Fehler: '+e,'msg-err')}); + .then(function(){clog(tr('btn_disable_motors','Motors Off'),'msg-ok')}) + .catch(function(e){clog(tr('btn_disable_motors','Motors Off')+' '+tr('log_error','Fehler:')+' '+e,'msg-err')}); } // ── Temperature ── function setNozzle(){ var v=parseFloat(document.getElementById('p-nozzle-inp').value||0); post('/api/temperature',{nozzle:v,bed:S.bed_target}) - .then(function(){clog('Nozzle → '+v+'°C','msg-ok')}) - .catch(function(e){clog('Temp-Fehler: '+e,'msg-err')}); + .then(function(){clog(tr('log_nozzle','Nozzle → ')+v+'°C','msg-ok')}) + .catch(function(e){clog(tr('label_nozzle','Düse')+' '+tr('log_error','Fehler:')+' '+e,'msg-err')}); } function setBed(){ var v=parseFloat(document.getElementById('p-bed-inp').value||0); post('/api/temperature',{nozzle:S.nozzle_target,bed:v}) - .then(function(){clog(T.label_bed+' → '+v+'°C','msg-ok')}) - .catch(function(e){clog('Temp-Fehler: '+e,'msg-err')}); + .then(function(){clog(tr('log_bed','Bett → ')+v+'°C','msg-ok')}) + .catch(function(e){clog(tr('label_bed','Bett')+' '+tr('log_error','Fehler:')+' '+e,'msg-err')}); } // ── Light ── @@ -1814,7 +1824,7 @@ function setSpeed(mode){ if(b) b.classList.toggle('spd-active',m===mode); }); post('/api/speed',{mode:mode}) - .catch(function(e){clog('Speed-Fehler: '+e,'msg-err')}); + .catch(function(e){clog(tr('label_speed','Geschwindigkeit')+' '+tr('log_error','Fehler:')+' '+e,'msg-err')}); } // ── Fan ── @@ -1822,15 +1832,15 @@ function setFan(){ var v=parseInt(document.getElementById('d-fan').value); document.getElementById('d-fan-val').textContent=v; post('/api/fan',{speed:v}) - .then(function(){clog('Lüfter → '+v+'%','msg-ok')}) - .catch(function(e){clog('Lüfter-Fehler: '+e,'msg-err')}); + .then(function(){clog(tr('log_fan','Lüfter → ')+v+'%','msg-ok')}) + .catch(function(e){clog(tr('log_fan','Lüfter → ')+tr('log_error','Fehler:')+' '+e,'msg-err')}); } function quickFan(v){ document.getElementById('d-fan').value=v; document.getElementById('d-fan-val').textContent=v; post('/api/fan',{speed:v}) - .then(function(){clog('Lüfter → '+v+'%','msg-ok')}) - .catch(function(e){clog('Lüfter-Fehler: '+e,'msg-err')}); + .then(function(){clog(tr('log_fan','Lüfter → ')+v+'%','msg-ok')}) + .catch(function(e){clog(tr('log_fan','Lüfter → ')+tr('log_error','Fehler:')+' '+e,'msg-err')}); } // ── AMS ── @@ -1845,7 +1855,7 @@ function amsFeed(type,slotIndex){ } return post('/api/ams/feed',{slot_index:globalIdx,type:type}) .then(function(){clog((type===1?T.lbl_feed:T.lbl_unload)+' Slot '+(globalIdx+1),'msg-ok')}) - .catch(function(e){clog('AMS-Fehler: '+e,'msg-err');throw e;}); + .catch(function(e){clog('AMS '+tr('log_error','Fehler:')+' '+e,'msg-err');throw e;}); } // ── Camera ── @@ -1871,14 +1881,14 @@ function camStart(){ ph.style.display='flex'; camOn=false; document.getElementById('cam-toggle-btn').textContent=tr('btn_cam_start'); - clog(tr('log_error')+' '+tr('cam_stream_unavailable'),'msg-err'); + clog(tr('log_error','Fehler:')+' '+tr('cam_stream_unavailable'),'msg-err'); }; img.src='/api/camera/stream?t='+Date.now(); } }).catch(function(e){ sp.style.display='none'; ph.style.display='flex'; - clog(tr('log_error')+' '+e,'msg-err'); + clog(tr('log_error','Fehler:')+' '+e,'msg-err'); }); } @@ -1910,7 +1920,7 @@ function aceDryStart(aceId){ clog('ACE '+(aceId+1)+' - '+tr('ace_dry_dryer')+': '+tr('ace_dry_start')+' ('+t+'°C, '+d+' min)','msg-ok'); poll(); }) - .catch(function(e){clog('ACE-Fehler: '+e,'msg-err');}); + .catch(function(e){clog('ACE '+tr('log_error','Fehler:')+' '+e,'msg-err');}); } var _aceAutoFeedPending={}; @@ -2114,7 +2124,7 @@ function saveAceDryPresetAndRestart(){ }).catch(function(e){ btn.disabled=false; btn.textContent=tr('ace_dry_dialog_save_restart'); - clog('ACE-Preset Fehler: '+e,'msg-err'); + clog('ACE preset '+tr('log_error','Fehler:')+' '+e,'msg-err'); }); } @@ -2152,14 +2162,14 @@ function aceDryStop(aceId){ clog('ACE '+(aceId+1)+' - '+tr('ace_dry_dryer')+': '+tr('ace_dry_stop'),'msg-ok'); poll(); }) - .catch(function(e){clog('ACE-Fehler: '+e,'msg-err');}); + .catch(function(e){clog('ACE '+tr('log_error','Fehler:')+' '+e,'msg-err');}); } function loadStore(){ fetch(_apiUrl('/kx/files')).then(function(r){return r.json()}).then(function(d){ storeFiles=d.result||[]; renderStore(); - }).catch(function(e){clog('Store-Fehler: '+e,'msg-err')}); + }).catch(function(e){clog(tr('log_error','Fehler:')+' '+e,'msg-err')}); } function uploadGcode(file){ @@ -2199,7 +2209,7 @@ function uploadGcode(file){ if(status){ status.textContent=T.store_upload_error.replace('{error}',e.message); status.className='upload-status-err'; } if(label) label.style.display=''; if(zone) zone.style.pointerEvents=''; - clog('Upload-Fehler: '+e,'msg-err'); + clog(tr('log_error','Fehler:')+' '+e,'msg-err'); }); } @@ -2357,7 +2367,7 @@ function clearWebUploadWarningFlag(fileId, onDone){ loadStore(); }) .catch(function(e){ - clog('Verifizierungs-Fehler: '+e,'msg-err'); + clog(tr('log_error','Fehler:')+' '+e,'msg-err'); }); } @@ -2435,7 +2445,7 @@ function confirmStoreWebVerify(){ }) .catch(function(e){ if(status){status.textContent='✗ '+e.message;} - clog('Verifizierungs-Fehler: '+e,'msg-err'); + clog(tr('log_error','Fehler:')+' '+e,'msg-err'); }); } @@ -2793,7 +2803,7 @@ function confirmFilamentPrint(){ document.getElementById('file-ready-banner').style.display='none'; if(btn){btn.disabled=false;setText('file-ready-btn',T.file_ready_btn);} }).catch(function(e){ - clog(tr('log_error')+' '+e,'msg-err'); + clog(tr('log_error','Fehler:')+' '+e,'msg-err'); if(btn){btn.disabled=false;setText('file-ready-btn',T.file_ready_btn);} }); } else { @@ -2803,9 +2813,9 @@ function confirmFilamentPrint(){ headers:{'Content-Type':'application/json'}, body:JSON.stringify({file_id:_storeFileId,filament_assignments:assignments,excluded_objects:excludedObjects,auto_leveling:fdAutoLeveling}) }).then(function(r){return r.json()}).then(function(d){ - if(d.result==='ok'){clog('Druckstart: '+_storeFilename,'msg-ok');showPanel('dashboard');} - else{clog('Druckfehler: '+(d.error||'?'),'msg-err');} - }).catch(function(e){clog('Druckfehler: '+e,'msg-err');}); + if(d.result==='ok'){clog(tr('log_print_start','Druckstart:')+' '+_storeFilename,'msg-ok');showPanel('dashboard');} + else{clog(tr('log_error','Fehler:')+' '+(d.error||'?'),'msg-err');} + }).catch(function(e){clog(tr('log_error','Fehler:')+' '+e,'msg-err');}); } } @@ -2978,7 +2988,7 @@ function confirmSkip(){ fetch(_apiUrl('/kx/skip'),{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({names:names})}) .then(function(r){return r.json().then(function(j){return {ok:r.ok,j:j};});}) .then(function(res){ - if(!res.ok){st.textContent=(res.j&&res.j.error)||'Fehler';st.style.color='var(--err)';btn.disabled=false;return;} + if(!res.ok){st.textContent=(res.j&&res.j.error)||tr('log_error','Fehler:');st.style.color='var(--err)';btn.disabled=false;return;} st.textContent=tr('skip_success');st.style.color='var(--ok)'; // Dialog offen lassen + neu laden damit der "übersprungen"-Status erscheint setTimeout(function(){ _refreshSkipDialog(); btn.disabled=false; st.textContent=''; }, 1500); @@ -2990,7 +3000,7 @@ function storeDelete(fileId){ if(!confirm(T.store_delete_confirm)) return; fetch(_apiUrl('/kx/files/'+fileId),{method:'DELETE'}).then(function(r){ if(r.ok){loadStore();} - else{clog('Löschen fehlgeschlagen','msg-err');} + else{clog(tr('log_delete_failed','Löschen fehlgeschlagen'),'msg-err');} }); } @@ -3024,7 +3034,7 @@ function confirmAddPrinter(){ body:JSON.stringify({printer_ip:ip,name:name})}) .then(function(r){return r.json().then(function(j){return {ok:r.ok,j:j};});}) .then(function(res){ - if(!res.ok){st.textContent=(res.j&&res.j.error)||'Fehler';st.style.color='var(--err)';btn.disabled=false;return;} + if(!res.ok){st.textContent=(res.j&&res.j.error)||tr('log_error','Fehler:');st.style.color='var(--err)';btn.disabled=false;return;} st.textContent=T.apd_success;st.style.color='var(--ok)'; setTimeout(function(){location.reload();},2500); }) @@ -3035,7 +3045,7 @@ function removePrinter(id,name){ fetch('/kx/printers/'+encodeURIComponent(id),{method:'DELETE'}) .then(function(r){return r.json().then(function(j){return {ok:r.ok,j:j};});}) .then(function(res){ - if(!res.ok){alert((res.j&&res.j.error)||'Fehler');return;} + if(!res.ok){alert((res.j&&res.j.error)||tr('log_error','Fehler:'));return;} setTimeout(function(){location.href='/printer1';},2000); }) .catch(function(e){alert(''+e);}); @@ -3104,6 +3114,6 @@ function loadPrinterTab(){ }).join(''); }); }).catch(function(e){ - if(grid)grid.innerHTML='
Fehler: '+e+'
'; + if(grid)grid.innerHTML='
'+tr('log_error','Fehler:')+' '+e+'
'; }); } diff --git a/web/themes/default/index.html b/web/themes/default/index.html index d677621..a9fff33 100644 --- a/web/themes/default/index.html +++ b/web/themes/default/index.html @@ -315,7 +315,7 @@ 0
- + diff --git a/web/translations/de.json b/web/translations/de.json index c5011df..4be3b79 100644 --- a/web/translations/de.json +++ b/web/translations/de.json @@ -287,5 +287,23 @@ "log_clear": "✕ Leeren", "log_filter_placeholder": "Filtern…", "skip_cancel": "Abbrechen", - "skip_confirm": "Überspringen" + "skip_confirm": "Überspringen", + "settings_cat_connection": "Verbindung", + "settings_cat_printer": "Drucker", + "settings_cat_system": "System", + "settings_btn_tooltip": "Einstellungen", + "settings_printer_name_placeholder": "z.B. Kobra X Links", + "settings_device_id_placeholder": "32 Hexzeichen", + "settings_mqtt_username_placeholder": "userXXXXXXXX", + "settings_device_id_hint": "32 Hexzeichen", + "settings_mode_id_placeholder": "20030", + "settings_language": "Sprache", + "settings_theme_toggle": "Wechsel Hell / Dunkel", + "settings_orca_profiles_label": "OrcaSlicer-Profile", + "settings_orca_profiles_import": "Profile importieren", + "skip_confirm_btn": "Überspringen", + "btn_delete": "Löschen", + "log_print_start": "Druckstart:", + "log_print_action": "Druck:", + "log_delete_failed": "Löschung fehlgeschlagen" } diff --git a/web/translations/en.json b/web/translations/en.json index 61c5c86..778e9de 100644 --- a/web/translations/en.json +++ b/web/translations/en.json @@ -136,10 +136,6 @@ "settings_print": "Print Settings", "settings_poll": "Poll Interval (seconds)", "nav_settings": "Settings", - "settings_cat_display": "Appearance", - "settings_cat_filament": "Filament", - "settings_cat_language": "Language", - "settings_cat_theme": "Toggle light / dark", "settings_filament_mapping": "Filament profile mapping (per slot)", "settings_filament_mapping_save": "Save mapping", "settings_visible_vendors": "Visible vendors (profile dropdown)", @@ -161,6 +157,14 @@ "settings_default_slot": "Default Slot (single color)", "settings_slot_auto": "Auto (all loaded slots)", "settings_auto_leveling": "Auto-Leveling Default", + "settings_cat_connection": "Connection", + "settings_cat_printer": "Printer", + "settings_cat_display": "Appearance", + "settings_cat_filament": "Filament", + "settings_cat_system": "System", + "settings_auto_leveling_label": "Auto-Leveling before print", + "settings_poll_interval_label": "Poll Interval (seconds)", + "settings_poll_interval_hint": "How often the bridge queries printer status", "fd_options_title": "Print Options", "print_auto_leveling": "Auto-Leveling", "settings_file_ready_mode": "Start Print Behavior", @@ -168,6 +172,12 @@ "settings_file_ready_dialog": "Print Dialog", "settings_camera_on_print": "Turn camera on at print start", "settings_web_upload_warning": "Show warning when printing web uploads", + "settings_filament_mapping_label": "Filament profile mapping (per slot)", + "settings_filament_mapping_hint": "Fixed Orca profile per AMS slot. On slicer sync, the bridge sends this profile instead of \"Generic\".", + "settings_filament_mapping_save_label": "Save mapping", + "settings_visible_vendors_label": "Visible vendors (profile dropdown)", + "settings_visible_vendors_save_label": "Save selection", + "settings_vendor_filter_placeholder": "Search vendors…", "update_check": "Check for Updates", "update_checking": "Checking...", "update_available": "available", @@ -287,5 +297,20 @@ "sf_new": "New", "ss_date": "↓ Date", "ss_name": "A–Z Name", - "ss_dur": "⏱ Print time" + "ss_dur": "⏱ Print time", + "settings_btn_tooltip": "Settings", + "settings_printer_name_placeholder": "e.g. Kobra X Left", + "settings_device_id_placeholder": "32 hex characters", + "settings_mqtt_username_placeholder": "userXXXXXXXX", + "settings_device_id_hint": "32 hex characters", + "settings_mode_id_placeholder": "20030", + "settings_language": "Language", + "settings_theme_toggle": "Toggle light / dark", + "settings_orca_profiles_label": "OrcaSlicer Profiles", + "settings_orca_profiles_import": "Import profiles", + "skip_confirm_btn": "Skip", + "btn_delete": "Delete", + "log_print_start": "Print start:", + "log_print_action": "Print:", + "log_delete_failed": "Delete failed" } diff --git a/web/translations/es.json b/web/translations/es.json index 822cf4b..cb8f3eb 100644 --- a/web/translations/es.json +++ b/web/translations/es.json @@ -287,5 +287,23 @@ "log_clear": "✕ Limpiar", "log_filter_placeholder": "Filtrar…", "skip_cancel": "Cancelar", - "skip_confirm": "Omitir" + "skip_confirm": "Omitir", + "settings_cat_connection": "Conexión", + "settings_cat_printer": "Impresora", + "settings_cat_system": "Sistema", + "settings_btn_tooltip": "Ajustes", + "settings_printer_name_placeholder": "p. ej. Kobra X Sala", + "settings_device_id_placeholder": "32 caracteres hexadecimales", + "settings_mqtt_username_placeholder": "userXXXXXXXX", + "settings_device_id_hint": "32 caracteres hexadecimales", + "settings_mode_id_placeholder": "20030", + "settings_language": "Idioma", + "settings_theme_toggle": "Alternar claro / oscuro", + "settings_orca_profiles_label": "Perfiles de OrcaSlicer", + "settings_orca_profiles_import": "Importar perfiles", + "skip_confirm_btn": "Omitir", + "btn_delete": "Eliminar", + "log_print_start": "Inicio de impresión:", + "log_print_action": "Impresión:", + "log_delete_failed": "Error al eliminar" } diff --git a/web/translations/fr.json b/web/translations/fr.json index 01fc6f6..eaed5c1 100644 --- a/web/translations/fr.json +++ b/web/translations/fr.json @@ -287,5 +287,23 @@ "log_clear": "✕ Effacer", "log_filter_placeholder": "Filtrer…", "skip_cancel": "Annuler", - "skip_confirm": "Ignorer" + "skip_confirm": "Ignorer", + "settings_cat_connection": "Connexion", + "settings_cat_printer": "Imprimante", + "settings_cat_system": "Système", + "settings_btn_tooltip": "Paramètres", + "settings_printer_name_placeholder": "p. ex. Kobra X Salon", + "settings_device_id_placeholder": "32 caractères hexadécimaux", + "settings_mqtt_username_placeholder": "userXXXXXXXX", + "settings_device_id_hint": "32 caractères hexadécimaux", + "settings_mode_id_placeholder": "20030", + "settings_language": "Langue", + "settings_theme_toggle": "Basculer clair / sombre", + "settings_orca_profiles_label": "Profils OrcaSlicer", + "settings_orca_profiles_import": "Importer des profils", + "skip_confirm_btn": "Ignorer", + "btn_delete": "Supprimer", + "log_print_start": "Début de l'impression :", + "log_print_action": "Impression :", + "log_delete_failed": "Échec de la suppression" } diff --git a/web/translations/it.json b/web/translations/it.json index 56ed376..4a4c4b2 100644 --- a/web/translations/it.json +++ b/web/translations/it.json @@ -287,5 +287,23 @@ "sf_new": "Nuovo", "ss_date": "↓ Data", "ss_name": "Nome A–Z", - "ss_dur": "⏱ Tempo di stampa" -} \ No newline at end of file + "ss_dur": "⏱ Tempo di stampa", + "settings_cat_connection": "Connessione", + "settings_cat_printer": "Stampante", + "settings_cat_system": "Sistema", + "settings_btn_tooltip": "Impostazioni", + "settings_printer_name_placeholder": "p. es. Kobra X Sala", + "settings_device_id_placeholder": "32 caratteri esadecimali", + "settings_mqtt_username_placeholder": "userXXXXXXXX", + "settings_device_id_hint": "32 caratteri esadecimali", + "settings_mode_id_placeholder": "20030", + "settings_language": "Lingua", + "settings_theme_toggle": "Attiva/disattiva chiaro / scuro", + "settings_orca_profiles_label": "Profili OrcaSlicer", + "settings_orca_profiles_import": "Importa profili", + "skip_confirm_btn": "Salta", + "btn_delete": "Elimina", + "log_print_start": "Inizio stampa:", + "log_print_action": "Stampa:", + "log_delete_failed": "Eliminazione non riuscita" +} diff --git a/web/translations/zh-cn.json b/web/translations/zh-cn.json index 8225ee0..e883fbe 100644 --- a/web/translations/zh-cn.json +++ b/web/translations/zh-cn.json @@ -287,5 +287,23 @@ "log_clear": "✕ 清空", "log_filter_placeholder": "筛选…", "skip_cancel": "取消", - "skip_confirm": "跳过" + "skip_confirm": "跳过", + "settings_cat_connection": "连接", + "settings_cat_printer": "打印机", + "settings_cat_system": "系统", + "settings_btn_tooltip": "设置", + "settings_printer_name_placeholder": "例如 Kobra X 左", + "settings_device_id_placeholder": "32 个十六进制字符", + "settings_mqtt_username_placeholder": "userXXXXXXXX", + "settings_device_id_hint": "32 个十六进制字符", + "settings_mode_id_placeholder": "20030", + "settings_language": "语言", + "settings_theme_toggle": "切换浅色 / 深色", + "settings_orca_profiles_label": "OrcaSlicer 配置文件", + "settings_orca_profiles_import": "导入配置文件", + "skip_confirm_btn": "跳过", + "btn_delete": "删除", + "log_print_start": "打印开始:", + "log_print_action": "打印:", + "log_delete_failed": "删除失败" }