diff --git a/README.md b/README.md index 0a92aae30..9cf30065a 100644 --- a/README.md +++ b/README.md @@ -134,6 +134,7 @@ Apps are listed in the Bangle.js menu, accessible from a clock app via the middl * `app.png` - app icon - 48x48px * `app-icon.js` - JS version of the icon (made with http://www.espruino.com/Image+Converter) for use in Bangle.js's menu * `app.js` - app code +* `ChangeLog` - A file containing a list of changes to your app so users can see what's changed #### `app-icon.js` @@ -189,9 +190,23 @@ When the widget is to be drawn, `x` and `y` values are set up in `WIDGETS["mywid and `draw` can then use `this.x` and `this.y` to figure out where it needs to draw to. +### ChangeLog + +This is a file containing a list of changes to your app so users can see what's changed, for example: + +``` +0.01: New App! +0.02: Changed the colors +0.03: Made the app run quicker +``` + +Entries should be newest last, with the version number of the last entry matching the version in `metadata.json` + +Please keep the same format at the example as the file needs to be parsed by the BangleApps tools. + ### `app.info` format -This is the file that's **auto-generated** and loaded onto Bangle.js by the App Loader, +This is the file that's **auto-generated** from `metadata.json` and loaded onto Bangle.js by the App Loader, and which gives information about the app for the Launcher. ``` diff --git a/apps/lcars/ChangeLog b/apps/lcars/ChangeLog index 577e8b572..a8c55f8fd 100644 --- a/apps/lcars/ChangeLog +++ b/apps/lcars/ChangeLog @@ -13,4 +13,5 @@ 0.13: Improved battery visualization. 0.14: Added altitude as an option to display. 0.15: Using wpedom to count steps. -0.16: Improved stability. Wind can now be shown. \ No newline at end of file +0.16: Improved stability. Wind can now be shown. +0.17: Settings for mph/kph and other minor improvements. \ No newline at end of file diff --git a/apps/lcars/README.md b/apps/lcars/README.md index bfd15afa2..b6bfda2c1 100644 --- a/apps/lcars/README.md +++ b/apps/lcars/README.md @@ -20,13 +20,13 @@ with Gadgetbride and the weather app must be installed. * Display graphs (day or month) for steps + hrm on the second screen. ## Data that can be configured - * Steps - Steps loaded via the health module + * Steps - Steps loaded via the wpedom app. * Battery - Current battery level in % * VREF - Voltage of battery * 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 + * Wind - Wind loaded via the weather module + gadgetbridge. Set kph / mph in the settings. * Altitude - Shows the altitude in m. * CoreT - Temperature of device diff --git a/apps/lcars/lcars.app.js b/apps/lcars/lcars.app.js index bc797b1cf..dcbd294bb 100644 --- a/apps/lcars/lcars.app.js +++ b/apps/lcars/lcars.app.js @@ -5,7 +5,8 @@ let settings = { alarm: -1, dataRow1: "Steps", dataRow2: "Temp", - dataRow3: "Battery" + dataRow3: "Battery", + speed: "kph", }; let saved_settings = storage.readJSON(SETTINGS_FILE, 1) || settings; for (const key in saved_settings) { @@ -121,18 +122,22 @@ function queueDraw() { function printRow(text, value, y, c){ g.setFontAntonioMedium(); g.setFontAlign(-1,-1,0); - g.setColor(c); - g.fillRect(77, y-2, 83 ,y+18); - - g.setFontAlign(0,-1,0); - g.drawString(value, 110, y); + // Print background g.setColor(c); g.setFontAlign(-1,-1,0); - g.fillRect(135, y-2, 165 ,y+18); + g.fillRect(80, y-2, 165 ,y+18); g.fillCircle(163, y+8, 10); g.setColor(cBlack); - g.drawString(text, 137, y); + g.drawString(text, 135, y); + + // Plot text + width = g.stringWidth(value); + g.setColor(cBlack); + g.fillRect(130-width-8, y-2, 130, y+18); + g.setColor(c); + g.setFontAlign(1,-1,0); + g.drawString(value, 126, y); } @@ -255,14 +260,14 @@ function drawState(){ iconEarth; g.drawImage(iconImg, 23, 118); g.setColor(cWhite); - g.drawString("STATUS", 23+25, 108); + g.drawString("STATUS", 23+26, 108); } else { // Alarm within symbol g.setColor(cOrange); - g.drawString("ALARM", 23+25, 108); + g.drawString("ALARM", 23+26, 108); g.setColor(cWhite); g.setFontAntonioLarge(); - g.drawString(getAlarmMinutes(), 23+25, 108+35); + g.drawString(getAlarmMinutes(), 23+26, 108+35); } g.setFontAlign(-1, -1, 0); @@ -430,8 +435,9 @@ function drawPosition1(){ } function draw(){ + // Queue draw first to ensure that its called in one minute again. + queueDraw(); - try{ // First handle alarm to show this correctly afterwards handleAlarm(); @@ -445,13 +451,6 @@ function draw(){ } 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 - queueDraw(); } @@ -496,15 +495,14 @@ function getWeather(){ var weather = weatherJson.weather; // Temperature - const temp = locale.temp(weather.temp-273.15).match(/^(\D*\d*)(.*)$/); - weather.temp = temp[1] + " " + temp[2].toUpperCase(); + weather.temp = locale.temp(weather.temp-273.15); // Humidity weather.hum = weather.hum + "%"; // Wind - const wind = locale.speed(weather.wind).match(/^(\D*\d*)(.*)$/); - weather.wind = wind[1]; // + wind[2].toUpperCase(); // Don't show mph - its too large + var speedFactor = settings.speed == "kph" ? 1.60934 : 1.0; + weather.wind = Math.round(weather.wind * speedFactor); return weather } diff --git a/apps/lcars/lcars.settings.js b/apps/lcars/lcars.settings.js index 71081e1d4..176f88593 100644 --- a/apps/lcars/lcars.settings.js +++ b/apps/lcars/lcars.settings.js @@ -7,7 +7,8 @@ alarm: -1, dataRow1: "Battery", dataRow2: "Steps", - dataRow3: "Temp" + dataRow3: "Temp", + speed: "kph", }; let saved_settings = storage.readJSON(SETTINGS_FILE, 1) || settings; for (const key in saved_settings) { @@ -18,35 +19,45 @@ storage.write(SETTINGS_FILE, settings) } - var data_options = ["Steps", "Battery", "VREF", "HRM", "Temp", "Humidity", "Wind", "Altitude", "CoreT"]; + var dataOptions = ["Steps", "Battery", "VREF", "HRM", "Temp", "Humidity", "Wind", "Altitude", "CoreT"]; + var speedOptions = ["kph", "mph"]; E.showMenu({ '': { 'title': 'LCARS Clock' }, '< Back': back, 'Row 1': { - value: 0 | data_options.indexOf(settings.dataRow1), + value: 0 | dataOptions.indexOf(settings.dataRow1), min: 0, max: 8, - format: v => data_options[v], + format: v => dataOptions[v], onchange: v => { - settings.dataRow1 = data_options[v]; + settings.dataRow1 = dataOptions[v]; save(); }, }, 'Row 2': { - value: 0 | data_options.indexOf(settings.dataRow2), + value: 0 | dataOptions.indexOf(settings.dataRow2), min: 0, max: 8, - format: v => data_options[v], + format: v => dataOptions[v], onchange: v => { - settings.dataRow2 = data_options[v]; + settings.dataRow2 = dataOptions[v]; save(); }, }, 'Row 3': { - value: 0 | data_options.indexOf(settings.dataRow3), + value: 0 | dataOptions.indexOf(settings.dataRow3), min: 0, max: 8, - format: v => data_options[v], + format: v => dataOptions[v], onchange: v => { - settings.dataRow3 = data_options[v]; + settings.dataRow3 = dataOptions[v]; + save(); + }, + }, + 'Speed': { + value: 0 | speedOptions.indexOf(settings.speed), + min: 0, max: 1, + format: v => speedOptions[v], + onchange: v => { + settings.speed = speedOptions[v]; save(); }, } diff --git a/apps/lcars/metadata.json b/apps/lcars/metadata.json index 924c07267..a402b35a4 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.16", + "version":"0.17", "readme": "README.md", "supports": ["BANGLEJS2"], "description": "Library Computer Access Retrieval System (LCARS) clock.", diff --git a/apps/lcars/screenshot.png b/apps/lcars/screenshot.png index 120229fba..e2d2cbd5f 100644 Binary files a/apps/lcars/screenshot.png and b/apps/lcars/screenshot.png differ diff --git a/apps/locale/locale.html b/apps/locale/locale.html index 90a2e8d40..b23225d5f 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; diff --git a/apps/route/ChangeLog b/apps/route/ChangeLog index 02779b6ea..f8c97a57b 100644 --- a/apps/route/ChangeLog +++ b/apps/route/ChangeLog @@ -1,2 +1,3 @@ 0.01: New App! 0.02: Change color from red->yellow to ease readability (fix #710) +0.03: Color/positioning change to allow it to work with Bangle.js 1 (although not pretty) diff --git a/apps/route/custom.html b/apps/route/custom.html index b958303d8..bdabb471c 100644 --- a/apps/route/custom.html +++ b/apps/route/custom.html @@ -104,141 +104,146 @@ document.getElementById('fileLoader').addEventListener('change', handleFileSelec document.getElementById("upload").addEventListener("click", function() { var app = `${js} -var gcoords = new Uint8Array(coords.length); -var coordDistance = new Uint16Array(coords.length/2); + var gcoords = new Uint8Array(coords.length); + var coordDistance = new Uint16Array(coords.length/2); + var colHL = g.theme.dark ? "#FF0" : "#00F"; + var W = g.getWidth(), H = g.getHeight(); -var PT_DISTANCE = 30; // distance to a point before we consider it complete + var PT_DISTANCE = 30; // distance to a point before we consider it complete -function toScr(p) { - return { - x : 10 + (p.x-min.x)*100/(max.x-min.x), - y : 230 - (p.y-min.y)*100/(max.y-min.y) - }; -} - -var last; -var totalDistance = 0; -for (var i=0;i hidN[v], onchange: v => { settings.HID = hidV[v]; diff --git a/apps/sleeplog/ChangeLog b/apps/sleeplog/ChangeLog new file mode 100644 index 000000000..5560f00bc --- /dev/null +++ b/apps/sleeplog/ChangeLog @@ -0,0 +1 @@ +0.01: New App! diff --git a/apps/sleeplog/README.md b/apps/sleeplog/README.md new file mode 100644 index 000000000..24f47c23c --- /dev/null +++ b/apps/sleeplog/README.md @@ -0,0 +1,142 @@ +# Sleep Log + +This app logs and displays the four following states: +_unknown, not worn, awake, sleeping_ +It derived from the [SleepPhaseAlarm](https://banglejs.com/apps/#sleepphasealarm) and uses the accelerometer to estimate sleep and wake states with the principle of Estimation of Stationary Sleep-segments ([ESS](https://ubicomp.eti.uni-siegen.de/home/datasets/ichi14/index.html.en)) and the internal temperature to decide _sleeping_ or _not worn_ when the watch is resting. + +#### Operating Principle +* __ESS calculation__ + The accelerometer polls values with 12.5Hz. On each poll the magnitude value is saved. When 13 values are collected, every 1.04 seconds, the standard deviation over this values is calculated. + Is the calculated standard deviation lower than the "no movement" threshold (__NoMoThresh__) a "no movement" counter is incremented. Each time the "no movement" threshold is reached the "no movement" counter will be reset. + When the "no movement" counter reaches the sleep threshold the watch is considered as resting. (The sleep threshold is calculated from the __MinDuration__ setting, Example: _sleep threshold = MinDuration * 60 / calculation interval => 10min * 60s/min / 1.04s ~= 576,9 rounded up to 577_) + To check if a resting watch indicates as sleeping, the internal temperature must be greater than the temperature threshold (__TempThresh__). Otherwise the watch is considered as not worn. +* __True Sleep__ + The true sleep value is a simple addition of all registert sleeping periods. +* __Consecutive Sleep__ + In addition the consecutive sleep value tries to predict the complete time you were asleep, even the light sleeping phases with registered movements. All periods after a sleeping period will be summarized til the first following non sleeping period that is longer then the maximal awake duration (__MaxAwake__). If this sum is lower than the minimal consecutive sleep duration (__MinConsec__) it is not considered, otherwise it will be added to the consecutive sleep value. +* __Logging__ + To minimize the log size only a changed state is logged. + +--- +### Control +--- +* __Swipe__ + Swipe left/right to display the previous/following day. +* __Touch__ / __BTN__ + Touch the screen to open the settings menu to exit or change settings. + +--- +### Settings +--- +* __BreakTod__ break at time of day + _0_ / _1_ / _..._ / __10__ / _..._ / _12_ + Change time of day on wich the lower graph starts and the upper graph ends. +* __MaxAwake__ maximal awake duration + _15min_ / _20min_ / _..._ / __60min__ / _..._ / _120min_ + Adjust the maximal awake duration upon the exceeding of which aborts the consecutive sleep period. +* __MinConsec__ minimal consecutive sleep duration + _15min_ / _20min_ / _..._ / __30min__ / _..._ / _120min_ + Adjust the minimal consecutive sleep duration that will be considered for the consecutive sleep value. +* __TempThresh__ temperature threshold + _20°C_ / _20.5°C_ / _..._ / __25°C__ / _..._ / _40°C_ + The internal temperature must be greater than this threshold to log _sleeping_, otherwise it is _not worn_. +* __NoMoThresh__ no movement threshold + _0.006_ / _0.007_ / _..._ / __0.012__ / _..._ / _0.020_ + The standard deviation over the measured values needs to be lower then this threshold to count as not moving. + The defaut threshold value worked best for my watch. A threshold value below 0.008 may get triggert by noise. +* __MinDuration__ minimal no movement duration + _5min_ / _6min_ / _..._ / __10min__ / _..._ / _15min_ + If no movement is detected for this duration, the watch is considered as resting. +* __Enabled__ + __on__ / _off_ + En-/Disable the service (all background activities). _Saves battery, but might make this app useless._ +* __Logfile__ + __default__ / _off_ + En-/Disable logging by setting the logfile to _sleeplog.log_ / _undefined_. + If the logfile has been customized it is displayed with _custom_. + +--- +### Global Object and Module Functions +--- +For easy access from the console or other apps the following parameters, values and functions are noteworthy: +``` +>global.sleeplog +={ + enabled: true, // bool / service status indicator + logfile: "sleeplog.log", // string / used logfile + resting: false, // bool / indicates if the watch is resting + status: 2, // int / actual status: 0 = unknown, 1 = not worn, 2 = awake, 3 = sleeping + firstnomodate: 1644435877595, // number / Date.now() from first recognised no movement + stop: function () { ... }, // funct / stops the service until the next load() + start: function () { ... }, // funct / restarts the service + ... + } + +>require("sleeplog") +={ + setEnabled: function (enable, logfile) { ... }, + // en-/disable the service and/or logging + // * enable / bool / service status to change to + // * logfile / bool or string + // - true = enables logging to "sleeplog.log" + // - "some_file.log" = enables logging to "some_file.log" + // - false = disables logging + // returns: bool or undefined + // - true = changes executed + // - false = no changes needed + // - undefined = no global.sleeplog found + readLog: function (since, until) { ... }, + // read the raw log data for a specific time period + // * since / Date or number / startpoint of period + // * until / Date or number / endpoint of period + // returns: array + // * [[number, int, string], [...], ... ] / sorting: latest first + // - number // timestamp in ms + // - int // status: 0 = unknown, 1 = not worn, 2 = awake, 3 = sleeping + // - string // additional information + // * [] = no data available or global.sleeplog found + getReadableLog: function (printLog, since, until) { ... } + // read the log data as humanreadable string for a specific time period + // * since / Date or number / startpoint of period + // * until / Date or number / endpoint of period + // returns: string + // * "{substring of ISO date} - {status} for {duration}min\n...", sorting: latest last + // * undefined = no data available or global.sleeplog found + restoreLog: function (logfile) { ... } + // eliminate some errors inside a specific logfile + // * logfile / string / name of the logfile that will be restored + // returns: int / number of changes that were made + reinterpretTemp: function (logfile, tempthresh) { ... } + // reinterpret worn status based on given temperature threshold + // * logfile / string / name of the logfile + // * tempthresh / float / new temperature threshold + // returns: int / number of changes that were made + } +``` + +--- +### Worth Mentioning +--- +#### To do list +* Send the logged information to Gadgetbridge. + _(For now I have no idea how to achieve this, help is appreciated.)_ +* Calculate and display overall sleep statistics. + +#### Requests, Bugs and Feedback +Please leave requests and bug reports by raising an issue at [github.com/storm64/BangleApps](https://github.com/storm64/BangleApps) or send me a [mail](mailto:banglejs@storm64.de). + +#### Creator +Storm64 ([Mail](mailto:banglejs@storm64.de), [github](https://github.com/storm64)) + +#### Contributors +nxdefiant ([github](https://github.com/nxdefiant)) + +#### Attributions +* ESS calculation based on nxdefiant interpretation of the following publication by: + Marko Borazio, Eugen Berlin, Nagihan Kücükyildiz, Philipp M. Scholl and Kristof Van Laerhoven + [Towards a Benchmark for Wearable Sleep Analysis with Inertial Wrist-worn Sensing Units](https://ubicomp.eti.uni-siegen.de/home/datasets/ichi14/index.html.en), + ICHI 2014, Verona, Italy, IEEE Press, 2014. +* Icons used in this app are from [https://icons8.com](https://icons8.com). + +#### License +[MIT License](LICENSE) diff --git a/apps/sleeplog/app-icon.js b/apps/sleeplog/app-icon.js new file mode 100644 index 000000000..36b890491 --- /dev/null +++ b/apps/sleeplog/app-icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("mEw4cA///4H8m2ZtVN/nl1P9vXXBoJT/AGcbtuwCJ3btu2CBsG7fZ23ACJk2CIXYCBcB2w1C7YRO/oR/CKp9CCIJ9MUIQRBUI8CpMgYpwRGdJQRGABQRUhdtCJ9btugCJsiM4O0kmSpICFCKJUCCMpZDCJx9CCJsyBIQRxBpACDyAR/CJZeCAA8BCPIA/AFQ")) diff --git a/apps/sleeplog/app.js b/apps/sleeplog/app.js new file mode 100644 index 000000000..cbfad4bda --- /dev/null +++ b/apps/sleeplog/app.js @@ -0,0 +1,194 @@ +// set storage and define settings +var storage = require("Storage"); +var breaktod, maxawake, minconsec; + +// read required settings from storage +function readSettings(settings) { + breaktod = settings.breaktod || (settings.breaktod === 0 ? 0 : 10); // time of day when to start/end graphs + maxawake = settings.maxawake || 36E5; // 60min in ms + minconsec = settings.minconsec || 18E5; // 30min in ms +} + +// define draw log function +function drawLog(topY, viewUntil) { + // set default view time + viewUntil = viewUntil || Date(); + + // define parameters + var statusValue = [0, 0.4, 0.6, 1]; // unknown, not worn, awake, sleeping, consecutive sleep + var statusColor = [0, 63488, 2016, 32799, 31]; // black, red, green, violet, blue + var period = 432E5; // 12h + var graphHeight = 18; + var labelHeight = 12; + var width = g.getWidth(); + var timestamp0 = viewUntil.valueOf() - period; + var y = topY + graphHeight; + + // read 12h wide log + var log = require("sleeplog").readLog(timestamp0, viewUntil.valueOf()); + + // format log array if not empty + if (log.length) { + // if the period goes into the future add unknown status at the beginning + if (viewUntil > Date()) log.unshift([Date().valueOf(), 0]); + + // check if the period goes earlier than logged data + if (log[log.length - 1][0] < timestamp0) { + // set time of last entry according to period + log[log.length - 1][0] = timestamp0; + } else { + // add entry with unknown status at the end + log.push([timestamp0, 0]); + } + + // remap each element to [status, relative beginning, relative end, duration] + log = log.map((element, index) => [ + element[1], + element[0] - timestamp0, + (log[index - 1] || [viewUntil.valueOf()])[0] - timestamp0, + (log[index - 1] || [viewUntil.valueOf()])[0] - element[0] + ]); + + // start with the oldest entry to build graph left to right + log.reverse(); + } + + // clear area + g.reset().clearRect(0, topY, width, y + labelHeight); + // draw x axis + g.drawLine(0, y + 1, width, y + 1); + // draw x label + var hours = period / 36E5; + var stepwidth = width / hours; + var startHour = 24 + viewUntil.getHours() - hours; + for (var x = 0; x < hours; x++) { + g.fillRect(x * stepwidth, y + 2, x * stepwidth, y + 4); + g.setFontAlign(-1, -1).setFont("6x8") + .drawString((startHour + x) % 24, x * stepwidth, y + 6); + } + + // define variables for sleep calculation + var consecutive = 0; + var output = [0, 0]; // [estimated, true] + var i, nosleepduration; + + // draw graph + log.forEach((element, index) => { + // set bar color depending on type + g.setColor(statusColor[consecutive ? 4 : element[0]]); + + // check for sleeping status + if (element[0] === 3) { + // count true sleeping hours + output[1] += element[3]; + // count duration of subsequent non sleeping periods + i = index + 1; + nosleepduration = 0; + while (log[i] !== undefined && log[i][0] < 3 && nosleepduration < maxawake) { + nosleepduration += log[i++][3]; + } + // check if counted duration lower than threshold to start/stop counting + if (log[i] !== undefined && nosleepduration < maxawake) { + // start counting consecutive sleeping hours + consecutive += element[3]; + // correct color to match consecutive sleeping + g.setColor(statusColor[4]); + } else { + // check if counted consecutive sleeping greater then threshold + if (consecutive >= minconsec) { + // write verified consecutive sleeping hours to output + output[0] += consecutive + element[3]; + } else { + // correct color to display a canceled consecutive sleeping period + g.setColor(statusColor[3]); + } + // stop counting consecutive sleeping hours + consecutive = 0; + } + } else { + // count durations of non sleeping periods for consecutive sleeping + if (consecutive) consecutive += element[3]; + } + + // calculate points + var x1 = Math.ceil(element[1] / period * width); + var x2 = Math.floor(element[2] / period * width); + var y2 = y - graphHeight * statusValue[element[0]]; + // draw bar + g.clearRect(x1, topY, x2, y); + g.fillRect(x1, y, x2, y2).reset(); + if (y !== y2) g.fillRect(x1, y2, x2, y2); + }); + + // clear variables + log = undefined; + + // return convert output into minutes + return output.map(value => value /= 6E4); +} + +// define draw night to function +function drawNightTo(prevDays) { + // calculate 10am of this or a previous day + var date = Date(); + date = Date(date.getFullYear(), date.getMonth(), date.getDate() - prevDays, breaktod); + + // get width + var width = g.getWidth(); + + // clear app area + g.clearRect(0, 24, width, width); + + // define variable for sleep calculation + var outputs = [0, 0]; // [estimated, true] + // draw log graphs and read outputs + drawLog(110, date).forEach( + (value, index) => outputs[index] += value); + drawLog(145, Date(date.valueOf() - 432E5)).forEach( + (value, index) => outputs[index] += value); + + // reduce date by 1s to ensure correct headline + date = Date(date.valueOf() - 1E3); + // draw headline, on red bg if service or loggging disabled + g.setColor(global.sleeplog && sleeplog.enabled && sleeplog.logfile ? g.theme.bg : 63488); + g.fillRect(0, 30, width, 66).reset(); + g.setFont("12x20").setFontAlign(0, -1); + g.drawString("Night to " + require('locale').dow(date, 1) + "\n" + + require('locale').date(date, 1), width / 2, 30); + + // draw outputs + g.reset(); // area: 0, 70, width, 105 + g.setFont("6x8").setFontAlign(-1, -1); + g.drawString("consecutive\nsleeping", 10, 70); + g.drawString("true\nsleeping", 10, 90); + g.setFont("12x20").setFontAlign(1, -1); + g.drawString(Math.floor(outputs[0] / 60) + "h " + + Math.floor(outputs[0] % 60) + "min", width - 10, 70); + g.drawString(Math.floor(outputs[1] / 60) + "h " + + Math.floor(outputs[1] % 60) + "min", width - 10, 90); +} + + +// define function to draw and setup UI +function startApp() { + readSettings(storage.readJSON("sleeplog.json", true) || {}); + drawNightTo(prevDays); + Bangle.setUI("leftright", (cb) => { + if (!cb) { + eval(storage.read("sleeplog.settings.js"))(startApp); + } else if (prevDays + cb >= -1) { + drawNightTo((prevDays += cb)); + } + }); +} + +// define day to display +var prevDays = 0; + +// setup app +g.clear(); +Bangle.loadWidgets(); +Bangle.drawWidgets(); + +// start app +startApp(); diff --git a/apps/sleeplog/app.png b/apps/sleeplog/app.png new file mode 100644 index 000000000..bb7f11f67 Binary files /dev/null and b/apps/sleeplog/app.png differ diff --git a/apps/sleeplog/boot.js b/apps/sleeplog/boot.js new file mode 100644 index 000000000..7ec71742c --- /dev/null +++ b/apps/sleeplog/boot.js @@ -0,0 +1,137 @@ +// Sleep/Wake detection with Estimation of Stationary Sleep-segments (ESS): +// Marko Borazio, Eugen Berlin, Nagihan Kücükyildiz, Philipp M. Scholl and Kristof Van Laerhoven, "Towards a Benchmark for Wearable Sleep Analysis with Inertial Wrist-worn Sensing Units", ICHI 2014, Verona, Italy, IEEE Press, 2014. +// https://ubicomp.eti.uni-siegen.de/home/datasets/ichi14/index.html.en + +// sleeplog.status values: 0 = unknown, 1 = not worn, 2 = awake, 3 = sleeping + +// load settings into global object +global.sleeplog = Object.assign({ + enabled: true, // en-/disable completely + logfile: "sleeplog.log", // logfile + winwidth: 13, // 13 values, read with 12.5Hz = every 1.04s + nomothresh: 0.012, // values lower than 0.008 getting triggert by noise + sleepthresh: 577, // 577 times no movement * 1.04s window width > 10min + tempthresh: 27, // every temperature above ist registered as worn +}, require("Storage").readJSON("sleeplog.json", true) || {}); + +// delete app settings +["breaktod", "maxawake", "minconsec"].forEach(property => delete global.sleeplog[property]); + +// check if service enabled +if (global.sleeplog.enabled) { + + // add cached values and functions to global object + global.sleeplog = Object.assign(global.sleeplog, { + // set cached values + ess_values: [], + nomocount: 0, + firstnomodate: undefined, + resting: undefined, + status: 0, + + // define acceleration listener function + accel: function(xyz) { + // save acceleration magnitude and start calculation on enough saved data + if (global.sleeplog.ess_values.push(xyz.mag) >= global.sleeplog.winwidth) global.sleeplog.calc(); + }, + + // define calculator function + calc: function() { + // calculate standard deviation over + var mean = this.ess_values.reduce((prev, cur) => cur + prev) / this.winwidth; + var stddev = Math.sqrt(this.ess_values.map(val => Math.pow(val - mean, 2)).reduce((prev, cur) => prev + cur) / this.winwidth); + // reset saved acceleration data + this.ess_values = []; + + // check for non-movement according to the threshold + if (stddev < this.nomothresh) { + // increment non-movement sections count, set date of first non-movement + if (++this.nomocount == 1) this.firstnomodate = Math.floor(Date.now()); + // check resting state and non-movement count against threshold + if (this.resting !== true && this.nomocount >= this.sleepthresh) { + // change resting state, status and write to log + this.resting = true; + // check if the watch is worn + if (E.getTemperature() > this.tempthresh) { + // set status and write to log as sleping + this.status = 3; + this.log(this.firstnomodate, 3, E.getTemperature()); + } else { + // set status and write to log as not worn + this.status = 1; + this.log(this.firstnomodate, 1, E.getTemperature()); + } + } + } else { + // reset non-movement sections count + this.nomocount = 0; + // check resting state + if (this.resting !== false) { + // change resting state + this.resting = false; + // set status and write to log as awake + this.status = 2; + this.log(Math.floor(Date.now()), 2); + } + } + }, + + // define logging function + log: function(date, status, temperature, info) { + // skip logging if logfile is undefined or does not end with ".log" + if (!this.logfile || !this.logfile.endsWith(".log")) return; + // prevent logging on implausible date + if (date < 9E11 || Date() < 9E11) return; + + // set default value for status + status = status || 0; + + // define storage + var storage = require("Storage"); + + // read previous logfile + var log = JSON.parse(atob(storage.read(this.logfile))); + + // remove last state if it was unknown and is less then 10min ago + if (log.length > 0 && log[0][1] === 0 && + Math.floor(Date.now()) - log[0][0] < 600000) log.shift(); + + // add actual status at the first position if it has changed + if (log.length === 0 || log[0][1] !== status) + log.unshift(info ? [date, status, temperature, info] : temperature ? [date, status, temperature] : [date, status]); + + // write log to storage + storage.write(this.logfile, btoa(JSON.stringify(log))); + + // clear variables + log = undefined; + storage = undefined; + }, + + // define stop function (logging will restart if enabled and boot file is executed) + stop: function() { + // remove acceleration and kill listener + Bangle.removeListener('accel', global.sleeplog.accel); + E.removeListener('kill', global.sleeplog.stop); + // write log with undefined sleeping status + global.sleeplog.log(Math.floor(Date.now())); + // reset cached values + global.sleeplog.ess_values = []; + global.sleeplog.nomocount = 0; + global.sleeplog.firstnomodate = undefined; + global.sleeplog.resting = undefined; + global.sleeplog.status = 0; + }, + + // define restart function (also use for initial starting) + start: function() { + // add acceleration listener + Bangle.on('accel', global.sleeplog.accel); + // add kill listener + E.on('kill', global.sleeplog.stop); + }, + }); + + // initial starting + global.sleeplog.start(); +} diff --git a/apps/sleeplog/lib.js b/apps/sleeplog/lib.js new file mode 100644 index 000000000..81bca0f3f --- /dev/null +++ b/apps/sleeplog/lib.js @@ -0,0 +1,150 @@ +exports = { + // define en-/disable function + setEnabled: function(enable, logfile) { + // check if sleeplog is available + if (typeof global.sleeplog !== "object") return; + + // set default logfile + logfile = logfile.endsWith(".log") ? logfile : + logfile === false ? undefined : + "sleeplog.log"; + + // check if status needs to be changed + if (enable === global.sleeplog.enabled || + logfile === global.sleeplog.logfile) return false; + + // stop if enabled + if (global.sleeplog.enabled) global.sleeplog.stop(); + + // define storage and filename + var storage = require("Storage"); + var filename = "sleeplog.json"; + + // change enabled value in settings + storage.writeJSON(filename, Object.assign(storage.readJSON(filename, true) || {}, { + enabled: enable, + logfile: logfile + })); + + // force changes to take effect by executing the boot script + eval(storage.read("sleeplog.boot.js")); + + // clear variables + storage = undefined; + filename = undefined; + return true; + }, + + // define read log function + // sorting: latest first, format: + // [[number, int, float, string], [...], ... ] + // - number // timestamp in ms + // - int // status: 0 = unknown, 1 = not worn, 2 = awake, 3 = sleeping + // - float // internal temperature + // - string // additional information + readLog: function(since, until) { + // set logfile + var logfile = (global.sleeplog || {}).logfile || "sleeplog.log"; + + // check if since is in the future + if (since > Date()) return []; + + // read log json to array + var log = JSON.parse(atob(require("Storage").read(logfile))); + + // search for latest entry befor since + since = (log.find(element => element[0] <= since) || [0])[0]; + + // filter selected time period + log = log.filter(element => (element[0] >= since) && (element[0] <= (until || 1E14))); + + // output log + return log; + }, + + // define log to humanreadable string function + // sorting: latest last, format: + // "{substring of ISO date} - {status} for {duration}min\n..." + getReadableLog: function(printLog, since, until) { + // read log and check + var log = this.readLog(since, until); + if (!log.length) return; + // reverse array to set last timestamp to the end + log.reverse(); + + // define status description and log string + var statusText = ["unknown ", "not worn", "awake ", "sleeping"]; + var logString = []; + + // rewrite each entry + log.forEach((element, index) => { + logString[index] = "" + + Date(element[0] - Date().getTimezoneOffset() * 6E4).toISOString().substr(0, 19).replace("T", " ") + " - " + + statusText[element[1]] + + (index === log.length - 1 ? "" : " for " + Math.round((log[index + 1][0] - element[0]) / 60000) + "min") + + (element[2] ? " | Temp: " + element[2] + "°C" : "") + + (element[3] ? " | " + element[3] : ""); + }); + logString = logString.join("\n"); + + // if set print and return string + if (printLog) { + print(logString); + print("- first", Date(log[0][0])); + print("- last", Date(log[log.length - 1][0])); + var period = log[log.length - 1][0] - log[0][0]; + print("- period= " + Math.floor(period / 864E5) + "d " + Math.floor(period % 864E5 / 36E5) + "h " + Math.floor(period % 36E5 / 6E4) + "min"); + } + return logString; + }, + + // define function to eliminate some errors inside the log + restoreLog: function(logfile) { + // define storage + var storage = require("Storage"); + + // read log json to array + var log = JSON.parse(atob(storage.read(logfile))); + + // define output variable to show number of changes + var output = log.length; + + // remove non decremental entries + log = log.filter((element, index) => log[index][0] >= (log[index + 1] || [0])[0]); + + // write log to storage + storage.write(logfile, btoa(JSON.stringify(log))); + + // return difference in length + return output - log.length; + }, + + // define function to reinterpret worn status based on given temperature threshold + reinterpretTemp: function(logfile, tempthresh) { + // define storage + var storage = require("Storage"); + + // read log json to array + var log = JSON.parse(atob(storage.read(logfile))); + + // define output variable to show number of changes + var output = 0; + + // remove non decremental entries + log = log.map(element => { + if (element[2]) { + var tmp = element[1]; + element[1] = element[2] > tempthresh ? 3 : 1; + if (tmp !== element[1]) output++; + } + return element; + }); + + // write log to storage + storage.write(logfile, btoa(JSON.stringify(log))); + + // return output + return output; + } + +}; diff --git a/apps/sleeplog/metadata.json b/apps/sleeplog/metadata.json new file mode 100644 index 000000000..4a67af301 --- /dev/null +++ b/apps/sleeplog/metadata.json @@ -0,0 +1,28 @@ +{ + "id":"sleeplog", + "name":"Sleep Log", + "shortName": "SleepLog", + "version": "0.01", + "description": "Log and view your sleeping habits. This app derived from SleepPhaseAlarm and uses also the principe of Estimation of Stationary Sleep-segments (ESS).", + "icon": "app.png", + "type": "app", + "tags": "tool,boot", + "supports": ["BANGLEJS2"], + "readme": "README.md", + "storage": [ + {"name": "sleeplog.app.js", "url": "app.js"}, + {"name": "sleeplog.img", "url": "app-icon.js", "evaluate":true}, + {"name": "sleeplog.boot.js", "url": "boot.js"}, + {"name": "sleeplog", "url": "lib.js"}, + {"name": "sleeplog.settings.js", "url": "settings.js"} + ], + "data": [ + {"name": "sleeplog.json"}, + {"name": "sleeplog.log"} + ], + "screenshots": [ + {"url": "screenshot1.png"}, + {"url": "screenshot2.png"}, + {"url": "screenshot3.png"} + ] +} diff --git a/apps/sleeplog/screenshot1.png b/apps/sleeplog/screenshot1.png new file mode 100644 index 000000000..9ab384ca9 Binary files /dev/null and b/apps/sleeplog/screenshot1.png differ diff --git a/apps/sleeplog/screenshot2.png b/apps/sleeplog/screenshot2.png new file mode 100644 index 000000000..69e370042 Binary files /dev/null and b/apps/sleeplog/screenshot2.png differ diff --git a/apps/sleeplog/screenshot3.png b/apps/sleeplog/screenshot3.png new file mode 100644 index 000000000..79433949a Binary files /dev/null and b/apps/sleeplog/screenshot3.png differ diff --git a/apps/sleeplog/settings.js b/apps/sleeplog/settings.js new file mode 100644 index 000000000..6137e2082 --- /dev/null +++ b/apps/sleeplog/settings.js @@ -0,0 +1,118 @@ +(function(back) { + var filename = "sleeplog.json"; + + // set storage and load settings + var storage = require("Storage"); + var settings = Object.assign({ + breaktod: 10, // time of day when to start/end graphs + maxawake: 36E5, // 60min in ms + minconsec: 18E5, // 30min in ms + tempthresh: 27, // every temperature above ist registered as worn + nomothresh: 0.012, // values lower than 0.008 getting triggert by noise + sleepthresh: 577, // 577 times no movement * 1.04s window width > 10min + winwidth: 13, // 13 values, read with 12.5Hz = every 1.04s + enabled: true, // en-/disable completely + logfile: "sleeplog.log", // logfile + }, storage.readJSON(filename, true) || {}); + + // write change to global.sleeplog and storage + function writeSetting(key, value) { + // change key in global.sleeplog + if (typeof global.sleeplog === "object") global.sleeplog[key] = value; + // reread settings to only change key + settings = Object.assign(settings, storage.readJSON(filename, true) || {}); + // change the value of key + settings[key] = value; + // write to storage + storage.writeJSON(filename, settings); + } + + // define circulate function + function circulate(min, max, value) { + return value > max ? min : value < min ? max : value; + } + + // calculate sleepthresh factor + var stFactor = settings.winwidth / 12.5 / 60; + + // show main menu + function showMain() { + var mainMenu = E.showMenu({ + "": { + title: "Sleep Log" + }, + "< Exit": () => load(), + "< Back": () => back(), + "BreakTod": { + value: settings.breaktod, + step: 1, + onchange: function(v) { + this.value = v = circulate(0, 23, v); + writeSetting("breaktod", v); + } + }, + "MaxAwake": { + value: settings.maxawake / 6E4, + step: 5, + format: v => v + "min", + onchange: function(v) { + this.value = v = circulate(15, 120, v); + writeSetting("maxawake", v * 6E4); + } + }, + "MinConsec": { + value: settings.minconsec / 6E4, + step: 5, + format: v => v + "min", + onchange: function(v) { + this.value = v = circulate(15, 120, v); + writeSetting("minconsec", v * 6E4); + } + }, + "TempThresh": { + value: settings.tempthresh, + step: 0.5, + format: v => v + "°C", + onchange: function(v) { + this.value = v = circulate(20, 40, v); + writeSetting("tempthresh", v); + } + }, + "NoMoThresh": { + value: settings.nomothresh, + step: 0.001, + format: v => ("" + v).padEnd(5, "0"), + onchange: function(v) { + this.value = v = circulate(0.006, 0.02, v); + writeSetting("nomothresh", v); + } + }, + "MinDuration": { + value: Math.floor(settings.sleepthresh * stFactor), + step: 1, + format: v => v + "min", + onchange: function(v) { + this.value = v = circulate(5, 15, v); + writeSetting("sleepthresh", Math.ceil(v / stFactor)); + } + }, + "Enabled": { + value: settings.enabled, + format: v => v ? "on" : "off", + onchange: function(v) { + writeSetting("enabled", v); + } + }, + "Logfile ": { + value: settings.logfile === "sleeplog.log" ? true : settings.logfile.endsWith(".log") ? "custom" : false, + format: v => v === true ? "default" : v ? "custom" : "off", + onchange: function(v) { + if (v !== "custom") writeSetting("logfile", v ? "sleeplog.log" : undefined); + } + }, + }); + } + + // draw main menu + showMain(); +}) diff --git a/bin/language_scan.js b/bin/language_scan.js index b2e98b5f3..6385caf49 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 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; // Requires API key (which are free) + translate.url = process.env.TURL; +} + var IGNORE_STRINGS = [ "5x5","6x8","6x8:2","4x6","12x20","6x15","5x9Numeric7Seg", "Vector", // fonts "---","...","*","##","00","GPS","ram", @@ -12,7 +22,11 @@ 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", + "fgH", "bgH", "m/s", + "undefined", "kbmedia", "NONE", ]; var IGNORE_FUNCTION_PARAMS = [ @@ -64,13 +78,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 +136,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 +159,27 @@ 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 + */ +//TODO fix settings bug +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 +// 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(""); + //process.exit(1); log("Possible English Strings that could be translated"); log("================================================================="); @@ -158,15 +208,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 +227,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 (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."); diff --git a/index.html b/index.html index 64bf1d44c..6c9a21bf8 100644 --- a/index.html +++ b/index.html @@ -144,7 +144,7 @@
  Translations (BETA - more info) +   Translations (BETA - more info). Any apps that are uploaded to Bangle.js after changing this will have any text automatically translated.
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/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/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/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/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/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/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/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..2a9ecfd42 100644 --- a/lang/index.json +++ b/lang/index.json @@ -9,5 +9,17 @@ {"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":"ru_RU","name":"Russian","url":"ru_RU.json", "disabled":"Characters not in ISO Latin codepage"}, + {"code":"pt_PT","name":"Portuguese","url":"pt_PT.json"}, + {"code":"bg_BG","name":"Bulgarian","url":"bg_BG.json", "disabled":"Characters not in ISO Latin codepage"}, + {"code":"da_DA","name":"Danish","url":"da_DA.json"}, + {"code":"el_EL","name":"Greek","url":"el_EL.json", "disabled":"Characters not in ISO Latin codepage"}, + {"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/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/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/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/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/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/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/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/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/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/unicode-based/ja_JA.json b/lang/unicode-based/ja_JA.json new file mode 100644 index 000000000..2852fd9e3 --- /dev/null +++ b/lang/unicode-based/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/unicode-based/zh_ZH.json b/lang/unicode-based/zh_ZH.json new file mode 100644 index 000000000..4ff134b04 --- /dev/null +++ b/lang/unicode-based/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 diff --git a/loader.js b/loader.js index c6840cbb0..6b27736ae 100644 --- a/loader.js +++ b/loader.js @@ -179,6 +179,7 @@ window.addEventListener('load', (event) => { } catch(e) { console.error("lang/index.json Corrupted", e); } + languages = languages.filter( l=> l.disabled===undefined ); function reloadLanguage() { LANGUAGE = undefined;