From c1d9cff4b51410a3107e15fbd2149b42d80b5d70 Mon Sep 17 00:00:00 2001 From: Philoul Date: Mon, 18 Sep 2023 23:44:37 +0200 Subject: [PATCH 01/11] Wear CWF reduce complexity --- .../androidaps/watchfaces/CustomWatchface.kt | 88 +++++++++++-------- 1 file changed, 52 insertions(+), 36 deletions(-) diff --git a/wear/src/main/java/info/nightscout/androidaps/watchfaces/CustomWatchface.kt b/wear/src/main/java/info/nightscout/androidaps/watchfaces/CustomWatchface.kt index cfb1765d17..fd474e0db2 100644 --- a/wear/src/main/java/info/nightscout/androidaps/watchfaces/CustomWatchface.kt +++ b/wear/src/main/java/info/nightscout/androidaps/watchfaces/CustomWatchface.kt @@ -184,40 +184,16 @@ class CustomWatchface : BaseWatchFace() { view.layoutParams = params view.visibility = setVisibility(viewJson.optString(VISIBILITY.key, JsonKeyValues.GONE.key), id.visibility(sp)) when (view) { - is TextView -> { - view.rotation = viewJson.optInt(ROTATION.key).toFloat() - view.setTextSize(TypedValue.COMPLEX_UNIT_PX, (viewJson.optInt(TEXTSIZE.key, 22) * zoomFactor).toFloat()) - view.gravity = GravityMap.gravity(viewJson.optString(GRAVITY.key, GravityMap.CENTER.key)) - view.setTypeface( - FontMap.font(viewJson.optString(FONT.key, FontMap.DEFAULT.key)), - StyleMap.style(viewJson.optString(FONTSTYLE.key, StyleMap.NORMAL.key)) - ) - view.setTextColor(getColor(viewJson.optString(FONTCOLOR.key))) - view.isAllCaps = viewJson.optBoolean(ALLCAPS.key) - if (viewJson.has(TEXTVALUE.key)) - view.text = viewJson.optString(TEXTVALUE.key) - view.background = resDataMap[viewJson.optString(BACKGROUND.key)]?.toDrawable(resources, width, height) + is TextView -> { + id.customizeTextView(view, viewJson, resDataMap, zoomFactor, resources, ::getColor) } - is ImageView -> { - view.clearColorFilter() - id.drawable(resources, resDataMap, singleBg.sgvLevel)?.let { - if (viewJson.has(COLOR.key)) // Note only works on bitmap (png or jpg) or xml included into res, not for svg files - it.colorFilter = changeDrawableColor(getColor(viewJson.optString(COLOR.key))) - else - it.clearColorFilter() - view.setImageDrawable(it) - } ?: apply { - view.setImageDrawable(id.defaultDrawable?.let {resources.getDrawable(it)}) - if (viewJson.has(COLOR.key)) - view.setColorFilter(getColor(viewJson.optString(COLOR.key))) - else - view.clearColorFilter() - } + is ImageView -> { + id.customizeImageView(view, viewJson, resDataMap, singleBg, resources, ::getColor, ::changeDrawableColor) } } - } ?:apply { + } ?: apply { view.visibility = View.GONE if (view is TextView) { view.text = "" @@ -394,7 +370,7 @@ class CustomWatchface : BaseWatchFace() { @StringRes val pref: Int?, @IdRes val defaultDrawable: Int?, val customDrawable: ResFileMap?, - val customHigh:ResFileMap?, + val customHigh: ResFileMap?, val customLow: ResFileMap? ) { @@ -491,16 +467,56 @@ class CustomWatchface : BaseWatchFace() { fun drawable(resources: Resources, drawableDataMap: CwfResDataMap, sgvLevel: Long): Drawable? = customDrawable?.let { cd -> when (sgvLevel) { - 1L -> { customHigh?.let {drawableDataMap[customHigh.fileName]}?.toDrawable(resources) ?: drawableDataMap[cd.fileName]?.toDrawable(resources) } + 1L -> { customHigh?.let { drawableDataMap[customHigh.fileName] }?.toDrawable(resources) ?: drawableDataMap[cd.fileName]?.toDrawable(resources) } 0L -> { drawableDataMap[cd.fileName]?.toDrawable(resources) } - -1L -> { customLow?.let {drawableDataMap[customLow.fileName]}?.toDrawable(resources) ?: drawableDataMap[cd.fileName]?.toDrawable(resources) } + -1L -> { customLow?.let {drawableDataMap[customLow.fileName] }?.toDrawable(resources) ?: drawableDataMap[cd.fileName]?.toDrawable(resources) } else -> drawableDataMap[cd.fileName]?.toDrawable(resources) } } + + fun customizeTextView(view: TextView, viewJson: JSONObject, resDataMap: CwfResDataMap, zoomFactor: Double, resources: Resources, getColor: (String) -> Int) { + view.rotation = viewJson.optInt(ROTATION.key).toFloat() + view.setTextSize(TypedValue.COMPLEX_UNIT_PX, (viewJson.optInt(TEXTSIZE.key, 22) * zoomFactor).toFloat()) + view.gravity = GravityMap.gravity(viewJson.optString(GRAVITY.key, GravityMap.CENTER.key)) + view.setTypeface( + FontMap.font(viewJson.optString(FONT.key, FontMap.DEFAULT.key)), + StyleMap.style(viewJson.optString(FONTSTYLE.key, StyleMap.NORMAL.key)) + ) + view.setTextColor(getColor(viewJson.optString(FONTCOLOR.key))) + view.isAllCaps = viewJson.optBoolean(ALLCAPS.key) + if (viewJson.has(TEXTVALUE.key)) + view.text = viewJson.optString(TEXTVALUE.key) + view.background = resDataMap[viewJson.optString(BACKGROUND.key)]?.toDrawable(resources, view.width, view.height) + } + + fun customizeImageView( + view: ImageView, + viewJson: JSONObject, + resDataMap: CwfResDataMap, + singleBg: EventData.SingleBg, + resources: Resources, + getColor: (String) -> Int, + changeDrawableColor: (Int) -> ColorFilter + ) { + view.clearColorFilter() + drawable(resources, resDataMap, singleBg.sgvLevel)?.let { + if (viewJson.has(COLOR.key)) // Note only works on bitmap (png or jpg) or xml included into res, not for svg files + it.colorFilter = changeDrawableColor(getColor(viewJson.optString(COLOR.key))) + else + it.clearColorFilter() + view.setImageDrawable(it) + } ?: apply { + view.setImageDrawable(defaultDrawable?.let { resources.getDrawable(it) }) + if (viewJson.has(COLOR.key)) + view.setColorFilter(getColor(viewJson.optString(COLOR.key))) + else + view.clearColorFilter() + } + } } } -private enum class TrendArrowMap(val symbol: String, @DrawableRes val icon: Int,val customDrawable: ResFileMap?) { +private enum class TrendArrowMap(val symbol: String, @DrawableRes val icon: Int, val customDrawable: ResFileMap?) { NONE("??", R.drawable.ic_invalid, ResFileMap.ARROW_NONE), TRIPLE_UP("X", R.drawable.ic_doubleup, ResFileMap.ARROW_DOUBLE_UP), DOUBLE_UP("\u21c8", R.drawable.ic_doubleup, ResFileMap.ARROW_DOUBLE_UP), @@ -515,8 +531,8 @@ private enum class TrendArrowMap(val symbol: String, @DrawableRes val icon: Int, companion object { fun drawable(direction: String?, resources: Resources, drawableDataMap: CwfResDataMap): Drawable { - val arrow = values().firstOrNull { it.symbol == direction } ?:NONE - return arrow.customDrawable?. let {drawableDataMap[arrow.customDrawable.fileName]}?.toDrawable(resources) ?:resources.getDrawable(arrow.icon) + val arrow = values().firstOrNull { it.symbol == direction } ?: NONE + return arrow.customDrawable?.let { drawableDataMap[arrow.customDrawable.fileName] }?.toDrawable(resources) ?: resources.getDrawable(arrow.icon) } } @@ -558,7 +574,7 @@ private enum class FontMap(val key: String, var font: Typeface, @FontRes val fon resDataMap.filter { (_, resData) -> resData.format == ResFormat.TTF || resData.format == ResFormat.OTF }.forEach { (key, resData) -> - customFonts[key.lowercase()] = resData.toTypeface() ?:Typeface.DEFAULT + customFonts[key.lowercase()] = resData.toTypeface() ?: Typeface.DEFAULT } } From a42c6a7aea0dd13bab8a6a77d12af206fc4b3e68 Mon Sep 17 00:00:00 2001 From: Philoul Date: Tue, 19 Sep 2023 00:16:34 +0200 Subject: [PATCH 02/11] Wear CWF SuppressLint --- .../androidaps/watchfaces/CustomWatchface.kt | 195 +++++++++--------- 1 file changed, 97 insertions(+), 98 deletions(-) diff --git a/wear/src/main/java/info/nightscout/androidaps/watchfaces/CustomWatchface.kt b/wear/src/main/java/info/nightscout/androidaps/watchfaces/CustomWatchface.kt index fd474e0db2..36655f08ee 100644 --- a/wear/src/main/java/info/nightscout/androidaps/watchfaces/CustomWatchface.kt +++ b/wear/src/main/java/info/nightscout/androidaps/watchfaces/CustomWatchface.kt @@ -53,7 +53,7 @@ import org.joda.time.TimeOfDay import org.json.JSONObject import java.io.ByteArrayOutputStream import javax.inject.Inject - +@SuppressLint("UseCompatLoadingForDrawables") class CustomWatchface : BaseWatchFace() { @Inject lateinit var context: Context @@ -88,7 +88,6 @@ class CustomWatchface : BaseWatchFace() { .build() } - @SuppressLint("UseCompatLoadingForDrawables") override fun setDataFields() { super.setDataFields() binding.direction2.setImageDrawable(TrendArrowMap.drawable(singleBg.slopeArrow, resources, resDataMap)) @@ -141,7 +140,6 @@ class CustomWatchface : BaseWatchFace() { binding.secondHand.visibility = (binding.secondHand.visibility == View.VISIBLE && showSecond).toVisibility() } - @SuppressLint("UseCompatLoadingForDrawables") private fun setWatchfaceStyle() { val customWatchface = persistence.readCustomWatchface() ?: persistence.readCustomWatchface(true) customWatchface?.let { @@ -184,11 +182,11 @@ class CustomWatchface : BaseWatchFace() { view.layoutParams = params view.visibility = setVisibility(viewJson.optString(VISIBILITY.key, JsonKeyValues.GONE.key), id.visibility(sp)) when (view) { - is TextView -> { + is TextView -> { id.customizeTextView(view, viewJson, resDataMap, zoomFactor, resources, ::getColor) } - is ImageView -> { + is ImageView -> { id.customizeImageView(view, viewJson, resDataMap, singleBg, resources, ::getColor, ::changeDrawableColor) } @@ -514,106 +512,107 @@ class CustomWatchface : BaseWatchFace() { } } } -} -private enum class TrendArrowMap(val symbol: String, @DrawableRes val icon: Int, val customDrawable: ResFileMap?) { - NONE("??", R.drawable.ic_invalid, ResFileMap.ARROW_NONE), - TRIPLE_UP("X", R.drawable.ic_doubleup, ResFileMap.ARROW_DOUBLE_UP), - DOUBLE_UP("\u21c8", R.drawable.ic_doubleup, ResFileMap.ARROW_DOUBLE_UP), - SINGLE_UP("\u2191", R.drawable.ic_singleup, ResFileMap.ARROW_SINGLE_UP), - FORTY_FIVE_UP("\u2197", R.drawable.ic_fortyfiveup, ResFileMap.ARROW_FORTY_FIVE_UP), - FLAT("\u2192", R.drawable.ic_flat, ResFileMap.ARROW_FLAT), - FORTY_FIVE_DOWN("\u2198", R.drawable.ic_fortyfivedown, ResFileMap.ARROW_FORTY_FIVE_DOWN), - SINGLE_DOWN("\u2193", R.drawable.ic_singledown, ResFileMap.ARROW_SINGLE_DOWN), - DOUBLE_DOWN("\u21ca", R.drawable.ic_doubledown, ResFileMap.ARROW_DOUBLE_DOWN), - TRIPLE_DOWN("X", R.drawable.ic_doubledown, ResFileMap.ARROW_DOUBLE_DOWN); + private enum class TrendArrowMap(val symbol: String, @DrawableRes val icon: Int, val customDrawable: ResFileMap?) { + NONE("??", R.drawable.ic_invalid, ResFileMap.ARROW_NONE), + TRIPLE_UP("X", R.drawable.ic_doubleup, ResFileMap.ARROW_DOUBLE_UP), + DOUBLE_UP("\u21c8", R.drawable.ic_doubleup, ResFileMap.ARROW_DOUBLE_UP), + SINGLE_UP("\u2191", R.drawable.ic_singleup, ResFileMap.ARROW_SINGLE_UP), + FORTY_FIVE_UP("\u2197", R.drawable.ic_fortyfiveup, ResFileMap.ARROW_FORTY_FIVE_UP), + FLAT("\u2192", R.drawable.ic_flat, ResFileMap.ARROW_FLAT), + FORTY_FIVE_DOWN("\u2198", R.drawable.ic_fortyfivedown, ResFileMap.ARROW_FORTY_FIVE_DOWN), + SINGLE_DOWN("\u2193", R.drawable.ic_singledown, ResFileMap.ARROW_SINGLE_DOWN), + DOUBLE_DOWN("\u21ca", R.drawable.ic_doubledown, ResFileMap.ARROW_DOUBLE_DOWN), + TRIPLE_DOWN("X", R.drawable.ic_doubledown, ResFileMap.ARROW_DOUBLE_DOWN); - companion object { + companion object { - fun drawable(direction: String?, resources: Resources, drawableDataMap: CwfResDataMap): Drawable { - val arrow = values().firstOrNull { it.symbol == direction } ?: NONE - return arrow.customDrawable?.let { drawableDataMap[arrow.customDrawable.fileName] }?.toDrawable(resources) ?: resources.getDrawable(arrow.icon) - } - - } -} - -private enum class GravityMap(val key: String, val gravity: Int) { - CENTER(JsonKeyValues.CENTER.key, Gravity.CENTER), - LEFT(JsonKeyValues.LEFT.key, Gravity.LEFT), - RIGHT(JsonKeyValues.RIGHT.key, Gravity.RIGHT); - - companion object { - - fun gravity(key: String?) = values().firstOrNull { it.key == key }?.gravity ?: CENTER.gravity - fun key(gravity: Int) = values().firstOrNull { it.gravity == gravity }?.key ?: CENTER.key - } -} - -private enum class FontMap(val key: String, var font: Typeface, @FontRes val fontRessources: Int?) { - SANS_SERIF(JsonKeyValues.SANS_SERIF.key, Typeface.SANS_SERIF, null), - DEFAULT(JsonKeyValues.DEFAULT.key, Typeface.DEFAULT, null), - DEFAULT_BOLD(JsonKeyValues.DEFAULT_BOLD.key, Typeface.DEFAULT_BOLD, null), - MONOSPACE(JsonKeyValues.MONOSPACE.key, Typeface.MONOSPACE, null), - SERIF(JsonKeyValues.SERIF.key, Typeface.SERIF, null), - ROBOTO_CONDENSED_BOLD(JsonKeyValues.ROBOTO_CONDENSED_BOLD.key, Typeface.DEFAULT, R.font.roboto_condensed_bold), - ROBOTO_CONDENSED_LIGHT(JsonKeyValues.ROBOTO_CONDENSED_LIGHT.key, Typeface.DEFAULT, R.font.roboto_condensed_light), - ROBOTO_CONDENSED_REGULAR(JsonKeyValues.ROBOTO_CONDENSED_REGULAR.key, Typeface.DEFAULT, R.font.roboto_condensed_regular), - ROBOTO_SLAB_LIGHT(JsonKeyValues.ROBOTO_SLAB_LIGHT.key, Typeface.DEFAULT, R.font.roboto_slab_light); - - companion object { - - private val customFonts = mutableMapOf() - fun init(context: Context, resDataMap: CwfResDataMap) { - customFonts.clear() - values().forEach { fontMap -> - customFonts[fontMap.key.lowercase()] = fontMap.fontRessources?.let { fontResource -> - ResourcesCompat.getFont(context, fontResource) - } ?: fontMap.font - } - resDataMap.filter { (_, resData) -> - resData.format == ResFormat.TTF || resData.format == ResFormat.OTF - }.forEach { (key, resData) -> - customFonts[key.lowercase()] = resData.toTypeface() ?: Typeface.DEFAULT + fun drawable(direction: String?, resources: Resources, drawableDataMap: CwfResDataMap): Drawable { + val arrow = values().firstOrNull { it.symbol == direction } ?: NONE + return arrow.customDrawable?.let { drawableDataMap[arrow.customDrawable.fileName] }?.toDrawable(resources) ?: resources.getDrawable(arrow.icon) } + } + } - fun font(key: String) = customFonts[key.lowercase()] ?: DEFAULT.font - fun key() = DEFAULT.key + @SuppressLint("RtlHardcoded") + private enum class GravityMap(val key: String, val gravity: Int) { + CENTER(JsonKeyValues.CENTER.key, Gravity.CENTER), + LEFT(JsonKeyValues.LEFT.key, Gravity.LEFT), + RIGHT(JsonKeyValues.RIGHT.key, Gravity.RIGHT); + + companion object { + + fun gravity(key: String?) = values().firstOrNull { it.key == key }?.gravity ?: CENTER.gravity + fun key(gravity: Int) = values().firstOrNull { it.gravity == gravity }?.key ?: CENTER.key + } + } + + private enum class FontMap(val key: String, var font: Typeface, @FontRes val fontRessources: Int?) { + SANS_SERIF(JsonKeyValues.SANS_SERIF.key, Typeface.SANS_SERIF, null), + DEFAULT(JsonKeyValues.DEFAULT.key, Typeface.DEFAULT, null), + DEFAULT_BOLD(JsonKeyValues.DEFAULT_BOLD.key, Typeface.DEFAULT_BOLD, null), + MONOSPACE(JsonKeyValues.MONOSPACE.key, Typeface.MONOSPACE, null), + SERIF(JsonKeyValues.SERIF.key, Typeface.SERIF, null), + ROBOTO_CONDENSED_BOLD(JsonKeyValues.ROBOTO_CONDENSED_BOLD.key, Typeface.DEFAULT, R.font.roboto_condensed_bold), + ROBOTO_CONDENSED_LIGHT(JsonKeyValues.ROBOTO_CONDENSED_LIGHT.key, Typeface.DEFAULT, R.font.roboto_condensed_light), + ROBOTO_CONDENSED_REGULAR(JsonKeyValues.ROBOTO_CONDENSED_REGULAR.key, Typeface.DEFAULT, R.font.roboto_condensed_regular), + ROBOTO_SLAB_LIGHT(JsonKeyValues.ROBOTO_SLAB_LIGHT.key, Typeface.DEFAULT, R.font.roboto_slab_light); + + companion object { + + private val customFonts = mutableMapOf() + fun init(context: Context, resDataMap: CwfResDataMap) { + customFonts.clear() + values().forEach { fontMap -> + customFonts[fontMap.key.lowercase()] = fontMap.fontRessources?.let { fontResource -> + ResourcesCompat.getFont(context, fontResource) + } ?: fontMap.font + } + resDataMap.filter { (_, resData) -> + resData.format == ResFormat.TTF || resData.format == ResFormat.OTF + }.forEach { (key, resData) -> + customFonts[key.lowercase()] = resData.toTypeface() ?: Typeface.DEFAULT + } + } + + fun font(key: String) = customFonts[key.lowercase()] ?: DEFAULT.font + fun key() = DEFAULT.key + } + } + + private enum class StyleMap(val key: String, val style: Int) { + NORMAL(JsonKeyValues.NORMAL.key, Typeface.NORMAL), + BOLD(JsonKeyValues.BOLD.key, Typeface.BOLD), + BOLD_ITALIC(JsonKeyValues.BOLD_ITALIC.key, Typeface.BOLD_ITALIC), + ITALIC(JsonKeyValues.ITALIC.key, Typeface.ITALIC); + + companion object { + + fun style(key: String?) = values().firstOrNull { it.key == key }?.style ?: NORMAL.style + fun key(style: Int) = values().firstOrNull { it.style == style }?.key ?: NORMAL.key + } + } + + // This class containt mapping between keys used within json of Custom Watchface and preferences + private enum class PrefMap(val key: String, @StringRes val prefKey: Int) { + + SHOW_IOB(CwfMetadataKey.CWF_PREF_WATCH_SHOW_IOB.key, R.string.key_show_iob), + SHOW_DETAILED_IOB(CwfMetadataKey.CWF_PREF_WATCH_SHOW_DETAILED_IOB.key, R.string.key_show_detailed_iob), + SHOW_COB(CwfMetadataKey.CWF_PREF_WATCH_SHOW_COB.key, R.string.key_show_cob), + SHOW_DELTA(CwfMetadataKey.CWF_PREF_WATCH_SHOW_DELTA.key, R.string.key_show_delta), + SHOW_AVG_DELTA(CwfMetadataKey.CWF_PREF_WATCH_SHOW_AVG_DELTA.key, R.string.key_show_avg_delta), + SHOW_DETAILED_DELTA(CwfMetadataKey.CWF_PREF_WATCH_SHOW_DETAILED_DELTA.key, R.string.key_show_detailed_delta), + SHOW_UPLOADER_BATTERY(CwfMetadataKey.CWF_PREF_WATCH_SHOW_UPLOADER_BATTERY.key, R.string.key_show_uploader_battery), + SHOW_RIG_BATTERY(CwfMetadataKey.CWF_PREF_WATCH_SHOW_RIG_BATTERY.key, R.string.key_show_rig_battery), + SHOW_TEMP_BASAL(CwfMetadataKey.CWF_PREF_WATCH_SHOW_TEMP_BASAL.key, R.string.key_show_temp_basal), + SHOW_DIRECTION(CwfMetadataKey.CWF_PREF_WATCH_SHOW_DIRECTION.key, R.string.key_show_direction), + SHOW_AGO(CwfMetadataKey.CWF_PREF_WATCH_SHOW_AGO.key, R.string.key_show_ago), + SHOW_BG(CwfMetadataKey.CWF_PREF_WATCH_SHOW_BG.key, R.string.key_show_bg), + SHOW_BGI(CwfMetadataKey.CWF_PREF_WATCH_SHOW_BGI.key, R.string.key_show_bgi), + SHOW_LOOP_STATUS(CwfMetadataKey.CWF_PREF_WATCH_SHOW_LOOP_STATUS.key, R.string.key_show_external_status), + SHOW_WEEK_NUMBER(CwfMetadataKey.CWF_PREF_WATCH_SHOW_WEEK_NUMBER.key, R.string.key_show_week_number) } } -private enum class StyleMap(val key: String, val style: Int) { - NORMAL(JsonKeyValues.NORMAL.key, Typeface.NORMAL), - BOLD(JsonKeyValues.BOLD.key, Typeface.BOLD), - BOLD_ITALIC(JsonKeyValues.BOLD_ITALIC.key, Typeface.BOLD_ITALIC), - ITALIC(JsonKeyValues.ITALIC.key, Typeface.ITALIC); - - companion object { - - fun style(key: String?) = values().firstOrNull { it.key == key }?.style ?: NORMAL.style - fun key(style: Int) = values().firstOrNull { it.style == style }?.key ?: NORMAL.key - } -} - -// This class containt mapping between keys used within json of Custom Watchface and preferences -private enum class PrefMap(val key: String, @StringRes val prefKey: Int) { - - SHOW_IOB(CwfMetadataKey.CWF_PREF_WATCH_SHOW_IOB.key, R.string.key_show_iob), - SHOW_DETAILED_IOB(CwfMetadataKey.CWF_PREF_WATCH_SHOW_DETAILED_IOB.key, R.string.key_show_detailed_iob), - SHOW_COB(CwfMetadataKey.CWF_PREF_WATCH_SHOW_COB.key, R.string.key_show_cob), - SHOW_DELTA(CwfMetadataKey.CWF_PREF_WATCH_SHOW_DELTA.key, R.string.key_show_delta), - SHOW_AVG_DELTA(CwfMetadataKey.CWF_PREF_WATCH_SHOW_AVG_DELTA.key, R.string.key_show_avg_delta), - SHOW_DETAILED_DELTA(CwfMetadataKey.CWF_PREF_WATCH_SHOW_DETAILED_DELTA.key, R.string.key_show_detailed_delta), - SHOW_UPLOADER_BATTERY(CwfMetadataKey.CWF_PREF_WATCH_SHOW_UPLOADER_BATTERY.key, R.string.key_show_uploader_battery), - SHOW_RIG_BATTERY(CwfMetadataKey.CWF_PREF_WATCH_SHOW_RIG_BATTERY.key, R.string.key_show_rig_battery), - SHOW_TEMP_BASAL(CwfMetadataKey.CWF_PREF_WATCH_SHOW_TEMP_BASAL.key, R.string.key_show_temp_basal), - SHOW_DIRECTION(CwfMetadataKey.CWF_PREF_WATCH_SHOW_DIRECTION.key, R.string.key_show_direction), - SHOW_AGO(CwfMetadataKey.CWF_PREF_WATCH_SHOW_AGO.key, R.string.key_show_ago), - SHOW_BG(CwfMetadataKey.CWF_PREF_WATCH_SHOW_BG.key, R.string.key_show_bg), - SHOW_BGI(CwfMetadataKey.CWF_PREF_WATCH_SHOW_BGI.key, R.string.key_show_bgi), - SHOW_LOOP_STATUS(CwfMetadataKey.CWF_PREF_WATCH_SHOW_LOOP_STATUS.key, R.string.key_show_external_status), - SHOW_WEEK_NUMBER(CwfMetadataKey.CWF_PREF_WATCH_SHOW_WEEK_NUMBER.key, R.string.key_show_week_number) -} - From a9abfbe3cfd4b43c3c4a87587201c45cc9ce0064 Mon Sep 17 00:00:00 2001 From: Ryan Haining Date: Mon, 18 Sep 2023 19:59:05 -0700 Subject: [PATCH 03/11] Rewrites HeartRateListenerTest with matchers Issue #2745 --- .../heartrate/HeartRateListenerTest.kt | 67 ++++++++++--------- 1 file changed, 34 insertions(+), 33 deletions(-) diff --git a/wear/src/test/java/info/nightscout/androidaps/heartrate/HeartRateListenerTest.kt b/wear/src/test/java/info/nightscout/androidaps/heartrate/HeartRateListenerTest.kt index 7b542b1afc..7daf20917e 100644 --- a/wear/src/test/java/info/nightscout/androidaps/heartrate/HeartRateListenerTest.kt +++ b/wear/src/test/java/info/nightscout/androidaps/heartrate/HeartRateListenerTest.kt @@ -3,14 +3,13 @@ package info.nightscout.androidaps.heartrate import android.content.Context import android.hardware.Sensor import android.hardware.SensorManager +import com.google.common.truth.Truth.assertThat import info.nightscout.rx.AapsSchedulers import info.nightscout.rx.logging.AAPSLoggerTest import info.nightscout.rx.weardata.EventData.ActionHeartRate import io.reactivex.rxjava3.core.Scheduler import io.reactivex.rxjava3.disposables.Disposable import org.junit.jupiter.api.AfterEach -import org.junit.jupiter.api.Assertions.assertEquals -import org.junit.jupiter.api.Assertions.assertNull import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import org.mockito.ArgumentMatchers.any @@ -22,8 +21,9 @@ import org.mockito.Mockito.`when` import java.util.concurrent.TimeUnit internal class HeartRateListenerTest { + private val aapsLogger = AAPSLoggerTest() - private val aapsSchedulers = object: AapsSchedulers { + private val aapsSchedulers = object : AapsSchedulers { override val main: Scheduler = mock(Scheduler::class.java) override val io: Scheduler = mock(Scheduler::class.java) override val cpu: Scheduler = mock(Scheduler::class.java) @@ -35,11 +35,15 @@ internal class HeartRateListenerTest { private fun create(timestampMillis: Long): HeartRateListener { val ctx = mock(Context::class.java) - `when`(aapsSchedulers.io.schedulePeriodicallyDirect( - any(), eq(60_000L), eq(60_000L), eq(TimeUnit.MILLISECONDS))).thenReturn(schedule) + `when`( + aapsSchedulers.io.schedulePeriodicallyDirect( + any(), eq(60_000L), eq(60_000L), eq(TimeUnit.MILLISECONDS) + ) + ).thenReturn(schedule) val listener = HeartRateListener(ctx, aapsLogger, aapsSchedulers, timestampMillis) verify(aapsSchedulers.io).schedulePeriodicallyDirect( - any(), eq(60_000L), eq(60_000L), eq(TimeUnit.MILLISECONDS)) + any(), eq(60_000L), eq(60_000L), eq(TimeUnit.MILLISECONDS) + ) listener.sendHeartRate = { hr -> heartRates.add(hr) } return listener } @@ -49,10 +53,11 @@ internal class HeartRateListenerTest { timestamp: Long, heartRate: Int, sensorType: Int? = Sensor.TYPE_HEART_RATE, - accuracy: Int = SensorManager.SENSOR_STATUS_ACCURACY_HIGH) { + accuracy: Int = SensorManager.SENSOR_STATUS_ACCURACY_HIGH + ) { listener.onSensorChanged(sensorType, accuracy, timestamp, floatArrayOf(heartRate.toFloat())) } - + @BeforeEach fun before() { heartRates.clear() @@ -66,7 +71,7 @@ internal class HeartRateListenerTest { Mockito.verifyNoInteractions(aapsSchedulers.newThread) verify(schedule).dispose() } - + @Test fun onSensorChanged() { val start = System.currentTimeMillis() @@ -74,14 +79,13 @@ internal class HeartRateListenerTest { val d2 = 20_000L val listener = create(start) - assertNull(listener.currentHeartRateBpm) + assertThat(listener.currentHeartRateBpm).isNull() sendSensorEvent(listener, start + d1, 80) - assertEquals(0, heartRates.size) - assertEquals(80, listener.currentHeartRateBpm) + assertThat(heartRates).isEmpty() + assertThat(listener.currentHeartRateBpm).isEqualTo(80) listener.send(start + d2) - assertEquals(1, heartRates.size) - assertEquals(ActionHeartRate(d2, start + d2, 80.0, device), heartRates.first()) + assertThat(heartRates).containsExactly(ActionHeartRate(d2, start + d2, 80.0, device)) listener.dispose() } @@ -93,16 +97,15 @@ internal class HeartRateListenerTest { val listener = create(start) sendSensorEvent(listener, start, 80) - assertEquals(0, heartRates.size) - assertEquals(80, listener.currentHeartRateBpm) - sendSensorEvent(listener, start + d1,100) - assertEquals(0, heartRates.size) - assertEquals(100, listener.currentHeartRateBpm) + assertThat(heartRates).isEmpty() + assertThat(listener.currentHeartRateBpm).isEqualTo(80) + sendSensorEvent(listener, start + d1, 100) + assertThat(heartRates).isEmpty() + assertThat(listener.currentHeartRateBpm).isEqualTo(100) listener.send(start + d2) - assertEquals(1, heartRates.size) - assertEquals(ActionHeartRate(d2, start + d2, 95.0, device), heartRates.first()) + assertThat(heartRates).containsExactly(ActionHeartRate(d2, start + d2, 95.0, device)) listener.dispose() } @@ -115,15 +118,15 @@ internal class HeartRateListenerTest { sendSensorEvent(listener, start, 80) listener.send(start + d1) - assertEquals(1, heartRates.size) + assertThat(heartRates).hasSize(1) - sendSensorEvent(listener, start + d1,100) - assertEquals(1, heartRates.size) + sendSensorEvent(listener, start + d1, 100) + assertThat(heartRates).hasSize(1) listener.send(start + d2) - assertEquals(2, heartRates.size) - - assertEquals(ActionHeartRate(d1, start + d1, 80.0, device), heartRates[0]) - assertEquals(ActionHeartRate(d2 - d1, start + d2, 100.0, device), heartRates[1]) + assertThat(heartRates).containsExactly( + ActionHeartRate(d1, start + d1, 80.0, device), + ActionHeartRate(d2 - d1, start + d2, 100.0, device), + ).inOrder() listener.dispose() } @@ -136,11 +139,10 @@ internal class HeartRateListenerTest { sendSensorEvent(listener, start, 80) sendSensorEvent(listener, start + d1, 100, accuracy = SensorManager.SENSOR_STATUS_NO_CONTACT) - assertNull(listener.currentHeartRateBpm) + assertThat(listener.currentHeartRateBpm).isNull() listener.send(start + d2) - assertEquals(1, heartRates.size) - assertEquals(ActionHeartRate(d2, start + d2, 80.0, device), heartRates.first()) + assertThat(heartRates).containsExactly(ActionHeartRate(d2, start + d2, 80.0, device)) listener.dispose() } @@ -157,8 +159,7 @@ internal class HeartRateListenerTest { sendSensorEvent(listener, start + d2, 100) listener.send(start + d3) - assertEquals(1, heartRates.size) - assertEquals(ActionHeartRate(d3, start + d3, 95.0, device), heartRates.first()) + assertThat(heartRates).containsExactly(ActionHeartRate(d3, start + d3, 95.0, device)) listener.dispose() } } From a42ef55cb037b113bc5a5480e752765442c415d7 Mon Sep 17 00:00:00 2001 From: Ryan Haining Date: Mon, 18 Sep 2023 20:16:58 -0700 Subject: [PATCH 04/11] Rewrites DisplayFormatTest with matchers Issue #2745 --- .../interaction/utils/DisplayFormatTest.kt | 222 +++++++++--------- 1 file changed, 111 insertions(+), 111 deletions(-) diff --git a/wear/src/test/java/info/nightscout/androidaps/interaction/utils/DisplayFormatTest.kt b/wear/src/test/java/info/nightscout/androidaps/interaction/utils/DisplayFormatTest.kt index e2a0934f21..e6dbf02680 100644 --- a/wear/src/test/java/info/nightscout/androidaps/interaction/utils/DisplayFormatTest.kt +++ b/wear/src/test/java/info/nightscout/androidaps/interaction/utils/DisplayFormatTest.kt @@ -1,10 +1,10 @@ package info.nightscout.androidaps.interaction.utils +import com.google.common.truth.Truth.assertThat import info.nightscout.androidaps.R import info.nightscout.androidaps.WearTestBase import info.nightscout.androidaps.data.RawDisplayData import info.nightscout.androidaps.testing.mockers.RawDataMocker -import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import org.mockito.Mockito @@ -32,142 +32,142 @@ class DisplayFormatTest : WearTestBase() { } @Test fun shortTimeSinceTest() { - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(0, 0, 0, 0)), "0'") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(0, 0, 0, 5)), "0'") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(0, 0, 0, 55)), "0'") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(0, 0, 1, 0)), "1'") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(0, 0, 1, 59)), "1'") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(0, 0, 2, 0)), "2'") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(0, 0, 3, 0)), "3'") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(0, 0, 4, 0)), "4'") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(0, 0, 10, 0)), "10'") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(0, 0, 30, 0)), "30'") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(0, 0, 59, 0)), "59'") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(0, 0, 59, 59)), "59'") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(0, 1, 0, 0)), "1h") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(0, 1, 30, 0)), "1h") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(0, 1, 59, 59)), "1h") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(0, 2, 0, 0)), "2h") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(0, 3, 0, 0)), "3h") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(0, 4, 0, 0)), "4h") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(0, 5, 0, 0)), "5h") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(0, 12, 0, 0)), "12h") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(0, 18, 0, 0)), "18h") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(0, 23, 59, 59)), "23h") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(1, 0, 0, 0)), "1d") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(1, 12, 0, 0)), "1d") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(1, 23, 59, 59)), "1d") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(2, 0, 0, 0)), "2d") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(3, 0, 0, 0)), "3d") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(4, 0, 0, 0)), "4d") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(5, 0, 0, 0)), "5d") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(6, 0, 0, 0)), "6d") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(6, 23, 59, 59)), "6d") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(7, 0, 0, 0)), "1w") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(8, 0, 0, 0)), "1w") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(9, 0, 0, 0)), "1w") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(13, 23, 59, 59)), "1w") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(14, 0, 0, 0)), "2w") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(21, 0, 0, 0)), "3w") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(28, 0, 0, 0)), "4w") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(31, 0, 0, 0)), "4w") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(32, 0, 0, 0)), "4w") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(35, 0, 0, 0)), "5w") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(100, 0, 0, 0)), "14w") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(200, 0, 0, 0)), "28w") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(365, 0, 0, 0)), "52w") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(366, 0, 0, 0)), "52w") - Assertions.assertEquals(displayFormat.shortTimeSince(backInTime(367, 0, 0, 0)), "52w") + assertThat(displayFormat.shortTimeSince(backInTime(0, 0, 0, 0))).isEqualTo("0'") + assertThat(displayFormat.shortTimeSince(backInTime(0, 0, 0, 5))).isEqualTo("0'") + assertThat(displayFormat.shortTimeSince(backInTime(0, 0, 0, 55))).isEqualTo("0'") + assertThat(displayFormat.shortTimeSince(backInTime(0, 0, 1, 0))).isEqualTo("1'") + assertThat(displayFormat.shortTimeSince(backInTime(0, 0, 1, 59))).isEqualTo("1'") + assertThat(displayFormat.shortTimeSince(backInTime(0, 0, 2, 0))).isEqualTo("2'") + assertThat(displayFormat.shortTimeSince(backInTime(0, 0, 3, 0))).isEqualTo("3'") + assertThat(displayFormat.shortTimeSince(backInTime(0, 0, 4, 0))).isEqualTo("4'") + assertThat(displayFormat.shortTimeSince(backInTime(0, 0, 10, 0))).isEqualTo("10'") + assertThat(displayFormat.shortTimeSince(backInTime(0, 0, 30, 0))).isEqualTo("30'") + assertThat(displayFormat.shortTimeSince(backInTime(0, 0, 59, 0))).isEqualTo("59'") + assertThat(displayFormat.shortTimeSince(backInTime(0, 0, 59, 59))).isEqualTo("59'") + assertThat(displayFormat.shortTimeSince(backInTime(0, 1, 0, 0))).isEqualTo("1h") + assertThat(displayFormat.shortTimeSince(backInTime(0, 1, 30, 0))).isEqualTo("1h") + assertThat(displayFormat.shortTimeSince(backInTime(0, 1, 59, 59))).isEqualTo("1h") + assertThat(displayFormat.shortTimeSince(backInTime(0, 2, 0, 0))).isEqualTo("2h") + assertThat(displayFormat.shortTimeSince(backInTime(0, 3, 0, 0))).isEqualTo("3h") + assertThat(displayFormat.shortTimeSince(backInTime(0, 4, 0, 0))).isEqualTo("4h") + assertThat(displayFormat.shortTimeSince(backInTime(0, 5, 0, 0))).isEqualTo("5h") + assertThat(displayFormat.shortTimeSince(backInTime(0, 12, 0, 0))).isEqualTo("12h") + assertThat(displayFormat.shortTimeSince(backInTime(0, 18, 0, 0))).isEqualTo("18h") + assertThat(displayFormat.shortTimeSince(backInTime(0, 23, 59, 59))).isEqualTo("23h") + assertThat(displayFormat.shortTimeSince(backInTime(1, 0, 0, 0))).isEqualTo("1d") + assertThat(displayFormat.shortTimeSince(backInTime(1, 12, 0, 0))).isEqualTo("1d") + assertThat(displayFormat.shortTimeSince(backInTime(1, 23, 59, 59))).isEqualTo("1d") + assertThat(displayFormat.shortTimeSince(backInTime(2, 0, 0, 0))).isEqualTo("2d") + assertThat(displayFormat.shortTimeSince(backInTime(3, 0, 0, 0))).isEqualTo("3d") + assertThat(displayFormat.shortTimeSince(backInTime(4, 0, 0, 0))).isEqualTo("4d") + assertThat(displayFormat.shortTimeSince(backInTime(5, 0, 0, 0))).isEqualTo("5d") + assertThat(displayFormat.shortTimeSince(backInTime(6, 0, 0, 0))).isEqualTo("6d") + assertThat(displayFormat.shortTimeSince(backInTime(6, 23, 59, 59))).isEqualTo("6d") + assertThat(displayFormat.shortTimeSince(backInTime(7, 0, 0, 0))).isEqualTo("1w") + assertThat(displayFormat.shortTimeSince(backInTime(8, 0, 0, 0))).isEqualTo("1w") + assertThat(displayFormat.shortTimeSince(backInTime(9, 0, 0, 0))).isEqualTo("1w") + assertThat(displayFormat.shortTimeSince(backInTime(13, 23, 59, 59))).isEqualTo("1w") + assertThat(displayFormat.shortTimeSince(backInTime(14, 0, 0, 0))).isEqualTo("2w") + assertThat(displayFormat.shortTimeSince(backInTime(21, 0, 0, 0))).isEqualTo("3w") + assertThat(displayFormat.shortTimeSince(backInTime(28, 0, 0, 0))).isEqualTo("4w") + assertThat(displayFormat.shortTimeSince(backInTime(31, 0, 0, 0))).isEqualTo("4w") + assertThat(displayFormat.shortTimeSince(backInTime(32, 0, 0, 0))).isEqualTo("4w") + assertThat(displayFormat.shortTimeSince(backInTime(35, 0, 0, 0))).isEqualTo("5w") + assertThat(displayFormat.shortTimeSince(backInTime(100, 0, 0, 0))).isEqualTo("14w") + assertThat(displayFormat.shortTimeSince(backInTime(200, 0, 0, 0))).isEqualTo("28w") + assertThat(displayFormat.shortTimeSince(backInTime(365, 0, 0, 0))).isEqualTo("52w") + assertThat(displayFormat.shortTimeSince(backInTime(366, 0, 0, 0))).isEqualTo("52w") + assertThat(displayFormat.shortTimeSince(backInTime(367, 0, 0, 0))).isEqualTo("52w") } @Test fun shortTrendTest() { val raw = RawDisplayData() - Assertions.assertEquals(displayFormat.shortTrend(raw), "-- Δ--") + assertThat(displayFormat.shortTrend(raw)).isEqualTo("-- Δ--") raw.singleBg.timeStamp = backInTime(0, 0, 2, 0) - Assertions.assertEquals(displayFormat.shortTrend(raw), "2' Δ--") + assertThat(displayFormat.shortTrend(raw)).isEqualTo("2' Δ--") Mockito.`when`(sp.getBoolean("complication_unicode", true)).thenReturn(true) // shortening - Assertions.assertEquals(displayFormat.shortTrend(rawDataMocker.rawDelta(2, "1.2")), "2' Δ1.2") - Assertions.assertEquals(displayFormat.shortTrend(rawDataMocker.rawDelta(11, "1.2")), "11' 1.2") - Assertions.assertEquals(displayFormat.shortTrend(rawDataMocker.rawDelta(12, "0.7")), "12' Δ.7") - Assertions.assertEquals(displayFormat.shortTrend(rawDataMocker.rawDelta(10, "1.0")), "10' Δ1") - Assertions.assertEquals(displayFormat.shortTrend(rawDataMocker.rawDelta(14, "-5.0")), "14' Δ-5") - Assertions.assertEquals(displayFormat.shortTrend(rawDataMocker.rawDelta(13, "-5.1")), "13' -5") - Assertions.assertEquals(displayFormat.shortTrend(rawDataMocker.rawDelta(15, "0.87")), "15' .87") - Assertions.assertEquals(displayFormat.shortTrend(rawDataMocker.rawDelta(10, "-1.78")), "10' -2") - Assertions.assertEquals(displayFormat.shortTrend(rawDataMocker.rawDelta(3, "2.549")), "3' 2.55") - Assertions.assertEquals(displayFormat.shortTrend(rawDataMocker.rawDelta(1, "-1.563")), "1' -1.6") + assertThat(displayFormat.shortTrend(rawDataMocker.rawDelta(2, "1.2"))).isEqualTo("2' Δ1.2") + assertThat(displayFormat.shortTrend(rawDataMocker.rawDelta(11, "1.2"))).isEqualTo("11' 1.2") + assertThat(displayFormat.shortTrend(rawDataMocker.rawDelta(12, "0.7"))).isEqualTo("12' Δ.7") + assertThat(displayFormat.shortTrend(rawDataMocker.rawDelta(10, "1.0"))).isEqualTo("10' Δ1") + assertThat(displayFormat.shortTrend(rawDataMocker.rawDelta(14, "-5.0"))).isEqualTo("14' Δ-5") + assertThat(displayFormat.shortTrend(rawDataMocker.rawDelta(13, "-5.1"))).isEqualTo("13' -5") + assertThat(displayFormat.shortTrend(rawDataMocker.rawDelta(15, "0.87"))).isEqualTo("15' .87") + assertThat(displayFormat.shortTrend(rawDataMocker.rawDelta(10, "-1.78"))).isEqualTo("10' -2") + assertThat(displayFormat.shortTrend(rawDataMocker.rawDelta(3, "2.549"))).isEqualTo("3' 2.55") + assertThat(displayFormat.shortTrend(rawDataMocker.rawDelta(1, "-1.563"))).isEqualTo("1' -1.6") // preserving separator - Assertions.assertEquals(displayFormat.shortTrend(rawDataMocker.rawDelta(2, "1,2")), "2' Δ1,2") - Assertions.assertEquals(displayFormat.shortTrend(rawDataMocker.rawDelta(15, "0,87")), "15' ,87") - Assertions.assertEquals(displayFormat.shortTrend(rawDataMocker.rawDelta(3, "+2,549")), "3' 2,55") - Assertions.assertEquals(displayFormat.shortTrend(rawDataMocker.rawDelta(1, "-1,563")), "1' -1,6") + assertThat(displayFormat.shortTrend(rawDataMocker.rawDelta(2, "1,2"))).isEqualTo("2' Δ1,2") + assertThat(displayFormat.shortTrend(rawDataMocker.rawDelta(15, "0,87"))).isEqualTo("15' ,87") + assertThat(displayFormat.shortTrend(rawDataMocker.rawDelta(3, "+2,549"))).isEqualTo("3' 2,55") + assertThat(displayFormat.shortTrend(rawDataMocker.rawDelta(1, "-1,563"))).isEqualTo("1' -1,6") // UTF-off mode - without delta symbol Mockito.`when`(sp.getBoolean("complication_unicode", true)).thenReturn(false) - Assertions.assertEquals(displayFormat.shortTrend(rawDataMocker.rawDelta(2, "1.2")), "2' 1.2") - Assertions.assertEquals(displayFormat.shortTrend(rawDataMocker.rawDelta(12, "0.7")), "12' 0.7") - Assertions.assertEquals(displayFormat.shortTrend(rawDataMocker.rawDelta(10, "1.0")), "10' 1.0") - Assertions.assertEquals(displayFormat.shortTrend(rawDataMocker.rawDelta(14, "-5.0")), "14' -5") + assertThat(displayFormat.shortTrend(rawDataMocker.rawDelta(2, "1.2"))).isEqualTo("2' 1.2") + assertThat(displayFormat.shortTrend(rawDataMocker.rawDelta(12, "0.7"))).isEqualTo("12' 0.7") + assertThat(displayFormat.shortTrend(rawDataMocker.rawDelta(10, "1.0"))).isEqualTo("10' 1.0") + assertThat(displayFormat.shortTrend(rawDataMocker.rawDelta(14, "-5.0"))).isEqualTo("14' -5") } @Test fun longGlucoseLine() { - Assertions.assertEquals(displayFormat.longGlucoseLine(rawDataMocker.rawSgv("125", 2, "1.2")), "125→ Δ1.2 (2')") - Assertions.assertEquals(displayFormat.longGlucoseLine(rawDataMocker.rawSgv("97", 11, "5.2")), "97↗ Δ5.2 (11')") - Assertions.assertEquals(displayFormat.longGlucoseLine(rawDataMocker.rawSgv("110", 12, "0.7")), "110→ Δ.7 (12')") - Assertions.assertEquals(displayFormat.longGlucoseLine(rawDataMocker.rawSgv("65", 10, "7.0")), "65↗ Δ7 (10')") - Assertions.assertEquals(displayFormat.longGlucoseLine(rawDataMocker.rawSgv("215", 14, "-5.0")), "215↘ Δ-5 (14')") - Assertions.assertEquals(displayFormat.longGlucoseLine(rawDataMocker.rawSgv("8.3", 13, "-5.1")), "8.3↘ Δ-5.1 (13')") - Assertions.assertEquals(displayFormat.longGlucoseLine(rawDataMocker.rawSgv("6.8", 15, "10.83")), "6.8↑ Δ10.83 (15')") - Assertions.assertEquals(displayFormat.longGlucoseLine(rawDataMocker.rawSgv("13.2", 10, "-11.78")), "13.2↓ Δ-11.78 (10')") - Assertions.assertEquals(displayFormat.longGlucoseLine(rawDataMocker.rawSgv("3.9", 3, "2.549")), "3.9→ Δ2.549 (3')") - Assertions.assertEquals(displayFormat.longGlucoseLine(rawDataMocker.rawSgv("11.1", 1, "-15.563")), "11.1↓ Δ-15.563 (1')") + assertThat(displayFormat.longGlucoseLine(rawDataMocker.rawSgv("125", 2, "1.2"))).isEqualTo("125→ Δ1.2 (2')") + assertThat(displayFormat.longGlucoseLine(rawDataMocker.rawSgv("97", 11, "5.2"))).isEqualTo("97↗ Δ5.2 (11')") + assertThat(displayFormat.longGlucoseLine(rawDataMocker.rawSgv("110", 12, "0.7"))).isEqualTo("110→ Δ.7 (12')") + assertThat(displayFormat.longGlucoseLine(rawDataMocker.rawSgv("65", 10, "7.0"))).isEqualTo("65↗ Δ7 (10')") + assertThat(displayFormat.longGlucoseLine(rawDataMocker.rawSgv("215", 14, "-5.0"))).isEqualTo("215↘ Δ-5 (14')") + assertThat(displayFormat.longGlucoseLine(rawDataMocker.rawSgv("8.3", 13, "-5.1"))).isEqualTo("8.3↘ Δ-5.1 (13')") + assertThat(displayFormat.longGlucoseLine(rawDataMocker.rawSgv("6.8", 15, "10.83"))).isEqualTo("6.8↑ Δ10.83 (15')") + assertThat(displayFormat.longGlucoseLine(rawDataMocker.rawSgv("13.2", 10, "-11.78"))).isEqualTo("13.2↓ Δ-11.78 (10')") + assertThat(displayFormat.longGlucoseLine(rawDataMocker.rawSgv("3.9", 3, "2.549"))).isEqualTo("3.9→ Δ2.549 (3')") + assertThat(displayFormat.longGlucoseLine(rawDataMocker.rawSgv("11.1", 1, "-15.563"))).isEqualTo("11.1↓ Δ-15.563 (1')") } @Test fun longDetailsLineTest() { Mockito.`when`(sp.getBoolean("complication_unicode", true)).thenReturn(true) - Assertions.assertEquals(displayFormat.longDetailsLine(rawDataMocker.rawCobIobBr("0g", "0U", "3.5U/h")), "0g ⁞ 0U ⁞ ⎍ 3.5U/h") - Assertions.assertEquals(displayFormat.longDetailsLine(rawDataMocker.rawCobIobBr("50g", "7.56U", "0%")), "50g ⁞ 7.56U ⁞ ⎍ 0%") - Assertions.assertEquals(displayFormat.longDetailsLine(rawDataMocker.rawCobIobBr("12g", "3.23U", "120%")), "12g ⁞ 3.23U ⁞ 120%") - Assertions.assertEquals(displayFormat.longDetailsLine(rawDataMocker.rawCobIobBr("2(40)g", "-1.5U", "0.55U/h")), "2(40)g ⁞ -2U ⁞ 0.55U/h") - Assertions.assertEquals(displayFormat.longDetailsLine(rawDataMocker.rawCobIobBr("0(24)g", "0.05U", "160%")), "0(24)g ⁞ 0.05U ⁞ 160%") - Assertions.assertEquals(displayFormat.longDetailsLine(rawDataMocker.rawCobIobBr("47g", "13.87U", "220%")), "47g ⁞ 13.87U ⁞ 220%") - Assertions.assertEquals(displayFormat.longDetailsLine(rawDataMocker.rawCobIobBr("13(5)g", "5.90U", "300%")), "13(5)g ⁞ 5.90U ⁞ 300%") - Assertions.assertEquals(displayFormat.longDetailsLine(rawDataMocker.rawCobIobBr("11(50)g", "0U", "70%")), "11(50)g ⁞ 0U ⁞ 70%") - Assertions.assertEquals(displayFormat.longDetailsLine(rawDataMocker.rawCobIobBr("7g", "0.54U", "30%")), "7g ⁞ 0.54U ⁞ ⎍ 30%") - Assertions.assertEquals(displayFormat.longDetailsLine(rawDataMocker.rawCobIobBr("19(38)g", "35.545U", "12.9U/h")), "19g ⁞ 36U ⁞ 12.9U/h") - Assertions.assertEquals(displayFormat.longDetailsLine(rawDataMocker.rawCobIobBr("100(1)g", "12.345U", "6.98647U/h")), "100g 12U 6.98647U/h") + assertThat(displayFormat.longDetailsLine(rawDataMocker.rawCobIobBr("0g", "0U", "3.5U/h"))).isEqualTo("0g ⁞ 0U ⁞ ⎍ 3.5U/h") + assertThat(displayFormat.longDetailsLine(rawDataMocker.rawCobIobBr("50g", "7.56U", "0%"))).isEqualTo("50g ⁞ 7.56U ⁞ ⎍ 0%") + assertThat(displayFormat.longDetailsLine(rawDataMocker.rawCobIobBr("12g", "3.23U", "120%"))).isEqualTo("12g ⁞ 3.23U ⁞ 120%") + assertThat(displayFormat.longDetailsLine(rawDataMocker.rawCobIobBr("2(40)g", "-1.5U", "0.55U/h"))).isEqualTo("2(40)g ⁞ -2U ⁞ 0.55U/h") + assertThat(displayFormat.longDetailsLine(rawDataMocker.rawCobIobBr("0(24)g", "0.05U", "160%"))).isEqualTo("0(24)g ⁞ 0.05U ⁞ 160%") + assertThat(displayFormat.longDetailsLine(rawDataMocker.rawCobIobBr("47g", "13.87U", "220%"))).isEqualTo("47g ⁞ 13.87U ⁞ 220%") + assertThat(displayFormat.longDetailsLine(rawDataMocker.rawCobIobBr("13(5)g", "5.90U", "300%"))).isEqualTo("13(5)g ⁞ 5.90U ⁞ 300%") + assertThat(displayFormat.longDetailsLine(rawDataMocker.rawCobIobBr("11(50)g", "0U", "70%"))).isEqualTo("11(50)g ⁞ 0U ⁞ 70%") + assertThat(displayFormat.longDetailsLine(rawDataMocker.rawCobIobBr("7g", "0.54U", "30%"))).isEqualTo("7g ⁞ 0.54U ⁞ ⎍ 30%") + assertThat(displayFormat.longDetailsLine(rawDataMocker.rawCobIobBr("19(38)g", "35.545U", "12.9U/h"))).isEqualTo("19g ⁞ 36U ⁞ 12.9U/h") + assertThat(displayFormat.longDetailsLine(rawDataMocker.rawCobIobBr("100(1)g", "12.345U", "6.98647U/h"))).isEqualTo("100g 12U 6.98647U/h") Mockito.`when`(sp.getBoolean("complication_unicode", true)).thenReturn(false) - Assertions.assertEquals(displayFormat.longDetailsLine(rawDataMocker.rawCobIobBr("0g", "0U", "3.5U/h")), "0g | 0U | 3.5U/h") - Assertions.assertEquals(displayFormat.longDetailsLine(rawDataMocker.rawCobIobBr("50g", "7.56U", "0%")), "50g | 7.56U | 0%") - Assertions.assertEquals(displayFormat.longDetailsLine(rawDataMocker.rawCobIobBr("12g", "3.23U", "120%")), "12g | 3.23U | 120%") - Assertions.assertEquals(displayFormat.longDetailsLine(rawDataMocker.rawCobIobBr("7g", "0.54U", "30%")), "7g | 0.54U | 30%") - Assertions.assertEquals(displayFormat.longDetailsLine(rawDataMocker.rawCobIobBr("19(38)g", "35.545U", "12.9U/h")), "19g | 36U | 12.9U/h") + assertThat(displayFormat.longDetailsLine(rawDataMocker.rawCobIobBr("0g", "0U", "3.5U/h"))).isEqualTo("0g | 0U | 3.5U/h") + assertThat(displayFormat.longDetailsLine(rawDataMocker.rawCobIobBr("50g", "7.56U", "0%"))).isEqualTo("50g | 7.56U | 0%") + assertThat(displayFormat.longDetailsLine(rawDataMocker.rawCobIobBr("12g", "3.23U", "120%"))).isEqualTo("12g | 3.23U | 120%") + assertThat(displayFormat.longDetailsLine(rawDataMocker.rawCobIobBr("7g", "0.54U", "30%"))).isEqualTo("7g | 0.54U | 30%") + assertThat(displayFormat.longDetailsLine(rawDataMocker.rawCobIobBr("19(38)g", "35.545U", "12.9U/h"))).isEqualTo("19g | 36U | 12.9U/h") } @Test fun detailedIobTest() { - Assertions.assertEquals(displayFormat.detailedIob(rawDataMocker.rawIob("-1.29U", "(0,910|-2,20)")), Pair.create("-1.29U", ",91 -2")) - Assertions.assertEquals(displayFormat.detailedIob(rawDataMocker.rawIob("3.50U", "")), Pair.create("3.50U", "")) - Assertions.assertEquals(displayFormat.detailedIob(rawDataMocker.rawIob("12.5U", "(+1,4|-4.78)")), Pair.create("12.5U", "1,4 -5")) - Assertions.assertEquals(displayFormat.detailedIob(rawDataMocker.rawIob("0.67U", "some junks")), Pair.create(".67U", "")) - Assertions.assertEquals(displayFormat.detailedIob(rawDataMocker.rawIob("-11.0U", "(broken|data)")), Pair.create("-11U", "-- --")) - Assertions.assertEquals(displayFormat.detailedIob(rawDataMocker.rawIob("5.52U", "(0,5439|wrong)")), Pair.create("5.52U", ",54 --")) - Assertions.assertEquals(displayFormat.detailedIob(rawDataMocker.rawIob("-8.1U", "(|-8,1)")), Pair.create("-8.1U", "-- -8")) - Assertions.assertEquals(displayFormat.detailedIob(rawDataMocker.rawIob("-8.1U", "(|-8,1)")), Pair.create("-8.1U", "-- -8")) - Assertions.assertEquals(displayFormat.detailedIob(rawDataMocker.rawIob("7.6U", "(malformed)")), Pair.create("7.6U", "")) - Assertions.assertEquals(displayFormat.detailedIob(rawDataMocker.rawIob("-4.26U", "(6,97|1,3422|too much)")), Pair.create("-4.26U", "7 1,3")) + assertThat(displayFormat.detailedIob(rawDataMocker.rawIob("-1.29U", "(0,910|-2,20)"))).isEqualTo(Pair.create("-1.29U", ",91 -2")) + assertThat(displayFormat.detailedIob(rawDataMocker.rawIob("3.50U", ""))).isEqualTo(Pair.create("3.50U", "")) + assertThat(displayFormat.detailedIob(rawDataMocker.rawIob("12.5U", "(+1,4|-4.78)"))).isEqualTo(Pair.create("12.5U", "1,4 -5")) + assertThat(displayFormat.detailedIob(rawDataMocker.rawIob("0.67U", "some junks"))).isEqualTo(Pair.create(".67U", "")) + assertThat(displayFormat.detailedIob(rawDataMocker.rawIob("-11.0U", "(broken|data)"))).isEqualTo(Pair.create("-11U", "-- --")) + assertThat(displayFormat.detailedIob(rawDataMocker.rawIob("5.52U", "(0,5439|wrong)"))).isEqualTo(Pair.create("5.52U", ",54 --")) + assertThat(displayFormat.detailedIob(rawDataMocker.rawIob("-8.1U", "(|-8,1)"))).isEqualTo(Pair.create("-8.1U", "-- -8")) + assertThat(displayFormat.detailedIob(rawDataMocker.rawIob("-8.1U", "(|-8,1)"))).isEqualTo(Pair.create("-8.1U", "-- -8")) + assertThat(displayFormat.detailedIob(rawDataMocker.rawIob("7.6U", "(malformed)"))).isEqualTo(Pair.create("7.6U", "")) + assertThat(displayFormat.detailedIob(rawDataMocker.rawIob("-4.26U", "(6,97|1,3422|too much)"))).isEqualTo(Pair.create("-4.26U", "7 1,3")) } @Test fun detailedCobTest() { - Assertions.assertEquals(displayFormat.detailedCob(rawDataMocker.rawCob("0g")), Pair.create("0g", "")) - Assertions.assertEquals(displayFormat.detailedCob(rawDataMocker.rawCob("50g")), Pair.create("50g", "")) - Assertions.assertEquals(displayFormat.detailedCob(rawDataMocker.rawCob("2(40)g")), Pair.create("2g", "40g")) - Assertions.assertEquals(displayFormat.detailedCob(rawDataMocker.rawCob("0(24)g")), Pair.create("0g", "24g")) - Assertions.assertEquals(displayFormat.detailedCob(rawDataMocker.rawCob("13(5)g")), Pair.create("13g", "5g")) - Assertions.assertEquals(displayFormat.detailedCob(rawDataMocker.rawCob("11(50)g")), Pair.create("11g", "50g")) - Assertions.assertEquals(displayFormat.detailedCob(rawDataMocker.rawCob("19(38)g")), Pair.create("19g", "38g")) - Assertions.assertEquals(displayFormat.detailedCob(rawDataMocker.rawCob("100(1)g")), Pair.create("100g", "1g")) + assertThat(displayFormat.detailedCob(rawDataMocker.rawCob("0g"))).isEqualTo(Pair.create("0g", "")) + assertThat(displayFormat.detailedCob(rawDataMocker.rawCob("50g"))).isEqualTo(Pair.create("50g", "")) + assertThat(displayFormat.detailedCob(rawDataMocker.rawCob("2(40)g"))).isEqualTo(Pair.create("2g", "40g")) + assertThat(displayFormat.detailedCob(rawDataMocker.rawCob("0(24)g"))).isEqualTo(Pair.create("0g", "24g")) + assertThat(displayFormat.detailedCob(rawDataMocker.rawCob("13(5)g"))).isEqualTo(Pair.create("13g", "5g")) + assertThat(displayFormat.detailedCob(rawDataMocker.rawCob("11(50)g"))).isEqualTo(Pair.create("11g", "50g")) + assertThat(displayFormat.detailedCob(rawDataMocker.rawCob("19(38)g"))).isEqualTo(Pair.create("19g", "38g")) + assertThat(displayFormat.detailedCob(rawDataMocker.rawCob("100(1)g"))).isEqualTo(Pair.create("100g", "1g")) } } From fa49e3e152e9d73d1f00b7a213d392cf8c7ce7f3 Mon Sep 17 00:00:00 2001 From: Ryan Haining Date: Mon, 18 Sep 2023 20:23:29 -0700 Subject: [PATCH 05/11] Rewrites PairTest with matchers Issue #2745 --- .../androidaps/interaction/utils/PairTest.kt | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/wear/src/test/java/info/nightscout/androidaps/interaction/utils/PairTest.kt b/wear/src/test/java/info/nightscout/androidaps/interaction/utils/PairTest.kt index 4f4d782bc6..f678e9f871 100644 --- a/wear/src/test/java/info/nightscout/androidaps/interaction/utils/PairTest.kt +++ b/wear/src/test/java/info/nightscout/androidaps/interaction/utils/PairTest.kt @@ -1,7 +1,6 @@ package info.nightscout.androidaps.interaction.utils import com.google.common.truth.Truth.assertThat -import org.junit.Assert import org.junit.jupiter.api.Test class PairTest { @@ -19,14 +18,14 @@ class PairTest { val no4: Pair<*, *> = Pair.create(12, 345L) // THEN - Assert.assertNotEquals(left, right) - Assert.assertEquals(left, another) - Assert.assertNotEquals(left, samePos1) - Assert.assertNotEquals(left, samePos2) - Assert.assertNotEquals(no1, no2) - Assert.assertNotEquals(no1, no3) - Assert.assertEquals(no1, no4) - Assert.assertNotEquals("aa bbb", left.toString()) + assertThat(right).isNotEqualTo(left) + assertThat(another).isEqualTo(left) + assertThat(samePos1).isNotEqualTo(left) + assertThat(samePos2).isNotEqualTo(left) + assertThat(no2).isNotEqualTo(no1) + assertThat(no3).isNotEqualTo(no1) + assertThat(no4).isEqualTo(no1) + assertThat(left.toString()).isNotEqualTo("aa bbb") } @Test fun pairHashTest() { @@ -46,4 +45,4 @@ class PairTest { assertThat(pair.toString()).contains("the-first") assertThat(pair.toString()).contains("2nd") } -} \ No newline at end of file +} From b75b22e1877356272272ed93fc8687993cb479b8 Mon Sep 17 00:00:00 2001 From: Ryan Haining Date: Mon, 18 Sep 2023 23:15:29 -0700 Subject: [PATCH 06/11] Rewrites LImplTest with matchers Issue #2745 --- .../info/nightscout/shared/impl/logging/LImplTest.kt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app-wear-shared/shared-impl/src/test/kotlin/info/nightscout/shared/impl/logging/LImplTest.kt b/app-wear-shared/shared-impl/src/test/kotlin/info/nightscout/shared/impl/logging/LImplTest.kt index 162ae01d14..b78601dc64 100644 --- a/app-wear-shared/shared-impl/src/test/kotlin/info/nightscout/shared/impl/logging/LImplTest.kt +++ b/app-wear-shared/shared-impl/src/test/kotlin/info/nightscout/shared/impl/logging/LImplTest.kt @@ -1,8 +1,8 @@ package info.nightscout.shared.impl.logging +import com.google.common.truth.Truth.assertThat import info.nightscout.rx.logging.LTag import info.nightscout.shared.sharedPreferences.SP -import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import org.junit.jupiter.api.extension.ExtendWith @@ -26,13 +26,13 @@ class LImplTest { @Test fun findByName() { - Assertions.assertEquals(LTag.APS.name, sut.findByName("APS").name) - Assertions.assertEquals("NONEXISTENT", sut.findByName("APS2").name) + assertThat(sut.findByName("APS").name).isEqualTo(LTag.APS.name) + assertThat(sut.findByName("APS2").name).isEqualTo("NONEXISTENT") } @Test fun getLogElements() { - Assertions.assertTrue(sut.getLogElements().isNotEmpty()) + assertThat(sut.getLogElements()).isNotEmpty() } @Test @@ -40,6 +40,6 @@ class LImplTest { val element = sut.findByName("APS") element.enabled = false sut.resetToDefaults() - Assertions.assertTrue(element.enabled) + assertThat(element.enabled).isTrue() } -} \ No newline at end of file +} From c5c9aea6d3f48bcfc0a2d5597b6487f4b84b5d68 Mon Sep 17 00:00:00 2001 From: Ryan Haining Date: Mon, 18 Sep 2023 23:30:17 -0700 Subject: [PATCH 07/11] Rewrites SPImplementationTest with matchers Issue #2745 --- .../sharedPreferences/SPImplementationTest.kt | 110 +++++++++--------- 1 file changed, 55 insertions(+), 55 deletions(-) diff --git a/app-wear-shared/shared-impl/src/test/kotlin/info/nightscout/shared/impl/sharedPreferences/SPImplementationTest.kt b/app-wear-shared/shared-impl/src/test/kotlin/info/nightscout/shared/impl/sharedPreferences/SPImplementationTest.kt index 4c9af02385..1f588916f5 100644 --- a/app-wear-shared/shared-impl/src/test/kotlin/info/nightscout/shared/impl/sharedPreferences/SPImplementationTest.kt +++ b/app-wear-shared/shared-impl/src/test/kotlin/info/nightscout/shared/impl/sharedPreferences/SPImplementationTest.kt @@ -1,8 +1,8 @@ package info.nightscout.shared.impl.sharedPreferences +import com.google.common.truth.Truth.assertThat import android.content.Context import info.nightscout.shared.impl.SharedPreferencesMock -import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import org.junit.jupiter.api.extension.ExtendWith @@ -34,153 +34,153 @@ class SPImplementationTest { @Test fun edit() { sut.edit { putBoolean("test", true) } - Assertions.assertTrue(sut.getBoolean("test", false)) + assertThat(sut.getBoolean("test", false)).isTrue() sut.edit { remove("test") } - Assertions.assertFalse(sut.contains("test")) + assertThat(sut.contains("test")).isFalse() sut.edit { putBoolean(someResource, true) } - Assertions.assertTrue(sut.getBoolean(someResource, false)) + assertThat(sut.getBoolean(someResource, false)).isTrue() sut.edit { remove(someResource) } - Assertions.assertFalse(sut.contains(someResource)) + assertThat(sut.contains(someResource)).isFalse() sut.edit(commit = true) { putDouble("test", 1.0) } - Assertions.assertEquals(1.0, sut.getDouble("test", 2.0)) + assertThat(sut.getDouble("test", 2.0)).isEqualTo(1.0) sut.edit { putDouble(someResource, 1.0) } - Assertions.assertEquals(1.0, sut.getDouble(someResource, 2.0)) + assertThat(sut.getDouble(someResource, 2.0)).isEqualTo(1.0) sut.edit { clear() } - Assertions.assertFalse(sut.contains(someResource2)) + assertThat(sut.contains(someResource2)).isFalse() sut.edit { putInt("test", 1) } - Assertions.assertEquals(1, sut.getInt("test", 2)) + assertThat(sut.getInt("test", 2)).isEqualTo(1) sut.edit { putInt(someResource, 1) } - Assertions.assertEquals(1, sut.getInt(someResource, 2)) + assertThat(sut.getInt(someResource, 2)).isEqualTo(1) sut.edit { clear() } sut.edit { putLong("test", 1L) } - Assertions.assertEquals(1L, sut.getLong("test", 2L)) + assertThat(sut.getLong("test", 2L)).isEqualTo(1L) sut.edit { putLong(someResource, 1) } - Assertions.assertEquals(1L, sut.getLong(someResource, 2L)) + assertThat(sut.getLong(someResource, 2L)).isEqualTo(1L) sut.edit { clear() } sut.edit { putString("test", "string") } - Assertions.assertEquals("string", sut.getString("test", "a")) + assertThat(sut.getString("test", "a")).isEqualTo("string") sut.edit { putString(someResource, "string") } - Assertions.assertEquals("string", sut.getString(someResource, "a")) + assertThat(sut.getString(someResource, "a")).isEqualTo("string") sut.edit { clear() } } @Test fun clear() { sut.putBoolean("test", true) - Assertions.assertTrue(sut.getAll().containsKey("test")) + assertThat(sut.getAll()).containsKey("test") sut.clear() - Assertions.assertFalse(sut.getAll().containsKey("test")) + assertThat(sut.getAll()).doesNotContainKey("test") } @Test fun contains() { sut.putBoolean("test", true) - Assertions.assertTrue(sut.contains("test")) + assertThat(sut.contains("test")).isTrue() sut.putBoolean(someResource, true) - Assertions.assertTrue(sut.contains(someResource)) + assertThat(sut.contains(someResource)).isTrue() } @Test fun remove() { sut.putBoolean("test", true) sut.remove("test") - Assertions.assertFalse(sut.contains("test")) + assertThat(sut.contains("test")).isFalse() sut.putBoolean(someResource, true) sut.remove(someResource) - Assertions.assertFalse(sut.contains(someResource)) + assertThat(sut.contains(someResource)).isFalse() } @Test fun getString() { sut.putString("test", "string") - Assertions.assertTrue(sut.getString("test", "") == "string") - Assertions.assertTrue(sut.getString("test1", "") == "") + assertThat(sut.getString("test", "")).isEqualTo("string") + assertThat(sut.getString("test1", "")).isEmpty() sut.putString(someResource, "string") - Assertions.assertTrue(sut.getString(someResource, "") == "string") - Assertions.assertTrue(sut.getString(someResource2, "") == "") + assertThat(sut.getString(someResource, "")).isEqualTo("string") + assertThat(sut.getString(someResource2, "")).isEmpty() } @Test fun getStringOrNull() { sut.putString("test", "string") - Assertions.assertTrue(sut.getStringOrNull("test", "") == "string") - Assertions.assertNull(sut.getStringOrNull("test1", null)) + assertThat(sut.getStringOrNull("test", "")).isEqualTo("string") + assertThat(sut.getStringOrNull("test1", null)).isNull() sut.putString(someResource, "string") - Assertions.assertTrue(sut.getStringOrNull(someResource, null) == "string") - Assertions.assertNull(sut.getStringOrNull(someResource2, null)) + assertThat(sut.getStringOrNull(someResource, null)).isEqualTo("string") + assertThat(sut.getStringOrNull(someResource2, null)).isNull() } @Test fun getBoolean() { sut.putBoolean("test", true) - Assertions.assertTrue(sut.getBoolean("test", false)) + assertThat(sut.getBoolean("test", false)).isTrue() sut.putBoolean(someResource, true) - Assertions.assertTrue(sut.getBoolean(someResource, false)) + assertThat(sut.getBoolean(someResource, false)).isTrue() sut.putString("string_key", "a") - Assertions.assertTrue(sut.getBoolean("string_key", true)) + assertThat(sut.getBoolean("string_key", true)).isTrue() sut.putString(someResource, "a") - Assertions.assertTrue(sut.getBoolean(someResource, true)) + assertThat(sut.getBoolean(someResource, true)).isTrue() } @Test fun getDouble() { sut.putDouble("test", 1.0) - Assertions.assertEquals(1.0, sut.getDouble("test", 2.0)) - Assertions.assertEquals(2.0, sut.getDouble("test1", 2.0)) + assertThat(sut.getDouble("test", 2.0)).isEqualTo(1.0) + assertThat(sut.getDouble("test1", 2.0)).isEqualTo(2.0) sut.putDouble(someResource, 1.0) - Assertions.assertEquals(1.0, sut.getDouble(someResource, 2.0)) - Assertions.assertEquals(2.0, sut.getDouble(someResource2, 2.0)) + assertThat(sut.getDouble(someResource, 2.0)).isEqualTo(1.0) + assertThat(sut.getDouble(someResource2, 2.0)).isEqualTo(2.0) sut.putString("string_key", "a") - Assertions.assertEquals(1.0, sut.getDouble("string_key", 1.0)) + assertThat(sut.getDouble("string_key", 1.0)).isEqualTo(1.0) sut.putString(someResource, "a") - Assertions.assertEquals(1.0, sut.getDouble(someResource, 1.0)) + assertThat(sut.getDouble(someResource, 1.0)).isEqualTo(1.0) } @Test fun getInt() { sut.putInt("test", 1) - Assertions.assertEquals(1, sut.getInt("test", 2)) - Assertions.assertEquals(2, sut.getInt("test1", 2)) + assertThat(sut.getInt("test", 2)).isEqualTo(1) + assertThat(sut.getInt("test1", 2)).isEqualTo(2) sut.putInt(someResource, 1) - Assertions.assertEquals(1, sut.getInt(someResource, 2)) - Assertions.assertEquals(2, sut.getInt(someResource2, 2)) + assertThat(sut.getInt(someResource, 2)).isEqualTo(1) + assertThat(sut.getInt(someResource2, 2)).isEqualTo(2) sut.putString("string_key", "a") - Assertions.assertEquals(1, sut.getInt("string_key", 1)) + assertThat(sut.getInt("string_key", 1)).isEqualTo(1) sut.putString(someResource, "a") - Assertions.assertEquals(1, sut.getInt(someResource, 1)) + assertThat(sut.getInt(someResource, 1)).isEqualTo(1) } @Test fun getLong() { sut.putLong("test", 1L) - Assertions.assertEquals(1L, sut.getLong("test", 2L)) - Assertions.assertEquals(2L, sut.getLong("test1", 2L)) + assertThat(sut.getLong("test", 2L)).isEqualTo(1L) + assertThat(sut.getLong("test1", 2L)).isEqualTo(2L) sut.putLong(someResource, 1L) - Assertions.assertEquals(1L, sut.getLong(someResource, 2L)) - Assertions.assertEquals(2L, sut.getLong(someResource2, 2L)) + assertThat(sut.getLong(someResource, 2L)).isEqualTo(1L) + assertThat(sut.getLong(someResource2, 2L)).isEqualTo(2L) sut.putString("string_key", "a") - Assertions.assertEquals(1L, sut.getLong("string_key", 1L)) + assertThat(sut.getLong("string_key", 1L)).isEqualTo(1L) sut.putString(someResource, "a") - Assertions.assertEquals(1L, sut.getLong(someResource, 1L)) + assertThat(sut.getLong(someResource, 1L)).isEqualTo(1L) } @Test fun incLong() { sut.incLong(someResource) - Assertions.assertEquals(1L, sut.getLong(someResource, 3L)) + assertThat(sut.getLong(someResource, 3L)).isEqualTo(1L) sut.incLong(someResource) - Assertions.assertEquals(2L, sut.getLong(someResource, 3L)) + assertThat(sut.getLong(someResource, 3L)).isEqualTo(2L) } @Test fun incInt() { sut.incInt(someResource) - Assertions.assertEquals(1, sut.getInt(someResource, 3)) + assertThat(sut.getInt(someResource, 3)).isEqualTo(1) sut.incInt(someResource) - Assertions.assertEquals(2, sut.getInt(someResource, 3)) + assertThat(sut.getInt(someResource, 3)).isEqualTo(2) } -} \ No newline at end of file +} From 8664bc71706da592827dd2f70f9b0d1ca992be3c Mon Sep 17 00:00:00 2001 From: Ryan Haining Date: Mon, 18 Sep 2023 23:50:16 -0700 Subject: [PATCH 08/11] Rewrites EventDataTest with matchers Issue #2745 --- .../nightscout/rx/weardata/EventDataTest.kt | 172 +++++++++--------- 1 file changed, 86 insertions(+), 86 deletions(-) diff --git a/app-wear-shared/shared/src/test/java/info/nightscout/rx/weardata/EventDataTest.kt b/app-wear-shared/shared/src/test/java/info/nightscout/rx/weardata/EventDataTest.kt index 0ff0c07f33..25198a8e2c 100644 --- a/app-wear-shared/shared/src/test/java/info/nightscout/rx/weardata/EventDataTest.kt +++ b/app-wear-shared/shared/src/test/java/info/nightscout/rx/weardata/EventDataTest.kt @@ -1,7 +1,7 @@ package info.nightscout.rx.weardata +import com.google.common.truth.Truth.assertThat import kotlinx.serialization.ExperimentalSerializationApi -import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import org.junit.jupiter.api.extension.ExtendWith @@ -21,132 +21,132 @@ class EventDataTest { @Test fun serializationTest() { EventData.ActionPong(1, 2).let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } EventData.WearException(1, byteArrayOf(0xAA.toByte()), "board", "fingerprint", "sdk", "model", "manufacturer", "product").let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } EventData.Error(1).let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } EventData.CancelBolus(1).let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } EventData.ActionResendData("data").let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } EventData.ActionPumpStatus(1).let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } EventData.ActionLoopStatus(1).let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } EventData.ActionTddStatus(1).let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } EventData.ActionECarbsPreCheck(1, 2, 3).let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } EventData.ActionBolusPreCheck(1.0, 2).let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } EventData.ActionFillPreCheck(1.0).let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } EventData.ActionFillPresetPreCheck(1).let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } EventData.ActionProfileSwitchSendInitialData(1).let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } EventData.ActionProfileSwitchPreCheck(1, 2).let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } EventData.ActionWizardPreCheck(1, 2).let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } EventData.ActionQuickWizardPreCheck("guid").let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } EventData.ActionHeartRate(1, 2, 3.0, "device").let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } EventData.ActionTempTargetPreCheck(EventData.ActionTempTargetPreCheck.TempTargetCommand.CANCEL).let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } EventData.ActionWizardConfirmed(1).let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } EventData.ActionTempTargetConfirmed(false).let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } EventData.ActionBolusConfirmed(1.0, 2).let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } EventData.ActionECarbsConfirmed(1, 2, 3).let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } EventData.ActionFillConfirmed(1.0).let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } EventData.ActionProfileSwitchConfirmed(1, 2).let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } EventData.OpenLoopRequestConfirmed(1).let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } EventData.CancelNotification(1).let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } // EventData.ActionGetCustomWatchface(EventData.ActionSetCustomWatchface(CwfData())).let { - // Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - // Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + // assertThat( EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + // assertThat( EventData.deserialize(it.serialize())).isEqualTo(it) // } EventData.ActionPing(1).let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } EventData.OpenSettings(1).let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } EventData.BolusProgress(1, "status").let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } EventData.SingleBg(1, sgv = 2.0, high = 3.0, low = 4.0).let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } EventData.GraphData(arrayListOf(EventData.SingleBg(1, sgv = 2.0, high = 3.0, low = 4.0))).let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } EventData.TreatmentData( arrayListOf(EventData.TreatmentData.TempBasal(1, 2.0, 3, 4.0, 5.0)), @@ -154,44 +154,44 @@ class EventDataTest { arrayListOf(EventData.TreatmentData.Treatment(1, 2.0, 3.0, true, isValid = true)), arrayListOf(EventData.SingleBg(1, sgv = 2.0, high = 3.0, low = 4.0)) ).let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } EventData.Preferences(1, wearControl = true, true, 2, 3, 4.0, 5.0, 6.0, 7, 8).let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } EventData.QuickWizard(arrayListOf(EventData.QuickWizard.QuickWizardEntry("1", "2", 3, 4, 5))).let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } // EventData.ActionSetCustomWatchface().let { - // Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - // Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + // assertThat( EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + // assertThat( EventData.deserialize(it.serialize())).isEqualTo(it) // } EventData.ActionrequestCustomWatchface(true).let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } EventData.ActionrequestSetDefaultWatchface(1).let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } EventData.ActionProfileSwitchOpenActivity(1, 2).let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } EventData.OpenLoopRequest("1", "2", null).let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } EventData.ConfirmAction("1", "2", null).let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } EventData.SnoozeAlert(1).let { - Assertions.assertEquals(it, EventData.deserializeByte(it.serializeByte())) - Assertions.assertEquals(it, EventData.deserialize(it.serialize())) + assertThat(EventData.deserializeByte(it.serializeByte())).isEqualTo(it) + assertThat(EventData.deserialize(it.serialize())).isEqualTo(it) } } -} \ No newline at end of file +} From 3774ba38b4c293cbc5669ad4138ce6a0dafb3cda Mon Sep 17 00:00:00 2001 From: Ryan Haining Date: Tue, 19 Sep 2023 00:06:53 -0700 Subject: [PATCH 09/11] Rewrites SafeParseTest with matchers Issue #2745 --- .../info/nightscout/shared/SafeParseTest.kt | 116 +++++++++--------- 1 file changed, 58 insertions(+), 58 deletions(-) diff --git a/app-wear-shared/shared/src/test/java/info/nightscout/shared/SafeParseTest.kt b/app-wear-shared/shared/src/test/java/info/nightscout/shared/SafeParseTest.kt index 791347e426..495ea437d4 100644 --- a/app-wear-shared/shared/src/test/java/info/nightscout/shared/SafeParseTest.kt +++ b/app-wear-shared/shared/src/test/java/info/nightscout/shared/SafeParseTest.kt @@ -1,6 +1,6 @@ package info.nightscout.shared -import org.junit.jupiter.api.Assertions +import com.google.common.truth.Truth.assertThat import org.junit.jupiter.api.Test @Suppress("SpellCheckingInspection") @@ -8,105 +8,105 @@ class SafeParseTest { @Test fun stringToDoubleTest() { // correct values - Assertions.assertEquals(0.1234, SafeParse.stringToDouble("0.1234"), 0.001) - Assertions.assertEquals(0.1234, SafeParse.stringToDouble("0,1234"), 0.001) - Assertions.assertEquals(0.5436564812, SafeParse.stringToDouble(".5436564812"), 0.001) - Assertions.assertEquals(0.5436564812, SafeParse.stringToDouble(",5436564812"), 0.001) - Assertions.assertEquals(1000500100900.0, SafeParse.stringToDouble("1000500100900"), 0.001) - Assertions.assertEquals(42.0, SafeParse.stringToDouble("42"), 0.001) + assertThat(SafeParse.stringToDouble("0.1234")).isWithin(0.001).of(0.1234) + assertThat(SafeParse.stringToDouble("0,1234")).isWithin(0.001).of(0.1234) + assertThat(SafeParse.stringToDouble(".5436564812")).isWithin(0.001).of(0.5436564812) + assertThat(SafeParse.stringToDouble(",5436564812")).isWithin(0.001).of(0.5436564812) + assertThat(SafeParse.stringToDouble("1000500100900")).isWithin(0.001).of(1000500100900.0) + assertThat(SafeParse.stringToDouble("42")).isWithin(0.001).of(42.0) // units or other extra values are not permitted - Assertions.assertEquals(0.0, SafeParse.stringToDouble("12 U/h"), 0.001) + assertThat(SafeParse.stringToDouble("12 U/h")).isWithin(0.001).of(0.0) // strings are not parsable - Assertions.assertEquals(0.0, SafeParse.stringToDouble("ala ma kota"), 0.001) + assertThat(SafeParse.stringToDouble("ala ma kota")).isWithin(0.001).of(0.0) // separator errors - Assertions.assertEquals(0.0, SafeParse.stringToDouble("0.1234.5678"), 0.001) - Assertions.assertEquals(0.0, SafeParse.stringToDouble("0,1234,5678"), 0.001) + assertThat(SafeParse.stringToDouble("0.1234.5678")).isWithin(0.001).of(0.0) + assertThat(SafeParse.stringToDouble("0,1234,5678")).isWithin(0.001).of(0.0) // various emptiness - Assertions.assertEquals(0.0, SafeParse.stringToDouble(""), 0.001) - Assertions.assertEquals(0.0, SafeParse.stringToDouble(" "), 0.001) - Assertions.assertEquals(0.0, SafeParse.stringToDouble("\n\r"), 0.001) + assertThat(SafeParse.stringToDouble("")).isWithin(0.001).of(0.0) + assertThat(SafeParse.stringToDouble(" ")).isWithin(0.001).of(0.0) + assertThat(SafeParse.stringToDouble("\n\r")).isWithin(0.001).of(0.0) } @Test fun stringToIntTest() { // correct values - Assertions.assertEquals(1052934, SafeParse.stringToInt("1052934")) - Assertions.assertEquals(-42, SafeParse.stringToInt("-42")) - Assertions.assertEquals(2147483647, SafeParse.stringToInt("2147483647")) - Assertions.assertEquals(-2147483648, SafeParse.stringToInt("-2147483648")) + assertThat(SafeParse.stringToInt("1052934")).isEqualTo(1052934) + assertThat(SafeParse.stringToInt("-42")).isEqualTo(-42) + assertThat(SafeParse.stringToInt("2147483647")).isEqualTo(2147483647) + assertThat(SafeParse.stringToInt("-2147483648")).isEqualTo(-2147483648) // outside Integer range - Assertions.assertEquals(0, SafeParse.stringToInt("2147483648")) - Assertions.assertEquals(0, SafeParse.stringToInt("-2147483649")) + assertThat(SafeParse.stringToInt("2147483648")).isEqualTo(0) + assertThat(SafeParse.stringToInt("-2147483649")).isEqualTo(0) // units or other extra values are not permitted - Assertions.assertEquals(0, SafeParse.stringToInt("12 U/h")) - Assertions.assertEquals(0, SafeParse.stringToInt("0.1234")) - Assertions.assertEquals(0, SafeParse.stringToInt("0,1234")) - Assertions.assertEquals(0, SafeParse.stringToInt(".5436564812")) - Assertions.assertEquals(0, SafeParse.stringToInt(",5436564812")) - Assertions.assertEquals(0, SafeParse.stringToInt("42.1234")) - Assertions.assertEquals(0, SafeParse.stringToInt("42,1234")) - Assertions.assertEquals(0, SafeParse.stringToInt("3212.5436564812")) - Assertions.assertEquals(0, SafeParse.stringToInt("3212,5436564812")) - Assertions.assertEquals(0, SafeParse.stringToInt("1000500100900")) + assertThat(SafeParse.stringToInt("12 U/h")).isEqualTo(0) + assertThat(SafeParse.stringToInt("0.1234")).isEqualTo(0) + assertThat(SafeParse.stringToInt("0,1234")).isEqualTo(0) + assertThat(SafeParse.stringToInt(".5436564812")).isEqualTo(0) + assertThat(SafeParse.stringToInt(",5436564812")).isEqualTo(0) + assertThat(SafeParse.stringToInt("42.1234")).isEqualTo(0) + assertThat(SafeParse.stringToInt("42,1234")).isEqualTo(0) + assertThat(SafeParse.stringToInt("3212.5436564812")).isEqualTo(0) + assertThat(SafeParse.stringToInt("3212,5436564812")).isEqualTo(0) + assertThat(SafeParse.stringToInt("1000500100900")).isEqualTo(0) // strings are not parsable - Assertions.assertEquals(0, SafeParse.stringToInt("ala ma kota")) + assertThat(SafeParse.stringToInt("ala ma kota")).isEqualTo(0) // various emptiness - Assertions.assertEquals(0, SafeParse.stringToInt("")) - Assertions.assertEquals(0, SafeParse.stringToInt(" ")) - Assertions.assertEquals(0, SafeParse.stringToInt("\n\r")) + assertThat(SafeParse.stringToInt("")).isEqualTo(0) + assertThat(SafeParse.stringToInt(" ")).isEqualTo(0) + assertThat(SafeParse.stringToInt("\n\r")).isEqualTo(0) } @Test fun stringToLongTest() { // correct values - Assertions.assertEquals(1052934L, SafeParse.stringToLong("1052934")) - Assertions.assertEquals(-42L, SafeParse.stringToLong("-42")) - Assertions.assertEquals(2147483647L, SafeParse.stringToLong("2147483647")) - Assertions.assertEquals(-2147483648L, SafeParse.stringToLong("-2147483648")) - Assertions.assertEquals(1000500100900L, SafeParse.stringToLong("1000500100900")) + assertThat(SafeParse.stringToLong("1052934")).isEqualTo(1052934L) + assertThat(SafeParse.stringToLong("-42")).isEqualTo(-42L) + assertThat(SafeParse.stringToLong("2147483647")).isEqualTo(2147483647L) + assertThat(SafeParse.stringToLong("-2147483648")).isEqualTo(-2147483648L) + assertThat(SafeParse.stringToLong("1000500100900")).isEqualTo(1000500100900L) // outside Integer range - Assertions.assertEquals(2147483648L, SafeParse.stringToLong("2147483648")) - Assertions.assertEquals(-2147483649L, SafeParse.stringToLong("-2147483649")) + assertThat(SafeParse.stringToLong("2147483648")).isEqualTo(2147483648L) + assertThat(SafeParse.stringToLong("-2147483649")).isEqualTo(-2147483649L) // units or other extra values are not permitted - Assertions.assertEquals(0L, SafeParse.stringToLong("12 U/h")) - Assertions.assertEquals(0L, SafeParse.stringToLong("0.1234")) - Assertions.assertEquals(0L, SafeParse.stringToLong("0,1234")) - Assertions.assertEquals(0L, SafeParse.stringToLong(".5436564812")) - Assertions.assertEquals(0L, SafeParse.stringToLong(",5436564812")) - Assertions.assertEquals(0L, SafeParse.stringToLong("42.1234")) - Assertions.assertEquals(0L, SafeParse.stringToLong("42,1234")) - Assertions.assertEquals(0L, SafeParse.stringToLong("3212.5436564812")) - Assertions.assertEquals(0L, SafeParse.stringToLong("3212,5436564812")) + assertThat(SafeParse.stringToLong("12 U/h")).isEqualTo(0L) + assertThat(SafeParse.stringToLong("0.1234")).isEqualTo(0L) + assertThat(SafeParse.stringToLong("0,1234")).isEqualTo(0L) + assertThat(SafeParse.stringToLong(".5436564812")).isEqualTo(0L) + assertThat(SafeParse.stringToLong(",5436564812")).isEqualTo(0L) + assertThat(SafeParse.stringToLong("42.1234")).isEqualTo(0L) + assertThat(SafeParse.stringToLong("42,1234")).isEqualTo(0L) + assertThat(SafeParse.stringToLong("3212.5436564812")).isEqualTo(0L) + assertThat(SafeParse.stringToLong("3212,5436564812")).isEqualTo(0L) // strings are not parsable - Assertions.assertEquals(0L, SafeParse.stringToLong("ala ma kota")) + assertThat(SafeParse.stringToLong("ala ma kota")).isEqualTo(0L) // various emptiness - Assertions.assertEquals(0L, SafeParse.stringToLong("")) - Assertions.assertEquals(0L, SafeParse.stringToLong(" ")) - Assertions.assertEquals(0L, SafeParse.stringToLong("\n\r")) + assertThat(SafeParse.stringToLong("")).isEqualTo(0L) + assertThat(SafeParse.stringToLong(" ")).isEqualTo(0L) + assertThat(SafeParse.stringToLong("\n\r")).isEqualTo(0L) } @Test fun stringToDoubleNullTest() { - Assertions.assertEquals(0.0, SafeParse.stringToDouble(null), 0.001) + assertThat(SafeParse.stringToDouble(null)).isWithin(0.001).of(0.0) } @Test fun stringToIntNullTest() { - Assertions.assertEquals(0, SafeParse.stringToInt(null)) + assertThat(SafeParse.stringToInt(null)).isEqualTo(0) } @Test fun stringToLongNullTest() { - Assertions.assertEquals(0L, SafeParse.stringToLong(null)) + assertThat(SafeParse.stringToLong(null)).isEqualTo(0L) } -} \ No newline at end of file +} From 1e3a4eaf2404f1ff269a42853b391b6129ef651a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Sep 2023 08:28:19 +0000 Subject: [PATCH 10/11] chore(deps): bump org.jlleitschuh.gradle.ktlint from 11.5.1 to 11.6.0 Bumps org.jlleitschuh.gradle.ktlint from 11.5.1 to 11.6.0. --- updated-dependencies: - dependency-name: org.jlleitschuh.gradle.ktlint dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index ec7fcd3ac4..9a88953867 100644 --- a/build.gradle +++ b/build.gradle @@ -79,7 +79,7 @@ buildscript { plugins { // Test Gradle build, keep disabled under normal circumstances // id "com.osacky.doctor" version "0.8.1" - id "org.jlleitschuh.gradle.ktlint" version "11.5.1" + id "org.jlleitschuh.gradle.ktlint" version "11.6.0" // Aggregates and/or logs Jacoco test coverage to the Gradle build log //id 'org.barfuin.gradle.jacocolog' version '3.1.0' id 'org.jetbrains.kotlin.android' version "$kotlin_version" apply false From 77922ca76ed5bf8e944f5d76ea940c9901c0f4ac Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Tue, 19 Sep 2023 14:57:11 +0200 Subject: [PATCH 11/11] New Crowdin updates (#2795) * New translations strings.xml (Lithuanian) * New translations strings.xml (Lithuanian) * New translations strings.xml (Polish) * New translations strings.xml (Polish) * New translations strings.xml (Lithuanian) * New translations strings.xml (Polish) * New translations strings.xml (Romanian) * New translations strings.xml (French) * New translations strings.xml (Spanish) * New translations strings.xml (Afrikaans) * New translations strings.xml (Bulgarian) * New translations strings.xml (Catalan) * New translations strings.xml (Czech) * New translations strings.xml (Danish) * New translations strings.xml (German) * New translations strings.xml (Greek) * New translations strings.xml (Hebrew) * New translations strings.xml (Hungarian) * New translations strings.xml (Italian) * 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 (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 (Romanian) * New translations strings.xml (French) * New translations strings.xml (Spanish) * New translations strings.xml (Afrikaans) * New translations strings.xml (Bulgarian) * New translations strings.xml (Catalan) * New translations strings.xml (Czech) * New translations strings.xml (Danish) * New translations strings.xml (German) * New translations strings.xml (Greek) * New translations strings.xml (Hebrew) * New translations strings.xml (Hungarian) * New translations strings.xml (Italian) * 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 (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 objectives.xml (Korean) * New translations strings.xml (Ukrainian) * New translations strings.xml (Ukrainian) * New translations strings.xml (Croatian) * New translations strings.xml (Serbian (Latin)) * New translations strings.xml (Croatian) * New translations strings.xml (Serbian (Latin)) * Update source file strings.xml * Update source file strings.xml * Update source file strings.xml * New translations strings.xml (Romanian) * New translations strings.xml (French) * New translations strings.xml (Spanish) * New translations strings.xml (Afrikaans) * New translations strings.xml (Bulgarian) * New translations strings.xml (Catalan) * New translations strings.xml (Czech) * New translations strings.xml (Danish) * New translations strings.xml (German) * New translations strings.xml (Greek) * New translations strings.xml (Hebrew) * New translations strings.xml (Hungarian) * New translations strings.xml (Italian) * 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 (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 (Slovak) * New translations strings.xml (Slovak) * New translations strings.xml (Slovak) * New translations strings.xml (Ukrainian) * New translations strings.xml (Croatian) * New translations strings.xml (Serbian (Latin)) * New translations strings.xml (Czech) * New translations strings.xml (Czech) * New translations strings.xml (Portuguese) * New translations strings.xml (Danish) * New translations strings.xml (Spanish) * New translations strings.xml (Danish) * New translations strings.xml (Danish) * New translations strings.xml (Danish) * New translations strings.xml (Spanish) * New translations strings.xml (Danish) * New translations strings.xml (Danish) * New translations strings.xml (Spanish) * New translations strings.xml (Danish) * New translations strings.xml (Danish) * New translations strings.xml (Danish) * New translations protection.xml (Danish) * New translations strings.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 (Spanish) * New translations oh_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 (Danish) * New translations strings.xml (Portuguese) * New translations strings.xml (Danish) * New translations strings.xml (Portuguese) * New translations strings.xml (Danish) * New translations strings_alarm.xml (Danish) * New translations strings.xml (Danish) * New translations arrays.xml (Danish) * New translations strings.xml (Polish) * New translations strings.xml (Polish) * New translations strings.xml (Turkish) * New translations strings.xml (Turkish) --- .../src/main/res/values-da-rDK/strings.xml | 2 + .../src/main/res/values-lt-rLT/strings.xml | 2 + .../src/main/res/values-pl-rPL/strings.xml | 2 + .../src/main/res/values-af-rZA/strings.xml | 1 - .../src/main/res/values-bg-rBG/strings.xml | 11 -- .../src/main/res/values-ca-rES/strings.xml | 11 -- .../src/main/res/values-cs-rCZ/strings.xml | 11 -- .../src/main/res/values-da-rDK/strings.xml | 11 -- .../src/main/res/values-de-rDE/strings.xml | 11 -- .../src/main/res/values-el-rGR/strings.xml | 11 -- .../src/main/res/values-es-rES/strings.xml | 11 -- .../src/main/res/values-fr-rFR/strings.xml | 11 -- .../src/main/res/values-hr-rHR/strings.xml | 1 - .../src/main/res/values-hu-rHU/strings.xml | 5 - .../src/main/res/values-it-rIT/strings.xml | 11 -- .../src/main/res/values-iw-rIL/strings.xml | 11 -- .../src/main/res/values-ko-rKR/strings.xml | 11 -- .../src/main/res/values-lt-rLT/strings.xml | 11 -- .../src/main/res/values-nl-rNL/strings.xml | 11 -- .../src/main/res/values-no-rNO/strings.xml | 11 -- .../src/main/res/values-pl-rPL/strings.xml | 11 -- .../src/main/res/values-pt-rBR/strings.xml | 11 -- .../src/main/res/values-pt-rPT/strings.xml | 11 -- .../src/main/res/values-ro-rRO/strings.xml | 11 -- .../src/main/res/values-ru-rRU/strings.xml | 11 -- .../src/main/res/values-sk-rSK/strings.xml | 11 -- .../src/main/res/values-sr-rCS/strings.xml | 1 - .../src/main/res/values-sv-rSE/strings.xml | 11 -- .../src/main/res/values-tr-rTR/strings.xml | 11 -- .../src/main/res/values-uk-rUA/strings.xml | 1 - .../src/main/res/values-zh-rCN/strings.xml | 11 -- .../src/main/res/values-da-rDK/protection.xml | 9 ++ .../ui/src/main/res/values-da-rDK/strings.xml | 45 +++++++ .../ui/src/main/res/values-es-rES/strings.xml | 16 +++ .../ui/src/main/res/values-lt-rLT/strings.xml | 16 +++ .../ui/src/main/res/values-pl-rPL/strings.xml | 16 +++ .../ui/src/main/res/values-pt-rPT/strings.xml | 2 + .../ui/src/main/res/values-sk-rSK/strings.xml | 16 +++ .../src/main/res/values-da-rDK/strings.xml | 1 + .../src/main/res/values-da-rDK/strings.xml | 12 ++ .../src/main/res/values-da-rDK/strings.xml | 4 + .../src/main/res/values-af-rZA/strings.xml | 1 + .../src/main/res/values-bg-rBG/strings.xml | 1 + .../src/main/res/values-ca-rES/strings.xml | 1 + .../src/main/res/values-cs-rCZ/strings.xml | 11 ++ .../src/main/res/values-da-rDK/strings.xml | 22 ++++ .../src/main/res/values-de-rDE/strings.xml | 1 + .../src/main/res/values-el-rGR/strings.xml | 1 + .../src/main/res/values-es-rES/strings.xml | 11 ++ .../src/main/res/values-fr-rFR/strings.xml | 1 + .../src/main/res/values-hr-rHR/strings.xml | 1 + .../src/main/res/values-hu-rHU/strings.xml | 1 + .../src/main/res/values-it-rIT/strings.xml | 1 + .../src/main/res/values-iw-rIL/strings.xml | 1 + .../src/main/res/values-ko-rKR/strings.xml | 1 + .../src/main/res/values-lt-rLT/strings.xml | 1 + .../src/main/res/values-nl-rNL/strings.xml | 1 + .../src/main/res/values-no-rNO/strings.xml | 1 + .../src/main/res/values-pl-rPL/strings.xml | 11 ++ .../src/main/res/values-pt-rBR/strings.xml | 1 + .../src/main/res/values-pt-rPT/strings.xml | 11 ++ .../src/main/res/values-ro-rRO/strings.xml | 1 + .../src/main/res/values-ru-rRU/strings.xml | 1 + .../src/main/res/values-sk-rSK/strings.xml | 11 ++ .../src/main/res/values-sr-rCS/strings.xml | 1 + .../src/main/res/values-sv-rSE/strings.xml | 1 + .../src/main/res/values-tr-rTR/strings.xml | 11 ++ .../src/main/res/values-uk-rUA/strings.xml | 1 + .../src/main/res/values-zh-rCN/strings.xml | 1 + .../src/main/res/values-da-rDK/exam.xml | 59 ++++++++++ .../src/main/res/values-da-rDK/objectives.xml | 38 ++++++ .../src/main/res/values-da-rDK/strings.xml | 22 ++++ .../src/main/res/values-ko-rKR/objectives.xml | 2 +- .../src/main/res/values-da-rDK/strings.xml | 3 + .../src/main/res/values-da-rDK/strings.xml | 53 +++++++++ .../src/main/res/values-da-rDK/strings.xml | 14 +++ .../src/main/res/values-da-rDK/oh_strings.xml | 4 + .../src/main/res/values-da-rDK/strings.xml | 25 ++++ .../src/main/res/values-da-rDK/strings.xml | 110 ++++++++++++++++++ .../src/main/res/values-da-rDK/strings.xml | 64 ++++++++++ .../main/res/values-da-rDK/strings_alarm.xml | 32 ++++- .../src/main/res/values-da-rDK/arrays.xml | 13 ++- .../src/main/res/values-da-rDK/strings.xml | 110 ++++++++++++++++++ .../src/main/res/values-da-rDK/strings.xml | 2 + .../src/main/res/values-da-rDK/strings.xml | 3 + .../src/main/res/values-af-rZA/strings.xml | 1 + .../src/main/res/values-bg-rBG/strings.xml | 1 + .../src/main/res/values-ca-rES/strings.xml | 1 + .../src/main/res/values-cs-rCZ/strings.xml | 9 ++ .../src/main/res/values-da-rDK/strings.xml | 9 ++ .../src/main/res/values-de-rDE/strings.xml | 1 + .../src/main/res/values-el-rGR/strings.xml | 1 + .../src/main/res/values-es-rES/strings.xml | 9 ++ .../src/main/res/values-fr-rFR/strings.xml | 1 + .../src/main/res/values-hr-rHR/strings.xml | 1 + .../src/main/res/values-hu-rHU/strings.xml | 1 + .../src/main/res/values-it-rIT/strings.xml | 1 + .../src/main/res/values-iw-rIL/strings.xml | 1 + .../src/main/res/values-ko-rKR/strings.xml | 1 + .../src/main/res/values-lt-rLT/strings.xml | 1 + .../src/main/res/values-nl-rNL/strings.xml | 1 + .../src/main/res/values-no-rNO/strings.xml | 1 + .../src/main/res/values-pl-rPL/strings.xml | 9 ++ .../src/main/res/values-pt-rBR/strings.xml | 1 + .../src/main/res/values-pt-rPT/strings.xml | 9 ++ .../src/main/res/values-ro-rRO/strings.xml | 1 + .../src/main/res/values-ru-rRU/strings.xml | 1 + .../src/main/res/values-sk-rSK/strings.xml | 1 + .../src/main/res/values-sr-rCS/strings.xml | 1 + .../src/main/res/values-sv-rSE/strings.xml | 1 + .../src/main/res/values-tr-rTR/strings.xml | 9 ++ .../src/main/res/values-uk-rUA/strings.xml | 1 + .../src/main/res/values-zh-rCN/strings.xml | 1 + .../src/main/res/values-da-rDK/strings.xml | 6 + .../src/main/res/values-es-rES/strings.xml | 1 + .../src/main/res/values-lt-rLT/strings.xml | 1 + .../src/main/res/values-pl-rPL/strings.xml | 1 + .../src/main/res/values-sk-rSK/strings.xml | 1 + wear/src/main/res/values-da-rDK/strings.xml | 1 + 119 files changed, 890 insertions(+), 265 deletions(-) diff --git a/app-wear-shared/shared/src/main/res/values-da-rDK/strings.xml b/app-wear-shared/shared/src/main/res/values-da-rDK/strings.xml index f35084621c..c48f52c7d1 100644 --- a/app-wear-shared/shared/src/main/res/values-da-rDK/strings.xml +++ b/app-wear-shared/shared/src/main/res/values-da-rDK/strings.xml @@ -55,6 +55,7 @@ Vis BSI Vis Retningspil Vis alder + Vis ugenummer Standard urskive, du kan klikke på EKSPORTÉR URSKIVE-knappen for at generere en skabelon Standard Urskive Baggrundsbillede @@ -81,6 +82,7 @@ AM eller PM Navn på ugedag Dag (DD) + Ugenummer (uu) Måned navn (kort) Loop status og tid Retningspil diff --git a/app-wear-shared/shared/src/main/res/values-lt-rLT/strings.xml b/app-wear-shared/shared/src/main/res/values-lt-rLT/strings.xml index 2c287ad28f..70fcce1325 100644 --- a/app-wear-shared/shared/src/main/res/values-lt-rLT/strings.xml +++ b/app-wear-shared/shared/src/main/res/values-lt-rLT/strings.xml @@ -55,6 +55,7 @@ Rodyti GĮ Rodyti krypties rodyklę Laikas nuo pask. vertės + Rodyti savaitės numerį Numatytasis ekranas. Paspaudus EKSPORTUOTI, bus sukurtas ruošinys Numatytasis ekranas Fono paveiksliukas @@ -81,6 +82,7 @@ AM ar PM Savaitės diena Diena (d.) + Savaitės numeris Mėnuo (sutrump.) Ciklo būsena Tendencijos rodyklė diff --git a/app-wear-shared/shared/src/main/res/values-pl-rPL/strings.xml b/app-wear-shared/shared/src/main/res/values-pl-rPL/strings.xml index b3eedc562a..dc43538e87 100644 --- a/app-wear-shared/shared/src/main/res/values-pl-rPL/strings.xml +++ b/app-wear-shared/shared/src/main/res/values-pl-rPL/strings.xml @@ -55,6 +55,7 @@ Pokaż BGI Pokaż Strzałkę Trendu Pokaż Aktualność + Pokaż numer tygodnia Domyślna tarcza, możesz kliknąć na EXPORTUJ TARCZĘ aby wygenerować szablon Domyślna Tarcza Obraz w tle @@ -81,6 +82,7 @@ AM lub PM Nazwa dnia tygodnia Dzień (DD) + Numer tygodnia (ww) Nazwa miesiąca (krótka) Status pętli i aktualność Strzałka trendu diff --git a/core/interfaces/src/main/res/values-af-rZA/strings.xml b/core/interfaces/src/main/res/values-af-rZA/strings.xml index 01a2c661d9..7cf1037ec1 100644 --- a/core/interfaces/src/main/res/values-af-rZA/strings.xml +++ b/core/interfaces/src/main/res/values-af-rZA/strings.xml @@ -1,5 +1,4 @@ - diff --git a/core/interfaces/src/main/res/values-bg-rBG/strings.xml b/core/interfaces/src/main/res/values-bg-rBG/strings.xml index ef4540b652..d67e7da2fb 100644 --- a/core/interfaces/src/main/res/values-bg-rBG/strings.xml +++ b/core/interfaces/src/main/res/values-bg-rBG/strings.xml @@ -1,16 +1,5 @@ - - Формат на файла - Създаден на - Версия на AAPS - вариант - Име на пациента - Модел на телефона: - Криптиране - Нов формат - Нов формат (незащитен) - Непознат формат Драйверът на помпата е променен. diff --git a/core/interfaces/src/main/res/values-ca-rES/strings.xml b/core/interfaces/src/main/res/values-ca-rES/strings.xml index 3c1acc89ef..7cf1037ec1 100644 --- a/core/interfaces/src/main/res/values-ca-rES/strings.xml +++ b/core/interfaces/src/main/res/values-ca-rES/strings.xml @@ -1,15 +1,4 @@ - - Format del fitxer - Creat: - Versió d\'AAPS - Variant de compilació - Exportant nom del pacient del dispositiu - Exportant model del dispositiu - Encriptació d\'arxius - Format nou d\'encriptació - Nou format de debug (no encriptat) - Format d\'exportació desconegut diff --git a/core/interfaces/src/main/res/values-cs-rCZ/strings.xml b/core/interfaces/src/main/res/values-cs-rCZ/strings.xml index 807b0646d9..e8b585edd8 100644 --- a/core/interfaces/src/main/res/values-cs-rCZ/strings.xml +++ b/core/interfaces/src/main/res/values-cs-rCZ/strings.xml @@ -1,16 +1,5 @@ - - Formát souboru - Vytvořeno - Verze AAPS - Varianta sestavení - Jméno pacienta použité při exportu - Model zaříení použitý při exportu - Šifrování souboru - Nový zašifrovaný formát - Nový formát pro ladění (nešifrovaný) - Neznámý formát souboru Změněn ovladač pumpy. diff --git a/core/interfaces/src/main/res/values-da-rDK/strings.xml b/core/interfaces/src/main/res/values-da-rDK/strings.xml index 39c10df923..849acfb10a 100644 --- a/core/interfaces/src/main/res/values-da-rDK/strings.xml +++ b/core/interfaces/src/main/res/values-da-rDK/strings.xml @@ -1,16 +1,5 @@ - - Filformat - Oprettet den - AAPS Version - Build Variant - Eksporterer enhedens patientnavn - Eksporterer enhedsmodel - Filkryptering - Nyt krypteret format - Nyt debug format (ukrypteret) - Ukendt eksportformat Pumpe driver ændret. diff --git a/core/interfaces/src/main/res/values-de-rDE/strings.xml b/core/interfaces/src/main/res/values-de-rDE/strings.xml index 18c4c403e0..ef2e06257e 100644 --- a/core/interfaces/src/main/res/values-de-rDE/strings.xml +++ b/core/interfaces/src/main/res/values-de-rDE/strings.xml @@ -1,16 +1,5 @@ - - Dateiformat - Erstellt am - AAPS-Version - Build-Variante - Patientenname des exportierenden Geräts - Modell des exportierenden Geräts - Dateiverschlüsselung - Neues verschlüsseltes Format - Neues Debugformat (unverschlüsselt) - Unbekanntes Export-Format Pumpentreiber geändert. diff --git a/core/interfaces/src/main/res/values-el-rGR/strings.xml b/core/interfaces/src/main/res/values-el-rGR/strings.xml index 4d51273452..f5467546f1 100644 --- a/core/interfaces/src/main/res/values-el-rGR/strings.xml +++ b/core/interfaces/src/main/res/values-el-rGR/strings.xml @@ -1,16 +1,5 @@ - - Μορφή αρχείου - Δημιουργήθηκε στις - Έκδοση AAPS - Δημιουργία Παραλλαγής - Εξαγωγή ονόματος συσκευής ασθενούς - Εξαγωγή μοντέλου συσκευής - Κρυπτογράφηση αρχείων - Νέα κρυπτογραφημένη μορφή - Νέα μορφή εντοπισμού σφαλμάτων (μη κρυπτογραφημένη) - Άγνωστη μορφή εξαγωγής Ο οδηγός της αντλίας άλλαξε. diff --git a/core/interfaces/src/main/res/values-es-rES/strings.xml b/core/interfaces/src/main/res/values-es-rES/strings.xml index 063a6c9005..291b09fa68 100644 --- a/core/interfaces/src/main/res/values-es-rES/strings.xml +++ b/core/interfaces/src/main/res/values-es-rES/strings.xml @@ -1,16 +1,5 @@ - - Formato del archivo - Creado el - Versión de AAPS - Construir Variante - Exportar el nombre del paciente del dispositivo - Exportar modelo de dispositivo - Encriptación de archivos - Nuevo formato cifrado - Nuevo formato de depuración (sin cifrar) - Formato de exportación desconocido Controlador de bomba cambiado diff --git a/core/interfaces/src/main/res/values-fr-rFR/strings.xml b/core/interfaces/src/main/res/values-fr-rFR/strings.xml index 3338dc695a..0b4b8c7d04 100644 --- a/core/interfaces/src/main/res/values-fr-rFR/strings.xml +++ b/core/interfaces/src/main/res/values-fr-rFR/strings.xml @@ -1,16 +1,5 @@ - - Format de fichier - Créé le - Version d\'AAPS - Variante de Build - Export du nom du patient de l\'appareil - Export du modèle de l\'appareil - Cryptage du fichier - Nouveau format crypté - Nouveau format de débug (non crypté) - Format d\'export inconnu Pilote pompe changé. diff --git a/core/interfaces/src/main/res/values-hr-rHR/strings.xml b/core/interfaces/src/main/res/values-hr-rHR/strings.xml index 01a2c661d9..7cf1037ec1 100644 --- a/core/interfaces/src/main/res/values-hr-rHR/strings.xml +++ b/core/interfaces/src/main/res/values-hr-rHR/strings.xml @@ -1,5 +1,4 @@ - diff --git a/core/interfaces/src/main/res/values-hu-rHU/strings.xml b/core/interfaces/src/main/res/values-hu-rHU/strings.xml index 7c21add268..7cf1037ec1 100644 --- a/core/interfaces/src/main/res/values-hu-rHU/strings.xml +++ b/core/interfaces/src/main/res/values-hu-rHU/strings.xml @@ -1,9 +1,4 @@ - - Fájlformátum - Létrehozva - AAPS verzió - Build variant diff --git a/core/interfaces/src/main/res/values-it-rIT/strings.xml b/core/interfaces/src/main/res/values-it-rIT/strings.xml index 592d29f43e..deddc4ce22 100644 --- a/core/interfaces/src/main/res/values-it-rIT/strings.xml +++ b/core/interfaces/src/main/res/values-it-rIT/strings.xml @@ -1,16 +1,5 @@ - - Formato file - Creato: - Versione AAPS - Variante build - Esportazione nome dispositivo paziente - Esportazione modello dispositivo - Crittografia file - Nuovo formato crittografato - Nuovo formato di debug (non crittografato) - Formato esportazione sconosciuto Driver micro cambiato. diff --git a/core/interfaces/src/main/res/values-iw-rIL/strings.xml b/core/interfaces/src/main/res/values-iw-rIL/strings.xml index fbf0d2a365..bb142473df 100644 --- a/core/interfaces/src/main/res/values-iw-rIL/strings.xml +++ b/core/interfaces/src/main/res/values-iw-rIL/strings.xml @@ -1,16 +1,5 @@ - - פורמט הקובץ - נוצר ב- - גרסת AAPS - גרסת בנייה - מייצא את שם מכשיר המטופל\\ת - מייצא את דגם המכשיר - הצפנת קבצים - פורמט הצפנה חדש - פורמט דיבאג חדש (בלתי מוצפן) - פורמט ייצוא לא ידוע מנהל התקן המשאבה שונה. diff --git a/core/interfaces/src/main/res/values-ko-rKR/strings.xml b/core/interfaces/src/main/res/values-ko-rKR/strings.xml index 8a16fa0155..328d8edf38 100644 --- a/core/interfaces/src/main/res/values-ko-rKR/strings.xml +++ b/core/interfaces/src/main/res/values-ko-rKR/strings.xml @@ -1,16 +1,5 @@ - - 파일 형식 - 생성 일자 - AAPS 버전 - 다른 형식 빌드 - 장치의 환자 이름 내보내기 - 장치 모델 내보내기 - 파일 암호화 - 암호화된 새로운 형식 - 오류가 제거된 새로운 형식 (암호화되지 않음) - 알려지지 않은 내보내기 형식 펌프 드라이버가 변경되었습니다. diff --git a/core/interfaces/src/main/res/values-lt-rLT/strings.xml b/core/interfaces/src/main/res/values-lt-rLT/strings.xml index c806d1c9e2..b612dac835 100644 --- a/core/interfaces/src/main/res/values-lt-rLT/strings.xml +++ b/core/interfaces/src/main/res/values-lt-rLT/strings.xml @@ -1,16 +1,5 @@ - - Failo formatas - Sukurta - AAPS versija - Versijos variantas - Eksportuojamas paciento vardas - Eksportuojamas prietaiso modelis - Failo šifravimas - Naujas šifruotas formatas - Naujas derinimo formatas (nešifruotas) - Nežinomas eksporto formatas Pompos valdik. pakeistas. diff --git a/core/interfaces/src/main/res/values-nl-rNL/strings.xml b/core/interfaces/src/main/res/values-nl-rNL/strings.xml index 93f3ace0cc..80e2ff9cff 100644 --- a/core/interfaces/src/main/res/values-nl-rNL/strings.xml +++ b/core/interfaces/src/main/res/values-nl-rNL/strings.xml @@ -1,16 +1,5 @@ - - Bestandsformaat - Gemaakt op - AAPS versie - Build variant - Patiëntnaam van exporterend apparaat - Modelnaam/nr van exporterend apparaat - Bestandsversleuteling - Nieuwe versleutelde indeling - Nieuwe debug indeling (onversleuteld) - Onbekende export indeling Pomp stuurprogramma gewijzigd. diff --git a/core/interfaces/src/main/res/values-no-rNO/strings.xml b/core/interfaces/src/main/res/values-no-rNO/strings.xml index 3b6346e562..26f3dee7a2 100644 --- a/core/interfaces/src/main/res/values-no-rNO/strings.xml +++ b/core/interfaces/src/main/res/values-no-rNO/strings.xml @@ -1,16 +1,5 @@ - - Filformat - Opprettet den - AAPS versjon - Byggvariant - Eksporterer enhetens pasientnavn - Eksportere enhetsmodell - Filkryptering - Nytt krypteringsformat - Nytt feilsøkingsformat (ukryptert) - Ukjent eksportformat Pumpedriver er endret. diff --git a/core/interfaces/src/main/res/values-pl-rPL/strings.xml b/core/interfaces/src/main/res/values-pl-rPL/strings.xml index 40fba81898..a560c753ef 100644 --- a/core/interfaces/src/main/res/values-pl-rPL/strings.xml +++ b/core/interfaces/src/main/res/values-pl-rPL/strings.xml @@ -1,16 +1,5 @@ - - Format pliku - Data utworzenia - Wersja AAPS - Wariant kompilacji - Eksportowanie nazwy urządzenia pacjenta - Eksportowanie modelu urządzenia - Szyfrowanie pliku - Nowy zaszyfrowany format - Nowy format testowy (niezaszyfrowany) - Nieznany format eksportu Zmieniono ster. pompy. diff --git a/core/interfaces/src/main/res/values-pt-rBR/strings.xml b/core/interfaces/src/main/res/values-pt-rBR/strings.xml index 66140eec54..bd8f1972cc 100644 --- a/core/interfaces/src/main/res/values-pt-rBR/strings.xml +++ b/core/interfaces/src/main/res/values-pt-rBR/strings.xml @@ -1,16 +1,5 @@ - - Formato do arquivo - Criado em - Versão AAPS - Variante de Compilação - Exportando nome do paciente do dispositivo - Exportando modelo do dispositivo - Criptografia do arquivo - Novo formato de encriptação - Novo formato de depuração (não encriptado) - Formato de exportação desconhecido Driver da bomba alterado. diff --git a/core/interfaces/src/main/res/values-pt-rPT/strings.xml b/core/interfaces/src/main/res/values-pt-rPT/strings.xml index d4630959c7..4686fb8799 100644 --- a/core/interfaces/src/main/res/values-pt-rPT/strings.xml +++ b/core/interfaces/src/main/res/values-pt-rPT/strings.xml @@ -1,16 +1,5 @@ - - Formato do ficheiro - Criado em - Versão AAPS - Variante de Compilação - A exportar nome do paciente do dispositivo - A exportar modelo do dispositivo - Encriptação do Ficheiro - Novo formato de encriptação - Novo formato de depuração (não encriptado) - Formato de exportação desconhecido Driver da bomba trocado. diff --git a/core/interfaces/src/main/res/values-ro-rRO/strings.xml b/core/interfaces/src/main/res/values-ro-rRO/strings.xml index 3200efb550..b8f0d8ac4b 100644 --- a/core/interfaces/src/main/res/values-ro-rRO/strings.xml +++ b/core/interfaces/src/main/res/values-ro-rRO/strings.xml @@ -1,16 +1,5 @@ - - Format fișier - Creat la - Versiune AAPS - Versiune de build - Exporta numele dispozitivului pacientului - Exportarea modelului dispozitivului - Criptarea fișierului - Format nou criptat - Format nou pentru debug (necriptat) - Format de export necunoscut Driver-ul pompei a fost schimbat. diff --git a/core/interfaces/src/main/res/values-ru-rRU/strings.xml b/core/interfaces/src/main/res/values-ru-rRU/strings.xml index 704af18386..01aeb37521 100644 --- a/core/interfaces/src/main/res/values-ru-rRU/strings.xml +++ b/core/interfaces/src/main/res/values-ru-rRU/strings.xml @@ -1,16 +1,5 @@ - - Формат файла - Дата создания - Версия AAPS - Версия сборки - Имя пациента экспортируемого устройства - Модель экспортируемого устройства - Шифрование файла - Новый зашифрованный формат - Новый формат отладки (незашифрованный) - Неизвестный формат экспорта Драйвер помпы изменен. diff --git a/core/interfaces/src/main/res/values-sk-rSK/strings.xml b/core/interfaces/src/main/res/values-sk-rSK/strings.xml index e9ba2149cf..52b4bac2d3 100644 --- a/core/interfaces/src/main/res/values-sk-rSK/strings.xml +++ b/core/interfaces/src/main/res/values-sk-rSK/strings.xml @@ -1,16 +1,5 @@ - - Formát súboru - Vytvorené - Verzia AAPS - Verzia zostavy - Meno pacienta použité pri exporte - Model zariadenia použitý pri exporte - Šifrovanie súborov - Nový šifrovaný formát - Nový formát pre ladenie (nešifrovaný) - Neznámy formát exportu Ovládač pumpy zmenený. diff --git a/core/interfaces/src/main/res/values-sr-rCS/strings.xml b/core/interfaces/src/main/res/values-sr-rCS/strings.xml index 01a2c661d9..7cf1037ec1 100644 --- a/core/interfaces/src/main/res/values-sr-rCS/strings.xml +++ b/core/interfaces/src/main/res/values-sr-rCS/strings.xml @@ -1,5 +1,4 @@ - diff --git a/core/interfaces/src/main/res/values-sv-rSE/strings.xml b/core/interfaces/src/main/res/values-sv-rSE/strings.xml index d82ff46d9d..cdcec5de88 100644 --- a/core/interfaces/src/main/res/values-sv-rSE/strings.xml +++ b/core/interfaces/src/main/res/values-sv-rSE/strings.xml @@ -1,16 +1,5 @@ - - Filformat - Skapad - AAPS-version - Build-variant - Exporterar patientens namn - Exporterar enhetsmodell - · Filkryptering - Nytt krypterat format - Nytt debug-format (okrypterat) - Okänt exportformat Pumpdrivr. byttes. diff --git a/core/interfaces/src/main/res/values-tr-rTR/strings.xml b/core/interfaces/src/main/res/values-tr-rTR/strings.xml index f075013aaf..b124c1d9f3 100644 --- a/core/interfaces/src/main/res/values-tr-rTR/strings.xml +++ b/core/interfaces/src/main/res/values-tr-rTR/strings.xml @@ -1,16 +1,5 @@ - - Dosya formatı - Oluşturuldu - AAPS Versiyonu - Yapı Varyantı - Cihaz hasta adını dışa aktarma - Cihaz modelini dışa aktarma - Dosya şifreleme - Yeni şifrelenmiş format - Yeni hata ayıklama formatı (şifrelenmemiş) - Bilinmeyen dışa aktarma formatı Pompa sürücüsü değişti. diff --git a/core/interfaces/src/main/res/values-uk-rUA/strings.xml b/core/interfaces/src/main/res/values-uk-rUA/strings.xml index 01a2c661d9..7cf1037ec1 100644 --- a/core/interfaces/src/main/res/values-uk-rUA/strings.xml +++ b/core/interfaces/src/main/res/values-uk-rUA/strings.xml @@ -1,5 +1,4 @@ - diff --git a/core/interfaces/src/main/res/values-zh-rCN/strings.xml b/core/interfaces/src/main/res/values-zh-rCN/strings.xml index 41936b4a76..a0d1e444a6 100644 --- a/core/interfaces/src/main/res/values-zh-rCN/strings.xml +++ b/core/interfaces/src/main/res/values-zh-rCN/strings.xml @@ -1,16 +1,5 @@ - - 文件格式 - 创建于 - AAPS 版本 - 构建变体 - 导出设备的患者姓名 - 导出设备型号 - 文件加密密钥。 - 新的加密格式 - 新调试格式 (未加密) - 未知的导出格式 泵驱动程序已变更 diff --git a/core/ui/src/main/res/values-da-rDK/protection.xml b/core/ui/src/main/res/values-da-rDK/protection.xml index bd05c6f561..12392f22fd 100644 --- a/core/ui/src/main/res/values-da-rDK/protection.xml +++ b/core/ui/src/main/res/values-da-rDK/protection.xml @@ -19,4 +19,13 @@ Ingen beskyttelse Usikkert Tilbagefald For at være effektiv har biometrisk beskyttelse brug for en primær adgangskode i tilfælde af tilbagefald.\n\nAngiv venligst en primær adgangskode! + Adgangskode angivet! + PIN angivet! + Adgangskode ikke angivet + PIN ikke angivet + Adgangskode ikke ændret + PIN ikke ændret + PIN fjernet! + Indtast adgangskode her + Indtast PIN her diff --git a/core/ui/src/main/res/values-da-rDK/strings.xml b/core/ui/src/main/res/values-da-rDK/strings.xml index 79dfc8db6e..11efb38ca2 100644 --- a/core/ui/src/main/res/values-da-rDK/strings.xml +++ b/core/ui/src/main/res/values-da-rDK/strings.xml @@ -14,6 +14,7 @@ %1$.2f E/t Pumpe ikke initialiseret, profil ikke angivet! Opdatering af basal profil mislykkedes + Bolus %1$.2fE leveret succesfuldt Ingen gyldig basal rate læst fra pumpen Begrænser IOB til %1$.1f IE på grund af %2$s LOOP DEAKTIVERET AF BEGRÆNSNINGER @@ -35,6 +36,7 @@ Upload BG data til NS Insulin ikke tilgængelig + Hovedadgangskode Eksporter brugerindtastninger til Excel (csv) Bekræft Pumpe @@ -43,7 +45,9 @@ Lydløs i 5 minutter Lydløs Succes + Avancerede indstillinger Forlænget bolus leveringsfejl + APS-Tilstand Forlænget bolus Pauset TDD Total @@ -58,6 +62,8 @@ Vent venligst… Stop Kulhydrater + Ugyldig profil! + INGEN PROFIL SAT ]]> Dato Enheder @@ -100,6 +106,7 @@ Indlæser … Bemærkninger Fjern + Tilføj ny Tilføj ny ovenfor Data kommer fra en anden pumpe. Skift pumpedriver for at nulstille pumpetilstand. BG @@ -146,6 +153,7 @@ Basal IOB UGYLDIG Log ind + Prime / Fyld Insulin Stop midlertidig mål Lukket Loop @@ -154,6 +162,9 @@ DIA IC ISF + Annullering af midlertidig basal mislykkedes + Annullering af forlænget bolus mislykkedes + Upload pumpestatus til NS eller Tidepool Deaktiveret/Suspendéret Loop Insulin om bord (IOB) @@ -171,6 +182,7 @@ Start profil %1$d%% i %2$d min + Annuller midlertidig basal Lad midlertidig basal køre Dosis Varighed @@ -192,9 +204,12 @@ Notat : %1$s Spørgsmål : %1$s Motion: %1$s + Skift indstikssted + CGM Sensor Indsæt CGM Sensor Start CGM Sensor Stop Diabeteshund alarm + Skift af insulinampul Profilskift Snack Bolus Måltidsbolus @@ -204,6 +219,8 @@ Midlertidig basal slut Korrektion for kulhydrater OpenAPS Offline + Skift af pumpebatteri + Midlertidigt mål Midlertidig mål værdi Afslut midlertidigt mål Bolusberegner @@ -232,6 +249,7 @@ %1$d g ekstra kulhydrater kræves inden for %2$d minutter + Akkumuleret TDD Eksponentielt Vægtet TDD Basal Bolus @@ -317,6 +335,7 @@ EKSPORTER INDSTILLINGER IMPORTER INDSTILLINGER NULSTIL DATABASER + RENS DATABASER EKSPORTER DATABASER IMPORTER DATABASER OTP EKSPORT @@ -357,6 +376,9 @@ KH %1$d g FORLÆNGET BOLUS %1$.2f IE %2$d min INDLÆS BEGIVENHEDER + RYD ALARMER + DEAKTIVÉR + OPDATÉR TID INDLÆS HISTORIK %1$d LÆS TDD\'er SÆT PROFIL @@ -402,6 +424,7 @@ Autotune fungerer med kun én IC-værdi, din profil har %1$d værdier. Gennemsnitsværdi er %2$.2fg/E Autotune virker med kun én ISF-værdi, din profil har %1$d værdier. Gennemsnitlig værdi er %2$.1f%3$s/E Fejl i inputdata, prøv at køre autotune igen eller reducer antallet af dage + Fejl i inputdata, øg antallet af dage Automatisk beregning startet, vær venligst tålmodig Kontrollér resultaterne omhyggeligt, før du bruger dem! Delvis resultat dag %1$d / %2$d justeret @@ -420,6 +443,8 @@ Opdater %1$s profil med Autotune profil? Gendan %1$s profil med Input-profilen? Profil ugyldig + Autotune kørt uden profilskift + Autotune kørte og profilen blev automatisk skiftet Fejl under sidste Autotune kørsel Autotune kører allerede, annulleret @@ -427,9 +452,14 @@ Akut alarm INFO + Bolus-rådgiver + Du har høj glycæmi. I stedet for at spise nu anbefales det at vente på bedre glycæmi. Ønsker du at lave en korrektionsbolus nu og minde dig om, hvornår det er tid til at spise? I dette tilfælde vil ingen kulhydrater blive registreret, og du skal bruge guiden igen, når vi påminder dig. COB vs IOB !!!!! Langsomme kulhydrater opdaget: %2$d%% af tiden. Dobbelttjek din beregning. COB kan overvurderes og der kan således gives mere insulin !!!!!]]> Afgiv denne del af bolusguidens resultat [%] + Gammel glykæmi tidstærskel [min] + Bolus-begrænsning anvendt: %1$.2f IE til %2$.2f IE + Bolus registreres kun (bliver ikke leveret af pumpe) Kør alarm når det er tid til at spise Ingen handling valgt, intet vil ske Ingen nylig BG til at basere beregningen på! @@ -448,11 +478,19 @@ Midl: %1$s %1$s til %2$s Ingen pumpe tilgængelig! + QuickWizard + Barn Teeanger Voksen + Insulinresistent voksen Graviditet + Vælg venligst patienttype til opsætning af sikkerhedsgrænser + Maks tilladt bolus [IE] + Maks tilladte kulhydrater [g] + Patienttype + Lås indstillinger op Batteri Reservoir @@ -479,6 +517,7 @@ Pumpe er optaget Forbindelsesfejl til pumpe Læser pumpehistorik + Adgangskode slettet! Parring Initialiserer ... @@ -522,6 +561,9 @@ Manglende sms tilladelse + Dræb ikke min app? + Upload af Crash logs deaktiveret! + \n\nDocumentation:\nhttps://wiki.aaps.app\n\nFacebook:\nhttps://www.facebook.com/groups/AndroidAPSUsers %1$d dag %1$d dage @@ -535,6 +577,9 @@ %1$d minutter + Vil du rydde op i databasen?\nDet vil fjerne sporede ændringer og historiske data ældre end 3 måneder. + Vil du rydde op i databasen?\nDet vil fjerne sporede ændringer og historiske data ældre end 3 måneder.\nAt gøre dette vil også sætte hastigheden drastisk op på fuld synkronisering. + Slettede poster Søn Lør diff --git a/core/ui/src/main/res/values-es-rES/strings.xml b/core/ui/src/main/res/values-es-rES/strings.xml index b5ec288252..5804d89e91 100644 --- a/core/ui/src/main/res/values-es-rES/strings.xml +++ b/core/ui/src/main/res/values-es-rES/strings.xml @@ -581,6 +581,22 @@ ¿Deseas limpiar la base de datos?\nSe eliminarán los cambios registrados y los datos históricos de más de 3 meses.\nAl hacerlo, la sincronización completa se acelerará drásticamente Entradas eliminadas + Dom + Sab + Vie + Jue + Mie + Mar + Lun + L + M + X + J + V + S + D + %1$.1f U + %1$.2f U diff --git a/core/ui/src/main/res/values-lt-rLT/strings.xml b/core/ui/src/main/res/values-lt-rLT/strings.xml index 3fb24b73b7..c2b090cc8e 100644 --- a/core/ui/src/main/res/values-lt-rLT/strings.xml +++ b/core/ui/src/main/res/values-lt-rLT/strings.xml @@ -587,6 +587,22 @@ Ar norite išvalyti duombazę?\nIstoriniai duomenys ir pakeitimai, senesni nei 3 mėn., bus ištrinti.\nSinchronizacija reikšmingai pagreitės. Ištrinti įrašai + S + Š + Pn + K + T + A + P + mėn. + A + T + K + Pn + Š + S + %1$.1f V + %1$.2f V diff --git a/core/ui/src/main/res/values-pl-rPL/strings.xml b/core/ui/src/main/res/values-pl-rPL/strings.xml index 92c853643d..08e5d69b6e 100644 --- a/core/ui/src/main/res/values-pl-rPL/strings.xml +++ b/core/ui/src/main/res/values-pl-rPL/strings.xml @@ -587,6 +587,22 @@ Czy chcesz wyczyścić bazę danych?\nTa operacja usunie odnotowane zmiany i dane historyczne starsze niż 3 miesiące.\nWyczyszczenie bazy dramatycznie przyśpieszy pełną synchronizację. Usunięte wpisy + Nie + Sob + Pią + Czw + Śr + Wt + Pon + P + W + Ś + C + P + S + N + %1$.1f U + %1$.2f U diff --git a/core/ui/src/main/res/values-pt-rPT/strings.xml b/core/ui/src/main/res/values-pt-rPT/strings.xml index 1d718d284b..953249c98c 100644 --- a/core/ui/src/main/res/values-pt-rPT/strings.xml +++ b/core/ui/src/main/res/values-pt-rPT/strings.xml @@ -492,4 +492,6 @@ + %1$.1f U + %1$.2f U diff --git a/core/ui/src/main/res/values-sk-rSK/strings.xml b/core/ui/src/main/res/values-sk-rSK/strings.xml index 01ab41e329..fcc6f72401 100644 --- a/core/ui/src/main/res/values-sk-rSK/strings.xml +++ b/core/ui/src/main/res/values-sk-rSK/strings.xml @@ -587,6 +587,22 @@ Chcete vyčistiť databázu?\nOdstráni sledované zmeny a historické dáta staršie ako 3 mesiace.\nVýrazne to urýchli úplnú synchronizáciu. Vymazané záznamy + Ned + Sob + Pia + Štv + Str + Uto + Pon + Po + Ut + St + Št + Pi + So + Ne + %1$.1f JI + %1$.2f JI diff --git a/implementation/src/main/res/values-da-rDK/strings.xml b/implementation/src/main/res/values-da-rDK/strings.xml index 77077ef6e6..802971890e 100644 --- a/implementation/src/main/res/values-da-rDK/strings.xml +++ b/implementation/src/main/res/values-da-rDK/strings.xml @@ -4,6 +4,7 @@ Kommando udføres lige nu Basal værdi under minimum. Profil ikke angivet! Tilladelse + %1$s har brug for batterioptimeringstilladelse for at opnå den rette ydeevne Applikationen mangler lokations tilladelse til BT scanning og WIFI identifikation Applikationen mangler lagerstyrings tilladelse for at gemme logfiler og exporteringsindstillinger diff --git a/plugins/aps/src/main/res/values-da-rDK/strings.xml b/plugins/aps/src/main/res/values-da-rDK/strings.xml index 630feef414..2ca881cbd8 100644 --- a/plugins/aps/src/main/res/values-da-rDK/strings.xml +++ b/plugins/aps/src/main/res/values-da-rDK/strings.xml @@ -90,15 +90,27 @@ Top + Kør nu En bolus blev leveret inden for de sidste 3 minutter, springer SMB over + Pumpe ikke initialiseret! LOOP Aktiver eller deaktiver implementeringen som aktiverer Loop. + INGEN APS VALGT ELLER GIVET RESULTAT Ignorér 5m Ignorér 15m Ignorér 30m + Kulhydrater Forslag + Nyt forslag tilgængeligt Basal sat korrekt + Seneste kørsel APS + Anmod + Efter bearbejdede begrænsninger + Midlertidig basal anmodningstid + Midlertidig basal udførselstid Midlertidig basal sat af pumpe + SMB-anmodningstid + SMB-udførelsestid SMB indstillet af pumpe Minimal anmodningsændring [%] Åben Loop vil kun foreslå ny ændringsanmodning, hvis ændringen er større end denne værdi i %. Standardværdien er 20% diff --git a/plugins/automation/src/main/res/values-da-rDK/strings.xml b/plugins/automation/src/main/res/values-da-rDK/strings.xml index dbcf7bb1f0..83847ae13f 100644 --- a/plugins/automation/src/main/res/values-da-rDK/strings.xml +++ b/plugins/automation/src/main/res/values-da-rDK/strings.xml @@ -85,6 +85,8 @@ Sidste bolus tid %1$s %2$s min siden COB COB %1$s %2$.0f + Puls + HR %1$s %2$.0f IOB [IE]: Dist [m]: Tilbagevendende tid @@ -111,5 +113,7 @@ Tilføj regel Stop afvikling + Tid til at spise!\nBrug Bolusguiden og beregn igen. Tid til bolus!\nKør Bolus-guiden og lav beregningen igen. + Fejl under indstilling af fremtidig alarm diff --git a/plugins/configuration/src/main/res/values-af-rZA/strings.xml b/plugins/configuration/src/main/res/values-af-rZA/strings.xml index daed111930..b8302b3a89 100644 --- a/plugins/configuration/src/main/res/values-af-rZA/strings.xml +++ b/plugins/configuration/src/main/res/values-af-rZA/strings.xml @@ -73,4 +73,5 @@ + diff --git a/plugins/configuration/src/main/res/values-bg-rBG/strings.xml b/plugins/configuration/src/main/res/values-bg-rBG/strings.xml index 1403ddb163..431fd6b295 100644 --- a/plugins/configuration/src/main/res/values-bg-rBG/strings.xml +++ b/plugins/configuration/src/main/res/values-bg-rBG/strings.xml @@ -156,4 +156,5 @@ Избор на персонализиран Watchface Моля рестартирайте телефона си или AAPS от Системни настройки, иначе AAPS няма да има логове (това е важно за да се проследява и верифицира, че алгоритъма работи правилно)! + diff --git a/plugins/configuration/src/main/res/values-ca-rES/strings.xml b/plugins/configuration/src/main/res/values-ca-rES/strings.xml index 244139ff2e..ef555b1f54 100644 --- a/plugins/configuration/src/main/res/values-ca-rES/strings.xml +++ b/plugins/configuration/src/main/res/values-ca-rES/strings.xml @@ -133,4 +133,5 @@ Algoritme d\'encriptació no compatible o no especificat! + diff --git a/plugins/configuration/src/main/res/values-cs-rCZ/strings.xml b/plugins/configuration/src/main/res/values-cs-rCZ/strings.xml index b412eed226..195d4fed27 100644 --- a/plugins/configuration/src/main/res/values-cs-rCZ/strings.xml +++ b/plugins/configuration/src/main/res/values-cs-rCZ/strings.xml @@ -156,4 +156,15 @@ Vyberte vlastní ciferník Prosím restartujte Váš telefon nebo restartujte AAPS z nastavení systému\njinak nebudou zaznamenány ladící informace (důležité pro sledování a kontrolu, zda algoritmus pracuje správně)! + + Formát souboru + Vytvořeno + Verze AAPS + Varianta sestavení + Jméno pacienta použité při exportu + Model zaříení použitý při exportu + Šifrování souboru + Nový zašifrovaný formát + Nový formát pro ladění (nešifrovaný) + Neznámý formát souboru diff --git a/plugins/configuration/src/main/res/values-da-rDK/strings.xml b/plugins/configuration/src/main/res/values-da-rDK/strings.xml index 44b12e2524..2bccb8c040 100644 --- a/plugins/configuration/src/main/res/values-da-rDK/strings.xml +++ b/plugins/configuration/src/main/res/values-da-rDK/strings.xml @@ -6,6 +6,7 @@ Forrige Installationsguide FÆRDIG + Velkommen Velkommen til opsætningsguiden. Den vil guide dig gennem opsætningsprocessen\n Slutbrugerlicensaftale MÅ IKKE BRUGES TIL AT TRÆFFE MEDICINSKE BESLUTNINGER. DER ER INGEN GARANTI FOR PROGRAMMET, I DET OMFANG GÆLDENDE LOV TILLADER DET. UNDTAGEN NÅR DET ELLERS ER ANFØRT SKRIFTLIGT, AT RETTIGHEDSHAVERE OG / ELLER ANDRE PARTER LEVERER PROGRAMMET \"SOM BESET\" UDEN NOGEN FORM FOR GARANTI, HVERKEN UDTRYKT ELLER UNDERFORSTÅET, HERUNDER, MEN IKKE BEGRÆNSET TIL, DE UNDERFORSTÅELIGHEDER, DER ER FORBUNDET MED EGNETHED OG EGNETHED TIL ET BESTEMT FORMÅL. HELE RISIKOEN MED HENSYN TIL KVALITETEN OG YDEEVNEN AF PROGRAMMET ER DIN. HVIS PROGRAMMET VISER SIG AT VÆRE DEFEKT, BÆRER DU SELV OMKOSTNINGERNE VED ALLE NØDVENDIGE SERVICER, REPARATIONER ELLER KORREKTIONER SOM ER NØDVENDIGE. @@ -20,10 +21,12 @@ Applikationen mangler lokations tilladelse til BT scanning og WIFI identifikation Applikationen mangler lagerstyrings tilladelse for at gemme logfiler og exporteringsindstillinger Anmod om tilladelse + %1$s har brug for batterioptimeringstilladelse for at opnå den rette ydeevne Gemte indstillinger fundet Hovedadgangskode bruges til backup kryptering og til at tilsidesætte sikkerhed i applikationen. Husk det eller gem et sikkert sted. Nuværende hovedadgangskode Brug værdien af den største mængde mad du plejer at indtage\n + Synkronisér data til skyen. Du kan springe denne del nu, men du vil ikke være i stand til at passere mål, før du opretter en Nightscout- eller Tidepool-klient. Status: Patientens navn Angiv venligst patientnavn eller kaldenavn for at skelne mellem flere opsætninger @@ -35,6 +38,7 @@ Spring opsætningsguiden over Tryk på knappen nedenfor for at aktivere at AAPS foreslår/foretager basale ændringer Følsomhedsplugin bruges til detektering af følsomhed og COB beregning. For mere info besøg: + https://wiki.aaps.app/da/latest/Configuration/Sensitivity-detection-and-COB.html Vælg en fra tilgængelige algoritmer. De er sorteret fra ældste til nyeste. Nyere algoritme er normalt mere kraftfulde og mere aggressive. Så hvis du er ny looper bør du sandsynligvis starte med AMA og ikke med den nyeste. Glem ikke at læse OpenAPS dokumentationen og konfigurere den før brug. Konfigurer venligst din RileyLink nedenfor. Når du har valgt en RileyLink, vil det være muligt at fortsætte opsætningen, når RileyLink-status er \"Tilsluttet\". Dette kan tage et minut.\n Bemærk: Du kan fortsætte opsætningen, når pumpen er konfigureret.\n @@ -62,12 +66,15 @@ Generelt Disse er nogle generelle tilføjelser, som du måske kan finde nyttige. Synkronisering + Data-upload og synkroniserings-plugins. Hvilke begrænsninger er anvendt? Loop Brug dette til at aktivere AAPS\' loop integration. Hvilken type insulin bruger du? BG kilde Hvor skal AAPS få sine data fra? + Udjævning + Vælg udjævningsalgoritme Detektering af følsomhed Hvilken følsomhedsalgoritme skal anvendes? KONF @@ -101,10 +108,13 @@ Gå venligst tilbage til hovedskærmen og prøv igen. Afslutter applikationen for at anvende indstillinger. Brugerindtastninger exporteret + Beskyttelse + Hovedadgangskode er ikke angivet!\n\nAngiv venligst din hovedadgangskode i præferencer (%1$s → %2$s) Vedligeholdelse MAINT Giver flere funktioner til vedligeholdelse (f.eks. log afsendelse, log sletning). + Database-oprydning Er du sikker på, at du vil nulstille databaserne? Vedligeholdelses Indstillinger E-mail modtager @@ -143,6 +153,18 @@ Manglende krypteringskonfiguration, indstillingsformat er ugyldigt! Ikke-understøttet eller ikke angivet krypteringsalgoritme! + Vælg Brugerdefineret Urskive Genstart venligst din telefon eller genstart AAPS fra Systemindstillinger \nellers vil AndroidAPS ikke have logning (vigtigt at spore og kontrollere, at algoritmerne fungerer korrekt)! + + Filformat + Oprettet den + AAPS Version + Build-variant + Eksporterer enhedens patientnavn + Eksporterer enhedsmodel + Filkryptering + Nyt krypteret format + Nyt fejlfindingsformat (ukrypteret) + Ukendt eksportformat diff --git a/plugins/configuration/src/main/res/values-de-rDE/strings.xml b/plugins/configuration/src/main/res/values-de-rDE/strings.xml index 5025cbaf34..77cc5dbcb5 100644 --- a/plugins/configuration/src/main/res/values-de-rDE/strings.xml +++ b/plugins/configuration/src/main/res/values-de-rDE/strings.xml @@ -156,4 +156,5 @@ Eigene Watchface auswählen Bitte starte dein Telefon neu oder starte AndroidAPS in den System-Einstellungen neu.\nAndernfalls wird AndroidAPS nichts protokollieren (wichtig zum Nachverfolgen und Verifizieren, dass der Algorithmus korrekt funktioniert)! + diff --git a/plugins/configuration/src/main/res/values-el-rGR/strings.xml b/plugins/configuration/src/main/res/values-el-rGR/strings.xml index d79f932d57..aa605fbe65 100644 --- a/plugins/configuration/src/main/res/values-el-rGR/strings.xml +++ b/plugins/configuration/src/main/res/values-el-rGR/strings.xml @@ -156,4 +156,5 @@ Επιλογή προσαρμοσμένης όψης ρολογιου Παρακαλώ κάντε επανεκίνηση στο τηλέφώνο ή restart στο AndroidAPS από τις Ρυθμίσεις Συστήματος, \nδιαφορετικά το AndroidAPS δεν θα έχει καταγραφή (επαληθεύστε ότι οι αλγόριθμοι δουλεύουν σωστά)! + diff --git a/plugins/configuration/src/main/res/values-es-rES/strings.xml b/plugins/configuration/src/main/res/values-es-rES/strings.xml index 037856e883..e0b4bc3fe2 100644 --- a/plugins/configuration/src/main/res/values-es-rES/strings.xml +++ b/plugins/configuration/src/main/res/values-es-rES/strings.xml @@ -156,4 +156,15 @@ Seleccionar esfera por defecto Por favor, reinicia el teléfono o AAPS desde los ajustes del sistema \nde lo contrario AAPS no guardará registros (importante para trazar y verificar que el algoritmo está funcionando correctamente) + + Formato de archivo + Creado el + Versión de AAPS + Versión de compilación + Exportando el nombre del paciente del dispositivo + Exportando el modelo del dispositivo + Cifrado de archivos + Nuevo formato cifrado + Nuevo formato de depuración (sin cifrar) + Formato de exportación desconocido diff --git a/plugins/configuration/src/main/res/values-fr-rFR/strings.xml b/plugins/configuration/src/main/res/values-fr-rFR/strings.xml index 644eac58d5..a8a9347e91 100644 --- a/plugins/configuration/src/main/res/values-fr-rFR/strings.xml +++ b/plugins/configuration/src/main/res/values-fr-rFR/strings.xml @@ -157,4 +157,5 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S Sélectionner un cadran personnalisé Veuillez redémarrer votre téléphone ou redémarrer AAPS à partir des Paramètres du système\nsinon AAPS ne sera pas connecté aux journaux (important pour suivre et vérifier que les algorithmes fonctionnent correctement)! + diff --git a/plugins/configuration/src/main/res/values-hr-rHR/strings.xml b/plugins/configuration/src/main/res/values-hr-rHR/strings.xml index eab136d8de..a1bdc37309 100644 --- a/plugins/configuration/src/main/res/values-hr-rHR/strings.xml +++ b/plugins/configuration/src/main/res/values-hr-rHR/strings.xml @@ -65,4 +65,5 @@ Ponovno pokrenite telefon ili ponovno pokrenite AAPS iz postavki sustava \n u suprotnom Android APS neće imati zapisivanje (važno je pratiti i provjeriti rade li algoritmi ispravno)! + diff --git a/plugins/configuration/src/main/res/values-hu-rHU/strings.xml b/plugins/configuration/src/main/res/values-hu-rHU/strings.xml index 578fb269ea..0186370c60 100644 --- a/plugins/configuration/src/main/res/values-hu-rHU/strings.xml +++ b/plugins/configuration/src/main/res/values-hu-rHU/strings.xml @@ -25,4 +25,5 @@ + diff --git a/plugins/configuration/src/main/res/values-it-rIT/strings.xml b/plugins/configuration/src/main/res/values-it-rIT/strings.xml index ab76ba358a..0dd614c556 100644 --- a/plugins/configuration/src/main/res/values-it-rIT/strings.xml +++ b/plugins/configuration/src/main/res/values-it-rIT/strings.xml @@ -156,4 +156,5 @@ Seleziona watchface personalizzata Riavvia il tuo telefono oppure fai ripartire AndroidAPS dalle impostazioni di sistema \naltrimenti Android APS non farà il log (è importante monitorare e verificare che gli algoritmi stiano funzionando correttamente)! + diff --git a/plugins/configuration/src/main/res/values-iw-rIL/strings.xml b/plugins/configuration/src/main/res/values-iw-rIL/strings.xml index b0ba9c36c7..be22aad54e 100644 --- a/plugins/configuration/src/main/res/values-iw-rIL/strings.xml +++ b/plugins/configuration/src/main/res/values-iw-rIL/strings.xml @@ -156,4 +156,5 @@ בחירת פני שעון מותאמים אישית נא לאתחל את הסמרטפון שלכם או הפעילו מחדש את אפלקציית AndroidAPS בהגדרות המערכת \nאחרת AndroidAPS לא יוכל לבצע רישום (חשוב לעקוב ולוודא כי האלגוריתמים פועלים כראוי)! + diff --git a/plugins/configuration/src/main/res/values-ko-rKR/strings.xml b/plugins/configuration/src/main/res/values-ko-rKR/strings.xml index 5aed2fea95..26dde3ea46 100644 --- a/plugins/configuration/src/main/res/values-ko-rKR/strings.xml +++ b/plugins/configuration/src/main/res/values-ko-rKR/strings.xml @@ -156,4 +156,5 @@ 사용자 지정 워치페이스 선택하기 폰을 다시시작하거나 시스템 설정에서 AAPS를 다시 시작하십시오 \n그렇지 않으면 Android APS에 로그 기록이 남지 않습니다 (알고리즘이 올바르게 작동하는지 확인하기 위해 로그가 중요합니다)! + diff --git a/plugins/configuration/src/main/res/values-lt-rLT/strings.xml b/plugins/configuration/src/main/res/values-lt-rLT/strings.xml index 02ae1bcc9d..807d9e1ff8 100644 --- a/plugins/configuration/src/main/res/values-lt-rLT/strings.xml +++ b/plugins/configuration/src/main/res/values-lt-rLT/strings.xml @@ -156,4 +156,5 @@ Pasirinkite laikrodžio ekraną Prašome perkrauti telefoną arba sistemos nustatymuose iš naujo paleisti AAPS \nkitaip AndroidAPS negalės registruoti prisijungimų (svarbu stebėti ir tikrinti, ar algoritmai veikia tinkamai)! + diff --git a/plugins/configuration/src/main/res/values-nl-rNL/strings.xml b/plugins/configuration/src/main/res/values-nl-rNL/strings.xml index 91d5eba4b8..18069e6dbd 100644 --- a/plugins/configuration/src/main/res/values-nl-rNL/strings.xml +++ b/plugins/configuration/src/main/res/values-nl-rNL/strings.xml @@ -156,4 +156,5 @@ Selecteer aangepaste watchface Herstart je telefoon of herstart AndroidAPS vanuit de systeem instellingen a. u. b. \nanders zal AndroidAPS geen log mogelijkheid hebben (Dit is belangrijk om te controleren of de algoritmes correct werken)! + diff --git a/plugins/configuration/src/main/res/values-no-rNO/strings.xml b/plugins/configuration/src/main/res/values-no-rNO/strings.xml index b26b366859..cd97d79a15 100644 --- a/plugins/configuration/src/main/res/values-no-rNO/strings.xml +++ b/plugins/configuration/src/main/res/values-no-rNO/strings.xml @@ -156,4 +156,5 @@ Velg tilpasset klokkebakgrunn Vennligst start mobilen på nytt eller restart AAPS fra Innstillinger \nellers vil ikke AAPS ha aktivert loggføring (viktig for å spore og kontrollere at algoritmene fungerer riktig)! + diff --git a/plugins/configuration/src/main/res/values-pl-rPL/strings.xml b/plugins/configuration/src/main/res/values-pl-rPL/strings.xml index 9d93dfc0fb..e0827d5c0f 100644 --- a/plugins/configuration/src/main/res/values-pl-rPL/strings.xml +++ b/plugins/configuration/src/main/res/values-pl-rPL/strings.xml @@ -156,4 +156,15 @@ Wybierz niestandardową tarczę Proszę uruchomić ponownie telefon lub zrestartować AAPS (z poziomu ustawieniach systemu telefonu / menu aplikacje)\ninaczej AAPS nie będzie w stanie zapisywać dziennika (ważne ze względu na śledzenie błędów i sprawdzanie poprawności działania algorytmów)! + + Format pliku + Utworzono + Wersja AAPS + Wariant kompilacji + Eksportowanie nazwy pacjenta urządzenia + Eksportowanie modelu urządzenia + Szyfrowanie pliku + Nowy zaszyfrowany format + Nowy format testowy (niezaszyfrowany) + Nieznany format eksportu diff --git a/plugins/configuration/src/main/res/values-pt-rBR/strings.xml b/plugins/configuration/src/main/res/values-pt-rBR/strings.xml index f285917b4b..dd93594e82 100644 --- a/plugins/configuration/src/main/res/values-pt-rBR/strings.xml +++ b/plugins/configuration/src/main/res/values-pt-rBR/strings.xml @@ -156,4 +156,5 @@ Selecionar Watchface Personalizado Por favor, reinicie seu telefone ou reinicie o AndroidAPS nas Configurações do Sistema \nCaso contrário o Android APS não terá registro (importante para rastrear e verificar se os algoritmos estão funcionando corretamente)! + diff --git a/plugins/configuration/src/main/res/values-pt-rPT/strings.xml b/plugins/configuration/src/main/res/values-pt-rPT/strings.xml index ed92b3e5bb..532e1b1a24 100644 --- a/plugins/configuration/src/main/res/values-pt-rPT/strings.xml +++ b/plugins/configuration/src/main/res/values-pt-rPT/strings.xml @@ -156,4 +156,15 @@ Selecionar Watchface Personalizada Por favor, reinicie o telefone ou reinicie a AAPS nas Configurações do Sistema \ncaso contrário a android APS não terá registo (isto é importante para analisar e verificar se os algoritmos estão funcionando corretamente)! + + Formato do ficheiro + Criado em + Versão AAPS + Variante de Compilação + A exportar nome do paciente do dispositivo + A exportar modelo do dispositivo + Encriptação do Ficheiro + Novo formato de encriptação + Novo formato de depuração (não encriptado) + Formato de exportação desconhecido diff --git a/plugins/configuration/src/main/res/values-ro-rRO/strings.xml b/plugins/configuration/src/main/res/values-ro-rRO/strings.xml index c5c9bb45d1..36fa1c2324 100644 --- a/plugins/configuration/src/main/res/values-ro-rRO/strings.xml +++ b/plugins/configuration/src/main/res/values-ro-rRO/strings.xml @@ -156,4 +156,5 @@ Selectare aspect ceas personalizat Restartați telefonul sau reporniți aplicația AAPS din System Settings \naltfel AAPS nu va putea înregistra loguri (importante pentru verificarea corectitudinii funcționării algoritmilor)! + diff --git a/plugins/configuration/src/main/res/values-ru-rRU/strings.xml b/plugins/configuration/src/main/res/values-ru-rRU/strings.xml index c994bab7eb..735ccdf57d 100644 --- a/plugins/configuration/src/main/res/values-ru-rRU/strings.xml +++ b/plugins/configuration/src/main/res/values-ru-rRU/strings.xml @@ -156,4 +156,5 @@ Выберите пользовательский циферблат Перезагрузите телефон или перезапустите AAPS из системных настроек \n иначе AAPS не будет вести лог (важно для отслеживания и проверки алгоритмов)! + diff --git a/plugins/configuration/src/main/res/values-sk-rSK/strings.xml b/plugins/configuration/src/main/res/values-sk-rSK/strings.xml index 6d030faab7..99d4c00101 100644 --- a/plugins/configuration/src/main/res/values-sk-rSK/strings.xml +++ b/plugins/configuration/src/main/res/values-sk-rSK/strings.xml @@ -156,4 +156,15 @@ Vyberte vlastný ciferník Prosím reštartujte Váš telefón, alebo reštartujte AndroidAPS z nastavení \nv opačnom prípade AndroidAPS nebude mocť zaznamenávať logy (dôležité kvôli sledovaniu a overovaniu, že algoritmus pracuje správne)! + + Formát súboru + Vytvorené + Verzia AAPS + Verzia zostavy + Meno pacienta použité pri exporte + Model zariadenia použitý pri exporte + Šifrovanie súborov + Nový šifrovaný formát + Nový formát pre ladenie (nešifrovaný) + Neznámy formát exportu diff --git a/plugins/configuration/src/main/res/values-sr-rCS/strings.xml b/plugins/configuration/src/main/res/values-sr-rCS/strings.xml index 03adfec6b6..90a3832e6e 100644 --- a/plugins/configuration/src/main/res/values-sr-rCS/strings.xml +++ b/plugins/configuration/src/main/res/values-sr-rCS/strings.xml @@ -55,4 +55,5 @@ + diff --git a/plugins/configuration/src/main/res/values-sv-rSE/strings.xml b/plugins/configuration/src/main/res/values-sv-rSE/strings.xml index bb17e8c574..29f26b4253 100644 --- a/plugins/configuration/src/main/res/values-sv-rSE/strings.xml +++ b/plugins/configuration/src/main/res/values-sv-rSE/strings.xml @@ -156,4 +156,5 @@ Välj anpassad urtavla Vänligen starta om telefonen eller starta om AAPS från systeminställningar \nannars kommer Android APS inte att ha loggning aktiverat (viktigt för att spåra och kontrollera att algoritmerna fungerar korrekt)! + diff --git a/plugins/configuration/src/main/res/values-tr-rTR/strings.xml b/plugins/configuration/src/main/res/values-tr-rTR/strings.xml index a3ab54fd8f..8cc94052d4 100644 --- a/plugins/configuration/src/main/res/values-tr-rTR/strings.xml +++ b/plugins/configuration/src/main/res/values-tr-rTR/strings.xml @@ -156,4 +156,15 @@ Özel Saat arayüzünü Seçin Lütfen telefonunu yeniden başlat, yada AAPS sistem ayarları üzerinden yeniden başlat.\nAksi taktirde Android APS hiç bir günlük tutmayacak (takip ve doğrulama, algoritmanın düzenli çalışmasi için önemli)! + + Dosya formatı + Oluşturulma tarihi + AAPS Versiyonu + Yapı Varyantı + Cihaz hasta adını dışa aktarma + Cihaz modelini dışa aktarma + Dosya şifreleme + Yeni şifrelenmiş format + Yeni hata ayıklama formatı (şifrelenmemiş) + Bilinmeyen dışa aktarma formatı diff --git a/plugins/configuration/src/main/res/values-uk-rUA/strings.xml b/plugins/configuration/src/main/res/values-uk-rUA/strings.xml index 546b9b2c0c..b38f1e913e 100644 --- a/plugins/configuration/src/main/res/values-uk-rUA/strings.xml +++ b/plugins/configuration/src/main/res/values-uk-rUA/strings.xml @@ -6,4 +6,5 @@ + diff --git a/plugins/configuration/src/main/res/values-zh-rCN/strings.xml b/plugins/configuration/src/main/res/values-zh-rCN/strings.xml index cbe111c769..13470b7066 100644 --- a/plugins/configuration/src/main/res/values-zh-rCN/strings.xml +++ b/plugins/configuration/src/main/res/values-zh-rCN/strings.xml @@ -135,4 +135,5 @@ 不支持或未指定加密算法! + diff --git a/plugins/constraints/src/main/res/values-da-rDK/exam.xml b/plugins/constraints/src/main/res/values-da-rDK/exam.xml index 88ce2014e9..141965f83d 100644 --- a/plugins/constraints/src/main/res/values-da-rDK/exam.xml +++ b/plugins/constraints/src/main/res/values-da-rDK/exam.xml @@ -4,17 +4,27 @@ Varighed af insulin aktivitet (DIA) Du skal angive værdien for DIA i din profil. Den mindst tilladte værdi er 5 timer. + https://wiki.aaps.app/da/latest/Configuration/Config-Builder.html#insulin + Hvis du er tilfreds med værdien for DIA, som du brugte i din pumpe før AAPS, er der ingen grund til at ændre den, når du starter på looping. Du bør selv bestemme, hvad den passende værdi af DIA er for dig. Hypo midlertidig basal + Hvad er den primære årsag til at sætte et hypo midlertidigt mål? For at rette op for hypo, forårsaget af forkerte basal rate indstillinger. + For at forhindre AAPS i at overkorrigere en stigning i blodsukkeret forårsaget af de hurtigtvirkende kulhydrater anvendt til behandling af hypoglykæmi. At korrigere for hypoglykæmi (Lavt blodsukker) induceret som følge af motion. For at undgå lav blodglukose, hvis der allerede er en midlertidig basal på 0%. + https://wiki.aaps.app/da/latest/Usage/temptarget.html Hvilken profil kan bruges og konfigureres offline? Emne: Offlineprofil NS-profil kan bruges, men ikke konfigureres. + https://wiki.aaps.app/da/latest/Configuration/Config-Builder.html#profile Årsager til anvendelse af \"Afbryd pumpe\" i AAPS + Hvad skal man gøre, når man frakobler pumpen fra kroppen? Dette er unødvendigt, da insulin ikke vil blive leveret, hvis pumpen er fysisk afbrudt. + Det forhindrer AAPS i at tage højde for insulin, der ikke blev leveret, mens pumpen er fysisk frakoblet. + Det vil ikke stoppe insulinleveringen, hvis pumpen forbliver forbundet til kroppen. Det vil sende AAPS i åben loop tilstand. + https://wiki.aaps.app/da/latest/Getting-Started/FAQ.html#other-settings AAPS Indstillinger AAPS Indstillinger Hvad er den bedste fremgangsmåde for at lave en backup af dine indstillinger? @@ -26,24 +36,29 @@ Dine indstillinger kan findes i mappen Internt Lager/AAPS/preferences på din telefon. Kopiér dine indstillinger til en sikker placering uden for din telefon (f.eks. ved at bruge et cloud-drev, forbind et kabel fra din telefon til en computer, e-mail osv.) Hvis din telefon er beskadiget eller blevet væk, kan du nemt gendanne dine indstillinger uden en backup. + https://wiki.aaps.app/da/latest/Usage/ExportImportSettings.html + https://wiki.aaps.app/da/latest/Getting-Started/FAQ.html#what-emergency-equipment-is-recommended-to-take-with-me CGM målinger med \"støj\" Hvad skal der gøres, hvis der er støj i CGM data? Gør ingenting - AAPS vil håndtere det. Deaktivér lukket loop for at undgå mulig over- eller underdosering. Erstat konsekvent støjende eller unøjagtige sensorer. Kontrollér, at din CGM-app viser udjævnet data. + https://wiki.aaps.app/da/latest/Usage/Smoothing-Blood-Glucose-Data-in-xDrip.html#smoothing-blood-glucose-data Øvelser og profiler Hvordan kan du bruge profiler til at hjælpe systemet med at håndtere motion? Lav en profil, der skifter til mindre end 100%. Lav et profilskift der skifter til mere end 100%. Lad profilen være sat til 100%. Suspendér Loop. + https://wiki.aaps.app/da/latest/Usage/temptarget.html#activity-temp-target Motion og midlertidige basaler Hvordan kan du bruge midlertidige basaler til bedst muligt at hjælpe systemet med at håndtere motion? Set et aktivitets blodsukkermål der starter, en passende tid før du begynder motion. Set et aktivitetsblodsukker efter motion. Lad dit blodsukker være uændret. Vent, til blodsukkeret falder under din midlertidige hypo-basal, og spis 15g hurtigt virkende kulhydrater. + https://wiki.aaps.app/da/latest/Usage/temptarget.html#activity-temp-target Modtager jeg insulin, når Loop er deaktiveret/suspenderet? Ja, basal insulin fortsætter med at blive levereret. Nej, levering af insulin er stoppet. @@ -53,6 +68,7 @@ Når du oplever hyppig højt eller lavt blodsukker. Mindst én gang om ugen. Når de er angivet og valideret, skal disse værdier ikke ændres over tid. + https://wiki.aaps.app/da/latest/Getting-Started/FAQ.html#androidaps-settings Forudsætninger Hvad er afgørende for at opsætte og bruge AAPS? Valideret profilinformationer (Basaler, I:C, ISF, DIA). @@ -65,13 +81,16 @@ En Github konto. Erfaring med programmering eller redigering af kode. En MiniMed 670G pumpe. + https://wiki.aaps.app/da/latest/Module/module.html Et Smartwatch. En Understøttet CGM. Forudsætninger Hvad er afgørende for at opsætte og bruge AAPS? Valideret information til at konfigurere en profil (ISF, I:C ratio, basal rate, DIA osv.). En kompatibel Android-enhed (f.eks. mobil / mobiltelefon, Android-ur eller tablet). + AndroidAPS kræver en internetforbindelse for at køre i lukket loop. En understøttet CGM og relevant app til at modtage blodsukkerværdier på telefonen/enheden. + https://wiki.aaps.app/da/latest/Module/module.html Opdaterer AAPS Tjek alle de korrekte svar. Du skal have installeret Git og konfigureret på din computer. @@ -79,22 +98,31 @@ Du skal gemme og notere placeringen af din keystore og bruge det samme kodeord til opdateringer som ved den forrige installation. Opdater aldrig, hvis systemet fungerer godt. Hvis du har svært ved at bygge apk\'en, kan du installere en apk, der er blevet bygget af en ven. + https://wiki.aaps.app/da/latest/Installing-AndroidAPS/Update-to-new-version.html#update-to-a-new-version-or-branch Fejlfinding Hvor kan du lede efter hjælp til AAPS? Du kan bede om råd i \"AAPS-users\" Facebook-gruppen. Du bør læse (og genlæse) AAPS-dokumentationen. Du kan bede om råd og notere tekniske problemer eller problemer på AAPS Discord. Du bør spørge din diabetessygeplejerske/endokrinolog. + https://wiki.aaps.app/da/latest/Installing-AndroidAPS/Update-to-new-version.html#troubleshooting https://www.facebook.com/groups/AndroidAPSUsers/ https://discord.gg/4fQUWHZ4Mw + Insulin-pluins Hvilken insulin skal du bruge sammen med Ultra-Rapid Oref-pluginnet? Fiasp® NovoRapid®/Novolog® Humalog® Actrapid®/Humalin R®/\"regulært\" humant insulin. + https://wiki.aaps.app/da/latest/Configuration/Config-Builder.html#insulin Sensitivitets plugins Tjek alle de korrekte svar. Sensitivitetsplugins giver AAPS mulighed for at justere midlertidigt eller kortvarige ændringer i insulin-følsomheden (f.eks. hormonelle ændringer eller problemer med absorption på infusionsstedet). + Sensitivitetsplugins giver brugeren forslag til ændringer i basalrater, IC-forhold og ISF, der kan bruges til at redigere profilen. + Notering af cannula-skift vil nulstille Autosens-ratio tilbage til 100%. + Nogle af plugin-mulighederne har konfigurérbare tidsintervaller, der kan indstilles af brugeren. + https://wiki.aaps.app/da/latest/Configuration/Sensitivity-detection-and-COB.html + https://wiki.aaps.app/da/latest/Usage/Open-APS-features.html#autosens Kulhydrat indtastningsfejl Hvad gør du, hvis du har lavet en forkert kulhydrat indtastning? Slet den forkerte indtastning i Behandlinger og indtast korrekte nye kulhydrat værdier. @@ -102,15 +130,23 @@ Gør ingenting – AAPS vil foretage de passende justeringer. Bolus med insulin ved hjælp af knappen (bolus) i oversigt. Fejl i insulinlevering/indtastning + Hvad skal du gøre hvis du har fået mindre insulin end pumpehistorikken foreslog, f.eks. på grund af en okklusion, mislykket cannula eller du glemmer at sætte pumpen på igen efter et bad? Slet insulinleveringsdata fra Nightscouts Careportal for at slette det fra pumpehistorikken. Sammenlign værdier i AAPS og pumpehistorik (hvis pumpen understøtter dette). Bolus en del af din beregnede \"glemte\" insulin med enten sprøjter / pen eller brug af en kanylefyldning. Gør ingenting, og lad AAPS korrigere eventuelle resulterende højt blodsukker. Kulhydrater om bord (COB) + Hvordan påvirker ændring af ISF-værdien COB-beregningen? + Øgning af ISF vil gøre den beregnede kulhydratabsorptionstid længere + Øgning af ISF vil gøre den beregnede kulhydratabsorptionstid kortere Øget ISF vil ikke påvirke absorbering af beregnet kulhydrat Hvordan ændring af IC værdi påvirker COB beregning? + Øgning af IC vil gøre den beregnede kulhydratabsorptionstid længere + Øgning af IC vil gøre den beregnede kulhydratabsorptionstid kortere Øget IC vil ikke påvirke absorbering af beregnet kulhydrat Hvordan skift af profil procent påvirker COB beregning? + Indstilling af profilen til 150% vil gøre den beregnede kulhydratabsorptionstid længere + Indstilling af profilen til 150% vil gøre den beregnede kulhydratabsorptionstid kortere Ved indstilling af profil til 150%, påvirkes absorbering af beregnet kulhydrat ikke IOB-værdi påvirkes af midlertidige basaler. Høj midlertidlig basal vil ikke blive givet, når dit blodsukker er under målet. @@ -119,22 +155,31 @@ Kulhydrat indtastninger og bolusser Kun gram skal bruges til at estimere og registrere kulhydrater, der er indtaget. Kulhydrater der er indtaget, kan blive registreret ved hjælp af et passende udvekslingssystem (F.eks. DAFNE \"CHO\"-udvekslinger eller europæiske \"brød-enheder\"). + AAPS bruger en dynamisk model til at estimere kulhydratabsorption og beregne COB. Hvis blodsukkeret er uden for acceptable værdier (for lavt eller for høj), kan bolusberegneren bruges til at levere forslag til kulhydrat eller insulin korrektioner. + https://wiki.aaps.app/da/latest/Getting-Started/FAQ.html#insulin-to-carb-ratio-ic-g-u e-kulhydrater Hvad kan du bruge e-kulhydrater (Forlængede kulhydrater) til? Til at planlægge kulhydrat i fremtiden, evt. uddelt over et interval (svarende til en forlænget bolus, der distribuerer insulin over et interval). Til at logge \'gratis\' motions kulhydrater du ønsker at skjule fra AAPS. e-kulhydrater (distribueret i fremtiden) kan hjælpe AAPS i forbindelse med måltider med højt fedt/protein. + Til at registrere redningskulhydrater du bruger til at behandle et lavt blodsukker. + https://wiki.aaps.app/da/latest/Usage/Extended-Carbs.html Ekstern overvågning Hvordan kan du overvåge AAPS (f.eks. for dit barn) eksternt? AAPSClient app, Nightscout app og Nightscout webside alle giver dig mulighed for at følge AAPS eksternt. Andre apps (f.eks Dexcom følger appen eller X-drip der kører i følger tilstand) tillader dig at følge nogle parametre (f.eks blodsukker eller sensor værdier), men bruger forskellige algoritmer, så de kan have ukorrekte IOB eller COB værdier. For at følge AAPS eksternt, skal begge enheder have internetadgang (f.eks. via Wi-Fi eller mobilnetværk). AAPSClient, der anvendes som ekstern følger, vil både overvåge og give fuld kontrol over AAPS. + https://wiki.aaps.app/da/latest/Children/Children.html Insulinfølsomhedsfaktor (ISF) En forhøjelse af ISF-værdierne vil føre til mere insulintilførsel for at dække en bestemt mængde kulhydrater. + Reduktion af ISF-værdier fører til mere insulintilførsel for at korrigere for et højt blodsukker. + Forhøjelse eller sænkning af ISF har ingen effekt på insulinlevering, når blodsukkeret er under målet. ISF skal indtastes i dine AAPS præferencer. Ændring af ISF-værdien i din profil er nok til at anvende ændringen. + https://wiki.aaps.app/da/latest/Getting-Started/FAQ.html#insulin-sensitivity-factor-isf-mmol-l-u-or-mg-dl-u + https://wiki.aaps.app/da/latest/Usage/Profiles.html Du kan bruge mere end en værdi for I:C forholdet i din profil. Hvis du ændrer din ISF i din profil, bør du også altid ændre dit I:C-forhold. Insulin til kulhydratforhold (I:C ratio) @@ -142,12 +187,17 @@ Lavere I:C-forhold fører til mindre insulin, der leveres til en given mængde af kulhydrater. Hvis du har 0 COB, vil en ændring af I:C-forholdet føre til en anden mængde af insulin for at rette en given BS-værdi. IC vil være anderledes, hvis du tæller brød (udvekslingsenhed) som 10g eller 12g. + Betydningen af IC er: Hvor mange brødenheder er dækket af 1IE insulin? + https://wiki.aaps.app/da/latest/Getting-Started/FAQ.html#insulin-to-carb-ratio-ic-g-u Profilskift + Når et 90% profilskift angives, hvilke svar er så sande? Basalrater vil være 10% lavere. ISF vil være 10% højere. Værdien af I:C forholdet vil være et 10% lavere tal. ISF og I:C-forhold vil være uændret. + https://wiki.aaps.app/da/latest/Usage/Profiles.html#profile-switch Profilskift + Når et 120% profilskift angives, hvilke svar er så sande? Blodsukkermålet vil være 20% højere. Basalrater vil være 20% højere. Blodsukkermålet vil være uændret. @@ -156,12 +206,21 @@ Hvis du står op 2 timer tidligere end normalt, hvordan skal du så fortælle AndroidAPS om ændringen i din tidsplan? Start et profilskift med et tidsskift på 2 Start et profilskift med et tidsskift på -2 + Sæt et \"Spiser snart\" midlertidigt blodsukkermål. + Lav et profilskift med en procent på mere end 100%. + https://wiki.aaps.app/da/latest/Usage/Profiles.html#timeshift Ændringer til profiler Basal rater, ISF, I:C ratioer, mv. skal indstilles i profiler. Aktivering af ændringer til din Nightscout-profil kræver, at din AAPS-telefon har internetforbindelse. Redigering af profiler til ændring af værdier er tilstrækkelig til at foretage ændringer. + Flere profiler kan oprettes og vælges til at tilpasse til skiftende omstændigheder (f.eks. hormonelle ændringer, skiftende arbejde, hverdags- / weekendlivsstil). + https://wiki.aaps.app/da/latest/Module/module.html#good-individual-dosage-algorithm-for-your-diabetes-therapy Hjælp til basal rater + Hvor man skal opsøge hjælp med at oprette sin basalrate og andre indstillinger. Dit diabetes team Google Facebook + Anden medicin. Læs venligst erklæringen nedenfor og check boksen for at acceptere den. + AAPS reducerer basalraten eller suspenderer insulintilførslen for at hæve blodsukkeret. Medicin i klassen SGLT-2-hæmmere (glifloziner) kan forhindre øgelsen in blodglukose og kan, af denne årsag, producere et farligt insulinmangel som leder til DKA. +\nAlmindelige mærkenavne er: Invokana®, Forxiga®, Jardiance®, Steglatro®, Suglat®, Apleway®, Deberza®, Synjardy®, Vokanamet®, Xigduo®.\n\nJeg lover hermed, at jeg ikke tager sådan medicin under brug af AAPS eller vil deaktivere loopet før sådan medicin tages i brug. diff --git a/plugins/constraints/src/main/res/values-da-rDK/objectives.xml b/plugins/constraints/src/main/res/values-da-rDK/objectives.xml index d3e98fddd0..bf9fd53f2c 100644 --- a/plugins/constraints/src/main/res/values-da-rDK/objectives.xml +++ b/plugins/constraints/src/main/res/values-da-rDK/objectives.xml @@ -16,8 +16,10 @@ Vær opmærksom på sikkerhedsfunktionerne og juster sikkerhedsparametre, når det er nødvendigt. Begynde at bruge lukket loop med lav glukose suspendering Kør i lukket loop med max IOB = 0 i et par dage uden for mange LGS-begivenheder + Indstilling af MaxIOB til nul forhindrer dig i at få hypoglykæmi og vil ikke tilføje mere insulin udover basalraten (undtagen i situationer med negative IOB) Tuning af lukket loop, hæv max IOB over 0 og sænk gradvist BG målet Kør i et par dage, og mindst én nat uden lave BG alarmer, før du sætter målet for BG ned + Opdater MaxIOB som barnet vokser. Lad ikke systemet give dig mere insulin, end du kan dække med mad = virkelig høj værdier er en dårlig idé. Justér om nødvendigt basaler og forhold og aktivér derefter auto-sens 1 uges vellykket looping i dagtimerne med alle måltider tastet ind Hvis dit Autosens-resultat ikke oscillerer omkring 100%, er din profil sandsynligvis forkert. @@ -25,11 +27,18 @@ Du skal læse wikien og hæve maxIOB for at få SMB\'er til at fungere fint! En god start er maxIOB=gennemsnitlig måltidsbolus + 3 x max daglig basal Brug af SMB er dit mål. Oref1-algoritmen var designet til også at hjælpe dig med dine bolusser. Du bør ikke give fuld bolus for din mad, men kun en del af det og lade AAPS give dig resten, hvis det er nødvendigt. På denne måde har du mere plads til at fejlberegne kulhydrater. Vidste du, at du kan indstille en procentdel af boluslommeregnerens resultat for at reducere størrelsen af bolus? Aktiverer yderligere funktioner til brug i dagtimerne, såsom Dynamisk sensitivitet-plugin + Sørg for, at SMB fungerer korrekt. Aktivér DynamicISF-plugin\'et og identificér den passende kalibrering for din krop specifikt. Det er tilrådeligt at begynde med en værdi, der er lavere end 100% af sikkerhedsmæssige årsager. + Den Dynamiske Sensitivitetsplugin er baseret på den idé, at det totale insulinforbrug og nuværende glycæmi-niveauer påvirker din følsomhed. DynamicISF-plugin kan justere Insulinfølsomhedsfaktoren (ISF) som algoritmen benytter. Aktiverer automatisering + Læs dokumentationen om hvordan automatisering virker. Opsæt dine første enkle regler. I stedet for handling, lad kun AAPS vise notifikationer. Når du er sikker på, at automatisering udløses på det rigtige tidspunkt, skal du erstatte notifikationen med reel handling. (https://wiki.aaps.app/en/latest/Usage/Automation.html) + Automatisering kan være en god tjener, men en dårlig mester. Lad være med at overbruge den. Forsøg ikke at erstatte den underliggende algoritme. Test kun reglen med besked før brug. Det afhænger af rækkefølgen. + BS er tilgængeligt i NS eller Tidepool + Pumpestatus tilgængelig i NS eller Tidepool Manuelle handlinger Udført: %1$s Lær at styre AAPS Udfør forskellige handlinger i AAPS + Du har lært at håndtere det grundlæggende omkring AAPS. De vigtigste knapper er på Overblik-skærmen tilgængelig ved klik eller langt klik. Der er også adgang til flere knapper på Action-skærmen. Du bør vide, hvordan man sætter et plugin\'s skærm på toppen af rullebaren eller lade det vise i øverste venstre liste af aktiverede plugins. Indstil profil til 90% i 10 min (Tryk og hold på profilnavn i Oversigt) Simulér brusebad. Afbryd pumpen i 1t (Tryk og hold på Open Loop) ... og genforbind på samme måde @@ -39,12 +48,41 @@ Brug skala-funktion ved at trykke på BG-diagrammet længe Bevis din viden Undersøg spørgsmålene. Du får fire mulige svar på hvert spørgsmål. Der kan være mere end et korrekt svar. Tjek alle dem, der er korrekte, og vælg GODKEND. + Du behøver ikke at være udvikler, men du har brug for NS til at passere mål. Derudover er en kompatibel pumpe og computer til at bygge AAPS for første gang og for hver opdatering også nødvendige. + AAPS kan køres offline. + Profilen skal gennemgås og opdateres. Bedre profil = bedre resultater. + DIA i looping har en anden betydning (tid indtil alt insulin absorberes) end i klassisk pumpebehandling (tid indtil det meste insulin absorberes). + Du lærte betydningen af ISF-værdi, og hvordan det påvirker mængden af insulin, der anvendes til BS korrektion. + Du lærte betydningen af IC-værdi, og hvordan det påvirker mængden af insulin, der anvendes til at dække kulhydrater. + Hypo midlertidigt mål bruges kun til at forhindre overkorrektion efter hypo, når IOB er negativ. Yderligere handlinger bør evalueres for at forhindre denne situation igen i fremtiden. + Brug af procent påvirker ikke BS-mål men basal, ISF og IC justeres for at give mere insulin (over 100%%) eller mindre insulin (under 100%%). + Ved at bruge tidsforskydning i profilmenuen kan du tilpasse døgnprofilen til uregelmæssigheder som at vågne senere. + Redigering af profilen i sig selv er ikke tilstrækkeligt til at foretage en ændring. Du skal stadig udføre et profilskift for at aktivere ændringerne. + Du bør reducere mængden af insulin i kroppen mindst 1 time før start af motion ved at vælge en profil under 100%. + Indstilling af et højere midlertidigt mål mindst 1 time før motion hjælper med at reducere mængden af insulin i kroppen. + Når du ikke kan stole på CGM-værdierne, bør du ikke bruge loop uden opsyn. + AAPS skal vide, at pumpen ikke er tilsluttet for at tælle IOB korrekt. + At fortælle hvilken insulin der er i pumpen er nødvendigt, da det påvirker IOB-beregningen. + Følsomhedsdetektion er en del af algoritmen, som giver mulighed for at tilpasse insulindosis til forskellige situationer. + Dine fremskridt i Målsætninger gemmes sammen med andre indstillinger, og du bør sikkerhedskopiere dem. + Behold altid eksporterede indstillinger og genererede APK, også uden for telefonen, hvis telefonen går tabt, bliver beskadiget osv. Et godt sted kan være enhver cloud-løsning tilgængelig fra telefonen. I dette tilfælde kan du gendanne AAPS på en anden enhed på et par minutter. God praksis er at gemme din hovedadgangskode et sikkert sted også. Uden den er din backup ubrugelig. Det samme gælder for signeringsnøgler (. ks fil) og adgangskoder, der bruges til at opbygge AAPS. Resten er ikke vigtigt - det kan når som helst downloades fra internettet igen. + Hvis du har lavet forkert input til AAPS eller det ikke matcher virkeligheden, så løs det så hurtigt som muligt, da det kan føre til overdosering. AAPS skal altid informeres bedst muligt om kulhydrat, insulin osv. + Hvis du analyserer om AAPS fungerer godt for dig, giver det meget nyttig information at kigge på IOB-grafen. + COB-beregninger afhænger af forholdet mellem ISF og IC. Stigende ISF eller faldende IC vil føre til længere absorptionstider, men profilskift med procent angivet ændrer begge værdier på samme tid og absorptionstid påvirkes ikke. + Kun gram er tilladt ved indtastning af kulhydrater. + E-kulhydrater er en erstatning for udvidet bolus i pumpeverdenen. + Fjernovervågning og -kontrol er muligt, men ikke alle funktioner skal nødvendigvis være tilgængelige eksternt. Svar deaktiveret indtil: %1$s Forkert svar! Næste uafsluttede Anmod om kode: %1$s (tjek alle de korrekte svar) + https://wiki.aaps.app/da/latest/Getting-Started/FAQ.html#what-to-do-when-taking-a-shower-or-bath + https://wiki.aaps.app/da/latest/Getting-Started/Screenshots.html#the-homescreen + https://wiki.aaps.app/da/latest/Configuration/Config-Builder.html + https://wiki.aaps.app/da/latest/Getting-Started/Screenshots.html#the-homescreen Ingen forbindelse til internettet Tid kunne ikke hentes Quiz krav ikke opfyldt + Hvad jeg har lært: diff --git a/plugins/constraints/src/main/res/values-da-rDK/strings.xml b/plugins/constraints/src/main/res/values-da-rDK/strings.xml index 290168079d..ed14a20b5c 100644 --- a/plugins/constraints/src/main/res/values-da-rDK/strings.xml +++ b/plugins/constraints/src/main/res/values-da-rDK/strings.xml @@ -2,11 +2,27 @@ + Sommertidsændring inden for de næste 24 timer eller mindre + Sommertidsændring mindre end 3 timer siden - Lukket loop deaktiveret + Frigør mindst %1$d MB fra intern lagerplads! Loop deaktiveret! + gammel version + meget gammel version + Applikationen er udløbet + Ny version er ikke blevet tjekket i mindst %1$d dage! Tilbagefalder til LGS efter %2$d dage, loop vil blive deaktiveret efter %3$d dage. Gendan internetforbindelse! + Vi har opdaget, at du kører en ugyldig version. Loop deaktiveret! + Version %1$s tilgængelig + Version %1$s udløber den %2$s + Genberegnede data anvendt + BG for tæt:\n%1$s\n%2$s + genberegnet + dobbelpostering + Flad data. Anses for at være forkert + Begrænser udvidet bolus til %1$.1f IE på grund af %2$s Begrænser kulhydrater til %1$d g på grund af %2$s Pumpe er ikke egnet til midlertidig basal Lukket loop tilstand deaktiveret i præferencer @@ -18,14 +34,20 @@ hård grænse Behandlings sikkerhed + Fuldført, godt klaret! Ikke afsluttet endnu Tid forløbet Maksimal IOB sat korrekt BS tilgængelig fra valgte kilde + Synkroniseringstjeneste har skriverettighed Loop aktiveret APS valgt Lukket tilstand aktiveret OBJ Oplæringsprogram Vil du nulstille objektiv start? Du kan miste dine fremskridt. + Næste + Forrige + Nulstil færdig tilstand + Nulstil startet tilstand diff --git a/plugins/constraints/src/main/res/values-ko-rKR/objectives.xml b/plugins/constraints/src/main/res/values-ko-rKR/objectives.xml index b6c8777f6a..0b0e2d5cf5 100644 --- a/plugins/constraints/src/main/res/values-ko-rKR/objectives.xml +++ b/plugins/constraints/src/main/res/values-ko-rKR/objectives.xml @@ -55,7 +55,7 @@ ISF 값의 의미와 인슐린 양이 어떻게 BG 보정에 영향을 미치는지 배웠습니다. IC 값의 의미와 이것이 탄수화물을 커버하는 데 필요한 인슐린의 양에 어떻게 영향을 미치는지 배웠습니다. 일반적으로 음성 IOB가 쌓여 있는 경우, 피하 주사 후 피하 주사 보정을 방지하기 위해 피하 주사 임시 대상이 사용됩니다. 향후 이러한 상황을 다시 방지하기 위해 추가 조치를 평가해야 합니다. - 백분율을 사용하는 것은 표적 BG에 영향을 미치지 않지만 basal, ISF 그리고 IC는 더 많은 인슐린 (100% 이상) 또는 더 적은 인슐린 (100% 미만)을 제공하도록 조정됩니다. + 백분율을 사용하는 것은 표적 BG에 영향을 미치지 않지만 basal, ISF 그리고 IC는 더 많은 인슐린 (100%% 이상) 또는 더 적은 인슐린 (100%% 미만)을 제공하도록 조정됩니다. 프로파일 스위치의 시간 이동을 사용하여 일일 프로파일을 늦은 기상과 같은 불규칙성에 적응시킬 수 있습니다. 프로파일 편집 자체만으로는 변경할 수 없습니다. 변경한 내용을 활성화하려면 프로파일 전환을 진행해야 합니다. 프로파일을 100% 이하로 선택하여 운동을 시작하기 최소 1시간 전에 체내 인슐린 양을 줄여야합니다. diff --git a/plugins/insulin/src/main/res/values-da-rDK/strings.xml b/plugins/insulin/src/main/res/values-da-rDK/strings.xml index f6c2efdda1..4f249408e8 100644 --- a/plugins/insulin/src/main/res/values-da-rDK/strings.xml +++ b/plugins/insulin/src/main/res/values-da-rDK/strings.xml @@ -11,5 +11,8 @@ Spidstidspunkt [min] Free-Peak Oref Rapid-Acting Oref + Ultra-Rapid Oref DIA af %1$f for kort - bruger %2$f i stedet! + Novorapid, Novolog, Humalog + Fiasp diff --git a/plugins/main/src/main/res/values-da-rDK/strings.xml b/plugins/main/src/main/res/values-da-rDK/strings.xml index 2828b0f607..f82470defa 100644 --- a/plugins/main/src/main/res/values-da-rDK/strings.xml +++ b/plugins/main/src/main/res/values-da-rDK/strings.xml @@ -23,6 +23,11 @@ 3. Test Engangsadgangskode Nulstil Autentificering På hver follower telefon installeres Authenticator app, der understøtter RFC 6238 TOTP tokens. Populære gratis apps er:\n • Authy\n • Google Authenticator\n • LastPass Authenticator\n • FreeOTP Authenticator + Ved at nulstille autentificeringen gør du alle allerede tilvejebragte authenticatorer ugyldige. Du vil bliver nødt til at opsætte dem igen! + OK + FORKERT STØRRELSE! + FORKERT PIN + FORKERT OTP Forkert kode. Kommandoen annulleret. Timeout mens du venter på afslutning af tidligere pumpe kommunikation Tilladte telefonnumre @@ -87,6 +92,9 @@ Ugyldigt beskedindhold Send sms, hvis der udløses en utilgængelig pumpebegivenhed Rapportér pumpe utilgængeligt + For at skifte Loop-tilstand til LGS (Low Glucose Suspend), svar med kode %1$s + For at skifte Loop-tilstand til Lukket loop, svar med kode %1$s + Nuværende loop-tilstand: %1$s Forkert Format BG: Sidste BG: @@ -133,6 +141,7 @@ Fejl i basal rate værdier Fejl i målværdier Fejl i ISF-værdier + Nogle af profilnavnene indeholder punktummer.\nDette understøttes ikke af NS.\nProfiler vil ikke blive uploadet til NS. Ugyldig profil %1$s blev ikke accepteret fra NS Vis Fejl @@ -165,6 +174,8 @@ Patch pumpe Vis statuslys på startskærm + Grænseværdi for advarsel på cannula-alder [t] + Grænseværdi for kritisk cannula-alder [t] Grænseværdi for insulin-alder [h] Grænseværdi for kritisk insulin-alder [h] Grænseværdi advarsel for sensoralder [h] @@ -232,6 +243,7 @@ Forkort titel Vis notefelt i behandlingsdialoger Bolus guiden udfører beregning, men kun denne del af beregnet insulin leveres. Nyttig med SMB algoritme. + Levér fuld bolus (100%), hvis glycæmi er ældre end Aktiver bolus rådgiver Brug påmindelse om at begynde at spise senere i stedet for guiden under høj glykæmi (\"pre-bolus\") Aktiver superbolus i guiden @@ -243,6 +255,7 @@ Forudsigelser Behandlinger + Puls Afvigelses hældning Aktivitet Blodsukker virkning @@ -260,6 +273,7 @@ ABS AFVHÆL BEHANDL + HR SENS Graf skala Graf @@ -269,12 +283,14 @@ Knapper vises altid nederst på skærmen Stort display Udseende + brug: Send dagens logfiler til udviklere sammen med denne tid. Uventet situation. UR Overvåg og kontrollér AndroidAPS ved hjælp af dit WearOS-ur. (Intet ur forbundet) + Pumpestatus Loop status Guide:\nInsulin: %1$.2fE\nKH: %2$dg Valgt guide er ikke længere tilgængeligt. Opdater venligst din widget @@ -296,9 +312,46 @@ Generelle indstillinger Giv besked ved SMB Vis SMB på uret som en standard bolus. + Brugerdefinerede Urskiveindstillinger + Brugerdefineret Urskivegodkendelse + Godkend indlæste brugerdefinerede urskive til at ændre og låse nogle overvågningsindstillinger der passer til urskivens design + Brugerdefineret Urskive: %1$s + Indlæs Urskive + Infos Urskiver + Eksporter skabelon + Brugerdefineret urskiveskabelon eksporteret Send alle data igen Åbn indstillinger på ur + Liste over præferencer låst af urskiven + Liste over præferencer påkrævet af urskiven + Liste over felter inkluderet i Urskiven Viser en løbende notifikation med en kort oversigt over, hvad dit loop gør GAMLE DATA + forsøger at hente data fra pumpen. + TDD: Stadig gammel data! Kan ikke indlæse fra pumpen. + g + t + Ingen aktiv profilskift! + Profil:\n\nTidsskift: %1$d\nProcent: %2$d%%\" + %1$.2fIE %1$.0f%% + Ingen profil indlæst + Gælder kun i APS-tilstand! + Sidste resultat ikke tilgængeligt! + LUKKET LOOP + ÅBEN LOOP + LOOP DEAKTIVERET + APS + Sidste brug + Sidste Aktivering + I dag + vægtet + Mål gælder kun i APS-tilstand! + Ingen historisk data! + IE + Midlertidigt mål + indtil + Standardmål + mål + Rate: %1$.2fIE/t (%2$.2f%%) \nVarighed %3$d min diff --git a/plugins/source/src/main/res/values-da-rDK/strings.xml b/plugins/source/src/main/res/values-da-rDK/strings.xml index c9c981ad8e..59ced584ab 100644 --- a/plugins/source/src/main/res/values-da-rDK/strings.xml +++ b/plugins/source/src/main/res/values-da-rDK/strings.xml @@ -1,14 +1,19 @@ + NSClient BS + NS BS Downloader BG data fra Nightscout + xDrip+ BS Modtag BG-værdier fra xDrip+. BYODA BYODA Modtag BS-værdier fra \'Byg din egen Dexcom App\'. Eversense App (patched) Modtag BG værdier fra den patchede Eversense app. + Glimp Modtag BG-værdier fra Glimp. + MM640g Modtag BG-værdier fra 600SeriesAndroidUploader. Poctech Modtag BS-værdier fra Poctech app @@ -19,7 +24,16 @@ Tomato (MiaoMiao) Tomato Modtag BS-værdier fra Tomato-appen (MiaoMiao enhed) + GlucoRx Aidex Aidex Modtag BG-værdier fra GlucoRx Aidex CGMS. + Tilfældigt BS + Generér tilfældig BS-data (kun demotilstand) + BS + Seng BS data til xDrip+ + I xDrip+, vælg 640g/Eversense som datakilde BS upload indstillinger + Log sensorændring til NS + Opret begivenhed \"Sensorskift\" i NS automatisk ved start af sensor + retning diff --git a/plugins/sync/src/main/res/values-da-rDK/oh_strings.xml b/plugins/sync/src/main/res/values-da-rDK/oh_strings.xml index d3ba81bbb1..5a87308ed0 100644 --- a/plugins/sync/src/main/res/values-da-rDK/oh_strings.xml +++ b/plugins/sync/src/main/res/values-da-rDK/oh_strings.xml @@ -1,5 +1,7 @@ + Open Humans + OH Open Humans giver dig mulighed for at uploade dine diabetes data og donere det til videnskabelige projekter. Log af Opsætning @@ -37,6 +39,8 @@ Algoritme Fejlretningsdata Data IKKE uploadet Kodeord + Nightscout URL + Nightscout API Secret Fritekstfelt Jeg forstår og er enig. Login på Open Humans diff --git a/plugins/sync/src/main/res/values-da-rDK/strings.xml b/plugins/sync/src/main/res/values-da-rDK/strings.xml index 77532fa147..74bbb5a74a 100644 --- a/plugins/sync/src/main/res/values-da-rDK/strings.xml +++ b/plugins/sync/src/main/res/values-da-rDK/strings.xml @@ -14,6 +14,7 @@ Opret Nightscout meddelelse for fejldialoger og lokale advarsler (kan også ses i Careportal under Behandlinger) Opret Nightscout meddelelser fra kulhydrat krævet advarsler Synkroniserer dine data med NightScout + Synkroniserer dine data med NightScout ved brug af v3 API Blokeret af opladningsmuligheder Blokeret af forbindelsesmuligheder Ikke understøttet version af Nightscout @@ -22,6 +23,8 @@ NSClient funktionsfejl. Overvej NS og NSClient genstart. NSCLIENT har ingen skrivetilladelse. Forkert API-secret? + NSClientV3 + NSV3 NSClient NSCI URL: @@ -32,6 +35,9 @@ NS API secret NS API secret Indtast NS API secret (min 12 tegn) + NS-adgangstoken + NS-adgangstoken + Adgangstoken genereret på NS-adminside (min. 17 tegn) Afgiver nu Ryd kø Vis kø @@ -69,6 +75,8 @@ Akut forældet data grænse [min] Log app-start til NS Kopier NS-indstillinger (hvis de findes)? + Opret forbindelse til websockets + Aktivering betyder: hurtigere opdateringer, modtagelse af alarmer og meddelelser og højere batteriforbrug svarende til v1. Alle andre uploadere til NS skal bruge v3-protokollen. Dit brugernavn til Tidepool, normalt din e-mailadresse Login Brugernavn @@ -88,7 +96,24 @@ Fjern alle Nulstil start Upload nu + Ikke tilsluttet + Skrivebeskyttet + Arbejder + xDrip+ + XD + Send data til xDrip+ + Vis detaljeret IOB + Bryd IOB ned i bolus- og basal-IOB på urskiven + Vis BGI + Tilføj BGI til statuslinje + xDrip+ Statuslinje Avanceret + Loop deaktiveret + Send statuslinje til xDrip+ + xDrip+ ikke installeret + Kalibrering sendt til xDrip+ + Send glukose og behandlingsdata til xDrip+. Datakilde \"xDrip+ Sync Follower\" skal vælges og accept af data skal være aktiveret i Indstillinger - \"Inter-app settings\" - \"Accept Glucose\"/\"Treatments\" + Aktivér udsendelser til xDrip+. diff --git a/pump/combov2/src/main/res/values-da-rDK/strings.xml b/pump/combov2/src/main/res/values-da-rDK/strings.xml index 5436d2dc1c..f8452e78ba 100644 --- a/pump/combov2/src/main/res/values-da-rDK/strings.xml +++ b/pump/combov2/src/main/res/values-da-rDK/strings.xml @@ -1,20 +1,130 @@ + Accu-Chek Combo + Indbygget pumpeintegration til Accu-Chek Combo-pumper + Kunne ikke forbinde til pumpen + Ikke parret til en pumpe + Pumpe afsluttede forbindelsen + Combo-advarsel + Combo-fejl + Ring til hotline for opdatering + Bluetoothfejl; lav parring igen + Reservoir tomt Batteri afladet Tilstopning + Afslutning af sikkerhedskopiering af pumpeoperation Mekanisk fejl + Elektronisk fejl + Strøm afbrudt + Afslutning af lånepumpeoperation + Reservoir-fejl + Infusionssæt ikke klargjort + Udvidet bolus understøttes ikke + Accu-Check Combo v2 + Par med pumpe + Upar pumpe + Driver-status + Nuværende aktivitet Bluetooth adresse + Start parring + Combo-parring i gang + Skridt til at udføre parring med din Combo:\n\n +1. Navigér til Bluetooth-indstillingerne på din pumpe\n +2. Tjek om en enhed allerede er vist som parret. I så fald, gå til pumpeskærmen \"Slet enhed\" for at slette/fjerne enheden\n +3. Gå til skærmen med \"Tilføj enhed\" og start parring på pumpen\n +4. Klik på knappen \"Start parring\" nedenfor for at starte parring i AndroidAPS\n + Efter et stykke tid vises telefonens navn på pumpens skærm; tryk på CHECK for at bekræfte.\n\n +bekræft den færdige parring på din pumpe efter parringen er fuldført og vend tilbage til hovedpumpeskærmen ved at trykke to gange på CHECK-knappen.\n\n +Hvis der ikke oprettes forbindelse efter mere end omkring 5 minutter:\n\n +1. Tryk på Tilbage eller \"Annuller Parring\"-knappen\n +2. Annuller parringen på Combo (tryk på både OP- og MENU-knapperne på samme tid for at annullere parring)\n +3. Prøv at parre igen + Indtast PIN + Annullér parring + 10-cifret PIN + Succesfuldt parret med Combo + Parring med Combo annulleret af bruger + Combo scanning timeout nået + Parring fejlede på grund af fejl: %1$s + Parring afbrudt af ukendt årsag + "Ugyldig parring PIN-længde: Har brug for %1$d cifre, fik %2$d" + Scanner efter pumpe + Etablerer Bluetooth-forbindelse (forsøg nr. %1$d) + Udfører håndtryk med pumpe + Pumpe anmoder om 10-cifret PIN + Færdiggør parring + Inen forbindelse i %1$d minutter + Mindre end 1 minut siden + Indstiller aktuel pumpetid + Indstiller aktuel pumpedato Ikke initialiseret + Kontrollerer pumpe Klar Sat på pause + Pumpe er suspenderet + Udfører Kommando + Læser basalprofil Indstiller basal profil + Indstiller %1$d%% TBR i %2$d minutter + Annullerer igangværende TBR + Leverer %1$.1f IE bolus + Henter TDD-historik + Opdaterer pumpetid + Opdaterer pumpestatus + PIN virkede ikke. Tjek om der var en tastefejl. Hvis dette bliver ved med at ske, annullér og prøv at parre igen. + Opdagelsesvarighed (i sekunder) + Aktivér detaljeret Combo-logning + Henter basalprofil; %1$d faktor(er) læst + Indstiller basalprofil; %1$d faktor(er) skrevet + Leverer bolus (%1$.1f af %2$.1f IE leveret) + Kan ikke levere behandling - pumpen er pauseret + Utilstrækkelig insulin i reservoir Bolus annulleret Bolus levering mislykkedes. Det ser ud til at ingen bolus blev leveret. Kontroller venligst pumpen for at undgå en dobbelt bolus og derefter bolus igen. For at beskytte mod fejl hentes bolusser ikke automatisk. + Bolus ikke leveret + Kan ikke få adgang til pumpedata; pumpen skal parres igen + Uagtede bolusleverancer opdaget. Annullerer bolus af sikkerhedsmæssige årsager. + Forkert aktiv basalprofil; profil 1 skal være den aktive, ikke profil %1$d + Ukendt Combo-alarm + Combo-alarm %1$d%% (%2$d min tilbage) + %1$d%% (mindre end 1 min tilbage) + Indlæsning af TDD\'er annulleret + Hentning af TDD\'er mislykkedes Pumpebatteri er lavt + Pumpe reservoir-niveau er lavt + Indstilling af TBR lykkedes + Indstilling af TBR mislykkedes + Sæt emuleret 100% TBR + Lader igangværende emuleret 100% TBR færdiggøre + Ignorerer redundant 100% TBR-anmodning + Uventet grænse opstod under justering af TBR: målprocent var %1$d%%, ramte en grænse på %2$d%% + Kan ikke indstille absolut TBR hvis basalraten er nul + Par AndroidAPS og Android med en pt. uparret Accu-Chek Combo-pumpe + Frakobl AndroidAPS og Android med en pt. parret Accu-Chek Combo-pumpe + Ukendt TBR blev fundet og stoppet; procent: %1$d%%; resterende varighed: %2$s + Forbindelsesfejl: %1$s Seneste forb: %1$d min siden + Alarm %s + Sidste bolus: %1$s @ %2$s Midl: %s Reservoir: %dIE tom lav + fuld + Batt.: %s + Detektér automatisk og indtast automatisk ændring af insulinreservoirændringer + Detektér automatisk og indtast automatisk ændring af batteriskift + Insulinreservoirændring automatisk indtastet af combov2-driver + Batteriændring indtastet automatisk af combov2-driver + Tidszone ændret + Dato og/eller klokkeslæt ændret + Sommertid startet + Sommertid afsluttet + Kan ikke oprette forbindelse til pumpen, da pumpen rapporterede en fejl. Brugeren skal håndtere fejlen, og derefter enten vente 5 minutter eller trykke på \'Opdater\'-knappen i fanen driver. + Genindlæser pumpens status, efter pumpen rapporterede en fejl + Gå tilbage + Kan ikke udføre parring fordi driveren ikke er initialiseret. Dette sker typisk, fordi de nødvendige Bluetooth-tilladelser ikke er blevet tildelt. Gå tilbage, tildel Bluetooth-tilladelser, og prøv derefter at parre igen. + Kan ikke starte driver - Bluetooth er deaktiveret + Driver kan ikke køre - denne enhed understøtter ikke Bluetooth diff --git a/pump/eopatch/src/main/res/values-da-rDK/strings.xml b/pump/eopatch/src/main/res/values-da-rDK/strings.xml index a71bac2b26..f53918104f 100644 --- a/pump/eopatch/src/main/res/values-da-rDK/strings.xml +++ b/pump/eopatch/src/main/res/values-da-rDK/strings.xml @@ -1,11 +1,39 @@ + EOPatch2 + EOP2 + Pumpeintegration til EOPatch2 / GlucoMen Day Alarmer + Lavt reservoir Alarmer + Patch Udløbspåmindelser + Patch buzzer-påmindelser + t:mm a + BLE-status + Serienummer + Lot-nummer + Vækningsdato & tid + Udløbstidspunkt Status Standard basal rate Midlertidig basal rate Total afgivet + Profilens basal er under 0.05 IE/t. EOPatch har en minimum injektionsenhed på 0.05IE. Prøv venligst igen efter profilen er sat til mere end den mindste injektionsenhed. + Ingen profil valgt. Vælg venligst en profil og prøv igen. dag + + + - + 30 min + 1 t + 1 t 30 min + 2 t + \u0020 + For at skifte til ny Patch skal den nuværende Patch kasseres. Al insulintilførsel fra Patchen annulleres. + Bortskaffelse af Patch afsluttet. + Patch er blevet deaktiveret.\nKassér Patchen.\nFjern Patchen fastgjort til din krop. + En bolus er i processen af at blive leveret. Vil du virkelig annullere insulintilførslen og kassere Patchen? + En midlertidig basal er i processen af at blive leveret. Vil du virkelig annullere insulintilførslen og kassere Patchen? + En bolus og en midlertidig basal er i processen af at blive leveret. Vil du virkelig annullere insulintilførslen og kassere Patchen? + Er du sikker på at du vil kassere en Patch? Resterende insulin Resterende tid Afslut @@ -26,11 +54,15 @@ 2. Lyt efter ét bip. Start parring + Patch parrer 2/6 + Den nye Patch parres.\nHold Patchen og mobilen så tæt på hinanden som muligt Forberéd dig på vedhæftning af Patchen 3/6 Fjern den klæbelige tape og tryk derefter på \'Næste\'. [Caution1] Hvis en nål stikker ud, skal du trykke på \'Kassér\'. + [Caution2] Hvis Patchen er våd eller beskidt, eller dens klæbetape er foldet, skal du trykke på \'Kassér\'. + Fastgøring af Patchen 4/6 Rens og tør påføringsstedet, og sæt derefter Patchen på huden. Kontrollér infusionsstedet, og tryk derefter på \'Start sikkerhedskontrol\'. @@ -53,8 +85,23 @@ Patch-kommunikationstjek Kontrollerer Patch-kommunikation… Placér din mobil tættere på Patchen. + Gå venligst til en anden lokation og prøv igen. + Kommunikationsfejl + Kommunikation lykkedes + Forbundet med Patchen. + Annullér parring dage +  IE + Efter suspenderingen vil den nuværende leverende Bolus & Midlertidig basal vil blive annulleret. \n\nRate : %1$s IE/t\nResterende tid : %2$s\n& Insulin tilbage: %3$.2f IE + Efter suspenderingen vil den aktuelt leverende Bolus blive annulleret. \n\nInsulin tilbage: %1$.2f IE + Efter suspenderingen vil den nuværende leverende Midlertidige Basal blive annulleret. \nRate : %1$s IE/t\nResterende tid : %2$s + Insulintilførslen suspenderes. + Kassér/Ændr Patch + Aktivér Patch + Kassér Patch Genoptag + Kassér + Kommunikationstjek Suspendér Sat på pause Kører @@ -62,8 +109,25 @@ Bekræft Alarm Forbinder + Lader + Behandler Prøv igen + [Caution] Fjern IKKE kanylehætten og bagsiden af klæbemidlet før yderligere instruktion. + Er du sikker på at du vil kassere den nuværende Patch? + Grundet ubekræftet bolusinformation kan Bolus calc ikke bruges før %s.\n\nEr du sikker på at du vil kassere den aktuelle Patch? + Nålindføringsfejl. + Kontrollér at retningen af hullet efterladt er lige efter drejningen af håndtaget og tryk derefter på \'Prøv igen\'. + Tryk på \'Kassér\' for at deaktivere Patch. + Basal-suspenderingstid + Genoptag insulintilførsel + Afslutning af insulinsuspension.\nTryk på \'Bekræft\' for at genoptage insulinleveringen.\n\n[Caution]\nInsulinleveringen vil ikke blive genoptaget, før du trykker på \'Bekræft\'.\nHvis du ikke trykker på \'Bekræft\', kan der opstå hyperglykæmi. Insulintilførslen suspenderet. + Insulintilførsel genoptaget. Afslut + resterende tid: %1$s:%2$s Næste + Prøv igen efter Patch-kommunikationstjek. + Suspendering mislykkedes. + Genoptagelse mislykkedes. + EEE, d MMM, åååå tt:mm a diff --git a/pump/eopatch/src/main/res/values-da-rDK/strings_alarm.xml b/pump/eopatch/src/main/res/values-da-rDK/strings_alarm.xml index 61862d1424..34381dab8b 100644 --- a/pump/eopatch/src/main/res/values-da-rDK/strings_alarm.xml +++ b/pump/eopatch/src/main/res/values-da-rDK/strings_alarm.xml @@ -1,2 +1,32 @@ - + + Tomt reservoir\nPatch er blevet deaktiveret og insulintilførsel er stoppet. Skift Patch nu. + Patch udløbet\nPatch er blevet deaktiveret og insulintilførsel er stoppet. Skift Patch nu. + Okklusion\nPatch er blevet deaktiveret og insulintilførsel er stoppet. Skift Patch nu. + Fejl i tændinsselvtest\nPatch er blevet deaktiveret. Skift Patch nu. + Upassende temperatur\nInsulintilførsel eller \'Aktivér Patch\'-proces stoppet. Undgå ekstreme temperature med det samme. + Nålindsættelsesfejl\nTjek knappens position og tryk \'Prøv igen\'. + Patch batterifejl\nPach er blevet deaktiveret og\ninsulintilførsel er stoppet. Skift Patch nu. + Patch batterifejl\nPach er blevet deaktiveret og\ninsulintilførsel er stoppet. Skift Patch nu. + Patch aktiveringsfejl\n\'Aktivér Patch\'-proces er udløbet. Tryk på \'Bekræft\' for at deaktivere nuværende Patch. Skift Patch nu. + Patch-Fejl\nPatch er blevet deaktiveret og insulintilførsel er stoppet. Skift Patch nu. + Patch-Fejl\nPatch er blevet deaktiveret og \ninsulintilførsel er stoppet. Skift Patch nu. + Patch-Fejl\nPatch er blevet deaktiveret og insulintilførsel er stoppet. Skift Patch nu. + Patch-Fejl\nPatch er blevet deaktiveret og insulintilførsel er stoppet. Skift Patch nu. + Patch-Fejl\nPatch er blevet deaktiveret og insulintilførsel er stoppet. Skift Patch nu. + Patch-Fejl\nPatch er blevet deaktiveret og insulintilførsel er stoppet. Skift Patch nu. + Patch-Fejl\nPatch er blevet deaktiveret og insulintilførsel er stoppet. Skift Patch nu. + Patch-Fejl\nPatch er blevet deaktiveret og insulintilførsel er stoppet. Skift Patch nu. + Patch-Fejl\nPatch er blevet deaktiveret og insulintilførsel er stoppet. Skift Patch nu. + Patch-Fejl\nPatch er blevet deaktiveret og insulintilførsel er stoppet. Skift Patch nu. + Patch-Fejl\nPatch er blevet deaktiveret og insulintilførsel er stoppet. Skift Patch nu. + Patch-Fejl\nPatch er blevet deaktiveret og insulintilførsel er stoppet. Skift Patch nu. + Patch-Fejl\nPatch er blevet deaktiveret og insulintilførsel er stoppet. Skift Patch nu. + Patch-driftstid vil udløbe %s. Vær klar til at ændre Patch. + Afslutning af insulinsuspensionen\nTryk på \'Fortsæt\' for at genstarte insulintilførslen. + Lavt reservoir\nUdskift Patch snart. + Patch driftslevetid udløbet\nSkift Patch nu. + Patch udløber snart\nSkift Patch nu. + Ufuldstændig Patch-aktivering\nGennemfør \'Aktivér Patch\'-proces. + Patch-batteri lavt\nVær klar til at ændre Patch. + diff --git a/pump/medtrum/src/main/res/values-da-rDK/arrays.xml b/pump/medtrum/src/main/res/values-da-rDK/arrays.xml index 3ea04e700d..53f90ec7a5 100644 --- a/pump/medtrum/src/main/res/values-da-rDK/arrays.xml +++ b/pump/medtrum/src/main/res/values-da-rDK/arrays.xml @@ -1,2 +1,13 @@ - + + + Lys, vibration og bip + Lys og vibration + Lys og bip + Lys + Vibration og bip + Vibration + Bip + Lydløs + + diff --git a/pump/medtrum/src/main/res/values-da-rDK/strings.xml b/pump/medtrum/src/main/res/values-da-rDK/strings.xml index 36c8a820fe..1195d5afbe 100644 --- a/pump/medtrum/src/main/res/values-da-rDK/strings.xml +++ b/pump/medtrum/src/main/res/values-da-rDK/strings.xml @@ -1,9 +1,119 @@ + Medtrum + MT + Pumpeintegration for Medtrum Nano og Medtrum 300IE + Medtrum pumpeindstillinger + Pumpefejl: %1$s!! + Pumpe er pauseret + Pumpen er pauseret på grund af overskredet insulin pr. time + Pumpen er pauseret på grund af overskredet insulin pr. dag + Patch ikke aktiveret + Indstilling af brugerindstillinger til pumpe mislykkedes! + BLE Status + Sidst forbundet + Aktiv bolus + Pumpe tilstand + Aktive alarmer + %.2f IE + %.2f V + Basaltype + Basalrate + %.2f IE/t + Pumpetype + Firmwareversion + Patch nr. + Patch udløber + Genindlæs + Nulstil alarmer + Skift Patch + Anmodet af bruger + Ikke aktiveret + None + Pumpe lavt batteri + Pumpe lavt reservoir + Pumpe udløber snart + Lavt BG suspenderet + Lavt BG suspenderet 2 + Auto suspenderet + timemaksimum suspenderet + dagsmaksimum suspenderet + Suspenderet + Pauseret + Okklusion + Udløbet + Reservoir tomt + Patch-fejl + Patch-fejl 2 + Basisfejl + Batteri udløbet + Ingen kalibrering + Mislykkedes i at opdatere pumpetidszone, udskyd beskeden og opdatér manuelt. + Forsøg igen + Næste + Kassér + Aktivér Patch + Forbind og fyld + Klargør + Klargører + Klargøring afsluttet + Vedhæft Patch + Aktiverer... + Aktivering Fuldført + Deaktivér Patch + Deaktiverer... + Patch deaktiveret + Aktivering i gang + Uventet status: %1$s + Ingen profil valgt. Vælg venligst en profil og prøv igen. + Pumpe Basisserie: %1$X + Ingen aktiv patch. Tryk på Næste for at starte aktiveringsprocessen. + Pumpebasen må ikke forbindes til Patchen før næste trin! + Tilslut pumpebasen til en ny Patch, fjern resterende luft og fyld med insulin, tryk derefter på Næste. + Bemærk: Der kræves mindst 70 enheder til aktivering. + Sæt ikke Patchen på kroppen endnu. + Halvtryk på nåleknappen. Tryk derefter på Næste for at starte klargøring. + Vent venligst til klargøringen er færdig. + Kunne ikke klargøre, tryk på Prøv igen for at prøve igen. + Tryk på Næste for at fortsætte. + Tryk på Næste for at starte aktivering. + Fjern sikkerhedslåsen. Sæt pumpen på kroppen. Tryk på nåleknappen. + Aktiverer pumpen og indstiller den oprindelige basalrate. Vent venligst. + Kunne ikke aktivere, tryk på Prøv igen for at prøve igen. + Ny patch aktiveret. %.2f Enheder tilbage. + Tryk OK for at vende tilbage til hovedskærmen. + Er du sikker på, at du vil deaktivere den aktuelle Patch? + Er du sikker på, at du vil annullere aktiveringen? + Er du sikker? Denne handling kan ikke fortrydes!! + Tryk på Næste for at deaktivere eller Annullér for at vende tilbage til hovedskærmen. + Deaktiverer Patch. Vent venligst. + Kunne ikke deaktivere, tryk på Kassér for at glemme Patch. + Træk nålen tilbage. Fjern Patchen fra kroppen. + Fjern pumpebasen og bortskaf det brugte plaster på passende vis. + Tryk OK for at vende tilbage til hovedskærmen. Tryk Næste for at starte aktiveringen af en ny Patch. + Ups! Noget gik galt, det ser ud til, at der allerede er en aktivering i gang. + Tryk på Næste for at genoptage aktiveringen eller Kassér for at nulstille aktiveringsstatussen. + Vent venligst, læser aktiveringsstatussen fra pumpen. + Serienummer + Indtast serienummeret på din pumpebase. + Ugyldigt serienummer! + Utestet pumpe: %1$d! Kontakt os venligst på discord eller github for hjælp + Alarmindstillinger + Vælg dine fortrukne pumpealarmindstillinger. + Patch Udløber + Efter aktivering udløber patchen efter 3 dage med en nådeperiode på 8 timer herefter. + Maksimal Insulin pr. Time + Specificér det maksimale tilladte antal enheder insulin per time. Hvis denne overskrides, pauseres pumpen. + Maksimal Insulin pr. Dag + Specificér det maksimale tilladte antal enheder insulin per Dag. Hvis denne overskrides, pauseres pumpen. + Henter pumpestatus + Henter bolusstatus + Henter midlertidig basalstatus + Indstiller brugerindstillinger diff --git a/pump/omnipod-common/src/main/res/values-da-rDK/strings.xml b/pump/omnipod-common/src/main/res/values-da-rDK/strings.xml index a158a61f21..36e1456c48 100644 --- a/pump/omnipod-common/src/main/res/values-da-rDK/strings.xml +++ b/pump/omnipod-common/src/main/res/values-da-rDK/strings.xml @@ -104,8 +104,10 @@ Vis knappen \"Suspendér levering\" i Omnipod fanen Automatisk tidszone og sommer/vintertid aktiveret Udløbspåmindelse aktiveret + Efter den er aktiveret, vil podden bippe når den specificerede mængde tid er gået Påmindelse i timer før udløb (72 timer) Udløbspåmindelse aktiveret + Efter den er aktiveret, vil podden bippe når den specificerede mængde tid er nået og én time før nedlukning Advarsel i timer før nedlukning (80 timer) Lav reservoir alarm aktiveret Antal enheder diff --git a/pump/omnipod-dash/src/main/res/values-da-rDK/strings.xml b/pump/omnipod-dash/src/main/res/values-da-rDK/strings.xml index df303f986d..1b27f95103 100644 --- a/pump/omnipod-dash/src/main/res/values-da-rDK/strings.xml +++ b/pump/omnipod-dash/src/main/res/values-da-rDK/strings.xml @@ -44,6 +44,7 @@ Profil sat OK Pausér insulintilførsel er ubekræftet! Genstart venligst manuelt Pod-statussen fra Omnipod-fanen og start tilførsel igen hvis nødvendigt. Insulintilførsel pauseret + Tidszone på pod er forskellig fra tidszone på telefon. Basalrate er forkert. Skift profil for at rette Kunne ikke indstille den nye basalprofil. Levering pauseret Indstilling af basalprofil mislykkedes måske. Insulintilførsel kan være pauseret! Opdatér venligst Pod-status manuelt fra Omnipod-fanen og genoptag tilførslen hvis nødvendigt. Bolustilførselsstatus usikker. Opdatér pod-status for at bekræfte eller afvise. @@ -51,4 +52,6 @@ Kontrollerer leveringsstatus Indstilling af midlertidig basal mislykkedes måske. Hvis en midlertidig basal tidligere var kørt, er den blevet annulleret. Opdatér venligst Pod-status manuelt fra Omnipod-fanen. Annullér midlertidig basal-resultat er usikkert + Ikke-bekræftet genoptagtilførselskommando. Opdatér pod-status + Aflysning af midlertidig basal mislykkedes. Hvis en midlertidig basal tidligere var kørt, kan den være blevet annulleret. Opdater venligst Pod-status manuelt fra Omnipod-fanen. diff --git a/pump/pump-common/src/main/res/values-af-rZA/strings.xml b/pump/pump-common/src/main/res/values-af-rZA/strings.xml index 8664248042..748348fff9 100644 --- a/pump/pump-common/src/main/res/values-af-rZA/strings.xml +++ b/pump/pump-common/src/main/res/values-af-rZA/strings.xml @@ -36,6 +36,7 @@ Verkeerde Maks Bolus gestel op Pomp(moet %1$.2f wees). Verkeerde Maks Basale op Pomp (moet %1$.2f %1$.2f wees),. + %1$d dae %1$d dae diff --git a/pump/pump-common/src/main/res/values-bg-rBG/strings.xml b/pump/pump-common/src/main/res/values-bg-rBG/strings.xml index d9ea9ba6a1..1abb751307 100644 --- a/pump/pump-common/src/main/res/values-bg-rBG/strings.xml +++ b/pump/pump-common/src/main/res/values-bg-rBG/strings.xml @@ -64,6 +64,7 @@ Грешен макс мазал в помпата (трябва да е %1$.2f). Тип: + %1$d ден %1$d дни diff --git a/pump/pump-common/src/main/res/values-ca-rES/strings.xml b/pump/pump-common/src/main/res/values-ca-rES/strings.xml index 6fd07f223c..b305ecc279 100644 --- a/pump/pump-common/src/main/res/values-ca-rES/strings.xml +++ b/pump/pump-common/src/main/res/values-ca-rES/strings.xml @@ -39,6 +39,7 @@ Basal màx. errònia configurada a la bomba (ha de ser %1$.2f). Tipus: + %1$d dia %1$d dies diff --git a/pump/pump-common/src/main/res/values-cs-rCZ/strings.xml b/pump/pump-common/src/main/res/values-cs-rCZ/strings.xml index 5b8f522bca..5a0a1d3884 100644 --- a/pump/pump-common/src/main/res/values-cs-rCZ/strings.xml +++ b/pump/pump-common/src/main/res/values-cs-rCZ/strings.xml @@ -64,6 +64,15 @@ Chybný maximální bazál na pumpě (musí být %1$.2f). Typ: + + Nikdy nekontaktováno + Spící + Probouzení + Aktivní + Chyba komunikace + Vypršel časový limit komunikace + Pumpa nedostupná + Neplatná konfigurace %1$d den %1$d dnů diff --git a/pump/pump-common/src/main/res/values-da-rDK/strings.xml b/pump/pump-common/src/main/res/values-da-rDK/strings.xml index 0f9f34633d..56e257ba29 100644 --- a/pump/pump-common/src/main/res/values-da-rDK/strings.xml +++ b/pump/pump-common/src/main/res/values-da-rDK/strings.xml @@ -64,6 +64,15 @@ Forkert Max Basal sat på Pump (skal være %1$.2f). Type: + + Aldrig kontaktet + Sovende + Vågner + Aktiv + Fejl i kommunikation + Timeout ved kommunikation + Pumpe utilgængelig + Ugyldig konfiguration %1$d dag %1$d dage diff --git a/pump/pump-common/src/main/res/values-de-rDE/strings.xml b/pump/pump-common/src/main/res/values-de-rDE/strings.xml index 9aad801896..7f1ba4da63 100644 --- a/pump/pump-common/src/main/res/values-de-rDE/strings.xml +++ b/pump/pump-common/src/main/res/values-de-rDE/strings.xml @@ -64,6 +64,7 @@ Falsche Max-Basal auf Pumpe eingestellt (muss %1$.2f sein). Typ: + %1$d Tag %1$d Tage diff --git a/pump/pump-common/src/main/res/values-el-rGR/strings.xml b/pump/pump-common/src/main/res/values-el-rGR/strings.xml index 44c292ae68..33a84bfd9e 100644 --- a/pump/pump-common/src/main/res/values-el-rGR/strings.xml +++ b/pump/pump-common/src/main/res/values-el-rGR/strings.xml @@ -64,6 +64,7 @@ Λάθος μέγιστο Βασικού ορίστηκε στην αντλία (πρέπει να είναι %1$.2f). Τύπος: + %1$d ημέρες %1$d ημέρες diff --git a/pump/pump-common/src/main/res/values-es-rES/strings.xml b/pump/pump-common/src/main/res/values-es-rES/strings.xml index f425f0f81a..48e4165e88 100644 --- a/pump/pump-common/src/main/res/values-es-rES/strings.xml +++ b/pump/pump-common/src/main/res/values-es-rES/strings.xml @@ -64,6 +64,15 @@ La basal máxima establecida en la bomba es incorrecta (debe ser %1$.2f). Tipo: + + Nunca contactado + En reposo + Iniciando + Activo + Error en la comunicación + Tiempo de espera agotado en la comunicación + Bomba inaccesible + Configuración inválida %1$d día %1$d días diff --git a/pump/pump-common/src/main/res/values-fr-rFR/strings.xml b/pump/pump-common/src/main/res/values-fr-rFR/strings.xml index 2083618893..deb828161f 100644 --- a/pump/pump-common/src/main/res/values-fr-rFR/strings.xml +++ b/pump/pump-common/src/main/res/values-fr-rFR/strings.xml @@ -64,6 +64,7 @@ Mauvais paramètre Max Basal sur la pompe (doit être %1$.2f). Type : + %1$d jour %1$d jours diff --git a/pump/pump-common/src/main/res/values-hr-rHR/strings.xml b/pump/pump-common/src/main/res/values-hr-rHR/strings.xml index 008f21f371..7908879c52 100644 --- a/pump/pump-common/src/main/res/values-hr-rHR/strings.xml +++ b/pump/pump-common/src/main/res/values-hr-rHR/strings.xml @@ -54,6 +54,7 @@ Pogrešno podešen maksimalni bazal na pumpi (mora biti %1$.2f). Tip: + %1$d dan %1$d dana diff --git a/pump/pump-common/src/main/res/values-hu-rHU/strings.xml b/pump/pump-common/src/main/res/values-hu-rHU/strings.xml index 1d747e7a9c..f984286dca 100644 --- a/pump/pump-common/src/main/res/values-hu-rHU/strings.xml +++ b/pump/pump-common/src/main/res/values-hu-rHU/strings.xml @@ -28,6 +28,7 @@ Hibás a pumpán beállított Max. Bólus (%1$.2f kell legyen). Hibás a pumpán beállított Max. Bázis (%1$.2f kell legyen). + %1$d nap %1$d nap diff --git a/pump/pump-common/src/main/res/values-it-rIT/strings.xml b/pump/pump-common/src/main/res/values-it-rIT/strings.xml index eeb8f34cc0..8a01db474d 100644 --- a/pump/pump-common/src/main/res/values-it-rIT/strings.xml +++ b/pump/pump-common/src/main/res/values-it-rIT/strings.xml @@ -64,6 +64,7 @@ La basale massima impostata sul micro è errata (deve essere %1$.2f). Tipo: + %1$d giorno %1$d giorni diff --git a/pump/pump-common/src/main/res/values-iw-rIL/strings.xml b/pump/pump-common/src/main/res/values-iw-rIL/strings.xml index 70e8a91b39..8e848eeaf3 100644 --- a/pump/pump-common/src/main/res/values-iw-rIL/strings.xml +++ b/pump/pump-common/src/main/res/values-iw-rIL/strings.xml @@ -64,6 +64,7 @@ המינון הבזאלי המרבי המוגדר במשאבה אינו נכון (חייב להיות %1$.2f). סוג: + יום %1$d יומיים diff --git a/pump/pump-common/src/main/res/values-ko-rKR/strings.xml b/pump/pump-common/src/main/res/values-ko-rKR/strings.xml index 62bcab2a78..131f6c56cf 100644 --- a/pump/pump-common/src/main/res/values-ko-rKR/strings.xml +++ b/pump/pump-common/src/main/res/values-ko-rKR/strings.xml @@ -64,6 +64,7 @@ 펌프에 잘못된 최대 Basal이 설정되었습니다 (%1$.2f 이어야 합니다). 종류: + %1$d 일 diff --git a/pump/pump-common/src/main/res/values-lt-rLT/strings.xml b/pump/pump-common/src/main/res/values-lt-rLT/strings.xml index 5ad947fbf0..16a9a0b322 100644 --- a/pump/pump-common/src/main/res/values-lt-rLT/strings.xml +++ b/pump/pump-common/src/main/res/values-lt-rLT/strings.xml @@ -64,6 +64,7 @@ Pompoje nustatyta neteisinga Maks val. bazė (turi būti %1$.2f). Tipas: + %1$d d. %1$d d. diff --git a/pump/pump-common/src/main/res/values-nl-rNL/strings.xml b/pump/pump-common/src/main/res/values-nl-rNL/strings.xml index 275df17d7c..3a2d78f80b 100644 --- a/pump/pump-common/src/main/res/values-nl-rNL/strings.xml +++ b/pump/pump-common/src/main/res/values-nl-rNL/strings.xml @@ -64,6 +64,7 @@ Verkeerde Max Basaal instelling op pomp (moet %1$.2f zijn). Type: + %1$d dag %1$d dagen diff --git a/pump/pump-common/src/main/res/values-no-rNO/strings.xml b/pump/pump-common/src/main/res/values-no-rNO/strings.xml index 9afaa22439..c2a4ef0588 100644 --- a/pump/pump-common/src/main/res/values-no-rNO/strings.xml +++ b/pump/pump-common/src/main/res/values-no-rNO/strings.xml @@ -64,6 +64,7 @@ Feil maks-basal er satt på pumpen (må være %1$.2f). Type: + %1$d dag %1$d dager diff --git a/pump/pump-common/src/main/res/values-pl-rPL/strings.xml b/pump/pump-common/src/main/res/values-pl-rPL/strings.xml index c3c9f0d0bd..f48b50d58d 100644 --- a/pump/pump-common/src/main/res/values-pl-rPL/strings.xml +++ b/pump/pump-common/src/main/res/values-pl-rPL/strings.xml @@ -64,6 +64,15 @@ Ustawiony na pompie typ Bolus Maksymalny jest niewłaściwy (musi być %1$.2f). Typ: + + Nigdy nie połączona + Uśpiona + Wybudza się + Aktywna + Błąd komunikacji + Przekroczony limit czasu połączenia + Pompa nieosiągalna + Nieprawidłowa konfiguracja %1$d dzień %1$d dni diff --git a/pump/pump-common/src/main/res/values-pt-rBR/strings.xml b/pump/pump-common/src/main/res/values-pt-rBR/strings.xml index d6023f2092..86e4eff8dc 100644 --- a/pump/pump-common/src/main/res/values-pt-rBR/strings.xml +++ b/pump/pump-common/src/main/res/values-pt-rBR/strings.xml @@ -64,6 +64,7 @@ Máx. Basal definido errado na Bomba (deve ser %1$.2f). Tipo: + %1$d dia %1$d dias diff --git a/pump/pump-common/src/main/res/values-pt-rPT/strings.xml b/pump/pump-common/src/main/res/values-pt-rPT/strings.xml index 3063be8d7e..f72987234f 100644 --- a/pump/pump-common/src/main/res/values-pt-rPT/strings.xml +++ b/pump/pump-common/src/main/res/values-pt-rPT/strings.xml @@ -40,6 +40,15 @@ Índice Basal máximo definido na Bomba está incorrecto (deve ser %1$.2f). Tipo: + + Nunca contactado + A dormir + A acordar + Activo + Erro com comunicação + Tempo limite para comunicação + Bomba inacessível + Configuração inválida %1$d dia %1$d dias diff --git a/pump/pump-common/src/main/res/values-ro-rRO/strings.xml b/pump/pump-common/src/main/res/values-ro-rRO/strings.xml index 8c81220c84..15bb5b0ff9 100644 --- a/pump/pump-common/src/main/res/values-ro-rRO/strings.xml +++ b/pump/pump-common/src/main/res/values-ro-rRO/strings.xml @@ -63,6 +63,7 @@ Bazala maximă setată incorect în pompă (trebuie să fie %1$.2f). Tip: + %1$d zi %1$d zile diff --git a/pump/pump-common/src/main/res/values-ru-rRU/strings.xml b/pump/pump-common/src/main/res/values-ru-rRU/strings.xml index ce8839d161..f7cf58363c 100644 --- a/pump/pump-common/src/main/res/values-ru-rRU/strings.xml +++ b/pump/pump-common/src/main/res/values-ru-rRU/strings.xml @@ -64,6 +64,7 @@ На помпе задан неверный макс базал (должен быть %1$.2f). Тип: + %1$d день %1$d дня diff --git a/pump/pump-common/src/main/res/values-sk-rSK/strings.xml b/pump/pump-common/src/main/res/values-sk-rSK/strings.xml index 5c7299e401..2b24393489 100644 --- a/pump/pump-common/src/main/res/values-sk-rSK/strings.xml +++ b/pump/pump-common/src/main/res/values-sk-rSK/strings.xml @@ -64,6 +64,7 @@ Chybný max. bazál na pumpe (musí byť %1$.2f). Typ: + %1$d deň %1$d dní diff --git a/pump/pump-common/src/main/res/values-sr-rCS/strings.xml b/pump/pump-common/src/main/res/values-sr-rCS/strings.xml index bc292aa08d..a507ceb9d9 100644 --- a/pump/pump-common/src/main/res/values-sr-rCS/strings.xml +++ b/pump/pump-common/src/main/res/values-sr-rCS/strings.xml @@ -9,4 +9,5 @@ + diff --git a/pump/pump-common/src/main/res/values-sv-rSE/strings.xml b/pump/pump-common/src/main/res/values-sv-rSE/strings.xml index 3a54548336..6ed67f2b67 100644 --- a/pump/pump-common/src/main/res/values-sv-rSE/strings.xml +++ b/pump/pump-common/src/main/res/values-sv-rSE/strings.xml @@ -64,6 +64,7 @@ Fel max basal i pumpen (måste vara %1$.2f). Typ: + %1$d dag %1$d dagar diff --git a/pump/pump-common/src/main/res/values-tr-rTR/strings.xml b/pump/pump-common/src/main/res/values-tr-rTR/strings.xml index ae47a3c117..3c306737ce 100644 --- a/pump/pump-common/src/main/res/values-tr-rTR/strings.xml +++ b/pump/pump-common/src/main/res/values-tr-rTR/strings.xml @@ -64,6 +64,15 @@ Pompada Yanlış Maksimum Bazal ayarlanmış (%1$.2f olmalıdır). Tip: + + Hiçbir bağlantı yok + Uyku Moduna Giriliyor + Uyanıyor + Aktif + İletişim hatası + İletişimde zaman aşımı + Pompa\'ya ulaşılamıyor + Geçersiz yapılandırma %1$d gün %1$d gün diff --git a/pump/pump-common/src/main/res/values-uk-rUA/strings.xml b/pump/pump-common/src/main/res/values-uk-rUA/strings.xml index 33c77af761..6ebad037cb 100644 --- a/pump/pump-common/src/main/res/values-uk-rUA/strings.xml +++ b/pump/pump-common/src/main/res/values-uk-rUA/strings.xml @@ -8,4 +8,5 @@ + diff --git a/pump/pump-common/src/main/res/values-zh-rCN/strings.xml b/pump/pump-common/src/main/res/values-zh-rCN/strings.xml index eaedcad0f5..b182709841 100644 --- a/pump/pump-common/src/main/res/values-zh-rCN/strings.xml +++ b/pump/pump-common/src/main/res/values-zh-rCN/strings.xml @@ -63,6 +63,7 @@ 泵上设置的最大基础率错误 (应当为 %1$.2f)。 类型: + %1$d 天 diff --git a/pump/virtual/src/main/res/values-da-rDK/strings.xml b/pump/virtual/src/main/res/values-da-rDK/strings.xml index 3ba5cdb52a..480db083bf 100644 --- a/pump/virtual/src/main/res/values-da-rDK/strings.xml +++ b/pump/virtual/src/main/res/values-da-rDK/strings.xml @@ -1,7 +1,13 @@ + Virtuel Pumpetype + Pumpe Definition + Bolus: Trin=%1$s\nForlænget Bolus: [Trin=%2$s, Varighed=%3$smin-%4$sh]\nBasal: Trin=%5$s\nTBR: %6$s (by %7$s), Varighed=%8$smin-%9$sh\n%10$s + VPUMPE Pumpeintegration til pumper, som endnu ikke har nogen driver (Åbent Loop) + VIRTUEL PUMPE Indstillinger for virtuel pumpe + * Kun diskrete værdier, ingen intervaller er understøttet som granularitet for basal/bolus i virtuel pumpe. diff --git a/pump/virtual/src/main/res/values-es-rES/strings.xml b/pump/virtual/src/main/res/values-es-rES/strings.xml index 5b8efa9269..15ac39bcce 100644 --- a/pump/virtual/src/main/res/values-es-rES/strings.xml +++ b/pump/virtual/src/main/res/values-es-rES/strings.xml @@ -9,4 +9,5 @@ BOMBA VIRTUAL Ajustes de bomba virtual + * Sólo se admiten valores discretos, no rangos, como granularidad para basal/bolos en la bomba virtual. diff --git a/pump/virtual/src/main/res/values-lt-rLT/strings.xml b/pump/virtual/src/main/res/values-lt-rLT/strings.xml index 4ccbaf82e1..7d896394d3 100644 --- a/pump/virtual/src/main/res/values-lt-rLT/strings.xml +++ b/pump/virtual/src/main/res/values-lt-rLT/strings.xml @@ -9,4 +9,5 @@ VIRTUALI POMPA Virtualios pompos nustatymai + * Virtualioje pompoje palaikomos tik atskiros vertės, o ne diapazonas detalumui užtikrinti. diff --git a/pump/virtual/src/main/res/values-pl-rPL/strings.xml b/pump/virtual/src/main/res/values-pl-rPL/strings.xml index d656e8a5de..ed74815d1a 100644 --- a/pump/virtual/src/main/res/values-pl-rPL/strings.xml +++ b/pump/virtual/src/main/res/values-pl-rPL/strings.xml @@ -9,4 +9,5 @@ POMPA WIRTUALNA Ustawienia pompy wirtualnej + *Tylko wartości dyskretne, a nie zakresy są wspierane jako dawki bazowe/bolusy w pompie wirtualnej. diff --git a/pump/virtual/src/main/res/values-sk-rSK/strings.xml b/pump/virtual/src/main/res/values-sk-rSK/strings.xml index 14961415da..3df61b5f2a 100644 --- a/pump/virtual/src/main/res/values-sk-rSK/strings.xml +++ b/pump/virtual/src/main/res/values-sk-rSK/strings.xml @@ -9,4 +9,5 @@ Virtuálna pumpa Nastavenie virtuálnej pumpy + * Iba diskrétne hodnoty a nie rozsahy, sú podporované pre bazál/bolus vo virtuálnej pumpe. diff --git a/wear/src/main/res/values-da-rDK/strings.xml b/wear/src/main/res/values-da-rDK/strings.xml index ebd5ce13a8..c813095672 100644 --- a/wear/src/main/res/values-da-rDK/strings.xml +++ b/wear/src/main/res/values-da-rDK/strings.xml @@ -206,5 +206,6 @@ %1$s %2$s %3$s gammel !gammel! + !fejl! Puls