From 851320e6bd2bbe4a66c7d754be9e819416142a5f Mon Sep 17 00:00:00 2001 From: Bart Sopers Date: Sat, 26 Dec 2020 20:40:52 +0100 Subject: [PATCH 01/57] Handle empty RileyLink name correctly --- .../pump/common/hw/rileylink/ble/RileyLinkBLE.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RileyLinkBLE.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RileyLinkBLE.java index 05744e1845..e922bd990c 100644 --- a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RileyLinkBLE.java +++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RileyLinkBLE.java @@ -396,10 +396,16 @@ public class RileyLinkBLE { } rileyLinkServiceData.rileyLinkAddress = bluetoothConnectionGatt.getDevice().getAddress(); - rileyLinkServiceData.rileyLinkName = bluetoothConnectionGatt.getDevice().getName(); - // Update stored name upon connecting (also for backwards compatibility for device where a name was not yet stored) - sp.putString(RileyLinkConst.Prefs.RileyLinkName, rileyLinkServiceData.rileyLinkName); + String deviceName = bluetoothConnectionGatt.getDevice().getName(); + if (StringUtils.isNotEmpty(deviceName)) { + // Update stored name upon connecting (also for backwards compatibility for device where a name was not yet stored) + sp.putString(RileyLinkConst.Prefs.RileyLinkName, rileyLinkServiceData.rileyLinkName); + rileyLinkServiceData.rileyLinkName = deviceName; + } else { + sp.remove(RileyLinkConst.Prefs.RileyLinkName); + rileyLinkServiceData.rileyLinkName = null; + } } } From 8f2e60d7bc8e9f2d182c468514ba21d054876ec0 Mon Sep 17 00:00:00 2001 From: Bart Sopers Date: Sun, 27 Dec 2020 21:55:48 +0100 Subject: [PATCH 02/57] Update version for Omnipod This reverts commit 7ad84bbdec927e333337ebb29d9ae86aa981ba4d. --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index c9e31881d3..af78525894 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -120,7 +120,7 @@ android { targetSdkVersion 28 multiDexEnabled true versionCode 1500 - version "2.7.2-dev" + version "2.8.0-dev-omnipod" buildConfigField "String", "VERSION", '"' + version + '"' buildConfigField "String", "BUILDVERSION", '"' + generateGitBuild() + '-' + generateDate() + '"' buildConfigField "String", "REMOTE", '"' + generateGitRemote() + '"' From afb09418e5d048459d9c44f8e866f77a127a03c6 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Sat, 2 Jan 2021 11:43:44 +0100 Subject: [PATCH 03/57] 2.8.0.1-dev --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 4c81067d85..325e1849a1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -120,7 +120,7 @@ android { targetSdkVersion 28 multiDexEnabled true versionCode 1500 - version "2.7.3-dev" + version "2.8.0.1-dev" buildConfigField "String", "VERSION", '"' + version + '"' buildConfigField "String", "BUILDVERSION", '"' + generateGitBuild() + '-' + generateDate() + '"' buildConfigField "String", "REMOTE", '"' + generateGitRemote() + '"' From 1e16285df1699f0fe6e7ba7122df83d395dfb4aa Mon Sep 17 00:00:00 2001 From: rICTx-T1D Date: Sat, 2 Jan 2021 19:16:02 +0100 Subject: [PATCH 04/57] Fix for #174 [2 8 0] Remove of unused files will be destroy functionality in Watchface DigitalStyle --- .../drawable/digitalstyle_bg_minimal_rect.png | Bin 0 -> 354 bytes .../drawable/digitalstyle_bg_minimal_round.png | Bin 0 -> 354 bytes .../res/drawable/digitalstyle_bg_none_rect.png | Bin 0 -> 137 bytes .../res/drawable/digitalstyle_bg_none_round.png | Bin 0 -> 137 bytes .../res/drawable/digitalstyle_bg_shape_rect.png | Bin 0 -> 43431 bytes .../drawable/digitalstyle_bg_shape_round.png | Bin 0 -> 70569 bytes 6 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 wear/src/main/res/drawable/digitalstyle_bg_minimal_rect.png create mode 100644 wear/src/main/res/drawable/digitalstyle_bg_minimal_round.png create mode 100644 wear/src/main/res/drawable/digitalstyle_bg_none_rect.png create mode 100644 wear/src/main/res/drawable/digitalstyle_bg_none_round.png create mode 100644 wear/src/main/res/drawable/digitalstyle_bg_shape_rect.png create mode 100644 wear/src/main/res/drawable/digitalstyle_bg_shape_round.png diff --git a/wear/src/main/res/drawable/digitalstyle_bg_minimal_rect.png b/wear/src/main/res/drawable/digitalstyle_bg_minimal_rect.png new file mode 100644 index 0000000000000000000000000000000000000000..261f6ab723844eb64d83fce3a61755b68ab31e41 GIT binary patch literal 354 zcmeAS@N?(olHy`uVBq!ia0y~yU|aygOw2%$i4oDKfD}u*qpu?a!^VE@KZ&eBzCyA` zkS_y6l^O#>Lkk1LFQ8Dv3kHT#0|tgy2@DKYGZ+}e3+C(!v;j(R2Ka=y0_n}0Hv>uc zxzekF6k|z{UoeBivm0q3PLj8~3quF1tOt<8S>O>_%)r1c1j3A$?$-SQ3a<2YaSW-r z_4d3WFM|OO%SMM2L20`6S`RO1R{i9N2v_x-q~aMA#>>>`pdi4(LKYRERB|u9{IwuC g+CkQXkjPzztas{8@67IZ0v*lZ>FVdQ&MBb@05R23>i_@% literal 0 HcmV?d00001 diff --git a/wear/src/main/res/drawable/digitalstyle_bg_minimal_round.png b/wear/src/main/res/drawable/digitalstyle_bg_minimal_round.png new file mode 100644 index 0000000000000000000000000000000000000000..261f6ab723844eb64d83fce3a61755b68ab31e41 GIT binary patch literal 354 zcmeAS@N?(olHy`uVBq!ia0y~yU|aygOw2%$i4oDKfD}u*qpu?a!^VE@KZ&eBzCyA` zkS_y6l^O#>Lkk1LFQ8Dv3kHT#0|tgy2@DKYGZ+}e3+C(!v;j(R2Ka=y0_n}0Hv>uc zxzekF6k|z{UoeBivm0q3PLj8~3quF1tOt<8S>O>_%)r1c1j3A$?$-SQ3a<2YaSW-r z_4d3WFM|OO%SMM2L20`6S`RO1R{i9N2v_x-q~aMA#>>>`pdi4(LKYRERB|u9{IwuC g+CkQXkjPzztas{8@67IZ0v*lZ>FVdQ&MBb@05R23>i_@% literal 0 HcmV?d00001 diff --git a/wear/src/main/res/drawable/digitalstyle_bg_none_rect.png b/wear/src/main/res/drawable/digitalstyle_bg_none_rect.png new file mode 100644 index 0000000000000000000000000000000000000000..209a43864537ec8a2931455021eb3ee82def8591 GIT binary patch literal 137 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx3?wy9o9qTsk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5X*aCb)T>t<74`hZOx?BgO7)yfuf*Bm1-ADs+csyMkLn>}1 dB`|OpFfcGNF#6|4J_L$0c)I$ztaD0e0s#14BsBm4 literal 0 HcmV?d00001 diff --git a/wear/src/main/res/drawable/digitalstyle_bg_none_round.png b/wear/src/main/res/drawable/digitalstyle_bg_none_round.png new file mode 100644 index 0000000000000000000000000000000000000000..209a43864537ec8a2931455021eb3ee82def8591 GIT binary patch literal 137 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx3?wy9o9qTsk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5X*aCb)T>t<74`hZOx?BgO7)yfuf*Bm1-ADs+csyMkLn>}1 dB`|OpFfcGNF#6|4J_L$0c)I$ztaD0e0s#14BsBm4 literal 0 HcmV?d00001 diff --git a/wear/src/main/res/drawable/digitalstyle_bg_shape_rect.png b/wear/src/main/res/drawable/digitalstyle_bg_shape_rect.png new file mode 100644 index 0000000000000000000000000000000000000000..a0acd812f6cfa335b1489661518797665697822c GIT binary patch literal 43431 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 G!T$$yrL~Iy literal 0 HcmV?d00001 diff --git a/wear/src/main/res/drawable/digitalstyle_bg_shape_round.png b/wear/src/main/res/drawable/digitalstyle_bg_shape_round.png new file mode 100644 index 0000000000000000000000000000000000000000..e8cfa435b7d22c78e964f8ff83cbec8a2fc8c364 GIT binary patch literal 70569 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 literal 0 HcmV?d00001 From 1942f606b9819bd6c09a46f0322488f4c72b4e0c Mon Sep 17 00:00:00 2001 From: Bart Sopers Date: Sat, 2 Jan 2021 22:30:27 +0100 Subject: [PATCH 05/57] Prevent crash in OmnipodOverviewFragment when context is null --- .../pump/omnipod/ui/OmnipodOverviewFragment.kt | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/OmnipodOverviewFragment.kt b/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/OmnipodOverviewFragment.kt index fbfeae4b8b..b58c4dd0bb 100644 --- a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/OmnipodOverviewFragment.kt +++ b/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/OmnipodOverviewFragment.kt @@ -102,10 +102,12 @@ class OmnipodOverviewFragment : DaggerFragment() { omnipod_overview_button_pod_management.setOnClickListener { if (omnipodPumpPlugin.rileyLinkService?.verifyConfiguration() == true) { activity?.let { activity -> - protectionCheck.queryProtection( - activity, ProtectionCheck.Protection.PREFERENCES, - UIRunnable(Runnable { startActivity(Intent(context, PodManagementActivity::class.java)) }) - ) + context?.let { context -> + protectionCheck.queryProtection( + activity, ProtectionCheck.Protection.PREFERENCES, + UIRunnable { startActivity(Intent(context, PodManagementActivity::class.java)) } + ) + } } } else { displayNotConfiguredDialog() @@ -514,10 +516,10 @@ class OmnipodOverviewFragment : DaggerFragment() { private fun displayNotConfiguredDialog() { context?.let { - UIRunnable(Runnable { + UIRunnable { OKDialog.show(it, resourceHelper.gs(R.string.omnipod_warning), resourceHelper.gs(R.string.omnipod_error_operation_not_possible_no_configuration), null) - }).run() + }.run() } } @@ -534,9 +536,9 @@ class OmnipodOverviewFragment : DaggerFragment() { private fun displayOkDialog(title: String, message: String) { context?.let { - UIRunnable(Runnable { + UIRunnable { OKDialog.show(it, title, message, null) - }).run() + }.run() } } From a1213f2052d452be48b4c5d488cce8125a00a5e1 Mon Sep 17 00:00:00 2001 From: Bart Sopers Date: Sat, 2 Jan 2021 23:31:05 +0100 Subject: [PATCH 06/57] Add FIXME for potential crash in RL code --- .../rileylink/service/tasks/InitializePumpManagerTask.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/InitializePumpManagerTask.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/InitializePumpManagerTask.java index 271a769d46..250a0a69b8 100644 --- a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/InitializePumpManagerTask.java +++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/InitializePumpManagerTask.java @@ -65,6 +65,11 @@ public class InitializePumpManagerTask extends ServiceTask { lastGoodFrequency = rileyLinkServiceData.lastGoodFrequency; } + /* FIXME this can apparently crash: + Fatal Exception: java.lang.ClassCastException + info.nightscout.androidaps.plugins.pump.virtual.VirtualPumpPlugin + cannot be cast to info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkPumpDevice + */ RileyLinkCommunicationManager rileyLinkCommunicationManager = ((RileyLinkPumpDevice) activePlugin.getActivePump()).getRileyLinkService().getDeviceCommunicationManager(); if (activePlugin.getActivePump().manufacturer() == ManufacturerType.Medtronic) { From 9e286b789aaab7a690dd50ddd463ebce5f8239f8 Mon Sep 17 00:00:00 2001 From: xJoe Date: Sun, 3 Jan 2021 10:50:08 +0100 Subject: [PATCH 07/57] Update strings.xml --- app/src/main/res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9efcb58784..a330a5ee4d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1425,7 +1425,7 @@ You have high glycemia. Instead of eating now it\'s recommended to wait for better glycemia. Do you want to do a correction bolus now and remind you when it\'s time to eat? In this case no carbs will be recorded and you must use wizard again when we remind you. use_bolus_advisor Enable bolus advisor - Use reminder to start eating instead of wizard during high glycemia + Use reminder to start eating later instead of wizard result during high glycemia ("pre-bolus") Time to eat!\nRun Bolus wizard and do calculation again. Time to eat From e5902b73c793ba08e1bb85a15fa87299006872eb Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Sun, 3 Jan 2021 11:32:37 +0100 Subject: [PATCH 08/57] trying to fix crowdin --- app/src/main/res/values/insight_alert_descriptions.xml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/src/main/res/values/insight_alert_descriptions.xml b/app/src/main/res/values/insight_alert_descriptions.xml index 7ebb1907eb..cce6048528 100644 --- a/app/src/main/res/values/insight_alert_descriptions.xml +++ b/app/src/main/res/values/insight_alert_descriptions.xml @@ -1,14 +1,12 @@ %1$d%%\nDuration: %2$s h]]> - %1$s U]]> Change battery. Set time/date. Contact Accu-Chek support. %1$d%%
Duration: %2$s h]]>
%1$s U
Delivered: %2$s U]]>
- Insert cartridge. Change cartridge. Change battery. @@ -20,8 +18,8 @@ Check pump status. Set battery type. Set cartridge type. - Change battery and cartridge. Change cartridge. Change language. + Change language.
\ No newline at end of file From cac28dd01f660735fff811de3ca3124043c36ea4 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Sun, 3 Jan 2021 11:37:31 +0100 Subject: [PATCH 09/57] trying to fix crowdin --- app/src/main/res/values/insight_alert_descriptions.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/res/values/insight_alert_descriptions.xml b/app/src/main/res/values/insight_alert_descriptions.xml index cce6048528..4ec386bb87 100644 --- a/app/src/main/res/values/insight_alert_descriptions.xml +++ b/app/src/main/res/values/insight_alert_descriptions.xml @@ -21,5 +21,4 @@ Change battery and cartridge. Change cartridge. Change language. - Change language. \ No newline at end of file From f28b04226e22789e1558365a03475522db44536a Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Sun, 3 Jan 2021 15:16:21 +0100 Subject: [PATCH 10/57] limit key_smbmaxminutes --- app/src/main/res/xml/pref_openapssmb.xml | 29 +++++++++++++----------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/app/src/main/res/xml/pref_openapssmb.xml b/app/src/main/res/xml/pref_openapssmb.xml index 388c523df9..1f1be8cb42 100644 --- a/app/src/main/res/xml/pref_openapssmb.xml +++ b/app/src/main/res/xml/pref_openapssmb.xml @@ -2,10 +2,10 @@ - + + android:title="@string/openapssmb" + app:initialExpandedChildrenCount="0"> + android:title="@string/smbmaxminutes_summary" + validate:maxNumber="120" + validate:minNumber="15" + validate:testType="numericRange" /> + android:title="@string/sensitivity_raises_target_title" /> + android:title="@string/resistance_lowers_target_title" /> - + + validate:testType="numericRange" /> Date: Sun, 3 Jan 2021 16:02:29 +0100 Subject: [PATCH 11/57] fix editing automation event name --- .../plugins/general/automation/dialogs/EditEventDialog.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/dialogs/EditEventDialog.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/dialogs/EditEventDialog.kt index db572ade8e..10084a9110 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/dialogs/EditEventDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/automation/dialogs/EditEventDialog.kt @@ -70,7 +70,7 @@ class EditEventDialog : DialogFragmentWithDate() { binding.okcancel.ok.visibility = (!event.readOnly).toVisibility() binding.inputEventTitle.setText(event.title) - binding.inputEventTitle.isFocusable = false + binding.inputEventTitle.isFocusable = !event.readOnly binding.triggerDescription.text = event.trigger.friendlyDescription() binding.editTrigger.visibility = (!event.readOnly).toVisibility() From 34435d46847fd2f4783a97a5a90de5ba7bb41f98 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Sun, 3 Jan 2021 16:26:57 +0100 Subject: [PATCH 12/57] fix CGM data is unchanged --- .../main/assets/OpenAPSSMB/determine-basal.js | 2 +- .../DetermineBasalAdapterSMBJS.java | 42 +++++++------------ 2 files changed, 15 insertions(+), 29 deletions(-) diff --git a/app/src/main/assets/OpenAPSSMB/determine-basal.js b/app/src/main/assets/OpenAPSSMB/determine-basal.js index c4930b7789..13a220e528 100644 --- a/app/src/main/assets/OpenAPSSMB/determine-basal.js +++ b/app/src/main/assets/OpenAPSSMB/determine-basal.js @@ -151,7 +151,7 @@ var determine_basal = function determine_basal(glucose_status, currenttemp, iob_ } } //cherry pick from oref upstream dev cb8e94990301277fb1016c778b4e9efa55a6edbc - if (bg <= 10 || bg === 38 || noise >= 3 || minAgo > 12 || minAgo < -5 || ( bg > 60 && glucose_status.delta == 0 && glucose_status.short_avgdelta > -1 && glucose_status.short_avgdelta < 1 && glucose_status.long_avgdelta > -1 && glucose_status.long_avgdelta < 1 ) ) { + if (bg <= 10 || bg === 38 || noise >= 3 || minAgo > 12 || minAgo < -5 || ( bg > 60 && glucose_status.delta == 0 && glucose_status.short_avgdelta > -1 && glucose_status.short_avgdelta < 1 && glucose_status.long_avgdelta > -1 && glucose_status.long_avgdelta < 1 ) && !isSaveCgmSource ) { if (currenttemp.rate > basal) { // high temp is running rT.reason += ". Replacing high temp basal of "+currenttemp.rate+" with neutral temp of "+basal; rT.deliverAt = deliverAt; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSSMB/DetermineBasalAdapterSMBJS.java b/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSSMB/DetermineBasalAdapterSMBJS.java index a94581ca94..e42b139f3e 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSSMB/DetermineBasalAdapterSMBJS.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSSMB/DetermineBasalAdapterSMBJS.java @@ -19,7 +19,6 @@ import java.nio.charset.StandardCharsets; import javax.annotation.Nullable; import javax.inject.Inject; -import info.nightscout.androidaps.plugins.general.openhumans.OpenHumansUploader; import dagger.android.HasAndroidInjector; import info.nightscout.androidaps.Constants; import info.nightscout.androidaps.R; @@ -28,13 +27,14 @@ import info.nightscout.androidaps.data.MealData; import info.nightscout.androidaps.data.Profile; import info.nightscout.androidaps.db.TemporaryBasal; import info.nightscout.androidaps.interfaces.ActivePluginProvider; +import info.nightscout.androidaps.interfaces.ProfileFunction; import info.nightscout.androidaps.interfaces.PumpInterface; import info.nightscout.androidaps.logging.AAPSLogger; import info.nightscout.androidaps.logging.LTag; import info.nightscout.androidaps.plugins.aps.logger.LoggerCallback; import info.nightscout.androidaps.plugins.aps.loop.ScriptReader; import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker; -import info.nightscout.androidaps.interfaces.ProfileFunction; +import info.nightscout.androidaps.plugins.general.openhumans.OpenHumansUploader; import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus; import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin; import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin; @@ -73,10 +73,6 @@ public class DetermineBasalAdapterSMBJS { private String storedGlucoseStatus = null; private String storedProfile = null; private String storedMeal_data = null; - private String storedAutosens_data = null; - private String storedMicroBolusAllowed = null; - private String storedSMBAlwaysAllowed = null; - private String storedCurrentTime = null; private String scriptDebug = ""; @@ -102,13 +98,13 @@ public class DetermineBasalAdapterSMBJS { aapsLogger.debug(LTag.APS, "Profile: " + (storedProfile = mProfile.toString())); aapsLogger.debug(LTag.APS, "Meal data: " + (storedMeal_data = mMealData.toString())); if (mAutosensData != null) - aapsLogger.debug(LTag.APS, "Autosens data: " + (storedAutosens_data = mAutosensData.toString())); + aapsLogger.debug(LTag.APS, "Autosens data: " + mAutosensData.toString()); else - aapsLogger.debug(LTag.APS, "Autosens data: " + (storedAutosens_data = "undefined")); + aapsLogger.debug(LTag.APS, "Autosens data: " + "undefined"); aapsLogger.debug(LTag.APS, "Reservoir data: " + "undefined"); - aapsLogger.debug(LTag.APS, "MicroBolusAllowed: " + (storedMicroBolusAllowed = "" + mMicrobolusAllowed)); - aapsLogger.debug(LTag.APS, "SMBAlwaysAllowed: " + (storedSMBAlwaysAllowed = "" + mSMBAlwaysAllowed)); - aapsLogger.debug(LTag.APS, "CurrentTime: " + (storedCurrentTime = "" + mCurrentTime)); + aapsLogger.debug(LTag.APS, "MicroBolusAllowed: " + mMicrobolusAllowed); + aapsLogger.debug(LTag.APS, "SMBAlwaysAllowed: " + mSMBAlwaysAllowed); + aapsLogger.debug(LTag.APS, "CurrentTime: " + mCurrentTime); aapsLogger.debug(LTag.APS, "isSaveCgmSource: " + mIsSaveCgmSource); @@ -151,9 +147,10 @@ public class DetermineBasalAdapterSMBJS { makeParam(mAutosensData, rhino, scope), makeParam(mMealData, rhino, scope), setTempBasalFunctionsObj, - new Boolean(mMicrobolusAllowed), + Boolean.valueOf(mMicrobolusAllowed), makeParam(null, rhino, scope), // reservoir data as undefined - new Long(mCurrentTime) + Long.valueOf(mCurrentTime), + Boolean.valueOf(mIsSaveCgmSource) }; @@ -213,14 +210,6 @@ public class DetermineBasalAdapterSMBJS { return storedMeal_data; } - String getAutosensDataParam() { - return storedAutosens_data; - } - - String getMicroBolusAllowedParam() { - return storedMicroBolusAllowed; - } - String getScriptDebug() { return scriptDebug; } @@ -243,7 +232,6 @@ public class DetermineBasalAdapterSMBJS { boolean isSaveCgmSource ) throws JSONException { - String units = profile.getUnits(); PumpInterface pump = activePluginProvider.getActivePump(); Double pumpbolusstep = pump.getPumpDescription().bolusStep; mProfile = new JSONObject(); @@ -267,8 +255,8 @@ public class DetermineBasalAdapterSMBJS { mProfile.put("low_temptarget_lowers_sensitivity", false); - mProfile.put("sensitivity_raises_target", sp.getBoolean(R.string.key_sensitivity_raises_target,SMBDefaults.sensitivity_raises_target)); - mProfile.put("resistance_lowers_target", sp.getBoolean(R.string.key_resistance_lowers_target,SMBDefaults.resistance_lowers_target)); + mProfile.put("sensitivity_raises_target", sp.getBoolean(R.string.key_sensitivity_raises_target, SMBDefaults.sensitivity_raises_target)); + mProfile.put("resistance_lowers_target", sp.getBoolean(R.string.key_resistance_lowers_target, SMBDefaults.resistance_lowers_target)); mProfile.put("adv_target_adjustments", SMBDefaults.adv_target_adjustments); mProfile.put("exercise_mode", SMBDefaults.exercise_mode); mProfile.put("half_basal_exercise_target", SMBDefaults.half_basal_exercise_target); @@ -364,14 +352,12 @@ public class DetermineBasalAdapterSMBJS { if (jsonObject == null) return Undefined.instance; - Object param = NativeJSON.parse(rhino, scope, jsonObject.toString(), (context, scriptable, scriptable1, objects) -> objects[1]); - return param; + return NativeJSON.parse(rhino, scope, jsonObject.toString(), (context, scriptable, scriptable1, objects) -> objects[1]); } private Object makeParamArray(JSONArray jsonArray, Context rhino, Scriptable scope) { //Object param = NativeJSON.parse(rhino, scope, "{myarray: " + jsonArray.toString() + " }", new Callable() { - Object param = NativeJSON.parse(rhino, scope, jsonArray.toString(), (context, scriptable, scriptable1, objects) -> objects[1]); - return param; + return NativeJSON.parse(rhino, scope, jsonArray.toString(), (context, scriptable, scriptable1, objects) -> objects[1]); } private String readFile(String filename) throws IOException { From eb84f5e6a7bba7f1ac52d57df9b2cfdf83c64b6c Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Sun, 3 Jan 2021 17:26:37 +0100 Subject: [PATCH 13/57] LoopDialog protection --- .../androidaps/dialogs/LoopDialog.kt | 3 ++ .../general/overview/OverviewFragment.kt | 50 ++++++++++--------- 2 files changed, 30 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/dialogs/LoopDialog.kt b/app/src/main/java/info/nightscout/androidaps/dialogs/LoopDialog.kt index 109197e91a..cda4b6e0be 100644 --- a/app/src/main/java/info/nightscout/androidaps/dialogs/LoopDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/dialogs/LoopDialog.kt @@ -237,18 +237,21 @@ class LoopDialog : DaggerDialogFragment() { val profile = profileFunction.getProfile() ?: return true when (v.id) { R.id.overview_closeloop -> { + aapsLogger.debug("USER ENTRY: CLOSED LOOP MODE") sp.putString(R.string.key_aps_mode, "closed") rxBus.send(EventPreferenceChange(resourceHelper.gs(R.string.closedloop))) return true } R.id.overview_lgsloop -> { + aapsLogger.debug("USER ENTRY: LGS LOOP MODE") sp.putString(R.string.key_aps_mode, "lgs") rxBus.send(EventPreferenceChange(resourceHelper.gs(R.string.lowglucosesuspend))) return true } R.id.overview_openloop -> { + aapsLogger.debug("USER ENTRY: OPEN LOOP MODE") sp.putString(R.string.key_aps_mode, "open") rxBus.send(EventPreferenceChange(resourceHelper.gs(R.string.lowglucosesuspend))) return true diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewFragment.kt index 8609a19c33..28bd08d3d0 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewFragment.kt @@ -289,12 +289,12 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList R.id.overview_temptarget -> protectionCheck.queryProtection(activity, ProtectionCheck.Protection.BOLUS, UIRunnable { TempTargetDialog().show(childFragmentManager, "Overview") }) R.id.overview_activeprofile -> { - val args = Bundle() - args.putLong("time", DateUtil.now()) - args.putInt("mode", ProfileViewerDialog.Mode.RUNNING_PROFILE.ordinal) - val pvd = ProfileViewerDialog() - pvd.arguments = args - pvd.show(childFragmentManager, "ProfileViewDialog") + ProfileViewerDialog().also { pvd -> + pvd.arguments = Bundle().also { + it.putLong("time", DateUtil.now()) + it.putInt("mode", ProfileViewerDialog.Mode.RUNNING_PROFILE.ordinal) + } + }.show(childFragmentManager, "ProfileViewDialog") } R.id.overview_cgmbutton -> { @@ -329,24 +329,26 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList val lastRun = loopPlugin.lastRun loopPlugin.invoke("Accept temp button", false) if (lastRun?.lastAPSRun != null && lastRun.constraintsProcessed?.isChangeRequested == true) { - OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.tempbasal_label), lastRun.constraintsProcessed?.toSpanned() - ?: "".toSpanned(), { - aapsLogger.debug("USER ENTRY: ACCEPT TEMP BASAL") - overview_accepttempbutton?.visibility = View.GONE - (context?.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager).cancel(Constants.notificationID) - actionStringHandler.handleInitiate("cancelChangeRequest") - loopPlugin.acceptChangeRequest() + protectionCheck.queryProtection(activity, ProtectionCheck.Protection.BOLUS, UIRunnable { + OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.tempbasal_label), lastRun.constraintsProcessed?.toSpanned() + ?: "".toSpanned(), { + aapsLogger.debug("USER ENTRY: ACCEPT TEMP BASAL") + overview_accepttempbutton?.visibility = View.GONE + (context?.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager).cancel(Constants.notificationID) + actionStringHandler.handleInitiate("cancelChangeRequest") + loopPlugin.acceptChangeRequest() + }) }) } } } R.id.overview_apsmode -> { - val args = Bundle() - args.putInt("showOkCancel", 1) // 1-> true - val pvd = LoopDialog() - pvd.arguments = args - pvd.show(childFragmentManager, "Overview") + protectionCheck.queryProtection(activity, ProtectionCheck.Protection.BOLUS, UIRunnable { + LoopDialog().also { dialog -> + dialog.arguments = Bundle().also { it.putInt("showOkCancel", 1) } + }.show(childFragmentManager, "Overview") + }) } } } @@ -374,11 +376,13 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList } R.id.overview_apsmode -> { - val args = Bundle() - args.putInt("showOkCancel", 0) // 0-> false - val pvd = LoopDialog() - pvd.arguments = args - pvd.show(childFragmentManager, "Overview") + activity?.let { activity -> + protectionCheck.queryProtection(activity, ProtectionCheck.Protection.BOLUS, UIRunnable { + LoopDialog().also { dialog -> + dialog.arguments = Bundle().also { it.putInt("showOkCancel", 0) } + }.show(childFragmentManager, "Overview") + }) + } } R.id.overview_temptarget -> v.performClick() From fd934fde2bd6dc22ce71b1e606ae9c8763f7576a Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Sun, 3 Jan 2021 17:59:56 +0100 Subject: [PATCH 14/57] RS: force BT disconnect on failed bolus --- .../info/nightscout/androidaps/danars/services/DanaRSService.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/services/DanaRSService.kt b/danars/src/main/java/info/nightscout/androidaps/danars/services/DanaRSService.kt index 06c6dbd9ab..b396c07234 100644 --- a/danars/src/main/java/info/nightscout/androidaps/danars/services/DanaRSService.kt +++ b/danars/src/main/java/info/nightscout/androidaps/danars/services/DanaRSService.kt @@ -277,6 +277,7 @@ class DanaRSService : DaggerService() { danaPump.bolusStopped = true danaPump.bolusStopForced = true aapsLogger.debug(LTag.PUMPCOMM, "Communication stopped") + bleComm.disconnect("Communication stopped") } } } From 27cd72764384fad96c776ffc57443ff2d4066b31 Mon Sep 17 00:00:00 2001 From: xJoe Date: Sun, 3 Jan 2021 18:07:41 +0100 Subject: [PATCH 15/57] Status lights battery added "pump" as there is also sensor battery as of AAPS 2.8 --- app/src/main/res/values/strings.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a330a5ee4d..171601fd62 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -520,17 +520,17 @@ statuslights_sbat_critical Threshold critical sensor battery level [%] statuslights_bage_warning - Threshold warning battery age [h] + Threshold warning pump battery age [h] statuslights_bage_critical - Threshold critical battery age [h] + Threshold critical pump battery age [h] statuslights_res_warning Threshold warning reservoir level [U] statuslights_res_critical Threshold critical reservoir level [U] statuslights_bat_warning - Threshold warning battery level [%] + Threshold warning pump battery level [%] statuslights_bat_critical - Threshold critical battery level [%] + Threshold critical pump battery level [%] PRED IOB COB From 3e45ab5187fca7daf91412915b4be26a6871bfd0 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Sun, 3 Jan 2021 19:12:59 +0100 Subject: [PATCH 16/57] hide non NSClient controls by default --- app/src/main/res/layout/overview_info_layout.xml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/layout/overview_info_layout.xml b/app/src/main/res/layout/overview_info_layout.xml index 6fc79c29f5..0aca9574ca 100644 --- a/app/src/main/res/layout/overview_info_layout.xml +++ b/app/src/main/res/layout/overview_info_layout.xml @@ -162,18 +162,20 @@ android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginBottom="-4dp" + android:visibility="gone" app:srcCompat="@drawable/ic_loop_closed" /> + android:textStyle="bold" + android:visibility="gone" /> Date: Mon, 4 Jan 2021 20:57:23 +0100 Subject: [PATCH 17/57] #156 - vertical-centered label --- app/src/main/res/layout/activity_profilehelper.xml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/layout/activity_profilehelper.xml b/app/src/main/res/layout/activity_profilehelper.xml index da47a6c88c..f471dc862e 100644 --- a/app/src/main/res/layout/activity_profilehelper.xml +++ b/app/src/main/res/layout/activity_profilehelper.xml @@ -88,8 +88,9 @@ @@ -109,8 +110,9 @@ @@ -130,8 +132,9 @@ @@ -151,8 +154,9 @@ From dfa1fb3426c2320b535164f24e6d9ec67425b9f1 Mon Sep 17 00:00:00 2001 From: rICTx-T1D Date: Mon, 4 Jan 2021 20:59:01 +0100 Subject: [PATCH 18/57] #156 - remove comment of create-date and created by --- .../java/info/nightscout/androidaps/utils/ui/NumberPicker.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/core/src/main/java/info/nightscout/androidaps/utils/ui/NumberPicker.java b/core/src/main/java/info/nightscout/androidaps/utils/ui/NumberPicker.java index 02dfe36f81..1681ea4653 100644 --- a/core/src/main/java/info/nightscout/androidaps/utils/ui/NumberPicker.java +++ b/core/src/main/java/info/nightscout/androidaps/utils/ui/NumberPicker.java @@ -25,9 +25,6 @@ import info.nightscout.androidaps.core.R; import info.nightscout.androidaps.utils.SafeParse; import info.nightscout.androidaps.utils.ToastUtils; -/** - * Created by mike on 28.06.2016. - */ public class NumberPicker extends LinearLayout implements View.OnKeyListener, View.OnTouchListener, View.OnClickListener { From ab2a1ed1fafd2921400874bd0bb15a34d708ec20 Mon Sep 17 00:00:00 2001 From: Philoul Date: Mon, 4 Jan 2021 22:19:02 +0100 Subject: [PATCH 19/57] Layout improvement datetime vertical centered for languages with "long translations" Add marging for right icon of automation (too close to border) --- app/src/main/res/layout/automation_event_item.xml | 1 + app/src/main/res/layout/datetime.xml | 9 +++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/layout/automation_event_item.xml b/app/src/main/res/layout/automation_event_item.xml index bb88af4702..04402e6a38 100644 --- a/app/src/main/res/layout/automation_event_item.xml +++ b/app/src/main/res/layout/automation_event_item.xml @@ -65,6 +65,7 @@ android:layout_height="wrap_content" android:contentDescription="@string/reorder_label" android:orientation="horizontal" + android:layout_marginEnd="8dp" app:layout_constraintBottom_toTopOf="@+id/iconLayout" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/iconTrash" diff --git a/app/src/main/res/layout/datetime.xml b/app/src/main/res/layout/datetime.xml index 830dc0ca94..f19abd8f43 100644 --- a/app/src/main/res/layout/datetime.xml +++ b/app/src/main/res/layout/datetime.xml @@ -7,9 +7,10 @@ @@ -19,7 +20,7 @@ android:id="@+id/overview_eventdate" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_gravity="center_horizontal" + android:layout_gravity="center" android:padding="10dp" android:text="2017/05/05" /> @@ -27,7 +28,7 @@ android:id="@+id/overview_eventtime" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_gravity="center_horizontal" + android:layout_gravity="center" android:padding="10dp" android:text="08:20pm" /> From 151fb270dfad03c855b40e1cf8658e01429db7f7 Mon Sep 17 00:00:00 2001 From: Stephen Brown II Date: Fri, 2 Oct 2020 14:21:12 -0600 Subject: [PATCH 20/57] Remove extra minus sign from Bolus Wizard timeshift result --- .../java/info/nightscout/androidaps/utils/wizard/BolusWizard.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/info/nightscout/androidaps/utils/wizard/BolusWizard.kt b/app/src/main/java/info/nightscout/androidaps/utils/wizard/BolusWizard.kt index 1bae1a17cf..ce53f3d670 100644 --- a/app/src/main/java/info/nightscout/androidaps/utils/wizard/BolusWizard.kt +++ b/app/src/main/java/info/nightscout/androidaps/utils/wizard/BolusWizard.kt @@ -300,7 +300,7 @@ class BolusWizard @Inject constructor( if (carbTime > 0) { timeShift += " (+" + resourceHelper.gs(R.string.mins, carbTime) + ")" } else if (carbTime < 0) { - timeShift += " (-" + resourceHelper.gs(R.string.mins, carbTime) + ")" + timeShift += " (" + resourceHelper.gs(R.string.mins, carbTime) + ")" } actions.add(resourceHelper.gs(R.string.carbs) + ": " + resourceHelper.gs(R.string.format_carbs, carbs).formatColor(resourceHelper, R.color.carbs) + timeShift) } From 66db7bc89bf7341972e5d1222ae63b64b4358392 Mon Sep 17 00:00:00 2001 From: Andy Rozman Date: Tue, 5 Jan 2021 20:52:45 +0000 Subject: [PATCH 21/57] - problems found on crashalytics --- .../pump/medtronic/MedtronicPumpPlugin.java | 17 ++++++++++++----- .../pump/medtronic/comm/MedtronicConverter.java | 17 +++++++++++++++-- .../pump/MedtronicPumpHistoryDecoder.java | 6 ++++-- .../medtronic/comm/message/PumpMessage.java | 6 +++++- .../medtronic/data/MedtronicHistoryData.java | 4 +++- .../pump/common/hw/rileylink/ble/RFSpy.java | 3 ++- .../service/tasks/DiscoverGattServicesTask.java | 7 ++++++- .../tasks/InitializePumpManagerTask.java | 6 +++++- .../tasks/ResetRileyLinkConfigurationTask.java | 5 +++++ .../hw/rileylink/service/tasks/ServiceTask.java | 12 ++++++++++++ .../service/tasks/WakeAndTuneTask.java | 6 +++++- 11 files changed, 74 insertions(+), 15 deletions(-) diff --git a/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicPumpPlugin.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicPumpPlugin.java index 4a9f29f4be..a451ddff6c 100644 --- a/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicPumpPlugin.java +++ b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicPumpPlugin.java @@ -422,14 +422,16 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter @Override public void getPumpStatus(String reason) { + boolean needRefresh = true; if (firstRun) { - initializePump(!isRefresh); + needRefresh = initializePump(!isRefresh); } else { refreshAnyStatusThatNeedsToBeRefreshed(); } - rxBus.send(new EventMedtronicPumpValuesChanged()); + if (needRefresh) + rxBus.send(new EventMedtronicPumpValuesChanged()); } @@ -556,7 +558,10 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter } - private void initializePump(boolean realInit) { + private boolean initializePump(boolean realInit) { + + if (rileyLinkMedtronicService==null) + return false; aapsLogger.info(LTag.PUMP, getLogPrefix() + "initializePump - start"); @@ -571,7 +576,7 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter setRefreshButtonEnabled(true); - return; + return true; } medtronicUtil.dismissNotification(MedtronicNotificationType.PumpUnreachable, rxBus); @@ -614,7 +619,7 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter aapsLogger.error("Number of error counts was 5 or more. Starting tunning."); setRefreshButtonEnabled(true); serviceTaskExecutor.startTask(new WakeAndTuneTask(getInjector())); - return; + return true; } medtronicPumpStatus.setLastCommunicationToNow(); @@ -628,6 +633,8 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter // this.pumpState = PumpDriverState.Initialized; this.firstRun = false; + + return true; } private void getBasalProfiles() { diff --git a/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/MedtronicConverter.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/MedtronicConverter.java index 5ad6c51ceb..64a957bb40 100644 --- a/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/MedtronicConverter.java +++ b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/MedtronicConverter.java @@ -149,8 +149,14 @@ public class MedtronicConverter { if (rawData.length > 1) { + Double d = null; + // if response in 3 bytes then we add additional information - double d = (ByteUtil.toInt(rawData[1], rawData[2]) * 1.0d) / 100.0d; + if (rawData.length == 2) { + d = (rawData[1] * 1.0d) / 100.0d; + } else { + d = (ByteUtil.toInt(rawData[1], rawData[2]) * 1.0d) / 100.0d; + } batteryStatus.voltage = d; batteryStatus.extendedDataReceived = true; @@ -171,7 +177,14 @@ public class MedtronicConverter { startIdx = 2; } - float value = ByteUtil.toInt(rawData[startIdx], rawData[startIdx + 1]) / (1.0f * strokes); + int reqLength = startIdx+1; + float value = 0; + + if (reqLength >= rawData.length) { + value = rawData[startIdx] / (1.0f * strokes); + } else { + value = ByteUtil.toInt(rawData[startIdx], rawData[startIdx + 1]) / (1.0f * strokes); + } aapsLogger.debug(LTag.PUMPCOMM, "Remaining insulin: " + value); return value; diff --git a/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/MedtronicPumpHistoryDecoder.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/MedtronicPumpHistoryDecoder.java index 1bebd4bfe2..124b98f880 100644 --- a/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/MedtronicPumpHistoryDecoder.java +++ b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/MedtronicPumpHistoryDecoder.java @@ -106,8 +106,10 @@ public class MedtronicPumpHistoryDecoder extends MedtronicHistoryDecoder list) { - Collections.sort(list, new PumpHistoryEntry.Comparator()); + if (list!=null && !list.isEmpty()) { + Collections.sort(list, new PumpHistoryEntry.Comparator()); + } } diff --git a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RFSpy.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RFSpy.java index 6e502e6c36..ba002af940 100644 --- a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RFSpy.java +++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RFSpy.java @@ -391,7 +391,8 @@ public class RFSpy { private void setMedtronicEncoding() { RileyLinkEncodingType encoding = RileyLinkEncodingType.FourByteSixByteLocal; - if (rileyLinkServiceData.firmwareVersion.isSameVersion(RileyLinkFirmwareVersion.Version2AndHigher)) { + if (rileyLinkServiceData.firmwareVersion!=null && + rileyLinkServiceData.firmwareVersion.isSameVersion(RileyLinkFirmwareVersion.Version2AndHigher)) { if (sp.getString(RileyLinkConst.Prefs.Encoding, "None") .equals(resourceHelper.gs(R.string.key_medtronic_pump_encoding_4b6b_rileylink))) { encoding = RileyLinkEncodingType.FourByteSixByteRileyLink; diff --git a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/DiscoverGattServicesTask.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/DiscoverGattServicesTask.java index 74396ec4a1..d0916911ea 100644 --- a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/DiscoverGattServicesTask.java +++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/DiscoverGattServicesTask.java @@ -12,7 +12,7 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLin */ public class DiscoverGattServicesTask extends ServiceTask { - @Inject ActivePluginProvider activePlugin; + @Inject AAPSLogger aapsLogger; public boolean needToConnect = false; @@ -31,6 +31,11 @@ public class DiscoverGattServicesTask extends ServiceTask { @Override public void run() { + + if (!isRileyLinkDevice()) { + return; + } + RileyLinkPumpDevice pumpDevice = (RileyLinkPumpDevice) activePlugin.getActivePump(); if (needToConnect) { diff --git a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/InitializePumpManagerTask.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/InitializePumpManagerTask.java index 271a769d46..253d75b4de 100644 --- a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/InitializePumpManagerTask.java +++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/InitializePumpManagerTask.java @@ -29,7 +29,7 @@ import info.nightscout.androidaps.utils.sharedPreferences.SP; public class InitializePumpManagerTask extends ServiceTask { @Inject AAPSLogger aapsLogger; - @Inject ActivePluginProvider activePlugin; + //@Inject ActivePluginProvider activePlugin; @Inject SP sp; @Inject RileyLinkServiceData rileyLinkServiceData; @Inject RileyLinkUtil rileyLinkUtil; @@ -49,6 +49,10 @@ public class InitializePumpManagerTask extends ServiceTask { @Override public void run() { + if (!isRileyLinkDevice()) { + return; + } + double lastGoodFrequency; if (rileyLinkServiceData.lastGoodFrequency == null) { diff --git a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/ResetRileyLinkConfigurationTask.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/ResetRileyLinkConfigurationTask.java index da8db8fee4..45e16b6487 100644 --- a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/ResetRileyLinkConfigurationTask.java +++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/ResetRileyLinkConfigurationTask.java @@ -24,6 +24,11 @@ public class ResetRileyLinkConfigurationTask extends PumpTask { @Override public void run() { + + if (!isRileyLinkDevice()) { + return; + } + RileyLinkPumpDevice rileyLinkPumpDevice = (RileyLinkPumpDevice) activePlugin.getActivePump(); rxBus.send(new EventRefreshButtonState(false)); diff --git a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/ServiceTask.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/ServiceTask.java index 7fff8e225a..74193bda1c 100644 --- a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/ServiceTask.java +++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/ServiceTask.java @@ -1,6 +1,10 @@ package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks; +import javax.inject.Inject; + import dagger.android.HasAndroidInjector; +import info.nightscout.androidaps.interfaces.ActivePluginProvider; +import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkPumpDevice; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.data.ServiceTransport; /** @@ -8,6 +12,8 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.data. */ public class ServiceTask implements Runnable { + @Inject protected ActivePluginProvider activePlugin; + public boolean completed = false; protected ServiceTransport mTransport; protected HasAndroidInjector injector; @@ -56,4 +62,10 @@ public class ServiceTask implements Runnable { * RoundtripService.getInstance().sendServiceTransportResponse(mTransport,result); * } */ + + public boolean isRileyLinkDevice() { + return (activePlugin.getActivePump() instanceof RileyLinkPumpDevice); + } + + } diff --git a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/WakeAndTuneTask.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/WakeAndTuneTask.java index 0411903fe2..911b078e46 100644 --- a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/WakeAndTuneTask.java +++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/WakeAndTuneTask.java @@ -13,7 +13,7 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLin */ public class WakeAndTuneTask extends PumpTask { - @Inject ActivePluginProvider activePlugin; + //@Inject ActivePluginProvider activePlugin; @Inject RxBusWrapper rxBus; private static final String TAG = "WakeAndTuneTask"; @@ -24,6 +24,10 @@ public class WakeAndTuneTask extends PumpTask { @Override public void run() { + if (!isRileyLinkDevice()) { + return; + } + RileyLinkPumpDevice pumpDevice = (RileyLinkPumpDevice) activePlugin.getActivePump(); rxBus.send(new EventRefreshButtonState(false)); pumpDevice.setBusy(true); From 16fc0358737428948dbe6a22caf5ee8d33b5926d Mon Sep 17 00:00:00 2001 From: rICTx-T1D Date: Tue, 5 Jan 2021 22:08:43 +0100 Subject: [PATCH 22/57] #156 - vertical-centered label by using TableRow-method to prevent truncation of translation --- .../res/layout/activity_profilehelper.xml | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/app/src/main/res/layout/activity_profilehelper.xml b/app/src/main/res/layout/activity_profilehelper.xml index f471dc862e..9d2f6e327f 100644 --- a/app/src/main/res/layout/activity_profilehelper.xml +++ b/app/src/main/res/layout/activity_profilehelper.xml @@ -83,14 +83,14 @@ + android:layout_height="match_parent" + android:gravity="center_vertical"> @@ -105,14 +105,14 @@ + android:layout_height="match_parent" + android:gravity="center_vertical"> @@ -127,14 +127,14 @@ + android:layout_height="match_parent" + android:gravity="center_vertical"> @@ -149,14 +149,14 @@ + android:layout_height="match_parent" + android:gravity="center_vertical"> From 564e87aa5a0ba20ba3659e782f9136128423f5b4 Mon Sep 17 00:00:00 2001 From: Bart Sopers Date: Wed, 6 Jan 2021 22:14:26 +0100 Subject: [PATCH 23/57] Fix reporting cancelled TBR upon suspending delivery for Omnipod --- .../pump/omnipod/OmnipodPumpPlugin.java | 54 +++++++++---------- .../action/CancelDeliveryAction.java | 23 ++++---- .../communication/message/OmnipodMessage.java | 19 ++++--- .../driver/manager/OmnipodManager.java | 9 ++++ .../driver/manager/PodStateManager.java | 17 +++--- 5 files changed, 64 insertions(+), 58 deletions(-) diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodPumpPlugin.java b/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodPumpPlugin.java index fb21956b2e..33e6df12d3 100644 --- a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodPumpPlugin.java +++ b/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodPumpPlugin.java @@ -116,8 +116,8 @@ import static info.nightscout.androidaps.plugins.pump.omnipod.driver.definition. */ @Singleton public class OmnipodPumpPlugin extends PumpPluginBase implements PumpInterface, RileyLinkPumpDevice { - private static final long RILEY_LINK_CONNECT_TIMEOUT_MILLIS = 3 * 60 * 1000L; // 3 minutes - private static final long STATUS_CHECK_INTERVAL_MILLIS = 60 * 1000L; // 1 minute + private static final long RILEY_LINK_CONNECT_TIMEOUT_MILLIS = 3 * 60 * 1_000L; // 3 minutes + private static final long STATUS_CHECK_INTERVAL_MILLIS = 60 * 1_000L; // 1 minute public static final int STARTUP_STATUS_REQUEST_TRIES = 2; public static final double RESERVOIR_OVER_50_UNITS_DEFAULT = 75.0; @@ -155,7 +155,6 @@ public class OmnipodPumpPlugin extends PumpPluginBase implements PumpInterface, private final Handler loopHandler = new Handler(Looper.getMainLooper()); private final Runnable statusChecker; - private boolean isCancelTempBasalRunning; @Inject public OmnipodPumpPlugin( @@ -238,26 +237,30 @@ public class OmnipodPumpPlugin extends PumpPluginBase implements PumpInterface, statusChecker = new Runnable() { @Override public void run() { - if (podStateManager.isPodRunning() && !podStateManager.isSuspended()) { - aapsOmnipodManager.cancelSuspendedFakeTbrIfExists(); + if (commandQueue.size() == 0) { + if (podStateManager.isPodRunning() && !podStateManager.isSuspended()) { + aapsOmnipodManager.cancelSuspendedFakeTbrIfExists(); + } else { + aapsOmnipodManager.createSuspendedFakeTbrIfNotExists(); + } + + if (OmnipodPumpPlugin.this.hasTimeDateOrTimeZoneChanged) { + getCommandQueue().customCommand(new CommandHandleTimeChange(false), null); + } + if (!OmnipodPumpPlugin.this.verifyPodAlertConfiguration()) { + getCommandQueue().customCommand(new CommandUpdateAlertConfiguration(), null); + } + + if (aapsOmnipodManager.isAutomaticallyAcknowledgeAlertsEnabled() && podStateManager.isPodActivationCompleted() && !podStateManager.isPodDead() && + podStateManager.getActiveAlerts().size() > 0 && !getCommandQueue().isCustomCommandInQueue(CommandAcknowledgeAlerts.class)) { + queueAcknowledgeAlertsCommand(); + } + + doPodCheck(); } else { - aapsOmnipodManager.createSuspendedFakeTbrIfNotExists(); + aapsLogger.debug(LTag.PUMPCOMM, "Skipping Pod status check because command queue is not empty"); } - if (OmnipodPumpPlugin.this.hasTimeDateOrTimeZoneChanged) { - getCommandQueue().customCommand(new CommandHandleTimeChange(false), null); - } - if (!OmnipodPumpPlugin.this.verifyPodAlertConfiguration()) { - getCommandQueue().customCommand(new CommandUpdateAlertConfiguration(), null); - } - - if (aapsOmnipodManager.isAutomaticallyAcknowledgeAlertsEnabled() && podStateManager.isPodActivationCompleted() && !podStateManager.isPodDead() && - podStateManager.getActiveAlerts().size() > 0 && !getCommandQueue().isCustomCommandInQueue(CommandAcknowledgeAlerts.class)) { - queueAcknowledgeAlertsCommand(); - } - - doPodCheck(); - loopHandler.postDelayed(this, STATUS_CHECK_INTERVAL_MILLIS); } }; @@ -360,10 +363,6 @@ public class OmnipodPumpPlugin extends PumpPluginBase implements PumpInterface, } private void handleCancelledTbr() { - // Only report TBR cancellations if they haven't been explicitly requested - if (isCancelTempBasalRunning) { - return; - } if (!podStateManager.isTempBasalRunning() && activePlugin.getActiveTreatments().isTempBasalInProgress() && !aapsOmnipodManager.hasSuspendedFakeTbr()) { aapsOmnipodManager.reportCancelledTbr(); } @@ -695,12 +694,7 @@ public class OmnipodPumpPlugin extends PumpPluginBase implements PumpInterface, return new PumpEnactResult(getInjector()).success(true).enacted(false); } - isCancelTempBasalRunning = true; - try { - return executeCommand(OmnipodCommandType.CANCEL_TEMPORARY_BASAL, aapsOmnipodManager::cancelTemporaryBasal); - } finally { - isCancelTempBasalRunning = false; - } + return executeCommand(OmnipodCommandType.CANCEL_TEMPORARY_BASAL, aapsOmnipodManager::cancelTemporaryBasal); } // TODO improve (i8n and more) diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/CancelDeliveryAction.java b/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/CancelDeliveryAction.java index b0b4c0ad18..ffce09d903 100644 --- a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/CancelDeliveryAction.java +++ b/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/action/CancelDeliveryAction.java @@ -1,13 +1,17 @@ package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action; +import org.joda.time.Duration; + import java.util.ArrayList; import java.util.EnumSet; import java.util.List; import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.MessageBlock; import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.OmnipodMessage; +import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command.BeepConfigCommand; import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.command.CancelDeliveryCommand; import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.response.StatusResponse; +import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.BeepConfigType; import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.BeepType; import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.DeliveryType; import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateManager; @@ -35,23 +39,14 @@ public class CancelDeliveryAction implements OmnipodAction { public StatusResponse execute(OmnipodRileyLinkCommunicationManager communicationService) { List messageBlocks = new ArrayList<>(); - if (acknowledgementBeep && deliveryTypes.size() > 1) { - // Workaround for strange beep behaviour when cancelling multiple delivery types - List deliveryTypeList = new ArrayList<>(deliveryTypes); + messageBlocks.add(new CancelDeliveryCommand(podStateManager.getCurrentNonce(), BeepType.NO_BEEP, deliveryTypes)); - EnumSet deliveryTypeWithBeep = EnumSet.of(deliveryTypeList.remove(deliveryTypeList.size() - 1)); - EnumSet deliveryTypesWithoutBeep = EnumSet.copyOf(deliveryTypeList); - - messageBlocks.add(new CancelDeliveryCommand(podStateManager.getCurrentNonce(), BeepType.NO_BEEP, deliveryTypesWithoutBeep)); - messageBlocks.add(new CancelDeliveryCommand(podStateManager.getCurrentNonce(), BeepType.BEEP, deliveryTypeWithBeep)); - } else { - messageBlocks.add(new CancelDeliveryCommand(podStateManager.getCurrentNonce(), - acknowledgementBeep && deliveryTypes.size() == 1 ? BeepType.BEEP : BeepType.NO_BEEP, deliveryTypes)); + // Workaround for strange behavior where the Pod beeps for each specified delivery type + if (acknowledgementBeep) { + messageBlocks.add(new BeepConfigCommand(BeepConfigType.BEEP, false, Duration.ZERO, false, Duration.ZERO, false, Duration.ZERO)); } - StatusResponse statusResponse = communicationService.exchangeMessages(StatusResponse.class, podStateManager, + return communicationService.exchangeMessages(StatusResponse.class, podStateManager, new OmnipodMessage(podStateManager.getAddress(), messageBlocks, podStateManager.getMessageNumber())); - - return statusResponse; } } diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/OmnipodMessage.java b/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/OmnipodMessage.java index e0c7bf9848..bd30bf82a6 100644 --- a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/OmnipodMessage.java +++ b/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/communication/message/OmnipodMessage.java @@ -1,6 +1,7 @@ package info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message; import java.util.ArrayList; +import java.util.EnumSet; import java.util.List; import info.nightscout.androidaps.logging.AAPSLogger; @@ -31,7 +32,7 @@ public class OmnipodMessage { public OmnipodMessage(int address, List messageBlocks, int sequenceNumber) { this.address = address; - this.messageBlocks = messageBlocks; + this.messageBlocks = new ArrayList<>(messageBlocks); this.sequenceNumber = sequenceNumber; } @@ -54,7 +55,7 @@ public class OmnipodMessage { throw new CrcMismatchException(calculatedCrc, crc); } List blocks = decodeBlocks(ByteUtil.substring(data, 6, data.length - 6 - 2)); - if (blocks == null || blocks.size() == 0) { + if (blocks.size() == 0) { throw new MessageDecodingException("No blocks decoded"); } @@ -110,7 +111,7 @@ public class OmnipodMessage { } public List getMessageBlocks() { - return messageBlocks; + return new ArrayList<>(messageBlocks); } public int getSequenceNumber() { @@ -147,12 +148,16 @@ public class OmnipodMessage { return false; } - public boolean isSetTempBasalMessage() { - return messageBlocks.size() >= 2 && messageBlocks.get(0).getType() == MessageBlockType.SET_INSULIN_SCHEDULE && messageBlocks.get(1).getType() == MessageBlockType.TEMP_BASAL_EXTRA; + public boolean isGetStatusMessage() { + return messageBlocks.size() == 1 && messageBlocks.get(0).getType() == MessageBlockType.GET_STATUS; } - public boolean isCancelTempBasalMessage() { - return messageBlocks.size() >= 1 && messageBlocks.get(0).getType() == MessageBlockType.CANCEL_DELIVERY && ((CancelDeliveryCommand) messageBlocks.get(0)).getDeliveryTypes().contains(DeliveryType.TEMP_BASAL); + public boolean isSuspendDeliveryMessage() { + return isCancelDeliveryMessage() && EnumSet.allOf(DeliveryType.class).equals(((CancelDeliveryCommand) messageBlocks.get(0)).getDeliveryTypes()); + } + + private boolean isCancelDeliveryMessage() { + return messageBlocks.size() >= 1 && messageBlocks.get(0).getType() == MessageBlockType.CANCEL_DELIVERY; } @Override diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/manager/OmnipodManager.java b/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/manager/OmnipodManager.java index d29f479dfa..084c5aa524 100644 --- a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/manager/OmnipodManager.java +++ b/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/manager/OmnipodManager.java @@ -277,6 +277,15 @@ public class OmnipodManager { private synchronized StatusResponse cancelDelivery(EnumSet deliveryTypes, boolean acknowledgementBeep) { assertReadyForDelivery(); + if (!podStateManager.isTempBasalCertain() || !podStateManager.isBasalCertain()) { + try { + getPodStatus(); + } catch (OmnipodException ex) { + ex.setCertainFailure(true); + throw ex; + } + } + if (deliveryTypes.contains(DeliveryType.BASAL)) { podStateManager.setBasalCertain(false); } diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/manager/PodStateManager.java b/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/manager/PodStateManager.java index b32dee2ede..f84e76b589 100644 --- a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/manager/PodStateManager.java +++ b/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/manager/PodStateManager.java @@ -568,10 +568,10 @@ public abstract class PodStateManager { podState.setPodProgressStatus(status.getPodProgressStatus()); podState.setTimeActive(status.getTimeActive()); - boolean isBasalCertain = podState.isBasalCertain() == null || podState.isBasalCertain(); - boolean isTempBasalCertain = podState.isTempBasalCertain() == null || podState.isTempBasalCertain(); + boolean wasBasalCertain = podState.isBasalCertain() == null || podState.isBasalCertain(); + boolean wasTempBasalCertain = podState.isTempBasalCertain() == null || podState.isTempBasalCertain(); if (!status.getDeliveryStatus().isTbrRunning() && hasTempBasal()) { - if (isTempBasalCertain) { + if (wasTempBasalCertain || requestMessage.isSuspendDeliveryMessage()) { clearTempBasal(); // Triggers onTbrChanged when appropriate } else { // Don't trigger onTbrChanged as we will trigger onUncertainTbrRecovered below @@ -580,14 +580,17 @@ public abstract class PodStateManager { podState.setTempBasalDuration(null); } } - if (!isTempBasalCertain) { + + if (!wasTempBasalCertain) { podState.setTempBasalCertain(true); - if (!requestMessage.isSetTempBasalMessage() // We always set TBR to uncertain before sending the set temp basal command, so this is not an actual recovery - && !requestMessage.isCancelTempBasalMessage()) { // Delivery status changed, so we can't recover here + + // We exclusively use get status messages to recover from uncertain TBRs + // DO NOT change this as the recovery mechanism will otherwise interfere with normal delivery commands + if (requestMessage.isGetStatusMessage()) { onUncertainTbrRecovered(); } } - if (!isBasalCertain) { + if (!wasBasalCertain) { podState.setBasalCertain(true); } From 4720dfc1c7812364c8b49aa9e88ccc9e258d8fbc Mon Sep 17 00:00:00 2001 From: Bart Sopers Date: Wed, 6 Jan 2021 22:17:12 +0100 Subject: [PATCH 24/57] Update version for Omnipod --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 325e1849a1..6f243f2a2d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -120,7 +120,7 @@ android { targetSdkVersion 28 multiDexEnabled true versionCode 1500 - version "2.8.0.1-dev" + version "2.8.0.1-dev-omnipod" buildConfigField "String", "VERSION", '"' + version + '"' buildConfigField "String", "BUILDVERSION", '"' + generateGitBuild() + '-' + generateDate() + '"' buildConfigField "String", "REMOTE", '"' + generateGitRemote() + '"' From 71eca73b3aae1cc7cd46fc24dc2c203988916f34 Mon Sep 17 00:00:00 2001 From: Bart Sopers Date: Wed, 6 Jan 2021 22:21:49 +0100 Subject: [PATCH 25/57] Revert "Update version for Omnipod" This reverts commit 4720dfc1c7812364c8b49aa9e88ccc9e258d8fbc. --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 6f243f2a2d..325e1849a1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -120,7 +120,7 @@ android { targetSdkVersion 28 multiDexEnabled true versionCode 1500 - version "2.8.0.1-dev-omnipod" + version "2.8.0.1-dev" buildConfigField "String", "VERSION", '"' + version + '"' buildConfigField "String", "BUILDVERSION", '"' + generateGitBuild() + '-' + generateDate() + '"' buildConfigField "String", "REMOTE", '"' + generateGitRemote() + '"' From 169443e5f7f0356e86d2e8f5fec04ab0883bedb0 Mon Sep 17 00:00:00 2001 From: Bart Sopers Date: Thu, 7 Jan 2021 00:05:07 +0100 Subject: [PATCH 26/57] Also retrieve battery level for Medtronic and show it in RileyLink status fragment --- .../pump/medtronic/MedtronicPumpPlugin.java | 5 +- .../pump/omnipod/OmnipodPumpPlugin.java | 8 +- .../OmnipodRileyLinkCommunicationManager.java | 20 +-- .../pump/common/hw/rileylink/ble/RFSpy.java | 158 +++++++----------- .../hw/rileylink/defs/RileyLinkPumpInfo.java | 12 +- .../RileyLinkStatusGeneralFragment.java | 35 ++-- .../service/RileyLinkServiceData.java | 4 +- .../res/layout/rileylink_status_general.xml | 8 +- rileylink/src/main/res/values/strings.xml | 9 +- 9 files changed, 93 insertions(+), 166 deletions(-) diff --git a/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicPumpPlugin.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicPumpPlugin.java index 4a9f29f4be..fc39484bf4 100644 --- a/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicPumpPlugin.java +++ b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicPumpPlugin.java @@ -48,7 +48,6 @@ import info.nightscout.androidaps.plugins.bus.RxBusWrapper; import info.nightscout.androidaps.plugins.common.ManufacturerType; import info.nightscout.androidaps.plugins.general.actions.defs.CustomAction; import info.nightscout.androidaps.plugins.general.actions.defs.CustomActionType; -import info.nightscout.androidaps.queue.commands.CustomCommand; import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification; import info.nightscout.androidaps.plugins.general.overview.notifications.Notification; import info.nightscout.androidaps.plugins.pump.common.PumpPluginAbstract; @@ -86,6 +85,7 @@ import info.nightscout.androidaps.plugins.pump.medtronic.events.EventMedtronicPu import info.nightscout.androidaps.plugins.pump.medtronic.service.RileyLinkMedtronicService; import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicConst; import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil; +import info.nightscout.androidaps.queue.commands.CustomCommand; import info.nightscout.androidaps.utils.DateUtil; import info.nightscout.androidaps.utils.FabricPrivacy; import info.nightscout.androidaps.utils.TimeChangeType; @@ -327,11 +327,10 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter } @Override public RileyLinkPumpInfo getPumpInfo() { - String pumpDescription = pumpType.getDescription(); String frequency = resourceHelper.gs(medtronicPumpStatus.pumpFrequency.equals("medtronic_pump_frequency_us_ca") ? R.string.medtronic_pump_frequency_us_ca : R.string.medtronic_pump_frequency_worldwide); String model = medtronicPumpStatus.medtronicDeviceType == null ? "???" : "Medtronic " + medtronicPumpStatus.medtronicDeviceType.getPumpModel(); String serialNumber = medtronicPumpStatus.serialNumber; - return new RileyLinkPumpInfo(pumpDescription, frequency, model, serialNumber); + return new RileyLinkPumpInfo(frequency, model, serialNumber); } @Override public long getLastConnectionTimeMillis() { diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodPumpPlugin.java b/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodPumpPlugin.java index 33e6df12d3..ef9a475d92 100644 --- a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodPumpPlugin.java +++ b/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodPumpPlugin.java @@ -509,11 +509,10 @@ public class OmnipodPumpPlugin extends PumpPluginBase implements PumpInterface, } @Override public RileyLinkPumpInfo getPumpInfo() { - String pumpDescription = "Eros"; String frequency = resourceHelper.gs(R.string.omnipod_frequency); - String connectedModel = podStateManager.isPodInitialized() ? "Eros Pod" : "-"; + String connectedModel = "Eros"; String serialNumber = podStateManager.isPodInitialized() ? String.valueOf(podStateManager.getAddress()) : "-"; - return new RileyLinkPumpInfo(pumpDescription, frequency, connectedModel, serialNumber); + return new RileyLinkPumpInfo(frequency, connectedModel, serialNumber); } // Required by RileyLinkPumpDevice interface. @@ -615,8 +614,7 @@ public class OmnipodPumpPlugin extends PumpPluginBase implements PumpInterface, @Override public int getBatteryLevel() { if (aapsOmnipodManager.isUseRileyLinkBatteryLevel()) { - Integer batteryLevel = omnipodRileyLinkCommunicationManager.getBatteryLevel(); - return batteryLevel == null ? 0 : batteryLevel; + return Optional.ofNullable(rileyLinkServiceData.batteryLevel).orElse(0); } return 0; diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/rileylink/manager/OmnipodRileyLinkCommunicationManager.java b/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/rileylink/manager/OmnipodRileyLinkCommunicationManager.java index 0171b60a9a..6ac15bc9b1 100644 --- a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/rileylink/manager/OmnipodRileyLinkCommunicationManager.java +++ b/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/rileylink/manager/OmnipodRileyLinkCommunicationManager.java @@ -8,7 +8,6 @@ import java.util.List; import javax.inject.Inject; import javax.inject.Singleton; -import info.nightscout.androidaps.interfaces.PumpInterface; import info.nightscout.androidaps.logging.LTag; import info.nightscout.androidaps.plugins.pump.common.defs.PumpDeviceState; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkCommunicationManager; @@ -16,7 +15,6 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.RileyLink import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs.RLMessageType; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs.RileyLinkBLEError; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; -import info.nightscout.androidaps.plugins.pump.omnipod.OmnipodPumpPlugin; import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.action.OmnipodAction; import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.MessageBlock; import info.nightscout.androidaps.plugins.pump.omnipod.driver.communication.message.OmnipodMessage; @@ -52,7 +50,6 @@ import info.nightscout.androidaps.plugins.pump.omnipod.driver.manager.PodStateMa */ @Singleton public class OmnipodRileyLinkCommunicationManager extends RileyLinkCommunicationManager { - private Integer batteryLevel; // This empty constructor must be kept, otherwise dagger injection might break! @Inject @@ -86,18 +83,7 @@ public class OmnipodRileyLinkCommunicationManager extends RileyLinkCommunication } @Override protected OmnipodPacket sendAndListen(OmnipodPacket msg, int timeout_ms, int repeatCount, int retryCount, Integer extendPreamble_ms) throws RileyLinkCommunicationException { - OmnipodPacket response = super.sendAndListen(msg, timeout_ms, repeatCount, retryCount, extendPreamble_ms); - - PumpInterface activePump = activePluginProvider.getActivePump(); - if (activePump instanceof OmnipodPumpPlugin && ((OmnipodPumpPlugin) activePump).isUseRileyLinkBatteryLevel()) { - updateBatteryLevel(); - } - - return response; - } - - public Integer getBatteryLevel() { - return batteryLevel; + return super.sendAndListen(msg, timeout_ms, repeatCount, retryCount, extendPreamble_ms); } public T sendCommand(Class responseClass, PodStateManager podStateManager, MessageBlock command) { @@ -402,8 +388,4 @@ public class OmnipodRileyLinkCommunicationManager extends RileyLinkCommunication throw new RileyLinkUnreachableException(); } - - private void updateBatteryLevel() { - batteryLevel = rfspy.getBatteryLevel(); - } } diff --git a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RFSpy.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RFSpy.java index bf06acad02..495884cdba 100644 --- a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RFSpy.java +++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RFSpy.java @@ -2,14 +2,17 @@ package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble; import android.os.SystemClock; +import java.util.Optional; import java.util.UUID; import javax.inject.Inject; import javax.inject.Singleton; import dagger.android.HasAndroidInjector; +import info.nightscout.androidaps.events.EventRefreshOverview; import info.nightscout.androidaps.logging.AAPSLogger; import info.nightscout.androidaps.logging.LTag; +import info.nightscout.androidaps.plugins.bus.RxBusWrapper; import info.nightscout.androidaps.plugins.pump.common.R; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkConst; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkUtil; @@ -40,12 +43,16 @@ import info.nightscout.androidaps.utils.sharedPreferences.SP; */ @Singleton public class RFSpy { + private static final long DEFAULT_BATTERY_CHECK_INTERVAL_MILLIS = 30 * 60 * 1_000; // 30 minutes; + private static final long LOW_BATTERY_BATTERY_CHECK_INTERVAL_MILLIS = 10 * 60 * 1_000; // 10 minutes; + private static final int LOW_BATTERY_PERCENTAGE_THRESHOLD = 20; @Inject AAPSLogger aapsLogger; @Inject ResourceHelper resourceHelper; @Inject SP sp; @Inject RileyLinkServiceData rileyLinkServiceData; @Inject RileyLinkUtil rileyLinkUtil; + @Inject RxBusWrapper rxBus; private final HasAndroidInjector injector; @@ -59,11 +66,9 @@ public class RFSpy { private final UUID radioVersionUUID = UUID.fromString(GattAttributes.CHARA_RADIO_VERSION); private final UUID batteryServiceUUID = UUID.fromString(GattAttributes.SERVICE_BATTERY); private final UUID batteryLevelUUID = UUID.fromString(GattAttributes.CHARA_BATTERY_UNK); - //private UUID responseCountUUID = UUID.fromString(GattAttributes.CHARA_RADIO_RESPONSE_COUNT); - private RileyLinkFirmwareVersion firmwareVersion; private String bleVersion; // We don't use it so no need of sofisticated logic private Double currentFrequencyMHz; - + private long nextBatteryCheck = 0; @Inject public RFSpy(HasAndroidInjector injector, RileyLinkBLE rileyLinkBle) { @@ -77,17 +82,10 @@ public class RFSpy { reader = new RFSpyReader(aapsLogger, rileyLinkBle); } - - public RileyLinkFirmwareVersion getRLVersionCached() { - return firmwareVersion; - } - - public String getBLEVersionCached() { return bleVersion; } - // Call this after the RL services are discovered. // Starts an async task to read when data is available public void startReader() { @@ -95,7 +93,6 @@ public class RFSpy { reader.start(); } - // Here should go generic RL initialisation + protocol adjustments depending on // firmware version public void initializeRileyLink() { @@ -105,14 +102,13 @@ public class RFSpy { rileyLinkServiceData.firmwareVersion = getFirmwareVersion(aapsLogger, bleVersion, cc1110Version); } - // Call this from the "response count" notification handler. private void newDataIsAvailable() { // pass the message to the reader (which should be internal to RFSpy) reader.newDataIsAvailable(); } - public Integer getBatteryLevel() { + public Integer retrieveBatteryLevel() { BLECommOperationResult result = rileyLinkBle.readCharacteristic_blocking(batteryServiceUUID, batteryLevelUUID); if (result.resultCode == BLECommOperationResult.RESULT_SUCCESS) { int value = result.value[0]; @@ -124,7 +120,6 @@ public class RFSpy { } } - // This gets the version from the BLE113, not from the CC1110. // I.e., this gets the version from the BLE interface, not from the radio. public String getVersion() { @@ -208,14 +203,12 @@ public class RFSpy { aapsLogger.error(LTag.PUMPBTCOMM, "BLE Write operation failed, code=" + writeCheck.resultCode); return null; // will be a null (invalid) response } + SystemClock.sleep(100); - // Log.i(TAG,ThreadUtil.sig()+String.format(" writeToData:(timeout %d) %s",(responseTimeout_ms),ByteUtil.shortHexString(prepended))); - byte[] rawResponse = reader.poll(responseTimeout_ms); - return rawResponse; + return reader.poll(responseTimeout_ms); } - // The caller has to know how long the RFSpy will be busy with what was sent to it. private RFSpyResponse writeToData(RileyLinkCommand command, int responseTimeout_ms) { @@ -236,55 +229,26 @@ public class RFSpy { resetNotConnectedCount(); } else { if (resp.looksLikeRadioPacket()) { - // RadioResponse radioResp = resp.getRadioResponse(); - // byte[] responsePayload = radioResp.getPayload(); aapsLogger.debug(LTag.PUMPBTCOMM, "writeToData: received radio response. Will decode at upper level"); resetNotConnectedCount(); } - // Log.i(TAG, "writeToData: raw response is " + ByteUtil.shortHexString(rawResponse)); } return resp; } - private void resetNotConnectedCount() { this.notConnectedCount = 0; } - private byte[] getByteArray(byte... input) { return input; } - - private byte[] getCommandArray(RileyLinkCommandType command, byte[] body) { - int bodyLength = body == null ? 0 : body.length; - - byte[] output = new byte[bodyLength + 1]; - - output[0] = command.code; - - if (body != null) { - for (int i = 0; i < body.length; i++) { - output[i + 1] = body[i]; - } - } - - return output; - } - - public RFSpyResponse transmitThenReceive(RadioPacket pkt, byte sendChannel, byte repeatCount, byte delay_ms, byte listenChannel, int timeout_ms, byte retryCount) { return transmitThenReceive(pkt, sendChannel, repeatCount, delay_ms, listenChannel, timeout_ms, retryCount, null); } - - public RFSpyResponse transmitThenReceive(RadioPacket pkt, int timeout_ms) { - return transmitThenReceive(pkt, (byte) 0, (byte) 0, (byte) 0, (byte) 0, timeout_ms, (byte) 0); - } - - public RFSpyResponse transmitThenReceive(RadioPacket pkt, byte sendChannel, byte repeatCount, byte delay_ms, byte listenChannel, int timeout_ms, byte retryCount, Integer extendPreamble_ms) { @@ -294,16 +258,29 @@ public class RFSpy { SendAndListen command = new SendAndListen(injector, sendChannel, repeatCount, delay_ms, listenChannel, timeout_ms, retryCount, extendPreamble_ms, pkt); - return writeToData(command, sendDelay + receiveDelay + EXPECTED_MAX_BLUETOOTH_LATENCY_MS); + RFSpyResponse rfSpyResponse = writeToData(command, sendDelay + receiveDelay + EXPECTED_MAX_BLUETOOTH_LATENCY_MS); + + if (System.currentTimeMillis() >= nextBatteryCheck) { + updateBatteryLevel(); + } + + return rfSpyResponse; } + private void updateBatteryLevel() { + rileyLinkServiceData.batteryLevel = retrieveBatteryLevel(); + nextBatteryCheck = System.currentTimeMillis() + + (Optional.ofNullable(rileyLinkServiceData.batteryLevel).orElse(0) <= LOW_BATTERY_PERCENTAGE_THRESHOLD ? LOW_BATTERY_BATTERY_CHECK_INTERVAL_MILLIS : DEFAULT_BATTERY_CHECK_INTERVAL_MILLIS); + + // The Omnipod plugin reports the RL battery as the pump battery (as the Omnipod battery level is unknown) + // So update overview when the battery level has been updated + rxBus.send(new EventRefreshOverview("RL battery level updated", false)); + } private RFSpyResponse updateRegister(CC111XRegister reg, int val) { - RFSpyResponse resp = writeToData(new UpdateRegister(reg, (byte) val), EXPECTED_MAX_BLUETOOTH_LATENCY_MS); - return resp; + return writeToData(new UpdateRegister(reg, (byte) val), EXPECTED_MAX_BLUETOOTH_LATENCY_MS); } - public void setBaseFrequency(double freqMHz) { int value = (int) (freqMHz * 1000000 / ((double) (RILEYLINK_FREQ_XTAL) / Math.pow(2.0, 16.0))); updateRegister(CC111XRegister.freq0, (byte) (value & 0xff)); @@ -316,69 +293,56 @@ public class RFSpy { configureRadioForRegion(rileyLinkServiceData.rileyLinkTargetFrequency); } - private void configureRadioForRegion(RileyLinkTargetFrequency frequency) { - // we update registers only on first run, or if region changed aapsLogger.error(LTag.PUMPBTCOMM, "RileyLinkTargetFrequency: " + frequency); switch (frequency) { - case Medtronic_WorldWide: { - // updateRegister(CC111X_MDMCFG4, (byte) 0x59); + case Medtronic_WorldWide: setRXFilterMode(RXFilterMode.Wide); - // updateRegister(CC111X_MDMCFG3, (byte) 0x66); - // updateRegister(CC111X_MDMCFG2, (byte) 0x33); updateRegister(CC111XRegister.mdmcfg1, 0x62); updateRegister(CC111XRegister.mdmcfg0, 0x1A); updateRegister(CC111XRegister.deviatn, 0x13); setMedtronicEncoding(); - } - break; + break; - case Medtronic_US: { - // updateRegister(CC111X_MDMCFG4, (byte) 0x99); + case Medtronic_US: setRXFilterMode(RXFilterMode.Narrow); - // updateRegister(CC111X_MDMCFG3, (byte) 0x66); - // updateRegister(CC111X_MDMCFG2, (byte) 0x33); updateRegister(CC111XRegister.mdmcfg1, 0x61); updateRegister(CC111XRegister.mdmcfg0, 0x7E); updateRegister(CC111XRegister.deviatn, 0x15); setMedtronicEncoding(); - } - break; + break; - case Omnipod: { - RFSpyResponse r = null; + case Omnipod: // RL initialization for Omnipod is a copy/paste from OmniKit implementation. // Last commit from original repository: 5c3beb4144 // so if something is terribly wrong, please check git diff PodCommsSession.swift since that commit - r = updateRegister(CC111XRegister.pktctrl1, 0x20); - r = updateRegister(CC111XRegister.agcctrl0, 0x00); - r = updateRegister(CC111XRegister.fsctrl1, 0x06); - r = updateRegister(CC111XRegister.mdmcfg4, 0xCA); - r = updateRegister(CC111XRegister.mdmcfg3, 0xBC); - r = updateRegister(CC111XRegister.mdmcfg2, 0x06); - r = updateRegister(CC111XRegister.mdmcfg1, 0x70); - r = updateRegister(CC111XRegister.mdmcfg0, 0x11); - r = updateRegister(CC111XRegister.deviatn, 0x44); - r = updateRegister(CC111XRegister.mcsm0, 0x18); - r = updateRegister(CC111XRegister.foccfg, 0x17); - r = updateRegister(CC111XRegister.fscal3, 0xE9); - r = updateRegister(CC111XRegister.fscal2, 0x2A); - r = updateRegister(CC111XRegister.fscal1, 0x00); - r = updateRegister(CC111XRegister.fscal0, 0x1F); + updateRegister(CC111XRegister.pktctrl1, 0x20); + updateRegister(CC111XRegister.agcctrl0, 0x00); + updateRegister(CC111XRegister.fsctrl1, 0x06); + updateRegister(CC111XRegister.mdmcfg4, 0xCA); + updateRegister(CC111XRegister.mdmcfg3, 0xBC); + updateRegister(CC111XRegister.mdmcfg2, 0x06); + updateRegister(CC111XRegister.mdmcfg1, 0x70); + updateRegister(CC111XRegister.mdmcfg0, 0x11); + updateRegister(CC111XRegister.deviatn, 0x44); + updateRegister(CC111XRegister.mcsm0, 0x18); + updateRegister(CC111XRegister.foccfg, 0x17); + updateRegister(CC111XRegister.fscal3, 0xE9); + updateRegister(CC111XRegister.fscal2, 0x2A); + updateRegister(CC111XRegister.fscal1, 0x00); + updateRegister(CC111XRegister.fscal0, 0x1F); - r = updateRegister(CC111XRegister.test1, 0x31); - r = updateRegister(CC111XRegister.test0, 0x09); - r = updateRegister(CC111XRegister.paTable0, 0x84); - r = updateRegister(CC111XRegister.sync1, 0xA5); - r = updateRegister(CC111XRegister.sync0, 0x5A); + updateRegister(CC111XRegister.test1, 0x31); + updateRegister(CC111XRegister.test0, 0x09); + updateRegister(CC111XRegister.paTable0, 0x84); + updateRegister(CC111XRegister.sync1, 0xA5); + updateRegister(CC111XRegister.sync0, 0x5A); - r = setRileyLinkEncoding(RileyLinkEncodingType.Manchester); - r = setPreamble(0x6665); - - } - break; + setRileyLinkEncoding(RileyLinkEncodingType.Manchester); + setPreamble(0x6665); + break; default: aapsLogger.warn(LTag.PUMPBTCOMM, "No region configuration for RfSpy and {}", frequency.name()); break; @@ -386,7 +350,6 @@ public class RFSpy { } } - private void setMedtronicEncoding() { RileyLinkEncodingType encoding = RileyLinkEncodingType.FourByteSixByteLocal; @@ -402,7 +365,6 @@ public class RFSpy { aapsLogger.debug(LTag.PUMPBTCOMM, "Set Encoding for Medtronic: " + encoding.name()); } - private RFSpyResponse setPreamble(int preamble) { RFSpyResponse resp = null; try { @@ -413,7 +375,6 @@ public class RFSpy { return resp; } - public RFSpyResponse setRileyLinkEncoding(RileyLinkEncodingType encoding) { RFSpyResponse resp = writeToData(new SetHardwareEncoding(encoding), EXPECTED_MAX_BLUETOOTH_LATENCY_MS); @@ -425,9 +386,7 @@ public class RFSpy { return resp; } - private void setRXFilterMode(RXFilterMode mode) { - byte drate_e = (byte) 0x9; // exponent of symbol rate (16kbps) byte chanbw = mode.value; @@ -441,9 +400,4 @@ public class RFSpy { if (this.currentFrequencyMHz != null) this.setBaseFrequency(this.currentFrequencyMHz); } - - - public void stopReader() { - reader.stop(); - } } diff --git a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkPumpInfo.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkPumpInfo.java index 9759a9adc7..034b9ae283 100644 --- a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkPumpInfo.java +++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkPumpInfo.java @@ -1,13 +1,11 @@ package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs; public class RileyLinkPumpInfo { - private final String connectedDeviceModel; - private final String pumpDescription; - private final String connectedDeviceSerialNumber; private final String pumpFrequency; + private final String connectedDeviceModel; + private final String connectedDeviceSerialNumber; - public RileyLinkPumpInfo(String pumpDescription, String pumpFrequency, String connectedDeviceModel, String connectedDeviceSerialNumber) { - this.pumpDescription = pumpDescription; + public RileyLinkPumpInfo(String pumpFrequency, String connectedDeviceModel, String connectedDeviceSerialNumber) { this.pumpFrequency = pumpFrequency; this.connectedDeviceModel = connectedDeviceModel; this.connectedDeviceSerialNumber = connectedDeviceSerialNumber; @@ -17,10 +15,6 @@ public class RileyLinkPumpInfo { return connectedDeviceModel; } - public String getPumpDescription() { - return pumpDescription; - } - public String getConnectedDeviceSerialNumber() { return connectedDeviceSerialNumber; } diff --git a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusGeneralFragment.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusGeneralFragment.java index 947c30a1a9..cb010ff7ed 100644 --- a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusGeneralFragment.java +++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusGeneralFragment.java @@ -6,10 +6,9 @@ import android.view.View; import android.view.ViewGroup; import android.widget.TextView; -import org.apache.commons.lang3.StringUtils; import org.joda.time.LocalDateTime; -import java.util.Locale; +import java.util.Optional; import javax.inject.Inject; @@ -18,6 +17,7 @@ import info.nightscout.androidaps.interfaces.ActivePluginProvider; import info.nightscout.androidaps.logging.AAPSLogger; import info.nightscout.androidaps.plugins.pump.common.R; import info.nightscout.androidaps.plugins.pump.common.dialog.RefreshableInterface; +import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkError; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkPumpDevice; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkPumpInfo; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkTargetDevice; @@ -43,7 +43,7 @@ public class RileyLinkStatusGeneralFragment extends DaggerFragment implements Re private TextView connectionStatus; private TextView configuredRileyLinkAddress; private TextView configuredRileyLinkName; - private TextView connectedDevice; + private TextView batteryLevel; private TextView connectionError; private TextView deviceType; private TextView deviceModel; @@ -65,7 +65,7 @@ public class RileyLinkStatusGeneralFragment extends DaggerFragment implements Re this.connectionStatus = getActivity().findViewById(R.id.rls_t1_connection_status); this.configuredRileyLinkAddress = getActivity().findViewById(R.id.rls_t1_configured_riley_link_address); this.configuredRileyLinkName = getActivity().findViewById(R.id.rls_t1_configured_riley_link_name); - this.connectedDevice = getActivity().findViewById(R.id.rls_t1_connected_device); + this.batteryLevel = getActivity().findViewById(R.id.rls_t1_battery_level); this.connectionError = getActivity().findViewById(R.id.rls_t1_connection_error); this.deviceType = getActivity().findViewById(R.id.rls_t1_device_type); this.deviceModel = getActivity().findViewById(R.id.rls_t1_device_model); @@ -85,31 +85,28 @@ public class RileyLinkStatusGeneralFragment extends DaggerFragment implements Re // BS FIXME rileyLinkServiceData is injected so I suppose it cannot be null? if (rileyLinkServiceData != null) { - this.configuredRileyLinkAddress.setText(StringUtils.isEmpty(rileyLinkServiceData.rileyLinkAddress) ? PLACEHOLDER : rileyLinkServiceData.rileyLinkAddress); - this.configuredRileyLinkName.setText(StringUtils.isEmpty(rileyLinkServiceData.rileyLinkName) ? PLACEHOLDER : rileyLinkServiceData.rileyLinkName); - this.connectionError.setText(rileyLinkServiceData.rileyLinkError == null ? // - PLACEHOLDER - : resourceHelper.gs(rileyLinkServiceData.rileyLinkError.getResourceId(targetDevice))); + this.configuredRileyLinkAddress.setText(Optional.ofNullable(rileyLinkServiceData.rileyLinkAddress).orElse(PLACEHOLDER)); + this.configuredRileyLinkName.setText(Optional.ofNullable(rileyLinkServiceData.rileyLinkName).orElse(PLACEHOLDER)); - if (firmwareVersion == null) { - this.firmwareVersion.setText("BLE113: " + PLACEHOLDER + "\nCC110: " + PLACEHOLDER); - } else { - this.firmwareVersion.setText("BLE113: " + rileyLinkServiceData.versionBLE113 + - "\nCC110: " + rileyLinkServiceData.versionCC110); - } + Integer batteryLevel = rileyLinkServiceData.batteryLevel; + this.batteryLevel.setText(batteryLevel == null ? PLACEHOLDER : resourceHelper.gs(R.string.rileylink_battery_level_value, batteryLevel)); + + RileyLinkError rileyLinkError = rileyLinkServiceData.rileyLinkError; + this.connectionError.setText(rileyLinkError == null ? PLACEHOLDER : resourceHelper.gs(rileyLinkError.getResourceId(targetDevice))); + + this.firmwareVersion.setText(resourceHelper.gs(R.string.rileylink_firmware_version_value, + Optional.ofNullable(rileyLinkServiceData.versionBLE113).orElse(PLACEHOLDER), Optional.ofNullable(rileyLinkServiceData.versionCC110).orElse(PLACEHOLDER))); } RileyLinkPumpDevice pumpPlugin = (RileyLinkPumpDevice) activePlugin.getActivePump(); RileyLinkPumpInfo pumpInfo = pumpPlugin.getPumpInfo(); this.deviceType.setText(rileyLinkServiceData.targetDevice.getResourceId()); - this.deviceModel.setText(pumpInfo.getPumpDescription()); + this.deviceModel.setText(pumpInfo.getConnectedDeviceModel()); this.serialNumber.setText(pumpInfo.getConnectedDeviceSerialNumber()); this.pumpFrequency.setText(pumpInfo.getPumpFrequency()); - this.connectedDevice.setText(pumpInfo.getConnectedDeviceModel()); if (rileyLinkServiceData.lastGoodFrequency != null) { - this.lastUsedFrequency.setText(String.format(Locale.ENGLISH, "%.2f MHz", - rileyLinkServiceData.lastGoodFrequency)); + this.lastUsedFrequency.setText(resourceHelper.gs(R.string.rileylink_pump_frequency_value, rileyLinkServiceData.lastGoodFrequency)); } long lastConnectionTimeMillis = pumpPlugin.getLastConnectionTimeMillis(); diff --git a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkServiceData.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkServiceData.java index ed48733680..e7f38d0a58 100644 --- a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkServiceData.java +++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkServiceData.java @@ -20,6 +20,7 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLin * Created by andy on 16/05/2018. */ +// FIXME encapsulation @Singleton public class RileyLinkServiceData { @@ -36,6 +37,7 @@ public class RileyLinkServiceData { public RileyLinkTargetFrequency rileyLinkTargetFrequency; public String rileyLinkAddress; public String rileyLinkName; + public Integer batteryLevel; long lastTuneUpTime = 0L; public Double lastGoodFrequency; @@ -76,7 +78,6 @@ public class RileyLinkServiceData { } private synchronized RileyLinkServiceState workWithServiceState(RileyLinkServiceState newState, RileyLinkError errorCode, boolean set) { - if (set) { rileyLinkServiceState = newState; lastServiceStateChange = System.currentTimeMillis(); @@ -90,7 +91,6 @@ public class RileyLinkServiceData { } else { return rileyLinkServiceState; } - } } diff --git a/rileylink/src/main/res/layout/rileylink_status_general.xml b/rileylink/src/main/res/layout/rileylink_status_general.xml index befef08f4c..225ab5126f 100644 --- a/rileylink/src/main/res/layout/rileylink_status_general.xml +++ b/rileylink/src/main/res/layout/rileylink_status_general.xml @@ -42,7 +42,7 @@ android:layout_marginLeft="30dp" android:layout_weight="35" android:gravity="center_vertical" - android:text="@string/rileylink_configured_riley_link_address" /> + android:text="@string/rileylink_address" /> + android:text="@string/rileylink_name" /> + android:text="@string/rileylink_battery_level" /> Pump Status RileyLink Settings RileyLink - Configured RileyLink Address: - Configured RileyLink Name: - Connected Device: + Address: + Name: + Battery Level: + %1$d%% Connection Status: Connection Error: Device @@ -41,8 +42,10 @@ Last Used Frequency: Last Device Contact: Firmware Version: + BLE113: %1$s\nCC110: %2$s Pump Serial Number: Pump Frequency: + %1$.2f MHz Bluetooth Initializing… From 647c0ea74af8e69c424fb87e6c65f37ca49c0a39 Mon Sep 17 00:00:00 2001 From: Bart Sopers Date: Thu, 7 Jan 2021 00:07:07 +0100 Subject: [PATCH 27/57] Remove unused imports in RileyLink module --- .../pump/common/hw/rileylink/RileyLinkUtil.java | 1 - .../common/hw/rileylink/ble/command/SetPreamble.java | 4 ++-- .../hw/rileylink/ble/data/encoding/Encoding4b6bGo.java | 4 ++-- .../rileylink/ble/data/encoding/Encoding4b6bLoop.java | 4 ++-- .../hw/rileylink/ble/defs/RileyLinkEncodingType.java | 1 - .../hw/rileylink/ble/operations/BLECommOperation.java | 4 ++-- .../hw/rileylink/dialog/RileyLinkStatusDevice.java | 10 +++++----- .../dialog/RileyLinkStatusHistoryFragment.java | 2 -- 8 files changed, 13 insertions(+), 17 deletions(-) diff --git a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/RileyLinkUtil.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/RileyLinkUtil.java index 98f602c438..01bc5c4271 100644 --- a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/RileyLinkUtil.java +++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/RileyLinkUtil.java @@ -18,7 +18,6 @@ import javax.inject.Singleton; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.data.encoding.Encoding4b6b; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.data.encoding.Encoding4b6bGeoff; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs.RileyLinkEncodingType; -import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs.RileyLinkTargetFrequency; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.data.BleAdvertisedData; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.data.RLHistoryItem; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.data.ServiceResult; diff --git a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/SetPreamble.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/SetPreamble.java index a8a782e3c5..df7ed3dde4 100644 --- a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/SetPreamble.java +++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/SetPreamble.java @@ -1,9 +1,9 @@ package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.command; -import java.nio.ByteBuffer; - import org.apache.commons.lang3.NotImplementedException; +import java.nio.ByteBuffer; + import javax.inject.Inject; import dagger.android.HasAndroidInjector; diff --git a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bGo.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bGo.java index 94ae52f788..be46985459 100644 --- a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bGo.java +++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bGo.java @@ -1,10 +1,10 @@ package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.data.encoding; +import org.slf4j.Logger; + import java.util.HashMap; import java.util.Map; -import org.slf4j.Logger; - import info.nightscout.androidaps.logging.StacktraceLoggerWrapper; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.RileyLinkCommunicationException; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs.RileyLinkBLEError; diff --git a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bLoop.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bLoop.java index 8dfaf16b0f..ff609d2750 100644 --- a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bLoop.java +++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bLoop.java @@ -1,12 +1,12 @@ package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.data.encoding; +import org.slf4j.Logger; + import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -import org.slf4j.Logger; - import info.nightscout.androidaps.logging.StacktraceLoggerWrapper; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.RileyLinkCommunicationException; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; diff --git a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RileyLinkEncodingType.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RileyLinkEncodingType.java index 55c2ce9539..663ed099e5 100644 --- a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RileyLinkEncodingType.java +++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RileyLinkEncodingType.java @@ -3,7 +3,6 @@ package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs; import java.util.HashMap; import java.util.Map; - import info.nightscout.androidaps.plugins.pump.common.R; import info.nightscout.androidaps.utils.resources.ResourceHelper; diff --git a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/operations/BLECommOperation.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/operations/BLECommOperation.java index 81fe52f890..2106a6131e 100644 --- a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/operations/BLECommOperation.java +++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/operations/BLECommOperation.java @@ -1,10 +1,10 @@ package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.operations; +import android.bluetooth.BluetoothGatt; + import java.util.UUID; import java.util.concurrent.Semaphore; -import android.bluetooth.BluetoothGatt; - import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.RileyLinkBLE; /** diff --git a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusDevice.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusDevice.java index 5d45d7d1fa..3faff82981 100644 --- a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusDevice.java +++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusDevice.java @@ -1,11 +1,6 @@ package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.dialog; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - import android.os.Bundle; -import androidx.fragment.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -14,6 +9,11 @@ import android.widget.Button; import android.widget.ListView; import android.widget.TextView; +import androidx.fragment.app.Fragment; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; import info.nightscout.androidaps.plugins.pump.common.R; import info.nightscout.androidaps.plugins.pump.common.dialog.RefreshableInterface; diff --git a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusHistoryFragment.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusHistoryFragment.java index 4d9eb8a4e1..a59cfbfb78 100644 --- a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusHistoryFragment.java +++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusHistoryFragment.java @@ -18,13 +18,11 @@ import java.util.List; import javax.inject.Inject; import dagger.android.support.DaggerFragment; - import info.nightscout.androidaps.plugins.pump.common.R; import info.nightscout.androidaps.plugins.pump.common.defs.PumpDeviceState; import info.nightscout.androidaps.plugins.pump.common.dialog.RefreshableInterface; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkUtil; import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.data.RLHistoryItem; - import info.nightscout.androidaps.utils.DateUtil; import info.nightscout.androidaps.utils.resources.ResourceHelper; From f1bb85eafa935a56ecb2f5198bb397cf1c47b8a5 Mon Sep 17 00:00:00 2001 From: Bart Sopers Date: Thu, 7 Jan 2021 02:21:41 +0100 Subject: [PATCH 28/57] Distinguish between configured and connected device for Medtronic in RileyLink fragment --- .../rileylink/defs/RileyLinkTargetDevice.java | 3 +- .../RileyLinkStatusGeneralFragment.java | 32 +++++--- .../res/layout/rileylink_status_general.xml | 75 ++++++++++++++----- rileylink/src/main/res/values/strings.xml | 5 +- 4 files changed, 80 insertions(+), 35 deletions(-) diff --git a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkTargetDevice.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkTargetDevice.java index d1e999b2fb..1e560d0801 100644 --- a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkTargetDevice.java +++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkTargetDevice.java @@ -9,8 +9,7 @@ import info.nightscout.androidaps.plugins.pump.common.R; public enum RileyLinkTargetDevice { MedtronicPump(R.string.rileylink_target_device_medtronic, true), // - Omnipod(R.string.rileylink_target_device_omnipod, false), // - ; + Omnipod(R.string.rileylink_target_device_omnipod, false); private final int resourceId; private final boolean tuneUpEnabled; diff --git a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusGeneralFragment.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusGeneralFragment.java index cb010ff7ed..93f2fc14cc 100644 --- a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusGeneralFragment.java +++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusGeneralFragment.java @@ -45,8 +45,10 @@ public class RileyLinkStatusGeneralFragment extends DaggerFragment implements Re private TextView configuredRileyLinkName; private TextView batteryLevel; private TextView connectionError; + private View connectedDeviceDetails; private TextView deviceType; - private TextView deviceModel; + private TextView configuredDeviceModel; + private TextView connectedDeviceModel; private TextView serialNumber; private TextView pumpFrequency; private TextView lastUsedFrequency; @@ -59,16 +61,18 @@ public class RileyLinkStatusGeneralFragment extends DaggerFragment implements Re } @Override - public void onStart() { - super.onStart(); + public void onResume() { + super.onResume(); this.connectionStatus = getActivity().findViewById(R.id.rls_t1_connection_status); this.configuredRileyLinkAddress = getActivity().findViewById(R.id.rls_t1_configured_riley_link_address); this.configuredRileyLinkName = getActivity().findViewById(R.id.rls_t1_configured_riley_link_name); this.batteryLevel = getActivity().findViewById(R.id.rls_t1_battery_level); this.connectionError = getActivity().findViewById(R.id.rls_t1_connection_error); + this.connectedDeviceDetails = getActivity().findViewById(R.id.rls_t1_connected_device_details); this.deviceType = getActivity().findViewById(R.id.rls_t1_device_type); - this.deviceModel = getActivity().findViewById(R.id.rls_t1_device_model); + this.configuredDeviceModel = getActivity().findViewById(R.id.rls_t1_configured_device_model); + this.connectedDeviceModel = getActivity().findViewById(R.id.rls_t1_connected_device_model); this.serialNumber = getActivity().findViewById(R.id.rls_t1_serial_number); this.pumpFrequency = getActivity().findViewById(R.id.rls_t1_pump_frequency); this.lastUsedFrequency = getActivity().findViewById(R.id.rls_t1_last_used_frequency); @@ -98,18 +102,24 @@ public class RileyLinkStatusGeneralFragment extends DaggerFragment implements Re Optional.ofNullable(rileyLinkServiceData.versionBLE113).orElse(PLACEHOLDER), Optional.ofNullable(rileyLinkServiceData.versionCC110).orElse(PLACEHOLDER))); } - RileyLinkPumpDevice pumpPlugin = (RileyLinkPumpDevice) activePlugin.getActivePump(); - RileyLinkPumpInfo pumpInfo = pumpPlugin.getPumpInfo(); - this.deviceType.setText(rileyLinkServiceData.targetDevice.getResourceId()); - this.deviceModel.setText(pumpInfo.getConnectedDeviceModel()); - this.serialNumber.setText(pumpInfo.getConnectedDeviceSerialNumber()); - this.pumpFrequency.setText(pumpInfo.getPumpFrequency()); + RileyLinkPumpDevice rileyLinkPumpDevice = (RileyLinkPumpDevice) activePlugin.getActivePump(); + RileyLinkPumpInfo rileyLinkPumpInfo = rileyLinkPumpDevice.getPumpInfo(); + this.deviceType.setText(targetDevice.getResourceId()); + if (targetDevice == RileyLinkTargetDevice.MedtronicPump) { + this.connectedDeviceDetails.setVisibility(View.VISIBLE); + this.configuredDeviceModel.setText(activePlugin.getActivePump().getPumpDescription().pumpType.getDescription()); + this.connectedDeviceModel.setText(rileyLinkPumpInfo.getConnectedDeviceModel()); + } else { + this.connectedDeviceDetails.setVisibility(View.GONE); + } + this.serialNumber.setText(rileyLinkPumpInfo.getConnectedDeviceSerialNumber()); + this.pumpFrequency.setText(rileyLinkPumpInfo.getPumpFrequency()); if (rileyLinkServiceData.lastGoodFrequency != null) { this.lastUsedFrequency.setText(resourceHelper.gs(R.string.rileylink_pump_frequency_value, rileyLinkServiceData.lastGoodFrequency)); } - long lastConnectionTimeMillis = pumpPlugin.getLastConnectionTimeMillis(); + long lastConnectionTimeMillis = rileyLinkPumpDevice.getLastConnectionTimeMillis(); if (lastConnectionTimeMillis == 0) { this.lastDeviceContact.setText(resourceHelper.gs(R.string.riley_link_ble_config_connected_never)); } else { diff --git a/rileylink/src/main/res/layout/rileylink_status_general.xml b/rileylink/src/main/res/layout/rileylink_status_general.xml index 225ab5126f..ebde416c10 100644 --- a/rileylink/src/main/res/layout/rileylink_status_general.xml +++ b/rileylink/src/main/res/layout/rileylink_status_general.xml @@ -234,35 +234,70 @@ android:textAlignment="center" /> - + android:orientation="vertical"> - + android:orientation="horizontal" + android:visibility="gone"> - + + + + + + android:orientation="horizontal" + android:visibility="gone"> + + + + + + - Connection Error: Device Device Type: - Device Model: + Configured Device Model: + Connected Device Model: Last Used Frequency: Last Device Contact: Firmware Version: @@ -70,7 +71,7 @@ Medtronic Pump - Omnipod + Omnipod (Eros) Yes No From 99a93200998d506754782c12425a8c34c88e4dfc Mon Sep 17 00:00:00 2001 From: Bart Sopers Date: Thu, 7 Jan 2021 02:35:15 +0100 Subject: [PATCH 29/57] Make sure Omnipod warnings are shown when queue is not empty --- .../plugins/pump/omnipod/OmnipodPumpPlugin.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodPumpPlugin.java b/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodPumpPlugin.java index 33e6df12d3..c0c74a01d2 100644 --- a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodPumpPlugin.java +++ b/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodPumpPlugin.java @@ -150,7 +150,7 @@ public class OmnipodPumpPlugin extends PumpPluginBase implements PumpInterface, private RileyLinkOmnipodService rileyLinkOmnipodService; private boolean busy = false; private int timeChangeRetries; - private long nextPodCheck; + private long nextPodWarningCheck; private long lastConnectionTimeMillis; private final Handler loopHandler = new Handler(Looper.getMainLooper()); @@ -255,12 +255,12 @@ public class OmnipodPumpPlugin extends PumpPluginBase implements PumpInterface, podStateManager.getActiveAlerts().size() > 0 && !getCommandQueue().isCustomCommandInQueue(CommandAcknowledgeAlerts.class)) { queueAcknowledgeAlertsCommand(); } - - doPodCheck(); } else { aapsLogger.debug(LTag.PUMPCOMM, "Skipping Pod status check because command queue is not empty"); } + updatePodWarningNotifications(); + loopHandler.postDelayed(this, STATUS_CHECK_INTERVAL_MILLIS); } }; @@ -444,19 +444,23 @@ public class OmnipodPumpPlugin extends PumpPluginBase implements PumpInterface, }); } - private void doPodCheck() { - if (System.currentTimeMillis() > this.nextPodCheck) { + private void updatePodWarningNotifications() { + if (System.currentTimeMillis() > this.nextPodWarningCheck) { if (!podStateManager.isPodRunning()) { Notification notification = new Notification(Notification.OMNIPOD_POD_NOT_ATTACHED, resourceHelper.gs(R.string.omnipod_error_pod_not_attached), Notification.NORMAL); rxBus.send(new EventNewNotification(notification)); } else { + rxBus.send(new EventDismissNotification(Notification.OMNIPOD_POD_NOT_ATTACHED)); + if (podStateManager.isSuspended()) { Notification notification = new Notification(Notification.OMNIPOD_POD_SUSPENDED, resourceHelper.gs(R.string.omnipod_error_pod_suspended), Notification.NORMAL); rxBus.send(new EventNewNotification(notification)); + } else { + rxBus.send(new EventDismissNotification(Notification.OMNIPOD_POD_SUSPENDED)); } } - this.nextPodCheck = DateTimeUtil.getTimeInFutureFromMinutes(15); + this.nextPodWarningCheck = DateTimeUtil.getTimeInFutureFromMinutes(15); } } From 8034c7411d512c991eb055d72d41a70ce9f926e3 Mon Sep 17 00:00:00 2001 From: Bart Sopers Date: Thu, 7 Jan 2021 03:56:54 +0100 Subject: [PATCH 30/57] Only automatically update Omnipod time for DST and TZ changes --- .../receivers/TimeDateOrTZChangeReceiver.kt | 4 ++-- .../overview/notifications/Notification.java | 1 + .../androidaps/utils/TimeChangeType.java | 4 ++-- .../pump/omnipod/OmnipodPumpPlugin.java | 23 +++++++++++++++---- .../driver/definition/OmnipodConstants.java | 3 +++ .../omnipod/manager/AapsOmnipodManager.java | 5 ++++ .../omnipod/ui/OmnipodOverviewFragment.kt | 2 +- omnipod/src/main/res/values/strings.xml | 1 + 8 files changed, 33 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/receivers/TimeDateOrTZChangeReceiver.kt b/app/src/main/java/info/nightscout/androidaps/receivers/TimeDateOrTZChangeReceiver.kt index de7249b938..bcf3091c86 100644 --- a/app/src/main/java/info/nightscout/androidaps/receivers/TimeDateOrTZChangeReceiver.kt +++ b/app/src/main/java/info/nightscout/androidaps/receivers/TimeDateOrTZChangeReceiver.kt @@ -49,14 +49,14 @@ class TimeDateOrTZChangeReceiver : DaggerBroadcastReceiver() { Intent.ACTION_TIMEZONE_CHANGED == action -> { aapsLogger.info(LTag.PUMP, "TimeDateOrTZChangeReceiver::Timezone changed. Notifying pump driver.") - activePump.timezoneOrDSTChanged(TimeChangeType.TimezoneChange) + activePump.timezoneOrDSTChanged(TimeChangeType.TimezoneChanged) } Intent.ACTION_TIME_CHANGED == action -> { val currentDst = calculateDST() if (currentDst == isDST) { aapsLogger.info(LTag.PUMP, "TimeDateOrTZChangeReceiver::Time changed (manual). Notifying pump driver.") - activePump.timezoneOrDSTChanged(TimeChangeType.ManualTimeChange) + activePump.timezoneOrDSTChanged(TimeChangeType.TimeChanged) } else { if (currentDst) { aapsLogger.info(LTag.PUMP, "TimeDateOrTZChangeReceiver::DST started. Notifying pump driver.") diff --git a/core/src/main/java/info/nightscout/androidaps/plugins/general/overview/notifications/Notification.java b/core/src/main/java/info/nightscout/androidaps/plugins/general/overview/notifications/Notification.java index b35d65e62c..f25ea06380 100644 --- a/core/src/main/java/info/nightscout/androidaps/plugins/general/overview/notifications/Notification.java +++ b/core/src/main/java/info/nightscout/androidaps/plugins/general/overview/notifications/Notification.java @@ -78,6 +78,7 @@ public class Notification { public static final int OMNIPOD_UNCERTAIN_SMB = 67; public static final int OMNIPOD_UNKNOWN_TBR = 68; public static final int OMNIPOD_STARTUP_STATUS_REFRESH_FAILED = 69; + public static final int OMNIPOD_TIME_OUT_OF_SYNC = 70; public static final int IMPORTANCE_HIGH = 2; diff --git a/core/src/main/java/info/nightscout/androidaps/utils/TimeChangeType.java b/core/src/main/java/info/nightscout/androidaps/utils/TimeChangeType.java index 720ecc1a1b..b822b4c849 100644 --- a/core/src/main/java/info/nightscout/androidaps/utils/TimeChangeType.java +++ b/core/src/main/java/info/nightscout/androidaps/utils/TimeChangeType.java @@ -1,8 +1,8 @@ package info.nightscout.androidaps.utils; public enum TimeChangeType { - TimezoneChange, + TimezoneChanged, DST_Started, DST_Ended, - ManualTimeChange + TimeChanged } diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodPumpPlugin.java b/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodPumpPlugin.java index c0c74a01d2..5161648e10 100644 --- a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodPumpPlugin.java +++ b/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/OmnipodPumpPlugin.java @@ -256,7 +256,7 @@ public class OmnipodPumpPlugin extends PumpPluginBase implements PumpInterface, queueAcknowledgeAlertsCommand(); } } else { - aapsLogger.debug(LTag.PUMPCOMM, "Skipping Pod status check because command queue is not empty"); + aapsLogger.debug(LTag.PUMP, "Skipping Pod status check because command queue is not empty"); } updatePodWarningNotifications(); @@ -457,6 +457,13 @@ public class OmnipodPumpPlugin extends PumpPluginBase implements PumpInterface, rxBus.send(new EventNewNotification(notification)); } else { rxBus.send(new EventDismissNotification(Notification.OMNIPOD_POD_SUSPENDED)); + + if (podStateManager.timeDeviatesMoreThan(OmnipodConstants.TIME_DEVIATION_THRESHOLD)) { + Notification notification = new Notification(Notification.OMNIPOD_TIME_OUT_OF_SYNC, resourceHelper.gs(R.string.omnipod_error_time_out_of_sync), Notification.NORMAL); + rxBus.send(new EventNewNotification(notification)); + } else { + rxBus.send(new EventDismissNotification(Notification.OMNIPOD_TIME_OUT_OF_SYNC)); + } } } @@ -955,12 +962,18 @@ public class OmnipodPumpPlugin extends PumpPluginBase implements PumpInterface, @Override public void timezoneOrDSTChanged(TimeChangeType timeChangeType) { - aapsLogger.warn(LTag.PUMP, "Time, Date and/or TimeZone changed. [changeType=" + timeChangeType.name() + ", eventHandlingEnabled=" + aapsOmnipodManager.isTimeChangeEventEnabled() + "]"); + aapsLogger.info(LTag.PUMP, "Time, Date and/or TimeZone changed. [changeType=" + timeChangeType.name() + ", eventHandlingEnabled=" + aapsOmnipodManager.isTimeChangeEventEnabled() + "]"); - if (podStateManager.isPodRunning()) { - aapsLogger.info(LTag.PUMP, "Time, Date and/or TimeZone changed event received and will be consumed by driver."); - hasTimeDateOrTimeZoneChanged = true; + if (timeChangeType == TimeChangeType.TimeChanged) { + aapsLogger.info(LTag.PUMP, "Ignoring time change because it is not a DST or TZ change"); + return; + } else if (!podStateManager.isPodRunning()) { + aapsLogger.info(LTag.PUMP, "Ignoring time change because no Pod is active"); + return; } + + aapsLogger.info(LTag.PUMP, "DST and/or TimeZone changed event will be consumed by driver"); + hasTimeDateOrTimeZoneChanged = true; } @Override diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/OmnipodConstants.java b/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/OmnipodConstants.java index 4b5f224e64..7dac90a207 100644 --- a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/OmnipodConstants.java +++ b/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/definition/OmnipodConstants.java @@ -30,4 +30,7 @@ public class OmnipodConstants { public static final double POD_SETUP_UNITS = POD_PRIME_BOLUS_UNITS + POD_CANNULA_INSERTION_BOLUS_UNITS; public static final int DEFAULT_MAX_RESERVOIR_ALERT_THRESHOLD = 20; + + // when the time deviates more than the threshold, the user will get warned and will get the option to change the time + public static final Duration TIME_DEVIATION_THRESHOLD = Duration.standardMinutes(5); } diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/manager/AapsOmnipodManager.java b/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/manager/AapsOmnipodManager.java index a18408d47b..d22fe40f55 100644 --- a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/manager/AapsOmnipodManager.java +++ b/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/manager/AapsOmnipodManager.java @@ -347,6 +347,7 @@ public class AapsOmnipodManager { dismissNotification(Notification.FAILED_UDPATE_PROFILE); dismissNotification(Notification.OMNIPOD_POD_SUSPENDED); + dismissNotification(Notification.OMNIPOD_TIME_OUT_OF_SYNC); return new PumpEnactResult(injector).success(true).enacted(true); } @@ -584,6 +585,9 @@ public class AapsOmnipodManager { addSuccessToHistory(PodHistoryEntryType.SUSPEND_DELIVERY, null); createSuspendedFakeTbrIfNotExists(); + dismissNotification(Notification.FAILED_UDPATE_PROFILE); + dismissNotification(Notification.OMNIPOD_TIME_OUT_OF_SYNC); + return new PumpEnactResult(injector).success(true).enacted(true); } @@ -619,6 +623,7 @@ public class AapsOmnipodManager { dismissNotification(Notification.FAILED_UDPATE_PROFILE); dismissNotification(Notification.OMNIPOD_POD_SUSPENDED); + dismissNotification(Notification.OMNIPOD_TIME_OUT_OF_SYNC); return new PumpEnactResult(injector).success(true).enacted(true); } diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/OmnipodOverviewFragment.kt b/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/OmnipodOverviewFragment.kt index b58c4dd0bb..6ad44e9ea1 100644 --- a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/OmnipodOverviewFragment.kt +++ b/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/ui/OmnipodOverviewFragment.kt @@ -251,7 +251,7 @@ class OmnipodOverviewFragment : DaggerFragment() { omnipod_overview_firmware_version.text = resourceHelper.gs(R.string.omnipod_firmware_version_value, podStateManager.pmVersion.toString(), podStateManager.piVersion.toString()) omnipod_overview_time_on_pod.text = readableZonedTime(podStateManager.time) - omnipod_overview_time_on_pod.setTextColor(if (podStateManager.timeDeviatesMoreThan(Duration.standardMinutes(5))) { + omnipod_overview_time_on_pod.setTextColor(if (podStateManager.timeDeviatesMoreThan(OmnipodConstants.TIME_DEVIATION_THRESHOLD)) { Color.RED } else { Color.WHITE diff --git a/omnipod/src/main/res/values/strings.xml b/omnipod/src/main/res/values/strings.xml index d6f9bc5874..6a141672ab 100644 --- a/omnipod/src/main/res/values/strings.xml +++ b/omnipod/src/main/res/values/strings.xml @@ -106,6 +106,7 @@ RileyLink address invalid. Operation is not possible.\n\nYou need to configure Omnipod first, before you can use this operation. No active Pod + The time on the Pod is out of sync. Please update the time in the Omnipod tab. An unexpected error occurred. Please report! (%1$s: %2$s). Communication failed: message integrity verification failed Communication failed: received an invalid packet from the Pod From 2524fc705dc32252ef9b19044a4d13d1c533d76d Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Thu, 7 Jan 2021 10:28:27 +0100 Subject: [PATCH 31/57] Update app/src/main/res/values/strings.xml Co-authored-by: Stephen Brown II --- app/src/main/res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 171601fd62..7769580e60 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -520,7 +520,7 @@ statuslights_sbat_critical Threshold critical sensor battery level [%] statuslights_bage_warning - Threshold warning pump battery age [h] + Threshold warning pump battery age [h] statuslights_bage_critical Threshold critical pump battery age [h] statuslights_res_warning From 83324c97a7e50196d042572878bd38cbcdf34805 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Thu, 7 Jan 2021 11:16:41 +0100 Subject: [PATCH 32/57] prevent ArrayIndexOutOfBoundsException --- .../main/java/info/nightscout/androidaps/MainActivity.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/MainActivity.kt b/app/src/main/java/info/nightscout/androidaps/MainActivity.kt index 951638d9ae..c2b7ae6073 100644 --- a/app/src/main/java/info/nightscout/androidaps/MainActivity.kt +++ b/app/src/main/java/info/nightscout/androidaps/MainActivity.kt @@ -275,8 +275,10 @@ class MainActivity : NoSplashAppCompatActivity() { } private fun setPluginPreferenceMenuName() { - val plugin = (main_pager.adapter as TabPageAdapter).getPluginAt(main_pager.currentItem) - this.menu?.findItem(R.id.nav_plugin_preferences)?.title = resourceHelper.gs(R.string.nav_preferences_plugin, plugin.name) + if (main_pager.currentItem > 0) { + val plugin = (main_pager.adapter as TabPageAdapter).getPluginAt(main_pager.currentItem) + this.menu?.findItem(R.id.nav_plugin_preferences)?.title = resourceHelper.gs(R.string.nav_preferences_plugin, plugin.name) + } } override fun onCreateOptionsMenu(menu: Menu): Boolean { From 5c0545cd9991fe425b86c15f6055795b7e399da0 Mon Sep 17 00:00:00 2001 From: Bart Sopers Date: Thu, 7 Jan 2021 23:38:00 +0100 Subject: [PATCH 33/57] Add setting for showing RL battery level for Medtronic and add setting for enabling battery change logging for Omnipod --- .../plugins/general/actions/ActionsFragment.kt | 3 ++- medtronic/src/main/res/values/strings.xml | 1 - medtronic/src/main/res/xml/pref_medtronic.xml | 6 ++++++ .../pump/omnipod/OmnipodPumpPlugin.java | 11 ++++++++--- .../omnipod/definition/OmnipodStorageKeys.java | 3 ++- .../omnipod/manager/AapsOmnipodManager.java | 14 ++++++++++---- omnipod/src/main/res/values/strings.xml | 5 ++--- omnipod/src/main/res/xml/pref_omnipod.xml | 18 ++++++++++++------ .../dialog/RileyLinkStatusGeneralFragment.java | 13 +++++++++++-- .../res/layout/rileylink_status_general.xml | 4 +++- rileylink/src/main/res/values/strings.xml | 5 +++++ 11 files changed, 61 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/ActionsFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/ActionsFragment.kt index 67b80ed0b4..9d90abe3fc 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/ActionsFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/ActionsFragment.kt @@ -25,6 +25,7 @@ import info.nightscout.androidaps.logging.AAPSLogger import info.nightscout.androidaps.plugins.bus.RxBusWrapper import info.nightscout.androidaps.plugins.general.actions.defs.CustomAction import info.nightscout.androidaps.plugins.general.overview.StatusLightHandler +import info.nightscout.androidaps.plugins.pump.omnipod.OmnipodPumpPlugin import info.nightscout.androidaps.queue.Callback import info.nightscout.androidaps.skins.SkinProvider import info.nightscout.androidaps.utils.FabricPrivacy @@ -254,7 +255,7 @@ class ActionsFragment : DaggerFragment() { val activeBgSource = activePlugin.activeBgSource actions_historybrowser.visibility = (profile != null).toVisibility() actions_fill?.visibility = (pump.pumpDescription.isRefillingCapable && pump.isInitialized && !pump.isSuspended).toVisibility() - actions_pumpbatterychange?.visibility = pump.pumpDescription.isBatteryReplaceable.toVisibility() + actions_pumpbatterychange?.visibility = (pump.pumpDescription.isBatteryReplaceable || (pump is OmnipodPumpPlugin && pump.isUseRileyLinkBatteryLevel && pump.isBatteryChangeLoggingEnabled)).toVisibility() actions_temptarget?.visibility = (profile != null && config.APS).toVisibility() actions_tddstats?.visibility = pump.pumpDescription.supportsTDDs.toVisibility() diff --git a/medtronic/src/main/res/values/strings.xml b/medtronic/src/main/res/values/strings.xml index 065bc6c735..12c1900a27 100644 --- a/medtronic/src/main/res/values/strings.xml +++ b/medtronic/src/main/res/values/strings.xml @@ -15,7 +15,6 @@ pref_medtronic_encoding pref_medtronic_battery_type pref_medtronic_bolus_debug - pref_rileylink_mac_address medtronic_pump_frequency_us_ca medtronic_pump_frequency_worldwide medtronic_pump_encoding_4b6b_local diff --git a/medtronic/src/main/res/xml/pref_medtronic.xml b/medtronic/src/main/res/xml/pref_medtronic.xml index 78e20e8ef8..5006bf32b9 100644 --- a/medtronic/src/main/res/xml/pref_medtronic.xml +++ b/medtronic/src/main/res/xml/pref_medtronic.xml @@ -98,6 +98,12 @@ + + AAPS.Omnipod.suspend_delivery_button_enabled AAPS.Omnipod.pulse_log_button_enabled AAPS.Omnipod.rileylink_stats_button_enabled - AAPS.Omnipod.use_riley_link_battery_level + AAPS.Omnipod.enable_battery_change_logging AAPS.Omnipod.time_change_enabled AAPS.Omnipod.expiration_reminder_enabled AAPS.Omnipod.expiration_reminder_hours_before_shutdown @@ -45,8 +45,7 @@ Show Suspend Delivery button in Omnipod tab Show Pulse Log button in Pod Management menu Show RileyLink Stats button in Pod Management menu - Use battery level reported by OrangeLink/EmaLink - DOES NOT work with the original RileyLink. May not work with other RileyLink alternatives. + Enable battery change logging in Actions DST/Time zone detection enabled Expiration reminder enabled Hours before shutdown diff --git a/omnipod/src/main/res/xml/pref_omnipod.xml b/omnipod/src/main/res/xml/pref_omnipod.xml index 853d5eda9e..a56ea0ce0b 100644 --- a/omnipod/src/main/res/xml/pref_omnipod.xml +++ b/omnipod/src/main/res/xml/pref_omnipod.xml @@ -11,6 +11,18 @@ + + + + @@ -114,12 +126,6 @@ android:key="@string/key_omnipod_riley_link_stats_button_enabled" android:title="@string/omnipod_config_rileylink_stats_button_enabled" /> - - + android:orientation="horizontal" + android:visibility="gone"> medtronic_pump_encoding_4b6b_rileylink pref_rileylink_mac_address pref_rileylink_name + pref_riley_link_show_reported_battery_level pref_medtronic_encoding @@ -75,6 +76,10 @@ Yes No + + Show battery level reported by OrangeLink/EmaLink + DOES NOT work with the original RileyLink. May not work with other RileyLink alternatives. + %1$d day %1$d days From 819a3b7d43dce2897676f857e0fd76b68ba467b5 Mon Sep 17 00:00:00 2001 From: AdrianLxM Date: Fri, 8 Jan 2021 01:15:48 +0100 Subject: [PATCH 34/57] downgrade gradle and fix mixed localisation comparison --- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- .../androidaps/interaction/menus/MainMenuActivity.java | 4 ++-- wear/src/main/res/values/strings.xml | 1 + 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index a3bf3788cd..87f1d32bd3 100644 --- a/build.gradle +++ b/build.gradle @@ -37,7 +37,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:4.1.1' + classpath 'com.android.tools.build:gradle:4.0.1' classpath 'com.google.gms:google-services:4.3.4' classpath 'com.google.firebase:firebase-crashlytics-gradle:2.4.1' diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e53b7051f9..9a5b8e899d 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip diff --git a/wear/src/main/java/info/nightscout/androidaps/interaction/menus/MainMenuActivity.java b/wear/src/main/java/info/nightscout/androidaps/interaction/menus/MainMenuActivity.java index 50ee1ad8ee..d7029fafbf 100644 --- a/wear/src/main/java/info/nightscout/androidaps/interaction/menus/MainMenuActivity.java +++ b/wear/src/main/java/info/nightscout/androidaps/interaction/menus/MainMenuActivity.java @@ -39,8 +39,8 @@ public class MainMenuActivity extends MenuListActivity { if(!sharedPreferences.getBoolean("wearcontrol", false)){ return new String[] { - "Settings", - "Re-Sync"}; + aaps.gs(R.string.menu_settings), + aaps.gs(R.string.menu_resync)}; } diff --git a/wear/src/main/res/values/strings.xml b/wear/src/main/res/values/strings.xml index 4685ce2a08..3f455b036b 100644 --- a/wear/src/main/res/values/strings.xml +++ b/wear/src/main/res/values/strings.xml @@ -77,6 +77,7 @@ eCarb Settings Status + Re-Sync Prime/Fill None Default From 8f52bde0007ea0a27af874fc475c0fd12fcd78ab Mon Sep 17 00:00:00 2001 From: Bart Sopers Date: Fri, 8 Jan 2021 11:03:29 +0100 Subject: [PATCH 35/57] Fix display of device model in RileyLink status fragment --- .../src/main/res/layout/rileylink_status_general.xml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/rileylink/src/main/res/layout/rileylink_status_general.xml b/rileylink/src/main/res/layout/rileylink_status_general.xml index 42f05bf176..ca60ec1ced 100644 --- a/rileylink/src/main/res/layout/rileylink_status_general.xml +++ b/rileylink/src/main/res/layout/rileylink_status_general.xml @@ -240,7 +240,8 @@ android:id="@+id/rls_t1_connected_device_details" android:layout_width="match_parent" android:layout_height="wrap_content" - android:orientation="vertical"> + android:orientation="vertical" + android:visibility="gone"> + android:orientation="horizontal"> + android:orientation="horizontal"> Date: Fri, 8 Jan 2021 14:20:18 +0100 Subject: [PATCH 36/57] add warning to ns_upload_only --- app/src/main/res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7769580e60..013840fe77 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -332,7 +332,7 @@ Corr Actions NS upload only (disabled sync) - NS upload only. Not effective on SGV unless a local source like xDrip is selected. Not effective on Profiles while NS-Profiles is used. + NS upload only. Not effective on SGV unless a local source like xDrip is selected. Not effective on Profiles while NS-Profiles is used.\n!!! WARNING !!! Disabling this option may cause malfunctions and insulin overdose if any of your component (AAPS, NS, xDrip) is wrong configured. Carefully watch if data displayed by AAPS match the pump state! Pump not initialized! Prime/Fill Please make sure the amount matches the specification of your infusion set! From d5d91ba374a43533f7f52dd37396b00b668cd8c8 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Fri, 8 Jan 2021 17:08:39 +0100 Subject: [PATCH 37/57] add comment --- app/src/main/assets/revoked_certs.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/assets/revoked_certs.txt b/app/src/main/assets/revoked_certs.txt index e0d12d2a46..103792a183 100644 --- a/app/src/main/assets/revoked_certs.txt +++ b/app/src/main/assets/revoked_certs.txt @@ -2,5 +2,6 @@ 51:6D:12:67:4C:27:F4:9B:9F:E5:42:9B:01:B3:98:E4:66:2B:85:B7:A8:DD:70:32:B7:6A:D7:97:9A:0D:97:10 #Leaked 55:5D:70:C9:BE:10:41:7E:4B:01:A9:C4:C6:44:4A:F8:69:71:35:25:ED:95:23:16:C7:15:E8:EB:C6:08:FC:B1 +# àqΣnΖ`ZϼγwÛ/τàΒϳ9Φ'$ΑϵžλUΛ`ÆÌΣЃA E0:71:A3:6E:96:60:5A:FC:B3:77:DB:2F:C4:E0:92:F3:39:A6:27:24:91:F5:7E:BB:55:9B:60:C6:CC:A3:03:41 32:99:61:C4:A0:92:E8:D2:C7:65:04:74:04:17:7E:2D:2A:16:2A:5A:63:48:69:6A:0A:C4:53:3C:7C:78:22:95 From 2b52dbda808bf06ab356bddc9922c0b6ed21611b Mon Sep 17 00:00:00 2001 From: xJoe Date: Fri, 8 Jan 2021 18:21:36 +0100 Subject: [PATCH 38/57] Correction xDrip -> xDrip+ --- app/src/main/res/values/strings.xml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 013840fe77..b847117b55 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -67,7 +67,7 @@ Receive BG values from Glimp. Receive BG values from the 600SeriesAndroidUploader. Downloads BG data from Nightscout - Receive BG values from xDrip. + Receive BG values from xDrip+. Saves all treatments that were made Monitor and control AndroidAPS using your WearOS watch. Show information about your loop on your xDrip+ watchface. @@ -149,7 +149,7 @@ Change your input! BG Source Where should AndroidAPS gain it\'s data from? - xDrip + xDrip+ APS Mode Closed Loop @@ -332,7 +332,7 @@ Corr Actions NS upload only (disabled sync) - NS upload only. Not effective on SGV unless a local source like xDrip is selected. Not effective on Profiles while NS-Profiles is used.\n!!! WARNING !!! Disabling this option may cause malfunctions and insulin overdose if any of your component (AAPS, NS, xDrip) is wrong configured. Carefully watch if data displayed by AAPS match the pump state! + NS upload only. Not effective on SGV unless a local source like xDrip+ is selected. Not effective on Profiles while NS-Profiles is used.\n!!! WARNING !!! Disabling this option may cause malfunctions and insulin overdose if any of your component (AAPS, NS, xDrip+) is wrong configured. Carefully watch if data displayed by AAPS match the pump state! Pump not initialized! Prime/Fill Please make sure the amount matches the specification of your infusion set! @@ -387,7 +387,7 @@ SMS Shorten tab titles Always use short average delta instead of simple delta - Useful when data from unfiltered sources like xDrip gets noisy. + Useful when data from unfiltered sources like xDrip+ gets noisy. Profile Default value: 3 This is a key OpenAPS safety cap. What this does is limit your basals to be 3x (in this people) your biggest basal rate. You likely will not need to change this, but you should be aware that’s what is discussed about “3x max daily; 4x current” for safety caps. Default value: 4 This is the other half of the key OpenAPS safety caps, and the other half of “3x max daily; 4x current” of the safety caps. This means your basal, regardless of max basal set on your pump, cannot be any higher than this number times the current level of your basal. This is to prevent people from getting into dangerous territory by setting excessively high max basals before understanding how the algorithm works. Again, the default is 4x; most people will never need to adjust this and are instead more likely to need to adjust other settings if they feel like they are “running into” this safety cap. @@ -407,9 +407,9 @@ Invalid SMS phone number Calibration xDrip+ not installed - Calibration sent to xDrip - Calibration sent. Receiving must be enabled in xDrip. - xDrip is not receiving calibrations + Calibration sent to xDrip+ + Calibration sent. Receiving must be enabled in xDrip+. + xDrip+ is not receiving calibrations Pump suspended Executing Virtual pump settings @@ -542,8 +542,8 @@ About Missing SMS permission Missing phone state permission - xDrip Status (watch) - xDrip Statusline (watch) + xDrip+ Status (watch) + xDrip+ Statusline (watch) xds Show BGI Add BGI to status line @@ -598,7 +598,7 @@ Values not stored! Accu-Chek Combo COMBO - Enable broadcasts to other apps (like xDrip). Do not enable if you have more than one instance of AAPS or NSClient installed! + Enable broadcasts to other apps (like xDrip+). Do not enable if you have more than one instance of AAPS or NSClient installed! Enable local Broadcasts. Duration [min] OpenAPS SMB From 48084ff7bf3122f612db78a8b8f47f8e1b51e0eb Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Fri, 8 Jan 2021 18:55:01 +0100 Subject: [PATCH 39/57] add keys to crash report --- app/build.gradle | 1 + .../main/java/info/nightscout/androidaps/MainActivity.kt | 8 ++++++++ app/src/main/res/values/strings.xml | 1 + 3 files changed, 10 insertions(+) diff --git a/app/build.gradle b/app/build.gradle index 325e1849a1..96db0a7be8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -125,6 +125,7 @@ android { buildConfigField "String", "BUILDVERSION", '"' + generateGitBuild() + '-' + generateDate() + '"' buildConfigField "String", "REMOTE", '"' + generateGitRemote() + '"' buildConfigField "String", "HEAD", '"' + generateGitBuild() + '"' + buildConfigField "String", "COMMITED", '"' + allCommited() + '"' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" // if you change minSdkVersion to less than 11, you need to change executeTask for wear diff --git a/app/src/main/java/info/nightscout/androidaps/MainActivity.kt b/app/src/main/java/info/nightscout/androidaps/MainActivity.kt index c2b7ae6073..b07111ed3b 100644 --- a/app/src/main/java/info/nightscout/androidaps/MainActivity.kt +++ b/app/src/main/java/info/nightscout/androidaps/MainActivity.kt @@ -25,6 +25,7 @@ import androidx.appcompat.widget.Toolbar import androidx.core.app.ActivityCompat import androidx.viewpager2.widget.ViewPager2 import com.google.android.material.tabs.TabLayoutMediator +import com.google.firebase.crashlytics.FirebaseCrashlytics import com.joanzapata.iconify.Iconify import com.joanzapata.iconify.fonts.FontAwesomeModule import dev.doubledot.doki.ui.DokiActivity @@ -318,6 +319,7 @@ class MainActivity : NoSplashAppCompatActivity() { message += "Flavor: ${BuildConfig.FLAVOR}${BuildConfig.BUILD_TYPE}\n" message += "${resourceHelper.gs(R.string.configbuilder_nightscoutversion_label)} ${nsSettingsStatus.nightscoutVersionName}" if (buildHelper.isEngineeringMode()) message += "\n${resourceHelper.gs(R.string.engineering_mode_enabled)}" + if (!fabricPrivacy.fabricEnabled()) message += "\n${resourceHelper.gs(R.string.fabric_upload_disabled)}" message += resourceHelper.gs(R.string.about_link_urls) val messageSpanned = SpannableString(message) Linkify.addLinks(messageSpanned, Linkify.WEB_URLS) @@ -398,6 +400,12 @@ class MainActivity : NoSplashAppCompatActivity() { fabricPrivacy.firebaseAnalytics.setUserProperty("Profile", activePlugin.activeProfileInterface.javaClass.simpleName) activePlugin.activeSensitivity.let { fabricPrivacy.firebaseAnalytics.setUserProperty("Sensitivity", it::class.java.simpleName) } activePlugin.activeInsulin.let { fabricPrivacy.firebaseAnalytics.setUserProperty("Insulin", it::class.java.simpleName) } + // Add to crash log too + FirebaseCrashlytics.getInstance().setCustomKey("HEAD", BuildConfig.HEAD) + FirebaseCrashlytics.getInstance().setCustomKey("Version", BuildConfig.VERSION) + FirebaseCrashlytics.getInstance().setCustomKey("Remote", remote) + FirebaseCrashlytics.getInstance().setCustomKey("Commited", BuildConfig.COMMITED) + FirebaseCrashlytics.getInstance().setCustomKey("Hash", hashes[0]) } } \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 013840fe77..fb96173fbe 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1428,5 +1428,6 @@ Use reminder to start eating later instead of wizard result during high glycemia ("pre-bolus") Time to eat!\nRun Bolus wizard and do calculation again. Time to eat + Crash logs upload disabled! From ddb6e1c007430c7af078a0e9423f5fec2dd8ab38 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Fri, 8 Jan 2021 21:27:18 +0100 Subject: [PATCH 40/57] New Crowdin updates (#200) * New translations strings.xml (Romanian) * New translations strings.xml (Hebrew) * New translations strings.xml (Romanian) * New translations strings.xml (Czech) * New translations strings.xml (Czech) * New translations strings.xml (German) * New translations strings.xml (German) * New translations strings.xml (Greek) * New translations strings.xml (Irish) * New translations strings.xml (Italian) * New translations strings.xml (Dutch) * New translations strings.xml (Korean) * New translations strings.xml (Lithuanian) * New translations strings.xml (Dutch) * New translations strings.xml (Norwegian) * New translations strings.xml (Polish) * New translations strings.xml (Polish) * New translations strings.xml (Swedish) * New translations strings.xml (Swedish) * New translations strings.xml (Danish) * New translations strings.xml (Swedish) * New translations strings.xml (Romanian) * New translations strings.xml (Bulgarian) * New translations strings.xml (Italian) * New translations strings.xml (Czech) * New translations strings.xml (Hebrew) * New translations strings.xml (Polish) * New translations strings.xml (Hebrew) * New translations strings.xml (French) * New translations strings.xml (Spanish) * New translations strings.xml (Afrikaans) * New translations strings.xml (German) * New translations strings.xml (Greek) * New translations strings.xml (Korean) * New translations strings.xml (Lithuanian) * New translations strings.xml (Dutch) * New translations strings.xml (Norwegian) * New translations strings.xml (Portuguese) * New translations strings.xml (Russian) * New translations strings.xml (Slovak) * New translations strings.xml (Swedish) * New translations strings.xml (Turkish) * New translations strings.xml (Chinese Simplified) * New translations strings.xml (Portuguese, Brazilian) * New translations strings.xml (Danish) * New translations strings.xml (Italian) * New translations strings.xml (Norwegian) * New translations strings.xml (Norwegian) * New translations strings.xml (Italian) * New translations strings.xml (Norwegian) * New translations strings.xml (Italian) * New translations strings.xml (Italian) * New translations strings.xml (Catalan) * New translations insight_alert_codes.xml (Catalan) * New translations insight_alert_descriptions.xml (Catalan) * New translations insight_alert_titles.xml (Catalan) * New translations insight_exceptions.xml (Catalan) * New translations exam.xml (Catalan) * New translations objectives.xml (Catalan) * New translations strings.xml (Catalan) * New translations strings.xml (Catalan) * New translations strings.xml (Catalan) * New translations strings.xml (Catalan) * New translations strings.xml (Catalan) * New translations strings.xml (Catalan) * New translations strings.xml (Italian) * New translations strings.xml (German) * New translations strings.xml (Czech) * New translations strings.xml (German) * New translations strings.xml (Dutch) * New translations strings.xml (Hebrew) * New translations strings.xml (French) * New translations strings.xml (French) * New translations strings.xml (French) * New translations strings.xml (French) --- app/src/main/res/values-af-rZA/strings.xml | 1 - app/src/main/res/values-bg-rBG/strings.xml | 9 ++-- app/src/main/res/values-ca-rES/exam.xml | 2 + .../res/values-ca-rES/insight_alert_codes.xml | 2 + .../insight_alert_descriptions.xml | 2 + .../values-ca-rES/insight_alert_titles.xml | 2 + .../res/values-ca-rES/insight_exceptions.xml | 2 + app/src/main/res/values-ca-rES/objectives.xml | 2 + app/src/main/res/values-ca-rES/strings.xml | 8 +++ app/src/main/res/values-cs-rCZ/strings.xml | 13 ++--- app/src/main/res/values-da-rDK/strings.xml | 8 +++ app/src/main/res/values-de-rDE/strings.xml | 25 +++++----- app/src/main/res/values-el-rGR/strings.xml | 3 -- app/src/main/res/values-es-rES/strings.xml | 6 --- app/src/main/res/values-fr-rFR/strings.xml | 21 ++++---- app/src/main/res/values-it-rIT/strings.xml | 12 ++--- app/src/main/res/values-iw-rIL/strings.xml | 48 +++++++++--------- app/src/main/res/values-ko-rKR/strings.xml | 3 -- app/src/main/res/values-lt-rLT/strings.xml | 7 +-- app/src/main/res/values-nl-rNL/strings.xml | 13 ++--- app/src/main/res/values-no-rNO/strings.xml | 12 ++--- app/src/main/res/values-pl-rPL/strings.xml | 13 ++--- app/src/main/res/values-pt-rBR/strings.xml | 3 -- app/src/main/res/values-pt-rPT/strings.xml | 5 -- app/src/main/res/values-ro-rRO/strings.xml | 10 +--- app/src/main/res/values-ru-rRU/strings.xml | 5 -- app/src/main/res/values-sk-rSK/strings.xml | 6 --- app/src/main/res/values-sv-rSE/strings.xml | 7 ++- app/src/main/res/values-tr-rTR/strings.xml | 1 - app/src/main/res/values-zh-rCN/strings.xml | 1 - core/src/main/res/values-ca-rES/strings.xml | 46 +++++++++++++++++ dana/src/main/res/values-ca-rES/strings.xml | 2 + .../src/main/res/values-ca-rES/strings.xml | 17 +++++++ .../src/main/res/values-ca-rES/strings.xml | 20 ++++++++ .../src/main/res/values-cs-rCZ/strings.xml | 4 +- .../src/main/res/values-da-rDK/strings.xml | 20 ++++++++ .../src/main/res/values-de-rDE/strings.xml | 4 +- .../src/main/res/values-fr-rFR/strings.xml | 50 +++++++++---------- .../src/main/res/values-it-rIT/strings.xml | 4 +- .../src/main/res/values-iw-rIL/strings.xml | 10 ++-- .../src/main/res/values-nl-rNL/strings.xml | 6 +-- .../src/main/res/values-no-rNO/strings.xml | 4 +- .../src/main/res/values-pl-rPL/strings.xml | 2 - .../src/main/res/values-ro-rRO/strings.xml | 2 - .../src/main/res/values-sv-rSE/strings.xml | 4 +- .../src/main/res/values-ca-rES/strings.xml | 10 ++++ .../src/main/res/values-cs-rCZ/strings.xml | 17 +++++-- .../src/main/res/values-de-rDE/strings.xml | 17 +++++-- .../src/main/res/values-el-rGR/strings.xml | 2 +- .../src/main/res/values-fr-rFR/strings.xml | 17 +++++-- .../src/main/res/values-ga-rIE/strings.xml | 1 + .../src/main/res/values-it-rIT/strings.xml | 17 +++++-- .../src/main/res/values-iw-rIL/strings.xml | 17 +++++-- .../src/main/res/values-ko-rKR/strings.xml | 2 +- .../src/main/res/values-lt-rLT/strings.xml | 6 +-- .../src/main/res/values-nl-rNL/strings.xml | 17 +++++-- .../src/main/res/values-no-rNO/strings.xml | 17 +++++-- .../src/main/res/values-pl-rPL/strings.xml | 6 +-- .../src/main/res/values-ro-rRO/strings.xml | 6 +-- .../src/main/res/values-sv-rSE/strings.xml | 17 +++++-- wear/src/main/res/values-ca-rES/strings.xml | 2 + wear/src/main/res/values-fr-rFR/strings.xml | 1 + wear/src/main/res/values-it-rIT/strings.xml | 1 + wear/src/main/res/values-sv-rSE/strings.xml | 1 + 64 files changed, 381 insertions(+), 240 deletions(-) create mode 100644 app/src/main/res/values-ca-rES/exam.xml create mode 100644 app/src/main/res/values-ca-rES/insight_alert_codes.xml create mode 100644 app/src/main/res/values-ca-rES/insight_alert_descriptions.xml create mode 100644 app/src/main/res/values-ca-rES/insight_alert_titles.xml create mode 100644 app/src/main/res/values-ca-rES/insight_exceptions.xml create mode 100644 app/src/main/res/values-ca-rES/objectives.xml create mode 100644 app/src/main/res/values-ca-rES/strings.xml create mode 100644 app/src/main/res/values-da-rDK/strings.xml create mode 100644 core/src/main/res/values-ca-rES/strings.xml create mode 100644 dana/src/main/res/values-ca-rES/strings.xml create mode 100644 medtronic/src/main/res/values-ca-rES/strings.xml create mode 100644 omnipod/src/main/res/values-ca-rES/strings.xml create mode 100644 omnipod/src/main/res/values-da-rDK/strings.xml create mode 100644 rileylink/src/main/res/values-ca-rES/strings.xml create mode 100644 wear/src/main/res/values-ca-rES/strings.xml diff --git a/app/src/main/res/values-af-rZA/strings.xml b/app/src/main/res/values-af-rZA/strings.xml index 12820ebacd..06376e7610 100644 --- a/app/src/main/res/values-af-rZA/strings.xml +++ b/app/src/main/res/values-af-rZA/strings.xml @@ -198,7 +198,6 @@ Corr Aksies NS laai net op (opgeskorte sinkro) - NS oplaai net. Nie effektief op SGV tensy \'n plaaslike bron soos xDrip gekies is. Nie effektief op profiele terwyl NS-profiele gebruik word. Pomp nie geïnisialiseer nie! Prima/vul Maak asseblief seker dat die hoeveelheid ooreenstem met die spesifikasies van jou infusie stel! diff --git a/app/src/main/res/values-bg-rBG/strings.xml b/app/src/main/res/values-bg-rBG/strings.xml index 708ba57d9c..95179f9403 100644 --- a/app/src/main/res/values-bg-rBG/strings.xml +++ b/app/src/main/res/values-bg-rBG/strings.xml @@ -286,7 +286,6 @@ Корекция Действия Само качва данни в NS (изключва синхронизацията) - Само качване на данните в NS. Няма ефект върху данните за КЗ ако локален източник като xDrip е избран. Няма ефект върху профила освен ако не е избран NS-профил. Помпата не е инициализирана! Пълнене на сет Моля, уверете се, че стойността съответсва на вашият сет! Този инсулин не се включва в IOB! @@ -443,11 +442,11 @@ Праг за критична възраст на сензор [часа] Аларма при заряд на батерия под [%] Критично ниво на сензорната батерия под [%] - Аларма при възраст на батерия над [часа] - Праг за критична възраст на батерията над [часа] + Висока възраст на батерия над [часа] + Критична възраст на батерията над [часа] Ниво за аларма за останал инсулин в резервоара [Е] Предупреждение за критично ниво на останал инсулин в резервоар [Е] - Аларма при заряд на батерия под [%] + Нисък заряд на батерия под [%] Критично ниво на батерията под [%] Предв IOB @@ -1193,7 +1192,7 @@ Съветник на болус Имаш висока захар. Вместо да се яде сега, се препоръчва да се изчака за по-добра захар. Искате ли да направите корекция сега и да ви напомня кога е време за ядене? В този случай няма да бъдат записвани въглехидрати и трябва да използвате съветника отново, когато ви напомня. Активиране на болус съветник - Използвайте напомняне за да начало на хранене вместо съветника по време на висока гликемия + Използвай напомняне за старт на хранене вместо съветника по време на висока гликемия (\"пре-болус\") Време за ядене!\nИзпълнете болус съветника и направете изчисления отново. Време е за ядене diff --git a/app/src/main/res/values-ca-rES/exam.xml b/app/src/main/res/values-ca-rES/exam.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/app/src/main/res/values-ca-rES/exam.xml @@ -0,0 +1,2 @@ + + diff --git a/app/src/main/res/values-ca-rES/insight_alert_codes.xml b/app/src/main/res/values-ca-rES/insight_alert_codes.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/app/src/main/res/values-ca-rES/insight_alert_codes.xml @@ -0,0 +1,2 @@ + + diff --git a/app/src/main/res/values-ca-rES/insight_alert_descriptions.xml b/app/src/main/res/values-ca-rES/insight_alert_descriptions.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/app/src/main/res/values-ca-rES/insight_alert_descriptions.xml @@ -0,0 +1,2 @@ + + diff --git a/app/src/main/res/values-ca-rES/insight_alert_titles.xml b/app/src/main/res/values-ca-rES/insight_alert_titles.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/app/src/main/res/values-ca-rES/insight_alert_titles.xml @@ -0,0 +1,2 @@ + + diff --git a/app/src/main/res/values-ca-rES/insight_exceptions.xml b/app/src/main/res/values-ca-rES/insight_exceptions.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/app/src/main/res/values-ca-rES/insight_exceptions.xml @@ -0,0 +1,2 @@ + + diff --git a/app/src/main/res/values-ca-rES/objectives.xml b/app/src/main/res/values-ca-rES/objectives.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/app/src/main/res/values-ca-rES/objectives.xml @@ -0,0 +1,2 @@ + + diff --git a/app/src/main/res/values-ca-rES/strings.xml b/app/src/main/res/values-ca-rES/strings.xml new file mode 100644 index 0000000000..1ce4989b86 --- /dev/null +++ b/app/src/main/res/values-ca-rES/strings.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/app/src/main/res/values-cs-rCZ/strings.xml b/app/src/main/res/values-cs-rCZ/strings.xml index 99af78f111..1fa0c3ed63 100644 --- a/app/src/main/res/values-cs-rCZ/strings.xml +++ b/app/src/main/res/values-cs-rCZ/strings.xml @@ -286,7 +286,7 @@ Korekce Akce Pouze nahrávání do NS (zakázaná synchronizace) - Pouze nahrávání dat do NS. Neplatí pro glykémie, dokud není vybraný místní zdroj dat jako xDrip. Neplatí pro profily, pokud se používá NS profil. + Pouze nahrávání do NS. Neplatí pro glykémie, pokud je NS vybrán jako zdroj glykémií. Neplatí pro profily, pokud je vybraný NS Profil.\n!!! VAROVÁNÍ!!! Vypnutí této možnosti může způsobit chybné chování a předávkování inzulínem, pokud je některá z vašich komponent (AAPS, NS, xDrip) špatně nastavena. Pečlivě sledujte, jestli data zobrazená AAPS odpovídají stavu pumpy! Pumpa není inicializována! Plnění/doplňování Prosím ujistěte se, že hodnota odpovídá specifikaci Vašeho setu! @@ -443,12 +443,12 @@ Úroveň kritického stáří senzoru [h] Úroveň varování stavu baterie senzoru [%] Úroveň kritického varování stavu baterie senzoru [%] - Úroveň varování stáří baterie [h] - Úroveň kritického varování stáří baterie [h] + Úroveň varování stáří baterie pumpy [h] + Úroveň kritického varování stáří baterie pumpy [h] Úroveň varování stavu zásobníku [U] Úroveň kritického varování stavu zásobníku [U] - Úroveň varování stavu baterie [%] - Úroveň kritického varování stavu baterie [%] + Úroveň varování stavu baterie pumpy [%] + Úroveň kritického varování stavu baterie pumpy [%] PRED IOB COB @@ -1193,7 +1193,8 @@ Poradce pro bolus Máte vysokou glykémii. Namísto jídla doporučujeme vyčkat na lepší glykémii a připomenout, až bude čas na jídlo. Přejete si poslat korekční bolus a připomenout, až bude čas k jídlu? V tomto případě nebudou zapsané žádné sacharidy, a později opět musíte spustit kalkulátor, jakmile vám to připomeneme. Povolit poradce s bolusem - Během vysoké glykémie spusťte připomenutí namísto průvodce + Použij připomenutí, abys začal jíst později, namísto výsledku z kalkulátoru během vysoké glykémie (\"pre-bolus\") Čas k jídlu!\nSpusťte Bolusovou kalkulačku a proveďte výpočet znovu. Čas k jídlu + Nahrávání protokolů o pádech zakázáno! diff --git a/app/src/main/res/values-da-rDK/strings.xml b/app/src/main/res/values-da-rDK/strings.xml new file mode 100644 index 0000000000..1ce4989b86 --- /dev/null +++ b/app/src/main/res/values-da-rDK/strings.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml index c69e8f243e..c2cf3ec97b 100644 --- a/app/src/main/res/values-de-rDE/strings.xml +++ b/app/src/main/res/values-de-rDE/strings.xml @@ -286,7 +286,7 @@ Korr Aktionen Zu Nightscout nur hochladen (keine Synchronisation) - Zu Nightscout nur hochladen. Nicht wirksam bei BZ-Werten, wenn nicht eine lokale Quelle wie z. B. xDrip gewählt wird; nicht wirksam bei Profilen, wenn Nightscout-Profile verwendet werden. + Zu Nightscout nur hochladen (keine Synchronisation). Gilt nicht für CGM-Werte falls nicht eine lokale Quelle wie xDrip+ ausgewählt wurde. Gilt ebenfalls nicht für Profildaten, wenn ein NS-Profil genutzt wird. \n!!! WARNUNG !!! Deaktivieren dieser Option kann zu Fehlfunktionen und Insulin-Überdosierung führen, wenn eine der Komponenten (AAPS, NS, xDrip+) falsch konfiguriert ist. Achte sorgfältig darauf, ob die in AAPS angezeigten Daten mit denen der Pumpe übereinstimmen! Pumpe nicht initialisiert! Katheterwechsel Bitte vergewissere Dich, dass die Füllmenge den Eigenschaften des Katheters entspricht! @@ -432,8 +432,8 @@ NovoRapid, NovoLog, Humalog Fiasp INS - Aktiviere Superbolus im Wizard - Aktiviere die SuperBolus-Funktion im Wizard. Nicht aktivieren, wenn Du nicht weißt, welche Auswirkungen dieser Bolus hat! ES KANN ZU EINER ÜBERDOSIERUNG AN INSULIN KOMMEN! + Aktiviere Superbolus im Bolus-Rechner + Aktiviere die SuperBolus-Funktion im Bolus-Rechner. Nicht aktivieren, wenn Du nicht weißt, welche Auswirkungen dieser Bolus hat! ES KANN ZU EINER ÜBERDOSIERUNG AN INSULIN KOMMEN! Statusanzeige auf Homescreen Warnschwelle Kanülenalter [h] Warnschwelle kritisches Kanülenalter [h] @@ -441,14 +441,14 @@ Warnschwelle kritisches Insulinalter [h] Warnschwelle Sensoralter [h] Warnschwelle kritisches Sensoralter [h] - Warnschwelle Sensor-Batteriestand [%] - Warnschwelle kritischer Sensor-Batteriestand [%] - Warnschwelle Batteriealter [h] - Warnschwelle kritisches Batteriealter [h] + Warnschwelle Sensor-Akkustand [%] + Warnschwelle kritischer Sensor-Akkustand [%] + Warnschwelle Pumpenbatterie-Alter [h] + Warnschwelle kritisches Pumpenbatterie-Alter [h] Warnschwelle Reservoirstand [IE] Warnschwelle kritischer Reservoirstand [IE] - Warnschwelle Batteriestand [%] - Warnschwelle kritischer Batteriestand [%] + Warnschwelle Pumpenbatterie-Stand [%] + Warnschwelle kritischer Pumpenbatterie-Stand [%] PRED IOB COB @@ -1034,8 +1034,8 @@ Unerwartetes Verhalten. COB vs IOB Bolus Einschränkung angewandt: %2$.2f U statt %1$.2f U !!!!! Langsamer Kohlenhydrat-Abbau erkannt: %2$d%% der Zeit. Überprüfe Deine Berechnung. COB könnte zu hoch sein und deswegen zu viel Insulin abgegeben werden!!!!!]]> - Abgabe von [%] des Ergebnisses des Bolusrechners - Der Bolus-Assistent führt Berechnungen durch, aber nur dieser Teil der berechneten Insulin wird abgegeben. Nützlich mit SMB-Algorithmus. + Abgabe von [%] des Ergebnisses des Bolus-Rechners + Der Bolus-Rechner führt Berechnungen durch, aber nur dieser Teil der berechneten Insulin wird abgegeben. Nützlich mit SMB-Algorithmus. Lädt ... Schlummern Zeitraum @@ -1194,7 +1194,8 @@ Unerwartetes Verhalten. Bolus-Berater Deine BZ-Werte sind hoch. Statt jetzt zu essen solltest Du abwarten, bis die Werte gesunken sind. Willst du jetzt einen Korrekturbolus abgeben und erinnert werden, wenn es Zeit zum Essen ist? In diesem Fall werden die Kohlenhydrate nicht übernommen und Du musst nach der Erinnerung den Bolus-Rechner erneut verwenden. Bolus-Berater aktivieren - Bei hohen BZ-Werten Essenserinnerung statt Bolus-Wizard verwenden + Option zur Erinnerung an späteres Essen (z.B. bei hohen BZ-Werten) im Bolus-Rechner (\"Spritz-Ess-Abstand\") Zeit zum Essen!\nStarte den Bolus-Rechner und gib die KH ein. Zeit zum Essen + Hochladen von Crash-Protokollen deaktiviert! diff --git a/app/src/main/res/values-el-rGR/strings.xml b/app/src/main/res/values-el-rGR/strings.xml index a41c6fb3ec..ed35ab3eea 100644 --- a/app/src/main/res/values-el-rGR/strings.xml +++ b/app/src/main/res/values-el-rGR/strings.xml @@ -200,7 +200,6 @@ Διορθ Ενέργειες NS φορτώνεται μόνο (απενεργοποίηση συγχρ) - NS φορτώνεται μόνο. Δεν είναι αποτελεσματικό στο SGV εκτός εάν έχει επιλεγεί μία τοπική πηγή όπως το xDrip. Δεν είναι αποτελεσματικό στα Προφίλ ενώ χρησιμοποιείται το NS-Profiles. Η αντλία δεν έχει ρυθμιστεί! Πλήρωση/Γέμισμα Παρακαλώ ελέγξτε ότι η ποσότητα ταιριάζει με τις προδιαγραφές του σετ έγχυσης! @@ -331,8 +330,6 @@ Εμφάνιση του φωτισμού κατάστασης στην αρχική οθόνη Όριο προειδοποίησης χαμηλής αμπούλας [U] Όριο προειδοποίησης πολύ χαμηλής αμπούλας [U] - Όριο προειδοποίησης χαμηλής μπαταρίας [%] - Όριο προειδοποίησης πολύ χαμηλής μπαταρίας [%] IOB COB Σχετικά με diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index fda5350b29..7481bd331f 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -286,7 +286,6 @@ Corrección Acciones NS solo subida (sinc. inactiva) - NS solo subida. No efectivo con SGV salvo que este seleccionada una fuente local como xDrip. No efectivo en perfiles usando perfiles NS. ¡Bomba no iniciada! Rellenar/Llenar ¡Por favor asegurar que la cantidad coincide con la especificación del set de infusión! @@ -443,12 +442,8 @@ Umbral crítico de la edad del sensor [h] Umbral de advertencia de nivel de batería del sensor [%] Umbral crítico de nivel de batería del sensor [%] - Umbral de advertencia de nivel de pila [h] - Umbral crítico de nivel de batería [h] Umbral de advertencia de nivel de reservorio [U] Umbral crítico de nivel de reservorio [U] - Umbral de advertencia de nivel de pila [%] - Umbral crítico de nivel de batería [%] PRED IOB COB @@ -1193,7 +1188,6 @@ Asistente de bolo Usted tiene alta glicemia. En lugar de comer ahora se recomienda esperar a una mejor glicemia. ¿Quieres hacer un bolo de corrección ahora y recibir una nota cuándo es el momento de comer? En este caso no se grabarán carbohidratos y se debe volver a utilizar el asistente cuando lo recordamos. Habilitar asistente de bolo - Usar un recordatorio para empezar a comer en lugar del asistente durante la glucemia alta ¡Hora de comer!\nEjecutar el asistente de bolo y cálcular de nuevo. Hora de comer diff --git a/app/src/main/res/values-fr-rFR/strings.xml b/app/src/main/res/values-fr-rFR/strings.xml index 327a1d7d5e..25ff8efb51 100644 --- a/app/src/main/res/values-fr-rFR/strings.xml +++ b/app/src/main/res/values-fr-rFR/strings.xml @@ -287,7 +287,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S Corr Actions Remonter uniquement vers NS (sync désactivée) - Uniquement téléchargement NS. Ceci n’est pas opérationnel pour les SGV à moins qu’une source locale comme xDrip ne soit sélectionnée. Ceci n’est pas opérationnel sur les profils lorsque les profils NS sont utilisés. + Envoi NS uniquement. Inactif sur les Gly capteurs sauf si une source locale comme xDrip est sélectionnée. Inactif sur les profils si Profil NS est sélectionné.\n!!! ATTENTION !!! La désactivation de cette option peut causer des dysfonctionnements et une surdose d\'insuline si l\'un de vos composants (AAPS, NS, xDrip) est mal configuré. Vérifiez bien si les données affichées par AAPS correspondent à l’état de la pompe ! Pompe non initialisée ! Amorcer/Remplir Veuillez à ce que la quantité corresponde aux caractéristiques de votre cathéter ! @@ -380,7 +380,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S File d\'attente : État : En pause - Effacer l\'histo + Effacer logs NSCLIENT ne possède pas la permission d\'écriture. Mauvais API secret? Paramètres Wear Afficher l\'IA détaillée @@ -444,12 +444,12 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S Seuil critique âge capteur [h] Seuil d’alerte niveau pile capteur [%] Seuil critique niveau pile capteur [%] - Seuil d\'alerte âge pile [h] - Seuil critique âge pile [h] + Seuil d\'alerte âge pile pompe [h] + Seuil critique âge pile pompe [h] Seuil d\'alerte niveau réservoir [U] Seuil critique de niveau réservoir [U] - Seuil d’alerte niveau pile [%] - Seuil critique niveau pile [%] + Seuil d’alerte niveau pile pompe [%] + Seuil critique niveau pile pompe [%] PRED IA GA @@ -806,8 +806,8 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S Maintenance MAINT Fournir différentes fonctions de maintenance (ex : envoyer, supprimer le journal). - Envoyer le journal par e-mail - Supprimer le journal + Envoyer les logs par mail + Supprimer les logs Le traitement (insuline : %1$.2f, glucides : %2$d, à : %3$s) n\'a pas pu être ajouté aux traitements. Vérifiez et ajoutez SVP manuellement ce traitement. eCarbs : %1$d g (%2$d h), retard : %3$d m Pas de données d\'Autosens disponibles @@ -819,7 +819,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S Mode APS préféré Total Calc - Envoi des fichiers des journaux aux développeurs. Cas imprévu. + Envoi des fichiers logs d\'aujourd\'hui aux développeurs avec l\'heure. Cas imprévu. Changement minimum [%] Le fonctionnement de la Boucle demandera une confirmation uniquement si le changement est supérieur à cette valeur en %. Par défaut, la valeur est 20% Recherche d\'appareils en cours… @@ -1194,7 +1194,8 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S Assistant bolus Vous avez une glycémie élevée. Au lieu de manger maintenant, il est recommandé d\'attendre une meilleure glycémie. Voulez-vous faire un bolus de correction maintenant et avoir une alerte quand il sera temps de manger ? Dans ce cas, aucun glucide ne sera enregistré et vous devrez utiliser l\'assistant à nouveau lorsque nous vous le rappelons. Activer l\'assistant bolus - Utiliser le rappel pour commencer à manger au lieu de l\'assistant quand la glycémie est élevée + Utiliser un rappel pour commencer le repas à la place du résultat de l\'assistant quand la glycémie est élevée (\"pré-bolus\") Il est temps de manger !\nExécutez l\'assistant Bolus et refaites le calcul. Il est temps de manger + Téléchargement logs crashs désactivé! diff --git a/app/src/main/res/values-it-rIT/strings.xml b/app/src/main/res/values-it-rIT/strings.xml index cc9b567eeb..8514e0efe6 100644 --- a/app/src/main/res/values-it-rIT/strings.xml +++ b/app/src/main/res/values-it-rIT/strings.xml @@ -286,7 +286,7 @@ Corr Azioni NS: solo upload (sincron. disabilitata) - NS: solo upload. Non ha effetto su SGV a meno che non sia selezionata una fonte locale come xDrip. Non ha effetto sui profili durante l\'uso dei profili NS. + Solo upload su NS. Non ha effetto su SGV a meno che non sia selezionata una fonte locale come xDrip. Non ha effetto sui profili mentre vengono usati i profili NS.\n!!! ATTENZIONE !!! Disabilitare questa opzione potrebbe causare malfunzionamenti e sovra-dosaggio di insulina se uno dei tuoi strumenti (AAPS, NS, xDrip) è configurato in modo errato. Guarda attentamente se i dati visualizzati da AAPS corrispondono allo stato del micro! Micro non inizializzato! Carica/Riempi Assicurati che la quantità corrisponda alla specifica del tuo set di infusione! @@ -443,12 +443,12 @@ Soglia età sensore critica [h] Soglia di avviso livello batteria sensore [%] Soglia livello batteria sensore critico [%] - Soglia di avviso età batteria [h] - Soglia età batteria critica [h] + Età batteria micro: soglia di avviso [h] + Età batteria micro: soglia critica [h] Soglia di avviso livello serbatoio [U] Soglia livello serbatoio critico [U] - Soglia di avviso livello batteria [%] - Soglia livello batteria critico [%] + Livello batteria micro: soglia di avviso [%] + Livello batteria micro: soglia critica [%] PRED IOB COB @@ -1193,7 +1193,7 @@ Consiglio bolo Hai una glicemia alta. Invece di mangiare ora, si consiglia di attendere una glicemia migliore. Vuoi fare adesso un bolo di correzione ed essere ricordato quando è il momento di mangiare? In questo caso non verranno registrati carboidrati e dovrai usare di nuovo il calcolatore quando ti verrà mostrato il promemoria. Abilita consiglio bolo - Usa un promemoria per iniziare a mangiare invece del calcolatore durante la glicemia alta + Usa un promemoria per iniziare a mangiare invece del risultato del calcolatore durante la glicemia alta (\"pre-bolo\") Tempo di mangiare!\nEsegui il calcolatore e fai di nuovi i calcoli. Tempo di mangiare diff --git a/app/src/main/res/values-iw-rIL/strings.xml b/app/src/main/res/values-iw-rIL/strings.xml index 43818a7eae..d6c14883a0 100644 --- a/app/src/main/res/values-iw-rIL/strings.xml +++ b/app/src/main/res/values-iw-rIL/strings.xml @@ -155,7 +155,7 @@ הקובץ לא נמצא ייצא הגדרות יבא הגדרות - מינון בזאלי זמני מקסימלי (יח\'\שעה) + מינון בזאלי זמני מקסימלי (יח\'\\שעה) ערך זה נקרא בזאלי מרבי ב-OpenAPS בזאלי פעיל מרבי ש-OpenAPS יכול לספק [U] ערך זה נקרא אינסולין פעיל מקסימלי (Max IOB) ב-OpenAPS. זהו מקסימום האינסולין הפעיל ב-[U] ש-APS מאפשר. @@ -225,7 +225,7 @@ שירות השליטה מרחוק באמצעות SMS מופסק. על מנת להפעילו, השתמשו בAAPS במכשיר הראשי. כדי לשלוח ערך כיול %1$.2f יש להשיב עם הקוד %2$s הבולוס נכשל - מספר הדקות המזערי שחייב לחלוף בין בולוס מרוחק אחד למשנהו + מספר המינימלי (בדקות) שחייב לחלוף בין בולוס מרוחק אחד למשנהו מספר הדקות המינימלי שצריכות לחלוף, בין בולוס אחד למשנהו למען בטחונכם, על מנת לערוך את העדפה זו, עליכם להוסיף לפחות שני מספרי טלפון. בולוס %1$.2fU ניתן בהצלחה @@ -285,12 +285,11 @@ ארוחה תיקון פעולות - העלאה ל-nightscout בלבד (סנכרון מבוטל) - העלאה ל- NS בלבד. ללא השפעה על SGV אלא אם נבחר מקור מקומי כגון Xdrip. ללא השפעה על הפרופילים כל עוד פרופיל NS בשימוש. + העלאה בלבד לנייטסקאוט (סנכרון מבוטל) משאבה לא הופעלה! - תיחול\מילוי + תיחול\\מילוי נא ודאו שהכמות מתאימה למפרט ערכת העירוי שלכם! - מילוי\תיחול כמויות סטנדרטיות של אינסולין + מילוי\\תיחול כמויות סטנדרטיות של אינסולין כפתור 1 כפתור 2 כפתור 3 @@ -340,7 +339,7 @@ WEAR SMS קצר את כותרות הלשוניות - התבסס על הפרש ממוצע קצר במקום הפרש פשוט\רגיל + התבסס על הפרש ממוצע קצר במקום הפרש פשוט\\רגיל לשימוש כאשר נתונים ממקור לא מפוקח כמו Xdrip אינם יציבים. פרופיל ערך ברירת מחדל: 3 מנגנון הגנה עיקרי של OpenAPS. מגביל את המינון הבזאלי לעד פי 3 מהמינון הבזאלי הגבוה ביותר שהוגדר. ברוב המקרים אין צורך לשנות ערך זה, אך יש לזכור שזו המשמעות של “3x max daily; 4x current” בדיון על מנגנוני הגנה. @@ -386,13 +385,13 @@ לחלק את ה IOB לבולוס ובזאלי במסך השעון נכשל - נא לבדוק את הטלפון לא זמין - סוג המטופל\ת + סוג המטופל\\ת ילד/ה - מתבגר\ת - מבוגר\ת - מבוגר\ת עם תנגודת אינסולין גבוהה + מתבגר\\ת + מבוגר\\ת + מבוגר\\ת עם תנגודת אינסולין גבוהה הריון - נא לבחור את גיל המטופל\ת להתאמת מגבלות בטיחות + נא לבחור את גיל המטופל\\ת להתאמת מגבלות בטיחות שם מטופל נא לציין שם המטופל או כינוי, להבחנה בין מספר הגדרות משתמש @@ -402,9 +401,9 @@ מושהה (%1$d דק\') השהה לולאה השהה לולאה לשעה אחת - השהה לולאה ל-2 שע\' - השהה לולאה ל-3 שע\' - השהה לולאה ל-10 שע\' + השהה לולאה ל-2 ש\' + השהה לולאה ל-3 ש\' + השהה לולאה ל-10 ש\' השהה לולאה ל-%1$d דקות ניתוק משאבה נתק את המשאבה למשך 15 דקות @@ -443,12 +442,12 @@ סף התראה קריטית של תוקף החיישן [h] סף התראה של רמת סוללת החיישן [%] סף התראה קריטית של רמת סוללת החיישן [%] - סף התראה של תוקף הסוללה [h] - סף התראה קריטית של תוקף הסוללה [h] + סף התראה של גיל הסוללה [h] + סף התראה קריטית של גיל הסוללה [h] אזהרת סף של מיכל ריק [U] אזהרת סף קריטית של מיכל ריק [U] - אזהרת סף של רמת הסוללה [%] - אזהרת סף קריטית של רמת הסוללה [%] + סף התראה של רמת הסוללה [%] + סף התראה קריטית של רמת הסוללה [%] חיזוי אינ\' פעיל פחמ\' פעילות @@ -621,7 +620,7 @@ הפעלת SMB תמיד אפשר SMB תמיד באופן עצמאי מבולוסים. אפשרי רק עם מקור ערכי סוכר עם דיוק של נתונים כמו G5 הפעלת SMB אחרי פחמימות - הפעלת SMB במשך 6 שע\' אחרי פחמימות, גם אם אין פחמ\' פעילות. אפשרי רק עם מקור ערכי סוכר עם דיוק נתונים כמו G5 + הפעלת SMB במשך 6 ש\' אחרי פחמימות, גם אם אין פחמ\' פעילות. אפשרי רק עם מקור ערכי סוכר עם דיוק נתונים כמו G5 הפעלת SMB עם פחמ\' פעילות הפעלת SMB כשיש פחמ\' פעילות. הפעלת SMB עם ערכי מטרה זמניים @@ -685,7 +684,7 @@ בולוסים מרובים באותו הגודל בתוך הובאו באותה דקה. ניתן להוסיף רק רשומה אחת לטיפולים. בדקו את המשאבה והוסיפו באופן ידני רשומת בולוס בלשונית פורטל הטיפולים. יש ליצור רשומות בולוס עם זמנים שונים מבולוסים אחרים. \n\nתיעוד:\nhttps://androidaps.readthedocs.io\n\nפייסבוק:\nhttps://www.facebook.com/groups/AndroidAPSUsers הבולוס האחרון נרשם לפני 24 שעות או בשעה עתידית, נא לבדוק את כיוון השעון ותאריך במשאבה. - זמן\תאריך הבולוס שהוזרק מהמשאבה נראה לא נכון, IOB כנראה שגוי, בדקו את השעון ואת התאריך במשאבה. + זמן\\תאריך הבולוס שהוזרק מהמשאבה נראה לא נכון, IOB כנראה שגוי, בדקו את השעון ואת התאריך במשאבה. שינוי פרופיל חסר. אנא החליפו פרופיל או לחצו על \"הפעל פרופיל\" בפרופיל המקומי. ספירת בולוסים ספירת TBR @@ -759,7 +758,7 @@ קרא סטטוס יש לבצע שינויים ב-Nightscout דלג על אשף ההתקנה - לחצו על הלחצן למטה כדי לאפשר ל-AndroidAPS להציע\לבצע שינויים במינון הבזאלי + לחצו על הלחצן למטה כדי לאפשר ל-AndroidAPS להציע\\לבצע שינויים במינון הבזאלי תוסף רגישות משמש לזיהוי רגישות וחישוב הפחמ\' הפעילות. לקבלת מידע נוסף, בקרו בכתובת: https://github.com/MilosKozak/AndroidAPS/wiki/Sensitivity-detection-and-COB NSClient מטפל בחיבור ל-Nightscout. אפשר לדלג על החלק הזה עכשיו, אך לא תוכלו לעבור את המשימות מבלי להגדיר אותו. @@ -1065,7 +1064,7 @@ יש לשמור או לאפס תחילה את השינויים הנוכחיים למחוק את הפרופיל הנוכחי? ליצור פרופיל מקומי חדש מפרופיל זה? - שם הפרפיל מכיל נקודות.\nשם כזה אינו נתמך ע\"י Nightscout \nהפרופיל לא הועלה ל-Nightscout. + שם הפרפיל מכיל נקודות.\nשם כזה אינו נתמך ע\"י Nightscout \n הפרופיל לא הועלה ל-Nightscout. ערך נמוך יותר באזור הטווח (הצגה בלבד) ערך גבוה יותר באזור הטווח (הצגה בלבד) סדר מחדש @@ -1193,7 +1192,8 @@ יועץ הבולוסים יש לכם היפרגליקמיה. במקום לאכול עכשיו מומלץ לחכות לרמת סוכר נמוכה יותר. האם תרצו לעשות בולוס תיקון עכשיו ולאחר מכן תופעל תזכורת לאכול? במקרה זה, לא יירשמו פחמימות ויהיה עליכם להשתמש באשף מחדש כאשר תגשו לאכול. אפשר את יועץ הבולוסים - קובע תזכורת לאכול במקום להשתמש באשף במהלך היפרגליקמיה + מציג תזכורת לאכול אחר כך במקום להזריק את המינון שהומלץ ע\"י האשף בעת היפרגליקמיה (\"בולוס מקדים\") זמן לאכול!\nהפעילו את אשף הבולוסים וחשבו בולוס חדש. זמן לאכול + העלאת רשומות קריסה מושבתת! diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml index 64d967e4ca..d71ff4aad2 100644 --- a/app/src/main/res/values-ko-rKR/strings.xml +++ b/app/src/main/res/values-ko-rKR/strings.xml @@ -214,7 +214,6 @@ 교정주입 실행 NS에 업로드만 하기(동기화 안됨) - NS에 업로드만 하기. xDrip같은 로컬 혈당 출처가 선택되지 않다면 SGV에는 효력이 없습니다. NS프로파일이 사용중이라면 프로파일에는 효력이 없습니다. 펌프가 초기화 되지 않았습니다! 교체/채움 양이 인퓨전세트의 사양과 일치하는지 확인하세요! @@ -349,8 +348,6 @@ 홈화면에 상태 표시등 보여주기 주사기량 경고 기준값[U] 주사기량 위험 기준값[U] - 배터리 잔량 경고값 [%] - 배터리 잔량 위험값 [%] IOB COB 버전정보 diff --git a/app/src/main/res/values-lt-rLT/strings.xml b/app/src/main/res/values-lt-rLT/strings.xml index c9a0823298..4c8b3ac124 100644 --- a/app/src/main/res/values-lt-rLT/strings.xml +++ b/app/src/main/res/values-lt-rLT/strings.xml @@ -286,7 +286,6 @@ Korekcija Veiksmai Tik įkelti duomenis į NS (ne sinchronizuoti) - Duomenys tik perkeliami į Nightscout. Gliukozės duomenys perkeliami tik tada, kai naudojama lokali programa, pvz.: xDrip. Naudojant NS-profilį, kiti profiliai neaktyvūs. Pompa neprijungta! Užpildymas Įsitikinkite, kad nurodytas kiekis atitinka Jūsų infuzijos rinkinio specifikaciją! @@ -443,12 +442,8 @@ Jutiklio kritinio laiko įspėjimas [h] Įspėjimo apie žemą sensoriaus baterijos lygį riba [%] Įspėjimo apie kritiškai žemą sensoriaus baterijos lygį riba [%] - Baterijos ribinio laiko įspėjimas [h] - Baterijos kritinio laiko įspėjimas [h] Įspėjimo apie žemą rezervuaro lygį riba [U] Įspėjimo apie kritiškai žemą rezervuaro lygį riba [U] - Įspėjimo apie žemą baterijos įkrovimo lygį riba [%] - Įspėjimo apie kritiškai žemą baterijos įkrovimo lygį riba [%] PROGN AIO AAO @@ -1193,7 +1188,7 @@ Boluso patarėjas Jūsų glikemija yra aukšta. Užuot valgę dabar, turėtumėte palaukti, kol sumažės glikemija. Ar norite dabar susileisti korekcinį bolusą ir nustatyti priminimą, kada ateis laikas valgyti? Tokiu atveju angliavandeniai nebus įrašyti, o po priminimo turėsite vėl naudoti boluso skaičiuoklę. Įgalinti boluso patarėją - Jei jūsų glikemija yra aukšta, naudokite priminimą apie laiką valgyti, o ne Boluso patarėją + Galimybė priminti jums valgyti vėliau (pvz., esant aukštai glikemijai) boliuso vedlyje („po susileidimo palaukti ir valgyti vėliau“) Laikas valgyti!\nĮjunkite Boluso patarėją ir atlikite skaičiavimą dar kartą. Laikas valgyti diff --git a/app/src/main/res/values-nl-rNL/strings.xml b/app/src/main/res/values-nl-rNL/strings.xml index 725b2b764c..e0f46573ae 100644 --- a/app/src/main/res/values-nl-rNL/strings.xml +++ b/app/src/main/res/values-nl-rNL/strings.xml @@ -286,7 +286,7 @@ Correctie Acties Alleen NS upload (sync. gedeactiveerd) - Alleen NS upload. Heeft geen effect op de SGV behalve als een lokale bron zoals xDipp geselecteerd is. Heeft geen effect op de profielen wanneer het NS profiel is gekozen. + Alleen NS-upload. Heeft geen effect op de SGV, behalve als een lokale bron als xDrip geselecteerd is. Heeft geen effect op profielen wanneer NS-Profielen gebruikt worden.\n!!! WAARSCHUWING !!! Het uitschakelen van deze optie kan fouten veroorzaken en mogelijk resulteren in een overdosis insuline als een van de onderdelen (AAPS, NS, xDrip) onjuist is geconfigureerd. Let goed op of de gegevens van AAPS overeenkomen met de pompstatus! Pomp niet geïnitialiseerd! Ontlucht/vul Verzeker u dat de vulhoeveelheid overeenkomt met de infusieset! @@ -443,12 +443,12 @@ Drempel alarm sensor leeftijd [h] Drempel waarschuwing batterij niveau [%] Drempel alarm batterij niveau [%] - Drempel waarschuwing batterij leeftijd [h] - Drempel alarm batterij niveau [h] + Drempelwaarde waarschuwing pompbatterijleeftijd [h] + Drempelwaarde kritieke pompbatterijleeftijd [h] Drempel waarschuwing reservoir niveau [E] Drempel alarm reservoir niveau [E] - Drempel waarschuwing batterij niveau [%] - Drempel alarm batterij niveau [%] + Drempelwaarde waarschuwing pompbatterijniveau [%] + Drempelwaarde kritiek pompbatterijniveau [%] PRED IOB COB @@ -1193,7 +1193,8 @@ Bolusadviseur Je hebt een hoge bloedglucose. In plaats van te eten, is het nu aan te raden om te wachten op een betere bloedglucose. Wil je nu een correctiebolus uitvoeren en je herinneren wanneer het tijd is om te eten? In dit geval worden er geen koolhydraten opgenomen en moet je de wizard opnieuw gebruiken wanneer we je eraan herinneren. Bolusadviseur inschakelen - Gebruik bij een hoge bloedglucose niet de wizard maar een herinnering om met eten te beginnen + Gebruik bij een hoge bloedglucose niet het resultaat van de wizard, maar een herinnering om later met eten te beginnen (\"pre-bolus\") Tijd om te eten!\nVoer de boluswizard opnieuw uit. Tijd om te eten + Upload van crashrapporten is uitgeschakeld! diff --git a/app/src/main/res/values-no-rNO/strings.xml b/app/src/main/res/values-no-rNO/strings.xml index 6f0a58ddc9..3c40df9b08 100644 --- a/app/src/main/res/values-no-rNO/strings.xml +++ b/app/src/main/res/values-no-rNO/strings.xml @@ -286,7 +286,7 @@ Korreksjon Handlinger Kun NS opplasting (deaktivert sync) - Kun opplast til NS. Påvirker ikke SGV (BS) med mindre en lokal kilde som xDrip er valgt. Påvirker ikke profiler hvis NS profiler benyttes. + Kun NS opplasting. Ikke effektiv på SGV med mindre en lokal kilde som xDrip er valgt. Ikke effektiv på Profiler mens NS-Profiler brukes.\n!!! ADVARSEL !!! Deaktivering av dette alternativet kan føre til funksjonsfeil og overdosering av insulin hvis noen av dine komponenter (AAPS, NS, xDrip) er feil konfigurert. Observer at data som vises i AAPS samsvarer med pumpestatus! Pumpen ikke initialisert! Prime/fylling Kontroller at mengden samsvarer med spesifikasjonen for slangesettet ditt! @@ -443,12 +443,12 @@ Advarsel: alder CGM [h] Nivå for når batterivarsel skal gis [%] Nivå for når kritisk batteriadvarsel skal gis [%] - OBS: alder batteri [h] - Advarsel: alder batteri [h] + Nivå for når batterivarsel for pumpe skal gis [h] + Nivå for når kritisk batteriadvarsel for pumpe skal gis [h] OBS: nivå insulinreservoar [U] Advarsel: nivå insulinreservoar [U] - OBS: batterivarsel [%] - Advarsel: lavt batterinivå [%] + Nivå for når batterivarsel for pumpe skal gis [%] + Nivå for når kritisk batteriadvarsel for pumpe skal gis [%] PROGN IOB COB @@ -1193,7 +1193,7 @@ Bolusguide Du har høyt blodsukker. I stedet for å spise nå er det bedre å utsette det til du har et lavere blodsukker. Ønsker du å sette en korrigerings bolus nå og få en påminnelse om når den er på tide å spise? I dette tilfellet vil ingen karbohydrater registreres nå, og du må bruke måltids veiviseren igjen når vi gir deg en påminnelse. Aktiver boluskalkulator - Få påminnelse om å spise i stedet for å bruke wizard når du har høyt blodsukker + Bruk en påminnelse om å spise senere enn kalkulator resultatet fra wizard ved høyt blodsukker (\"pre-bolus\") Nå må du spise!\Bruk bolus veiviseren og beregn på nytt. Nå må du spise diff --git a/app/src/main/res/values-pl-rPL/strings.xml b/app/src/main/res/values-pl-rPL/strings.xml index 9d494ca3a4..4b7e2392c0 100644 --- a/app/src/main/res/values-pl-rPL/strings.xml +++ b/app/src/main/res/values-pl-rPL/strings.xml @@ -286,7 +286,6 @@ Korekta Akcje NS tylko przesył. (wyłączona synch.) - NS tylko przesył. Nie skuteczne na SGV o ile ni jest wykorzystywane lokalne źródło danych jak xDrip. Nie skuteczne na Profilach gdy profil z NS jest wykorzystywany. Pompa nie zainicjowana! Rozpocznij/Wypełnij Proszę upewnij się, że ilość wypełnienia odpowiada ilości właściwej dla twojego wkłucia! @@ -443,12 +442,8 @@ Krytyczny czas sensora CGM [h] Próg ostrzeżenia o poziomie baterii sensora [%] Próg ostrzeżenia o krytycznym poziomie baterii sensora [%] - Ostrzeżenie o czasie baterii [h] - Krytyczny czas baterii [h] Próg ostrzeżenia o poziomie zbiornika [U] Próg ostrzeżenia o krytycznym poziomie zbiornika [U] - Próg ostrzeżenia o poziomie baterii [%] - Próg ostrzeżenia o krytycznym poziomie baterii [%] PRED IOB COB @@ -474,7 +469,7 @@ Kaniula Insulina Bateria pompy - wiek: + czas: poziom: Opcje alarmu Utwórz powiadomienia z alarmów NS @@ -1070,7 +1065,7 @@ Dolna wartość zakresu docelowego (tylko do wyświetlania) Górna wartość zakresu docelowego (tylko do wyświetlania) Zmień kolejność - Wiek: + Czas: Waga: ID: Wyślij @@ -1147,7 +1142,7 @@ Bieżący profil Dostępny profil Typ profilu - Wiek: %1$.0f TDD: %2$.0f U + Czas: %1$.0f TDD: %2$.0f U Wiek: %1$.0f TDD: %2$.0f U %3$d%% Wiek: %1$.0f Waga: %2$.0f kg % bazy @@ -1194,7 +1189,7 @@ Doradca bolusa Masz wysoki poziom. Zamiast jeść teraz, zaleca się poczekać na wyrównanie poziomu cukru. Czy chcesz teraz wykonać korekcyjny bolus i otrzymać przypomnienie, kiedy nadejdzie czas na posiłek? W tym przypadku żadne węglowodany nie zostaną zarejestrowane i należy ponownie użyć kreatora, gdy zostanie otrzymane przypomnienie. Włącz doradcę bolusa - Użyj przypomnienia, aby rozpocząć jedzenie zamiast kreatora podczas wysokiej glikemii + Użyj przypomnienia, aby rozpocząć jedzenie później podczas wysokiej glikemii (\"pre-bolus\") Czas jeść!\nUruchom kreatora bolusa i zrób obliczenia ponownie. Czas na jedzenie diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index f11c2dd6e9..b0ac76ef01 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -261,7 +261,6 @@ Correção Ações Envio do NS apenas (sincronização desativada) - Apenas upload para NS. Não é eficaz em SGV a menos que uma fonte local como xDrip esteja selecionada. Não é eficaz em perfis enquanto NS-Profiles é usado. Bomba não inicializada! Purgar/Preencher Por favor certifique-se que o valor corresponde ao especificado para o seu conjunto de infusão! @@ -402,8 +401,6 @@ Mostrar luzes de estado no ecrã principal Limite de aviso de nível de reservatório [U] Limite crítico de nível de reservatório [U] - Limite de aviso de nível de bateria [%] - Limite de crítico de nível de bateria [%] IOB COB ACT diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index 1b8f507e1c..243cd4a216 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -284,7 +284,6 @@ Corr Acções Envio NS apenas (sincronização desactivada) - Apenas upload para NS. Não é eficaz em SGV a menos que uma fonte local como xDrip esteja selecionada. Não é eficaz em perfis enquanto NS-Profiles é usado. Bomba não inicializada! Purgar/Preencher Por favor certifique-se que o valor corresponde ao especificado para o seu conjunto de infusão! @@ -431,12 +430,8 @@ Limite crítico idade insulina [h] Limite aviso idade sensor [h] Limite crítico idade sensor [h] - Limite de aviso de nível de bateria [h] - Limite crítico de nível de bateria [h] Limite de aviso de nível de reservatório [U] Limite crítico de nível de reservatório [U] - Limite de aviso de nível de bateria [%] - Limite de crítico de nível de bateria [%] PREV IOB COB diff --git a/app/src/main/res/values-ro-rRO/strings.xml b/app/src/main/res/values-ro-rRO/strings.xml index 6d123a487c..24067540d4 100644 --- a/app/src/main/res/values-ro-rRO/strings.xml +++ b/app/src/main/res/values-ro-rRO/strings.xml @@ -76,7 +76,7 @@ Rezultat Rezultat: %1$s %2$s Nu există date despre glicemie - Solicită + Solicitare Glicemie Diferență Diferență: @@ -114,7 +114,7 @@ Calculator Limitare aplicată! Bolus: - Bazală + Rate bazale Bazală: Schimbați ceea ce ați introdus! Sursă glicemie @@ -286,7 +286,6 @@ Corecție Acțiuni Doar încărcare în NS (sincronizare dezactivată) - Doar încărcare în NS. Nu are efect asupra SGV decât în cazul selectării unei surse locale, precum xDrip. Nu acționează asupra Profilurilor cât timp se folosesc profilurile din Nightscout. Pompa nu este inițializată! Pregătire/umplere Asigurați-vă că aveți cantitatea specificată de instrucțiunile setului de infuzie! @@ -443,12 +442,8 @@ Prag critic vechime senzor [h] Prag de avertizare nivel baterie senzor [%] Prag nivel critic baterie senzor [%] - Prag de avertizare nivel baterie [h] - Prag critic nivel baterie [h] Pragul de avertisment pentru insulina din rezervor [U] Pragul critic al nivelului insulinei în rezervor [U] - Pragul de avertizare nivel baterie [%] - Pragul critic al nivelului baterie [%] PRED IOB COB @@ -1193,7 +1188,6 @@ Consilier bolus Glicemia ta e mare. In loc sa mănânci acum, este recomandat sa mai aștepți un pic. Vrei sa faci un bolus de corecție acum si sa setezi o alarma pentru a manca mai târziu? In acest caz, nu vor fi înregistrați carbohidrați si va trebui sa folosești calculatorul de bolus din nou când îți vom reaminti. Activare consilier bolus - Folosește o alarma de reamintire pentru a începe sa mănânci în loc de calculatorul de bolus în timpul hiperglicemiei Timpul sa mănânci!\nRuleaza Calculatorul de Bolus pentru a face calculele din nou. Timpul sa mănânci diff --git a/app/src/main/res/values-ru-rRU/strings.xml b/app/src/main/res/values-ru-rRU/strings.xml index b2a2186565..6b66a1267f 100644 --- a/app/src/main/res/values-ru-rRU/strings.xml +++ b/app/src/main/res/values-ru-rRU/strings.xml @@ -286,7 +286,6 @@ коррекция действия только передача в NS (синхронизация отсутствует) - только передача в NS. Не работает в SGV пока не выбран местный источник вроде xdrip. Не работает в Профилях при действующем профиле NS. помпа не инициализирована прайм/заполнение убедитесь что количество соответствует характеристикам вашей инфузионной системы @@ -436,12 +435,8 @@ Критический порог предупреждения о времени, отработанном сенсором [h] Порог предупреждения о разрядке батареи [%] Порог предупреждения о критическом уровне разрядки батареи [%] - Порог предупреждения о разрядке батареи [h] - Порог предупреждения о критическом уровне разрядки батареи [h] Порог уровня наполненности резервуара для оповещения [ед.] Порог критического уровня наполненности резервуара [U] - Порог предупреждения о разрядке батареи [%] - Порог предупреждения о критическом уровне разрядки батареи [%] ОЖИД IOB акт инс акт углев diff --git a/app/src/main/res/values-sk-rSK/strings.xml b/app/src/main/res/values-sk-rSK/strings.xml index 27e20aba57..8e164bcdb8 100644 --- a/app/src/main/res/values-sk-rSK/strings.xml +++ b/app/src/main/res/values-sk-rSK/strings.xml @@ -286,7 +286,6 @@ Korekcia Akcie Iba nahrávanie do NS (synchronizácia deaktivovaná) - Iba nahrávanie dát do NS. Neúčinné pri hodnotách glykémie, pokiaľ nieje vybraný lokálny zdroj dát ako xDrip. Neúčinné pri profiloch, pokiaľ sa používajú NS profily. Pumpa nie je inicializovaná! Plnenie/doplňovanie Prosím uistite sa, že hodnota zodpovedá špecifikácií Vášho setu! @@ -443,12 +442,8 @@ Prah kritického veku senzora [h] Prah upozornenia na úroveň batérie senzora [%] Prah kritickej úrovne batérie senzora [%] - Prah upozornenia na úroveň batérie [h] - Prah kritickej úrovne batérie [h] Prah upozornenia na úroveň hladiny zásobníka [JI] Prah kritickej úrovne hladiny zásobníka [JI] - Prah upozornenia na úroveň batérie [%] - Prah kritickej úrovne batérie [%] PRED IOB COB @@ -1193,7 +1188,6 @@ Bolusový poradca Máte vysokú glykémiu. Namiesto jedla doporučujeme počkať na lepšiu glykémiu a pripomenúť, keď bude čas na jedlo. Prajete si poslať korekčný bolus a pripomenúť, keď bude čas na jedlo? V tomto prípade nebudú zapísané žiadne sacharidy, a neskôr musíte opäť spustiť kalkulačku, akonáhle vám to pripomenieme. Povoliť bolusového poradcu - Pri vysokej glykémii spustiť pripomienku na jedlo namiesto kalkulačky Čas na jedlo!\nSpustite Bolusovú kalkulačku a urobte výpočet znova. Čas na jedlo diff --git a/app/src/main/res/values-sv-rSE/strings.xml b/app/src/main/res/values-sv-rSE/strings.xml index cd3cc62cde..d69c917261 100644 --- a/app/src/main/res/values-sv-rSE/strings.xml +++ b/app/src/main/res/values-sv-rSE/strings.xml @@ -287,7 +287,6 @@ Eversense-appen. Korrektion Åtgärder Endast uppladdning till Nightscout - Endast uppladdning till Nightscout. Kommer inte få BG-data om inte lokal källa som xDrip används. Kommer heller inte att kunna hämta basalprofiler från Nightscout. Pump inte initierad Förfyllning Försäkra dig om att mängden motsvarar det som är specificerat för just ditt infusionsset. @@ -444,8 +443,8 @@ Eversense-appen. Sensorålder - akut varning: [h] Varningsnivå sensorbatteri [%] Kritisk nivå sensorbatteri [%] - Batteriålder - varning: [h] - Batteriålder - akut varning: [h] + Batteriålder - varning: [tim] + Batteriålder - akut varning: [tim] Varningsnivå för reservoar [U] Akut varningsnivå för reservoar [U] Varningsnivå för batteri [%] @@ -1194,7 +1193,7 @@ Eversense-appen. Bolusguide Ditt blodsocker är högt. Istället för att äta är det rekommenderat att vänta tills det sjunker. Vill du göra en korrektionsbolus nu och påminna dig när det är dags att äta? I det här fallet kommer inga kolhydrater att registreras nu, utan du måste ange måltiden på nytt i kalkylatorn. Aktivera bolusguiden - Använd påminnelse om att börja äta istället för kalkylatorn under hög glykemi + Få en påminnelse om att börja äta senare (istället för kalkylatorns resultat) om du ligger högt i BG Dags att äta!\nKör bolusguiden igen för ny beräkning. Dags att äta diff --git a/app/src/main/res/values-tr-rTR/strings.xml b/app/src/main/res/values-tr-rTR/strings.xml index ccb738b603..fedcf3fbfe 100644 --- a/app/src/main/res/values-tr-rTR/strings.xml +++ b/app/src/main/res/values-tr-rTR/strings.xml @@ -184,7 +184,6 @@ Düzeltme Eylemler Sadece Nightscout\'a yükle (devre dışı senkronizasyon) - Sadece NS yükle. Etkili değil SGV üzerinde xDrip gibi bir yerel kaynağı seçili olmadıkça. NS-profilleri kullanılır iken profilleri üzerinde etkili değil. Pompa başlatılmamış! Hazırla/doldur Lütfen miktarın infüzyon setinizin özelliklerine uygun olduğundan emin olun! diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 1c85636660..8a4a524026 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -197,7 +197,6 @@ 矫正 手动操作 只上传到NS服务器 (禁用同步) - 只上传给NS服务器,对SGV没有影响除非选择了本地血糖来源,例如 xDrip. 对配置文件没有影响当选择NS-配置文件时. 泵未初始化! 充盈 请确保数量和输液器里的药量匹配 diff --git a/core/src/main/res/values-ca-rES/strings.xml b/core/src/main/res/values-ca-rES/strings.xml new file mode 100644 index 0000000000..b47480e9ec --- /dev/null +++ b/core/src/main/res/values-ca-rES/strings.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dana/src/main/res/values-ca-rES/strings.xml b/dana/src/main/res/values-ca-rES/strings.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/dana/src/main/res/values-ca-rES/strings.xml @@ -0,0 +1,2 @@ + + diff --git a/medtronic/src/main/res/values-ca-rES/strings.xml b/medtronic/src/main/res/values-ca-rES/strings.xml new file mode 100644 index 0000000000..e370c4a256 --- /dev/null +++ b/medtronic/src/main/res/values-ca-rES/strings.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/omnipod/src/main/res/values-ca-rES/strings.xml b/omnipod/src/main/res/values-ca-rES/strings.xml new file mode 100644 index 0000000000..2b51510b37 --- /dev/null +++ b/omnipod/src/main/res/values-ca-rES/strings.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/omnipod/src/main/res/values-cs-rCZ/strings.xml b/omnipod/src/main/res/values-cs-rCZ/strings.xml index dffbf81fd2..5a0b3399d7 100644 --- a/omnipod/src/main/res/values-cs-rCZ/strings.xml +++ b/omnipod/src/main/res/values-cs-rCZ/strings.xml @@ -11,8 +11,7 @@ Zobrazit tlačítko \"Pozastavit dodávku\" na záložce Omnipod Zobrazit tlačítko Pulzní Log v menu Správa Podu Zobrazit tlačítko Statistika RileyLink v nabídce Správa Podu - Použít úroveň baterie hlášenou OrangeLinkem/RileyLinkem - NEPRACUJE s původním RileyLinkem. Nemusí pracovat s jinými alternativami RileyLinku. + V Akcích povolit zaznamenávání výměny baterie Letní čas / Detekce časového pásma povoleno Připomenutí vypršení platnosti povoleno Hodiny před vypnutím @@ -67,6 +66,7 @@ Chybná adresa RileyLinku. Operace není možná.\n\nNejdříve je nutné nakonfigurovat Omnipod, než bude možné tuto funkci použít. Žádný aktivní Pod + Čas na Podu není synchronizován. Aktualizujte prosím čas na kartě Omnipod. Došlo k neočekávané chybě. Prosíme o její nahlášeníní! (%1$s: %2$s). Komunikace selhala: nezdařilo se ověření integrity zprávy Komunikace selhala: z podu byly přijaty neplatné pakety diff --git a/omnipod/src/main/res/values-da-rDK/strings.xml b/omnipod/src/main/res/values-da-rDK/strings.xml new file mode 100644 index 0000000000..2b51510b37 --- /dev/null +++ b/omnipod/src/main/res/values-da-rDK/strings.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/omnipod/src/main/res/values-de-rDE/strings.xml b/omnipod/src/main/res/values-de-rDE/strings.xml index 024685bb52..a8da82df27 100644 --- a/omnipod/src/main/res/values-de-rDE/strings.xml +++ b/omnipod/src/main/res/values-de-rDE/strings.xml @@ -11,8 +11,7 @@ Button \'Insulinabgabe unterbrechen\' im Omnipod Tab anzeigen Button \'Pulse Log\' im Menü Pod Mgmt. anzeigen Button \'RileyLink Status\' im Menü Pod Mgmt. anzeigen - Batteriestand von OrangeLink/EmaLink verwenden - FUNKTIONIERT NICHT mit dem original RileyLink. Funktioniert vielleicht nicht mit anderen RileyLink Alternativen. + Aktiviere die Protokollierung des Akkuwechsels im Aktionen-Tab/Menü Sommerzeit/Zeitzonen-Erkennung aktiviert Ablauferinnerung aktiviert Stunden bis zum Podende @@ -67,6 +66,7 @@ RileyLink Adresse ungültig. Aktion ist nicht möglich.\n\n Du musst zuerst den Omnipod konfigurieren, bevor Du diese Operation verwenden kannst. Kein aktiver Pod + Zeit auf dem Pod ist nicht synchron. Aktualisiere die Zeit auf der Registerkarte \"Omnipod\". Es ist ein unerwarteter Fehler aufgetreten. Bitte melden! (%1$s: %2$s) Kommunikation fehlgeschlagen: Die Überprüfung der Nachrichtenintegrität ist fehlgeschlagen Kommunikation fehlgeschlagen: Es wurde ein ungültiges Paket vom Pod empfangen. diff --git a/omnipod/src/main/res/values-fr-rFR/strings.xml b/omnipod/src/main/res/values-fr-rFR/strings.xml index 21def31f8c..5c19727f58 100644 --- a/omnipod/src/main/res/values-fr-rFR/strings.xml +++ b/omnipod/src/main/res/values-fr-rFR/strings.xml @@ -11,8 +11,7 @@ Montrer le bouton Suspendre l\'injection dans l\'onglet Omnipod Afficher le bouton Journal d\'impulsions dans le menu de gestion des pods Afficher le bouton Stats RileyLink dans le menu de gestion des pods - Utiliser le niveau de batterie signalé par OrangeLink/EmaLink - NE FONCTIONNE PAS avec le RileyLink original. Peut ne pas fonctionner avec d\'autres versions de RileyLink. + Activer l\'enregistrement des changements de pile dans Actions Changement de Zone/Heure Activé Rappel d\'expiration activé Heures avant arrêt @@ -46,7 +45,7 @@ Réservoir bas Alerte inconnue - Historique du Pod + Historique Pod Description Source Date @@ -67,6 +66,7 @@ Adresse RileyLink invalide. Operation impossible.\n\nVous devez d\'abord configurer l\'Omnipod pour pouvoir faire cette operation. Pas de Pod actif + L\'heure du Pod est désynchronisée. Veuillez la mettre à jour dans l\'onglet Omnipod. Erreur inconnue. Veuillez signaler ! (%1$s : %2$s). Échec de communication : vérification de l\'intégrité du message échouée Échec de communication : paquet reçu du Pod invalide @@ -124,14 +124,14 @@ L\'injection de l\'insuline a été reprise. Désactiver Pod - Supprimer le Pod + Supprimer Pod Définir bolus Annuler bolus Définir le basal temp. Annuler basal temp. (en interne par le pilote) Annuler basale temporaire Définir le profil de basale - Obtenir l\'état du Pod + État du Pod Obtenir infos Pod Définir l\'heure Configurer les Alertes @@ -139,53 +139,53 @@ Suspendre l\'injection Reprendre l\'injection Entrée inconnue - Initialiser le Pod - Insérer la canule - Lecture journal d\'impulsion + Initialiser Pod + Insérer canule + Lire journal d\'impulsion Définir un faux débit de basal temporaire car le Pod est suspendu Annuler le faux débit de basal temporaire créé à cause du Pod suspendu Fractionner la Basale temporaire en raison d\'un échec incertain dans l\'annulation - Configuration des bips - Tester les bips + Configuration bips + Tester bips Gestion du Pod Actions Outils En attente de connexion RileyLink... - Activer le Pod - Désactiver le Pod - Supprimer le Pod + Activer Pod + Désactiver Pod + Supprimer Pod Historique du Pod Stats RileyLink - Réinitialiser la config. RileyLink - Lecture journal d\'impulsion + Réinit config. RileyLink + Lire journal d\'impulsion Lecture journal d\'impulsion… Si vous supprimez le Pod, vous ne pourrez plus communiquer avec lui. Vous ne devez le faire que lorsque toutes les communications avec le Pod échouent de manière permanente. Si vous pouvez toujours communiquer avec le Pod, veuillez utiliser l\'option Désactiver le Pod .\n\nSi vous souhaitez continuer, assurez-vous de retirer la Pod de votre corps ! - Tester les bips + Tester bips Test des bips… Annuler Terminer Suivant Réessayer - Désactiver le Pod - Supprimer le Pod + Désactiver Pod + Supprimer Pod Vous n\'avez pas encore terminé toutes les étapes. Êtes-vous sûr de vouloir quitter ? Quitter - Remplir le Pod + Remplir Pod Remplir le nouveau Pod avec suffisamment d\'insuline pendant 3 jours.\n\nÉcoutez les deux bips du Pod pendant le processus de remplissage. Ils indiquent que la quantité minimale de 85U a été ajouté. Assurez-vous de vider complètement la seringue de remplissage, même après avoir entendu les deux bips.\n\nAprès avoir rempli le Pod, veuillez appuyer sur Suivant.\n\nRemarque : Ne retirez pas la protection de l\'aiguille du Pod pour le moment.\nRemarque :Veuillez placer le RileyLink en position verticale et placez le Pod quelques centimètres à côté. - Initialiser le Pod + Initialiser Pod Tentative d\'appairage et d\'amorçage du nouveau Pod.\n\nUne fois le processus d\'initialisation terminé, appuyez sur Suivant.\n\nRemarque : Veuillez placer le RileyLink en position verticale et placez le Pod à quelques centimètres de lui. - Collez le Pod + Collez Pod Préparez le site d\'injection. Enlevez la protection de l\'aiguille et le support adhésif et collez le Pod sur le site d\'injection.\n\nSi la canule se colle, appuyez sur Annuler et jetez votre Pod.\n\nAppuyez sur Suivant pour insérer la canule et démarrer l\'injection de la basal. Lorsque vous appuyez sur OK, la canule sera insérée. Assurez-vous d\'avoir collé le Pod sur le site de perfusion. - Insérer la canule + Insérer canule Tentative de définir le schéma de basal et d\'insertion de la canule.\n\nUne fois la canule correctement insérée, appuyez sur Suivant. Pod activé Le Pod est maintenant actif.\n\nVos débits de basal ont été programmés et la canule a été insérée.\n\nVeuillez verifier que la canule a été insérée correctement et remplacez le Pod si vous pensez que ce n\'est pas le cas. - Désactiver le Pod + Désactiver Pod Appuyez sur Suivant pour désactiver le Pod.\n\nRemarque : Cela suspendra l\'injection de l\'insuline et désactivera le Pod. Désactivation du Pod Désactivation du Pod.\n\nUne fois la désactivation terminée, vous pouvez appuyer sur Suivant. @@ -194,7 +194,7 @@ Pod supprimé L\'état du Pod a été supprimé. L\'injection d\'insuline n\'a pas été suspendue car le Pod n\'a pas été correctement désactivé !\n\nVeuillez retirer le Pod de votre corps et le jeter dans le recyclage. Si vous supprimez le Pod, vous ne pourrez plus communiquer avec lui. Vous ne devez le faire que lorsque toutes les communications avec le Pod échouent de manière permanente. Êtes-vous sûr de vouloir supprimer le Pod ? - Supprimer le Pod + Supprimer Pod Définir l\'heure Arrêter @@ -205,7 +205,7 @@ État du Pod Total injecté %1$.2f U - Adresse du Pod + Adresse Pod Pod expiré Dernière connexion Dernier bolus diff --git a/omnipod/src/main/res/values-it-rIT/strings.xml b/omnipod/src/main/res/values-it-rIT/strings.xml index e996c8fd16..1013bb6f3d 100644 --- a/omnipod/src/main/res/values-it-rIT/strings.xml +++ b/omnipod/src/main/res/values-it-rIT/strings.xml @@ -11,8 +11,7 @@ Mostra tasto \"sospendi erogazione\" nella scheda Omnipod Mostra tasto \"log impulsi\" nel menu gestione pod Mostra tasto \"statistiche RileyLink\" nel menu gestione pod - Usa livello batteria riportato da OrangeLink/EmaLink - NON funziona con il RileyLink originale. Potrebbe non funzionare con altre alternative al RileyLink. + Abilita log cambio batteria in \"Azioni\" Rilevamento ora legale/fuso orario abilitato Promemoria scadenza abilitato Ore prima dell\'arresto @@ -67,6 +66,7 @@ Indirizzo RileyLink non valido. Operazione non possibile.\n\nDevi prima configurare Omnipod. Nessun pod attivo + L\'ora sul pod non è sincronizzata. Aggiorna l\'ora nella scheda Omnipod. Si è verificato un errore imprevisto. Segnalalo! (%1$s: %2$s). Comunicazione fallita: verifica dell\'integrità del messaggio fallita Comunicazione fallita: ricevuto un pacchetto non valido dal pod diff --git a/omnipod/src/main/res/values-iw-rIL/strings.xml b/omnipod/src/main/res/values-iw-rIL/strings.xml index 8ac4d84f01..e340456c19 100644 --- a/omnipod/src/main/res/values-iw-rIL/strings.xml +++ b/omnipod/src/main/res/values-iw-rIL/strings.xml @@ -11,8 +11,7 @@ הצג לחצן \"השהיית מתן אינסולין\" בלשונית אומניפוד הצג לחצן \"יומן פעימות\" בתפריט ניהול פוד הצג לחצן \"סטטיסטיקת ריילילינק\" בתפריט ניהול פוד - השתמש ברמת סוללה המדווחת מ-EmaLink/OrangeLink - לא עובד עם ריילילינק המקורי. עלול שלא לעבוד עם חלופות ריילילינק אחרות. + אפשר רישום החלפת סוללה בפעולות זיהוי אזור זמן ושעון קיץ מופעל תזכורת לתפוגה מופעלת שעות לפני כיבוי @@ -67,6 +66,7 @@ כתובת ריילילינק לא חוקית. הפעולה אינה אפשרית.\n\nיש להגדיר קודם את אומניפוד על מנת לבצע פעולה זו. אין פוד פעיל + הזמן בפוד אינו מסונכרן. בבקשה עדכנו את השעה בלשונית Omnipod. אירעה שגיאה לא צפויה. נא לדווח! (%1$s: %2$s). התקשורת נכשלה: אימות תקינות ההודעה נכשל התקשורת נכשלה: התקבלה חבילת נתונים לא חוקית מהפוד @@ -135,7 +135,7 @@ קבל מידע על הפוד הגדרת שעה הגדרת התראות - קבלת ההתראות + אשר התראות השהה הזרקה חידוש הזרקה רשומה לא ידועה @@ -202,7 +202,7 @@ רענן חידוש הזרקה ניהול הפוד - קבל התראות + אשר התראות סטטוס הפוד סה\"כ שהוזרק %1$.2f יח\' @@ -216,7 +216,7 @@ התראות פוד פעילות גרסת קושחה זמן פעילות הפוד - %1$.2f יח\'\ש\' @ %2$s (%3$d\%4$d דק\') + %1$.2f יח\'\\ש\' @ %2$s (%3$d\%4$d דק\') %1$.2f יח\' נותרו נותרו יותר מ-50 יח\' שגיאות diff --git a/omnipod/src/main/res/values-nl-rNL/strings.xml b/omnipod/src/main/res/values-nl-rNL/strings.xml index 24f753c393..af9fca9e62 100644 --- a/omnipod/src/main/res/values-nl-rNL/strings.xml +++ b/omnipod/src/main/res/values-nl-rNL/strings.xml @@ -11,8 +11,7 @@ Knop voor het onderbreken van insulinetoediening weergeven in het Omnipod-tabblad Knop voor het uitlezen van het Pulslog weergeven in het Podbeheer menu Knop voor RileyLink statistieken weergeven in het Omnipod-tabblad - Gebruik batterijniveau van OrangeLink/EmaLink - Werkt NIET met de originele RileyLink. Werkt mogelijk niet met andere RileyLink alternatieven. + Loggen van batterijwissel in Acties inschakelen Zomertijd-/tijdzonedetectie ingeschakeld Pieptonen voor uiterste gebruiksdatum ingeschakeld Aantal uur voordat de Pod stopt @@ -67,6 +66,7 @@ RileyLink adres ongeldig. Bewerking is niet mogelijk.\n\nJe moet eerst Omnipod ingesteld hebben, voordat je deze bewerking kunt gebruiken. Geen actieve Pod + De tijd op de Pod wijkt af. Werk de tijd bij op het Omnipod-tabblad. Er is een onverwachte fout opgetreden. A.u.b rapporteren! (%1$s: %2$s). Communicatie mislukt: berichtintegriteit kon niet worden geverifieerd Communicatie mislukt: ongeldige gegevens ontvangen van de Pod @@ -143,7 +143,7 @@ Canule inbrengen Pulslog uitlezen Neppe tijdelijk basaal omdat insulinetoediening onderbroken is - Annuleren van vals tijdelijk basaal wat ontstaan is omdat de insulinetoediening onderbroken was + Annuleren van neppe tijdelijk basaal die is aangemaakt omdat de insulinetoediening onderbroken was Tijdelijke basaal gesplitst als gevolg van een onzekere fout bij annulering Pieptoonconfiguratie Testpieptoon afspelen diff --git a/omnipod/src/main/res/values-no-rNO/strings.xml b/omnipod/src/main/res/values-no-rNO/strings.xml index e129428691..78aaf400a1 100644 --- a/omnipod/src/main/res/values-no-rNO/strings.xml +++ b/omnipod/src/main/res/values-no-rNO/strings.xml @@ -11,8 +11,7 @@ Vis Pause insulintilførsel knapp i Omnipod meny Vis Puls logg knappen i Pod menyen Vis RileyLink status knapp i Pod menyen - Bruk batterinivå rapportert av EmaLink/OrangeLink - Virker IKKE med RileyLink. Kan hende den ikke fungerer med andre RileyLink-alternativer. + Aktiver logging av batteribytte i Aksjoner DST/Tidssone deteksjon aktivert Utløpspåminnelse aktivert Timer før nedstenging @@ -67,6 +66,7 @@ RileyLink adressen er ugyldig. Operasjon ikke mulig.\n\n Du må konfigurere Medtronic pumpen før du kan bruke denne funksjonen. Ingen aktiv Pod + Tid på Pod er ikke synkronisert. Vennligst oppdater tiden i Omnipod fanen. En uventet feil oppstod. Vennligst rapporter (%1$s: %2$s). Kommunikasjonsfeil: klarte ikke å verifisere meldingen Kommunikasjonsfeil: mottok en ugyldig datapakke fra Pod diff --git a/omnipod/src/main/res/values-pl-rPL/strings.xml b/omnipod/src/main/res/values-pl-rPL/strings.xml index b02edd663f..3a0d6e63d5 100644 --- a/omnipod/src/main/res/values-pl-rPL/strings.xml +++ b/omnipod/src/main/res/values-pl-rPL/strings.xml @@ -11,8 +11,6 @@ Pokaż przycisk wstrzymania podawania w zakładce Omnipod Pokaż przycisk Puls Log w menu zarządzania Podem Pokaż przycisk Statystyki RileyLink w menu zarządzania Podem - Użyj poziomu baterii zgłoszonego przez OrangeLink/EmaLink - NIE działa z oryginalnym RileyLinkiem. Może nie działać z innymi alternatywami RileyLink. Włączone wykrywanie strefy czasowej DST Przypomnienie o utracie ważności włączone Godziny przed wyłączeniem diff --git a/omnipod/src/main/res/values-ro-rRO/strings.xml b/omnipod/src/main/res/values-ro-rRO/strings.xml index 151237dc71..a5cc223405 100644 --- a/omnipod/src/main/res/values-ro-rRO/strings.xml +++ b/omnipod/src/main/res/values-ro-rRO/strings.xml @@ -11,8 +11,6 @@ Afișare buton de Suspendare Livrare în secțiunea Omnipod Afişare buton Jurnal Puls în meniul Gestionare Pod-uri Afişare buton Status RileyLink în meniul Gestionare Pod-uri - Utilizare nivel baterie raportat de OrangeLink/EmaLink - NU funcționează cu RileyLink original. Este posibil sa nu funcționeze nici cu versiuni alternative de RileyLink. Detectare fusului orar activată Notificare expirare activat Numar de ore înainte de oprire diff --git a/omnipod/src/main/res/values-sv-rSE/strings.xml b/omnipod/src/main/res/values-sv-rSE/strings.xml index eef8099b11..e5dafec15c 100644 --- a/omnipod/src/main/res/values-sv-rSE/strings.xml +++ b/omnipod/src/main/res/values-sv-rSE/strings.xml @@ -11,8 +11,7 @@ Visa knapp för Pausa Leverans i Omnipod-fliken Visa Pulse Log-knapp i menyn Podhantering Visa knappen Riley Link-statistik i menyn Pod-hantering - Använd batterinivå som rapporterats av OrangeLink/EmaLink - Fungerar inte med original Riley Link. Fungerar eventuellt inte med alla motsvarigheter heller. + Aktivera inloggning av batteribyte i Åtgärder Automatisk avkänning av tidszon aktiverad Påminnelse för utgångstid aktiverad Timmar före avstängning @@ -67,6 +66,7 @@ Riley Link adress felaktig. Operationen inte möjlig.\n\n Du måste konfigurera Omnipod innan du kan använda denna funktion. Ingen aktiv pod + Tiden på Podden är ur synk. Vänligen uppdatera tiden i Omnipod fliken. Ett oväntat fel uppstod. Vänligen rapportera! (%1$s: %2$s). Kommunikationsfel: Lyckades inte verifiera meddelandet Kommunikationsfel: Mottog ett ogiltigt datapaket från pod diff --git a/rileylink/src/main/res/values-ca-rES/strings.xml b/rileylink/src/main/res/values-ca-rES/strings.xml new file mode 100644 index 0000000000..0a73dfc845 --- /dev/null +++ b/rileylink/src/main/res/values-ca-rES/strings.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/rileylink/src/main/res/values-cs-rCZ/strings.xml b/rileylink/src/main/res/values-cs-rCZ/strings.xml index 15b6090cd5..a48e560df6 100644 --- a/rileylink/src/main/res/values-cs-rCZ/strings.xml +++ b/rileylink/src/main/res/values-cs-rCZ/strings.xml @@ -22,19 +22,23 @@ Stav pumpy Nastavení RileyLink RileyLink - Adresa nakonfigurovaného RileyLinku: - Název nakonfigurovaného RileyLinku: - Připojené zařízení: + Adresa: + Jméno: + Stav nabití baterie: + %1$d%% Stav připojení: Chyba spojení: Zařízení Typ zařízení: - Model zařízení: + Model nastaveného zařízení: + Model připojeného zařízení: Poslední použitá frekvence: Poslední spojení se zařízením: Verze firmwaru: + BLE113: %1$s\nCC110: %2$s Sériové číslo pumpy: Frekvence pumpy: + %1$.2f MHz Bluetooth se incializuje… Chyba Bluetooth @@ -56,9 +60,12 @@ Pod nedostupný Pumpa Medtronic - Omipod + Omnipod (Eros) Ano Ne + + Ukázat úroveň baterie hlášenou OrangeLinkem/RileyLinkem + NEPRACUJE s původním RileyLinkem. Nemusí pracovat s jinými alternativami RileyLinky. %1$d den %1$d dnů diff --git a/rileylink/src/main/res/values-de-rDE/strings.xml b/rileylink/src/main/res/values-de-rDE/strings.xml index 851e3bfdf6..8458afc22e 100644 --- a/rileylink/src/main/res/values-de-rDE/strings.xml +++ b/rileylink/src/main/res/values-de-rDE/strings.xml @@ -22,19 +22,23 @@ Pumpen-Status RileyLink Einstellungen RileyLink - Adresse des verbundenen RileyLink: - Name des verbundenen RileyLinks: - Verbundenes Gerät: + Adresse: + Name: + Akkustand: + %1$d%% Verbindungsstatus: Verbindungsfehler: Gerät Geräte-Typ: - Gerätemodell: + Eingerichtetes Gerätemodell: + Verbundenes Gerätemodell: Zuletzt verwendete Frequenz: Letzter Gerätekontakt: Firmware-Version: + BLE113: %1$s\nCC110: %2$s Seriennummer der Pumpe: Pumpenfrequenz: + %1$.2f MHz Initialisiere Bluetooth… Bluetooth-Fehler @@ -56,9 +60,12 @@ Pod nicht erreichbar Medtronic Pumpe - Omnipod + Omnipod (Eros) Ja Nein + + Akkustand von OrangeLink/EmaLink anzeigen + FUNKTIONIERT NICHT mit dem original RileyLink. Funktioniert vielleicht nicht mit anderen RileyLink Alternativen. %1$d Tag %1$d Tage diff --git a/rileylink/src/main/res/values-el-rGR/strings.xml b/rileylink/src/main/res/values-el-rGR/strings.xml index 46b9a1d2a6..ddeeee81ec 100644 --- a/rileylink/src/main/res/values-el-rGR/strings.xml +++ b/rileylink/src/main/res/values-el-rGR/strings.xml @@ -28,5 +28,5 @@ Το Pod δεν είναι διαθέσιμο Αντλία Medtronic - Omnipod + diff --git a/rileylink/src/main/res/values-fr-rFR/strings.xml b/rileylink/src/main/res/values-fr-rFR/strings.xml index 9ae9d123c3..f1a6089302 100644 --- a/rileylink/src/main/res/values-fr-rFR/strings.xml +++ b/rileylink/src/main/res/values-fr-rFR/strings.xml @@ -22,19 +22,23 @@ État de la pompe Paramètres RileyLink RileyLink - Adresse du RileyLink : - Nom du RileyLink : - Appareil connecté : + Adresse : + Nom : + Niveau pile : + %1$d%% État de la connexion : Erreur de Connexion : Appareil Type d\'appareil : - Modèle d’appareil : + Rileylink configuré : + Rileylink connecté : Dernière fréquence utilisée : Dernier contact appareil : Version du firmware : + BLE113: %1$s\nCC110: %2$s Numéro de série de pompe : Fréquence de pompe : + %1$.2f MHz Initialisation Bluetooth… Erreur Bluetooth @@ -56,9 +60,12 @@ Pod inaccessible Pompe Medtronic - Omnipod + Omnipod (Eros) Oui Non + + Afficher le niveau de pile transmis par OrangeLink/EmaLink + NE FONCTIONNE PAS avec le RileyLink original. Peut ne pas fonctionner avec d\'autres versions de RileyLink. %1$d jour %1$d jours diff --git a/rileylink/src/main/res/values-ga-rIE/strings.xml b/rileylink/src/main/res/values-ga-rIE/strings.xml index 2bbde4634d..0a73dfc845 100644 --- a/rileylink/src/main/res/values-ga-rIE/strings.xml +++ b/rileylink/src/main/res/values-ga-rIE/strings.xml @@ -6,4 +6,5 @@ + diff --git a/rileylink/src/main/res/values-it-rIT/strings.xml b/rileylink/src/main/res/values-it-rIT/strings.xml index b089c3f913..a215ac3001 100644 --- a/rileylink/src/main/res/values-it-rIT/strings.xml +++ b/rileylink/src/main/res/values-it-rIT/strings.xml @@ -22,19 +22,23 @@ Stato micro Impostazioni RileyLink RileyLink - Indirizzo RileyLink configurato: - Nome RileyLink configurato: - Dispositivo connesso: + Indirizzo: + Nome: + Livello batteria: + %1$d%% Stato connessione: Errore connessione: Dispositivo Tipo dispositivo: - Modello dispositivo: + Modello dispositivo configurato: + Modello dispositivo connesso: Ultima frequenza usata: Ultimo contatto dispositivo: Versione firmware: + BLE113: %1$s\nCC110: %2$s Numero seriale micro: Frequenza micro: + %1$.2f MHz Inizializzazione bluetooth… Errore bluetooth @@ -56,9 +60,12 @@ Pod irraggiungibile Micro Medtronic - Omnipod + Omnipod (Eros) No + + Mostra livello batteria riportato da OrangeLink/EmaLink + NON funziona con il RileyLink originale. Potrebbe non funzionare con altre alternative al RileyLink. %1$d giorno %1$d giorni diff --git a/rileylink/src/main/res/values-iw-rIL/strings.xml b/rileylink/src/main/res/values-iw-rIL/strings.xml index b768b6d390..43052404e4 100644 --- a/rileylink/src/main/res/values-iw-rIL/strings.xml +++ b/rileylink/src/main/res/values-iw-rIL/strings.xml @@ -22,19 +22,23 @@ סטטוס המשאבה הגדרות ריילילינק ריילילינק - כתובת הריילילינק המוגדרת: - שם הריילילינק המחובר: - המכשיר המחובר: + כתובת: + שם: + רמת הסוללה: + %1$d%% מצב החיבור: שגיאת חיבור: מכשיר סוג מכשיר: - דגם המכשיר: + דגם המכשיר המוגדר: + דגם המכשיר המחובר: תדירות השימוש לאחרונה: קשר אחרון עם המכשיר: גרסת קושחה: + BLE113: %1$s\nCC110: %2$s מספר סידורי של המשאבה: תדר המשאבה: + %1$.2f MHz מאתחל בלוטות\'… שגיאת בלוטות\' @@ -56,9 +60,12 @@ הפוד לא זמין משאבת Medtronic - Omnipod + אומניפוד (Eros) כן לא + + הצג את רמת הסוללה המדווחת על-ידי OrangeLink/EmaLink + לא עובד עם ריילילינק המקורי. עלול שלא לעבוד עם חלופות ריילילינק אחרות. %1$d יום %1$d ימים diff --git a/rileylink/src/main/res/values-ko-rKR/strings.xml b/rileylink/src/main/res/values-ko-rKR/strings.xml index d48930ffcc..776fdba0e6 100644 --- a/rileylink/src/main/res/values-ko-rKR/strings.xml +++ b/rileylink/src/main/res/values-ko-rKR/strings.xml @@ -28,5 +28,5 @@ 포드에 연결할 수 없습니다. 메드트로닉 펌프 - 옴니포드 + diff --git a/rileylink/src/main/res/values-lt-rLT/strings.xml b/rileylink/src/main/res/values-lt-rLT/strings.xml index 1e33d08e95..634fc8393c 100644 --- a/rileylink/src/main/res/values-lt-rLT/strings.xml +++ b/rileylink/src/main/res/values-lt-rLT/strings.xml @@ -22,14 +22,10 @@ Pompos statusas RileyLink parametrai RileyLink - Konfigūruoti RileyLink adresą: - Konfigūruoti RileyLink vardą: - Prijungtas įrenginys: Ryšio būsena: Prisijungimo klaida: Įrenginys Įrenginio tipas: - Įrenginio modelis: Paskutinis naudotas dažnis: Paskutinis įrenginio kontaktas: Programinės įrangos versija: @@ -56,9 +52,9 @@ Pod nepasiekiamas Pompa Medtronic - Omnipod Taip Ne + %1$d d. %1$d d. diff --git a/rileylink/src/main/res/values-nl-rNL/strings.xml b/rileylink/src/main/res/values-nl-rNL/strings.xml index f6fa818ebd..1424eb68ec 100644 --- a/rileylink/src/main/res/values-nl-rNL/strings.xml +++ b/rileylink/src/main/res/values-nl-rNL/strings.xml @@ -22,19 +22,23 @@ Pompstatus RileyLink Instellingen RileyLink - Geconfigureerd RileyLink-adres: - Geconfigureerde RileyLink-naam: - Aangesloten apparaat: + Adres: + Naam: + Batterijniveau: + %1$d%% Verbindingsstatus: Verbindingsfout: Apparaat Apparaattype: - Model apparaat: + Geconfigureerd apparaatmodel: + Verbonden apparaatmodel: Laatst gebruikte frequentie: Laatste contact met apparaat: Firmwareversie: + BLE113: %1$s\nCC110: %2$s Serienummer van de pomp: Pompfrequentie: + %1$.2f MHz Bluetooth initialiseren… Bluetooth fout @@ -56,9 +60,12 @@ Pod niet bereikbaar Medtronic Pomp - Omnipod + Omnipod (Eros) Ja Nee + + Toon batterijniveau van OrangeLink/EmaLink + Werkt NIET met de originele RileyLink. Werkt mogelijk niet met andere RileyLink-alternatieven. %1$d dag %1$d dagen diff --git a/rileylink/src/main/res/values-no-rNO/strings.xml b/rileylink/src/main/res/values-no-rNO/strings.xml index 15f9878003..d05534bbdd 100644 --- a/rileylink/src/main/res/values-no-rNO/strings.xml +++ b/rileylink/src/main/res/values-no-rNO/strings.xml @@ -22,19 +22,23 @@ Pumpe Status RileyLink Innstillinger RileyLink - Konfigurert RileyLink adresse: - Konfigurert RileyLink navn: - Tilkoblet enhet: + Adresse: + Navn: + Batterinivå: + %1$d%% Tilkoblingsstatus: Tilkoblings feil: Enhet Enhets type: - Enhets modell: + Konfigurert enhetsmodell: + Tilkoblet enhetsmodell: Sist brukte frekvens: Siste tilkobling: Firmware versjon: + BLE113: %1$s\nCC110: %2$s Pumpens serienummer: Pumpens frekvens: + %1$.2f MHz Bluetooth initialiserer… Bluetooth feil @@ -56,9 +60,12 @@ Pod utilgjengelig Medtronic pumpe - Omnipod + Omnipod (Eros) Ja Nei + + Vis batterinivå rapportert av OrangeLink/EmaLink + Virker IKKE med RileyLink. Kan hende den ikke fungerer med andre RileyLink alternativer. %1$d dag %1$d dager diff --git a/rileylink/src/main/res/values-pl-rPL/strings.xml b/rileylink/src/main/res/values-pl-rPL/strings.xml index d736e10753..32edf33d37 100644 --- a/rileylink/src/main/res/values-pl-rPL/strings.xml +++ b/rileylink/src/main/res/values-pl-rPL/strings.xml @@ -22,14 +22,10 @@ Stan pompy Ustawienia RileyLink RileyLink - Skonfigurowany adres RileyLink: - Skonfigurowana nazwa RileyLink: - Połączone urządzenie: Status połączenia: Błąd połączenia: Urządzenie Typ urządzenia: - Model urządzenia: Ostatnio używana częstotliwość: Ostatnie połączenie z urządzeniem: Wersja oprogramowania: @@ -56,9 +52,9 @@ Pod nieosiągalny Pompa Medtronic - Omnipod Tak Nie + %1$d dzień %1$d dni diff --git a/rileylink/src/main/res/values-ro-rRO/strings.xml b/rileylink/src/main/res/values-ro-rRO/strings.xml index 756bfa6f77..fb9820aa9f 100644 --- a/rileylink/src/main/res/values-ro-rRO/strings.xml +++ b/rileylink/src/main/res/values-ro-rRO/strings.xml @@ -22,14 +22,10 @@ Stare pompă Setări RileyLink RileyLink - Adresă RileyLink configurată: - Nume RileyLink configurat: - Dispozitiv conectat: Stare conexiune: Eroare conexiune: Dispozitiv Tip dispozitiv: - Model dispozitiv: Ultima frecvență utilizată: Ultima conexiune cu dispozitivul: Versiune Firmware: @@ -56,9 +52,9 @@ Nu se poate comunica cu pod-ul Pompă Medtronic - Omnipod Da Nu + %1$d zi %1$d zile diff --git a/rileylink/src/main/res/values-sv-rSE/strings.xml b/rileylink/src/main/res/values-sv-rSE/strings.xml index 3aab6cb337..00a59b69a3 100644 --- a/rileylink/src/main/res/values-sv-rSE/strings.xml +++ b/rileylink/src/main/res/values-sv-rSE/strings.xml @@ -22,19 +22,23 @@ Pumpstatus Inställningar för Riley Link Riley Link - Riley Link-adress: - Riley Link-namn: - Ansluten enhet: + Adress: + Namn: + Batterinivå: + %1$d%% Anslutningsstatus: Anslutningsproblem: Enhet Enhetstyp: - Modell: + Konfigurerad modell: + Ansluten modell: Senast använda frekvens: Senaste anslutning: Firmwareversion: + BLE113: %1$s\nCC110: %2$s Serienummer på pumpen: Pumpfrekvens: + %1$.2f MHz Bluetooth initieras… Bluetoothfel @@ -56,9 +60,12 @@ Podden kan inte nås Medtronicpump - Omnipod + Omnipod (Eros) Ja Nej + + Visa batterinivå som rapporterats av OrangeLink/EmaLink + Fungerar inte med original Riley Link. Fungerar eventuellt inte med alla motsvarigheter heller. %1$d dag %1$d dagar diff --git a/wear/src/main/res/values-ca-rES/strings.xml b/wear/src/main/res/values-ca-rES/strings.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/wear/src/main/res/values-ca-rES/strings.xml @@ -0,0 +1,2 @@ + + diff --git a/wear/src/main/res/values-fr-rFR/strings.xml b/wear/src/main/res/values-fr-rFR/strings.xml index 991e74200d..2c216adf25 100644 --- a/wear/src/main/res/values-fr-rFR/strings.xml +++ b/wear/src/main/res/values-fr-rFR/strings.xml @@ -69,6 +69,7 @@ eGlucides Paramètres États + Re-sync Amorcer/Remplir Aucun Défaut diff --git a/wear/src/main/res/values-it-rIT/strings.xml b/wear/src/main/res/values-it-rIT/strings.xml index 010ca78e1b..fcc57d6d4a 100644 --- a/wear/src/main/res/values-it-rIT/strings.xml +++ b/wear/src/main/res/values-it-rIT/strings.xml @@ -69,6 +69,7 @@ eCarb Impostazioni Stato + Re-Sincronizza Carica/Riempi Nessuno Default diff --git a/wear/src/main/res/values-sv-rSE/strings.xml b/wear/src/main/res/values-sv-rSE/strings.xml index 14f9819786..e3ef66030b 100644 --- a/wear/src/main/res/values-sv-rSE/strings.xml +++ b/wear/src/main/res/values-sv-rSE/strings.xml @@ -69,6 +69,7 @@ eCarb Inställningar Status + Synkronisera om Förfyllning Ingen Standardinställning From c7ed508392f092dc7856583546bc2432a39510fa Mon Sep 17 00:00:00 2001 From: AdrianLxM Date: Sat, 9 Jan 2021 00:39:33 +0100 Subject: [PATCH 41/57] wear: show bolusprogress again and make it cancellable --- .../androidaps/data/ListenerService.java | 33 ++++++++++++------- .../interaction/actions/CPPActivity.java | 2 +- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/wear/src/main/java/info/nightscout/androidaps/data/ListenerService.java b/wear/src/main/java/info/nightscout/androidaps/data/ListenerService.java index dd97e1b6cc..a148c8766d 100644 --- a/wear/src/main/java/info/nightscout/androidaps/data/ListenerService.java +++ b/wear/src/main/java/info/nightscout/androidaps/data/ListenerService.java @@ -80,11 +80,12 @@ public class ListenerService extends WearableListenerService implements GoogleAp private static final String ACTION_RESEND_BULK = "com.dexdrip.stephenblack.nightwatch.RESEND_BULK_DATA"; - private static final String AAPS_NOTIFY_CHANNEL_ID = "AndroidAPS-Openloop"; + private static final String AAPS_NOTIFY_CHANNEL_ID_OPENLOOP = "AndroidAPS-Openloop"; + private static final String AAPS_NOTIFY_CHANNEL_ID_BOLUSPROGRESS = "AndroidAPS-bolus-progress"; + GoogleApiClient googleApiClient; private long lastRequest = 0; - private DismissThread confirmThread; private DismissThread bolusprogressThread; private static final String TAG = "ListenerService"; @@ -559,7 +560,7 @@ public class ListenerService extends WearableListenerService implements GoogleAp if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { CharSequence name = "AAPS Open Loop"; String description = "Open Loop request notiffication";//getString(R.string.channel_description); - NotificationChannel channel = new NotificationChannel(AAPS_NOTIFY_CHANNEL_ID, name, NotificationManager.IMPORTANCE_HIGH); + NotificationChannel channel = new NotificationChannel(AAPS_NOTIFY_CHANNEL_ID_OPENLOOP, name, NotificationManager.IMPORTANCE_HIGH); channel.setDescription(description); channel.enableVibration(true); @@ -570,7 +571,7 @@ public class ListenerService extends WearableListenerService implements GoogleAp } NotificationCompat.Builder builder = - new NotificationCompat.Builder(this, AAPS_NOTIFY_CHANNEL_ID); + new NotificationCompat.Builder(this, AAPS_NOTIFY_CHANNEL_ID_OPENLOOP); builder = builder.setSmallIcon(R.drawable.notif_icon) .setContentTitle(title) @@ -605,6 +606,20 @@ public class ListenerService extends WearableListenerService implements GoogleAp } private void showBolusProgress(int progresspercent, String progresstatus) { + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + CharSequence name = "AAPS Bolus Progress"; + String description = "Bolus progress and cancel"; + NotificationChannel channel = new NotificationChannel(AAPS_NOTIFY_CHANNEL_ID_BOLUSPROGRESS, name, NotificationManager.IMPORTANCE_HIGH); + channel.setDescription(description); + channel.enableVibration(true); + + // Register the channel with the system; you can't change the importance + // or other notification behaviors after this + NotificationManager notificationManager = getSystemService(NotificationManager.class); + notificationManager.createNotificationChannel(channel); + } + Intent cancelIntent = new Intent(this, ListenerService.class); cancelIntent.setAction(ACTION_CANCELBOLUS); PendingIntent cancelPendingIntent = PendingIntent.getService(this, 0, cancelIntent, 0); @@ -618,11 +633,13 @@ public class ListenerService extends WearableListenerService implements GoogleAp vibratePattern = new long[]{0, 1, 1000}; } + // TODO: proper channel. Does cancel work? NotificationCompat.Builder notificationBuilder = - new NotificationCompat.Builder(this) + new NotificationCompat.Builder(this, AAPS_NOTIFY_CHANNEL_ID_OPENLOOP) .setSmallIcon(R.drawable.ic_icon) .setContentTitle("Bolus Progress") .setContentText(progresspercent + "% - " + progresstatus) + .setSubText("press to cancel") .setContentIntent(cancelPendingIntent) .setPriority(NotificationCompat.PRIORITY_MAX) .setVibrate(vibratePattern) @@ -631,9 +648,6 @@ public class ListenerService extends WearableListenerService implements GoogleAp NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this); - if(confirmThread != null){ - confirmThread.invalidate(); - } notificationManager.notify(BOLUS_PROGRESS_NOTIF_ID, notificationBuilder.build()); notificationManager.cancel(CONFIRM_NOTIF_ID); // multiple watch setup @@ -656,9 +670,6 @@ public class ListenerService extends WearableListenerService implements GoogleAp } private void scheduleDismissBolusprogress(final int seconds) { - if(confirmThread != null){ - confirmThread.invalidate(); - } bolusprogressThread = new DismissThread(BOLUS_PROGRESS_NOTIF_ID, seconds); bolusprogressThread.start(); } diff --git a/wear/src/main/java/info/nightscout/androidaps/interaction/actions/CPPActivity.java b/wear/src/main/java/info/nightscout/androidaps/interaction/actions/CPPActivity.java index ab8647bcde..dee9ab3aef 100644 --- a/wear/src/main/java/info/nightscout/androidaps/interaction/actions/CPPActivity.java +++ b/wear/src/main/java/info/nightscout/androidaps/interaction/actions/CPPActivity.java @@ -93,7 +93,7 @@ public class CPPActivity extends ViewSelectorActivity { if (editPercentage != null){ def = SafeParse.stringToDouble(editPercentage.editText.getText().toString()); } - editPercentage = new PlusMinusEditText(view, R.id.amountfield, R.id.plusbutton, R.id.minusbutton, def, 50d, 150d, 1d, new DecimalFormat("0"), false); + editPercentage = new PlusMinusEditText(view, R.id.amountfield, R.id.plusbutton, R.id.minusbutton, def, 30d, 250d, 1d, new DecimalFormat("0"), false); setLabelToPlusMinusView(view, aaps.gs(R.string.action_percentage)); container.addView(view); return view; From 60c7a6f2e63839f297d8e434191936d25cf9c067 Mon Sep 17 00:00:00 2001 From: AdrianLxM Date: Sat, 9 Jan 2021 03:00:45 +0100 Subject: [PATCH 42/57] wear: forecast below 400 not 300 --- .../info/nightscout/androidaps/watchfaces/BgGraphBuilder.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/wear/src/main/java/info/nightscout/androidaps/watchfaces/BgGraphBuilder.java b/wear/src/main/java/info/nightscout/androidaps/watchfaces/BgGraphBuilder.java index 7666dcd907..571306de3d 100644 --- a/wear/src/main/java/info/nightscout/androidaps/watchfaces/BgGraphBuilder.java +++ b/wear/src/main/java/info/nightscout/androidaps/watchfaces/BgGraphBuilder.java @@ -31,6 +31,7 @@ import lecho.lib.hellocharts.model.Viewport; */ public class BgGraphBuilder { public static final double MAX_PREDICTION__TIME_RATIO = (3d / 5); + public static final double UPPER_CUTOFF_SGV = 300; private final long predictionEndTime; private final List predictionsList; private final ArrayList bolusWatchDataList; @@ -317,7 +318,7 @@ public class BgGraphBuilder { long endTime = getPredictionEndTime(); for (BgWatchData bwd : predictionsList) { if (bwd.timestamp <= endTime) { - double value = bwd.sgv < 300 ? bwd.sgv : 300; + double value = Math.min(bwd.sgv, UPPER_CUTOFF_SGV); if (!values.containsKey(bwd.color)) { values.put(bwd.color, new ArrayList<>()); } From b1ac181791663a7d5a16f00c5eb1bf9b629b6a9a Mon Sep 17 00:00:00 2001 From: AdrianLxM Date: Sat, 9 Jan 2021 04:17:28 +0100 Subject: [PATCH 43/57] wear: use correct notification channel --- .../java/info/nightscout/androidaps/data/ListenerService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wear/src/main/java/info/nightscout/androidaps/data/ListenerService.java b/wear/src/main/java/info/nightscout/androidaps/data/ListenerService.java index a148c8766d..db9204f1ec 100644 --- a/wear/src/main/java/info/nightscout/androidaps/data/ListenerService.java +++ b/wear/src/main/java/info/nightscout/androidaps/data/ListenerService.java @@ -635,7 +635,7 @@ public class ListenerService extends WearableListenerService implements GoogleAp // TODO: proper channel. Does cancel work? NotificationCompat.Builder notificationBuilder = - new NotificationCompat.Builder(this, AAPS_NOTIFY_CHANNEL_ID_OPENLOOP) + new NotificationCompat.Builder(this, AAPS_NOTIFY_CHANNEL_ID_BOLUSPROGRESS) .setSmallIcon(R.drawable.ic_icon) .setContentTitle("Bolus Progress") .setContentText(progresspercent + "% - " + progresstatus) From f818ae377f4438f828774e665beb5ef2a8348f20 Mon Sep 17 00:00:00 2001 From: AdrianLxM Date: Sat, 9 Jan 2021 07:00:32 +0100 Subject: [PATCH 44/57] wear: correct upper cutoff --- wear/build.gradle | 4 ++-- .../info/nightscout/androidaps/watchfaces/BgGraphBuilder.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/wear/build.gradle b/wear/build.gradle index db4b0c5129..5faf94bc8b 100644 --- a/wear/build.gradle +++ b/wear/build.gradle @@ -50,8 +50,8 @@ android { applicationId "info.nightscout.androidaps" minSdkVersion 23 targetSdkVersion 28 - versionCode 1 - versionName "1.0.2" + versionCode 2 + versionName "1.0.3" buildConfigField "String", "BUILDVERSION", generateGitBuild() } buildTypes { diff --git a/wear/src/main/java/info/nightscout/androidaps/watchfaces/BgGraphBuilder.java b/wear/src/main/java/info/nightscout/androidaps/watchfaces/BgGraphBuilder.java index 571306de3d..3cae85f962 100644 --- a/wear/src/main/java/info/nightscout/androidaps/watchfaces/BgGraphBuilder.java +++ b/wear/src/main/java/info/nightscout/androidaps/watchfaces/BgGraphBuilder.java @@ -31,7 +31,7 @@ import lecho.lib.hellocharts.model.Viewport; */ public class BgGraphBuilder { public static final double MAX_PREDICTION__TIME_RATIO = (3d / 5); - public static final double UPPER_CUTOFF_SGV = 300; + public static final double UPPER_CUTOFF_SGV = 400; private final long predictionEndTime; private final List predictionsList; private final ArrayList bolusWatchDataList; From e8be0fbd79cd0f94ddaf0e513407d7943f8629d9 Mon Sep 17 00:00:00 2001 From: parapenT1sta Date: Sat, 9 Jan 2021 16:48:17 +0000 Subject: [PATCH 45/57] Update strings.xml --- app/src/main/res/values/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fb96173fbe..e9734c68e8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1405,7 +1405,7 @@ Donate your data to science OH You have been signed out of Open Humans - Click here to sign in a again if this wasn\'t on purpose. + Click here to sign in again if this wasn't on purpose. Only upload if connected to WiFi Only upload if charging Worker State: %s @@ -1418,7 +1418,7 @@ Alarm smscommunicator_report_pump_ureachable Send SMS if unreachable pump event is triggered - Report pump ureachable + Report pump unreachable Run alarm when is time to eat Run alarm in %1$d min Bolus advisor From 50dcf7d8bb204bba3eb53538f192ee4c62503ab2 Mon Sep 17 00:00:00 2001 From: parapenT1sta Date: Sat, 9 Jan 2021 21:56:31 +0000 Subject: [PATCH 46/57] Update strings.xml --- app/src/main/res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e9734c68e8..a9caf6bc7b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1405,7 +1405,7 @@ Donate your data to science OH You have been signed out of Open Humans - Click here to sign in again if this wasn't on purpose. + Click here to sign in again if this wasn\'t on purpose. Only upload if connected to WiFi Only upload if charging Worker State: %s From e8a0a1fcafdd9e4bbf1a002605eb6752db397878 Mon Sep 17 00:00:00 2001 From: AdrianLxM Date: Sun, 10 Jan 2021 03:27:47 +0100 Subject: [PATCH 47/57] only handl callback if fragment is attached to activity --- .../plugins/general/overview/OverviewFragment.kt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewFragment.kt index 28bd08d3d0..cf12a53b27 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewFragment.kt @@ -281,12 +281,12 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList if (childFragmentManager.isStateSaved) return activity?.let { activity -> when (v.id) { - R.id.overview_treatmentbutton -> protectionCheck.queryProtection(activity, ProtectionCheck.Protection.BOLUS, UIRunnable { TreatmentDialog().show(childFragmentManager, "Overview") }) - R.id.overview_wizardbutton -> protectionCheck.queryProtection(activity, ProtectionCheck.Protection.BOLUS, UIRunnable { WizardDialog().show(childFragmentManager, "Overview") }) - R.id.overview_insulinbutton -> protectionCheck.queryProtection(activity, ProtectionCheck.Protection.BOLUS, UIRunnable { InsulinDialog().show(childFragmentManager, "Overview") }) - R.id.overview_quickwizardbutton -> protectionCheck.queryProtection(activity, ProtectionCheck.Protection.BOLUS, UIRunnable { onClickQuickWizard() }) - R.id.overview_carbsbutton -> protectionCheck.queryProtection(activity, ProtectionCheck.Protection.BOLUS, UIRunnable { CarbsDialog().show(childFragmentManager, "Overview") }) - R.id.overview_temptarget -> protectionCheck.queryProtection(activity, ProtectionCheck.Protection.BOLUS, UIRunnable { TempTargetDialog().show(childFragmentManager, "Overview") }) + R.id.overview_treatmentbutton -> protectionCheck.queryProtection(activity, ProtectionCheck.Protection.BOLUS, UIRunnable { if(isAdded) TreatmentDialog().show(childFragmentManager, "Overview") }) + R.id.overview_wizardbutton -> protectionCheck.queryProtection(activity, ProtectionCheck.Protection.BOLUS, UIRunnable { if(isAdded) WizardDialog().show(childFragmentManager, "Overview") }) + R.id.overview_insulinbutton -> protectionCheck.queryProtection(activity, ProtectionCheck.Protection.BOLUS, UIRunnable { if(isAdded) InsulinDialog().show(childFragmentManager, "Overview") }) + R.id.overview_quickwizardbutton -> protectionCheck.queryProtection(activity, ProtectionCheck.Protection.BOLUS, UIRunnable { if(isAdded) onClickQuickWizard() }) + R.id.overview_carbsbutton -> protectionCheck.queryProtection(activity, ProtectionCheck.Protection.BOLUS, UIRunnable { if(isAdded) CarbsDialog().show(childFragmentManager, "Overview") }) + R.id.overview_temptarget -> protectionCheck.queryProtection(activity, ProtectionCheck.Protection.BOLUS, UIRunnable { if(isAdded) TempTargetDialog().show(childFragmentManager, "Overview") }) R.id.overview_activeprofile -> { ProfileViewerDialog().also { pvd -> @@ -345,7 +345,7 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList R.id.overview_apsmode -> { protectionCheck.queryProtection(activity, ProtectionCheck.Protection.BOLUS, UIRunnable { - LoopDialog().also { dialog -> + if(isAdded) LoopDialog().also { dialog -> dialog.arguments = Bundle().also { it.putInt("showOkCancel", 1) } }.show(childFragmentManager, "Overview") }) From 4c2527296983ae4a8958dd331a794762ad4893c1 Mon Sep 17 00:00:00 2001 From: AdrianLxM Date: Sun, 10 Jan 2021 03:41:54 +0100 Subject: [PATCH 48/57] avoid concurrent button press crash in TimeListEdit --- .../androidaps/utils/TimeListEdit.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/utils/TimeListEdit.java b/app/src/main/java/info/nightscout/androidaps/utils/TimeListEdit.java index fb1dfa990c..e22e8c6638 100644 --- a/app/src/main/java/info/nightscout/androidaps/utils/TimeListEdit.java +++ b/app/src/main/java/info/nightscout/androidaps/utils/TimeListEdit.java @@ -192,7 +192,7 @@ public class TimeListEdit { int before, int count) { } }); - numberPickers1[position].setTag(tagPrefix +"-1-" + position); + numberPickers1[position].setTag(tagPrefix + "-1-" + position); numberPickers2[position].setTextWatcher(new TextWatcher() { @Override @@ -212,7 +212,7 @@ public class TimeListEdit { int before, int count) { } }); - numberPickers2[position].setTag(tagPrefix +"-2-" + position); + numberPickers2[position].setTag(tagPrefix + "-2-" + position); layout.addView(childView); } @@ -245,7 +245,7 @@ public class TimeListEdit { if (i == 0) next = ONEHOURINSECONDS; fillSpinner(timeSpinner, secondFromMidnight(i), previous, next); - editText1.setParams(value1(i), min, max, step, formatter, false,null); + editText1.setParams(value1(i), min, max, step, formatter, false, null); editText2.setParams(value2(i), min, max, step, formatter, false, null); if (data2 == null) { @@ -372,10 +372,12 @@ public class TimeListEdit { } private void addItem(int index, int timeAsSeconds, double value1, double value2) { - if (itemsCount() > inflatedUntil) { - layout.removeView(finalAdd); - inflateRow(++inflatedUntil); - layout.addView(finalAdd); + synchronized (this) { + if (itemsCount() > inflatedUntil) { + layout.removeView(finalAdd); + inflateRow(++inflatedUntil); + layout.addView(finalAdd); + } } try { // shift data From b509d13073edf58fcbc9285406479305a6e8a5d3 Mon Sep 17 00:00:00 2001 From: AdrianLxM Date: Sun, 10 Jan 2021 03:54:51 +0100 Subject: [PATCH 49/57] avoid concurrent button press crash in TimeListEdit - now for real --- .../nightscout/androidaps/utils/TimeListEdit.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/utils/TimeListEdit.java b/app/src/main/java/info/nightscout/androidaps/utils/TimeListEdit.java index e22e8c6638..fd72be7b93 100644 --- a/app/src/main/java/info/nightscout/androidaps/utils/TimeListEdit.java +++ b/app/src/main/java/info/nightscout/androidaps/utils/TimeListEdit.java @@ -372,12 +372,11 @@ public class TimeListEdit { } private void addItem(int index, int timeAsSeconds, double value1, double value2) { - synchronized (this) { - if (itemsCount() > inflatedUntil) { - layout.removeView(finalAdd); - inflateRow(++inflatedUntil); - layout.addView(finalAdd); - } + if (itemsCount() >= 24) return; + if (itemsCount() > inflatedUntil) { + layout.removeView(finalAdd); + inflateRow(++inflatedUntil); + layout.addView(finalAdd); } try { // shift data From 301c44627f11abe49fad98c53052f60a8f394fb0 Mon Sep 17 00:00:00 2001 From: AdrianLxM Date: Sun, 10 Jan 2021 04:10:21 +0100 Subject: [PATCH 50/57] fix menu crash and make graph label translatable --- .../androidaps/plugins/general/overview/OverviewMenus.kt | 9 +++++---- app/src/main/res/values/strings.xml | 1 + 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewMenus.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewMenus.kt index 03cd701bf2..af10d60f85 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewMenus.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewMenus.kt @@ -88,7 +88,8 @@ class OverviewMenus @Inject constructor( fun setupChartMenu(chartButton: ImageButton) { loadGraphConfig() - val numOfGraphs = _setting.size // 1 main + x secondary + val settingsCopy = setting + val numOfGraphs = settingsCopy.size // 1 main + x secondary chartButton.setOnClickListener { v: View -> val predictionsAvailable: Boolean = when { @@ -100,7 +101,7 @@ class OverviewMenus @Inject constructor( for (g in 0 until numOfGraphs) { if (g != 0 && g < numOfGraphs) { - val dividerItem = popup.menu.add(Menu.NONE, g, Menu.NONE, "------- " + "Graph" + " " + g + " -------") + val dividerItem = popup.menu.add(Menu.NONE, g, Menu.NONE, "------- ${resourceHelper.gs(R.string.graph_menu_divider_header)} $g -------") dividerItem.isCheckable = true dividerItem.isChecked = true } @@ -117,12 +118,12 @@ class OverviewMenus @Inject constructor( s.setSpan(ForegroundColorSpan(resourceHelper.gc(m.colorId)), 0, s.length, 0) item.title = s item.isCheckable = true - item.isChecked = _setting[g][m.ordinal] + item.isChecked = settingsCopy[g][m.ordinal] } } } if (numOfGraphs < MAX_GRAPHS) { - val dividerItem = popup.menu.add(Menu.NONE, numOfGraphs, Menu.NONE, "------- " + "Graph" + " " + numOfGraphs + " -------") + val dividerItem = popup.menu.add(Menu.NONE, numOfGraphs, Menu.NONE, "------- ${resourceHelper.gs(R.string.graph_menu_divider_header)} $numOfGraphs -------") dividerItem.isCheckable = true dividerItem.isChecked = false } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fb96173fbe..37e96619fa 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1429,5 +1429,6 @@ Time to eat!\nRun Bolus wizard and do calculation again. Time to eat Crash logs upload disabled! + Graph From 68be654fd4963977e67f7b1dbbbc05dc27349358 Mon Sep 17 00:00:00 2001 From: AdrianLxM Date: Sun, 10 Jan 2021 19:56:44 +0100 Subject: [PATCH 51/57] Rename upload only key and description This renames the key that people that have disabled it in the past will actively have to re-enable it. Adds extra warning that it is dangerous to disable it. --- app/src/main/res/values/strings.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fb96173fbe..722491e76b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -331,8 +331,8 @@ Meal Corr Actions - NS upload only (disabled sync) - NS upload only. Not effective on SGV unless a local source like xDrip is selected. Not effective on Profiles while NS-Profiles is used.\n!!! WARNING !!! Disabling this option may cause malfunctions and insulin overdose if any of your component (AAPS, NS, xDrip) is wrong configured. Carefully watch if data displayed by AAPS match the pump state! + (DANGEROUS TO DISABLE) NS upload only + NS upload only (disabled sync). Not effective on SGV unless a local source like xDrip is selected. Not effective on Profiles while NS-Profiles is used.\n!!! WARNING !!! Disabling this option may cause malfunctions and insulin overdose if any of your component (AAPS, NS, xDrip) is wrong configured. Carefully watch if data displayed by AAPS match the pump state! Pump not initialized! Prime/Fill Please make sure the amount matches the specification of your infusion set! @@ -549,7 +549,7 @@ Add BGI to status line No upload to NS All data sent to NS are dropped. AAPS is connected to NS but no change in NS is done - ns_upload_only + ns_upload_only2 ns_noupload Cancel Extended Bolus Do Profile Switch From fb1a4d40bc0f20b1eb3d43c24829257d97edeacd Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Sun, 10 Jan 2021 22:38:13 +0100 Subject: [PATCH 52/57] New Crowdin updates (#202) * New translations strings.xml (French) * New translations strings.xml (Dutch) * New translations strings.xml (Portuguese) * New translations exam.xml (Portuguese) * New translations strings.xml (Portuguese) * New translations strings.xml (Portuguese) * New translations exam.xml (Portuguese) * New translations objectives.xml (Portuguese) * New translations strings.xml (German) * New translations strings.xml (Portuguese) * New translations strings.xml (Italian) * New translations insight_alert_descriptions.xml (Chinese Simplified) * New translations strings.xml (Romanian) * New translations strings.xml (Dutch) * New translations strings.xml (Swedish) * New translations strings.xml (Slovak) * New translations strings.xml (Russian) * New translations strings.xml (Portuguese) * New translations strings.xml (Norwegian) * New translations strings.xml (Lithuanian) * New translations strings.xml (Bulgarian) * New translations strings.xml (Italian) * New translations strings.xml (German) * New translations strings.xml (Spanish) * New translations strings.xml (French) * New translations strings.xml (Polish) * New translations strings.xml (Hebrew) * New translations strings.xml (Czech) * New translations strings.xml (German) * New translations exam.xml (Russian) * New translations strings.xml (Hebrew) * New translations strings.xml (Russian) * New translations exam.xml (Russian) * New translations strings.xml (Russian) * New translations exam.xml (Russian) * New translations objectives.xml (Russian) * New translations strings.xml (Romanian) * New translations strings.xml (French) * New translations strings.xml (French) * New translations strings.xml (Italian) * New translations strings.xml (Dutch) * New translations strings.xml (Romanian) * New translations strings.xml (Russian) * New translations strings.xml (Dutch) * New translations strings.xml (Italian) * New translations strings.xml (French) * New translations strings.xml (Hebrew) * New translations strings.xml (Romanian) * New translations strings.xml (Russian) * New translations strings.xml (Swedish) * New translations strings.xml (Turkish) * New translations strings.xml (Chinese Simplified) * New translations strings.xml (Portuguese, Brazilian) * New translations strings.xml (Norwegian) * New translations strings.xml (Bulgarian) * New translations strings.xml (Portuguese) * New translations strings.xml (Slovak) * New translations strings.xml (Dutch) * New translations strings.xml (Spanish) * New translations strings.xml (Hebrew) * New translations strings.xml (Lithuanian) * New translations strings.xml (Czech) * New translations strings.xml (French) * New translations strings.xml (Afrikaans) * New translations strings.xml (German) * New translations strings.xml (Greek) * New translations strings.xml (Irish) * New translations strings.xml (Italian) * New translations strings.xml (Korean) * New translations strings.xml (Polish) * New translations exam.xml (Hebrew) * New translations exam.xml (German) * New translations exam.xml (Czech) * New translations exam.xml (Dutch) * New translations exam.xml (Polish) * New translations exam.xml (Portuguese) * New translations insight_alert_descriptions.xml (Danish) * New translations insight_alert_codes.xml (Danish) * New translations insight_exceptions.xml (Danish) * New translations strings.xml (Portuguese) * New translations strings.xml (Dutch) * New translations insight_alert_titles.xml (Danish) * New translations exam.xml (Danish) * New translations objectives.xml (Danish) * New translations strings.xml (Danish) * New translations strings.xml (Danish) * New translations strings.xml (Danish) * New translations strings.xml (Danish) * New translations strings.xml (Danish) * New translations strings.xml (German) * New translations strings.xml (Czech) * New translations objectives.xml (Polish) * New translations strings.xml (Hebrew) * New translations strings.xml (Portuguese) * New translations strings.xml (Norwegian) * New translations strings.xml (Bulgarian) * New translations strings.xml (Afrikaans) * New translations strings.xml (Spanish) * New translations strings.xml (Spanish) * New translations strings.xml (Portuguese, Brazilian) * New translations strings.xml (Chinese Simplified) * New translations strings.xml (Turkish) * New translations strings.xml (Slovenian) * New translations strings.xml (Lithuanian) * New translations strings.xml (Slovak) * New translations strings.xml (Russian) * New translations strings.xml (Portuguese) * New translations strings.xml (Hebrew) * New translations strings.xml (Portuguese) * New translations strings.xml (Slovak) * New translations strings.xml (Russian) * New translations strings.xml (Hebrew) * New translations strings.xml (Bulgarian) * New translations strings.xml (Czech) * New translations strings.xml (Portuguese) * New translations strings.xml (Croatian) * New translations insight_alert_descriptions.xml (Hebrew) * New translations insight_alert_descriptions.xml (Turkish) * New translations strings.xml (Dutch) * New translations strings.xml (Dutch) * New translations strings.xml (French) * New translations strings.xml (French) * New translations strings.xml (Czech) --- app/src/main/res/values-af-rZA/strings.xml | 9 -- app/src/main/res/values-bg-rBG/strings.xml | 12 -- app/src/main/res/values-cs-rCZ/exam.xml | 2 +- app/src/main/res/values-cs-rCZ/strings.xml | 23 +-- app/src/main/res/values-da-rDK/exam.xml | 2 + .../res/values-da-rDK/insight_alert_codes.xml | 2 + .../insight_alert_descriptions.xml | 2 + .../values-da-rDK/insight_alert_titles.xml | 2 + .../res/values-da-rDK/insight_exceptions.xml | 2 + app/src/main/res/values-da-rDK/objectives.xml | 2 + app/src/main/res/values-de-rDE/exam.xml | 2 +- app/src/main/res/values-de-rDE/strings.xml | 13 +- app/src/main/res/values-el-rGR/strings.xml | 10 -- app/src/main/res/values-es-rES/strings.xml | 12 -- app/src/main/res/values-fr-rFR/strings.xml | 37 ++--- app/src/main/res/values-ga-rIE/strings.xml | 1 - app/src/main/res/values-it-rIT/strings.xml | 12 +- app/src/main/res/values-iw-rIL/exam.xml | 30 ++-- .../insight_alert_descriptions.xml | 4 +- app/src/main/res/values-iw-rIL/strings.xml | 11 -- app/src/main/res/values-ko-rKR/strings.xml | 10 -- app/src/main/res/values-lt-rLT/strings.xml | 12 -- app/src/main/res/values-nl-rNL/exam.xml | 4 +- app/src/main/res/values-nl-rNL/strings.xml | 45 +++--- app/src/main/res/values-no-rNO/strings.xml | 13 -- app/src/main/res/values-pl-rPL/exam.xml | 4 +- app/src/main/res/values-pl-rPL/objectives.xml | 4 +- app/src/main/res/values-pl-rPL/strings.xml | 12 -- app/src/main/res/values-pt-rBR/strings.xml | 10 -- app/src/main/res/values-pt-rPT/exam.xml | 32 ++++ app/src/main/res/values-pt-rPT/objectives.xml | 2 +- app/src/main/res/values-pt-rPT/strings.xml | 152 ++++++++++++------ app/src/main/res/values-ro-rRO/strings.xml | 24 +-- app/src/main/res/values-ru-rRU/exam.xml | 86 ++++++++++ app/src/main/res/values-ru-rRU/objectives.xml | 3 + app/src/main/res/values-ru-rRU/strings.xml | 30 ++-- app/src/main/res/values-sk-rSK/strings.xml | 12 -- app/src/main/res/values-sv-rSE/strings.xml | 12 -- .../insight_alert_descriptions.xml | 5 +- app/src/main/res/values-tr-rTR/strings.xml | 9 -- .../insight_alert_descriptions.xml | 5 +- app/src/main/res/values-zh-rCN/strings.xml | 9 -- core/src/main/res/values-cs-rCZ/strings.xml | 2 +- core/src/main/res/values-da-rDK/strings.xml | 46 ++++++ core/src/main/res/values-iw-rIL/strings.xml | 8 +- core/src/main/res/values-pt-rPT/strings.xml | 5 +- dana/src/main/res/values-da-rDK/strings.xml | 2 + dana/src/main/res/values-iw-rIL/strings.xml | 6 +- dana/src/main/res/values-nl-rNL/strings.xml | 2 +- dana/src/main/res/values-pt-rPT/strings.xml | 2 +- .../src/main/res/values-da-rDK/strings.xml | 17 ++ .../src/main/res/values-bg-rBG/strings.xml | 3 +- .../src/main/res/values-es-rES/strings.xml | 2 - .../src/main/res/values-fr-rFR/strings.xml | 6 +- .../src/main/res/values-lt-rLT/strings.xml | 2 - .../src/main/res/values-pt-rPT/strings.xml | 38 +++++ .../src/main/res/values-ru-rRU/strings.xml | 2 - .../src/main/res/values-sk-rSK/strings.xml | 2 - .../src/main/res/values-af-rZA/strings.xml | 2 +- .../src/main/res/values-bg-rBG/strings.xml | 6 +- .../src/main/res/values-da-rDK/strings.xml | 10 ++ .../src/main/res/values-es-rES/strings.xml | 6 +- .../src/main/res/values-hr-rHR/strings.xml | 1 + .../src/main/res/values-pt-rBR/strings.xml | 2 +- .../src/main/res/values-pt-rPT/strings.xml | 21 ++- .../src/main/res/values-ru-rRU/strings.xml | 6 +- .../src/main/res/values-sk-rSK/strings.xml | 6 +- .../src/main/res/values-sl-rSI/strings.xml | 1 + .../src/main/res/values-tr-rTR/strings.xml | 1 + .../src/main/res/values-zh-rCN/strings.xml | 2 +- wear/src/main/res/values-cs-rCZ/strings.xml | 1 + wear/src/main/res/values-da-rDK/strings.xml | 2 + wear/src/main/res/values-de-rDE/strings.xml | 1 + wear/src/main/res/values-iw-rIL/strings.xml | 3 +- wear/src/main/res/values-nl-rNL/strings.xml | 1 + wear/src/main/res/values-no-rNO/strings.xml | 1 + wear/src/main/res/values-pt-rPT/strings.xml | 2 + 77 files changed, 518 insertions(+), 387 deletions(-) create mode 100644 app/src/main/res/values-da-rDK/exam.xml create mode 100644 app/src/main/res/values-da-rDK/insight_alert_codes.xml create mode 100644 app/src/main/res/values-da-rDK/insight_alert_descriptions.xml create mode 100644 app/src/main/res/values-da-rDK/insight_alert_titles.xml create mode 100644 app/src/main/res/values-da-rDK/insight_exceptions.xml create mode 100644 app/src/main/res/values-da-rDK/objectives.xml create mode 100644 core/src/main/res/values-da-rDK/strings.xml create mode 100644 dana/src/main/res/values-da-rDK/strings.xml create mode 100644 medtronic/src/main/res/values-da-rDK/strings.xml create mode 100644 rileylink/src/main/res/values-da-rDK/strings.xml create mode 100644 wear/src/main/res/values-da-rDK/strings.xml diff --git a/app/src/main/res/values-af-rZA/strings.xml b/app/src/main/res/values-af-rZA/strings.xml index 06376e7610..9853a45bc8 100644 --- a/app/src/main/res/values-af-rZA/strings.xml +++ b/app/src/main/res/values-af-rZA/strings.xml @@ -38,7 +38,6 @@ Ontvang BG waardes vanaf Glimp. Onvang BG waardes vanaf die 600SeriesAndroidUploader. Laai BG data af vanaf Nightscout - Ontvang BG waardes vana xDrip. Stoor alle behandelings wat gedoen was Monitor en beheer AndroidAPS met jou WearOS horlosie. Wys informasie van jou loop op jou xDrip+ horlosie-gesig. @@ -114,7 +113,6 @@ Verander jou insette! BG bron Waarvandaan moet AndroidAPS data kry? - xDrip APS modus Geslote lus Oop lus @@ -197,7 +195,6 @@ Maaltyd Corr Aksies - NS laai net op (opgeskorte sinkro) Pomp nie geïnisialiseer nie! Prima/vul Maak asseblief seker dat die hoeveelheid ooreenstem met die spesifikasies van jou infusie stel! @@ -247,7 +244,6 @@ SMS Verkort oortjie titels Gebruik altyd kort gemiddelde delta in plaas van eenvoudige delta - Nuttig wanneer data van ongefiltreerde bronne soos xDrip baie raas. Profiel Verstek waarde: 3 dit is \'n sleutel OpenAPS veiligheidsdrumpels. Wat dit doen is om jou basale te berk tot 3 x (in hierdie mense) jou grootste basale koers. Jy sal waarskynlik nooit dit hoef te verander, maar jy moet bewus wees wat bespreek is oor \"3 x max daaglikse; 4 x huidige\"vir veiligheidsdrumpels. Verstek waarde: 4 dit is die helfte van die sleutel OpenAPS veiligheid limiete, en die ander helfte van \"3 x maks daaglikse; 4 x huidige\"van die veiligheid limiet. Dit beteken jou basale, ongeag max basale stel op jou pomp, kan enige hoër wees as hierdie nommer tye die huidige vlak van jou basale. Dit is om te verhoed dat mense in gevaarlike gebied deur instelling buitensporig hoë max basals voor om te verstaan hoe die algoritme werk. Weer, die verstek is 4 x; die meeste mense sal nooit moet dit aanpas en is eerder meer geneig om te moet aanpas ander instellings as hulle voel hulle \"loop in\" hierdie veiligheid limiet. @@ -260,9 +256,6 @@ Ongeldige SMS selfoon nommer Kalibrasie xDrip + nie geïnstalleerd nie - Kalibrasie gestuur na xDrip - Kalibrasie gestuur. Ontvang moet geaktiveer word in xDrip. - xDrip ontvang nie kalibrasies Pomp opgeskort Besig met uitvoering Virtuele pomp instellings @@ -333,8 +326,6 @@ Omtrent Vermiste SMS toestemming Toestemming vir foon status nog nie gegee nie - xDrip Status (horlosie) - xDrip Statusline (horlosie) xds Wys BGI Voeg BGI by status lyn diff --git a/app/src/main/res/values-bg-rBG/strings.xml b/app/src/main/res/values-bg-rBG/strings.xml index 95179f9403..6f819a0eb6 100644 --- a/app/src/main/res/values-bg-rBG/strings.xml +++ b/app/src/main/res/values-bg-rBG/strings.xml @@ -42,7 +42,6 @@ Получава данни за КЗ от Glimp. Получават стойности на КЗ от 600SeriesAndroidUploader. Изтегля стойности на КЗ от Nightscout - Получава данни за КЗ от xDrip. Записва всички процедури, които са били направени Наблюдавайте и контролирайте AndroidAPS, от вашия WearOS часовник. Покажи информация за вашия APS на xDrip + циферблат на часовник. @@ -119,7 +118,6 @@ Променете данните! Източник на данни за КЗ От къде трябва да AndroidAPS да си взима данни? - xDrip APS режим Затворен кръг Отворен кръг @@ -285,7 +283,6 @@ Хранене Корекция Действия - Само качва данни в NS (изключва синхронизацията) Помпата не е инициализирана! Пълнене на сет Моля, уверете се, че стойността съответсва на вашият сет! Този инсулин не се включва в IOB! @@ -340,7 +337,6 @@ SMS Използвай къси имена Използвай краткоср. Δ вместо разлика от последната КЗ - Полезно при данни за КЗ с много шум Профил По подразбиране: 3 Това е основен параметър в сигурността на OpenAPS. Той ограничава максималният базал да бъде 3 пъти най-голямата стойност от дневните базали. Не би трябвало да има нужа от промяна, защото от опит сме проверили, че максимумите са “3x от най-високия дневен; 4x от текущия”. По подразбиране: 4\nТова е другият основен параметър в сигурността на OpenAPS, и другата половина от \"3x от най-високия дневен; 4x от текущия\". Това означава, че независимо от макс базал настроен в помпата, стойността на базала не може да е по-висока от тази стойност умножена по стойността на базала за текущият час от денонощието. Това е с цел да предпази от прекалено високи стойности на максималния базал преди да разбират как работи алгоритъма. Повечето от Вас няма да имат нужда от смяна на тази стойност и могат да се справят с настойки на другите параметри. @@ -354,9 +350,6 @@ Грешен тел номер за SMS Калибрация xDrip+ не е инсталиран - Калибрацията е изпратена към xDrip - Неуспешно. Получаването трябва да е разрешено в xDrip. - xDrip не получава калибрации Помпата е спряна Изпълнява Настойки Виртуална Помпа @@ -459,8 +452,6 @@ За приложението SMS команда забранена Липсва разрешение до данни от телефона - xDrip статус (часовник) - xDrip статус (часовник) xds Показвай BGI Добави BGI към статуса @@ -503,7 +494,6 @@ Откажи Не всички профили са заредени! Стойностите не са запазени! - Активирайте предаване на данни към други приложения (като xDrip). Не активирайте, ако имате повече от един AAPS или имате инсталиран NSClient! Разреши локално предаване на данни Продължителност [мин.] OpenAPS SMB @@ -1174,7 +1164,6 @@ Дарете данните си на науката. OH Излязохте от \"Open Humans\". - Натиснете тук за да влезете отново, ако това не е било нарочно. Качване, само при свързано WiFi Качване само при зареждане Статус: %s @@ -1186,7 +1175,6 @@ Не убивай приложението? Аларма Изпращане на SMS, ако помпата е недостъпна - Докладвай недостъпна помпа Алармата, когато е време за хранене. Сларма след %1$d мин Съветник на болус diff --git a/app/src/main/res/values-cs-rCZ/exam.xml b/app/src/main/res/values-cs-rCZ/exam.xml index efc03b4be0..527f725840 100644 --- a/app/src/main/res/values-cs-rCZ/exam.xml +++ b/app/src/main/res/values-cs-rCZ/exam.xml @@ -138,7 +138,7 @@ Aktivní inzulín (IOB) Zatrhněte všechny správné odpovědi. Hodnota IOB je ovlivněna vydanými dočasnými bazály. - Vysoký dočasný bazál nebude spuštěn, pokud je Váše glykémie nižší než cíl. + Vysoký dočasný bazál nebude spuštěn, pokud je Vaše glykémie nižší než cíl. Negativní IOB po značnou dobu bez cvičení naznačuje, že váš profil je příliš \"silný\" a ve vašem profilu je potřeba méně inzulínu. Pozitivní IOB na značnou dobu naznačuje rezistenci vůči inzulinu nebo neohlášené jídlo. Zadávání sacharidů a bolusy diff --git a/app/src/main/res/values-cs-rCZ/strings.xml b/app/src/main/res/values-cs-rCZ/strings.xml index 1fa0c3ed63..30e3733902 100644 --- a/app/src/main/res/values-cs-rCZ/strings.xml +++ b/app/src/main/res/values-cs-rCZ/strings.xml @@ -42,7 +42,7 @@ Příjem glykémií z Glimpu. Příjem glykémií z Uploaderu 640G. Příjem glykémií z Nightscoutu - Příjem glykémií z xDripu. + Příjem glykémií z xDripu+. Ukládá všechny ošetření do databáze Zobrazování stavu a řízení AndroidAPS z hodinek s WearOS Zobrazování informací o smyčce na xDrip+ watchface. @@ -119,7 +119,7 @@ Změňte zadání! Zdroj glykémie Odkud má získávat AndroidAPS glykémie? - xDrip + xDrip+ Typ smyčky Uzavřená smyčka Otevřená smyčka @@ -285,8 +285,8 @@ Bolus Korekce Akce - Pouze nahrávání do NS (zakázaná synchronizace) - Pouze nahrávání do NS. Neplatí pro glykémie, pokud je NS vybrán jako zdroj glykémií. Neplatí pro profily, pokud je vybraný NS Profil.\n!!! VAROVÁNÍ!!! Vypnutí této možnosti může způsobit chybné chování a předávkování inzulínem, pokud je některá z vašich komponent (AAPS, NS, xDrip) špatně nastavena. Pečlivě sledujte, jestli data zobrazená AAPS odpovídají stavu pumpy! + (NEBEZPEČNÉ ZAKÁZAT) Pouze odeslání NS + Pouze nahrávání do NS. Neplatí pro glykémie, pokud je NS vybrán jako zdroj glykémií. Neplatí pro profily, pokud je vybraný NS Profil.\n!!! VAROVÁNÍ!!! Vypnutí této možnosti může způsobit chybné chování a předávkování inzulínem, pokud je některá z vašich komponent (AAPS, NS, xDrip+) špatně nastavena. Pečlivě sledujte, jestli data zobrazená AAPS odpovídají stavu pumpy! Pumpa není inicializována! Plnění/doplňování Prosím ujistěte se, že hodnota odpovídá specifikaci Vašeho setu! @@ -341,7 +341,7 @@ SMS Krátké názvy modulů Vždy používat krátkodobý průměrný rozdíl glykémií místo rozdílu posledních 2 hodnot - Výhodné, pokud data z xDripu obsahují velký šum. + Výhodné, pokud data z xDripu+ obsahují velký šum. Profil Výchozí hodnota: 3 Toto je klíčová hodnota zabezpečení. Říká, že maximální nastavitelný bazál je trojnásobkem maximálního denního bazálu. Patrně to nebudete muset měnit, případně si přečtete o tématu \"3x max denní; 4x aktuální\". Výchozí hodnota: 4 Toto je druhá klíčová hodnota. Říká, že maximální hodnota dočasného bazálu nikdy nebude větší, než čtyřnásobek aktuálního bazálu. Je to proto, aby se lidé nedostali do nebezpečných hodnot dříve, než pochopí jak OpenAPS pracuje. Znovu, výchozí hodnota je 4 a většina lidí ji nikdy nebude muset změnit. Pokud nestačí, obvykle je problém někde jinde. @@ -355,9 +355,9 @@ Špatné telefonní číslo Kalibrace xDrip+ není nainstalován - Kalibrace odeslána do xDripu - Kalibrace odeslána. Příjem musí být v xDripu povolený. - xDrip nepřijímá kalibrace + Kalibrace odeslána do xDripu+ + Kalibrace odeslána. Příjem musí být v xDripu+ povolený. + xDrip+ nepřijímá kalibrace Pumpa pozastavena Provádím Nastavení virtuální pumpy @@ -460,8 +460,8 @@ O aplikaci Chybějící povolení SMS Chybí oprávnění pro zjišťování stavu telefonu - Status z xDripu (hodinky) - Statusový řádek xDripu (hodinky) + Status z xDripu+ (hodinky) + Stavová řádka xDrip+ (hodinky) XDS Zobrazovat BGI Přidat BGI do stavové řádky @@ -504,7 +504,7 @@ Zrušit Všechny profily nenačteny! Hodnoty nejsou uloženy! - Povolit vysílání do jiných aplikací (například xDrip). Nepovolujte, pokud máte instalovánu více než jednu instanci AAPS nebo NSClient! + Povolit vysílání do jiných aplikací (například xDrip+). Nepovolujte, pokud máte instalovánu více než jednu instanci AAPS nebo NSClient! Povolení odesílaní Trvání [min] OpenAPS SMB @@ -1197,4 +1197,5 @@ Čas k jídlu!\nSpusťte Bolusovou kalkulačku a proveďte výpočet znovu. Čas k jídlu Nahrávání protokolů o pádech zakázáno! + Graf diff --git a/app/src/main/res/values-da-rDK/exam.xml b/app/src/main/res/values-da-rDK/exam.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/app/src/main/res/values-da-rDK/exam.xml @@ -0,0 +1,2 @@ + + diff --git a/app/src/main/res/values-da-rDK/insight_alert_codes.xml b/app/src/main/res/values-da-rDK/insight_alert_codes.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/app/src/main/res/values-da-rDK/insight_alert_codes.xml @@ -0,0 +1,2 @@ + + diff --git a/app/src/main/res/values-da-rDK/insight_alert_descriptions.xml b/app/src/main/res/values-da-rDK/insight_alert_descriptions.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/app/src/main/res/values-da-rDK/insight_alert_descriptions.xml @@ -0,0 +1,2 @@ + + diff --git a/app/src/main/res/values-da-rDK/insight_alert_titles.xml b/app/src/main/res/values-da-rDK/insight_alert_titles.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/app/src/main/res/values-da-rDK/insight_alert_titles.xml @@ -0,0 +1,2 @@ + + diff --git a/app/src/main/res/values-da-rDK/insight_exceptions.xml b/app/src/main/res/values-da-rDK/insight_exceptions.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/app/src/main/res/values-da-rDK/insight_exceptions.xml @@ -0,0 +1,2 @@ + + diff --git a/app/src/main/res/values-da-rDK/objectives.xml b/app/src/main/res/values-da-rDK/objectives.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/app/src/main/res/values-da-rDK/objectives.xml @@ -0,0 +1,2 @@ + + diff --git a/app/src/main/res/values-de-rDE/exam.xml b/app/src/main/res/values-de-rDE/exam.xml index 8243dffa19..9ae09f203d 100644 --- a/app/src/main/res/values-de-rDE/exam.xml +++ b/app/src/main/res/values-de-rDE/exam.xml @@ -87,7 +87,7 @@ Ein unterstütztes CGM. Voraussetzungen Was ist wichtig für die Einrichtung und Nutzung von AndroidAPS? - Geprüfte Informationen zum Einrichten eines Profils (ISF, I:C Verhältnis, Basalraten, DIA etc.). + Überprüfte und belastbare Profileinstellungen (ISF, I:C Verhältnis, Basalraten, DIA etc.). Ein kompatibles Android-Gerät (z.B. Handy, Android-Uhr oder Tablet). AndroidAPS benötigt eine Internetverbindung, um im Closed Loop laufen zu können. Ein unterstütztes CGM und eine passende App, um Blutzuckerwerte auf dem Gerät zu erhalten. diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml index c2cf3ec97b..f63297c881 100644 --- a/app/src/main/res/values-de-rDE/strings.xml +++ b/app/src/main/res/values-de-rDE/strings.xml @@ -42,7 +42,6 @@ Empfange Blutzuckerwerte von Glimp. Empfange Blutzuckerwerte vom 600SeriesAndroidUploader. Lade Blutzuckerdaten von Nightscout - Empfange Blutzuckerwerte von xDrip. Speichert alle eingegebenen Behandlungen Überwache und steuere AndroidAPS mit Deiner WearOS-Smartwatch. Zeige Loop-Informationen auf Deinem xDrip+-Watchface. @@ -119,7 +118,6 @@ Ändere deine Eingabe! BZ-Quelle Woher soll AndroidAPS seine Blutzuckerwerte beziehen? - xDrip APS-Modus Closed Loop Open Loop @@ -285,8 +283,6 @@ Essensbolus Korr Aktionen - Zu Nightscout nur hochladen (keine Synchronisation) - Zu Nightscout nur hochladen (keine Synchronisation). Gilt nicht für CGM-Werte falls nicht eine lokale Quelle wie xDrip+ ausgewählt wurde. Gilt ebenfalls nicht für Profildaten, wenn ein NS-Profil genutzt wird. \n!!! WARNUNG !!! Deaktivieren dieser Option kann zu Fehlfunktionen und Insulin-Überdosierung führen, wenn eine der Komponenten (AAPS, NS, xDrip+) falsch konfiguriert ist. Achte sorgfältig darauf, ob die in AAPS angezeigten Daten mit denen der Pumpe übereinstimmen! Pumpe nicht initialisiert! Katheterwechsel Bitte vergewissere Dich, dass die Füllmenge den Eigenschaften des Katheters entspricht! @@ -341,7 +337,6 @@ SMS Kurze Tab-Überschriften Verwende immer das kurze durchschnittliche Delta statt des einfachen Deltas - Das ist sinnvoll, wenn die Daten von einer ungefilterten Quelle Signalrauschen haben. Profil Standardwert: 3\nDies ist eine wichtige Sicherheitseinstellung. Sie begrenzt die maximale Basal-Abgabe auf die dreifache Menge (im Standardfall) deiner größten Basalrate im Profil. In der Regel solltest Du diesen Wert nicht ändern. Aber Du solltest wissen, was \"3x max daily, 4x current\" als Sicherheitseinstellung bedeutet. Standardwert: 4\nDies ist die andere wichtige Sicherheitseinstellung, die zweite Hälfte von \"3x max daily, 4x current\". Diese Grenze beschränkt die Basal-Abgabe auf die (im Standardfall) vierfache Menge der aktuellen Basalrate im Profil. Dies ist wichtig, um Nutzer davor zu bewahren, zuviel Basal-Insulin zu verabreichen. Nochmals, der Standardwert ist 4x. Die meisten Nutzer werden niemals diese Einstellung verändern, sondern andere Einstellungen anpassen, um sich nicht dieser Sicherheitsgrenze zu nähern. @@ -355,9 +350,6 @@ Falsche/ungültige Telefonnummer Kalibrierung xDrip+ nicht installiert - Kalibrierung an xDrip+ gesendet - Kalibrierung gesendet. Das Empfangen von Kalbrierungen muss in xDrip+ aktiviert sein. - xDrip+ hat die Kalbrierung nicht erhalten Pumpe pausiert Wird ausgeführt Einstellungen der virtuellen Pumpe @@ -460,8 +452,6 @@ Über SMS-Steuerung nicht erlaubt Fehlende Berechtigung für den Zugriff auf den Telefonstatus - xDrip+ Status (Uhr) - xDrip+ Statuszeile (Uhr) xds Zeige BGI Füge BGI zur Statuszeile hinzu. @@ -504,7 +494,6 @@ Abbrechen Es sind nicht alle Profile geladen! Werte nicht gespeichert! - Aktiviere die Datenübertragung zu anderen Apps (z.B. xDrip). Nicht aktivieren, falls Du mehr als eine Instanz von AAPS oder NSClient installiert hast! Aktiviere lokale Broadcasts Dauer [min] OpenAPS SMB @@ -1188,7 +1177,7 @@ Unerwartetes Verhalten. Don\'t kill my app? Alarm SMS senden, wenn Pumpe nicht erreichbar - Bericht Pumpe nicht erreichbar + Hinweis Pumpe nicht erreichbar Alarmiere mich, wenn es Zeit zum Essen ist. Alarm in %1$d Min. Bolus-Berater diff --git a/app/src/main/res/values-el-rGR/strings.xml b/app/src/main/res/values-el-rGR/strings.xml index ed35ab3eea..a63e03bf8c 100644 --- a/app/src/main/res/values-el-rGR/strings.xml +++ b/app/src/main/res/values-el-rGR/strings.xml @@ -39,7 +39,6 @@ Λάβετε τις τιμές BG από το Glimp. Λάβετε τις τιμές BG από το 600SeriesAndroidUploader. Λήψη δεδομένων BG από Nightscout - Λάβετε τις τιμές BG από το xDrip. Σώζει όλες τις θεραπείες που έγιναν Παρακολουθεί και ελέγχει το AndroidAPS χρησιμοποιώντας το ρολόι σας WearOS. Δείτε πληροφορίες σχετικά με το κύκλωμά σας στην πρόσοψη xDrip +. @@ -116,7 +115,6 @@ Αλλάξτε αυτό που εισάγατε! Πηγή BG Από πού πρέπει το AndroidAPS να πάρει τα δεδομένα του; - xDrip Λειτουργία APS Κλειστό Κύκλωμα Ανοιχτό Κύκλωμα @@ -199,7 +197,6 @@ Γεύμα Διορθ Ενέργειες - NS φορτώνεται μόνο (απενεργοποίηση συγχρ) Η αντλία δεν έχει ρυθμιστεί! Πλήρωση/Γέμισμα Παρακαλώ ελέγξτε ότι η ποσότητα ταιριάζει με τις προδιαγραφές του σετ έγχυσης! @@ -249,7 +246,6 @@ SMS Συντομογραφίες ενοτήτων Χρησιμοποιείτε πάντα τη βραχυπρόθεσμη μέση διαφορά αντί της απλής διαφοράς - Χρήσιμο όταν δεδομένα από μη φιλτραρισμένες πηγές όπως το xDrip αποκτούν θόρυβο. Προφίλ Προεπιλεγμένη τιμή: 3 Αυτό είναι ένα κλειδί ασφαλείας του OpenAPS. Αυτό περιορίζει την αύξηση του βασικού x3 (σε αυτούς τους ανθρώους) από την μεγαλύτερη τιμή του. Συνήθως δεν χρειάζεται να το αλλάξετε, αλλά πρέπει να ξέρετε τι σημαίνει “3x μέγιστο ημερήσιο; 4x τρέχων” για λόγους ασφαλείας. Προεπιλεγμένη τιμή: 4 Αυτό είναι το μισό του θέματος ασφαλείας του OpenAPS, και το άλλο μισό του «3 x μέγιστο ημέρας: 4 x τρέχων» των θεμάτων ασφαλείας. Αυτό σημαίνει ότι ο βασικός ρυθμός, ανεξάρτητα από την μέγιστη τιμή βασικού ρυθμού στην αντλία σας, δεν μπορεί να είναι υψηλότερος από το πολλαπλάσιο αυτού του αριθμού. Αυτό γίνεται για να αποτρέψει τους ανθρώπους από το να μπουν σε επικίνδυνες καταστάσεις θέτωντας υψηλό βασικό πριν κατανοήσουν πλήρως πώς λειτουργεί ο αλγόριθμος. Και πάλι, η προεπιλεγμένη τιμή είναι 4x: οι περισσότεροι άνθρωποι ποτέ δεν θα χρειαστεί να το προσαρμόσουν και αντίθετα είναι πιο πιθανό να χρειαστεί να προσαρμόσουν άλλες ρυθμίσεις αν αισθάνονται ότι κινούνται με ασφάλεια. @@ -262,9 +258,6 @@ Μη έγκυρος αριθμός τηλεφώνου για SMS Καλιμπράρισμα xDrip+ μη εγκατεστημένο - Το καλιμπράρισμα εστάλει στο xDrip - Το καλιμπράρισμα στάλθηκε. Η λήψη πρέπει να είναι ενεργοποιημένη στο xDrip. - το xDrip δεν λαμβάνει καλιμπραρίσματα Η αντλία είναι σε παύση Εκτελείτε Ρυθμίσεις Εικονικής αντλίας @@ -335,8 +328,6 @@ Σχετικά με Απουσία δικαιωμάτων SMS Λείπει η άδεια κατάστασης τηλεφώνου - Κατάσταση xDrip (ρολόι) - Γραμμή Κατάστασης xDrip (ρολόι) xds Δείξε BGI Πρόσθεσε BGI στην γραμμή κατάστασης @@ -370,7 +361,6 @@ Ακύρωση Δεν έχουν φορτωθεί όλα τα προφίλ! Οι τιμές δεν αποθηκεύτηκαν! - Ενεργοποιήστε εκπομπές σε άλλες εφαρμογές (όπως το xDrip). Μην το ενεργοποιήσετε εάν έχετε περισσότερες από μία εγκατεστημένες εφαρμογές του AAPS ή NSClient! Ενεργοποιήστε τις τοπικές αποστολές. Διάρκεια [min] OpenAPS SMB diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index 7481bd331f..01d4f658d8 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -42,7 +42,6 @@ Recibir valores de glucosa de Glimp. Recibir valores de glucosa del 600SeriesAndroidUploader. Descarga los datos de glucosa de Nightscout - Recibir los valores de glucosa de xDrip. Guarda todos los tratamientos que se realizaron Usar tu reloj WearOS para observar y controlar AndroidAPS. Mostrar información sobre tu lazo en tu esfera xDrip+. @@ -119,7 +118,6 @@ ¡Cambiar datos! Origen BG ¿De donde debe AndroidAPS obtener sus datos? - xDrip Modo APS Lazo cerrado Lazo abierto @@ -285,7 +283,6 @@ Bolo Comida Corrección Acciones - NS solo subida (sinc. inactiva) ¡Bomba no iniciada! Rellenar/Llenar ¡Por favor asegurar que la cantidad coincide con la especificación del set de infusión! @@ -340,7 +337,6 @@ SMS Título corto en pestaña Usa siempre delta media corto en vez de delta simple - Útil cuando los datos de fuentes sin filtrar como los de xDrip son inestables. Perfiles Valor predeterminado: 3 Esta es una protección de seguridad en OpenAPS. Lo que esto hace es limitar tus basales a 3x (en este caso) tu mayor índice basal. Probablemente no necesites cambiar esto, pero debes tener en cuenta las discusiones sobre \"3x max diaria; 4x actual\" para protecciones de seguridad. Ajuste pro defecto: 4 Esto es la otra mitad de los ajustes de seguridad de OpenAPS y la otra mitad de la protección de seguridad de \"3x max diaria, 4x actual\". Esto significa, que tu basal, independientemente de tu máxima basal ajustada en la bomba, no puede ser mas alta que este número de veces el actual nivel de basal. Esto es para evitar que las personas se encuentren en situaciones peligrosas por aumentar mucho la basal sin entender como trabaja el algoritmo. El ajuste por defecto es 4x; la mayoría de las personas nunca tendrá que cambiar estos ajustes, sino que debe modificar otros ajustes en la terapia si se encuentran cerca de este límite de seguridad. @@ -354,9 +350,6 @@ Número de teléfono incorrecto para SMS Calibración xDrip+ no instalado - Calibración mandada a xDrip - Calibración enviada. La recepción debe estar habilitada en xDrip. - xDrip no recibe calibraciones Bomba parada Ejecutando Ajustes bomba virtual @@ -455,8 +448,6 @@ Acerca de Falta permiso SMS Falta permiso de estado del teléfono - xDrip Status (reloj) - Linea de estado xDrip (reloj) xds Mostrar BGI Agregar BGI a línea de estado @@ -499,7 +490,6 @@ Cancelar Faltan perfiles por cargar! Valores no guardados! - Habilite las transmisiones a otras aplicaciones (como xDrip). ¡ No habilite si tiene más de una instancia de AAPS o NSClient instalada! Permitir emisión de mensajes localmente. Duración [min] OpenAPS SMB @@ -1170,7 +1160,6 @@ Dona tus datos a la ciencia OH Has cerrado la sesión de Open Humans - Haga clic aquí para iniciar sesión de nuevo si no tenía esa intención. Subir datos solo si está conectado a WiFi Sólo subir datos si se está cargando Worker State: %s @@ -1182,7 +1171,6 @@ ¿No matar mi aplicación? Alarma Enviar SMS si se activa un evento de bomba inaccesible - Reportar bomba no alcanzable Ejecutar alarma cuando es hora de comer Ejecutar alarma en %1$d min Asistente de bolo diff --git a/app/src/main/res/values-fr-rFR/strings.xml b/app/src/main/res/values-fr-rFR/strings.xml index 25ff8efb51..3a2aa05462 100644 --- a/app/src/main/res/values-fr-rFR/strings.xml +++ b/app/src/main/res/values-fr-rFR/strings.xml @@ -42,7 +42,7 @@ Recevoir les glycémies depuis Glimp. Recevoir les glycémies depuis le 600SeriesAndroidUploder. Télécharge les glycémies depuis Nightscout - Recevoir les glycémies depuis xDrip. + Recevoir les glycémies depuis xDrip+. Enregistre tous les traitements qui ont été effectués Surveillez et contrôlez AndroidAPS en utilisant votre montre WearOS. Afficher les informations de votre Boucle sur votre écran de montre xDrip+. @@ -61,7 +61,7 @@ Gly TT Glucides - Corr + Correction Bolus IA Exécuter maintenant POMPE VIRTUELLE @@ -284,10 +284,10 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S Éditer Supprimer Repas - Corr + Correction Actions - Remonter uniquement vers NS (sync désactivée) - Envoi NS uniquement. Inactif sur les Gly capteurs sauf si une source locale comme xDrip est sélectionnée. Inactif sur les profils si Profil NS est sélectionné.\n!!! ATTENTION !!! La désactivation de cette option peut causer des dysfonctionnements et une surdose d\'insuline si l\'un de vos composants (AAPS, NS, xDrip) est mal configuré. Vérifiez bien si les données affichées par AAPS correspondent à l’état de la pompe ! + (DÉSACTIVATION DANGEREUSE) Envoi NS uniquement + Envoi NS uniquement (sync désactivée). Inactif sur les Glycémie des capteurs sauf si une source locale comme xDrip+ est sélectionnée. Inactif sur les profils si Profil NS est sélectionné.\n!!! ATTENTION !!! La désactivation de cette option peut causer des dysfonctionnements et une surdose d\'insuline si l\'un de vos composants (AAPS, NS, xDrip+) est mal configuré. Vérifiez bien si les données affichées par AAPS correspondent à l’état de la pompe ! Pompe non initialisée ! Amorcer/Remplir Veuillez à ce que la quantité corresponde aux caractéristiques de votre cathéter ! @@ -342,7 +342,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S SMS Raccourcir les titres des onglets Utiliser delta basé sur moyenne courte - Utiliser toujours un delta basé sur une moyenne courte au lieu d’une moyenne normale. Utile lorsque les données provenant de sources non filtrées comme xDrip devient incohérentes. + Utile lorsque les données provenant de sources non filtrées comme xDrip+ deviennent incohérentes. Profil Valeur par défaut : 3 Ceci est un paramètre important de sécurité de l’OpenAPS. Ceci va limiter vos débits basal à 3 fois votre débit Basal maximum. Il est probable que vous n’aurez pas besoin de changer cela, mais vous devez être conscient de ce qui est discuté pour les limites de sécurité dans “3x max daily; 4x current”. Valeur par défaut : 4 Ceci est l’autre moitié des paramètres de sécurité limitant l’OpenAPS, et l’autre moitié de “3x max daily, 4x current” des paramètres de sécurité. Quel que soit le basal maximum prédéfini dans votre pompe, il ne pourra pas être plus haut que ce nombre multiplié par le Basal actuel. Ceci est fait pour ne pas mettre l’utilisateur en danger en programmant des débits Basal maximum trop élevés avant de comprendre comment l’algorithme fonctionne. Encore une fois, la valeur par défaut est 4x, la plupart des gens n’auront jamais besoin d’ajuster ce paramètre, plutôt ils auront tendance à ajuster d’autres paramètres s’ils voient qu’ils atteignent ce paramètre de limite de sécurité. @@ -356,9 +356,9 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S Num tél du SMS est invalide Étalonnage xDrip+ n\'est pas installé - Étalonnage envoyé à xDrip - Étalonnage envoyé. La réception doit être activée dans xDrip. - xDrip ne reçoit pas les étalonnages + Étalonnage envoyé à xDrip+ + Étalonnage envoyé. La réception doit être activée dans xDrip+. + xDrip+ ne reçoit pas les étalonnages Pompe arrêtée Exécution en cours Paramètres pompe virtuelle @@ -375,12 +375,12 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S NS API Secret Entrez NS API secret (12 carac. min) Transmettre maintenant - Vider la file d\'attente - Afficher la file d\'attente - File d\'attente : + Vider queue + Afficher queue + Queue : État : En pause - Effacer logs + Effacer histo NSCLIENT ne possède pas la permission d\'écriture. Mauvais API secret? Paramètres Wear Afficher l\'IA détaillée @@ -461,8 +461,8 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S À propos Autorisation SMS manquante Autorisation du téléphone manquante - état Xdrip (montre) - Barre d\'état pour xDrip (Montre) + état Xdrip+ (montre) + Barre d\'état pour xDrip+ (Montre) xds Afficher l’Impact Glycémie Ajouter l’IGly sur la vue générale @@ -505,7 +505,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S Annuler Les profils ne sont pas tous téléchargés ! Valeurs non enregistrées ! - Active les diffusions vers d\'autres applications (comme xDrip). Ne pas activer si plusieurs instances d\'AAPS ou de NSClient sont installées ! + Active les diffusions vers d\'autres applications (comme xDrip+). Ne pas activer si plusieurs instances d\'AAPS ou de NSClient sont installées ! Activer les transmissions locales Durée [min] OpenAPS SMB @@ -751,7 +751,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S Définition de pompe Bolus : Étape =%1$s\nExtended Bolus : [Étape =%2$s, Durée =%3$smin -%4$sh]\nBasal : Étape =%5$s\nTBR : %6$s (par %7$s), Durée =%8$smin -%9$sh\n%10$s Remplissage automatique G - Paramètres de l’Assistant + Paramètres assistant Calculs inclus dans le résultat de l’Assistant : Parametres d\'affichage Paramètres généraux @@ -1092,7 +1092,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S Afficher le calcul Evénement auto. Déjà configuré - Effacer la file d\'attente ? Toutes les données en file d\'attente seront perdues ! + Effacer la queue ? Toutes les données en attente seront perdues ! L\'utilisation du bolus étendu arrètera la boucle fermée pour la durée d\'exécution du bolus étendu. Voulez-vous vraiment le faire ? Boucle fermée désactivée à cause du bolus étendu \"Vérif. du téléphone\" @@ -1198,4 +1198,5 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S Il est temps de manger !\nExécutez l\'assistant Bolus et refaites le calcul. Il est temps de manger Téléchargement logs crashs désactivé! + Graph diff --git a/app/src/main/res/values-ga-rIE/strings.xml b/app/src/main/res/values-ga-rIE/strings.xml index 34e0398ac2..fa55746d53 100644 --- a/app/src/main/res/values-ga-rIE/strings.xml +++ b/app/src/main/res/values-ga-rIE/strings.xml @@ -10,7 +10,6 @@ Le do thoil atosaigh do ghuthán nó atosaigh AndroidAPS ó Socruithe an Chórais \nmura dhéanann tú é seo, ní bheidh logáil ag na appana AndroidAPS (tá sé tábhachtach na halgartaim a rianú agus a fhíorú go bhfuil siad ag obair i gceart)! Luachanna BG a fháil ón 600SeriesAndroidUploader. Sonraí a íoslódáil ó Nightscout - Luachanna BG a fháil ó xDrip. MM640g IOB COB diff --git a/app/src/main/res/values-it-rIT/strings.xml b/app/src/main/res/values-it-rIT/strings.xml index 8514e0efe6..b5fe0fab2d 100644 --- a/app/src/main/res/values-it-rIT/strings.xml +++ b/app/src/main/res/values-it-rIT/strings.xml @@ -42,7 +42,6 @@ Ricevi valori glicemia da Glimp. Ricevi valori glicemia da 600SeriesAndroidUploader. Scarica dati glicemia da Nightscout - Ricevi valori glicemia da xDrip. Salva tutti i trattamenti che sono stati fatti Monitora e controlla AndroidAPS usando il tuo smartwatch WearOS. Mostra le informazioni del loop sulla watchface di xDrip+. @@ -119,7 +118,6 @@ Cambia il tuo input! Origine BG Da dove AndroidAPS dovrebbe ottenere i suoi dati? - xDrip Modalità APS Loop chiuso Loop aperto @@ -285,8 +283,6 @@ Pasto Corr Azioni - NS: solo upload (sincron. disabilitata) - Solo upload su NS. Non ha effetto su SGV a meno che non sia selezionata una fonte locale come xDrip. Non ha effetto sui profili mentre vengono usati i profili NS.\n!!! ATTENZIONE !!! Disabilitare questa opzione potrebbe causare malfunzionamenti e sovra-dosaggio di insulina se uno dei tuoi strumenti (AAPS, NS, xDrip) è configurato in modo errato. Guarda attentamente se i dati visualizzati da AAPS corrispondono allo stato del micro! Micro non inizializzato! Carica/Riempi Assicurati che la quantità corrisponda alla specifica del tuo set di infusione! @@ -341,7 +337,6 @@ SMS Accorcia titoli schede Usa sempre il delta medio ridotto - Utile quando i dati provenienti da sorgenti non filtrate come xDrip diventano \"rumorosi\" (instabili). Profilo [Valore predefinito: 3] Questo è un parametro di sicurezza chiave in OpenAPS. Ciò che fa è limitare le tue basali a essere 3 volte, al più, la tua velocità basale massima. Probabilmente non avrai bisogno di cambiare questo valore, ma dovresti essere consapevole di cosa significa il gruppo di parametri \"3x max giornaliera; 4x corrente\" e per quali motivi di sicurezza siano stati impostati tali valori. [Valore predefinito: 4] Questo è un ulteriore parametro di sicurezza chiave in OpenAPS. La tua basale temporanea, indipendentemente dalla basale massima impostata sul micro, non può mai essere più alta di questo valore moltiplicato per la tua basale corrente in ogni specifico momento. Questo serve a impedire alle persone di addentrarsi in \"territori pericolosi\" impostando basali massime eccessivamente alte prima di aver capito come funziona l\'algoritmo. Ancora una volta, il valore predefinito è 4x; la maggior parte delle persone non avrà bisogno di modificare questo valore e avrà, invece, maggiori probabilità di dover regolare altre impostazioni se ha la sensazione di \"scontrarsi\" con questo limite di sicurezza. @@ -355,9 +350,6 @@ Numero di telefono SMS non valido Calibrazione xDrip+ non installato - Calibrazione inviata a xDrip - Calibrazione inviata. La ricezione deve essere abilitata in xDrip. - xDrip non sta ricevendo calibrazioni Micro sospeso Esecuzione Impostazioni micro virtuale @@ -460,8 +452,6 @@ Informazioni su Autorizzazione SMS mancante Autorizzazione stato telefono mancante - Stato xDrip (smartwatch) - xDrip Statusline (smartwatch) xds Mostra BGI Aggiungi BGI alla statusline @@ -504,7 +494,6 @@ Annulla Non tutti i profili caricati! Valori non memorizzati! - Abilita le trasmissioni ad altre app (come xDrip). Non abilitare se hai installato più di un\'istanza di AAPS o NSClient! Abilita le trasmissioni locali. Durata [min] OpenAPS SMB @@ -1196,4 +1185,5 @@ Usa un promemoria per iniziare a mangiare invece del risultato del calcolatore durante la glicemia alta (\"pre-bolo\") Tempo di mangiare!\nEsegui il calcolatore e fai di nuovi i calcoli. Tempo di mangiare + Caricamento log dei crash disabilitato! diff --git a/app/src/main/res/values-iw-rIL/exam.xml b/app/src/main/res/values-iw-rIL/exam.xml index 249c42e396..cff9331f30 100644 --- a/app/src/main/res/values-iw-rIL/exam.xml +++ b/app/src/main/res/values-iw-rIL/exam.xml @@ -41,7 +41,7 @@ נתוני הסנסור אינם יציבים. מה לעשות אם נתוני הסנסור לא יציבים? אין צורך לעשות כלום - AndroidAPS יטפל בכך. - הפסיקו את הלולאה כדי למנוע מינון איסולין גבוה מדי \ נמוך מדי. + הפסיקו את הלולאה כדי למנוע מינון איסולין גבוה מדי \\ נמוך מדי. יש להחליף סנסור שבאופן קבוע מספק נתוני רועשים ו/או לא מדויקים. יש לוודא שיישום הסנסור מספק נתונים איכותיים ו- \"חלקים\". https://androidaps.readthedocs.io/en/latest/EN/Usage/Smoothing-Blood-Glucose-Data-in-xDrip.html#smoothing-blood-glucose-data @@ -60,19 +60,19 @@ המתן עד שהגלוקוז בדם יירד מתחת לערך המטרה של היפו ואז אכלו 15 גרם של פחמימות מהירות. https://androidaps.readthedocs.io/en/latest/EN/Usage/temptarget.html#activity-temp-target השבתת / השהיית לולאה - האם אני מקבל\ת אינסולין כאשר הלולאה מושבתת/מושהית? + האם אני מקבל/ת אינסולין כאשר הלולאה מושבתת\\מושהית? כן, אינסולין בזאלי ממשיך להינתן. לא, אספקת האינסולין נפסקת. מינון באזלי, יחס תיקון, ויחס פחמימות. מתי יש לאמת את הערכים האלה? - לפני שאני מתחיל\ה לולאה. + לפני שאני מתחיל\\ה לולאה. כאשר חווים רמת סוכר גבוהה או נמוכה לעיתים קרובות. לפחות פעם אחת בשבוע. לאחר שהוגדרו ואומתו, ערכים אלה אינם צריכים להשתנות לאורך הזמן. https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#androidaps-settings דרישות מקדימות מה חיוני להגדרה ולשימוש ב-AndroidAPS? - הגדרת פרופיל אישי (מינון בזאלי-Basal, יחס אינסולין\פחמימה- IC, יחס תיקון-ISF, משך פעילות אינסולין-DIA). + הגדרת פרופיל אישי (מינון בזאלי-Basal, יחס אינסולין\\פחמימה- IC, יחס תיקון-ISF, משך פעילות אינסולין-DIA). מחשב עם Android Studio מותקן ומוגדר. טלפון נתמך. משאבת אינסולין מתאימה אם אתם מתכננים להפעיל לולאה סגורה. @@ -90,7 +90,7 @@ מידע מאומת כדי להגדיר פרופיל (יחסי תיקון, יחסי פחמימות, מינונים בזאליים, משך פעילות האינסולין וכו\'). מכשיר Android תואם (לדוגמה טלפון נייד, שעון אנדרואיד או טאבלט). AndroidAPS חייב חיבור לאינטרנט כדי להפעיל לולאה סגורה. - חיישן סוכר נתמך ואפליקציה מתאימה לקבלת ערכי הסוכר בטלפון\התקן. + חיישן סוכר נתמך ואפליקציה מתאימה לקבלת ערכי הסוכר בטלפון\\התקן. https://androidaps.readthedocs.io/en/latest/EN/Module/module.html עדכון AndroidAPS בחרו את כל ההיגדים הנכונים. @@ -105,7 +105,7 @@ אפשר לבקש עצות בקבוצת הפייסבוק \"AndroidAPS Users\" (אנגלית). צריך לקרוא (ולקרוא מחדש) את מסמכי AndroidAPS. תוכלו לבקש עצות ולרשום בעיות טכניות או בעיות בחדר ה-Gitter של AndroidAPS. - עליכם לשאול את המרפאה\הרופא האנדוקרינולוג שלכם. + עליכם לשאול את המרפאה\\הרופא האנדוקרינולוג שלכם. https://androidaps.readthedocs.io/en/latest/EN/Installing-AndroidAPS/Update-to-new-version.html#troubleshooting https://www.facebook.com/groups/AndroidAPSUsers/ https://gitter.im/MilosKozak/AndroidAPS @@ -129,29 +129,29 @@ בולוס עם אינסולין תוך שימוש בתפריט התיחול של העירוי. עשו כלום-AndroidAPS יעשה את ההתאמות הנדרשות. מתן בולוס אינסולין באמצעות כפתור האינסולין בדף הסקירה הכללית. - שגיאות ברישום\הזרקת אינסולין + שגיאות ברישום\\הזרקת אינסולין מה עליכם לעשות אם מקבלים פחות אינסולין מאשר המוצע ע\"י היסטוריית המשאבה למשל עקב חסימה, צינורית כושלת או אי חיבור מחדש של המשאבה אחרי מקלחת?  מחקו את נתוני האינסולין מפורטל הטיפולים של נייטסקאוט כדי לסלק אותו מהיסטוריית המשאבה. השווה ערכים ב-AndroidAPS ובהיסטוריית משאבה. - מזריקים בולוס על חלק מהאינסולין המחושב \"שחסר\" עם מזרק\עט או באמצעות תיחול (Prime). + מזריקים בולוס על חלק מהאינסולין המחושב \"שחסר\" עם מזרק\\עט או באמצעות תיחול (Prime). לא לעשות דבר ולאפשר ל-AndroidAPS לתקן כל רמת סוכר גבוהה. אינסולין פעיל בגוף (IOB) בחרו את כל ההיגדים הנכונים. ערך האינסולין הפעיל (IOB) מושפע ממינונים בזאליים זמניים שסופקו. מינון בזאלי גבוה לא יינתן כאשר רמת הסוכר נמוכה מערך המטרה. אינסולין פעיל שלילי בתקופה משמעותית בה לא נעשית פעילות מצביעה על כך שהפרופיל הוא חזק מדי, נדרש פחות אינסולין ויש להגדיר זאת בהגדרות. - אינסולין פעיל חיובי עבור תקופה משמעותית מצביעה על תנגודת לאינסולין או על ארוחות שלא הוכרזו. + אינסולין פעיל חיובי עבור תקופה משמעותית מצביע על תנגודת לאינסולין או על ארוחות שלא הוכרזו. רישום פחמימות ובולוסים יש להשתמש אך ורק בגרמים להערכה ורישום צריכת הפחמימות. - ניתן לתעד צריכת פחמימות באמצעות מערכת המרה מתאימה (לדוגמה, המרות DAFNE \"CHO\", מערכת המרת \"יחידות לחם\" אירופאית). - AndroidAPS משתמש במודל דינאמי כדי להעריך את דעיכת הפחמימות ולחשב פחמימות פעילות. + ניתן לתעד צריכת פחמימות באמצעות מערכת המרה מתאימה (לדוגמה, המרות \"DAFNE \"CHO, מערכת המרת \"יחידות לחם\" אירופאית). + אפליקציית AndroidAPS משתמש במודל דינאמי כדי להעריך את דעיכת הפחמימות ולחשב פחמימות פעילות. אם רמות הסוכר מחוץ לערכים המקובלים (נמוך מדי או גבוה מדי) ניתן להשתמש במחשבון הבולוס כדי לספק הצעות לתיקוני פחמימות או אינסולין. https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#insulin-to-carb-ratio-ic-g-u פחמימות ממושכות מה עושים עם פחמימות ממושכות? מתזמנים פחמימות עתידיות, שניתן לפזר במרווחי זמן (בדומה לבולוס ממושך שמפזר את ההזרקות על פני מרווחי זמן). רישום פחמימות שהרווחתם בפעילות גופנית שאתם רוצים להסתיר מ-AndroidAPS. - פחמימות ממושכות (המפוזרות בעתיד) יכולות לסייע AndroidAPS בהתמודדות עם ארוחות עשירות בשומן\חלבון. + פחמימות ממושכות (המפוזרות בעתיד) יכולות לסייע AndroidAPS בהתמודדות עם ארוחות עשירות בשומן\\חלבון. רישום פחמימות בהם השתמשתם להצלה מהיפוגליקמיה.  https://androidaps.readthedocs.io/en/latest/EN/Usage/Extended-Carbs.html ניטור מרוחק @@ -188,7 +188,7 @@ החלפת פרופילים בעת החלפה לפרופיל 120%, מהם ההיגדים הנכונים? ערך מטרת הסוכר בדם יהיה גבוה ב-20%. - המינון הבזאלי יהיה נמוך ב-20%. + המינון הבזאלי יהיה גבוה ב-20%. ערך מטרת רמת הסוכר לא ישתנה. ערך פקטור התיקון (ISF) יהיה גבוה ב-20%. החלפת פרופיל @@ -196,13 +196,13 @@ אפעיל מצב פרופיל זמני עם היסט זמן של 2+ אפעיל מצב פרופיל זמני עם היסט זמן של 2- הגדרת ערך מטרה זמני לאכילה בקרוב. - יש לבצע שינוי פרופיל ליותר מ- 100% + יש לבצע שינוי פרופיל ליותר מ- 100%  https://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html?highlight=profile%20switch#timeshift שינויים בפרופילים על המינונים בזאליים, יחס התיקון, יחס הפחמימות וכו\' להיות מוגדרים בפרופילים. הפעלת שינויים בפרופיל הנייטסקאוט שלכם דורשת שהמכשיר עליו AndroidAPS מותקן יהיה מחובר לאינטרנט. עריכת פרופילים לשינוי ערכים מספיקה כדי להחיל שינויים כלשהם שבוצעו. - ניתן להגדיר פרופילים מרובים כדי להתאים לנסיבות משתנות (לדוגמה שינויים הורמונליים, עבודת משמרת, ימי חול\אורח חיים של סופ\"ש). + ניתן להגדיר פרופילים מרובים כדי להתאים לנסיבות משתנות (לדוגמה שינויים הורמונליים, עבודת משמרת, ימי חול\\אורח חיים של סופ\"ש). https://androidaps.readthedocs.io/en/latest/EN/Module/module.html#good-individual-dosage-algorithm-for-your-diabetes-therapy נושא: עזרה עם מינונים בזאליים היכן ניתן לקבל עזרה בנושא מינון בזאלי וכו\'. diff --git a/app/src/main/res/values-iw-rIL/insight_alert_descriptions.xml b/app/src/main/res/values-iw-rIL/insight_alert_descriptions.xml index 0c30992caf..0c44cff3e1 100644 --- a/app/src/main/res/values-iw-rIL/insight_alert_descriptions.xml +++ b/app/src/main/res/values-iw-rIL/insight_alert_descriptions.xml @@ -1,11 +1,11 @@ - %1$d%%\nמשך: %2$s h]]> + %1$d%%\nמשך: %2$s ש\']]> %1$s U]]> החלף סוללה. קבע זמן/תאריך. צור קשר עם תמיכת Accu-Chek. - %1$d%%\nמשך: %2$s h]]> + %1$d%%
משך: %2$s שעות]]>
%1$s U
כמות שניתנה: %2$s U]]>
הכנס מיכל. החלף מיכל. diff --git a/app/src/main/res/values-iw-rIL/strings.xml b/app/src/main/res/values-iw-rIL/strings.xml index d6c14883a0..682f804214 100644 --- a/app/src/main/res/values-iw-rIL/strings.xml +++ b/app/src/main/res/values-iw-rIL/strings.xml @@ -42,7 +42,6 @@ קבלת ערכי סוכר בדם מ-Glimp. קבלת ערכי סוכר בדם מ-600SeriesAndroidUploader. הורדת ערכי סוכר בדם מ-Nightscout - קבלת ערכי סוכר בדם מ-xDrip. שמירת כל הטיפולים שנעשו ניטור ושליטה ב-AndroidAPS באמצעות שעון WearOS. הצג מידע אודות הלולאה במסך Xdrip בשעון החכם. @@ -119,7 +118,6 @@ שנה קלט! מקור ערכי הסוכר מהו מקור הנתונים של AndroidAPS? - xDrip מצב APS לולאה סגורה לולאה פתוחה @@ -285,7 +283,6 @@ ארוחה תיקון פעולות - העלאה בלבד לנייטסקאוט (סנכרון מבוטל) משאבה לא הופעלה! תיחול\\מילוי נא ודאו שהכמות מתאימה למפרט ערכת העירוי שלכם! @@ -340,7 +337,6 @@ SMS קצר את כותרות הלשוניות התבסס על הפרש ממוצע קצר במקום הפרש פשוט\\רגיל - לשימוש כאשר נתונים ממקור לא מפוקח כמו Xdrip אינם יציבים. פרופיל ערך ברירת מחדל: 3 מנגנון הגנה עיקרי של OpenAPS. מגביל את המינון הבזאלי לעד פי 3 מהמינון הבזאלי הגבוה ביותר שהוגדר. ברוב המקרים אין צורך לשנות ערך זה, אך יש לזכור שזו המשמעות של “3x max daily; 4x current” בדיון על מנגנוני הגנה. ערך ברירת מחדל: 4 זהו החצי השני של מנגנון הגנה עיקרי של OpenAPS, והחצי השני של \"3x max daily; 4x current\" במנגנוני ההגנה. המשמעות היא שהמינון הבזאלי, ללא קשר למקסימום שנקבע במשאבה, אינו יכול להיות גבוה יותר ממספר זה כפול הקצב הבזאלי הנוכחי. מיועד למנוע כניסה לתחומים מסוכנים ע\"י קביעת קצב בזאלי גבוה לפני הבנה של פעולת האלגוריתם. שוב: ברירת המחדל היא x4, רוב המשתמשים לעולם אינם צריכים לשנות ערך זה ואם הם מרגישים שמנגנון הגנה זה מפריע להם, הפתרון הוא בשינוי של הגדרות אחרות. @@ -354,9 +350,6 @@ מספר טלפון ל SMS לא תקין כיול xDrip+ אינו מותקן - כיול נשלח xDrip - הכיול נשלח. יש לאשר את הקבלה ב-xDrip. - xDrip אינו מקבל כיולים משאבה מושהית מבצע הגדרות משאבה וירטואלית @@ -459,8 +452,6 @@ אודות הרשאות SMS חסרות הרשאת סטטוס הטלפון חסרה - מצב xDrip (שעון) - שורת מצב xDrip (שעון) xDS הצג השפעת רמת הסוכר הוסף השפעת הסוכר לשורת הסטטוס @@ -503,7 +494,6 @@ ביטול לא כל הפרופילים נטענו! הערכים לא נשמרו - אפשר שידורים לאפליקציות אחרות (כגון xDrip). אין להפעיל אם מותקן לכם יותר ממופע אחד של AAPS או NSClient! אפשר שידורים מקומיים. משך [min] OpenAPS SMB @@ -1174,7 +1164,6 @@ תרמו את נתוניכם למדע OH התנתקתם מ-Open Humans - לחצו כאן כדי להתחבר מחדש אם זה לא היה בכוונה. אפשר העלאה רק אם מחובר ל-WiFi אפשר העלאה רק בזמן טעינת הסוללה מצב עובד: %s diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml index d71ff4aad2..d602594069 100644 --- a/app/src/main/res/values-ko-rKR/strings.xml +++ b/app/src/main/res/values-ko-rKR/strings.xml @@ -39,7 +39,6 @@ Glimp에서 혈당값 받기 600SeriesAndroidUploader에서 혈당값 받기 Nightscout에서 다운로드하여 혈당값 받기 - xDrip에서 혈당값 받기 모든 관리를 저장합니다. WearOS 워치를 이용하여 AndroidAPS를 모니터하고 제어합니다. xDrip+ 워치페이스에서 Loop정보 보여주기 @@ -116,7 +115,6 @@ 입력값을 변경하세요! 혈당 출처 AndroidAPS가 어디에서 데이터를 가져옵니까? - xDrip APS 모드 Closed Loop Open Loop @@ -213,7 +211,6 @@ Meal 교정주입 실행 - NS에 업로드만 하기(동기화 안됨) 펌프가 초기화 되지 않았습니다! 교체/채움 양이 인퓨전세트의 사양과 일치하는지 확인하세요! @@ -267,7 +264,6 @@ SMS 탭 이름 단축 단순증분값 대신 단기평균증분값을 항상 사용합니다. - xDrip의 혈당데이터에 노이즈가 심할경우 유용합니다. 프로파일 기본값: 3\n이 값은 중요한 OpenAPS 안전장치입니다. 이 값의 역할은 펌프에 설정되어 있는 최대Basal보다 3배를 초과할 수 없게 제한하는 것입니다. 이 값을 변경할 필요는 없을 것이지만, 안전을 위해 \"3x max daily; 4x current\"이 의미하는 바를 알고 있어야 합니다. 기본값: 4\n이 값은 \"3x max daily; 4x current\"의 나머지 절반에 해당하는 또 다른 중요한 OpenAPS 안전장치입니다. 이것은, 펌프에 설정된 최대 Basal과는 관계없이, Basal이 설정된 현재시간의 Basal에 이 값을 곱한 양을 초과할 수 없다는 것을 의미합니다. 이는 알고리즘의 작동 방식을 이해하기 전에 과도하게 높은 최대 기본을 설정하여 위험한 상황에 빠지지 않도록 보호하기 위한 것입니다. 다시한번, 기본 값은 4배인 것을 알아두세요; 일반적으로 이것을 조정할 필요는 전혀 없으며, 대신 이 안전장치를 변경해야할것처럼 생각이 된다면, 다른 설정을 변경해야 할 가능성이 더 큽니다. @@ -280,9 +276,6 @@ SMS폰번호가 유효하지 않습니다 보정 xDrip+가 설치되지 않았습니다 - 보정이 xDrip으로 전송되었습니다 - 보정 전송됨. xDrip에서 수신이 되도록 설정되어 있어야 합니다. - xDrip에서 보정을 받지 못합니다. 펌프 일시중지됨 실행중 가상펌프 설정 @@ -353,8 +346,6 @@ 버전정보 SMS 권한 누락 전화 상태 권한이 허가되지 않았습니다 - xDrip 상태(워치) - xDrip 상태표시라인(워치) xds BGI 보기 BGI를 상태라인에 추가하기 @@ -389,7 +380,6 @@ 취소 모든 프로파일이 로드되지 않았습니다. 값이 저장되지 않았습니다! - 다른 앱 (예 : xDrip)으로 데이터 전송을 활성화합니다. AAPS 또는 NSClient 인스턴스를 두 개 이상 설치 한 경우 활성화하지 마세요! Local Broadcasts 활성화하기 기간 [min] OpenAPS SMB diff --git a/app/src/main/res/values-lt-rLT/strings.xml b/app/src/main/res/values-lt-rLT/strings.xml index 4c8b3ac124..89a1bd6c66 100644 --- a/app/src/main/res/values-lt-rLT/strings.xml +++ b/app/src/main/res/values-lt-rLT/strings.xml @@ -42,7 +42,6 @@ Gauti kraujo gliukozės vertes iš Glimp. Gauti kraujo gliukozės vertes iš 600SeriesAndroidUploader. Gauti kraujo gliukozės vertes iš Nightscout - Gauti kraujo gliukozės vertes iš xDrip. Išsaugoti visus terapijos pakeitimus Stebėti ir kontroliuoti AndroidAPS naudojant WearOS laikrodį. Rodyti Ciklo informaciją laikrodyje, xDrip+ pradžios ekrane. @@ -119,7 +118,6 @@ Pakeiskite įvestus duomenis! Glikemijos šaltinis Iš kur AndroidAPS gaus duomenis? - xDrip DKS režimas Uždaras Ciklas Atviras Ciklas @@ -285,7 +283,6 @@ Maistas Korekcija Veiksmai - Tik įkelti duomenis į NS (ne sinchronizuoti) Pompa neprijungta! Užpildymas Įsitikinkite, kad nurodytas kiekis atitinka Jūsų infuzijos rinkinio specifikaciją! @@ -340,7 +337,6 @@ SMS Naudoti sutrumpintus skirtukų pavadinimus Visada naudoti trumpo laikotarpio vidutinį pokyti vietoj paprasto pokyčio - Naudinga, kai duomenys, gaunami iš nefiltruoto šaltinio, tokio kaip xDrip, tampa nestabilūs. Profilis Numatytoji reikšmė: 3 tai pagrindinis OpenAPS saugiklis. Jis apriboja Jūsų valandinę bazę iki trigubos maksimalios valandinės bazės (standartiniu atveju). Jums greičiausiai neprireiks šios reikšmės keisti, tačiau turėtumėte žinoti, kad ji naudojama kaip saugiklis apskaičiuojant \"3x maksimali dienos bazė; 4x dabartinė valandinė bazė\". Numatytoji reikšmė: 4 tai antras pagrindinis OpenAPS saugiklis, apskaičiuojant \"3x maksimali dienos bazė; 4x dabartinė valandinė bazė\". Jis reiškia, kad jūsų valandinė bazė, nepriklausomai nuo to, kokia maksimali valandinė bazė suprogramuota pompoje, negali būti didesnė, nei keturguba dabartinė valandinė bazė. Tai apsaugo Jus nuo pavojingų situacijų, kai nustatoma pernelyg didelė valandinė bazė, pilnai nesuprantant, kaip veikia algoritmas. Numatytoji reikšmė yra 4x; daugumai vartotojų niekada neprireikia šio skaičiaus keisti, o pajutus, kad \"atsitrenkiama\" į saugiklį, rekomenduojama peržiūrėti kitus nustatymus. @@ -354,9 +350,6 @@ Neteisingas SMS telefono numeris Kalibravimas xDrip+ neįdiegta - Kalibracija nusiųsta į xDrip - Kalibracija išsiųsta. xDrip programoje turi būti įgalintas gavimas. - xDrip negauna kalibracijų Pompa sustabdyta Vykdoma Virtualios pompos nustatymai @@ -455,8 +448,6 @@ Apie Trūksta leidimo SMS Trūksta telefono būsenos leidimo - xDrip statusas (laikrodžio) - xDrip linija (laikrodžio) xds Rodyti KG Pridėti KG prie statuso linijos @@ -499,7 +490,6 @@ Atšaukti Ne visi profiliai įkelti! Reikšmės neišsaugotos! - Įgalinti perdavimą į kitas programas (pvz., „XDrip“). Neįgalinkite, jei įdiegta daugiau nei vienas AAPS arba NSClient egzempliorius! Įgalinti lokalų duomenų perdavimą. Trukmė [min] OpenAPS SMB @@ -1170,7 +1160,6 @@ Paaukokite savo duomenis mokslui OH Jūs buvote atjungtas iš Open Humans - Spustelėkite čia, kad prisijungtumėte dar kartą, jei tai atsitiko netyčia. Tik įkelti, jei prijungta prie WiFi Įkelti tik akumuliatoriaus įkrovimo metu Darbinė Būklė: %s @@ -1182,7 +1171,6 @@ Don\'t kill my app? Aliarmas Siųsti SMS, jei aptinkamas įrašas apie nepasiekiamą pompą - Pranešti apie nepasiekiamą pompą Pranešti apie laiką valgyti Pranešti po %1$d min Boluso patarėjas diff --git a/app/src/main/res/values-nl-rNL/exam.xml b/app/src/main/res/values-nl-rNL/exam.xml index 623699272c..442eabb68b 100644 --- a/app/src/main/res/values-nl-rNL/exam.xml +++ b/app/src/main/res/values-nl-rNL/exam.xml @@ -175,8 +175,8 @@ Hogere KH-ratio\'s leiden tot minder insulinetoediening voor dezelfde hoeveelheid koolhydraten. Lagere KH-ratio\'s leiden tot minder insulinetoediening voor dezelfde hoeveelheid koolhydraten. Als je 0 COB hebt zal het veranderen van KH-ratio leiden tot een andere hoeveelheid insuline om jouw BG te corrigeren. - KH-ratio is anders als je een brood-eenheid telt als10g of als 12g koolhydraten. - KH-ratio betekent: hoeveel brood-eenheden gebruik je voor 1U insuline. + De KH-ratio is anders als je een brood-eenheid telt als 10g of als 12g koolhydraten. + KH-ratio betekent: hoeveel brood-eenheden gebruik je voor 1E insuline. https://androidaps.readthedocs.io/en/latest/CROWDIN/nl/Getting-Started/FAQ.html#Koolhydraat-ratio-KH-g-E Profielwissels Welke antwoorden zijn correct bij het opgeven van een 90% profielwissel? diff --git a/app/src/main/res/values-nl-rNL/strings.xml b/app/src/main/res/values-nl-rNL/strings.xml index e0f46573ae..d549e20f4b 100644 --- a/app/src/main/res/values-nl-rNL/strings.xml +++ b/app/src/main/res/values-nl-rNL/strings.xml @@ -42,7 +42,7 @@ Ontvang BG waardes van Glimp. Ontvang BG waardes van 600SeriesAndroidUploader. Download BG waardes van Nightscout - Ontvang BG waardes van xDrip. + Ontvang BG waardes van xDrip+. Sla alle behandelingen op AndroidAPS controleren en bedienen met behulp van uw WearOS-horloge. Toon informatie over de Loop op jouw xDrip+ wijzerplaat. @@ -119,7 +119,7 @@ Wijzig het ingegevene! BG bron Waar moet de AndroidAPS zijn gegevens vandaan halen? - xDrip + xDrip+ APS Mode Closed loop Open loop @@ -217,11 +217,11 @@ SMS Commando\'s Geautoriseerde telefoon nummers +XXXXXXXXXX;+YYYYYYYYYY - Om de bolus %1$.2fU toe te dienen antwoord met de code %2$s - Antwoord met de code %2$s om de bolus %1$.2fE toe te dienen - Antwoord met code %2$s om tijdelijk streefdoel %1$s in te stellen - Antwoord met code %1$s om tijdelijk streefdoel te annuleren - Antwoord met code %1$s om de controle via SMS uit te zetten. \n\nDenk er aan dat je deze alleen weer aan kunt zetten op de AAPS master smartphone. + Om een bolus van %1$.2fE te geven antwoord met de code %2$s + Om een maaltijd bolus van %1$.2fE te geven antwoord met de code %2$s + Om tijdelijk streefdoel %1$s in te stellen antwoord met code %2$s + Om tijdelijk streefdoel te annuleren antwoord met code %1$s + Om de SMS Remote Service uit te zetten, antwoord met code %1$s. \n\nDenk er aan dat je deze alleen weer aan kunt zetten op de AAPS master smartphone. De controle via SMS is uitgezet. Gebruik AAPS op de master smartphone om deze weer te aan te zetten. Om calibratie %1$.2f te verzenden antwoord met de code %2$s Bolus mislukt @@ -246,17 +246,17 @@ Waarde %1$s valt buiten de toegestane harde limieten Om verbinding te maken met pomp antwoord met code %1$s Verbinding maken met pomp is mislukt - Om de pomp te ontkoppelen voor %1$d minuten antwoord met code %2$s + Om de pomp te ontkoppelen gedurende %1$d minuten antwoord met code %2$s Pomp verbinding verbroken Pomp opnieuw verbonden Commando\'s op afstand zijn niet toegestaan Bolus op afstand niet beschikbaar. Probeer het later opnieuw. - Om een basaal van %1$.2f E/uur voor %2$d min te starten, antwoord met code %3$s + Om een basaal van %1$.2f E/uur gedurende %2$d min te starten, antwoord met code %3$s Om naar profiel %1$s %2$d%% te wisselen antwoord met code %3$s - Om een vertraagde bolus van %1$.2f E voor %2$d min te starten, antwoord met code %3$s - Antwoord met code %3$s om %1$dg in te voeren op %2$s - Om een basaal van %1$d%% voor %2$d min te starten antwoord met code %3$s - Om de loop te onderbreken voor %1$d minuten antwoord met de code %2$s + Om een vertraagde bolus van %1$.2f E gedurende %2$d min te starten, antwoord met code %3$s + Om %1$dg in te voeren om %2$s antwoord met code %3$s + Om een basaal van %1$d%% gedurende %2$d min te starten antwoord met code %3$s + Om de loop te onderbreken gedurende %1$d minuten antwoord met de code %2$s Om loop te hervatten antwoord met code %1$s Om loop in te schakelen antwoord met code %1$s Om loop uit te schakelen antwoord met code %1$s @@ -285,7 +285,7 @@ Maaltijd bolus Correctie Acties - Alleen NS upload (sync. gedeactiveerd) + (GEVAARLIJK OM UIT TE SCHAKELEN) alleen NS upload Alleen NS-upload. Heeft geen effect op de SGV, behalve als een lokale bron als xDrip geselecteerd is. Heeft geen effect op profielen wanneer NS-Profielen gebruikt worden.\n!!! WAARSCHUWING !!! Het uitschakelen van deze optie kan fouten veroorzaken en mogelijk resulteren in een overdosis insuline als een van de onderdelen (AAPS, NS, xDrip) onjuist is geconfigureerd. Let goed op of de gegevens van AAPS overeenkomen met de pompstatus! Pomp niet geïnitialiseerd! Ontlucht/vul @@ -341,7 +341,7 @@ SMS Afgekorte tab titels Gebruik altijd korte gemiddeld verschil ipv gewone verschil - Nuttig wanneer gegevens van niet gedempte bronnen zoals Xdrip noisy zijn. + Nuttig wanneer gegevens van niet gefilterde bronnen zoals xDrip+ veel ruis heeft. Profiel Standaard waarde: 3.0 Dit is een belangrijke veiligheid parameter van OpenAPS. Dit limiteert je basaal met een max van 3 maal je hoogste basale dosis. Normaal hoef je deze niet te veranderen. Het is echter belangrijk dat je de ingebouwde limieten kent. Standaard waarde: 4 Dit is een combinatie van enerzijds het OpenAPS veiligheid limieten en anderzijds van “3 x max dagelijks basaal; 4x actueel”. Dit betekent dat het basaal niet hoger kan ingesteld worden dan het ingestelde nummer keer het actueel basaal waarbij de limiet in de pomp geen invloed heeft. Dit is een veiligheidsmaatregel om te voorkomen dat patiënten in gevaarlijke laag bereik komen zonder te snappen hoe het algoritme werkt. Nogmaals de standaard waarde is 4x; de meeste zullen deze waarde nooit moeten aanpassen maar zullen eerder andere waardes moeten aanpassen als ze tegen een limiet aanstoten. @@ -355,9 +355,9 @@ Foutief SMS telefoon nummer Kalibratie xDrip+ niet geïnstalleerd - Kalibratie naar xDrip verzonden - Kalibratie verzonden. Het ontvangen van kalibraties moet actief zijn in xDrip. - XDrip ontvangt geen kalibraties + Kalibratie verzonden naar xDrip+ + Kalibratie verzonden. xDrip+ moet zo zijn ingesteld dat hij het ontvangen van kalibraties toestaat. + xDrip+ ontvangt geen kalibraties Pomp onderbreken Uitvoeren Virtuele pomp instellingen @@ -460,8 +460,8 @@ Over Geen SMS bevoegdheid Machtiging ontbreekt voor telefoon gebruik - xDrip Status (Horloge) - xDrip Statuslijn (Horloge) + xDrip+ Status (horloge) + xDrip+ Statuslijn (horloge) xds Toon BGI Voeg BGI toe aan status lijn @@ -504,7 +504,7 @@ Afbreken Niet alle profielen zijn geladen! Waarden niet opgeslagen! - Schakel broadcasts in naar andere apps (zoals xDrip). Schakel niet in als je NSClient of meer dan één installatie van AAPS hebt geïnstalleerd! + Schakel lokaal data delen naar andere apps (zoals xDrip) in. Schakel dit niet in als je NSClient of meer dan één installatie van AAPS op je telefoon hebt staan! Activeer locaal delen. Tijdsduur [min] OpenAPS SMB @@ -1187,7 +1187,7 @@ Don\'t kill my app? Alarm Stuur SMS wanneer de pomp onbereikbaar is - Melden wanneer de pomp onbereikbaar is + Melding pomp onbereikbaar Start alarm wanneer het tijd is om te eten Start alarm over %1$d min Bolusadviseur @@ -1197,4 +1197,5 @@ Tijd om te eten!\nVoer de boluswizard opnieuw uit. Tijd om te eten Upload van crashrapporten is uitgeschakeld! + Grafiek
diff --git a/app/src/main/res/values-no-rNO/strings.xml b/app/src/main/res/values-no-rNO/strings.xml index 3c40df9b08..f42990519a 100644 --- a/app/src/main/res/values-no-rNO/strings.xml +++ b/app/src/main/res/values-no-rNO/strings.xml @@ -42,7 +42,6 @@ Motta BS verdier fra Glimp. Motta BS verdier fra 600SeriesAndroidUploader. Last ned BS verdier fra Nightscout - Motta BS verdier fra xDrip. Lagre data om alle behandlinger som er utført Monitorer og kontroller AndroidAPS med din WearOS klokke. Vis informasjon om loop på din xDrip+ urskive. @@ -119,7 +118,6 @@ Endre dine inndata! BS kilde Hvor skal AndroidAPS hente sine data fra? - xDrip APS modus Lukket loop Åpen loop @@ -285,8 +283,6 @@ Måltid Korreksjon Handlinger - Kun NS opplasting (deaktivert sync) - Kun NS opplasting. Ikke effektiv på SGV med mindre en lokal kilde som xDrip er valgt. Ikke effektiv på Profiler mens NS-Profiler brukes.\n!!! ADVARSEL !!! Deaktivering av dette alternativet kan føre til funksjonsfeil og overdosering av insulin hvis noen av dine komponenter (AAPS, NS, xDrip) er feil konfigurert. Observer at data som vises i AAPS samsvarer med pumpestatus! Pumpen ikke initialisert! Prime/fylling Kontroller at mengden samsvarer med spesifikasjonen for slangesettet ditt! @@ -341,7 +337,6 @@ SMS Korte navn i menyfaner Bruk alltid kort gjennomsnittsverdi delta i stedet for enkel delta - Nyttig når data fra ufiltrerte kilder som xDrip registrerer mye støy. Profil Standardverdi: 3 Dette er en viktig OpenAPS sikkerhetsbegrensning. Dette begrenser dine basaler til maks 3x av din høyeste basalverdi. Du vil trolig ikke behøve å endre denne verdien, men les og forstå hva som menes med \"3x max daglig; 4x gjeldende\" som sikkerhetsinnstilling. Standardverdi: 4 Dette er en viktig OpenAPS sikkerhetsbegrensning. Dette begrenser dine temp basal til max 4 ganger din nåværende basal dose, uansett hva som er maks basal i pumpen. Dette er for å unngå at man setter farlige høye maks basal doser uten at man har forstått algoritmene. Når du taket i denne begrensningen bør du i stedet fokusere på å endre andre innstillinger. @@ -355,9 +350,6 @@ Ugyldig SMS mobilnummer Kalibrering xDrip+ ikke installert - Kalibrering er sendt til xDrip - Kalibrering sendt. Vær oppmerksom på at xDrip må være konfigurert til å ta imot kalibreringer. - xDrip tar ikke imot kalibreringer Pumpen er pauset Utfører Virtuelle pumpe innstillinger @@ -460,8 +452,6 @@ Om Mangler SMS tillatelse Mangler app tillatelse til telefon - xDrip Status (klokke) - xDrip Statuslinje (klokke) xds Vis BGI Legg til BGI i statuslinje @@ -504,7 +494,6 @@ Avbryt Ikke alle profiler ble lastet! Verdier ikke lagret! - Aktiver sending til andre apper (som xDrip). Ikke aktiver dette hvis du har mer enn en AAPS eller NSClient installert! Aktiver lokale sendinger. Varighet [min] OpenAPS SMB @@ -1175,7 +1164,6 @@ Doner dine data til vitenskapen OH Du har blitt logget ut fra Open Humans - Klikk her for å logge inn igjen hvis dette ikke var hensikten. Last opp kun dersom du er koblet til WiFi Last opp kun ved mobillading Fremdrift: %s @@ -1187,7 +1175,6 @@ Avslutte app? Alarm Send SMS hvis det ikke oppnås kontakt med pumpa - Rapporter når pumpe ikke kan tilkobles Aktiver alarm når det er på tide å spise Aktiver alarm om %1$d min Bolusguide diff --git a/app/src/main/res/values-pl-rPL/exam.xml b/app/src/main/res/values-pl-rPL/exam.xml index b02e49fa5d..e42167e033 100644 --- a/app/src/main/res/values-pl-rPL/exam.xml +++ b/app/src/main/res/values-pl-rPL/exam.xml @@ -93,7 +93,7 @@ Wspierany CGM i odpowiednia aplikacja, aby otrzymywać wartości glukozy we krwi na telefonie/urządzeniu. https://androidaps.readthedocs.io/en/latest/EN/Module/module.html Aktualizowanie AndroidAPS - Sprawdź/Zaznacz wszystkie prawidłowe odpowiedzi. + Zaznacz wszystkie prawidłowe odpowiedzi. Musisz mieć zainstalowany i skonfigurowany Git na komputerze. Po wydaniu zaktualizowanych wersji AndroidAPS wcześniejsze wersje mogą być zdalnie ograniczone po określonym czasie. Powinieneś/powinnaś zapisać i zanotować lokalizację swojego klucza i użyć tego samego klucza do aktualizacji jak dla poprzedniej instalacji. @@ -117,7 +117,7 @@ Actrapid ® /Humulin R ®/\"zwykła\" insulina ludzka. https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html#insulin Wtyczki wrażliwości - Sprawdź/Zaznacz wszystkie prawidłowe odpowiedzi. + Zaznacz wszystkie prawidłowe odpowiedzi. Wtyczki wrażliwości pozwalają AndroidAPS dostosować się do czasowych lub krótkotrwałych zmian wrażliwości na insulinę (na przykład zmiany hormonalne lub problemy z wchłanianiem w miejscu wkłucia). Wtyczki wrażliwości dostarczają użytkownikowi sugerowane zmiany w dawkach bazowych, współczynnikach I:C i ISF, które mogą być używane do edycji profilu. Rejestracja zmiany wkłucia spowoduje zresetowanie współczynnika Autosens z powrotem do 100%. diff --git a/app/src/main/res/values-pl-rPL/objectives.xml b/app/src/main/res/values-pl-rPL/objectives.xml index 878a382bda..cb5ef78c43 100644 --- a/app/src/main/res/values-pl-rPL/objectives.xml +++ b/app/src/main/res/values-pl-rPL/objectives.xml @@ -40,12 +40,12 @@ Kod został zaakceptowany Niepoprawny kod Potwierdź swoje umiejętności - Przestudiuj pytania. Na każde pytanie masz cztery możliwe odpowiedzi. Może być więcej niż jedna poprawna odpowiedź. Sprawdź wszystkie poprawne i wybierz WERYFIKUJ. + Przestudiuj pytania. Na każde pytanie masz cztery możliwe odpowiedzi. Może być więcej niż jedna poprawna odpowiedź. Zaznacz wszystkie poprawne i wybierz WERYFIKUJ. Odpowiadanie wyłączone na: %1$s Odpowiedź nieprawidłowa! Następny niedokończony Kod zapytania: %1$s - (sprawdź wszystkie poprawne odpowiedzi) + (zaznacz wszystkie poprawne odpowiedzi) https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#what-to-do-when-taking-a-shower-or-bath https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/Screenshots.html#the-homescreen https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/Screenshots.html#config-builder diff --git a/app/src/main/res/values-pl-rPL/strings.xml b/app/src/main/res/values-pl-rPL/strings.xml index 4b7e2392c0..3ceca3402a 100644 --- a/app/src/main/res/values-pl-rPL/strings.xml +++ b/app/src/main/res/values-pl-rPL/strings.xml @@ -42,7 +42,6 @@ Pobieraj wartości BG z Glimp. Pobieraj wartości BG z uploadera pomp serii 600. Pobieraj wartości BG z Nightscout - Pobieraj wartości BG z xDrip. Zapisuje wszystkie wykonane czynności leczenia Monitoruj i kontroluj AndroidAPS, korzystając z SmartWatch WearOS. Pokaż informacje o swojej pętli na watchface xDrip+. @@ -119,7 +118,6 @@ Zmień wprowadzone dane! Źródło BG Skąd AndroidAPS powinien czerpać dane? - xDrip Tryb APS Zamknięta pętla Otwarta pętla @@ -285,7 +283,6 @@ Posiłek Korekta Akcje - NS tylko przesył. (wyłączona synch.) Pompa nie zainicjowana! Rozpocznij/Wypełnij Proszę upewnij się, że ilość wypełnienia odpowiada ilości właściwej dla twojego wkłucia! @@ -340,7 +337,6 @@ SMS Skrócone tytuły kart Zawsze używaj krótkiej średniej delty zamiast prostej delta - Użyteczne, jeżeli dane z niefiltrowanego źródła jak xDrip mają rozrzut. Profil Wartość domyślna: 3 To jest kluczowy współczynnik bezpieczeństwa OpenAPS. Ogranicza dawki bazowe do 3x twojej największej dawki bazowej. Prawdopodobnie nie będziesz musiał tego zmieniać, ale powinieneś być świadomy tego, co się rozumie przez “3x max dzienna; 4x aktualna” dla współczynników bezpieczeństwa. Wartość domyślna: 4 To jest drugi kluczowy współczynnik bezpieczeństwa OpenAPS, i druga wartość z “3x max dzienna; 4x aktualna”. To oznacza, że Twoja dawka bazowa niezależnie od maksymalnej bazy ustawionej na pompie nie może być większa niż ta ustawiona wartość razy twoja aktualna dawka bazowa. To ma na celu przestrzec ludzi przed ustawieniem zbyt wysokiej dawki maksymalnej przed zrozumieniem jak działa algorytm. Ponownie, wartość domyślna to 4x; większość ludzi nie będzie potrzebowała tego zmienić i raczej będą potrzebować dostosować inne ustawienia, jeśli czują, że zbliżają się do współczynnika bezpieczeństwa. @@ -354,9 +350,6 @@ Nieprawidłowy numer telefonu SMS Kalibracja xDrip+ nie zainstalowany - Kalibracja przesłana do xDrip - Kalibracja wysłana. Odbiór musi być dozwolony w xDrip. - xDrip nie odbiera kalibracji Pompa wstrzymana Wykonywanie Ustawienia pompy wirtualnej @@ -455,8 +448,6 @@ O programie Brak uprawnień SMS Brak uprawnień do wykrywania stanu telefonu - xDrip Status (watch) - Linia Statusu xDrip (watch) xds Pokaż BGI Dodaj BGI do Linii Statusu @@ -500,7 +491,6 @@ Anuluj Nie wszystkie profile zostały załadowane! Wartości nie są przechowywane! - Włącz rozgłaszanie do innych aplikacji (takich jak xDrip). Nie należy włączać, jeśli zainstalowana jest więcej niż jedna instancja AAPS lub NSClient! Włącz transmisję lokalnie. Czas trwania [min] OpenAPS SMB @@ -1171,7 +1161,6 @@ Przekaż swoje dane na rzecz nauki OH Zostałeś wylogowany z Open Humans - Kliknij tutaj, aby zalogować się ponownie, jeśli wylogowanie nie było celowe. Prześlij tylko jeśli połączono poprzez WiFi Prześlij tylko gdy telefon jest ładowany Stan procesu: %s @@ -1183,7 +1172,6 @@ Nie zabij mojej aplikacji? Alarm Wyślij SMS, jeśli wyzwolone jest zdarzenie pompy nieosiągalnej - Zgłoś pompę nieosiągalną Uruchom alarm kiedy będzie czas na jedzenie Uruchom alarm za %1$d min Doradca bolusa diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index b0ac76ef01..fe25780588 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -40,7 +40,6 @@ Receber valores BG do Glimp. Receber valores de Glucose do 600SeriesAndroidUploader. Downloads de dados de Glicose do Nightscout - Receber valores BG de xDrip. Salva todos os tratamentos que foram feitos Monitore e controle AndroidAPS usando seu relógio WearOS. Mostrar informações sobre o loop no watchface do xDrip+. @@ -117,7 +116,6 @@ Altere sua entrada! Fonte de BG De onde o AndroidAPS deve obter os dados? - xDrip Modo APS Loop Fechado Loop Aberto @@ -260,7 +258,6 @@ Refeição Correção Ações - Envio do NS apenas (sincronização desativada) Bomba não inicializada! Purgar/Preencher Por favor certifique-se que o valor corresponde ao especificado para o seu conjunto de infusão! @@ -315,7 +312,6 @@ SMS Abreviar títulos dos separadores Usar sempre delta médio curto em vez de delta simples - Útil quando há ruído nos dados de fontes sem filtro como o xDrip. Perfil Valor padrão: 3 Por segurança é o valor limite estabelecido por OpenAPS. O que faz é limitar a basal a x3 a basal mázima. Se necessário modificar este valor, por favor ter em conta que os dados apontam para que os limites de segurança sejam - 3 x max diario ou 4x valor atual (qual seja menor) como valores máximos. Valor padrão: 4 Esta é a outra parte dos valores limites de segurança - 3 x max diário ou 4x valor actual - do OpenAPS. Isto define que não importa o valor da basal máxima definido na bomba, o valor máximo da basal temporária não pode ser maior que 4 x o valor da basal definida na bomba. O objetivo é evitar que sejam determinadas basais temporárias muito elevadas antes que se perceba como o algoritmo funciona. 4x é um valor que a maior parte das pessoas nunca necessitará de alterar pois o mais provável é necessitar de alterar outras definições para não necessitar de \"ultrapassar\" este limite de segurança. @@ -329,9 +325,6 @@ SMS número de telefone inválido Calibração xDrip+ não está instalado - Calibração enviada para o xDrip - Calibração enviada. Recepção têm de estar activada no xDrip. - O xDrip não esta a receber as calibrações Bomba suspensa Executando Definições da bomba virtual @@ -407,8 +400,6 @@ Sobre Falta de permissão SMS Falta permissão do estado do telefone - Estado xDrip (relógio) - Linha estado xDrip (relógio) xds Mostrar BGI Adicionar BGI à linha de status @@ -443,7 +434,6 @@ Cancelar Nem todos perfis foram carregados! Valores não guardados! - Ative as transmissões para outros apps (como xDrip). Não ative se você tiver mais de uma instância de AAPS ou NSClient instalada! Ativar partilha local. Duração [min] SMB OpenAPS diff --git a/app/src/main/res/values-pt-rPT/exam.xml b/app/src/main/res/values-pt-rPT/exam.xml index e10231a258..ce1e97478f 100644 --- a/app/src/main/res/values-pt-rPT/exam.xml +++ b/app/src/main/res/values-pt-rPT/exam.xml @@ -1,23 +1,36 @@ O que é verdade sobre DIA? + Duração da Acção de Insulina (DIA) + Deve definir o valor da DIA no seu perfil. + O valor mínimo permitido são 5 horas. https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html?#insulin + Hipo Alvo-Temp https://androidaps.readthedocs.io/en/latest/EN/Usage/temptarget.html Qual perfil pode ser usado e configurado offline? Tópico: Perfil Offline Perfil NS pode ser usado, mas não configurado. https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html#profile + Razões para aplicar \"Desconectar bomba\" no AndroidAPS O que deve ser feito ao desligar a bomba? https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#other-settings + Definições AndroidAPS + Definições AndroidAPS https://androidaps.readthedocs.io/en/latest/EN/Usage/ExportImportSettings.html https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#what-emergency-equipment-is-recommended-to-take-with-me O que deve ser feito se os dados do CGM são irregulares? https://androidaps.readthedocs.io/en/latest/EN/Usage/Smoothing-Blood-Glucose-Data-in-xDrip.html#smoothing-blood-glucose-data + https://androidaps.readthedocs.io/en/latest/EN/Usage/temptarget.html#activity-temp-target https://androidaps.readthedocs.io/en/latest/EN/Usage/temptarget.html#activity-temp-target Eu recebo insulina quando o loop estiver desactivado/suspenso? Sim, a insulina basal continua a ser administrada. Não, administração da insulina está parada. + Testes de Basal, FSI e I:C + Quando esses valores devem ser validados? + Antes de começar com o looping. + Pelo menos uma vez por semana. https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#androidaps-settings + Pré-requisitos Informações do perfil validadas (Basal, IC, FSI, DIA). Um telefone compatível. Uma conta Tidepool. @@ -27,24 +40,43 @@ https://androidaps.readthedocs.io/en/latest/EN/Module/module.html Um Smartwatch. Um CGM Suportado. + Pré-requisitos + https://androidaps.readthedocs.io/en/latest/EN/Module/module.html + Actualizar AndroidAPS + Seleccione todas as respostas correctas. Nunca actualize se o sistema estiver a funcionar bem. https://androidaps.readthedocs.io/en/latest/EN/Installing-AndroidAPS/Update-to-new-version.html#update-to-a-new-version-or-branch + Resolução de Problemas https://androidaps.readthedocs.io/en/latest/EN/Installing-AndroidAPS/Update-to-new-version.html#troubleshooting https://www.facebook.com/groups/AndroidAPSUsers/ https://gitter.im/MilosKozak/AndroidAPS + Plugins de Insulina Fiasp® + NovoRapid®/Novolog® Humalog ® + Actrapid®/Humalin R®/\"regular\" insulina humana. https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html#insulin + Plugins de Sensibilidade + Marque todas as respostas correctas. https://androidaps.readthedocs.io/en/latest/EN/Configuration/Sensitivity-detection-and-COB.html O que deve fazer se tiver feito uma entrada incorrecta de hidratos? + https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#insulin-to-carb-ratio-ic-g-u + hidratos-e + Para que poderia usar os hidratos-e (hidratos estendidos)? + Os hidratos-e (distribuídos no futuro) podem ajudar o AndroidAPS a lidar com comidas gorduras/proteínas elevadas. https://androidaps.readthedocs.io/en/latest/EN/Usage/Extended-Carbs.html + Monitorização Remota https://androidaps.readthedocs.io/en/latest/EN/Children/Children.html A alteração do valor do FSI no seu perfil é suficiente para aplicar a mudança. https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#insulin-sensitivity-factor-isf-mmol-l-u-or-mg-dl-u https://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html Se tiver 0 COB, alterar o rácio IC irá levar a uma quantidade diferente de insulina para corrigir um determinado valor da Glic. https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#carbohydrate-to-insulin-ratio-cr-g-u + Troca de Perfil https://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html?highlight=profile%20switch#profile-switch + Troca de Perfil + Iniciar uma mudança de perfil com uma alteração de turno de 2 + Iniciar uma mudança de perfil com uma alteração de turno de -2 https://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html?highlight=profile%20switch#timeshift https://androidaps.readthedocs.io/en/latest/EN/Module/module.html#good-individual-dosage-algorithm-for-your-diabetes-therapy Onde ir para obter ajuda com rácios da basal, etc. diff --git a/app/src/main/res/values-pt-rPT/objectives.xml b/app/src/main/res/values-pt-rPT/objectives.xml index c833e22e23..899b5069e7 100644 --- a/app/src/main/res/values-pt-rPT/objectives.xml +++ b/app/src/main/res/values-pt-rPT/objectives.xml @@ -28,7 +28,7 @@ Aprenda como controlar AndroidAPS Executar diferentes acções no AndroidAPS Definir perfil de 90% por 10 min (pressione longo no nome de perfil na Visão Geral) - Simular chuveiro. Desligar a bomba de 1h (Pressione longo em Open Loop) + Simular chuveiro. Desconectar a bomba por 1h (Pressione longo em Open Loop) ... e volte a ligar de volta da mesma forma Crie um alvo temporário personalizado com 10 min de duração (pressione longo no seu alvo actual) No Configurador active o plugiin de Acções, torne-o visível e exiba o seu conteúdo no menu superior diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index 243cd4a216..82e19ce0f4 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -7,13 +7,14 @@ Segurança de tratamentos Max bolus permitido [U] Max hidratos permitidos [g] + %1$s Preferências Preferências Actualizar tratamentos do NS Reinicializar base de dados Quer realmente reiniciar a base de dados? Sair Usar sempre valores absolutos de basal - Por favor, reinicie o telefone ou reinicie o AndroidAPS a partir das Configurações do Sistema \ncaso contrário, o AndroidAPS não terá registo (importante para controlar e verificar se os algoritmos estão a funcionar correctamente)! + Por favor, reinicie o telefone ou reinicie o AndroidAPS a partir das Definições do Sistema \ncaso contrário, o AndroidAPS não terá registo (importante para controlar e verificar se os algoritmos estão a funcionar correctamente)! Este dispositivo não parece suportar a optimização de bateria na lista de permissões - pode ter problemas de desempenho. Alguns botões para aceder rapidamente a funções comuns Usado para configurar os plugins ativos @@ -34,17 +35,16 @@ Integração para bombas Accu-Chek Combo, requer ter o ruffy instalado Integração para as pessoas que fazem múltiplas injeções diárias para a sua terapia de diabetes Integração para as bombas que não têm qualquer driver ainda (Open Loop) - A sensibilidade é calculada da mesma forma que Oref0, mas você pode especificar o período de tempo para o passado. A absorção mínima de hidratos de carbono é calculada a partir do tempo máximo de absorção de hidratos de carbono das preferências. + A sensibilidade é calculada da mesma forma que Oref0, mas pode especificar o período de tempo para o passado. A absorção mínima de hidratos de carbono é calculada a partir do tempo máximo de absorção de hidratos de carbono das preferências. A sensibilidade é calculada a partir de dados das últimas 8h ou 24h (usando qualquer um que é mais sensível). Hidratos são cortados (se não absorvidos) após o tempo especificado nas preferências. O Plugin também calcula o UAM. A sensibilidade é calculada como uma média ponderada de desvios. Desvios mais recentes têm maior peso. A absorção mínima de hidratos de carbono é calculada a partir do tempo máximo de absorção de hidratos de carbono das preferências. Este algoritmo é o mais rápido em seguir as mudanças de sensibilidade. Receber valores de Glicose da aplicação Eversense modificada. Receber valores Glucose do Glimp. Receber valores de Glucose do 600SeriesAndroidUploader. Descarrega dados de Glucose do Nightscout - Receber valores de Glucose do xDrip. Guarda todos os tratamentos que foram feitos Monitorizar e controlar o AndroidAPS usando o seu relógio WearOS. - Mostrar informações sobre o loop no watchface do xDrip+. + Mostrar informações sobre o loop no mostrador do xDrip+. Controlar remotamente o AndroidAPS usando comandos SMS. Insulina: Hidratos: @@ -118,7 +118,6 @@ Altere o seu input! Origem dos valores de Glucose De onde deve o AndroidAPS obter os dados? - xDrip Modo APS Closed Loop Open Loop @@ -136,7 +135,7 @@ Outro Medidor Sensor - Tempo Hidratos + Hora Hidratos Duração Notas Hora do Evento @@ -148,12 +147,12 @@ Versão Nightscout: A faltar %1$d g Preferências exportadas - Exportar configurações para - Importar configurações de - Configurações importadas + Exportar definições para + Importar definições de + Definições importadas Ficheiro não encontrado - Exportar configurações - Importar configurações + Exportar definições + Importar definições Max U/h em que uma Temp Basal pode ser definida Este valor é chamado max basal no contexto do OpenAPS Basal Máxima IOB que OpenAPS pode administrar [U] @@ -175,12 +174,12 @@ Detalhes de problemas de importação Importar Importar mesmo assim (PERIGOSO!) - As preferências foram criadas com uma variante diferente do AAPS (%1$s) enquanto tem: %2$s.\n\nAlgumas configurações podem estar ausentes ou inválidas - após a importação, por favor verifique e actualize suas preferências. + As preferências foram criadas com uma variante diferente do AAPS (%1$s) enquanto tem: %2$s.\n\nAlgumas definições podem estar ausentes ou inválidas - após a importação, por favor verifique e actualize suas preferências. Preferências foram criadas num dispositivo diferente. Não há problema se estiver a importar de telefone diferente/antigo, mas se certifique que as preferências importadas estão corretas! Está a usar formato ultrapassado herdado a partir de versões antigas do AAPS, o que não é seguro! Use-o apenas como um último recurso, se não tiver uma exportação no actual no formato JSON. Preferências importadas já são %1$s dias antigas! Talvez tenha preferências mais actualizadas ou escolheu o ficheiro errado? Lembre-se de exportar preferências regularmente! Formato de data-hora inválido! - Preferências de uma versão menor diferente de aplicação. Está OK se você está importando após o upgrade, mas verifique após a importação se as preferências ainda estão corretas! + Preferências de uma versão menor diferente de aplicação. Está OK se está a importar após o upgrade, mas verifique após a importação se as preferências ainda estão correctas! Preferências de uma versão principal diferente de aplicação. As principais versões diferem significativamente e podem ter preferências incompatíveis! Certifique-se depois de importar que as preferências ainda estão corretas! Formato do ficheiro Criado em @@ -193,23 +192,23 @@ Novo formato de encriptação Novo formato de depuração (não encriptado) Formato de exportação desconhecido - Ficheiro de configurações adulterado - Ficheiro de configurações é seguro - A usar um formato de configurações não seguro e não encriptado + Ficheiro de definições adulterado + Ficheiro de definições é seguro + A usar um formato de definições não seguro e não encriptado Erro de formato JSON, campo necessário ausente (formato, conteúdo, metadados ou segurança) Erro ao desencriptar, a senha inserida não pode desencriptar o ficheiro - Ficheiro de verificação (hash) em falta, não é possível verificar a autenticidade de configurações! + Ficheiro de verificação (hash) em falta, não é possível verificar a autenticidade das definições! Ficheiro foi modificado após exportação! Erro Desencriptação, a análise de preferências falhou! Erro de Desencriptação, a senha é inválida ou configurações de arquivo foram modificadas! Pode acontecer que o ficheiro importado foi exportado com uma Senha Mestra diferente. - Configuração de encriptação ausente, formato de configurações é inválido! + Configuração de encriptação ausente, formato de definições é inválido! Algoritmo de encriptação não suportado ou não especificado! exportado há %1$s exportado às %1$s exportado há menos de uma hora no diretório: %1$s Condições de Utilização - NÃO DEVE SER USADO PARA FAZER DECISÕES MÉDICAS. NÃO HÁ NENHUMA GARANTIA PARA O PROGRAMA, NA EXTENSÃO PERMITIDA PELA LEGISLAÇÃO APLICÁVEL. EXCETO QUANDO DE OUTRA FORMA, POR ESCRITO, OS TITULARES DOS DIREITOS DE AUTOR E / OU OUTRAS PARTES FORNECEM O PROGRAMA “TAL COMO ESTÁ”, SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO, ÀS GARANTIAS IMPLÍCITAS DE COMERCIALIZAÇÃO E ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. TODO O RISCO QUANTO À QUALIDADE E DESEMPENHO DO PROGRAMA É COM VOCÊ. CASO O PROGRAMA SEJA DEFEITUOSO, VOCÊ ASSUME O CUSTO DE TODOS OS SERVIÇOS, REPAROS OU CORREÇÕES NECESSÁRIOS. + NÃO DEVE SER USADO PARA FAZER DECISÕES MÉDICAS. NÃO HÁ NENHUMA GARANTIA PARA O PROGRAMA, NA EXTENSÃO PERMITIDA PELA LEGISLAÇÃO APLICÁVEL. EXCEPTO QUANDO DE OUTRA FORMA, POR ESCRITO, OS TITULARES DOS DIREITOS DE AUTOR E / OU OUTRAS PARTES FORNECEM O PROGRAMA “TAL COMO ESTÁ”, SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO, ÀS GARANTIAS IMPLÍCITAS DE COMERCIALIZAÇÃO E ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. TODO O RISCO QUANTO À QUALIDADE E DESEMPENHO DO PROGRAMA É CONSIGO. CASO O PROGRAMA SEJA DEFEITUOSO, ASSUME O CUSTO DE TODOS OS SERVIÇOS, REPAROS OU CORREÇÕES NECESSÁRIOS. EU ENTENDO E CONCORDO Guardar Recarregar perfil @@ -226,7 +225,7 @@ Bólus falhado Número mínimo de minutos que deve decorrer entre um bólus remoto e o próximo Quantos minutos deve decorrer, pelo menos, entre um bólus e o próximo - Para sua segurança, para editar esta preferência você precisa adicionar pelo menos 2 números de telefone. + Para sua segurança, para editar esta preferência precisa adicionar pelo menos 2 números de telefone. Bólus %1$.2f U administrador com sucesso A ser administrado %1$.2f U Bólus %1$.2f U administrador com sucesso @@ -245,7 +244,8 @@ O valor %1$s está fora dos limites permitidos Para ligar a bomba responda com o código %1$s Ligação à bomba falhou - Bomba desligada + Para remover a bomba por %1$d minutos responda com o código %2$s + Bomba removida Bomba ligada novamente O comando remoto não é permitido O bólus remoto não está disponível. Tente novamente mais tarde. @@ -283,7 +283,6 @@ Refeição Corr Acções - Envio NS apenas (sincronização desactivada) Bomba não inicializada! Purgar/Preencher Por favor certifique-se que o valor corresponde ao especificado para o seu conjunto de infusão! @@ -338,7 +337,6 @@ SMS Abreviar títulos dos separadores Usar sempre delta médio curto em vez de delta simples - Útil quando há ruído nos dados de fontes sem filtro como o xDrip. Perfil Valor padrão: 3 Por segurança é o valor limite estabelecido por OpenAPS. O que faz é limitar a basal a x3 a basal mázima. Se necessário modificar este valor, por favor ter em conta que os dados apontam para que os limites de segurança sejam - 3 x max diario ou 4x valor actual (qual seja menor) como valores máximos. Valor padrão: 4 Esta é a outra parte dos valores limites de segurança - 3 x max diário ou 4x valor actual - do OpenAPS. Isto define que não importa o valor da basal máxima definido na bomba, o valor máximo da basal temporária não pode ser maior que 4 x o valor da basal definida na bomba. O objectivo é evitar que sejam determinadas basais temporárias demasiado elevadas antes que se perceba como o algoritmo funciona. 4x é um valor que a maior parte das pessoas nunca necessitará de alterar pois o mais provável é necessitar de alterar outras definições para não necessitar de \"ultrapassar\" este limite de segurança. @@ -352,9 +350,6 @@ SMS número de telefone inválido Calibração xDrip+ não está instalado - Calibração enviada para o xDrip - Calibração enviada. Recepção têm de estar activada no xDrip. - O xDrip não esta a receber as calibrações Bomba suspensa A Executar Definições da bomba virtual @@ -380,7 +375,7 @@ ClienteNS sem permissões para alterar dados. Tem a senha API correta? Definições Wear Mostrar IOB detalhada - Dividir IOB entre IOB de bolus e de basal na face do relógio + Dividir IOB entre IOB de bolus e de basal mostrador sem efeito - por favor verifique no telemóvel n/d Tipo de Paciente @@ -389,6 +384,7 @@ Adulto Adulto resistente insulina Gravidez + Por favor seleccione o tipo de paciente para configurar limites de segurança Nome do Paciente Por favor, forneça nome do paciente ou alcunha para diferenciar entre várias configurações Utilizador @@ -402,11 +398,18 @@ Suspender loop por 3h Suspender loop por 10h Suspender loop por %1$d min - Desligar bomba por 15 min - Desligar bomba por 30 min - Desligar bomba por 1 h - Desligar bomba por 2 h - Desligar bomba por 3 h + Remover a bomba + Remover bomba por 15 min + Remover bomba por 30 min + Remover bomba por 1 h + Remover bomba por 2 h + Remover bomba por 3 h + 15 min. + 30 min. + 1 hora + 2 horas + 3 horas + 10 horas Retomar Re-ligar a Bomba Duração errada @@ -416,7 +419,7 @@ COB Superbólus Registar inicio da app no NS - A sair da aplicação para aplicar as configurações. + A sair da aplicação para aplicar as definições. Qual o tipo de insulina que está a utilizar? Novorapid, Novolog, Humalog Fiasp @@ -430,8 +433,14 @@ Limite crítico idade insulina [h] Limite aviso idade sensor [h] Limite crítico idade sensor [h] + Limite de aviso do nível da bateria do sensor [%] + Limite crítico do nível da bateria do sensor [%] + Limite de aviso de idade da bateria da bomba [h] + Limite crítico de idade da bateria da bomba [h] Limite de aviso de nível de reservatório [U] Limite crítico de nível de reservatório [U] + Limite de aviso do nível da bateria da bomba [%] + Limite crítico do nível da bateria da bomba [%] PREV IOB COB @@ -443,8 +452,6 @@ Acerca Falta de permissão SMS Falta permissão do estado do telefone - Estado xDrip (relógio) - Linha estado xDrip (relógio) xds Mostrar BGI Adicionar BGI à linha de status @@ -473,7 +480,7 @@ SENS Sensibilidade Oref1 Sensibilidade AAPS - Configurações de absorção + Definições de absorção Tempo máx. absorção refeição [h] Tempo em horas, espectável para que todos os hidratos de carbono da refeição sejam absorvidos OAPS @@ -487,7 +494,6 @@ Cancelar Nem todos perfis foram carregados! Valores não guardados! - Activar transmissões para outras aplicações (como xDrip). Não habilite se tiver mais de uma instância de AAPS ou ClienteNS instalado! Activar partilha local. Duração [min] OpenAPS SMB @@ -538,7 +544,7 @@ INFO Aplicação Eversense (com patch) Enviar dados Glic. para NS - Configurações de upload de Glic + Definições de envio da Glic Mostrar Delta detalho Mostrar delta com mais um ponto decimal Com que frequência em min os SMBs serão dados @@ -631,7 +637,7 @@ Criar anúncios a partir dos alertas de hidratos necessários Criar um anúncio no Nightscout para caixas de diálogo de erro e alertas locais (também podem ser visualizados em Careportal sob tratamentos) Criar anúncios Nightscout para alertas de hidratos necessários - Mostrar a predições na face do relogio. + Mostrar a predições mostrador. Previsão Escolha de Dados Envio Fabric @@ -665,7 +671,8 @@ O rácio da basal foi alterado na bomba e vai ser actualizado em breve Rácio da basal foi alterado na bomba, mas a leitura falhou A verificar se há alterações de histórico - Bólus múltiplos, com a mesma quantidade e no mesmo minuto acabaram de ser importados. Apenas um registo pôde ser adicionado aos tratamentos. Por favor confirma na bomba e adicione o registo de bólus manualmente, utilizando o separador do Careportal. Tenha em atenção que deve criar um bólus com um tempo em que nã oexistem outros registos de bólus. + Bólus múltiplos, com a mesma quantidade e no mesmo minuto acabaram de ser importados. Apenas um registo pode ser adicionado aos tratamentos. Por favor confirme na bomba e adicione o registo de bólus manualmente, utilizando o separador do Careportal. Tenha em atenção que deve criar um bólus com um tempo em que não existem outros registos de bólus. + \n\ndocumentação:\nhttps://androidaps.readthedocs.io\n\nfacebook:\nhttps://www.facebook.com/groups/AndroidAPSUsers O último bólus tem mais de 24 horas ou está no futuro. Por favor verifique se a data está definida correctamente na bomba. Hora/data da administração do bólus na bomba parece errado, IOB aparentemente está incorrecto. Verifique hora/data na bomba. TrocaPerfil em falta. Por favor faça uma troca de perfil ou pressione \"Activar Perfil\" em PerfilLocal. @@ -734,8 +741,8 @@ Preenchimentoauto Glicemia Definições do Assistente Rápido Resultado cálculos incluídos no Assistente: - Configurações Ecrã - Configurações Gerais + Definições Ecrã + Definições Gerais Activar ClienteNS Bem-vindo ao assistente de configuração. Vai guiá-lo(a) através do processo de instalação\n Ler estado @@ -747,13 +754,15 @@ ClienteNS gere a ligação ao Nightscout. Pode saltar esta parte mas não será possível passar os objectivos até que o configure. Lembre-se: novos perfis de insulina requerem diâmetro de pelo menos 5h. DIA 5–6h no novo perfil é igual ao diâmetro 3h nos antigos perfis de insulina. Por favor seleccione a fonte do perfil. Se o paciente é uma criança deverá utilizar perfil NS. Se ninguém o está a seguir no Nightscout provavelmente preferirá um perfil Local. Lembre-se que apenas está a escolher a fonte de perfil. Para o utilizar terá que o activar executando \"Troca Perfil\" - Seleccione um dos algoritmos disponíveis. Eles são classificados do mais antigo para o mais recente. Algoritmo mais recente é geralmente mais forte e mais agressivo. Assim, se você é novo looper, poderá provavelmente começar com AMA e não com a versão mais recente. Não se esqueça de ler a documentação de OpenAPS e configurá-lo antes de usar. + Seleccione um dos algoritmos disponíveis. Eles são classificados do mais antigo para o mais recente. Algoritmo mais recente é geralmente mais forte e mais agressivo. Assim, se é novo looper, poderá provavelmente começar com AMA e não com a versão mais recente. Não se esqueça de ler a documentação de OpenAPS e configurá-lo antes de usar. + Por favor, configure o seu RileyLink abaixo. Depois de seleccionar um RileyLink, será possível continuar a configuração quando o estado do RileyLink estiver \"Conectado\". Isso pode levar um minuto.\n + Nota: Pode continuar confguração uma vez que a bomba foi configurada.\n Iniciar primeiro objectivo Permissão Pedir permissão Aplicação precisa de permissão de janela do sistema para notificações Aplicação necessita de permissão de localização para pesquisa Bluetooth e identificação Wi-Fi - Aplicação precisa da permissão de armazenamento para poder armazenar ficheiros de registo e exportar configurações + Aplicação precisa da permissão de armazenamento para poder armazenar ficheiros de registo e exportar definições Pedido Sair Abrir a navegação @@ -775,12 +784,12 @@ Quando a sensibilidade é detectada, aumenta o alvo glicose Configuração da bomba inválida, verifique a documentação e se o menu de informações rápidas está nomeado de QUICK INFO utilizando o programa de configuração 360. Limpar AndroidAPS iniciado - Configurações encontradas + Definições armazenadas encontradas Atenção: Se conectar à sua bomba física e activar o perfil, o AndroidAPS irá copiar as definições desse perfil para as definições da bomba, apagando o memorizado na bomba. Por favor verifique que o que preencheu no perfil da app tem os mesmos valores que estão na bomba. Em caso contrario pressione imediatamente cancelar e corrija antes de voltar a ligar à bomba. Dados tratamento incompletos - Configurações de manutenção + Definições de manutenção Email destinatário - Encriptar configurações exportadas + Encriptar definições exportadas Nr. de registos a enviar Manutenção MANU @@ -825,7 +834,7 @@ Para bólus e bólus estendidos (só disponível com o firmware Insight 3.x) Desactivar vibrações na entrega automática de bólus Para SMB e Basal Temp com emulação DBT (só disponível com firmware Insight 3.x) - Atraso de desconexão [s] + Atraso de remoção [s] Número de série Lançar versão de software Versão de software do processador de interface do utilizador @@ -934,6 +943,7 @@ restrição de armazenamento interno Liberte pelo menos %1$d MB do armazenamento interno! Loop desativado! Formato incorrecto + A duração do DBT deve ser de um múltiplo de %1$d minutos e maior que 0. Código errado. Comando cancelado. Não configurado Troca de perfil criada @@ -950,7 +960,7 @@ Adicionar novo Verificador de Versão Verificador de assinatura - Detectamos que está a correr uma versão inválida. Loop desactivado! + Detectamos que está a correr uma versão inválida. Loop desactivado! versão antiga versão muito antiga Nova versão para pelo menos %1$d dias disponíveis! Retorno a SGB após %2$d dias, o loop será desactivado após %3$d dias @@ -960,6 +970,7 @@ Receber valores da Glicemia da app Dexcom (com patch). Notificação Notificação: %1$s + Alarme: %1$s Mnsg: Alarme: Percentagem do Perfil @@ -1052,7 +1063,7 @@ ID: Enviar Perfil mais comum: - Nota: Apenas os dados visíveis neste ecrã serão enviados anonimamente. O ID é atribuído a esta instalação do AndroidAPS. Você pode enviar dados novamente se o perfil principal for alterado, mas deixá-lo rodar pelo menos uma semana para tornar o resultado visível no intervalo de tempo. Sua ajuda é apreciada. + Nota: Apenas os dados visíveis neste ecrã serão enviados anonimamente. O ID é atribuído a esta instalação do AndroidAPS. Pode enviar dados novamente se o perfil principal for alterado, mas deixá-lo rodar pelo menos uma semana para tornar o resultado visível no intervalo de tempo. Sua ajuda é apreciada. Entrada de idade inválida Entrada de peso inválida Entrada % inválida @@ -1080,24 +1091,30 @@ Hora de execução Basal Temp Alertas Bomba Insight + da app Authenticator para: %1$s seguido pelo PIN Activar Autenticador - Autenticar comandos usando Uma-Senha-Única que sejam geradas pelo Google Authenticator ou app 2FA similar. + Autenticar comandos usando Uma-Senha-Única (OTP) que sejam geradas pelo Google Authenticator ou app 2FA similar. + PIN obrigatório adicional no token final Dígitos adicionais que devem ser memorizados e colados no final de cada Uma-Senha-Única que seja gerada Configuração do Autenticador Código para verificar: OTP + PIN + O código de verificação consiste em 6 dígitos exibidos pela app Authenticator (conhecido como OTP) seguido de 3 ou mais dígitos de PIN obrigatório. Repor Autenticadores Repor Chave Autenticador Tem certeza de redefinir chave Authenticador? Ele tornará todos os Authenticators configurados actualmente como inválidos, e precisará de os configurar novamente. Nova Chave do Autenticador foi gerada! Por favor, use o QRCode actualizado para os autenticadores. + A exportar segredo da OTP + Tem a certeza de que deseja copiar o segredo da OTP para a área de transferêencia?\n\nSó pode precisar se a app do seu autenticador tiver problemas para digitalizar QRCode, deseja digitá-lo manualmente ou deseja configurar o token OTP de hardware usando app dedicada. + Segredo da OTP (em formato Base32) exportado e copiado na áreas de transferênca. Cole-o no autenticador ou no hardware OTP burner! 1. Instalar Autenticador 2. Pesquise o código para configurar os códigos OTP do AndroidAPS - 3. Testar Uma-Senha-Única + 3. Testar Uma-Senha-Única (OTP) Repor Autenticadores Instalar uma app Autenticador que suporte Tokens RFC 6238 TOTP em cada telefone seguidor. Populares aplicativos gratuitos são:\n • Authy\n • o Google Authenticator\n • LastPass Autenticador\n • FreeOTP Autenticador Ao repor o autenticador, torna inválidos todos os autenticadores já provisionados. Precisará de os configurar novamente! Ao ligar - Ao desligar + Ao remover Previsões Desvio de inclinação Falha na autorização @@ -1108,6 +1125,7 @@ Copiar definições do NS Copiar definições do NS (se existir)? Tema Gráfico Original + Design de Baixa Resolução Os botões são sempre exibidos na parte inferior do ecrã Mostrador Grande Tema gráfico @@ -1124,21 +1142,49 @@ Perfil Padrão DPV Open Humans A terminar configuração Open Humans... + Pode demorar um pouco. Não desligue o telefone ou este plugin. Configuração terminada + Seu telefone fará o envio de dados para Open Humans em breve. + Seu telefone está enviar dados para Open Humans agora. Falha na configuração + Houve um erro. Tente efetuar o login novamente a fim de prosseguir. Desculpe & Obrigado! + Esta é uma ferramenta de código aberto que vai copiar seus dados para Open Humans. Nós não retemos direitos de compartilhar seus dados com terceiros sem a sua autorização explícita. Os dados que o projecto e a app recebem são identificados através de um ID de usuário aleatório e só serão transmitidos de forma segura para uma conta Open Humans com a sua autorização desse processo. Pode parar de fazer o envio e excluir seus dados enviados a qualquer momento via www.openhumans.org. Compreendo e concordo. Login Terminar Sessão + Deseja realmente encerrar sessão e parar de doar dados para a ciência? + ID Membro do Projecto: %s Tamanho da Fila: %d Termos de Utilização Não tem sessão iniciada + Tem de aceitar os Termos de Utilização. Login bem sucedido + A configuração será concluída em segundo plano agora. Obrigado por fazer o envio dos seus dados.\n\nPor favor, mantenha este plugin e o telefone ligado por um curto tempo para que a configuração seja concluída. A completar o login… Doar seus dados para a ciência OH + Sessão do Open Humans foi encerrada + Clique aqui para entrar novamente, se não era de propósito. Apenas enviar se ligado ao Wi-Fi Apenas enviar se estiver a carregar + Estado Trabalhador: %s Dados Enviados + Os seguintes dados serão enviados para sua conta Open Humans: valores de Gliccose, bólus, hidratos, eventos do careportal (excepto notas), bólus estendidos, mudanças de perfil, doses diárias totais, basais temporárias, alvos temp, preferências, versão da aplicação, modelo de dispositivo e dimensões da tela. Informações secretas ou privadas como sua URL de Nightscout ou senha de API não serão enviadas. + Estado RileyLink: Filtro + Não é possível criar perfil local. Perfil é inválido. + Não encerre minha app? Alarme + Enviar SMS se evento de bomba inacessível for accionado + Reportar bomba inacessível + Executar alarme quando for tempo de comer + Executar alarme em %1$d min + Guia de Bólus + Tem glicemia alta. Em vez de comer agora é recomendado esperar por uma melhor glicemia. Quer fazer um bólus de correção agora e lembrá-lo quando fôr hora de comer? Neste caso nenhum hidrato será registado e deve usar o assistente novamente quando for lembrado. + Activar Guia de Bólus + Use lembrete para começar a comer mais tarde em vez di resultado do assistente durante a glicemia alta (\"pré-bolus\") + Hora de comer!\nExecutar assistente de Bólus e fazer cálculo novamente. + Hora de comer + Envio de logs de erro desabilitado! + Gráfico diff --git a/app/src/main/res/values-ro-rRO/strings.xml b/app/src/main/res/values-ro-rRO/strings.xml index 24067540d4..2a6e87d7b2 100644 --- a/app/src/main/res/values-ro-rRO/strings.xml +++ b/app/src/main/res/values-ro-rRO/strings.xml @@ -42,7 +42,6 @@ Primește valorile glicemiei din aplicația Glimp. Primește valorile glicemiei din aplicația 600SeriesAndroidUploader (Medtronic). Descarcă datele despre glicemii din Nightscout - Primește valorile glicemiei din xDrip. Salvează toate tratamentele făcute Monitorizează și controlează aplicația AndroidAPS folosind smartwatchul WearOS. Afișează informații privind starea buclei pe watchface-ul xDrip+. @@ -58,7 +57,7 @@ Ins: IOB: IOB totală: - Glicemie + Gl TT Carbohidrați Corecție @@ -119,7 +118,6 @@ Schimbați ceea ce ați introdus! Sursă glicemie De unde trebuie să primească AndroidAPS datele? - xDrip Mod APS Buclă închisă Buclă deschisă @@ -285,7 +283,6 @@ Masă Corecție Acțiuni - Doar încărcare în NS (sincronizare dezactivată) Pompa nu este inițializată! Pregătire/umplere Asigurați-vă că aveți cantitatea specificată de instrucțiunile setului de infuzie! @@ -322,7 +319,7 @@ Folosește opțiunea de autosensibilitate Sincronizează cu NS Ștergerea tratamentelor înregistrate în viitor - Masă în curând + Mănânc în curând Hipo Activitate Șterge înregistrarea @@ -340,7 +337,6 @@ SMS Scurtează titlurile secțiunilor Folosește întotdeauna media scurtă a diferenței în locul diferenței simple - Folositor când datele vin de la surse nefiltrate, ca atunci când xDrip are măsurători zgomotoase. Profil Valoare implicită: 3\nAceasta este o setare de critică de securitate a OpenAPS. Asta înseamnă că se limitează bazala lade 3x valoarea maximă a bazalelor tale.Cel mai probabil nu veți schimba această valoare, dar trebuie să țineți cont de ce se discută despre “3x max zilnic; 4x curent” ca valori de siguranță. Valoare implicită: 4\nAceasta este cealaltă jumătate a cheii de siguranță a OpenAPS și cealaltă jumătate a \"3x max zilnic; 4x curent\" al setărilor de siguranță.Aceasta înseamnă că bazala dumneavoastră, indiferent de bazala maximă configurată în pompă, nu poate fi mai mare de acest număr înmulțit cu nivelul curent al bazalei active. Această limitare este impusă pentru a evita posibilitatea de a intra pe un teritoriu periculos prin setarea unei bazale maxime excesiv de mari înainte de a înțelege funcționarea algoritmului. Din nou, valoarea implictă este 4x; majoritatea oamenilor nu vor trebui să ajusteze această valoare și vor modifica, mai degrabă, alte valori dacă vor simți că această valoare le stă în cale. @@ -354,9 +350,6 @@ Număr de telefon SMS invalid Calibrare xDrip+ nu este instalat. - Calibrare trimisă către xDrip - Calibrare trimisă. Recepționarea trebuie să fie activată și în xDrip. - xDrip nu recepționează calibrări Livrare de insulină suspendată Se execută Setări pompă virtuală @@ -455,8 +448,6 @@ Despre Lipsesc permisiunile de SMS Nu este acordată permisiunea de citire a stării telefonului - Status xDrip (ceas) - Linie de status xDrip (ceas) xds Arată BGI Adaugă BGI în linia de status @@ -499,7 +490,6 @@ Renunță Nu s-au încărcat toate profilurile! Nu s-au salvat valorile! - Activează mesajele pentru alte aplicații (cum ar fi xDrip). Nu activați dacă aveți mai mult de o instanță de AAPS sau NSClient instalată! Permite anunțuri locale. Durată [min] OpenAPS SMB @@ -519,8 +509,8 @@ Procentaj Decalare Ținte-Temporare implicite - durată se-mănâncă-în-curând - țintă se-mănâncă-în-curând + durată mănânc-în-curând + țintă mănânc-în-curând durată activitate țintă activitate durată țintă @@ -624,7 +614,6 @@ Activează SMB cu ținte temporare mari Activați SMB atunci când există o țintă temporară activă (exerciții fizice, peste 100mg/dl sau 5.5mmol/l) Insulină - Carbohidrați Butoane Trimite calibrarea către xDrip+ sau deschide calibrarea pentru G5 Deschide xDrip+, butonul de înapoi returnează la AAPS @@ -809,7 +798,6 @@ Resetare la setările implicite Funcționare incorectă a NSClient. Aveți în vedere un restart al NS și al NSClient. Versiunea %1$s este disponibilă - Diferență de fus orar Modul APS preferat Total Calc @@ -1081,7 +1069,7 @@ Statistici Glicemie aleatoare Generare glicemie aleator (doar mod Demo) - Glicemie + Gl Instrumente Arată calculul Eveniment automatizare @@ -1170,7 +1158,6 @@ Donează datele în scopuri științifice OH Ai fost deconectat de la Open Humans - Dați click aici pentru a vă conecta din nou dacă nu a fost intenționat. Încarcă numai pe conexiune WiFi Încărca numai dacă telefonul este la încărcat Stare prelucrare: %s @@ -1182,7 +1169,6 @@ Nu-mi opri aplicația? Alarmă Trimite SMS dacă este generata o alarma de eroare conexiune pompa - Raportează eroare conexiune pompa Rulează alarma când este timpul să mănânci Rulează alarma în %1$d min Consilier bolus diff --git a/app/src/main/res/values-ru-rRU/exam.xml b/app/src/main/res/values-ru-rRU/exam.xml index 4332c0809d..7c0861cfeb 100644 --- a/app/src/main/res/values-ru-rRU/exam.xml +++ b/app/src/main/res/values-ru-rRU/exam.xml @@ -10,51 +10,136 @@ Временная цель Гипо Какова основная причина установки временной цели гипо? Для коррекции гипо, вызванных неверными настройками базальной скорости. + Чтобы не допустить чрезмерной коррекции ГК, вызванной быстрыми углеводами принятыми для устранения гипо. + Чтобы исправить гипо вызванное нагрузкой. + Чтобы предотвратить снижение уровня глюкозы в крови, если временная базальная скорость уже 0%. https://androidaps.readthedocs.io/en/latest/EN/Usage/temptarget.html Какой профиль можно применить и настроить в автономном режиме? Тема: Автономный профиль Профилем NS можно пользоваться, но не настраивать. https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html#profile + Причины применения опции «Отсоединить помпу» в AndroidAPS Что следует делать при отсоединении помпы? + This is unnecessary as insulin will not be delivered if the pump is physically disconnected. + Это позволяет AndroidAPS не учитывать инсулин, который не был подан во время физического отключения помпы + Это не прекратит подачу инсулина если помпа остается подключенной. + Это переведет AndroidAPS в режим открытого цикла. https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#other-settings + Настройки AndroidAPS + Настройки AndroidAPS + Как эффективнее сохранять свои настройки? + Экспорт настроек не нужен, если они у вас где-то записаны. + Экспортируйте настройки после прохождения цели. + Экспортируйте настройки после изменения любого параметра. + Экспортируйте настройки после окончания начальной настройки и установки параметров. + Экспортируйте настройки локально используя меню Обслуживание. + Файл с вашими настройками сохраняется на телефоне во Внутреннем хранилище/AAPS/preferences. + Скопируйте файл с настройками в надежное место вне телефона (например, закинув в облако или на компьютер. либо отправив по E-mail и т.д.) + Если ваш телефон поврежден или утерян, существует легкий способ удаленно восстановить настройки без резервной копии. https://androidaps.readthedocs.io/en/latest/EN/Usage/ExportImportSettings.html https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#what-emergency-equipment-is-recommended-to-take-with-me + Зашумленные данные мониторинга Что следует делать, если данные мониторинга зашумлены? + Ничего не делайте - AndroidAPS сам справится. + Отключите замкнутый цикл, чтоб избежать неверной дозировки. + Заменить постоянно шумящий или неточный сенсор. + Убедитесь, что приложение мониторинга сглаживает данные ГК. https://androidaps.readthedocs.io/en/latest/EN/Usage/Smoothing-Blood-Glucose-Data-in-xDrip.html#smoothing-blood-glucose-data + Нагрузка и Профили + Как использовать профили, чтоб помочь системе справиться с аэробными упражнениями? + Задать профиль ниже 100%. + Задать профиль выше 100%. + Оставить профиль на 100%. + Приостановить цикл. https://androidaps.readthedocs.io/en/latest/EN/Usage/temptarget.html#activity-temp-target + Физическая нагрузка и временные цели + Как использовать временные цели чтоб помочь системе справиться с аэробными упражнениями? + Установить временную цель \"Нагрузка\" заблаговременно перед началом упражнения. + Установить временную цель \"Нагрузка\" после окончания упражнения. + Оставить временную цель без изменений. + Подождать пока глюкоза крови упадет ниже уровня цели \"Гипо\", а затем съесть 15г быстрых углеводов. https://androidaps.readthedocs.io/en/latest/EN/Usage/temptarget.html#activity-temp-target + Отключенный/приостановленный цикл Получаю ли я инсулин, когда цикл отключен/приостановлен? Да, базальный инсулин продолжает подаваться. Нет, подача инсулина прекращается. + Проверка базы, чувствительности ISF и I:C + Когда следует проверять эти значения? + Перед началом использования петли. + При частом высоком или низком уровне глюкозы в крови. + Хотя бы один раз в неделю. + После установки и проверки, эти значения не должны меняться со временем. https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#androidaps-settings + Предварительные требования + Что необходимо для настройки и использования AndroidAPS? Проверенные данные профиля (базал, инс-углеводы IC, фактор чувствительности к инсулину ISF, длительность действия инсулина DIA). + Компьютер с установленной и настроенной Android Studio. Поддерживаемый телефон. + Совместимая инсулиновая помпа, если вы планируете использовать замкнутый цикл. + Nightscout, для записи всех данных и обзора настроек. Учетная запись Tidepool. Учетная запись Google. Учетная запись Github. + Опыт программирования или редактирования кода. Помпа MiniMed 670G. https://androidaps.readthedocs.io/en/latest/EN/Module/module.html Смарт часы. Поддерживаемый мониторинг. + Предварительные требования + Что необходимо для настройки и использования AndroidAPS? + Проверенные настройки профиля (чувствительность ISF, I:C, скорость базала, продолжительность действия инсулина и т.д.). + Совместимое устройство на Android (мобильный телефон, планшет или часы на полноценном Android). + AndroidAPS требует подключения к интернет чтоб работать в режиме закрытого цикла. + Поддерживаемая система мониторинга и подходящее приложение для получения данных ГК на устройстве. https://androidaps.readthedocs.io/en/latest/EN/Module/module.html + Обновление AndroidAPS Отметьте все правильные ответы. + На компьютере должен быть установлен и настроен Git. + При выходе новый версий AndroidAPS, старые версии могут быть удаленно ограничены после определенного периода времени. + Необходимо сохранить и запомнить расположение хранилища ключей и использовать тот же ключ подписи для обновлений, что и для предыдущей установки. Никогда не обновлять, если система работает хорошо. + Если у вас возникли трудности с построением приложения, вы можете установить апк, который был построен другом. https://androidaps.readthedocs.io/en/latest/EN/Installing-AndroidAPS/Update-to-new-version.html#update-to-a-new-version-or-branch Устранение неполадок + Где искать помощь с AndroidAPS? + Вы можете попросить совета в группе AndroidAPS Users Facebook. + Вам следует прочитать (и перечитать) документацию AndroidAPS. + Можно консультироваться и пересылать логи технических проблем и неполадок в чате Gitter по AndroidAPS. + Вы должны спросить в диабетической клинике / у вашего врача-эндокринолога. https://androidaps.readthedocs.io/en/latest/EN/Installing-AndroidAPS/Update-to-new-version.html#troubleshooting https://www.facebook.com/groups/AndroidAPSUsers/ https://gitter.im/MilosKozak/AndroidAPS Context | Edit Context + Модули для инсулинов + Какой инсулин следует использовать с модулем Сверхбыстрый Oref? Fiasp® + Novoapid ® /Novolog ® Хумалог® + Actrapid ® /Humalin R ®/\"обычный\" человеческий инсулин. https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html#insulin + Модули чувствительности Отметьте все правильные ответы. + Модули чувствительности позволяют AndroidAPS подстраиваться под временные или кратковременные изменения в чувствительности к инсулину (например, гормональные изменения или проблемы с поглощением в месте установки катетера). + Модули чувствительности предлагают пользователю изменения скорости базала, коэффициентов I:C и ISF, которые можно внести в профиль. + Внесение записи о замене катетера вернет коэффициент Autosens к 100%. + У некоторых опций модуля есть настраиваемые диапазоны времени, которые может задать пользователь. https://androidaps.readthedocs.io/en/latest/EN/Configuration/Sensitivity-detection-and-COB.html + Ошибки записи углеводов Что нужно делать, если сделан неправильный ввод углеводов? + Отрицательное значение IOB в течеие продолжительного периода времени при отсутствии физ. нагрузки означает, что ваш профиль слишком сильный и вам нужно убавить подачу инсулина в настройках. + Для оценки и записи потребляемых углеводов следует использовать только граммы. + AndroidAPS использует динамическую модель для оценки \"распада\" и расчета COB. + Если уровень глюкозы в крови находится вне допустимых значений (слишком низкое или слишком высокое), то калькулятор болюса может быть использован для внесения предложений по коррекции соотношения инсулин/углеводы. https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#insulin-to-carb-ratio-ic-g-u https://androidaps.readthedocs.io/en/latest/EN/Usage/Extended-Carbs.html + NS Client в режиме удаленки предоставляет как отслеживание, так и полное управление AndroidAPS. https://androidaps.readthedocs.io/en/latest/EN/Children/Children.html + Фактор Чувствительности к Инсулину (ISF) + Увеличения фактора чувствительности к инсулину ISF приведет к увеличению дозы инсулина на покрытие определенного числа углеводов. + Уменьшение фактора чувствительности к инсулину ISF приведет к увеличению дозы инсулина для корректировки ГК выше целевого уровня. + Увеличение или уменьшение фактора чувствительности к инсулину ISF не влияет на дозировку инсулина когда уровень ГК ниже целевого. + Фактор чувствительности к инсулину ISF задается в параметрах AndroidAPS. Изменение значения ISF в профиле достаточно для применения изменений. https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#insulin-sensitivity-factor-isf-mmol-l-u-or-mg-dl-u https://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html @@ -62,6 +147,7 @@ Context | Edit Context Соотношение инсулин-углеводы IC изменится если принимать ХЕ за 10 или 12г. Смысл соотношения инсулин-углеводы IC таков: сколько хлебных единиц покрываются одной ед. инсулина. https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#carbohydrate-to-insulin-ratio-cr-g-u + Cмена профиля https://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html?highlight=profile%20switch#profile-switch Выполнить переключение профиля со сдвигом времени 2 Выполнить переключение профиля со сдвигом времени -2 diff --git a/app/src/main/res/values-ru-rRU/objectives.xml b/app/src/main/res/values-ru-rRU/objectives.xml index 436a2132ad..592235427b 100644 --- a/app/src/main/res/values-ru-rRU/objectives.xml +++ b/app/src/main/res/values-ru-rRU/objectives.xml @@ -21,6 +21,7 @@ Активация таких доп функций для дневного времени как супер микро болюс SMB Включение автоматизации Прочтите wiki и увеличьте maxIOB чтобы супер микро болюс SMB заработал как положено! Хорошее начало – maxIOB = средний болюс на еду + троекратный максимальный суточный базал + Прочтите документацию по автоматизации. Настройте свои первые простые правила. Вместо действия позвольте AAPS только выводить уведомления. Если вы уверены, что автоматизация инициируется в нужное время, замените уведомление реальными действиями. (https://androidaps.readthedocs.io/en/latest/EN/Usage/Automation.html) гликемия доступна в NS Статус помпы доступен в NS Ввод вручную @@ -35,9 +36,11 @@ Просмотр содержимого модуля Цикл Loop Применить функцию масштабирования по долгому нажатию на диаграмму ГК Ввод + Если у вас есть хотя бы три месяца опыта работы с замкнутым циклом на других системах, то можно получить код пропуска. Подробности смотрите по адресу https://androidaps.readthedocs.io/en/latest/EN/Usage/Objectives.html#skip-objectives. Код принят Неверный код Подтвердите ваши знания + Изучите вопросы. Вам дано четыре возможных ответа на каждый вопрос. Может быть более одного правильного ответа. Проверьте все правильные ответы и подтвердите выбор. Ответы отключены до: %1$s Неверный ответ! Следующий незавершенный diff --git a/app/src/main/res/values-ru-rRU/strings.xml b/app/src/main/res/values-ru-rRU/strings.xml index 6b66a1267f..a780b8c04d 100644 --- a/app/src/main/res/values-ru-rRU/strings.xml +++ b/app/src/main/res/values-ru-rRU/strings.xml @@ -42,7 +42,6 @@ Получать данные гликемии от Glimp. Получать данные гликемии от 600SeriesAndroidUploader. Получать данные гликемии с сайта Nightscout - Получать данные гликемии от xDrip. Сохраняет все выполненные назначения Мониторить и контролировать AndroidAPS при помощи часов WearOS. Показать информацию о работе алгоритма ИПЖ на экране смарт-часов xDrip+. @@ -119,7 +118,6 @@ измените введенные данные источник СК Откуда должен получать данные AndroidAPS? - xDrip + режим APS Замкнутый цикл открытый цикл @@ -285,7 +283,6 @@ болюс на еду коррекция действия - только передача в NS (синхронизация отсутствует) помпа не инициализирована прайм/заполнение убедитесь что количество соответствует характеристикам вашей инфузионной системы @@ -340,7 +337,6 @@ SMS сокращенные имена табул всегда используйте укороченное среднее приращение вместо простого - Полезно когда данные из нефильтрованных источников вроде xDrip+ начинают \"шуметь\". профиль значение по умолчанию:3 Это ключевой ограничитель безопасности OpenAPS. Он ограничивает величину вашего базала максимум до 3x максимума. Вам вероятно не понадобится менять эту величину но вам следует понимать, что она входит в формулу дуэта \"максимум 3x ежедневное; 4x текущее\" значение по умолчанию: 4 . Это вторая половина обеспечения безопасности OpenAPS из дуэта \"максимум 3x ежедневное; 4x текущее\" Означает что ваша база независимо от установок помпы не может быть выше чем это число умноженное на текущее значение базала. Ограничение для того, чтобы предотвратить вторжение в опасную зону из-за высокого уровня установленных значений базы без понимания алгоритма работы приложения. Большинству людей никогда не потребуется изменять это значение, скорее всего нужно поменять другие настройки если вы чувствуете, что вам мешает это ограничение. @@ -354,9 +350,6 @@ неверный номер телефона для смс калибровка xdrip+ не установлен - калибровка передается на xdrip - Калибровка отправлена. Активируйте прием в xDrip+. - xdrip не получает калибровок Работа помпы остановлена выполнение настройки вирт помпы @@ -405,11 +398,18 @@ приостановить цикл на 3 часа приостановить цикл на 10 часов Приостановить цикл на %1$d мин + Отключить помпу отсоединить помпу на 15 мин отсоединить помпу на 30 мин отсоединить помпу на 1 час отсоединить помпу на 2 часа отсоединить помпу на 3 часа + 15 мин + 30 мин + 1 час + 2 часа + 3 часа + 10 часов возобновить Возобновить соединение с помпой неверное значение длительности @@ -435,8 +435,12 @@ Критический порог предупреждения о времени, отработанном сенсором [h] Порог предупреждения о разрядке батареи [%] Порог предупреждения о критическом уровне разрядки батареи [%] + Порог предупреждения о разрядке батареи [h] + Порог предупреждения о критическом уровне разрядки батареи [h] Порог уровня наполненности резервуара для оповещения [ед.] Порог критического уровня наполненности резервуара [U] + Порог предупреждения о разрядке батареи [%] + Порог предупреждения о критическом уровне разрядки батареи [%] ОЖИД IOB акт инс акт углев @@ -448,8 +452,6 @@ о приложении отсутствует смс подтверждение Отсутствует разрешение телефона - состояние xdrip (часы) - строка состояния xdrip (часы) Статус xDrip показать BGI добавить BGI в строку состояния @@ -492,7 +494,6 @@ отмена не все профили загружены! Данные не сохранены! - Включить трансляцию для других приложений (например, xDrip). Не включайте, если установлено несколько экземпляров приложений AAPS или NSClient! Активировать локальную передачу Длительность (мин) Супер микро болюс OpenAPS @@ -1178,4 +1179,13 @@ Context | Edit Context Сигнал Отправить SMS, если инициируется запись о недоступности помпы Сообщить о недоступности помпы + Напомнить о еде + Напомнить через %1$d мин + Помощник болюса + У вас высокая глюкоза крови. Лучше подождать, чем есть сейчас. Хотите сделать болюс на коррекцию и установить напоминание, когда будет пора есть? В этом случае углеводы не будут записаны и после напоминания надо будет снова воспользоваться помощником. + Вкл помощник болюса + Используйте напоминание для того, чтобы начать есть позже, вместо того, чтобы воспользоваться помощником болюса на высоких значениях ГК (\"пре-болюс\") + Пора есть!\nЗапустите помощник болюса снова для подсчета. + Пора есть + Загрузка журналов сбоя на сервер отключена! diff --git a/app/src/main/res/values-sk-rSK/strings.xml b/app/src/main/res/values-sk-rSK/strings.xml index 8e164bcdb8..b774e1a8ea 100644 --- a/app/src/main/res/values-sk-rSK/strings.xml +++ b/app/src/main/res/values-sk-rSK/strings.xml @@ -42,7 +42,6 @@ Získavať hodnoty glykémií z aplikácie Glimp. Získavať hodnoty glykémií z 600SeriesAndroidUploader. Získavať hodnoty glykémií z Nightscoutu - Získavať hodnoty glykémií z xDripu. Ukladá všetky ošetrenia do databázy Zobrazovanie stavu a riadenie AndroidAPS z hodiniek s WearOS. Zobraz informácie o uzavretom okruhu na xDrip+ watchface. @@ -119,7 +118,6 @@ Zmeňte zadanie! Zdroj glykémie Odkiaľ má AndroidAPS získavať glykémie? - xDrip APS mód Uzavretý okruh Otvorený okruh @@ -285,7 +283,6 @@ Bolus Korekcia Akcie - Iba nahrávanie do NS (synchronizácia deaktivovaná) Pumpa nie je inicializovaná! Plnenie/doplňovanie Prosím uistite sa, že hodnota zodpovedá špecifikácií Vášho setu! @@ -340,7 +337,6 @@ SMS Krátke názvy modulov Vždy používať krátkodobý priemerný rozdiel glykémií, namiesto rozdielu posledných dvoch hodnôt - Zmysluplné, pokiaľ dáta z xDripu obsahujú veľký šum. Profil Štandardná hodnota: 3 Toto je kľúčová hodnota zabezpečenia. Hovorí, že maximálny nastaviteľný bazál je trojnásobkom maximálneho denného bazálu. Spravidla to zrejme nebudete musieť meniť, prípadne si prečítate o téme \"3x max denný; 4x aktuálny\". Štandardná hodnota: 4 Toto je druhá kľúčová hodnota. Hovorí, že maximálna hodnota dočasného bazálu nikdy nebude väčšia, ako štvornásobok aktuálneho bazálu. Je to preto, aby se ľudia nedostali do nebezpečných hodnôt skôr, ako pochopia ako OpenAPS pracuje. Znovu, štandardná hodnota je 4 a väčšina ľudí ju nikdy nebude musieť meniť. Pokiaľ nestačí, obvykle je problém niekde inde. @@ -354,9 +350,6 @@ Chybné telefónne číslo Kalibrácia xDrip+ nie je nainštalovaný - Kalibrácia odoslaná do xDripu - Kalibrácia odoslaná. Príjem kalibrácií musí byť v xDripe povolený. - xDrip neprijíma kalibrácie Pumpa pozastavená Vykonávam Nastavenie virtuálnej pumpy @@ -455,8 +448,6 @@ O aplikácii Chýbajúce povolenie SMS príkazov Chýba oprávnenia pre zisťovanie stavu telefónu - Stav z xDripu (hodinky) - Stavový riadok xDripu (hodinky) XDS Zobrazovať BGI Pridať BGI do stavového riadku @@ -499,7 +490,6 @@ Zrušiť Nenačítané všetky profily! Hodnoty nie sú uložené! - Povoliť vysielanie do iných aplikácií (napr. xDrip). Nepovoľujte, pokiaľ máte nainštalovanú viac ako jednu AAPS, alebo NSClient inštanciu! Povoliť lokálne vysielanie. Trvanie [min] OpenAPS SMB @@ -1170,7 +1160,6 @@ Darujte svoje údaje vede OH Boli ste odhlásený z Open Humans - Kliknite sem, ak sa chcete prihlásiť znova, v prípade, že sa to nestalo omylom. Odoslať iba ak ste pripojený k Wi-Fi Odoslať iba pri nabíjaní Stav procesu: %s @@ -1182,7 +1171,6 @@ Nepotláčať moju aplikáciu? Alarm Odoslať SMS, pokiaľ pumpa nie je dostupná - Nahlásiť nedostupnú pumpu Spustiť výstrahu, keď je čas na jedlo Spustiť výstrahu za %1$d min Bolusový poradca diff --git a/app/src/main/res/values-sv-rSE/strings.xml b/app/src/main/res/values-sv-rSE/strings.xml index d69c917261..f5104e8e2a 100644 --- a/app/src/main/res/values-sv-rSE/strings.xml +++ b/app/src/main/res/values-sv-rSE/strings.xml @@ -43,7 +43,6 @@ Eversense-appen. Ta emot BG-data från Glimp Ta emot BG-data från 600SeriesAndroidUploader Ladda ner BG-data från Nightscout - Ta emot BG-data från xDrip Spara alla behandlingar som gjorts Följ och kontrollera AndroidAPS med din Wear OS-klocka Visa AAPS-information på din xDrip-urtavla @@ -120,7 +119,6 @@ Eversense-appen. Ändra inmatning BG-källa Var ska AndroidAPS få sitt data ifrån? - xDrip APS-läge Closed Loop Open Loop @@ -286,7 +284,6 @@ Eversense-appen. Måltid Korrektion Åtgärder - Endast uppladdning till Nightscout Pump inte initierad Förfyllning Försäkra dig om att mängden motsvarar det som är specificerat för just ditt infusionsset. @@ -341,7 +338,6 @@ Eversense-appen. SMS Förkorta namnen på flikarna Använd alltid kort medeldelta istället för enkel delta - Användbart när ofiltrerade källor som xDrip ger brusvärden Profil Standardvärde: 3 Detta är en grundsten i OpenAPS säkerhet. Detta begränsar dina temp basaler till maximalt 3x din största basaldos. Du behöver oftast inte ändra detta värde. Läs på och förstå skillnaden mellan 3x nuvarande och 3x daglig max som säkerhetsinställningar. Standardvärde: 4 Detta är en grundsten i OpenAPS säkerhet. Detta begränsar dina tempbasaler till maximalt 4 gånger din nuvarande basaldos, oberoende av din maximala basaldos. Detta för att undvika att man av misstag gör farliga inställningar. Om man når taket i denna inställning så kanske ändringar i andra inställningar behövs. De flesta behöver inte ändra denna inställning. @@ -355,9 +351,6 @@ Eversense-appen. Ogiltigt telefonnummer för SMS Kalibrering xDrip+ inte installerat - Kalibrering skickad till xDrip - Kalibrering skickad. Observera att xDrip måste vara inställd att ta emot kalibreringar. - xDrip tar inte emot kalibreringar Pump pausad Utför Inställningar för Virtuell pump @@ -460,8 +453,6 @@ Eversense-appen. Om Saknar behörighet att skicka SMS Behörighet saknas - xDrip Status (klocka) - xDrip Statusrad (klocka) xds Visa BGI Visa BGI i statusraden @@ -504,7 +495,6 @@ Eversense-appen. Avbryt Alla profiler laddades inte! Alla värden sparades inte! - Aktivera sändning till andra appar (som xDrip). Aktivera inte detta om du har fler än en förekomst av AAPS eller NSClient installerad. Aktivera lokala broadcasts Duration [min] OpenAPS SMB @@ -1175,7 +1165,6 @@ Eversense-appen. Donera dina data till vetenskapen OH Du har loggats ut från Open Humans - Klicka här om du vill logga in igen om det inte var meningen. Ladda bara upp om ansluten till WiFi Ladda bara upp vid laddning Jobbstatus: %s @@ -1187,7 +1176,6 @@ Eversense-appen. Döda inte min app? Larm Skicka SMS om pumpen inte kan nås - Rapportera om pump inte kan nås Larma när det är dags att äta Larma om %1$d min Bolusguide diff --git a/app/src/main/res/values-tr-rTR/insight_alert_descriptions.xml b/app/src/main/res/values-tr-rTR/insight_alert_descriptions.xml index 3ea04e700d..0024d2f65f 100644 --- a/app/src/main/res/values-tr-rTR/insight_alert_descriptions.xml +++ b/app/src/main/res/values-tr-rTR/insight_alert_descriptions.xml @@ -1,2 +1,5 @@ - + + %1$d%%\nSüre: %2$s st.]]> + %1$d%%
Süre: %2$s st.]]>
+
diff --git a/app/src/main/res/values-tr-rTR/strings.xml b/app/src/main/res/values-tr-rTR/strings.xml index fedcf3fbfe..5c8178e0d5 100644 --- a/app/src/main/res/values-tr-rTR/strings.xml +++ b/app/src/main/res/values-tr-rTR/strings.xml @@ -36,7 +36,6 @@ Glimp\'ten KŞ değerleri alır. 600SeriesAndroidUploader\'dan KŞ değerleri alın. Nightscout\'tan KŞ verilerini yükler - XDrip+\'ten KŞ değerlerini alır. Yapılan tüm tedavileri kaydet WearOS saatinizi kullanarak AndroidAPS\'yi izleyin ve kontrol edin. Döngü\'yle ilgili bilgileri xDrip+ watchface\'inizde gösterin. @@ -112,7 +111,6 @@ Girişinizi değiştirin! KŞ kaynağı AndroidAPS verilerini nereden alsın? - xDrip APS modu Kapalı Döngü Açık Döngü @@ -183,7 +181,6 @@ Ögün Düzeltme Eylemler - Sadece Nightscout\'a yükle (devre dışı senkronizasyon) Pompa başlatılmamış! Hazırla/doldur Lütfen miktarın infüzyon setinizin özelliklerine uygun olduğundan emin olun! @@ -232,7 +229,6 @@ SMS Kısa tab başlıkları Her zaman basit delta yerine kısa ortalama delta kullan - xDrip gibi filtre uygulanmamış kaynaklardan gelen veriler gürültülü olduğunda kullanışlıdır. Profil Varsayılan değer: 3 Bu OpenAPS için önemli bir güvenlik ayarıdır. Maksimum bazal Iob\'u, en büyük bazal oranınızın üç katı (varsayılan olarak) ile sınırlar. Genel olarak, bu değeri değiştirmemelisiniz. Ama \"3x max günlük, 4x şuan\" ın bir güvenlik ayarı olarak ne anlama geldiğini bilmelisiniz. Varsayılan ayar: 4 Bu, OpenAPS güvenlik ayarlarının diğer yarısı ve \"3x max günlük, 4x akım\" güvenlik korumasının diğer yarısıdır. Bu, başlangıç değerinizin, pompada ayarlanan taban maksimum değerinizden bağımsız olarak, mevcut bazal seviyenin bu sayısından daha yüksek olamayacağı anlamına gelir. Bu, insanların, algoritmanın nasıl çalıştığını anlamadan temel çizgiyi büyük ölçüde artırarak kendilerini tehlikeli durumlarda bulmalarını engellemektir. Varsayılan ayar 4x\'dir; Çoğu insan bu ayarları asla değiştirmek zorunda kalmayacak, ancak bu güvenlik sınırına yakınsa diğer terapi ayarlarını ayarlamalıdırlar. @@ -245,9 +241,6 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d Geçersiz SMS telefon numarası Kalibrasyon xDrip+ uygulaması yüklenmemiş - Kalibrasyon xDrip+ a gönderildi - Kalibrasyon gönderildi. Alma xDrip+\'ta etkinleştirilmelidir. - xDrip+ kalibrasyonları almıyor Pompa durduldu Yürütülüyor Sanal pompa ayarları @@ -313,8 +306,6 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d Hakkında SMS izni eksik Kayıp telefon durum yetkilendirmesi - xDrip durumu (izle) - xDrip durumu çizgisi (izle) xds BGI göster BGI\'yı durum satırına ekle diff --git a/app/src/main/res/values-zh-rCN/insight_alert_descriptions.xml b/app/src/main/res/values-zh-rCN/insight_alert_descriptions.xml index 3ea04e700d..dbb2d47ad4 100644 --- a/app/src/main/res/values-zh-rCN/insight_alert_descriptions.xml +++ b/app/src/main/res/values-zh-rCN/insight_alert_descriptions.xml @@ -1,2 +1,5 @@ - + + %1$d%%\nDuration: %2$s h]]> + %1$d%%
Duration: %2$s h]]>
+
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 8a4a524026..b267ca6748 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -37,7 +37,6 @@ 从 Glimp 接收血糖值。 从美敦力600Series 的AndroidUploader 接收血糖值。 从 Nightscout 下载 血糖数据 - 从 xDrip 接收血糖值。 保存所做的所有治疗 使用您的 WearOS 手表监视和控制 AndroidAPS。 在 xDrip + 表盘上显示有关闭环的信息。 @@ -113,7 +112,6 @@ 更改您的输入! 血糖来源 AndroidAPS 从何处获取数据? - xDrip APS模式 闭环 开环 @@ -196,7 +194,6 @@ 饮食 矫正 手动操作 - 只上传到NS服务器 (禁用同步) 泵未初始化! 充盈 请确保数量和输液器里的药量匹配 @@ -246,7 +243,6 @@ 手机SMS 标题名称缩写 总是使用短时间的平均增量代替简单增量 - 当数据来自没有过滤的源头时,例如 xDrip 偶尔出现噪音数据. 配置文件 默认值: 3 这是一个关键的 OpenAPS 安全阀值。这是限制你的闭环可以最大扩张3倍的日最大基础率。你可能不需要改变这个值 但你应该这个值的含义。日最大基础率的3倍,当前基础率的4倍,这是建议的安全阀值 默认值: 4 这是另一个的关键 OpenAPS 安全阀值, 日最大基础率的3倍,当前基础率的4倍,这是建议的安全阀值。这意味着你的基础率, 无论你的泵上的最大基础率设置的多少,也 不能超过你的当前基础率的4倍。这是为了防止人们在了解该算法的工作原理之前进入危险的领域 。同样, 默认值为 4倍; 大多数人将永远不需要调整, 而是更有可能需要调整其他设置, @@ -259,9 +255,6 @@ 无效的SMS手机号码 校准 没有安装xDrip+ - 校准发送到 xDrip - 校准值发送了,必须在xDrip开启允许通过其他app使用它的校准功能 - xDrip 没有收到校准 泵暂停了 正在执行 虚拟泵设置 @@ -330,8 +323,6 @@ 关于 缺少 SMS 短信权限 缺少手机状态权限 - xDrip 状态 (手表) - xDrip 状态线 (手表) xdrip 显示血糖线 添加血糖线到状态线 diff --git a/core/src/main/res/values-cs-rCZ/strings.xml b/core/src/main/res/values-cs-rCZ/strings.xml index 9c1dd1d92b..d3f84eebef 100644 --- a/core/src/main/res/values-cs-rCZ/strings.xml +++ b/core/src/main/res/values-cs-rCZ/strings.xml @@ -4,7 +4,7 @@ Chyba Nenastaveno - Chyba při nastavení bazálního pprofilu + Chyba při nastavení bazálního profilu Bazální profil aktualizován Chybná vstupní data Chyba nastavování dočasného bazálu diff --git a/core/src/main/res/values-da-rDK/strings.xml b/core/src/main/res/values-da-rDK/strings.xml new file mode 100644 index 0000000000..b47480e9ec --- /dev/null +++ b/core/src/main/res/values-da-rDK/strings.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/src/main/res/values-iw-rIL/strings.xml b/core/src/main/res/values-iw-rIL/strings.xml index 2f04ba4140..12d0356dad 100644 --- a/core/src/main/res/values-iw-rIL/strings.xml +++ b/core/src/main/res/values-iw-rIL/strings.xml @@ -24,7 +24,7 @@ %1$d גר\' %1$.0f / %2$d יח\' %1$.2f יח\' לשעה - %1$.2f שע\' + %1$.2f ש\' %1$d דק\' המשאבה אינה פנויה שגיאה בחיבור המשאבה @@ -112,8 +112,8 @@ ערכי הבזאלי הוחלפו בהערכים המינימליים שנתמכים: %1$s ערכי הבזאלי הוחלפו בערכים הנתמכים המינימליים: %1$s /יח\' - יח\'\שע\' - גר\'\יח\' + יח\'\\שעה + גר\'\\יח\' לא נבחר פרופיל @@ -191,7 +191,7 @@ זיהוי שעה %1$d ש\' %2$d דק\' - הפעולה לא נתמכת ע\"י המשאבה ו\או מנהל התקן. + הפעולה לא נתמכת ע\"י המשאבה ו\\או מנהל התקן. הפעולה עוד לא נתמכת על ידי המשאבה. אישור diff --git a/core/src/main/res/values-pt-rPT/strings.xml b/core/src/main/res/values-pt-rPT/strings.xml index 2ae36fd730..5a5aeb8d2c 100644 --- a/core/src/main/res/values-pt-rPT/strings.xml +++ b/core/src/main/res/values-pt-rPT/strings.xml @@ -15,8 +15,8 @@ Cumprimento A ligar Ligado - Desligado - A desligar + Desconectada + A desconectar AndroidAPS iniciado %1$.1f U %1$.2f U @@ -172,6 +172,7 @@ À espera de resultado SMB + %1$d g Hidratos Adicionais Necessários Dentro de %2$d Minutos Estatísticas Dose diária acumulativa diff --git a/dana/src/main/res/values-da-rDK/strings.xml b/dana/src/main/res/values-da-rDK/strings.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/dana/src/main/res/values-da-rDK/strings.xml @@ -0,0 +1,2 @@ + + diff --git a/dana/src/main/res/values-iw-rIL/strings.xml b/dana/src/main/res/values-iw-rIL/strings.xml index 84aaa30426..ce963fe7c6 100644 --- a/dana/src/main/res/values-iw-rIL/strings.xml +++ b/dana/src/main/res/values-iw-rIL/strings.xml @@ -14,7 +14,7 @@ כמות אינסולין גבוהה מדי התבקש: %1$.2f יח\' הוזרק: %2$.2f יח\' קוד שגיאה: %3$s ערך לא מוגדר כראוי - הגדר מינון באזלי ל-0.01 יח\'\שעה + הגדר מינון באזלי ל-0.01 יח\'\\שעה לאפס את נתוני הצימוד? %1$s\nדגם: %2$02X\nפרוטוקול: %3$02X\nקוד: %4$02X מעבד אירוע @@ -98,8 +98,8 @@ צעד במינון בולוס קושחה הגדרות משאבת Dana - 12 שע\' - 24 שע\' + 12 שעות + 24 שעות מופעל כבוי מכשיר בלוטות\' DanaR diff --git a/dana/src/main/res/values-nl-rNL/strings.xml b/dana/src/main/res/values-nl-rNL/strings.xml index f9e3b2908d..3a485437f2 100644 --- a/dana/src/main/res/values-nl-rNL/strings.xml +++ b/dana/src/main/res/values-nl-rNL/strings.xml @@ -92,7 +92,7 @@ DanaRv2 EasyUI modus in pomp deactiveren Instellen van basaal profiel mislukt - Bluetooh status + Bluetooth status Pomp IOB Basaal Stap Bolus Stap diff --git a/dana/src/main/res/values-pt-rPT/strings.xml b/dana/src/main/res/values-pt-rPT/strings.xml index 58af75e295..114ca5178d 100644 --- a/dana/src/main/res/values-pt-rPT/strings.xml +++ b/dana/src/main/res/values-pt-rPT/strings.xml @@ -97,7 +97,7 @@ Incremento Basal Incremento Bólus Firmware - Configurações da bomba Dana + Definições da bomba Dana 12h 24h Ligado diff --git a/medtronic/src/main/res/values-da-rDK/strings.xml b/medtronic/src/main/res/values-da-rDK/strings.xml new file mode 100644 index 0000000000..e370c4a256 --- /dev/null +++ b/medtronic/src/main/res/values-da-rDK/strings.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/omnipod/src/main/res/values-bg-rBG/strings.xml b/omnipod/src/main/res/values-bg-rBG/strings.xml index ebc845540d..a5df42c778 100644 --- a/omnipod/src/main/res/values-bg-rBG/strings.xml +++ b/omnipod/src/main/res/values-bg-rBG/strings.xml @@ -3,6 +3,7 @@ + Конфигурация на rileyLink Звук при болус активен Звук при базал активен Звук при SMB активен @@ -10,7 +11,6 @@ Показвай спряна доставката в раздела Omnipod Показване на PULSE LOG в менюто на Pod Management Бутон Показване RileyLink Stats в меню Управление на Pod - НЕ работи с оригиналната RileyLink. Може да не работи с други RileyLink алтернативи. Разрешено е Лятно часово време Напомняне за срок Часове преди изключване @@ -65,6 +65,7 @@ Грешен RileyLink адрес. Забранено действие.\n\n Първо трябва да конфигурурате Omnipod , преди да използвате тази операция,. Няма активен под + Времето на пода не е синхронизирано. Моля, актуализирайте времето в раздел Omnipod. Непредвидена грешка. Моля, докладвайте! (%1$s: %2$s). Неуспешна комуникация: проверката на цялостта на съобщението е неуспешна Неуспешна комуникация: получиен невалиден пакет от под diff --git a/omnipod/src/main/res/values-es-rES/strings.xml b/omnipod/src/main/res/values-es-rES/strings.xml index 2329b1fe6f..93823a4f38 100644 --- a/omnipod/src/main/res/values-es-rES/strings.xml +++ b/omnipod/src/main/res/values-es-rES/strings.xml @@ -11,8 +11,6 @@ Mostrar el botón Suspender entrega en la pestaña Omnipod Mostrar botón de registro de pulso en el menú de gestión del pod Mostrar botón de estadísticas de RileyLink en el menú de gestión del pod - Usar el nivel de batería reportado por EmaLink/Orangelink - NO funciona con el RileyLink original. Puede que no funcione con otras alternativas de RiyeyLink. Detección de zona DST/hora activada Recordatorio de expiración activado Horas antes del apagado diff --git a/omnipod/src/main/res/values-fr-rFR/strings.xml b/omnipod/src/main/res/values-fr-rFR/strings.xml index 5c19727f58..626d43b5ac 100644 --- a/omnipod/src/main/res/values-fr-rFR/strings.xml +++ b/omnipod/src/main/res/values-fr-rFR/strings.xml @@ -197,11 +197,11 @@ Supprimer Pod Définir l\'heure - Arrêter + Suspendre Actualiser Reprendre l\'injection Gest. Pod - Accepter les alertes + Accepter alertes État du Pod Total injecté %1$.2f U @@ -212,7 +212,7 @@ Débit de Basal Temp. Débit de Basal Réservoir - Activer alertes Pod + Alertes Pod actives Version du firmware Heure du Pod %1$.2fU/h @%2$s (%3$d/%4$d minutes) diff --git a/omnipod/src/main/res/values-lt-rLT/strings.xml b/omnipod/src/main/res/values-lt-rLT/strings.xml index ef0035f8ae..dcf7ba5717 100644 --- a/omnipod/src/main/res/values-lt-rLT/strings.xml +++ b/omnipod/src/main/res/values-lt-rLT/strings.xml @@ -11,8 +11,6 @@ Omnipod skirtuke rodyti mygtuką Sustabdyti tiekimą Pod valdymo meniu rodyti mygtuką Pulse log Pod valdymo meniu rodyti mygtuką RileyLink Stats - Naudoti baterijos įkrovimo lygį, gautą iš EmaLink/OrangeLink - NEVEIKIA su originaliu RileyLink. Gali neveikti su kitomis RileyLink alternatyvomis. Vasaros laiko/Laiko juostos aptikimas įgalintas Galiojimo pabaigos priminimas Valandos prieš išsijungimą diff --git a/omnipod/src/main/res/values-pt-rPT/strings.xml b/omnipod/src/main/res/values-pt-rPT/strings.xml index a88faa686f..c62df9c065 100644 --- a/omnipod/src/main/res/values-pt-rPT/strings.xml +++ b/omnipod/src/main/res/values-pt-rPT/strings.xml @@ -3,22 +3,30 @@ + Configuração RileyLink + Detecção de DST/Fuso Horário Activado No. Unidades RileyLink Outro Alertas Notificações + Nenhum Pod Activo A correr Suspenso + Falha no Pod Inactivo + Falha no Pod: %1$03d %2$s Lembrete Concluir Emparelhamento Lembrete Terminar Configuração Pod vai expirar em breve Pod vai expirar em breve Encerramento iminente + Reservatório Baixo + Alerta Desconhecido + Histórico do Pod Descrição Fonte Data @@ -27,12 +35,27 @@ %1$.2f U, HC=%2$.1f g Rácio: %1$.2f U, duração: %2$d minutes + Estendido: %1$s + Reserv: %1$sU + RLBat: %1$d Aviso Endereço RileyLink inválido. A operação não é possível.\n\nPrecisa configurar o Omnipod primeiro, antes de pode usar esta operação. Nenhum Pod Activo + Falha na comunicação: mensagem de falha de verificação de integridade + Falha na comunicação: recebeu um pacote inválido do Pod + Falha na comunicação: o Pod está em um estado errado + Falha na comunicação: recebeu uma resposta inválida do Pod + Falha na comunicação: recebeu uma mensagem com número de sequência inválido do Pod + Falha na comunicação: recebeu uma mensagem com um endereço inválido do Pod + Falha na comunicação: falha ao descodificar a mensagem do Pod + Falha na comunicação: nonce resync falhou + Falha na comunicação: nonce fora de sincronização + Falha na comunicação: não há dados suficientes recebidos do Pod + Falha na comunicação: o Pod devolveu uma resposta de erro Sem resposta do RileyLink + RileyLink interrompido Sem resposta do Pod A configuração do perfil basal falhou. Comando personalizado desconhecido: %1$s @@ -47,7 +70,9 @@ Desactivar Pod Descartar Pod + Definir Bólus Cancelar Bólus + Definir Basal Temporária Definir Programação Basal Obter Status do Pod Obter Pod Info @@ -59,11 +84,13 @@ Entrada Desconhecida Inicializar Pod + Gestão Pod Acções Ferramentas Activar Pod Desactivar Pod Descartar Pod + Histórico do Pod Redefinir configuração RileyLink Cancelar @@ -84,8 +111,15 @@ Definir hora Suspender Actualizar + Retomar Administração + Gestão Pod + Reco Alertas + Estado do Pod %1$.2f U + Endereço do Pod + Pod Expira Reservatório + Alertas Pod Activos Hora no Pod %1$.2fU/h @%2$s (%3$d/%4$d minutos) %1$.2f U restante @@ -117,4 +151,8 @@ %1$d dia %1$d dias
+ + Alerta Pod: %1$s + Alertas Pod: %1$s + diff --git a/omnipod/src/main/res/values-ru-rRU/strings.xml b/omnipod/src/main/res/values-ru-rRU/strings.xml index be98ad9e5e..6c20b5151e 100644 --- a/omnipod/src/main/res/values-ru-rRU/strings.xml +++ b/omnipod/src/main/res/values-ru-rRU/strings.xml @@ -11,8 +11,6 @@ Показывать кнопку Приостановить подачу на вкладке Omnipod Показывать кнопку Pulse Log в меню управления Pod Показывать кнопку статистики RileyLink в меню управления подом - Использовать уровень батареи, который передает OrangeLink/EmaLink - Не работает с оригинальной RileyLink. Может не работать с другими альтернативами RileyLink. Включено обнаружение часового пояса Включено напоминание об истечении срока действия Часов до выключения diff --git a/omnipod/src/main/res/values-sk-rSK/strings.xml b/omnipod/src/main/res/values-sk-rSK/strings.xml index 15f8ec6068..728b703bf5 100644 --- a/omnipod/src/main/res/values-sk-rSK/strings.xml +++ b/omnipod/src/main/res/values-sk-rSK/strings.xml @@ -11,8 +11,6 @@ Zobraziť tlačítko \"Pozastaviť podávanie\" na záložke Omnipod Zobraziť tlačítko Pulzný Log v menu Správa Podu Zobraziť tlačítko Štatistika RileyLink v menu Správa Podu - Použiť úroveň batérie nahlásenú OrangeLinkom/Rileylinkom - NEPRACUJE s pôvodným RileyLinkom. Nemusí pracovať s inými alternatívami RileyLinku. Letný čas / Detekcia časového pásma povolená Pripomenutie vypršania platnosti povolené Hodiny pred vypnutím diff --git a/rileylink/src/main/res/values-af-rZA/strings.xml b/rileylink/src/main/res/values-af-rZA/strings.xml index a33700298f..1f34355deb 100644 --- a/rileylink/src/main/res/values-af-rZA/strings.xml +++ b/rileylink/src/main/res/values-af-rZA/strings.xml @@ -27,5 +27,5 @@ Pod onbereikbaar Medtronic Pomp - Omnipod + diff --git a/rileylink/src/main/res/values-bg-rBG/strings.xml b/rileylink/src/main/res/values-bg-rBG/strings.xml index ca7590d906..7a6030484d 100644 --- a/rileylink/src/main/res/values-bg-rBG/strings.xml +++ b/rileylink/src/main/res/values-bg-rBG/strings.xml @@ -22,14 +22,10 @@ Статус на помпата RileyLink настройки RileyLink - Адрес на RileyLink: - Име на RileyLink: - Свързано устройство: Състояние на връзката: Грешка при свързване: Устройство Тип на устройството: - Модел: Последна честота: Последно връзка: Firmware версия: @@ -56,9 +52,9 @@ Pod е недостъпen Medtronic помпа - Omnipod Да Не + %1$d ден %1$d дни diff --git a/rileylink/src/main/res/values-da-rDK/strings.xml b/rileylink/src/main/res/values-da-rDK/strings.xml new file mode 100644 index 0000000000..0a73dfc845 --- /dev/null +++ b/rileylink/src/main/res/values-da-rDK/strings.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/rileylink/src/main/res/values-es-rES/strings.xml b/rileylink/src/main/res/values-es-rES/strings.xml index e10ac61037..1a25ad9779 100644 --- a/rileylink/src/main/res/values-es-rES/strings.xml +++ b/rileylink/src/main/res/values-es-rES/strings.xml @@ -22,14 +22,10 @@ Estado de Infusora Ajustes de RileyLink RileyLink - Dirección RileyLink configurada: - Nombre de RileyLink configurado: - Dispositivo conectado: Estado de conexión: Error de conexión: Dispositivo Tipo de dispositivo: - Modelo del dispositivo: Última frecuencia usada: Último contacto del dispositivo: Versión de Firmware: @@ -56,9 +52,9 @@ Infusora no alcanzable Infusora Medtronic - Omnipod No + %1$d día %1$d días diff --git a/rileylink/src/main/res/values-hr-rHR/strings.xml b/rileylink/src/main/res/values-hr-rHR/strings.xml index 2bbde4634d..0a73dfc845 100644 --- a/rileylink/src/main/res/values-hr-rHR/strings.xml +++ b/rileylink/src/main/res/values-hr-rHR/strings.xml @@ -6,4 +6,5 @@ + diff --git a/rileylink/src/main/res/values-pt-rBR/strings.xml b/rileylink/src/main/res/values-pt-rBR/strings.xml index ceb0391695..731fc4104b 100644 --- a/rileylink/src/main/res/values-pt-rBR/strings.xml +++ b/rileylink/src/main/res/values-pt-rBR/strings.xml @@ -29,5 +29,5 @@ Pod inacessível Bomba Medtronic - Omnipod + diff --git a/rileylink/src/main/res/values-pt-rPT/strings.xml b/rileylink/src/main/res/values-pt-rPT/strings.xml index 1778bb4236..ccfb20d33b 100644 --- a/rileylink/src/main/res/values-pt-rPT/strings.xml +++ b/rileylink/src/main/res/values-pt-rPT/strings.xml @@ -2,6 +2,15 @@ + Procurar + Parar + Seleccionado + Procura RileyLink + A procurar + Procura terminada + Erro de Procura: %1$d + Nunca + Remover Definições Histórico @@ -9,7 +18,14 @@ Estado da Bomba Definições do RileyLink RileyLink + Estado de Ligação: + Erro de Ligação: Dispositivo + Tipo de dispositivo: + BLE113: %1$s\nCC110: %2$s + Número de série da Bomba: + Frequência da Bomba: + %1$.2f MHz A iniciar o Bluetooth... Erro de Bluetooth @@ -31,7 +47,10 @@ Pod inacessível Bomba Medtronic - Omnipod + Omnipod (Eros) + Sim + Não + %1$d dia %1$d dias diff --git a/rileylink/src/main/res/values-ru-rRU/strings.xml b/rileylink/src/main/res/values-ru-rRU/strings.xml index c833ba0ff0..bd7cc89f60 100644 --- a/rileylink/src/main/res/values-ru-rRU/strings.xml +++ b/rileylink/src/main/res/values-ru-rRU/strings.xml @@ -22,14 +22,10 @@ Статус помпы Настройки RileyLink RileyLink - Адрес RileyLink настроен: - Имя подключенного RileyLink: - Подключенное устройство: Статус подключения: Ошибка подключения: Устройство Тип устройства: - Модель устройства: Последняя использованная частота: Контакт последнего устройства: Версия прошивки: @@ -56,9 +52,9 @@ POD недоступен Помпа Medtronic - Omnipod Да Нет + %1$d день %1$d дня diff --git a/rileylink/src/main/res/values-sk-rSK/strings.xml b/rileylink/src/main/res/values-sk-rSK/strings.xml index 997e341a25..362fe2b6e3 100644 --- a/rileylink/src/main/res/values-sk-rSK/strings.xml +++ b/rileylink/src/main/res/values-sk-rSK/strings.xml @@ -22,14 +22,10 @@ Stav pumpy Nastavenie RileyLink RileyLink - Adresa nakonfigurovaného RileyLinku: - Názov nakonfigurovaného RileyLinku: - Pripojené zariadenie: Stav pripojenia: Chyba pripojenia: Zariadenie Typ zariadenia: - Model zariadenia: Posledná použitá frekvencia: Posledné spojenie zo zariadením: Verzia firmvéru: @@ -56,9 +52,9 @@ Pod nedostupný Pumpa Medtronic - Omnipod Áno Nie + %1$d deň %1$d dní diff --git a/rileylink/src/main/res/values-sl-rSI/strings.xml b/rileylink/src/main/res/values-sl-rSI/strings.xml index 2bbde4634d..0a73dfc845 100644 --- a/rileylink/src/main/res/values-sl-rSI/strings.xml +++ b/rileylink/src/main/res/values-sl-rSI/strings.xml @@ -6,4 +6,5 @@ + diff --git a/rileylink/src/main/res/values-tr-rTR/strings.xml b/rileylink/src/main/res/values-tr-rTR/strings.xml index 2bbde4634d..0a73dfc845 100644 --- a/rileylink/src/main/res/values-tr-rTR/strings.xml +++ b/rileylink/src/main/res/values-tr-rTR/strings.xml @@ -6,4 +6,5 @@ + diff --git a/rileylink/src/main/res/values-zh-rCN/strings.xml b/rileylink/src/main/res/values-zh-rCN/strings.xml index 52e83e4be9..21829581bb 100644 --- a/rileylink/src/main/res/values-zh-rCN/strings.xml +++ b/rileylink/src/main/res/values-zh-rCN/strings.xml @@ -28,5 +28,5 @@ 无法连接主机 美敦力泵 - Omnipod + diff --git a/wear/src/main/res/values-cs-rCZ/strings.xml b/wear/src/main/res/values-cs-rCZ/strings.xml index 289eb398e5..0ef661f1ee 100644 --- a/wear/src/main/res/values-cs-rCZ/strings.xml +++ b/wear/src/main/res/values-cs-rCZ/strings.xml @@ -69,6 +69,7 @@ eCarbs Nastavení Stav + Re-Sync Plnění/doplňování Nic Výchozí diff --git a/wear/src/main/res/values-da-rDK/strings.xml b/wear/src/main/res/values-da-rDK/strings.xml new file mode 100644 index 0000000000..3ea04e700d --- /dev/null +++ b/wear/src/main/res/values-da-rDK/strings.xml @@ -0,0 +1,2 @@ + + diff --git a/wear/src/main/res/values-de-rDE/strings.xml b/wear/src/main/res/values-de-rDE/strings.xml index ba21d88477..dbd98d47bf 100644 --- a/wear/src/main/res/values-de-rDE/strings.xml +++ b/wear/src/main/res/values-de-rDE/strings.xml @@ -69,6 +69,7 @@ eCarb Einstellung Status + Erneut synchronisieren (Vor-)Füllen Kein(e) Standard diff --git a/wear/src/main/res/values-iw-rIL/strings.xml b/wear/src/main/res/values-iw-rIL/strings.xml index 0794cf98df..7019a0f924 100644 --- a/wear/src/main/res/values-iw-rIL/strings.xml +++ b/wear/src/main/res/values-iw-rIL/strings.xml @@ -69,7 +69,8 @@ פחמימות ממושכות הגדרות סטטוס - תיחול\מילוי + סנכרן מחדש + תיחול\\מילוי ללא ברירת מחדל תפריט diff --git a/wear/src/main/res/values-nl-rNL/strings.xml b/wear/src/main/res/values-nl-rNL/strings.xml index 61c5d10e66..f4e66c5ebc 100644 --- a/wear/src/main/res/values-nl-rNL/strings.xml +++ b/wear/src/main/res/values-nl-rNL/strings.xml @@ -69,6 +69,7 @@ eCarb Instellingen Status + Opnieuw synchroniseren Ontlucht/vul Geen Standaard diff --git a/wear/src/main/res/values-no-rNO/strings.xml b/wear/src/main/res/values-no-rNO/strings.xml index ae2050a473..1588e55eb8 100644 --- a/wear/src/main/res/values-no-rNO/strings.xml +++ b/wear/src/main/res/values-no-rNO/strings.xml @@ -69,6 +69,7 @@ eKarbo Innstillinger Status + Re-synk Prime/fylling Ingen Standard diff --git a/wear/src/main/res/values-pt-rPT/strings.xml b/wear/src/main/res/values-pt-rPT/strings.xml index 4367efdadf..f60dfedf9d 100644 --- a/wear/src/main/res/values-pt-rPT/strings.xml +++ b/wear/src/main/res/values-pt-rPT/strings.xml @@ -61,6 +61,8 @@ Complicação de Toque Unicode em Complicações Versão: + mais definições do Mostrador + Verifique a configuração do mostrador, por favor. AlvoT Assistente Bólus From 414e2337aeeb24a88cc50202f9ec9ed151849d14 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Sun, 10 Jan 2021 22:39:20 +0100 Subject: [PATCH 53/57] 2.8.1 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 96db0a7be8..4b240b6326 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -120,7 +120,7 @@ android { targetSdkVersion 28 multiDexEnabled true versionCode 1500 - version "2.8.0.1-dev" + version "2.8.1" buildConfigField "String", "VERSION", '"' + version + '"' buildConfigField "String", "BUILDVERSION", '"' + generateGitBuild() + '-' + generateDate() + '"' buildConfigField "String", "REMOTE", '"' + generateGitRemote() + '"' From 3714d594d06b9f554d16ea7a6cd3baf5002b55ba Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Tue, 12 Jan 2021 10:08:08 +0100 Subject: [PATCH 54/57] New Crowdin updates (#216) * New translations strings.xml (Polish) * New translations strings.xml (Polish) * New translations strings.xml (Polish) * New translations strings.xml (Polish) * New translations exam.xml (Russian) * New translations strings.xml (German) * New translations exam.xml (Russian) * New translations strings.xml (Romanian) * New translations strings.xml (Romanian) * New translations strings.xml (Romanian) * New translations strings.xml (Czech) * New translations strings.xml (Norwegian) * New translations strings.xml (Italian) --- app/src/main/res/values-cs-rCZ/strings.xml | 6 +++--- app/src/main/res/values-de-rDE/strings.xml | 12 ++++++++++++ app/src/main/res/values-it-rIT/strings.xml | 8 ++++++++ app/src/main/res/values-no-rNO/strings.xml | 15 +++++++++++++++ app/src/main/res/values-pl-rPL/strings.xml | 19 +++++++++++++++++++ app/src/main/res/values-ro-rRO/strings.xml | 14 ++++++++++++++ app/src/main/res/values-ru-rRU/exam.xml | 1 - .../src/main/res/values-pl-rPL/strings.xml | 2 ++ .../src/main/res/values-pl-rPL/strings.xml | 11 +++++++++++ wear/src/main/res/values-pl-rPL/strings.xml | 1 + 10 files changed, 85 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/values-cs-rCZ/strings.xml b/app/src/main/res/values-cs-rCZ/strings.xml index 30e3733902..223c395ddc 100644 --- a/app/src/main/res/values-cs-rCZ/strings.xml +++ b/app/src/main/res/values-cs-rCZ/strings.xml @@ -285,8 +285,8 @@ Bolus Korekce Akce - (NEBEZPEČNÉ ZAKÁZAT) Pouze odeslání NS - Pouze nahrávání do NS. Neplatí pro glykémie, pokud je NS vybrán jako zdroj glykémií. Neplatí pro profily, pokud je vybraný NS Profil.\n!!! VAROVÁNÍ!!! Vypnutí této možnosti může způsobit chybné chování a předávkování inzulínem, pokud je některá z vašich komponent (AAPS, NS, xDrip+) špatně nastavena. Pečlivě sledujte, jestli data zobrazená AAPS odpovídají stavu pumpy! + (NEBEZPEČNÉ ZAKÁZAT) Pouze odesílání do NS + Pouze nahrávání do NS. Neplatí pro glykémie, pokud je NS vybrán jako zdroj glykémií. Neplatí pro profily, pokud je vybraný NS Profil.\n!!! VAROVÁNÍ!!! Vypnutí této možnosti může způsobit chybné chování a předávkování inzulínem, pokud je některá z vašich komponent (AAPS, NS, xDrip+) špatně nastavena. Pečlivě sledujte, jestli data zobrazená v AAPS odpovídají stavu pumpy! Pumpa není inicializována! Plnění/doplňování Prosím ujistěte se, že hodnota odpovídá specifikaci Vašeho setu! @@ -1193,7 +1193,7 @@ Poradce pro bolus Máte vysokou glykémii. Namísto jídla doporučujeme vyčkat na lepší glykémii a připomenout, až bude čas na jídlo. Přejete si poslat korekční bolus a připomenout, až bude čas k jídlu? V tomto případě nebudou zapsané žádné sacharidy, a později opět musíte spustit kalkulátor, jakmile vám to připomeneme. Povolit poradce s bolusem - Použij připomenutí, abys začal jíst později, namísto výsledku z kalkulátoru během vysoké glykémie (\"pre-bolus\") + Při vysoké glykémii použijte připomenutí, abyste začali jíst později, namísto výsledku z kalkulátoru („prebolus“) Čas k jídlu!\nSpusťte Bolusovou kalkulačku a proveďte výpočet znovu. Čas k jídlu Nahrávání protokolů o pádech zakázáno! diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml index f63297c881..140e2ea11f 100644 --- a/app/src/main/res/values-de-rDE/strings.xml +++ b/app/src/main/res/values-de-rDE/strings.xml @@ -42,6 +42,7 @@ Empfange Blutzuckerwerte von Glimp. Empfange Blutzuckerwerte vom 600SeriesAndroidUploader. Lade Blutzuckerdaten von Nightscout + Empfange Blutzuckerwerte von xDrip+. Speichert alle eingegebenen Behandlungen Überwache und steuere AndroidAPS mit Deiner WearOS-Smartwatch. Zeige Loop-Informationen auf Deinem xDrip+-Watchface. @@ -118,6 +119,7 @@ Ändere deine Eingabe! BZ-Quelle Woher soll AndroidAPS seine Blutzuckerwerte beziehen? + xDrip+ APS-Modus Closed Loop Open Loop @@ -283,6 +285,8 @@ Essensbolus Korr Aktionen + (DEAKTIVIEREN GEFÄHRLICH) Zu NS nur hochladen + Zu Nightscout nur hochladen (keine Synchronisation). Gilt nicht für CGM-Werte falls nicht eine lokale Quelle wie xDrip+ ausgewählt wurde. Gilt ebenfalls nicht für Profildaten, wenn ein NS-Profil genutzt wird. \n!!! WARNUNG !!! Deaktivieren dieser Option kann zu Fehlfunktionen und Insulin-Überdosierung führen, wenn eine der Komponenten (AAPS, NS, xDrip+) falsch konfiguriert ist. Achte sorgfältig darauf, ob die in AAPS angezeigten Daten mit denen der Pumpe übereinstimmen! Pumpe nicht initialisiert! Katheterwechsel Bitte vergewissere Dich, dass die Füllmenge den Eigenschaften des Katheters entspricht! @@ -337,6 +341,7 @@ SMS Kurze Tab-Überschriften Verwende immer das kurze durchschnittliche Delta statt des einfachen Deltas + Das ist sinnvoll, wenn die Daten von einer ungefilterten Quelle wie xDrip+ Signalrauschen haben. Profil Standardwert: 3\nDies ist eine wichtige Sicherheitseinstellung. Sie begrenzt die maximale Basal-Abgabe auf die dreifache Menge (im Standardfall) deiner größten Basalrate im Profil. In der Regel solltest Du diesen Wert nicht ändern. Aber Du solltest wissen, was \"3x max daily, 4x current\" als Sicherheitseinstellung bedeutet. Standardwert: 4\nDies ist die andere wichtige Sicherheitseinstellung, die zweite Hälfte von \"3x max daily, 4x current\". Diese Grenze beschränkt die Basal-Abgabe auf die (im Standardfall) vierfache Menge der aktuellen Basalrate im Profil. Dies ist wichtig, um Nutzer davor zu bewahren, zuviel Basal-Insulin zu verabreichen. Nochmals, der Standardwert ist 4x. Die meisten Nutzer werden niemals diese Einstellung verändern, sondern andere Einstellungen anpassen, um sich nicht dieser Sicherheitsgrenze zu nähern. @@ -350,6 +355,9 @@ Falsche/ungültige Telefonnummer Kalibrierung xDrip+ nicht installiert + Kalibrierung an xDrip+ gesendet+ + Kalibrierung gesendet. Das Empfangen von Kalbrierungen muss in xDrip+ aktiviert sein+. + xDrip+ erhält keine Kalibrierungen Pumpe pausiert Wird ausgeführt Einstellungen der virtuellen Pumpe @@ -452,6 +460,8 @@ Über SMS-Steuerung nicht erlaubt Fehlende Berechtigung für den Zugriff auf den Telefonstatus + xDrip+ Status (Uhr) + xDrip+ Statuszeile (Uhr) xds Zeige BGI Füge BGI zur Statuszeile hinzu. @@ -494,6 +504,7 @@ Abbrechen Es sind nicht alle Profile geladen! Werte nicht gespeichert! + Aktiviere die Datenübertragung zu anderen Apps (z.B. xDrip+). Nicht aktivieren, falls Du mehr als eine Instanz von AAPS oder NSClient installiert hast! Aktiviere lokale Broadcasts Dauer [min] OpenAPS SMB @@ -1187,4 +1198,5 @@ Unerwartetes Verhalten. Zeit zum Essen!\nStarte den Bolus-Rechner und gib die KH ein. Zeit zum Essen Hochladen von Crash-Protokollen deaktiviert! + Diagramm diff --git a/app/src/main/res/values-it-rIT/strings.xml b/app/src/main/res/values-it-rIT/strings.xml index b5fe0fab2d..6ef1608520 100644 --- a/app/src/main/res/values-it-rIT/strings.xml +++ b/app/src/main/res/values-it-rIT/strings.xml @@ -42,6 +42,7 @@ Ricevi valori glicemia da Glimp. Ricevi valori glicemia da 600SeriesAndroidUploader. Scarica dati glicemia da Nightscout + Ricevi valori glicemia da xDrip+. Salva tutti i trattamenti che sono stati fatti Monitora e controlla AndroidAPS usando il tuo smartwatch WearOS. Mostra le informazioni del loop sulla watchface di xDrip+. @@ -118,6 +119,7 @@ Cambia il tuo input! Origine BG Da dove AndroidAPS dovrebbe ottenere i suoi dati? + xDrip+ Modalità APS Loop chiuso Loop aperto @@ -337,6 +339,7 @@ SMS Accorcia titoli schede Usa sempre il delta medio ridotto + Utile quando i dati provenienti da sorgenti non filtrate come xDrip+ diventano \"rumorosi\" (instabili). Profilo [Valore predefinito: 3] Questo è un parametro di sicurezza chiave in OpenAPS. Ciò che fa è limitare le tue basali a essere 3 volte, al più, la tua velocità basale massima. Probabilmente non avrai bisogno di cambiare questo valore, ma dovresti essere consapevole di cosa significa il gruppo di parametri \"3x max giornaliera; 4x corrente\" e per quali motivi di sicurezza siano stati impostati tali valori. [Valore predefinito: 4] Questo è un ulteriore parametro di sicurezza chiave in OpenAPS. La tua basale temporanea, indipendentemente dalla basale massima impostata sul micro, non può mai essere più alta di questo valore moltiplicato per la tua basale corrente in ogni specifico momento. Questo serve a impedire alle persone di addentrarsi in \"territori pericolosi\" impostando basali massime eccessivamente alte prima di aver capito come funziona l\'algoritmo. Ancora una volta, il valore predefinito è 4x; la maggior parte delle persone non avrà bisogno di modificare questo valore e avrà, invece, maggiori probabilità di dover regolare altre impostazioni se ha la sensazione di \"scontrarsi\" con questo limite di sicurezza. @@ -350,6 +353,9 @@ Numero di telefono SMS non valido Calibrazione xDrip+ non installato + Calibrazione inviata a xDrip+ + Calibrazione inviata. La ricezione deve essere abilitata in xDrip+. + xDrip+ non sta ricevendo calibrazioni Micro sospeso Esecuzione Impostazioni micro virtuale @@ -452,6 +458,7 @@ Informazioni su Autorizzazione SMS mancante Autorizzazione stato telefono mancante + Stato xDrip+ (smartwatch) xds Mostra BGI Aggiungi BGI alla statusline @@ -1186,4 +1193,5 @@ Tempo di mangiare!\nEsegui il calcolatore e fai di nuovi i calcoli. Tempo di mangiare Caricamento log dei crash disabilitato! + Grafico diff --git a/app/src/main/res/values-no-rNO/strings.xml b/app/src/main/res/values-no-rNO/strings.xml index f42990519a..9815db0c50 100644 --- a/app/src/main/res/values-no-rNO/strings.xml +++ b/app/src/main/res/values-no-rNO/strings.xml @@ -42,6 +42,7 @@ Motta BS verdier fra Glimp. Motta BS verdier fra 600SeriesAndroidUploader. Last ned BS verdier fra Nightscout + Motta BS verdier fra xDrip+. Lagre data om alle behandlinger som er utført Monitorer og kontroller AndroidAPS med din WearOS klokke. Vis informasjon om loop på din xDrip+ urskive. @@ -118,6 +119,7 @@ Endre dine inndata! BS kilde Hvor skal AndroidAPS hente sine data fra? + xDrip+ APS modus Lukket loop Åpen loop @@ -283,6 +285,8 @@ Måltid Korreksjon Handlinger + (FARLIG Å DEAKTIVERE) Kun NS opplast + Kun NS opplasting (deaktivert sync). Ikke effektiv på SGV med mindre en lokal kilde som xDrip+ er valgt. Ikke effektiv på Profiler mens NS-Profiler brukes.\n!!! ADVARSEL !!! Deaktivering av dette alternativet kan føre til funksjonsfeil og overdosering av insulin hvis noen av dine komponenter (AAPS, NS, xDrip+) er feil konfigurert. Observer at data som vises i AAPS samsvarer med pumpestatus! Pumpen ikke initialisert! Prime/fylling Kontroller at mengden samsvarer med spesifikasjonen for slangesettet ditt! @@ -337,6 +341,7 @@ SMS Korte navn i menyfaner Bruk alltid kort gjennomsnittsverdi delta i stedet for enkel delta + Nyttig når data fra ufiltrerte kilder som xDrip+ registrerer mye støy. Profil Standardverdi: 3 Dette er en viktig OpenAPS sikkerhetsbegrensning. Dette begrenser dine basaler til maks 3x av din høyeste basalverdi. Du vil trolig ikke behøve å endre denne verdien, men les og forstå hva som menes med \"3x max daglig; 4x gjeldende\" som sikkerhetsinnstilling. Standardverdi: 4 Dette er en viktig OpenAPS sikkerhetsbegrensning. Dette begrenser dine temp basal til max 4 ganger din nåværende basal dose, uansett hva som er maks basal i pumpen. Dette er for å unngå at man setter farlige høye maks basal doser uten at man har forstått algoritmene. Når du taket i denne begrensningen bør du i stedet fokusere på å endre andre innstillinger. @@ -350,6 +355,9 @@ Ugyldig SMS mobilnummer Kalibrering xDrip+ ikke installert + Kalibrering er sendt til xDrip+ + Kalibrering sendt. Mottak må være aktivert i xDrip+. + xDrip+ tar ikke imot kalibreringer Pumpen er pauset Utfører Virtuelle pumpe innstillinger @@ -452,6 +460,8 @@ Om Mangler SMS tillatelse Mangler app tillatelse til telefon + xDrip+ Status (klokke) + xDrip+ Statuslinje (klokke) xds Vis BGI Legg til BGI i statuslinje @@ -494,6 +504,7 @@ Avbryt Ikke alle profiler ble lastet! Verdier ikke lagret! + Aktiver kringkasting til andre apper (som xDrip+). Ikke aktiver dette hvis du har mer enn en AAPS eller NSClient installert! Aktiver lokale sendinger. Varighet [min] OpenAPS SMB @@ -1164,6 +1175,7 @@ Doner dine data til vitenskapen OH Du har blitt logget ut fra Open Humans + Klikk her for å logge inn igjen hvis dette ikke var hensikten. Last opp kun dersom du er koblet til WiFi Last opp kun ved mobillading Fremdrift: %s @@ -1175,6 +1187,7 @@ Avslutte app? Alarm Send SMS hvis det ikke oppnås kontakt med pumpa + Rapporter når kontakt med pumpe ikke oppnås Aktiver alarm når det er på tide å spise Aktiver alarm om %1$d min Bolusguide @@ -1183,4 +1196,6 @@ Bruk en påminnelse om å spise senere enn kalkulator resultatet fra wizard ved høyt blodsukker (\"pre-bolus\") Nå må du spise!\Bruk bolus veiviseren og beregn på nytt. Nå må du spise + Opplast av krasj logger er deaktivert! + Graf diff --git a/app/src/main/res/values-pl-rPL/strings.xml b/app/src/main/res/values-pl-rPL/strings.xml index 3ceca3402a..63dbeb73a6 100644 --- a/app/src/main/res/values-pl-rPL/strings.xml +++ b/app/src/main/res/values-pl-rPL/strings.xml @@ -42,6 +42,7 @@ Pobieraj wartości BG z Glimp. Pobieraj wartości BG z uploadera pomp serii 600. Pobieraj wartości BG z Nightscout + Pobieraj wartości BG z xDrip+. Zapisuje wszystkie wykonane czynności leczenia Monitoruj i kontroluj AndroidAPS, korzystając z SmartWatch WearOS. Pokaż informacje o swojej pętli na watchface xDrip+. @@ -118,6 +119,7 @@ Zmień wprowadzone dane! Źródło BG Skąd AndroidAPS powinien czerpać dane? + xDrip+ Tryb APS Zamknięta pętla Otwarta pętla @@ -283,6 +285,8 @@ Posiłek Korekta Akcje + (NIEBEZPIECZNIE TO WYŁĄCZYĆ) tylko przesyłanie NS + Tylko przesyłanie NS (wyłączona synchronizacja). Nie ma wpływu na pomiary glikemii (SGV), chyba że wybrane jest lokalne źródło, takie jak xDrip+. Nie wpływa na profile gdy używane są profile z Nightscout.\n!!! OSTRZEŻENIE !!! Wyłączenie tej opcji może spowodować nieprawidłowe działanie i przedawkowanie insuliny, jeśli którykolwiek z Twoich komponentów (AAPS, NS, xDrip+) nie jest skonfigurowany poprawnie. Uważnie obserwuj, czy dane wyświetlane przez AAPS są zgodne ze stanem pompy! Pompa nie zainicjowana! Rozpocznij/Wypełnij Proszę upewnij się, że ilość wypełnienia odpowiada ilości właściwej dla twojego wkłucia! @@ -337,6 +341,7 @@ SMS Skrócone tytuły kart Zawsze używaj krótkiej średniej delty zamiast prostej delta + Użyteczne, jeżeli dane z niefiltrowanego źródła jak xDrip+ mają rozrzut / szumy. Profil Wartość domyślna: 3 To jest kluczowy współczynnik bezpieczeństwa OpenAPS. Ogranicza dawki bazowe do 3x twojej największej dawki bazowej. Prawdopodobnie nie będziesz musiał tego zmieniać, ale powinieneś być świadomy tego, co się rozumie przez “3x max dzienna; 4x aktualna” dla współczynników bezpieczeństwa. Wartość domyślna: 4 To jest drugi kluczowy współczynnik bezpieczeństwa OpenAPS, i druga wartość z “3x max dzienna; 4x aktualna”. To oznacza, że Twoja dawka bazowa niezależnie od maksymalnej bazy ustawionej na pompie nie może być większa niż ta ustawiona wartość razy twoja aktualna dawka bazowa. To ma na celu przestrzec ludzi przed ustawieniem zbyt wysokiej dawki maksymalnej przed zrozumieniem jak działa algorytm. Ponownie, wartość domyślna to 4x; większość ludzi nie będzie potrzebowała tego zmienić i raczej będą potrzebować dostosować inne ustawienia, jeśli czują, że zbliżają się do współczynnika bezpieczeństwa. @@ -350,6 +355,9 @@ Nieprawidłowy numer telefonu SMS Kalibracja xDrip+ nie zainstalowany + Kalibracja przesłana do xDrip+ + Kalibracja wysłana. Odbiór musi być włączony w xDrip+. + xDrip+ nie odbiera kalibracji Pompa wstrzymana Wykonywanie Ustawienia pompy wirtualnej @@ -435,8 +443,12 @@ Krytyczny czas sensora CGM [h] Próg ostrzeżenia o poziomie baterii sensora [%] Próg ostrzeżenia o krytycznym poziomie baterii sensora [%] + Próg ostrzeżenia o wieku baterii pompy [g] + Próg krytycznego wieku baterii pompy [g] Próg ostrzeżenia o poziomie zbiornika [U] Próg ostrzeżenia o krytycznym poziomie zbiornika [U] + Próg ostrzeżenia o poziomie baterii pompy [%] + Próg krytycznego poziomu baterii pompy [%] PRED IOB COB @@ -448,6 +460,8 @@ O programie Brak uprawnień SMS Brak uprawnień do wykrywania stanu telefonu + Status xDrip+ (zegarek) + Linia Statusu xDrip+ (zegarek) xds Pokaż BGI Dodaj BGI do Linii Statusu @@ -491,6 +505,7 @@ Anuluj Nie wszystkie profile zostały załadowane! Wartości nie są przechowywane! + Włącz rozgłaszanie do innych aplikacji (takich jak xDrip+). Nie należy włączać, jeśli zainstalowana jest więcej niż jedna instancja AAPS lub NSClient! Włącz transmisję lokalnie. Czas trwania [min] OpenAPS SMB @@ -1161,6 +1176,7 @@ Przekaż swoje dane na rzecz nauki OH Zostałeś wylogowany z Open Humans + Kliknij tutaj, aby zalogować się ponownie, jeśli wylogowanie nie było celowe. Prześlij tylko jeśli połączono poprzez WiFi Prześlij tylko gdy telefon jest ładowany Stan procesu: %s @@ -1172,6 +1188,7 @@ Nie zabij mojej aplikacji? Alarm Wyślij SMS, jeśli wyzwolone jest zdarzenie pompy nieosiągalnej + Zgłoś nieosiągalną pompę Uruchom alarm kiedy będzie czas na jedzenie Uruchom alarm za %1$d min Doradca bolusa @@ -1180,4 +1197,6 @@ Użyj przypomnienia, aby rozpocząć jedzenie później podczas wysokiej glikemii (\"pre-bolus\") Czas jeść!\nUruchom kreatora bolusa i zrób obliczenia ponownie. Czas na jedzenie + Przesyłanie dzienników awarii jest wyłączone! + Wykres diff --git a/app/src/main/res/values-ro-rRO/strings.xml b/app/src/main/res/values-ro-rRO/strings.xml index 2a6e87d7b2..ab2adfa243 100644 --- a/app/src/main/res/values-ro-rRO/strings.xml +++ b/app/src/main/res/values-ro-rRO/strings.xml @@ -42,6 +42,7 @@ Primește valorile glicemiei din aplicația Glimp. Primește valorile glicemiei din aplicația 600SeriesAndroidUploader (Medtronic). Descarcă datele despre glicemii din Nightscout + Primește valorile glicemiei din xDrip+. Salvează toate tratamentele făcute Monitorizează și controlează aplicația AndroidAPS folosind smartwatchul WearOS. Afișează informații privind starea buclei pe watchface-ul xDrip+. @@ -118,6 +119,7 @@ Schimbați ceea ce ați introdus! Sursă glicemie De unde trebuie să primească AndroidAPS datele? + xDrip+ Mod APS Buclă închisă Buclă deschisă @@ -350,6 +352,9 @@ Număr de telefon SMS invalid Calibrare xDrip+ nu este instalat. + Calibrare trimisă către xDrip+ + Calibrare trimisă. Recepționarea trebuie să fie activată și în xDrip+. + xDrip+ nu recepționează calibrări Livrare de insulină suspendată Se execută Setări pompă virtuală @@ -435,8 +440,12 @@ Prag critic vechime senzor [h] Prag de avertizare nivel baterie senzor [%] Prag nivel critic baterie senzor [%] + Prag de avertizare vârstă baterie [h] + Prag critic vârstă baterie [h] Pragul de avertisment pentru insulina din rezervor [U] Pragul critic al nivelului insulinei în rezervor [U] + Prag de avertizare nivel baterie [%] + Prag critic nivel baterie [%] PRED IOB COB @@ -448,6 +457,8 @@ Despre Lipsesc permisiunile de SMS Nu este acordată permisiunea de citire a stării telefonului + Stare xDrip+ (ceas) + Linie de stare xDrip+ (ceas) xds Arată BGI Adaugă BGI în linia de status @@ -490,6 +501,7 @@ Renunță Nu s-au încărcat toate profilurile! Nu s-au salvat valorile! + Activați transmisiunile către alte aplicații (cum ar fi xDrip+). Nu activați dacă aveți mai mult de o instanță de AAPS sau NSClient instalat! Permite anunțuri locale. Durată [min] OpenAPS SMB @@ -614,6 +626,7 @@ Activează SMB cu ținte temporare mari Activați SMB atunci când există o țintă temporară activă (exerciții fizice, peste 100mg/dl sau 5.5mmol/l) Insulină + CH Butoane Trimite calibrarea către xDrip+ sau deschide calibrarea pentru G5 Deschide xDrip+, butonul de înapoi returnează la AAPS @@ -1176,4 +1189,5 @@ Activare consilier bolus Timpul sa mănânci!\nRuleaza Calculatorul de Bolus pentru a face calculele din nou. Timpul sa mănânci + Grafic diff --git a/app/src/main/res/values-ru-rRU/exam.xml b/app/src/main/res/values-ru-rRU/exam.xml index 7c0861cfeb..b4073414aa 100644 --- a/app/src/main/res/values-ru-rRU/exam.xml +++ b/app/src/main/res/values-ru-rRU/exam.xml @@ -127,7 +127,6 @@ Context | Edit Context https://androidaps.readthedocs.io/en/latest/EN/Configuration/Sensitivity-detection-and-COB.html Ошибки записи углеводов Что нужно делать, если сделан неправильный ввод углеводов? - Отрицательное значение IOB в течеие продолжительного периода времени при отсутствии физ. нагрузки означает, что ваш профиль слишком сильный и вам нужно убавить подачу инсулина в настройках. Для оценки и записи потребляемых углеводов следует использовать только граммы. AndroidAPS использует динамическую модель для оценки \"распада\" и расчета COB. Если уровень глюкозы в крови находится вне допустимых значений (слишком низкое или слишком высокое), то калькулятор болюса может быть использован для внесения предложений по коррекции соотношения инсулин/углеводы. diff --git a/omnipod/src/main/res/values-pl-rPL/strings.xml b/omnipod/src/main/res/values-pl-rPL/strings.xml index 3a0d6e63d5..d5b9e4a808 100644 --- a/omnipod/src/main/res/values-pl-rPL/strings.xml +++ b/omnipod/src/main/res/values-pl-rPL/strings.xml @@ -11,6 +11,7 @@ Pokaż przycisk wstrzymania podawania w zakładce Omnipod Pokaż przycisk Puls Log w menu zarządzania Podem Pokaż przycisk Statystyki RileyLink w menu zarządzania Podem + Włącz rejestrowanie zmiany baterii w Akcjach Włączone wykrywanie strefy czasowej DST Przypomnienie o utracie ważności włączone Godziny przed wyłączeniem @@ -65,6 +66,7 @@ Adres RileyLink niewłaściwy. To działanie nie jest możliwe.\n\n Musisz skonfigurować Omnipod przed uruchomieniem tego działania. Brak aktywnego Poda + Zegar Pod-a jest rozsynchronizowany. Proszę zaktualizować czas w zakładce Omnipod. Wystąpił nieoczekiwany błąd. Proszę zgłosić! (%1$s: %2$s). Komunikacja nie powiodła się: weryfikacja integralności komunikatu nie powiodła się Komunikacja nie powiodła się: odebrano niepoprawny pakiet (komunikat) z Poda diff --git a/rileylink/src/main/res/values-pl-rPL/strings.xml b/rileylink/src/main/res/values-pl-rPL/strings.xml index 32edf33d37..2babd70bd1 100644 --- a/rileylink/src/main/res/values-pl-rPL/strings.xml +++ b/rileylink/src/main/res/values-pl-rPL/strings.xml @@ -22,15 +22,23 @@ Stan pompy Ustawienia RileyLink RileyLink + Adres: + Nazwa: + Poziom baterii: + %1$d%% Status połączenia: Błąd połączenia: Urządzenie Typ urządzenia: + Skonfigurowane urządzenie: + Połączone urządzenie: Ostatnio używana częstotliwość: Ostatnie połączenie z urządzeniem: Wersja oprogramowania: + BLE113: %1$s\nCC110: %2$s Numer seryjny pompy: Częstotliwość pompy: + %1$.2f MHz Uruchamianie Bluetooth… Błąd Bluetooth @@ -52,9 +60,12 @@ Pod nieosiągalny Pompa Medtronic + Omnipod (Eros) Tak Nie + Pokaż poziom baterii zgłoszony przez OrangeLink/EmaLink + NIE działa z oryginalnym RileyLinkiem. Może nie działać z alternatywami RileyLink-a. %1$d dzień %1$d dni diff --git a/wear/src/main/res/values-pl-rPL/strings.xml b/wear/src/main/res/values-pl-rPL/strings.xml index aeb158d662..571d7079db 100644 --- a/wear/src/main/res/values-pl-rPL/strings.xml +++ b/wear/src/main/res/values-pl-rPL/strings.xml @@ -69,6 +69,7 @@ eWęgle Ustawienia Status + Ponowna synchronizacja Wypełnianie Brak Domyślnie From ba282f098e1d66c156d50a813f35035fc2a35026 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Tue, 12 Jan 2021 10:55:20 +0100 Subject: [PATCH 55/57] allow NS_UPLOAD_ONLY in engineering mode only --- .idea/codeStyles/Project.xml | 15 ++++++++++++--- .../plugins/general/nsclient/NSClientPlugin.java | 10 +++++++++- .../fragments/TreatmentsBolusFragment.kt | 4 +++- .../fragments/TreatmentsCareportalFragment.kt | 8 ++++---- .../fragments/TreatmentsProfileSwitchFragment.kt | 8 +++++--- .../fragments/TreatmentsTempTargetFragment.java | 4 +++- .../androidaps/services/DataService.java | 4 +++- 7 files changed, 39 insertions(+), 14 deletions(-) diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml index 17dd11d581..3542887fac 100644 --- a/.idea/codeStyles/Project.xml +++ b/.idea/codeStyles/Project.xml @@ -4,9 +4,18 @@ +