Merge remote-tracking branch 'Nightscout/dev' into Autotune/TuneWeekDaysClean
This commit is contained in:
commit
8f6765ee31
23 changed files with 273 additions and 35 deletions
|
@ -111,7 +111,7 @@ android {
|
|||
defaultConfig {
|
||||
multiDexEnabled true
|
||||
versionCode 1500
|
||||
version "3.0.0.2-dev-l"
|
||||
version "3.0.0.2-dev-m"
|
||||
buildConfigField "String", "VERSION", '"' + version + '"'
|
||||
buildConfigField "String", "BUILDVERSION", '"' + generateGitBuild() + '-' + generateDate() + '"'
|
||||
buildConfigField "String", "REMOTE", '"' + generateGitRemote() + '"'
|
||||
|
|
|
@ -249,7 +249,7 @@ class MainApp : DaggerApplication() {
|
|||
override fun onTerminate() {
|
||||
aapsLogger.debug(LTag.CORE, "onTerminate")
|
||||
unregisterActivityLifecycleCallbacks(activityMonitor)
|
||||
alarmSoundServiceHelper.stopService(this)
|
||||
alarmSoundServiceHelper.stopService(this, "onTerminate")
|
||||
super.onTerminate()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -60,7 +60,7 @@ class WizardInfoDialog : DaggerDialogFragment() {
|
|||
|
||||
override fun onSaveInstanceState(outState: Bundle) {
|
||||
super.onSaveInstanceState(outState)
|
||||
outState.putString("data", data.toJson(true, dateUtil).toString())
|
||||
outState.putString("data", data.toJson(true, dateUtil, profileFunction).toString())
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
|
|
|
@ -286,14 +286,14 @@ class DataSyncSelectorImplementation @Inject constructor(
|
|||
bolusCalculatorResult.first.interfaceIDs.nightscoutId == null ->
|
||||
nsClientPlugin.nsClientService?.dbAdd(
|
||||
"treatments",
|
||||
bolusCalculatorResult.first.toJson(true, dateUtil),
|
||||
bolusCalculatorResult.first.toJson(true, dateUtil, profileFunction),
|
||||
DataSyncSelector.PairBolusCalculatorResult(bolusCalculatorResult.first, bolusCalculatorResult.second.id),
|
||||
"$startId/$lastDbId"
|
||||
)
|
||||
// with nsId = update
|
||||
bolusCalculatorResult.first.interfaceIDs.nightscoutId != null ->
|
||||
nsClientPlugin.nsClientService?.dbUpdate(
|
||||
"treatments", bolusCalculatorResult.first.interfaceIDs.nightscoutId, bolusCalculatorResult.first.toJson(false, dateUtil),
|
||||
"treatments", bolusCalculatorResult.first.interfaceIDs.nightscoutId, bolusCalculatorResult.first.toJson(false, dateUtil, profileFunction),
|
||||
DataSyncSelector.PairBolusCalculatorResult(bolusCalculatorResult.first, bolusCalculatorResult.second.id), "$startId/$lastDbId"
|
||||
)
|
||||
}
|
||||
|
|
|
@ -73,6 +73,7 @@ class GraphData(
|
|||
}
|
||||
|
||||
fun addBasals() {
|
||||
maxY = max(maxY, defaultValueHelper.determineHighLine())
|
||||
val scale = defaultValueHelper.determineLowLine() / maxY / 1.2
|
||||
addSeries(overviewData.baseBasalGraphSeries)
|
||||
addSeries(overviewData.tempBasalGraphSeries)
|
||||
|
|
|
@ -17,12 +17,12 @@ import info.nightscout.androidaps.databinding.OverviewNotificationItemBinding
|
|||
import info.nightscout.androidaps.interfaces.ActivePlugin
|
||||
import info.nightscout.androidaps.interfaces.IconsProvider
|
||||
import info.nightscout.androidaps.interfaces.NotificationHolder
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.shared.logging.LTag
|
||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventUpdateOverviewNotification
|
||||
import info.nightscout.androidaps.services.AlarmSoundServiceHelper
|
||||
import info.nightscout.androidaps.utils.DateUtil
|
||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.shared.logging.LTag
|
||||
import info.nightscout.shared.sharedPreferences.SP
|
||||
import java.util.*
|
||||
import javax.inject.Inject
|
||||
|
@ -68,7 +68,7 @@ class NotificationStore @Inject constructor(
|
|||
store.add(n)
|
||||
if (sp.getBoolean(R.string.key_raise_notifications_as_android_notifications, true) && n !is NotificationWithAction)
|
||||
raiseSystemNotification(n)
|
||||
if (n.soundId != null && n.soundId != 0) alarmSoundServiceHelper.startAlarm(context, n.soundId!!)
|
||||
if (n.soundId != null && n.soundId != 0) alarmSoundServiceHelper.startAlarm(context, n.soundId!!, n.text)
|
||||
Collections.sort(store, NotificationComparator())
|
||||
return true
|
||||
}
|
||||
|
@ -77,7 +77,7 @@ class NotificationStore @Inject constructor(
|
|||
fun remove(id: Int): Boolean {
|
||||
for (i in store.indices) {
|
||||
if (store[i].id == id) {
|
||||
if (store[i].soundId != null) alarmSoundServiceHelper.stopService(context)
|
||||
if (store[i].soundId != null) alarmSoundServiceHelper.stopService(context, "Removed " + store[i].text)
|
||||
aapsLogger.debug(LTag.NOTIFICATION, "Notification removed: " + store[i].text)
|
||||
store.removeAt(i)
|
||||
return true
|
||||
|
@ -92,7 +92,7 @@ class NotificationStore @Inject constructor(
|
|||
while (i < store.size) {
|
||||
val n = store[i]
|
||||
if (n.validTo != 0L && n.validTo < System.currentTimeMillis()) {
|
||||
if (store[i].soundId != null) alarmSoundServiceHelper.stopService(context)
|
||||
if (store[i].soundId != null) alarmSoundServiceHelper.stopService(context, "Expired " + store[i].text)
|
||||
aapsLogger.debug(LTag.NOTIFICATION, "Notification expired: " + store[i].text)
|
||||
store.removeAt(i)
|
||||
i--
|
||||
|
|
|
@ -10,13 +10,10 @@ import info.nightscout.androidaps.R
|
|||
import info.nightscout.androidaps.database.AppRepository
|
||||
import info.nightscout.androidaps.database.entities.GlucoseValue
|
||||
import info.nightscout.androidaps.database.transactions.CgmSourceTransaction
|
||||
import info.nightscout.androidaps.interfaces.BgSource
|
||||
import info.nightscout.androidaps.interfaces.PluginBase
|
||||
import info.nightscout.androidaps.interfaces.PluginDescription
|
||||
import info.nightscout.androidaps.interfaces.PluginType
|
||||
import info.nightscout.androidaps.interfaces.*
|
||||
import info.nightscout.androidaps.receivers.DataWorker
|
||||
import info.nightscout.androidaps.receivers.Intents
|
||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||
import info.nightscout.androidaps.utils.buildHelper.BuildHelper
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.shared.logging.LTag
|
||||
import javax.inject.Inject
|
||||
|
@ -26,7 +23,9 @@ import javax.inject.Singleton
|
|||
class AidexPlugin @Inject constructor(
|
||||
injector: HasAndroidInjector,
|
||||
rh: ResourceHelper,
|
||||
aapsLogger: AAPSLogger
|
||||
aapsLogger: AAPSLogger,
|
||||
private val buildHelper: BuildHelper,
|
||||
private val config: Config
|
||||
) : PluginBase(
|
||||
PluginDescription()
|
||||
.mainType(PluginType.BGSOURCE)
|
||||
|
@ -49,6 +48,11 @@ class AidexPlugin @Inject constructor(
|
|||
return advancedFiltering
|
||||
}
|
||||
|
||||
// Allow only for pumpcontrol or dev & engineering_mode
|
||||
override fun specialEnableCondition(): Boolean {
|
||||
return config.APS.not() || buildHelper.isDev() && buildHelper.isEngineeringMode()
|
||||
}
|
||||
|
||||
// cannot be inner class because of needed injection
|
||||
class AidexWorker(
|
||||
context: Context,
|
||||
|
|
|
@ -605,7 +605,11 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
|||
<string name="secondcarbsincrement">Deuxième incrément de glucides</string>
|
||||
<string name="thirdcarbsincrement">Troisième incrément de glucides</string>
|
||||
<string name="cgm">MGC</string>
|
||||
<string name="ns_cellular">Utiliser la connexion mobile</string>
|
||||
<string name="ns_wifi">Utilisez la connexion Wi-Fi</string>
|
||||
<string name="ns_wifi_ssids">Wi-fi SSID</string>
|
||||
<string name="ns_charging">Pendant la charge</string>
|
||||
<string name="ns_battery">Sur batterie</string>
|
||||
<string name="connectionsettings_title">Paramètres de connexion</string>
|
||||
<string name="ns_wifi_allowedssids">SSIDs autorisés (séparés par point-virgule)</string>
|
||||
<string name="ns_allowroaming">Autoriser connexion données itinérance</string>
|
||||
|
@ -684,7 +688,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
|||
<string name="miscellaneous">Divers</string>
|
||||
<string name="nav_logsettings">Paramètres journal</string>
|
||||
<string name="resettodefaults">Réinitialiser les valeurs par défaut</string>
|
||||
<string name="nsmalfunction">Dysfonctionnement NSClient. Faites une réinitialisation de NS et de NSClient.</string>
|
||||
<string name="nsmalfunction">Dysfonctionnement NSClient. Redémarrez NS et NSClient.</string>
|
||||
<string name="time_offset">Décalage horaire</string>
|
||||
<string name="bolus_reminder">Rappel du bolus plus tard</string>
|
||||
<string name="setupwizard_preferred_aps_mode">Mode APS préféré</string>
|
||||
|
@ -1035,4 +1039,6 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
|||
<string name="aidex">GlucoRx Aidex</string>
|
||||
<string name="aidex_short">Aidex</string>
|
||||
<string name="description_source_aidex">Recevoir les valeurs de glycémie du MGC GlucoRx Aidex.</string>
|
||||
<string name="blocked_by_charging">Bloqué par les options de recharge</string>
|
||||
<string name="blocked_by_connectivity">Bloqué par les options de connectivité</string>
|
||||
</resources>
|
||||
|
|
|
@ -475,6 +475,7 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
|
|||
<string name="localalertsettings_title">Yerel uyarılar</string>
|
||||
<string name="enable_missed_bg_readings_alert">KŞ bilgisi alınmadığında uyar</string>
|
||||
<string name="enable_pump_unreachable_alert">Pompa ulaşılamıyorsa uyar</string>
|
||||
<string name="pump_unreachable_threshold">Pompa ulaşılamaz eşiği [dk]</string>
|
||||
<string name="enable_carbs_req_alert">Karbonhidrat gerekliyse uyar</string>
|
||||
<string name="urgent_alarm">Acil önemli Alarm</string>
|
||||
<string name="info">BİLGİ</string>
|
||||
|
|
|
@ -74,11 +74,11 @@ class ErrorDialog : DaggerDialogFragment() {
|
|||
}
|
||||
binding.mute.setOnClickListener {
|
||||
uel.log(Action.ERROR_DIALOG_MUTE, Sources.Unknown)
|
||||
stopAlarm()
|
||||
stopAlarm("Mute")
|
||||
}
|
||||
binding.mute5min.setOnClickListener {
|
||||
uel.log(Action.ERROR_DIALOG_MUTE_5MIN, Sources.Unknown)
|
||||
stopAlarm()
|
||||
stopAlarm("Mute 5 min")
|
||||
handler.postDelayed(this::startAlarm, T.mins(5).msecs())
|
||||
}
|
||||
startAlarm()
|
||||
|
@ -110,14 +110,14 @@ class ErrorDialog : DaggerDialogFragment() {
|
|||
super.dismissAllowingStateLoss()
|
||||
helperActivity?.finish()
|
||||
handler.removeCallbacksAndMessages(null)
|
||||
stopAlarm()
|
||||
stopAlarm("Dismiss")
|
||||
}
|
||||
|
||||
private fun startAlarm() {
|
||||
if (sound != 0)
|
||||
alarmSoundServiceHelper.startAlarm(ctx, sound)
|
||||
alarmSoundServiceHelper.startAlarm(ctx, sound, "$title:$status")
|
||||
}
|
||||
|
||||
private fun stopAlarm() =
|
||||
alarmSoundServiceHelper.stopService(ctx)
|
||||
private fun stopAlarm(reason: String) =
|
||||
alarmSoundServiceHelper.stopService(ctx, reason)
|
||||
}
|
||||
|
|
|
@ -2,22 +2,23 @@ package info.nightscout.androidaps.extensions
|
|||
|
||||
import com.google.gson.Gson
|
||||
import com.google.gson.JsonSyntaxException
|
||||
import info.nightscout.androidaps.Constants
|
||||
import info.nightscout.androidaps.database.entities.BolusCalculatorResult
|
||||
import info.nightscout.androidaps.database.entities.TherapyEvent
|
||||
import info.nightscout.androidaps.interfaces.Profile
|
||||
import info.nightscout.androidaps.interfaces.ProfileFunction
|
||||
import info.nightscout.androidaps.utils.DateUtil
|
||||
import info.nightscout.androidaps.utils.JsonHelper
|
||||
import org.json.JSONObject
|
||||
|
||||
fun BolusCalculatorResult.toJson(isAdd: Boolean, dateUtil: DateUtil): JSONObject =
|
||||
fun BolusCalculatorResult.toJson(isAdd: Boolean, dateUtil: DateUtil, profileFunction: ProfileFunction): JSONObject =
|
||||
JSONObject()
|
||||
.put("eventType", TherapyEvent.Type.BOLUS_WIZARD.text)
|
||||
.put("created_at", dateUtil.toISOString(timestamp))
|
||||
.put("isValid", isValid)
|
||||
.put("bolusCalculatorResult", Gson().toJson(this))
|
||||
.put("date", timestamp)
|
||||
.put("glucose", glucoseValue)
|
||||
.put("units", Constants.MGDL)
|
||||
.put("glucose", Profile.fromMgdlToUnits(glucoseValue, profileFunction.getUnits()))
|
||||
.put("units", profileFunction.getUnits().asText)
|
||||
.put("notes", note)
|
||||
.also { if (isAdd && interfaceIDs.nightscoutId != null) it.put("_id", interfaceIDs.nightscoutId) }
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ open class Notification {
|
|||
|
||||
var id = 0
|
||||
var date: Long = 0
|
||||
var text: String? = null
|
||||
var text: String = ""
|
||||
var level = 0
|
||||
var validTo: Long = 0
|
||||
@RawRes var soundId: Int? = null
|
||||
|
|
|
@ -28,8 +28,8 @@ class AlarmSoundServiceHelper @Inject constructor(
|
|||
private val notificationHolder: NotificationHolder
|
||||
) {
|
||||
|
||||
fun startAlarm(context: Context, sound: Int) {
|
||||
aapsLogger.debug(LTag.CORE, "Starting alarm")
|
||||
fun startAlarm(context: Context, sound: Int, reason: String) {
|
||||
aapsLogger.debug(LTag.CORE, "Starting alarm from $reason")
|
||||
val connection = object : ServiceConnection {
|
||||
override fun onServiceConnected(name: ComponentName?, service: IBinder?) {
|
||||
// The binder of the service that returns the instance that is created.
|
||||
|
@ -62,8 +62,8 @@ class AlarmSoundServiceHelper @Inject constructor(
|
|||
}
|
||||
}
|
||||
|
||||
fun stopService(context: Context) {
|
||||
aapsLogger.debug(LTag.CORE, "Stopping alarm")
|
||||
fun stopService(context: Context, reason: String) {
|
||||
aapsLogger.debug(LTag.CORE, "Stopping alarm from $reason")
|
||||
val alarm = Intent(context, AlarmSoundService::class.java)
|
||||
context.stopService(alarm)
|
||||
}
|
||||
|
|
|
@ -446,7 +446,7 @@
|
|||
<string name="autotune_description">Aide pour ajuster le profil (SI, rapport G/I et débits de basal)</string>
|
||||
<string name="autotune_shortname">AT</string>
|
||||
<string name="autotune_settings">Paramètres Autotune</string>
|
||||
<string name="autotune_auto_title">Changement de profil avec l\'Automatisation</string>
|
||||
<string name="autotune_auto_title">Changr le profil avec l\'automatisation</string>
|
||||
<string name="autotune_auto_summary">Si activé, Autotune mettra à jour automatiquement à jour le profil sélectionné et activera le profil calculé effectué à partir d\'une règle d\'automatisation.</string>
|
||||
<string name="autotune_categorize_uam_as_basal_title">Catégoriser UAM en tant que Basal</string>
|
||||
<string name="autotune_categorize_uam_as_basal_summary">Activer uniquement si vous avez correctement saisi tous les glucides consommés, avec cette option, des hausses soudaines vues par Autotune seront utilisées pour modifier les débits de basal.</string>
|
||||
|
|
|
@ -451,6 +451,11 @@
|
|||
<string name="autotune_categorize_uam_as_basal_title">Классифицировать UAM как базал</string>
|
||||
<string name="autotune_categorize_uam_as_basal_summary">Включите, если только вы точно ввели все съеденные углеводы. С этой опцией внезапные подъемы, зафиксированные Autotune, будут использованы для рекомендаций изменения базальной скорости.</string>
|
||||
<string name="autotune_tune_insulin_curve_title">Настройка кривой инсулина</string>
|
||||
<string name="autotune_tune_insulin_curve_summary">Включите, если используете беспиковый. Настроит пики и DIA</string>
|
||||
<string name="autotune_default_tune_days_title">Количество дней с данными</string>
|
||||
<string name="autotune_circadian_ic_isf_title">Применить усредненный суточный IC/ISF</string>
|
||||
<string name="autotune_circadian_ic_isf_summary">Autotune не настраивает суточные вариации, эта опция только применяет усредненные коэффициенты IC и ISF к суточному профилю</string>
|
||||
<string name="autotune_additional_log_title">Включить больше информации логов для отладки</string>
|
||||
<string name="autotune_default_tune_days_summary">Количество дней обработки данных Autotune по умолчанию (до 30)</string>
|
||||
<string name="autotune_error">Ошибка ввода данных, попробуйте запустить снова autotune или уменьшить количество дней</string>
|
||||
<string name="autotune_profile_invalid">Неверный профиль</string>
|
||||
|
|
|
@ -21,4 +21,5 @@ org.gradle.jvmargs=-Xmx2g
|
|||
|
||||
android.enableJetifier=true
|
||||
android.useAndroidX=true
|
||||
org.gradle.unsafe.configuration-cache=true
|
||||
# Cache is causeing issues with CircleCI nad maybe Studio 2021
|
||||
# org.gradle.unsafe.configuration-cache=true
|
||||
|
|
127
wear/google-services.json
Normal file
127
wear/google-services.json
Normal file
|
@ -0,0 +1,127 @@
|
|||
{
|
||||
"project_info": {
|
||||
"project_number": "477603612366",
|
||||
"firebase_url": "https://androidaps-c34f8.firebaseio.com",
|
||||
"project_id": "androidaps-c34f8",
|
||||
"storage_bucket": "androidaps-c34f8.appspot.com"
|
||||
},
|
||||
"client": [
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:477603612366:android:aef229914e3e5448",
|
||||
"android_client_info": {
|
||||
"package_name": "info.nightscout.aapspumpcontrol"
|
||||
}
|
||||
},
|
||||
"oauth_client": [
|
||||
{
|
||||
"client_id": "477603612366-a925drvlvs7qn7gt73r585erbqto8c79.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
}
|
||||
],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyD9HRtJJsnk_SbAMAuvudSua2vEm3j3430"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"appinvite_service": {
|
||||
"other_platform_oauth_client": [
|
||||
{
|
||||
"client_id": "477603612366-a925drvlvs7qn7gt73r585erbqto8c79.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:477603612366:android:efc956f55b281623",
|
||||
"android_client_info": {
|
||||
"package_name": "info.nightscout.androidaps"
|
||||
}
|
||||
},
|
||||
"oauth_client": [
|
||||
{
|
||||
"client_id": "477603612366-a925drvlvs7qn7gt73r585erbqto8c79.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
}
|
||||
],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyD9HRtJJsnk_SbAMAuvudSua2vEm3j3430"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"appinvite_service": {
|
||||
"other_platform_oauth_client": [
|
||||
{
|
||||
"client_id": "477603612366-a925drvlvs7qn7gt73r585erbqto8c79.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:477603612366:android:b38d6e7351f73cc0",
|
||||
"android_client_info": {
|
||||
"package_name": "info.nightscout.nsclient"
|
||||
}
|
||||
},
|
||||
"oauth_client": [
|
||||
{
|
||||
"client_id": "477603612366-a925drvlvs7qn7gt73r585erbqto8c79.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
}
|
||||
],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyD9HRtJJsnk_SbAMAuvudSua2vEm3j3430"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"appinvite_service": {
|
||||
"other_platform_oauth_client": [
|
||||
{
|
||||
"client_id": "477603612366-a925drvlvs7qn7gt73r585erbqto8c79.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:477603612366:android:2dc8cf3acd3332e7",
|
||||
"android_client_info": {
|
||||
"package_name": "info.nightscout.nsclient2"
|
||||
}
|
||||
},
|
||||
"oauth_client": [
|
||||
{
|
||||
"client_id": "477603612366-a925drvlvs7qn7gt73r585erbqto8c79.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
}
|
||||
],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyD9HRtJJsnk_SbAMAuvudSua2vEm3j3430"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"appinvite_service": {
|
||||
"other_platform_oauth_client": [
|
||||
{
|
||||
"client_id": "477603612366-a925drvlvs7qn7gt73r585erbqto8c79.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"configuration_version": "1"
|
||||
}
|
|
@ -168,4 +168,20 @@
|
|||
<string name="tile_no_config">Není dostupná žádná konfigurace</string>
|
||||
<string name="wear_control_not_enabled">Ovládání hodinkami vypnuto</string>
|
||||
<string name="wear_control_no_data">Žádná data k dispozici</string>
|
||||
<string name="increment">zvýšení</string>
|
||||
<string name="decrement">snížení</string>
|
||||
<string name="first_char_high">V</string>
|
||||
<string name="first_char_low">N</string>
|
||||
<string name="abbreviation_average">prům</string>
|
||||
<string name="no_iob_u">--U</string>
|
||||
<string name="no_cob_g">--g</string>
|
||||
<string name="no_tmp_basal_u_h">-.--U/h</string>
|
||||
<string name="uploader_na">Uploader: ---%</string>
|
||||
<string name="no_status">S: žádný status</string>
|
||||
<string name="time_stamp_na_min_ago">Před -- minutamí</string>
|
||||
<string name="delta_na">--- mg/dl</string>
|
||||
<string name="no_loop_status">Žádný stav smyčky</string>
|
||||
<string name="cob_000g">000g</string>
|
||||
<string name="svg_00_0">00,0</string>
|
||||
<string name="iob_0_00u">0,00U</string>
|
||||
</resources>
|
||||
|
|
|
@ -168,4 +168,17 @@
|
|||
<string name="tile_no_config">Aucune configuration disponible</string>
|
||||
<string name="wear_control_not_enabled">Contrôles Wear désactivés</string>
|
||||
<string name="wear_control_no_data">Aucune donnée disponible</string>
|
||||
<string name="first_char_high">H</string>
|
||||
<string name="first_char_low">B</string>
|
||||
<string name="abbreviation_average">moy</string>
|
||||
<string name="no_iob_u">--U</string>
|
||||
<string name="no_cob_g">--g</string>
|
||||
<string name="no_tmp_basal_u_h">-.-- U/h</string>
|
||||
<string name="uploader_na">Téléchargement : ---%</string>
|
||||
<string name="time_stamp_na_min_ago">Il y a -- minutes</string>
|
||||
<string name="delta_na">--- mg/dl</string>
|
||||
<string name="no_loop_status">Aucun statut de la boucle</string>
|
||||
<string name="cob_000g">000 g</string>
|
||||
<string name="svg_00_0">00,0</string>
|
||||
<string name="iob_0_00u">0,00 U</string>
|
||||
</resources>
|
||||
|
|
|
@ -168,4 +168,20 @@
|
|||
<string name="tile_no_config">Ingen konfigurasjon tilgjengelig</string>
|
||||
<string name="wear_control_not_enabled">Wear kontroller deaktivert</string>
|
||||
<string name="wear_control_no_data">Ingen data tilgjengelig</string>
|
||||
<string name="increment">økning</string>
|
||||
<string name="decrement">reduksjon</string>
|
||||
<string name="first_char_high">H</string>
|
||||
<string name="first_char_low">L</string>
|
||||
<string name="abbreviation_average">snitt</string>
|
||||
<string name="no_iob_u">--E</string>
|
||||
<string name="no_cob_g">--g</string>
|
||||
<string name="no_tmp_basal_u_h">-.--E/t</string>
|
||||
<string name="uploader_na">Opplaster: ---%</string>
|
||||
<string name="no_status">S: ingen status</string>
|
||||
<string name="time_stamp_na_min_ago">-- Minutter siden</string>
|
||||
<string name="delta_na">--- mg/dl</string>
|
||||
<string name="no_loop_status">Ingen loop status</string>
|
||||
<string name="cob_000g">000g</string>
|
||||
<string name="svg_00_0">00,0</string>
|
||||
<string name="iob_0_00u">0,00E</string>
|
||||
</resources>
|
||||
|
|
|
@ -168,4 +168,20 @@
|
|||
<string name="tile_no_config">Нет доступной конфигурации</string>
|
||||
<string name="wear_control_not_enabled">Функция управления Wear выключена</string>
|
||||
<string name="wear_control_no_data">Нет данных</string>
|
||||
<string name="increment">приращение</string>
|
||||
<string name="decrement">декремент</string>
|
||||
<string name="first_char_high">В</string>
|
||||
<string name="first_char_low">Н</string>
|
||||
<string name="abbreviation_average">сред</string>
|
||||
<string name="no_iob_u">--ед</string>
|
||||
<string name="no_cob_g">--г</string>
|
||||
<string name="no_tmp_basal_u_h">-.--ед/ч</string>
|
||||
<string name="uploader_na">Загрузчик: --%</string>
|
||||
<string name="no_status">S: статус отсутствует</string>
|
||||
<string name="time_stamp_na_min_ago">-- Минут назад</string>
|
||||
<string name="delta_na">--- мг/дл</string>
|
||||
<string name="no_loop_status">Нет статуса</string>
|
||||
<string name="cob_000g">000г</string>
|
||||
<string name="svg_00_0">00,0</string>
|
||||
<string name="iob_0_00u">0,00 ед</string>
|
||||
</resources>
|
||||
|
|
|
@ -168,4 +168,19 @@
|
|||
<string name="tile_no_config">Nie je dostupná žiadna konfigurácia</string>
|
||||
<string name="wear_control_not_enabled">Ovládanie hodinkami vypnuté</string>
|
||||
<string name="wear_control_no_data">Žiadne údaje nie sú k dispozícii</string>
|
||||
<string name="increment">prírastok</string>
|
||||
<string name="decrement">zníženie</string>
|
||||
<string name="first_char_high">H</string>
|
||||
<string name="first_char_low">L</string>
|
||||
<string name="abbreviation_average">priemer</string>
|
||||
<string name="no_iob_u">--JI</string>
|
||||
<string name="no_cob_g">--g</string>
|
||||
<string name="no_tmp_basal_u_h">-.--JI/h</string>
|
||||
<string name="no_status">S: žiadny stav</string>
|
||||
<string name="time_stamp_na_min_ago">Pred -- minútami</string>
|
||||
<string name="delta_na">--- mg/dl</string>
|
||||
<string name="no_loop_status">Žiadny stav uzavretého okruhu</string>
|
||||
<string name="cob_000g">000g</string>
|
||||
<string name="svg_00_0">00,0</string>
|
||||
<string name="iob_0_00u">0,00JI</string>
|
||||
</resources>
|
||||
|
|
|
@ -168,4 +168,20 @@
|
|||
<string name="tile_no_config">Mevcut yapılandırma yok</string>
|
||||
<string name="wear_control_not_enabled">Saat kontrolleri devre dışı</string>
|
||||
<string name="wear_control_no_data">Veri yok</string>
|
||||
<string name="increment">artış</string>
|
||||
<string name="decrement">azalma</string>
|
||||
<string name="first_char_high">Y</string>
|
||||
<string name="first_char_low">D</string>
|
||||
<string name="abbreviation_average">ort</string>
|
||||
<string name="no_iob_u">--Ü</string>
|
||||
<string name="no_cob_g">--g</string>
|
||||
<string name="no_tmp_basal_u_h">-.--Ü/sa</string>
|
||||
<string name="uploader_na">Yükleyici: ---%</string>
|
||||
<string name="no_status">S: durum yok</string>
|
||||
<string name="time_stamp_na_min_ago">-- Dakika önce</string>
|
||||
<string name="delta_na">--- mg/dl</string>
|
||||
<string name="no_loop_status">Döngü Durumu Yok</string>
|
||||
<string name="cob_000g">000g</string>
|
||||
<string name="svg_00_0">00,0</string>
|
||||
<string name="iob_0_00u">0,00Ü</string>
|
||||
</resources>
|
||||
|
|
Loading…
Reference in a new issue