/** Copyright 2014-2019 Stewart Allen -- All Rights Reserved */ "use strict"; let gs_kiri_lang = exports; (function() { if (!self.kiri) self.kiri = {}; if (self.kiri.lang) return; let KIRI = self.kiri, LANG = self.kiri.lang = {}, lset = navigator.language.toLocaleLowerCase(); LANG.set = function() { let map, key, keys = [...arguments]; for (let i=0; i { if (!map[key]) { map[key] = LANG.en[key]; missing.push(key); } }); // update current map from chosen map Object.keys(map).forEach(key => { if (LANG.en[key]) { LANG.current[key] = map[key]; } else { invalid.push(key); } }); if (missing.length) { console.log(`language map "${key}" missing keys [${missing.length}]: ${missing.join(', ')}`); } if (invalid.length) { console.log(`language map "${key}" invalid keys [${invalid.length}]: ${invalid.join(', ')}`); } return key; } return undefined; } // english. other language maps will defer to english // map for any missing key/value pairs LANG['en'] = LANG['en-us'] = { version: "version", // DEVICE dialog (_s = label, _l = hover help) dv_gr_dev: "device", dv_name_s: "name", dv_name_l: "device name", dv_fila_s: "filament", dv_fila_l: "diameter in millimeters", dv_nozl_s: "nozzle", dv_nozl_l: "diameter in millimeters", dv_bedw_s: "bed width", dv_bedw_l: "millimeters", dv_bedd_s: "bed depth", dv_bedd_l: "millimeters", dv_bedh_s: "max height", dv_bedh_l: "max build height\nin millimeters", dv_spmx_s: "max spindle rpm", dv_spmx_l: "max spindle speed\n0 to disable", dv_xtab_s: "extrude absolute", dv_xtab_l: "extrusion moves absolute", dv_orgc_s: "origin center", dv_orgc_l: "bed origin center", dv_orgt_s: "origin top", dv_orgt_l: "part z origin top", dv_bedc_s: "circular bed", dv_bedc_l: "device bed is circular", // DEVICE dialog gcode (_s = label, _l = hover help) dv_gr_gco: "gcode", dv_fanp_s: "fan power", dv_fanp_l: "set cooling fan power", dv_prog_s: "progress", dv_prog_l: "output on each % progress", dv_layr_s: "layer", dv_layr_l: "output at each\nlayer change", dv_tksp_s: "token spacing", dv_tksp_l: "gcode token spacer", dv_strc_s: "strip comments", dv_strc_l: "strip gcode comments", dv_fext_s: "file extension", dv_fext_l: "file name extension", dv_dwll_s: "dwell", dv_dwll_l: "gcode dwell script", dv_tool_s: "tool change", dv_tool_l: "tool change script", dv_sspd_s: "spindle speed", dv_sspd_l: "set spindle speed", dv_paus_s: "pause", dv_paus_l: "gcode pause script", dv_head_s: "header", dv_head_l: "gcode header script", dv_foot_s: "footer", dv_foot_l: "gcode footer script", dv_lzon_s: "laser on", dv_lzon_l: "gcode laser on script", dv_lzof_s: "laser off", dv_lzof_l: "gcode laser off script", // MODE menu mo_menu: "mode", mo_fdmp: "FDM Printing", mo_lazr: "Laser Cutting", mo_cncm: "CNC Milling", // SETUP menu su_menu: "setup", su_devi: "Devices", su_tool: "Tools", su_locl: "Local", su_help: "Help", // FUNCTION menu fn_menu: "function", fn_impo: "Import", fn_arra: "Arrange", fn_slic: "Slice", fn_prev: "Preview", fn_expo: "Export", // VIEW menu vu_menu: "view", vu_home: "home", vu_rset: "reset", vu_sptp: "top", vu_spfr: "front", vu_splt: "left", vu_sprt: "right", // WORKSPACE menu ws_menu: "workspace", ws_save: "Save", ws_cler: "Clear", // OPTIONS menu op_menu: "options", op_show_s: "show origin", op_show_l: "show device or process origin", op_alig_s: "align top", op_alig_l: "align parts to the\ntallest part when\nno stock is set", op_auto_s: "auto layout", op_auto_l: "automatically layout platform\nwhen new items added\nor when arrange clicked\nmore than once", op_free_s: "free layout", op_free_l: "permit dragable layout", op_invr_s: "invert zoom", op_invr_l: "invert mouse wheel\nscroll zoom", op_unit_s: "units", op_unit_l: "workspace units affects\nspeeds and distances", // LAYERS pop-menu la_menu: "layers", la_olin: "outline", la_trce: "trace", la_face: "facing", la_ruff: "roughing", la_fini: "finishing", la_finx: "finish x", la_finy: "finish y", la_dlta: "delta", la_slds: "solids", la_fill: "solid fill", la_sprs: "sparse", la_sprt: "support", la_prnt: "print", la_move: "moves", // SETTINGS menu se_menu: "settings", se_load: "load", se_save: "save", se_xprt: "expert", se_bsic: "basic", // SLICING menu sl_menu: "slicing" }; LANG['test'] = { bogus: "not a valid key" }; Object.keys(LANG.en).forEach(key => { LANG.test[key] = `*${LANG.en[key]}*`; }); LANG.current = {}; LANG.set(lset, lset.split('-')[0]); })();