diff --git a/apps/about/ChangeLog b/apps/about/ChangeLog index ffe9de081..e236e4b34 100644 --- a/apps/about/ChangeLog +++ b/apps/about/ChangeLog @@ -11,3 +11,4 @@ 0.11: Bangle.js2: New pixels, btn1 to exit 0.12: Actual pixels as of 29th Nov 2021 0.13: Bangle.js 2: Use setUI to add software back button +0.14: Add automatic translation of more strings diff --git a/apps/about/app-bangle1.js b/apps/about/app-bangle1.js index 28a292376..dd94c1e84 100644 --- a/apps/about/app-bangle1.js +++ b/apps/about/app-bangle1.js @@ -11,8 +11,8 @@ g.drawString("BANGLEJS.COM",120,y-4); } else { y=-(4+h); // small screen, start right at top } -g.drawString("Powered by Espruino",0,y+=4+h); -g.drawString("Version "+ENV.VERSION,0,y+=h); +g.drawString(/*LANG*/"Powered by Espruino",0,y+=4+h); +g.drawString(/*LANG*/"Version "+ENV.VERSION,0,y+=h); g.drawString("Commit "+ENV.GIT_COMMIT,0,y+=h); function getVersion(name,file) { var j = s.readJSON(file,1); @@ -24,9 +24,9 @@ getVersion("Launcher","launch.info"); getVersion("Settings","setting.info"); y+=h; -g.drawString(MEM.total+" JS Variables available",0,y+=h); -g.drawString("Storage: "+(require("Storage").getFree()>>10)+"k free",0,y+=h); -if (ENV.STORAGE) g.drawString(" "+(ENV.STORAGE>>10)+"k total",0,y+=h); +g.drawString(MEM.total+/*LANG*/" JS Variables available",0,y+=h); +g.drawString("Storage: "+(require("Storage").getFree()>>10)+/*LANG*/"k free",0,y+=h); +if (ENV.STORAGE) g.drawString(" "+(ENV.STORAGE>>10)+/*LANG*/"k total",0,y+=h); if (ENV.SPIFLASH) g.drawString("SPI Flash: "+(ENV.SPIFLASH>>10)+"k",0,y+=h); g.setFontAlign(0,-1); g.flip(); diff --git a/apps/about/app-bangle2.js b/apps/about/app-bangle2.js index 471b0670f..ccffd183f 100644 --- a/apps/about/app-bangle2.js +++ b/apps/about/app-bangle2.js @@ -35,17 +35,17 @@ function drawInfo() { g.setFont("4x6").setFontAlign(0,0).drawString("BANGLEJS.COM",W-30,56); var h=8, y = 24-h; g.setFont("6x8").setFontAlign(-1,-1); - g.drawString("Powered by Espruino",0,y+=4+h); - g.drawString("Version "+ENV.VERSION,0,y+=h); + g.drawString(/*LANG*/"Powered by Espruino",0,y+=4+h); + g.drawString(/*LANG*/"Version "+ENV.VERSION,0,y+=h); g.drawString("Commit "+ENV.GIT_COMMIT,0,y+=h); getVersion("Bootloader","boot.info"); getVersion("Launcher","launch.info"); getVersion("Settings","setting.info"); - g.drawString(MEM.total+" JS Vars",0,y+=h); - g.drawString("Storage: "+(require("Storage").getFree()>>10)+"k free",0,y+=h); - if (ENV.STORAGE) g.drawString(" "+(ENV.STORAGE>>10)+"k total",0,y+=h); + g.drawString(MEM.total+/*LANG*/" JS Vars",0,y+=h); + g.drawString("Storage: "+(require("Storage").getFree()>>10)+/*LANG*/"k free",0,y+=h); + if (ENV.STORAGE) g.drawString(" "+(ENV.STORAGE>>10)+/*LANG*/"k total",0,y+=h); if (ENV.SPIFLASH) g.drawString("SPI Flash: "+(ENV.SPIFLASH>>10)+"k",0,y+=h); imageTop = y+h; imgScroll = imgHeight-imageTop; diff --git a/apps/about/metadata.json b/apps/about/metadata.json index 648576576..52cd37b7d 100644 --- a/apps/about/metadata.json +++ b/apps/about/metadata.json @@ -1,7 +1,7 @@ { "id": "about", "name": "About", - "version": "0.13", + "version": "0.14", "description": "Bangle.js About page - showing software version, stats, and a collaborative mural from the Bangle.js KickStarter backers", "icon": "app.png", "tags": "tool,system", diff --git a/apps/alarm/ChangeLog b/apps/alarm/ChangeLog index 6e648d42a..6ce6147ca 100644 --- a/apps/alarm/ChangeLog +++ b/apps/alarm/ChangeLog @@ -35,4 +35,5 @@ Add option for auto-delete a timer after it expires 0.33: Allow hiding timers&alarms 0.34: Add "Confirm" option to alarm/timer edit menus +0.35: Add automatic translation of more strings diff --git a/apps/alarm/app.js b/apps/alarm/app.js index efcabfb6d..1414c0b90 100644 --- a/apps/alarm/app.js +++ b/apps/alarm/app.js @@ -183,7 +183,7 @@ function decodeDOW(alarm) { .map((day, index) => alarm.dow & (1 << (index + firstDayOfWeek)) ? day : "_") .join("") .toLowerCase() - : "Once" + : /*LANG*/"Once" } function showEditRepeatMenu(repeat, dow, dowChangeCallback) { diff --git a/apps/alarm/metadata.json b/apps/alarm/metadata.json index 2e4ea9f94..a02985851 100644 --- a/apps/alarm/metadata.json +++ b/apps/alarm/metadata.json @@ -2,7 +2,7 @@ "id": "alarm", "name": "Alarms & Timers", "shortName": "Alarms", - "version": "0.34", + "version": "0.35", "description": "Set alarms and timers on your Bangle", "icon": "app.png", "tags": "tool,alarm,widget", diff --git a/apps/health/ChangeLog b/apps/health/ChangeLog index 25909891a..fc8f2c950 100644 --- a/apps/health/ChangeLog +++ b/apps/health/ChangeLog @@ -15,3 +15,4 @@ 0.14: Move settings 0.15: Fix charts (fix #1366) 0.16: Code tidyup, add back button in top left of health app graphs +0.17: Add automatic translation of bar chart labels diff --git a/apps/health/app.js b/apps/health/app.js index 576e1d02f..844dd7241 100644 --- a/apps/health/app.js +++ b/apps/health/app.js @@ -41,7 +41,7 @@ function stepsPerHour() { var data = new Uint16Array(24); require("health").readDay(new Date(), h=>data[h.hr]+=h.steps); setButton(menuStepCount); - barChart("HOUR", data); + barChart(/*LANG*/"HOUR", data); } function stepsPerDay() { @@ -49,7 +49,7 @@ function stepsPerDay() { var data = new Uint16Array(31); require("health").readDailySummaries(new Date(), h=>data[h.day]+=h.steps); setButton(menuStepCount); - barChart("DAY", data); + barChart(/*LANG*/"DAY", data); } function hrmPerHour() { @@ -62,7 +62,7 @@ function hrmPerHour() { }); data.forEach((d,i)=>data[i] = d/cnt[i]); setButton(menuHRM); - barChart("HOUR", data); + barChart(/*LANG*/"HOUR", data); } function hrmPerDay() { @@ -75,7 +75,7 @@ function hrmPerDay() { }); data.forEach((d,i)=>data[i] = d/cnt[i]); setButton(menuHRM); - barChart("DAY", data); + barChart(/*LANG*/"DAY", data); } function movementPerHour() { @@ -83,7 +83,7 @@ function movementPerHour() { var data = new Uint16Array(24); require("health").readDay(new Date(), h=>data[h.hr]+=h.movement); setButton(menuMovement); - barChart("HOUR", data); + barChart(/*LANG*/"HOUR", data); } function movementPerDay() { @@ -91,7 +91,7 @@ function movementPerDay() { var data = new Uint16Array(31); require("health").readDailySummaries(new Date(), h=>data[h.day]+=h.movement); setButton(menuMovement); - barChart("DAY", data); + barChart(/*LANG*/"DAY", data); } // Bar Chart Code @@ -163,7 +163,7 @@ function setButton(fn) { swipe:(lr,ud) => { if (lr == 1) { // HOUR data starts at index 0, DAY data starts at index 1 - chart_index = Math.max((chart_label == "DAY") ? -3 : -4, chart_index - 1); + chart_index = Math.max((chart_label == /*LANG*/"DAY") ? -3 : -4, chart_index - 1); } else if (lr<0) { chart_index = Math.min(data_len - 5, chart_index + 1); } else { diff --git a/apps/health/metadata.json b/apps/health/metadata.json index 82ae09356..d4eab1f38 100644 --- a/apps/health/metadata.json +++ b/apps/health/metadata.json @@ -1,7 +1,7 @@ { "id": "health", "name": "Health Tracking", - "version": "0.16", + "version": "0.17", "description": "Logs health data and provides an app to view it", "icon": "app.png", "tags": "tool,system,health", diff --git a/apps/sched/ChangeLog b/apps/sched/ChangeLog index f2dd54338..711326200 100644 --- a/apps/sched/ChangeLog +++ b/apps/sched/ChangeLog @@ -15,3 +15,4 @@ Fix wrong fallback for buzz pattern 0.13: Ask to delete a timer after stopping it 0.14: Added clkinfo for alarms and timers +0.15: Automatic translation of some string in clkinfo diff --git a/apps/sched/clkinfo.js b/apps/sched/clkinfo.js index 71992dbb8..3bd11f70b 100644 --- a/apps/sched/clkinfo.js +++ b/apps/sched/clkinfo.js @@ -31,7 +31,7 @@ function getAlarmText(a){ if(a.timer) { - if(!a.on) return "off"; + if(!a.on) return /*LANG*/"off"; let time = Math.round(alarm.getTimeToAlarm(a)/(60*1000)); if(time > 60) time = Math.round(time / 60) + "h"; @@ -52,7 +52,7 @@ var img = iconAlarmOn; //get only alarms not created by other apps var alarmItems = { - name: "Alarms", + name: /*LANG*/"Alarms", img: img, dynamic: true, items: alarm.getAlarms().filter(a=>!a.appid) diff --git a/apps/sched/metadata.json b/apps/sched/metadata.json index 4b38ee653..a457d0f44 100644 --- a/apps/sched/metadata.json +++ b/apps/sched/metadata.json @@ -1,7 +1,7 @@ { "id": "sched", "name": "Scheduler", - "version": "0.14", + "version": "0.15", "description": "Scheduling library for alarms and timers", "icon": "app.png", "type": "scheduler", diff --git a/apps/setting/' b/apps/setting/' new file mode 100644 index 000000000..bf78c50b6 --- /dev/null +++ b/apps/setting/' @@ -0,0 +1,62 @@ +0.02: Add support for 30-minute timezones. +0.03: Add support for Welcome app +0.04: Add setting to disable log messages +0.05: Fix Settings json +0.06: Remove distance setting as there's a separate app for Locale now +0.07: Added vibrate as beep workaround +0.08: Add support for app/widget settings +0.09: Move Welcome into App/widget settings +0.10: Added LCD wake-up settings + Adds LCD brightness setting +0.11: Make LCD brightness work after leaving settings +0.12: Fix memory leak (#206) + Bring App settings nearer the top + Move LCD Timeout to wakeup menu +0.13: Fix memory leak for App settings + Make capitalization more consistent + Move LCD Brightness menu into more general LCD menu +0.14: Reduce memory usage when running app settings page +0.15: Reduce memory usage when running default clock chooser (#294) +0.16: Reduce memory usage further when running app settings page +0.17: Remove need for "settings" in appid.info +0.18: Don't overwrite existing settings on app update +0.19: Allow BLE HID settings, add README.md +0.20: Fix set time menu, allow dates to roll over +0.21: Add passkey pairing option (BETA) + Add whitelist option (fix #78) +0.22: Move HID to BLE menu +0.23: Change max time offset to 13 for NZ summer daylight time (NZDT) +0.24: Add Quiet Mode settings +0.25: Move boot.js code into 'boot' app itself +0.26: Use Bangle.softOff if available as this keeps the time +0.27: Add Theme menu +0.28: Update Quiet Mode widget (if present) +0.29: Add Customize to Theme menu +0.30: Move '< Back' to the top of menus +0.31: Remove Bangle 1 settings when running on Bangle 2 +0.32: Fix 'beep' menu on Bangle.js 2 +0.33: Really fix 'beep' menu on Bangle.js 2 this time +0.34: Remove Quiet Mode LCD settings: now handled by Quiet Mode Schedule app +0.35: Change App/Widget settings to 'App Settings' so it fits on Bangle screen +0.36: Added 'Utils' menu with helpful utilities for restoring Bangle.js +0.37: Going into passkey menu now saves settings with passkey +0.38: Restructed menus as per forum discussion +0.39: Fix misbehaving debug info option +0.40: Moved off into Utils, put System after Apps +0.41: Stop users disabling all wake-up methods and locking themselves out (fix #1272) +0.42: Fix theme customizer on new Bangle 2 firmware +0.43: Add some Bangle 1 colours to theme customizer +0.44: Add "Start Week On X" option (#1780) + UI improvements to Locale and Date & Time menu +0.45: Add calibrate battery option +0.46: Fix regression after making 'calibrate battery' only for Bangle.js 2 +0.47: Allow colors to be translated + Improve "Turn Off" user experience +0.48: Allow reading custom themes from files +0.49: Now reloads settings properly after 'Calibrate Battery' +0.50: Add Bangle.js 2 touchscreen calibration - for 2v16 or 2v15 cutting edge builds +0.51: Add setting for configuring a launcher +0.52: Add option for left-handed users +0.53: Ensure that when clock is set, clockHasWidgets is set correctly too +0.54: If setting.json is corrupt, ensure it gets re-written +0.55: More strings tagged for automatic translation. diff --git a/apps/setting/ChangeLog b/apps/setting/ChangeLog index 55b61c46a..bf78c50b6 100644 --- a/apps/setting/ChangeLog +++ b/apps/setting/ChangeLog @@ -59,3 +59,4 @@ 0.52: Add option for left-handed users 0.53: Ensure that when clock is set, clockHasWidgets is set correctly too 0.54: If setting.json is corrupt, ensure it gets re-written +0.55: More strings tagged for automatic translation. diff --git a/apps/setting/metadata.json b/apps/setting/metadata.json index 08544cff6..80db81f65 100644 --- a/apps/setting/metadata.json +++ b/apps/setting/metadata.json @@ -1,7 +1,7 @@ { "id": "setting", "name": "Settings", - "version": "0.54", + "version": "0.55", "description": "A menu for setting up Bangle.js", "icon": "settings.png", "tags": "tool,system", diff --git a/apps/setting/settings.js b/apps/setting/settings.js index 2350a8965..b58615913 100644 --- a/apps/setting/settings.js +++ b/apps/setting/settings.js @@ -146,7 +146,7 @@ function showAlertsMenu() { }, /*LANG*/"Quiet Mode": { value: settings.quiet|0, - format: v => ["Off", "Alarms", "Silent"][v%3], + format: v => [/*LANG*/"Off", /*LANG*/"Alarms", /*LANG*/"Silent"][v%3], onchange: v => { settings.quiet = v%3; updateSettings(); @@ -162,9 +162,9 @@ function showAlertsMenu() { function showBLEMenu() { var hidV = [false, "kbmedia", "kb", "com", "joy"]; - var hidN = ["Off", "Kbrd & Media", "Kbrd", "Kbrd & Mouse" ,"Joystick"]; + var hidN = [/*LANG*/"Off", /*LANG*/"Kbrd & Media", /*LANG*/"Kbrd", /*LANG*/"Kbrd & Mouse", /*LANG*/"Joystick"]; E.showMenu({ - '': { 'title': 'Bluetooth' }, + '': { 'title': /*LANG*/'Bluetooth' }, '< Back': ()=>showMainMenu(), /*LANG*/'Make Connectable': ()=>makeConnectable(), /*LANG*/'BLE': { @@ -193,11 +193,11 @@ function showBLEMenu() { } }, /*LANG*/'Passkey BETA': { - value: settings.passkey?settings.passkey:"none", + value: settings.passkey?settings.passkey:/*LANG*/"none", onchange: () => setTimeout(showPasskeyMenu) // graphical_menu redraws after the call }, /*LANG*/'Whitelist': { - value: settings.whitelist?(settings.whitelist.length+" devs"):"off", + value: settings.whitelist?(settings.whitelist.length+/*LANG*/" devs"):/*LANG*/"off", onchange: () => setTimeout(showWhitelistMenu) // graphical_menu redraws after the call } }); @@ -606,7 +606,7 @@ function showUtilMenu() { menu[/*LANG*/'Reset Settings'] = () => { E.showPrompt(/*LANG*/'Reset to Defaults?',{title:/*LANG*/"Settings"}).then((v) => { if (v) { - E.showMessage('Resetting'); + E.showMessage(/*LANG*/'Resetting'); resetSettings(); setTimeout(showMainMenu, 50); } else showUtilMenu(); @@ -824,6 +824,7 @@ function showAppSettings(app) { function showTouchscreenCalibration() { Bangle.setUI(); + require('widget_utils').hide(); // disable touchscreen calibration (passed coords right through) Bangle.setOptions({touchX1: 0, touchY1: 0, touchX2: g.getWidth(), touchY2: g.getHeight() }); @@ -847,7 +848,7 @@ function showTouchscreenCalibration() { g.drawLine(spot[0],spot[1]-32,spot[0],spot[1]+32); g.drawCircle(spot[0],spot[1], 16); var tapsLeft = (1-currentTry)*4+(4-currentCorner); - g.setFont("6x8:2").setFontAlign(0,0).drawString(tapsLeft+" taps\nto go", g.getWidth()/2, g.getHeight()/2); + g.setFont("6x8:2").setFontAlign(0,0).drawString(tapsLeft+/*LANG*/" taps\nto go", g.getWidth()/2, g.getHeight()/2); } function calcCalibration() { @@ -870,7 +871,7 @@ function showTouchscreenCalibration() { var s = storage.readJSON("setting.json",1)||{}; s.touch = calib; storage.writeJSON("setting.json",s); - g.setFont("6x8:2").setFontAlign(0,0).drawString("Calibrated!", g.getWidth()/2, g.getHeight()/2); + g.setFont("6x8:2").setFontAlign(0,0).drawString(/*LANG*/"Calibrated!", g.getWidth()/2, g.getHeight()/2); // now load the main menu again setTimeout(showLCDMenu, 500); }