From 4c8c1a6d2f523a399ea1fd90a7f45033752e5563 Mon Sep 17 00:00:00 2001 From: Diego Pereyra Date: Sat, 15 Jan 2022 16:09:58 -0300 Subject: [PATCH 01/59] Option to keep or not the textual translations --- apps/locale/locale.html | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/apps/locale/locale.html b/apps/locale/locale.html index 90a2e8d40..fa857d9f8 100644 --- a/apps/locale/locale.html +++ b/apps/locale/locale.html @@ -10,6 +10,9 @@ +
+ +

Then click

@@ -106,12 +109,18 @@ exports = { name : "en_GB", currencySym:"£", const lang = languageSelector.options[languageSelector.selectedIndex].value; console.log(`Language ${lang}`); + const translations = document.getElementById('translations').checked; + console.log(`Translations: ${translations}`); + const locale = locales[lang]; if (!locale) { alert(`Language ${lang} not found!`); return; } + if (!translations) + locale.trans = null; + const codePageName = "ISO8859-1"; if (locale.codePage) codePageName = locale.codePage; From 58a9b19aa1e6ea3e7f5c49ef4427c07697669d42 Mon Sep 17 00:00:00 2001 From: Diego Pereyra Date: Sat, 15 Jan 2022 16:23:48 -0300 Subject: [PATCH 02/59] typo --- apps/locale/locale.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/locale/locale.html b/apps/locale/locale.html index fa857d9f8..d02dab3ac 100644 --- a/apps/locale/locale.html +++ b/apps/locale/locale.html @@ -11,7 +11,7 @@
- +

Then click

From 61079c031dc868c0fc86997b41b89f3fa33ef00e Mon Sep 17 00:00:00 2001 From: xxDUxx <96152564+xxDUxx@users.noreply.github.com> Date: Tue, 8 Feb 2022 12:13:56 +0100 Subject: [PATCH 03/59] Update app.js --- apps/contourclock/app.js | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/apps/contourclock/app.js b/apps/contourclock/app.js index 310b068b6..a5440845d 100644 --- a/apps/contourclock/app.js +++ b/apps/contourclock/app.js @@ -6,16 +6,6 @@ if (settings.fontIndex==undefined) { settings.fontIndex=0; require('Storage').writeJSON("myapp.json", settings); } -require("FontTeletext10x18Ascii").add(Graphics); - -function queueDraw() { - if (drawTimeout) clearTimeout(drawTimeout); - drawTimeout = setTimeout(function() { - drawTimeout = undefined; - draw(); - queueDraw(); - }, 60000 - (Date.now() % 60000)); -} function draw() { var date = new Date(); @@ -28,9 +18,12 @@ function draw() { require('contourclock').drawClock(settings.fontIndex); } +require("FontTeletext10x18Ascii").add(Graphics); Bangle.setUI("clock"); g.clear(); Bangle.loadWidgets(); Bangle.drawWidgets(); draw(); -queueDraw(); +setTimeout(function() { + setInterval(draw,60000); +}, 60000 - Date.now() % 60000); From 02a0759b3987484cb1edd5e5a2cd398d791d83bd Mon Sep 17 00:00:00 2001 From: xxDUxx <96152564+xxDUxx@users.noreply.github.com> Date: Tue, 8 Feb 2022 12:14:51 +0100 Subject: [PATCH 04/59] Update ChangeLog --- apps/contourclock/ChangeLog | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/contourclock/ChangeLog b/apps/contourclock/ChangeLog index f06033aca..161d87644 100644 --- a/apps/contourclock/ChangeLog +++ b/apps/contourclock/ChangeLog @@ -1,3 +1,4 @@ 0.01: New app 0.20: Settings menu, different fonts, inverse fonts 0.21: Fixed settings menu, four more fonts +0.22: Changed timing code, original "Nunito" Font is back! From 48fae6c849031b5181cf5f6144525481da5a6409 Mon Sep 17 00:00:00 2001 From: xxDUxx <96152564+xxDUxx@users.noreply.github.com> Date: Tue, 8 Feb 2022 12:19:15 +0100 Subject: [PATCH 05/59] Add files via upload --- apps/contourclock/font-Nunito.json | 37 ++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 apps/contourclock/font-Nunito.json diff --git a/apps/contourclock/font-Nunito.json b/apps/contourclock/font-Nunito.json new file mode 100644 index 000000000..f199a5fab --- /dev/null +++ b/apps/contourclock/font-Nunito.json @@ -0,0 +1,37 @@ +{ + "name":"Nunito", + "size":"80", + "characters":[ + {"width" : "62", "buffer":"VVVVVVV//////9VVVVVVVVVVVVX////////1VVVVVVVVVVX/wAAAAAA/9VVVVVVVVVV/AAAAAAAAD/VVVVVVVVV/AAAAAAAAAA/VVVVVVVVfwAAAAAAAAAAP1VVVVVVXwAAAAAAAAAAAP1VVVVVV8AAAAAAAAAAAAD1VVVVVfAAAAAAAAAAAAAPVVVVVXwAAAAAAAAAAAAAPVVVVV8AAAAAAAAAAAAAAPVVVVXwAAAAAAAAAAAAAAPVVVV8AAAAAAAAAAAAAAA9VVVXwAAAAAAAAAAAAAAA9VVV8AAAAAAAAAAAAAAAD1VVXwAAAAAAAAAAAAAAAD1VV8AAAAAAAAAAAAAAAAPVVXwAAAAAAA/8AAAAAAAPVV8AAAAAAA//8AAAAAAA9VXwAAAAAAP1V8AAAAAAD1VfAAAAAAD1VV8AAAAAAD1XwAAAAAA9VVV8AAAAAAPVfAAAAAAD1VVV8AAAAAA9V8AAAAAA9VVVXwAAAAAD1XwAAAAAD1VVVfAAAAAAD18AAAAAAPVVVVfAAAAAAPXwAAAAAD1VVVV8AAAAAA9fAAAAAAPVVVVXwAAAAAD18AAAAAA9VVVVfAAAAAAPXwAAAAAD1VVVV8AAAAAAPfAAAAAAPVVVVXwAAAAAA98AAAAAA9VVVVXwAAAAAD/AAAAAAD1VVVVfAAAAAAP8AAAAAAPVVVVV8AAAAAA/wAAAAAA9VVVVXwAAAAAD/AAAAAAD1VVVVfAAAAAAP8AAAAAA9VVVVV8AAAAAA/wAAAAAD1VVVVXwAAAAAD/AAAAAAPVVVVVfAAAAAAP8AAAAAA9VVVVV8AAAAAA/wAAAAAD1VVVVXwAAAAAD/AAAAAAPVVVVVfAAAAAAP8AAAAAA9VVVVV8AAAAAA/wAAAAAA9VVVVXwAAAAAD/AAAAAAD1VVVVfAAAAAAP8AAAAAAPVVVVV8AAAAAA/wAAAAAA9VVVVXwAAAAAD3wAAAAAD1VVVVfAAAAAAPfAAAAAAPVVVVXwAAAAAA98AAAAAA9VVVVfAAAAAAD3wAAAAAD1VVVV8AAAAAA9fAAAAAAPVVVVXwAAAAAD18AAAAAA9VVVVfAAAAAAPXwAAAAAA9VVVV8AAAAAA9XwAAAAAD1VVVfAAAAAAD1fAAAAAAPVVVV8AAAAAA9V8AAAAAAPVVVXwAAAAAD1XwAAAAAA9VVV8AAAAAAPVXwAAAAAA9VVXwAAAAAA9VfAAAAAAA9VV8AAAAAAPVV8AAAAAAA9V/AAAAAAA9VV8AAAAAAA//wAAAAAAD1VXwAAAAAAA/wAAAAAAA9VVXwAAAAAAAAAAAAAAAD1VVfAAAAAAAAAAAAAAAA9VVV8AAAAAAAAAAAAAAAD1VVV8AAAAAAAAAAAAAAA9VVVV8AAAAAAAAAAAAAAD1VVVXwAAAAAAAAAAAAAA9VVVVXwAAAAAAAAAAAAAPVVVVVXwAAAAAAAAAAAAA9VVVVVXwAAAAAAAAAAAAPVVVVVVfwAAAAAAAAAAAD1VVVVVVfwAAAAAAAAAAD9VVVVVVVXwAAAAAAAAAA/VVVVVVVVX8AAAAAAAAA/VVVVVVVVVX/AAAAAAAA/1VVVVVVVVVV/8AAAAAD/1VVVVVVVVVVVf///////1VVVVVVVVVVVVV//////VVVVVVVQ=="}, + ] +} + {"width" : "61", "buffer":"VVVVVVVVf////VVVVVVVVVVVVVVV/////9VVVVVVVVVVVVVX/AAAAD1VVVVVVVVVVVVf8AAAAAPVVVVVVVVVVVVfwAAAAAA9VVVVVVVVVVV/AAAAAAAPVVVVVVVVVVX/AAAAAAAA9VVVVVVVVVX8AAAAAAAAPVVVVVVVVVfwAAAAAAAAD1VVVVVVVVfwAAAAAAAAA9VVVVVVVV/AAAAAAAAAAPVVVVVVVV/AAAAAAAAAAD1VVVVVVX8AAAAAAAAAAA9VVVVVVX8AAAAAAAAAAAPVVVVVVXwAAAAAAAAAAAD1VVVVVXwAAAAAAAAAAAA9VVVVVXwAAAAAAAAAAAAPVVVVVV8AAAAAAAAAAAAD1VVVVVfAAAAAAAAAAAAA9VVVVVfAAAAAAAAAAAAAPVVVVVXwAAAAAAAAAAAAD1VVVVV8AAAAAAAAAAAAA9VVVVVfAAAAAAAAAAAAAPVVVVVXwAAAAAAAAAAAAD1VVVVVfAAAAAAAAAAAAA9VVVVVXwAAAAAAAAAAAAPVVVVVVfAAAAPAAAAAAAD1VVVVVXwAAA/8AAAAAAA9VVVVVVfAAD/XwAAAAAAPVVVVVVV///9V8AAAAAAD1VVVVVVX//1VfAAAAAAA9VVVVVVVVVVVXwAAAAAAPVVVVVVVVVVVV8AAAAAAD1VVVVVVVVVVVfAAAAAAA9VVVVVVVVVVVXwAAAAAAPVVVVVVVVVVVV8AAAAAAD1VVVVVVVVVVVfAAAAAAA9VVVVVVVVVVVXwAAAAAAPVVVVVVVVVVVV8AAAAAAD1VVVVVVVVVVVfAAAAAAA9VVVVVVVVVVVXwAAAAAAPVVVVVVVVVVVV8AAAAAAD1VVVVVVVVVVVfAAAAAAA9VVVVVVVVVVVXwAAAAAAPVVVVVVVVVVVV8AAAAAAD1VVVVVVVVVVVfAAAAAAA9VVVVVVVVVVVXwAAAAAAPVVVVVVVVVVVV8AAAAAAD1VVVVVVVVVVVfAAAAAAA9VVVVVVVVVVVXwAAAAAAPVVVVVVVVVVVV8AAAAAAD1VVVVVVVVVVVfAAAAAAA9VVVVVVVVVVVXwAAAAAAPVVVVVVVVVVVV8AAAAAAD1VVVVVVVVVVVfAAAAAAA9VVVVVVVVVVVXwAAAAAAPVVVVVVVVVVVV8AAAAAAD1VVVVVVVVVVVfAAAAAAA9VVVVVVVVVVVXwAAAAAAPVVVVVVVVX///wAAAAAAA///9VVVV////wAAAAAAAD////VVX/wAAAAAAAAAAAAAAP9VX8AAAAAAAAAAAAAAAAD1V8AAAAAAAAAAAAAAAAAPV8AAAAAAAAAAAAAAAAAD1fAAAAAAAAAAAAAAAAAAPfAAAAAAAAAAAAAAAAAAD3wAAAAAAAAAAAAAAAAAA98AAAAAAAAAAAAAAAAAAPfAAAAAAAAAAAAAAAAAAD3wAAAAAAAAAAAAAAAAAA98AAAAAAAAAAAAAAAAAAPXwAAAAAAAAAAAAAAAAAD18AAAAAAAAAAAAAAAAAD1fAAAAAAAAAAAAAAAAAA9V8AAAAAAAAAAAAAAAAAPVXwAAAAAAAAAAAAAAAA/VVf/////////////////VVV////////////////9VVVVVVVVVVVVVVVVVVVVVU="}, + ] +} + {"width" : "61", "buffer":"VVVVV////////1VVVVVVVVVVf/////////9VVVVVVVVX/8AAAAAAAA/9VVVVVVVf/AAAAAAAAAAP9VVVVVV/wAAAAAAAAAAAP1VVVVV/AAAAAAAAAAAAAP1VVVV8AAAAAAAAAAAAAA/VVVV8AAAAAAAAAAAAAAA9VVV8AAAAAAAAAAAAAAAD1VVfAAAAAAAAAAAAAAAA9VVXwAAAAAAAAAAAAAAAD1VXwAAAAAAAAAAAAAAAA9VV8AAAAAAAAAAAAAAAAD1VfAAAAAAAAAAAAAAAAA9VXwAAAAAAAAAAAAAAAAD1VfAAAAAAAAAAAAAAAAA9VXwAAAAAAAAAAAAAAAAPVV8AAAAAD/8AAAAAAAAD1VXwAAAD////AAAAAAAAPVVfAAA//1Vf8AAAAAAAD1VV/wP/1VVVXwAAAAAAA9VVX//9VVVVVfAAAAAAAPVVVV/VVVVVVV8AAAAAAD1VVVVVVVVVVVfAAAAAAA9VVVVVVVVVVVV8AAAAAAPVVVVVVVVVVVVfAAAAAAD1VVVVVVVVVVVXwAAAAAA9VVVVVVVVVVVV8AAAAAAPVVVVVVVVVVVV8AAAAAAPVVVVVVVVVVVVfAAAAAAD1VVVVVVVVVVVXwAAAAAA9VVVVVVVVVVVXwAAAAAAPVVVVVVVVVVVXwAAAAAAPVVVVVVVVVVVV8AAAAAAD1VVVVVVVVVVV8AAAAAAA9VVVVVVVVVVV8AAAAAAA9VVVVVVVVVVV8AAAAAAAPVVVVVVVVVVV8AAAAAAAPVVVVVVVVVVV8AAAAAAAD1VVVVVVVVVV8AAAAAAAD1VVVVVVVVVV8AAAAAAAA9VVVVVVVVVV8AAAAAAAA9VVVVVVVVVV8AAAAAAAA9VVVVVVVVVV8AAAAAAAA9VVVVVVVVVV8AAAAAAAAPVVVVVVVVVV8AAAAAAAAPVVVVVVVVVVfAAAAAAAAPVVVVVVVVVVfAAAAAAAAPVVVVVVVVVVfAAAAAAAAPVVVVVVVVVVfAAAAAAAAPVVVVVVVVVVfAAAAAAAAPVVVVVVVVVVfAAAAAAAAPVVVVVVVVVVfAAAAAAAAPVVVVVVVVVVfAAAAAAAAPVVVVVVVVVVfAAAAAAAAPVVVVVVVVVVfAAAAAAAAPVVVVVVVVVVfAAAAAAAAPVVVVVVVVVVfAAAAAAAAPVVVVVVVVVVfAAAAAAAAPVVVVVVVVVVfAAAAAAAAA//////1VVVXwAAAAAAAAD//////9VVXwAAAAAAAAAAAAAAA/9VXwAAAAAAAAAAAAAAAAP1V8AAAAAAAAAAAAAAAAA9VfAAAAAAAAAAAAAAAAAD1XwAAAAAAAAAAAAAAAAA9XwAAAAAAAAAAAAAAAAAD18AAAAAAAAAAAAAAAAAA9fAAAAAAAAAAAAAAAAAAPXwAAAAAAAAAAAAAAAAAD18AAAAAAAAAAAAAAAAAA9XwAAAAAAAAAAAAAAAAAPV8AAAAAAAAAAAAAAAAAPVfAAAAAAAAAAAAAAAAAD1XwAAAAAAAAAAAAAAAAA9VfAAAAAAAAAAAAAAAAA9VV/AAAAAAAAAAAAAAAD9VVX////////////////9VVVX///////////////1VVVVVVVVVVVVVVVVVVVVVU="}, + ] +} + {"width" : "60", "buffer":"VVVVVf///////9VVVVVVVVVV//////////9VVVVVVVVf/wAAAAAAAD/1VVVVVVf/AAAAAAAAAAD/VVVVVX/wAAAAAAAAAAAP9VVVVfwAAAAAAAAAAAAA/VVVV8AAAAAAAAAAAAAAD1VVV8AAAAAAAAAAAAAAA9VVXwAAAAAAAAAAAAAAAPVVXwAAAAAAAAAAAAAAAD1VXwAAAAAAAAAAAAAAAD1VXwAAAAAAAAAAAAAAAA9VXwAAAAAAAAAAAAAAAA9VXwAAAAAAAAAAAAAAAAPVXwAAAAAAAAAAAAAAAAPVXwAAAAAAAAAAAAAAAAPVXwAAAAAAAAAAAAAAAAPVV8AAAAAD/8AAAAAAAAD1VfAAAA////8AAAAAAAD1VXwAA//9VX/AAAAAAAD1VV////VVVVXwAAAAAAD1VVf//VVVVVV8AAAAAAD1VVVVVVVVVVVfAAAAAAD1VVVVVVVVVVVfAAAAAAD1VVVVVVVVVVVfAAAAAAD1VVVVVVVVVVVfAAAAAAD1VVVVVVVVVVVfAAAAAAPVVVVVVVVVVVVfAAAAAAPVVVVVVVVVVVX8AAAAAAPVVVVVVVVVVV/wAAAAAA9VVVVVVVX///8AAAAAAA9VVVVVVX////AAAAAAAD1VVVVVVf8AAAAAAAAAAD1VVVVVV8AAAAAAAAAAAPVVVVVVXwAAAAAAAAAAD9VVVVVVXwAAAAAAAAAAP1VVVVVVfAAAAAAAAAAA9VVVVVVVfAAAAAAAAAAD1VVVVVVVfAAAAAAAAAAD1VVVVVVVfAAAAAAAAAAA/VVVVVVVfAAAAAAAAAAAP1VVVVVVfAAAAAAAAAAAA/VVVVVVfAAAAAAAAAAAAP1VVVVVXwAAAAAAAAAAAA9VVVVVXwAAAAAAAAAAAAPVVVVVV8AAAAAAAAAAAAPVVVVVVfwAAAAAAAAAAAD1VVVVVX////8AAAAAAAD1VVVVVVf////8AAAAAAA9VVVVVVVVVVX/AAAAAAA9VVVVVVVVVVVXwAAAAAA9VVVVVVVVVVVV8AAAAAAPVVVVVVVVVVVV8AAAAAAPVVVVVVVVVVVVfAAAAAAPVVVVVVVVVVVVfAAAAAAPVVVVVVVVVVVVfAAAAAAPVVVVVVVVVVVVfAAAAAAPVVX/1VVVVVVV8AAAAAAPVX///1VVVVVXwAAAAAAPVf8AP/1VVVV/AAAAAAAPV8AAAP//9f/8AAAAAAAPXwAAAAP////AAAAAAAAPXwAAAAAADwAAAAAAAAAPfAAAAAAAAAAAAAAAAAA9fAAAAAAAAAAAAAAAAAA9fAAAAAAAAAAAAAAAAAA98AAAAAAAAAAAAAAAAAD18AAAAAAAAAAAAAAAAAD18AAAAAAAAAAAAAAAAAPVfAAAAAAAAAAAAAAAAAPVfAAAAAAAAAAAAAAAAA9VfAAAAAAAAAAAAAAAAD1VXwAAAAAAAAAAAAAAAPVVV8AAAAAAAAAAAAAAD9VVVfAAAAAAAAAAAAAA/1VVVX/AAAAAAAAAAAAP9VVVVV//AAAAAAAAAAD/VVVVVVV//wAAAAAAAP/1VVVVVVVV//////////9VVVVVVVVVVf///////1VVVVVV"}, + ] +} + {"width" : "65", "buffer":"VVVVVVVVVVVVf///1VVVVVVVVVVVVVVVVf////9VVVVVVVVVVVVVVVX8AAAD9VVVVVVVVVVVVVVV8AAAAA9VVVVVVVVVVVVVVfAAAAAD1VVVVVVVVVVVVVXwAAAAAD1VVVVVVVVVVVVV8AAAAAAPVVVVVVVVVVVVVfAAAAAAA9VVVVVVVVVVVVV8AAAAAAD1VVVVVVVVVVVVfAAAAAAAPVVVVVVVVVVVVXwAAAAAAA9VVVVVVVVVVVVfAAAAAAAD1VVVVVVVVVVVXwAAAAAAAD1VVVVVVVVVVV8AAAAAAAAPVVVVVVVVVVVXwAAAAAAAA9VVVVVVVVVVV8AAAAAAAAD1VVVVVVVVVVfAAAAAAAAAPVVVVVVVVVVV8AAAAAAAAA9VVVVVVVVVVfAAAAAAAAAD1VVVVVVVVVXwAAAAAAAAAPVVVVVVVVVV8AAAAAAAAAA9VVVVVVVVVXwAAAAAAAAAD1VVVVVVVVV8AAAAAAAAAAPVVVVVVVVVfAAAAAAAAAAA9VVVVVVVVV8AAAAAAAAAAD1VVVVVVVVfAAAAAAAAAAAPVVVVVVVVXwAAAAAAAAAAA9VVVVVVVVfAAAAAAAAAAAD1VVVVVVVXwAAAAAAAAAAAPVVVVVVVV8AAAAAAAAAAAA9VVVVVVVXwAAAAAAAAAAAD1VVVVVVV8AAAAAAAAAAAAPVVVVVVVfAAAAAAAAAAAAA9VVVVVVV8AAAAAwAAAAAAD1VVVVVVfAAAAAPwAAAAAAPVVVVVVXwAAAAD3wAAAAAA9VVVVVVfAAAAA9fAAAAAAD1VVVVVXwAAAAD18AAAAAAPVVVVVV8AAAAA9XwAAAAAA9VVVVVfAAAAAPVfAAAAAAD1VVVVV8AAAAA9V8AAAAAAPVVVVVfAAAAAPVXwAAAAAA9VVVVXwAAAAD1VfAAAAAAD1VVVVfAAAAAPVV8AAAAAAPVVVVXwAAAAD1VXwAAAAAA9VVVV8AAAAAPVVfAAAAAAD1VVVXwAAAAD1VV8AAAAAAPVVVV8AAAAA9VVXwAAAAAA9VVVXwAAAAD1VVfAAAAAAD1VVV8AAAAAD///wAAAAAAD/1VXwAAAAAD//8AAAAAAAD//VfAAAAAAAAAAAAAAAAAAD/XwAAAAAAAAAAAAAAAAAAAPfAAAAAAAAAAAAAAAAAAAA98AAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAD/AAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAD/AAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAAA98AAAAAAAAAAAAAAAAAAAD3wAAAAAAAAAAAAAAAAAAAPX8AAAAAAAAAAAAAAAAAAD1X/AAAAAAAAAAAAAAAAAD9VV////////8AAAAAAAD//VVVf///////8AAAAAAA//VVVVVVVVVVVV8AAAAAAPVVVVVVVVVVVVVXwAAAAAD1VVVVVVVVVVVVVfAAAAAAPVVVVVVVVVVVVVV8AAAAAA9VVVVVVVVVVVVVV8AAAAAD1VVVVVVVVVVVVVXwAAAAAPVVVVVVVVVVVVVVfAAAAAA9VVVVVVVVVVVVVV8AAAAAPVVVVVVVVVVVVVVV8AAAAA9VVVVVVVVVVVVVVV8AAAAPVVVVVVVVVVVVVVVV/AAAP1VVVVVVVVVVVVVVVV////9VVVVVVVVVVVVVVVVVf//9VVVVVQ=="}, + ] +} + {"width" : "60", "buffer":"VVVX///////////1VVVVVV///////////////VVVVX/8AAAAAAAAAAAP/9VVVfAAAAAAAAAAAAAAA/VVV8AAAAAAAAAAAAAAAPVVXwAAAAAAAAAAAAAAAD1VXwAAAAAAAAAAAAAAAD1VXwAAAAAAAAAAAAAAAA9VXwAAAAAAAAAAAAAAAA9VXwAAAAAAAAAAAAAAAA9VXwAAAAAAAAAAAAAAAA9VfAAAAAAAAAAAAAAAAA9VfAAAAAAAAAAAAAAAAA9VfAAAAAAAAAAAAAAAAA9VfAAAAAAAAAAAAAAAAD1VfAAAAAAAAAAAAAAAAD1VfAAAAAAAAAAAAAAAAPVVfAAAAAAAAAAAAAAAA/VVfAAAAAAAAAAAAAAP/1VVfAAAAAAA/////////VVVfAAAAAAD///////1VVVVfAAAAAAPVVVVVVVVVVVVfAAAAAAPVVVVVVVVVVVVfAAAAAAPVVVVVVVVVVVVfAAAAAAPVVVVVVVVVVVVfAAAAAAPVVVVVVVVVVVVfAAAAAAPVVVVVVVVVVVVfAAAAAAPVVVVVVVVVVVVfAAAAAAPV/////VVVVVVfAAAAAAD///////VVVVVfAAAAAAA/AAAAA/9VVVVfAAAAAAAAAAAAAA/1VVVfAAAAAAAAAAAAAAD9VVVfAAAAAAAAAAAAAAAP1VVfAAAAAAAAAAAAAAAD9VVfAAAAAAAAAAAAAAAAPVVfAAAAAAAAAAAAAAAAPVVfAAAAAAAAAAAAAAAAD1VfAAAAAAAAAAAAAAAAA9VfAAAAAAAAAAAAAAAAA9VfAAAAAAAAAAAAAAAAAPVfAAAAAAAAAAAAAAAAAD1XwAAAAAAAAAAAAAAAAD1XwAAAAAAAAAAAAAAAAD1XwAAAAAAAAAAAAAAAAA9XwAAAAAA//wAAAAAAAA9XwAAAAA////wAAAAAAA9XwAAAAP/VVf8AAAAAAA9V/AAAP/VVVVfAAAAAAAPVf////1VVVVXwAAAAAAPVV///1VVVVVV8AAAAAAPVVVVVVVVVVVV8AAAAAAPVVVVVVVVVVVV8AAAAAAPVVVVVVVVVVVV8AAAAAAPVVVVVVVVVVVV8AAAAAAPVVVVVVVVVVVV8AAAAAAPVVX1VVVVVVVV8AAAAAAPVX//1VVVVVVXwAAAAAAPV/8P/1VVVVVfAAAAAAA9X8AAP/9VVVX8AAAAAAA9fAAAAP//9//wAAAAAAA9fAAAAAD///8AAAAAAAA98AAAAAAADAAAAAAAAAD18AAAAAAAAAAAAAAAAAD18AAAAAAAAAAAAAAAAAD18AAAAAAAAAAAAAAAAAPV8AAAAAAAAAAAAAAAAAPV8AAAAAAAAAAAAAAAAA9V8AAAAAAAAAAAAAAAAD1V8AAAAAAAAAAAAAAAAD1V8AAAAAAAAAAAAAAAAPVVfAAAAAAAAAAAAAAAA9VVfAAAAAAAAAAAAAAAP1VVXwAAAAAAAAAAAAAA/VVVV/AAAAAAAAAAAAAP1VVVVf/AAAAAAAAAAAD/VVVVVV//AAAAAAAAAA/1VVVVVVV//wAAAAAAD/9VVVVVVVVV//////////VVVVVVVVVVVf//////9VVVVVVV"}, + ] +} + {"width" : "62", "buffer":"VVVVVVVVX///////1VVVVVVVVVVVf/////////VVVVVVVVVV//AAAAAAAD/9VVVVVVVV/8AAAAAAAAAP/VVVVVVVfwAAAAAAAAAAA/VVVVVVfwAAAAAAAAAAAAPVVVVVX8AAAAAAAAAAAAAPVVVVV8AAAAAAAAAAAAAA9VVVVfAAAAAAAAAAAAAAD1VVVXwAAAAAAAAAAAAAAD1VVV8AAAAAAAAAAAAAAAPVVVfAAAAAAAAAAAAAAAA9VVXwAAAAAAAAAAAAAAAD1VV8AAAAAAAAAAAAAAAAPVVXwAAAAAAAAAAAAAAAA9VV8AAAAAAAAAAAAAAAAPVVfAAAAAAAAAAAAAAAAA9VV8AAAAAAAAD//AAAAAPVVfAAAAAAAAP////AAAA9VV8AAAAAAAP/VVf//AA/VVXwAAAAAAD9VVVVf///1VV8AAAAAAA9VVVVVVf/1VVXwAAAAAAPVVVVVVVVVVVV8AAAAAAD1VVVVVVVVVVVXwAAAAAA9VVVVVVVVVVVVfAAAAAAPVVVVVVVVVVVVV8AAAAAA9VVVX/VVVVVVVfAAAAAAPVVX////1VVVVV8AAAAAA9VX//AP/9VVVVXwAAAAAD1X/AAAAD/VVVVfAAAAAAPX/AAAAAA/VVVV8AAAAAD1/AAAAAAAP1VVXwAAAAAPfAAAAAAAAP1VV8AAAAAAPwAAAAAAAAD1VXwAAAAAAMAAAAAAAAAD1VfAAAAAAAAAAAAAAAAAPVV8AAAAAAAAAAAAAAAAAPVXwAAAAAAAAAAAAAAAAAPVfAAAAAAAAAAAAAAAAAA9V8AAAAAAAAAAAAAAAAAA9XwAAAAAAAAAAAAAAAAAD1fAAAAAAAAAAAAAAAAAAD18AAAAAAAAAAAAAAAAAAPXwAAAAAAAAA/AAAAAAAA9fAAAAAAAAA//wAAAAAAA98AAAAAAAA/1fwAAAAAAD3wAAAAAAAP1VXwAAAAAAPfAAAAAAAD1VVXwAAAAAA9fAAAAAAAPVVVXwAAAAAD18AAAAAAD1VVVXwAAAAAD3wAAAAAAPVVVVfAAAAAAPfAAAAAAA9VVVV8AAAAAA98AAAAAAD1VVVXwAAAAAD3wAAAAAAPVVVVfAAAAAAPXwAAAAAA9VVVV8AAAAAA9fAAAAAAD1VVVXwAAAAAPV8AAAAAAPVVVVfAAAAAA9XwAAAAAA9VVVV8AAAAAD1XwAAAAAA9VVVfAAAAAAPVfAAAAAAD1VVXwAAAAAA9V8AAAAAAD1VV8AAAAAAD1V8AAAAAAD9V/AAAAAAA9VXwAAAAAAD//wAAAAAAD1VXwAAAAAAA/wAAAAAAAPVVfAAAAAAAAAAAAAAAAD1VVfAAAAAAAAAAAAAAAAPVVV8AAAAAAAAAAAAAAAD1VVV8AAAAAAAAAAAAAAAPVVVV8AAAAAAAAAAAAAAD1VVVXwAAAAAAAAAAAAAAPVVVVXwAAAAAAAAAAAAAD1VVVVXwAAAAAAAAAAAAA9VVVVVXwAAAAAAAAAAAAPVVVVVVX8AAAAAAAAAAAD1VVVVVVX8AAAAAAAAAAD9VVVVVVVV/AAAAAAAAAD/VVVVVVVVV/8AAAAAAAD/VVVVVVVVVVf/wAAAAAD/VVVVVVVVVVVV////////VVVVVVVVVVVVVX//////VVVVVVQ=="}, + ] +} + {"width" : "63", "buffer":"VVV//////////////1VVVVX/////////////////VVV//AAAAAAAAAAAAAAP/9VX8AAAAAAAAAAAAAAAAA/VXwAAAAAAAAAAAAAAAAAD1fAAAAAAAAAAAAAAAAAAD1fAAAAAAAAAAAAAAAAAAA98AAAAAAAAAAAAAAAAAAA98AAAAAAAAAAAAAAAAAAA98AAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAA98AAAAAAAAAAAAAAAAAAA9fAAAAAAAAAAAAAAAAAAA9fAAAAAAAAAAAAAAAAAAA9XwAAAAAAAAAAAAAAAAAA9X8AAAAAAAAAAAAAAAAAA9Vf/wAAAAAAAAAAAAAAAD1VX/////////wAAAAAAAD1VVVf///////8AAAAAAAPVVVVVVVVVVVVfAAAAAAAPVVVVVVVVVVVV8AAAAAAA9VVVVVVVVVVVV8AAAAAAA9VVVVVVVVVVVXwAAAAAAD1VVVVVVVVVVVXwAAAAAAD1VVVVVVVVVVVfAAAAAAAPVVVVVVVVVVVV8AAAAAAAPVVVVVVVVVVVV8AAAAAAA9VVVVVVVVVVVXwAAAAAAA9VVVVVVVVVVVXwAAAAAAD1VVVVVVVVVVVfAAAAAAAD1VVVVVVVVVVVfAAAAAAAPVVVVVVVVVVVV8AAAAAAA9VVVVVVVVVVVXwAAAAAAA9VVVVVVVVVVVXwAAAAAAD1VVVVVVVVVVVfAAAAAAAD1VVVVVVVVVVVfAAAAAAAPVVVVVVVVVVVV8AAAAAAAPVVVVVVVVVVVV8AAAAAAA9VVVVVVVVVVVXwAAAAAAA9VVVVVVVVVVVXwAAAAAAD1VVVVVVVVVVVfAAAAAAAPVVVVVVVVVVVV8AAAAAAAPVVVVVVVVVVVV8AAAAAAA9VVVVVVVVVVVXwAAAAAAA9VVVVVVVVVVVXwAAAAAAD1VVVVVVVVVVVfAAAAAAAD1VVVVVVVVVVVfAAAAAAAPVVVVVVVVVVVV8AAAAAAAPVVVVVVVVVVVXwAAAAAAA9VVVVVVVVVVVXwAAAAAAA9VVVVVVVVVVVfAAAAAAAD1VVVVVVVVVVVfAAAAAAAPVVVVVVVVVVVV8AAAAAAAPVVVVVVVVVVVV8AAAAAAA9VVVVVVVVVVVXwAAAAAAA9VVVVVVVVVVVXwAAAAAAD1VVVVVVVVVVVfAAAAAAAD1VVVVVVVVVVV8AAAAAAAPVVVVVVVVVVVV8AAAAAAAPVVVVVVVVVVVXwAAAAAAA9VVVVVVVVVVVXwAAAAAAA9VVVVVVVVVVVfAAAAAAAD1VVVVVVVVVVVfAAAAAAAPVVVVVVVVVVVV8AAAAAAAPVVVVVVVVVVVV8AAAAAAA9VVVVVVVVVVVXwAAAAAAA9VVVVVVVVVVVXwAAAAAAD1VVVVVVVVVVVXwAAAAAAD1VVVVVVVVVVVXwAAAAAAPVVVVVVVVVVVVfAAAAAAAPVVVVVVVVVVVVfAAAAAAA9VVVVVVVVVVVVXwAAAAAD1VVVVVVVVVVVVXwAAAAAD1VVVVVVVVVVVVXwAAAAAPVVVVVVVVVVVVVV8AAAAA9VVVVVVVVVVVVVVfwAAA/1VVVVVVVVVVVVVVX/////VVVVVVVVVVVVVVVVf///VVVVVVVVVVVVV"}, + ] +} + {"width" : "64", "buffer":"VVVVVVX///////9VVVVVVVVVVVV//////////VVVVVVVVVVX/wAAAAAAAP/1VVVVVVVVf8AAAAAAAAAD/1VVVVVVV/wAAAAAAAAAAA/VVVVVVV/AAAAAAAAAAAAA/VVVVVV8AAAAAAAAAAAAAD9VVVVV8AAAAAAAAAAAAAAD1VVVV8AAAAAAAAAAAAAAAPVVVV8AAAAAAAAAAAAAAAD1VVV8AAAAAAAAAAAAAAAAPVVVfAAAAAAAAAAAAAAAAA9VVfAAAAAAAAAAAAAAAAAPVVXwAAAAAAAAAAAAAAAAD1VV8AAAAAAAAAAAAAAAAAPVV8AAAAAAAAAAAAAAAAAD1VfAAAAAAAD//wAAAAAAA9VXwAAAAAAD///wAAAAAAPVV8AAAAAAD1VV/AAAAAAA9VfAAAAAAD1VVV8AAAAAAPVXwAAAAAD1VVVfAAAAAAD1V8AAAAAD1VVVV8AAAAAA9VfAAAAAA9VVVVfAAAAAAPVXwAAAAAPVVVVXwAAAAAD1V8AAAAAD1VVVV8AAAAAD1VfAAAAAA9VVVVfAAAAAA9VXwAAAAAPVVVVXwAAAAAPVVfAAAAAA9VVVXwAAAAAD1VXwAAAAAD1VVXwAAAAAA9VV8AAAAAAPVVXwAAAAAA9VVXwAAAAAA///wAAAAAAPVVV8AAAAAAD//wAAAAAAPVVVXwAAAAAAAAAAAAAAAD1VVV8AAAAAAAAAAAAAAAD1VVVXwAAAAAAAAAAAAAAD1VVVVfAAAAAAAAAAAAAAD1VVVVV8AAAAAAAAAAAAAD1VVVVVXwAAAAAAAAAAAAD1VVVVVVfAAAAAAAAAAAAA9VVVVVVfAAAAAAAAAAAAAD1VVVVV/AAAAAAAAAAAAAAPVVVVV/AAAAAAAAAAAAAAA9VVVV8AAAAAAAAAAAAAAAD1VVV8AAAAAAAAAAAAAAAAPVVV8AAAAAAAAAAAAAAAAA9VVfAAAAAAAAAAAAAAAAAD1VfAAAAAAAAAAAAAAAAAA9VXwAAAAAAD///AAAAAAAD1XwAAAAAAP////AAAAAAA9V8AAAAAAP1VVX8AAAAAAD18AAAAAAPVVVVXwAAAAAA9fAAAAAAPVVVVVfAAAAAAPXwAAAAAPVVVVVV8AAAAAD18AAAAAD1VVVVVfAAAAAAPfAAAAAA9VVVVVV8AAAAAD3wAAAAAPVVVVVVfAAAAAA/wAAAAAD1VVVVVfAAAAAAP8AAAAAA9VVVVVXwAAAAAD/AAAAAAPVVVVVV8AAAAAA98AAAAAA9VVVVV8AAAAAAPfAAAAAAD1VVVV8AAAAAAD3wAAAAAAP9VVX8AAAAAAD18AAAAAAA////8AAAAAAA9fAAAAAAAAP//wAAAAAAAPV8AAAAAAAAAAAAAAAAAAD1fAAAAAAAAAAAAAAAAAAD1XwAAAAAAAAAAAAAAAAAA9VfAAAAAAAAAAAAAAAAAA9VV8AAAAAAAAAAAAAAAAAPVVfAAAAAAAAAAAAAAAAAPVVV8AAAAAAAAAAAAAAAAPVVVXwAAAAAAAAAAAAAAAD1VVVfAAAAAAAAAAAAAAAP1VVVV/AAAAAAAAAAAAAAP1VVVVX8AAAAAAAAAAAAA/VVVVVVX8AAAAAAAAAAAD/VVVVVVVf/AAAAAAAAAA/9VVVVVVVVf/8AAAAAAAP/1VVVVVVVVVX/////////9VVVVVVVVVVVVf///////VVVVVVU="}, + ] +} + {"width" : "61", "buffer":"VVVVVV///////VVVVVVVVVVVVX////////1VVVVVVVVVVf8AAAAAAD/1VVVVVVVVV/wAAAAAAAA/1VVVVVVVX/AAAAAAAAAA/VVVVVVVX8AAAAAAAAAAA9VVVVVVXwAAAAAAAAAAAD9VVVVVXwAAAAAAAAAAAAP1VVVVXwAAAAAAAAAAAAAPVVVVXwAAAAAAAAAAAAAA9VVVV8AAAAAAAAAAAAAAPVVVV8AAAAAAAAAAAAAAA9VVV8AAAAAAAAAAAAAAAD1VVfAAAAAAAAAAAAAAAA9VVfAAAAAAAAAAAAAAAAD1VXwAAAAAAAAAAAAAAAA9VV8AAAAAAA//AAAAAAAD1V8AAAAAAA//8AAAAAAA9VfAAAAAAA9VXwAAAAAAD1XwAAAAAA9VVfAAAAAAA9XwAAAAAA9VVV8AAAAAAD18AAAAAA9VVVXwAAAAAA9fAAAAAAPVVVV8AAAAAAPXwAAAAAPVVVVXwAAAAAD18AAAAAD1VVVV8AAAAAAPfAAAAAA9VVVVfAAAAAAD3wAAAAAPVVVVXwAAAAAA98AAAAAD1VVVV8AAAAAAPfAAAAAA9VVVVfAAAAAAA/wAAAAAD1VVVfAAAAAAAP8AAAAAA9VVVXwAAAAAAD/AAAAAAD1VVV8AAAAAAA/wAAAAAA9VVV8AAAAAAAP8AAAAAAD9VV8AAAAAAAD/AAAAAAAP/f8AAAAAAAA98AAAAAAAP/8AAAAAAAAPfAAAAAAAADAAAAAAAAAD3wAAAAAAAAAAAAAAAAAA9fAAAAAAAAAAAAAAAAAAPXwAAAAAAAAAAAAAAAAAD1fAAAAAAAAAAAAAAAAAA9XwAAAAAAAAAAAAAAAAAPVfAAAAAAAAAAAAAAAAAD1XwAAAAAAAAAAAAAAAAA9VfAAAAAAAAAAAAAAAAAPVV8AAAAAAAAAMAAAAAAD1VXwAAAAAAAAPwAAAAAA9VVfAAAAAAAAPfAAAAAAPVVV/AAAAAAA/XwAAAAAD1VVX/AAAAAD/V8AAAAAA9VVVX/wAAAP9VfAAAAAA9VVVVX/////1VfAAAAAAPVVVVVV////VVXwAAAAAD1VVVVVVVVVVVV8AAAAAA9VVVVVVVVVVVV8AAAAAA9VVVVVVVVVVVV8AAAAAAPVVVVVVVVVVVVfAAAAAAD1VVVVVVVVVVVfAAAAAAA9VVf//VVVVVV/AAAAAAA9VV////1VVVX/AAAAAAAPVV/AAD//9f/8AAAAAAAPVV8AAAA////wAAAAAAAD1VfAAAAAAPAAAAAAAAAD1VfAAAAAAAAAAAAAAAAA9VXwAAAAAAAAAAAAAAAA9VV8AAAAAAAAAAAAAAAAPVVfAAAAAAAAAAAAAAAAPVVXwAAAAAAAAAAAAAAAPVVV8AAAAAAAAAAAAAAAPVVVfAAAAAAAAAAAAAAAD1VVXwAAAAAAAAAAAAAAP1VVV8AAAAAAAAAAAAAAP1VVVfAAAAAAAAAAAAAAPVVVVV8AAAAAAAAAAAAA/VVVVVXwAAAAAAAAAAAA/VVVVVVf8AAAAAAAAAAP9VVVVVVV/8AAAAAAAAA/9VVVVVVVVf/wAAAAAA//VVVVVVVVVVf////////9VVVVVVVVVVVV//////9VVVVVVVVU="}, + ] +} + {"width" : "25", "buffer":"VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX//1VVVVf///9VVV/wAA/1VV/AAAAPVV8AAAAA9V8AAAAAD1fAAAAAA9fAAAAAAD3wAAAAAA/wAAAAAAP8AAAAAAD/AAAAAAA/wAAAAAAP8AAAAAAD/AAAAAAA/wAAAAAAPfAAAAAAD3wAAAAAA98AAAAAA9XwAAAAAPVfAAAAAPVV8AAAAPVVX/AAA/VVVf////VVVVX//9VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf//VVVVX////1VVX/AAD/VVXwAAAA9VXwAAAAD1XwAAAAAPXwAAAAAD18AAAAAAPfAAAAAAD/AAAAAAA/wAAAAAAP8AAAAAAD/AAAAAAA/wAAAAAAP8AAAAAAD/AAAAAAA98AAAAAAPfAAAAAAD18AAAAAD1fAAAAAA9V8AAAAA9VXwAAAA9VVf8AAP9VVV////9VVVVf//VVU="} + ] +} From d23dba3a7d248c0d9a10c783b3a386ca7d987f23 Mon Sep 17 00:00:00 2001 From: xxDUxx <96152564+xxDUxx@users.noreply.github.com> Date: Tue, 8 Feb 2022 12:21:30 +0100 Subject: [PATCH 06/59] Add files via upload --- apps/contourclock/font-Nunito.json | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/apps/contourclock/font-Nunito.json b/apps/contourclock/font-Nunito.json index f199a5fab..597cd1ac5 100644 --- a/apps/contourclock/font-Nunito.json +++ b/apps/contourclock/font-Nunito.json @@ -3,35 +3,15 @@ "size":"80", "characters":[ {"width" : "62", "buffer":"VVVVVVV//////9VVVVVVVVVVVVX////////1VVVVVVVVVVX/wAAAAAA/9VVVVVVVVVV/AAAAAAAAD/VVVVVVVVV/AAAAAAAAAA/VVVVVVVVfwAAAAAAAAAAP1VVVVVVXwAAAAAAAAAAAP1VVVVVV8AAAAAAAAAAAAD1VVVVVfAAAAAAAAAAAAAPVVVVVXwAAAAAAAAAAAAAPVVVVV8AAAAAAAAAAAAAAPVVVVXwAAAAAAAAAAAAAAPVVVV8AAAAAAAAAAAAAAA9VVVXwAAAAAAAAAAAAAAA9VVV8AAAAAAAAAAAAAAAD1VVXwAAAAAAAAAAAAAAAD1VV8AAAAAAAAAAAAAAAAPVVXwAAAAAAA/8AAAAAAAPVV8AAAAAAA//8AAAAAAA9VXwAAAAAAP1V8AAAAAAD1VfAAAAAAD1VV8AAAAAAD1XwAAAAAA9VVV8AAAAAAPVfAAAAAAD1VVV8AAAAAA9V8AAAAAA9VVVXwAAAAAD1XwAAAAAD1VVVfAAAAAAD18AAAAAAPVVVVfAAAAAAPXwAAAAAD1VVVV8AAAAAA9fAAAAAAPVVVVXwAAAAAD18AAAAAA9VVVVfAAAAAAPXwAAAAAD1VVVV8AAAAAAPfAAAAAAPVVVVXwAAAAAA98AAAAAA9VVVVXwAAAAAD/AAAAAAD1VVVVfAAAAAAP8AAAAAAPVVVVV8AAAAAA/wAAAAAA9VVVVXwAAAAAD/AAAAAAD1VVVVfAAAAAAP8AAAAAA9VVVVV8AAAAAA/wAAAAAD1VVVVXwAAAAAD/AAAAAAPVVVVVfAAAAAAP8AAAAAA9VVVVV8AAAAAA/wAAAAAD1VVVVXwAAAAAD/AAAAAAPVVVVVfAAAAAAP8AAAAAA9VVVVV8AAAAAA/wAAAAAA9VVVVXwAAAAAD/AAAAAAD1VVVVfAAAAAAP8AAAAAAPVVVVV8AAAAAA/wAAAAAA9VVVVXwAAAAAD3wAAAAAD1VVVVfAAAAAAPfAAAAAAPVVVVXwAAAAAA98AAAAAA9VVVVfAAAAAAD3wAAAAAD1VVVV8AAAAAA9fAAAAAAPVVVVXwAAAAAD18AAAAAA9VVVVfAAAAAAPXwAAAAAA9VVVV8AAAAAA9XwAAAAAD1VVVfAAAAAAD1fAAAAAAPVVVV8AAAAAA9V8AAAAAAPVVVXwAAAAAD1XwAAAAAA9VVV8AAAAAAPVXwAAAAAA9VVXwAAAAAA9VfAAAAAAA9VV8AAAAAAPVV8AAAAAAA9V/AAAAAAA9VV8AAAAAAA//wAAAAAAD1VXwAAAAAAA/wAAAAAAA9VVXwAAAAAAAAAAAAAAAD1VVfAAAAAAAAAAAAAAAA9VVV8AAAAAAAAAAAAAAAD1VVV8AAAAAAAAAAAAAAA9VVVV8AAAAAAAAAAAAAAD1VVVXwAAAAAAAAAAAAAA9VVVVXwAAAAAAAAAAAAAPVVVVVXwAAAAAAAAAAAAA9VVVVVXwAAAAAAAAAAAAPVVVVVVfwAAAAAAAAAAAD1VVVVVVfwAAAAAAAAAAD9VVVVVVVXwAAAAAAAAAA/VVVVVVVVX8AAAAAAAAA/VVVVVVVVVX/AAAAAAAA/1VVVVVVVVVV/8AAAAAD/1VVVVVVVVVVVf///////1VVVVVVVVVVVVV//////VVVVVVVQ=="}, - ] -} {"width" : "61", "buffer":"VVVVVVVVf////VVVVVVVVVVVVVVV/////9VVVVVVVVVVVVVX/AAAAD1VVVVVVVVVVVVf8AAAAAPVVVVVVVVVVVVfwAAAAAA9VVVVVVVVVVV/AAAAAAAPVVVVVVVVVVX/AAAAAAAA9VVVVVVVVVX8AAAAAAAAPVVVVVVVVVfwAAAAAAAAD1VVVVVVVVfwAAAAAAAAA9VVVVVVVV/AAAAAAAAAAPVVVVVVVV/AAAAAAAAAAD1VVVVVVX8AAAAAAAAAAA9VVVVVVX8AAAAAAAAAAAPVVVVVVXwAAAAAAAAAAAD1VVVVVXwAAAAAAAAAAAA9VVVVVXwAAAAAAAAAAAAPVVVVVV8AAAAAAAAAAAAD1VVVVVfAAAAAAAAAAAAA9VVVVVfAAAAAAAAAAAAAPVVVVVXwAAAAAAAAAAAAD1VVVVV8AAAAAAAAAAAAA9VVVVVfAAAAAAAAAAAAAPVVVVVXwAAAAAAAAAAAAD1VVVVVfAAAAAAAAAAAAA9VVVVVXwAAAAAAAAAAAAPVVVVVVfAAAAPAAAAAAAD1VVVVVXwAAA/8AAAAAAA9VVVVVVfAAD/XwAAAAAAPVVVVVVV///9V8AAAAAAD1VVVVVVX//1VfAAAAAAA9VVVVVVVVVVVXwAAAAAAPVVVVVVVVVVVV8AAAAAAD1VVVVVVVVVVVfAAAAAAA9VVVVVVVVVVVXwAAAAAAPVVVVVVVVVVVV8AAAAAAD1VVVVVVVVVVVfAAAAAAA9VVVVVVVVVVVXwAAAAAAPVVVVVVVVVVVV8AAAAAAD1VVVVVVVVVVVfAAAAAAA9VVVVVVVVVVVXwAAAAAAPVVVVVVVVVVVV8AAAAAAD1VVVVVVVVVVVfAAAAAAA9VVVVVVVVVVVXwAAAAAAPVVVVVVVVVVVV8AAAAAAD1VVVVVVVVVVVfAAAAAAA9VVVVVVVVVVVXwAAAAAAPVVVVVVVVVVVV8AAAAAAD1VVVVVVVVVVVfAAAAAAA9VVVVVVVVVVVXwAAAAAAPVVVVVVVVVVVV8AAAAAAD1VVVVVVVVVVVfAAAAAAA9VVVVVVVVVVVXwAAAAAAPVVVVVVVVVVVV8AAAAAAD1VVVVVVVVVVVfAAAAAAA9VVVVVVVVVVVXwAAAAAAPVVVVVVVVVVVV8AAAAAAD1VVVVVVVVVVVfAAAAAAA9VVVVVVVVVVVXwAAAAAAPVVVVVVVVX///wAAAAAAA///9VVVV////wAAAAAAAD////VVX/wAAAAAAAAAAAAAAP9VX8AAAAAAAAAAAAAAAAD1V8AAAAAAAAAAAAAAAAAPV8AAAAAAAAAAAAAAAAAD1fAAAAAAAAAAAAAAAAAAPfAAAAAAAAAAAAAAAAAAD3wAAAAAAAAAAAAAAAAAA98AAAAAAAAAAAAAAAAAAPfAAAAAAAAAAAAAAAAAAD3wAAAAAAAAAAAAAAAAAA98AAAAAAAAAAAAAAAAAAPXwAAAAAAAAAAAAAAAAAD18AAAAAAAAAAAAAAAAAD1fAAAAAAAAAAAAAAAAAA9V8AAAAAAAAAAAAAAAAAPVXwAAAAAAAAAAAAAAAA/VVf/////////////////VVV////////////////9VVVVVVVVVVVVVVVVVVVVVU="}, - ] -} {"width" : "61", "buffer":"VVVVV////////1VVVVVVVVVVf/////////9VVVVVVVVX/8AAAAAAAA/9VVVVVVVf/AAAAAAAAAAP9VVVVVV/wAAAAAAAAAAAP1VVVVV/AAAAAAAAAAAAAP1VVVV8AAAAAAAAAAAAAA/VVVV8AAAAAAAAAAAAAAA9VVV8AAAAAAAAAAAAAAAD1VVfAAAAAAAAAAAAAAAA9VVXwAAAAAAAAAAAAAAAD1VXwAAAAAAAAAAAAAAAA9VV8AAAAAAAAAAAAAAAAD1VfAAAAAAAAAAAAAAAAA9VXwAAAAAAAAAAAAAAAAD1VfAAAAAAAAAAAAAAAAA9VXwAAAAAAAAAAAAAAAAPVV8AAAAAD/8AAAAAAAAD1VXwAAAD////AAAAAAAAPVVfAAA//1Vf8AAAAAAAD1VV/wP/1VVVXwAAAAAAA9VVX//9VVVVVfAAAAAAAPVVVV/VVVVVVV8AAAAAAD1VVVVVVVVVVVfAAAAAAA9VVVVVVVVVVVV8AAAAAAPVVVVVVVVVVVVfAAAAAAD1VVVVVVVVVVVXwAAAAAA9VVVVVVVVVVVV8AAAAAAPVVVVVVVVVVVV8AAAAAAPVVVVVVVVVVVVfAAAAAAD1VVVVVVVVVVVXwAAAAAA9VVVVVVVVVVVXwAAAAAAPVVVVVVVVVVVXwAAAAAAPVVVVVVVVVVVV8AAAAAAD1VVVVVVVVVVV8AAAAAAA9VVVVVVVVVVV8AAAAAAA9VVVVVVVVVVV8AAAAAAAPVVVVVVVVVVV8AAAAAAAPVVVVVVVVVVV8AAAAAAAD1VVVVVVVVVV8AAAAAAAD1VVVVVVVVVV8AAAAAAAA9VVVVVVVVVV8AAAAAAAA9VVVVVVVVVV8AAAAAAAA9VVVVVVVVVV8AAAAAAAA9VVVVVVVVVV8AAAAAAAAPVVVVVVVVVV8AAAAAAAAPVVVVVVVVVVfAAAAAAAAPVVVVVVVVVVfAAAAAAAAPVVVVVVVVVVfAAAAAAAAPVVVVVVVVVVfAAAAAAAAPVVVVVVVVVVfAAAAAAAAPVVVVVVVVVVfAAAAAAAAPVVVVVVVVVVfAAAAAAAAPVVVVVVVVVVfAAAAAAAAPVVVVVVVVVVfAAAAAAAAPVVVVVVVVVVfAAAAAAAAPVVVVVVVVVVfAAAAAAAAPVVVVVVVVVVfAAAAAAAAPVVVVVVVVVVfAAAAAAAAPVVVVVVVVVVfAAAAAAAAA//////1VVVXwAAAAAAAAD//////9VVXwAAAAAAAAAAAAAAA/9VXwAAAAAAAAAAAAAAAAP1V8AAAAAAAAAAAAAAAAA9VfAAAAAAAAAAAAAAAAAD1XwAAAAAAAAAAAAAAAAA9XwAAAAAAAAAAAAAAAAAD18AAAAAAAAAAAAAAAAAA9fAAAAAAAAAAAAAAAAAAPXwAAAAAAAAAAAAAAAAAD18AAAAAAAAAAAAAAAAAA9XwAAAAAAAAAAAAAAAAAPV8AAAAAAAAAAAAAAAAAPVfAAAAAAAAAAAAAAAAAD1XwAAAAAAAAAAAAAAAAA9VfAAAAAAAAAAAAAAAAA9VV/AAAAAAAAAAAAAAAD9VVX////////////////9VVVX///////////////1VVVVVVVVVVVVVVVVVVVVVU="}, - ] -} {"width" : "60", "buffer":"VVVVVf///////9VVVVVVVVVV//////////9VVVVVVVVf/wAAAAAAAD/1VVVVVVf/AAAAAAAAAAD/VVVVVX/wAAAAAAAAAAAP9VVVVfwAAAAAAAAAAAAA/VVVV8AAAAAAAAAAAAAAD1VVV8AAAAAAAAAAAAAAA9VVXwAAAAAAAAAAAAAAAPVVXwAAAAAAAAAAAAAAAD1VXwAAAAAAAAAAAAAAAD1VXwAAAAAAAAAAAAAAAA9VXwAAAAAAAAAAAAAAAA9VXwAAAAAAAAAAAAAAAAPVXwAAAAAAAAAAAAAAAAPVXwAAAAAAAAAAAAAAAAPVXwAAAAAAAAAAAAAAAAPVV8AAAAAD/8AAAAAAAAD1VfAAAA////8AAAAAAAD1VXwAA//9VX/AAAAAAAD1VV////VVVVXwAAAAAAD1VVf//VVVVVV8AAAAAAD1VVVVVVVVVVVfAAAAAAD1VVVVVVVVVVVfAAAAAAD1VVVVVVVVVVVfAAAAAAD1VVVVVVVVVVVfAAAAAAD1VVVVVVVVVVVfAAAAAAPVVVVVVVVVVVVfAAAAAAPVVVVVVVVVVVX8AAAAAAPVVVVVVVVVVV/wAAAAAA9VVVVVVVX///8AAAAAAA9VVVVVVX////AAAAAAAD1VVVVVVf8AAAAAAAAAAD1VVVVVV8AAAAAAAAAAAPVVVVVVXwAAAAAAAAAAD9VVVVVVXwAAAAAAAAAAP1VVVVVVfAAAAAAAAAAA9VVVVVVVfAAAAAAAAAAD1VVVVVVVfAAAAAAAAAAD1VVVVVVVfAAAAAAAAAAA/VVVVVVVfAAAAAAAAAAAP1VVVVVVfAAAAAAAAAAAA/VVVVVVfAAAAAAAAAAAAP1VVVVVXwAAAAAAAAAAAA9VVVVVXwAAAAAAAAAAAAPVVVVVV8AAAAAAAAAAAAPVVVVVVfwAAAAAAAAAAAD1VVVVVX////8AAAAAAAD1VVVVVVf////8AAAAAAA9VVVVVVVVVVX/AAAAAAA9VVVVVVVVVVVXwAAAAAA9VVVVVVVVVVVV8AAAAAAPVVVVVVVVVVVV8AAAAAAPVVVVVVVVVVVVfAAAAAAPVVVVVVVVVVVVfAAAAAAPVVVVVVVVVVVVfAAAAAAPVVVVVVVVVVVVfAAAAAAPVVX/1VVVVVVV8AAAAAAPVX///1VVVVVXwAAAAAAPVf8AP/1VVVV/AAAAAAAPV8AAAP//9f/8AAAAAAAPXwAAAAP////AAAAAAAAPXwAAAAAADwAAAAAAAAAPfAAAAAAAAAAAAAAAAAA9fAAAAAAAAAAAAAAAAAA9fAAAAAAAAAAAAAAAAAA98AAAAAAAAAAAAAAAAAD18AAAAAAAAAAAAAAAAAD18AAAAAAAAAAAAAAAAAPVfAAAAAAAAAAAAAAAAAPVfAAAAAAAAAAAAAAAAA9VfAAAAAAAAAAAAAAAAD1VXwAAAAAAAAAAAAAAAPVVV8AAAAAAAAAAAAAAD9VVVfAAAAAAAAAAAAAA/1VVVX/AAAAAAAAAAAAP9VVVVV//AAAAAAAAAAD/VVVVVVV//wAAAAAAAP/1VVVVVVVV//////////9VVVVVVVVVVf///////1VVVVVV"}, - ] -} {"width" : "65", "buffer":"VVVVVVVVVVVVf///1VVVVVVVVVVVVVVVVf////9VVVVVVVVVVVVVVVX8AAAD9VVVVVVVVVVVVVVV8AAAAA9VVVVVVVVVVVVVVfAAAAAD1VVVVVVVVVVVVVXwAAAAAD1VVVVVVVVVVVVV8AAAAAAPVVVVVVVVVVVVVfAAAAAAA9VVVVVVVVVVVVV8AAAAAAD1VVVVVVVVVVVVfAAAAAAAPVVVVVVVVVVVVXwAAAAAAA9VVVVVVVVVVVVfAAAAAAAD1VVVVVVVVVVVXwAAAAAAAD1VVVVVVVVVVV8AAAAAAAAPVVVVVVVVVVVXwAAAAAAAA9VVVVVVVVVVV8AAAAAAAAD1VVVVVVVVVVfAAAAAAAAAPVVVVVVVVVVV8AAAAAAAAA9VVVVVVVVVVfAAAAAAAAAD1VVVVVVVVVXwAAAAAAAAAPVVVVVVVVVV8AAAAAAAAAA9VVVVVVVVVXwAAAAAAAAAD1VVVVVVVVV8AAAAAAAAAAPVVVVVVVVVfAAAAAAAAAAA9VVVVVVVVV8AAAAAAAAAAD1VVVVVVVVfAAAAAAAAAAAPVVVVVVVVXwAAAAAAAAAAA9VVVVVVVVfAAAAAAAAAAAD1VVVVVVVXwAAAAAAAAAAAPVVVVVVVV8AAAAAAAAAAAA9VVVVVVVXwAAAAAAAAAAAD1VVVVVVV8AAAAAAAAAAAAPVVVVVVVfAAAAAAAAAAAAA9VVVVVVV8AAAAAwAAAAAAD1VVVVVVfAAAAAPwAAAAAAPVVVVVVXwAAAAD3wAAAAAA9VVVVVVfAAAAA9fAAAAAAD1VVVVVXwAAAAD18AAAAAAPVVVVVV8AAAAA9XwAAAAAA9VVVVVfAAAAAPVfAAAAAAD1VVVVV8AAAAA9V8AAAAAAPVVVVVfAAAAAPVXwAAAAAA9VVVVXwAAAAD1VfAAAAAAD1VVVVfAAAAAPVV8AAAAAAPVVVVXwAAAAD1VXwAAAAAA9VVVV8AAAAAPVVfAAAAAAD1VVVXwAAAAD1VV8AAAAAAPVVVV8AAAAA9VVXwAAAAAA9VVVXwAAAAD1VVfAAAAAAD1VVV8AAAAAD///wAAAAAAD/1VXwAAAAAD//8AAAAAAAD//VfAAAAAAAAAAAAAAAAAAD/XwAAAAAAAAAAAAAAAAAAAPfAAAAAAAAAAAAAAAAAAAA98AAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAD/AAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAD/AAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAAA98AAAAAAAAAAAAAAAAAAAD3wAAAAAAAAAAAAAAAAAAAPX8AAAAAAAAAAAAAAAAAAD1X/AAAAAAAAAAAAAAAAAD9VV////////8AAAAAAAD//VVVf///////8AAAAAAA//VVVVVVVVVVVV8AAAAAAPVVVVVVVVVVVVVXwAAAAAD1VVVVVVVVVVVVVfAAAAAAPVVVVVVVVVVVVVV8AAAAAA9VVVVVVVVVVVVVV8AAAAAD1VVVVVVVVVVVVVXwAAAAAPVVVVVVVVVVVVVVfAAAAAA9VVVVVVVVVVVVVV8AAAAAPVVVVVVVVVVVVVVV8AAAAA9VVVVVVVVVVVVVVV8AAAAPVVVVVVVVVVVVVVVV/AAAP1VVVVVVVVVVVVVVVV////9VVVVVVVVVVVVVVVVVf//9VVVVVQ=="}, - ] -} {"width" : "60", "buffer":"VVVX///////////1VVVVVV///////////////VVVVX/8AAAAAAAAAAAP/9VVVfAAAAAAAAAAAAAAA/VVV8AAAAAAAAAAAAAAAPVVXwAAAAAAAAAAAAAAAD1VXwAAAAAAAAAAAAAAAD1VXwAAAAAAAAAAAAAAAA9VXwAAAAAAAAAAAAAAAA9VXwAAAAAAAAAAAAAAAA9VXwAAAAAAAAAAAAAAAA9VfAAAAAAAAAAAAAAAAA9VfAAAAAAAAAAAAAAAAA9VfAAAAAAAAAAAAAAAAA9VfAAAAAAAAAAAAAAAAD1VfAAAAAAAAAAAAAAAAD1VfAAAAAAAAAAAAAAAAPVVfAAAAAAAAAAAAAAAA/VVfAAAAAAAAAAAAAAP/1VVfAAAAAAA/////////VVVfAAAAAAD///////1VVVVfAAAAAAPVVVVVVVVVVVVfAAAAAAPVVVVVVVVVVVVfAAAAAAPVVVVVVVVVVVVfAAAAAAPVVVVVVVVVVVVfAAAAAAPVVVVVVVVVVVVfAAAAAAPVVVVVVVVVVVVfAAAAAAPVVVVVVVVVVVVfAAAAAAPV/////VVVVVVfAAAAAAD///////VVVVVfAAAAAAA/AAAAA/9VVVVfAAAAAAAAAAAAAA/1VVVfAAAAAAAAAAAAAAD9VVVfAAAAAAAAAAAAAAAP1VVfAAAAAAAAAAAAAAAD9VVfAAAAAAAAAAAAAAAAPVVfAAAAAAAAAAAAAAAAPVVfAAAAAAAAAAAAAAAAD1VfAAAAAAAAAAAAAAAAA9VfAAAAAAAAAAAAAAAAA9VfAAAAAAAAAAAAAAAAAPVfAAAAAAAAAAAAAAAAAD1XwAAAAAAAAAAAAAAAAD1XwAAAAAAAAAAAAAAAAD1XwAAAAAAAAAAAAAAAAA9XwAAAAAA//wAAAAAAAA9XwAAAAA////wAAAAAAA9XwAAAAP/VVf8AAAAAAA9V/AAAP/VVVVfAAAAAAAPVf////1VVVVXwAAAAAAPVV///1VVVVVV8AAAAAAPVVVVVVVVVVVV8AAAAAAPVVVVVVVVVVVV8AAAAAAPVVVVVVVVVVVV8AAAAAAPVVVVVVVVVVVV8AAAAAAPVVVVVVVVVVVV8AAAAAAPVVX1VVVVVVVV8AAAAAAPVX//1VVVVVVXwAAAAAAPV/8P/1VVVVVfAAAAAAA9X8AAP/9VVVX8AAAAAAA9fAAAAP//9//wAAAAAAA9fAAAAAD///8AAAAAAAA98AAAAAAADAAAAAAAAAD18AAAAAAAAAAAAAAAAAD18AAAAAAAAAAAAAAAAAD18AAAAAAAAAAAAAAAAAPV8AAAAAAAAAAAAAAAAAPV8AAAAAAAAAAAAAAAAA9V8AAAAAAAAAAAAAAAAD1V8AAAAAAAAAAAAAAAAD1V8AAAAAAAAAAAAAAAAPVVfAAAAAAAAAAAAAAAA9VVfAAAAAAAAAAAAAAAP1VVXwAAAAAAAAAAAAAA/VVVV/AAAAAAAAAAAAAP1VVVVf/AAAAAAAAAAAD/VVVVVV//AAAAAAAAAA/1VVVVVVV//wAAAAAAD/9VVVVVVVVV//////////VVVVVVVVVVVf//////9VVVVVVV"}, - ] -} {"width" : "62", "buffer":"VVVVVVVVX///////1VVVVVVVVVVVf/////////VVVVVVVVVV//AAAAAAAD/9VVVVVVVV/8AAAAAAAAAP/VVVVVVVfwAAAAAAAAAAA/VVVVVVfwAAAAAAAAAAAAPVVVVVX8AAAAAAAAAAAAAPVVVVV8AAAAAAAAAAAAAA9VVVVfAAAAAAAAAAAAAAD1VVVXwAAAAAAAAAAAAAAD1VVV8AAAAAAAAAAAAAAAPVVVfAAAAAAAAAAAAAAAA9VVXwAAAAAAAAAAAAAAAD1VV8AAAAAAAAAAAAAAAAPVVXwAAAAAAAAAAAAAAAA9VV8AAAAAAAAAAAAAAAAPVVfAAAAAAAAAAAAAAAAA9VV8AAAAAAAAD//AAAAAPVVfAAAAAAAAP////AAAA9VV8AAAAAAAP/VVf//AA/VVXwAAAAAAD9VVVVf///1VV8AAAAAAA9VVVVVVf/1VVXwAAAAAAPVVVVVVVVVVVV8AAAAAAD1VVVVVVVVVVVXwAAAAAA9VVVVVVVVVVVVfAAAAAAPVVVVVVVVVVVVV8AAAAAA9VVVX/VVVVVVVfAAAAAAPVVX////1VVVVV8AAAAAA9VX//AP/9VVVVXwAAAAAD1X/AAAAD/VVVVfAAAAAAPX/AAAAAA/VVVV8AAAAAD1/AAAAAAAP1VVXwAAAAAPfAAAAAAAAP1VV8AAAAAAPwAAAAAAAAD1VXwAAAAAAMAAAAAAAAAD1VfAAAAAAAAAAAAAAAAAPVV8AAAAAAAAAAAAAAAAAPVXwAAAAAAAAAAAAAAAAAPVfAAAAAAAAAAAAAAAAAA9V8AAAAAAAAAAAAAAAAAA9XwAAAAAAAAAAAAAAAAAD1fAAAAAAAAAAAAAAAAAAD18AAAAAAAAAAAAAAAAAAPXwAAAAAAAAA/AAAAAAAA9fAAAAAAAAA//wAAAAAAA98AAAAAAAA/1fwAAAAAAD3wAAAAAAAP1VXwAAAAAAPfAAAAAAAD1VVXwAAAAAA9fAAAAAAAPVVVXwAAAAAD18AAAAAAD1VVVXwAAAAAD3wAAAAAAPVVVVfAAAAAAPfAAAAAAA9VVVV8AAAAAA98AAAAAAD1VVVXwAAAAAD3wAAAAAAPVVVVfAAAAAAPXwAAAAAA9VVVV8AAAAAA9fAAAAAAD1VVVXwAAAAAPV8AAAAAAPVVVVfAAAAAA9XwAAAAAA9VVVV8AAAAAD1XwAAAAAA9VVVfAAAAAAPVfAAAAAAD1VVXwAAAAAA9V8AAAAAAD1VV8AAAAAAD1V8AAAAAAD9V/AAAAAAA9VXwAAAAAAD//wAAAAAAD1VXwAAAAAAA/wAAAAAAAPVVfAAAAAAAAAAAAAAAAD1VVfAAAAAAAAAAAAAAAAPVVV8AAAAAAAAAAAAAAAD1VVV8AAAAAAAAAAAAAAAPVVVV8AAAAAAAAAAAAAAD1VVVXwAAAAAAAAAAAAAAPVVVVXwAAAAAAAAAAAAAD1VVVVXwAAAAAAAAAAAAA9VVVVVXwAAAAAAAAAAAAPVVVVVVX8AAAAAAAAAAAD1VVVVVVX8AAAAAAAAAAD9VVVVVVVV/AAAAAAAAAD/VVVVVVVVV/8AAAAAAAD/VVVVVVVVVVf/wAAAAAD/VVVVVVVVVVVV////////VVVVVVVVVVVVVX//////VVVVVVQ=="}, - ] -} {"width" : "63", "buffer":"VVV//////////////1VVVVX/////////////////VVV//AAAAAAAAAAAAAAP/9VX8AAAAAAAAAAAAAAAAA/VXwAAAAAAAAAAAAAAAAAD1fAAAAAAAAAAAAAAAAAAD1fAAAAAAAAAAAAAAAAAAA98AAAAAAAAAAAAAAAAAAA98AAAAAAAAAAAAAAAAAAA98AAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAA98AAAAAAAAAAAAAAAAAAA9fAAAAAAAAAAAAAAAAAAA9fAAAAAAAAAAAAAAAAAAA9XwAAAAAAAAAAAAAAAAAA9X8AAAAAAAAAAAAAAAAAA9Vf/wAAAAAAAAAAAAAAAD1VX/////////wAAAAAAAD1VVVf///////8AAAAAAAPVVVVVVVVVVVVfAAAAAAAPVVVVVVVVVVVV8AAAAAAA9VVVVVVVVVVVV8AAAAAAA9VVVVVVVVVVVXwAAAAAAD1VVVVVVVVVVVXwAAAAAAD1VVVVVVVVVVVfAAAAAAAPVVVVVVVVVVVV8AAAAAAAPVVVVVVVVVVVV8AAAAAAA9VVVVVVVVVVVXwAAAAAAA9VVVVVVVVVVVXwAAAAAAD1VVVVVVVVVVVfAAAAAAAD1VVVVVVVVVVVfAAAAAAAPVVVVVVVVVVVV8AAAAAAA9VVVVVVVVVVVXwAAAAAAA9VVVVVVVVVVVXwAAAAAAD1VVVVVVVVVVVfAAAAAAAD1VVVVVVVVVVVfAAAAAAAPVVVVVVVVVVVV8AAAAAAAPVVVVVVVVVVVV8AAAAAAA9VVVVVVVVVVVXwAAAAAAA9VVVVVVVVVVVXwAAAAAAD1VVVVVVVVVVVfAAAAAAAPVVVVVVVVVVVV8AAAAAAAPVVVVVVVVVVVV8AAAAAAA9VVVVVVVVVVVXwAAAAAAA9VVVVVVVVVVVXwAAAAAAD1VVVVVVVVVVVfAAAAAAAD1VVVVVVVVVVVfAAAAAAAPVVVVVVVVVVVV8AAAAAAAPVVVVVVVVVVVXwAAAAAAA9VVVVVVVVVVVXwAAAAAAA9VVVVVVVVVVVfAAAAAAAD1VVVVVVVVVVVfAAAAAAAPVVVVVVVVVVVV8AAAAAAAPVVVVVVVVVVVV8AAAAAAA9VVVVVVVVVVVXwAAAAAAA9VVVVVVVVVVVXwAAAAAAD1VVVVVVVVVVVfAAAAAAAD1VVVVVVVVVVV8AAAAAAAPVVVVVVVVVVVV8AAAAAAAPVVVVVVVVVVVXwAAAAAAA9VVVVVVVVVVVXwAAAAAAA9VVVVVVVVVVVfAAAAAAAD1VVVVVVVVVVVfAAAAAAAPVVVVVVVVVVVV8AAAAAAAPVVVVVVVVVVVV8AAAAAAA9VVVVVVVVVVVXwAAAAAAA9VVVVVVVVVVVXwAAAAAAD1VVVVVVVVVVVXwAAAAAAD1VVVVVVVVVVVXwAAAAAAPVVVVVVVVVVVVfAAAAAAAPVVVVVVVVVVVVfAAAAAAA9VVVVVVVVVVVVXwAAAAAD1VVVVVVVVVVVVXwAAAAAD1VVVVVVVVVVVVXwAAAAAPVVVVVVVVVVVVVV8AAAAA9VVVVVVVVVVVVVVfwAAA/1VVVVVVVVVVVVVVX/////VVVVVVVVVVVVVVVVf///VVVVVVVVVVVVV"}, - ] -} {"width" : "64", "buffer":"VVVVVVX///////9VVVVVVVVVVVV//////////VVVVVVVVVVX/wAAAAAAAP/1VVVVVVVVf8AAAAAAAAAD/1VVVVVVV/wAAAAAAAAAAA/VVVVVVV/AAAAAAAAAAAAA/VVVVVV8AAAAAAAAAAAAAD9VVVVV8AAAAAAAAAAAAAAD1VVVV8AAAAAAAAAAAAAAAPVVVV8AAAAAAAAAAAAAAAD1VVV8AAAAAAAAAAAAAAAAPVVVfAAAAAAAAAAAAAAAAA9VVfAAAAAAAAAAAAAAAAAPVVXwAAAAAAAAAAAAAAAAD1VV8AAAAAAAAAAAAAAAAAPVV8AAAAAAAAAAAAAAAAAD1VfAAAAAAAD//wAAAAAAA9VXwAAAAAAD///wAAAAAAPVV8AAAAAAD1VV/AAAAAAA9VfAAAAAAD1VVV8AAAAAAPVXwAAAAAD1VVVfAAAAAAD1V8AAAAAD1VVVV8AAAAAA9VfAAAAAA9VVVVfAAAAAAPVXwAAAAAPVVVVXwAAAAAD1V8AAAAAD1VVVV8AAAAAD1VfAAAAAA9VVVVfAAAAAA9VXwAAAAAPVVVVXwAAAAAPVVfAAAAAA9VVVXwAAAAAD1VXwAAAAAD1VVXwAAAAAA9VV8AAAAAAPVVXwAAAAAA9VVXwAAAAAA///wAAAAAAPVVV8AAAAAAD//wAAAAAAPVVVXwAAAAAAAAAAAAAAAD1VVV8AAAAAAAAAAAAAAAD1VVVXwAAAAAAAAAAAAAAD1VVVVfAAAAAAAAAAAAAAD1VVVVV8AAAAAAAAAAAAAD1VVVVVXwAAAAAAAAAAAAD1VVVVVVfAAAAAAAAAAAAA9VVVVVVfAAAAAAAAAAAAAD1VVVVV/AAAAAAAAAAAAAAPVVVVV/AAAAAAAAAAAAAAA9VVVV8AAAAAAAAAAAAAAAD1VVV8AAAAAAAAAAAAAAAAPVVV8AAAAAAAAAAAAAAAAA9VVfAAAAAAAAAAAAAAAAAD1VfAAAAAAAAAAAAAAAAAA9VXwAAAAAAD///AAAAAAAD1XwAAAAAAP////AAAAAAA9V8AAAAAAP1VVX8AAAAAAD18AAAAAAPVVVVXwAAAAAA9fAAAAAAPVVVVVfAAAAAAPXwAAAAAPVVVVVV8AAAAAD18AAAAAD1VVVVVfAAAAAAPfAAAAAA9VVVVVV8AAAAAD3wAAAAAPVVVVVVfAAAAAA/wAAAAAD1VVVVVfAAAAAAP8AAAAAA9VVVVVXwAAAAAD/AAAAAAPVVVVVV8AAAAAA98AAAAAA9VVVVV8AAAAAAPfAAAAAAD1VVVV8AAAAAAD3wAAAAAAP9VVX8AAAAAAD18AAAAAAA////8AAAAAAA9fAAAAAAAAP//wAAAAAAAPV8AAAAAAAAAAAAAAAAAAD1fAAAAAAAAAAAAAAAAAAD1XwAAAAAAAAAAAAAAAAAA9VfAAAAAAAAAAAAAAAAAA9VV8AAAAAAAAAAAAAAAAAPVVfAAAAAAAAAAAAAAAAAPVVV8AAAAAAAAAAAAAAAAPVVVXwAAAAAAAAAAAAAAAD1VVVfAAAAAAAAAAAAAAAP1VVVV/AAAAAAAAAAAAAAP1VVVVX8AAAAAAAAAAAAA/VVVVVVX8AAAAAAAAAAAD/VVVVVVVf/AAAAAAAAAA/9VVVVVVVVf/8AAAAAAAP/1VVVVVVVVVX/////////9VVVVVVVVVVVVf///////VVVVVVU="}, - ] -} {"width" : "61", "buffer":"VVVVVV///////VVVVVVVVVVVVX////////1VVVVVVVVVVf8AAAAAAD/1VVVVVVVVV/wAAAAAAAA/1VVVVVVVX/AAAAAAAAAA/VVVVVVVX8AAAAAAAAAAA9VVVVVVXwAAAAAAAAAAAD9VVVVVXwAAAAAAAAAAAAP1VVVVXwAAAAAAAAAAAAAPVVVVXwAAAAAAAAAAAAAA9VVVV8AAAAAAAAAAAAAAPVVVV8AAAAAAAAAAAAAAA9VVV8AAAAAAAAAAAAAAAD1VVfAAAAAAAAAAAAAAAA9VVfAAAAAAAAAAAAAAAAD1VXwAAAAAAAAAAAAAAAA9VV8AAAAAAA//AAAAAAAD1V8AAAAAAA//8AAAAAAA9VfAAAAAAA9VXwAAAAAAD1XwAAAAAA9VVfAAAAAAA9XwAAAAAA9VVV8AAAAAAD18AAAAAA9VVVXwAAAAAA9fAAAAAAPVVVV8AAAAAAPXwAAAAAPVVVVXwAAAAAD18AAAAAD1VVVV8AAAAAAPfAAAAAA9VVVVfAAAAAAD3wAAAAAPVVVVXwAAAAAA98AAAAAD1VVVV8AAAAAAPfAAAAAA9VVVVfAAAAAAA/wAAAAAD1VVVfAAAAAAAP8AAAAAA9VVVXwAAAAAAD/AAAAAAD1VVV8AAAAAAA/wAAAAAA9VVV8AAAAAAAP8AAAAAAD9VV8AAAAAAAD/AAAAAAAP/f8AAAAAAAA98AAAAAAAP/8AAAAAAAAPfAAAAAAAADAAAAAAAAAD3wAAAAAAAAAAAAAAAAAA9fAAAAAAAAAAAAAAAAAAPXwAAAAAAAAAAAAAAAAAD1fAAAAAAAAAAAAAAAAAA9XwAAAAAAAAAAAAAAAAAPVfAAAAAAAAAAAAAAAAAD1XwAAAAAAAAAAAAAAAAA9VfAAAAAAAAAAAAAAAAAPVV8AAAAAAAAAMAAAAAAD1VXwAAAAAAAAPwAAAAAA9VVfAAAAAAAAPfAAAAAAPVVV/AAAAAAA/XwAAAAAD1VVX/AAAAAD/V8AAAAAA9VVVX/wAAAP9VfAAAAAA9VVVVX/////1VfAAAAAAPVVVVVV////VVXwAAAAAD1VVVVVVVVVVVV8AAAAAA9VVVVVVVVVVVV8AAAAAA9VVVVVVVVVVVV8AAAAAAPVVVVVVVVVVVVfAAAAAAD1VVVVVVVVVVVfAAAAAAA9VVf//VVVVVV/AAAAAAA9VV////1VVVX/AAAAAAAPVV/AAD//9f/8AAAAAAAPVV8AAAA////wAAAAAAAD1VfAAAAAAPAAAAAAAAAD1VfAAAAAAAAAAAAAAAAA9VXwAAAAAAAAAAAAAAAA9VV8AAAAAAAAAAAAAAAAPVVfAAAAAAAAAAAAAAAAPVVXwAAAAAAAAAAAAAAAPVVV8AAAAAAAAAAAAAAAPVVVfAAAAAAAAAAAAAAAD1VVXwAAAAAAAAAAAAAAP1VVV8AAAAAAAAAAAAAAP1VVVfAAAAAAAAAAAAAAPVVVVV8AAAAAAAAAAAAA/VVVVVXwAAAAAAAAAAAA/VVVVVVf8AAAAAAAAAAP9VVVVVVV/8AAAAAAAAA/9VVVVVVVVf/wAAAAAA//VVVVVVVVVVf////////9VVVVVVVVVVVV//////9VVVVVVVVU="}, - ] -} {"width" : "25", "buffer":"VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX//1VVVVf///9VVV/wAA/1VV/AAAAPVV8AAAAA9V8AAAAAD1fAAAAAA9fAAAAAAD3wAAAAAA/wAAAAAAP8AAAAAAD/AAAAAAA/wAAAAAAP8AAAAAAD/AAAAAAA/wAAAAAAPfAAAAAAD3wAAAAAA98AAAAAA9XwAAAAAPVfAAAAAPVV8AAAAPVVX/AAA/VVVf////VVVVX//9VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf//VVVVX////1VVX/AAD/VVXwAAAA9VXwAAAAD1XwAAAAAPXwAAAAAD18AAAAAAPfAAAAAAD/AAAAAAA/wAAAAAAP8AAAAAAD/AAAAAAA/wAAAAAAP8AAAAAAD/AAAAAAA98AAAAAAPfAAAAAAD18AAAAAD1fAAAAAA9V8AAAAA9VXwAAAA9VVf8AAP9VVV////9VVVVf//VVU="} ] } From 37269619668be5a4884aa3beb45d1d38da817858 Mon Sep 17 00:00:00 2001 From: xxDUxx <96152564+xxDUxx@users.noreply.github.com> Date: Tue, 8 Feb 2022 12:23:17 +0100 Subject: [PATCH 07/59] Update metadata.json --- apps/contourclock/metadata.json | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/contourclock/metadata.json b/apps/contourclock/metadata.json index 1f54f9e31..c85f46bf2 100644 --- a/apps/contourclock/metadata.json +++ b/apps/contourclock/metadata.json @@ -27,6 +27,7 @@ {"name":"contourclock-11.json","url":"font-OpenSansEC.json"}, {"name":"contourclock-12.json","url":"font-SairaEC.json"}, {"name":"contourclock-13.json","url":"font-Teko.json"}, + {"name":"contourclock-14.json","url":"font-Nunito.json"}, {"name":"contourclock.img","url":"app-icon.js","evaluate":true} ] } From 2145093f43a45f8dc7774fdc9a69dd166fae3cf8 Mon Sep 17 00:00:00 2001 From: xxDUxx <96152564+xxDUxx@users.noreply.github.com> Date: Tue, 8 Feb 2022 12:23:35 +0100 Subject: [PATCH 08/59] Update metadata.json --- apps/contourclock/metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/contourclock/metadata.json b/apps/contourclock/metadata.json index c85f46bf2..95eb7d9ab 100644 --- a/apps/contourclock/metadata.json +++ b/apps/contourclock/metadata.json @@ -1,7 +1,7 @@ { "id": "contourclock", "name": "Contour Clock", "shortName" : "Contour Clock", - "version":"0.21", + "version":"0.22", "icon": "app.png", "description": "A Minimalist clockface with large Digits. Now with more fonts!", "screenshots" : [{"url":"cc-screenshot-1.png"},{"url":"cc-screenshot-2.png"}], From b36cc29b6f63db5aa27c4a163cdc5c9b04bb831e Mon Sep 17 00:00:00 2001 From: Gordon Williams Date: Wed, 9 Feb 2022 09:03:54 +0000 Subject: [PATCH 09/59] remove out of date 'requires firmware' messages --- apps/floralclk/metadata.json | 2 +- apps/health/metadata.json | 2 +- apps/pastel/metadata.json | 2 +- apps/waveclk/metadata.json | 2 +- apps/widpa/metadata.json | 2 +- apps/widpb/metadata.json | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/floralclk/metadata.json b/apps/floralclk/metadata.json index 43323abaa..d4848b0d8 100644 --- a/apps/floralclk/metadata.json +++ b/apps/floralclk/metadata.json @@ -2,7 +2,7 @@ "id": "floralclk", "name": "Floral Clock", "version": "0.01", - "description": "A clock with a flower background by [Lillith May](https://www.instagram.com/_lilustrations_/). **Note: Works on any Bangle.js 2 but requires firmware 2v11 or later on Bangle.js 1**", + "description": "A clock with a flower background by [Lillith May](https://www.instagram.com/_lilustrations_/)", "icon": "app.png", "screenshots": [{"url":"screenshot_floral.png"}], "type": "clock", diff --git a/apps/health/metadata.json b/apps/health/metadata.json index eafc2657c..8bb986c57 100644 --- a/apps/health/metadata.json +++ b/apps/health/metadata.json @@ -2,7 +2,7 @@ "id": "health", "name": "Health Tracking", "version": "0.11", - "description": "Logs health data and provides an app to view it (requires firmware 2v10.100 or later)", + "description": "Logs health data and provides an app to view it", "icon": "app.png", "tags": "tool,system,health", "supports": ["BANGLEJS","BANGLEJS2"], diff --git a/apps/pastel/metadata.json b/apps/pastel/metadata.json index 61b636842..0a04491fc 100644 --- a/apps/pastel/metadata.json +++ b/apps/pastel/metadata.json @@ -3,7 +3,7 @@ "name": "Pastel Clock", "shortName": "Pastel", "version": "0.13", - "description": "A Configurable clock with custom fonts, background and weather display. Has a cyclic information line that includes, day, date, battery, sunrise and sunset times. Requires firmware 2.11.27", + "description": "A Configurable clock with custom fonts, background and weather display. Has a cyclic information line that includes, day, date, battery, sunrise and sunset times.", "icon": "pastel.png", "dependencies": {"mylocation":"app","weather":"app"}, "screenshots": [{"url":"screenshot_pastel.png"}, {"url":"weather_icons.png"}], diff --git a/apps/waveclk/metadata.json b/apps/waveclk/metadata.json index 503c9c11c..a8d270da2 100644 --- a/apps/waveclk/metadata.json +++ b/apps/waveclk/metadata.json @@ -2,7 +2,7 @@ "id": "waveclk", "name": "Wave Clock", "version": "0.02", - "description": "A clock using a wave image by [Lillith May](https://www.instagram.com/_lilustrations_/). **Note: Works on any Bangle.js 2, but requires firmware 2v11 or later on Bangle.js 1**", + "description": "A clock using a wave image by [Lillith May](https://www.instagram.com/_lilustrations_/)", "icon": "app.png", "screenshots": [{"url":"screenshot.png"}], "type": "clock", diff --git a/apps/widpa/metadata.json b/apps/widpa/metadata.json index 95a8a8a9c..24c2f63b5 100644 --- a/apps/widpa/metadata.json +++ b/apps/widpa/metadata.json @@ -8,7 +8,7 @@ "type": "widget", "supports": ["BANGLEJS", "BANGLEJS2"], "readme": "README.md", - "description": "Displays the current step count from `Bangle.getHealthStatus(\"day\").steps` in 12x16 font, requires firmware v2.11.21 or later", + "description": "Displays the current step count from `Bangle.getHealthStatus(\"day\").steps` in 12x16 font", "tags": "widget,battery", "storage": [ {"name":"widpa.wid.js","url":"widpa.wid.js"} diff --git a/apps/widpb/metadata.json b/apps/widpb/metadata.json index 0c2ed747a..7d239face 100644 --- a/apps/widpb/metadata.json +++ b/apps/widpb/metadata.json @@ -8,7 +8,7 @@ "type": "widget", "supports": ["BANGLEJS", "BANGLEJS2"], "readme": "README.md", - "description": "Displays the current step count from `Bangle.getHealthStatus(\"day\").steps` in the Lato font, requires firmware v2.11.21 or later", + "description": "Displays the current step count from `Bangle.getHealthStatus(\"day\").steps` in the Lato font", "tags": "widget,battery", "storage": [ {"name":"widpb.wid.js","url":"widpb.wid.js"} From 6c5b006999f87c3583b3ae2302af5e14e1d76a5e Mon Sep 17 00:00:00 2001 From: Francesco Bedussi Date: Wed, 9 Feb 2022 11:54:08 +0100 Subject: [PATCH 10/59] feat: themed barometer --- apps/barometer/ChangeLog | 1 + apps/barometer/app.js | 84 ++++++++++++++++++------------------ apps/barometer/metadata.json | 2 +- 3 files changed, 44 insertions(+), 43 deletions(-) diff --git a/apps/barometer/ChangeLog b/apps/barometer/ChangeLog index 06ff68298..031a86cdc 100644 --- a/apps/barometer/ChangeLog +++ b/apps/barometer/ChangeLog @@ -1 +1,2 @@ 0.01: Display pressure as number and hand +0.02: Use theme color diff --git a/apps/barometer/app.js b/apps/barometer/app.js index 61c0edce4..2ce95864b 100644 --- a/apps/barometer/app.js +++ b/apps/barometer/app.js @@ -1,77 +1,77 @@ -const center = { +var center = { x: g.getWidth()/2, y: g.getHeight()/2, }; -const MIN = 940; -const MAX = 1090; -const NUMBER_OF_VALUES = MAX - MIN; -const SCALE_TICK_STEP = 5; -const SCALE_VALUES_STEP = 25; -const NUMBER_OF_LABELS = NUMBER_OF_VALUES / SCALE_VALUES_STEP; -const NUMBER_OF_TICKS = NUMBER_OF_VALUES / SCALE_TICK_STEP; -const ZERO_OFFSET = (Math.PI / 4) * 3; -const SCALE_SPAN = (Math.PI / 2) * 3; -const TICK_LENGTH = 10; -const HAND_LENGTH = 45; -const HAND_WIDTH = 5; +var MIN = 940; +var MAX = 1090; +var NUMBER_OF_VALUES = MAX - MIN; +var SCALE_TICK_STEP = 5; +var SCALE_VALUES_STEP = 25; +var NUMBER_OF_LABELS = NUMBER_OF_VALUES / SCALE_VALUES_STEP; +var NUMBER_OF_TICKS = NUMBER_OF_VALUES / SCALE_TICK_STEP; +var ZERO_OFFSET = (Math.PI / 4) * 3; +var SCALE_SPAN = (Math.PI / 2) * 3; +var TICK_LENGTH = 10; +var HAND_LENGTH = 45; +var HAND_WIDTH = 5; function generatePoly(radius, width, angle){ - const x = center.x + Math.cos(angle) * radius; - const y = center.y + Math.sin(angle) * radius; - const d = { + var x = center.x + Math.cos(angle) * radius; + var y = center.y + Math.sin(angle) * radius; + var d = { x: width/2 * Math.cos(angle + Math.PI/2), y: width/2 * Math.sin(angle + Math.PI/2), }; - const poly = [center.x - d.x, center.y - d.y, center.x + d.x, center.y + d.y, x + d.x, y + d.y, x - d.x, y - d.y]; + var poly = [center.x - d.x, center.y - d.y, center.x + d.x, center.y + d.y, x + d.x, y + d.y, x - d.x, y - d.y]; return poly; } function drawHand(value){ - g.setColor(256, 0, 0); + g.setColor(g.theme.fg2); g.setFontAlign(0,0); g.setFont("Vector",15); g.drawString(value, center.x, center.y * 2 - 15, true); - const angle = SCALE_SPAN / NUMBER_OF_VALUES * (value - MIN) + ZERO_OFFSET; + var angle = SCALE_SPAN / NUMBER_OF_VALUES * (value - MIN) + ZERO_OFFSET; g.fillPoly(generatePoly(HAND_LENGTH, HAND_WIDTH, angle), true); g.fillCircle(center.x ,center.y, 4); } function drawTicks(){ - g.setColor(1,1,1); + g.setColor(g.theme.fg); for(let i= 0; i <= NUMBER_OF_TICKS; i++){ - const angle = (i * (SCALE_SPAN/NUMBER_OF_TICKS)) + ZERO_OFFSET; + var angle = (i * (SCALE_SPAN/NUMBER_OF_TICKS)) + ZERO_OFFSET; - const tickWidth = i%5==0 ? 5 : 2; + var tickWidth = i%5==0 ? 5 : 2; g.fillPoly(generatePoly(center.x, tickWidth, angle), true); } - g.setColor(0,0,0); + g.setColor(g.theme.bg); g.fillCircle(center.x,center.y,center.x - TICK_LENGTH); } function drawScaleLabels(){ - g.setColor(1,1,1); + g.setColor(g.theme.fg); g.setFont("Vector",12); let label = MIN; for (let i=0;i <= NUMBER_OF_LABELS; i++){ - const angle = (i * (SCALE_SPAN/NUMBER_OF_LABELS)) + ZERO_OFFSET; - const labelDimensions = g.stringMetrics(label); + var angle = (i * (SCALE_SPAN/NUMBER_OF_LABELS)) + ZERO_OFFSET; + var labelDimensions = g.stringMetrics(label); - const LABEL_PADDING = 5; - const radius = center.x - TICK_LENGTH - LABEL_PADDING; - const x = center.x + Math.cos(angle) * radius; - const y = center.y + Math.sin(angle) * radius; + var LABEL_PADDING = 5; + var radius = center.x - TICK_LENGTH - LABEL_PADDING; + var x = center.x + Math.cos(angle) * radius; + var y = center.y + Math.sin(angle) * radius; - const visualX = x > center.x ? x - labelDimensions.width : x + labelDimensions.width > center.x ? x - (labelDimensions.width / 2) : x; - const visualY = y >= center.y - labelDimensions.height / 2 ? y - labelDimensions.height / 2 : y; + var visualX = x > center.x ? x - labelDimensions.width : x + labelDimensions.width > center.x ? x - (labelDimensions.width / 2) : x; + var visualY = y >= center.y - labelDimensions.height / 2 ? y - labelDimensions.height / 2 : y; g.drawString(label, visualX, visualY); @@ -80,29 +80,29 @@ function drawScaleLabels(){ } function drawIcons() { - const sunIcon = { - width : 24, height : 24, bpp : 4, + var sunIcon = { + width : 24, height : 24, bpp : 1, transparent : 0, - buffer : require("heatshrink").decompress(atob("AAkP+ALeA40PAYf/BYv/CYYLBBwIICCQ4ACHI4ICEIgkEAg48GDApcFAoYPBBY5NDBZIjLHZpTLNZiDKTZSzMZZT7iA=")) + buffer : require("heatshrink").decompress(atob("gEYAQ0IgEQjkAnEMv0wgH/gEB4eAgcA4EHgHgg0AsHmgFnAQQICBwQUCDQQgCEwQsCGQQ+IA")) }; g.drawImage(sunIcon, center.x + 15, center.y - 12); - const sunRainIcon = { - width : 24, height : 24, bpp : 4, + var sunRainIcon = { + width : 24, height : 24, bpp : 1, transparent : 0, - buffer : require("heatshrink").decompress(atob("AB/wBbEPBAoGEDI/wh4jJBQIMJEgUP///IpAJCBgf/+ALCAQRJFAoIHECgI7FIYwSEHAoGBEQwsEDIJdHCYYLLFwwTEQQwGFQQQACYpYpLf0AAEA")) + buffer : require("heatshrink").decompress(atob("AAeAAQmEgEQhEAhIIBg1ggEEj8AhEw4HokFAglAnEGoEGgHAgcRgEBkQCBgQCBgcAgUBwARBv/4HAcgiAFDCoIAC")) }; g.drawImage(sunRainIcon, center.x - 12, 30); - const rainIcon = { - width : 24, height : 24, bpp : 4, + var rainIcon = { + width : 24, height : 24, bpp : 1, transparent : 0, - buffer : require("heatshrink").decompress(atob("ADnwBRP/AIQAGh4ZKA4YLLh//EwoTFh4GCCIIfGDAQ5DIQ5bIBbQvII4gAGWLwzBOoarLCw4RKLBAAgA")) + buffer : require("heatshrink").decompress(atob("AA0gAQPMgEBgUAgQCCgPwAgMYj0AhkQgEECwICGBYMIj//+ArFgURwAqBB4NEgEQghAJ")) }; g.drawImage(rainIcon, center.x - 44, center.y - 12); } -g.setBgColor(0,0,0); +g.setBgColor(g.theme.bg); g.clear(); drawTicks(); diff --git a/apps/barometer/metadata.json b/apps/barometer/metadata.json index a10e18b32..68af55c68 100644 --- a/apps/barometer/metadata.json +++ b/apps/barometer/metadata.json @@ -1,7 +1,7 @@ { "id": "barometer", "name": "Barometer", "shortName":"Barometer", - "version":"0.01", + "version":"0.02", "description": "A simple barometer that displays the current air pressure", "icon": "barometer.png", "tags": "tool,outdoors", From 4cd670c88fc521ee581221ae96afab5a1a2e2f07 Mon Sep 17 00:00:00 2001 From: Marco H Date: Wed, 9 Feb 2022 13:49:01 +0100 Subject: [PATCH 11/59] Update README.md --- apps/widgps/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/widgps/README.md b/apps/widgps/README.md index d4a27c130..372747486 100644 --- a/apps/widgps/README.md +++ b/apps/widgps/README.md @@ -5,6 +5,6 @@ A simple widget that shows the on/off status of the GPS. The GPS can quickly run the battery down if it is on all the time so it is useful to know if it has been switched on or not. -- Uses Bangle.isGPSOn(), requires firmware v2.08.167 or later +- Uses Bangle.isGPSOn() - Shows in grey when the GPS is off - Shows in amber when the GPS is on From 8b23e17f1cf93cf2cab9a8a53600c86b449e562e Mon Sep 17 00:00:00 2001 From: copoer Date: Wed, 9 Feb 2022 19:51:55 -0400 Subject: [PATCH 12/59] Added a bunch of auto translations --- lang/cs_CZ.json | 236 ++++++++++++++++++++++++++-------- lang/de_DE.json | 199 +++++++++++++++++++++++++---- lang/es_ES.json | 199 +++++++++++++++++++++++++---- lang/fi_FI.json | 192 +++++++++++++++++++++++++--- lang/fr_FR.json | 192 +++++++++++++++++++++++++--- lang/hu_HU.json | 192 +++++++++++++++++++++++++--- lang/index.json | 6 +- lang/it_IT.json | 332 +++++++++++++++++++++++++++--------------------- lang/ja_JA.json | 167 ++++++++++++++++++++++++ lang/nl_NL.json | 192 +++++++++++++++++++++++++--- lang/pt_PT.json | 167 ++++++++++++++++++++++++ lang/ru_RU.json | 167 ++++++++++++++++++++++++ lang/sv_SE.json | 192 +++++++++++++++++++++++++--- lang/tr_TR.json | 40 +++--- lang/zh_ZH.json | 167 ++++++++++++++++++++++++ 15 files changed, 2266 insertions(+), 374 deletions(-) create mode 100644 lang/ja_JA.json create mode 100644 lang/pt_PT.json create mode 100644 lang/ru_RU.json create mode 100644 lang/zh_ZH.json diff --git a/lang/cs_CZ.json b/lang/cs_CZ.json index 3f4fc87f1..0b56e69ed 100644 --- a/lang/cs_CZ.json +++ b/lang/cs_CZ.json @@ -1,53 +1,185 @@ { - "//":"Czech language translations", - "GLOBAL": { - "//":"Translations that apply for all apps", - "Alarm" : "Budík", - "Hour" : "Hodina", - "Hours" : "Hodiny", - "Minute" : "Minuta", - "Minutes" : "Minuty", - "Second" : "Sekunda", - "Seconds" : "Sekundy", - "Month" : "Měsíc", - "Enabled" : "Povoleno", - "Background" : "Pozadí", - "Connected" : "Připojeno", - "Settings" : "Nastavení", - "Save" : "Uložit", - "Back" : "Zpět", - "Repeat" : "Opakovat", - "Delete" : "Smazat", - "Sleep" : "Uspat", - "Alarms" : "Budíky", - "ALARM!" : "BUDÍK!", - - " (repeat)" : " (opakovat)", - "< Back" : "< Zpět", - "> Delete" : "> Smazat", - "> Save" : " > Uložit", - "ALARM " : "BUDÍK ", - - "Add Device" : "Přidat zařízení", - "App Settings" : "Nast. Aplikací", - "Apps" : "Aplikace" - - }, - "alarm": { - "//":"App-specific overrides", - "Alarm/Timer" : "Budik/Časovač", - "rpt" : "Opk.", - "New Alarm" : "Nový budík", - "New Timer" : "Nový časovač", - "Auto snooze" : "Auto odložit" - }, - "setting" : { - "Quiet Mode" : "Tichý režim" - - }, - "messages": { - "Are you sure?" : "Opravdu?" - } - - -} + "//": "Czech language translations", + "GLOBAL": { + "//": "Translations that apply for all apps", + "Alarm": "Budík", + "Hour": "Hodina", + "Hours": "Hodiny", + "Minute": "Minuta", + "Minutes": "Minuty", + "Second": "Sekunda", + "Seconds": "Sekundy", + "Month": "Měsíc", + "Enabled": "Povoleno", + "Background": "Pozadí", + "Connected": "Připojeno", + "Settings": "Nastavení", + "Save": "Uložit", + "Back": "Zpět", + "Repeat": "Opakovat", + "Delete": "Smazat", + "Sleep": "Uspat", + "Alarms": "Budíky", + "ALARM!": "BUDÍK!", + " (repeat)": " (opakovat)", + "< Back": "< Zpět", + "> Delete": "> Smazat", + "> Save": " > Uložit", + "ALARM ": "BUDÍK ", + "Add Device": "Přidat zařízení", + "App Settings": "Nast. Aplikací", + "Apps": "Aplikace", + "valid period": "doba platnosti", + "Font": "Písmo", + "circle count": "počet kroužků", + "min. confidence": "min. důvěra", + "circle 1": "okruh 1", + "circle 3": "kruh 3", + "step length": "délka kroku", + "Highlight FG": "Zvýraznění FG", + "Storage": "Úložiště", + "show widgets": "zobrazit widgety", + "Highlight BG": "Zvýraznění BG", + "Foreground 2": "Popředí 2", + "BLE": "BLE", + "Light BW": "Light BW", + "BTNs 1:startlap 2:exit 3:reset": "BTNs 1:startlap 2:exit 3:reset", + "Show clocks": "Zobrazit hodiny", + "Delete All Messages": "Odstranění všech zpráv", + "data": "data", + "Mark Unread": "Označit nepřečtené", + "Launcher Settings": "Nastavení spouštěče", + "circle 4": "kruh 4", + "App Source\nNot found": "Zdroj aplikace\nNenalezeno", + "Twist Timeout": "Twist Timeout", + "Dark BW": "Dark BW", + "Flatten Battery": "Zploštění baterie", + "Make Connectable": "Připojení", + "Wake on Touch": "Probuzení při dotyku", + "Twist Threshold": "Prahová hodnota Twist", + "Debug Info": "Informace o ladění", + "Time Zone": "Časové pásmo", + "battery warn": "upozornění na baterii", + "Remove": "Odstranění stránky", + "maximum": "maximum", + "Vector font size": "Velikost vektorového písma", + "Vibration": "Vibrace", + "(repeat)": "(opakování)", + "week": "týden", + "Yes\ndefinitely": "Ano\nurčitě", + "heartrate": "srdeční frekvence", + "Foreground": "Přední stránka", + "Clock Style": "Styl hodin", + "music": "hudba", + "Delete all messages": "Odstranění všech zpráv", + "Piezo": "Piezo", + "Log": "Přihlásit se", + "Twist Max Y": "Twist Max Y", + "STEPS": "KROKY", + "View Message": "Zobrazit zprávu", + "Heartrate": "Srdeční frekvence", + "TAP right top/bottom": "TAP vpravo nahoře/dole", + "Utils": "Utils", + "Programmable": "Programovatelné", + "Rewrite Settings": "Nastavení přepisu", + "Wake on BTN2": "Probuďte se na BTN2", + "Utilities": "Komunální služby", + "Compacting...\nTakes approx\n1 minute": "Zhutňování...\nTrvá přibližně\n1 minuta", + "Wake on FaceUp": "Probuzení na FaceUp", + "Wake on BTN1": "Probuďte se na BTN1", + "Wake on Twist": "Probuzení na Twistu", + "This will remove everything": "Tím se odstraní vše.", + "Keep Msgs": "Uchovávejte zprávy Msgs", + "Background 2": "Pozadí 2", + "Reset Settings": "Obnovení nastavení", + "Are you sure": "Jste si jistý, že", + "Stay Connectable": "Zůstaňte ve spojení", + "HID": "HID", + "colorize icon": "vybarvit ikonu", + "distance goal": "vzdálenostní cíl", + "circle 2": "kruh 2", + "Record Run": "Rekordní běh", + "Connectable": "Připojitelné", + "Side": "Strana", + "No app has settings": "Žádná aplikace nemá nastavení", + "Date": "Datum", + "OFF": "OFF", + "No Messages": "Žádné zprávy", + "Turn Off": "Vypnout", + "Invalid settings": "Neplatné nastavení", + "Unread timer": "Nepřečtený časovač", + "weather circle": "povětrnostní kruh", + "minimum": "minimum", + "Customize": "Přizpůsobení", + "Bluetooth": "Bluetooth", + "Circle": "Kruh", + "LCD": "LCD", + "Compact Storage": "Kompaktní úložiště", + "LCD Timeout": "Časový limit LCD", + "Connect device\nto add to\nwhitelist": "Připojení zařízení\npřidat do\nwhitelist", + "LCD Brightness": "Jas displeje LCD", + "TIMER": "ČASOVAČ", + "Reset All": "Obnovit vše", + "Left": "Vlevo", + "Reset": "Obnovení", + "goal": "cíl", + "Alerts": "Upozornění", + "Locale": "Lokalita", + "Beep": "Pípnutí", + "Vibrate": "Vibrace", + "Message": "Zpráva", + "System": "Systém", + "on": "na adrese", + "Sort Order": "Pořadí řazení", + "Right": "Vpravo", + "Select Clock": "Vybrat hodiny", + "Reset to Defaults": "Obnovení výchozího nastavení", + "Wake on BTN3": "Probuďte se na BTN3", + "Passkey BETA": "Passkey BETA", + "No Clocks Found": "Nebyly nalezeny žádné hodiny", + "Reset all widgets": "Obnovení všech widgetů", + "Widgets": "Widgety", + "Sleep Phase Alarm": "Alarm fáze spánku", + "Error in settings": "Chyba v nastavení", + "Timer": "Časovač", + "ALARM": "ALARM", + "Disable": "Zakázat", + "BACK": "ZPĚT", + "Whitelist": "Bílá listina", + "Factory Reset": "Obnovení továrního nastavení", + "Set Time": "Nastavený čas", + "Hide": "Skrýt", + "Messages": "Zprávy", + "On": "Na adrese", + "Show": "Zobrazit", + "Flattening battery - this can take hours.\nLong-press button to cancel": "Zploštění baterie - může trvat hodiny.\nDlouhým stisknutím tlačítka zrušíte", + "start&lap/reset, BTN1: EXIT": "start&lap/reset, BTN1: EXIT", + "No": "Ne", + "Ok": "Ok", + "Yes": "Ano", + "Steps": "Kroky", + "Year": "Rok", + "steps": "kroky", + "back": "zpět", + "Music": "Hudba", + "Loading": "Načítání", + "off": "mimo", + "color": "barva", + "Off": "Vypnuto", + "Theme": "Téma" + }, + "alarm": { + "//": "App-specific overrides", + "Alarm/Timer": "Budik/Časovač", + "rpt": "Opk.", + "New Alarm": "Nový budík", + "New Timer": "Nový časovač", + "Auto snooze": "Auto odložit" + }, + "setting": { + "Quiet Mode": "Tichý režim" + }, + "messages": { + "Are you sure?": "Opravdu?" + } +} \ No newline at end of file diff --git a/lang/de_DE.json b/lang/de_DE.json index b4acfe675..8c893e6ad 100644 --- a/lang/de_DE.json +++ b/lang/de_DE.json @@ -1,28 +1,173 @@ { - "//":"German language translations", - "GLOBAL": { - "//":"Translations that apply for all apps", - "Alarm" : "Wecker", - "Hours" : "Stunden", - "Minutes" : "Minuten", - "Enabled" : "Aktiviert", - "Settings" : "Einstellungen", - "Save" : "Speichern", - "Back" : "Zurück", - "Repeat" : "Wiederholen", - "Delete" : "Löschen", - "Sleep" : "Schlummern", - "Alarms" : "Wecker", - "New Alarm" : "Neuer Wecker", - "ALARM!" : "ALARM!", - "Yes" : "Ja", - "No" : "Nein", - "On" : "Ein", - "Off" : "Aus", - "Ok" : "OK" - }, - "alarm": { - "//":"App-specific overrides", - "rpt" : "Wdh." - } -} + "//": "German language translations", + "GLOBAL": { + "//": "Translations that apply for all apps", + "Alarm": "Wecker", + "Hours": "Stunden", + "Minutes": "Minuten", + "Enabled": "Aktiviert", + "Settings": "Einstellungen", + "Save": "Speichern", + "Back": "Zurück", + "Repeat": "Wiederholen", + "Delete": "Löschen", + "Sleep": "Schlummern", + "Alarms": "Wecker", + "New Alarm": "Neuer Wecker", + "ALARM!": "ALARM!", + "Yes": "Ja", + "No": "Nein", + "On": "Ein", + "Off": "Aus", + "Ok": "OK", + "New Timer": "Neue Zeitschaltuhr", + "(repeat)": "(Wiederholung)", + "music": "Musik", + "Keep Msgs": "Msgs behalten", + "circle count": "Kreiszahl", + "Auto snooze": "Automatisches Schlummern", + "week": "Woche", + "Heartrate": "Herzfrequenz", + "minimum": "Minimum", + "weather circle": "Wetterkreis", + "circle 3": "Kreis 3", + "show widgets": "Widgets anzeigen", + "circle 4": "Kreis 4", + "circle 1": "Kreis 1", + "circle 2": "Kreis 2", + "battery warn": "Batteriewarnung", + "heartrate": "Herzfrequenz", + "data": "Daten", + "step length": "Schrittlänge", + "valid period": "Gültigkeitsdauer", + "colorize icon": "Symbol einfärben", + "min. confidence": "Mindestvertrauen", + "maximum": "maximal", + "distance goal": "Fernziel", + "Circle": "Kreis", + "Yes\ndefinitely": "Ja\ndefinitiv", + "TAP right top/bottom": "TAP rechts oben/unten", + "Are you sure": "Sind Sie sicher, dass", + "STEPS": "SCHRITTE", + "Mark Unread": "Ungelesen markieren", + "Delete all messages": "Alle Nachrichten löschen", + "Unread timer": "Ungelesener Timer", + "Quiet Mode": "Leiser Modus", + "Utils": "Werkzeuge", + "Piezo": "Piezo", + "LCD": "LCD", + "Record Run": "Rekordlauf", + "Apps": "Apps", + "Delete All Messages": "Alle Nachrichten löschen", + "start&lap/reset, BTN1: EXIT": "Start&Runde/Zurücksetzen, BTN1: EXIT", + "No Messages": "Keine Nachrichten", + "Bluetooth": "Bluetooth", + "BTNs 1:startlap 2:exit 3:reset": "BTNs 1:startlap 2:exit 3:reset", + "View Message": "Nachricht anzeigen", + "Vector font size": "Vektor-Schriftgröße", + "Light BW": "Licht BW", + "BLE": "BLE", + "Make Connectable": "Verbindbar machen", + "Vibration": "Vibration", + "Foreground": "Vorderseite", + "Customize": "Anpassen", + "HID": "HID", + "Dark BW": "Dunkel BW", + "Passkey BETA": "Hauptschlüssel BETA", + "Show clocks": "Uhren anzeigen", + "Font": "Schriftart", + "Launcher Settings": "Launcher-Einstellungen", + "App Source\nNot found": "App-Quelle\nNicht gefunden", + "Programmable": "Programmierbar", + "Background 2": "Hintergrund 2", + "Foreground 2": "Vordergrund 2", + "Add Device": "Gerät hinzufügen", + "Highlight BG": "Hervorhebung BG", + "Background": "Hintergrund", + "Highlight FG": "Highlight FG", + "Wake on Touch": "Wecken bei Berührung", + "Twist Timeout": "Twist Timeout", + "Twist Max Y": "Twist Max Y", + "LCD Timeout": "LCD-Zeitüberschreitung", + "LCD Brightness": "LCD-Helligkeit", + "Utilities": "Versorgungsunternehmen", + "Log": "Protokoll", + "Compact Storage": "Kompakte Lagerung", + "Wake on BTN3": "Wake auf BTN3", + "Twist Threshold": "Schwellenwert verdrehen", + "Remove": "entfernen", + "Connect device\nto add to\nwhitelist": "Gerät verbinden\nzum Hinzufügen zur\nWhitelist", + "Debug Info": "Debug-Informationen", + "Time Zone": "Zeitzone", + "Clock Style": "Uhr Stil", + "Wake on BTN2": "Wake auf BTN2", + "Wake on FaceUp": "Wake on FaceUp", + "Wake on BTN1": "Wake auf BTN1", + "Wake on Twist": "Wake on Twist", + "Connectable": "Anschließbar", + "Second": "Zweite", + "Minute": "Minute", + "Turn Off": "Ausschalten", + "No Clocks Found": "Keine Uhren gefunden", + "App Settings": "App-Einstellungen", + "Hour": "Stunde", + "Reset to Defaults": "Auf Standardwerte zurücksetzen", + "Flattening battery - this can take hours.\nLong-press button to cancel": "Entladen der Batterie - dies kann Stunden dauern.\nLanger Tastendruck zum Abbrechen", + "Reset Settings": "Einstellungen zurücksetzen", + "Rewrite Settings": "Einstellungen umschreiben", + "Compacting...\nTakes approx\n1 minute": "Verdichten...\nDauert ca.\n1 Minute", + "Stay Connectable": "Anschlussfähig bleiben", + "Storage": "Lagerung", + "This will remove everything": "Dadurch wird alles entfernt", + "on": "auf", + "TIMER": "TIMER", + "Widgets": "Widgets", + "goal": "Ziel", + "Beep": "Piep", + "Reset": "Zurücksetzen", + "No app has settings": "Keine App hat Einstellungen", + "Month": "Monat", + "Reset All": "Alle zurücksetzen", + "Flatten Battery": "Batterie abflachen", + "Right": "Rechts", + "Side": "Seite", + "Left": "Links", + "Sleep Phase Alarm": "Schlafphasenalarm", + "Date": "Datum", + "Sort Order": "Sortierreihenfolge", + "OFF": "AUS", + "Invalid settings": "Ungültige Einstellungen", + "Message": "Nachricht", + "Vibrate": "Vibrieren", + "Reset all widgets": "Alle Widgets zurücksetzen", + "System": "System", + "Alerts": "Warnungen", + "Locale": "Schauplatz", + "Whitelist": "Whitelist", + "Select Clock": "Uhr auswählen", + "Disable": "Deaktivieren Sie", + "Timer": "Zeitschaltuhr", + "Error in settings": "Fehler in den Einstellungen", + "Set Time": "Zeit einstellen", + "ALARM": "ALARM", + "BACK": "ZURÜCK", + "Factory Reset": "Werksreset", + "steps": "Schritte", + "Connected": "Verbunden", + "Show": "anzeigen", + "Messages": "Nachrichten", + "Hide": "Ausblenden", + "back": "zurück", + "Steps": "Schritte", + "Year": "Jahr", + "Loading": "Laden", + "Music": "Musik", + "color": "Farbe", + "off": "aus", + "Theme": "Thema" + }, + "alarm": { + "//": "App-specific overrides", + "rpt": "Wdh." + } +} \ No newline at end of file diff --git a/lang/es_ES.json b/lang/es_ES.json index a3e7ede3f..d381582e3 100644 --- a/lang/es_ES.json +++ b/lang/es_ES.json @@ -1,28 +1,173 @@ { - "//":"Spanish language translations", - "GLOBAL": { - "//":"Translations that apply for all apps", - "Alarms" : "Alarmas", - "Hours" : "Horas", - "Minutes" : "Minutos", - "Enabled" : "Activados", - "Save" : "Ahorrar", - "Back" : "Regresa", - "Repeat" : "Repetición", - "Delete" : "Borrar", - "ALARM!" : "ALARM", - "Sleep" : "Dormir", - "Alarms" : "Alarmas", - "New Alarm" : "Nueva alarma", - "ALARM!" : "ALARM!", - "Yes" : "Si", - "No" : "No", - "On" : "Encendido", - "Off" : "Apagado", - "Ok" : "OK" - }, - "alarm": { - "//":"App-specific overrides", - "rpt" : "rep." - } -} + "//": "Spanish language translations", + "GLOBAL": { + "//": "Translations that apply for all apps", + "Alarms": "Alarmas", + "Hours": "Horas", + "Minutes": "Minutos", + "Enabled": "Activados", + "Save": "Ahorrar", + "Back": "Regresa", + "Repeat": "Repetición", + "Delete": "Borrar", + "ALARM!": "ALARM!", + "Sleep": "Dormir", + "New Alarm": "Nueva alarma", + "Yes": "Si", + "No": "No", + "On": "Encendido", + "Off": "Apagado", + "Ok": "OK", + "(repeat)": "(repetir)", + "New Timer": "Nuevo temporizador", + "music": "música", + "circle 2": "círculo 2", + "circle 1": "círculo 1", + "Keep Msgs": "Mantener Msgs", + "circle 3": "círculo 3", + "week": "semana", + "Auto snooze": "Repetición automática de la alarma", + "show widgets": "mostrar widgets", + "min. confidence": "confianza mínima", + "circle 4": "círculo 4", + "circle count": "recuento de círculos", + "heartrate": "ritmo cardíaco", + "Heartrate": "El ritmo cardíaco", + "weather circle": "círculo meteorológico", + "battery warn": "aviso de batería", + "minimum": "mínimo", + "distance goal": "objetivo de distancia", + "valid period": "período de validez", + "maximum": "máximo", + "step length": "longitud del paso", + "data": "datos", + "colorize icon": "colorear el icono", + "Circle": "Círculo", + "Launcher Settings": "Configuración del lanzador", + "App Source\nNot found": "Fuente de la aplicación\nNo se ha encontrado", + "Show clocks": "Mostrar relojes", + "Font": "Fuente", + "TAP right top/bottom": "TAP derecho superior/inferior", + "Yes\ndefinitely": "Sí\ndefinitivamente", + "View Message": "Ver mensaje", + "Delete all messages": "Borrar todos los mensajes", + "STEPS": "PASOS", + "BTNs 1:startlap 2:exit 3:reset": "BTNs 1:startlap 2:exit 3:reset", + "start&lap/reset, BTN1: EXIT": "start&lap/reset, BTN1: EXIT", + "Are you sure": "¿Está seguro de que", + "Vector font size": "Tamaño de la fuente vectorial", + "Mark Unread": "Marcar como no leído", + "No Messages": "No hay mensajes", + "Delete All Messages": "Borrar todos los mensajes", + "LCD": "LCD", + "Apps": "Aplicaciones", + "Unread timer": "Temporizador no leído", + "Record Run": "Carrera de récords", + "Bluetooth": "Bluetooth", + "Quiet Mode": "Modo silencioso", + "Piezo": "Piezo", + "Make Connectable": "Hacer conectable", + "Programmable": "Programable", + "Vibration": "Vibración", + "Passkey BETA": "Passkey BETA", + "Customize": "Personalice", + "HID": "HID", + "Utils": "Utilidades", + "Light BW": "Luz BW", + "BLE": "BLE", + "Dark BW": "BW oscuro", + "Background 2": "Antecedentes 2", + "Foreground 2": "Primer plano 2", + "Foreground": "Primer plano", + "Highlight BG": "Resaltar BG", + "Connect device\nto add to\nwhitelist": "Conectar dispositivo\npara añadirlo a la\nlista blanca", + "Highlight FG": "Destacar FG", + "Background": "Antecedentes", + "Add Device": "Añadir dispositivo", + "Remove": "Eliminar", + "Wake on BTN3": "Wake en BTN3", + "Twist Max Y": "Twist Max Y", + "LCD Timeout": "Tiempo de espera del LCD", + "Twist Threshold": "Umbral de giro", + "Wake on BTN2": "Wake en BTN2", + "Wake on BTN1": "Wake en BTN1", + "Wake on Twist": "Despertar en Twist", + "LCD Brightness": "Brillo del LCD", + "Log": "Registro", + "Time Zone": "Huso horario", + "Wake on FaceUp": "Despierta en FaceUp", + "Wake on Touch": "Despertar al tacto", + "Twist Timeout": "Tiempo de espera de la torsión", + "Compact Storage": "Almacenamiento compacto", + "Clock Style": "Estilo de reloj", + "Storage": "Almacenamiento", + "Utilities": "Servicios públicos", + "Compacting...\nTakes approx\n1 minute": "La compactación...\nTarda aproximadamente\n1 minuto", + "Debug Info": "Información de depuración", + "Rewrite Settings": "Reescribir la configuración", + "Flatten Battery": "Aplastar la batería", + "Turn Off": "Apagar", + "This will remove everything": "Esto eliminará todo", + "Reset Settings": "Restablecer la configuración", + "Month": "Mes", + "Second": "Segundo", + "Date": "Fecha", + "Reset to Defaults": "Restablecer los valores predeterminados", + "Hour": "Hora", + "Flattening battery - this can take hours.\nLong-press button to cancel": "Aplastar la batería - esto puede llevar horas.\nPulsar prolongadamente el botón para cancelar", + "Stay Connectable": "Manténgase conectado", + "Minute": "Minuta", + "No Clocks Found": "No se han encontrado relojes", + "Connectable": "Conectable", + "No app has settings": "Ninguna aplicación tiene ajustes", + "Invalid settings": "Ajustes no válidos", + "App Settings": "Configuración de la aplicación", + "Side": "Lado", + "OFF": "OFF", + "Sleep Phase Alarm": "Alarma de fase de sueño", + "Widgets": "Widgets", + "Left": "Izquierda", + "Sort Order": "Orden de clasificación", + "TIMER": "TEMPORIZADOR", + "goal": "objetivo", + "Right": "A la derecha", + "on": "en", + "Alarm": "Alarma", + "Reset All": "Restablecer todo", + "Reset all widgets": "Restablecer todos los widgets", + "Reset": "Reiniciar", + "Beep": "Bip", + "System": "Sistema", + "Locale": "Localidad", + "Message": "Mensaje", + "Set Time": "Hora de la cita", + "Vibrate": "Vibrar", + "Alerts": "Alertas", + "Timer": "Temporizador", + "Error in settings": "Error en la configuración", + "Select Clock": "Seleccionar reloj", + "Whitelist": "Lista blanca", + "Disable": "Desactivar", + "BACK": "VOLVER", + "Factory Reset": "Restablecimiento de fábrica", + "Connected": "Conectado", + "ALARM": "ALARMA", + "Messages": "Mensajes", + "Settings": "Ajustes", + "Show": "Mostrar", + "Hide": "Ocultar", + "steps": "pasos", + "back": "volver", + "Steps": "Pasos", + "Year": "Año", + "Loading": "Cargando", + "Music": "Música", + "color": "color", + "off": "fuera de", + "Theme": "Tema" + }, + "alarm": { + "//": "App-specific overrides", + "rpt": "rep." + } +} \ No newline at end of file diff --git a/lang/fi_FI.json b/lang/fi_FI.json index eb1d826d8..162e6a556 100644 --- a/lang/fi_FI.json +++ b/lang/fi_FI.json @@ -1,21 +1,173 @@ { - "//":"Finnish language translations", - "GLOBAL": { - "//":"Translations that apply for all apps", - "Alarms" : "Hälytykset", - "Hours" : "Tunnit", - "Minutes" : "Minuutit", - "Enabled" : "Aktivoitu", - "New Alarm" : "Uusi hälytys", - "Save" : "Tallenna", - "Back" : "Paluu", - "Repeat" : "Toista", - "Delete" : "Poista", - "ALARM!" : "ALARM", - "Sleep" : "Nukkuminen" - }, - "alarm": { - "//":"App-specific overrides", - "rpt" : "toistaa" - } -} + "//": "Finnish language translations", + "GLOBAL": { + "//": "Translations that apply for all apps", + "Alarms": "Hälytykset", + "Hours": "Tunnit", + "Minutes": "Minuutit", + "Enabled": "Aktivoitu", + "New Alarm": "Uusi hälytys", + "Save": "Tallenna", + "Back": "Paluu", + "Repeat": "Toista", + "Delete": "Poista", + "ALARM!": "ALARM", + "Sleep": "Nukkuminen", + "New Timer": "Uusi ajastin", + "(repeat)": "(toista)", + "music": "musiikki", + "circle count": "ympyröiden lukumäärä", + "Keep Msgs": "Pidä Msgs", + "Auto snooze": "Automaattinen torkku", + "battery warn": "akkuvaroitus", + "heartrate": "syke", + "circle 4": "ympyrä 4", + "circle 2": "ympyrä 2", + "min. confidence": "min. luottamus", + "show widgets": "näytä widgetit", + "step length": "askelpituus", + "weather circle": "sääpiiri", + "circle 1": "ympyrä 1", + "circle 3": "ympyrä 3", + "week": "viikko", + "minimum": "vähintään", + "colorize icon": "väritä kuvake", + "data": "tiedot", + "distance goal": "etäisyystavoite", + "Circle": "Circle", + "valid period": "voimassaoloaika", + "maximum": "maksimi", + "Heartrate": "Sydämen syke", + "Mark Unread": "Merkitse lukematon", + "Delete all messages": "Poista kaikki viestit", + "LCD": "LCD", + "Apps": "Sovellukset", + "TAP right top/bottom": "TAP oikealle ylhäältä/alhaalta", + "App Source\nNot found": "Sovelluksen lähde\nEi löydy", + "STEPS": "STEPS", + "Launcher Settings": "Laukaisimen asetukset", + "Show clocks": "Näytä kellot", + "Vector font size": "Vektorin fonttikoko", + "Font": "Fontti", + "Yes\ndefinitely": "Kyllä\nehdottomasti", + "Bluetooth": "Bluetooth", + "Record Run": "Ennätysjuoksu", + "View Message": "Näytä viesti", + "No Messages": "Ei viestejä", + "Unread timer": "Lukematon ajastin", + "Are you sure": "Oletko varma, että", + "Delete All Messages": "Poista kaikki viestit", + "Highlight FG": "Korosta FG", + "Foreground 2": "Tulosaineisto 2", + "Foreground": "Tulosaineisto", + "Make Connectable": "Tee liitettäväksi", + "Quiet Mode": "Hiljainen tila", + "BLE": "BLE", + "Dark BW": "Tumma BW", + "Background": "Tausta", + "Background 2": "Tausta 2", + "Utils": "Utils", + "Vibration": "Tärinä", + "Piezo": "Piezo", + "HID": "HID", + "Light BW": "Vaalea BW", + "Programmable": "Ohjelmoitava", + "Customize": "Mukauta", + "Passkey BETA": "Passkey BETA", + "BTNs 1:startlap 2:exit 3:reset": "BTN:t 1:käynnistys 2:poistuminen 3:nollaus", + "start&lap/reset, BTN1: EXIT": "start&lap/reset, BTN1: EXIT", + "Utilities": "Apuohjelmat", + "Time Zone": "Aikavyöhyke", + "Clock Style": "Kello tyyli", + "Compact Storage": "Kompakti varastointi", + "Log": "Tukki", + "Debug Info": "Vianmääritystiedot", + "Twist Max Y": "Twist Max Y", + "Twist Timeout": "Twist Timeout", + "Remove": "Poista", + "LCD Timeout": "LCD-aikakatkaisu", + "LCD Brightness": "LCD-kirkkaus", + "Wake on Touch": "Herätys kosketuksesta", + "Wake on BTN3": "Wake BTN3:lla", + "Wake on Twist": "Wake on Twist", + "Wake on BTN2": "Wake BTN2:lla", + "Wake on FaceUp": "Wake on FaceUp", + "Twist Threshold": "Twist-kynnysarvo", + "Add Device": "Lisää laite", + "Highlight BG": "Korosta BG", + "Wake on BTN1": "Wake BTN1:llä", + "Connect device\nto add to\nwhitelist": "Yhdistä laite\nlisätäksesi\nwhitelist", + "Reset to Defaults": "Nollaa oletusasetukset", + "No Clocks Found": "Kelloja ei löydy", + "Hour": "Tunti", + "Date": "Päivämäärä", + "Stay Connectable": "Pysy yhteyksissä", + "Minute": "Minuutti", + "Second": "Toinen", + "Connectable": "Liitettävissä", + "Turn Off": "Kytke pois päältä", + "This will remove everything": "Tämä poistaa kaiken", + "Reset Settings": "Nollaa asetukset", + "Right": "Oikea", + "Left": "Vasen", + "Side": "Sivu", + "Sort Order": "Lajittelujärjestys", + "Reset All": "Nollaa kaikki", + "Widgets": "Widgetit", + "Flattening battery - this can take hours.\nLong-press button to cancel": "Akun tyhjentäminen - tämä voi kestää tunteja.\nPeruuta painamalla pitkään painiketta", + "Compacting...\nTakes approx\n1 minute": "Tiivistäminen...\nKestää noin\n1 minuutti", + "Storage": "Varastointi", + "Rewrite Settings": "Uudelleenkirjoitusasetukset", + "Flatten Battery": "Litistä akku", + "Invalid settings": "Virheelliset asetukset", + "OFF": "OFF", + "Sleep Phase Alarm": "Univaiheen hälytys", + "No app has settings": "Missään sovelluksessa ei ole asetuksia", + "App Settings": "Sovelluksen asetukset", + "Month": "Kuukausi", + "Reset": "Nollaa", + "Alarm": "Hälytys", + "Beep": "Beep", + "goal": "tavoite", + "on": "osoitteessa", + "Reset all widgets": "Nollaa kaikki widgetit", + "Select Clock": "Valitse Kello", + "Vibrate": "Värinä", + "Message": "Viesti", + "TIMER": "AJASTIN", + "Alerts": "Hälytykset", + "Locale": "Paikkakunta", + "Set Time": "Aseta aika", + "System": "Järjestelmä", + "Disable": "Poista käytöstä", + "Whitelist": "Whitelist", + "Error in settings": "Virhe asetuksissa", + "BACK": "TAKAISIN", + "Factory Reset": "Tehdasasetusten palautus", + "Timer": "Ajastin", + "Connected": "Yhdistetty", + "ALARM": "HÄLYTYS", + "Messages": "Viestit", + "Hide": "Piilota", + "Ok": "Ok", + "Show": "Näytä", + "On": "Osoitteessa", + "No": "Ei", + "Settings": "Asetukset", + "steps": "vaiheet", + "back": "takaisin", + "Steps": "Askeleet", + "Yes": "Kyllä", + "Year": "Vuosi", + "Loading": "Ladataan", + "Music": "Musiikki", + "color": "väri", + "off": "off", + "Off": "Off", + "Theme": "Teema" + }, + "alarm": { + "//": "App-specific overrides", + "rpt": "toistaa" + } +} \ No newline at end of file diff --git a/lang/fr_FR.json b/lang/fr_FR.json index 209574424..ad0f03b0c 100644 --- a/lang/fr_FR.json +++ b/lang/fr_FR.json @@ -1,21 +1,173 @@ { - "//":"French language translations", - "GLOBAL": { - "//":"Translations that apply for all apps", - "Alarms" : "Réveils", - "Hours" : "Heures", - "Minutes" : "Minutes", - "Enabled" : "Activé", - "New Alarm" : "Nouveau Réveil", - "Save" : "Sauvegarder", - "Back" : "Retour", - "Repeat" : "Répétition", - "Delete" : "Supprimer", - "ALARM!" : "ALARM!", - "Sleep" : "Sommeil" - }, - "alarm": { - "//":"App-specific overrides", - "rpt" : "rép." - } -} + "//": "French language translations", + "GLOBAL": { + "//": "Translations that apply for all apps", + "Alarms": "Réveils", + "Hours": "Heures", + "Minutes": "Minutes", + "Enabled": "Activé", + "New Alarm": "Nouveau Réveil", + "Save": "Sauvegarder", + "Back": "Retour", + "Repeat": "Répétition", + "Delete": "Supprimer", + "ALARM!": "ALARM!", + "Sleep": "Sommeil", + "New Timer": "Nouveau Timer", + "Keep Msgs": "Garder les messages", + "(repeat)": "(répétition)", + "week": "semaine", + "Auto snooze": "Réveil automatique", + "music": "musique", + "circle 2": "cercle 2", + "circle 3": "cercle 3", + "circle count": "nombre de cercles", + "weather circle": "cercle météorologique", + "circle 4": "cercle 4", + "show widgets": "afficher les widgets", + "heartrate": "fréquence cardiaque", + "battery warn": "alerte batterie", + "circle 1": "cercle 1", + "maximum": "maximum", + "min. confidence": "confiance minimale", + "step length": "longueur des pas", + "minimum": "minimum", + "Circle": "Cercle", + "valid period": "période de validité", + "Heartrate": "Fréquence cardiaque", + "distance goal": "objectif de distance", + "Yes\ndefinitely": "Oui\ndéfinitivement", + "data": "données", + "colorize icon": "coloriser l'icône", + "TAP right top/bottom": "TAP droit haut/bas", + "App Source\nNot found": "Source de l'application\nNon trouvé", + "Font": "Police", + "STEPS": "ÉTAPES", + "Vector font size": "Taille de la police vectorielle", + "Show clocks": "Montrer les horloges", + "BTNs 1:startlap 2:exit 3:reset": "BTNs 1:startlap 2:exit 3:reset", + "No Messages": "Aucun message", + "View Message": "Afficher le message", + "Launcher Settings": "Paramètres du lanceur", + "start&lap/reset, BTN1: EXIT": "start&lap/reset, BTN1 : EXIT", + "Make Connectable": "Rendre connectable", + "Piezo": "Piezo", + "Programmable": "Programmable", + "HID": "HID", + "Mark Unread": "Marquer comme non lu", + "Are you sure": "Vous êtes sûr", + "Dark BW": "Dark BW", + "Delete all messages": "Supprimer tous les messages", + "Delete All Messages": "Supprimer tous les messages", + "Vibration": "Vibration", + "Quiet Mode": "Mode silencieux", + "Passkey BETA": "Passkey BETA", + "BLE": "BLE", + "Foreground 2": "Premier plan 2", + "Background": "Contexte", + "Record Run": "Record Run", + "Utils": "Utils", + "Bluetooth": "Bluetooth", + "Apps": "Apps", + "Customize": "Personnalisez", + "Background 2": "Contexte 2", + "Light BW": "Light BW", + "LCD": "LCD", + "Unread timer": "Minuterie non lue", + "Foreground": "Premier plan", + "Remove": "Retirer", + "Highlight FG": "Highlight FG", + "Add Device": "Ajouter un dispositif", + "Highlight BG": "Mettre en évidence BG", + "Wake on BTN1": "Réveil sur BTN1", + "Connect device\nto add to\nwhitelist": "Connecter le dispositif\nà ajouter à\nliste blanche", + "LCD Timeout": "Temporisation de l'écran LCD", + "LCD Brightness": "Luminosité de l'écran LCD", + "Wake on BTN2": "Wake sur BTN2", + "Wake on BTN3": "Wake sur BTN3", + "Wake on FaceUp": "Réveillez-vous sur FaceUp", + "Wake on Touch": "Réveil au toucher", + "Twist Threshold": "Seuil de torsion", + "Wake on Twist": "Réveil sur Twist", + "Reset to Defaults": "Réinitialisation des valeurs par défaut", + "Utilities": "Utilitaires", + "Flattening battery - this can take hours.\nLong-press button to cancel": "Mise à plat de la batterie - cela peut prendre des heures.\nAppuyez longuement sur le bouton pour annuler", + "Flatten Battery": "Aplatir la batterie", + "Storage": "Stockage", + "Reset Settings": "Réinitialiser les paramètres", + "Log": "Journal de bord", + "Rewrite Settings": "Paramètres de réécriture", + "Compacting...\nTakes approx\n1 minute": "Compactage...\nPrend environ\n1 minute", + "Time Zone": "Fuseau horaire", + "Clock Style": "Style de l'horloge", + "Debug Info": "Informations de débogage", + "Twist Max Y": "Twist Max Y", + "Twist Timeout": "Twist Timeout", + "Compact Storage": "Stockage compact", + "App Settings": "Paramètres de l'application", + "No app has settings": "Aucune application n'a de paramètres", + "Sleep Phase Alarm": "Alarme de phase de sommeil", + "Month": "Mois", + "Turn Off": "Désactiver", + "This will remove everything": "Cela va supprimer tout", + "Date": "Date", + "Hour": "Heure", + "Right": "Droit", + "Left": "Gauche", + "No Clocks Found": "Aucune horloge trouvée", + "Sort Order": "Ordre de tri", + "OFF": "OFF", + "Side": "Côté", + "TIMER": "TIMER", + "Reset All": "Réinitialiser tout", + "Second": "Deuxièmement", + "Connectable": "Connectable", + "Minute": "Minute", + "Stay Connectable": "Restez connecté", + "Invalid settings": "Paramètres non valides", + "Widgets": "Widgets", + "Vibrate": "Vibrer", + "Reset all widgets": "Réinitialiser tous les widgets", + "Whitelist": "Liste blanche", + "Set Time": "Définir l'heure", + "System": "Système", + "Connected": "Connecté", + "Alerts": "Alertes", + "Locale": "Locale", + "Alarm": "Alarme", + "Reset": "Réinitialiser", + "on": "sur", + "Beep": "Bip", + "Factory Reset": "Réinitialisation d'usine", + "Select Clock": "Sélectionner l'horloge", + "Disable": "Désactiver", + "Message": "Message", + "goal": "objectif", + "Show": "Afficher", + "Hide": "Cacher", + "Messages": "Messages", + "BACK": "BACK", + "Error in settings": "Erreur dans les paramètres", + "Timer": "Minuterie", + "On": "Sur", + "No": "Non", + "Ok": "Ok", + "steps": "étapes", + "Settings": "Paramètres", + "ALARM": "ALARME", + "back": "dos", + "Yes": "Oui", + "Steps": "Étapes", + "Year": "Année", + "Loading": "Chargement", + "Music": "Musique", + "color": "couleur", + "Off": "Off", + "off": "off", + "Theme": "Thème" + }, + "alarm": { + "//": "App-specific overrides", + "rpt": "rép." + } +} \ No newline at end of file diff --git a/lang/hu_HU.json b/lang/hu_HU.json index 8e5df6ed7..62d956a3c 100644 --- a/lang/hu_HU.json +++ b/lang/hu_HU.json @@ -1,21 +1,173 @@ { - "//":"Spanish language translations", - "GLOBAL": { - "//":"Translations that apply for all apps", - "Alarms" : "Riasztások", - "Hours" : "Óra", - "Minutes" : "Perc", - "Enabled" : "Aktiválva", - "New Alarm" : "Új riasztás", - "Save" : "Mentés", - "Back" : "Vissza", - "Repeat" : "Ismétlés", - "Delete" : "Törlés", - "ALARM!" : "ALARM!", - "Sleep" : "Alvás" - }, - "alarm": { - "//":"App-specific overrides", - "rpt" : "ismétlés" - } -} + "//": "Spanish language translations", + "GLOBAL": { + "//": "Translations that apply for all apps", + "Alarms": "Riasztások", + "Hours": "Óra", + "Minutes": "Perc", + "Enabled": "Aktiválva", + "New Alarm": "Új riasztás", + "Save": "Mentés", + "Back": "Vissza", + "Repeat": "Ismétlés", + "Delete": "Törlés", + "ALARM!": "ALARM!", + "Sleep": "Alvás", + "New Timer": "Új időzítő", + "Auto snooze": "Automatikus szundi", + "(repeat)": "(ismétlés)", + "Keep Msgs": "Msgs megtartása", + "music": "zene", + "week": "hét", + "min. confidence": "min. bizalom", + "minimum": "minimum", + "data": "adatok", + "Heartrate": "Szívritmus", + "battery warn": "akkumulátor figyelmeztetés", + "maximum": "maximum", + "show widgets": "widgetek megjelenítése", + "circle count": "körök száma", + "circle 1": "1. kör", + "circle 4": "4. kör", + "heartrate": "szívritmus", + "circle 3": "3. kör", + "circle 2": "2. kör", + "valid period": "érvényes időszak", + "step length": "lépéshossz", + "distance goal": "távolsági cél", + "Circle": "Kör", + "colorize icon": "ikon színezése", + "weather circle": "időjárási kör", + "TAP right top/bottom": "TAP jobbra fent/alul", + "Launcher Settings": "Indító beállításai", + "start&lap/reset, BTN1: EXIT": "start&lap/reset, BTN1: EXIT", + "Yes\ndefinitely": "Igen\nhatározottan", + "App Source\nNot found": "Alkalmazás forrása\nNem található", + "No Messages": "Nincs üzenet", + "Unread timer": "Olvasatlan időzítő", + "Record Run": "Rekord futás", + "Font": "Betűtípus", + "Vector font size": "Vektor betűméret", + "Show clocks": "Mutassa az órákat", + "Delete all messages": "Minden üzenet törlése", + "Are you sure": "Biztos vagy benne, hogy", + "Delete All Messages": "Minden üzenet törlése", + "STEPS": "LÉPÉSEK", + "Apps": "Alkalmazások", + "View Message": "Üzenet megtekintése", + "LCD": "LCD", + "Bluetooth": "Bluetooth", + "Piezo": "Piezo", + "Utils": "Utils", + "BTNs 1:startlap 2:exit 3:reset": "BTN-ek 1:startlap 2:exit 3:reset", + "Mark Unread": "Mark Unread", + "LCD Brightness": "LCD fényerő", + "Customize": "Testreszabás", + "Light BW": "Világos BW", + "Background": "Háttér", + "Highlight BG": "Kiemelés BG", + "Highlight FG": "FG kiemelése", + "Foreground": "Új információk és jogok", + "Foreground 2": "Előtérben 2", + "Background 2": "Háttér 2", + "Remove": "Távolítsa el a", + "Connect device\nto add to\nwhitelist": "Eszköz csatlakoztatása\nhozzáadni a\nfehérlistára", + "Add Device": "Eszköz hozzáadása", + "Dark BW": "Sötét BW", + "Passkey BETA": "Passkey BETA", + "HID": "HID", + "Wake on BTN3": "Wake a BTN3-on", + "Wake on BTN1": "Wake a BTN1-en", + "Wake on BTN2": "Wake a BTN2-n", + "BLE": "BLE", + "Vibration": "Rezgés", + "Make Connectable": "Csatlakoztathatóvá tenni", + "Programmable": "Programozható", + "Quiet Mode": "Csendes üzemmód", + "Twist Threshold": "Twist küszöbérték", + "Wake on FaceUp": "Ébredj a FaceUp-on", + "Twist Timeout": "Twist Timeout", + "Utilities": "Közművek", + "Twist Max Y": "Twist Max Y", + "Time Zone": "Időzóna", + "Log": "Napló", + "Clock Style": "Óra stílus", + "Compact Storage": "Kompakt tárolás", + "Storage": "Tárolás", + "Wake on Twist": "Wake on Twist", + "Debug Info": "Hibaelhárítási információ", + "Flatten Battery": "Lapos akkumulátor", + "Wake on Touch": "Ébresztés érintésre", + "LCD Timeout": "LCD Timeout", + "Rewrite Settings": "Újraírási beállítások", + "This will remove everything": "Ez mindent eltávolít", + "Turn Off": "Kikapcsolás", + "Stay Connectable": "Maradjon összekapcsolható", + "Reset to Defaults": "Alapértelmezettre visszaállítása", + "Reset Settings": "Beállítások visszaállítása", + "Compacting...\nTakes approx\n1 minute": "Tömörítés...\nKb.\n1 perc", + "No Clocks Found": "Nem találtak órákat", + "TIMER": "TIMER", + "Connectable": "Csatlakoztatható", + "Side": "Oldal", + "Reset all widgets": "Minden widget alaphelyzetbe állítása", + "Reset All": "Minden visszaállítása", + "Left": "Balra", + "Widgets": "Widgetek", + "Right": "Jobbra", + "Sort Order": "Rendezési sorrend", + "Date": "Dátum", + "Hour": "Óra", + "goal": "cél", + "Beep": "Beep", + "Reset": "Reset", + "on": "a oldalon", + "App Settings": "Alkalmazás beállításai", + "OFF": "OFF", + "No app has settings": "Egyetlen alkalmazás sem rendelkezik beállításokkal", + "Invalid settings": "Érvénytelen beállítások", + "Minute": "Perc", + "Sleep Phase Alarm": "Alvási fázis riasztás", + "Second": "Második", + "Month": "Hónap", + "Alarm": "Riasztás", + "Flattening battery - this can take hours.\nLong-press button to cancel": "Az akkumulátor lapítása - ez órákig is eltarthat.\nHosszan nyomja meg a gombot a törléshez", + "Whitelist": "Fehér lista", + "Alerts": "Riasztások", + "Disable": "A letiltása", + "Set Time": "Beállított idő", + "Select Clock": "Óra kiválasztása", + "Message": "Üzenet", + "System": "Rendszer", + "Vibrate": "Rezgés", + "Locale": "Helyszín", + "Factory Reset": "Gyári visszaállítás", + "BACK": "VISSZA", + "ALARM": "ALARM", + "Timer": "Időzítő", + "Connected": "Csatlakoztatva", + "Error in settings": "Hiba a beállításokban", + "Messages": "Üzenetek", + "Ok": "Oké", + "No": "Nem", + "back": "vissza", + "steps": "lépések", + "Year": "Év", + "Steps": "Lépések", + "On": "A oldalon.", + "Settings": "Beállítások", + "Hide": "Rejtsd el", + "Show": "Mutasd meg a", + "Yes": "Igen", + "Loading": "Betöltés", + "Music": "Zene", + "color": "szín", + "off": "off", + "Off": "Off", + "Theme": "Téma" + }, + "alarm": { + "//": "App-specific overrides", + "rpt": "ismétlés" + } +} \ No newline at end of file diff --git a/lang/index.json b/lang/index.json index 3d492783d..1a9c851d8 100644 --- a/lang/index.json +++ b/lang/index.json @@ -9,5 +9,9 @@ {"code":"it_IT","name":"Italian","url":"it_IT.json"}, {"code":"nl_NL","name":"Dutch","url":"nl_NL.json"}, {"code":"sv_SE","name":"Swedish","url":"sv_SE.json"}, - {"code":"tr_TR","name":"Turkish","url":"tr_TR.json"} + {"code":"tr_TR","name":"Turkish","url":"tr_TR.json"}, + {"code":"zh_ZH","name":"Chinese","url":"zh_ZH.json"}, + {"code":"ru_RU","name":"Russian","url":"ru_RU.json"}, + {"code":"pt_PT","name":"Portuguese","url":"pt_PT.json"}, + {"code":"ja_JA","name":"Japanese","url":"ja_JA.json"} ] diff --git a/lang/it_IT.json b/lang/it_IT.json index c64fc828a..07545e1e7 100644 --- a/lang/it_IT.json +++ b/lang/it_IT.json @@ -1,148 +1,186 @@ { - "//1": "Italian language translations", - "GLOBAL": { - "//": "Translations that apply for all apps", - "On": "On", - "on": "on", - "Off": "Off", - "off": "off", - "Ok": "Ok", - "Yes": "Sì", - "No": "No", - "Alarm": "Sveglia", - "ALARM": "SVEGLIA", - "Alarms": "Sveglie", - "Date": "Data", - "Year": "Anno", - "Month": "Mese", - "Day": "Giorno", - "Hour": "Ora", - "Hours": "Ore", - "Minute": "Minuto", - "Minutes": "Minuti", - "Second": "Secondo", - "Seconds": "Secondi", - "week": "settimana", - "Week": "Settimana", - "Enabled": "Attivo/a", - "New Alarm": "Nuova sveglia", - "Save": "Salva", - "Cancel": "Annulla", - "Back": "Indietro", - "Repeat": "Ripeti", - "Delete": "Cancella", - "ALARM!": "SVEGLIA!", - "Sleep": "Dormi", - "Timer": "Timer", - "TIMER": "TIMER", - "New Timer": "Nuovo timer", - "(repeat)": "(ripeti)", - "Auto snooze": "Posticipa automaticamente", - "Connected": "Connesso", - "Delete all messages": "Cancella tutti i messaggi", - "Delete All Messages": "Cancella tutti i messaggi", - "Message": "Messaggio", - "Messages": "Messaggi", - "No Messages": "Nessun messaggio", - "Keep Msgs": "Tieni i messaggi", - "Mark Unread": "Segna come non letto", - "Vibrate": "Vibrazione", - "Are you sure": "Sei sicuro/a", - "Music": "Musica", - "Apps": "App", - "App Settings": "Impostazioni app", - "Bluetooth": "Bluetooth", - "BLE": "BLE", - "Make Connectable": "Rendi collegabile", - "Programmable": "Programmabile", - "Remove": "Rimuovi", - "Utils": "Utilità", - "LCD": "LCD", - "LCD Brightness": "Luminosità LCD", - "LCD Timeout": "Timeout LCD", - "Wake on BTN1": "Risveglia con BTN1", - "Wake on BTN2": "Risveglia con BTN2", - "Wake on BTN3": "Risveglia con BTN3", - "Wake on FaceUp": "Risveglia a faccia in su", - "Wake on Touch": "Risveglia al tocco", - "Wake on Twist": "Risveglia con polso", - "Twist Timeout": "Timeout torsione", - "Twist Max Y": "Torsione Y max", - "Twist Threshold": "Soglia torsione", - "Customize": "Personalizza", - "Add Device": "Aggiungi dispositivo", - "Left": "Sinistra", - "Right": "Destra", - "Widgets": "Widget", - "Settings": "Impostazioni", - "No app has settings": "Non ci sono app con delle impostazioni", - "System": "Sistema", - "Alerts": "Avvisi", - "Theme": "Tema", - "Foreground": "Primo piano", - "Background": "Sfondo", - "Foreground 2": "Primo piano 2", - "Background 2": "Sfondo 2", - "Highlight FG": "Selezione PP", - "Highlight BG": "Selezione Sf", - "Utilities": "Utilità", - "Storage": "Memoria", - "Compact Storage": "Compatta memoria", - "Select Clock": "Seleziona orologio", - "No Clocks Found": "Nessun orologio trovato", - "Locale": "Localizzazione", - "Set Time": "Imposta orario", - "Time Zone": "Fuso orario", - "Whitelist": "Whitelist", - "Quiet Mode": "Modalità silenziosa", - "Disable": "Disabilita", - "Vibration": "Vibrazione", - "Show": "Mostra", - "Hide": "Nascondi", - "Rewrite Settings": "Riscrivi impostazioni", - "Reset Settings": "Reset impostazioni", - "Factory Reset": "Ripristino condizioni iniziali", - "Flatten Battery": "Scarica la batteria", - "Turn Off": "Spegni", - "This will remove everything": "Questo rimuoverà TUTTO", - "Error in settings": "Errore nelle impostazioni", - "Invalid settings": "Impostazioni non valide", - "Loading": "Caricamento", - "Launcher Settings": "Impostazioni Launcher", - "Font": "Font", - "Show clocks": "Mostra orologi", - "Log": "Log", - "Steps": "Passi", - "steps": "passi" - }, - "//2": "App-specific overrides", - "launch": { - "Vector font size": "Dim. font vett.", - "App Source\nNot found": "Codice app\nnon trovato" - }, - "messages": { - "Unread timer": "Timer msg non letti" - }, - "run": { - "Record Run": "Registra corsa" - }, - "setting": { - "Clock Style": "Formato ora", - "Compacting...\nTakes approx\n1 minute": "Compattamento in corso...\nCi vorrà circa un minuto", - "//1": "The new line before 'operazione' improves the layout", - "Flattening battery - this can take hours.\nLong-press button to cancel": "Scaricamento batteria in corso - l'\noperazione può richiedere ore. Tieni premuto il pulsante per annullare", - "Reset to Defaults": "Ripristinare le impostazioni predefinite", - "Connectable": "Collegamento", - "Connect device\nto add to\nwhitelist": "Collega un\ndispositivo\nper metterlo\nin whitelist", - "Stay Connectable": "Rimanere collegabile", - "Light BW": "Chiaro", - "Dark BW": "Scuro" - }, - "wid_edit": { - "Reset": "Ripristina", - "Reset All": "Ripristina tutto", - "Reset all widgets": "Ripristina tutti i widget", - "Sort Order": "Ordinamento", - "Side": "Lato" - } -} + "//1": "Italian language translations", + "GLOBAL": { + "//": "Translations that apply for all apps", + "On": "On", + "on": "on", + "Off": "Off", + "off": "off", + "Ok": "Ok", + "Yes": "Sì", + "No": "No", + "Alarm": "Sveglia", + "ALARM": "SVEGLIA", + "Alarms": "Sveglie", + "Date": "Data", + "Year": "Anno", + "Month": "Mese", + "Day": "Giorno", + "Hour": "Ora", + "Hours": "Ore", + "Minute": "Minuto", + "Minutes": "Minuti", + "Second": "Secondo", + "Seconds": "Secondi", + "week": "settimana", + "Week": "Settimana", + "Enabled": "Attivo/a", + "New Alarm": "Nuova sveglia", + "Save": "Salva", + "Cancel": "Annulla", + "Back": "Indietro", + "Repeat": "Ripeti", + "Delete": "Cancella", + "ALARM!": "SVEGLIA!", + "Sleep": "Dormi", + "Timer": "Timer", + "TIMER": "TIMER", + "New Timer": "Nuovo timer", + "(repeat)": "(ripeti)", + "Auto snooze": "Posticipa automaticamente", + "Connected": "Connesso", + "Delete all messages": "Cancella tutti i messaggi", + "Delete All Messages": "Cancella tutti i messaggi", + "Message": "Messaggio", + "Messages": "Messaggi", + "No Messages": "Nessun messaggio", + "Keep Msgs": "Tieni i messaggi", + "Mark Unread": "Segna come non letto", + "Vibrate": "Vibrazione", + "Are you sure": "Sei sicuro/a", + "Music": "Musica", + "Apps": "App", + "App Settings": "Impostazioni app", + "Bluetooth": "Bluetooth", + "BLE": "BLE", + "Make Connectable": "Rendi collegabile", + "Programmable": "Programmabile", + "Remove": "Rimuovi", + "Utils": "Utilità", + "LCD": "LCD", + "LCD Brightness": "Luminosità LCD", + "LCD Timeout": "Timeout LCD", + "Wake on BTN1": "Risveglia con BTN1", + "Wake on BTN2": "Risveglia con BTN2", + "Wake on BTN3": "Risveglia con BTN3", + "Wake on FaceUp": "Risveglia a faccia in su", + "Wake on Touch": "Risveglia al tocco", + "Wake on Twist": "Risveglia con polso", + "Twist Timeout": "Timeout torsione", + "Twist Max Y": "Torsione Y max", + "Twist Threshold": "Soglia torsione", + "Customize": "Personalizza", + "Add Device": "Aggiungi dispositivo", + "Left": "Sinistra", + "Right": "Destra", + "Widgets": "Widget", + "Settings": "Impostazioni", + "No app has settings": "Non ci sono app con delle impostazioni", + "System": "Sistema", + "Alerts": "Avvisi", + "Theme": "Tema", + "Foreground": "Primo piano", + "Background": "Sfondo", + "Foreground 2": "Primo piano 2", + "Background 2": "Sfondo 2", + "Highlight FG": "Selezione PP", + "Highlight BG": "Selezione Sf", + "Utilities": "Utilità", + "Storage": "Memoria", + "Compact Storage": "Compatta memoria", + "Select Clock": "Seleziona orologio", + "No Clocks Found": "Nessun orologio trovato", + "Locale": "Localizzazione", + "Set Time": "Imposta orario", + "Time Zone": "Fuso orario", + "Whitelist": "Whitelist", + "Quiet Mode": "Modalità silenziosa", + "Disable": "Disabilita", + "Vibration": "Vibrazione", + "Show": "Mostra", + "Hide": "Nascondi", + "Rewrite Settings": "Riscrivi impostazioni", + "Reset Settings": "Reset impostazioni", + "Factory Reset": "Ripristino condizioni iniziali", + "Flatten Battery": "Scarica la batteria", + "Turn Off": "Spegni", + "This will remove everything": "Questo rimuoverà TUTTO", + "Error in settings": "Errore nelle impostazioni", + "Invalid settings": "Impostazioni non valide", + "Loading": "Caricamento", + "Launcher Settings": "Impostazioni Launcher", + "Font": "Font", + "Show clocks": "Mostra orologi", + "Log": "Log", + "Steps": "Passi", + "steps": "passi", + "music": "musica", + "circle 4": "cerchio 4", + "circle 3": "cerchio 3", + "circle 1": "cerchio 1", + "circle 2": "cerchio 2", + "circle count": "conteggio dei cerchi", + "minimum": "minimo", + "weather circle": "cerchio meteorologico", + "show widgets": "mostra i widget", + "heartrate": "frequenza cardiaca", + "battery warn": "avvertire la batteria", + "Heartrate": "Battito cardiaco", + "valid period": "periodo valido", + "distance goal": "obiettivo di distanza", + "min. confidence": "fiducia minima", + "maximum": "massimo", + "Circle": "Cerchio", + "data": "dati", + "step length": "lunghezza del passo", + "View Message": "Visualizza il messaggio", + "Yes\ndefinitely": "Sì\nsicuramente", + "Piezo": "Piezo", + "colorize icon": "colorare l'icona", + "STEPS": "PASSI", + "TAP right top/bottom": "TAP in alto/basso a destra", + "HID": "HID", + "BTNs 1:startlap 2:exit 3:reset": "BTNs 1:startlap 2:exit 3:reset", + "Passkey BETA": "Passkey BETA", + "goal": "obiettivo", + "Beep": "Bip", + "Debug Info": "Informazioni di debug", + "OFF": "OFF", + "Reset": "Reset", + "Sleep Phase Alarm": "Allarme della fase di sonno", + "start&lap/reset, BTN1: EXIT": "start&lap/reset, BTN1: EXIT", + "back": "indietro", + "color": "colore", + "BACK": "INDIETRO" + }, + "//2": "App-specific overrides", + "launch": { + "Vector font size": "Dim. font vett.", + "App Source\nNot found": "Codice app\nnon trovato" + }, + "messages": { + "Unread timer": "Timer msg non letti" + }, + "run": { + "Record Run": "Registra corsa" + }, + "setting": { + "Clock Style": "Formato ora", + "Compacting...\nTakes approx\n1 minute": "Compattamento in corso...\nCi vorrà circa un minuto", + "//1": "The new line before 'operazione' improves the layout", + "Flattening battery - this can take hours.\nLong-press button to cancel": "Scaricamento batteria in corso - l'\noperazione può richiedere ore. Tieni premuto il pulsante per annullare", + "Reset to Defaults": "Ripristinare le impostazioni predefinite", + "Connectable": "Collegamento", + "Connect device\nto add to\nwhitelist": "Collega un\ndispositivo\nper metterlo\nin whitelist", + "Stay Connectable": "Rimanere collegabile", + "Light BW": "Chiaro", + "Dark BW": "Scuro" + }, + "wid_edit": { + "Reset": "Ripristina", + "Reset All": "Ripristina tutto", + "Reset all widgets": "Ripristina tutti i widget", + "Sort Order": "Ordinamento", + "Side": "Lato" + } +} \ No newline at end of file diff --git a/lang/ja_JA.json b/lang/ja_JA.json new file mode 100644 index 000000000..2852fd9e3 --- /dev/null +++ b/lang/ja_JA.json @@ -0,0 +1,167 @@ +{ + "//": "Japanese language translations", + "GLOBAL": { + "//": "Translations that apply for all apps", + "New Alarm": "新型アラーム", + "New Timer": "新型タイマー", + "Save": "保存", + "Keep Msgs": "Keep Msgs", + "circle count": "サークルカウント", + "(repeat)": "(繰り返し)", + "music": "音楽", + "Auto snooze": "オートスヌーズ", + "week": "ウィーク", + "circle 1": "サークル1", + "circle 3": "サークル3", + "circle 2": "サークル2", + "show widgets": "show widgets", + "heartrate": "心拍数", + "circle 4": "サークル4", + "battery warn": "バッテリー警告", + "valid period": "有効期間", + "maximum": "最大", + "weather circle": "ウェザーサークル", + "minimum": "ミニマム", + "step length": "ステップ長", + "distance goal": "距離目標", + "Circle": "サークル", + "min. confidence": "最低限の自信", + "colorize icon": "カラライズアイコン", + "Heartrate": "心拍数", + "data": "データ", + "Yes\ndefinitely": "はい。\n間違いなく", + "Launcher Settings": "ランチャー設定", + "TAP right top/bottom": "TAP右上/左下", + "Font": "フォント", + "Mark Unread": "マーク・アンリード", + "start&lap/reset, BTN1: EXIT": "スタート&ラップ&リセット、BTN1:EXIT", + "App Source\nNot found": "アプリソース\n見つからない", + "Show clocks": "時計の表示", + "STEPS": "ステップ", + "Vector font size": "ベクターのフォントサイズ", + "View Message": "メッセージを見る", + "Are you sure": "本当にいいの?", + "Bluetooth": "ブルートゥース", + "Unread timer": "未読のタイマー", + "Delete all messages": "すべてのメッセージの削除", + "No Messages": "メッセージなし", + "Record Run": "レコード・ラン", + "Apps": "アプリ", + "BTNs 1:startlap 2:exit 3:reset": "BTNs 1:startlap 2:exit 3:reset", + "Delete All Messages": "全メッセージの削除", + "Vibration": "振動", + "Utils": "ユーティライゼーション", + "Piezo": "ピエゾ", + "BLE": "BLE", + "Make Connectable": "接続可能にする", + "HID": "HID", + "Light BW": "ライトBW", + "LCD": "LCD", + "Background": "背景", + "Foreground": "フォアグラウンド", + "Programmable": "プログラム可能", + "Customize": "カスタマイズ", + "Dark BW": "ダークBW", + "Background 2": "背景2", + "Quiet Mode": "クワイエットモード", + "Highlight FG": "ハイライトFG", + "Foreground 2": "フォアグラウンド2", + "Remove": "削除", + "Passkey BETA": "Passkey BETA", + "Add Device": "デバイスの追加", + "LCD Timeout": "LCDタイムアウト", + "Highlight BG": "ハイライトBG", + "LCD Brightness": "液晶ディスプレイの明るさ", + "Connect device\nto add to\nwhitelist": "接続機器\nに追加します。\nホワイトリスト", + "Wake on BTN3": "Wake on BTN3", + "Wake on BTN2": "Wake on BTN2", + "Time Zone": "タイムゾーン", + "Wake on Touch": "ウェイクオンタッチ", + "Twist Timeout": "ツイストタイムアウト", + "Wake on Twist": "ウェイクオンツイスト", + "Wake on BTN1": "Wake on BTN1", + "Log": "ログ", + "Wake on FaceUp": "Wake on FaceUp", + "Twist Max Y": "ツイストマックスY", + "Utilities": "ユーティリティー", + "Clock Style": "クロックスタイル", + "Rewrite Settings": "リライト設定", + "Flatten Battery": "バッテリーを平らにする", + "Debug Info": "デバッグ情報", + "Storage": "ストレージ", + "Reset Settings": "設定のリセット", + "Twist Threshold": "ツイスト・スレッショルド", + "Turn Off": "電源オフ", + "Compact Storage": "コンパクトなストレージ", + "Reset to Defaults": "初期設定へのリセット", + "Second": "セカンド", + "Compacting...\nTakes approx\n1 minute": "コンパクトにして...。\n所要時間約\n1分", + "Date": "日付", + "Minute": "分", + "Connectable": "接続可能", + "Stay Connectable": "Stay Connectable", + "Hour": "時間", + "No Clocks Found": "No Clock Found", + "App Settings": "アプリの設定", + "Flattening battery - this can take hours.\nLong-press button to cancel": "バッテリーのフラット化 - これには数時間かかります。\nボタンの長押しでキャンセル", + "Month": "月", + "OFF": "OFF", + "Right": "右", + "Widgets": "ウィジェット", + "Left": "左", + "Sort Order": "並び替え", + "Side": "サイド", + "No app has settings": "設定のないアプリ", + "Sleep Phase Alarm": "スリープフェーズアラーム", + "Invalid settings": "無効な設定", + "TIMER": "TIMER", + "Reset All": "すべてをリセット", + "This will remove everything": "これにより、すべてのものが削除されます。", + "Alarm": "アラーム", + "on": "で", + "Minutes": "分", + "Reset all widgets": "全ウィジェットのリセット", + "Hours": "時間", + "Enabled": "有効", + "Repeat": "リピート", + "Delete": "削除", + "Reset": "リセット", + "goal": "ゴール", + "Beep": "ビープ", + "Message": "メッセージ", + "System": "システム", + "Select Clock": "セレクトクロック", + "Locale": "ロケール", + "Vibrate": "振動", + "Alerts": "アラート", + "Whitelist": "ホワイトリスト", + "Set Time": "セット時間", + "Disable": "Disable", + "BACK": "BACK", + "ALARM": "ALARM", + "Timer": "タイマー", + "Error in settings": "設定のエラー", + "Factory Reset": "ファクトリーリセット", + "Sleep": "睡眠", + "Connected": "コネクテッド", + "Messages": "メッセージ", + "Hide": "隠す", + "Show": "ショー", + "On": "オン", + "Ok": "OK", + "No": "いいえ", + "Settings": "設定", + "steps": "ステップ", + "back": "バック", + "Steps": "ステップ", + "Year": "年", + "Yes": "はい。", + "Loading": "ローディング", + "Music": "音楽", + "color": "カラー", + "off": "オフ", + "Off": "オフ", + "Theme": "テーマ", + "Back": "バック" + } +} \ No newline at end of file diff --git a/lang/nl_NL.json b/lang/nl_NL.json index a04e46928..0a39fefb2 100644 --- a/lang/nl_NL.json +++ b/lang/nl_NL.json @@ -1,21 +1,173 @@ { - "//":"Dutch language translations", - "GLOBAL": { - "//":"Translations that apply for all apps", - "Alarms" : "Alarmen", - "Hours" : "Uren", - "Minutes" : "Minuten", - "Enabled" : "Geactiveerd", - "New Alarm" : "Nieuw alarm", - "Save" : "Opslaan", - "Back" : "Terug", - "Repeat" : "Herhalen", - "Delete" : "Verwijderen", - "ALARM!" : "ALARV.", - "Sleep" : "Stand-by" - }, - "alarm": { - "//":"App-specific overrides", - "rpt" : "herhalen" - } -} + "//": "Dutch language translations", + "GLOBAL": { + "//": "Translations that apply for all apps", + "Alarms": "Alarmen", + "Hours": "Uren", + "Minutes": "Minuten", + "Enabled": "Geactiveerd", + "New Alarm": "Nieuw alarm", + "Save": "Opslaan", + "Back": "Terug", + "Repeat": "Herhalen", + "Delete": "Verwijderen", + "ALARM!": "ALARV.", + "Sleep": "Stand-by", + "New Timer": "Nieuwe Timer", + "(repeat)": "(herhaling)", + "music": "muziek", + "week": "week", + "Auto snooze": "Auto snooze", + "Keep Msgs": "Houd Msgs", + "circle count": "cirkeltelling", + "Heartrate": "Hartslag", + "weather circle": "weercirkel", + "circle 1": "cirkel 1", + "show widgets": "widgets tonen", + "circle 4": "cirkel 4", + "maximum": "maximum", + "circle 3": "cirkel 3", + "circle 2": "cirkel 2", + "minimum": "minimum", + "valid period": "geldige periode", + "heartrate": "hartslag", + "battery warn": "batterijwaarschuwing", + "data": "gegevens", + "step length": "staplengte", + "min. confidence": "min. vertrouwen", + "colorize icon": "pictogram inkleuren", + "distance goal": "afstandsdoel", + "Circle": "Cirkel", + "TAP right top/bottom": "TAP rechts boven/onder", + "start&lap/reset, BTN1: EXIT": "start&lap/reset, BTN1: EXIT", + "Are you sure": "Weet je het zeker?", + "Font": "Lettertype", + "App Source\nNot found": "App Bron\nNiet gevonden", + "Launcher Settings": "Launcher Instellingen", + "Yes\ndefinitely": "Ja\nzeker", + "STEPS": "STAPPEN", + "Show clocks": "Toon klokken", + "Record Run": "Record run", + "No Messages": "Geen berichten.", + "View Message": "Bekijk bericht", + "Piezo": "Piëzo", + "BTNs 1:startlap 2:exit 3:reset": "BTN's 1:startlap 2:exit 3:reset", + "Vector font size": "Vector lettergrootte", + "Mark Unread": "Markeer ongelezen", + "Delete all messages": "Alle berichten verwijderen", + "LCD": "LCD", + "Utils": "Utils", + "Bluetooth": "Bluetooth", + "Delete All Messages": "Alle berichten verwijderen", + "Unread timer": "Ongelezen timer", + "Make Connectable": "Maak Verbindbaar", + "Quiet Mode": "Rustige modus", + "BLE": "BLE", + "Dark BW": "Donker BW", + "Apps": "Apps", + "Programmable": "Programmeerbaar", + "Vibration": "Trilling", + "HID": "HID", + "Foreground 2": "Voorgrond 2", + "Passkey BETA": "Passkey BETA", + "Background": "Achtergrond", + "Light BW": "Licht BW", + "Customize": "Aanpassen", + "Background 2": "Achtergrond 2", + "Highlight FG": "Markeer FG", + "Highlight BG": "Markeer BG", + "Foreground": "Voorgrond", + "LCD Timeout": "LCD Timeout", + "LCD Brightness": "LCD-helderheid", + "Remove": "Verwijder", + "Add Device": "Apparaat toevoegen", + "Connect device\nto add to\nwhitelist": "Apparaat aansluiten\ntoe te voegen aan\nwhitelist", + "Wake on Twist": "Wake on Twist", + "Wake on BTN2": "Wake op BTN2", + "Wake on BTN1": "Wake op BTN1", + "Wake on FaceUp": "Wakker worden op FaceUp", + "Log": "Log", + "Debug Info": "Debug info", + "Wake on BTN3": "Wake op BTN3", + "Flatten Battery": "Batterij plat maken", + "Rewrite Settings": "Instellingen herschrijven", + "Compact Storage": "Compacte opslag", + "Utilities": "Nutsbedrijven", + "Clock Style": "Klok Stijl", + "Time Zone": "Tijdzone", + "Twist Timeout": "Time-out draaien", + "Twist Max Y": "Twist Max Y", + "Twist Threshold": "Twist Drempel", + "Wake on Touch": "Wakker worden bij aanraking", + "Compacting...\nTakes approx\n1 minute": "Verdichten...\nDuurt ongeveer\n1 minuut", + "Reset to Defaults": "Terugzetten op standaardwaarden", + "No Clocks Found": "Geen klokken gevonden", + "Month": "Maand", + "Minute": "Minuutje", + "Flattening battery - this can take hours.\nLong-press button to cancel": "Batterij leegmaken - dit kan uren duren.\nDruk lang op de knop om te annuleren", + "Sleep Phase Alarm": "Slaapfase alarm", + "Second": "Tweede", + "Turn Off": "Zet uit.", + "Hour": "Uur", + "Storage": "Opslag", + "Date": "Datum", + "Reset Settings": "Reset Instellingen", + "This will remove everything": "Dit zal alles verwijderen", + "Connectable": "Aansluitbaar", + "App Settings": "App-instellingen", + "No app has settings": "Geen app heeft instellingen", + "Stay Connectable": "Blijf verbonden", + "on": "op", + "Sort Order": "Sorteer volgorde", + "Widgets": "Widgets", + "Invalid settings": "Ongeldige instellingen", + "Reset All": "Alles resetten", + "Reset all widgets": "Reset alle widgets", + "OFF": "UIT", + "Left": "Links", + "Right": "Rechts", + "Side": "Zijde", + "TIMER": "TIMER", + "Alarm": "Alarm", + "goal": "doel", + "Reset": "Reset", + "Beep": "Beep", + "System": "Systeem", + "Locale": "Locale", + "Vibrate": "Trillen", + "Message": "Bericht", + "Alerts": "Waarschuwingen", + "Select Clock": "Selecteer Klok", + "Timer": "Timer", + "ALARM": "ALARM", + "Factory Reset": "Fabrieks reset", + "Hide": "Verberg", + "Messages": "Berichten", + "Error in settings": "Fout in instellingen", + "BACK": "ACHTER", + "Whitelist": "Whitelist", + "Set Time": "Tijd instellen", + "Disable": "Uitschakelen", + "Connected": "Aangesloten", + "On": "Op", + "Show": "Toon", + "Ok": "Ok", + "No": "Geen", + "Settings": "Instellingen", + "Steps": "Stappen", + "steps": "stappen", + "back": "terug", + "Year": "Jaar", + "Yes": "Ja", + "Loading": "Laden", + "Music": "Muziek", + "color": "kleur", + "off": "van", + "Off": "Uit", + "Theme": "Thema" + }, + "alarm": { + "//": "App-specific overrides", + "rpt": "herhalen" + } +} \ No newline at end of file diff --git a/lang/pt_PT.json b/lang/pt_PT.json new file mode 100644 index 000000000..837f7dab7 --- /dev/null +++ b/lang/pt_PT.json @@ -0,0 +1,167 @@ +{ + "//": "Portuguese language translations", + "GLOBAL": { + "//": "Translations that apply for all apps", + "New Timer": "Novo Temporizador", + "New Alarm": "Novo Alarme", + "Auto snooze": "Soneca automática", + "week": "semana", + "circle 3": "círculo 3", + "(repeat)": "(repetir)", + "Save": "Salvar", + "Keep Msgs": "Manter Msgs", + "music": "música", + "circle 4": "círculo 4", + "circle 2": "círculo 2", + "circle count": "contagem em círculo", + "circle 1": "círculo 1", + "battery warn": "aviso de bateria", + "show widgets": "widgets de exposição", + "data": "dados", + "heartrate": "banda funerária", + "distance goal": "golo da distância", + "Circle": "Círculo", + "colorize icon": "ícone colorir", + "min. confidence": "min. confiança", + "minimum": "mínimo", + "maximum": "máximo", + "Heartrate": "Banda cardíaca", + "weather circle": "círculo meteorológico", + "step length": "comprimento do passo", + "valid period": "período válido", + "TAP right top/bottom": "TAP superior/inferior direita", + "Vector font size": "Tamanho de letra vectorial", + "Yes\ndefinitely": "Sim\ndefinitivamente", + "BTNs 1:startlap 2:exit 3:reset": "BTNs 1:startlap 2:exit 3:reset", + "STEPS": "ETAPAS", + "Font": "Fonte", + "Show clocks": "Mostrar relógios", + "App Source\nNot found": "Fonte do aplicativo\nNão encontrado", + "Mark Unread": "Marcar como não lido", + "View Message": "Ver Mensagem", + "start&lap/reset, BTN1: EXIT": "start&lap/reset, BTN1: SAÍDA", + "Launcher Settings": "Configurações do lançador", + "Delete All Messages": "Apagar todas as mensagens", + "Delete all messages": "Apagar todas as mensagens", + "Utils": "Utils", + "LCD": "LCD", + "Apps": "Apps", + "Record Run": "Record Run", + "No Messages": "Sem Mensagens", + "Unread timer": "Temporizador não lido", + "Are you sure": "Tens a certeza", + "Make Connectable": "Tornar Conectável", + "Piezo": "Piezo", + "Bluetooth": "Bluetooth", + "BLE": "BLE", + "Programmable": "Programável", + "Vibration": "Vibração", + "Quiet Mode": "Modo Silencioso", + "Foreground": "Primeiro plano", + "Passkey BETA": "Passkey BETA", + "HID": "HID", + "Light BW": "BW Leve", + "Foreground 2": "Primeiro plano 2", + "Dark BW": "BW Escuro", + "Background": "Antecedentes", + "Highlight FG": "Destaque FG", + "Customize": "Personalizar", + "Background 2": "Antecedentes 2", + "Wake on BTN3": "Acorde no BTN3", + "Wake on BTN2": "Acorde no BTN2", + "Highlight BG": "Destaque BG", + "LCD Timeout": "Tempo limite do LCD", + "Wake on FaceUp": "Acorde no FaceUp", + "Wake on BTN1": "Acorde no BTN1", + "Wake on Twist": "Acorde na Twist", + "Wake on Touch": "Acorde ao Toque", + "Connect device\nto add to\nwhitelist": "Ligar dispositivo\npara adicionar a\nlista branca", + "Remove": "Remover", + "Add Device": "Adicionar dispositivo", + "LCD Brightness": "Luminosidade do LCD", + "Twist Max Y": "Torcer Max Y", + "Utilities": "Utilidades", + "Twist Threshold": "Limiar de Torção", + "Time Zone": "Fuso horário", + "Twist Timeout": "Twist Timeout", + "Clock Style": "Estilo Relógio", + "Debug Info": "Informação de Depuração", + "Log": "Diário de Bordo", + "Storage": "Armazenamento", + "Rewrite Settings": "Re-escrever configurações", + "Compacting...\nTakes approx\n1 minute": "A compactação...\nLeva aproximadamente\n1 minuto", + "Flatten Battery": "Bateria achatada", + "Reset Settings": "Redefinir configurações", + "Compact Storage": "Armazenamento compacto", + "Stay Connectable": "Fique Conectável", + "Turn Off": "Desligar", + "Connectable": "Conectável", + "This will remove everything": "Isto irá remover tudo", + "Date": "Data", + "Month": "Mês", + "Second": "Segundo", + "Minute": "Ata", + "Flattening battery - this can take hours.\nLong-press button to cancel": "Bateria plana - isto pode demorar horas.\nBotão de pressão prolongada para cancelar", + "Reset to Defaults": "Redefinir para Padrões", + "Hour": "Hora", + "No Clocks Found": "Não foram encontrados relógios", + "Right": "Certo", + "No app has settings": "Nenhum aplicativo tem configurações", + "App Settings": "Configurações do aplicativo", + "OFF": "DESLIGADO", + "Side": "Lado", + "Left": "Esquerda", + "Sort Order": "Ordem de classificação", + "Widgets": "Widgets", + "Invalid settings": "Configurações inválidas", + "Sleep Phase Alarm": "Alarme da Fase do Sono", + "Alarm": "Alarme", + "Minutes": "Acta", + "TIMER": "TIMER", + "Hours": "Horário", + "on": "em", + "Reset All": "Reinicializar tudo", + "Repeat": "Repita", + "Delete": "Eliminar", + "Enabled": "Habilitado", + "Reset all widgets": "Redefinir todos os widgets", + "Reset": "Reinicialização", + "goal": "meta", + "Message": "Mensagem", + "Beep": "Bip", + "Vibrate": "Vibrar", + "System": "Sistema", + "Alerts": "Alertas", + "Locale": "Localização", + "Set Time": "Tempo Definido", + "Whitelist": "Lista branca", + "Select Clock": "Selecione Relógio", + "BACK": "VOLTAR", + "Timer": "Temporizador", + "Error in settings": "Erro nas configurações", + "Disable": "Desabilitar", + "Factory Reset": "Reinicialização de Fábrica", + "Connected": "Conectado", + "ALARM": "ALARME", + "Sleep": "Dormir", + "Messages": "Mensagens", + "Hide": "Esconder", + "Show": "Mostrar", + "On": "Em", + "Ok": "Ok", + "No": "Não", + "Settings": "Configurações", + "steps": "passos", + "back": "voltar", + "Steps": "Passos", + "Year": "Ano", + "Yes": "Sim", + "Loading": "Carregamento", + "Music": "Música", + "color": "cor", + "off": "em", + "Off": "Fora", + "Theme": "Tema", + "Back": "Voltar" + } +} \ No newline at end of file diff --git a/lang/ru_RU.json b/lang/ru_RU.json new file mode 100644 index 000000000..6bdf906fe --- /dev/null +++ b/lang/ru_RU.json @@ -0,0 +1,167 @@ +{ + "//": "Russian language translations", + "GLOBAL": { + "//": "Translations that apply for all apps", + "New Alarm": "Новая сигнализация", + "(repeat)": "(повтор)", + "New Timer": "Новый таймер", + "Auto snooze": "Автоматическая дозагрузка", + "circle 4": "круг 4", + "Save": "Сохранить", + "Keep Msgs": "Сохраняйте сообщения", + "week": "неделя", + "circle count": "счётчик окружностей", + "circle 2": "круг 2", + "music": "музыка", + "battery warn": "предупреждение о разряде батареи", + "circle 1": "круг 1", + "maximum": "максимальный", + "min. confidence": "мин. уверенность", + "heartrate": "частота сердечных сокращений", + "Circle": "Круг", + "minimum": "минимум", + "Heartrate": "Пульс", + "show widgets": "показывать виджеты", + "weather circle": "метеорологический круг", + "data": "данные", + "step length": "длина шага", + "valid period": "период действия", + "distance goal": "дальняя цель", + "circle 3": "круг 3", + "TAP right top/bottom": "TAP справа сверху/снизу", + "Delete all messages": "Удалить все сообщения", + "Mark Unread": "Отметить непрочитанным", + "Unread timer": "Непрочитанный таймер", + "Launcher Settings": "Настройки запуска", + "start&lap/reset, BTN1: EXIT": "start&lap/reset, BTN1: EXIT", + "View Message": "Посмотреть сообщение", + "No Messages": "Нет сообщений", + "Are you sure": "Вы уверены", + "Vector font size": "Размер векторного шрифта", + "colorize icon": "раскрасить иконку", + "Yes\ndefinitely": "Да\nопределенно", + "BTNs 1:startlap 2:exit 3:reset": "BTNs 1:startlap 2:exit 3:reset", + "App Source\nNot found": "Источник приложения\nНе найдено", + "STEPS": "СТЕПЕНИ", + "Font": "Шрифт", + "Show clocks": "Показать часы", + "Vibration": "Вибрация", + "Bluetooth": "Bluetooth", + "Make Connectable": "Сделать соединяемым", + "Apps": "Приложения", + "Quiet Mode": "Тихий режим", + "LCD": "ЖК-ДИСПЛЕЙ", + "Programmable": "Программируемый", + "Passkey BETA": "Passkey BETA", + "Record Run": "Рекордный пробег", + "Delete All Messages": "Удалить все сообщения", + "Utils": "Утилиты", + "Piezo": "Пьезо", + "Foreground": "Передний план", + "Background": "Справочная информация", + "Dark BW": "Темный BW", + "HID": "HID", + "BLE": "BLE", + "Light BW": "Светлый BW", + "Highlight FG": "Выделите FG", + "Foreground 2": "Передний план 2", + "Customize": "Настроить", + "Wake on BTN2": "Вейк на BTN2", + "Wake on BTN1": "Проснись на BTN1", + "Wake on BTN3": "Уэйк на BTN3", + "Add Device": "Добавить устройство", + "LCD Brightness": "Яркость ЖК-дисплея", + "Wake on FaceUp": "Проснуться на FaceUp", + "Storage": "Хранение", + "Wake on Twist": "Проснуться на твисте", + "Connect device\nto add to\nwhitelist": "Подключить устройство\nдля добавления в\nбелый список", + "Background 2": "Справочная информация 2", + "Remove": "Удалить", + "Highlight BG": "Выделение BG", + "LCD Timeout": "Тайм-аут ЖК-дисплея", + "Twist Timeout": "Тайм-аут скручивания", + "Twist Threshold": "Порог скручивания", + "Wake on Touch": "Пробуждение при касании", + "Twist Max Y": "Twist Max Y", + "Stay Connectable": "Оставайтесь на связи", + "This will remove everything": "Это удалит все", + "Turn Off": "Выключить", + "Hour": "Час", + "Minute": "Минута", + "Reset to Defaults": "Сброс настроек по умолчанию", + "No Clocks Found": "Часы не найдены", + "Log": "Журнал", + "Debug Info": "Отладочная информация", + "Utilities": "Утилиты", + "Compact Storage": "Компактное хранение", + "Reset Settings": "Сброс настроек", + "Compacting...\nTakes approx\n1 minute": "Уплотнение...\nЗанимает приблизительно\n1 минута", + "Flattening battery - this can take hours.\nLong-press button to cancel": "Сплющивание батареи - это может занять несколько часов.\nДлительное нажатие кнопки для отмены", + "Connectable": "Подключаемый", + "Clock Style": "Часовой стиль", + "Time Zone": "Часовой пояс", + "Flatten Battery": "Расплющить батарею", + "Rewrite Settings": "Настройки перезаписи", + "Sort Order": "Порядок сортировки", + "Right": "Справа", + "Left": "Слева", + "Side": "Сторона", + "Hours": "Часы", + "on": "на сайте", + "Widgets": "Виджеты", + "TIMER": "ТАЙМЕР", + "Date": "Дата", + "Month": "Месяц", + "OFF": "OFF", + "Reset All": "Сбросить все", + "Alarm": "Сигнализация", + "Reset all widgets": "Сброс всех виджетов", + "Delete": "Удалить", + "Invalid settings": "Недопустимые настройки", + "Second": "Второй", + "Sleep Phase Alarm": "Сигнализация фазы сна", + "No app has settings": "Ни одно приложение не имеет настроек", + "App Settings": "Настройки приложения", + "Repeat": "Повторите", + "System": "Система", + "Minutes": "Протоколы", + "Enabled": "Включено", + "Reset": "Сброс", + "Vibrate": "Вибрация", + "Alerts": "Оповещения", + "Select Clock": "Выберите часы", + "Set Time": "Установленное время", + "Locale": "Местность", + "Beep": "Звуковой сигнал", + "goal": "гол", + "Message": "Сообщение", + "ALARM": "АЛАРМ", + "Disable": "Отключить", + "Factory Reset": "Заводской сброс", + "Sleep": "Сон", + "Whitelist": "Белый список", + "Timer": "Таймер", + "Error in settings": "Ошибка в настройках", + "BACK": "BACK", + "Messages": "Сообщения", + "Show": "Показать", + "Hide": "Скрыть", + "Connected": "Подключено", + "On": "На сайте", + "No": "Нет", + "Ok": "Хорошо", + "Settings": "Настройки", + "steps": "шаги", + "back": "назад", + "Year": "Год", + "Steps": "Шаги", + "Yes": "Да", + "Loading": "Загрузка", + "color": "цвет", + "Music": "Музыка", + "Off": "На сайте", + "off": "отключен", + "Theme": "Тема", + "Back": "Назад" + } +} \ No newline at end of file diff --git a/lang/sv_SE.json b/lang/sv_SE.json index 3a006c2bf..6b35f5cdf 100644 --- a/lang/sv_SE.json +++ b/lang/sv_SE.json @@ -1,21 +1,173 @@ { - "//":"Swedish language translations", - "GLOBAL": { - "//":"Translations that apply for all apps", - "Alarms" : "Larm", - "Hours" : "Timmar", - "Minutes" : "Minuter", - "Enabled" : "Aktiverad", - "New Alarm" : "Ny alarm", - "Save" : "Spara", - "Back" : "Tillbaka", - "Repeat" : "Upprepning", - "Delete" : "Radera", - "ALARM!" : "ALURH!", - "Sleep" : "Sömn" - }, - "alarm": { - "//":"App-specific overrides", - "rpt" : "uppr." - } -} + "//": "Swedish language translations", + "GLOBAL": { + "//": "Translations that apply for all apps", + "Alarms": "Larm", + "Hours": "Timmar", + "Minutes": "Minuter", + "Enabled": "Aktiverad", + "New Alarm": "Ny alarm", + "Save": "Spara", + "Back": "Tillbaka", + "Repeat": "Upprepning", + "Delete": "Radera", + "ALARM!": "ALURH!", + "Sleep": "Sömn", + "circle 3": "cirkel 3", + "circle 1": "cirkel 1", + "music": "musik", + "week": "vecka", + "Keep Msgs": "Behåll meddelanden", + "Auto snooze": "Automatisk snooze", + "step length": "steglängd", + "Circle": "Cirkel", + "data": "uppgifter", + "colorize icon": "färglägga ikonen", + "min. confidence": "Min. förtroende", + "show widgets": "visa widgets", + "valid period": "giltig period", + "Heartrate": "Hjärtfrekvens", + "distance goal": "mål för distans", + "circle 4": "cirkel 4", + "circle count": "antal cirklar", + "minimum": "minimum", + "maximum": "maximal", + "New Timer": "Ny timer", + "battery warn": "batteri varning", + "heartrate": "hjärtfrekvens", + "circle 2": "cirkel 2", + "(repeat)": "(upprepning)", + "weather circle": "Vädercirkel", + "Delete All Messages": "Radera alla meddelanden", + "No Messages": "Inga meddelanden", + "Show clocks": "Visa klockor", + "STEPS": "STEG", + "TAP right top/bottom": "TAP höger upp/ner", + "View Message": "Visa meddelande", + "Mark Unread": "Markera oläst", + "Are you sure": "Är du säker på att", + "Delete all messages": "Radera alla meddelanden", + "Record Run": "Rekordkörning", + "Unread timer": "Oläst timer", + "Vibration": "Vibrationer", + "Utils": "Användaruppgifter", + "Quiet Mode": "Tyst läge", + "Passkey BETA": "Passkey BETA", + "Dark BW": "Mörk BW", + "BTNs 1:startlap 2:exit 3:reset": "BTN 1:startlap 2:exit 3:reset", + "start&lap/reset, BTN1: EXIT": "start&lap/återställning, BTN1: EXIT", + "BLE": "BLE", + "Programmable": "Programmerbar", + "Launcher Settings": "Inställningar för lanseringen", + "Vector font size": "Vektor teckensnittsstorlek", + "Font": "Typsnitt", + "Yes\ndefinitely": "Ja\ndefinitivt", + "App Source\nNot found": "App-källa\nEj funnen", + "Make Connectable": "Gör det möjligt att ansluta", + "HID": "HID", + "Bluetooth": "Bluetooth", + "Apps": "Appar", + "Piezo": "Piezo", + "LCD": "LCD", + "Foreground 2": "Förgrund 2", + "Light BW": "Ljus BW", + "Background": "Bakgrund", + "Remove": "Ta bort", + "Highlight BG": "Markera BG", + "Customize": "Anpassa", + "Highlight FG": "Highlight FG", + "Background 2": "Bakgrund 2", + "LCD Brightness": "Ljusstyrka på LCD-skärmen", + "Add Device": "Lägg till enhet", + "Wake on BTN1": "Vakna på BTN1", + "Wake on BTN2": "Vakna på BTN2", + "Twist Timeout": "Twist Timeout", + "Wake on Touch": "Vakna vid beröring", + "LCD Timeout": "LCD Timeout", + "Foreground": "Förgrund", + "Connect device\nto add to\nwhitelist": "Anslut enhet\nför att lägga till\nvitlista", + "Wake on FaceUp": "Vakna på FaceUp", + "Twist Threshold": "Tröskelvärde för vridning", + "Wake on BTN3": "Wake på BTN3", + "Clock Style": "Klockstil", + "Time Zone": "Tidszon", + "Twist Max Y": "Vridning Max Y", + "Stay Connectable": "Håll dig tillgänglig", + "This will remove everything": "Detta kommer att ta bort allt", + "Turn Off": "Stäng av", + "Connectable": "Anslutningsbar", + "Flattening battery - this can take hours.\nLong-press button to cancel": "Platta batterier - detta kan ta flera timmar.\nTryck länge på knappen för att avbryta", + "Reset to Defaults": "Återställ till standardvärden", + "Utilities": "Verktyg", + "Flatten Battery": "Platta batterier", + "Debug Info": "Info om felsökning", + "Reset Settings": "Återställa inställningar", + "Wake on Twist": "Väckning på Twist", + "Compact Storage": "Kompakt förvaring", + "Log": "Logg", + "Rewrite Settings": "Omskrivning av inställningar", + "Compacting...\nTakes approx\n1 minute": "Komprimering...\nTar ca.\n1 minut", + "Storage": "Lagring", + "Second": "Andra", + "App Settings": "App-inställningar", + "Invalid settings": "Ogiltiga inställningar", + "Minute": "Protokoll", + "Sleep Phase Alarm": "Larm om sömnfas", + "No app has settings": "Ingen app har inställningar", + "Hour": "Timme", + "No Clocks Found": "Inga klockor hittades", + "Date": "Datum", + "Month": "Månad", + "Alarm": "Larm", + "Reset": "Återställ", + "Reset all widgets": "Återställ alla widgetar", + "TIMER": "TIMER", + "on": "på", + "OFF": "OFF", + "Side": "Sidan", + "Sort Order": "Sortering", + "Left": "Vänster", + "Right": "Höger", + "Reset All": "Återställ alla", + "Widgets": "Widgets", + "goal": "mål", + "Vibrate": "Vibrera", + "Message": "Meddelande", + "Beep": "Piper", + "Disable": "Inaktivera", + "Select Clock": "Välj klocka", + "Locale": "Lokalisering", + "Alerts": "Varningar", + "System": "System", + "Set Time": "Ställ in tid", + "Factory Reset": "Fabriksåterställning", + "Messages": "Meddelanden", + "Timer": "Timer", + "BACK": "TILLBAKA", + "Error in settings": "Fel i inställningarna", + "Whitelist": "Whitelist", + "ALARM": "ALARM", + "Hide": "Dölj", + "Connected": "Ansluten", + "Show": "Visa", + "On": "På", + "Ok": "Ok", + "No": "Ingen", + "Settings": "Inställningar", + "steps": "steg", + "back": "tillbaka", + "Steps": "Steg", + "Year": "År", + "Yes": "Ja", + "Loading": "Laddar", + "Music": "Musik", + "color": "färg", + "off": "off", + "Off": "Av", + "Theme": "Tema" + }, + "alarm": { + "//": "App-specific overrides", + "rpt": "uppr." + } +} \ No newline at end of file diff --git a/lang/tr_TR.json b/lang/tr_TR.json index c59bc7d6b..e153253df 100644 --- a/lang/tr_TR.json +++ b/lang/tr_TR.json @@ -1,21 +1,21 @@ { - "//":"Turkish language translations", - "GLOBAL": { - "//":"Translations that apply for all apps", - "Alarms" : "Alarmlar", - "Hours" : "Saat", - "Minutes" : "Dakika", - "Enabled" : "Etkinleştirildi", - "New Alarm" : "Yeni alarm", - "Save" : "Sakla", - "Back" : "Geriye", - "Repeat" : "Yineleme", - "Delete" : "Sil", - "ALARM!" : "ALARM!", - "Sleep" : "Uyku" - }, - "alarm": { - "//":"App-specific overrides", - "rpt" : "yineleme" - } -} + "//": "Turkish language translations", + "GLOBAL": { + "//": "Translations that apply for all apps", + "Alarms": "Alarmlar", + "Hours": "Saat", + "Minutes": "Dakika", + "Enabled": "Etkinleştirildi", + "New Alarm": "Yeni alarm", + "Save": "Sakla", + "Back": "Geriye", + "Repeat": "Yineleme", + "Delete": "Sil", + "ALARM!": "ALARM!", + "Sleep": "Uyku" + }, + "alarm": { + "//": "App-specific overrides", + "rpt": "yineleme" + } +} \ No newline at end of file diff --git a/lang/zh_ZH.json b/lang/zh_ZH.json new file mode 100644 index 000000000..4ff134b04 --- /dev/null +++ b/lang/zh_ZH.json @@ -0,0 +1,167 @@ +{ + "//": "Chinese language translations", + "GLOBAL": { + "//": "Translations that apply for all apps", + "music": "音乐", + "distance goal": "距离目标", + "Save": "拯救", + "circle 3": "第3圈", + "Show clocks": "显示时钟", + "data": "数据", + "battery warn": "电池警告", + "heartrate": "心率", + "circle 2": "第2圈", + "circle 1": "第1圈", + "STEPS": "步骤", + "step length": "步长", + "New Timer": "新的计时器", + "colorize icon": "给图标着色", + "Auto snooze": "自动休眠", + "maximum": "最大限度", + "View Message": "查看留言", + "show widgets": "显示小工具", + "weather circle": "气象圈", + "Delete all messages": "删除所有信息", + "Launcher Settings": "启动器设置", + "Circle": "圆圈", + "No Messages": "没有消息", + "min. confidence": "最低限度的信心", + "circle count": "圈数", + "Keep Msgs": "保持信息畅通", + "(repeat)": "(重复)", + "App Source\nNot found": "应用程序来源\n未找到", + "Mark Unread": "标记未读", + "week": "周", + "Delete All Messages": "删除所有信息", + "New Alarm": "新警报", + "minimum": "最低限度", + "Heartrate": "心率", + "circle 4": "第4圈", + "Font": "字体", + "Vector font size": "矢量字体大小", + "Bluetooth": "蓝牙", + "Record Run": "记录运行", + "Are you sure": "你确定吗?", + "Unread timer": "未读计时器", + "Apps": "应用", + "start&lap/reset, BTN1: EXIT": "开始&lap/复位,BTN1:EXIT", + "TAP right top/bottom": "右侧顶部/底部的TAP", + "Yes\ndefinitely": "是的\n绝对", + "valid period": "有效期限", + "Utils": "充分利用", + "Customize": "定制", + "Quiet Mode": "静音模式", + "LCD": "液晶显示器", + "Programmable": "可编程", + "Light BW": "轻型BW", + "Vibration": "震动", + "Passkey BETA": "通行证 BETA", + "Make Connectable": "使之成为可连接的", + "Background 2": "背景2", + "Background": "背景介绍", + "HID": "氙气灯", + "Remove": "移除", + "Add Device": "添加设备", + "Highlight FG": "亮点FG", + "BTNs 1:startlap 2:exit 3:reset": "BTNs 1:startlap 2:exit 3:reset", + "Highlight BG": "突出显示BG", + "Dark BW": "深色BW", + "Foreground 2": "前景2", + "Piezo": "压电式", + "Connect device\nto add to\nwhitelist": "连接设备\n来添加到\n白名单", + "LCD Brightness": "液晶显示器的亮度", + "LCD Timeout": "LCD超时", + "Wake on FaceUp": "在FaceUp上唤醒", + "Twist Timeout": "扭曲超时", + "Wake on BTN1": "在BTN1上唤醒", + "Wake on Twist": "在扭曲中醒来", + "Wake on Touch": "触摸时唤醒", + "Utilities": "公用事业", + "Twist Max Y": "扭转最大Y", + "Time Zone": "时区", + "Log": "纪录", + "Twist Threshold": "扭曲阈值", + "Wake on BTN3": "唤醒BTN3网站", + "Wake on BTN2": "在BTN2上唤醒", + "Debug Info": "调试信息", + "BLE": "BLE", + "Compact Storage": "紧凑型存储", + "Storage": "储存", + "Compacting...\nTakes approx\n1 minute": "压实...\n需要大约\n1分钟", + "Reset Settings": "重置设置", + "Clock Style": "钟表风格", + "Rewrite Settings": "重写设置", + "Flatten Battery": "扁平化电池", + "Foreground": "前景", + "Hour": "一小时", + "Reset to Defaults": "重置为默认值", + "Turn Off": "关掉", + "Connectable": "可连接", + "Stay Connectable": "保持联系", + "Minute": "分钟", + "Month": "月份", + "Flattening battery - this can take hours.\nLong-press button to cancel": "压扁电池 - 这可能需要几个小时。\n长按按钮可取消", + "Second": "第二次", + "This will remove everything": "这将删除一切", + "App Settings": "应用程序设置", + "Side": "侧面", + "No Clocks Found": "没有发现时钟", + "OFF": "关闭", + "Widgets": "小工具", + "Invalid settings": "无效的设置", + "Right": "对", + "No app has settings": "没有应用程序有设置", + "Left": "左边", + "Sleep Phase Alarm": "睡眠阶段报警", + "Sort Order": "排序顺序", + "Date": "日期", + "Reset all widgets": "重置所有小工具", + "on": "关于", + "Reset All": "全部重设", + "TIMER": "计时器", + "Hours": "小时", + "Alarm": "警报", + "Repeat": "重复进行", + "Reset": "复位", + "Minutes": "会议记录", + "Enabled": "已启用", + "goal": "目标", + "Beep": "哔哔声", + "Vibrate": "震动", + "Delete": "删除", + "Locale": "地区", + "System": "系统", + "Disable": "禁用", + "Select Clock": "选择时钟", + "Set Time": "设置时间", + "Alerts": "警报", + "Whitelist": "白名单", + "Error in settings": "设置中的错误", + "Factory Reset": "工厂重置", + "BACK": "返回", + "Timer": "计时器", + "Sleep": "睡眠", + "Messages": "留言", + "Hide": "隐藏", + "Connected": "已连接", + "ALARM": "警报", + "On": "在", + "Show": "显示", + "Ok": "好的", + "Message": "留言", + "steps": "步骤", + "No": "没有", + "Settings": "设置", + "back": "背面", + "Year": "年", + "Steps": "阶梯", + "Yes": "是", + "Loading": "负载", + "Music": "音乐", + "color": "颜色", + "off": "关闭", + "Off": "关闭", + "Theme": "主题", + "Back": "溯源" + } +} \ No newline at end of file From 1f48344d165329db2fa1d9f918ff2dc8a32a2d81 Mon Sep 17 00:00:00 2001 From: copoer Date: Wed, 9 Feb 2022 19:52:16 -0400 Subject: [PATCH 13/59] Added more /*LANG*/ --- apps/BLEcontroller/app.js | 2 +- apps/a_clock_timer/app.js | 2 +- apps/about/app-bangle1.js | 2 +- apps/about/app-bangle2.js | 4 +-- apps/accellog/app.js | 2 ++ apps/accelrec/app.js | 4 +++ apps/activepedom/app.js | 4 +-- apps/activepedom/settings.js | 2 ++ apps/activepedom/widget.js | 6 ++--- apps/alarm/app.js | 8 +++--- apps/android/boot.js | 6 ++--- apps/android/settings.js | 2 ++ apps/antonclk/app.js | 10 +++---- apps/antonclk/settings.js | 6 +++++ apps/banglerun/app.js | 2 +- apps/banglexercise/settings.js | 2 ++ apps/breath/app.js | 4 +-- apps/bthrm/boot.js | 2 +- apps/bthrm/settings.js | 7 +++++ apps/bthrv/app.js | 2 +- apps/calendar/settings.js | 4 +++ apps/chronowid/app.js | 1 + apps/circlesclock/app.js | 6 ++++- apps/circlesclock/settings.js | 8 ++++-- apps/cliclockJS2Enhanced/app.js | 12 ++++----- apps/clicompleteclk/app.js | 4 +-- apps/clicompleteclk/settings.js | 4 +++ apps/configurable_clock/app.js | 32 +++++++++++------------ apps/coretemp/settings.js | 4 +++ apps/cscsensor/cscsensor.app.js | 2 +- apps/cscsensor/settings.js | 2 ++ apps/dane_tcr/app.js | 2 +- apps/dane_tcr/settings.js | 2 ++ apps/daysl/app.js | 2 +- apps/dsdrelay/dsdrelay.app.js | 2 +- apps/dtlaunch/settings-b1.js | 4 +++ apps/dtlaunch/settings-b2.js | 5 ++++ apps/ffcniftya/settings.js | 1 + apps/ffcniftyb/app.js | 2 +- apps/fileman/fileman.app.js | 2 ++ apps/files/files.js | 1 + apps/gallifr/settings.js | 4 +++ apps/gbmusic/settings.js | 2 ++ apps/gbridge/settings.js | 4 +++ apps/gpsinfo/gps-info.js | 2 +- apps/gpsrec/app.js | 4 +-- apps/gpstime/gpstime.js | 2 +- apps/hardalarm/app.js | 1 + apps/hardalarm/hardalarm.js | 2 +- apps/health/app.js | 4 +++ apps/heart/app.js | 1 + apps/hidmsic/hid-music.js | 2 +- apps/hidmsicswipe/hidmsicswipe.js | 6 ++--- apps/hourstrike/app.js | 1 + apps/hralarm/settings.js | 2 ++ apps/intervalTimer/app.js | 4 +-- apps/intervals/intervals.app.js | 2 +- apps/ios/boot.js | 2 +- apps/jbm8b/app.js | 4 +-- apps/largeclock/settings.js | 2 ++ apps/lcars/lcars.app.js | 4 +-- apps/lcars/lcars.settings.js | 4 +++ apps/lightswitch/settings.js | 4 +-- apps/lightswitch/widget.js | 8 +++--- apps/limelight/limelight.settings.js | 4 +++ apps/ltherm/app.js | 2 +- apps/marioclock/marioclock-app.js | 2 +- apps/menuwheel/boot.js | 2 +- apps/messages/app.js | 4 +-- apps/messages/settings.js | 2 ++ apps/mysticclock/mystic-clock-settings.js | 6 +++++ apps/mysticdock/mystic-dock-settings.js | 6 +++++ apps/mywelcome/settings.js | 2 ++ apps/ncstart/start.js | 2 +- apps/numerals/numerals.settings.js | 2 +- apps/pastel/pastel.settings.js | 4 +++ apps/pebble/pebble.app.js | 2 +- apps/pebble/pebble.settings.js | 2 ++ apps/pebbled/pebbled.app.js | 2 +- apps/pebbled/pebbled.settings.js | 3 +++ apps/planetarium/settings.js | 1 + apps/presentor/app.js | 2 +- apps/ptlaunch/app.js | 4 +-- apps/puzzle15/puzzle15.app.js | 6 ++--- apps/puzzle15/puzzle15.settings.js | 2 +- apps/qalarm/app.js | 4 +++ apps/qmsched/app.js | 1 + apps/rebble/rebble.app.js | 2 +- apps/rebble/rebble.settings.js | 2 ++ apps/recorder/app.js | 4 +-- apps/recorder/widget.js | 4 +-- apps/score/score.settings.js | 2 ++ apps/sensible/sensible.js | 8 +++--- apps/setting/settings.js | 7 ++++- apps/simpletimer/app.js | 2 +- apps/sleepphasealarm/app.js | 4 +-- apps/smartibot/app.js | 8 +++--- apps/smtswch/app.js | 2 +- apps/sonicclk/app.js | 2 +- apps/speedalt/settings.js | 3 +++ apps/speedalt2/settings.js | 3 +++ apps/swp2clk/settings.js | 2 ++ apps/themesetter/app.js | 4 +-- apps/thermomF/app.js | 2 +- apps/timerclk/alarm.alert.js | 4 +-- apps/timerclk/settings.js | 2 ++ apps/torch/app.js | 2 +- apps/torch/settings.js | 2 ++ apps/toucher/app.js | 2 +- apps/toucher/settings.js | 3 +++ apps/vectorclock/settings.js | 2 ++ apps/viewstl/viewstl.min.js | 2 +- apps/walkersclock/app.js | 4 +-- apps/weather/settings.js | 2 ++ apps/welcome/settings.js | 2 ++ apps/widbatpc/settings.js | 4 +++ apps/widbatpc/widget.js | 8 +++--- apps/widbatwarn/settings.js | 1 + apps/widchime/settings.js | 2 ++ apps/widpedom/settings.js | 3 +++ apps/widpedom/widget.js | 2 +- 121 files changed, 295 insertions(+), 132 deletions(-) diff --git a/apps/BLEcontroller/app.js b/apps/BLEcontroller/app.js index c8217988c..7f3a37ae2 100644 --- a/apps/BLEcontroller/app.js +++ b/apps/BLEcontroller/app.js @@ -295,7 +295,7 @@ const SocketsMenu = new State({ const startEnd = status => status ? "start" : "end"; /* translate status into english */ -const onOff= status => status ? "on" : "off"; +const onOff= status => status ? "on" : /*LANG*/"off"; /* create watching functions that will change the global diff --git a/apps/a_clock_timer/app.js b/apps/a_clock_timer/app.js index 5f9a3a468..c1c31cb80 100644 --- a/apps/a_clock_timer/app.js +++ b/apps/a_clock_timer/app.js @@ -53,7 +53,7 @@ function countDown() { g.reset().clearRect(0, 76, 44+44, g.getHeight()/2+6); g.setFontAlign(0, -1, 0); - g.setFont("6x8").drawString("Timer", 44, g.getHeight()/2-20); + g.setFont("6x8").drawString(/*LANG*/"Timer", 44, g.getHeight()/2-20); g.setFont("Michroma16").drawString(timeToString(timervalue), 44, g.getHeight()/2-10); if (timervalue <= 0) { diff --git a/apps/about/app-bangle1.js b/apps/about/app-bangle1.js index 28a292376..04f7ff7ee 100644 --- a/apps/about/app-bangle1.js +++ b/apps/about/app-bangle1.js @@ -21,7 +21,7 @@ function getVersion(name,file) { } getVersion("Bootloader","boot.info"); getVersion("Launcher","launch.info"); -getVersion("Settings","setting.info"); +getVersion(/*LANG*/"Settings","setting.info"); y+=h; g.drawString(MEM.total+" JS Variables available",0,y+=h); diff --git a/apps/about/app-bangle2.js b/apps/about/app-bangle2.js index 978d36193..89663a4bc 100644 --- a/apps/about/app-bangle2.js +++ b/apps/about/app-bangle2.js @@ -23,7 +23,7 @@ function getVersion(name,file) { var versions = [ getVersion("Bootloader","boot.info"), getVersion("Launcher","launch.info"), - getVersion("Settings","setting.info") + getVersion(/*LANG*/"Settings","setting.info") ]; var logo = E.toArrayBuffer(atob("PBwBAAAAAAAB/gAAAAAAAB/gAAAAAAAB/gAAAAAAAB/gAAAAAAAB/gAAAAAAAB/gAAAAAAAD/w+AAAAQAHA4hAAAAQAMAMhAAAAQAYBmhAAAAQAYBGiAAAAQAQCD/H74+R4wGDhoKJCSEwEDgoKJCT8wFDgoKJCSAwHDhoKJCSEQHj/H6I+R4YHmAAAACAAYEGAAABCAAMEMAAAA8AAHA4AAAAAAAD/wAAAAAAAB/gAAAAAAAB/gAAAAAAAB/gAAAAAAAB/gAAAAAAAB/gAAAAAAAB/g")); @@ -41,7 +41,7 @@ function drawInfo() { getVersion("Bootloader","boot.info"); getVersion("Launcher","launch.info"); - getVersion("Settings","setting.info"); + getVersion(/*LANG*/"Settings","setting.info"); g.drawString(MEM.total+" JS Vars",0,y+=h); g.drawString("Storage: "+(require("Storage").getFree()>>10)+"k free",0,y+=h); diff --git a/apps/accellog/app.js b/apps/accellog/app.js index c54c5002b..c95ecab3d 100644 --- a/apps/accellog/app.js +++ b/apps/accellog/app.js @@ -136,3 +136,5 @@ function startRecord(force) { Bangle.loadWidgets(); Bangle.drawWidgets(); showMenu(); +Menu(); +Menu(); diff --git a/apps/accelrec/app.js b/apps/accelrec/app.js index 65f2a63ca..bd6688539 100644 --- a/apps/accelrec/app.js +++ b/apps/accelrec/app.js @@ -177,3 +177,7 @@ function showSaveMenu() { } showMenu(); + +} + +showMenu(); diff --git a/apps/activepedom/app.js b/apps/activepedom/app.js index 12969a0a0..d241586f2 100644 --- a/apps/activepedom/app.js +++ b/apps/activepedom/app.js @@ -108,7 +108,7 @@ g.setFont("6x8", 2); g.setColor(1,1,1); require("graph").drawLine(g, steps, { - //title: "Steps", + //title: /*LANG*/"Steps", axes : true, gridy : gridyValue, y : 60, //offset on screen @@ -118,7 +118,7 @@ // show steps and duration of the chart g.setFont("6x8", 2); g.setColor(0,1,0); - g.drawString("steps", 30, 24); + g.drawString(/*LANG*/"steps", 30, 24); g.drawString(stepsLastEntry, 30, 44); g.drawString((history/3600000) + " hrs", 30, 64); diff --git a/apps/activepedom/settings.js b/apps/activepedom/settings.js index 3b64d8735..700637649 100644 --- a/apps/activepedom/settings.js +++ b/apps/activepedom/settings.js @@ -110,3 +110,5 @@ }; E.showMenu(menu); }); +; +}); diff --git a/apps/activepedom/widget.js b/apps/activepedom/widget.js index 62c2d857a..11360fd61 100644 --- a/apps/activepedom/widget.js +++ b/apps/activepedom/widget.js @@ -69,7 +69,7 @@ 'stepGoal' : 10000, 'stepLength' : 75, 'lineOne' : "Distance", - 'lineTwo' : "Steps", + 'lineTwo' : /*LANG*/"Steps", }; if (!settings) { loadSettings(); } return (key in settings) ? settings[key] : DEFAULTS[key]; @@ -169,7 +169,7 @@ if (active == 1) g.setColor(0x07E0); //green else g.setColor(0xFFFF); //white g.setFont("6x8", 2); - if (setting('lineOne') == 'Steps') { + if (setting('lineOne') == /*LANG*/'Steps') { g.drawString(kFormatterSteps(stepsCounted),this.x+1,this.y); //first line, big number, steps } if (setting('lineOne') == 'Distance') { @@ -177,7 +177,7 @@ } g.setFont("6x8", 1); g.setColor(0xFFFF); //white - if (setting('lineTwo') == 'Steps') { + if (setting('lineTwo') == /*LANG*/'Steps') { g.drawString(stepsCounted,this.x+1,this.y+14); //second line, small number, steps } if (setting('lineTwo') == 'Distance') { diff --git a/apps/alarm/app.js b/apps/alarm/app.js index 17062d44a..5ef6be152 100644 --- a/apps/alarm/app.js +++ b/apps/alarm/app.js @@ -39,9 +39,9 @@ function showMainMenu() { }; alarms.forEach((alarm,idx)=>{ if (alarm.timer) { - txt = /*LANG*/"TIMER "+(alarm.on?/*LANG*/"on ":/*LANG*/"off ")+formatMins(alarm.timer); + txt = /*LANG*/"TIMER "+(alarm.on?/*LANG*/"on ":/*LANG*//*LANG*/"off ")+formatMins(alarm.timer); } else { - txt = /*LANG*/"ALARM "+(alarm.on?/*LANG*/"on ":/*LANG*/"off ")+formatTime(alarm.hr); + txt = /*LANG*/"ALARM "+(alarm.on?/*LANG*/"on ":/*LANG*//*LANG*/"off ")+formatTime(alarm.hr); if (alarm.rp) txt += /*LANG*/" (repeat)"; } menu[txt] = function() { @@ -82,7 +82,7 @@ function editAlarm(alarmIndex) { }, /*LANG*/'Enabled': { value: en, - format: v=>v?"On":"Off", + format: v=>v?"On":/*LANG*/"Off", onchange: v=>en=v }, /*LANG*/'Repeat': { @@ -147,7 +147,7 @@ function editTimer(alarmIndex) { }, /*LANG*/'Enabled': { value: en, - format: v=>v?/*LANG*/"On":/*LANG*/"Off", + format: v=>v?/*LANG*/"On":/*LANG*//*LANG*/"Off", onchange: v=>en=v } }; diff --git a/apps/android/boot.js b/apps/android/boot.js index eb3d26c6e..5c910f5b1 100644 --- a/apps/android/boot.js +++ b/apps/android/boot.js @@ -29,11 +29,11 @@ }, // {t:"musicstate", state:"play/pause",position,shuffle,repeat} "musicstate" : function() { - require("messages").pushMessage({t:"modify",id:"music",title:"Music",state:event.state}); + require("messages").pushMessage({t:"modify",id:"music",title:/*LANG*/"Music",state:event.state}); }, // {t:"musicinfo", artist,album,track,dur,c(track count),n(track num} "musicinfo" : function() { - require("messages").pushMessage(Object.assign(event, {t:"modify",id:"music",title:"Music"})); + require("messages").pushMessage(Object.assign(event, {t:"modify",id:"music",title:/*LANG*/"Music"})); }, // {"t":"call","cmd":"incoming/end","name":"Bob","number":"12421312"}) "call" : function() { @@ -63,7 +63,7 @@ // Music control Bangle.musicControl = cmd => { // play/pause/next/previous/volumeup/volumedown - gbSend({ t: "music", n:cmd }); + gbSend({ t: /*LANG*/"music", n:cmd }); }; // Message response Bangle.messageResponse = (msg,response) => { diff --git a/apps/android/settings.js b/apps/android/settings.js index 7c46a1fc0..3e0e2b755 100644 --- a/apps/android/settings.js +++ b/apps/android/settings.js @@ -28,3 +28,5 @@ }; E.showMenu(mainmenu); }) +u(mainmenu); +}) diff --git a/apps/antonclk/app.js b/apps/antonclk/app.js index 7b40d8eb5..fd6cc98c6 100644 --- a/apps/antonclk/app.js +++ b/apps/antonclk/app.js @@ -37,7 +37,7 @@ require('Storage').writeJSON(SETTINGSFILE, { secondsColoured: true, secondsWithColon: true, dateOnMain: "Long", // "Short", "Long", "ISO8601" - dateOnSecs: "Year", // "No", "Year", "Weekday", LEGACY: true/false + dateOnSecs: "Year", // "No", /*LANG*/"Year", "Weekday", LEGACY: true/false weekDay: true, calWeek: true, upperCase: true, @@ -60,7 +60,7 @@ function loadSettings() { secondsColoured = def(settings.secondsColoured, true); secondsWithColon = def(settings.secondsWithColon, true); dateOnMain = def(settings.dateOnMain, "Long"); - dateOnSecs = def(settings.dateOnSecs, "Year"); + dateOnSecs = def(settings.dateOnSecs, /*LANG*/"Year"); weekDay = def(settings.weekDay, true); calWeek = def(settings.calWeek, false); upperCase = def(settings.upperCase, true); @@ -68,7 +68,7 @@ function loadSettings() { // Legacy if (dateOnSecs === true) - dateOnSecs = "Year"; + dateOnSecs = /*LANG*/"Year"; if (dateOnSecs === false) dateOnSecs = "No"; } @@ -153,7 +153,7 @@ function draw() { var md; var yearfirst; if (dateStr2.match(/\d\d\d\d$/)) { // formatted date ends with year - year = (dateOnSecs === "Year" ? dateStr2.slice(-4) : require("locale").dow(date, 1)); + year = (dateOnSecs === /*LANG*/"Year" ? dateStr2.slice(-4) : require("locale").dow(date, 1)); md = dateStr2.slice(0, -4); if (!md.endsWith(".")) // keep separator before the year only if it is a dot (31.12. but 31/12) md = md.slice(0, -1); @@ -161,7 +161,7 @@ function draw() { } else { // formatted date begins with year if (!dateStr2.match(/^\d\d\d\d/)) // if year position cannot be detected... dateStr2 = isoStr(date); // ...use ISO date format instead - year = (dateOnSecs === "Year" ? dateStr2.slice(0, 4) : require("locale").dow(date, 1)); + year = (dateOnSecs === /*LANG*/"Year" ? dateStr2.slice(0, 4) : require("locale").dow(date, 1)); md = dateStr2.slice(5); // never keep separator directly after year yearfirst = true; } diff --git a/apps/antonclk/settings.js b/apps/antonclk/settings.js index e452b02c7..1a81a7f24 100644 --- a/apps/antonclk/settings.js +++ b/apps/antonclk/settings.js @@ -105,3 +105,9 @@ }); // end of file +nu + E.showMenu(mainmenu); + +}); + +// end of file diff --git a/apps/banglerun/app.js b/apps/banglerun/app.js index b79255171..1793decef 100644 --- a/apps/banglerun/app.js +++ b/apps/banglerun/app.js @@ -1 +1 @@ -!function(){"use strict";var t;!function(t){t.Stopped="STOP",t.Paused="PAUSE",t.Running="RUN"}(t||(t={}));const n={STOP:63488,PAUSE:65504,RUN:2016};function e(t,n,e){g.setColor(0),g.fillRect(n-60,e,n+60,e+30),g.setColor(65535),g.drawString(t,n,e)}function i(i){var s;g.setFontVector(30),g.setFontAlign(0,-1,0),e((i.distance/1e3).toFixed(2),60,55),e(function(t){const n=Math.round(t),e=Math.floor(n/3600),i=Math.floor(n/60)%60,s=n%60;return(e?e+":":"")+("0"+i).substr(-2)+":"+("0"+s).substr(-2)}(i.duration),172,55),e(function(t){if(t<.1667)return"__'__\"";const n=Math.round(1e3/t),e=Math.floor(n/60),i=n%60;return("0"+e).substr(-2)+"'"+("0"+i).substr(-2)+'"'}(i.speed),60,115),e(i.hr.toFixed(0),172,115),e(i.steps.toFixed(0),60,175),e(i.cadence.toFixed(0),172,175),g.setFont("6x8",2),g.setColor(i.gpsValid?2016:63488),g.fillRect(0,216,80,240),g.setColor(0),g.drawString("GPS",40,220),g.setColor(65535),g.fillRect(80,216,160,240),g.setColor(0),g.drawString(("0"+(s=new Date).getHours()).substr(-2)+":"+("0"+s.getMinutes()).substr(-2),120,220),g.setColor(n[i.status]),g.fillRect(160,216,230,240),g.setColor(0),g.drawString(i.status,200,220),g.setFont("6x8").setFontAlign(0,0,1).setColor(-1),i.status===t.Paused?g.drawString("START",236,60,1).drawString(" CLEAR ",236,180,1):i.status===t.Running?g.drawString(" PAUSE ",236,60,1).drawString(" PAUSE ",236,180,1):g.drawString("START",236,60,1).drawString(" ",236,180,1)}function s(t){g.clear(),g.setColor(50712),g.setFont("6x8",2),g.setFontAlign(0,-1,0),g.drawString("DIST (KM)",60,32),g.drawString("TIME",180,32),g.drawString("PACE",60,92),g.drawString("HEART",180,92),g.drawString("STEPS",60,152),g.drawString("CADENCE",180,152),i(t),Bangle.drawWidgets()}function a(n){n.status===t.Stopped&&function(t){const n=(new Date).toISOString().replace(/[-:]/g,""),e=`banglerun_${n.substr(2,6)}_${n.substr(9,6)}`;t.file=require("Storage").open(e,"w"),t.fileWritten=!1}(n),n.status===t.Running?n.status=t.Paused:n.status=t.Running,i(n)}const r={fix:NaN,lat:NaN,lon:NaN,alt:NaN,vel:NaN,dop:NaN,gpsValid:!1,x:NaN,y:NaN,z:NaN,t:NaN,timeSinceLog:0,hr:60,hrError:100,file:null,fileWritten:!1,drawing:!1,status:t.Stopped,duration:0,distance:0,speed:0,steps:0,cadence:0};var o;o=r,Bangle.on("GPS",n=>function(n,e){n.lat=e.lat,n.lon=e.lon,n.alt=e.alt,n.vel=e.speed/3.6,n.fix=e.fix,n.dop=e.hdop,n.gpsValid=n.fix>0,function(n){const e=Date.now();let i=(e-n.t)/1e3;if(isFinite(i)||(i=0),n.t=e,n.timeSinceLog+=i,n.status===t.Running&&(n.duration+=i),!n.gpsValid)return;const s=6371008.8+n.alt,a=n.lat*Math.PI/180,r=n.lon*Math.PI/180,o=s*Math.cos(a)*Math.cos(r),g=s*Math.cos(a)*Math.sin(r),d=s*Math.sin(a);if(!n.x)return n.x=o,n.y=g,void(n.z=d);const u=o-n.x,l=g-n.y,c=d-n.z,f=Math.sqrt(u*u+l*l+c*c);n.x=o,n.y=g,n.z=d,n.status===t.Running&&(n.distance+=f,n.speed=n.distance/n.duration||0,n.cadence=60*n.steps/n.duration||0)}(n),i(n),n.gpsValid&&n.status===t.Running&&n.timeSinceLog>5&&(n.timeSinceLog=0,function(t){t.fileWritten||(t.file.write(["timestamp","latitude","longitude","altitude","duration","distance","heartrate","steps"].join(",")+"\n"),t.fileWritten=!0),t.file.write([Date.now().toFixed(0),t.lat.toFixed(6),t.lon.toFixed(6),t.alt.toFixed(2),t.duration.toFixed(0),t.distance.toFixed(2),t.hr.toFixed(0),t.steps.toFixed(0)].join(",")+"\n")}(n))}(o,n)),Bangle.setGPSPower(1),function(t){Bangle.on("HRM",n=>function(t,n){if(0===n.confidence)return;const e=n.bpm-t.hr,i=Math.abs(e)+101-n.confidence,s=t.hrError/(t.hrError+i)||0;t.hr+=e*s,t.hrError+=(i-t.hrError)*s}(t,n)),Bangle.setHRMPower(1)}(r),function(n){Bangle.on("step",()=>function(n){n.status===t.Running&&(n.steps+=1)}(n))}(r),function(t){Bangle.loadWidgets(),Bangle.on("lcdPower",n=>{t.drawing=n,n&&s(t)}),s(t)}(r),setWatch(()=>a(r),BTN1,{repeat:!0,edge:"falling"}),setWatch(()=>function(n){n.status===t.Paused&&function(t){t.duration=0,t.distance=0,t.speed=0,t.steps=0,t.cadence=0}(n),n.status===t.Running?n.status=t.Paused:n.status=t.Stopped,i(n)}(r),BTN3,{repeat:!0,edge:"falling"})}(); +!function(){"use strict";var t;!function(t){t.Stopped="STOP",t.Paused="PAUSE",t.Running="RUN"}(t||(t={}));const n={STOP:63488,PAUSE:65504,RUN:2016};function e(t,n,e){g.setColor(0),g.fillRect(n-60,e,n+60,e+30),g.setColor(65535),g.drawString(t,n,e)}function i(i){var s;g.setFontVector(30),g.setFontAlign(0,-1,0),e((i.distance/1e3).toFixed(2),60,55),e(function(t){const n=Math.round(t),e=Math.floor(n/3600),i=Math.floor(n/60)%60,s=n%60;return(e?e+":":"")+("0"+i).substr(-2)+":"+("0"+s).substr(-2)}(i.duration),172,55),e(function(t){if(t<.1667)return"__'__\"";const n=Math.round(1e3/t),e=Math.floor(n/60),i=n%60;return("0"+e).substr(-2)+"'"+("0"+i).substr(-2)+'"'}(i.speed),60,115),e(i.hr.toFixed(0),172,115),e(i.steps.toFixed(0),60,175),e(i.cadence.toFixed(0),172,175),g.setFont("6x8",2),g.setColor(i.gpsValid?2016:63488),g.fillRect(0,216,80,240),g.setColor(0),g.drawString("GPS",40,220),g.setColor(65535),g.fillRect(80,216,160,240),g.setColor(0),g.drawString(("0"+(s=new Date).getHours()).substr(-2)+":"+("0"+s.getMinutes()).substr(-2),120,220),g.setColor(n[i.status]),g.fillRect(160,216,230,240),g.setColor(0),g.drawString(i.status,200,220),g.setFont("6x8").setFontAlign(0,0,1).setColor(-1),i.status===t.Paused?g.drawString("START",236,60,1).drawString(" CLEAR ",236,180,1):i.status===t.Running?g.drawString(" PAUSE ",236,60,1).drawString(" PAUSE ",236,180,1):g.drawString("START",236,60,1).drawString(" ",236,180,1)}function s(t){g.clear(),g.setColor(50712),g.setFont("6x8",2),g.setFontAlign(0,-1,0),g.drawString("DIST (KM)",60,32),g.drawString("TIME",180,32),g.drawString("PACE",60,92),g.drawString("HEART",180,92),g.drawString("STEPS",60,152),g.drawString("CADENCE",180,152),i(t),Bangle.drawWidgets()}function a(n){n.status===t.Stopped&&function(t){const n=(new Date).toISOString().replace(/[-:]/g,""),e=`banglerun_${n.substr(2,6)}_${n.substr(9,6)}`;t.file=require("Storage").open(e,"w"),t.fileWritten=!1}(n),n.status===t.Running?n.status=t.Paused:n.status=t.Running,i(n)}const r={fix:NaN,lat:NaN,lon:NaN,alt:NaN,vel:NaN,dop:NaN,gpsValid:!1,x:NaN,y:NaN,z:NaN,t:NaN,timeSinceLog:0,hr:60,hrError:100,file:null,fileWritten:!1,drawing:!1,status:t.Stopped,duration:0,distance:0,speed:0,steps:0,cadence:0};var o;o=r,Bangle.on("GPS",n=>function(n,e){n.lat=e.lat,n.lon=e.lon,n.alt=e.alt,n.vel=e.speed/3.6,n.fix=e.fix,n.dop=e.hdop,n.gpsValid=n.fix>0,function(n){const e=Date.now();let i=(e-n.t)/1e3;if(isFinite(i)||(i=0),n.t=e,n.timeSinceLog+=i,n.status===t.Running&&(n.duration+=i),!n.gpsValid)return;const s=6371008.8+n.alt,a=n.lat*Math.PI/180,r=n.lon*Math.PI/180,o=s*Math.cos(a)*Math.cos(r),g=s*Math.cos(a)*Math.sin(r),d=s*Math.sin(a);if(!n.x)return n.x=o,n.y=g,void(n.z=d);const u=o-n.x,l=g-n.y,c=d-n.z,f=Math.sqrt(u*u+l*l+c*c);n.x=o,n.y=g,n.z=d,n.status===t.Running&&(n.distance+=f,n.speed=n.distance/n.duration||0,n.cadence=60*n.steps/n.duration||0)}(n),i(n),n.gpsValid&&n.status===t.Running&&n.timeSinceLog>5&&(n.timeSinceLog=0,function(t){t.fileWritten||(t.file.write(["timestamp","latitude","longitude","altitude","duration","distance","heartrate",/*LANG*/"steps"].join(",")+"\n"),t.fileWritten=!0),t.file.write([Date.now().toFixed(0),t.lat.toFixed(6),t.lon.toFixed(6),t.alt.toFixed(2),t.duration.toFixed(0),t.distance.toFixed(2),t.hr.toFixed(0),t.steps.toFixed(0)].join(",")+"\n")}(n))}(o,n)),Bangle.setGPSPower(1),function(t){Bangle.on("HRM",n=>function(t,n){if(0===n.confidence)return;const e=n.bpm-t.hr,i=Math.abs(e)+101-n.confidence,s=t.hrError/(t.hrError+i)||0;t.hr+=e*s,t.hrError+=(i-t.hrError)*s}(t,n)),Bangle.setHRMPower(1)}(r),function(n){Bangle.on("step",()=>function(n){n.status===t.Running&&(n.steps+=1)}(n))}(r),function(t){Bangle.loadWidgets(),Bangle.on("lcdPower",n=>{t.drawing=n,n&&s(t)}),s(t)}(r),setWatch(()=>a(r),BTN1,{repeat:!0,edge:"falling"}),setWatch(()=>function(n){n.status===t.Paused&&function(t){t.duration=0,t.distance=0,t.speed=0,t.steps=0,t.cadence=0}(n),n.status===t.Running?n.status=t.Paused:n.status=t.Stopped,i(n)}(r),BTN3,{repeat:!0,edge:"falling"})}(); diff --git a/apps/banglexercise/settings.js b/apps/banglexercise/settings.js index 3208c6eca..6b80e9035 100644 --- a/apps/banglexercise/settings.js +++ b/apps/banglexercise/settings.js @@ -19,3 +19,5 @@ } }); }); +}); +}); diff --git a/apps/breath/app.js b/apps/breath/app.js index 380308739..97e6b625f 100644 --- a/apps/breath/app.js +++ b/apps/breath/app.js @@ -191,8 +191,8 @@ function btn3Pressed() { if (settings.vibrate == "forward") settings.vibrate = "backward"; else if (settings.vibrate == "backward") - settings.vibrate = "off"; - else if (settings.vibrate == "off") + settings.vibrate = /*LANG*/"off"; + else if (settings.vibrate == /*LANG*/"off") settings.vibrate = "forward"; } else if(status == 5){ diff --git a/apps/bthrm/boot.js b/apps/bthrm/boot.js index 6ac6382d6..0d3b72735 100644 --- a/apps/bthrm/boot.js +++ b/apps/bthrm/boot.js @@ -503,7 +503,7 @@ if (settings.startWithHrm){ Bangle.setHRMPower = function(isOn, app) { - log("setHRMPower for " + app + ": " + (isOn?"on":"off")); + log("setHRMPower for " + app + ": " + (isOn?"on":/*LANG*/"off")); if (settings.enabled){ Bangle.setBTHRMPower(isOn, app); } diff --git a/apps/bthrm/settings.js b/apps/bthrm/settings.js index 62d2e7ea3..117e54e3f 100644 --- a/apps/bthrm/settings.js +++ b/apps/bthrm/settings.js @@ -243,5 +243,12 @@ } }; + E.showMenu(mainmenu); +}) + writeSettings("gracePeriodService",v); + } + } + }; + E.showMenu(mainmenu); }) diff --git a/apps/bthrv/app.js b/apps/bthrv/app.js index 7f6ec2d35..2faa7c200 100644 --- a/apps/bthrv/app.js +++ b/apps/bthrv/app.js @@ -58,7 +58,7 @@ function draw(y, hrv) { } g.setRotation(3); - g.setFontVector(12).drawString("Reset",g.getHeight()/2, g.getWidth()-10); + g.setFontVector(12).drawString(/*LANG*/"Reset",g.getHeight()/2, g.getWidth()-10); g.setRotation(0); } diff --git a/apps/calendar/settings.js b/apps/calendar/settings.js index 3c8f7d8e8..dfd2b6190 100644 --- a/apps/calendar/settings.js +++ b/apps/calendar/settings.js @@ -36,3 +36,7 @@ }); }) + }, + }); +}) + diff --git a/apps/chronowid/app.js b/apps/chronowid/app.js index ab363ed17..400d08eb5 100644 --- a/apps/chronowid/app.js +++ b/apps/chronowid/app.js @@ -91,3 +91,4 @@ function showMenu() { } showMenu(); +enu(); diff --git a/apps/circlesclock/app.js b/apps/circlesclock/app.js index 49af2a057..5c2bf9478 100644 --- a/apps/circlesclock/app.js +++ b/apps/circlesclock/app.js @@ -227,7 +227,7 @@ function isCircleEnabled(type) { function getCircleColor(type) { const pos = getCirclePosition(type); - const color = settings["circle" + (pos + 1) + "color"]; + const color = settings["circle" + (pos + 1) + /*LANG*/"color"]; if (color && color != "") return color; } @@ -828,3 +828,7 @@ Bangle.loadWidgets(); draw(); setInterval(draw, 60000); +s(); + +draw(); +setInterval(draw, 60000); diff --git a/apps/circlesclock/settings.js b/apps/circlesclock/settings.js index 348d187eb..30754f136 100644 --- a/apps/circlesclock/settings.js +++ b/apps/circlesclock/settings.js @@ -44,7 +44,7 @@ }, /*LANG*/'show widgets': { value: "showWidgets" in settings ? settings.showWidgets : false, - format: () => (settings.showWidgets ? 'Yes' : 'No'), + format: () => (settings.showWidgets ? /*LANG*/'Yes' : 'No'), onchange: x => save('showWidgets', x), }, /*LANG*/'weather circle': { @@ -167,7 +167,7 @@ }, /*LANG*/'colorize icon': { value: colorizeIconKey in settings ? settings[colorizeIconKey] : false, - format: () => (settings[colorizeIconKey] ? 'Yes' : 'No'), + format: () => (settings[colorizeIconKey] ? /*LANG*/'Yes' : 'No'), onchange: x => save(colorizeIconKey, x), }, }; @@ -175,5 +175,9 @@ } + showMainMenu(); +}); + + showMainMenu(); }); diff --git a/apps/cliclockJS2Enhanced/app.js b/apps/cliclockJS2Enhanced/app.js index b6172b497..e20944531 100644 --- a/apps/cliclockJS2Enhanced/app.js +++ b/apps/cliclockJS2Enhanced/app.js @@ -16,7 +16,7 @@ var lasty = 0; var lastx = 0; if (settings.HID=="kbmedia") { - profile = 'Music'; + profile = /*LANG*/'Music'; sendHid = function (code, cb) { try { NRF.sendHIDReport([1,code], () => { @@ -57,29 +57,29 @@ if (next) { if(lasty > 40){ writeLine('Down', 3); // setTimeout(drawApp, 1000); - // Bluetooth.println(JSON.stringify({t:"music", n:"volumedown"})); + // Bluetooth.println(JSON.stringify({t:/*LANG*/"music", n:"volumedown"})); down(() => {}); } else if(lasty < -40){ writeLine('Up', 3); // setTimeout(drawApp, 1000); - //Bluetooth.println(JSON.stringify({t:"music", n:"volumeup"})); + //Bluetooth.println(JSON.stringify({t:/*LANG*/"music", n:"volumeup"})); up(() => {}); } else if(lastx < -40){ writeLine('Prev', 3); // setTimeout(drawApp, 1000); - // Bluetooth.println(JSON.stringify({t:"music", n:"previous"})); + // Bluetooth.println(JSON.stringify({t:/*LANG*/"music", n:"previous"})); prev(() => {}); } else if(lastx > 40){ writeLine('Next', 3); // setTimeout(drawApp, 1000); - // Bluetooth.println(JSON.stringify({t:"music", n:"next"})); + // Bluetooth.println(JSON.stringify({t:/*LANG*/"music", n:"next"})); next(() => {}); } else if(lastx==0 && lasty==0){ writeLine('play/pause', 3); //setTimeout(drawApp, 1000); - // Bluetooth.println(JSON.stringify({t:"music", n:"play"})); + // Bluetooth.println(JSON.stringify({t:/*LANG*/"music", n:"play"})); toggle(() => {}); } diff --git a/apps/clicompleteclk/app.js b/apps/clicompleteclk/app.js index a39b37e58..8a4d00798 100644 --- a/apps/clicompleteclk/app.js +++ b/apps/clicompleteclk/app.js @@ -35,7 +35,7 @@ function setting(key) { 'battery': true, 'batteryLvl': 30, 'weather': true, - 'steps': true, + /*LANG*/'steps': true, 'heartrate': true }; return (key in settings) ? settings[key] : DEFAULTS[key]; @@ -45,7 +45,7 @@ function setting(key) { let showBattery = setting('battery'); let batteryWarnLevel = setting('batteryLvl'); let showWeather = setting('weather'); -let showSteps = setting('steps'); +let showSteps = setting(/*LANG*/'steps'); let showHeartRate = setting('heartrate'); diff --git a/apps/clicompleteclk/settings.js b/apps/clicompleteclk/settings.js index 2df20ed3e..dfd37e902 100644 --- a/apps/clicompleteclk/settings.js +++ b/apps/clicompleteclk/settings.js @@ -52,3 +52,7 @@ '< Back': back, }); }); +, + '< Back': back, + }); +}); diff --git a/apps/configurable_clock/app.js b/apps/configurable_clock/app.js index 157d57741..afde21e1a 100644 --- a/apps/configurable_clock/app.js +++ b/apps/configurable_clock/app.js @@ -710,7 +710,7 @@ { Face:'1-12', colored:true, Hands:'rounded', withSeconds:true, - Foreground:'Theme', Background:'Theme', Seconds:'#FF0000' + Foreground:'Theme', Background:/*LANG*/'Theme', Seconds:'#FF0000' }, require('Storage').readJSON('configurable_clock.json', true) || {} ); @@ -855,8 +855,8 @@ activeLayout = null; g.setTheme({ - fg:(Settings.Foreground === 'Theme' ? Theme.fg : Settings.Foreground || '#000000'), - bg:(Settings.Background === 'Theme' ? Theme.bg : Settings.Background || '#FFFFFF') + fg:(Settings.Foreground === /*LANG*/'Theme' ? Theme.fg : Settings.Foreground || '#000000'), + bg:(Settings.Background === /*LANG*/'Theme' ? Theme.bg : Settings.Background || '#FFFFFF') }); g.clear(true); // also installs the current theme @@ -872,8 +872,8 @@ /**** renderClock ****/ function renderClock () { - g.setColor (Settings.Foreground === 'Theme' ? Theme.fg : Settings.Foreground || '#000000'); - g.setBgColor(Settings.Background === 'Theme' ? Theme.bg : Settings.Background || '#FFFFFF'); + g.setColor (Settings.Foreground === /*LANG*/'Theme' ? Theme.fg : Settings.Foreground || '#000000'); + g.setBgColor(Settings.Background === /*LANG*/'Theme' ? Theme.bg : Settings.Background || '#FFFFFF'); switch (Settings.Face) { case 'none': @@ -951,7 +951,7 @@ let HoursAngle = (Hours+(Minutes/60))/12 * twoPi - Pi; let MinutesAngle = (Minutes/60) * twoPi - Pi; - g.setColor(Settings.Foreground === 'Theme' ? Theme.fg : Settings.Foreground || '#000000'); + g.setColor(Settings.Foreground === /*LANG*/'Theme' ? Theme.fg : Settings.Foreground || '#000000'); switch (Settings.Hands) { case 'simple': @@ -968,10 +968,10 @@ transformPolygon(roundedMinuteHandPolygon, CenterX,CenterY, MinutesAngle); g.fillPoly(transformedPolygon); -// g.setColor(Settings.Foreground === 'Theme' ? Theme.fg || '#000000'); +// g.setColor(Settings.Foreground === /*LANG*/'Theme' ? Theme.fg || '#000000'); g.fillCircle(CenterX,CenterY, outerBoltRadius); - g.setColor(Settings.Background === 'Theme' ? Theme.bg : Settings.Background || '#FFFFFF'); + g.setColor(Settings.Background === /*LANG*/'Theme' ? Theme.bg : Settings.Background || '#FFFFFF'); g.drawCircle(CenterX,CenterY, outerBoltRadius); g.fillCircle(CenterX,CenterY, innerBoltRadius); break; @@ -986,7 +986,7 @@ } if (Settings.withSeconds) { - g.setColor(Settings.Seconds === 'Theme' ? Theme.fgH : Settings.Seconds || '#FF0000'); + g.setColor(Settings.Seconds === /*LANG*/'Theme' ? Theme.fgH : Settings.Seconds || '#FF0000'); let Seconds = now.getSeconds(); let SecondsAngle = (Seconds/60) * twoPi - Pi; @@ -1089,9 +1089,9 @@ let Seconds = (Changes.Seconds == null ? Settings.Seconds : Changes.Seconds); activeLayout = ColorsScreen; - activeLayout['Foreground'].bgCol = (Foreground === 'Theme' ? Theme.fg : Foreground); - activeLayout['Background'].bgCol = (Background === 'Theme' ? Theme.bg : Background); - activeLayout['Seconds'].bgCol = (Seconds === 'Theme' ? Theme.fgH : Seconds); + activeLayout['Foreground'].bgCol = (Foreground === /*LANG*/'Theme' ? Theme.fg : Foreground); + activeLayout['Background'].bgCol = (Background === /*LANG*/'Theme' ? Theme.bg : Background); + activeLayout['Seconds'].bgCol = (Seconds === /*LANG*/'Theme' ? Theme.fgH : Seconds); activeLayout.render(); } @@ -1123,12 +1123,12 @@ activeLayout['#FF00FF'].selected = (chosenColor === '#FF00FF'); activeLayout['#00FFFF'].selected = (chosenColor === '#00FFFF'); activeLayout['#FFFFFF'].selected = (chosenColor === '#FFFFFF'); - activeLayout['Theme'].selected = (chosenColor === 'Theme'); + activeLayout['Theme'].selected = (chosenColor === /*LANG*/'Theme'); activeLayout.render(); } function chooseColor (Control) { Bangle.buzz(); chosenColor = Control.id; refreshColorChoiceScreen(); } - function chooseThemeColor () { Bangle.buzz(); chosenColor = 'Theme'; refreshColorChoiceScreen(); } + function chooseThemeColor () { Bangle.buzz(); chosenColor = /*LANG*/'Theme'; refreshColorChoiceScreen(); } function applyColor () { Changes[ColorToChange] = chosenColor; @@ -1347,9 +1347,9 @@ Drawable(drawColorChoice, { id:'#00FFFF', common:ColorChoice, col:'#00FFFF' }), ], filly:1 }, { type:'h', c:[ - Label('use Theme:', { id:'Theme', common:leftAligned, pad:4 }), + Label('use Theme:', { id:/*LANG*/'Theme', common:leftAligned, pad:4 }), { width:10 }, - Drawable(drawColorChoice, { id:'Theme', common:ColorChoice, col:Theme.fg }), + Drawable(drawColorChoice, { id:/*LANG*/'Theme', common:ColorChoice, col:Theme.fg }), ], filly:1, onTouch:chooseThemeColor }, { height:4 }, { type:'h', c:[ diff --git a/apps/coretemp/settings.js b/apps/coretemp/settings.js index 3fc2dfbf2..11e5c1e8f 100644 --- a/apps/coretemp/settings.js +++ b/apps/coretemp/settings.js @@ -45,3 +45,7 @@ const menu = { E.showMenu(menu); }) +nu); +}) +nu); +}) diff --git a/apps/cscsensor/cscsensor.app.js b/apps/cscsensor/cscsensor.app.js index e2af0db16..03fc77aca 100644 --- a/apps/cscsensor/cscsensor.app.js +++ b/apps/cscsensor/cscsensor.app.js @@ -225,7 +225,7 @@ function connection_setup() { return device.gatt.connect(); }).then(function(ga) { gatt = ga; - E.showMessage("Connected"); + E.showMessage(/*LANG*/"Connected"); return gatt.getPrimaryService("1816"); }).then(function(s) { service = s; diff --git a/apps/cscsensor/settings.js b/apps/cscsensor/settings.js index d7a7d565d..fdbffd2f5 100644 --- a/apps/cscsensor/settings.js +++ b/apps/cscsensor/settings.js @@ -43,3 +43,5 @@ } E.showMenu(menu); }) +nu); +}) diff --git a/apps/dane_tcr/app.js b/apps/dane_tcr/app.js index aa25379d3..ce75c55cb 100644 --- a/apps/dane_tcr/app.js +++ b/apps/dane_tcr/app.js @@ -244,7 +244,7 @@ function run(){ Bangle.setLCDMode(); g.clear(); g.flip(); - E.showMessage("Loading..."); + E.showMessage(/*LANG*/"Loading..."); load(app.src); } diff --git a/apps/dane_tcr/settings.js b/apps/dane_tcr/settings.js index 9d28d1b30..1fd20a2c8 100644 --- a/apps/dane_tcr/settings.js +++ b/apps/dane_tcr/settings.js @@ -56,4 +56,6 @@ }, '< Back': back }); +});: back + }); }); \ No newline at end of file diff --git a/apps/daysl/app.js b/apps/daysl/app.js index 50695328e..0bb11a77b 100644 --- a/apps/daysl/app.js +++ b/apps/daysl/app.js @@ -46,7 +46,7 @@ function showMenu() { updateSettings(); } }, - 'Year': { + /*LANG*/'Year': { value: settings.year, step: 1, onchange: v => { diff --git a/apps/dsdrelay/dsdrelay.app.js b/apps/dsdrelay/dsdrelay.app.js index 18e7293aa..4a34a47fc 100644 --- a/apps/dsdrelay/dsdrelay.app.js +++ b/apps/dsdrelay/dsdrelay.app.js @@ -59,7 +59,7 @@ function parseDevice(d) { g.clearRect(0, 60, 239, 239).setFontAlign(0, 0, 0).setColor(0, 1, 0).drawString("Found device", 120, 120).flip(); device.gatt.connect().then(function(ga) { gatt = ga; - g.clearRect(0, 60, 239, 239).setFontAlign(0, 0, 0).setColor(0, 1, 0).drawString("Connected", 120, 120).flip(); + g.clearRect(0, 60, 239, 239).setFontAlign(0, 0, 0).setColor(0, 1, 0).drawString(/*LANG*/"Connected", 120, 120).flip(); return gatt.getPrimaryService("FFE0"); }).then(function(s) { service = s; diff --git a/apps/dtlaunch/settings-b1.js b/apps/dtlaunch/settings-b1.js index f3101da16..41e9ce0ba 100644 --- a/apps/dtlaunch/settings-b1.js +++ b/apps/dtlaunch/settings-b1.js @@ -31,3 +31,7 @@ } }); }) + + } + }); +}) diff --git a/apps/dtlaunch/settings-b2.js b/apps/dtlaunch/settings-b2.js index 7f667d213..ad30eba04 100644 --- a/apps/dtlaunch/settings-b2.js +++ b/apps/dtlaunch/settings-b2.js @@ -40,3 +40,8 @@ } }); }) + + } + } + }); +}) diff --git a/apps/ffcniftya/settings.js b/apps/ffcniftya/settings.js index 46e4ef5aa..d57b6b20c 100644 --- a/apps/ffcniftya/settings.js +++ b/apps/ffcniftya/settings.js @@ -20,4 +20,5 @@ } } }); +}) }); }) \ No newline at end of file diff --git a/apps/ffcniftyb/app.js b/apps/ffcniftyb/app.js index 75d217ab4..9456d3421 100644 --- a/apps/ffcniftyb/app.js +++ b/apps/ffcniftyb/app.js @@ -2,7 +2,7 @@ const locale = require("locale"); const storage = require('Storage'); const is12Hour = (storage.readJSON("setting.json", 1) || {})["12hour"]; -const color = (storage.readJSON("ffcniftyb.json", 1) || {})["color"] || 63488 /* red */; +const color = (storage.readJSON("ffcniftyb.json", 1) || {})[/*LANG*/"color"] || 63488 /* red */; /* Clock *********************************************/ diff --git a/apps/fileman/fileman.app.js b/apps/fileman/fileman.app.js index 6a3c5598d..cd0948311 100644 --- a/apps/fileman/fileman.app.js +++ b/apps/fileman/fileman.app.js @@ -102,3 +102,5 @@ function get_pruned_file_list() { files = get_pruned_file_list(); drawMenu(); +Menu(); +Menu(); diff --git a/apps/files/files.js b/apps/files/files.js index e7b42c101..827be1d38 100644 --- a/apps/files/files.js +++ b/apps/files/files.js @@ -225,3 +225,4 @@ function sortHelper() { } showMainMenu(); +Menu(); diff --git a/apps/gallifr/settings.js b/apps/gallifr/settings.js index feb6b0ffc..8aa3f419b 100644 --- a/apps/gallifr/settings.js +++ b/apps/gallifr/settings.js @@ -31,3 +31,7 @@ }; E.showMenu(appMenu) }) +enu) +}) +enu(appMenu) +}) diff --git a/apps/gbmusic/settings.js b/apps/gbmusic/settings.js index ae013fda5..aa35b4157 100644 --- a/apps/gbmusic/settings.js +++ b/apps/gbmusic/settings.js @@ -43,3 +43,5 @@ E.showMenu(menu); }); +u); +}); diff --git a/apps/gbridge/settings.js b/apps/gbridge/settings.js index f9c7cde90..5b7cce40c 100644 --- a/apps/gbridge/settings.js +++ b/apps/gbridge/settings.js @@ -47,3 +47,7 @@ E.showMenu(mainmenu); }) +nu); +}) +u(mainmenu); +}) diff --git a/apps/gpsinfo/gps-info.js b/apps/gpsinfo/gps-info.js index 0eca2ccf5..a6e21af0d 100644 --- a/apps/gpsinfo/gps-info.js +++ b/apps/gpsinfo/gps-info.js @@ -5,7 +5,7 @@ function satelliteImage() { var Layout = require("Layout"); var layout; //Bangle.setGPSPower(1, "app"); -E.showMessage("Loading..."); // avoid showing rubbish on screen +E.showMessage(/*LANG*/"Loading..."); // avoid showing rubbish on screen var lastFix = { fix: -1, diff --git a/apps/gpsrec/app.js b/apps/gpsrec/app.js index 833a816ea..712567be5 100644 --- a/apps/gpsrec/app.js +++ b/apps/gpsrec/app.js @@ -251,7 +251,7 @@ function plotTrack(info) { g.drawString(require("locale").distance(dist),g.getWidth() / 2, g.getHeight() - 20); g.setFont("6x8",2); g.setFontAlign(0,0,3); - g.drawString("Back",g.getWidth() - 10, g.getHeight()/2); + g.drawString(/*LANG*/"Back",g.getWidth() - 10, g.getHeight()/2); setWatch(function() { viewTrack(info.fn, info); }, global.BTN3||BTN1); @@ -335,7 +335,7 @@ function plotGraph(info, style) { }); g.setFont("6x8",2); g.setFontAlign(0,0,3); - g.drawString("Back",g.getWidth() - 10, g.getHeight() - 40); + g.drawString(/*LANG*/"Back",g.getWidth() - 10, g.getHeight() - 40); setWatch(function() { viewTrack(info.fn, info); }, global.BTN3||BTN1); diff --git a/apps/gpstime/gpstime.js b/apps/gpstime/gpstime.js index 8c80953fa..d22783e3a 100644 --- a/apps/gpstime/gpstime.js +++ b/apps/gpstime/gpstime.js @@ -40,7 +40,7 @@ var layout = new Layout( { {type:"txt", fillx:1, filly:1, font:"6x8:2", label:"---", id:"gpstime" } ]},{lazy:true, btns: [ { label : "Set", cb : setGPSTime}, - { label : "Back", cb : ()=>load() } + { label : /*LANG*/"Back", cb : ()=>load() } ]}); diff --git a/apps/hardalarm/app.js b/apps/hardalarm/app.js index 61467b421..2159f1711 100644 --- a/apps/hardalarm/app.js +++ b/apps/hardalarm/app.js @@ -110,3 +110,4 @@ function editAlarm(alarmIndex) { } showMainMenu(); +showMainMenu(); diff --git a/apps/hardalarm/hardalarm.js b/apps/hardalarm/hardalarm.js index e33bd39cc..b9ce731d4 100644 --- a/apps/hardalarm/hardalarm.js +++ b/apps/hardalarm/hardalarm.js @@ -40,7 +40,7 @@ function showNumberPicker(currentGuess, randomNum) { function showPrompt(msg, buzzCount, alarm) { E.showPrompt(msg,{ title:"STAY AWAKE!", - buttons : {"Sleep":0,"Stop":1} // default is sleep so it'll come back in 10 mins + buttons : {/*LANG*/"Sleep":0,"Stop":1} // default is sleep so it'll come back in 10 mins }).then(function(choice) { buzzCount = 0; if (choice==0) { diff --git a/apps/health/app.js b/apps/health/app.js index 7a55eec27..3eb72db5b 100644 --- a/apps/health/app.js +++ b/apps/health/app.js @@ -255,3 +255,7 @@ function clearButton() { Bangle.loadWidgets(); Bangle.drawWidgets(); menuMain(); +Main(); +ts(); +Bangle.drawWidgets(); +menuMain(); diff --git a/apps/heart/app.js b/apps/heart/app.js index 5428ea06b..e475fd7f3 100644 --- a/apps/heart/app.js +++ b/apps/heart/app.js @@ -310,3 +310,4 @@ function graphRecord(n) { showMainMenu(); // vim: et ts=2 sw=2 +=2 sw=2 diff --git a/apps/hidmsic/hid-music.js b/apps/hidmsic/hid-music.js index db81744f3..60aa2cf08 100644 --- a/apps/hidmsic/hid-music.js +++ b/apps/hidmsic/hid-music.js @@ -5,7 +5,7 @@ const settings = storage.readJSON('setting.json',1) || { HID: false }; var sendHid, next, prev, toggle, up, down, profile; if (settings.HID=="kbmedia") { - profile = 'Music'; + profile = /*LANG*/'Music'; sendHid = function (code, cb) { try { NRF.sendHIDReport([1,code], () => { diff --git a/apps/hidmsicswipe/hidmsicswipe.js b/apps/hidmsicswipe/hidmsicswipe.js index e0fc760a4..7da81900b 100644 --- a/apps/hidmsicswipe/hidmsicswipe.js +++ b/apps/hidmsicswipe/hidmsicswipe.js @@ -7,7 +7,7 @@ var lasty = 0; var lastx = 0; if (settings.HID=="kbmedia") { - profile = 'Music'; + profile = /*LANG*/'Music'; sendHid = function (code, cb) { try { NRF.sendHIDReport([1,code], () => { @@ -36,8 +36,8 @@ if (settings.HID=="kbmedia") { function drawApp() { g.clear(); - if(Bangle.isLocked()==false) E.showMessage('Swipe', 'Music'); - else E.showMessage('Locked', 'Music'); + if(Bangle.isLocked()==false) E.showMessage('Swipe', /*LANG*/'Music'); + else E.showMessage('Locked', /*LANG*/'Music'); } if (next) { diff --git a/apps/hourstrike/app.js b/apps/hourstrike/app.js index 9169b5def..dc81d2835 100644 --- a/apps/hourstrike/app.js +++ b/apps/hourstrike/app.js @@ -38,3 +38,4 @@ function showMainMenu() { } showMainMenu(); +Menu(); diff --git a/apps/hralarm/settings.js b/apps/hralarm/settings.js index 3158ab8b7..d6f629ac4 100644 --- a/apps/hralarm/settings.js +++ b/apps/hralarm/settings.js @@ -55,3 +55,5 @@ } }); }) + }); +}) diff --git a/apps/intervalTimer/app.js b/apps/intervalTimer/app.js index fd57dbe2b..906a8f8e0 100644 --- a/apps/intervalTimer/app.js +++ b/apps/intervalTimer/app.js @@ -172,7 +172,7 @@ function setNumSets(){ type:"v", c: [ {type:"txt", font:"6x8:2", label:"Number Sets", id:"title" }, {type:"txt", font:"30%", pad: 20, label: numSets, id:"value" }, - {type:"btn", font:"6x8:2", label:"Back", cb: l => { + {type:"btn", font:"6x8:2", label:/*LANG*/"Back", cb: l => { setRestTime(); } } @@ -217,7 +217,7 @@ function setRestTime(){ type:"v", c: [ {type:"txt", font:"6x8:2", label:"Rest Time", id:"title" }, {type:"txt", font:"30%", pad: 20, label: restTime, id:"value" }, - {type:"btn", font:"6x8:2", label:"Back", cb: l => { + {type:"btn", font:"6x8:2", label:/*LANG*/"Back", cb: l => { setActiveTime(); } } diff --git a/apps/intervals/intervals.app.js b/apps/intervals/intervals.app.js index da436b104..c0f368687 100644 --- a/apps/intervals/intervals.app.js +++ b/apps/intervals/intervals.app.js @@ -152,7 +152,7 @@ function showMenu() "Work seconds" : { value : settings.workseg,min:0,max:59,step:5,onchange : v => { settings.workseg=v; } }, "Rest minutes" : { value : settings.restmin,min:0,max:59,step:1,onchange : v => { settings.restmin=v; } }, "Rest seconds" : { value : settings.restseg,min:0,max:59,step:5,onchange : v => { settings.restseg=v; } }, - "Signal type" : { value : settings.buzz,format : v => v?"Buzz":"Beep",onchange : v => { settings.buzz=v; }} + "Signal type" : { value : settings.buzz,format : v => v?"Buzz":/*LANG*/"Beep",onchange : v => { settings.buzz=v; }} }; E.showMenu(mainmenu); diff --git a/apps/ios/boot.js b/apps/ios/boot.js index 50286c4a6..f95bd6839 100644 --- a/apps/ios/boot.js +++ b/apps/ios/boot.js @@ -132,7 +132,7 @@ E.on('notify',msg=>{ // Apple media service E.on('AMS',a=>{ function push(m) { - var msg = { t : "modify", id : "music", title:"Music" }; + var msg = { t : "modify", id : "music", title:/*LANG*/"Music" }; if (a.id=="artist") msg.artist = m; else if (a.id=="album") msg.album = m; else if (a.id=="title") msg.track = m; diff --git a/apps/jbm8b/app.js b/apps/jbm8b/app.js index 53baa32e3..bb77b1303 100644 --- a/apps/jbm8b/app.js +++ b/apps/jbm8b/app.js @@ -2,12 +2,12 @@ const affirmative = [ 'It is\ncertain.', 'It is\ndicededly\nso.', 'Without\na doubt.', - 'Yes\ndefinitely.', + /*LANG*/'Yes\ndefinitely.', 'You may\nrely\non it.', 'As I see,\nit yes.', 'Most\nlikely.', 'Outlook\ngood.', - 'Yes.', + /*LANG*/'Yes.', 'Signs point\nto yes.' ]; const nonCommittal = [ diff --git a/apps/largeclock/settings.js b/apps/largeclock/settings.js index f996666ab..729c417c8 100644 --- a/apps/largeclock/settings.js +++ b/apps/largeclock/settings.js @@ -84,3 +84,5 @@ E.showMenu(mainMenu); }); +u); +}); diff --git a/apps/lcars/lcars.app.js b/apps/lcars/lcars.app.js index c020c49e8..f430c1c43 100644 --- a/apps/lcars/lcars.app.js +++ b/apps/lcars/lcars.app.js @@ -3,7 +3,7 @@ const locale = require('locale'); const storage = require('Storage') let settings = { alarm: -1, - dataRow1: "Steps", + dataRow1: /*LANG*/"Steps", dataRow2: "Temp", dataRow3: "Battery" }; @@ -151,7 +151,7 @@ function _drawData(key, y, c){ var value = "ERR"; var should_print= true; - if(key == "STEPS"){ + if(key == /*LANG*/"STEPS"){ text = "STEP"; value = getSteps(); diff --git a/apps/lcars/lcars.settings.js b/apps/lcars/lcars.settings.js index 076dea4d1..4f2637af1 100644 --- a/apps/lcars/lcars.settings.js +++ b/apps/lcars/lcars.settings.js @@ -52,3 +52,7 @@ } }); }) + + } + }); +}) diff --git a/apps/lightswitch/settings.js b/apps/lightswitch/settings.js index aac159148..13fe5dc39 100644 --- a/apps/lightswitch/settings.js +++ b/apps/lightswitch/settings.js @@ -107,8 +107,8 @@ step: 1 }, unlockSide: { - title: ["off", "left", "right", "top", "bottom", "front", "back"], - value: ["", "left", "right", "top", "bottom", "front", "back"] + title: ["off", "left", "right", "top", "bottom", "front", /*LANG*/"back"], + value: ["", "left", "right", "top", "bottom", "front", /*LANG*/"back"] }, tapOn: { title: ["on locked", "on unlocked", "always on"], diff --git a/apps/lightswitch/widget.js b/apps/lightswitch/widget.js index 119a114fe..c394df2e8 100644 --- a/apps/lightswitch/widget.js +++ b/apps/lightswitch/widget.js @@ -21,7 +21,7 @@ area: "tr", sortorder: 10, width: 23, - dragStatus: "off", + dragStatus: /*LANG*/"off", // internal function // // write settings to storage @@ -165,7 +165,7 @@ // on touch release remove drag listener and reset drag status to indicate stopped drag action if (!event.b) { Bangle.removeListener("drag", w.dragListener); - w.dragStatus = "off"; + w.dragStatus = /*LANG*/"off"; } // clear variables @@ -181,7 +181,7 @@ var w = WIDGETS.lightswitch; // skip all if drag action ongoing - if (w.dragStatus === "off") { + if (w.dragStatus === /*LANG*/"off") { // check if inside widget area if (!(!w || cursor.x < w.x || cursor.x > w.x + w.width || @@ -199,7 +199,7 @@ // clear drag timeout if (typeof w.dragStatus === "number") clearTimeout(w.dragStatus); // reset drag status to indicate stopped drag action - w.dragStatus = "off"; + w.dragStatus = /*LANG*/"off"; }, w.dragDelay, w); } // switch backlight diff --git a/apps/limelight/limelight.settings.js b/apps/limelight/limelight.settings.js index aacea2f86..a732d999a 100644 --- a/apps/limelight/limelight.settings.js +++ b/apps/limelight/limelight.settings.js @@ -75,4 +75,8 @@ }, } }); +}) + }, + } + }); }) diff --git a/apps/ltherm/app.js b/apps/ltherm/app.js index 7accae2ed..2cbf26e5f 100644 --- a/apps/ltherm/app.js +++ b/apps/ltherm/app.js @@ -20,6 +20,6 @@ const avg = []; setInterval(function() { drawTemperature(); }, 2000); -E.showMessage("Loading..."); +E.showMessage(/*LANG*/"Loading..."); Bangle.loadWidgets(); Bangle.drawWidgets(); diff --git a/apps/marioclock/marioclock-app.js b/apps/marioclock/marioclock-app.js index 6289a2568..20dc0814f 100644 --- a/apps/marioclock/marioclock-app.js +++ b/apps/marioclock/marioclock-app.js @@ -73,7 +73,7 @@ let lastTemp = 0; const phone = { get status() { - return NRF.getSecurityStatus().connected ? "Yes" : "No"; + return NRF.getSecurityStatus().connected ? /*LANG*/"Yes" : "No"; }, message: null, messageTimeout: null, diff --git a/apps/menuwheel/boot.js b/apps/menuwheel/boot.js index deb15264d..f5bfff498 100644 --- a/apps/menuwheel/boot.js +++ b/apps/menuwheel/boot.js @@ -14,7 +14,7 @@ E.showMenu = function(items) { // show "< Back" item (or similar) as button instead (i.e. remove from the menu) var back,backLbl; - for (var b of ['Back', 'Exit', 'Cancel']) { + for (var b of [/*LANG*/'Back', 'Exit', 'Cancel']) { if (!items[b] && items['< '+b]) b = '< '+b; back = items[b]; if (typeof back === "function") { diff --git a/apps/messages/app.js b/apps/messages/app.js index ec147daf8..05a02191c 100644 --- a/apps/messages/app.js +++ b/apps/messages/app.js @@ -98,7 +98,7 @@ function getMessageImage(msg) { if (s=="whatsapp") return atob("GBiBAAB+AAP/wAf/4A//8B//+D///H9//n5//nw//vw///x///5///4///8e//+EP3/APn/wPn/+/j///H//+H//8H//4H//wMB+AA=="); if (s=="wordfeud") return atob("GBgCWqqqqqqlf//////9v//////+v/////++v/////++v8///Lu+v8///L++v8///P/+v8v//P/+v9v//P/+v+fx/P/+v+Pk+P/+v/PN+f/+v/POuv/+v/Ofdv/+v/NvM//+v/I/Y//+v/k/k//+v/i/w//+v/7/6//+v//////+v//////+f//////9Wqqqqqql"); if (msg.id=="music") return atob("FhaBAH//+/////////////h/+AH/4Af/gB/+H3/7/f/v9/+/3/7+f/vB/w8H+Dwf4PD/x/////////////3//+A="); - if (msg.id=="back") return getBackImage(); + if (msg.id==/*LANG*/"back") return getBackImage(); return getNotificationImage(); } function getMessageImageCol(msg,def) { @@ -375,7 +375,7 @@ function checkMessages(options) { if (msg && msg.new) g.setBgColor(colBg); else g.setBgColor((idx&1) ? colSBg1 : colSBg2); g.clearRect(r.x,r.y,r.x+r.w-1,r.y+r.h-1).setColor(g.theme.fg); - if (idx==0) msg = {id:"back", title:"< Back"}; + if (idx==0) msg = {id:/*LANG*/"back", title:"< Back"}; if (!msg) return; var x = r.x+2, title = msg.title, body = msg.body; var img = getMessageImage(msg); diff --git a/apps/messages/settings.js b/apps/messages/settings.js index c865a37fb..ca64c692f 100644 --- a/apps/messages/settings.js +++ b/apps/messages/settings.js @@ -40,3 +40,5 @@ }; E.showMenu(mainmenu); }) +.showMenu(mainmenu); +}) diff --git a/apps/mysticclock/mystic-clock-settings.js b/apps/mysticclock/mystic-clock-settings.js index 2fa0c49c5..09aaf741e 100644 --- a/apps/mysticclock/mystic-clock-settings.js +++ b/apps/mysticclock/mystic-clock-settings.js @@ -39,3 +39,9 @@ E.showMenu(appMenu) }) +nu(appMenu) + +}) +nu) + +}) diff --git a/apps/mysticdock/mystic-dock-settings.js b/apps/mysticdock/mystic-dock-settings.js index 7bfda1c0f..55b25c6a4 100644 --- a/apps/mysticdock/mystic-dock-settings.js +++ b/apps/mysticdock/mystic-dock-settings.js @@ -46,3 +46,9 @@ E.showMenu(appMenu) }) +nu(appMenu) + +}) +nu) + +}) diff --git a/apps/mywelcome/settings.js b/apps/mywelcome/settings.js index cf7208d65..b3e276328 100644 --- a/apps/mywelcome/settings.js +++ b/apps/mywelcome/settings.js @@ -15,4 +15,6 @@ }, '< Back': back, }) +}) + }) }) diff --git a/apps/ncstart/start.js b/apps/ncstart/start.js index d2d713cb2..b34066376 100644 --- a/apps/ncstart/start.js +++ b/apps/ncstart/start.js @@ -29,7 +29,7 @@ function welcome() { setWatch(() => { clearInterval(i); clearWatch(); - E.showMessage('Loading...'); + E.showMessage(/*LANG*/'Loading...'); res(); }, BTN2, {repeat:false}); }); diff --git a/apps/numerals/numerals.settings.js b/apps/numerals/numerals.settings.js index ae321322a..ad56e7d04 100644 --- a/apps/numerals/numerals.settings.js +++ b/apps/numerals/numerals.settings.js @@ -32,7 +32,7 @@ "Date on touch": { value: 0|numeralsSettings.showDate, min:0,max:1, - format: v=>v?"On":"Off", + format: v=>v?"On":/*LANG*/"Off", onchange: v=> { numeralsSettings.showDate=v; updateSettings();} }, "< back": back diff --git a/apps/pastel/pastel.settings.js b/apps/pastel/pastel.settings.js index bf83fa7c2..a0570b292 100644 --- a/apps/pastel/pastel.settings.js +++ b/apps/pastel/pastel.settings.js @@ -54,3 +54,7 @@ } }) }) +, + } + }) +}) diff --git a/apps/pebble/pebble.app.js b/apps/pebble/pebble.app.js index 106e09b82..35f700762 100644 --- a/apps/pebble/pebble.app.js +++ b/apps/pebble/pebble.app.js @@ -12,7 +12,7 @@ const SETTINGS_FILE = "pebble.json"; let settings; function loadSettings() { - settings = require("Storage").readJSON(SETTINGS_FILE,1)|| {'bg': '#0f0', 'color': 'Green'}; + settings = require("Storage").readJSON(SETTINGS_FILE,1)|| {'bg': '#0f0', /*LANG*/'color': 'Green'}; } var img = require("heatshrink").decompress(atob("oFAwkEogA/AH4A/AH4A/AH4A/AE8AAAoeXoAfeDQUBmcyD7A+Dh///8QD649CiAfaHwUvD4sEHy0DDYIfEICg+Cn4fHICY+DD4nxcgojOHwgfEIAYfRCIQaDD4ZAFD5r7DH4//kAfRCIZ/GAAnwD5p9DX44fTHgYSBf4ofVDAQEBl4fFUAgfOXoQzBgIfFBAIfPP4RAEAoYAB+cRiK/SG4h/WIBAfXIA7CBAAswD55AHn6fUIBMCD65AHl4gCmcziAfQQJqfQQJpiDgk0IDXxQLRAEECaBM+QgRYRYgUIA0CD4ggSQJiDCiAKBICszAAswD55AHABKBVD7BAFABIqBD5pAFABPxD55AOD6BADiIAJQAyxLABwf/gaAPAH4A/AH4ARA==")); diff --git a/apps/pebble/pebble.settings.js b/apps/pebble/pebble.settings.js index ff408907d..a0e29320e 100644 --- a/apps/pebble/pebble.settings.js +++ b/apps/pebble/pebble.settings.js @@ -36,3 +36,5 @@ } }); }) + }); +}) diff --git a/apps/pebbled/pebbled.app.js b/apps/pebbled/pebbled.app.js index bbe98823f..378a3878d 100644 --- a/apps/pebbled/pebbled.app.js +++ b/apps/pebbled/pebbled.app.js @@ -12,7 +12,7 @@ const SETTINGS_FILE = "pebbleDistance.json"; let settings; function loadSettings() { - settings = require("Storage").readJSON(SETTINGS_FILE,1)|| {'bg': '#0f0', 'color': 'Green', 'avStep': 0.75}; + settings = require("Storage").readJSON(SETTINGS_FILE,1)|| {'bg': '#0f0', /*LANG*/'color': 'Green', 'avStep': 0.75}; } var img = require("heatshrink").decompress(atob("oFAwkEogA/AH4A/AH4A/AH4A/AE8AAAoeXoAfeDQUBmcyD7A+Dh///8QD649CiAfaHwUvD4sEHy0DDYIfEICg+Cn4fHICY+DD4nxcgojOHwgfEIAYfRCIQaDD4ZAFD5r7DH4//kAfRCIZ/GAAnwD5p9DX44fTHgYSBf4ofVDAQEBl4fFUAgfOXoQzBgIfFBAIfPP4RAEAoYAB+cRiK/SG4h/WIBAfXIA7CBAAswD55AHn6fUIBMCD65AHl4gCmcziAfQQJqfQQJpiDgk0IDXxQLRAEECaBM+QgRYRYgUIA0CD4ggSQJiDCiAKBICszAAswD55AHABKBVD7BAFABIqBD5pAFABPxD55AOD6BADiIAJQAyxLABwf/gaAPAH4A/AH4ARA==")); diff --git a/apps/pebbled/pebbled.settings.js b/apps/pebbled/pebbled.settings.js index d6c84d5d1..4ca1b9612 100644 --- a/apps/pebbled/pebbled.settings.js +++ b/apps/pebbled/pebbled.settings.js @@ -45,4 +45,7 @@ } } }); +}); + } + }); }); diff --git a/apps/planetarium/settings.js b/apps/planetarium/settings.js index caadb4016..d1d83d3a2 100644 --- a/apps/planetarium/settings.js +++ b/apps/planetarium/settings.js @@ -28,4 +28,5 @@ }}, }; E.showMenu(appMenu) + })E.showMenu(appMenu) }) \ No newline at end of file diff --git a/apps/presentor/app.js b/apps/presentor/app.js index 6b7450a0c..d553e4d8a 100644 --- a/apps/presentor/app.js +++ b/apps/presentor/app.js @@ -106,7 +106,7 @@ let mainLayout = new Layout({ type: 'txt', font: '15%', label: '00:00', - id: 'Timer', + id: /*LANG*/'Timer', halign: 1, pad: 3 } diff --git a/apps/ptlaunch/app.js b/apps/ptlaunch/app.js index 5db3a335b..18d355dbf 100644 --- a/apps/ptlaunch/app.js +++ b/apps/ptlaunch/app.js @@ -58,7 +58,7 @@ var showMainMenu = () => { showScrollerContainingAppsWithPatterns().then((selected) => { var pattern = selected.pattern; var appName = selected.appName; - if (pattern === "back") { + if (pattern === /*LANG*/"back") { showMainMenu(); } else { E.showPrompt(appName + "\n\npattern:\n" + pattern, { @@ -309,7 +309,7 @@ var showScrollerContainingAppsWithPatterns = () => { }, select: (i) => { log("selected: " + i); - var pattern = "back"; + var pattern = /*LANG*/"back"; var appName = ""; if (i > 0) { var storedPattern = storedPatternsArray[i - 1]; diff --git a/apps/puzzle15/puzzle15.app.js b/apps/puzzle15/puzzle15.app.js index eec21933c..a19494a68 100644 --- a/apps/puzzle15/puzzle15.app.js +++ b/apps/puzzle15/puzzle15.app.js @@ -63,7 +63,7 @@ var startWith; /* For development purposes require('Storage').writeJSON(SETTINGSFILE, { - splashMode: "off", + splashMode: /*LANG*/"off", startWith: "5x5", }); /* */ @@ -622,9 +622,9 @@ function framedText(text, x, y, textcol, framecol) { } // Show the splash screen at program start, call afterSplash afterwards. -// If spash mode is "off", call afterSplash directly. +// If spash mode is /*LANG*/"off", call afterSplash directly. function showSplash(afterSplash) { - if (splashMode === "off") + if (splashMode === /*LANG*/"off") afterSplash(); else { g.reset(); diff --git a/apps/puzzle15/puzzle15.settings.js b/apps/puzzle15/puzzle15.settings.js index 352ec4315..6f7496c33 100644 --- a/apps/puzzle15/puzzle15.settings.js +++ b/apps/puzzle15/puzzle15.settings.js @@ -47,4 +47,4 @@ }); -// end of file \ No newline at end of file +// end of file of file \ No newline at end of file diff --git a/apps/qalarm/app.js b/apps/qalarm/app.js index ad071adf0..fffe880fc 100644 --- a/apps/qalarm/app.js +++ b/apps/qalarm/app.js @@ -269,3 +269,7 @@ function showEditTimerMenu(timerIndex) { } showMainMenu(); +wMenu(menu); +} + +showMainMenu(); diff --git a/apps/qmsched/app.js b/apps/qmsched/app.js index e05eff6a2..4cca0890b 100644 --- a/apps/qmsched/app.js +++ b/apps/qmsched/app.js @@ -267,3 +267,4 @@ function showOptionsMenu() { loadSettings(); showMainMenu(); +showMainMenu(); diff --git a/apps/rebble/rebble.app.js b/apps/rebble/rebble.app.js index d186ea8ec..de6facdc6 100644 --- a/apps/rebble/rebble.app.js +++ b/apps/rebble/rebble.app.js @@ -33,7 +33,7 @@ function loadLocation() { } function loadSettings() { - settings = require("Storage").readJSON(SETTINGS_FILE,1)|| {'bg': '#0f0', 'color': 'Green'}; + settings = require("Storage").readJSON(SETTINGS_FILE,1)|| {'bg': '#0f0', /*LANG*/'color': 'Green'}; } function extractTime(d){ diff --git a/apps/rebble/rebble.settings.js b/apps/rebble/rebble.settings.js index db3bab878..d002d8e11 100644 --- a/apps/rebble/rebble.settings.js +++ b/apps/rebble/rebble.settings.js @@ -36,3 +36,5 @@ } }); }) + }); +}) diff --git a/apps/recorder/app.js b/apps/recorder/app.js index 7075563aa..320f4d83d 100644 --- a/apps/recorder/app.js +++ b/apps/recorder/app.js @@ -305,7 +305,7 @@ function viewTrack(filename, info) { g.drawString(require("locale").distance(dist),g.getWidth() / 2, g.getHeight() - 20); g.setFont("6x8",2); g.setFontAlign(0,0,3); - g.drawString("Back",g.getWidth() - 10, g.getHeight() - 40); + g.drawString(/*LANG*/"Back",g.getWidth() - 10, g.getHeight() - 40); setWatch(function() { viewTrack(info.fn, info); }, global.BTN3||BTN1); @@ -404,7 +404,7 @@ function viewTrack(filename, info) { }); g.setFont("6x8",2); g.setFontAlign(0,0,3); - g.drawString("Back",g.getWidth() - 10, g.getHeight() - 40); + g.drawString(/*LANG*/"Back",g.getWidth() - 10, g.getHeight() - 40); setWatch(function() { viewTrack(info.filename, info); }, global.BTN3||BTN1); diff --git a/apps/recorder/widget.js b/apps/recorder/widget.js index e10c99c0c..97b4e7208 100644 --- a/apps/recorder/widget.js +++ b/apps/recorder/widget.js @@ -99,8 +99,8 @@ steps:function() { var lastSteps = 0; return { - name : "Steps", - fields : ["Steps"], + name : /*LANG*/"Steps", + fields : [/*LANG*/"Steps"], getValues : () => { var c = Bangle.getStepCount(), r=[c-lastSteps]; lastSteps = c; diff --git a/apps/score/score.settings.js b/apps/score/score.settings.js index 88e367821..50ded8a69 100644 --- a/apps/score/score.settings.js +++ b/apps/score/score.settings.js @@ -217,3 +217,5 @@ }); })(); +; +})(); diff --git a/apps/sensible/sensible.js b/apps/sensible/sensible.js index 8ec7d93d4..63b5bc9e2 100644 --- a/apps/sensible/sensible.js +++ b/apps/sensible/sensible.js @@ -50,7 +50,7 @@ let barMenu = { "": { "title" : "- Barometer -" }, "State": { value: settings.isBarEnabled, - format: v => v ? "On" : "Off", + format: v => v ? "On" : /*LANG*/"Off", onchange: v => { updateSetting('isBarEnabled', v); } }, "Altitude": { value: null }, @@ -62,7 +62,7 @@ let gpsMenu = { "": { "title" : "- GPS -" }, "State": { value: settings.isGpsEnabled, - format: v => v ? "On" : "Off", + format: v => v ? "On" : /*LANG*/"Off", onchange: v => { updateSetting('isGpsEnabled', v); } }, "Lat": { value: null }, @@ -76,7 +76,7 @@ let hrmMenu = { "": { "title" : "- Heart Rate -" }, "State": { value: settings.isHrmEnabled, - format: v => v ? "On" : "Off", + format: v => v ? "On" : /*LANG*/"Off", onchange: v => { updateSetting('isHrmEnabled', v); } }, "BPM": { value: null }, @@ -87,7 +87,7 @@ let magMenu = { "": { "title" : "- Magnetometer -" }, "State": { value: settings.isMagEnabled, - format: v => v ? "On" : "Off", + format: v => v ? "On" : /*LANG*/"Off", onchange: v => { updateSetting('isMagEnabled', v); } }, "x": { value: null }, diff --git a/apps/setting/settings.js b/apps/setting/settings.js index 65e076753..a82985111 100644 --- a/apps/setting/settings.js +++ b/apps/setting/settings.js @@ -704,7 +704,7 @@ function showAppSettings(app) { return showError(/*LANG*/'Invalid settings'); } try { - // pass showAppSettingsMenu as "back" argument + // pass showAppSettingsMenu as /*LANG*/"back" argument appSettings(()=>showAppSettingsMenu()); } catch (e) { console.log(`${app.name} settings error:`, e) @@ -713,3 +713,8 @@ function showAppSettings(app) { } showMainMenu(); +tings'); + } +} + +showMainMenu(); diff --git a/apps/simpletimer/app.js b/apps/simpletimer/app.js index e99761810..272c00f0a 100644 --- a/apps/simpletimer/app.js +++ b/apps/simpletimer/app.js @@ -116,7 +116,7 @@ function drawLabels() { g.setFont("6x8", 1); g.drawString("Reset (re)start", 230, 120); if (state != "started") // only when not runnung - g.drawString("Back", 230, 120); + g.drawString(/*LANG*/"Back", 230, 120); } function resetTimer(value) { diff --git a/apps/sleepphasealarm/app.js b/apps/sleepphasealarm/app.js index 39f9b59db..5bb2c006c 100644 --- a/apps/sleepphasealarm/app.js +++ b/apps/sleepphasealarm/app.js @@ -68,7 +68,7 @@ function drawApp() { if (alarmHour < 10) alarmHour = "0" + alarmHour; if (alarmMinute < 10) alarmMinute = "0" + alarmMinute; const s = "Alarm at " + alarmHour + ":" + alarmMinute + "\n\n"; //# make distinct to time - E.showMessage(s, "Sleep Phase Alarm"); + E.showMessage(s, /*LANG*/"Sleep Phase Alarm"); function drawTime() { if (Bangle.isLCDOn()) { @@ -125,7 +125,7 @@ if (nextAlarm !== undefined) { if (swest !== undefined) { if (Bangle.isLCDOn()) { - drawString(swest ? "Sleep" : "Awake", BANGLEJS2 ? 150 : 180); //# remove x, adjust height + drawString(swest ? /*LANG*/"Sleep" : "Awake", BANGLEJS2 ? 150 : 180); //# remove x, adjust height } } diff --git a/apps/smartibot/app.js b/apps/smartibot/app.js index 88ea5e276..8760bc59c 100644 --- a/apps/smartibot/app.js +++ b/apps/smartibot/app.js @@ -35,7 +35,7 @@ function findDevices() { m[dev.id.substr(0,17)] = () => startConnectChoose(dev); }); m["Search again"] = () => findDevices(); - m["Back"] = () => load(); + m[/*LANG*/"Back"] = () => load(); E.showMenu(m); } }, {timeout : 2000, filters : [{ name : "Espruino SMARTIBOT" }] }); @@ -46,7 +46,7 @@ function startConnectChoose(device) { "": {title:"Control Method"}, "Accelerometer" : () => startConnectAccel(device), "Button" : () => startConnectBtn(device), - "Back": () => load(), + /*LANG*/"Back": () => load(), }); } @@ -57,7 +57,7 @@ function startConnectBtn(device) { function(gatt, write) { function setMotors(val) { write(`\x10w(${val})\n`); } drawBGBtn(); - g.reset().setFont("6x8",2).setFontAlign(0,0,1).drawString("BACK", 230,200); + g.reset().setFont("6x8",2).setFontAlign(0,0,1).drawString(/*LANG*/"BACK", 230,200); var state = 0; var watches = [ setWatch(e=>setMotors(state = (state&0b0011) | (e.state<<2)), BTN4, {repeat:true, edge:0}), @@ -81,7 +81,7 @@ function startConnectAccel(device) { "\x03\x10function w(x,y,z,v){var a=analogWrite;a(D4,x);a(D6,y);a(D10,z);a(D11,v);}\n", function(gatt, write) { drawBGAccel(); - g.reset().setFont("6x8",2).setFontAlign(0,0,1).drawString("BACK", 230,200); + g.reset().setFont("6x8",2).setFontAlign(0,0,1).drawString(/*LANG*/"BACK", 230,200); Bangle.on("accel", function(a) { var v = [0,0,0,0]; if (a.z<-0.5) { diff --git a/apps/smtswch/app.js b/apps/smtswch/app.js index e8491a065..bab06be79 100644 --- a/apps/smtswch/app.js +++ b/apps/smtswch/app.js @@ -35,7 +35,7 @@ function loadPage(page) { g.setFont("Vector", 15); g.drawString(page.name, g.getWidth() / 2, 200); g.setFont("Vector", 40); - g.drawString(page.state ? "On" : "Off", g.getWidth() / 2, g.getHeight() / 2); + g.drawString(page.state ? "On" : /*LANG*/"Off", g.getWidth() / 2, g.getHeight() / 2); g.drawImage(storage.read(`${icon}.img`), g.getWidth() / 2 - 24, g.getHeight() / 2 - 24 - 50); } diff --git a/apps/sonicclk/app.js b/apps/sonicclk/app.js index eddb971f8..e027ed676 100644 --- a/apps/sonicclk/app.js +++ b/apps/sonicclk/app.js @@ -268,7 +268,7 @@ const settingsMenu = { "": { title: "Settings" }, "Active Mode": { value: settings.activeMode, - format: (v) => (v ? "On" : "Off"), + format: (v) => (v ? "On" : /*LANG*/"Off"), onchange: (v) => (settings.activeMode = v), }, "Twist Thresh": { diff --git a/apps/speedalt/settings.js b/apps/speedalt/settings.js index 63d77971e..1929b7283 100644 --- a/apps/speedalt/settings.js +++ b/apps/speedalt/settings.js @@ -87,3 +87,6 @@ E.showMenu(appMenu); }); +showMenu(appMenu); + +}); diff --git a/apps/speedalt2/settings.js b/apps/speedalt2/settings.js index babb03061..96c74e3c7 100644 --- a/apps/speedalt2/settings.js +++ b/apps/speedalt2/settings.js @@ -88,3 +88,6 @@ E.showMenu(appMenu); }); +showMenu(appMenu); + +}); diff --git a/apps/swp2clk/settings.js b/apps/swp2clk/settings.js index a97b51fab..f3ce8bff4 100644 --- a/apps/swp2clk/settings.js +++ b/apps/swp2clk/settings.js @@ -179,3 +179,5 @@ settings = readSettings(); showMainMenu(); }); +(); +}); diff --git a/apps/themesetter/app.js b/apps/themesetter/app.js index aa3c608cf..303cdba02 100644 --- a/apps/themesetter/app.js +++ b/apps/themesetter/app.js @@ -376,7 +376,7 @@ ] }, { height:4 }, { type:'h', c:[ - Button('Back', { common:halfWidthButton, onTouch:() => gotoScreen('DetailSelectionScreen') }), + Button(/*LANG*/'Back', { common:halfWidthButton, onTouch:() => gotoScreen('DetailSelectionScreen') }), Button('Preview', { common:halfWidthButton, onTouch:() => gotoScreen('ThemePreviewScreen') }) ], filly:1 }, ] @@ -399,7 +399,7 @@ ] }, { height:4 }, { type:'h', c:[ - Button('Back', { common:legible, pad:4, onTouch:() => gotoScreen('ColorSelectionScreen') }) + Button(/*LANG*/'Back', { common:legible, pad:4, onTouch:() => gotoScreen('ColorSelectionScreen') }) ], filly:1 } ] }); diff --git a/apps/thermomF/app.js b/apps/thermomF/app.js index 2961e1efc..ac754d448 100644 --- a/apps/thermomF/app.js +++ b/apps/thermomF/app.js @@ -23,6 +23,6 @@ setInterval(function() { drawTemperature(); }, 20000); drawTemperature(); -E.showMessage("Loading..."); +E.showMessage(/*LANG*/"Loading..."); Bangle.loadWidgets(); Bangle.drawWidgets(); \ No newline at end of file diff --git a/apps/timerclk/alarm.alert.js b/apps/timerclk/alarm.alert.js index f4b61822a..133cc5118 100644 --- a/apps/timerclk/alarm.alert.js +++ b/apps/timerclk/alarm.alert.js @@ -9,8 +9,8 @@ function showAlarm(alarm) { Bangle.loadWidgets(); Bangle.drawWidgets(); Bangle.setLocked(false); - E.showPrompt("Alarm!",{ - title:"ALARM!", + E.showPrompt(/*LANG*/"Alarm!",{ + title:/*LANG*/"ALARM!", buttons : {/*LANG*/"Ok":true} }).then(function(ok) { buzzCount = 0; diff --git a/apps/timerclk/settings.js b/apps/timerclk/settings.js index 556dded98..a596ca6da 100644 --- a/apps/timerclk/settings.js +++ b/apps/timerclk/settings.js @@ -290,3 +290,5 @@ }; E.showMenu(mainMenu); }); +showMenu(mainMenu); +}); diff --git a/apps/torch/app.js b/apps/torch/app.js index 864efb883..071de5d46 100644 --- a/apps/torch/app.js +++ b/apps/torch/app.js @@ -2,7 +2,7 @@ const SETTINGS_FILE = "torch.json"; let settings; function loadSettings() { - settings = require("Storage").readJSON(SETTINGS_FILE,1)|| {'bg': '#FFFFFF', 'color': 'White'}; + settings = require("Storage").readJSON(SETTINGS_FILE,1)|| {'bg': '#FFFFFF', /*LANG*/'color': 'White'}; } loadSettings(); diff --git a/apps/torch/settings.js b/apps/torch/settings.js index 8dd6d1854..a9ac09565 100644 --- a/apps/torch/settings.js +++ b/apps/torch/settings.js @@ -36,3 +36,5 @@ } }); }) + }); +}) diff --git a/apps/toucher/app.js b/apps/toucher/app.js index aab50fbda..19310592e 100644 --- a/apps/toucher/app.js +++ b/apps/toucher/app.js @@ -255,7 +255,7 @@ function run(){ if (process.env.HWVERSION == 1) Bangle.setLCDMode(); g.clear(); g.flip(); - E.showMessage("Loading..."); + E.showMessage(/*LANG*/"Loading..."); load(app.src); } diff --git a/apps/toucher/settings.js b/apps/toucher/settings.js index 51275d846..df3b83b0f 100644 --- a/apps/toucher/settings.js +++ b/apps/toucher/settings.js @@ -57,3 +57,6 @@ '< Back': back }); }); + back + }); +}); diff --git a/apps/vectorclock/settings.js b/apps/vectorclock/settings.js index 86cbad1e5..22339d2bf 100644 --- a/apps/vectorclock/settings.js +++ b/apps/vectorclock/settings.js @@ -53,3 +53,5 @@ "< Back" : () => back(), }); }) + }); +}) diff --git a/apps/viewstl/viewstl.min.js b/apps/viewstl/viewstl.min.js index 77469042c..82975bbf9 100644 --- a/apps/viewstl/viewstl.min.js +++ b/apps/viewstl/viewstl.min.js @@ -216,7 +216,7 @@ function loadFile(fn) { Bangle.setLCDMode("direct"); g.clear(); E.showMenu(); - E.showMessage("Loading...", fn); + E.showMessage(/*LANG*/"Loading...", fn); readSTL(fn); zDist = 5*largestExtent(points); g.clear(); diff --git a/apps/walkersclock/app.js b/apps/walkersclock/app.js index 8a5e826c4..e18879e01 100644 --- a/apps/walkersclock/app.js +++ b/apps/walkersclock/app.js @@ -203,7 +203,7 @@ function drawInfo() { break; case FN_MODE_GPS: col = 0x07FF; // cyan - str = "GPS: " + (gpsPowerState ? "ON" : "OFF"); + str = "GPS: " + (gpsPowerState ? "ON" : /*LANG*/"OFF"); drawModeLine(str,col); return; case FN_MODE_GDISP: @@ -560,7 +560,7 @@ Bangle.on('lcdPower',function(on) { prevInfoStr = "on"; // forces are redraw drawAll(); } else { - prevInfoStr = "off"; // forces are redraw + prevInfoStr = /*LANG*/"off"; // forces are redraw drawInfo(); } }); diff --git a/apps/weather/settings.js b/apps/weather/settings.js index 7e2c043b9..ea171adcd 100644 --- a/apps/weather/settings.js +++ b/apps/weather/settings.js @@ -30,3 +30,5 @@ '< Back': back, }); }) + }); +}) diff --git a/apps/welcome/settings.js b/apps/welcome/settings.js index 27a322c7f..69e6769fd 100644 --- a/apps/welcome/settings.js +++ b/apps/welcome/settings.js @@ -16,4 +16,6 @@ }, '< Back': back, }) +}) + }) }) diff --git a/apps/widbatpc/settings.js b/apps/widbatpc/settings.js index b45fc6749..b62113ad7 100644 --- a/apps/widbatpc/settings.js +++ b/apps/widbatpc/settings.js @@ -76,4 +76,8 @@ }, } E.showMenu(menu) +}) + }, + } + E.showMenu(menu) }) diff --git a/apps/widbatpc/widget.js b/apps/widbatpc/widget.js index 529923386..b69ef25de 100644 --- a/apps/widbatpc/widget.js +++ b/apps/widbatpc/widget.js @@ -28,7 +28,7 @@ function loadSettings() { settings = require('Storage').readJSON(SETTINGS_FILE, 1) || {}; const DEFAULTS = { - 'color': 'By Level', + /*LANG*/'color': 'By Level', 'percentage': true, 'charger': true, 'hideifmorethan': 100, @@ -46,7 +46,7 @@ const levelColor = (l) => { // "charging" is very bright -> percentage is hard to read, "high" is ok(ish) const green = setting('percentage') ? COLORS.high : COLORS.charging; - switch (setting('color')) { + switch (setting(/*LANG*/'color')) { case 'Monochrome': return COLORS.white; // no chance of reading the percentage here :-( case 'Green': return green; case 'By Level': // fall through @@ -64,7 +64,7 @@ } }; const chargerColor = () => { - return (setting('color') === 'Monochrome') ? COLORS.white : COLORS.charging; + return (setting(/*LANG*/'color') === 'Monochrome') ? COLORS.white : COLORS.charging; }; // sets width, returns true if it changed @@ -112,7 +112,7 @@ return; } let gfx = g; - if (setting('color') === 'Monochrome') { + if (setting(/*LANG*/'color') === 'Monochrome') { // draw text inverted on battery level gfx = Graphics.createCallback(g.getWidth(),g.getHeight(), 1, (x,y) => {g.setPixel(x,y,x<=xl?0:-1);}); diff --git a/apps/widbatwarn/settings.js b/apps/widbatwarn/settings.js index 8d15c8458..ced8ad2f5 100644 --- a/apps/widbatwarn/settings.js +++ b/apps/widbatwarn/settings.js @@ -44,4 +44,5 @@ }, }; E.showMenu(menu); +});nu); }); \ No newline at end of file diff --git a/apps/widchime/settings.js b/apps/widchime/settings.js index 54e94546b..d4290d3d5 100644 --- a/apps/widchime/settings.js +++ b/apps/widchime/settings.js @@ -20,3 +20,5 @@ } E.showMenu(menu) }) +enu) +}) diff --git a/apps/widpedom/settings.js b/apps/widpedom/settings.js index 4455ce7d7..214ca6783 100644 --- a/apps/widpedom/settings.js +++ b/apps/widpedom/settings.js @@ -62,3 +62,6 @@ '< Back': back, }) }) +'< Back': back, + }) +}) diff --git a/apps/widpedom/widget.js b/apps/widpedom/widget.js index cc7fdb579..2135bea1a 100644 --- a/apps/widpedom/widget.js +++ b/apps/widpedom/widget.js @@ -9,7 +9,7 @@ function loadSettings() { const d = require('Storage').readJSON("wpedom.json", 1) || {}; settings = Object.assign({ - 'goal': 10000, + /*LANG*/'goal': 10000, 'progress': false, 'large': false, 'hide': false From 4ce761dab9adc73393e0e841732000dcb627856d Mon Sep 17 00:00:00 2001 From: copoer Date: Wed, 9 Feb 2022 19:52:49 -0400 Subject: [PATCH 14/59] Updated script to add more accurate string finding and auto translation --- bin/language_scan.js | 73 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 66 insertions(+), 7 deletions(-) diff --git a/bin/language_scan.js b/bin/language_scan.js index b2e98b5f3..7ad856245 100755 --- a/bin/language_scan.js +++ b/bin/language_scan.js @@ -5,6 +5,16 @@ outputs a list of strings that have been found. See https://github.com/espruino/BangleApps/issues/1311 */ +let AUTO_TRANSLATE = false; +let translate = false; +if (process.env.DEEPL) { + translate = require("translate"); + translate.engine = "deepl"; // Or "yandex", "libre", "deepl" + translate.key = process.env.DEEPL; + translate.url = "https://api-free.deepl.com/v2/translate"; + AUTO_TRANSLATE = true; +} + var IGNORE_STRINGS = [ "5x5","6x8","6x8:2","4x6","12x20","6x15","5x9Numeric7Seg", "Vector", // fonts "---","...","*","##","00","GPS","ram", @@ -12,7 +22,13 @@ var IGNORE_STRINGS = [ "sortorder","tl","tr", "function","object", // typeof=== "txt", // layout styles - "play","stop","pause", // music state + "play","stop","pause", "volumeup", "volumedown", // music state + "${hours}:${minutes}:${seconds}", "${hours}:${minutes}", + "BANGLEJS", + "NONE", + "fgH", "bgH", + "m/s", + "undefined", "kbmedia" ]; var IGNORE_FUNCTION_PARAMS = [ @@ -64,13 +80,20 @@ function isNotString(s, wasFnCall, wasArrayAccess) { if (wasArrayAccess && IGNORE_ARRAY_ACCESS.includes(wasArrayAccess)) return true; if (s=="Storage") console.log("isNotString",s,wasFnCall); - if (s.length<2) return true; // too short + if (s.length<3) return true; // too short if (s.length>40) return true; // too long if (s[0]=="#") return true; // a color - if (s.endsWith(".json") || s.endsWith(".img")) return true; // a filename + if (s.endsWith('.log') || s.endsWith('.js') || s.endsWith(".info") || s.endsWith(".csv") || s.endsWith(".json") || s.endsWith(".img") || s.endsWith(".txt")) return true; // a filename if (s.endsWith("=")) return true; // probably base64 if (s.startsWith("BTN")) return true; // button name if (IGNORE_STRINGS.includes(s)) return true; // one we know to ignore + if (!isNaN(parseFloat(s)) && isFinite(s)) return true; //is number + if (s.match(/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/)) return true; //roman number + if (!s.match(/.*[A-Z].*/i)) return true; // No letters + if (s.match(/.*[0-9].*/i)) return true; // No letters + if (s.match(/.*\(.*\).*/)) return true; // is function + if (s.match(/[A-Za-z]+[A-Z]([A-Z]|[a-z])*/)) return true; // is camel case + if (s.includes('_')) return true; return false; } @@ -115,6 +138,7 @@ apps.forEach((app,appIdx) => { if (previousString.includes("/*LANG*/")) { // translated! addString(translatedStrings, tok.value, shortFilePath); } else { // untranslated - potential to translate? + // filter out numbers if (!isNotString(tok.value, wasFnCall, wasArrayAccess)) { addString(untranslatedStrings, tok.value, shortFilePath); } @@ -137,6 +161,26 @@ untranslatedStrings.sort((a,b)=>a.uses - b.uses); translatedStrings.sort((a,b)=>a.uses - b.uses); +/* + * @description Add lang to start of string + * @param str string to add LANG to + * @param file file that string is found + * @returns void + */ +function applyLANG(str, file) { + fs.readFile(file, 'utf8', function (err,data) { + if (err) { + return console.log(err); + } + const regex = new RegExp(`(.*)((? translatedStrings.find(t=>t.str==e.str)).map(e=>`${JSON.stringify(e.str)} (${e.files.join(",")})`).join("\n")); +const wordsToAdd = untranslatedStrings.filter(e => translatedStrings.find(t=>t.str==e.str)); +// Uncomment to add LANG to all strings +//wordsToAdd.forEach(e => e.files.forEach(a => applyLANG(e.str, a))); +log(wordsToAdd.map(e=>`${JSON.stringify(e.str)} (${e.uses} uses)`).join("\n")); log(""); + //process.exit(1); log("Possible English Strings that could be translated"); log("================================================================="); @@ -158,15 +206,16 @@ log(""); //process.exit(1); let languages = JSON.parse(fs.readFileSync(`${BASEDIR}/lang/index.json`).toString()); -languages.forEach(language => { +for (let language of languages) { if (language.code == "en_GB") { console.log(`Ignoring ${language.code}`); - return; + continue; } console.log(`Scanning ${language.code}`); log(language.code); log("=========="); let translations = JSON.parse(fs.readFileSync(`${BASEDIR}/lang/${language.url}`).toString()); + let translationPromises = []; translatedStrings.forEach(translationItem => { if (!translations.GLOBAL[translationItem.str]) { console.log(`Missing GLOBAL translation for ${JSON.stringify(translationItem)}`); @@ -176,11 +225,21 @@ languages.forEach(language => { let appName = m[0].replaceAll("/", ""); if (translations[appName] && translations[appName][translationItem.str]) { console.log(` but LOCAL translation found in \"${appName}\"`); + } else if (AUTO_TRANSLATE && language.code !== "tr_TR") { // Auto Translate + translationPromises.push(new Promise(async (resolve) => { + const translation = await translate(translationItem.str, language.code.split("_")[0]); + console.log("Translating:", translationItem.str, translation); + translations.GLOBAL[translationItem.str] = translation; + resolve() + })) } } }); } }); + Promise.all(translationPromises).then(() => { + fs.writeFileSync(`${BASEDIR}/lang/${language.url}`, JSON.stringify(translations, null, 4)) + }); log(""); -}); +} console.log("Done."); From d54fdaa9e873e911db3ff1932d87316d1fb1a7de Mon Sep 17 00:00:00 2001 From: copoer Date: Wed, 9 Feb 2022 21:12:55 -0400 Subject: [PATCH 15/59] Fixed settings files --- apps/accellog/app.js | 2 -- apps/accelrec/app.js | 4 ---- apps/activepedom/settings.js | 2 -- apps/android/settings.js | 2 -- apps/antonclk/settings.js | 6 ------ apps/banglexercise/settings.js | 2 -- apps/bthrm/settings.js | 7 ------- apps/calendar/settings.js | 4 ---- apps/chronowid/app.js | 1 - apps/circlesclock/app.js | 4 ---- apps/circlesclock/settings.js | 4 ---- apps/clicompleteclk/settings.js | 4 ---- apps/coretemp/settings.js | 4 ---- apps/cscsensor/settings.js | 2 -- apps/dane_tcr/settings.js | 2 -- apps/dtlaunch/settings-b1.js | 4 ---- apps/dtlaunch/settings-b2.js | 5 ----- apps/ffcniftya/settings.js | 1 - apps/fileman/fileman.app.js | 2 -- apps/files/files.js | 1 - apps/gallifr/settings.js | 4 ---- apps/gbmusic/settings.js | 2 -- apps/gbridge/settings.js | 4 ---- apps/hardalarm/app.js | 1 - apps/health/app.js | 4 ---- apps/heart/app.js | 1 - apps/hourstrike/app.js | 1 - apps/hralarm/settings.js | 2 -- apps/largeclock/settings.js | 2 -- apps/lcars/lcars.settings.js | 4 ---- apps/limelight/limelight.settings.js | 4 ---- apps/messages/settings.js | 2 -- apps/mysticclock/mystic-clock-settings.js | 6 ------ apps/mysticdock/mystic-dock-settings.js | 6 ------ apps/mywelcome/settings.js | 2 -- apps/pastel/pastel.settings.js | 4 ---- apps/pebble/pebble.settings.js | 2 -- apps/pebbled/pebbled.settings.js | 3 --- apps/planetarium/settings.js | 1 - apps/puzzle15/puzzle15.settings.js | 2 +- apps/qalarm/app.js | 4 ---- apps/qmsched/app.js | 1 - apps/rebble/rebble.settings.js | 2 -- apps/score/score.settings.js | 2 -- apps/setting/settings.js | 5 ----- apps/speedalt/settings.js | 3 --- apps/speedalt2/settings.js | 3 --- apps/swp2clk/settings.js | 2 -- apps/timerclk/settings.js | 2 -- apps/torch/settings.js | 2 -- apps/toucher/settings.js | 3 --- apps/vectorclock/settings.js | 2 -- apps/weather/settings.js | 2 -- apps/welcome/settings.js | 2 -- apps/widbatpc/settings.js | 4 ---- apps/widbatwarn/settings.js | 1 - apps/widchime/settings.js | 2 -- apps/widpedom/settings.js | 3 --- bin/language_scan.js | 1 + 59 files changed, 2 insertions(+), 164 deletions(-) diff --git a/apps/accellog/app.js b/apps/accellog/app.js index c95ecab3d..c54c5002b 100644 --- a/apps/accellog/app.js +++ b/apps/accellog/app.js @@ -136,5 +136,3 @@ function startRecord(force) { Bangle.loadWidgets(); Bangle.drawWidgets(); showMenu(); -Menu(); -Menu(); diff --git a/apps/accelrec/app.js b/apps/accelrec/app.js index bd6688539..65f2a63ca 100644 --- a/apps/accelrec/app.js +++ b/apps/accelrec/app.js @@ -177,7 +177,3 @@ function showSaveMenu() { } showMenu(); - -} - -showMenu(); diff --git a/apps/activepedom/settings.js b/apps/activepedom/settings.js index 700637649..3b64d8735 100644 --- a/apps/activepedom/settings.js +++ b/apps/activepedom/settings.js @@ -110,5 +110,3 @@ }; E.showMenu(menu); }); -; -}); diff --git a/apps/android/settings.js b/apps/android/settings.js index 3e0e2b755..7c46a1fc0 100644 --- a/apps/android/settings.js +++ b/apps/android/settings.js @@ -28,5 +28,3 @@ }; E.showMenu(mainmenu); }) -u(mainmenu); -}) diff --git a/apps/antonclk/settings.js b/apps/antonclk/settings.js index 1a81a7f24..e452b02c7 100644 --- a/apps/antonclk/settings.js +++ b/apps/antonclk/settings.js @@ -105,9 +105,3 @@ }); // end of file -nu - E.showMenu(mainmenu); - -}); - -// end of file diff --git a/apps/banglexercise/settings.js b/apps/banglexercise/settings.js index 6b80e9035..3208c6eca 100644 --- a/apps/banglexercise/settings.js +++ b/apps/banglexercise/settings.js @@ -19,5 +19,3 @@ } }); }); -}); -}); diff --git a/apps/bthrm/settings.js b/apps/bthrm/settings.js index 117e54e3f..62d2e7ea3 100644 --- a/apps/bthrm/settings.js +++ b/apps/bthrm/settings.js @@ -243,12 +243,5 @@ } }; - E.showMenu(mainmenu); -}) - writeSettings("gracePeriodService",v); - } - } - }; - E.showMenu(mainmenu); }) diff --git a/apps/calendar/settings.js b/apps/calendar/settings.js index dfd2b6190..3c8f7d8e8 100644 --- a/apps/calendar/settings.js +++ b/apps/calendar/settings.js @@ -36,7 +36,3 @@ }); }) - }, - }); -}) - diff --git a/apps/chronowid/app.js b/apps/chronowid/app.js index 400d08eb5..ab363ed17 100644 --- a/apps/chronowid/app.js +++ b/apps/chronowid/app.js @@ -91,4 +91,3 @@ function showMenu() { } showMenu(); -enu(); diff --git a/apps/circlesclock/app.js b/apps/circlesclock/app.js index 5c2bf9478..0eb14b425 100644 --- a/apps/circlesclock/app.js +++ b/apps/circlesclock/app.js @@ -828,7 +828,3 @@ Bangle.loadWidgets(); draw(); setInterval(draw, 60000); -s(); - -draw(); -setInterval(draw, 60000); diff --git a/apps/circlesclock/settings.js b/apps/circlesclock/settings.js index 30754f136..e89ddf8f2 100644 --- a/apps/circlesclock/settings.js +++ b/apps/circlesclock/settings.js @@ -175,9 +175,5 @@ } - showMainMenu(); -}); - - showMainMenu(); }); diff --git a/apps/clicompleteclk/settings.js b/apps/clicompleteclk/settings.js index dfd37e902..2df20ed3e 100644 --- a/apps/clicompleteclk/settings.js +++ b/apps/clicompleteclk/settings.js @@ -52,7 +52,3 @@ '< Back': back, }); }); -, - '< Back': back, - }); -}); diff --git a/apps/coretemp/settings.js b/apps/coretemp/settings.js index 11e5c1e8f..3fc2dfbf2 100644 --- a/apps/coretemp/settings.js +++ b/apps/coretemp/settings.js @@ -45,7 +45,3 @@ const menu = { E.showMenu(menu); }) -nu); -}) -nu); -}) diff --git a/apps/cscsensor/settings.js b/apps/cscsensor/settings.js index fdbffd2f5..d7a7d565d 100644 --- a/apps/cscsensor/settings.js +++ b/apps/cscsensor/settings.js @@ -43,5 +43,3 @@ } E.showMenu(menu); }) -nu); -}) diff --git a/apps/dane_tcr/settings.js b/apps/dane_tcr/settings.js index 1fd20a2c8..9d28d1b30 100644 --- a/apps/dane_tcr/settings.js +++ b/apps/dane_tcr/settings.js @@ -56,6 +56,4 @@ }, '< Back': back }); -});: back - }); }); \ No newline at end of file diff --git a/apps/dtlaunch/settings-b1.js b/apps/dtlaunch/settings-b1.js index 41e9ce0ba..f3101da16 100644 --- a/apps/dtlaunch/settings-b1.js +++ b/apps/dtlaunch/settings-b1.js @@ -31,7 +31,3 @@ } }); }) - - } - }); -}) diff --git a/apps/dtlaunch/settings-b2.js b/apps/dtlaunch/settings-b2.js index ad30eba04..7f667d213 100644 --- a/apps/dtlaunch/settings-b2.js +++ b/apps/dtlaunch/settings-b2.js @@ -40,8 +40,3 @@ } }); }) - - } - } - }); -}) diff --git a/apps/ffcniftya/settings.js b/apps/ffcniftya/settings.js index d57b6b20c..46e4ef5aa 100644 --- a/apps/ffcniftya/settings.js +++ b/apps/ffcniftya/settings.js @@ -20,5 +20,4 @@ } } }); -}) }); }) \ No newline at end of file diff --git a/apps/fileman/fileman.app.js b/apps/fileman/fileman.app.js index cd0948311..6a3c5598d 100644 --- a/apps/fileman/fileman.app.js +++ b/apps/fileman/fileman.app.js @@ -102,5 +102,3 @@ function get_pruned_file_list() { files = get_pruned_file_list(); drawMenu(); -Menu(); -Menu(); diff --git a/apps/files/files.js b/apps/files/files.js index 827be1d38..e7b42c101 100644 --- a/apps/files/files.js +++ b/apps/files/files.js @@ -225,4 +225,3 @@ function sortHelper() { } showMainMenu(); -Menu(); diff --git a/apps/gallifr/settings.js b/apps/gallifr/settings.js index 8aa3f419b..feb6b0ffc 100644 --- a/apps/gallifr/settings.js +++ b/apps/gallifr/settings.js @@ -31,7 +31,3 @@ }; E.showMenu(appMenu) }) -enu) -}) -enu(appMenu) -}) diff --git a/apps/gbmusic/settings.js b/apps/gbmusic/settings.js index aa35b4157..ae013fda5 100644 --- a/apps/gbmusic/settings.js +++ b/apps/gbmusic/settings.js @@ -43,5 +43,3 @@ E.showMenu(menu); }); -u); -}); diff --git a/apps/gbridge/settings.js b/apps/gbridge/settings.js index 5b7cce40c..f9c7cde90 100644 --- a/apps/gbridge/settings.js +++ b/apps/gbridge/settings.js @@ -47,7 +47,3 @@ E.showMenu(mainmenu); }) -nu); -}) -u(mainmenu); -}) diff --git a/apps/hardalarm/app.js b/apps/hardalarm/app.js index 2159f1711..61467b421 100644 --- a/apps/hardalarm/app.js +++ b/apps/hardalarm/app.js @@ -110,4 +110,3 @@ function editAlarm(alarmIndex) { } showMainMenu(); -showMainMenu(); diff --git a/apps/health/app.js b/apps/health/app.js index 3eb72db5b..7a55eec27 100644 --- a/apps/health/app.js +++ b/apps/health/app.js @@ -255,7 +255,3 @@ function clearButton() { Bangle.loadWidgets(); Bangle.drawWidgets(); menuMain(); -Main(); -ts(); -Bangle.drawWidgets(); -menuMain(); diff --git a/apps/heart/app.js b/apps/heart/app.js index e475fd7f3..5428ea06b 100644 --- a/apps/heart/app.js +++ b/apps/heart/app.js @@ -310,4 +310,3 @@ function graphRecord(n) { showMainMenu(); // vim: et ts=2 sw=2 -=2 sw=2 diff --git a/apps/hourstrike/app.js b/apps/hourstrike/app.js index dc81d2835..9169b5def 100644 --- a/apps/hourstrike/app.js +++ b/apps/hourstrike/app.js @@ -38,4 +38,3 @@ function showMainMenu() { } showMainMenu(); -Menu(); diff --git a/apps/hralarm/settings.js b/apps/hralarm/settings.js index d6f629ac4..3158ab8b7 100644 --- a/apps/hralarm/settings.js +++ b/apps/hralarm/settings.js @@ -55,5 +55,3 @@ } }); }) - }); -}) diff --git a/apps/largeclock/settings.js b/apps/largeclock/settings.js index 729c417c8..f996666ab 100644 --- a/apps/largeclock/settings.js +++ b/apps/largeclock/settings.js @@ -84,5 +84,3 @@ E.showMenu(mainMenu); }); -u); -}); diff --git a/apps/lcars/lcars.settings.js b/apps/lcars/lcars.settings.js index 4f2637af1..076dea4d1 100644 --- a/apps/lcars/lcars.settings.js +++ b/apps/lcars/lcars.settings.js @@ -52,7 +52,3 @@ } }); }) - - } - }); -}) diff --git a/apps/limelight/limelight.settings.js b/apps/limelight/limelight.settings.js index a732d999a..aacea2f86 100644 --- a/apps/limelight/limelight.settings.js +++ b/apps/limelight/limelight.settings.js @@ -75,8 +75,4 @@ }, } }); -}) - }, - } - }); }) diff --git a/apps/messages/settings.js b/apps/messages/settings.js index ca64c692f..c865a37fb 100644 --- a/apps/messages/settings.js +++ b/apps/messages/settings.js @@ -40,5 +40,3 @@ }; E.showMenu(mainmenu); }) -.showMenu(mainmenu); -}) diff --git a/apps/mysticclock/mystic-clock-settings.js b/apps/mysticclock/mystic-clock-settings.js index 09aaf741e..2fa0c49c5 100644 --- a/apps/mysticclock/mystic-clock-settings.js +++ b/apps/mysticclock/mystic-clock-settings.js @@ -39,9 +39,3 @@ E.showMenu(appMenu) }) -nu(appMenu) - -}) -nu) - -}) diff --git a/apps/mysticdock/mystic-dock-settings.js b/apps/mysticdock/mystic-dock-settings.js index 55b25c6a4..7bfda1c0f 100644 --- a/apps/mysticdock/mystic-dock-settings.js +++ b/apps/mysticdock/mystic-dock-settings.js @@ -46,9 +46,3 @@ E.showMenu(appMenu) }) -nu(appMenu) - -}) -nu) - -}) diff --git a/apps/mywelcome/settings.js b/apps/mywelcome/settings.js index b3e276328..cf7208d65 100644 --- a/apps/mywelcome/settings.js +++ b/apps/mywelcome/settings.js @@ -15,6 +15,4 @@ }, '< Back': back, }) -}) - }) }) diff --git a/apps/pastel/pastel.settings.js b/apps/pastel/pastel.settings.js index a0570b292..bf83fa7c2 100644 --- a/apps/pastel/pastel.settings.js +++ b/apps/pastel/pastel.settings.js @@ -54,7 +54,3 @@ } }) }) -, - } - }) -}) diff --git a/apps/pebble/pebble.settings.js b/apps/pebble/pebble.settings.js index a0e29320e..ff408907d 100644 --- a/apps/pebble/pebble.settings.js +++ b/apps/pebble/pebble.settings.js @@ -36,5 +36,3 @@ } }); }) - }); -}) diff --git a/apps/pebbled/pebbled.settings.js b/apps/pebbled/pebbled.settings.js index 4ca1b9612..d6c84d5d1 100644 --- a/apps/pebbled/pebbled.settings.js +++ b/apps/pebbled/pebbled.settings.js @@ -45,7 +45,4 @@ } } }); -}); - } - }); }); diff --git a/apps/planetarium/settings.js b/apps/planetarium/settings.js index d1d83d3a2..caadb4016 100644 --- a/apps/planetarium/settings.js +++ b/apps/planetarium/settings.js @@ -28,5 +28,4 @@ }}, }; E.showMenu(appMenu) - })E.showMenu(appMenu) }) \ No newline at end of file diff --git a/apps/puzzle15/puzzle15.settings.js b/apps/puzzle15/puzzle15.settings.js index 6f7496c33..352ec4315 100644 --- a/apps/puzzle15/puzzle15.settings.js +++ b/apps/puzzle15/puzzle15.settings.js @@ -47,4 +47,4 @@ }); -// end of file of file \ No newline at end of file +// end of file \ No newline at end of file diff --git a/apps/qalarm/app.js b/apps/qalarm/app.js index fffe880fc..ad071adf0 100644 --- a/apps/qalarm/app.js +++ b/apps/qalarm/app.js @@ -269,7 +269,3 @@ function showEditTimerMenu(timerIndex) { } showMainMenu(); -wMenu(menu); -} - -showMainMenu(); diff --git a/apps/qmsched/app.js b/apps/qmsched/app.js index 4cca0890b..e05eff6a2 100644 --- a/apps/qmsched/app.js +++ b/apps/qmsched/app.js @@ -267,4 +267,3 @@ function showOptionsMenu() { loadSettings(); showMainMenu(); -showMainMenu(); diff --git a/apps/rebble/rebble.settings.js b/apps/rebble/rebble.settings.js index d002d8e11..db3bab878 100644 --- a/apps/rebble/rebble.settings.js +++ b/apps/rebble/rebble.settings.js @@ -36,5 +36,3 @@ } }); }) - }); -}) diff --git a/apps/score/score.settings.js b/apps/score/score.settings.js index 50ded8a69..88e367821 100644 --- a/apps/score/score.settings.js +++ b/apps/score/score.settings.js @@ -217,5 +217,3 @@ }); })(); -; -})(); diff --git a/apps/setting/settings.js b/apps/setting/settings.js index a82985111..cd8953aaa 100644 --- a/apps/setting/settings.js +++ b/apps/setting/settings.js @@ -713,8 +713,3 @@ function showAppSettings(app) { } showMainMenu(); -tings'); - } -} - -showMainMenu(); diff --git a/apps/speedalt/settings.js b/apps/speedalt/settings.js index 1929b7283..63d77971e 100644 --- a/apps/speedalt/settings.js +++ b/apps/speedalt/settings.js @@ -87,6 +87,3 @@ E.showMenu(appMenu); }); -showMenu(appMenu); - -}); diff --git a/apps/speedalt2/settings.js b/apps/speedalt2/settings.js index 96c74e3c7..babb03061 100644 --- a/apps/speedalt2/settings.js +++ b/apps/speedalt2/settings.js @@ -88,6 +88,3 @@ E.showMenu(appMenu); }); -showMenu(appMenu); - -}); diff --git a/apps/swp2clk/settings.js b/apps/swp2clk/settings.js index f3ce8bff4..a97b51fab 100644 --- a/apps/swp2clk/settings.js +++ b/apps/swp2clk/settings.js @@ -179,5 +179,3 @@ settings = readSettings(); showMainMenu(); }); -(); -}); diff --git a/apps/timerclk/settings.js b/apps/timerclk/settings.js index a596ca6da..556dded98 100644 --- a/apps/timerclk/settings.js +++ b/apps/timerclk/settings.js @@ -290,5 +290,3 @@ }; E.showMenu(mainMenu); }); -showMenu(mainMenu); -}); diff --git a/apps/torch/settings.js b/apps/torch/settings.js index a9ac09565..8dd6d1854 100644 --- a/apps/torch/settings.js +++ b/apps/torch/settings.js @@ -36,5 +36,3 @@ } }); }) - }); -}) diff --git a/apps/toucher/settings.js b/apps/toucher/settings.js index df3b83b0f..51275d846 100644 --- a/apps/toucher/settings.js +++ b/apps/toucher/settings.js @@ -57,6 +57,3 @@ '< Back': back }); }); - back - }); -}); diff --git a/apps/vectorclock/settings.js b/apps/vectorclock/settings.js index 22339d2bf..86cbad1e5 100644 --- a/apps/vectorclock/settings.js +++ b/apps/vectorclock/settings.js @@ -53,5 +53,3 @@ "< Back" : () => back(), }); }) - }); -}) diff --git a/apps/weather/settings.js b/apps/weather/settings.js index ea171adcd..7e2c043b9 100644 --- a/apps/weather/settings.js +++ b/apps/weather/settings.js @@ -30,5 +30,3 @@ '< Back': back, }); }) - }); -}) diff --git a/apps/welcome/settings.js b/apps/welcome/settings.js index 69e6769fd..27a322c7f 100644 --- a/apps/welcome/settings.js +++ b/apps/welcome/settings.js @@ -16,6 +16,4 @@ }, '< Back': back, }) -}) - }) }) diff --git a/apps/widbatpc/settings.js b/apps/widbatpc/settings.js index b62113ad7..b45fc6749 100644 --- a/apps/widbatpc/settings.js +++ b/apps/widbatpc/settings.js @@ -76,8 +76,4 @@ }, } E.showMenu(menu) -}) - }, - } - E.showMenu(menu) }) diff --git a/apps/widbatwarn/settings.js b/apps/widbatwarn/settings.js index ced8ad2f5..8d15c8458 100644 --- a/apps/widbatwarn/settings.js +++ b/apps/widbatwarn/settings.js @@ -44,5 +44,4 @@ }, }; E.showMenu(menu); -});nu); }); \ No newline at end of file diff --git a/apps/widchime/settings.js b/apps/widchime/settings.js index d4290d3d5..54e94546b 100644 --- a/apps/widchime/settings.js +++ b/apps/widchime/settings.js @@ -20,5 +20,3 @@ } E.showMenu(menu) }) -enu) -}) diff --git a/apps/widpedom/settings.js b/apps/widpedom/settings.js index 214ca6783..4455ce7d7 100644 --- a/apps/widpedom/settings.js +++ b/apps/widpedom/settings.js @@ -62,6 +62,3 @@ '< Back': back, }) }) -'< Back': back, - }) -}) diff --git a/bin/language_scan.js b/bin/language_scan.js index 7ad856245..eede250de 100755 --- a/bin/language_scan.js +++ b/bin/language_scan.js @@ -167,6 +167,7 @@ translatedStrings.sort((a,b)=>a.uses - b.uses); * @param file file that string is found * @returns void */ +//TODO fix settings bug function applyLANG(str, file) { fs.readFile(file, 'utf8', function (err,data) { if (err) { From b343726dd3822b36c17ac97db842e0a5f80dc1f7 Mon Sep 17 00:00:00 2001 From: xxDUxx <96152564+xxDUxx@users.noreply.github.com> Date: Thu, 10 Feb 2022 11:39:58 +0100 Subject: [PATCH 16/59] Create custom.html --- apps/contourclock/custom.html | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 apps/contourclock/custom.html diff --git a/apps/contourclock/custom.html b/apps/contourclock/custom.html new file mode 100644 index 000000000..eab060d52 --- /dev/null +++ b/apps/contourclock/custom.html @@ -0,0 +1,31 @@ + + + + + +
+ +
+ +
+

Click

+ + +
+ + From c85c501378c754a64a84986d5eeb0c461e60fc1f Mon Sep 17 00:00:00 2001 From: xxDUxx <96152564+xxDUxx@users.noreply.github.com> Date: Thu, 10 Feb 2022 11:44:49 +0100 Subject: [PATCH 17/59] Update lib.js --- apps/contourclock/lib.js | 90 ++++++++++++++++++++-------------------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/apps/contourclock/lib.js b/apps/contourclock/lib.js index 41f778a9a..65a4622f4 100644 --- a/apps/contourclock/lib.js +++ b/apps/contourclock/lib.js @@ -1,49 +1,49 @@ exports.drawClock = function(fontIndex) { - var digits = []; - if (!require("Storage").read("contourclock-"+Math.abs(parseInt(fontIndex+0.5))+".json")) return (false); - var font = JSON.parse(require("Storage").read("contourclock-"+Math.abs(parseInt(fontIndex+0.5))+".json")); + var digits = []; + fontFile=require("Storage").read("contourclock-"+Math.abs(parseInt(fontIndex+0.5))+".json"); + if (fontFile==undefined) return(false); //exit if font file not found + var font = JSON.parse(fontFile); for (var n in font.characters) { digits.push({width: parseInt(font.characters[n].width), - height: font.size, - bpp: 2, - transparent: 1, - buffer:E.toArrayBuffer(atob(font.characters[n].buffer))}); + height: font.size, + bpp: 2, + transparent: 1, + buffer:E.toArrayBuffer(atob(font.characters[n].buffer))}); + } + if (n!=10) return (false); //font file seems to be invalid + var x=0; + var y = g.getHeight()/2-digits[0].height/2; + var date = new Date(); + g.clearRect(0,38,g.getWidth()-1,138); + d1=parseInt(date.getHours()/10); + d2=parseInt(date.getHours()%10); + d3=10; + d4=parseInt(date.getMinutes()/10); + d5=parseInt(date.getMinutes()%10); + w1=digits[d1].width; + w2=digits[d2].width; + w3=digits[d3].width; + w4=digits[d4].width; + w5=digits[d5].width; + squeeze=(g.getWidth()-w5)/(w1+w2+w3+w4); + if (fontIndex<0) { + fg=g.theme.fg; + bg=g.theme.bg; + g.setColor(bg); + g.setBgColor(fg); + } + g.drawImage(digits[d1],x,y); + x+=parseInt(w1*squeeze); + g.drawImage(digits[d2],x,y); + x+=parseInt(w2*squeeze); + g.drawImage(digits[d3],x,y); + x+=parseInt(w3*squeeze); + g.drawImage(digits[d4],x,y); + x+=parseInt(w4*squeeze); + g.drawImage(digits[d5],x,y); + if (fontIndex<0) { + g.setColor(fg); + g.setBgColor(bg); + } + return font.name; } - var x=0; - var y = g.getHeight()/2-digits[0].height/2; - var date = new Date(); - //g.clearRect(0,24,g.getWidth()-1,137); - - g.clearRect(0,38,g.getWidth()-1,138); - d1=parseInt(date.getHours()/10); - d2=parseInt(date.getHours()%10); - d3=10; - d4=parseInt(date.getMinutes()/10); - d5=parseInt(date.getMinutes()%10); - w1=digits[d1].width; - w2=digits[d2].width; - w3=digits[d3].width; - w4=digits[d4].width; - w5=digits[d5].width; - squeeze=(g.getWidth()-w5)/(w1+w2+w3+w4); - if (fontIndex<0) { - fg=g.theme.fg; - bg=g.theme.bg; - g.setColor(bg); - g.setBgColor(fg); - } - g.drawImage(digits[d1],x,y); - x+=parseInt(w1*squeeze); - g.drawImage(digits[d2],x,y); - x+=parseInt(w2*squeeze); - g.drawImage(digits[d3],x,y); - x+=parseInt(w3*squeeze); - g.drawImage(digits[d4],x,y); - x+=parseInt(w4*squeeze); - g.drawImage(digits[d5],x,y); - if (fontIndex<0) { - g.setColor(fg); - g.setBgColor(bg); - } - return font.name; -} From bf5a8f276517e24b95a4398e72cba98b748d16ad Mon Sep 17 00:00:00 2001 From: xxDUxx <96152564+xxDUxx@users.noreply.github.com> Date: Thu, 10 Feb 2022 11:54:14 +0100 Subject: [PATCH 18/59] Update metadata.json --- apps/contourclock/metadata.json | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/contourclock/metadata.json b/apps/contourclock/metadata.json index 95eb7d9ab..1475e1113 100644 --- a/apps/contourclock/metadata.json +++ b/apps/contourclock/metadata.json @@ -6,6 +6,7 @@ "description": "A Minimalist clockface with large Digits. Now with more fonts!", "screenshots" : [{"url":"cc-screenshot-1.png"},{"url":"cc-screenshot-2.png"}], "tags": "clock", + "custom": "custom.html", "allow_emulator":true, "supports" : ["BANGLEJS2"], "type": "clock", From 044c7c82798c4d5f5d6e92820af18c0d348bd2e0 Mon Sep 17 00:00:00 2001 From: xxDUxx <96152564+xxDUxx@users.noreply.github.com> Date: Thu, 10 Feb 2022 11:56:24 +0100 Subject: [PATCH 19/59] Update metadata.json --- apps/contourclock/metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/contourclock/metadata.json b/apps/contourclock/metadata.json index 1475e1113..0013f72cd 100644 --- a/apps/contourclock/metadata.json +++ b/apps/contourclock/metadata.json @@ -1,7 +1,7 @@ { "id": "contourclock", "name": "Contour Clock", "shortName" : "Contour Clock", - "version":"0.22", + "version":"0.23", "icon": "app.png", "description": "A Minimalist clockface with large Digits. Now with more fonts!", "screenshots" : [{"url":"cc-screenshot-1.png"},{"url":"cc-screenshot-2.png"}], From e16779432ff26b3af48f46547364309fb3dd1f0a Mon Sep 17 00:00:00 2001 From: xxDUxx <96152564+xxDUxx@users.noreply.github.com> Date: Thu, 10 Feb 2022 11:58:12 +0100 Subject: [PATCH 20/59] Update ChangeLog --- apps/contourclock/ChangeLog | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/contourclock/ChangeLog b/apps/contourclock/ChangeLog index 161d87644..b8d01ff86 100644 --- a/apps/contourclock/ChangeLog +++ b/apps/contourclock/ChangeLog @@ -2,3 +2,4 @@ 0.20: Settings menu, different fonts, inverse fonts 0.21: Fixed settings menu, four more fonts 0.22: Changed timing code, original "Nunito" Font is back! +0.23: Customizer! Unused fonts no longer take up precious memory. From a07d12ff9442ab3745a6a27e4f795b04766673e8 Mon Sep 17 00:00:00 2001 From: xxDUxx <96152564+xxDUxx@users.noreply.github.com> Date: Thu, 10 Feb 2022 12:14:59 +0100 Subject: [PATCH 21/59] Update custom.html --- apps/contourclock/custom.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/contourclock/custom.html b/apps/contourclock/custom.html index eab060d52..684080c0f 100644 --- a/apps/contourclock/custom.html +++ b/apps/contourclock/custom.html @@ -13,7 +13,7 @@ - +}); + + + From e8db4351efdf7f3f112c910b56a9d19b279202c3 Mon Sep 17 00:00:00 2001 From: xxDUxx <96152564+xxDUxx@users.noreply.github.com> Date: Thu, 10 Feb 2022 13:25:38 +0100 Subject: [PATCH 24/59] Update metadata.json --- apps/contourclock/metadata.json | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/apps/contourclock/metadata.json b/apps/contourclock/metadata.json index 0013f72cd..9b9238703 100644 --- a/apps/contourclock/metadata.json +++ b/apps/contourclock/metadata.json @@ -14,21 +14,6 @@ {"name":"contourclock.app.js","url":"app.js"}, {"name":"contourclock.settings.js","url":"contourclock.settings.js"}, {"name":"contourclock","url":"lib.js"}, - {"name":"contourclock-0.json","url":"font-Impact.json"}, - {"name":"contourclock-1.json","url":"font-Yumaro.json"}, - {"name":"contourclock-2.json","url":"font-DinAlternate.json"}, - {"name":"contourclock-3.json","url":"font-BebasNeue.json"}, - {"name":"contourclock-4.json","url":"font-Dekko.json"}, - {"name":"contourclock-5.json","url":"font-Dosis.json"}, - {"name":"contourclock-6.json","url":"font-Phosphate.json"}, - {"name":"contourclock-7.json","url":"font-Quicksand.json"}, - {"name":"contourclock-8.json","url":"font-SairaCond.json"}, - {"name":"contourclock-9.json","url":"font-YuseiMagic.json"}, - {"name":"contourclock-10.json","url":"font-BarlowCond.json"}, - {"name":"contourclock-11.json","url":"font-OpenSansEC.json"}, - {"name":"contourclock-12.json","url":"font-SairaEC.json"}, - {"name":"contourclock-13.json","url":"font-Teko.json"}, - {"name":"contourclock-14.json","url":"font-Nunito.json"}, {"name":"contourclock.img","url":"app-icon.js","evaluate":true} ] } From d6e07c48890a040ace100896475af1f7b403a2fb Mon Sep 17 00:00:00 2001 From: xxDUxx <96152564+xxDUxx@users.noreply.github.com> Date: Thu, 10 Feb 2022 14:01:47 +0100 Subject: [PATCH 25/59] Update custom.html --- apps/contourclock/custom.html | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/apps/contourclock/custom.html b/apps/contourclock/custom.html index 375ac3dae..5047bdb06 100644 --- a/apps/contourclock/custom.html +++ b/apps/contourclock/custom.html @@ -19,12 +19,18 @@ if (document.getElementById(Font[fIndex]).checked==true) { sendCustomizedApp({ storage:[ - {name:"contourclock-"+n+".json", url:"app.js", content:"font-"+Font[fIndex]+".json"}, + {name:"contourclock-"+n+".json", url:"font-"+Font[fIndex]+".json"}, ] }); n++; } } + + /*sendCustomizedApp({ + storage:[ + {name:"myapp.app.js", url:"app.js", content:app}, + ] + });*/ }); From dfef601e624cdd1530fea1b75f3f707c01863ced Mon Sep 17 00:00:00 2001 From: xxDUxx <96152564+xxDUxx@users.noreply.github.com> Date: Thu, 10 Feb 2022 14:16:10 +0100 Subject: [PATCH 26/59] Update custom.html --- apps/contourclock/custom.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/contourclock/custom.html b/apps/contourclock/custom.html index 5047bdb06..a34953abe 100644 --- a/apps/contourclock/custom.html +++ b/apps/contourclock/custom.html @@ -4,9 +4,9 @@
- +
- +

Click

From 187821bf49edc26bff7b30226c8016ce95fc4a9c Mon Sep 17 00:00:00 2001 From: copoer Date: Thu, 10 Feb 2022 09:30:00 -0400 Subject: [PATCH 27/59] Removed auto /*LANG*/, Added more languages --- apps/BLEcontroller/app.js | 2 +- apps/a_clock_timer/app.js | 2 +- apps/about/app-bangle1.js | 2 +- apps/about/app-bangle2.js | 4 +- apps/activepedom/app.js | 4 +- apps/activepedom/widget.js | 6 +- apps/alarm/app.js | 8 +- apps/android/boot.js | 6 +- apps/antonclk/app.js | 10 +- apps/banglerun/app.js | 2 +- apps/breath/app.js | 4 +- apps/bthrm/boot.js | 2 +- apps/bthrv/app.js | 2 +- apps/circlesclock/app.js | 2 +- apps/circlesclock/settings.js | 4 +- apps/cliclockJS2Enhanced/app.js | 12 +- apps/clicompleteclk/app.js | 4 +- apps/configurable_clock/app.js | 32 +++--- apps/cscsensor/cscsensor.app.js | 2 +- apps/dane_tcr/app.js | 2 +- apps/daysl/app.js | 2 +- apps/dsdrelay/dsdrelay.app.js | 2 +- apps/ffcniftyb/app.js | 2 +- apps/gpsinfo/gps-info.js | 2 +- apps/gpsrec/app.js | 4 +- apps/gpstime/gpstime.js | 2 +- apps/hardalarm/hardalarm.js | 2 +- apps/hidmsic/hid-music.js | 2 +- apps/hidmsicswipe/hidmsicswipe.js | 6 +- apps/intervalTimer/app.js | 4 +- apps/intervals/intervals.app.js | 2 +- apps/ios/boot.js | 2 +- apps/jbm8b/app.js | 4 +- apps/lcars/lcars.app.js | 4 +- apps/lightswitch/settings.js | 4 +- apps/lightswitch/widget.js | 8 +- apps/ltherm/app.js | 2 +- apps/marioclock/marioclock-app.js | 2 +- apps/menuwheel/boot.js | 2 +- apps/messages/app.js | 4 +- apps/ncstart/start.js | 2 +- apps/numerals/numerals.settings.js | 2 +- apps/pebble/pebble.app.js | 2 +- apps/pebbled/pebbled.app.js | 2 +- apps/presentor/app.js | 2 +- apps/ptlaunch/app.js | 4 +- apps/puzzle15/puzzle15.app.js | 6 +- apps/rebble/rebble.app.js | 2 +- apps/recorder/app.js | 4 +- apps/recorder/widget.js | 4 +- apps/sensible/sensible.js | 8 +- apps/setting/settings.js | 2 +- apps/simpletimer/app.js | 2 +- apps/sleepphasealarm/app.js | 4 +- apps/smartibot/app.js | 8 +- apps/smtswch/app.js | 2 +- apps/sonicclk/app.js | 2 +- apps/themesetter/app.js | 4 +- apps/thermomF/app.js | 2 +- apps/timerclk/alarm.alert.js | 4 +- apps/torch/app.js | 2 +- apps/toucher/app.js | 2 +- apps/viewstl/viewstl.min.js | 2 +- apps/walkersclock/app.js | 4 +- apps/widbatpc/widget.js | 8 +- apps/widpedom/widget.js | 2 +- bin/language_scan.js | 19 ++-- lang/bg_BG.json | 163 ++++++++++++++++++++++++++++ lang/da_DA.json | 163 ++++++++++++++++++++++++++++ lang/el_EL.json | 163 ++++++++++++++++++++++++++++ lang/et_ET.json | 163 ++++++++++++++++++++++++++++ lang/index.json | 12 +- lang/lt_LT.json | 163 ++++++++++++++++++++++++++++ lang/lv_LV.json | 163 ++++++++++++++++++++++++++++ lang/pl_PL.json | 163 ++++++++++++++++++++++++++++ lang/ro_RO.json | 163 ++++++++++++++++++++++++++++ lang/sk_SK.json | 163 ++++++++++++++++++++++++++++ lang/sl_SL.json | 163 ++++++++++++++++++++++++++++ lang/{ => unicode-based}/ja_JA.json | 0 lang/{ => unicode-based}/zh_ZH.json | 0 80 files changed, 1781 insertions(+), 142 deletions(-) create mode 100644 lang/bg_BG.json create mode 100644 lang/da_DA.json create mode 100644 lang/el_EL.json create mode 100644 lang/et_ET.json create mode 100644 lang/lt_LT.json create mode 100644 lang/lv_LV.json create mode 100644 lang/pl_PL.json create mode 100644 lang/ro_RO.json create mode 100644 lang/sk_SK.json create mode 100644 lang/sl_SL.json rename lang/{ => unicode-based}/ja_JA.json (100%) rename lang/{ => unicode-based}/zh_ZH.json (100%) diff --git a/apps/BLEcontroller/app.js b/apps/BLEcontroller/app.js index 7f3a37ae2..c8217988c 100644 --- a/apps/BLEcontroller/app.js +++ b/apps/BLEcontroller/app.js @@ -295,7 +295,7 @@ const SocketsMenu = new State({ const startEnd = status => status ? "start" : "end"; /* translate status into english */ -const onOff= status => status ? "on" : /*LANG*/"off"; +const onOff= status => status ? "on" : "off"; /* create watching functions that will change the global diff --git a/apps/a_clock_timer/app.js b/apps/a_clock_timer/app.js index c1c31cb80..5f9a3a468 100644 --- a/apps/a_clock_timer/app.js +++ b/apps/a_clock_timer/app.js @@ -53,7 +53,7 @@ function countDown() { g.reset().clearRect(0, 76, 44+44, g.getHeight()/2+6); g.setFontAlign(0, -1, 0); - g.setFont("6x8").drawString(/*LANG*/"Timer", 44, g.getHeight()/2-20); + g.setFont("6x8").drawString("Timer", 44, g.getHeight()/2-20); g.setFont("Michroma16").drawString(timeToString(timervalue), 44, g.getHeight()/2-10); if (timervalue <= 0) { diff --git a/apps/about/app-bangle1.js b/apps/about/app-bangle1.js index 04f7ff7ee..28a292376 100644 --- a/apps/about/app-bangle1.js +++ b/apps/about/app-bangle1.js @@ -21,7 +21,7 @@ function getVersion(name,file) { } getVersion("Bootloader","boot.info"); getVersion("Launcher","launch.info"); -getVersion(/*LANG*/"Settings","setting.info"); +getVersion("Settings","setting.info"); y+=h; g.drawString(MEM.total+" JS Variables available",0,y+=h); diff --git a/apps/about/app-bangle2.js b/apps/about/app-bangle2.js index 89663a4bc..978d36193 100644 --- a/apps/about/app-bangle2.js +++ b/apps/about/app-bangle2.js @@ -23,7 +23,7 @@ function getVersion(name,file) { var versions = [ getVersion("Bootloader","boot.info"), getVersion("Launcher","launch.info"), - getVersion(/*LANG*/"Settings","setting.info") + getVersion("Settings","setting.info") ]; var logo = E.toArrayBuffer(atob("PBwBAAAAAAAB/gAAAAAAAB/gAAAAAAAB/gAAAAAAAB/gAAAAAAAB/gAAAAAAAB/gAAAAAAAD/w+AAAAQAHA4hAAAAQAMAMhAAAAQAYBmhAAAAQAYBGiAAAAQAQCD/H74+R4wGDhoKJCSEwEDgoKJCT8wFDgoKJCSAwHDhoKJCSEQHj/H6I+R4YHmAAAACAAYEGAAABCAAMEMAAAA8AAHA4AAAAAAAD/wAAAAAAAB/gAAAAAAAB/gAAAAAAAB/gAAAAAAAB/gAAAAAAAB/gAAAAAAAB/g")); @@ -41,7 +41,7 @@ function drawInfo() { getVersion("Bootloader","boot.info"); getVersion("Launcher","launch.info"); - getVersion(/*LANG*/"Settings","setting.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); diff --git a/apps/activepedom/app.js b/apps/activepedom/app.js index d241586f2..12969a0a0 100644 --- a/apps/activepedom/app.js +++ b/apps/activepedom/app.js @@ -108,7 +108,7 @@ g.setFont("6x8", 2); g.setColor(1,1,1); require("graph").drawLine(g, steps, { - //title: /*LANG*/"Steps", + //title: "Steps", axes : true, gridy : gridyValue, y : 60, //offset on screen @@ -118,7 +118,7 @@ // show steps and duration of the chart g.setFont("6x8", 2); g.setColor(0,1,0); - g.drawString(/*LANG*/"steps", 30, 24); + g.drawString("steps", 30, 24); g.drawString(stepsLastEntry, 30, 44); g.drawString((history/3600000) + " hrs", 30, 64); diff --git a/apps/activepedom/widget.js b/apps/activepedom/widget.js index 11360fd61..62c2d857a 100644 --- a/apps/activepedom/widget.js +++ b/apps/activepedom/widget.js @@ -69,7 +69,7 @@ 'stepGoal' : 10000, 'stepLength' : 75, 'lineOne' : "Distance", - 'lineTwo' : /*LANG*/"Steps", + 'lineTwo' : "Steps", }; if (!settings) { loadSettings(); } return (key in settings) ? settings[key] : DEFAULTS[key]; @@ -169,7 +169,7 @@ if (active == 1) g.setColor(0x07E0); //green else g.setColor(0xFFFF); //white g.setFont("6x8", 2); - if (setting('lineOne') == /*LANG*/'Steps') { + if (setting('lineOne') == 'Steps') { g.drawString(kFormatterSteps(stepsCounted),this.x+1,this.y); //first line, big number, steps } if (setting('lineOne') == 'Distance') { @@ -177,7 +177,7 @@ } g.setFont("6x8", 1); g.setColor(0xFFFF); //white - if (setting('lineTwo') == /*LANG*/'Steps') { + if (setting('lineTwo') == 'Steps') { g.drawString(stepsCounted,this.x+1,this.y+14); //second line, small number, steps } if (setting('lineTwo') == 'Distance') { diff --git a/apps/alarm/app.js b/apps/alarm/app.js index 5ef6be152..17062d44a 100644 --- a/apps/alarm/app.js +++ b/apps/alarm/app.js @@ -39,9 +39,9 @@ function showMainMenu() { }; alarms.forEach((alarm,idx)=>{ if (alarm.timer) { - txt = /*LANG*/"TIMER "+(alarm.on?/*LANG*/"on ":/*LANG*//*LANG*/"off ")+formatMins(alarm.timer); + txt = /*LANG*/"TIMER "+(alarm.on?/*LANG*/"on ":/*LANG*/"off ")+formatMins(alarm.timer); } else { - txt = /*LANG*/"ALARM "+(alarm.on?/*LANG*/"on ":/*LANG*//*LANG*/"off ")+formatTime(alarm.hr); + txt = /*LANG*/"ALARM "+(alarm.on?/*LANG*/"on ":/*LANG*/"off ")+formatTime(alarm.hr); if (alarm.rp) txt += /*LANG*/" (repeat)"; } menu[txt] = function() { @@ -82,7 +82,7 @@ function editAlarm(alarmIndex) { }, /*LANG*/'Enabled': { value: en, - format: v=>v?"On":/*LANG*/"Off", + format: v=>v?"On":"Off", onchange: v=>en=v }, /*LANG*/'Repeat': { @@ -147,7 +147,7 @@ function editTimer(alarmIndex) { }, /*LANG*/'Enabled': { value: en, - format: v=>v?/*LANG*/"On":/*LANG*//*LANG*/"Off", + format: v=>v?/*LANG*/"On":/*LANG*/"Off", onchange: v=>en=v } }; diff --git a/apps/android/boot.js b/apps/android/boot.js index 5c910f5b1..eb3d26c6e 100644 --- a/apps/android/boot.js +++ b/apps/android/boot.js @@ -29,11 +29,11 @@ }, // {t:"musicstate", state:"play/pause",position,shuffle,repeat} "musicstate" : function() { - require("messages").pushMessage({t:"modify",id:"music",title:/*LANG*/"Music",state:event.state}); + require("messages").pushMessage({t:"modify",id:"music",title:"Music",state:event.state}); }, // {t:"musicinfo", artist,album,track,dur,c(track count),n(track num} "musicinfo" : function() { - require("messages").pushMessage(Object.assign(event, {t:"modify",id:"music",title:/*LANG*/"Music"})); + require("messages").pushMessage(Object.assign(event, {t:"modify",id:"music",title:"Music"})); }, // {"t":"call","cmd":"incoming/end","name":"Bob","number":"12421312"}) "call" : function() { @@ -63,7 +63,7 @@ // Music control Bangle.musicControl = cmd => { // play/pause/next/previous/volumeup/volumedown - gbSend({ t: /*LANG*/"music", n:cmd }); + gbSend({ t: "music", n:cmd }); }; // Message response Bangle.messageResponse = (msg,response) => { diff --git a/apps/antonclk/app.js b/apps/antonclk/app.js index fd6cc98c6..7b40d8eb5 100644 --- a/apps/antonclk/app.js +++ b/apps/antonclk/app.js @@ -37,7 +37,7 @@ require('Storage').writeJSON(SETTINGSFILE, { secondsColoured: true, secondsWithColon: true, dateOnMain: "Long", // "Short", "Long", "ISO8601" - dateOnSecs: "Year", // "No", /*LANG*/"Year", "Weekday", LEGACY: true/false + dateOnSecs: "Year", // "No", "Year", "Weekday", LEGACY: true/false weekDay: true, calWeek: true, upperCase: true, @@ -60,7 +60,7 @@ function loadSettings() { secondsColoured = def(settings.secondsColoured, true); secondsWithColon = def(settings.secondsWithColon, true); dateOnMain = def(settings.dateOnMain, "Long"); - dateOnSecs = def(settings.dateOnSecs, /*LANG*/"Year"); + dateOnSecs = def(settings.dateOnSecs, "Year"); weekDay = def(settings.weekDay, true); calWeek = def(settings.calWeek, false); upperCase = def(settings.upperCase, true); @@ -68,7 +68,7 @@ function loadSettings() { // Legacy if (dateOnSecs === true) - dateOnSecs = /*LANG*/"Year"; + dateOnSecs = "Year"; if (dateOnSecs === false) dateOnSecs = "No"; } @@ -153,7 +153,7 @@ function draw() { var md; var yearfirst; if (dateStr2.match(/\d\d\d\d$/)) { // formatted date ends with year - year = (dateOnSecs === /*LANG*/"Year" ? dateStr2.slice(-4) : require("locale").dow(date, 1)); + year = (dateOnSecs === "Year" ? dateStr2.slice(-4) : require("locale").dow(date, 1)); md = dateStr2.slice(0, -4); if (!md.endsWith(".")) // keep separator before the year only if it is a dot (31.12. but 31/12) md = md.slice(0, -1); @@ -161,7 +161,7 @@ function draw() { } else { // formatted date begins with year if (!dateStr2.match(/^\d\d\d\d/)) // if year position cannot be detected... dateStr2 = isoStr(date); // ...use ISO date format instead - year = (dateOnSecs === /*LANG*/"Year" ? dateStr2.slice(0, 4) : require("locale").dow(date, 1)); + year = (dateOnSecs === "Year" ? dateStr2.slice(0, 4) : require("locale").dow(date, 1)); md = dateStr2.slice(5); // never keep separator directly after year yearfirst = true; } diff --git a/apps/banglerun/app.js b/apps/banglerun/app.js index 1793decef..b79255171 100644 --- a/apps/banglerun/app.js +++ b/apps/banglerun/app.js @@ -1 +1 @@ -!function(){"use strict";var t;!function(t){t.Stopped="STOP",t.Paused="PAUSE",t.Running="RUN"}(t||(t={}));const n={STOP:63488,PAUSE:65504,RUN:2016};function e(t,n,e){g.setColor(0),g.fillRect(n-60,e,n+60,e+30),g.setColor(65535),g.drawString(t,n,e)}function i(i){var s;g.setFontVector(30),g.setFontAlign(0,-1,0),e((i.distance/1e3).toFixed(2),60,55),e(function(t){const n=Math.round(t),e=Math.floor(n/3600),i=Math.floor(n/60)%60,s=n%60;return(e?e+":":"")+("0"+i).substr(-2)+":"+("0"+s).substr(-2)}(i.duration),172,55),e(function(t){if(t<.1667)return"__'__\"";const n=Math.round(1e3/t),e=Math.floor(n/60),i=n%60;return("0"+e).substr(-2)+"'"+("0"+i).substr(-2)+'"'}(i.speed),60,115),e(i.hr.toFixed(0),172,115),e(i.steps.toFixed(0),60,175),e(i.cadence.toFixed(0),172,175),g.setFont("6x8",2),g.setColor(i.gpsValid?2016:63488),g.fillRect(0,216,80,240),g.setColor(0),g.drawString("GPS",40,220),g.setColor(65535),g.fillRect(80,216,160,240),g.setColor(0),g.drawString(("0"+(s=new Date).getHours()).substr(-2)+":"+("0"+s.getMinutes()).substr(-2),120,220),g.setColor(n[i.status]),g.fillRect(160,216,230,240),g.setColor(0),g.drawString(i.status,200,220),g.setFont("6x8").setFontAlign(0,0,1).setColor(-1),i.status===t.Paused?g.drawString("START",236,60,1).drawString(" CLEAR ",236,180,1):i.status===t.Running?g.drawString(" PAUSE ",236,60,1).drawString(" PAUSE ",236,180,1):g.drawString("START",236,60,1).drawString(" ",236,180,1)}function s(t){g.clear(),g.setColor(50712),g.setFont("6x8",2),g.setFontAlign(0,-1,0),g.drawString("DIST (KM)",60,32),g.drawString("TIME",180,32),g.drawString("PACE",60,92),g.drawString("HEART",180,92),g.drawString("STEPS",60,152),g.drawString("CADENCE",180,152),i(t),Bangle.drawWidgets()}function a(n){n.status===t.Stopped&&function(t){const n=(new Date).toISOString().replace(/[-:]/g,""),e=`banglerun_${n.substr(2,6)}_${n.substr(9,6)}`;t.file=require("Storage").open(e,"w"),t.fileWritten=!1}(n),n.status===t.Running?n.status=t.Paused:n.status=t.Running,i(n)}const r={fix:NaN,lat:NaN,lon:NaN,alt:NaN,vel:NaN,dop:NaN,gpsValid:!1,x:NaN,y:NaN,z:NaN,t:NaN,timeSinceLog:0,hr:60,hrError:100,file:null,fileWritten:!1,drawing:!1,status:t.Stopped,duration:0,distance:0,speed:0,steps:0,cadence:0};var o;o=r,Bangle.on("GPS",n=>function(n,e){n.lat=e.lat,n.lon=e.lon,n.alt=e.alt,n.vel=e.speed/3.6,n.fix=e.fix,n.dop=e.hdop,n.gpsValid=n.fix>0,function(n){const e=Date.now();let i=(e-n.t)/1e3;if(isFinite(i)||(i=0),n.t=e,n.timeSinceLog+=i,n.status===t.Running&&(n.duration+=i),!n.gpsValid)return;const s=6371008.8+n.alt,a=n.lat*Math.PI/180,r=n.lon*Math.PI/180,o=s*Math.cos(a)*Math.cos(r),g=s*Math.cos(a)*Math.sin(r),d=s*Math.sin(a);if(!n.x)return n.x=o,n.y=g,void(n.z=d);const u=o-n.x,l=g-n.y,c=d-n.z,f=Math.sqrt(u*u+l*l+c*c);n.x=o,n.y=g,n.z=d,n.status===t.Running&&(n.distance+=f,n.speed=n.distance/n.duration||0,n.cadence=60*n.steps/n.duration||0)}(n),i(n),n.gpsValid&&n.status===t.Running&&n.timeSinceLog>5&&(n.timeSinceLog=0,function(t){t.fileWritten||(t.file.write(["timestamp","latitude","longitude","altitude","duration","distance","heartrate",/*LANG*/"steps"].join(",")+"\n"),t.fileWritten=!0),t.file.write([Date.now().toFixed(0),t.lat.toFixed(6),t.lon.toFixed(6),t.alt.toFixed(2),t.duration.toFixed(0),t.distance.toFixed(2),t.hr.toFixed(0),t.steps.toFixed(0)].join(",")+"\n")}(n))}(o,n)),Bangle.setGPSPower(1),function(t){Bangle.on("HRM",n=>function(t,n){if(0===n.confidence)return;const e=n.bpm-t.hr,i=Math.abs(e)+101-n.confidence,s=t.hrError/(t.hrError+i)||0;t.hr+=e*s,t.hrError+=(i-t.hrError)*s}(t,n)),Bangle.setHRMPower(1)}(r),function(n){Bangle.on("step",()=>function(n){n.status===t.Running&&(n.steps+=1)}(n))}(r),function(t){Bangle.loadWidgets(),Bangle.on("lcdPower",n=>{t.drawing=n,n&&s(t)}),s(t)}(r),setWatch(()=>a(r),BTN1,{repeat:!0,edge:"falling"}),setWatch(()=>function(n){n.status===t.Paused&&function(t){t.duration=0,t.distance=0,t.speed=0,t.steps=0,t.cadence=0}(n),n.status===t.Running?n.status=t.Paused:n.status=t.Stopped,i(n)}(r),BTN3,{repeat:!0,edge:"falling"})}(); +!function(){"use strict";var t;!function(t){t.Stopped="STOP",t.Paused="PAUSE",t.Running="RUN"}(t||(t={}));const n={STOP:63488,PAUSE:65504,RUN:2016};function e(t,n,e){g.setColor(0),g.fillRect(n-60,e,n+60,e+30),g.setColor(65535),g.drawString(t,n,e)}function i(i){var s;g.setFontVector(30),g.setFontAlign(0,-1,0),e((i.distance/1e3).toFixed(2),60,55),e(function(t){const n=Math.round(t),e=Math.floor(n/3600),i=Math.floor(n/60)%60,s=n%60;return(e?e+":":"")+("0"+i).substr(-2)+":"+("0"+s).substr(-2)}(i.duration),172,55),e(function(t){if(t<.1667)return"__'__\"";const n=Math.round(1e3/t),e=Math.floor(n/60),i=n%60;return("0"+e).substr(-2)+"'"+("0"+i).substr(-2)+'"'}(i.speed),60,115),e(i.hr.toFixed(0),172,115),e(i.steps.toFixed(0),60,175),e(i.cadence.toFixed(0),172,175),g.setFont("6x8",2),g.setColor(i.gpsValid?2016:63488),g.fillRect(0,216,80,240),g.setColor(0),g.drawString("GPS",40,220),g.setColor(65535),g.fillRect(80,216,160,240),g.setColor(0),g.drawString(("0"+(s=new Date).getHours()).substr(-2)+":"+("0"+s.getMinutes()).substr(-2),120,220),g.setColor(n[i.status]),g.fillRect(160,216,230,240),g.setColor(0),g.drawString(i.status,200,220),g.setFont("6x8").setFontAlign(0,0,1).setColor(-1),i.status===t.Paused?g.drawString("START",236,60,1).drawString(" CLEAR ",236,180,1):i.status===t.Running?g.drawString(" PAUSE ",236,60,1).drawString(" PAUSE ",236,180,1):g.drawString("START",236,60,1).drawString(" ",236,180,1)}function s(t){g.clear(),g.setColor(50712),g.setFont("6x8",2),g.setFontAlign(0,-1,0),g.drawString("DIST (KM)",60,32),g.drawString("TIME",180,32),g.drawString("PACE",60,92),g.drawString("HEART",180,92),g.drawString("STEPS",60,152),g.drawString("CADENCE",180,152),i(t),Bangle.drawWidgets()}function a(n){n.status===t.Stopped&&function(t){const n=(new Date).toISOString().replace(/[-:]/g,""),e=`banglerun_${n.substr(2,6)}_${n.substr(9,6)}`;t.file=require("Storage").open(e,"w"),t.fileWritten=!1}(n),n.status===t.Running?n.status=t.Paused:n.status=t.Running,i(n)}const r={fix:NaN,lat:NaN,lon:NaN,alt:NaN,vel:NaN,dop:NaN,gpsValid:!1,x:NaN,y:NaN,z:NaN,t:NaN,timeSinceLog:0,hr:60,hrError:100,file:null,fileWritten:!1,drawing:!1,status:t.Stopped,duration:0,distance:0,speed:0,steps:0,cadence:0};var o;o=r,Bangle.on("GPS",n=>function(n,e){n.lat=e.lat,n.lon=e.lon,n.alt=e.alt,n.vel=e.speed/3.6,n.fix=e.fix,n.dop=e.hdop,n.gpsValid=n.fix>0,function(n){const e=Date.now();let i=(e-n.t)/1e3;if(isFinite(i)||(i=0),n.t=e,n.timeSinceLog+=i,n.status===t.Running&&(n.duration+=i),!n.gpsValid)return;const s=6371008.8+n.alt,a=n.lat*Math.PI/180,r=n.lon*Math.PI/180,o=s*Math.cos(a)*Math.cos(r),g=s*Math.cos(a)*Math.sin(r),d=s*Math.sin(a);if(!n.x)return n.x=o,n.y=g,void(n.z=d);const u=o-n.x,l=g-n.y,c=d-n.z,f=Math.sqrt(u*u+l*l+c*c);n.x=o,n.y=g,n.z=d,n.status===t.Running&&(n.distance+=f,n.speed=n.distance/n.duration||0,n.cadence=60*n.steps/n.duration||0)}(n),i(n),n.gpsValid&&n.status===t.Running&&n.timeSinceLog>5&&(n.timeSinceLog=0,function(t){t.fileWritten||(t.file.write(["timestamp","latitude","longitude","altitude","duration","distance","heartrate","steps"].join(",")+"\n"),t.fileWritten=!0),t.file.write([Date.now().toFixed(0),t.lat.toFixed(6),t.lon.toFixed(6),t.alt.toFixed(2),t.duration.toFixed(0),t.distance.toFixed(2),t.hr.toFixed(0),t.steps.toFixed(0)].join(",")+"\n")}(n))}(o,n)),Bangle.setGPSPower(1),function(t){Bangle.on("HRM",n=>function(t,n){if(0===n.confidence)return;const e=n.bpm-t.hr,i=Math.abs(e)+101-n.confidence,s=t.hrError/(t.hrError+i)||0;t.hr+=e*s,t.hrError+=(i-t.hrError)*s}(t,n)),Bangle.setHRMPower(1)}(r),function(n){Bangle.on("step",()=>function(n){n.status===t.Running&&(n.steps+=1)}(n))}(r),function(t){Bangle.loadWidgets(),Bangle.on("lcdPower",n=>{t.drawing=n,n&&s(t)}),s(t)}(r),setWatch(()=>a(r),BTN1,{repeat:!0,edge:"falling"}),setWatch(()=>function(n){n.status===t.Paused&&function(t){t.duration=0,t.distance=0,t.speed=0,t.steps=0,t.cadence=0}(n),n.status===t.Running?n.status=t.Paused:n.status=t.Stopped,i(n)}(r),BTN3,{repeat:!0,edge:"falling"})}(); diff --git a/apps/breath/app.js b/apps/breath/app.js index 97e6b625f..380308739 100644 --- a/apps/breath/app.js +++ b/apps/breath/app.js @@ -191,8 +191,8 @@ function btn3Pressed() { if (settings.vibrate == "forward") settings.vibrate = "backward"; else if (settings.vibrate == "backward") - settings.vibrate = /*LANG*/"off"; - else if (settings.vibrate == /*LANG*/"off") + settings.vibrate = "off"; + else if (settings.vibrate == "off") settings.vibrate = "forward"; } else if(status == 5){ diff --git a/apps/bthrm/boot.js b/apps/bthrm/boot.js index 0d3b72735..6ac6382d6 100644 --- a/apps/bthrm/boot.js +++ b/apps/bthrm/boot.js @@ -503,7 +503,7 @@ if (settings.startWithHrm){ Bangle.setHRMPower = function(isOn, app) { - log("setHRMPower for " + app + ": " + (isOn?"on":/*LANG*/"off")); + log("setHRMPower for " + app + ": " + (isOn?"on":"off")); if (settings.enabled){ Bangle.setBTHRMPower(isOn, app); } diff --git a/apps/bthrv/app.js b/apps/bthrv/app.js index 2faa7c200..7f6ec2d35 100644 --- a/apps/bthrv/app.js +++ b/apps/bthrv/app.js @@ -58,7 +58,7 @@ function draw(y, hrv) { } g.setRotation(3); - g.setFontVector(12).drawString(/*LANG*/"Reset",g.getHeight()/2, g.getWidth()-10); + g.setFontVector(12).drawString("Reset",g.getHeight()/2, g.getWidth()-10); g.setRotation(0); } diff --git a/apps/circlesclock/app.js b/apps/circlesclock/app.js index 0eb14b425..49af2a057 100644 --- a/apps/circlesclock/app.js +++ b/apps/circlesclock/app.js @@ -227,7 +227,7 @@ function isCircleEnabled(type) { function getCircleColor(type) { const pos = getCirclePosition(type); - const color = settings["circle" + (pos + 1) + /*LANG*/"color"]; + const color = settings["circle" + (pos + 1) + "color"]; if (color && color != "") return color; } diff --git a/apps/circlesclock/settings.js b/apps/circlesclock/settings.js index e89ddf8f2..348d187eb 100644 --- a/apps/circlesclock/settings.js +++ b/apps/circlesclock/settings.js @@ -44,7 +44,7 @@ }, /*LANG*/'show widgets': { value: "showWidgets" in settings ? settings.showWidgets : false, - format: () => (settings.showWidgets ? /*LANG*/'Yes' : 'No'), + format: () => (settings.showWidgets ? 'Yes' : 'No'), onchange: x => save('showWidgets', x), }, /*LANG*/'weather circle': { @@ -167,7 +167,7 @@ }, /*LANG*/'colorize icon': { value: colorizeIconKey in settings ? settings[colorizeIconKey] : false, - format: () => (settings[colorizeIconKey] ? /*LANG*/'Yes' : 'No'), + format: () => (settings[colorizeIconKey] ? 'Yes' : 'No'), onchange: x => save(colorizeIconKey, x), }, }; diff --git a/apps/cliclockJS2Enhanced/app.js b/apps/cliclockJS2Enhanced/app.js index e20944531..b6172b497 100644 --- a/apps/cliclockJS2Enhanced/app.js +++ b/apps/cliclockJS2Enhanced/app.js @@ -16,7 +16,7 @@ var lasty = 0; var lastx = 0; if (settings.HID=="kbmedia") { - profile = /*LANG*/'Music'; + profile = 'Music'; sendHid = function (code, cb) { try { NRF.sendHIDReport([1,code], () => { @@ -57,29 +57,29 @@ if (next) { if(lasty > 40){ writeLine('Down', 3); // setTimeout(drawApp, 1000); - // Bluetooth.println(JSON.stringify({t:/*LANG*/"music", n:"volumedown"})); + // Bluetooth.println(JSON.stringify({t:"music", n:"volumedown"})); down(() => {}); } else if(lasty < -40){ writeLine('Up', 3); // setTimeout(drawApp, 1000); - //Bluetooth.println(JSON.stringify({t:/*LANG*/"music", n:"volumeup"})); + //Bluetooth.println(JSON.stringify({t:"music", n:"volumeup"})); up(() => {}); } else if(lastx < -40){ writeLine('Prev', 3); // setTimeout(drawApp, 1000); - // Bluetooth.println(JSON.stringify({t:/*LANG*/"music", n:"previous"})); + // Bluetooth.println(JSON.stringify({t:"music", n:"previous"})); prev(() => {}); } else if(lastx > 40){ writeLine('Next', 3); // setTimeout(drawApp, 1000); - // Bluetooth.println(JSON.stringify({t:/*LANG*/"music", n:"next"})); + // Bluetooth.println(JSON.stringify({t:"music", n:"next"})); next(() => {}); } else if(lastx==0 && lasty==0){ writeLine('play/pause', 3); //setTimeout(drawApp, 1000); - // Bluetooth.println(JSON.stringify({t:/*LANG*/"music", n:"play"})); + // Bluetooth.println(JSON.stringify({t:"music", n:"play"})); toggle(() => {}); } diff --git a/apps/clicompleteclk/app.js b/apps/clicompleteclk/app.js index 8a4d00798..a39b37e58 100644 --- a/apps/clicompleteclk/app.js +++ b/apps/clicompleteclk/app.js @@ -35,7 +35,7 @@ function setting(key) { 'battery': true, 'batteryLvl': 30, 'weather': true, - /*LANG*/'steps': true, + 'steps': true, 'heartrate': true }; return (key in settings) ? settings[key] : DEFAULTS[key]; @@ -45,7 +45,7 @@ function setting(key) { let showBattery = setting('battery'); let batteryWarnLevel = setting('batteryLvl'); let showWeather = setting('weather'); -let showSteps = setting(/*LANG*/'steps'); +let showSteps = setting('steps'); let showHeartRate = setting('heartrate'); diff --git a/apps/configurable_clock/app.js b/apps/configurable_clock/app.js index afde21e1a..157d57741 100644 --- a/apps/configurable_clock/app.js +++ b/apps/configurable_clock/app.js @@ -710,7 +710,7 @@ { Face:'1-12', colored:true, Hands:'rounded', withSeconds:true, - Foreground:'Theme', Background:/*LANG*/'Theme', Seconds:'#FF0000' + Foreground:'Theme', Background:'Theme', Seconds:'#FF0000' }, require('Storage').readJSON('configurable_clock.json', true) || {} ); @@ -855,8 +855,8 @@ activeLayout = null; g.setTheme({ - fg:(Settings.Foreground === /*LANG*/'Theme' ? Theme.fg : Settings.Foreground || '#000000'), - bg:(Settings.Background === /*LANG*/'Theme' ? Theme.bg : Settings.Background || '#FFFFFF') + fg:(Settings.Foreground === 'Theme' ? Theme.fg : Settings.Foreground || '#000000'), + bg:(Settings.Background === 'Theme' ? Theme.bg : Settings.Background || '#FFFFFF') }); g.clear(true); // also installs the current theme @@ -872,8 +872,8 @@ /**** renderClock ****/ function renderClock () { - g.setColor (Settings.Foreground === /*LANG*/'Theme' ? Theme.fg : Settings.Foreground || '#000000'); - g.setBgColor(Settings.Background === /*LANG*/'Theme' ? Theme.bg : Settings.Background || '#FFFFFF'); + g.setColor (Settings.Foreground === 'Theme' ? Theme.fg : Settings.Foreground || '#000000'); + g.setBgColor(Settings.Background === 'Theme' ? Theme.bg : Settings.Background || '#FFFFFF'); switch (Settings.Face) { case 'none': @@ -951,7 +951,7 @@ let HoursAngle = (Hours+(Minutes/60))/12 * twoPi - Pi; let MinutesAngle = (Minutes/60) * twoPi - Pi; - g.setColor(Settings.Foreground === /*LANG*/'Theme' ? Theme.fg : Settings.Foreground || '#000000'); + g.setColor(Settings.Foreground === 'Theme' ? Theme.fg : Settings.Foreground || '#000000'); switch (Settings.Hands) { case 'simple': @@ -968,10 +968,10 @@ transformPolygon(roundedMinuteHandPolygon, CenterX,CenterY, MinutesAngle); g.fillPoly(transformedPolygon); -// g.setColor(Settings.Foreground === /*LANG*/'Theme' ? Theme.fg || '#000000'); +// g.setColor(Settings.Foreground === 'Theme' ? Theme.fg || '#000000'); g.fillCircle(CenterX,CenterY, outerBoltRadius); - g.setColor(Settings.Background === /*LANG*/'Theme' ? Theme.bg : Settings.Background || '#FFFFFF'); + g.setColor(Settings.Background === 'Theme' ? Theme.bg : Settings.Background || '#FFFFFF'); g.drawCircle(CenterX,CenterY, outerBoltRadius); g.fillCircle(CenterX,CenterY, innerBoltRadius); break; @@ -986,7 +986,7 @@ } if (Settings.withSeconds) { - g.setColor(Settings.Seconds === /*LANG*/'Theme' ? Theme.fgH : Settings.Seconds || '#FF0000'); + g.setColor(Settings.Seconds === 'Theme' ? Theme.fgH : Settings.Seconds || '#FF0000'); let Seconds = now.getSeconds(); let SecondsAngle = (Seconds/60) * twoPi - Pi; @@ -1089,9 +1089,9 @@ let Seconds = (Changes.Seconds == null ? Settings.Seconds : Changes.Seconds); activeLayout = ColorsScreen; - activeLayout['Foreground'].bgCol = (Foreground === /*LANG*/'Theme' ? Theme.fg : Foreground); - activeLayout['Background'].bgCol = (Background === /*LANG*/'Theme' ? Theme.bg : Background); - activeLayout['Seconds'].bgCol = (Seconds === /*LANG*/'Theme' ? Theme.fgH : Seconds); + activeLayout['Foreground'].bgCol = (Foreground === 'Theme' ? Theme.fg : Foreground); + activeLayout['Background'].bgCol = (Background === 'Theme' ? Theme.bg : Background); + activeLayout['Seconds'].bgCol = (Seconds === 'Theme' ? Theme.fgH : Seconds); activeLayout.render(); } @@ -1123,12 +1123,12 @@ activeLayout['#FF00FF'].selected = (chosenColor === '#FF00FF'); activeLayout['#00FFFF'].selected = (chosenColor === '#00FFFF'); activeLayout['#FFFFFF'].selected = (chosenColor === '#FFFFFF'); - activeLayout['Theme'].selected = (chosenColor === /*LANG*/'Theme'); + activeLayout['Theme'].selected = (chosenColor === 'Theme'); activeLayout.render(); } function chooseColor (Control) { Bangle.buzz(); chosenColor = Control.id; refreshColorChoiceScreen(); } - function chooseThemeColor () { Bangle.buzz(); chosenColor = /*LANG*/'Theme'; refreshColorChoiceScreen(); } + function chooseThemeColor () { Bangle.buzz(); chosenColor = 'Theme'; refreshColorChoiceScreen(); } function applyColor () { Changes[ColorToChange] = chosenColor; @@ -1347,9 +1347,9 @@ Drawable(drawColorChoice, { id:'#00FFFF', common:ColorChoice, col:'#00FFFF' }), ], filly:1 }, { type:'h', c:[ - Label('use Theme:', { id:/*LANG*/'Theme', common:leftAligned, pad:4 }), + Label('use Theme:', { id:'Theme', common:leftAligned, pad:4 }), { width:10 }, - Drawable(drawColorChoice, { id:/*LANG*/'Theme', common:ColorChoice, col:Theme.fg }), + Drawable(drawColorChoice, { id:'Theme', common:ColorChoice, col:Theme.fg }), ], filly:1, onTouch:chooseThemeColor }, { height:4 }, { type:'h', c:[ diff --git a/apps/cscsensor/cscsensor.app.js b/apps/cscsensor/cscsensor.app.js index 03fc77aca..e2af0db16 100644 --- a/apps/cscsensor/cscsensor.app.js +++ b/apps/cscsensor/cscsensor.app.js @@ -225,7 +225,7 @@ function connection_setup() { return device.gatt.connect(); }).then(function(ga) { gatt = ga; - E.showMessage(/*LANG*/"Connected"); + E.showMessage("Connected"); return gatt.getPrimaryService("1816"); }).then(function(s) { service = s; diff --git a/apps/dane_tcr/app.js b/apps/dane_tcr/app.js index ce75c55cb..aa25379d3 100644 --- a/apps/dane_tcr/app.js +++ b/apps/dane_tcr/app.js @@ -244,7 +244,7 @@ function run(){ Bangle.setLCDMode(); g.clear(); g.flip(); - E.showMessage(/*LANG*/"Loading..."); + E.showMessage("Loading..."); load(app.src); } diff --git a/apps/daysl/app.js b/apps/daysl/app.js index 0bb11a77b..50695328e 100644 --- a/apps/daysl/app.js +++ b/apps/daysl/app.js @@ -46,7 +46,7 @@ function showMenu() { updateSettings(); } }, - /*LANG*/'Year': { + 'Year': { value: settings.year, step: 1, onchange: v => { diff --git a/apps/dsdrelay/dsdrelay.app.js b/apps/dsdrelay/dsdrelay.app.js index 4a34a47fc..18e7293aa 100644 --- a/apps/dsdrelay/dsdrelay.app.js +++ b/apps/dsdrelay/dsdrelay.app.js @@ -59,7 +59,7 @@ function parseDevice(d) { g.clearRect(0, 60, 239, 239).setFontAlign(0, 0, 0).setColor(0, 1, 0).drawString("Found device", 120, 120).flip(); device.gatt.connect().then(function(ga) { gatt = ga; - g.clearRect(0, 60, 239, 239).setFontAlign(0, 0, 0).setColor(0, 1, 0).drawString(/*LANG*/"Connected", 120, 120).flip(); + g.clearRect(0, 60, 239, 239).setFontAlign(0, 0, 0).setColor(0, 1, 0).drawString("Connected", 120, 120).flip(); return gatt.getPrimaryService("FFE0"); }).then(function(s) { service = s; diff --git a/apps/ffcniftyb/app.js b/apps/ffcniftyb/app.js index 9456d3421..75d217ab4 100644 --- a/apps/ffcniftyb/app.js +++ b/apps/ffcniftyb/app.js @@ -2,7 +2,7 @@ const locale = require("locale"); const storage = require('Storage'); const is12Hour = (storage.readJSON("setting.json", 1) || {})["12hour"]; -const color = (storage.readJSON("ffcniftyb.json", 1) || {})[/*LANG*/"color"] || 63488 /* red */; +const color = (storage.readJSON("ffcniftyb.json", 1) || {})["color"] || 63488 /* red */; /* Clock *********************************************/ diff --git a/apps/gpsinfo/gps-info.js b/apps/gpsinfo/gps-info.js index a6e21af0d..0eca2ccf5 100644 --- a/apps/gpsinfo/gps-info.js +++ b/apps/gpsinfo/gps-info.js @@ -5,7 +5,7 @@ function satelliteImage() { var Layout = require("Layout"); var layout; //Bangle.setGPSPower(1, "app"); -E.showMessage(/*LANG*/"Loading..."); // avoid showing rubbish on screen +E.showMessage("Loading..."); // avoid showing rubbish on screen var lastFix = { fix: -1, diff --git a/apps/gpsrec/app.js b/apps/gpsrec/app.js index 712567be5..833a816ea 100644 --- a/apps/gpsrec/app.js +++ b/apps/gpsrec/app.js @@ -251,7 +251,7 @@ function plotTrack(info) { g.drawString(require("locale").distance(dist),g.getWidth() / 2, g.getHeight() - 20); g.setFont("6x8",2); g.setFontAlign(0,0,3); - g.drawString(/*LANG*/"Back",g.getWidth() - 10, g.getHeight()/2); + g.drawString("Back",g.getWidth() - 10, g.getHeight()/2); setWatch(function() { viewTrack(info.fn, info); }, global.BTN3||BTN1); @@ -335,7 +335,7 @@ function plotGraph(info, style) { }); g.setFont("6x8",2); g.setFontAlign(0,0,3); - g.drawString(/*LANG*/"Back",g.getWidth() - 10, g.getHeight() - 40); + g.drawString("Back",g.getWidth() - 10, g.getHeight() - 40); setWatch(function() { viewTrack(info.fn, info); }, global.BTN3||BTN1); diff --git a/apps/gpstime/gpstime.js b/apps/gpstime/gpstime.js index d22783e3a..8c80953fa 100644 --- a/apps/gpstime/gpstime.js +++ b/apps/gpstime/gpstime.js @@ -40,7 +40,7 @@ var layout = new Layout( { {type:"txt", fillx:1, filly:1, font:"6x8:2", label:"---", id:"gpstime" } ]},{lazy:true, btns: [ { label : "Set", cb : setGPSTime}, - { label : /*LANG*/"Back", cb : ()=>load() } + { label : "Back", cb : ()=>load() } ]}); diff --git a/apps/hardalarm/hardalarm.js b/apps/hardalarm/hardalarm.js index b9ce731d4..e33bd39cc 100644 --- a/apps/hardalarm/hardalarm.js +++ b/apps/hardalarm/hardalarm.js @@ -40,7 +40,7 @@ function showNumberPicker(currentGuess, randomNum) { function showPrompt(msg, buzzCount, alarm) { E.showPrompt(msg,{ title:"STAY AWAKE!", - buttons : {/*LANG*/"Sleep":0,"Stop":1} // default is sleep so it'll come back in 10 mins + buttons : {"Sleep":0,"Stop":1} // default is sleep so it'll come back in 10 mins }).then(function(choice) { buzzCount = 0; if (choice==0) { diff --git a/apps/hidmsic/hid-music.js b/apps/hidmsic/hid-music.js index 60aa2cf08..db81744f3 100644 --- a/apps/hidmsic/hid-music.js +++ b/apps/hidmsic/hid-music.js @@ -5,7 +5,7 @@ const settings = storage.readJSON('setting.json',1) || { HID: false }; var sendHid, next, prev, toggle, up, down, profile; if (settings.HID=="kbmedia") { - profile = /*LANG*/'Music'; + profile = 'Music'; sendHid = function (code, cb) { try { NRF.sendHIDReport([1,code], () => { diff --git a/apps/hidmsicswipe/hidmsicswipe.js b/apps/hidmsicswipe/hidmsicswipe.js index 7da81900b..e0fc760a4 100644 --- a/apps/hidmsicswipe/hidmsicswipe.js +++ b/apps/hidmsicswipe/hidmsicswipe.js @@ -7,7 +7,7 @@ var lasty = 0; var lastx = 0; if (settings.HID=="kbmedia") { - profile = /*LANG*/'Music'; + profile = 'Music'; sendHid = function (code, cb) { try { NRF.sendHIDReport([1,code], () => { @@ -36,8 +36,8 @@ if (settings.HID=="kbmedia") { function drawApp() { g.clear(); - if(Bangle.isLocked()==false) E.showMessage('Swipe', /*LANG*/'Music'); - else E.showMessage('Locked', /*LANG*/'Music'); + if(Bangle.isLocked()==false) E.showMessage('Swipe', 'Music'); + else E.showMessage('Locked', 'Music'); } if (next) { diff --git a/apps/intervalTimer/app.js b/apps/intervalTimer/app.js index 906a8f8e0..fd57dbe2b 100644 --- a/apps/intervalTimer/app.js +++ b/apps/intervalTimer/app.js @@ -172,7 +172,7 @@ function setNumSets(){ type:"v", c: [ {type:"txt", font:"6x8:2", label:"Number Sets", id:"title" }, {type:"txt", font:"30%", pad: 20, label: numSets, id:"value" }, - {type:"btn", font:"6x8:2", label:/*LANG*/"Back", cb: l => { + {type:"btn", font:"6x8:2", label:"Back", cb: l => { setRestTime(); } } @@ -217,7 +217,7 @@ function setRestTime(){ type:"v", c: [ {type:"txt", font:"6x8:2", label:"Rest Time", id:"title" }, {type:"txt", font:"30%", pad: 20, label: restTime, id:"value" }, - {type:"btn", font:"6x8:2", label:/*LANG*/"Back", cb: l => { + {type:"btn", font:"6x8:2", label:"Back", cb: l => { setActiveTime(); } } diff --git a/apps/intervals/intervals.app.js b/apps/intervals/intervals.app.js index c0f368687..da436b104 100644 --- a/apps/intervals/intervals.app.js +++ b/apps/intervals/intervals.app.js @@ -152,7 +152,7 @@ function showMenu() "Work seconds" : { value : settings.workseg,min:0,max:59,step:5,onchange : v => { settings.workseg=v; } }, "Rest minutes" : { value : settings.restmin,min:0,max:59,step:1,onchange : v => { settings.restmin=v; } }, "Rest seconds" : { value : settings.restseg,min:0,max:59,step:5,onchange : v => { settings.restseg=v; } }, - "Signal type" : { value : settings.buzz,format : v => v?"Buzz":/*LANG*/"Beep",onchange : v => { settings.buzz=v; }} + "Signal type" : { value : settings.buzz,format : v => v?"Buzz":"Beep",onchange : v => { settings.buzz=v; }} }; E.showMenu(mainmenu); diff --git a/apps/ios/boot.js b/apps/ios/boot.js index f95bd6839..50286c4a6 100644 --- a/apps/ios/boot.js +++ b/apps/ios/boot.js @@ -132,7 +132,7 @@ E.on('notify',msg=>{ // Apple media service E.on('AMS',a=>{ function push(m) { - var msg = { t : "modify", id : "music", title:/*LANG*/"Music" }; + var msg = { t : "modify", id : "music", title:"Music" }; if (a.id=="artist") msg.artist = m; else if (a.id=="album") msg.album = m; else if (a.id=="title") msg.track = m; diff --git a/apps/jbm8b/app.js b/apps/jbm8b/app.js index bb77b1303..53baa32e3 100644 --- a/apps/jbm8b/app.js +++ b/apps/jbm8b/app.js @@ -2,12 +2,12 @@ const affirmative = [ 'It is\ncertain.', 'It is\ndicededly\nso.', 'Without\na doubt.', - /*LANG*/'Yes\ndefinitely.', + 'Yes\ndefinitely.', 'You may\nrely\non it.', 'As I see,\nit yes.', 'Most\nlikely.', 'Outlook\ngood.', - /*LANG*/'Yes.', + 'Yes.', 'Signs point\nto yes.' ]; const nonCommittal = [ diff --git a/apps/lcars/lcars.app.js b/apps/lcars/lcars.app.js index f430c1c43..c020c49e8 100644 --- a/apps/lcars/lcars.app.js +++ b/apps/lcars/lcars.app.js @@ -3,7 +3,7 @@ const locale = require('locale'); const storage = require('Storage') let settings = { alarm: -1, - dataRow1: /*LANG*/"Steps", + dataRow1: "Steps", dataRow2: "Temp", dataRow3: "Battery" }; @@ -151,7 +151,7 @@ function _drawData(key, y, c){ var value = "ERR"; var should_print= true; - if(key == /*LANG*/"STEPS"){ + if(key == "STEPS"){ text = "STEP"; value = getSteps(); diff --git a/apps/lightswitch/settings.js b/apps/lightswitch/settings.js index 13fe5dc39..aac159148 100644 --- a/apps/lightswitch/settings.js +++ b/apps/lightswitch/settings.js @@ -107,8 +107,8 @@ step: 1 }, unlockSide: { - title: ["off", "left", "right", "top", "bottom", "front", /*LANG*/"back"], - value: ["", "left", "right", "top", "bottom", "front", /*LANG*/"back"] + title: ["off", "left", "right", "top", "bottom", "front", "back"], + value: ["", "left", "right", "top", "bottom", "front", "back"] }, tapOn: { title: ["on locked", "on unlocked", "always on"], diff --git a/apps/lightswitch/widget.js b/apps/lightswitch/widget.js index c394df2e8..119a114fe 100644 --- a/apps/lightswitch/widget.js +++ b/apps/lightswitch/widget.js @@ -21,7 +21,7 @@ area: "tr", sortorder: 10, width: 23, - dragStatus: /*LANG*/"off", + dragStatus: "off", // internal function // // write settings to storage @@ -165,7 +165,7 @@ // on touch release remove drag listener and reset drag status to indicate stopped drag action if (!event.b) { Bangle.removeListener("drag", w.dragListener); - w.dragStatus = /*LANG*/"off"; + w.dragStatus = "off"; } // clear variables @@ -181,7 +181,7 @@ var w = WIDGETS.lightswitch; // skip all if drag action ongoing - if (w.dragStatus === /*LANG*/"off") { + if (w.dragStatus === "off") { // check if inside widget area if (!(!w || cursor.x < w.x || cursor.x > w.x + w.width || @@ -199,7 +199,7 @@ // clear drag timeout if (typeof w.dragStatus === "number") clearTimeout(w.dragStatus); // reset drag status to indicate stopped drag action - w.dragStatus = /*LANG*/"off"; + w.dragStatus = "off"; }, w.dragDelay, w); } // switch backlight diff --git a/apps/ltherm/app.js b/apps/ltherm/app.js index 2cbf26e5f..7accae2ed 100644 --- a/apps/ltherm/app.js +++ b/apps/ltherm/app.js @@ -20,6 +20,6 @@ const avg = []; setInterval(function() { drawTemperature(); }, 2000); -E.showMessage(/*LANG*/"Loading..."); +E.showMessage("Loading..."); Bangle.loadWidgets(); Bangle.drawWidgets(); diff --git a/apps/marioclock/marioclock-app.js b/apps/marioclock/marioclock-app.js index 20dc0814f..6289a2568 100644 --- a/apps/marioclock/marioclock-app.js +++ b/apps/marioclock/marioclock-app.js @@ -73,7 +73,7 @@ let lastTemp = 0; const phone = { get status() { - return NRF.getSecurityStatus().connected ? /*LANG*/"Yes" : "No"; + return NRF.getSecurityStatus().connected ? "Yes" : "No"; }, message: null, messageTimeout: null, diff --git a/apps/menuwheel/boot.js b/apps/menuwheel/boot.js index f5bfff498..deb15264d 100644 --- a/apps/menuwheel/boot.js +++ b/apps/menuwheel/boot.js @@ -14,7 +14,7 @@ E.showMenu = function(items) { // show "< Back" item (or similar) as button instead (i.e. remove from the menu) var back,backLbl; - for (var b of [/*LANG*/'Back', 'Exit', 'Cancel']) { + for (var b of ['Back', 'Exit', 'Cancel']) { if (!items[b] && items['< '+b]) b = '< '+b; back = items[b]; if (typeof back === "function") { diff --git a/apps/messages/app.js b/apps/messages/app.js index 05a02191c..ec147daf8 100644 --- a/apps/messages/app.js +++ b/apps/messages/app.js @@ -98,7 +98,7 @@ function getMessageImage(msg) { if (s=="whatsapp") return atob("GBiBAAB+AAP/wAf/4A//8B//+D///H9//n5//nw//vw///x///5///4///8e//+EP3/APn/wPn/+/j///H//+H//8H//4H//wMB+AA=="); if (s=="wordfeud") return atob("GBgCWqqqqqqlf//////9v//////+v/////++v/////++v8///Lu+v8///L++v8///P/+v8v//P/+v9v//P/+v+fx/P/+v+Pk+P/+v/PN+f/+v/POuv/+v/Ofdv/+v/NvM//+v/I/Y//+v/k/k//+v/i/w//+v/7/6//+v//////+v//////+f//////9Wqqqqqql"); if (msg.id=="music") return atob("FhaBAH//+/////////////h/+AH/4Af/gB/+H3/7/f/v9/+/3/7+f/vB/w8H+Dwf4PD/x/////////////3//+A="); - if (msg.id==/*LANG*/"back") return getBackImage(); + if (msg.id=="back") return getBackImage(); return getNotificationImage(); } function getMessageImageCol(msg,def) { @@ -375,7 +375,7 @@ function checkMessages(options) { if (msg && msg.new) g.setBgColor(colBg); else g.setBgColor((idx&1) ? colSBg1 : colSBg2); g.clearRect(r.x,r.y,r.x+r.w-1,r.y+r.h-1).setColor(g.theme.fg); - if (idx==0) msg = {id:/*LANG*/"back", title:"< Back"}; + if (idx==0) msg = {id:"back", title:"< Back"}; if (!msg) return; var x = r.x+2, title = msg.title, body = msg.body; var img = getMessageImage(msg); diff --git a/apps/ncstart/start.js b/apps/ncstart/start.js index b34066376..d2d713cb2 100644 --- a/apps/ncstart/start.js +++ b/apps/ncstart/start.js @@ -29,7 +29,7 @@ function welcome() { setWatch(() => { clearInterval(i); clearWatch(); - E.showMessage(/*LANG*/'Loading...'); + E.showMessage('Loading...'); res(); }, BTN2, {repeat:false}); }); diff --git a/apps/numerals/numerals.settings.js b/apps/numerals/numerals.settings.js index ad56e7d04..ae321322a 100644 --- a/apps/numerals/numerals.settings.js +++ b/apps/numerals/numerals.settings.js @@ -32,7 +32,7 @@ "Date on touch": { value: 0|numeralsSettings.showDate, min:0,max:1, - format: v=>v?"On":/*LANG*/"Off", + format: v=>v?"On":"Off", onchange: v=> { numeralsSettings.showDate=v; updateSettings();} }, "< back": back diff --git a/apps/pebble/pebble.app.js b/apps/pebble/pebble.app.js index 35f700762..106e09b82 100644 --- a/apps/pebble/pebble.app.js +++ b/apps/pebble/pebble.app.js @@ -12,7 +12,7 @@ const SETTINGS_FILE = "pebble.json"; let settings; function loadSettings() { - settings = require("Storage").readJSON(SETTINGS_FILE,1)|| {'bg': '#0f0', /*LANG*/'color': 'Green'}; + settings = require("Storage").readJSON(SETTINGS_FILE,1)|| {'bg': '#0f0', 'color': 'Green'}; } var img = require("heatshrink").decompress(atob("oFAwkEogA/AH4A/AH4A/AH4A/AE8AAAoeXoAfeDQUBmcyD7A+Dh///8QD649CiAfaHwUvD4sEHy0DDYIfEICg+Cn4fHICY+DD4nxcgojOHwgfEIAYfRCIQaDD4ZAFD5r7DH4//kAfRCIZ/GAAnwD5p9DX44fTHgYSBf4ofVDAQEBl4fFUAgfOXoQzBgIfFBAIfPP4RAEAoYAB+cRiK/SG4h/WIBAfXIA7CBAAswD55AHn6fUIBMCD65AHl4gCmcziAfQQJqfQQJpiDgk0IDXxQLRAEECaBM+QgRYRYgUIA0CD4ggSQJiDCiAKBICszAAswD55AHABKBVD7BAFABIqBD5pAFABPxD55AOD6BADiIAJQAyxLABwf/gaAPAH4A/AH4ARA==")); diff --git a/apps/pebbled/pebbled.app.js b/apps/pebbled/pebbled.app.js index 378a3878d..bbe98823f 100644 --- a/apps/pebbled/pebbled.app.js +++ b/apps/pebbled/pebbled.app.js @@ -12,7 +12,7 @@ const SETTINGS_FILE = "pebbleDistance.json"; let settings; function loadSettings() { - settings = require("Storage").readJSON(SETTINGS_FILE,1)|| {'bg': '#0f0', /*LANG*/'color': 'Green', 'avStep': 0.75}; + settings = require("Storage").readJSON(SETTINGS_FILE,1)|| {'bg': '#0f0', 'color': 'Green', 'avStep': 0.75}; } var img = require("heatshrink").decompress(atob("oFAwkEogA/AH4A/AH4A/AH4A/AE8AAAoeXoAfeDQUBmcyD7A+Dh///8QD649CiAfaHwUvD4sEHy0DDYIfEICg+Cn4fHICY+DD4nxcgojOHwgfEIAYfRCIQaDD4ZAFD5r7DH4//kAfRCIZ/GAAnwD5p9DX44fTHgYSBf4ofVDAQEBl4fFUAgfOXoQzBgIfFBAIfPP4RAEAoYAB+cRiK/SG4h/WIBAfXIA7CBAAswD55AHn6fUIBMCD65AHl4gCmcziAfQQJqfQQJpiDgk0IDXxQLRAEECaBM+QgRYRYgUIA0CD4ggSQJiDCiAKBICszAAswD55AHABKBVD7BAFABIqBD5pAFABPxD55AOD6BADiIAJQAyxLABwf/gaAPAH4A/AH4ARA==")); diff --git a/apps/presentor/app.js b/apps/presentor/app.js index d553e4d8a..6b7450a0c 100644 --- a/apps/presentor/app.js +++ b/apps/presentor/app.js @@ -106,7 +106,7 @@ let mainLayout = new Layout({ type: 'txt', font: '15%', label: '00:00', - id: /*LANG*/'Timer', + id: 'Timer', halign: 1, pad: 3 } diff --git a/apps/ptlaunch/app.js b/apps/ptlaunch/app.js index 18d355dbf..5db3a335b 100644 --- a/apps/ptlaunch/app.js +++ b/apps/ptlaunch/app.js @@ -58,7 +58,7 @@ var showMainMenu = () => { showScrollerContainingAppsWithPatterns().then((selected) => { var pattern = selected.pattern; var appName = selected.appName; - if (pattern === /*LANG*/"back") { + if (pattern === "back") { showMainMenu(); } else { E.showPrompt(appName + "\n\npattern:\n" + pattern, { @@ -309,7 +309,7 @@ var showScrollerContainingAppsWithPatterns = () => { }, select: (i) => { log("selected: " + i); - var pattern = /*LANG*/"back"; + var pattern = "back"; var appName = ""; if (i > 0) { var storedPattern = storedPatternsArray[i - 1]; diff --git a/apps/puzzle15/puzzle15.app.js b/apps/puzzle15/puzzle15.app.js index a19494a68..eec21933c 100644 --- a/apps/puzzle15/puzzle15.app.js +++ b/apps/puzzle15/puzzle15.app.js @@ -63,7 +63,7 @@ var startWith; /* For development purposes require('Storage').writeJSON(SETTINGSFILE, { - splashMode: /*LANG*/"off", + splashMode: "off", startWith: "5x5", }); /* */ @@ -622,9 +622,9 @@ function framedText(text, x, y, textcol, framecol) { } // Show the splash screen at program start, call afterSplash afterwards. -// If spash mode is /*LANG*/"off", call afterSplash directly. +// If spash mode is "off", call afterSplash directly. function showSplash(afterSplash) { - if (splashMode === /*LANG*/"off") + if (splashMode === "off") afterSplash(); else { g.reset(); diff --git a/apps/rebble/rebble.app.js b/apps/rebble/rebble.app.js index de6facdc6..d186ea8ec 100644 --- a/apps/rebble/rebble.app.js +++ b/apps/rebble/rebble.app.js @@ -33,7 +33,7 @@ function loadLocation() { } function loadSettings() { - settings = require("Storage").readJSON(SETTINGS_FILE,1)|| {'bg': '#0f0', /*LANG*/'color': 'Green'}; + settings = require("Storage").readJSON(SETTINGS_FILE,1)|| {'bg': '#0f0', 'color': 'Green'}; } function extractTime(d){ diff --git a/apps/recorder/app.js b/apps/recorder/app.js index 320f4d83d..7075563aa 100644 --- a/apps/recorder/app.js +++ b/apps/recorder/app.js @@ -305,7 +305,7 @@ function viewTrack(filename, info) { g.drawString(require("locale").distance(dist),g.getWidth() / 2, g.getHeight() - 20); g.setFont("6x8",2); g.setFontAlign(0,0,3); - g.drawString(/*LANG*/"Back",g.getWidth() - 10, g.getHeight() - 40); + g.drawString("Back",g.getWidth() - 10, g.getHeight() - 40); setWatch(function() { viewTrack(info.fn, info); }, global.BTN3||BTN1); @@ -404,7 +404,7 @@ function viewTrack(filename, info) { }); g.setFont("6x8",2); g.setFontAlign(0,0,3); - g.drawString(/*LANG*/"Back",g.getWidth() - 10, g.getHeight() - 40); + g.drawString("Back",g.getWidth() - 10, g.getHeight() - 40); setWatch(function() { viewTrack(info.filename, info); }, global.BTN3||BTN1); diff --git a/apps/recorder/widget.js b/apps/recorder/widget.js index 97b4e7208..e10c99c0c 100644 --- a/apps/recorder/widget.js +++ b/apps/recorder/widget.js @@ -99,8 +99,8 @@ steps:function() { var lastSteps = 0; return { - name : /*LANG*/"Steps", - fields : [/*LANG*/"Steps"], + name : "Steps", + fields : ["Steps"], getValues : () => { var c = Bangle.getStepCount(), r=[c-lastSteps]; lastSteps = c; diff --git a/apps/sensible/sensible.js b/apps/sensible/sensible.js index 63b5bc9e2..8ec7d93d4 100644 --- a/apps/sensible/sensible.js +++ b/apps/sensible/sensible.js @@ -50,7 +50,7 @@ let barMenu = { "": { "title" : "- Barometer -" }, "State": { value: settings.isBarEnabled, - format: v => v ? "On" : /*LANG*/"Off", + format: v => v ? "On" : "Off", onchange: v => { updateSetting('isBarEnabled', v); } }, "Altitude": { value: null }, @@ -62,7 +62,7 @@ let gpsMenu = { "": { "title" : "- GPS -" }, "State": { value: settings.isGpsEnabled, - format: v => v ? "On" : /*LANG*/"Off", + format: v => v ? "On" : "Off", onchange: v => { updateSetting('isGpsEnabled', v); } }, "Lat": { value: null }, @@ -76,7 +76,7 @@ let hrmMenu = { "": { "title" : "- Heart Rate -" }, "State": { value: settings.isHrmEnabled, - format: v => v ? "On" : /*LANG*/"Off", + format: v => v ? "On" : "Off", onchange: v => { updateSetting('isHrmEnabled', v); } }, "BPM": { value: null }, @@ -87,7 +87,7 @@ let magMenu = { "": { "title" : "- Magnetometer -" }, "State": { value: settings.isMagEnabled, - format: v => v ? "On" : /*LANG*/"Off", + format: v => v ? "On" : "Off", onchange: v => { updateSetting('isMagEnabled', v); } }, "x": { value: null }, diff --git a/apps/setting/settings.js b/apps/setting/settings.js index cd8953aaa..65e076753 100644 --- a/apps/setting/settings.js +++ b/apps/setting/settings.js @@ -704,7 +704,7 @@ function showAppSettings(app) { return showError(/*LANG*/'Invalid settings'); } try { - // pass showAppSettingsMenu as /*LANG*/"back" argument + // pass showAppSettingsMenu as "back" argument appSettings(()=>showAppSettingsMenu()); } catch (e) { console.log(`${app.name} settings error:`, e) diff --git a/apps/simpletimer/app.js b/apps/simpletimer/app.js index 272c00f0a..e99761810 100644 --- a/apps/simpletimer/app.js +++ b/apps/simpletimer/app.js @@ -116,7 +116,7 @@ function drawLabels() { g.setFont("6x8", 1); g.drawString("Reset (re)start", 230, 120); if (state != "started") // only when not runnung - g.drawString(/*LANG*/"Back", 230, 120); + g.drawString("Back", 230, 120); } function resetTimer(value) { diff --git a/apps/sleepphasealarm/app.js b/apps/sleepphasealarm/app.js index 5bb2c006c..39f9b59db 100644 --- a/apps/sleepphasealarm/app.js +++ b/apps/sleepphasealarm/app.js @@ -68,7 +68,7 @@ function drawApp() { if (alarmHour < 10) alarmHour = "0" + alarmHour; if (alarmMinute < 10) alarmMinute = "0" + alarmMinute; const s = "Alarm at " + alarmHour + ":" + alarmMinute + "\n\n"; //# make distinct to time - E.showMessage(s, /*LANG*/"Sleep Phase Alarm"); + E.showMessage(s, "Sleep Phase Alarm"); function drawTime() { if (Bangle.isLCDOn()) { @@ -125,7 +125,7 @@ if (nextAlarm !== undefined) { if (swest !== undefined) { if (Bangle.isLCDOn()) { - drawString(swest ? /*LANG*/"Sleep" : "Awake", BANGLEJS2 ? 150 : 180); //# remove x, adjust height + drawString(swest ? "Sleep" : "Awake", BANGLEJS2 ? 150 : 180); //# remove x, adjust height } } diff --git a/apps/smartibot/app.js b/apps/smartibot/app.js index 8760bc59c..88ea5e276 100644 --- a/apps/smartibot/app.js +++ b/apps/smartibot/app.js @@ -35,7 +35,7 @@ function findDevices() { m[dev.id.substr(0,17)] = () => startConnectChoose(dev); }); m["Search again"] = () => findDevices(); - m[/*LANG*/"Back"] = () => load(); + m["Back"] = () => load(); E.showMenu(m); } }, {timeout : 2000, filters : [{ name : "Espruino SMARTIBOT" }] }); @@ -46,7 +46,7 @@ function startConnectChoose(device) { "": {title:"Control Method"}, "Accelerometer" : () => startConnectAccel(device), "Button" : () => startConnectBtn(device), - /*LANG*/"Back": () => load(), + "Back": () => load(), }); } @@ -57,7 +57,7 @@ function startConnectBtn(device) { function(gatt, write) { function setMotors(val) { write(`\x10w(${val})\n`); } drawBGBtn(); - g.reset().setFont("6x8",2).setFontAlign(0,0,1).drawString(/*LANG*/"BACK", 230,200); + g.reset().setFont("6x8",2).setFontAlign(0,0,1).drawString("BACK", 230,200); var state = 0; var watches = [ setWatch(e=>setMotors(state = (state&0b0011) | (e.state<<2)), BTN4, {repeat:true, edge:0}), @@ -81,7 +81,7 @@ function startConnectAccel(device) { "\x03\x10function w(x,y,z,v){var a=analogWrite;a(D4,x);a(D6,y);a(D10,z);a(D11,v);}\n", function(gatt, write) { drawBGAccel(); - g.reset().setFont("6x8",2).setFontAlign(0,0,1).drawString(/*LANG*/"BACK", 230,200); + g.reset().setFont("6x8",2).setFontAlign(0,0,1).drawString("BACK", 230,200); Bangle.on("accel", function(a) { var v = [0,0,0,0]; if (a.z<-0.5) { diff --git a/apps/smtswch/app.js b/apps/smtswch/app.js index bab06be79..e8491a065 100644 --- a/apps/smtswch/app.js +++ b/apps/smtswch/app.js @@ -35,7 +35,7 @@ function loadPage(page) { g.setFont("Vector", 15); g.drawString(page.name, g.getWidth() / 2, 200); g.setFont("Vector", 40); - g.drawString(page.state ? "On" : /*LANG*/"Off", g.getWidth() / 2, g.getHeight() / 2); + g.drawString(page.state ? "On" : "Off", g.getWidth() / 2, g.getHeight() / 2); g.drawImage(storage.read(`${icon}.img`), g.getWidth() / 2 - 24, g.getHeight() / 2 - 24 - 50); } diff --git a/apps/sonicclk/app.js b/apps/sonicclk/app.js index e027ed676..eddb971f8 100644 --- a/apps/sonicclk/app.js +++ b/apps/sonicclk/app.js @@ -268,7 +268,7 @@ const settingsMenu = { "": { title: "Settings" }, "Active Mode": { value: settings.activeMode, - format: (v) => (v ? "On" : /*LANG*/"Off"), + format: (v) => (v ? "On" : "Off"), onchange: (v) => (settings.activeMode = v), }, "Twist Thresh": { diff --git a/apps/themesetter/app.js b/apps/themesetter/app.js index 303cdba02..aa3c608cf 100644 --- a/apps/themesetter/app.js +++ b/apps/themesetter/app.js @@ -376,7 +376,7 @@ ] }, { height:4 }, { type:'h', c:[ - Button(/*LANG*/'Back', { common:halfWidthButton, onTouch:() => gotoScreen('DetailSelectionScreen') }), + Button('Back', { common:halfWidthButton, onTouch:() => gotoScreen('DetailSelectionScreen') }), Button('Preview', { common:halfWidthButton, onTouch:() => gotoScreen('ThemePreviewScreen') }) ], filly:1 }, ] @@ -399,7 +399,7 @@ ] }, { height:4 }, { type:'h', c:[ - Button(/*LANG*/'Back', { common:legible, pad:4, onTouch:() => gotoScreen('ColorSelectionScreen') }) + Button('Back', { common:legible, pad:4, onTouch:() => gotoScreen('ColorSelectionScreen') }) ], filly:1 } ] }); diff --git a/apps/thermomF/app.js b/apps/thermomF/app.js index ac754d448..2961e1efc 100644 --- a/apps/thermomF/app.js +++ b/apps/thermomF/app.js @@ -23,6 +23,6 @@ setInterval(function() { drawTemperature(); }, 20000); drawTemperature(); -E.showMessage(/*LANG*/"Loading..."); +E.showMessage("Loading..."); Bangle.loadWidgets(); Bangle.drawWidgets(); \ No newline at end of file diff --git a/apps/timerclk/alarm.alert.js b/apps/timerclk/alarm.alert.js index 133cc5118..f4b61822a 100644 --- a/apps/timerclk/alarm.alert.js +++ b/apps/timerclk/alarm.alert.js @@ -9,8 +9,8 @@ function showAlarm(alarm) { Bangle.loadWidgets(); Bangle.drawWidgets(); Bangle.setLocked(false); - E.showPrompt(/*LANG*/"Alarm!",{ - title:/*LANG*/"ALARM!", + E.showPrompt("Alarm!",{ + title:"ALARM!", buttons : {/*LANG*/"Ok":true} }).then(function(ok) { buzzCount = 0; diff --git a/apps/torch/app.js b/apps/torch/app.js index 071de5d46..864efb883 100644 --- a/apps/torch/app.js +++ b/apps/torch/app.js @@ -2,7 +2,7 @@ const SETTINGS_FILE = "torch.json"; let settings; function loadSettings() { - settings = require("Storage").readJSON(SETTINGS_FILE,1)|| {'bg': '#FFFFFF', /*LANG*/'color': 'White'}; + settings = require("Storage").readJSON(SETTINGS_FILE,1)|| {'bg': '#FFFFFF', 'color': 'White'}; } loadSettings(); diff --git a/apps/toucher/app.js b/apps/toucher/app.js index 19310592e..aab50fbda 100644 --- a/apps/toucher/app.js +++ b/apps/toucher/app.js @@ -255,7 +255,7 @@ function run(){ if (process.env.HWVERSION == 1) Bangle.setLCDMode(); g.clear(); g.flip(); - E.showMessage(/*LANG*/"Loading..."); + E.showMessage("Loading..."); load(app.src); } diff --git a/apps/viewstl/viewstl.min.js b/apps/viewstl/viewstl.min.js index 82975bbf9..77469042c 100644 --- a/apps/viewstl/viewstl.min.js +++ b/apps/viewstl/viewstl.min.js @@ -216,7 +216,7 @@ function loadFile(fn) { Bangle.setLCDMode("direct"); g.clear(); E.showMenu(); - E.showMessage(/*LANG*/"Loading...", fn); + E.showMessage("Loading...", fn); readSTL(fn); zDist = 5*largestExtent(points); g.clear(); diff --git a/apps/walkersclock/app.js b/apps/walkersclock/app.js index e18879e01..8a5e826c4 100644 --- a/apps/walkersclock/app.js +++ b/apps/walkersclock/app.js @@ -203,7 +203,7 @@ function drawInfo() { break; case FN_MODE_GPS: col = 0x07FF; // cyan - str = "GPS: " + (gpsPowerState ? "ON" : /*LANG*/"OFF"); + str = "GPS: " + (gpsPowerState ? "ON" : "OFF"); drawModeLine(str,col); return; case FN_MODE_GDISP: @@ -560,7 +560,7 @@ Bangle.on('lcdPower',function(on) { prevInfoStr = "on"; // forces are redraw drawAll(); } else { - prevInfoStr = /*LANG*/"off"; // forces are redraw + prevInfoStr = "off"; // forces are redraw drawInfo(); } }); diff --git a/apps/widbatpc/widget.js b/apps/widbatpc/widget.js index b69ef25de..529923386 100644 --- a/apps/widbatpc/widget.js +++ b/apps/widbatpc/widget.js @@ -28,7 +28,7 @@ function loadSettings() { settings = require('Storage').readJSON(SETTINGS_FILE, 1) || {}; const DEFAULTS = { - /*LANG*/'color': 'By Level', + 'color': 'By Level', 'percentage': true, 'charger': true, 'hideifmorethan': 100, @@ -46,7 +46,7 @@ const levelColor = (l) => { // "charging" is very bright -> percentage is hard to read, "high" is ok(ish) const green = setting('percentage') ? COLORS.high : COLORS.charging; - switch (setting(/*LANG*/'color')) { + switch (setting('color')) { case 'Monochrome': return COLORS.white; // no chance of reading the percentage here :-( case 'Green': return green; case 'By Level': // fall through @@ -64,7 +64,7 @@ } }; const chargerColor = () => { - return (setting(/*LANG*/'color') === 'Monochrome') ? COLORS.white : COLORS.charging; + return (setting('color') === 'Monochrome') ? COLORS.white : COLORS.charging; }; // sets width, returns true if it changed @@ -112,7 +112,7 @@ return; } let gfx = g; - if (setting(/*LANG*/'color') === 'Monochrome') { + if (setting('color') === 'Monochrome') { // draw text inverted on battery level gfx = Graphics.createCallback(g.getWidth(),g.getHeight(), 1, (x,y) => {g.setPixel(x,y,x<=xl?0:-1);}); diff --git a/apps/widpedom/widget.js b/apps/widpedom/widget.js index 2135bea1a..cc7fdb579 100644 --- a/apps/widpedom/widget.js +++ b/apps/widpedom/widget.js @@ -9,7 +9,7 @@ function loadSettings() { const d = require('Storage').readJSON("wpedom.json", 1) || {}; settings = Object.assign({ - /*LANG*/'goal': 10000, + 'goal': 10000, 'progress': false, 'large': false, 'hide': false diff --git a/bin/language_scan.js b/bin/language_scan.js index eede250de..6385caf49 100755 --- a/bin/language_scan.js +++ b/bin/language_scan.js @@ -5,14 +5,14 @@ outputs a list of strings that have been found. See https://github.com/espruino/BangleApps/issues/1311 */ -let AUTO_TRANSLATE = false; let translate = false; if (process.env.DEEPL) { + // Requires translate + // npm i translate translate = require("translate"); translate.engine = "deepl"; // Or "yandex", "libre", "deepl" - translate.key = process.env.DEEPL; - translate.url = "https://api-free.deepl.com/v2/translate"; - AUTO_TRANSLATE = true; + translate.key = process.env.DEEPL; // Requires API key (which are free) + translate.url = process.env.TURL; } var IGNORE_STRINGS = [ @@ -25,10 +25,8 @@ var IGNORE_STRINGS = [ "play","stop","pause", "volumeup", "volumedown", // music state "${hours}:${minutes}:${seconds}", "${hours}:${minutes}", "BANGLEJS", - "NONE", - "fgH", "bgH", - "m/s", - "undefined", "kbmedia" + "fgH", "bgH", "m/s", + "undefined", "kbmedia", "NONE", ]; var IGNORE_FUNCTION_PARAMS = [ @@ -190,8 +188,11 @@ log(""); log("Maybe we should add /*LANG*/ to these automatically?"); log(""); const wordsToAdd = untranslatedStrings.filter(e => translatedStrings.find(t=>t.str==e.str)); + // Uncomment to add LANG to all strings +// THIS IS EXPERIMENTAL //wordsToAdd.forEach(e => e.files.forEach(a => applyLANG(e.str, a))); + log(wordsToAdd.map(e=>`${JSON.stringify(e.str)} (${e.uses} uses)`).join("\n")); log(""); @@ -226,7 +227,7 @@ for (let language of languages) { let appName = m[0].replaceAll("/", ""); if (translations[appName] && translations[appName][translationItem.str]) { console.log(` but LOCAL translation found in \"${appName}\"`); - } else if (AUTO_TRANSLATE && language.code !== "tr_TR") { // Auto Translate + } else if (translate && language.code !== "tr_TR") { // Auto Translate translationPromises.push(new Promise(async (resolve) => { const translation = await translate(translationItem.str, language.code.split("_")[0]); console.log("Translating:", translationItem.str, translation); diff --git a/lang/bg_BG.json b/lang/bg_BG.json new file mode 100644 index 000000000..8e7fb50bb --- /dev/null +++ b/lang/bg_BG.json @@ -0,0 +1,163 @@ +{ + "//": "Bulgarian language translations", + "GLOBAL": { + "//": "Translations that apply for all apps", + "Connected": "Свързан", + "circle 1": "кръг 1", + "week": "седмица", + "weather circle": "метеорологичен кръг", + "Timer": "Таймер", + "circle count": "брой кръгове", + "Keep Msgs": "Дръжте Msgs", + "Auto snooze": "Автоматична дрямка", + "Foreground": "На преден план", + "battery warn": "предупреждение за батерията", + "color": "цвят", + "Vibration": "Вибрации", + "New Timer": "Нов таймер", + "App Source\nNot found": "Източник на приложения\nНе е намерен", + "circle 2": "кръг 2", + "Circle": "Кръг", + "Record Run": "Записване на рекорд", + "BTNs 1:startlap 2:exit 3:reset": "BTNs 1:startlap 2:exit 3:reset", + "steps": "стъпки", + "Beep": "Бип", + "Unread timer": "Непрочетен таймер", + "Delete all messages": "Изтриване на всички съобщения", + "Music": "Музика", + "minimum": "минимум", + "BLE": "BLE", + "goal": "цел", + "Save": "Запазете", + "maximum": "максимален", + "(repeat)": "(повторение)", + "circle 3": "кръг 3", + "Steps": "Стъпки", + "Bluetooth": "Bluetooth", + "Alarm": "Аларма", + "colorize icon": "оцветяване на икона", + "circle 4": "кръг 4", + "Loading": "Зареждане на", + "step length": "дължина на стъпката", + "HID": "HID", + "Heartrate": "Сърдечен ритъм", + "Dark BW": "Тъмно BW", + "Customize": "Персонализиране на", + "valid period": "валиден период", + "Sleep": "Сън", + "distance goal": "цел за разстояние", + "LCD": "LCD", + "data": "данни", + "Vector font size": "Размер на векторния шрифт", + "Mark Unread": "Маркирайте непрочетеното", + "heartrate": "сърдечен ритъм", + "Show clocks": "Показване на часовници", + "New Alarm": "Нова аларма", + "Are you sure": "Сигурни ли сте, че", + "Highlight BG": "Подчертаване на BG", + "Remove": "Премахване на", + "No Messages": "Няма съобщения", + "Delete All Messages": "Изтриване на всички съобщения", + "Foreground 2": "Преден план 2", + "Launcher Settings": "Настройки на стартера", + "Compact Storage": "Компактно съхранение", + "min. confidence": "мин. доверие", + "Connect device\nto add to\nwhitelist": "Свързване на устройството\nда добавите към\nбял списък", + "LCD Brightness": "Яркост на LCD дисплея", + "Highlight FG": "Изтъкване на FG", + "Twist Threshold": "Праг на усукване", + "Add Device": "Добавяне на устройство", + "LCD Timeout": "Време за изключване на LCD", + "Twist Timeout": "Време за завъртане", + "Log": "Log", + "Time Zone": "Часова зона", + "Clock Style": "Стил на часовника", + "Debug Info": "Информация за отстраняването на грешки", + "Wake on Touch": "Събуждане при докосване", + "View Message": "Преглед на съобщението", + "Quiet Mode": "Тих режим", + "Background 2": "Контекст 2", + "Light BW": "Светлина BW", + "show widgets": "показване на уиджети", + "Font": "Шрифт", + "Piezo": "Piezo", + "Make Connectable": "Свържете се", + "Apps": "Приложения", + "Background": "Фон", + "Twist Max Y": "Twist Max Y", + "Utils": "Услуги", + "Programmable": "Програмируем", + "Wake on BTN2": "Събуждане на BTN2", + "Utilities": "Комунални услуги", + "TAP right top/bottom": "TAP дясно отгоре/отдолу", + "Wake on BTN1": "Събуждане на BTN1", + "Passkey BETA": "Passkey BETA", + "Wake on BTN3": "Събуждане на BTN3", + "Wake on Twist": "Събуждане на Twist", + "Wake on FaceUp": "Събуждане в FaceUp", + "No Clocks Found": "Не са намерени часовници", + "Reset to Defaults": "Възстановяване на настройките по подразбиране", + "Compacting...\nTakes approx\n1 minute": "Уплътняване...\nОтнема приблизително\n1 минута", + "Rewrite Settings": "Настройки за пренаписване", + "Stay Connectable": "Останете свързани", + "Turn Off": "Изключване", + "This will remove everything": "Това ще премахне всичко", + "Flatten Battery": "Сплескайте батерията", + "Reset Settings": "Нулиране на настройките", + "Connectable": "Свързване на", + "Storage": "Съхранение", + "start&lap/reset, BTN1: EXIT": "стартиране и застъпване/ нулиране, BTN1: EXIT", + "Month": "Месец", + "App Settings": "Настройки на приложението", + "Side": "Страна", + "Invalid settings": "Невалидни настройки", + "Date": "Дата", + "No app has settings": "Няма приложение с настройки", + "on": "на", + "Left": "Вляво", + "Minute": "Минута", + "Year": "Година", + "Second": "Втори", + "Hour": "Час", + "Reset all widgets": "Нулиране на всички уиджети", + "Widgets": "Уиджети", + "Flattening battery - this can take hours.\nLong-press button to cancel": "Сплескване на батерията - това може да отнеме часове.\nДълго натиснете бутона, за да отмените", + "TIMER": "ТАЙМЕР", + "Right": "Вдясно", + "Reset": "Нулиране на", + "Reset All": "Нулиране на всички", + "Sort Order": "Ред на сортиране", + "ALARM": "АЛАРМА", + "Minutes": "Протоколи", + "Hours": "Часове", + "Vibrate": "Вибрация", + "off": "от", + "Delete": "Изтриване на", + "Repeat": "Повторете", + "Message": "Съобщение", + "Enabled": "Разрешено", + "Settings": "Настройки", + "System": "Система", + "Alerts": "Сигнали", + "Theme": "Тема", + "Hide": "Скрий", + "Show": "Покажи", + "Messages": "Съобщения", + "Set Time": "Време за настройка", + "Whitelist": "Бял списък", + "On": "На", + "Select Clock": "Избор на часовник", + "Locale": "Местоположение", + "No": "Не", + "Error in settings": "Грешка в настройките", + "Factory Reset": "Фабрично нулиране", + "Disable": "Деактивиране на", + "Off": "Изключено", + "Yes": "Да", + "Ok": "Добре", + "Back": "Обратно" + }, + "alarm": { + "//": "App-specific overrides" + } +} \ No newline at end of file diff --git a/lang/da_DA.json b/lang/da_DA.json new file mode 100644 index 000000000..59aea3068 --- /dev/null +++ b/lang/da_DA.json @@ -0,0 +1,163 @@ +{ + "//": "Danish language translations", + "GLOBAL": { + "//": "Translations that apply for all apps", + "New Alarm": "Ny alarm", + "Alarm": "Alarm", + "New Timer": "Ny timer", + "Save": "Gem", + "(repeat)": "(gentagelse)", + "circle 1": "kreds 1", + "circle 3": "kreds 3", + "circle 2": "kreds 2", + "Auto snooze": "Automatisk slumretid", + "circle 4": "cirkel 4", + "show widgets": "vise widgets", + "Connected": "Tilsluttet", + "Keep Msgs": "Behold msgs", + "min. confidence": "min. tillid", + "heartrate": "hjertefrekvens", + "steps": "trin", + "week": "uge", + "Sleep": "Søvn", + "circle count": "antal cirkler", + "goal": "mål", + "Timer": "Timer", + "Steps": "Trin", + "valid period": "gyldighedsperiode", + "step length": "trinlængde", + "minimum": "minimum", + "weather circle": "vejrkreds", + "maximum": "maksimum", + "data": "data", + "Circle": "Cirkel", + "Heartrate": "Hjertefrekvens", + "battery warn": "batteri advarer", + "App Source\nNot found": "App-kilde\nIkke fundet", + "colorize icon": "farvelægge ikonet", + "distance goal": "mål for afstand", + "TAP right top/bottom": "TAP højre top/bund", + "color": "farve", + "View Message": "Vis besked", + "Show clocks": "Vis ure", + "Mark Unread": "Markér ulæst", + "Unread timer": "Ulæst timer", + "Loading": "Indlæsning", + "Launcher Settings": "Indstillinger for startopsætningen", + "Bluetooth": "Bluetooth", + "Music": "Musik", + "Font": "Skrifttype", + "Vector font size": "Vektor skriftstørrelse", + "BTNs 1:startlap 2:exit 3:reset": "BTN'er 1:startlap 2:exit 3:reset", + "No Messages": "Ingen meddelelser", + "Are you sure": "Er du sikker på", + "Delete All Messages": "Slet alle meddelelser", + "Record Run": "Rekordløb", + "Delete all messages": "Slet alle meddelelser", + "start&lap/reset, BTN1: EXIT": "start&lap/reset, BTN1: EXIT", + "Vibration": "Vibrationer", + "HID": "HID", + "Make Connectable": "Gør det muligt at forbinde", + "LCD": "LCD", + "BLE": "BLE", + "Utils": "Utils", + "Piezo": "Piezo", + "Apps": "Apps", + "Background": "Baggrund", + "Customize": "Tilpas", + "Beep": "Bip", + "Quiet Mode": "Stille tilstand", + "Dark BW": "Mørk BW", + "Programmable": "Programmerbar", + "Passkey BETA": "Passkey BETA", + "Light BW": "Light BW", + "Highlight FG": "fremhæve FG", + "Background 2": "Baggrund 2", + "Foreground": "Forgrund", + "Highlight BG": "fremhæve BG", + "Foreground 2": "Forgrund 2", + "LCD Timeout": "LCD Timeout", + "Remove": "Fjern", + "Wake on BTN2": "Wake på BTN2", + "LCD Brightness": "LCD lysstyrke", + "Add Device": "Tilføj enhed", + "Wake on BTN1": "Vågn op på BTN1", + "Connect device\nto add to\nwhitelist": "Tilslut enhed\ntil at tilføje til\nwhitelist", + "Wake on BTN3": "Wake på BTN3", + "Wake on FaceUp": "Vågn op på FaceUp", + "Log": "Log", + "Debug Info": "Info om fejlfinding", + "Wake on Twist": "Vågn op på Twist", + "Wake on Touch": "Vågn op ved berøring", + "Clock Style": "Ur stil", + "Time Zone": "Tidszone", + "Twist Max Y": "Drej Max Y", + "Twist Threshold": "Twist tærskel", + "Compact Storage": "Kompakt opbevaring", + "Twist Timeout": "Twist Timeout", + "Storage": "Opbevaring", + "Utilities": "Hjælpeprogrammer", + "Rewrite Settings": "Omskrivning af indstillinger", + "No Clocks Found": "Ingen ure fundet", + "Reset to Defaults": "Nulstil til standardindstillingerne", + "Compacting...\nTakes approx\n1 minute": "Komprimering...\nTager ca.\n1 minut", + "Connectable": "Tilslutbar", + "Reset Settings": "Nulstil indstillinger", + "Stay Connectable": "Forbliv forbundet", + "Flatten Battery": "Flade batterier", + "Minute": "Minut", + "This will remove everything": "Dette vil fjerne alt", + "Turn Off": "Sluk for", + "Hour": "Timer", + "Month": "Måned", + "Second": "Anden", + "Flattening battery - this can take hours.\nLong-press button to cancel": "Udfladning af batteriet - dette kan tage flere timer.\nTryk længe på knappen for at annullere", + "Year": "År", + "Widgets": "Widgets", + "Date": "Dato", + "Side": "Side", + "Left": "Venstre", + "App Settings": "App-indstillinger", + "No app has settings": "Ingen app har indstillinger", + "Invalid settings": "Ugyldige indstillinger", + "Reset All": "Nulstil alt", + "on": "på", + "TIMER": "TIMER", + "Right": "Højre", + "Sort Order": "Sorteringsrækkefølge", + "Reset": "Nulstil", + "Reset all widgets": "Nulstil alle widgets", + "ALARM": "ALARM", + "Settings": "Indstillinger", + "Alerts": "Advarsler", + "System": "System", + "Theme": "Tema", + "Locale": "Lokale", + "Vibrate": "Vibrere", + "Enabled": "Aktiveret", + "Hours": "Timer", + "Delete": "Slet", + "Minutes": "Protokol", + "Message": "Besked", + "Repeat": "Gentag", + "off": "off", + "Whitelist": "Whitelist", + "Show": "Vis", + "Messages": "Meddelelser", + "On": "På", + "Hide": "Skjul", + "Set Time": "Indstil tid", + "Factory Reset": "Fabriksnulstilling", + "Disable": "Deaktivere", + "Error in settings": "Fejl i indstillingerne", + "Select Clock": "Vælg ur", + "No": "Nej", + "Yes": "Ja", + "Ok": "Ok", + "Off": "Off", + "Back": "Tilbage" + }, + "alarm": { + "//": "App-specific overrides" + } +} \ No newline at end of file diff --git a/lang/el_EL.json b/lang/el_EL.json new file mode 100644 index 000000000..38ef6a01f --- /dev/null +++ b/lang/el_EL.json @@ -0,0 +1,163 @@ +{ + "//": "Greek language translations", + "GLOBAL": { + "//": "Translations that apply for all apps", + "Save": "Αποθήκευση", + "week": "εβδομάδα", + "Keep Msgs": "Κρατήστε τα Msgs", + "New Alarm": "Νέος συναγερμός", + "Connected": "Συνδεδεμένο", + "Circle": "Κύκλος", + "maximum": "μέγιστο", + "Heartrate": "Καρδιακός ρυθμός", + "step length": "μήκος βήματος", + "valid period": "περίοδος ισχύος", + "(repeat)": "(επανάληψη)", + "min. confidence": "ελάχιστη εμπιστοσύνη", + "New Timer": "Νέος χρονοδιακόπτης", + "Sleep": "Ύπνος", + "Timer": "Χρονοδιακόπτης", + "Alarm": "Συναγερμός", + "goal": "γκολ", + "distance goal": "στόχος απόστασης", + "Steps": "Βήματα", + "minimum": "ελάχιστο", + "circle 4": "κύκλος 4", + "steps": "βήματα", + "circle 2": "κύκλος 2", + "circle 1": "κύκλος 1", + "weather circle": "κύκλος καιρού", + "circle count": "Αριθμός κύκλων", + "heartrate": "καρδιακός ρυθμός", + "circle 3": "κύκλος 3", + "show widgets": "Εμφάνιση widgets", + "battery warn": "προειδοποίηση μπαταρίας", + "Vector font size": "Μέγεθος γραμματοσειράς διανύσματος", + "Font": "Γραμματοσειρά", + "colorize icon": "χρωματισμός εικονιδίου", + "Show clocks": "Εμφάνιση ρολογιών", + "color": "χρώμα", + "Launcher Settings": "Ρυθμίσεις εκτοξευτή", + "App Source\nNot found": "Πηγή εφαρμογής\nΔεν βρέθηκε", + "Loading": "Φόρτωση", + "data": "δεδομένα", + "View Message": "Προβολή μηνύματος", + "Delete all messages": "Διαγραφή όλων των μηνυμάτων", + "Mark Unread": "Mark Unread", + "Are you sure": "Είσαι σίγουρος", + "Delete All Messages": "Διαγραφή όλων των μηνυμάτων", + "Unread timer": "Χρονοδιακόπτης χωρίς ανάγνωση", + "Apps": "Εφαρμογές", + "Record Run": "Τρέξιμο ρεκόρ", + "No Messages": "Δεν υπάρχουν μηνύματα", + "Music": "Μουσική", + "Bluetooth": "Bluetooth", + "LCD": "LCD", + "Piezo": "Piezo", + "Quiet Mode": "Αθόρυβη λειτουργία", + "Make Connectable": "Κάντε Connectable", + "Utils": "Utils", + "Vibration": "Δονήσεις", + "Programmable": "Προγραμματιζόμενο", + "Beep": "Μπιπ", + "Passkey BETA": "Passkey BETA", + "Wake on Touch": "Αφύπνιση στο άγγιγμα", + "Twist Max Y": "Twist Max Y", + "Time Zone": "Ζώνη ώρας", + "Remove": "Αφαιρέστε το", + "Add Device": "Προσθήκη συσκευής", + "LCD Brightness": "Φωτεινότητα LCD", + "LCD Timeout": "Χρονικό όριο LCD", + "Twist Timeout": "Twist Timeout", + "Highlight BG": "Επισημάνετε το BG", + "Highlight FG": "Επισημάνετε το FG", + "Light BW": "Ελαφρύ BW", + "Foreground 2": "Πρόσθιο πεδίο 2", + "Background": "Ιστορικό", + "Background 2": "Ιστορικό 2", + "HID": "HID", + "Dark BW": "Σκούρο BW", + "BLE": "BLE", + "Customize": "Προσαρμογή", + "Debug Info": "Πληροφορίες εντοπισμού σφαλμάτων", + "Rewrite Settings": "Ρυθμίσεις επανεγγραφής", + "Storage": "Αποθήκευση", + "Flatten Battery": "Επίπεδη μπαταρία", + "Clock Style": "Στυλ ρολογιού", + "Compact Storage": "Συμπαγής αποθήκευση", + "Utilities": "Υπηρεσίες κοινής ωφέλειας", + "Log": "Ημερολόγιο", + "Right": "Δεξιά", + "Month": "Μήνας", + "Side": "Πλευρά", + "No app has settings": "Καμία εφαρμογή δεν έχει ρυθμίσεις", + "Widgets": "Widgets", + "Left": "Αριστερά", + "Reset All": "Επαναφορά όλων", + "Invalid settings": "Μη έγκυρες ρυθμίσεις", + "Reset": "Επαναφορά", + "Sort Order": "Σειρά ταξινόμησης", + "TAP right top/bottom": "TAP δεξιά πάνω/κάτω", + "Wake on BTN2": "Wake στο BTN2", + "Connect device\nto add to\nwhitelist": "Σύνδεση συσκευής\nγια να προσθέσετε\nλευκή λίστα", + "Wake on FaceUp": "Wake στο FaceUp", + "Wake on BTN1": "Wake στο BTN1", + "Wake on BTN3": "Wake στο BTN3", + "Foreground": "Πρόσφατα στοιχεία", + "Wake on Twist": "Wake on Twist", + "Auto snooze": "Αυτόματη επαναφορά", + "Twist Threshold": "Κατώφλι συστροφής", + "Compacting...\nTakes approx\n1 minute": "Συμπίεση...\nΠαίρνει περίπου\n1 λεπτό", + "Connectable": "Συνδεόμενο", + "Repeat": "Επανάληψη", + "No Clocks Found": "Δεν βρέθηκαν ρολόγια", + "TIMER": "TIMER", + "App Settings": "Ρυθμίσεις εφαρμογής", + "Stay Connectable": "Μείνετε συνδεδεμένοι", + "Second": "Δεύτερο", + "Minute": "Λεπτό", + "Date": "Ημερομηνία", + "This will remove everything": "Αυτό θα αφαιρέσει τα πάντα", + "Reset to Defaults": "Επαναφορά στις προεπιλογές", + "Vibrate": "Δονήσεις", + "Hour": "Ώρα", + "Turn Off": "Απενεργοποίηση", + "Reset Settings": "Επαναφορά ρυθμίσεων", + "Year": "Έτος", + "Message": "Μήνυμα", + "Locale": "Τοπική τοποθεσία", + "Alerts": "Ειδοποιήσεις", + "Theme": "Θέμα", + "Error in settings": "Σφάλμα στις ρυθμίσεις", + "Disable": "Απενεργοποίηση", + "Factory Reset": "Επαναφορά εργοστασιακών ρυθμίσεων", + "System": "Σύστημα", + "Ok": "Εντάξει", + "Yes": "Ναι", + "On": "Στο", + "Settings": "Ρυθμίσεις", + "Select Clock": "Επιλέξτε Ρολόι", + "Off": "Off", + "Back": "Πίσω", + "No": "Όχι", + "Delete": "Διαγραφή", + "Enabled": "Ενεργοποιημένο", + "Hours": "Ώρες", + "ALARM": "ALARM", + "on": "στο", + "off": "off", + "Minutes": "Πρακτικά", + "Reset all widgets": "Επαναφορά όλων των widgets", + "Hide": "Απόκρυψη", + "Messages": "Μηνύματα", + "Show": "Εμφάνιση", + "Set Time": "Ρύθμιση χρόνου", + "BTNs 1:startlap 2:exit 3:reset": "BTNs 1:startlap 2:exit 3:reset", + "start&lap/reset, BTN1: EXIT": "εκκίνηση&γύρος/επαναφορά, BTN1: ΕΞΟΔΟΣ", + "Flattening battery - this can take hours.\nLong-press button to cancel": "Εξομάλυνση της μπαταρίας - αυτό μπορεί να διαρκέσει ώρες.\nΠατήστε παρατεταμένα το κουμπί για ακύρωση", + "Whitelist": "Λευκή λίστα" + }, + "alarm": { + "//": "App-specific overrides" + } +} \ No newline at end of file diff --git a/lang/et_ET.json b/lang/et_ET.json new file mode 100644 index 000000000..33be5bf6c --- /dev/null +++ b/lang/et_ET.json @@ -0,0 +1,163 @@ +{ + "//": "Estonian language translations", + "GLOBAL": { + "//": "Translations that apply for all apps", + "New Alarm": "Uus häire", + "Alarm": "Häire", + "Save": "Salvesta", + "Timer": "Taimer", + "(repeat)": "(kordus)", + "New Timer": "Uus taimer", + "circle 2": "ring 2", + "week": "nädal", + "circle 4": "ring 4", + "circle count": "ringide arv", + "Sleep": "Sleep", + "circle 3": "ring 3", + "Keep Msgs": "Hoidke Msgs", + "heartrate": "südame löögisagedus", + "circle 1": "ring 1", + "Connected": "Ühendatud", + "steps": "sammud", + "battery warn": "aku hoiatus", + "show widgets": "Näita vidinaid", + "minimum": "minimaalne", + "Heartrate": "Südame löögisagedus", + "weather circle": "ilmastikuring", + "Loading": "Laadimine", + "Launcher Settings": "Käivitajate seaded", + "color": "värv", + "Font": "Font", + "colorize icon": "värvida ikooni", + "Steps": "Sammud", + "step length": "sammu pikkus", + "Auto snooze": "Automaatne snooze", + "TAP right top/bottom": "TAP paremal üleval/alla", + "maximum": "maksimaalne", + "distance goal": "kauguse eesmärk", + "valid period": "kehtivusaeg", + "min. confidence": "min. usaldus", + "data": "andmed", + "Circle": "Ring", + "goal": "eesmärk", + "Delete all messages": "Kustuta kõik sõnumid", + "Are you sure": "Oled sa kindel, et", + "App Source\nNot found": "Rakenduse allikas\nEi leitud", + "Show clocks": "Näita kellasid", + "View Message": "Vaata sõnumit", + "Vector font size": "Vektori kirjasuurus", + "Mark Unread": "Märgi lugemata", + "Delete All Messages": "Kustuta kõik sõnumid", + "No Messages": "Sõnumid puuduvad", + "Bluetooth": "Bluetooth", + "LCD": "LCD", + "Unread timer": "Lugemata taimer", + "Record Run": "Record Run", + "Music": "Muusika", + "Beep": "Helisema", + "Piezo": "Piezo", + "Apps": "Rakendused", + "Utils": "Utils", + "Vibration": "Vibratsioon", + "BLE": "BLE", + "Make Connectable": "Tee ühendatavaks", + "Programmable": "Programmeeritav", + "Light BW": "Kerge BW", + "Passkey BETA": "Passkey BETA", + "HID": "HID", + "Quiet Mode": "Vaikne režiim", + "Background": "Taustaks", + "Customize": "Kohandada", + "Dark BW": "Tume BW", + "LCD Timeout": "LCD Timeout", + "Background 2": "Taust 2", + "Highlight FG": "FG esiletõstmine", + "Add Device": "Seadme lisamine", + "Highlight BG": "Rõhutage BG", + "Remove": "Eemaldage", + "LCD Brightness": "LCD heledus", + "Foreground 2": "Teadmised 2", + "Time Zone": "Ajavöönd", + "Debug Info": "Debug-info", + "Twist Max Y": "Twist Max Y", + "Twist Timeout": "Twist Timeout", + "Foreground": "Esialgsed teadmised", + "Wake on BTN3": "Wake on BTN3", + "Connect device\nto add to\nwhitelist": "Seadme ühendamine\nlisada\nvalimisnimekirja", + "Wake on BTN2": "Wake on BTN2", + "Wake on Touch": "Wake on Touch", + "Wake on FaceUp": "FaceUp'i ärkamine", + "Compact Storage": "Kompaktne ladustamine", + "Wake on Twist": "Wake on Twist", + "Clock Style": "Kella stiil", + "Wake on BTN1": "Wake on BTN1", + "Utilities": "Kommunaalteenused", + "Twist Threshold": "Twist künnis", + "Log": "Logi", + "Reset Settings": "Seadete lähtestamine", + "Rewrite Settings": "Ümberkirjutamise seaded", + "Hour": "Tund", + "Stay Connectable": "Jääge ühendatavaks", + "Flatten Battery": "Aku tasandamine", + "This will remove everything": "See eemaldab kõik", + "Minute": "Hetk", + "App Settings": "Rakenduse seaded", + "No app has settings": "Ühelgi rakendusel ei ole seadeid", + "Invalid settings": "Väärad seaded", + "Date": "Kuupäev", + "Year": "Aasta", + "Side": "Side", + "Turn Off": "Lülita välja", + "Storage": "Ladustamine", + "Second": "Teine", + "Right": "Õigus", + "Left": "Vasakpoolne", + "Month": "Kuu", + "TIMER": "TIMER", + "Reset to Defaults": "Lähtestamine vaikimisi seadistustele", + "Compacting...\nTakes approx\n1 minute": "Tihendamine...\nKulub umbes\n1 minut", + "start&lap/reset, BTN1: EXIT": "start&lap/reset, BTN1: EXIT", + "Flattening battery - this can take hours.\nLong-press button to cancel": "Aku tasandamine - see võib võtta tunde.\nTühistamiseks vajutage pikalt nuppu", + "ALARM": "ALARM", + "Reset All": "Reset All", + "Hours": "Tunnid", + "off": "välja", + "Widgets": "Vidinad", + "Reset all widgets": "Nullida kõik vidinad", + "on": "aadressil", + "Connectable": "Ühendatav", + "No Clocks Found": "Kellasid ei leitud", + "BTNs 1:startlap 2:exit 3:reset": "BTNid 1:startlap 2:exit 3:reset", + "Sort Order": "Sorteerimisjärjekord", + "Reset": "Reset", + "System": "Süsteem", + "Message": "Sõnum", + "Settings": "Seaded", + "Locale": "Locale", + "Alerts": "Hoiatused", + "Enabled": "Lubatud", + "Theme": "Teema", + "Minutes": "Protokoll", + "Delete": "Kustuta", + "Set Time": "Määratud aeg", + "Select Clock": "Valige kell", + "Hide": "Peida", + "Messages": "Sõnumid", + "Ok": "Ok", + "Show": "Näita", + "On": "Veebilehel", + "Factory Reset": "Tehase lähtestamine", + "Error in settings": "Viga seadetes", + "Disable": "Lülita välja", + "Repeat": "Kordus", + "Vibrate": "Vibreerima", + "Whitelist": "Valge nimekiri", + "No": "Ei", + "Yes": "Jah", + "Off": "Väljaspool", + "Back": "Tagasi" + }, + "alarm": { + "//": "App-specific overrides" + } +} \ No newline at end of file diff --git a/lang/index.json b/lang/index.json index 1a9c851d8..f2750cd72 100644 --- a/lang/index.json +++ b/lang/index.json @@ -10,8 +10,16 @@ {"code":"nl_NL","name":"Dutch","url":"nl_NL.json"}, {"code":"sv_SE","name":"Swedish","url":"sv_SE.json"}, {"code":"tr_TR","name":"Turkish","url":"tr_TR.json"}, - {"code":"zh_ZH","name":"Chinese","url":"zh_ZH.json"}, {"code":"ru_RU","name":"Russian","url":"ru_RU.json"}, {"code":"pt_PT","name":"Portuguese","url":"pt_PT.json"}, - {"code":"ja_JA","name":"Japanese","url":"ja_JA.json"} + {"code":"bg_BG","name":"Bulgarian","url":"bg_BG.json"}, + {"code":"da_DA","name":"Danish","url":"da_DA.json"}, + {"code":"el_EL","name":"Greek","url":"el_EL.json"}, + {"code":"et_ET","name":"Estonian","url":"et_ET.json"}, + {"code":"lt_LT","name":"Lithuanian","url":"lt_LT.json"}, + {"code":"lv_LV","name":"Latvian","url":"lv_LV.json"}, + {"code":"pl_PL","name":"Polish","url":"pl_PL.json"}, + {"code":"ro_RO","name":"Romanian","url":"ro_RO.json"}, + {"code":"sk_SK","name":"Slovak","url":"sk_SK.json"}, + {"code":"sl_SL","name":"Slovenian","url":"sl_SL.json"} ] diff --git a/lang/lt_LT.json b/lang/lt_LT.json new file mode 100644 index 000000000..2ea7dca90 --- /dev/null +++ b/lang/lt_LT.json @@ -0,0 +1,163 @@ +{ + "//": "Lithuanian language translations", + "GLOBAL": { + "//": "Translations that apply for all apps", + "New Alarm": "Naujas žadintuvas", + "(repeat)": "(pakartoti)", + "Alarm": "Signalizacija", + "Save": "Išsaugoti", + "New Timer": "Naujas laikmatis", + "Sleep": "Miegas", + "circle count": "ratų skaičius", + "Timer": "Laikmatis", + "week": "savaitė", + "Connected": "Prijungta", + "circle 2": "2 ratas", + "Auto snooze": "Automatinis snaudimas", + "circle 1": "1 ratas", + "show widgets": "rodyti valdiklius", + "Keep Msgs": "Laikyti Msgs", + "weather circle": "orų ratas", + "step length": "žingsnio ilgis", + "steps": "žingsniai", + "circle 3": "3 ratas", + "battery warn": "įspėjimas apie akumuliatorių", + "min. confidence": "min. pasitikėjimas", + "maximum": "didžiausias", + "valid period": "galiojantis laikotarpis", + "minimum": "minimalus", + "heartrate": "širdies ritmas", + "circle 4": "4 ratas", + "goal": "tikslas", + "data": "duomenys", + "distance goal": "atstumo tikslas", + "Steps": "Žingsniai", + "Heartrate": "Širdies ritmas", + "Show clocks": "Rodyti laikrodžius", + "View Message": "Peržiūrėti žinutę", + "color": "", + "colorize icon": "nuspalvinti piktogramą", + "Circle": "Apskritimas", + "Delete all messages": "Ištrinti visus pranešimus", + "Font": "Šriftas", + "TAP right top/bottom": "TAP dešinėje viršuje / apačioje", + "No Messages": "Jokių pranešimų", + "Launcher Settings": "Paleidimo programos nustatymai", + "App Source\nNot found": "Programėlės šaltinis\nNerastas", + "Loading": "Pakrovimas", + "Vector font size": "Vektorinio šrifto dydis", + "Music": "Muzika", + "Are you sure": "Ar tikrai", + "Delete All Messages": "Ištrinti visus pranešimus", + "Mark Unread": "Pažymėti Neskaityta", + "LCD": "LCD", + "Apps": "Programėlės", + "Record Run": "Rekordinis paleidimas", + "start&lap/reset, BTN1: EXIT": "start&lap/reset, BTN1: EXIT", + "Unread timer": "Neperskaitytas laikmatis", + "Bluetooth": "\"Bluetooth\"", + "BTNs 1:startlap 2:exit 3:reset": "BTNs 1:startlap 2:exit 3:reset", + "Dark BW": "Tamsus BW", + "Programmable": "Programuojamas", + "Make Connectable": "Sukurkite \"Connectable", + "BLE": "BLE", + "Passkey BETA": "Passkey BETA", + "HID": "HID", + "Utils": "Paslaugos", + "Quiet Mode": "Tylusis režimas", + "Beep": "Pyptelėjimas", + "Piezo": "Piezo", + "Vibration": "Vibracija", + "Background": "Pagrindinė informacija", + "Customize": "Tinkinti", + "Foreground": "Naujos žinios", + "Light BW": "Šviesus BW", + "Add Device": "Pridėti įrenginį", + "Remove": "Pašalinti", + "Wake on BTN1": "Pabusti dėl BTN1", + "Wake on BTN3": "Pabusti dėl BTN3", + "Highlight FG": "Pabrėžti FG", + "Highlight BG": "Išryškinti BG", + "Twist Max Y": "Twist Max Y", + "Foreground 2": "Pirmas planas 2", + "Background 2": "Pagrindinė informacija 2", + "Clock Style": "Laikrodžio stilius", + "Log": "Žurnalas", + "Debug Info": "Derinimo informacija", + "Time Zone": "Laiko juosta", + "Wake on Touch": "Pabudimas palietus", + "Twist Threshold": "Sukimo slenkstis", + "Wake on FaceUp": "Atsibusti \"FaceUp", + "Wake on BTN2": "Pabusti dėl BTN2", + "Wake on Twist": "Pabusti dėl Twist", + "LCD Brightness": "LCD ekrano ryškumas", + "Twist Timeout": "Twist Timeout", + "Compact Storage": "Kompaktiškas saugojimas", + "Storage": "Saugykla", + "Utilities": "Komunalinės paslaugos", + "Compacting...\nTakes approx\n1 minute": "Suspaudžiant...\nUžtrunka maždaug\n1 minutė", + "No Clocks Found": "Laikrodžių nerasta", + "Reset Settings": "Nustatymų atstatymas", + "Flatten Battery": "Išlyginti akumuliatorių", + "Connect device\nto add to\nwhitelist": "Prijungti įrenginį\npridėti prie\nbaltąjį sąrašą", + "LCD Timeout": "LCD ekrano laiko limitas", + "Hour": "Valanda", + "Second": "Antrasis", + "Date": "Data", + "Turn Off": "Išjungti", + "This will remove everything": "Tai pašalins viską.", + "Connectable": "Prijungiama", + "Stay Connectable": "Palaikykite ryšį", + "Left": "Kairėje pusėje", + "Right": "Dešinė", + "Side": "Šoninė pusė", + "Invalid settings": "Netinkami nustatymai", + "Month": "Mėnuo", + "Year": "Metai", + "App Settings": "Programėlės nustatymai", + "Sort Order": "Rūšiavimo tvarka", + "Minute": "Minutė", + "No app has settings": "Jokia programa neturi nustatymų", + "Rewrite Settings": "Perrašymo nustatymai", + "Reset All": "Iš naujo nustatyti viską", + "Reset": "Iš naujo nustatyti", + "Reset to Defaults": "Iš naujo nustatyti numatytąsias reikšmes", + "Hours": "Valandos", + "ALARM": "ALARMAS", + "TIMER": "LAIKMATIS", + "Widgets": "Valdikliai", + "Reset all widgets": "Iš naujo nustatyti visus valdiklius", + "Minutes": "Protokolas", + "Flattening battery - this can take hours.\nLong-press button to cancel": "Akumuliatoriaus išlyginimas - tai gali užtrukti kelias valandas.\nIlgai paspauskite mygtuką, kad atšauktumėte", + "on": "svetainėje", + "off": "iš", + "Message": "Žinutė", + "Repeat": "Pakartokite", + "Delete": "Ištrinti", + "Enabled": "Įjungta", + "System": "Sistema", + "Theme": "Tema", + "Vibrate": "Vibruoti", + "Settings": "Nustatymai", + "Alerts": "Įspėjimai", + "Error in settings": "Klaida nustatymuose", + "Messages": "Žinutės", + "Set Time": "Nustatytas laikas", + "Locale": "Vietovė", + "Select Clock": "Pasirinkite laikrodį", + "Whitelist": "Baltasis sąrašas", + "Disable": "Išjungti", + "Factory Reset": "Gamyklinis atstatymas", + "Show": "Rodyti", + "Hide": "Paslėpti", + "Yes": "Taip", + "Ok": "Gerai", + "No": "Ne", + "On": "Svetainėje", + "Off": "Išjungta", + "Back": "Atgal" + }, + "alarm": { + "//": "App-specific overrides" + } +} \ No newline at end of file diff --git a/lang/lv_LV.json b/lang/lv_LV.json new file mode 100644 index 000000000..41525891f --- /dev/null +++ b/lang/lv_LV.json @@ -0,0 +1,163 @@ +{ + "//": "Latvian language translations", + "GLOBAL": { + "//": "Translations that apply for all apps", + "Save": "Saglabāt", + "Auto snooze": "Automātiskā snaudiena atlikšana", + "circle 1": "1 aplis", + "New Timer": "Jauns taimeris", + "New Alarm": "Jauns modinātājs", + "Sleep": "Miega režīms", + "circle count": "apļu skaits", + "Keep Msgs": "Glabāt Msgs", + "Timer": "Taimeris", + "week": "nedēļa", + "Connected": "Savienots", + "(repeat)": "(atkārtot)", + "circle 3": "aplis 3", + "circle 4": "4 aplis", + "Alarm": "Trauksmes signāls", + "steps": "soļi", + "heartrate": "sirdsdarbības ātrums", + "weather circle": "laikapstākļu aplis", + "circle 2": "2. aplis", + "minimum": "minimālais", + "battery warn": "brīdinājums par akumulatoru", + "min. confidence": "min. uzticēšanās", + "show widgets": "parādīt logrīkus", + "step length": "soļa garums", + "goal": "mērķis", + "distance goal": "attāluma mērķis", + "valid period": "derīguma termiņš", + "Circle": "Aplis", + "data": "dati", + "Steps": "Soļi", + "color": "krāsa", + "colorize icon": "iekrāsot ikonu", + "maximum": "maksimālais", + "Heartrate": "Sirdsdarbība", + "View Message": "Skatīt ziņojumu", + "start&lap/reset, BTN1: EXIT": "start&lap/reset, BTN1: EXIT", + "TAP right top/bottom": "TAP pa labi augšā/apakšā", + "Mark Unread": "Atzīmēt Neizlasīts", + "Delete all messages": "Dzēst visus ziņojumus", + "Vector font size": "Vektora fonta lielums", + "Loading": "Iekraušana", + "Show clocks": "Rādīt pulksteņus", + "Font": "Fonts", + "App Source\nNot found": "Lietotņu avots\nNav atrasts", + "Launcher Settings": "Palaidēja iestatījumi", + "Delete All Messages": "Dzēst visus ziņojumus", + "BTNs 1:startlap 2:exit 3:reset": "BTNs 1:startlap 2:izeja 3:resetēšana", + "Bluetooth": "Bluetooth", + "Are you sure": "Vai esat pārliecināts, ka", + "Utils": "Utils", + "Unread timer": "Neizlasīts taimeris", + "LCD": "LCD", + "Music": "Mūzika", + "No Messages": "Nav ziņojumu", + "Record Run": "Rekorda skrējiens", + "HID": "HID", + "Quiet Mode": "Klusais režīms", + "Highlight FG": "Izcelt FG", + "Programmable": "Programmējams", + "Passkey BETA": "Passkey BETA", + "Light BW": "Gaismas BW", + "Piezo": "Piezo", + "Make Connectable": "Padarīt savienojamu", + "Beep": "Pīkstiens", + "Dark BW": "Tumšs BW", + "Background": "Pamatinformācija", + "Vibration": "Vibrācija", + "Apps": "Aplikācijas", + "Foreground 2": "Priekšplāns 2", + "Background 2": "Pamatinformācija 2", + "Foreground": "Priekšplāns", + "Customize": "Pielāgojiet", + "Highlight BG": "Izcelt BG", + "BLE": "BLE", + "LCD Timeout": "LCD displeja laika ierobežojums", + "Twist Max Y": "Twist Max Y", + "Add Device": "Pievienot ierīci", + "Connect device\nto add to\nwhitelist": "Savienot ierīci\nlai pievienotu\nbalto sarakstu", + "Wake on Touch": "Pamosties pēc pieskāriena", + "Time Zone": "Laika josla", + "Wake on BTN3": "Wake par BTN3", + "Wake on BTN1": "Pamosties par BTN1", + "Wake on BTN2": "Wake par BTN2", + "LCD Brightness": "LCD ekrāna spilgtums", + "Remove": "Noņemt", + "Clock Style": "Pulksteņa stils", + "Debug Info": "Dzesēšanas informācija", + "Twist Timeout": "Twist laika ierobežojums", + "Wake on FaceUp": "Pamosties FaceUp", + "Twist Threshold": "Pagrieziena slieksnis", + "This will remove everything": "Tādējādi tiks noņemts viss", + "Utilities": "Komunālie pakalpojumi", + "Connectable": "Savienojams", + "Minute": "Minūtes", + "Stay Connectable": "Palieciet savienojami", + "Storage": "Uzglabāšana", + "Log": "Log", + "Wake on Twist": "Wake on Twist", + "Flatten Battery": "Izlīdzināt akumulatoru", + "Rewrite Settings": "Pārrakstīšanas iestatījumi", + "Compact Storage": "Kompakta uzglabāšana", + "Compacting...\nTakes approx\n1 minute": "Blīvēšanas...\nAizņem aptuveni\n1 minūte", + "Second": "Otrais", + "Reset Settings": "Iestatījumu atiestatīšana", + "Turn Off": "Izslēgt", + "Date": "Datums", + "Right": "Tiesības", + "Sort Order": "Kārtot pēc kārtas", + "No Clocks Found": "Nav atrasti pulksteņi", + "Reset to Defaults": "Atiestatīt noklusējuma iestatījumus", + "No app has settings": "Nevienā lietotnē nav iestatījumu", + "ALARM": "ALARM", + "Widgets": "Logrīki", + "off": "izslēgts", + "Invalid settings": "Nederīgi iestatījumi", + "Month": "Mēnesis", + "Side": "Sānu", + "Reset": "Atiestatīt", + "Reset All": "Atiestatīt visu", + "Hours": "Stundas", + "Repeat": "Atkārtojiet", + "Enabled": "Ieslēgts", + "Settings": "Iestatījumi", + "Message": "Ziņa", + "Minutes": "Protokols", + "App Settings": "Lietotņu iestatījumi", + "System": "Sistēma", + "Locale": "Vietne", + "Theme": "Tēma", + "Flattening battery - this can take hours.\nLong-press button to cancel": "Akumulatora saplacināšana - tas var aizņemt vairākas stundas.\nIlgi nospiediet pogu, lai atceltu", + "Select Clock": "Izvēlieties pulksteni", + "Set Time": "Iestatītais laiks", + "Vibrate": "Vibrēt", + "Reset all widgets": "Visu logrīku atiestatīšana", + "Hour": "Stunda", + "Left": "Kreisā", + "TIMER": "TIMER", + "Year": "Gads", + "on": "vietnē", + "Alerts": "Brīdinājumi", + "Delete": "Dzēst", + "Whitelist": "Baltais saraksts", + "Messages": "Ziņojumi", + "Disable": "Atslēgt", + "Hide": "Paslēpt", + "Show": "Rādīt", + "On": "Uz", + "Factory Reset": "Rūpnīcas atiestatīšana", + "Error in settings": "Kļūda iestatījumos", + "Ok": "Labi", + "Yes": "Jā", + "No": "Nē", + "Back": "Atpakaļ", + "Off": "Izslēgts" + }, + "alarm": { + "//": "App-specific overrides" + } +} \ No newline at end of file diff --git a/lang/pl_PL.json b/lang/pl_PL.json new file mode 100644 index 000000000..b83d72600 --- /dev/null +++ b/lang/pl_PL.json @@ -0,0 +1,163 @@ +{ + "//": "Polish language translations", + "GLOBAL": { + "//": "Translations that apply for all apps", + "New Alarm": "Nowy Alarm", + "(repeat)": "(powtórzenie)", + "Connected": "Podłączony", + "Timer": "Timer", + "Alarm": "Alarm", + "New Timer": "Nowy zegar", + "Sleep": "Sen", + "Save": "Zapisz", + "circle 1": "krąg 1", + "circle 3": "krąg 3", + "circle count": "liczenie okręgów", + "week": "tydzień", + "circle 2": "krąg 2", + "Keep Msgs": "Keep Msgs", + "weather circle": "koło klimatyczne", + "circle 4": "krąg 4", + "heartrate": "częstość akcji serca", + "Heartrate": "Heartrate", + "maximum": "maksimum", + "min. confidence": "min. pewność siebie", + "valid period": "okres ważności", + "distance goal": "cel odległościowy", + "Circle": "Koło", + "step length": "długość kroku", + "Steps": "Kroki", + "show widgets": "wyświetlać widżety", + "steps": "kroki", + "battery warn": "ostrzeżenie o akumulatorze", + "minimum": "minimum", + "data": "dane", + "color": "kolor", + "goal": "bramka", + "Auto snooze": "Automatyczna drzemka", + "TAP right top/bottom": "TAP prawy górny/dolny", + "Font": "Czcionka", + "Launcher Settings": "Ustawienia programu uruchamiającego", + "Mark Unread": "Zaznacz nieprzeczytane", + "Loading": "Ładowanie", + "Vector font size": "Rozmiar czcionki wektorowej", + "Show clocks": "Pokaż zegary", + "App Source\nNot found": "Źródło aplikacji\nNie znaleziono", + "colorize icon": "ubarwiać ikonę", + "Delete all messages": "Usuń wszystkie wiadomości", + "No Messages": "Brak komunikatów", + "Delete All Messages": "Usuń wszystkie wiadomości", + "Are you sure": "Czy jesteś pewien, że", + "View Message": "Wyświetl wiadomość", + "Music": "Muzyka", + "Record Run": "Rekordowy bieg", + "Bluetooth": "Bluetooth", + "Unread timer": "Nieprzeczytany zegar", + "Quiet Mode": "Tryb cichy", + "Make Connectable": "Spraw, aby można było się połączyć", + "Utils": "Narzędzia", + "Beep": "Beep", + "Apps": "Aplikacje", + "Piezo": "Piezo", + "BLE": "BLE", + "LCD": "LCD", + "Vibration": "Wibracje", + "BTNs 1:startlap 2:exit 3:reset": "BTNs 1:startlap 2:exit 3:reset", + "start&lap/reset, BTN1: EXIT": "start&lap/reset, BTN1: WYJŚCIE", + "Foreground": "Foreground", + "Light BW": "Światło BW", + "HID": "HID", + "Dark BW": "Ciemna BW", + "Customize": "Dostosuj", + "Passkey BETA": "Passkey BETA", + "Background": "Tło", + "Background 2": "Tło 2", + "Highlight BG": "Podświetlenie BG", + "Foreground 2": "Nowa wiedza 2", + "Highlight FG": "Highlight FG", + "LCD Brightness": "Jasność LCD", + "Wake on Touch": "Wake on Touch", + "LCD Timeout": "LCD Timeout", + "Remove": "Usuń", + "Wake on Twist": "Wake on Twist", + "Wake on BTN3": "Wake na BTN3", + "Wake on BTN2": "Wake na BTN2", + "Connect device\nto add to\nwhitelist": "Podłącz urządzenie\ndodać do\nwhitelist", + "Wake on BTN1": "Wake na BTN1", + "Add Device": "Dodaj urządzenie", + "Programmable": "Programowalna strona", + "Wake on FaceUp": "Wake on FaceUp", + "Clock Style": "Styl zegara", + "Twist Threshold": "Próg skrętu", + "Time Zone": "Strefa czasowa", + "Twist Max Y": "Twist Max Y", + "Twist Timeout": "Twist Timeout", + "Utilities": "Narzędzia", + "Debug Info": "Debug Info", + "This will remove everything": "To spowoduje usunięcie wszystkiego", + "Compact Storage": "Kompaktowe przechowywanie", + "Flatten Battery": "Spłaszcz baterię", + "Log": "Dziennik Ustaw", + "Rewrite Settings": "Ustawienia przepisywania", + "Storage": "Przechowywanie", + "Reset Settings": "Resetuj ustawienia", + "Turn Off": "Wyłączyć", + "Minute": "Minuta", + "Stay Connectable": "Pozostań w kontakcie", + "Date": "Data", + "App Settings": "Ustawienia aplikacji", + "No app has settings": "Żadna aplikacja nie ma ustawień", + "Connectable": "Możliwość podłączenia", + "Year": "Rok", + "Second": "Drugi", + "No Clocks Found": "Nie znaleziono zegarów", + "Hour": "Godzina", + "Reset to Defaults": "Resetuj do ustawień domyślnych", + "Compacting...\nTakes approx\n1 minute": "Zagęszczanie...\nTrwa ok.\n1 minuta", + "Reset all widgets": "Wyzeruj wszystkie widżety", + "Right": "Prawo", + "Side": "Strona", + "TIMER": "TIMER", + "Sort Order": "Kolejność sortowania", + "Reset": "Reset", + "Invalid settings": "Nieprawidłowe ustawienia", + "Month": "Miesiąc", + "Widgets": "Widżety", + "Left": "Lewa", + "on": "na stronie", + "Delete": "Usuń", + "Hours": "Godziny", + "ALARM": "ALARM", + "Message": "Wiadomość", + "off": "poza", + "Reset All": "Resetuj wszystko", + "Minutes": "Protokół", + "Repeat": "Powtórz", + "Enabled": "Włączone", + "Vibrate": "Vibrate", + "Whitelist": "Whitelist", + "Flattening battery - this can take hours.\nLong-press button to cancel": "Rozładowanie baterii - może to trwać godzinami.\nNaciśnij długo przycisk, aby anulować", + "Select Clock": "Wybierz zegar", + "Theme": "Temat", + "Locale": "Locale", + "Error in settings": "Błąd w ustawieniach", + "Disable": "Wyłącz", + "Settings": "Ustawienia", + "On": "Na stronie", + "Hide": "Ukryj", + "Messages": "Wiadomości", + "Factory Reset": "Reset fabryczny", + "System": "System", + "Alerts": "Wpisy", + "Set Time": "Ustawianie czasu", + "Ok": "Ok", + "Yes": "Tak", + "Show": "Pokaż", + "No": "Nie", + "Back": "Powrót", + "Off": "Poza" + }, + "alarm": { + "//": "App-specific overrides" + } +} \ No newline at end of file diff --git a/lang/ro_RO.json b/lang/ro_RO.json new file mode 100644 index 000000000..78ed27579 --- /dev/null +++ b/lang/ro_RO.json @@ -0,0 +1,163 @@ +{ + "//": "Romanian language translations", + "GLOBAL": { + "//": "Translations that apply for all apps", + "New Alarm": "Alarma nouă", + "New Timer": "Noul cronometru", + "(repeat)": "(repetă)", + "Save": "Salvați", + "Auto snooze": "Repaus automat", + "Timer": "Cronometru", + "Alarm": "Alarma", + "circle 2": "cercul 2", + "circle 1": "cercul 1", + "Sleep": "Somnul", + "week": "săptămâna", + "circle count": "număr de cercuri", + "Connected": "Conectat", + "steps": "etape", + "battery warn": "avertizare baterie", + "heartrate": "ritmul cardiac", + "show widgets": "arată widget-uri", + "Keep Msgs": "Păstrați Msgs", + "circle 4": "cercul 4", + "circle 3": "cercul 3", + "minimum": "minim", + "Heartrate": "Ritmul cardiac", + "min. confidence": "încredere minimă", + "distance goal": "obiectivul de distanță", + "Steps": "Pași", + "color": "culoare", + "Circle": "Cerc", + "step length": "lungimea pasului", + "data": "date", + "maximum": "maxim", + "valid period": "perioada de valabilitate", + "weather circle": "cercul meteorologic", + "goal": "obiectiv", + "App Source\nNot found": "Sursa aplicației\nNu a fost găsit", + "Vector font size": "Dimensiunea fontului vectorial", + "colorize icon": "colorați pictograma", + "Show clocks": "Arată ceasuri", + "Loading": "Încărcare", + "Launcher Settings": "Setări lansator", + "Font": "Font", + "TAP right top/bottom": "TAP dreapta sus/jos", + "View Message": "Vezi mesajul", + "LCD": "LCD", + "Beep": "Beep", + "Vibration": "Vibrații", + "Bluetooth": "Bluetooth", + "Utils": "Utils", + "start&lap/reset, BTN1: EXIT": "start&lap/reset, BTN1: EXIT", + "BTNs 1:startlap 2:exit 3:reset": "BTN-uri 1:startlap 2:exit 3:reset", + "Piezo": "Piezoelectrice", + "Customize": "Personalizați", + "Delete all messages": "Ștergeți toate mesajele", + "Apps": "Aplicații", + "Are you sure": "Ești sigur că", + "Music": "Muzică", + "Record Run": "Record Run", + "Mark Unread": "Marcați Unread", + "Foreground": "Prim-plan", + "Foreground 2": "Prim-plan 2", + "Background": "Fond", + "Passkey BETA": "Passkey BETA", + "Light BW": "Lumină BW", + "Dark BW": "Dark BW", + "Make Connectable": "Asigurați conectabilitatea", + "HID": "HID", + "Delete All Messages": "Ștergeți toate mesajele", + "No Messages": "Nu există mesaje", + "Unread timer": "Cronometru necitit", + "Quiet Mode": "Modul silențios", + "Programmable": "Programabil", + "BLE": "BLE", + "Highlight BG": "Evidențiați BG", + "Background 2": "Context 2", + "Highlight FG": "Evidențiați FG", + "Remove": "Eliminați", + "Connect device\nto add to\nwhitelist": "Conectați dispozitivul\npentru a adăuga la\nlista albă", + "LCD Brightness": "Luminozitatea LCD", + "Wake on FaceUp": "Trezirea pe FaceUp", + "LCD Timeout": "Timeout LCD", + "Add Device": "Adăugați dispozitiv", + "Wake on Touch": "Trezire la atingere", + "Wake on BTN1": "Trezirea pe BTN1", + "Wake on BTN3": "Trezirea pe BTN3", + "Debug Info": "Informații de depanare", + "Log": "Jurnal", + "Clock Style": "Stilul ceasului", + "Utilities": "Utilități", + "Wake on Twist": "Trezirea pe Twist", + "Wake on BTN2": "Trezirea pe BTN2", + "Twist Threshold": "Pragul de răsucire", + "Time Zone": "Fusul orar", + "Twist Timeout": "Twist Timeout", + "Twist Max Y": "Twist Max Y", + "Minute": "Minute", + "Month": "Luna", + "Second": "Al doilea", + "Hour": "Ora", + "Flatten Battery": "Aplatizare baterie", + "Storage": "Depozitare", + "Compact Storage": "Depozitare compactă", + "Reset Settings": "Resetare setări", + "Rewrite Settings": "Resetare Setări de rescriere", + "Stay Connectable": "Rămâneți conectați", + "No Clocks Found": "Nu s-au găsit ceasuri", + "Turn Off": "Oprire", + "This will remove everything": "Acest lucru va elimina totul", + "App Settings": "Setări aplicație", + "Year": "Anul", + "Connectable": "Conectabil", + "Flattening battery - this can take hours.\nLong-press button to cancel": "Baterie de aplatizare - acest lucru poate dura ore.\nApăsați lung butonul pentru a anula", + "Compacting...\nTakes approx\n1 minute": "Compactarea...\nDurează aproximativ\n1 minut", + "Reset to Defaults": "Resetare la valorile implicite", + "Reset": "Resetare", + "Widgets": "Widgeturi", + "Reset all widgets": "Resetați toate widget-urile", + "No app has settings": "Nici o aplicație nu are setări", + "Left": "Stânga", + "Side": "Lateral", + "Date": "Data", + "Sort Order": "Ordinea de sortare", + "Invalid settings": "Setări nevalabile", + "Right": "Dreapta", + "Reset All": "Resetați toate", + "on": "pe", + "TIMER": "TIMER", + "off": "off", + "Message": "Mesaj", + "Vibrate": "Vibrare", + "ALARM": "ALARMĂ", + "Delete": "Ștergeți", + "Repeat": "Repetați", + "Enabled": "Activat", + "Settings": "Setări", + "Minutes": "Proces-verbal", + "Hours": "Ore", + "Theme": "Tema", + "Messages": "Mesaje", + "Hide": "Ascundeți", + "Alerts": "Alerte", + "Error in settings": "Eroare în setări", + "System": "Sistem", + "Disable": "Dezactivați", + "Set Time": "Set Time", + "Factory Reset": "Resetare din fabrică", + "Yes": "Da", + "Select Clock": "Selectați ceasul", + "Whitelist": "Lista albă", + "Locale": "Locale", + "Ok": "Ok", + "Show": "Arată", + "On": "Pe", + "No": "Nu", + "Off": "Off", + "Back": "Înapoi" + }, + "alarm": { + "//": "App-specific overrides" + } +} \ No newline at end of file diff --git a/lang/sk_SK.json b/lang/sk_SK.json new file mode 100644 index 000000000..6d7de7398 --- /dev/null +++ b/lang/sk_SK.json @@ -0,0 +1,163 @@ +{ + "//": "Slovak language translations", + "GLOBAL": { + "//": "Translations that apply for all apps", + "New Alarm": "Nový alarm", + "New Timer": "Nový časovač", + "(repeat)": "(opakovanie)", + "Alarm": "Alarm", + "Save": "Uložiť", + "week": "týždeň", + "circle count": "počet kruhov", + "Timer": "Časovač", + "Sleep": "Spánok", + "circle 1": "okruh 1", + "Connected": "Pripojené", + "Auto snooze": "Automatické odloženie", + "circle 4": "kruh 4", + "heartrate": "srdcová frekvencia", + "steps": "kroky", + "circle 2": "kruh 2", + "Keep Msgs": "Uchovávajte správy Msgs", + "goal": "cieľ", + "circle 3": "kruh 3", + "distance goal": "cieľ vzdialenosti", + "show widgets": "zobraziť widgety", + "maximum": "maximum", + "minimum": "minimálne", + "Circle": "Kruh", + "valid period": "obdobie platnosti", + "Steps": "Kroky", + "data": "údaje", + "min. confidence": "min. dôvera", + "battery warn": "upozornenie na batériu", + "Heartrate": "Srdcová frekvencia", + "weather circle": "kruh počasia", + "step length": "dĺžka kroku", + "colorize icon": "vyfarbenie ikony", + "color": "farba", + "TAP right top/bottom": "TAP vpravo hore/dole", + "App Source\nNot found": "Zdroj aplikácie\nNenájdené", + "Loading": "Načítavanie", + "Font": "Písmo", + "Unread timer": "Neprečítaný časovač", + "Music": "Hudba", + "Mark Unread": "Označiť neprečítané", + "View Message": "Zobraziť správu", + "Launcher Settings": "Nastavenia spúšťača", + "Delete All Messages": "Odstránenie všetkých správ", + "Vector font size": "Veľkosť vektorového písma", + "Delete all messages": "Odstránenie všetkých správ", + "BTNs 1:startlap 2:exit 3:reset": "BTNs 1:startlap 2:exit 3:reset", + "start&lap/reset, BTN1: EXIT": "start&lap/reset, BTN1: EXIT", + "Are you sure": "Ste si istý, že", + "Show clocks": "Zobraziť hodiny", + "No Messages": "Žiadne správy", + "Record Run": "Rekordný beh", + "Apps": "Aplikácie", + "Piezo": "Piezoelektrické zariadenie", + "LCD": "LCD", + "Programmable": "Programovateľné", + "Utils": "Utils", + "Foreground 2": "Popredie 2", + "HID": "HID", + "Vibration": "Vibrácie", + "Make Connectable": "Urobiť pripojiteľné", + "Bluetooth": "Bluetooth", + "Quiet Mode": "Tichý režim", + "Beep": "Pípnutie", + "Passkey BETA": "Passkey BETA", + "Dark BW": "Tmavá BW", + "Light BW": "Light BW", + "Foreground": "Prvé miesto", + "Customize": "Prispôsobenie stránky", + "Background": "Pozadie", + "BLE": "BLE", + "LCD Brightness": "Jas LCD displeja", + "LCD Timeout": "Časový limit LCD displeja", + "Add Device": "Pridať zariadenie", + "Connect device\nto add to\nwhitelist": "Pripojenie zariadenia\npridať do\nwhitelist", + "Remove": "Odstránenie stránky", + "Highlight FG": "Zvýraznenie FG", + "Wake on Touch": "Prebudenie na dotyk", + "Background 2": "Pozadie 2", + "Wake on BTN1": "Prebuďte sa na BTN1", + "Wake on BTN2": "Prebuďte sa na BTN2", + "Wake on BTN3": "Prebuďte sa na BTN3", + "Highlight BG": "Zvýraznenie BG", + "Wake on FaceUp": "Prebudiť sa na FaceUp", + "Wake on Twist": "Prebudiť sa na Twiste", + "Utilities": "Komunálne služby", + "Rewrite Settings": "Nastavenia prepísania", + "Log": "Prihlásiť sa", + "Debug Info": "Informácie o ladení", + "Storage": "Úložisko", + "Compact Storage": "Kompaktné úložisko", + "Twist Max Y": "Twist Max Y", + "Twist Timeout": "Twist Timeout", + "Time Zone": "Časové pásmo", + "Reset Settings": "Obnovenie nastavení", + "Clock Style": "Štýl hodín", + "Compacting...\nTakes approx\n1 minute": "Zhutňovanie...\nTrvá približne\n1 minúta", + "Twist Threshold": "Prahová hodnota Twist", + "Stay Connectable": "Zostaňte pripojení", + "Flatten Battery": "Sploštenie batérie", + "This will remove everything": "Tým sa odstráni všetko.", + "Connectable": "Pripojiteľné", + "Turn Off": "Vypnúť", + "Reset to Defaults": "Obnovenie predvolených nastavení", + "Flattening battery - this can take hours.\nLong-press button to cancel": "Sploštenie batérie - môže trvať niekoľko hodín.\nDlhým stlačením tlačidla zrušíte", + "No Clocks Found": "Nenašli sa žiadne hodiny", + "Side": "Strana", + "Date": "Dátum", + "Second": "Druhý", + "Hour": "Hodina", + "Minute": "Minúta", + "Left": "Vľavo", + "Year": "Rok", + "App Settings": "Nastavenia aplikácie", + "Widgets": "Widgety", + "Month": "Mesiac", + "No app has settings": "Žiadna aplikácia nemá nastavenia", + "Invalid settings": "Neplatné nastavenia", + "Sort Order": "Poradie triedenia", + "Reset All": "Obnoviť všetky", + "Reset": "Obnovenie", + "TIMER": "ČASOVAČ", + "Right": "Vpravo", + "Reset all widgets": "Obnovenie všetkých widgetov", + "ALARM": "ALARM", + "Minutes": "Zápisnica", + "Delete": "Odstrániť", + "off": "mimo", + "on": "na stránke .", + "Repeat": "Opakujte", + "System": "Systém", + "Enabled": "Povolené", + "Vibrate": "Vibrovať", + "Hours": "Hodiny", + "Settings": "Nastavenia", + "Select Clock": "Vybrať hodiny", + "Alerts": "Upozornenia", + "Message": "Správa", + "Theme": "Téma", + "Set Time": "Nastavený čas", + "Locale": "Lokalita", + "Disable": "Zakázať", + "Messages": "Správy", + "Error in settings": "Chyba v nastaveniach", + "Hide": "Skryť", + "Show": "Zobraziť", + "On": "Na stránke", + "Whitelist": "Biela listina", + "Yes": "Áno", + "Ok": "Ok", + "Factory Reset": "Obnovenie továrenského nastavenia", + "No": "Nie", + "Off": "Vypnuté", + "Back": "Späť" + }, + "alarm": { + "//": "App-specific overrides" + } +} \ No newline at end of file diff --git a/lang/sl_SL.json b/lang/sl_SL.json new file mode 100644 index 000000000..bcf873bdd --- /dev/null +++ b/lang/sl_SL.json @@ -0,0 +1,163 @@ +{ + "//": "Slovenian language translations", + "GLOBAL": { + "//": "Translations that apply for all apps", + "Alarm": "Alarm", + "(repeat)": "(ponovitev)", + "New Timer": "Nov časovnik", + "New Alarm": "Nov alarm", + "Timer": "Časomer", + "Save": "Shrani", + "Connected": "Povezano", + "Keep Msgs": "Hranite sporočila Msgs", + "circle 4": "krog 4", + "circle 3": "krog 3", + "Auto snooze": "Samodejni dremež", + "circle 1": "krog 1", + "week": "teden", + "circle 2": "krog 2", + "Sleep": "Spanje", + "circle count": "štetje krogov", + "steps": "koraki", + "show widgets": "prikaži gradnike", + "heartrate": "srčni utrip", + "valid period": "veljavno obdobje", + "maximum": "največ", + "battery warn": "opozorilo o bateriji", + "weather circle": "vremenski krog", + "data": "podatki", + "goal": "cilj", + "step length": "dolžina koraka", + "minimum": "najmanjši", + "min. confidence": "min. zaupanje", + "Heartrate": "Srčni utrip", + "distance goal": "ciljna razdalja", + "Steps": "Koraki", + "color": "barva", + "colorize icon": "obarvanje ikone", + "App Source\nNot found": "Vir aplikacije\nNi najden", + "Show clocks": "Prikaži ure", + "TAP right top/bottom": "TAP desno zgoraj/spodaj", + "View Message": "Ogled sporočila", + "Circle": "Krog", + "Launcher Settings": "Nastavitve zaganjalnika", + "Vector font size": "Velikost vektorske pisave", + "Font": "Pisava", + "Loading": "Nalaganje", + "Delete all messages": "Brisanje vseh sporočil", + "No Messages": "Brez sporočil", + "BTNs 1:startlap 2:exit 3:reset": "BTNs 1:startlap 2:exit 3:reset", + "Are you sure": "Ste prepričani, da", + "start&lap/reset, BTN1: EXIT": "start&lap/reset, BTN1: EXIT", + "Mark Unread": "Označi neprebrano", + "Utils": "Utils", + "Record Run": "Rekordna vožnja", + "Delete All Messages": "Brisanje vseh sporočil", + "Unread timer": "Neprebrani časovnik", + "Music": "Glasba", + "LCD": "LCD", + "Apps": "Aplikacije", + "Bluetooth": "Bluetooth", + "Dark BW": "Temna BW", + "Vibration": "Vibracije", + "Quiet Mode": "Tihi način", + "Beep": "Beep", + "Passkey BETA": "Passkey BETA", + "Piezo": "Piezo", + "HID": "HID", + "Make Connectable": "Povežite se", + "BLE": "BLE", + "Programmable": "Programirljiv", + "Light BW": "Light BW", + "Background": "Ozadje", + "Customize": "Prilagodite", + "Background 2": "Ozadje 2", + "LCD Brightness": "Svetlost LCD-ja", + "Wake on BTN2": "Zbudi se na BTN2", + "Wake on BTN1": "Zbudite se na BTN1", + "LCD Timeout": "Časovna omejitev LCD", + "Twist Max Y": "Twist Max Y", + "Wake on Twist": "Prebudite se na Twist", + "Twist Threshold": "Prag zasuka", + "Foreground 2": "V ospredju 2", + "Foreground": "Novo okolje", + "Remove": "Odstranite", + "Time Zone": "Časovni pas", + "Wake on BTN3": "Wake na BTN3", + "Highlight FG": "Poudarite FG", + "Wake on Touch": "Zbujanje na dotik", + "Clock Style": "Stil ure", + "Highlight BG": "Poudarite BG", + "Add Device": "Dodajanje naprave", + "Connect device\nto add to\nwhitelist": "Povežite napravo\nza dodajanje v\nbeli seznam", + "Utilities": "Storitve", + "Wake on FaceUp": "Prebudite se v aplikaciji FaceUp", + "Compact Storage": "Kompaktno shranjevanje", + "Log": "Dnevnik", + "Debug Info": "Informacije o odpravljanju napak", + "Turn Off": "Izklopite", + "Flatten Battery": "Sploščena baterija", + "Reset to Defaults": "Ponastavitev na privzete nastavitve", + "Reset Settings": "Ponastavitev nastavitev", + "Twist Timeout": "Twist Timeout", + "This will remove everything": "To bo odstranilo vse", + "Rewrite Settings": "Nastavitve prepisovanja", + "Storage": "Shranjevanje", + "Compacting...\nTakes approx\n1 minute": "Zgoščevanje...\nVzame približno\n1 minuta", + "No Clocks Found": "Ure niso bile najdene", + "Stay Connectable": "Ostanite povezljivi", + "Minute": "Minuta", + "Connectable": "Povezljivost", + "Hour": "Ura", + "Flattening battery - this can take hours.\nLong-press button to cancel": "Ploščati baterijo - to lahko traja več ur.\nDolgo pritisnite gumb za preklic", + "Second": "Drugi", + "Month": "Mesec", + "Date": "Datum", + "ALARM": "ALARM", + "Reset all widgets": "Ponastavitev vseh gradnikov", + "Reset All": "Ponastavi vse", + "TIMER": "TIMER", + "Widgets": "Pripomočki", + "Hours": "Ure", + "Minutes": "Zapisnik", + "Year": "Leto", + "No app has settings": "Nobena aplikacija nima nastavitev", + "App Settings": "Nastavitve aplikacije", + "Repeat": "Ponovite", + "Invalid settings": "Neveljavne nastavitve", + "Enabled": "Omogočeno", + "Reset": "Ponastavitev", + "off": "izklop", + "Side": "Stran", + "Sort Order": "Vrstni red", + "Left": "Leva stran", + "Right": "Desno", + "on": "na spletni strani .", + "Theme": "Tema", + "Locale": "Lokacija", + "Alerts": "Opozorila", + "Select Clock": "Izberite uro", + "System": "Sistem", + "Settings": "Nastavitve", + "Set Time": "Čas nastavitve", + "Whitelist": "Bela lista", + "Message": "Sporočilo", + "Vibrate": "Vibriranje", + "Delete": "Izbriši", + "Error in settings": "Napaka v nastavitvah", + "Messages": "Sporočila", + "Disable": "Onemogočite", + "Show": "Prikaži", + "Ok": "Ok", + "On": "Na spletni strani", + "Hide": "Skrij", + "Factory Reset": "Ponastavitev tovarniške nastavitve", + "Yes": "Da", + "No": "Ne", + "Off": "Izklopljeno", + "Back": "Nazaj" + }, + "alarm": { + "//": "App-specific overrides" + } +} \ No newline at end of file diff --git a/lang/ja_JA.json b/lang/unicode-based/ja_JA.json similarity index 100% rename from lang/ja_JA.json rename to lang/unicode-based/ja_JA.json diff --git a/lang/zh_ZH.json b/lang/unicode-based/zh_ZH.json similarity index 100% rename from lang/zh_ZH.json rename to lang/unicode-based/zh_ZH.json From 539f37935de665573e432baee701991c8da72758 Mon Sep 17 00:00:00 2001 From: Hilmar Strauch <56518493+HilmarSt@users.noreply.github.com> Date: Thu, 10 Feb 2022 18:02:50 +0100 Subject: [PATCH 28/59] Update ChangeLog --- apps/vectorclock/ChangeLog | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/vectorclock/ChangeLog b/apps/vectorclock/ChangeLog index f1fd5b134..dad735f65 100644 --- a/apps/vectorclock/ChangeLog +++ b/apps/vectorclock/ChangeLog @@ -3,3 +3,4 @@ 0.03: Bangle.js 2 support 0.04: Adds costumizable colours and the respective settings menu 0.05: "Chime the time" (buzz or beep) with up/down swipe added +0.06: Draw widgets if time is updated From 73bc9919a41d00d85cb8c5074072ab57999781fa Mon Sep 17 00:00:00 2001 From: Hilmar Strauch <56518493+HilmarSt@users.noreply.github.com> Date: Thu, 10 Feb 2022 18:03:37 +0100 Subject: [PATCH 29/59] Update metadata.json --- apps/vectorclock/metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/vectorclock/metadata.json b/apps/vectorclock/metadata.json index 63d2ca678..50e2de807 100644 --- a/apps/vectorclock/metadata.json +++ b/apps/vectorclock/metadata.json @@ -1,7 +1,7 @@ { "id": "vectorclock", "name": "Vector Clock", - "version": "0.05", + "version": "0.06", "description": "A digital clock that uses the built-in vector font.", "icon": "app.png", "type": "clock", From e70438d642b6cd6ab8a28afbb1403d11b989e303 Mon Sep 17 00:00:00 2001 From: Hilmar Strauch <56518493+HilmarSt@users.noreply.github.com> Date: Thu, 10 Feb 2022 18:05:37 +0100 Subject: [PATCH 30/59] Update app.js --- apps/vectorclock/app.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/vectorclock/app.js b/apps/vectorclock/app.js index e99a13ed1..a10fc7038 100644 --- a/apps/vectorclock/app.js +++ b/apps/vectorclock/app.js @@ -80,6 +80,8 @@ function draw() { pushCommand(drawVectorText, dateText, dateFontSize, x + width/2, y, 0, -1, datecol); executeCommands(); + + Bangle.drawWidgets(); } var timeout; From c489586a44d1dafea260e6766711f65c132ce036 Mon Sep 17 00:00:00 2001 From: Hilmar Strauch <56518493+HilmarSt@users.noreply.github.com> Date: Thu, 10 Feb 2022 18:14:49 +0100 Subject: [PATCH 31/59] Update ChangeLog --- apps/vectorclock/ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/vectorclock/ChangeLog b/apps/vectorclock/ChangeLog index dad735f65..cf746a20d 100644 --- a/apps/vectorclock/ChangeLog +++ b/apps/vectorclock/ChangeLog @@ -3,4 +3,4 @@ 0.03: Bangle.js 2 support 0.04: Adds costumizable colours and the respective settings menu 0.05: "Chime the time" (buzz or beep) with up/down swipe added -0.06: Draw widgets if time is updated +0.06: Redraw widgets when time is updated From 6bdf68d39b5e42783eb221b8726c833f55a35922 Mon Sep 17 00:00:00 2001 From: David Peer Date: Thu, 10 Feb 2022 22:17:18 +0100 Subject: [PATCH 32/59] Added wind to datapoints. --- apps/lcars/ChangeLog | 3 +- apps/lcars/README.md | 9 ++-- apps/lcars/lcars.app.js | 85 ++++++++++++++++++++++-------------- apps/lcars/lcars.settings.js | 8 ++-- apps/lcars/metadata.json | 2 +- 5 files changed, 64 insertions(+), 43 deletions(-) diff --git a/apps/lcars/ChangeLog b/apps/lcars/ChangeLog index 8e26ec9d2..577e8b572 100644 --- a/apps/lcars/ChangeLog +++ b/apps/lcars/ChangeLog @@ -12,4 +12,5 @@ 0.12: Added humidity as an option to display. 0.13: Improved battery visualization. 0.14: Added altitude as an option to display. -0.15: Using wpedom to count steps. \ No newline at end of file +0.15: Using wpedom to count steps. +0.16: Improved stability. Wind can now be shown. \ No newline at end of file diff --git a/apps/lcars/README.md b/apps/lcars/README.md index 017be246c..bfd15afa2 100644 --- a/apps/lcars/README.md +++ b/apps/lcars/README.md @@ -1,8 +1,9 @@ # LCARS clock A simple LCARS inspired clock. -Note: To display the steps, the health app is required. If this app is not installed, the data will not be shown. -To contribute you can open a PR at this [GitHub Repo]( https://github.com/peerdavid/BangleApps) +Note: To display the steps, the wpedom app is required. To show weather data +such as temperature, humidity or window you BangleJS must be connected +with Gadgetbride and the weather app must be installed. ## Control * Tap left / right to change between screens. @@ -25,6 +26,7 @@ To contribute you can open a PR at this [GitHub Repo]( https://github.com/peerda * HRM - Last measured HRM * Temp - Weather temperature loaded via the weather module + gadgetbridge * Humidity - Humidity loaded via the weather module + gadgetbridge + * Wind - Wind loaded via the weather module + gadgetbridge * Altitude - Shows the altitude in m. * CoreT - Temperature of device @@ -35,9 +37,6 @@ Access different screens via tap on the left/ right side of the screen ![](screenshot_2.png) -# Ideas -- Tap top / bottom to disable steps (also icon) and start a timer - ## Contributors - [David Peer](https://github.com/peerdavid). - [Adam Schmalhofer](https://github.com/adamschmalhofer). diff --git a/apps/lcars/lcars.app.js b/apps/lcars/lcars.app.js index c020c49e8..e1ac0cb97 100644 --- a/apps/lcars/lcars.app.js +++ b/apps/lcars/lcars.app.js @@ -122,17 +122,17 @@ function printRow(text, value, y, c){ g.setFontAntonioMedium(); g.setFontAlign(-1,-1,0); g.setColor(c); - g.fillRect(79, y-2, 85 ,y+18); + g.fillRect(77, y-2, 83 ,y+18); g.setFontAlign(0,-1,0); g.drawString(value, 110, y); g.setColor(c); g.setFontAlign(-1,-1,0); - g.fillRect(133, y-2, 165 ,y+18); - g.fillCircle(161, y+8, 10); + g.fillRect(135, y-2, 165 ,y+18); + g.fillCircle(163, y+8, 10); g.setColor(cBlack); - g.drawString(text, 135, y); + g.drawString(text, 137, y); } @@ -174,6 +174,11 @@ function _drawData(key, y, c){ var weather = getWeather(); value = weather.hum; + } else if (key == "WIND"){ + text = "WND"; + var weather = getWeather(); + value = weather.wind; + } else if (key == "ALTITUDE"){ should_print= false; text = "ALT"; @@ -248,16 +253,16 @@ function drawState(){ hours % 4 == 1 ? iconMars : hours % 4 == 2 ? iconMoon : iconEarth; - g.drawImage(iconImg, 24, 118); + g.drawImage(iconImg, 23, 118); g.setColor(cWhite); - g.drawString("STATUS", 24+25, 108); + g.drawString("STATUS", 23+25, 108); } else { // Alarm within symbol g.setColor(cOrange); - g.drawString("ALARM", 24+25, 108); + g.drawString("ALARM", 23+25, 108); g.setColor(cWhite); g.setFontAntonioLarge(); - g.drawString(getAlarmMinutes(), 24+25, 108+35); + g.drawString(getAlarmMinutes(), 23+25, 108+35); } g.setFontAlign(-1, -1, 0); @@ -425,18 +430,24 @@ function drawPosition1(){ } function draw(){ - // First handle alarm to show this correctly afterwards - handleAlarm(); - // Next draw the watch face - g.reset(); - g.clearRect(0, 0, g.getWidth(), g.getHeight()); + try{ + // First handle alarm to show this correctly afterwards + handleAlarm(); - // Draw current lcars position - if(lcarsViewPos == 0){ - drawPosition0(); - } else if (lcarsViewPos == 1) { - drawPosition1(); + // Next draw the watch face + g.reset(); + g.clearRect(0, 0, g.getWidth(), g.getHeight()); + + // Draw current lcars position + if(lcarsViewPos == 0){ + drawPosition0(); + } else if (lcarsViewPos == 1) { + drawPosition1(); + } + } catch (ex){ + // In case of an exception, we simply queue + // and try it in one minute again... } // Queue draw in one minute @@ -463,29 +474,39 @@ function getSteps() { function getWeather(){ - var weather; + var weatherJson; try { - weather = require('weather').get(); + weatherJson = storage.readJSON('weather.json'); } catch(ex) { // Return default } - if (weather === undefined){ - weather = { - temp: "-", - hum: "-", - txt: "-", - wind: "-", - wdir: "-", - wrose: "-" - }; - } else { - weather.temp = locale.temp(Math.round(weather.temp-273.15)) + if(weatherJson){ + var weather = weatherJson.weather; + + // Temperature + const temp = locale.temp(weather.temp-273.15).match(/^(\D*\d*)(.*)$/); + weather.temp = temp[1] + " " + temp[2].toUpperCase(); + + // Humidity weather.hum = weather.hum + "%"; + + // Wind + const wind = locale.speed(weather.wind).match(/^(\D*\d*)(.*)$/); + weather.wind = wind[1] + wind[2].toUpperCase(); + + return weather } - return weather; + return { + temp: "-", + hum: "-", + txt: "-", + wind: "-", + wdir: "-", + wrose: "-" + }; } diff --git a/apps/lcars/lcars.settings.js b/apps/lcars/lcars.settings.js index 076dea4d1..71081e1d4 100644 --- a/apps/lcars/lcars.settings.js +++ b/apps/lcars/lcars.settings.js @@ -18,14 +18,14 @@ storage.write(SETTINGS_FILE, settings) } - var data_options = ["Steps", "Battery", "VREF", "HRM", "Temp", "Humidity", "Altitude", "CoreT"]; + var data_options = ["Steps", "Battery", "VREF", "HRM", "Temp", "Humidity", "Wind", "Altitude", "CoreT"]; E.showMenu({ '': { 'title': 'LCARS Clock' }, '< Back': back, 'Row 1': { value: 0 | data_options.indexOf(settings.dataRow1), - min: 0, max: 7, + min: 0, max: 8, format: v => data_options[v], onchange: v => { settings.dataRow1 = data_options[v]; @@ -34,7 +34,7 @@ }, 'Row 2': { value: 0 | data_options.indexOf(settings.dataRow2), - min: 0, max: 7, + min: 0, max: 8, format: v => data_options[v], onchange: v => { settings.dataRow2 = data_options[v]; @@ -43,7 +43,7 @@ }, 'Row 3': { value: 0 | data_options.indexOf(settings.dataRow3), - min: 0, max: 7, + min: 0, max: 8, format: v => data_options[v], onchange: v => { settings.dataRow3 = data_options[v]; diff --git a/apps/lcars/metadata.json b/apps/lcars/metadata.json index 9724e98c5..924c07267 100644 --- a/apps/lcars/metadata.json +++ b/apps/lcars/metadata.json @@ -3,7 +3,7 @@ "name": "LCARS Clock", "shortName":"LCARS", "icon": "lcars.png", - "version":"0.15", + "version":"0.16", "readme": "README.md", "supports": ["BANGLEJS2"], "description": "Library Computer Access Retrieval System (LCARS) clock.", From 82e069de621fad1eff002e40486729b53da372d7 Mon Sep 17 00:00:00 2001 From: xxDUxx <96152564+xxDUxx@users.noreply.github.com> Date: Thu, 10 Feb 2022 23:21:38 +0100 Subject: [PATCH 33/59] Update custom.html --- apps/contourclock/custom.html | 41 ++++++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/apps/contourclock/custom.html b/apps/contourclock/custom.html index a34953abe..7b969e6bc 100644 --- a/apps/contourclock/custom.html +++ b/apps/contourclock/custom.html @@ -4,24 +4,53 @@ - + +
+ +
+ +
+ +
+ +
+
- + +
+ +
+
+ +
+ +
+ +
+ +
+ +
+ +

Click