diff --git a/js/kiri-lang.js b/js/kiri-lang.js new file mode 100644 index 00000000..7b176064 --- /dev/null +++ b/js/kiri-lang.js @@ -0,0 +1,51 @@ +/** Copyright 2014-2019 Stewart Allen -- All Rights Reserved */ + +"use strict"; + +var gs_kiri_lang = exports; + +(function() { + + if (!self.kiri) self.kiri = {}; + if (self.kiri.lang) return; + + var KIRI = self.kiri, + LANG = self.kiri.lang = {}; + + LANG.set = (key) => { + if (LANG[key]) { + let map = LANG[key]; + // default to EN values when missing + Object.keys(LANG.en).forEach(key => { + if (!map[key]) { + map[key] = LANG.en[key]; + } + }); + // update current map from chosen map + Object.keys(map).forEach(key => { + LANG.current[key] = map[key]; + }); + } + } + + // english. other language maps will defer to english + // map for any missing key/value pairs + LANG.en = { + version: "version", + dev_name: "name", + dev_filament: "filament", + dev_fil_desc: "diameter in millimeters", + dev_nozzle: "nozzle", + dev_noz_desc: "diameter in millimeters" + }; + + LANG.test = { + version: "_version_", + dev_name: "_name_" + }; + + LANG.current = {}; + + LANG.set('en'); + +})(); diff --git a/js/kiri.js b/js/kiri.js index fb7c2f7a..9ccbb9b8 100644 --- a/js/kiri.js +++ b/js/kiri.js @@ -459,6 +459,7 @@ self.kiri.license = exports.LICENSE; BASE = SELF.base, UTIL = BASE.util, DBUG = BASE.debug, + LANG = KIRI.lang.current, // --------------- WIN = SELF.window, DOC = SELF.document, @@ -518,12 +519,14 @@ self.kiri.license = exports.LICENSE; local = SETUP.local, mouseMoved = false, camStock = null, - camTopZ = 0, - alerts = [ [ "version " + kiri.version, Date.now() ] ]; + camTopZ = 0; DBUG.enable(); if (SETUP.rm) renderMode = parseInt(SETUP.rm[0]); + if (SETUP.ln) KIRI.lang.set(SETUP.ln[0]); + + var alerts = [ [ `${LANG.version} ${kiri.version}`, Date.now() ] ]; KIRI.api = { ui : UI, @@ -2296,9 +2299,9 @@ self.kiri.license = exports.LICENSE; deviceSelect: $('device-select'), device: UC.newGroup("device", $('device')), - deviceName: UC.newInput("name", {size:20}), - setDeviceFilament: UC.newInput("filament", {title:"diameter in millimeters", convert:UC.toFloat, modes:FDM}), - setDeviceNozzle: UC.newInput("nozzle", {title:"diameter in millimeters", convert:UC.toFloat, modes:FDM}), + deviceName: UC.newInput(LANG.dev_name, {size:20}), + setDeviceFilament: UC.newInput(LANG.dev_filament, {title:LANG.dev_fil_desc, convert:UC.toFloat, modes:FDM}), + setDeviceNozzle: UC.newInput(LANG.dev_nozzle, {title:LANG.dev_noz_desc, convert:UC.toFloat, modes:FDM}), setDeviceWidth: UC.newInput("bed width", {title:"millimeters", convert:UC.toInt}), setDeviceDepth: UC.newInput("bed depth", {title:"millimeters", convert:UC.toInt}), setDeviceHeight: UC.newInput("max height", {title:"max build height\nin millimeters", convert:UC.toInt, modes:FDM}), diff --git a/js/web-server.js b/js/web-server.js index 2a3ed769..2ddbf2ae 100644 --- a/js/web-server.js +++ b/js/web-server.js @@ -754,6 +754,7 @@ var ver = require('../js/license.js'), "moto-load-stl", "moto-db", "moto-ui", + "kiri-lang", "kiri-db", "kiri-slice", "kiri-slicer", @@ -799,6 +800,7 @@ var ver = require('../js/license.js'), "geo-polygon", "geo-polygons", "geo-gyroid", + "kiri-lang", "kiri-slice", "kiri-slicer", "kiri-driver-fdm",