Merge branch 'dev' into medtronic_modules

This commit is contained in:
Andy Rozman 2020-07-25 00:44:09 +01:00
commit 996417bb47
74 changed files with 1688 additions and 251 deletions

View file

@ -1,6 +1,6 @@
# AndroidAPS
* Check the wiki: http://wiki.androidaps.org
* Check the wiki: https://androidaps.readthedocs.io
* Everyone whos been looping with AndroidAPS needs to fill out the form after 3 days of looping https://docs.google.com/forms/d/14KcMjlINPMJHVt28MDRupa4sz4DDIooI4SrW0P3HSN8/viewform?c=0&w=1
[![Gitter](https://badges.gitter.im/MilosKozak/AndroidAPS.svg)](https://gitter.im/MilosKozak/AndroidAPS?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
@ -11,6 +11,4 @@
dev: [![codecov](https://codecov.io/gh/MilosKozak/AndroidAPS/branch/dev/graph/badge.svg)](https://codecov.io/gh/MilosKozak/AndroidAPS)
[![Donate via PayPal](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Y4LHGJJESAVB8)
![BTC](https://bitit.io/assets/coins/icon-btc-1e5a37bc0eb730ac83130d7aa859052bd4b53ac3f86f99966627801f7b0410be.svg) 3KawK8aQe48478s6fxJ8Ms6VTWkwjgr9f2

View file

@ -259,6 +259,7 @@ dependencies {
implementation 'androidx.percentlayout:percentlayout:1.0.0'
implementation "androidx.preference:preference-ktx:1.1.1"
implementation "androidx.activity:activity-ktx:${activityVersion}"
implementation "androidx.fragment:fragment:${fragmentVersion}"
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.google.android.material:material:1.1.0'

View file

@ -68,7 +68,8 @@
<activity android:name=".plugins.general.maintenance.activities.PrefImportListActivity" />
<activity android:name=".historyBrowser.HistoryBrowseActivity" />
<activity android:name=".activities.SurveyActivity" />
<activity android:name=".activities.ProfileHelperActivity" />
<activity android:name=".activities.ProfileHelperActivity"
android:theme="@style/ProfileHelperAppTheme" />
<activity android:name=".activities.StatsActivity" />
<!-- Receive new BG readings from other local apps -->

View file

@ -1,13 +1,29 @@
package info.nightscout.androidaps.activities
import android.content.res.ColorStateList
import android.os.Bundle
import android.text.Editable
import android.text.TextWatcher
import android.view.Menu
import android.widget.PopupMenu
import info.nightscout.androidaps.R
import info.nightscout.androidaps.data.Profile
import info.nightscout.androidaps.data.defaultProfile.DefaultProfile
import info.nightscout.androidaps.data.defaultProfile.DefaultProfileDPV
import info.nightscout.androidaps.db.ProfileSwitch
import info.nightscout.androidaps.dialogs.ProfileViewerDialog
import info.nightscout.androidaps.interfaces.ActivePluginProvider
import info.nightscout.androidaps.interfaces.DatabaseHelperInterface
import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.profile.local.LocalProfilePlugin
import info.nightscout.androidaps.plugins.profile.local.events.EventLocalProfileChanged
import info.nightscout.androidaps.utils.DateUtil
import info.nightscout.androidaps.utils.T
import info.nightscout.androidaps.utils.ToastUtils
import info.nightscout.androidaps.utils.alertDialogs.OKDialog
import info.nightscout.androidaps.utils.extensions.toVisibility
import info.nightscout.androidaps.utils.resources.ResourceHelper
import info.nightscout.androidaps.utils.stats.TddCalculator
import kotlinx.android.synthetic.main.activity_profilehelper.*
@ -20,47 +36,253 @@ class ProfileHelperActivity : NoSplashAppCompatActivity() {
@Inject lateinit var tddCalculator: TddCalculator
@Inject lateinit var profileFunction: ProfileFunction
@Inject lateinit var defaultProfile: DefaultProfile
@Inject lateinit var defaultProfileDPV: DefaultProfileDPV
@Inject lateinit var localProfilePlugin: LocalProfilePlugin
@Inject lateinit var rxBus: RxBusWrapper
@Inject lateinit var dateUtil: DateUtil
@Inject lateinit var activePlugin: ActivePluginProvider
@Inject lateinit var databaseHelper: DatabaseHelperInterface
enum class ProfileType {
MOTOL_DEFAULT,
DPV_DEFAULT,
CURRENT,
AVAILABLE_PROFILE,
PROFILE_SWITCH
}
private var tabSelected = 0
private val typeSelected = arrayOf(ProfileType.MOTOL_DEFAULT, ProfileType.CURRENT)
private val ageUsed = arrayOf(15.0, 15.0)
private val weightUsed = arrayOf(0.0, 0.0)
private val tddUsed = arrayOf(0.0, 0.0)
private val pctUsed = arrayOf(32.0, 32.0)
private lateinit var profileList: ArrayList<CharSequence>
private val profileUsed = arrayOf(0, 0)
private lateinit var profileSwitch: List<ProfileSwitch>
private val profileSwitchUsed = arrayOf(0, 0)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_profilehelper)
profilehelper_age.setParams(15.0, 1.0, 80.0, 1.0, DecimalFormat("0"), false, null)
profilehelper_weight.setParams(50.0, 5.0, 150.0, 1.0, DecimalFormat("0"), false, null)
profilehelper_tdd.setParams(50.0, 3.0, 200.0, 1.0, DecimalFormat("0"), false, null)
profilehelper_menu1.setOnClickListener {
switchTab(0, typeSelected[0])
}
profilehelper_menu2.setOnClickListener {
switchTab(1, typeSelected[1])
}
profilehelper_tdds.text = tddCalculator.stats()
profilehelper_profile.setOnClickListener {
val age = profilehelper_age.value
val weight = profilehelper_weight.value
val tdd = profilehelper_tdd.value
if (age < 1 || age > 120) {
ToastUtils.showToastInUiThread(this, R.string.invalidage)
return@setOnClickListener
}
if ((weight < 5 || weight > 150) && tdd == 0.0) {
ToastUtils.showToastInUiThread(this, R.string.invalidweight)
return@setOnClickListener
}
if ((tdd < 5 || tdd > 150) && weight == 0.0) {
ToastUtils.showToastInUiThread(this, R.string.invalidweight)
return@setOnClickListener
}
profileFunction.getProfile()?.let { runningProfile ->
val profile = defaultProfile.profile(age, tdd, weight, profileFunction.getUnits())
ProfileViewerDialog().also { pvd ->
pvd.arguments = Bundle().also {
it.putLong("time", DateUtil.now())
it.putInt("mode", ProfileViewerDialog.Mode.PROFILE_COMPARE.ordinal)
it.putString("customProfile", runningProfile.data.toString())
it.putString("customProfile2", profile.data.toString())
it.putString("customProfileUnits", profile.units)
it.putString("customProfileName", "Age: $age TDD: $tdd Weight: $weight")
profilehelper_profiletype.setOnClickListener {
PopupMenu(this, profilehelper_profiletype).apply {
menuInflater.inflate(R.menu.menu_profilehelper, menu)
setOnMenuItemClickListener { item ->
profilehelper_profiletype.setText(item.title)
when (item.itemId) {
R.id.menu_default -> switchTab(tabSelected, ProfileType.MOTOL_DEFAULT)
R.id.menu_default_dpv -> switchTab(tabSelected, ProfileType.DPV_DEFAULT)
R.id.menu_current -> switchTab(tabSelected, ProfileType.CURRENT)
R.id.menu_available -> switchTab(tabSelected, ProfileType.AVAILABLE_PROFILE)
R.id.menu_profileswitch -> switchTab(tabSelected, ProfileType.PROFILE_SWITCH)
}
}.show(supportFragmentManager, "ProfileViewDialog")
true
}
show()
}
}
// Active profile
profileList = activePlugin.activeProfileInterface.profile?.getProfileList() ?: ArrayList()
profilehelper_available_profile_list.setOnClickListener {
PopupMenu(this, profilehelper_available_profile_list).apply {
var order = 0
for (name in profileList) menu.add(Menu.NONE, order, order++, name)
setOnMenuItemClickListener { item ->
profilehelper_available_profile_list.setText(item.title)
profileUsed[tabSelected] = item.itemId
true
}
show()
}
}
// Profile switch
profileSwitch = databaseHelper.getProfileSwitchData(dateUtil._now() - T.months(2).msecs(), true)
profilehelper_profileswitch_list.setOnClickListener {
PopupMenu(this, profilehelper_profileswitch_list).apply {
var order = 0
for (name in profileSwitch) menu.add(Menu.NONE, order, order++, name.customizedName)
setOnMenuItemClickListener { item ->
profilehelper_profileswitch_list.setText(item.title)
profileSwitchUsed[tabSelected] = item.itemId
true
}
show()
}
}
// Default profile
profilehelper_copytolocalprofile.setOnClickListener {
val age = ageUsed[tabSelected]
val weight = weightUsed[tabSelected]
val tdd = tddUsed[tabSelected]
val pct = pctUsed[tabSelected]
val profile = if (typeSelected[tabSelected] == ProfileType.MOTOL_DEFAULT) defaultProfile.profile(age, tdd, weight, profileFunction.getUnits())
else defaultProfileDPV.profile(age, tdd, pct / 100.0, profileFunction.getUnits())
profile?.let {
OKDialog.showConfirmation(this, resourceHelper.gs(R.string.careportal_profileswitch), resourceHelper.gs(R.string.copytolocalprofile), Runnable {
localProfilePlugin.addProfile(LocalProfilePlugin.SingleProfile().copyFrom(localProfilePlugin.rawProfile, it, "DefaultProfile" + dateUtil.dateAndTimeAndSecondsString(dateUtil._now())))
rxBus.send(EventLocalProfileChanged())
})
}
}
profilehelper_age.setParams(0.0, 1.0, 18.0, 1.0, DecimalFormat("0"), false, null)
profilehelper_weight.setParams(0.0, 0.0, 150.0, 1.0, DecimalFormat("0"), false, null, object : TextWatcher {
override fun afterTextChanged(s: Editable) {}
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {}
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
profilehelper_tdd_row.visibility = (profilehelper_weight.value == 0.0).toVisibility()
}
})
profilehelper_tdd.setParams(0.0, 0.0, 200.0, 1.0, DecimalFormat("0"), false, null, object : TextWatcher {
override fun afterTextChanged(s: Editable) {}
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {}
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
profilehelper_weight_row.visibility = (profilehelper_tdd.value == 0.0).toVisibility()
}
})
profilehelper_basalpctfromtdd.setParams(32.0, 32.0, 37.0, 1.0, DecimalFormat("0"), false, null)
profilehelper_tdds.text = tddCalculator.stats()
// Current profile
profilehelper_current_profile_text.text = profileFunction.getProfileName()
// General
profilehelper_compareprofile.setOnClickListener {
storeValues()
for (i in 0..1) {
if (typeSelected[i] == ProfileType.MOTOL_DEFAULT) {
if (ageUsed[i] < 1 || ageUsed[i] > 18) {
ToastUtils.showToastInUiThread(this, R.string.invalidage)
return@setOnClickListener
}
if ((weightUsed[i] < 5 || weightUsed[i] > 150) && tddUsed[i] == 0.0) {
ToastUtils.showToastInUiThread(this, R.string.invalidweight)
return@setOnClickListener
}
if ((tddUsed[i] < 5 || tddUsed[i] > 150) && weightUsed[i] == 0.0) {
ToastUtils.showToastInUiThread(this, R.string.invalidweight)
return@setOnClickListener
}
}
if (typeSelected[i] == ProfileType.DPV_DEFAULT) {
if (ageUsed[i] < 1 || ageUsed[i] > 18) {
ToastUtils.showToastInUiThread(this, R.string.invalidage)
return@setOnClickListener
}
if (tddUsed[i] < 5 || tddUsed[i] > 150) {
ToastUtils.showToastInUiThread(this, R.string.invalidweight)
return@setOnClickListener
}
if ((pctUsed[i] < 32 || pctUsed[i] > 37)) {
ToastUtils.showToastInUiThread(this, R.string.invalidpct)
return@setOnClickListener
}
}
}
getProfile(ageUsed[0], tddUsed[0], weightUsed[0], pctUsed[0] / 100.0, 0)?.let { profile0 ->
getProfile(ageUsed[1], tddUsed[1], weightUsed[1], pctUsed[1] / 100.0, 1)?.let { profile1 ->
ProfileViewerDialog().also { pvd ->
pvd.arguments = Bundle().also {
it.putLong("time", DateUtil.now())
it.putInt("mode", ProfileViewerDialog.Mode.PROFILE_COMPARE.ordinal)
it.putString("customProfile", profile0.data.toString())
it.putString("customProfile2", profile1.data.toString())
it.putString("customProfileUnits", profileFunction.getUnits())
it.putString("customProfileName", getProfileName(ageUsed[0], tddUsed[0], weightUsed[0], pctUsed[0] / 100.0, 0) + "\n" + getProfileName(ageUsed[1], tddUsed[1], weightUsed[1], pctUsed[1] / 100.0, 1))
}
}.show(supportFragmentManager, "ProfileViewDialog")
return@setOnClickListener
}
}
ToastUtils.showToastInUiThread(this, R.string.invalidinput)
}
switchTab(0, typeSelected[0], false)
}
private fun getProfile(age: Double, tdd: Double, weight: Double, basalPct: Double, tab: Int): Profile? =
when (typeSelected[tab]) {
ProfileType.MOTOL_DEFAULT -> defaultProfile.profile(age, tdd, weight, profileFunction.getUnits())
ProfileType.DPV_DEFAULT -> defaultProfileDPV.profile(age, tdd, basalPct, profileFunction.getUnits())
ProfileType.CURRENT -> profileFunction.getProfile()?.convertToNonCustomizedProfile()
ProfileType.AVAILABLE_PROFILE -> activePlugin.activeProfileInterface.profile?.getSpecificProfile(profileList[profileUsed[tab]].toString())
ProfileType.PROFILE_SWITCH -> profileSwitch[profileSwitchUsed[tab]].profileObject?.convertToNonCustomizedProfile()
}
private fun getProfileName(age: Double, tdd: Double, weight: Double, basalSumPct: Double, tab: Int): String =
when (typeSelected[tab]) {
ProfileType.MOTOL_DEFAULT -> if (tdd > 0) resourceHelper.gs(R.string.formatwithtdd, age, tdd) else resourceHelper.gs(R.string.formatwithweight, age, weight)
ProfileType.DPV_DEFAULT -> resourceHelper.gs(R.string.formatwittddandpct, age, tdd, (basalSumPct * 100).toInt())
ProfileType.CURRENT -> profileFunction.getProfileName()
ProfileType.AVAILABLE_PROFILE -> profileList[profileUsed[tab]].toString()
ProfileType.PROFILE_SWITCH -> profileSwitch[profileSwitchUsed[tab]].customizedName
}
private fun storeValues() {
ageUsed[tabSelected] = profilehelper_age.value
weightUsed[tabSelected] = profilehelper_weight.value
tddUsed[tabSelected] = profilehelper_tdd.value
pctUsed[tabSelected] = profilehelper_basalpctfromtdd.value
}
private fun switchTab(tab: Int, newContent: ProfileType, storeOld: Boolean = true) {
setBackgroundColorOnSelected(tab)
// Store values for selected tab. listBox values are stored on selection change
if (storeOld) storeValues()
tabSelected = tab
typeSelected[tabSelected] = newContent
profilehelper_profiletype_title.setDefaultHintTextColor(ColorStateList.valueOf(resourceHelper.gc(if (tab == 0) R.color.tabBgColorSelected else R.color.examinedProfile)))
// show new content
profilehelper_profiletype.setText(
when (typeSelected[tabSelected]) {
ProfileType.MOTOL_DEFAULT -> resourceHelper.gs(R.string.motoldefaultprofile)
ProfileType.DPV_DEFAULT -> resourceHelper.gs(R.string.dpvdefaultprofile)
ProfileType.CURRENT -> resourceHelper.gs(R.string.currentprofile)
ProfileType.AVAILABLE_PROFILE -> resourceHelper.gs(R.string.availableprofile)
ProfileType.PROFILE_SWITCH -> resourceHelper.gs(R.string.careportal_profileswitch)
})
profilehelper_default_profile.visibility = (newContent == ProfileType.MOTOL_DEFAULT || newContent == ProfileType.DPV_DEFAULT).toVisibility()
profilehelper_current_profile.visibility = (newContent == ProfileType.CURRENT).toVisibility()
profilehelper_available_profile.visibility = (newContent == ProfileType.AVAILABLE_PROFILE).toVisibility()
profilehelper_profile_switch.visibility = (newContent == ProfileType.PROFILE_SWITCH).toVisibility()
// restore selected values
profilehelper_age.value = ageUsed[tabSelected]
profilehelper_weight.value = weightUsed[tabSelected]
profilehelper_tdd.value = tddUsed[tabSelected]
profilehelper_basalpctfromtdd.value = pctUsed[tabSelected]
profilehelper_basalpctfromtdd_row.visibility = (newContent == ProfileType.DPV_DEFAULT).toVisibility()
if (profileList.isNotEmpty())
profilehelper_available_profile_list.setText(profileList[profileUsed[tabSelected]].toString())
if (profileSwitch.isNotEmpty())
profilehelper_profileswitch_list.setText(profileSwitch[profileSwitchUsed[tabSelected]].customizedName)
}
private fun setBackgroundColorOnSelected(tab: Int) {
profilehelper_menu1.setBackgroundColor(resourceHelper.gc(if (tab == 1) R.color.defaultbackground else R.color.tabBgColorSelected))
profilehelper_menu2.setBackgroundColor(resourceHelper.gc(if (tab == 0) R.color.defaultbackground else R.color.examinedProfile))
}
}

View file

@ -63,17 +63,18 @@ class SurveyActivity : NoSplashAppCompatActivity() {
return@setOnClickListener
}
profileFunction.getProfile()?.let { runningProfile ->
val profile = defaultProfile.profile(age, tdd, weight, profileFunction.getUnits())
ProfileViewerDialog().also { pvd ->
pvd.arguments = Bundle().also {
it.putLong("time", DateUtil.now())
it.putInt("mode", ProfileViewerDialog.Mode.PROFILE_COMPARE.ordinal)
it.putString("customProfile", runningProfile.data.toString())
it.putString("customProfile2", profile.data.toString())
it.putString("customProfileUnits", profile.units)
it.putString("customProfileName", "Age: $age TDD: $tdd Weight: $weight")
}
}.show(supportFragmentManager, "ProfileViewDialog")
defaultProfile.profile(age, tdd, weight, profileFunction.getUnits())?.let { profile ->
ProfileViewerDialog().also { pvd ->
pvd.arguments = Bundle().also {
it.putLong("time", DateUtil.now())
it.putInt("mode", ProfileViewerDialog.Mode.PROFILE_COMPARE.ordinal)
it.putString("customProfile", runningProfile.data.toString())
it.putString("customProfile2", profile.data.toString())
it.putString("customProfileUnits", profile.units)
it.putString("customProfileName", "Age: $age TDD: $tdd Weight: $weight")
}
}.show(supportFragmentManager, "ProfileViewDialog")
}
}
}

View file

@ -97,6 +97,10 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
private static final ScheduledExecutorService bgWorker = Executors.newSingleThreadScheduledExecutor();
private static ScheduledFuture<?> scheduledBgPost = null;
private static final ScheduledExecutorService bgHistoryWorker = Executors.newSingleThreadScheduledExecutor();
private static ScheduledFuture<?> scheduledBgHistoryPost = null;
private static long oldestBgHistoryChange = 0;
private static final ScheduledExecutorService tempBasalsWorker = Executors.newSingleThreadScheduledExecutor();
private static ScheduledFuture<?> scheduledTemBasalsPost = null;
@ -387,8 +391,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
old.copyFrom(bgReading);
getDaoBgReadings().update(old);
aapsLogger.debug(LTag.DATABASE, "BG: Updating record from: " + from + " New data: " + old.toString());
rxBus.send(new EventNewHistoryBgData(old.date)); // trigger cache invalidation
scheduleBgChange(bgReading); // trigger new calculation
scheduleBgHistoryChange(old.date); // trigger cache invalidation
return false;
}
} catch (SQLException e) {
@ -424,6 +427,26 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
}
private void scheduleBgHistoryChange(@Nullable final long timestamp) {
class PostRunnable implements Runnable {
public void run() {
aapsLogger.debug(LTag.DATABASE, "Firing EventNewBg");
rxBus.send(new EventNewHistoryBgData(oldestBgHistoryChange));
scheduledBgHistoryPost = null;
oldestBgHistoryChange = 0;
}
}
// prepare task for execution in 1 sec
// cancel waiting task to prevent sending multiple posts
if (scheduledBgHistoryPost != null)
scheduledBgHistoryPost.cancel(false);
Runnable task = new PostRunnable();
final int sec = 3;
if (oldestBgHistoryChange == 0 || oldestBgHistoryChange > timestamp) oldestBgHistoryChange = timestamp;
scheduledBgHistoryPost = bgHistoryWorker.schedule(task, sec, TimeUnit.SECONDS);
}
public List<BgReading> getBgreadingsDataFromTime(long mills, boolean ascending) {
try {
Dao<BgReading, Long> daoBgreadings = getDaoBgReadings();

View file

@ -190,7 +190,7 @@ abstract class PluginsModule {
abstract fun bindLocalProfilePlugin(plugin: LocalProfilePlugin): PluginBase
@Binds
@AllConfigs
@APS
@IntoMap
@IntKey(250)
abstract fun bindAutomationPlugin(plugin: AutomationPlugin): PluginBase

View file

@ -9,6 +9,7 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.google.common.base.Joiner
import info.nightscout.androidaps.Config
import info.nightscout.androidaps.Constants
import info.nightscout.androidaps.R
import info.nightscout.androidaps.activities.ErrorHelperActivity
@ -45,6 +46,7 @@ class InsulinDialog : DialogFragmentWithDate() {
@Inject lateinit var commandQueue: CommandQueueProvider
@Inject lateinit var activePlugin: ActivePluginProvider
@Inject lateinit var ctx: Context
@Inject lateinit var config: Config
companion object {
private const val PLUS1_DEFAULT = 0.5
@ -88,6 +90,10 @@ class InsulinDialog : DialogFragmentWithDate() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
if (config.NSCLIENT) {
overview_insulin_record_only.isChecked = true
overview_insulin_record_only.isEnabled = false
}
val maxInsulin = constraintChecker.getMaxBolusAllowed().value()
overview_insulin_time.setParams(savedInstanceState?.getDouble("overview_insulin_time")

View file

@ -9,6 +9,7 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.google.common.base.Joiner
import info.nightscout.androidaps.Config
import info.nightscout.androidaps.R
import info.nightscout.androidaps.activities.ErrorHelperActivity
import info.nightscout.androidaps.data.DetailedBolusInfo
@ -25,6 +26,7 @@ import info.nightscout.androidaps.utils.alertDialogs.OKDialog
import info.nightscout.androidaps.utils.SafeParse
import info.nightscout.androidaps.utils.ToastUtils
import info.nightscout.androidaps.utils.resources.ResourceHelper
import kotlinx.android.synthetic.main.dialog_insulin.*
import kotlinx.android.synthetic.main.dialog_treatment.*
import kotlinx.android.synthetic.main.okcancel.*
import java.text.DecimalFormat
@ -38,6 +40,7 @@ class TreatmentDialog : DialogFragmentWithDate() {
@Inject lateinit var activePlugin: ActivePluginProvider
@Inject lateinit var commandQueue: CommandQueueProvider
@Inject lateinit var ctx: Context
@Inject lateinit var config: Config
private val textWatcher: TextWatcher = object : TextWatcher {
override fun afterTextChanged(s: Editable) {}
@ -75,6 +78,10 @@ class TreatmentDialog : DialogFragmentWithDate() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
if (config.NSCLIENT) {
overview_treatment_record_only.isChecked = true
overview_treatment_record_only.isEnabled = false
}
val maxCarbs = constraintChecker.getMaxCarbsAllowed().value().toDouble()
val maxInsulin = constraintChecker.getMaxBolusAllowed().value()
val pumpDescription = activePlugin.activePump.pumpDescription

View file

@ -261,7 +261,7 @@ class WizardDialog : DaggerDialogFragment() {
private fun calculateInsulin() {
val profileStore = activePlugin.activeProfileInterface.profile
if (treatments_wizard_profile.selectedItem == null || profileStore == null)
if (treatments_wizard_profile?.selectedItem == null || profileStore == null)
return // not initialized yet
var profileName = treatments_wizard_profile.selectedItem.toString()
val specificProfile: Profile?

View file

@ -5,6 +5,7 @@ import android.content.Intent
import android.os.Build
import android.os.Handler
import android.os.HandlerThread
import android.os.SystemClock
import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.R
import info.nightscout.androidaps.events.EventBTChange
@ -211,6 +212,7 @@ class AutomationPlugin @Inject constructor(
}
})
}
SystemClock.sleep(1100)
event.lastRun = DateUtil.now()
}
}

View file

@ -21,8 +21,8 @@ class TriggerLocation(injector: HasAndroidInjector) : Trigger(injector) {
var lastMode = InputLocationMode.Mode.INSIDE
private val buttonAction = Runnable {
locationDataContainer.lastLocation?.let {
latitude.value = it.latitude
longitude.value = it.longitude
latitude.setValue(it.latitude)
longitude.setValue(it.longitude)
aapsLogger.debug(LTag.AUTOMATION, String.format("Grabbed location: %f %f", latitude.value, longitude.value))
}
}

View file

@ -209,18 +209,24 @@ class ImportExportPrefs @Inject constructor(
} catch (e: IOException) {
ToastUtils.errorToast(activity, e.message)
log.error(TAG, "Unhandled exception", e)
} catch (e: PrefFileNotFoundError) {
ToastUtils.Long.errorToast(activity, resourceHelper.gs(R.string.preferences_export_canceled)
+ "\n\n" + resourceHelper.gs(R.string.filenotfound)
+ ": " + e.message
+ "\n\n" + resourceHelper.gs(R.string.needstoragepermission))
log.error(TAG, "File system exception", e)
} catch (e: PrefIOError) {
ToastUtils.Long.errorToast(activity, resourceHelper.gs(R.string.preferences_export_canceled)
+ "\n\n" + resourceHelper.gs(R.string.needstoragepermission)
+ ": " + e.message)
log.error(TAG, "File system exception", e)
}
}
}
fun importSharedPreferences(fragment: Fragment) {
fragment.activity?.let { fragmentAct ->
val callForPrefFile = fragmentAct.registerForActivityResult(PrefsFileContract()) {
it?.let {
importSharedPreferences(fragmentAct, it)
}
}
callForPrefFile.launch(null)
importSharedPreferences(fragmentAct)
}
}
@ -230,7 +236,15 @@ class ImportExportPrefs @Inject constructor(
importSharedPreferences(activity, it)
}
}
callForPrefFile.launch(null)
try {
callForPrefFile.launch(null)
} catch (e: IllegalArgumentException) {
// this exception happens on some early implementations of ActivityResult contracts
// when registered and called for the second time
ToastUtils.errorToast(activity, resourceHelper.gs(R.string.goto_main_try_again))
log.error(TAG, "Internal android framework exception", e)
}
}
private fun importSharedPreferences(activity: Activity, importFile: PrefsFile) {
@ -267,7 +281,7 @@ class ImportExportPrefs @Inject constructor(
restartAppAfterImport(activity)
} else {
// for impossible imports it should not be called
ToastUtils.errorToast(activity, "Cannot import preferences!")
ToastUtils.errorToast(activity, resourceHelper.gs(R.string.preferences_import_impossible))
}
})

View file

@ -63,31 +63,31 @@ class MaintenancePlugin @Inject constructor(
}
//todo replace this with a call on startup of the application, specifically to remove
// unnecessary garbage from the log exports
// unnecessary garbage from the log exports
fun deleteLogs() {
val logDirectory = LoggerUtils.getLogDirectory()
val logDir = File(logDirectory)
val files = logDir.listFiles { _: File?, name: String ->
(name.startsWith("AndroidAPS")
&& name.endsWith(".zip"))
}
Arrays.sort(files) { f1: File, f2: File -> f1.name.compareTo(f2.name) }
var delFiles = listOf(*files)
val amount = sp.getInt(R.string.key_logshipper_amount, 2)
val keepIndex = amount - 1
if (keepIndex < delFiles.size) {
delFiles = delFiles.subList(keepIndex, delFiles.size)
for (file in delFiles) {
file.delete()
LoggerUtils.getLogDirectory()?.let { logDirectory ->
val logDir = File(logDirectory)
val files = logDir.listFiles { _: File?, name: String ->
(name.startsWith("AndroidAPS") && name.endsWith(".zip"))
}
}
val exportDir = File(logDirectory, "exports")
if (exportDir.exists()) {
val expFiles = exportDir.listFiles()
for (file in expFiles) {
file.delete()
Arrays.sort(files) { f1: File, f2: File -> f1.name.compareTo(f2.name) }
var delFiles = listOf(*files)
val amount = sp.getInt(R.string.key_logshipper_amount, 2)
val keepIndex = amount - 1
if (keepIndex < delFiles.size) {
delFiles = delFiles.subList(keepIndex, delFiles.size)
for (file in delFiles) {
file.delete()
}
}
val exportDir = File(logDirectory, "exports")
if (exportDir.exists()) {
val expFiles = exportDir.listFiles()
for (file in expFiles) {
file.delete()
}
exportDir.delete()
}
exportDir.delete()
}
}

View file

@ -656,7 +656,7 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
// If the target is not the same as set in the profile then oref has overridden it
val targetUsed = lastRun?.constraintsProcessed?.targetBG ?: 0.0
if (targetUsed != 0.0 && abs(profile.targetMgdl-targetUsed) > 0.01) {
if (targetUsed != 0.0 && abs(profile.targetMgdl - targetUsed) > 0.01) {
aapsLogger.debug("Adjusted target. Profile: ${profile.targetMgdl} APS: $targetUsed")
overview_temptarget?.text = Profile.toTargetRangeString(targetUsed, targetUsed, Constants.MGDL, units)
overview_temptarget?.setTextColor(resourceHelper.gc(R.color.ribbonTextWarning))
@ -683,10 +683,10 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
overview_basebasal?.setTextColor(activeTemp?.let { resourceHelper.gc(R.color.basal) }
?: resourceHelper.gc(R.color.defaulttextcolor))
if (activeTemp != null)
overview_basebasal_icon?.setImageResource(if (activeTemp.tempBasalConvertedToPercent(System.currentTimeMillis(), profile) > 100) R.drawable.ic_cp_basal_tbr_high else R.drawable.ic_cp_basal_tbr_low)
else
overview_basebasal_icon?.setImageResource(R.drawable.ic_cp_basal_no_tbr)
overview_basebasal_icon?.setImageResource(R.drawable.ic_cp_basal_no_tbr)
val percentRate = activeTemp?.tempBasalConvertedToPercent(System.currentTimeMillis(), profile) ?:100
if (percentRate > 100) overview_basebasal_icon?.setImageResource(R.drawable.ic_cp_basal_tbr_high)
if (percentRate < 100) overview_basebasal_icon?.setImageResource(R.drawable.ic_cp_basal_tbr_low)
// Extended bolus
val extendedBolus = treatmentsPlugin.getExtendedBolusFromHistory(System.currentTimeMillis())

View file

@ -1,6 +1,9 @@
package info.nightscout.androidaps.plugins.general.overview
import androidx.preference.PreferenceFragmentCompat
import androidx.preference.SwitchPreference
import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.Config
import info.nightscout.androidaps.R
import info.nightscout.androidaps.events.EventRefreshOverview
import info.nightscout.androidaps.interfaces.PluginBase
@ -26,7 +29,8 @@ class OverviewPlugin @Inject constructor(
private val fabricPrivacy: FabricPrivacy,
private val rxBus: RxBusWrapper,
aapsLogger: AAPSLogger,
resourceHelper: ResourceHelper
resourceHelper: ResourceHelper,
private val config: Config
) : PluginBase(PluginDescription()
.mainType(PluginType.GENERAL)
.fragmentClass(OverviewFragment::class.qualifiedName)
@ -64,4 +68,18 @@ class OverviewPlugin @Inject constructor(
disposable.clear()
super.onStop()
}
override fun preprocessPreferences(preferenceFragment: PreferenceFragmentCompat) {
super.preprocessPreferences(preferenceFragment)
if (config.NSCLIENT) {
(preferenceFragment.findPreference(resourceHelper.gs(R.string.key_show_cgm_button)) as SwitchPreference?)?.let {
it.isVisible = false
it.isEnabled = false
}
(preferenceFragment.findPreference(resourceHelper.gs(R.string.key_show_calibration_button)) as SwitchPreference?)?.let {
it.isVisible = false
it.isEnabled = false
}
}
}
}

View file

@ -6,6 +6,7 @@ class NotificationUserMessage (text :String): Notification() {
var hash = text.hashCode()
if (hash < USERMESSAGE) hash += USERMESSAGE
id = hash
date = System.currentTimeMillis()
this.text = text
level = URGENT
}

View file

@ -20,13 +20,10 @@ abstract class AbstractSensitivityPlugin(
pluginDescription: PluginDescription,
injector: HasAndroidInjector,
aapsLogger: AAPSLogger,
resourceHelper:
ResourceHelper //,
//var sp: SP
resourceHelper: ResourceHelper,
val sp: SP
) : PluginBase(pluginDescription, aapsLogger, resourceHelper, injector), SensitivityInterface {
lateinit var sp: SP
abstract override fun detectSensitivity(plugin: IobCobCalculatorInterface, fromTime: Long, toTime: Long): AutosensResult
fun fillResult(ratio: Double, carbsAbsorbed: Double, pastSensitivity: String,
@ -67,4 +64,4 @@ abstract class AbstractSensitivityPlugin(
output.sensResult = sensResult
return output
}
}
}

View file

@ -36,7 +36,6 @@ import info.nightscout.androidaps.utils.sharedPreferences.SP;
@Singleton
public class SensitivityAAPSPlugin extends AbstractSensitivityPlugin {
private SP sp;
private ProfileFunction profileFunction;
private DateUtil dateUtil;
@ -57,7 +56,6 @@ public class SensitivityAAPSPlugin extends AbstractSensitivityPlugin {
.description(R.string.description_sensitivity_aaps),
injector, aapsLogger, resourceHelper, sp
);
this.sp = sp;
this.profileFunction = profileFunction;
this.dateUtil = dateUtil;
}
@ -66,12 +64,12 @@ public class SensitivityAAPSPlugin extends AbstractSensitivityPlugin {
public AutosensResult detectSensitivity(IobCobCalculatorInterface iobCobCalculatorPlugin, long fromTime, long toTime) {
LongSparseArray<AutosensData> autosensDataTable = iobCobCalculatorPlugin.getAutosensDataTable();
String age = sp.getString(R.string.key_age, "");
String age = getSp().getString(R.string.key_age, "");
int defaultHours = 24;
if (age.equals(getResourceHelper().gs(R.string.key_adult))) defaultHours = 24;
if (age.equals(getResourceHelper().gs(R.string.key_teenage))) defaultHours = 4;
if (age.equals(getResourceHelper().gs(R.string.key_child))) defaultHours = 4;
int hoursForDetection = sp.getInt(R.string.key_openapsama_autosens_period, defaultHours);
int hoursForDetection = getSp().getInt(R.string.key_openapsama_autosens_period, defaultHours);
Profile profile = profileFunction.getProfile();

View file

@ -208,10 +208,10 @@ public class SensitivityOref1Plugin extends AbstractSensitivityPlugin {
double basalOff = 0;
if (pSensitive < 0) { // sensitive
basalOff = pSensitive * (60.0 / 5) / Profile.toMgdl(sens, profile.getUnits());
basalOff = pSensitive * (60.0 / 5) / sens;
sensResult += "Excess insulin sensitivity detected";
} else if (pResistant > 0) { // resistant
basalOff = pResistant * (60.0 / 5) / Profile.toMgdl(sens, profile.getUnits());
basalOff = pResistant * (60.0 / 5) / sens;
sensResult += "Excess insulin resistance detected";
} else {
sensResult += "Sensitivity normal";

View file

@ -46,7 +46,7 @@ class KeepAliveReceiver : DaggerBroadcastReceiver() {
companion object {
private val KEEP_ALIVE_MILLISECONDS = T.mins(5).msecs()
private val STATUS_UPDATE_FREQUENCY = T.mins(15).msecs()
private val IOB_UPDATE_FREQUENCY = T.mins(5).msecs()
private val IOB_UPDATE_FREQUENCY_IN_MINS = 5L
private var lastReadStatus: Long = 0
private var lastRun: Long = 0
@ -108,7 +108,7 @@ class KeepAliveReceiver : DaggerBroadcastReceiver() {
else if (!loopPlugin.isEnabled() || iobCobCalculatorPlugin.actualBg() == null)
shouldUploadStatus = true
else if (DateUtil.isOlderThan(activePlugin.activeAPS.lastAPSRun, 5)) shouldUploadStatus = true
if (DateUtil.isOlderThan(lastIobUpload, IOB_UPDATE_FREQUENCY) && shouldUploadStatus) {
if (DateUtil.isOlderThan(lastIobUpload, IOB_UPDATE_FREQUENCY_IN_MINS) && shouldUploadStatus) {
lastIobUpload = DateUtil.now()
nsUpload.uploadDeviceStatus(loopPlugin, iobCobCalculatorPlugin, profileFunction, activePlugin.activePump, receiverStatusStore, BuildConfig.VERSION_NAME + "-" + BuildConfig.BUILDVERSION)
}

View file

@ -5,6 +5,7 @@ import android.content.Intent
import android.text.Spanned
import com.google.common.base.Joiner
import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.Config
import info.nightscout.androidaps.R
import info.nightscout.androidaps.activities.ErrorHelperActivity
import info.nightscout.androidaps.data.DetailedBolusInfo
@ -49,6 +50,7 @@ class BolusWizard @Inject constructor(
@Inject lateinit var commandQueue: CommandQueueProvider
@Inject lateinit var loopPlugin: LoopPlugin
@Inject lateinit var iobCobCalculatorPlugin: IobCobCalculatorPlugin
@Inject lateinit var config: Config
init {
injector.androidInjector().inject(this)
@ -293,6 +295,8 @@ class BolusWizard @Inject constructor(
if (abs(insulinAfterConstraints - calculatedTotalInsulin) > pump.pumpDescription.pumpType.determineCorrectBolusStepSize(insulinAfterConstraints)) {
actions.add(resourceHelper.gs(R.string.bolusconstraintappliedwarning, resourceHelper.gc(R.color.warning), calculatedTotalInsulin, insulinAfterConstraints))
}
if (config.NSCLIENT)
actions.add("<font color='" + resourceHelper.gc(R.color.warning) + "'>" + resourceHelper.gs(R.string.bolusrecordedonly) + "</font>")
return HtmlHelper.fromHtml(Joiner.on("<br/>").join(actions))
}

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="48dp"
android:height="48dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M20.964,12.509V2.983l-2.932,2.932c-4.317,-3.412 -9.981,-3.694 -13.245,-0.43c-3.581,3.581 -2.909,10.058 1.5,14.467c0.427,0.427 0.877,0.807 1.338,1.163c-0.548,-0.841 -1.031,-1.781 -1.411,-2.812C4.438,13.481 5.49,8.653 8.565,7.519c1.867,-0.688 4.047,0.152 5.872,1.99l-3,3H20.964z"
android:fillColor="#739BE0"/>
</vector>

View file

@ -1,95 +1,261 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".activities.SurveyActivity">
tools:context=".activities.ProfileHelperActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/profilehelper_age_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:labelFor="@+id/profilehelper_age"
android:text="@string/age"
android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
<info.nightscout.androidaps.utils.NumberPicker
android:id="@+id/profilehelper_age"
android:layout_width="130dp"
android:layout_height="40dp" />
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/profilehelper_weigth_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:labelFor="@+id/profilehelper_weight"
android:text="@string/weight_label"
android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
<info.nightscout.androidaps.utils.NumberPicker
android:id="@+id/profilehelper_weight"
android:layout_width="130dp"
android:layout_height="40dp" />
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/profilehelper_tdd_label"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:labelFor="@+id/profilehelper_weight"
android:text="@string/tdd_total"
android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
<info.nightscout.androidaps.utils.NumberPicker
android:id="@+id/profilehelper_tdd"
android:layout_width="130dp"
android:layout_height="40dp" />
</TableRow>
</TableLayout>
<TextView
android:id="@+id/profilehelper_tdds"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:textAppearance="@style/TextAppearance.AppCompat.Small" />
<Button
android:id="@+id/profilehelper_profile"
android:id="@+id/profilehelper_compareprofile"
style="@style/ButtonMediumFontStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableStart="@drawable/ic_compare_profiles"
android:text="@string/comapareprofile" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:background="@color/defaultbackground"
android:orientation="horizontal">
<TextView
android:id="@+id/profilehelper_menu1"
android:layout_width="0dp"
android:layout_height="30dp"
android:layout_weight="1"
android:gravity="center"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:text="1" />
<TextView
android:id="@+id/profilehelper_menu2"
android:layout_width="0dp"
android:layout_height="30dp"
android:layout_weight="1"
android:gravity="center"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:text="2" />
</LinearLayout>
<com.google.android.material.textfield.TextInputLayout
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:id="@+id/profilehelper_profiletype_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/profiletype"
android:textColorHint="@color/tabBgColorSelected"
app:boxStrokeColor="@color/tabBgColorSelected">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/profilehelper_profiletype"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:clickable="true"
android:cursorVisible="false"
android:focusable="false"
android:focusableInTouchMode="false"
android:importantForAutofill="no" />
</com.google.android.material.textfield.TextInputLayout>
<LinearLayout
android:id="@+id/profilehelper_default_profile"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/profilehelper_age_label"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:labelFor="@+id/profilehelper_age"
android:text="@string/age"
android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
<info.nightscout.androidaps.utils.NumberPicker
android:id="@+id/profilehelper_age"
android:layout_width="130dp"
android:layout_height="40dp" />
</TableRow>
<TableRow
android:id="@+id/profilehelper_tdd_row"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/profilehelper_tdd_label"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:labelFor="@+id/profilehelper_weight"
android:text="@string/tdd_total"
android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
<info.nightscout.androidaps.utils.NumberPicker
android:id="@+id/profilehelper_tdd"
android:layout_width="130dp"
android:layout_height="40dp" />
</TableRow>
<TableRow
android:id="@+id/profilehelper_weight_row"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/profilehelper_weigth_label"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:labelFor="@+id/profilehelper_weight"
android:text="@string/weight_label"
android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
<info.nightscout.androidaps.utils.NumberPicker
android:id="@+id/profilehelper_weight"
android:layout_width="130dp"
android:layout_height="40dp" />
</TableRow>
<TableRow
android:id="@+id/profilehelper_basalpctfromtdd_row"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/profilehelper_basalpctfromtdd_label"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:labelFor="@+id/profilehelper_basalpctfromtdd"
android:text="@string/basalpctfromtdd_label"
android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
<info.nightscout.androidaps.utils.NumberPicker
android:id="@+id/profilehelper_basalpctfromtdd"
android:layout_width="130dp"
android:layout_height="40dp" />
</TableRow>
</TableLayout>
<TextView
android:id="@+id/profilehelper_tdds"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:textAppearance="@style/TextAppearance.AppCompat.Small" />
<Button
android:id="@+id/profilehelper_copytolocalprofile"
style="@style/ButtonMediumFontStyle"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:drawableStart="@drawable/ic_clone_48"
android:text="@string/clone_label" />
</LinearLayout>
<LinearLayout
android:id="@+id/profilehelper_current_profile"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/profilehelper_current_profile_text"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
</LinearLayout>
<LinearLayout
android:id="@+id/profilehelper_available_profile"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<com.google.android.material.textfield.TextInputLayout
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/selected_profile"
android:textColorHint="@color/white"
app:boxStrokeColor="@color/white">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/profilehelper_available_profile_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:clickable="true"
android:cursorVisible="false"
android:focusable="false"
android:focusableInTouchMode="false"
android:importantForAutofill="no" />
</com.google.android.material.textfield.TextInputLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/profilehelper_profile_switch"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<com.google.android.material.textfield.TextInputLayout
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/careportal_profileswitch"
android:textColorHint="@color/white"
app:boxStrokeColor="@color/white">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/profilehelper_profileswitch_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:clickable="true"
android:cursorVisible="false"
android:focusable="false"
android:focusableInTouchMode="false"
android:importantForAutofill="no" />
</com.google.android.material.textfield.TextInputLayout>
</LinearLayout>
</LinearLayout>

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menu_default"
android:title="@string/motoldefaultprofile" />
<item
android:id="@+id/menu_default_dpv"
android:title="@string/dpvdefaultprofile" />
<item
android:id="@+id/menu_current"
android:title="@string/currentprofile" />
<item
android:id="@+id/menu_available"
android:title="@string/availableprofile" />
<item
android:id="@+id/menu_profileswitch"
android:title="@string/careportal_profileswitch" />
</menu>

View file

@ -1223,7 +1223,7 @@
<string name="clone_label">Клонирай</string>
<string name="saveorresetchangesfirst">Първо запазете или се откажете от промените</string>
<string name="deletecurrentprofile">Изтриване на текущия профил?</string>
<string name="copytolocalprofile">Създаване на нов локален профил от това превключване?</string>
<string name="copytolocalprofile">Желаете ли да създадете нов локален профил от този профил?</string>
<string name="profilenamecontainsdot">Името на профила съдържа точка.\nТова не се поддържа от НС.\nПрофилът не е качен в НС.</string>
<string name="low_mark_comment">Ниската граница на диапазона (графика)</string>
<string name="high_mark_comment">Високата граница на диапазона (графика)</string>
@ -1405,6 +1405,12 @@
<string name="omnipod_bolus_failed_uncertain">Не може да се провери статус на болус. Моля, уверете се, че вашият под е стартирал болус или го отменете.</string>
<string name="omnipod_rl_stats">Статистика на RL</string>
<string name="omnipod_read_pulse_log_short">Pulse лог</string>
<string name="comapareprofile">Сравни с текущия профил</string>
<string name="comapareprofile">Сравняване на профили</string>
<string name="nav_profilehelper">Профил съветник</string>
<string name="motoldefaultprofile">Профил по подразбиране</string>
<string name="currentprofile">Текущ профил</string>
<string name="availableprofile">Наличен профил</string>
<string name="profiletype">Профил тип</string>
<string name="formatwithtdd">Възраст: %1$.0f TDD: %2$.0f Е</string>
<string name="formatwithweight">Възраст: %1$.0f Тегло: %2$.0f кг</string>
</resources>

View file

@ -1223,7 +1223,7 @@
<string name="clone_label">Klonovat</string>
<string name="saveorresetchangesfirst">Nejprve uložte nebo resetujte aktuální změny</string>
<string name="deletecurrentprofile">Odstranit aktuální profil?</string>
<string name="copytolocalprofile">Chcete vytvořit nový lokální profil z tohoto přepnutí profilu?</string>
<string name="copytolocalprofile">Vytvořit z tohoto profilu nový místní profil?</string>
<string name="profilenamecontainsdot">Název profilu obsahuje tečky.\nToto není v NS podporováno.\nProfil není přenesen do NS.</string>
<string name="low_mark_comment">Spodní hodnota oblasti v rozsahu (pouze zobrazování)</string>
<string name="high_mark_comment">Horní hodnota oblasti v rozsahu (pouze zobrazování)</string>
@ -1237,6 +1237,7 @@
<string name="nav_survey">Průzkum</string>
<string name="invalidage">Neplatná položka věku</string>
<string name="invalidweight">Neplatná položka váhy</string>
<string name="invalidpct">Neplatný vstup %</string>
<string name="tirformat"><![CDATA[<b>%1$s:</b> Pod: <b>%2$02d%%</b> V: <b>%3$02d%%</b> Nad: <b>%4$02d%%</b>]]></string>
<string name="average">Průměr</string>
<string name="tir">Čas v rozsahu</string>
@ -1405,4 +1406,15 @@
<string name="omnipod_bolus_failed_uncertain">Nelze ověřit, zda byl bolus úspěšný. Ověřte prosím, zda Váš Pod dodává bolus nebo ho zrušte.</string>
<string name="omnipod_rl_stats">Statistika RL</string>
<string name="omnipod_read_pulse_log_short">Pulse Log</string>
<string name="comapareprofile">Porovnat profily</string>
<string name="nav_profilehelper">Pomocník s profilem</string>
<string name="motoldefaultprofile">Výchozí profil</string>
<string name="currentprofile">Aktuální profil</string>
<string name="availableprofile">Dostupný profil</string>
<string name="profiletype">Typ profilu</string>
<string name="formatwithtdd">Věk: %1$.0f CDD: %2$.0f U</string>
<string name="formatwittddandpct">Věk: %1$.0f CDD: %2$.0f U %3$d%%</string>
<string name="formatwithweight">Věk: %1$.0f Hmotnost: %2$.0f kg</string>
<string name="basalpctfromtdd_label">% bazálu</string>
<string name="dpvdefaultprofile">Výchozí profil DPV</string>
</resources>

View file

@ -1224,7 +1224,7 @@ Unerwartetes Verhalten.</string>
<string name="clone_label">Klonen</string>
<string name="saveorresetchangesfirst">Speichere oder verwerfe die aktuellen Änderungen zuerst</string>
<string name="deletecurrentprofile">Aktuelles Profil löschen?</string>
<string name="copytolocalprofile">Neues lokales Profil auf Basis dieses Profilwechsels erstellen?</string>
<string name="copytolocalprofile">Neues lokales Profil auf Basis dieses Profils erstellen?</string>
<string name="profilenamecontainsdot">Profilname enthält Punkte.\nDies wird von NS nicht unterstützt.\nProfil wird nicht zu NS hochgeladen.</string>
<string name="low_mark_comment">Unterer Wert des Zielbereichs (nur Anzeige)</string>
<string name="high_mark_comment">Oberer Wert des Zielbereichs (nur Anzeige)</string>
@ -1238,6 +1238,7 @@ Unerwartetes Verhalten.</string>
<string name="nav_survey">Umfrage</string>
<string name="invalidage">Ungültige Altersangabe</string>
<string name="invalidweight">Ungültige Gewichtsangabe</string>
<string name="invalidpct">Ungültige % Eingabe</string>
<string name="tirformat"><![CDATA[<b>%1$s:</b> Low: <b>%2$02d%%</b> In: <b>%3$02d%%</b> High: <b>%4$02d%%</b>]]></string>
<string name="average">Durchschnitt</string>
<string name="tir">TIR</string>
@ -1407,5 +1408,15 @@ Mache das nur, wenn AAPS nicht mehr mit dem Pod kommunizieren kann. Wenn dies no
<string name="omnipod_bolus_failed_uncertain">Erfolgreiche Bolusabgabe konnte nicht sicher ermittelt werden. Stelle sicher, dass der Pod Insulin abgibt oder brich den Bolus ab.</string>
<string name="omnipod_rl_stats">RL Stats</string>
<string name="omnipod_read_pulse_log_short">Pulse Log</string>
<string name="comapareprofile">Profile vergleichen</string>
<string name="nav_profilehelper">Profil-Helfer</string>
<string name="motoldefaultprofile">Standard-Profil</string>
<string name="currentprofile">Aktuelles Profil</string>
<string name="availableprofile">Verfügbares Profil</string>
<string name="profiletype">Profil-Typ</string>
<string name="formatwithtdd">Alter: %1$.0f TDD: %2$.0f U</string>
<string name="formatwittddandpct">Alter: %1$.0f TDD: %2$.0f IE %3$d%%</string>
<string name="formatwithweight">Alter: %1$.0f Gewicht: %2$.0f kg</string>
<string name="basalpctfromtdd_label">% der Basalrate</string>
<string name="dpvdefaultprofile">DPV-Standard-Profil</string>
</resources>

View file

@ -1223,7 +1223,7 @@
<string name="clone_label">Clonar</string>
<string name="saveorresetchangesfirst">Guardar o restablecer los cambios actuales primero</string>
<string name="deletecurrentprofile">¿Eliminar el perfil actual?</string>
<string name="copytolocalprofile">¿Crear un nuevo perfil local a partir de este conmutador de perfil?</string>
<string name="copytolocalprofile">¿Crear un perfil local nuevo a partir de este perfil?</string>
<string name="profilenamecontainsdot">El nombre de perfil contiene puntos.\nEsto no está soportado por NS.\nEl perfil no se carga en NS.</string>
<string name="low_mark_comment">Valor inferior del área de rango (sólo visualización)</string>
<string name="high_mark_comment">Valor superior al área de rango (sólo visualización)</string>
@ -1405,4 +1405,11 @@
<string name="omnipod_bolus_failed_uncertain">No se puede verificar si el bolo ha sido exitoso. Por favor verifique que su Pod está poniendo bolo o cancele el bolo.</string>
<string name="omnipod_rl_stats">Estadísticas del RL</string>
<string name="omnipod_read_pulse_log_short">Registro de pulso</string>
<string name="comapareprofile">Comparar perfiles</string>
<string name="nav_profilehelper">Asistente de perfil</string>
<string name="currentprofile">Perfil actual</string>
<string name="availableprofile">Perfil disponible</string>
<string name="profiletype">Tipo de perfil</string>
<string name="formatwithtdd">Edad: %1$.0f TDD: %2$.0f U</string>
<string name="formatwithweight">Edad: %1$.0f Peso: %2$.0f kg</string>
</resources>

View file

@ -15,6 +15,8 @@
<string name="noprotection">Pas de Protection</string>
<string name="protection">Protection</string>
<string name="master_password_missing">Le mot de passe principal n\'est pas défini !\n\nVeuillez définir votre mot de passe principal dans les préférences (%1$s &#8594; %2$s)</string>
<string name="unsecure_fallback_biometric">Retour arrière non sécurisé</string>
<string name="unsecure_fallback_descriotion_biometric">Pour être effective, la protection biométrique nécessite un mot de passe principal pour revenir en arrière.\n\nMerci de définir un mot de passe principal !</string>
<string name="password_set">Mot de passe défini !</string>
<string name="password_not_set">Mot de passe non défini</string>
<string name="password_not_changed">Mot de passe non modifié</string>

View file

@ -1224,7 +1224,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="clone_label">Dupliquer</string>
<string name="saveorresetchangesfirst">Sauver ou réinitialiser les modifications actuelles en premier</string>
<string name="deletecurrentprofile">Supprimer le profil actuel ?</string>
<string name="copytolocalprofile">Créer un nouveau profil local à partir de ce changement de profil ?</string>
<string name="copytolocalprofile">Créer un nouveau profil local à partir de ce profil ?</string>
<string name="profilenamecontainsdot">Le nom du profil contient des points.\nCe n\'est pas pris en charge par NS.\nLe profil n\'est pas remonté dans NS.</string>
<string name="low_mark_comment">Valeur inférieure dans la plage (affichage uniquement)</string>
<string name="high_mark_comment">Valeur supérieure dans la plage (affichage uniquement)</string>
@ -1238,6 +1238,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="nav_survey">Sondage</string>
<string name="invalidage">Âge invalide</string>
<string name="invalidweight">Poids invalide</string>
<string name="invalidpct">% saisi invalide</string>
<string name="tirformat"><![CDATA[<b>%1$s:</b> Bas: <b>%2$02d%%</b> Cible: <b>%3$02d%%</b> Haut: <b>%4$02d%%</b>]]></string>
<string name="average">Moyenne</string>
<string name="tir">Cible Gly</string>
@ -1406,4 +1407,15 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="omnipod_bolus_failed_uncertain">Impossible de vérifier si le bolus a réussi. Vérifiez que votre Pod délivre le bolus ou annulez le bolus.</string>
<string name="omnipod_rl_stats">État RL</string>
<string name="omnipod_read_pulse_log_short">Enreg. Pulse</string>
<string name="comapareprofile">Comparer les profils</string>
<string name="nav_profilehelper">Assistant Profil</string>
<string name="motoldefaultprofile">Profil par défaut</string>
<string name="currentprofile">Profil actuel</string>
<string name="availableprofile">Profil disponible</string>
<string name="profiletype">Type de profil</string>
<string name="formatwithtdd">Âge: %1$.0f DTI: %2$.0f U</string>
<string name="formatwittddandpct">Âge: %1$.0f DTI: %2$.0f U %3$d%%</string>
<string name="formatwithweight">Âge: %1$.0f Poids: %2$.0f kg</string>
<string name="basalpctfromtdd_label">% de basal</string>
<string name="dpvdefaultprofile">Profil par défaut DPV</string>
</resources>

View file

@ -1223,7 +1223,7 @@
<string name="clone_label">Clona</string>
<string name="saveorresetchangesfirst">Salva o reimposta prima le modifiche correnti</string>
<string name="deletecurrentprofile">Rimuovere il profilo corrente?</string>
<string name="copytolocalprofile">Creare nuovo profilo locale da questo cambio profilo?</string>
<string name="copytolocalprofile">Creare un nuovo profilo locale da questo profilo?</string>
<string name="profilenamecontainsdot">Il nome profilo contiene dei punti.\nQuesto non è supportato da NS.\nIl profilo non viene caricato in NS.</string>
<string name="low_mark_comment">Valore più basso per l\'intervallo di visualizzazione dell\'area \"in range\"</string>
<string name="high_mark_comment">Valore più alto per l\'intervallo di visualizzazione dell\'area \"in range\"</string>
@ -1237,6 +1237,7 @@
<string name="nav_survey">Sondaggio</string>
<string name="invalidage">Inserimento età non valido</string>
<string name="invalidweight">Inserimento peso non valido</string>
<string name="invalidpct">Inserimento % non valido</string>
<string name="tirformat"><![CDATA[<b>%1$s:</b> Basso: <b>%2$02d%%</b> In: <b>%3$02d%%</b> Alto: <b>%4$02d%%</b>]]></string>
<string name="average">Media</string>
<string name="tir">TIR</string>
@ -1405,4 +1406,15 @@
<string name="omnipod_bolus_failed_uncertain">Impossibile verificare che il bolo sia riuscito. Verifica che il tuo pod stia erogando il bolo oppure cancellalo.</string>
<string name="omnipod_rl_stats">Statistiche RL</string>
<string name="omnipod_read_pulse_log_short">Log impulsi</string>
<string name="comapareprofile">Compara profili</string>
<string name="nav_profilehelper">Assistente profilo</string>
<string name="motoldefaultprofile">Profilo predefinito</string>
<string name="currentprofile">Profilo corrente</string>
<string name="availableprofile">Profilo disponibile</string>
<string name="profiletype">Tipo profilo</string>
<string name="formatwithtdd">Età: %1$.0f TDD: %2$.0f U</string>
<string name="formatwittddandpct">Età: %1$.0f TDD: %2$.0f U %3$d%%</string>
<string name="formatwithweight">Età: %1$.0f Peso: %2$.0f kg</string>
<string name="basalpctfromtdd_label">% di basale</string>
<string name="dpvdefaultprofile">Profilo DPV predefinito</string>
</resources>

View file

@ -1113,7 +1113,6 @@
<string name="clone_label">복사</string>
<string name="saveorresetchangesfirst">우선 현재 변경사항을을 저장하거나 재설정하세요</string>
<string name="deletecurrentprofile">현재 프로파일을 삭제 하시겠습니까?</string>
<string name="copytolocalprofile">이 프로파일 변경을 기반으로 새 로컬 프로파일을 만드시겠습니까?</string>
<string name="profilenamecontainsdot">프로파일명에 점을 포함하고 있습니다.\n이는 NS에서 지원하지 않습니다.\n프로파일이 NS에 업로드되지 않습니다.</string>
<string name="low_mark_comment">혈당 정상범위의 하한값(표시 전용)</string>
<string name="high_mark_comment">혈당 정상범위의 상한값(표시 전용)</string>

View file

@ -1237,6 +1237,7 @@
<string name="nav_survey">Apklausa</string>
<string name="invalidage">Neteisingas amžiaus įrašas</string>
<string name="invalidweight">Neteisingas svorio įrašas</string>
<string name="invalidpct">Netinkamas % įrašas</string>
<string name="tirformat"><![CDATA[<b>%1$s:</b> Žemas: <b>%2$02d%%</b> Norma: <b>%3$02d%%</b> Aukštas: <b>%4$02d%%</b>]]></string>
<string name="average">Vidutinis</string>
<string name="tir">TIR (Laikas normos ribose)</string>
@ -1405,4 +1406,15 @@
<string name="omnipod_bolus_failed_uncertain">Neįmanoma patikrinti, ar bolusas suleistas sėkmingai. Patikrinkite, ar jūsų POD leidžia bolusą, arba bolusą atšaukite.</string>
<string name="omnipod_rl_stats">RL statistika</string>
<string name="omnipod_read_pulse_log_short">Pulse žurnalas</string>
<string name="comapareprofile">Palyginti profilius</string>
<string name="nav_profilehelper">Profilio pagalbininkas</string>
<string name="motoldefaultprofile">Numatytasis profilis</string>
<string name="currentprofile">Dabartinis profilis</string>
<string name="availableprofile">Galimas profilis</string>
<string name="profiletype">Profilio tipas</string>
<string name="formatwithtdd">Amžius: %1$.0f BPD: %2$.0f U</string>
<string name="formatwittddandpct">Amžius: %1$.0f BPD: %2$.0f U %3$d%%</string>
<string name="formatwithweight">Amžius: %1$.0f Svoris: %2$.0f kg</string>
<string name="basalpctfromtdd_label">% bazės</string>
<string name="dpvdefaultprofile">Numatytasis profilis</string>
</resources>

View file

@ -1223,7 +1223,6 @@
<string name="clone_label">Dupliceren</string>
<string name="saveorresetchangesfirst">Huidige wijzigingen eerst opslaan of ongedaan maken</string>
<string name="deletecurrentprofile">Huidige profiel verwijderen?</string>
<string name="copytolocalprofile">Nieuw lokaal profiel maken op basis van deze profiel wissel?</string>
<string name="profilenamecontainsdot">Profielnaam bevat punten.\nDit wordt niet ondersteund door NS.\nProfiel is niet geüpload naar NS.</string>
<string name="low_mark_comment">Laagste waarde in bereik (alleen weergave)</string>
<string name="high_mark_comment">Hoogste waarde in bereik (alleen weergave)</string>
@ -1405,4 +1404,5 @@
<string name="omnipod_bolus_failed_uncertain">Kan niet controleren of de bolus is geslaagd. Controleer of de Pod de bolus aan het toedienen is of annuleer de bolus.</string>
<string name="omnipod_rl_stats">RL Statistieken</string>
<string name="omnipod_read_pulse_log_short">Pulsen Log</string>
<string name="nav_profilehelper">Profiel hulp</string>
</resources>

View file

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="dia_whatmeansdia">Co jest prawdą w przypadku DIA?</string>
<string name="dia_label_exam">Temat: Czas działania insuliny (DIA)</string>
<string name="dia_minimumis3h">Wartość minimalna to 3 godziny.</string>
<string name="dia_minimumis5h">Wartość minimalna to 5 godzin.</string>
<string name="dia_hint1">https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html?#insulin</string>
@ -121,6 +122,7 @@
<string name="nsclient_looponiphone">Aplikacja Loop na iPhone\'a.</string>
<string name="nsclient_spikeiphone">Aplikacja Spike na iPhone\'a.</string>
<string name="nsclient_hint1">https://androidaps.readthedocs.io/en/latest/EN/Children/Children.html</string>
<string name="isf_label_exam">Temat: Współczynnik wrażliwości na insulinę (ISF)</string>
<string name="isf_increasingvalue">Wyższe wartości ISF prowadzą do mniejszej ilości podanej insuliny gdy AAPS koryguje wysoki poziom cukru.</string>
<string name="isf_decreasingvalue">Niższe wartości ISF prowadzą do mniejszej dawki insuliny gdy AAPS koryguje wysoki poziom cukru.</string>
<string name="isf_noeffect">Zmiana wartości ISF nie ma wpływu na ilość insuliny dostarczanej, gdy AAPS koryguje wysoki poziom cukru.</string>
@ -128,6 +130,7 @@
<string name="isf_profile">Zmiana wartości ISF w profilu wystarczy, aby zastosować zmianę.</string>
<string name="isf_hint1">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#insulin-sensitivity-factor-isf-mmol-l-u-or-mg-dl-u</string>
<string name="isf_hint2">https://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html</string>
<string name="ic_label_exam">Temat: Węglowodany na jednostkę Insuliny (IC)</string>
<string name="ic_increasingvalue">Wyższe wartości ICprowadzą do mniejszej ilości insuliny dostarczonej do podanej ilości węglowodanów.</string>
<string name="ic_decreasingvalue">Niższe wartości IC prowadzą do mniejszej ilości insuliny podanej do wprowadzonej ilości węglowodanów.</string>
<string name="ic_noeffect">Załóżmy, że masz 0 COB. Zmiana IC doprowadzi do podania innej ilości insuliny w celu skorygowania twojej wartości BG.</string>

View file

@ -15,6 +15,8 @@
<string name="noprotection">Bez ochrony</string>
<string name="protection">Z ochroną</string>
<string name="master_password_missing">Hasło główne nie jest ustawione!\n\nProszę ustawić swoje hasło główne w preferencjach (%1$s &#8594; %2$s)</string>
<string name="unsecure_fallback_biometric">Niezabezpieczona funkcja fallback</string>
<string name="unsecure_fallback_descriotion_biometric">Aby być skuteczna, biometryczna ochrona musi posiadać hasło typu master. \n\n Ustaw hasło typu master!</string>
<string name="password_set">Hasło ustawione!</string>
<string name="password_not_set">Hasło nie ustawione</string>
<string name="password_not_changed">Hasło nie zostało zmienione</string>

View file

@ -126,10 +126,12 @@
<string name="apsmode_title">Tryb APS</string>
<string name="closedloop">Zamknięta pętla</string>
<string name="openloop">Otwarta pętla</string>
<string name="lowglucosesuspend">Zawieszenie przy niskiej glikemii</string>
<string name="disabledloop">Pętla wyłączona</string>
<string name="disableloop">Wyłącz pętle</string>
<string name="enableloop">Włącz pętle</string>
<string name="openloop_newsuggestion">Dostępna nowa sugestia</string>
<string name="carbssuggestion">Sugestia węglowodanów</string>
<string name="unsupportednsversion">Niewspierana wersja Nightscout</string>
<string name="loopdisabled">PĘTLA WYLĄCZONA Z UWAGI NA OGRANICZENIA</string>
<string name="treatments_wizard_basaliob_label">Bazowa IOB</string>
@ -162,6 +164,7 @@
<string name="filenotfound">Nie znaleziono pliku</string>
<string name="nav_export">Eksportuj ustawienia</string>
<string name="nav_import">Importuj ustawienia</string>
<string name="openapsma_maxbasal_title">Maksymalna wartość U/h tymczasowej bazy może być ustawiona na</string>
<string name="openapsma_maxbasal_summary">Wartość określona jako Maksymalna Baza (max basal) w OpenAPS</string>
<string name="openapsma_maxiob_title">Maksymalna bazowa IOB, którą OpenAPS może dostarczyć [U]</string>
<string name="openapsma_maxiob_summary">Ta wartość jest nazywana Max IOB w OpenAPS\nTo jest maksymalna wartość insuliny w [U], którą APS może dostarczyć w danej chwili.</string>
@ -250,6 +253,11 @@
<string name="smscommunicator_loopisenabled">Pętla (Loop) jest włączona</string>
<string name="valuelimitedto">%1$.2f ograniczone do %2$.2f</string>
<string name="valueoutofrange">Wartość %1$s jest poza dopuszczalną granicą</string>
<string name="smscommunicator_pumpconnectwithcode">Aby podłączyć pompę odpowiedz kodem %1$s</string>
<string name="smscommunicator_pumpconnectfail">Połączenie z pompą nie powiodło się</string>
<string name="smscommunicator_pumpdisconnectwithcode">Aby odłączyć pompę na %1d minut odpowiedz kodem %2$s</string>
<string name="smscommunicator_pumpdisconnected">Pompa odłączona</string>
<string name="smscommunicator_reconnect">Pompa ponownie podłączona</string>
<string name="smscommunicator_remotecommandnotallowed">Zdalne komendy nie są dozwolone</string>
<string name="smscommunicator_remotebolusnotallowed">Bolus zdalny niedostępny. Spróbuj ponownie później.</string>
<string name="smscommunicator_basalreplywithcode">Aby rozpocząć bazę %1$.2fU/h przez %2$d min. odpowiedz kodem %3$s</string>
@ -258,6 +266,9 @@
<string name="smscommunicator_carbsreplywithcode">Aby wprowadzić %1$dg o %2$s odeślij w SMS kod %3$s</string>
<string name="smscommunicator_basalpctreplywithcode">Aby rozpocząć bolus przedłużony %1$d%% przez %2$d min. odpowiedz kodem %3$s</string>
<string name="smscommunicator_suspendreplywithcode">Aby wstrzymać pętle na %1$d minut odpowiedz kodem %2$s</string>
<string name="smscommunicator_loopresumereplywithcode">Aby wznowić pętlę odpowiedz kodem %1$s</string>
<string name="smscommunicator_loopenablereplywithcode">Aby włączyć pętlę odpowiedz kodem %1$s</string>
<string name="smscommunicator_loopdisablereplywithcode">Aby wyłączyć pętlę odpowiedz kodem %1$s</string>
<string name="smscommunicator_tempbasalset">Tymczasowa baza %1$.2fU/h przez %2$d min rozpoczęta</string>
<string name="smscommunicator_extendedset">Bolus przedłużony %1$.2fU na %2$d min. rozpoczęty pomyślnie</string>
<string name="smscommunicator_carbsset">Pomyślnie wprowadzono %1$dg węglowodanów</string>
@ -289,6 +300,7 @@
<string name="primefill">Rozpocznij/Wypełnij</string>
<string name="fillwarning">Proszę upewnij się, że ilość wypełnienia odpowiada ilości właściwej dla twojego wkłucia!</string>
<string name="othersettings_title">Inne</string>
<string name="fillbolus_title">Rozpocznij/Wypełnij standardowe ilości insuliny</string>
<string name="button1">Przycisk 1</string>
<string name="button2">Przycisk 2</string>
<string name="button3">Przycisk 3</string>
@ -347,6 +359,7 @@
<string name="openapsama_current_basal_safety_multiplier_summary">Wartość domyślna: 4 To jest drugi kluczowy współczynnik bezpieczeństwa OpenAPS, i druga wartość z “3x max dzienna; 4x aktualna”. To oznacza, że Twoja dawka bazowa niezależnie od maksymalnej bazy ustawionej na pompie nie może być większa niż ta ustawiona wartość razy twoja aktualna dawka bazowa. To ma na celu przestrzec ludzi przed ustawieniem zbyt wysokiej dawki maksymalnej przed zrozumieniem jak działa algorytm. Ponownie, wartość domyślna to 4x; większość ludzi nie będzie potrzebowała tego zmienić i raczej będą potrzebować dostosować inne ustawienia, jeśli czują, że zbliżają się do współczynnika bezpieczeństwa.</string>
<string name="openapsama_autosens_max_summary">Wartość domyślna: 1.2\nTo jest mnożnik dla autosens (wkrótce autotune), ustawia 20%% maks. limit dla najwyższej wartości jaką autosens może przyjąć, co z kolei określa jak wysoko autosens może zwiększyć bazę, jak nisko może ustawić współczynnik wrażliwości insuliny ISF, i jak nisko może ustawić docelową wartość glikemii.</string>
<string name="openapsama_autosens_min_summary">Wartość domyślna: 0.7\nDruga strona limitu bezpieczeństwa dla autosens, ustawia mnożnik minimalny dla wartości, do jakiej autosens może obniżyć bazę, i jak wysoko może ustawić ISF i wartość docelową BG.</string>
<string name="openapsama_autosens_adjusttargets">Autosens dostosowuje również wartości docelowe</string>
<string name="openapsama_autosens_adjusttargets_summary">Domyślnie włączone\nTa funkcja pozwala wpływać na zmianę wartości docelowe BG, wartości bazy i oraz współczynnika wrażliwości na insulinę ISF.</string>
<string name="openapsama_bolussnooze_dia_divisor_summary">Wartość domyślna: 2\nBolus snooze jest uruchamiany po wykonaniu bolusa posiłkowego, tak by pętla nie przeciwdziałała niskim wartościom tymczasowym zaraz po posiłku. Jako przykład: wartość domyślna ustawiona jest 2; więc 3 godzinne DIA oznacza, że bolus snooze będzie stopniowo wycofany po 1.5 godziny (3DIA/2).</string>
<string name="openapsama_min_5m_carbimpact_summary">Wartość domyślna: 3.0 (AMA) lub 8.0 (SMB). To jest ustawienie domyślnego wpływu wchłaniania węglowodanów w czasie 5 min. Wartością domyślną jest spodziewane 3mg/dl/5min. Ma to wpływ na szybkość zaniku COB, oraz jak duże wchłanianie węglowodanów będzie przyjęte do obliczeń przyszłych przewidywanych wartości BG, jeżeli BG obniża się bardziej niż w założono, lub nie wzrasta tak szybko jak się spodziewano.</string>
@ -441,8 +454,14 @@
<string name="statuslights_res_critical">Próg ostrzeżenia o krytycznym poziomie zbiornika [U]</string>
<string name="statuslights_bat_warning">Próg ostrzeżenia o poziomie baterii [%]</string>
<string name="statuslights_bat_critical">Próg ostrzeżenia o krytycznym poziomie baterii [%]</string>
<string name="prediction_shortname">PRED</string>
<string name="iob">IOB</string>
<string name="cob">COB</string>
<string name="basal_shortname">BAZ</string>
<string name="deviation_shortname">ODCH</string>
<string name="activity_shortname">AKT</string>
<string name="abs_insulin_shortname">ABS</string>
<string name="devslope_shortname">KRZOD</string>
<string name="nav_about">O programie</string>
<string name="smscommunicator_missingsmspermission">Brak uprawnień SMS</string>
<string name="smscommunicator_missingphonestatepermission">Brak uprawnień do wykrywania stanu telefonu</string>
@ -461,6 +480,8 @@
<string name="doprofileswitch">Zmień profil</string>
<string name="careportal_pbage_label">Czas baterii pompy</string>
<string name="ns_alarmoptions">Opcje alarmu</string>
<string name="ns_alarms">Utwórz powiadomienia z alarmów NS</string>
<string name="ns_announcements">Utwórz powiadomienia z komunikatów NS</string>
<string name="nsalarm_staledatavalue_label">Próg nieaktualne dane [min]</string>
<string name="nsalarm_urgent_staledatavalue_label">Próg uwaga nieaktualne dane [min]</string>
<string name="openapsama_autosens_period">Przedział czasowy dla autosens [h]</string>
@ -541,6 +562,7 @@
<string name="enable_missed_bg_readings_alert">Alarm, jeśli nie są odbierane odczyty BG</string>
<string name="enable_pump_unreachable_alert">Alarm, gdy pompa jest nieosiągalna</string>
<string name="pump_unreachable_threshold">Pompa nieosiągalna próg [min]</string>
<string name="enable_carbs_req_alert">Alarm gdy wymagane jest podanie węglowodanów</string>
<string name="urgent_alarm">Pilny alarm</string>
<string name="info">INFO</string>
<string name="eversense">Apka Eversense (spatchowana)</string>
@ -553,6 +575,8 @@
<string name="smbmaxminutes_summary">Maks. ilość minut dawki bazowej do ograniczenia SMB</string>
<string name="uamsmbmaxminutes">Maksymalna liczba minut UAM SMB</string>
<string name="uamsmbmaxminutes_summary">Maks. ilość minut dawki bazowej do ograniczenia SMB dla UAM</string>
<string name="carbsReqThreshold">Minimalna sugestia węglowodanów (dosłodzenia)</string>
<string name="carbsReqThreshold_summary">Minimalna ilość węglowodanów, w gramach, niezbędna dla pokazania sugestii dosłodzenia. Sugestie dosłodzenia poniżej tej wartości będą ignorowane - powiadomienie nie będzie pokazywane.</string>
<string name="dexcomg5_xdripupload_title">Prześlij dane BG do xDrip+</string>
<string name="dexcomg5_xdripupload_summary">W xDrip+ wybierz źródło danych 640g/Eversense</string>
<string name="nsclientbg">NSClient BG</string>
@ -611,6 +635,8 @@
<string name="extendedbolusdeliveryerror">Błąd dostarczania bolusa przedłużonego</string>
<string name="insightpump_shortname">Sight</string>
<string name="ago">temu</string>
<string name="set_neutral_temps_title">Ustawiaj neutralne bazy tymczasowe</string>
<string name="set_neutral_temps_summary">Jeśli ta opcja jest włączona, anuluje tymczasową wartość bazową przed końcem każdej godziny. Może to pomóc wyciszyć alarmy/wibracje związane z TBR występujące co godzinę w niektórych pompach.</string>
<string name="enablesmbalways">Włącz SMB (Super Mikro Bolusy) zawsze</string>
<string name="enablesmbalways_summary">Włącz SMB (Super Mikro Bolusy) zawsze, niezależnie od bolusów. Możliwe jedynie ze źródłem BG (poziomu cukru) z dobrym filtrowaniem, jak aplikacja G5</string>
<string name="enablesmbaftercarbs">Włącz SMB po węglowodanach</string>
@ -630,11 +656,17 @@
<string name="insulin_increment_button_message">Ilość insuliny do dodania po wciśnięciu przycisku</string>
<string name="error_starting_cgm">Nie można uruchomić aplikacji CGM. Upewnij się, że została zainstalowana.</string>
<string name="overview_cgm">CGM</string>
<string name="ignore5m">Ignoruj 5 min</string>
<string name="ignore15m">Ignoruj 15 min</string>
<string name="ignore30m">Ignoruj 30 min</string>
<string name="required">wym</string>
<string name="nav_historybrowser">Przegląd historii</string>
<string name="wear_notifysmb_title">Powiadom na SMB</string>
<string name="wear_notifysmb_summary">Pokaż SMB na zegarku jak bolus standardowy.</string>
<string name="ns_create_announcements_from_errors_title">Twórz powiadomienia o błędach</string>
<string name="ns_create_announcements_from_carbs_req_title">Twórz powiadomienia z wymaganych dodatkowych węglowodanów (sugestii dosłodzenia)</string>
<string name="ns_create_announcements_from_errors_summary">Twórz powiadomienia Nightscout o błędach i lokalnych alarmach (również widoczne w PortaluOpieki w ramach Leczenia)</string>
<string name="ns_create_announcements_from_carbs_req_summary">Twórz powiadomienia w Nighstcout na podstawie sugestii dosłodzenia</string>
<string name="wear_predictions_summary">Pokaż prognozę poziomu na zegarku.</string>
<string name="wear_predictions_title">Prognozy</string>
<string name="data_choices">Wybór Danych</string>
@ -764,6 +796,7 @@
<string name="permission">Uprawnienia</string>
<string name="askforpermission">Zapytaj o uprawnienia</string>
<string name="needsystemwindowpermission">Aplikacja wymaga uprawnienia systemowego okna dla powiadomień</string>
<string name="needlocationpermission">Aplikacja wymaga dostępu do lokalizacji dla zarządzania bluetoothem i identyfikacją Wi-Fi</string>
<string name="needstoragepermission">Aplikacja wymaga dostępu do magazynu plików, aby móc przechować pliki logów</string>
<string name="request">Żądanie</string>
<string name="insulinsourcesetup">Skonfiguruj wtyczkę insuliny</string>
@ -835,6 +868,10 @@
<string name="log_alerts">Melduj ostrzeżenia</string>
<string name="enable_tbr_emulation">Włącz emulację TBR</string>
<string name="enable_tbr_emulation_summary">Użyj rozszerzonych bolusów zamiast TBR by ominąć limit 250%% bazy</string>
<string name="disable_vibration">Wyłącz wibracje przy ręcznym podawaniu bolusa</string>
<string name="disable_vibration_summary">Dotyczy bolusa i rozszerzonego bolusa (dostępne tylko z pompami Insight z firmware 3.x)</string>
<string name="disable_vibration_auto">Wyłącz wibracje przy automatycznym podawaniu bolusa</string>
<string name="disable_vibration_auto_summary">Dla SMB i Bazy Tymczasowej z emulacją TBR (tylko z firmware w wersji 3.x pompy Insight)</string>
<string name="disconnect_delay">Opóźnienie rozłączenie [s]</string>
<string name="serial_number">Numer seryjny</string>
<string name="release_software_version">Wersja oprogramowania</string>
@ -1187,12 +1224,13 @@
<string name="clone_label">Sklonuj</string>
<string name="saveorresetchangesfirst">Najpierw zapisz lub wycofaj bieżące zmiany</string>
<string name="deletecurrentprofile">Skasować bieżący profil?</string>
<string name="copytolocalprofile">Utworzyć nowy profil lokalny na bazie wybranego profilu?</string>
<string name="copytolocalprofile">Utworzyć nowy profil lokalny z wybranego profilu?</string>
<string name="profilenamecontainsdot">Nazwa profilu zawiera kropki.\nTo nie jest obsługiwane przez NS.\nProfil nie zostanie przesyłany do NS.</string>
<string name="low_mark_comment">Dolna wartość zakresu docelowego (tylko do wyświetlania)</string>
<string name="high_mark_comment">Górna wartość zakresu docelowego (tylko do wyświetlania)</string>
<string name="reorder_label">Zmień kolejność</string>
<string name="age">Wiek:</string>
<string name="weight_label">Waga:</string>
<string name="id">ID:</string>
<string name="submit">Wyślij</string>
<string name="mostcommonprofile">Najczęściej używany profil:</string>
@ -1256,17 +1294,124 @@
<string name="statuslights">Wskaźniki stanu</string>
<string name="statuslights_copy_ns">Kopiowanie ustawień z NS</string>
<string name="copyexistingvalues">Czy skopiować ustawienia NS (jeśli istnieją)?</string>
<string name="classic_description">Motyw oryginalny</string>
<string name="buttonson_description">Przyciski są zawsze wyświetlane na dole ekranu</string>
<string name="largedisplay_description">Duży ekran</string>
<string name="skin">Motyw</string>
<!-- Omnipod -->
<!-- Omnipod - Base -->
<string name="description_pump_omnipod">Integracja pompy Omnipod, wymaga RileyLink (z firmwarem 2.0 lub wyższym).</string>
<!-- Omnipod Configuration -->
<string name="omnipod_config_beep_bolus_enabled">Sygnał dźwiękowy bolusa włączony</string>
<string name="omnipod_config_beep_basal_enabled">Sygnał dźwiękowy bazy włączony</string>
<string name="omnipod_config_beep_smb_enabled">Sygnał dźwiękowy SMB włączony</string>
<string name="omnipod_config_beep_tbr_enabled">Sygnał dźwiękowy TBR (tymczasowej dawk bazowej) włączony</string>
<string name="omnipod_config_pod_debugging_options_enabled">Włączone opcje debugowania PODów</string>
<string name="omnipod_config_timechange_enabled">Włączone wykrywanie stref czasowych</string>
<!-- Omnipod - Fragment -->
<string name="omnipod_pod_mgmt">Pod Mgmt</string>
<string name="omnipod_pod_status">Status Pod</string>
<string name="omnipod_reservoir_left">%1$.2f U zostało</string>
<string name="omnipod_reservoir_over50">Ponad 50 U</string>
<string name="omnipod_pod_address">Adres Pod</string>
<string name="omnipod_pod_expiry">Pod traci ważność</string>
<string name="omnipod_pod_name_no_info">Brak informacji</string>
<string name="omnipod_pod_no_pod_connected">Pod nie podłączony</string>
<string name="omnipod_pod_not_initalized">Nie zainicjowany</string>
<string name="omnipod_pod_active_alerts">Aktywne alarmy Pod</string>
<string name="omnipod_ack_short">Alerty ack</string>
<!-- Omnipod - Dialogs -->
<string name="omnipod_frequency">Omnipod (433,91 MHz)</string>
<!-- Omnipod - Error -->
<string name="omnipod_error_operation_not_possible_no_configuration">To działanie nie jest możliwe.\n\n Musisz skonfigurować Omnipod przed uruchomieniem tego działania.</string>
<string name="omnipod_error_operation_not_possible_no_profile">Operacja nie jest możliwa.\n\n Trzeba poczekać kilka minut, aż AAPS spróbuje ustawić profil pierwszy raz.</string>
<string name="omnipod_error_illegal_init_action_type">Niedozwolone działanie PodInitActionType: %1$s</string>
<string name="omnipod_error_pod_not_attached">Brak aktywnego Pod.</string>
<string name="omnipod_driver_error_setup_action_verification_failed">Nieudana weryfikacja polecenia.</string>
<string name="omnipod_driver_error_unexpected_exception_type">Wystąpił nieoczekiwany błąd. Proszę zgłosić! (typ: %1$s).</string>
<string name="omnipod_driver_error_invalid_parameters">Komunikacja nie powiodła się: odebrano niepoprawne parametry wejściowe.</string>
<string name="omnipod_driver_error_communication_failed_timeout">Komunikacja nie powiodła się: przekroczono limit czasu.</string>
<string name="omnipod_driver_error_communication_failed_unexpected_exception">Komunikacja nie powiodła się: wystąpił nieoczekiwany błąd. Proszę zgłosić!</string>
<string name="omnipod_driver_error_crc_mismatch">Komunikacja nie powiodła się: weryfikacja integralności komunikatu nie powiodła się.</string>
<string name="omnipod_driver_error_invalid_packet_type">Komunikacja nie powiodła się: odebrano niepoprawny pakiet (komunikat) z Poda.</string>
<string name="omnipod_driver_error_invalid_progress_state">Komunikacja nie powiodła się: Pod jest w niewłaściwym stanie.</string>
<string name="omnipod_driver_error_invalid_response">Komunikacja nie powiodła się: odebrano niepoprawną odpowiedź (pakiet) z Poda.</string>
<string name="omnipod_driver_error_invalid_message_sequence_number">Komunikacja nie powiodła się: odebrano komunikat z niepoprawną sekwencją liczb z Poda.</string>
<string name="omnipod_driver_error_invalid_message_address">Komunikacja nie powiodła się: odebrano komunikat z niepoprawną adresacją z Poda.</string>
<string name="omnipod_driver_error_message_decoding_failed">Komunikacja nie powiodła się: nie powiodło się dekodowanie komunikatu z Poda.</string>
<string name="omnipod_driver_error_nonce_resync_failed">Komunikacja nie powiodła się: nonce resync nie powiodło się.</string>
<string name="omnipod_driver_error_nonce_out_of_sync">Komunikacja nie powiodła się: nonce nie jest zsynchronizowane.</string>
<string name="omnipod_driver_error_not_enough_data">Komunikacja nie powiodła się: brak wystarczającej ilości danych odebranych z Poda.</string>
<string name="omnipod_driver_error_pod_fault">Błąd Pod. (%1$03d %2$s) został wykryty. Zdezaktywuj swój Pod i uruchom nowy.</string>
<string name="omnipod_driver_error_pod_returned_error_response">Komunikacja nie powiodła się: Pod zwrócił odpowiedź o błędzie.</string>
<!-- Omnipod - Pod Mgmt -->
<string name="omnipod_pod_mgmt_title">Zarządzanie Pod</string>
<string name="omnipod_cmd_init_pod">Uruchom Pod</string>
<string name="omnipod_cmd_deactivate_pod">Odłącz Pod</string>
<string name="omnipod_cmd_reset_pod">Resetuj Pod</string>
<string name="omnipod_cmd_pod_history">Historia Pod</string>
<string name="omnipod_cmd_set_bolus">Podanie bolusa</string>
<string name="omnipod_cmd_cancel_bolus">Anulowanie bolusa</string>
<string name="omnipod_cmd_set_tbr">Ustaw tymczasową dawkę bazową</string>
<string name="omnipod_cmd_cancel_tbr">Anuluj tymczasową bazę (wewnętrznie przez sterownik)</string>
<string name="omnipod_cmd_cancel_tbr_forced">Anuluj tymczasową bazę (wymuszone przez użytkownika)</string>
<string name="omnipod_cmd_set_basal_schedule">Ustaw harmonogram Dawki bazowej</string>
<string name="omnipod_cmd_get_pod_status">Pobierz status Pod</string>
<string name="omnipod_cmd_get_pod_info">Pobierz informacje o Pod</string>
<string name="omnipod_cmd_set_time">Ustaw czas</string>
<string name="omnipod_cmd_configure_alerts">Konfigurowanie alertów</string>
<string name="omnipod_cmd_acknowledge_alerts">Potwierdź alerty</string>
<string name="omnipod_cmd_suspend_delivery">Wstrzymaj podawanie</string>
<string name="omnipod_cmd_resume_delivery">Wznów podawanie</string>
<string name="omnipod_cmd_unknown_entry">Nieznany Wpis</string>
<string name="omnipod_cmd_bolus_value">%1$.1f U</string>
<string name="omnipod_cmd_bolus_value_with_carbs">%1$.1f U, CH=%2$.1f g</string>
<string name="omnipod_cmd_tbr_value">Dawka: %1$.1f U, Czas: %2$d min</string>
<string name="omnipod_cmd_reset_pod_desc">Jeśli naciśniesz <b>OK</b>, stan Pod zostanie wyzerowany i nie będziesz mógł więcej komunikować się z tym Podem. Zrób to tylko wtedy, gdy nie możesz się z nim skmunikować. Jeśli nadal można komunikować się z Podem, skorzystaj z opcji <b>Odłącz Pod</b>.</string>
<string name="omnipod_cmd_pod_history_na">Historia Pod nie jest dostępna w tej chwili.</string>
<string name="omnipod_init_pod_wizard_step1_title">Napełnij Pod</string>
<string name="omnipod_init_pod_wizard_step1_desc">\nNapełnij nowego Poda z wystarczającą ilością insuliny przez 3 dni.\n\nNasłuchuj dwóch sygnałów dźwiękowych z Poda podczas procesu napełniania. Wskazują one, że minimalna ilość 85U została wypełniona. Należy upewnić się, że ampułkostrzykawka jest całkowicie pusta, nawet po odsłuchaniu dwóch sygnałów dźwiękowych.\n\nPo napełnieniu Poda, należy nacisnąć <b>Dalej</b>.\n\n<b>Uwaga:</b> nie usuwaj w tym czasie osłonki igłowej Poda.</string>
<string name="omnipod_init_pod_wizard_step2_title">Wypełnianie</string>
<string name="omnipod_init_pod_wizard_step2_action_header">Próba sparowania z nowym Podem i wypełnienia go.\n\nKiedy wszystkie elementy są sprawdzone, można nacisnąć <b>Następny</b>.\n\n<b>Uwaga:</b> prosimy o trzymanie w tym czasie Poda bardzo blisko RileyLink.</string>
<string name="omnipod_init_pod_wizard_step3_title">Przymocuj Poda</string>
<string name="omnipod_init_pod_wizard_step3_desc">\nPrzygotowanie miejsca do infuzji. Zdjąć osłonkę igły i zabezpieczenie plastra i przykleić Pod do skóry w miejscu wkłucia.\n\nJeśli kaniula odkleja się, proszę wcisnąć <b>Anuluj</b> i odczepić Pod.\n\nNaciśnij <b>Następny</b> w celu wprowadzenia kaniuli i rozpoczęcia podawania bazy.</string>
<string name="omnipod_init_pod_wizard_step4_title">Wprowadzanie kaniuli</string>
<string name="omnipod_init_pod_wizard_step4_action_header">Próba ustawienia początkowego planu bazowego i wprowadzeia kaniuli.\n\nKiedy wszystkie elementy są sprawdzane, można nacisnąć <b>Następny</b>.</string>
<string name="omnipod_init_pod_wizard_pod_info_title">Informacje o Podzie</string>
<string name="omnipod_init_pod_wizard_pod_info_init_pod_description">\nPod jest teraz aktywny.\n\nTwój plan dawki bazowej został zaprogramowany i wprowadzono kaniulę w miejsce wkłucia.\n\nSprawdź, czy kaniula została prawidłowo włożona i wymień swój Pod, jeśli czujesz, że nie.</string>
<string name="omnipod_remove_pod_wizard_step1_title">Odłącz Pod</string>
<string name="omnipod_remove_pod_wizard_step1_desc">\nNaciśnij <b>Następny</b> w celu odłączenia Poda.\n\n<b>Uwaga:</b> To spowoduje zawieszenie wszystkich dostaw insuliny i dezaktywację Poda.</string>
<string name="omnipod_remove_pod_wizard_step2_title">Odłączanie Poda</string>
<string name="omnipod_remove_pod_wizard_step2_action_header">Deaktywacja Pod.\n\nKiedy wszystkie elementy są zaznaczone, możesz nacisnąć <b>Następna</b>.\n\n<b>Uwaga:</b> Jeśli deaktywacja w sposób ciągły nie powodzi się, należy nacisnąć <b>Anuluj</b> i użyć opcji <b>Reset Pod</b>, aby wymusić zresetowanie stanu Pod.</string>
<string name="omnipod_init_pod_wizard_pod_info_remove_pod_description">Pod odłączony.\n\nProszę odkleić Pod od ciała i wyrzucić go.</string>
<string name="omnipod_init_pod_pair_pod">Sparuj Pod</string>
<string name="omnipod_init_pod_prime_pod">Wypełnij Pod</string>
<string name="omnipod_init_pod_fill_cannula">Wypełnij kaniulę</string>
<string name="omnipod_init_pod_set_basal_profile">Ustaw profil dawki bazowej</string>
<string name="omnipod_deactivate_pod_cancel_delivery">Anulowanie podawania</string>
<string name="omnipod_deactivate_pod_deactivate_pod">Odłącz Pod</string>
<!-- Omnipod Dash -->
<!-- Omnipod - Base -->
<string name="description_pump_omnipod_dash">Integracja pompy dla Omnipod Dash.</string>
<string name="omnipod_alert_finish_pairing_reminder">Zakończ przypomnienie parowania</string>
<string name="omnipod_alert_finish_setup_reminder_reminder">Zakończ przypomnienie o konfiguracji</string>
<string name="omnipod_alert_expiration">Pod wkrótce straci ważność</string>
<string name="omnipod_alert_expiration_advisory">Pod wkrótce straci ważność</string>
<string name="omnipod_alert_shutdown_imminent">Wyłączenie jest nieuchronne</string>
<string name="omnipod_alert_low_reservoir">Niski poziom w zbiorniku</string>
<string name="omnipod_alert_unknown_alert">Nieznany alarm</string>
<string name="omnipod_error_set_basal_failed_uncertain">Ustawienie profilu podstawowego mogło się nie powieść. Podawanie mogło zostać zawieszone! Odśwież status Pod.</string>
<string name="omnipod_error_set_temp_basal_failed_uncertain">Ustawienie bazy tymczasowej mogło się nie powieść. Jeśli była już uruchomiona baza tymczasowa, to mogła zostać odwołana! Odśwież status Pod.</string>
<string name="omnipod_error_set_time_failed_uncertain">Ustawienie czasu mogło się nie powieść. Podawanie mogło zostać zawieszone! Odśwież status Pod.</string>
<string name="omnipod_bolus_failed_uncertain">Nie można sprawdzić, czy podano bolus. Upewnij się, że Twój Pod podaje bolus lub odwołaj go.</string>
<string name="omnipod_rl_stats">Statystyki RL</string>
<string name="omnipod_read_pulse_log_short">Logi pulsów omnipod</string>
<string name="comapareprofile">Porównaj profile</string>
<string name="nav_profilehelper">Pomocnik profilu</string>
<string name="motoldefaultprofile">Profil domyślny</string>
<string name="currentprofile">Bieżący profil</string>
<string name="availableprofile">Dostępny profil</string>
<string name="profiletype">Typ profilu</string>
<string name="formatwithtdd">Wiek: %1$.0f TDD: %2$.0f U</string>
<string name="formatwithweight">Wiek: %1$.0f Waga: %2$.0f kg</string>
</resources>

View file

@ -1178,7 +1178,6 @@
<string name="target_short">ALV</string>
<string name="saveorresetchangesfirst">Guardar ou repor as alterações atuais primeiro</string>
<string name="deletecurrentprofile">Eliminar perfil atual?</string>
<string name="copytolocalprofile">Criar novo perfil local a partir desta troca de perfil?</string>
<string name="profilenamecontainsdot">Nome do perfil contém pontos.\nIsso não é suportado pelo NS.\nPerfil não foi enviado para o NS.</string>
<string name="low_mark_comment">Valor mais baixo da área de intervalo (apenas exibição)</string>
<string name="high_mark_comment">Valor mais alto da área de intervalo (apenas exibição)</string>

View file

@ -1223,7 +1223,7 @@
<string name="clone_label">Clone</string>
<string name="saveorresetchangesfirst">Guardar ou repor as alterações actuais primeiro</string>
<string name="deletecurrentprofile">Eliminar perfil actual?</string>
<string name="copytolocalprofile">Criar novo perfil local a partir desta troca de perfil?</string>
<string name="copytolocalprofile">Criar novo perfil local a partir deste perfil?</string>
<string name="profilenamecontainsdot">Nome do perfil contém pontos.\nIsso não é suportado pelo NS.\nPerfil não é enviado para o NS.</string>
<string name="low_mark_comment">Valor mais baixo da área de intervalo (apenas exibição)</string>
<string name="high_mark_comment">Valor mais alto da área de intervalo (apenas exibição)</string>
@ -1237,6 +1237,7 @@
<string name="nav_survey">Questionário</string>
<string name="invalidage">Entrada de idade inválida</string>
<string name="invalidweight">Entrada de peso inválida</string>
<string name="invalidpct">Entrada % inválida</string>
<string name="tirformat"><![CDATA[<b>%1$s:</b> Hipo: <b>%2$02d%%</b> Dentro: <b>%3$02d%%</b> Hiper: <b>%4$02d%%</b>]]></string>
<string name="average">Média</string>
<string name="tir">TIR</string>
@ -1405,6 +1406,15 @@
<string name="omnipod_bolus_failed_uncertain">Não é possível verificar se o bólus foi bem-sucedido. Por favor, verifique se o Pod está administrar ou cancelar o bólus.</string>
<string name="omnipod_rl_stats">Estatísticas RL</string>
<string name="omnipod_read_pulse_log_short">Registo de Pulse</string>
<string name="comapareprofile">Comparar com o perfil atual</string>
<string name="comapareprofile">Comparar Perfis</string>
<string name="nav_profilehelper">Assistente de Perfil</string>
<string name="motoldefaultprofile">Perfil Padrão</string>
<string name="currentprofile">Perfil Actual</string>
<string name="availableprofile">Perfil Disponível</string>
<string name="profiletype">Tipo de Perfil</string>
<string name="formatwithtdd">Idade: %1$.0f TDD: %2$.0f U</string>
<string name="formatwittddandpct">Idade: %1$.0f TDD: %2$.0f U %3$d%%</string>
<string name="formatwithweight">Idade: %1$.0f Peso: %2$.0f kg</string>
<string name="basalpctfromtdd_label">% de basal</string>
<string name="dpvdefaultprofile">Perfil Padrão DPV</string>
</resources>

View file

@ -186,6 +186,7 @@
<string name="metadata_warning_old_export">Preferințele importate sunt vechi de %1$s zile deja! Poate aveți preferințe mai recente sau ați ales un fișier greșit? Amintiți-vă să exportați preferințele în mod regulat!</string>
<string name="metadata_warning_date_format">Format dată invalid!</string>
<string name="metadata_warning_different_version">Preferințe dintr-o versiune minoră diferită a aplicației. Este OK dacă importați după upgrade, dar verificați după import că preferințele sunt corecte!</string>
<string name="metadata_urgent_different_version">Preferințe dintr-o versiune majoră a aplicației. Versiunile majore au diferențe semnificative și pot avea preferințe incompatibile! Asigurați-vă după import ca preferințele sunt corecte!</string>
<string name="metadata_label_format">Formatul fișierului</string>
<string name="metadata_label_created_at">Creat la</string>
<string name="metadata_label_aaps_version">Versiune AAPS</string>
@ -206,6 +207,13 @@
<string name="prefdecrypt_issue_modified">Fişierul a fost modificat după export!</string>
<string name="prefdecrypt_issue_parsing">Eroare la decriptare, parsarea preferinţelor a eşuat!</string>
<string name="prefdecrypt_issue_wrong_pass">Eroare la decriptare, parola furnizată este invalidă sau fişierul de setări a fost modificat! Se poate întâmpla ca fişierul importat să fi fost exportat cu o parolă master diferită.</string>
<string name="prefdecrypt_issue_wrong_format">Lipseşte configuraţia de criptare, formatul setărilor este invalid!</string>
<string name="prefdecrypt_issue_wrong_algorithm">Algoritm de criptare nesuportat sau nespecificat!</string>
<string name="exported_today">exportat azi</string>
<string name="exported_ago" comment="at placeholder we add pluralized number of hours/minutes">exportat cu %1$s în urmă</string>
<string name="exported_at" comment="at placeholder we add export date">exportat în data de %1$s</string>
<string name="exported_less_than_hour_ago">exportat acum mai puțin de o ora</string>
<string name="in_directory" comment="placeholder is for exported file path">în folderul: %1$s</string>
<string name="end_user_license_agreement">Licență utilizator final</string>
<string name="end_user_license_agreement_text">NU FOLOSIȚI PENTRU LUAREA DE DECIZII MEDICALE. NU EXISTĂ RĂSPUNDERE LEGALĂ SAU GARANȚIE PENTRU ACEST PROGRAM, ÎN LIMITA APLICABILĂ A LEGII. CU EXCEPTIA CAZURILOR SPECIAL MENȚIONATE, AUTORUL ȘI/SAU ALTE PERSOANE IMPLICATE PUN LA DISPOZIȚIE ACEST PROGRAM FĂRĂ NICIO GARANȚIE, IMPLICITĂ SAU EXPLICITĂ, INCLUZÂND, DAR FĂRĂ A SE LIMITA LA, GARANȚIILE LEGATE DE VĂNZAREA SAU POTRIVIREA PENTRU UN ANUME SCOP. ÎNTREGUL RISC LEGAT DE CALITATEA ȘI PERFORMANȚA ACESTUI PROGRAM CAD ÎN RESPONSABILITATEA DUMNEAVOASTRĂ. DACĂ PROGRAMUL SE DOVEDEȘTE A FI DEFECT, DUMNEAVOASTRĂ VĂ ASUMAȚI ÎNTREAGA RĂSPUNDERE, PRECUM ȘI TOATE COSTURILE LEGATE DE SERVICE, REPARAȚII SAU CORECȚII.</string>
<string name="end_user_license_agreement_i_understand">ÎNȚELEG ȘI SUNT DE ACORD</string>
@ -215,14 +223,26 @@
<string name="smscommunicator_allowednumbers">Numere de telefon permise</string>
<string name="smscommunicator_allowednumbers_summary">+ XXXXXXXXXX; + YYYYYYYYYY</string>
<string name="smscommunicator_bolusreplywithcode">Pentru a livra un bolus de %1$.2fU răspundeți cu codul %2$s</string>
<string name="smscommunicator_mealbolusreplywithcode">Pentru a livra un bolus de %1$.2fU raspundeți cu: %2$s</string>
<string name="smscommunicator_temptargetwithcode">Pentru a seta tinta temporara %1$s raspundeti cu: %2$s</string>
<string name="smscommunicator_temptargetcancel">Pentru a anula tinta temporara raspundeți cu: %1$s</string>
<string name="smscommunicator_stopsmswithcode">Pentru a dezactiva serviciul SMS la distanta raspundeti cu: %1$s.\n\nRetineti ca o sa il puteti reactiva doar direct de pe smartphone-ul master AAPS.</string>
<string name="smscommunicator_stoppedsms">Serviciul SMS la distanta s-a oprit. Pentru a il reactiva, utilizati AAPS de pe smartphone-ul master.</string>
<string name="smscommunicator_calibrationreplywithcode">Pentru a trimite calibrarea cu %1$.2f răspundeți cu codul %2$s</string>
<string name="smscommunicator_bolusfailed">Bolusare eșuată</string>
<string name="smscommunicator_remotebolusmindistance_summary">Numarul minim de minute care trebuie sa treaca intre un bolus la distanta si urmatorul</string>
<string name="smscommunicator_remotebolusmindistance">Cate minute trebuie sa treaca, cel puţin, intre un bolus si următorul</string>
<string name="smscommunicator_remotebolusmindistance_caveat">Pentru siguranta dumneavoastra, pentru a edita aceasta preferinta trebuie sa adaugati cel putin 2 numere de telefon.</string>
<string name="bolusdelivered">Bolusul de %1$.2fU a fost livrat cu succes</string>
<string name="bolusrequested">Se va livra un bolus de %1$.2fU</string>
<string name="smscommunicator_bolusdelivered">Bolusul de %1$.2fU a fost livrat cu succes</string>
<string name="smscommunicator_mealbolusdelivered">Bolusul de %1$.2fU a fost livrat cu succes</string>
<string name="smscommunicator_mealbolusdelivered_tt">Țintă %1$s pentru %2$d minute</string>
<string name="smscommunicator_tt_set">Tinta %1$s pentru %2$d minute este setata cu succes</string>
<string name="smscommunicator_tt_canceled">Tinta temporara anulata cu succes</string>
<string name="smscommunicator_remotecommandsallowed">Permite comenzi de la distanță, prin SMS</string>
<string name="danarprofile">Setări de profil DanaR</string>
<string name="danarprofile_dia">DIA [o]</string>
<string name="danarprofile_dia">DIA [h]</string>
<string name="danarprofile_dia_summary">Durata de Acțiune a Insulinei (DIA)</string>
<string name="uploading">Se trimite</string>
<string name="bolusstopped">Bolus oprit</string>
@ -233,6 +253,9 @@
<string name="smscommunicator_loopisenabled">Bucla este activată</string>
<string name="valuelimitedto">%1$.2f este limitată la %2$.2f</string>
<string name="valueoutofrange">Valoarea %1$s este mai mare decât limita stabilită</string>
<string name="smscommunicator_pumpconnectwithcode">Pentru a conecta pompa raspundeti cu codul %1$s</string>
<string name="smscommunicator_pumpconnectfail">Conectarea cu pompa a esuat</string>
<string name="smscommunicator_pumpdisconnectwithcode">Pentru a deconecta pompa timp de %1d minute, raspundeti cu: %2$s</string>
<string name="smscommunicator_pumpdisconnected">Pompă deconectată</string>
<string name="smscommunicator_reconnect">Pompă reconectată</string>
<string name="smscommunicator_remotecommandnotallowed">Comanda de la distanță nu este permisă</string>
@ -240,10 +263,16 @@
<string name="smscommunicator_basalreplywithcode">Pentru a iniția bazala de %1$.2fU/h pentru %2$d min trimiteți codul %3$s</string>
<string name="smscommunicator_profilereplywithcode">Pentru a schimba profilul în %1$s %2$d%% trimiteți codul %3$s</string>
<string name="smscommunicator_extendedreplywithcode">Pentru a stabili bazala de %1$.2fU/h pentru %2$d min trimiteți codul %3$s</string>
<string name="smscommunicator_carbsreplywithcode">Pentru a introduce %1$dg la %2$s, raspundeti cu: %3$s</string>
<string name="smscommunicator_basalpctreplywithcode">Pentru a iniția bazala de %1$d%% pentru %2$d min trimiteți codul %3$s</string>
<string name="smscommunicator_suspendreplywithcode">Pentru suspendarea buclei pentru %1$d minute trimiteți codul %2$s</string>
<string name="smscommunicator_loopresumereplywithcode">Pentru a reactiva bucla inchisa, raspundeti cu %1$s</string>
<string name="smscommunicator_loopenablereplywithcode">Pentru a activa bucla inchisa, raspundeti cu %1$s</string>
<string name="smscommunicator_loopdisablereplywithcode">Pentru a dezactiva bucla inchisa, raspundeti cu %1$s</string>
<string name="smscommunicator_tempbasalset">Bazala temporară %1$.2fU/h pentru %2$d minute a fost trimisă cu succes</string>
<string name="smscommunicator_extendedset">Bolusul extins de %1$.2fU pentru %2$d min a fost inițiat</string>
<string name="smscommunicator_carbsset">%1$dg carbohidrati introdusi cu succes</string>
<string name="smscommunicator_carbsfailed">Introducerea a %1$dg de carbohidrati a esuat</string>
<string name="smscommunicator_tempbasalset_percent">Bazala temporară %1$d%% pentru %2$d minute a fost stabilită cu succes</string>
<string name="smscommunicator_tempbasalfailed">Trimiterea bazalei temporare a eșuat</string>
<string name="smscommunicator_extendedfailed">Pornirea bolusului extins a eșuat</string>
@ -274,6 +303,9 @@
<string name="button1">Buton 1</string>
<string name="button2">Buton 2</string>
<string name="button3">Buton 3</string>
<string name="units_colon">Unități:</string>
<string name="units">Unități</string>
<string name="dia">DIA</string>
<string name="target_range">Intervalul țintă:</string>
<string name="prefs_range_title">Intervalul pentru vizualizare</string>
<string name="prefs_range_summary">Valoarea maximă și minimă pentru graficele din vizualizare și pentru smartwatch</string>
@ -304,6 +336,7 @@
<string name="eatingsoon">Masă în curând</string>
<string name="hypo">Hipo</string>
<string name="activity">Activitate</string>
<string name="removerecord">Șterge înregistrarea</string>
<string name="actions_shortname">ACT</string>
<string name="configbuilder_shortname">CONF</string>
<string name="loop_shortname">BUCL</string>
@ -325,6 +358,7 @@
<string name="openapsama_current_basal_safety_multiplier_summary">Valoare implicită: 4\nAceasta este cealaltă jumătate a cheii de siguranță a OpenAPS și cealaltă jumătate a \"3x max zilnic; 4x curent\" al setărilor de siguranță.Aceasta înseamnă că bazala dumneavoastră, indiferent de bazala maximă configurată în pompă, nu poate fi mai mare de acest număr înmulțit cu nivelul curent al bazalei active. Această limitare este impusă pentru a evita posibilitatea de a intra pe un teritoriu periculos prin setarea unei bazale maxime excesiv de mari înainte de a înțelege funcționarea algoritmului. Din nou, valoarea implictă este 4x; majoritatea oamenilor nu vor trebui să ajusteze această valoare și vor modifica, mai degrabă, alte valori dacă vor simți că această valoare le stă în cale.</string>
<string name="openapsama_autosens_max_summary">Valoare implicită: 1.2\nAceasta este valoarea limită de multiplicare pentru autosens (și pentru autotune, în curând) pentru a seta o limită maximă de 20%% din cât de mare poate fi raportul autosens, care, la rândul ei, determină cât de mult poate autosens să modifice bazalele, cât de jos poate modifica ISF și cât de jos poate pune ținta glicemiei.</string>
<string name="openapsama_autosens_min_summary">Valoare implicită: 0.7\nCealaltă parte a limitelor autosens, care limitează cât de jos poate ajusta bazalele și cât de mult poate mări ISF și țintele de glicemie.</string>
<string name="openapsama_autosens_adjusttargets">Autosens ajustează si target-urile</string>
<string name="openapsama_autosens_adjusttargets_summary">Valoare implicită: adevărat\nAceasta se folosește pentru a permite autosens să ajusteze țintele de glicemie, pe lângă modificările asupra ISF și bazalelor.</string>
<string name="openapsama_bolussnooze_dia_divisor_summary">Valoare implicită: 2\nAmânarea bolusului este aplicată după ce ați făcut un bolus de masă, astfel încât bucla să nu reacționeze cu ținte bazale temporare scăzute atunci când tocmai ați mâncat. Exemplul de față și valoarea implicită sunt 2; astfel o durată de acțiune a insulinei (DIA) de 3 ore duce la o eliminare treptată a întârzierii setării bazalelor temporare după 1.5 ore (3DIA/2).</string>
<string name="openapsama_min_5m_carbimpact_summary">Valoarea implicită: 3.0 (AMA) sau 8.0 (SMB). Aceasta este o setare pentru impactul implicit al carbohidraţilor pe 5 minute. Valoarea implicită este 3mg/dl la 5min. Aceasta influenţează rapiditatea cu care se scade COB şi modul în care se ia în calcul absorbţia carbohidraţilor în calcularea valorilor estimate ale glicemiei, atunci când glicemia este în scădere mai mare decât se aştepta sau nu creşte atât de repede pe cât se aştepta.</string>
@ -363,6 +397,7 @@
<string name="wear_detailedIOB_title">Arată IOB detaliat</string>
<string name="wear_detailedIOB_summary">Separă IOB în bolus și IOB bazal pe ceas</string>
<string name="nosuccess">fără succes - verificați telefonul</string>
<string name="notavailable">indisponibil</string>
<string name="patientage">Vârsta pacientului</string>
<string name="child">Copil</string>
<string name="teenage">Adolescent</string>
@ -370,6 +405,8 @@
<string name="resistantadult">Adult rezistent la insulină</string>
<string name="patientage_summary">Vă rog să selectați vârsta pacientului în vederea stabilirii valorilor maxime admise de siguranță</string>
<string name="patient_name">Numele pacientului</string>
<string name="patient_name_summary">Vă rugăm să furnizați numele sau porecla pacientului pentru a diferenția între configurări</string>
<string name="patient_name_default" comment="This is default patient display name, when user does not provide real one">Utilizator</string>
<string name="Glimp">Glimp</string>
<string name="needwhitelisting">%1$s necesită excluderea din lista de optimizare a bateriei pentru o funcționare corespunzătoare</string>
<string name="loopsuspended">Buclă suspendată</string>
@ -404,10 +441,26 @@
<string name="enablesuperbolus">Activează superbolus în asistent</string>
<string name="enablesuperbolus_summary">Activează funcționalitatea de superbolus în asistentul de buclă. Nu activați până nu înțelegeți ce face cu adevărat. DACĂ ESTE FOLOSIT ÎN NECUNOȘTINȚĂ DE CAUZĂ POATE DUCE LA SUPRADOZĂ DE INSULINĂ!</string>
<string name="show_statuslights">Afișați indicatorii luminoși ai pompei pe ecranul de start</string>
<string name="statuslights_cage_warning">Prag de avertizare timp de utilizare canulă [h]</string>
<string name="statuslights_cage_critical">Prag critic timp de utilizare canulă [h]</string>
<string name="statuslights_iage_warning">Prag de avertizare vechime insulină [h]</string>
<string name="statuslights_iage_critical">Prag critic vechime insulină [h]</string>
<string name="statuslights_sage_warning">Prag de avertizare vechime senzor [h]</string>
<string name="statuslights_sage_critical">Prag critic vechime senzor [h]</string>
<string name="statuslights_bage_warning">Prag de avertizare nivel baterie [h]</string>
<string name="statuslights_bage_critical">Prag critic nivel baterie [h]</string>
<string name="statuslights_res_warning">Pragul de avertisment pentru insulina din rezervor [U]</string>
<string name="statuslights_res_critical">Pragul critic al nivelului insulinei în rezervor [U]</string>
<string name="statuslights_bat_warning">Pragul de avertizare nivel baterie [%]</string>
<string name="statuslights_bat_critical">Pragul critic al nivelului baterie [%]</string>
<string name="prediction_shortname">PRED</string>
<string name="iob">IOB</string>
<string name="cob">COB</string>
<string name="basal_shortname">R_BAZ</string>
<string name="deviation_shortname">DEV</string>
<string name="activity_shortname">ACT</string>
<string name="abs_insulin_shortname">ABS</string>
<string name="devslope_shortname">DEVSLOPE</string>
<string name="nav_about">Despre</string>
<string name="smscommunicator_missingsmspermission">Lipsesc permisiunile de SMS</string>
<string name="smscommunicator_missingphonestatepermission">Nu este acordată permisiunea de citire a stării telefonului</string>
@ -422,8 +475,11 @@
<string name="careportal_sensorage_label">Vechime senzor</string>
<string name="careportal_canulaage_label">Vechime canulă</string>
<string name="careportal_insulinage_label">Vechime insulină</string>
<string name="doprofileswitch">Schimbă profilul</string>
<string name="careportal_pbage_label">Vechime baterie pompă</string>
<string name="ns_alarmoptions">Opțiuni alarmare</string>
<string name="ns_alarms">Creare notificări din alarmele NS</string>
<string name="ns_announcements">Creare notificări din anunţurile NS</string>
<string name="nsalarm_staledatavalue_label">Prag vechime date [min]</string>
<string name="nsalarm_urgent_staledatavalue_label">Prag date mult prea vechi [min]</string>
<string name="openapsama_autosens_period">Interval pentru autosens [o]</string>
@ -504,6 +560,7 @@
<string name="enable_missed_bg_readings_alert">Alarmează dacă nu se primesc glicemii</string>
<string name="enable_pump_unreachable_alert">Se alertează dacă pompa este indisponibilă</string>
<string name="pump_unreachable_threshold">Prag pompă indisponibilă [min]</string>
<string name="enable_carbs_req_alert">Alertează dacă sunt necesari carbohidrați</string>
<string name="urgent_alarm">Alarmă urgentă</string>
<string name="info">INFO</string>
<string name="eversense">Aplicația Eversense (modificată)</string>
@ -511,7 +568,13 @@
<string name="bgsource_upload">Setări înregistrare glicemie</string>
<string name="wear_detailed_delta_title">Arată variație detaliată</string>
<string name="wear_detailed_delta_summary">Arată variație cu încă o zecimală</string>
<string name="smbinterval_summary">Cât de des se vor administra SMB în min</string>
<string name="smbmaxminutes">SMB maxim minute</string>
<string name="smbmaxminutes_summary">Max minute de bazală la care să se limiteze SMB</string>
<string name="uamsmbmaxminutes">UAM SMB maxim minute</string>
<string name="uamsmbmaxminutes_summary">Durata maxima (în minute) a bazalei pentru a limita SMB în cazul UAM</string>
<string name="carbsReqThreshold">Numărul minim de carbohidrați solicitați în Sugestii</string>
<string name="carbsReqThreshold_summary">Numărul minim de carbohidrați pentru a afișa o alertă-sugestie. Sugestiile de carbohidrați mai jos acest număr nu vor declanșa o notificare.</string>
<string name="dexcomg5_xdripupload_title">Trimite date glicemie la xDrip+</string>
<string name="dexcomg5_xdripupload_summary">Selectați 640g/Eversense ca sursă de date în xDrip+</string>
<string name="nsclientbg">Glicemie NSClient</string>
@ -570,6 +633,8 @@
<string name="extendedbolusdeliveryerror">Eroare de livrare a bolusului extins</string>
<string name="insightpump_shortname">Obiectiv</string>
<string name="ago">în trecut</string>
<string name="set_neutral_temps_title">Setați bazale temporare neutre</string>
<string name="set_neutral_temps_summary">Dacă este activată, va anula o bazală temporară înainte de sfârșitul fiecărei ore. Aceasta metoda poate ajuta la oprirea vibrațiilor/bipurilor orare pe anumite pompe.</string>
<string name="enablesmbalways">Activează SMB întotdeauna</string>
<string name="enablesmbalways_summary">Activează SMB întotdeauna independent de bolusuri. Este posibil doar în cazul unei surse de glicemii filtrate, cum ar fi G5</string>
<string name="enablesmbaftercarbs">Activează SMB după carbohidrați</string>
@ -589,11 +654,17 @@
<string name="insulin_increment_button_message">Cantitatea de insulină de adăugat când se apasă butonul</string>
<string name="error_starting_cgm">Nu s-a putut deschide aplicația CGM. Asigurați-vă că este instalată.</string>
<string name="overview_cgm">CGM</string>
<string name="ignore5m">Ignorați 5min</string>
<string name="ignore15m">Ignorați 15min</string>
<string name="ignore30m">Ignorați 30min</string>
<string name="required">req</string>
<string name="nav_historybrowser">Vizualizare istoric</string>
<string name="wear_notifysmb_title">Notifică despre SMB</string>
<string name="wear_notifysmb_summary">Arată SMB pe ceas ca și un bolus standard.</string>
<string name="ns_create_announcements_from_errors_title">Crează anunțuri pentru erori</string>
<string name="ns_create_announcements_from_carbs_req_title">Crează anunțuri din alertele de cerere carbohidrați</string>
<string name="ns_create_announcements_from_errors_summary">Crează anunțuri în Nightscout pentru dialoguri de erori și alerte locale (vizibile și în Careportal - Tratamente)</string>
<string name="ns_create_announcements_from_carbs_req_summary">Creează anunțuri Nightscout din alertele de cerere carbohidrați</string>
<string name="wear_predictions_summary">Arată previziunile pe ceas.</string>
<string name="wear_predictions_title">Predicții</string>
<string name="data_choices">Alegeri date</string>
@ -667,7 +738,7 @@
<string name="pump_stopped">Pompă oprită</string>
<string name="pump_started">Pompă pornită</string>
<string name="pump_paused">Pompă în pauză</string>
<string name="absorption_cutoff_title">Timpul maxim de absorbție a mesei [o]</string>
<string name="absorption_cutoff_title">Timpul maxim de absorbție a mesei [h]</string>
<string name="absorption_cutoff_summary">Timpul în care orice mâncare se consideră absorbită. Carbohidrații rămași vor fi ignorați.</string>
<string name="time">Timp</string>
<string name="overview_show_notes_field_in_dialogs_title">Afișează câmp pentru note în dialogurile de tratamente</string>
@ -722,6 +793,8 @@
<string name="startobjective">Începeți primul obiectiv</string>
<string name="permission">Permisiune</string>
<string name="askforpermission">Solicitați permisiunea</string>
<string name="needsystemwindowpermission">Aplicația are nevoie de permisiune la fereastra sistemului pentru a afișa notificări</string>
<string name="needlocationpermission">Aplicația are nevoie sa acceseze locația pentru scanare Bluetooth și identificare WiFi</string>
<string name="needstoragepermission">Aplicația necesită permisiune de acces la mediul de stocare pentru a putea înregistra jurnalele</string>
<string name="request">Cerință</string>
<string name="insulinsourcesetup">Configurați plugin insulină</string>
@ -739,6 +812,10 @@
<string name="high_temptarget_raises_sensitivity_summary"><![CDATA[Creșterea sensibilității pentru ținte temporare >= 100]]></string>
<string name="low_temptarget_lowers_sensitivity_title">Țintele temporare joase scad sensibilitatea</string>
<string name="low_temptarget_lowers_sensitivity_summary"><![CDATA[Sensibilitate scăzută pentru ținte temporare < 100]]></string>
<string name="resistance_lowers_target_title">Rezistența la insulină poate coborî targetul</string>
<string name="resistance_lowers_target_summary">Când e detectata rezistență la insulină, coboară targetul</string>
<string name="sensitivity_raises_target_title">Sensibilitatea la insulină crește targetul</string>
<string name="sensitivity_raises_target_summary">Când este detectată sensibilitate la insulină, crește targetul</string>
<string name="combo_invalid_setup">Setare pompă invalidă, verificați documentația și asigurați-vă că meniul Quick Info este denumit QUICK INFO, folosind aplicația 360 Configuration Software.</string>
<string name="custom">Personalizat</string>
<string name="careportal_removestartedevents">AndroidAPS pornit curat</string>
@ -746,6 +823,7 @@
<string name="allow_hardware_pump_text">Atenție: Dacă activați și conectați o pompă fizică, AndroidAPS va copia setările bazalelor din profilurile din aplicație în pompă, suprascriindu-le pe cele existente deja în pompă. Asigurați-vă că aveți setările corecte ale bazalelor în AndroidAPS. Dacă aveți dubii sau nu doriți suprascrierea setărilor bazalelor existente în pompă, apăsați butonul de anulare și repetați acțiunea mai târziu.</string>
<string name="error_adding_treatment_title">Date incomplete despre tratament</string>
<string name="maintenance_settings">Setări de întreținere</string>
<string name="maintenance_encrypt_exported_prefs">Criptează setările exportate</string>
<string name="maintenance_amount">Nr de loguri de trimis</string>
<string name="maintenance">Mentenanță</string>
<string name="maintenance_shortname">MENTN</string>
@ -787,6 +865,9 @@
<string name="log_alerts">Înregistrează alertele</string>
<string name="enable_tbr_emulation">Activează emularea RBT</string>
<string name="enable_tbr_emulation_summary">Folosește bolus extins în locul RBT pentru a trece de limita de 250%%</string>
<string name="disable_vibration">Dezactivează vibrațiile la livrarea manuală de bolus</string>
<string name="disable_vibration_summary">Pentru bolus și bolus extins (valabil doar cu modelul Insight firmware 3.x)</string>
<string name="disable_vibration_auto">Dezactivați vibrațiile la livrarea automată de bolus</string>
<string name="disconnect_delay">Întârziere a deconectării [s]</string>
<string name="serial_number">Număr de serie</string>
<string name="release_software_version">Versiunea de software</string>
@ -913,7 +994,7 @@
<string name="running_invalid_version">S-a detectat rularea unei versiuni invalide. Buclă dezactivată!</string>
<string name="old_version">versiune veche</string>
<string name="very_old_version">versiune foarte veche</string>
<string name="twohours">2o</string>
<string name="twohours">2h</string>
<string name="dexcom_app_patched">Aplicația Dexcom (modificată)</string>
<string name="dexcom_short">DXCM</string>
<string name="description_source_dexcom">Primește valori glicemie de la aplicația Dexcom modificată.</string>
@ -961,7 +1042,7 @@
<string name="medtronic_pump_frequency">Frecvență pompă</string>
<string name="medtronic_pump_bolus_delay">Întârziere până la pornirea bolusului (s)</string>
<string name="medtronic_pump_max_bolus">Bolusul maxim în pompă (U)</string>
<string name="medtronic_pump_max_basal">Bazală maximă în pompă (U/o)</string>
<string name="medtronic_pump_max_basal">Bazală maximă în pompă (U/h)</string>
<string name="medtronic_pump_encoding">Criptare Medtronic</string>
<string name="medtronic_pump_frequency_us_ca">US &amp; Canada (916 MHz)</string>
<string name="medtronic_pump_frequency_worldwide">Globală (868 Mhz)</string>
@ -974,6 +1055,8 @@
<string name="medtronic_pump_battery_no">Fără selecție (Afișare simplificată)</string>
<string name="medtronic_pump_battery_alkaline">Alcalină (Afișare extinsă)</string>
<string name="medtronic_pump_battery_lithium">Litiu (Afișare extinsă)</string>
<string name="medtronic_pump_battery_nizn">NiZn (Afișare extinsă)</string>
<string name="medtronic_pump_battery_nimh">NiMH (Afișare extinsă)</string>
<!-- RL BLE Scanning -->
<string name="rileylink_scanner_scan_scan">SCAN</string>
<string name="rileylink_scanner_scan_stop">STOP</string>
@ -984,6 +1067,7 @@
<string name="rileylink_scanner_scanning">Scanează</string>
<string name="rileylink_scanner_scanning_finished">Scanare terminată</string>
<string name="rileylink_scanner_scanning_error">Eroare la scanare: %1$d</string>
<string name="common_never">Niciodată</string>
<!-- RL Status Page -->
<string name="rileylink_settings_tab1">Setări</string>
<string name="rileylink_settings_tab2">Istoric</string>
@ -1101,33 +1185,149 @@
<string name="format_percent">%1$d%%</string>
<string name="boluswizard">Asistent bolusare</string>
<string name="unit_minute_short">min</string>
<string name="profile_name">Nume profil:</string>
<string name="selected_profile">Selectat:</string>
<string name="unitsnosemicolon">Unități</string>
<string name="format_carbs">%1$dg</string>
<string name="common_on">Pornit</string>
<string name="common_off">Oprit</string>
<string name="nopumpselected">Nicio pompă selectată</string>
<string name="dia_short">DIA</string>
<string name="ic_short">IC</string>
<string name="isf_short">ISF</string>
<string name="target_short">TARG</string>
<string name="clone_label">Clonează</string>
<string name="deletecurrentprofile">Ştergeţi profilul curent?</string>
<string name="reorder_label">Reordonează</string>
<string name="age">Vârstă:</string>
<string name="weight_label">Greutate:</string>
<string name="id">ID:</string>
<string name="submit">Trimiteți</string>
<string name="invalidage">Valoare vârstă invalidă</string>
<string name="invalidweight">Valoare greutate invalidă</string>
<string name="tirformat"><![CDATA[<b>%1$s:</b> Hipo: <b>%2$02d%%</b> Normal: <b>%3$02d%%</b> Hiper: <b>%4$02d%%</b>]]></string>
<string name="average">Medie</string>
<string name="tir">Timp în țintă</string>
<string name="statistics">Statistici</string>
<string name="randombg_short">Glicemie</string>
<string name="tools">Instrumente</string>
<string name="automation_event">Eveniment automatizare</string>
<string name="alreadyset">Deja setat</string>
<string name="clearqueueconfirm">Ștergeți coada? Toate datele din coadă vor fi pierdute!</string>
<string name="ebstopsloop">Utilizarea unui bolus extins va opri modul buclă închisă pe timpul livrării bolusului extins. Sigur doriți acest lucru?</string>
<string name="closed_loop_disabled_with_eb">Bucla închisă dezactivată din cauza livrării bolusului extins</string>
<string name="extended_bolus_short">BE</string>
<string name="phonechecker">\"Verificator de telefon\"</string>
<string name="chartmenu">Meniu diagramă</string>
<string name="sensitivity_short">AS</string>
<string name="loop_smbrequest_time_label">Timp solicitare SMB</string>
<string name="loop_smbexecution_time_label">Timp de execuţie SMB</string>
<string name="loop_tbrrequest_time_label">Timp solicitare bazală temporară</string>
<string name="loop_tbrexecution_time_label">Timpul de execuție al bazalei temporare</string>
<string name="insight_alert_notification_channel">Alerte pompă Insight</string>
<!-- SMS Communicator & OTP Authenticator -->
<string name="smscommunicator_code_from_authenticator_for" comment="This is continuation of sentence: To [ACTION] reply with code">de la aplicația Authenticator pentru: %1$s</string>
<string name="smscommunicator_otp_enabled">Activare Authenticator</string>
<string name="smscommunicator_otp_enabled_summary">Autentificați comenzile folosind o parolă unica generată de Google Authenticator sau alte aplicații 2FA similare.</string>
<string name="smscommunicator_otp_pin">PIN adițional la sfârșitul token-ului</string>
<string name="smscommunicator_otp_pin_summary">Cifre suplimentare care ar trebui să fie memorate și adăugate la sfârșitul fiecărei parole unice generate</string>
<string name="smscomunicator_tab_otp_label">Setare Authenticator</string>
<string name="smscommunicator_otp_verify_label">Parola unică pentru verificare:</string>
<string name="smscommunicator_otp_reset_btn">Resetați Authenticatori</string>
<string name="smscommunicator_otp_reset_title">Resetați cheia pentru Authenticator</string>
<string name="smscommunicator_otp_reset_prompt">Sunteți sigur că vreți sa resetați cheia pentru Authenticator? Acest lucru va invalida toți Authenticatorii configurați și va trebui să ii setați din nou.</string>
<string name="smscommunicator_otp_reset_successful">S-a generat o nouă cheie pentru Authenticator! Vă rugăm să utilizați QRCode actualizat pentru a configura autentificatori.</string>
<string name="smscommunicator_otp_step1_install_header">1. Instalați Authenticator</string>
<string name="smscommunicator_otp_step2_provisioning_header">2. Scanați codul pentru a seta codurile unice pentru AndroidAPS</string>
<string name="smscommunicator_otp_step3_test_header">3. Testați o parolă unică</string>
<string name="smscommunicator_otp_reset_header">Resetați Authenticatori</string>
<string name="smscommunicator_otp_install_info">Pe fiecare telefon urmăritor instalați o aplicație de tip Authenticator care suporta tokens RFC 6238 TOTP. Asemenea aplicații gratuite populare sunt:\n • Authy\n • Google Authenticator\n • LastPass Authenticator\n • FreeOTP Authenticator</string>
<string name="smscommunicator_otp_provisioning_warning">NU DISTRIBUIȚI acest cod online!\nUtilizaţi-l doar pentru a seta aplicația Authenticator pe telefoanele urmăritoare.</string>
<string name="smscommunicator_otp_reset_warning">Prin resetarea autentificatorului invalidați toți autentificatorii existenți. Va trebui să îi configurați din nou!</string>
<string name="onconnect">La conectare</string>
<string name="ondisconnect">La deconectare</string>
<string name="overview_show_predictions">Predicții</string>
<string name="overview_show_deviationslope">Panta deviaţiei</string>
<string name="authorizationfailed">Autorizarea a eșuat</string>
<string name="overview_show_absinsulin">Insulină totală</string>
<string name="master_password_summary">Parola master (principală) este folosită pentru criptarea copiilor de rezervă și pentru a suprascrie securitatea în aplicație. Rețineți-o sau păstrați-o într-un loc sigur.</string>
<string name="passwords_dont_match">Parolele nu coincid</string>
<string name="current_master_password">Parola principală curentă</string>
<string name="statuslights">Lumini de stare</string>
<string name="statuslights_copy_ns">Copiați setările din NS</string>
<string name="copyexistingvalues">Copiaţi setările NS (dacă există)?</string>
<string name="classic_description">Tema originală</string>
<string name="buttonson_description">Butoanele sunt afișate întotdeauna în partea de jos a ecranului</string>
<string name="largedisplay_description">Display mare</string>
<string name="skin">Tema</string>
<!-- Omnipod -->
<!-- Omnipod - Base -->
<string name="description_pump_omnipod">Integrare pompa pentru Omnipod, necesită dispozitivul RileyLink (cu versiune firmware de cel puțin 2.0).</string>
<!-- Omnipod Configuration -->
<string name="omnipod_config_beep_bolus_enabled">Bip pentru Bolus Activat</string>
<string name="omnipod_config_beep_basal_enabled">Bip pentru Bazală Activat</string>
<string name="omnipod_config_beep_smb_enabled">Bip pentru SMB Activat</string>
<!-- Omnipod - Fragment -->
<string name="omnipod_pod_mgmt">Pod Mgmt</string>
<string name="omnipod_pod_status">Status Pod</string>
<string name="omnipod_reservoir_left">%1$.2f U rămase</string>
<string name="omnipod_reservoir_over50">Peste 50 U</string>
<string name="omnipod_pod_address">Adresă Pod</string>
<string name="omnipod_pod_expiry">Pod-ul expiră</string>
<string name="omnipod_pod_name_no_info">Nu există informații</string>
<string name="omnipod_pod_no_pod_connected">Niciun Pod conectat</string>
<string name="omnipod_pod_not_initalized">Neiniţializat</string>
<string name="omnipod_ack_short">Alerte de confirmare</string>
<!-- Omnipod - Dialogs -->
<string name="omnipod_frequency">Omnipod (433.91 MHz)</string>
<!-- Omnipod - Error -->
<string name="omnipod_error_pod_not_attached">Niciun Pod activ.</string>
<string name="omnipod_driver_error_setup_action_verification_failed">Verificarea comenzii a eşuat.</string>
<!-- Omnipod - Pod Mgmt -->
<string name="omnipod_pod_mgmt_title">Gestionare Pod</string>
<string name="omnipod_cmd_init_pod">Inițializare Pod</string>
<string name="omnipod_cmd_deactivate_pod">Dezactivare Pod</string>
<string name="omnipod_cmd_reset_pod">Resetare Pod</string>
<string name="omnipod_cmd_pod_history">Istoric Pod</string>
<string name="omnipod_cmd_set_bolus">Setează bolusul</string>
<string name="omnipod_cmd_cancel_bolus">Anulați Bolus</string>
<string name="omnipod_cmd_set_tbr">Setează bazala temporară</string>
<string name="omnipod_cmd_get_pod_status">Obțineți Status Pod</string>
<string name="omnipod_cmd_get_pod_info">Obțineți Informații Pod</string>
<string name="omnipod_cmd_set_time">Setare timp</string>
<string name="omnipod_cmd_configure_alerts">Configurare alerte</string>
<string name="omnipod_cmd_acknowledge_alerts">Confirmare alerte</string>
<string name="omnipod_cmd_suspend_delivery">Suspendați Livrarea</string>
<string name="omnipod_cmd_resume_delivery">Reluați livrarea</string>
<string name="omnipod_cmd_unknown_entry">Intrare necunoscută</string>
<string name="omnipod_cmd_bolus_value">%1$.1f U</string>
<string name="omnipod_cmd_bolus_value_with_carbs">%1$.1f U, CH=%2$.1f g</string>
<string name="omnipod_cmd_tbr_value">Rata: %1$.1f U, Durata: %2$d min</string>
<string name="omnipod_cmd_reset_pod_desc">Dacă apăsați <b>OK</b>, statusul Pod-ului va fi resetat forțat şi nu veți mai putea comunica cu Pod-ul. Faceți acest lucru numai dacă nu mai puteți comunica deloc cu Pod-ul. Daca mai puteți comunica cu Pod-ul, va rugam sa folosiți opțiunea <b>Dezactivare Pod</b>.</string>
<string name="omnipod_cmd_pod_history_na">Istoricul Pod-ului nu este disponibil momentan.</string>
<string name="omnipod_init_pod_wizard_step1_title">Umpleţi Pod-ul</string>
<string name="omnipod_init_pod_wizard_step1_desc">\nUmpleți noul Pod cu suficientă insulină pentru 3 zile.\n\nAr trebui sa auziți două bipuri de la Pod în timpul procesului de umplere. Acestea indică faptul că, cantitatea minimă de 85U a fost introdusă. Asigurați-vă ca ați golit complet seringa de umplere, chiar și după ce ați auzit două bipuri.\n\nDupă umplerea Pod-ului, vă rugăm să apăsați <b>Următorul</b>.\n\n<b>Notă:</b> Nu scoateți capacul transparent al acului in acest moment.</string>
<string name="omnipod_init_pod_wizard_step2_title">Amorsare</string>
<string name="omnipod_init_pod_wizard_step2_action_header">Încercare de împerechere cu noul Pod și amorsare.\n\nAtunci când toate etapele sunt gata, puteți apăsa <b>Următorul</b>.\n\n<b>Notă:</b> vă rugăm să țineți Pod-ul foarte aproape de RileyLink în timpul procesului.</string>
<string name="omnipod_init_pod_wizard_step3_title">Atașați Pod-ul</string>
<string name="omnipod_init_pod_wizard_step3_desc">\nPregătiți setul de infuzie. Scoateți capacul acului și suport adeziv și atașați Pod-ul la locul de infuzie.\n\nDacă, canula pare in neregulă, apăsați <b>Anulare</b> și aruncați Pod-ul.\n\nApăsați <b>Următorul</b> pentru a introduce canula și a începe livrarea bazalei.</string>
<string name="omnipod_init_pod_wizard_step4_title">Inserare canulă</string>
<string name="omnipod_init_pod_wizard_step4_action_header">Încercare de programare inițială a ratelor bazale si de insertie a canulei.\n\nCând toate elementele sunt gata, puteți apăsa <b>Următorul</b>.</string>
<string name="omnipod_init_pod_wizard_pod_info_title">Informații Pod</string>
<string name="omnipod_init_pod_wizard_pod_info_init_pod_description">\nPod-ul este acum activ.\n\nRatele bazale au fost programate și canula a fost introdusă.\n\nVă rugăm să verificați că acul a fost introdus corect. Dacă considerați ca nu, înlocuiți Pod-ul.</string>
<string name="omnipod_remove_pod_wizard_step1_title">Dezactivare Pod</string>
<string name="omnipod_remove_pod_wizard_step2_title">Dezactivare Pod</string>
<string name="omnipod_init_pod_pair_pod">Împerechere Pod</string>
<string name="omnipod_init_pod_prime_pod">Amorsare Pod</string>
<string name="omnipod_init_pod_fill_cannula">Umplere Canulă</string>
<string name="omnipod_init_pod_set_basal_profile">Setează profilul bazalelor</string>
<string name="omnipod_deactivate_pod_cancel_delivery">Anulare livrare</string>
<string name="omnipod_deactivate_pod_deactivate_pod">Dezactivare Pod</string>
<!-- Omnipod Dash -->
<!-- Omnipod - Base -->
<string name="description_pump_omnipod_dash">Integrare cu pompa pentru Omnipod Dash.</string>
<string name="omnipod_alert_expiration">Pod-ul va expira în curând</string>
<string name="omnipod_alert_expiration_advisory">Pod-ul va expira în curând</string>
<string name="omnipod_alert_shutdown_imminent">Oprirea este iminentă</string>
<string name="omnipod_alert_unknown_alert">Alertă necunoscută</string>
</resources>

View file

@ -6,8 +6,8 @@
<!-- <string name="ja_lang" translatable="false">Japanese</string> -->
<string name="treatmentssafety_title">Безопасность терапии</string>
<string name="treatmentssafety_maxbolus_title">Макс разрешенный болюс [U] ед.</string>
<string name="treatmentssafety_maxcarbs_title">макс разрешенные углеводы (г)</string>
<string name="nav_preferences">опции</string>
<string name="treatmentssafety_maxcarbs_title">Макс разрешенные углеводы (г)</string>
<string name="nav_preferences">Настройки</string>
<string name="nav_refreshtreatments">Синхронизировать назначения с NS</string>
<string name="nav_resetdb">обнулить базы</string>
<string name="reset_db_confirm">Вы действительно хотите обнулить базы данных?</string>
@ -1239,6 +1239,7 @@ Context | Edit Context</string>
<string name="nav_survey">Опрос</string>
<string name="invalidage">Некорректное значение возраст</string>
<string name="invalidweight">Некорректное значение вес</string>
<string name="invalidpct">Некорректный ввод %</string>
<string name="tirformat"><![CDATA[<b>%1$s:</b> Низкий: <b>%2$02d%%</b> В целевом диапазоне: <b>%3$02d%%</b> Высокий: <b>%4$02d%%</b>]]></string>
<string name="average">Средний</string>
<string name="tir">Время в целевом диапазоне TIR</string>
@ -1407,4 +1408,15 @@ Context | Edit Context</string>
<string name="omnipod_bolus_failed_uncertain">Не удалось проверить правильность подачи болюса. Убедитесь, что Pod подает болюс или отмените его.</string>
<string name="omnipod_rl_stats">Статистика RL</string>
<string name="omnipod_read_pulse_log_short">Журнал Pulse </string>
<string name="comapareprofile">Сравнить профили</string>
<string name="nav_profilehelper">Помощник профиля</string>
<string name="motoldefaultprofile">Профиль по умолчанию</string>
<string name="currentprofile">Текущий профиль</string>
<string name="availableprofile">Доступные профили</string>
<string name="profiletype">Тип профиля</string>
<string name="formatwithtdd">Возраст: %1$.0f Суточная Потребность: %2$.0f ед</string>
<string name="formatwittddandpct">Возраст: %1$.0f Суточная Потребность: %2$.0f ед %3$d%%</string>
<string name="formatwithweight">Возраст: %1$.0f Вес: %2$.0f кг</string>
<string name="basalpctfromtdd_label">% базального</string>
<string name="dpvdefaultprofile">Значение для профиля по умолчанию</string>
</resources>

View file

@ -1223,7 +1223,7 @@
<string name="clone_label">Klonovať</string>
<string name="saveorresetchangesfirst">Najskôr uložte, alebo resetujte aktuálne zmeny</string>
<string name="deletecurrentprofile">Zmazať aktuálny profil?</string>
<string name="copytolocalprofile">Chcete vytvoriť nový lokálny profil z tohto prepnutia profilu?</string>
<string name="copytolocalprofile">Vytvoriť z tohoto profilu nový lokálny profil?</string>
<string name="profilenamecontainsdot">Názov profilu obsahuje bodky.\nToto nie je podporované v NS.\nProfil nebude prenesený do NS.</string>
<string name="low_mark_comment">Spodná hodnota v oblasti cieľového rozsahu (iba zobrazovanie)</string>
<string name="high_mark_comment">Horná hodnota v oblasti cieľového rozsahu (iba zobrazovanie)</string>
@ -1405,4 +1405,12 @@
<string name="omnipod_bolus_failed_uncertain">Nie je možné overiť, či bolo podávanie bolusu úspešné. Prosím overte, že váš Pod podáva bolus, alebo zrušte bolus.</string>
<string name="omnipod_rl_stats">Štatistiky RL</string>
<string name="omnipod_read_pulse_log_short">Pulse Log</string>
<string name="comapareprofile">Porovnať profily</string>
<string name="nav_profilehelper">Pomocník s profilom</string>
<string name="motoldefaultprofile">Predvolený profil</string>
<string name="currentprofile">Aktuálny profil</string>
<string name="availableprofile">Dostupný profil</string>
<string name="profiletype">Typ profilu</string>
<string name="formatwithtdd">Vek: %1$.0f CDD: %2$.0f U</string>
<string name="formatwithweight">Vek: %1$.0f Hmotnosť: %2$.0f kg</string>
</resources>

View file

@ -1224,7 +1224,6 @@ Eversense-appen.</string>
<string name="clone_label">Kopiera</string>
<string name="saveorresetchangesfirst">Spara eller återställa aktuella ändringar först</string>
<string name="deletecurrentprofile">Ta bort aktuell profil?</string>
<string name="copytolocalprofile">Vill du skapa en ny lokal profil från detta profilbyte?</string>
<string name="profilenamecontainsdot">Profilnamnet innehåller punkter.\nDetta stöds inte av NS.\nProfil överförs inte till NS.</string>
<string name="low_mark_comment">Nedre värdet för målområde (endast visning)</string>
<string name="high_mark_comment">Övre värdet för målområde (endast visning)</string>
@ -1406,6 +1405,5 @@ Eversense-appen.</string>
<string name="omnipod_bolus_failed_uncertain">Det går inte att verifiera om bolusen är slutförd. Verifiera att din pod leverarar bolus eller avsluta bolus.</string>
<string name="omnipod_rl_stats">RL-statistik</string>
<string name="omnipod_read_pulse_log_short">Pulslogg</string>
<string name="comapareprofile">Jämför med aktuell profil</string>
<string name="nav_profilehelper">Profilguide</string>
</resources>

View file

@ -206,6 +206,8 @@
<string name="password_preferences_decrypt_prompt">You will be asked for master password, which is needed to decrypt imported preferences.</string>
<string name="preferences_export_canceled">Export canceled! Preferences were NOT exported!</string>
<string name="preferences_import_canceled">Import canceled! Preferences were NOT imported!</string>
<string name="preferences_import_impossible">Cannot import preferences!</string>
<string name="goto_main_try_again">Please go back to main screen and try again.</string>
<string name="preferences_import_list_title">Select file to import</string>
@ -807,7 +809,7 @@
<string name="do_not_bolus_record_only">Do not bolus, record only</string>
<string name="category">Category</string>
<string name="subcategory">Subcategory</string>
<string name="bolusrecordedonly">Bolus will be recorded only</string>
<string name="bolusrecordedonly">Bolus will be recorded only (not delivered by pump)</string>
<string name="ns_autobackfill_summary">Autobackfill missig BGs from NS</string>
<string name="key_ns_autobackfill" translatable="false">ns_autobackfill</string>
<string name="loop_smbsetbypump_label">SMB set by pump</string>
@ -950,7 +952,7 @@
<string name="askforpermission">Ask for permission</string>
<string name="needsystemwindowpermission">Application needs system window permission for notifications</string>
<string name="needlocationpermission">Application needs location permission for BT scan and WiFi identification</string>
<string name="needstoragepermission">Application needs storage permission to be able store log files</string>
<string name="needstoragepermission">Application needs storage permission to be able store log files and export settings</string>
<string name="request">Request</string>
<string name="insulinsourcesetup">Configure Insulin plugin</string>
<string name="exit">Exit</string>
@ -1298,7 +1300,7 @@
<string name="clone_label">Clone</string>
<string name="saveorresetchangesfirst">Save or reset current changes first</string>
<string name="deletecurrentprofile">Delete current profile?</string>
<string name="copytolocalprofile">Create new local profile from this profile switch?</string>
<string name="copytolocalprofile">Create new local profile from this profile?</string>
<string name="profilenamecontainsdot">Profile name contains dots.\nThis is not supported by NS.\nProfile is not uploaded to NS.</string>
<string name="low_mark_comment">Lower value of in range area (display only)</string>
<string name="high_mark_comment">Higher value of in range area (display only)</string>
@ -1313,6 +1315,7 @@
<string name="nav_survey">Survey</string>
<string name="invalidage">Invalid age entry</string>
<string name="invalidweight">Invalid weight entry</string>
<string name="invalidpct">Invalid % entry</string>
<string name="tirformat"><![CDATA[<b>%1$s:</b> Low: <b>%2$02d%%</b> In: <b>%3$02d%%</b> High: <b>%4$02d%%</b>]]></string>
<string name="average">Average</string>
<string name="tir">TIR</string>
@ -1552,7 +1555,16 @@
<string name="omnipod_bolus_failed_uncertain">Unable to verify whether the bolus succeeded. Please verify that your Pod is bolusing or cancel the bolus.</string>
<string name="omnipod_rl_stats">RL Stats</string>
<string name="omnipod_read_pulse_log_short">Pulse Log</string>
<string name="comapareprofile">Compare with current profile</string>
<string name="comapareprofile">Compare profiles</string>
<string name="nav_profilehelper">Profile helper</string>
<string name="motoldefaultprofile">Default profile</string>
<string name="currentprofile">Current profile</string>
<string name="availableprofile">Available profile</string>
<string name="profiletype">Profile type</string>
<string name="formatwithtdd">Age: %1$.0f TDD: %2$.0f U</string>
<string name="formatwittddandpct">Age: %1$.0f TDD: %2$.0f U %3$d%%</string>
<string name="formatwithweight">Age: %1$.0f Weight: %2$.0f kg</string>
<string name="basalpctfromtdd_label">% of basal</string>
<string name="dpvdefaultprofile">DPV Default profile</string>
</resources>

View file

@ -83,5 +83,5 @@
<item name="android:dividerHeight">1dp</item>
</style>
<style name="ProfileHelperAppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar"/>
</resources>

View file

@ -13,18 +13,18 @@ class DefaultProfileTest : TestBase() {
@Test
fun profile() {
var p = DefaultProfile(injector).profile(5.0, 5.1 / 0.3, 0.0, Constants.MGDL)
assertEquals(0.150, p.getBasalTimeFromMidnight(0), 0.001)
var p = DefaultProfile(injector).profile(5.0, 5.1 / 0.3, 0.0, Constants.MMOL)
assertEquals(0.150, p!!.getBasalTimeFromMidnight(0), 0.001)
assertEquals(15.0, p.getIcTimeFromMidnight(0), 0.001)
assertEquals(11.8, p.getIsfTimeFromMidnight(0), 0.001)
p = DefaultProfile(injector).profile(7.0, 10.0 / 0.4, 0.0, Constants.MGDL)
assertEquals(0.350, p.getBasalTimeFromMidnight(0), 0.001)
p = DefaultProfile(injector).profile(7.0, 10.0 / 0.4, 0.0, Constants.MMOL)
assertEquals(0.350, p!!.getBasalTimeFromMidnight(0), 0.001)
assertEquals(15.0, p.getIcTimeFromMidnight(0), 0.001)
assertEquals(6.8, p.getIsfTimeFromMidnight(0), 0.001)
p = DefaultProfile(injector).profile(12.0, 25.0 / 0.5, 0.0, Constants.MGDL)
assertEquals(0.80, p.getBasalTimeFromMidnight(0), 0.001)
p = DefaultProfile(injector).profile(12.0, 25.0 / 0.5, 0.0, Constants.MMOL)
assertEquals(0.80, p!!.getBasalTimeFromMidnight(0), 0.001)
assertEquals(10.0, p.getIcTimeFromMidnight(0), 0.001)
assertEquals(2.2, p.getIsfTimeFromMidnight(0), 0.001)
}

View file

@ -12,6 +12,7 @@ buildscript {
dagger_version = '2.28.1'
coroutinesVersion = '1.3.7'
activityVersion = '1.2.0-alpha06'
fragmentVersion = '1.3.0-alpha07'
ormLiteVersion = "4.46"
}
repositories {

View file

@ -17,7 +17,7 @@ class DefaultProfile @Inject constructor(val injector: HasAndroidInjector) {
var twelveToSeventeen: TreeMap<Double, Array<Double>> = TreeMap()
var eighteenToTwentyfor: TreeMap<Double, Array<Double>> = TreeMap()
fun profile(age: Double, tdd: Double, weight: Double, units: String): Profile {
fun profile(age: Double, tdd: Double, weight: Double, units: String): Profile? {
val profile = JSONObject()
if (age >= 1 && age < 6) {
val _tdd = if (tdd == 0.0) 0.6 * weight else tdd
@ -25,23 +25,23 @@ class DefaultProfile @Inject constructor(val injector: HasAndroidInjector) {
val ic = Round.roundTo(250.0 / _tdd, 1.0)
profile.put("carbratio", singleValueArray(ic, arrayOf(0.0, -4.0, -1.0, -2.0, -4.0, 0.0, -4.0)))
val isf = Round.roundTo(200.0 / _tdd, 0.1)
profile.put("sens", singleValueArray(isf, arrayOf(0.0, -2.0, -0.0, -0.0, -2.0, 0.0, -2.0)))
profile.put("sens", singleValueArrayFromMmolToUnits(isf, arrayOf(0.0, -2.0, -0.0, -0.0, -2.0, 0.0, -2.0),units))
} else if (age >= 6 && age < 12) {
val _tdd = if (tdd == 0.0) 0.8 * weight else tdd
closest(sixToEleven, _tdd * 0.4)?.let { array -> profile.put("basal", arrayToJson(array)) }
val ic = Round.roundTo(375.0 / _tdd, 1.0)
profile.put("carbratio", singleValueArray(ic, arrayOf(0.0, -3.0, 0.0, -1.0, -3.0, 0.0, -2.0)))
val isf = Round.roundTo(170.0 / _tdd, 0.1)
profile.put("sens", singleValueArray(isf, arrayOf(0.0, -1.0, -0.0, -0.0, -1.0, 0.0, -1.0)))
} else if (age >= 12 && age < 17) {
profile.put("sens", singleValueArrayFromMmolToUnits(isf, arrayOf(0.0, -1.0, -0.0, -0.0, -1.0, 0.0, -1.0),units))
} else if (age >= 12 && age <= 18) {
val _tdd = if (tdd == 0.0) 1.0 * weight else tdd
closest(twelveToSeventeen, _tdd * 0.5)?.let { array -> profile.put("basal", arrayToJson(array)) }
val ic = Round.roundTo(500.0 / _tdd, 1.0)
profile.put("carbratio", singleValueArray(ic, arrayOf(0.0, -1.0, 0.0, 0.0, -1.0, 0.0, -1.0)))
val isf = Round.roundTo(100.0 / _tdd, 0.1)
profile.put("sens", singleValueArray(isf, arrayOf(0.2, 0.0, 0.2, 0.2, 0.0, 0.2, 0.2)))
} else if (age >= 18) {
profile.put("sens", singleValueArrayFromMmolToUnits(isf, arrayOf(0.2, 0.0, 0.2, 0.2, 0.0, 0.2, 0.2),units))
} else if (age > 18) {
return null
}
profile.put("dia", 5.0)
profile.put("carbs_hr", 20) // not used
@ -49,6 +49,7 @@ class DefaultProfile @Inject constructor(val injector: HasAndroidInjector) {
profile.put("timezone", TimeZone.getDefault().getID())
profile.put("target_high", JSONArray().put(JSONObject().put("time", "00:00").put("value", Profile.fromMgdlToUnits(108.0, units))))
profile.put("target_low", JSONArray().put(JSONObject().put("time", "00:00").put("value", Profile.fromMgdlToUnits(108.0, units))))
profile.put("units", units)
return Profile(injector, profile, units)
}
@ -130,20 +131,32 @@ class DefaultProfile @Inject constructor(val injector: HasAndroidInjector) {
val basals = JSONArray()
for (i in 0..23) {
val time = String.format(Locale.ENGLISH, "%02d:00", i)
basals.put(JSONObject().put("time", time).put("value", b[i].toString()))
basals.put(JSONObject().put("time", time).put("value", b[i].toString()).put("timeAsSeconds", i * 3600))
}
return basals
}
private fun singleValueArray(value: Double, sample: Array<Double>): JSONArray {
val array = JSONArray()
array.put(JSONObject().put("time", "00:00").put("value", value + sample[0]))
array.put(JSONObject().put("time", "06:00").put("value", value + sample[1]))
array.put(JSONObject().put("time", "09:00").put("value", value + sample[2]))
array.put(JSONObject().put("time", "11:00").put("value", value + sample[3]))
array.put(JSONObject().put("time", "14:00").put("value", value + sample[4]))
array.put(JSONObject().put("time", "16:00").put("value", value + sample[5]))
array.put(JSONObject().put("time", "19:00").put("value", value + sample[6]))
array.put(JSONObject().put("time", "00:00").put("value", value + sample[0]).put("timeAsSeconds", 0 * 3600))
array.put(JSONObject().put("time", "06:00").put("value", value + sample[1]).put("timeAsSeconds", 6 * 3600))
array.put(JSONObject().put("time", "09:00").put("value", value + sample[2]).put("timeAsSeconds", 9 * 3600))
array.put(JSONObject().put("time", "11:00").put("value", value + sample[3]).put("timeAsSeconds", 11 * 3600))
array.put(JSONObject().put("time", "14:00").put("value", value + sample[4]).put("timeAsSeconds", 14 * 3600))
array.put(JSONObject().put("time", "16:00").put("value", value + sample[5]).put("timeAsSeconds", 16 * 3600))
array.put(JSONObject().put("time", "19:00").put("value", value + sample[6]).put("timeAsSeconds", 19 * 3600))
return array
}
private fun singleValueArrayFromMmolToUnits(value: Double, sample: Array<Double>, units: String): JSONArray {
val array = JSONArray()
array.put(JSONObject().put("time", "00:00").put("value", Profile.fromMmolToUnits(value + sample[0],units)).put("timeAsSeconds", 0 * 3600))
array.put(JSONObject().put("time", "06:00").put("value", Profile.fromMmolToUnits(value + sample[1],units)).put("timeAsSeconds", 6 * 3600))
array.put(JSONObject().put("time", "09:00").put("value", Profile.fromMmolToUnits(value + sample[2],units)).put("timeAsSeconds", 9 * 3600))
array.put(JSONObject().put("time", "11:00").put("value", Profile.fromMmolToUnits(value + sample[3],units)).put("timeAsSeconds", 11 * 3600))
array.put(JSONObject().put("time", "14:00").put("value", Profile.fromMmolToUnits(value + sample[4],units)).put("timeAsSeconds", 14 * 3600))
array.put(JSONObject().put("time", "16:00").put("value", Profile.fromMmolToUnits(value + sample[5],units)).put("timeAsSeconds", 16 * 3600))
array.put(JSONObject().put("time", "19:00").put("value", Profile.fromMmolToUnits(value + sample[6],units)).put("timeAsSeconds", 19 * 3600))
return array
}
}

View file

@ -0,0 +1,67 @@
package info.nightscout.androidaps.data.defaultProfile
import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.data.Profile
import info.nightscout.androidaps.utils.Round
import org.json.JSONArray
import org.json.JSONObject
import java.util.*
import javax.inject.Inject
import javax.inject.Singleton
@Singleton
class DefaultProfileDPV @Inject constructor(val injector: HasAndroidInjector) {
var oneToFive = arrayOf(3.97, 3.61, 3.46, 3.70, 3.76, 3.87, 4.18, 4.01, 3.76, 3.54, 3.15, 2.80, 2.86, 3.21, 3.61, 3.97, 4.43, 4.96, 5.10, 5.50, 5.81, 6.14, 5.52, 5.10)
var sixToEleven = arrayOf(4.20, 4.27, 4.41, 4.62, 4.92, 5.09, 5.01, 4.47, 3.89, 3.33, 3.10, 2.91, 2.97, 3.08, 3.36, 3.93, 4.52, 4.76, 4.69, 4.63, 4.63, 4.47, 4.47, 4.31)
var twelveToEighteen = arrayOf(3.47, 3.80, 4.31, 4.95, 5.59, 6.11, 5.89, 5.11, 4.31, 3.78, 3.55, 3.39, 3.35, 3.39, 3.64, 3.97, 4.53, 4.59, 4.50, 4.00, 3.69, 3.39, 3.35, 3.35)
fun profile(age: Double, tdd: Double, basalSumPct: Double, units: String): Profile? {
val basalSum = tdd * basalSumPct
val profile = JSONObject()
if (age >= 1 && age < 6) {
profile.put("basal", arrayToJson(oneToFive, basalSum))
profile.put("carbratio", singleValueArray(0.0))
profile.put("sens", singleValueArrayFromMmolToUnits(0.0, units))
} else if (age >= 6 && age < 12) {
profile.put("basal", arrayToJson(sixToEleven, basalSum))
profile.put("carbratio", singleValueArray(0.0))
profile.put("sens", singleValueArrayFromMmolToUnits(0.0, units))
} else if (age >= 12 && age <= 18) {
profile.put("basal", arrayToJson(twelveToEighteen, basalSum))
profile.put("carbratio", singleValueArray(0.0))
profile.put("sens", singleValueArrayFromMmolToUnits(0.0, units))
} else if (age > 18) {
return null
}
profile.put("dia", 5.0)
profile.put("carbs_hr", 20) // not used
profile.put("delay", 5.0) // not used
profile.put("timezone", TimeZone.getDefault().getID())
profile.put("target_high", JSONArray().put(JSONObject().put("time", "00:00").put("value", Profile.fromMgdlToUnits(108.0, units))))
profile.put("target_low", JSONArray().put(JSONObject().put("time", "00:00").put("value", Profile.fromMgdlToUnits(108.0, units))))
profile.put("units", units)
return Profile(injector, profile, units)
}
private fun arrayToJson(b: Array<Double>, basalSum: Double): JSONArray {
val basals = JSONArray()
for (i in 0..23) {
val time = String.format(Locale.ENGLISH, "%02d:00", i)
basals.put(JSONObject().put("time", time).put("value", (b[i] * basalSum / 100.0).toString()).put("timeAsSeconds", i * 3600))
}
return basals
}
private fun singleValueArray(value: Double): JSONArray {
val array = JSONArray()
array.put(JSONObject().put("time", "00:00").put("value", value).put("timeAsSeconds", 0 * 3600))
return array
}
private fun singleValueArrayFromMmolToUnits(value: Double, units: String): JSONArray {
val array = JSONArray()
array.put(JSONObject().put("time", "00:00").put("value", Profile.fromMmolToUnits(value, units)).put("timeAsSeconds", 0 * 3600))
return array
}
}

View file

@ -88,6 +88,7 @@ public class CareportalEvent implements DataPointWithLabelInterface, Interval {
}
public CareportalEvent(NSMbg mbg) {
this();
date = mbg.date;
eventType = MBG;
json = mbg.json;

View file

@ -59,15 +59,15 @@ public class TDD {
public String toText(ResourceHelper resourceHelper, DateUtil dateUtil, boolean includeCarbs) {
if (includeCarbs)
return resourceHelper.gs(R.string.tddwithcarbsformat, dateUtil.dateStringShort(date), total, bolus, basal, carbs);
return resourceHelper.gs(R.string.tddwithcarbsformat, dateUtil.dateStringShort(date), total, bolus, basal, basal / total * 100, carbs);
else
return resourceHelper.gs(R.string.tddformat, dateUtil.dateStringShort(date), total, bolus, basal);
return resourceHelper.gs(R.string.tddformat, dateUtil.dateStringShort(date), total, bolus, basal, basal / total * 100);
}
public String toText(ResourceHelper resourceHelper, int days, boolean includeCarbs) {
if (includeCarbs)
return resourceHelper.gs(R.string.tddwithcarbsformat, String.format(Locale.getDefault(), "%d ", days) + resourceHelper.gs(R.string.days), total, bolus, basal, carbs);
return resourceHelper.gs(R.string.tddwithcarbsformat, String.format(Locale.getDefault(), "%d ", days) + resourceHelper.gs(R.string.days), total, bolus, basal, basal / total * 100, carbs);
else
return resourceHelper.gs(R.string.tddformat, String.format(Locale.getDefault(), "%d ", days) + resourceHelper.gs(R.string.days), total, bolus, basal);
return resourceHelper.gs(R.string.tddformat, String.format(Locale.getDefault(), "%d ", days) + resourceHelper.gs(R.string.days), total, bolus, basal, basal / total * 100);
}
}

View file

@ -395,7 +395,7 @@ public class TemporaryBasal implements Interval, DbObjectBase {
if (isFakeExtended) {
return (int) ((profile.getBasal(time) + netExtendedRate) / profile.getBasal(time)) * 100;
} else if (isAbsolute) {
return (int) (absoluteRate / profile.getBasal(time)) * 100;
return (int) (absoluteRate / profile.getBasal(time) * 100);
} else {
return percentRate;
}

View file

@ -97,6 +97,7 @@ class ProfileViewerDialog : DaggerDialogFragment() {
profile = Profile(injector, JSONObject(customProfileJson), customProfileUnits)
profile2 = Profile(injector, JSONObject(customProfileJson2), customProfileUnits)
profileName = customProfileName
header_icon.setImageResource(R.drawable.ic_compare_profiles)
date = ""
profileview_datelayout.visibility = View.GONE
}
@ -117,12 +118,13 @@ class ProfileViewerDialog : DaggerDialogFragment() {
profile2?.let { profile2 ->
profileview_units.text = profile1.units
profileview_dia.text = HtmlHelper.fromHtml(formatColors("", profile1.dia, profile1.dia, DecimalFormat("0.00"), resourceHelper.gs(R.string.shorthour)))
profileview_activeprofile.text = profileName
val profileNames =profileName!!.split("\n").toTypedArray()
profileview_activeprofile.text = HtmlHelper.fromHtml(formatColors(profileNames[0], profileNames[1]))
profileview_date.text = date
profileview_ic.text = ics(profile1, profile2)
profileview_isf.text = isfs(profile1, profile2)
profileview_basal.text = basals(profile1, profile2)
profileview_target.text = HtmlHelper.fromHtml(formatColors("", profile1.targetList + "<br>", profile2.targetList, ""))
profileview_target.text = HtmlHelper.fromHtml(formatColors("", profile1.targetList.replace("\n","<br>") + "<br>", profile2.targetList.replace("\n","<br>"), ""))
basal_graph.show(profile1, profile2)
}
@ -177,6 +179,13 @@ class ProfileViewerDialog : DaggerDialogFragment() {
return s
}
private fun formatColors(text1: String, text2: String): String {
var s = "<font color='${resourceHelper.gc(R.color.tempbasal)}'>$text1</font>"
s += "<BR/>"
s += "<font color='${resourceHelper.gc(R.color.examinedProfile)}'>$text2</font>"
return s
}
private fun basals(profile1: Profile, profile2: Profile): Spanned {
var prev1 = 0.0
var prev2 = 0.0
@ -225,7 +234,7 @@ class ProfileViewerDialog : DaggerDialogFragment() {
val val1 = Profile.fromMgdlToUnits(profile1.getIsfMgdlTimeFromMidnight(hour * 60 * 60), profile1.units)
val val2 = Profile.fromMgdlToUnits(profile2.getIsfMgdlTimeFromMidnight(hour * 60 * 60), profile1.units)
if (val1 != prev1 || val2 != prev2) {
s.append(formatColors(Profile.format_HH_MM(hour * 60 * 60), val1, val2, DecimalFormat("0.0"), resourceHelper.gs(R.string.profile_carbs_per_unit)))
s.append(formatColors(Profile.format_HH_MM(hour * 60 * 60), val1, val2, DecimalFormat("0.0"), profile1.units + resourceHelper.gs(R.string.profile_per_unit)))
s.append("<br>")
}
prev1 = val1

View file

@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="48dp"
android:height="48dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M18.307,8.927c-0.135,-0.417 -0.494,-0.72 -0.928,-0.783l-3.997,-0.581l-1.789,-3.622c-0.387,-0.786 -1.675,-0.786 -2.061,0L7.743,7.563L3.746,8.145C3.313,8.207 2.953,8.511 2.818,8.927C2.683,9.343 2.795,9.8 3.109,10.105l2.894,2.819l-0.683,3.983c-0.074,0.432 0.103,0.868 0.457,1.125c0.2,0.146 0.437,0.22 0.676,0.22c0.183,0 0.367,-0.044 0.535,-0.133l3.576,-1.879l3.576,1.879c0.39,0.203 0.855,0.173 1.212,-0.087c0.353,-0.257 0.531,-0.694 0.456,-1.125l-0.683,-3.983l2.893,-2.819C18.329,9.8 18.443,9.343 18.307,8.927zM17.252,9.488l-3.16,3.081l0.746,4.35c0.014,0.087 -0.021,0.174 -0.092,0.225c-0.04,0.03 -0.087,0.044 -0.135,0.044c-0.036,0 -0.073,-0.008 -0.108,-0.027l-3.907,-2.053l-3.907,2.053c-0.075,0.044 -0.17,0.036 -0.242,-0.017c-0.07,-0.051 -0.106,-0.138 -0.091,-0.225l0.746,-4.35L3.94,9.488C3.877,9.427 3.855,9.335 3.882,9.252s0.099,-0.143 0.185,-0.156l4.369,-0.634l1.954,-3.959c0.078,-0.158 0.334,-0.158 0.412,0l1.953,3.959l4.369,0.634c0.087,0.013 0.158,0.073 0.185,0.156S17.315,9.427 17.252,9.488z"
android:fillColor="@color/tempbasal"/>
<path
android:pathData="M21.182,11.032c-0.135,-0.417 -0.494,-0.72 -0.928,-0.783l-3.997,-0.581l-1.789,-3.622c-0.387,-0.786 -1.675,-0.786 -2.061,0l-1.789,3.622l-3.998,0.581c-0.432,0.063 -0.793,0.366 -0.928,0.783c-0.135,0.416 -0.023,0.873 0.291,1.178l2.894,2.819l-0.683,3.983c-0.074,0.432 0.103,0.868 0.457,1.125c0.2,0.146 0.437,0.22 0.676,0.22c0.183,0 0.367,-0.044 0.535,-0.133l3.576,-1.879l3.576,1.879c0.39,0.203 0.855,0.173 1.212,-0.087c0.353,-0.257 0.531,-0.694 0.456,-1.125l-0.683,-3.983l2.893,-2.819C21.204,11.905 21.318,11.448 21.182,11.032zM20.127,11.593l-3.16,3.081l0.746,4.35c0.014,0.087 -0.021,0.174 -0.092,0.225c-0.04,0.03 -0.087,0.044 -0.135,0.044c-0.036,0 -0.073,-0.008 -0.108,-0.027l-3.907,-2.053l-3.907,2.053c-0.075,0.044 -0.17,0.036 -0.242,-0.017c-0.07,-0.051 -0.106,-0.138 -0.091,-0.225l0.746,-4.35l-3.162,-3.081c-0.063,-0.061 -0.085,-0.153 -0.058,-0.236c0.027,-0.083 0.099,-0.143 0.185,-0.156l4.369,-0.634l1.954,-3.959c0.078,-0.158 0.334,-0.158 0.412,0l1.953,3.959L20,11.201c0.087,0.013 0.158,0.073 0.185,0.156S20.19,11.532 20.127,11.593z"
android:fillColor="@color/examinedProfile"/>
</vector>

View file

@ -21,9 +21,10 @@
android:padding="5dp">
<ImageView
android:id="@+id/header_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/carbs"
android:layout_centerVertical="true"
android:src="@drawable/ic_home_profile" />
<TextView
@ -31,11 +32,12 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_centerHorizontal="true"
android:layout_gravity="center"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:text="@string/carbs"
android:textAlignment="center"
android:layout_toEndOf="@id/header_icon"
android:textAppearance="?android:attr/textAppearanceLarge" />
</RelativeLayout>

View file

@ -122,8 +122,6 @@
<!-- Temptarget-->
<string name="mins">%1$dмин</string>
<!-- TDD-->
<string name="tddformat"><![CDATA[<b>%1$s:</b> ∑: <b>%2$.2fЕ</b> Бол: <b>%3$.2fЕ</b> Баз: <b>%4$.2fЕ</b>]]></string>
<string name="tddwithcarbsformat"><![CDATA[<b>%1$s:</b> ∑: <b>%2$.2fЕ</b> Бол: <b>%3$.2fЕ</b> Баз: <b>%4$.2fЕ</b> Въгл: <b>%5$.0fгр</b>]]></string>
<!-- Translator-->
<string name="careportal_bgcheck">Проверка на КЗ</string>
<string name="careportal_announcement">Известие</string>

View file

@ -122,6 +122,8 @@
<!-- Temptarget-->
<string name="mins">%1$d minut</string>
<!-- TDD-->
<string name="tddformat"><![CDATA[<b>%1$s:</b> ∑: <b>%2$.2fU</b> Bol: <b>%3$.2fU</b> Baz: <b>%4$.2fU(%5$.0f%%)</b>]]></string>
<string name="tddwithcarbsformat"><![CDATA[<b>%1$s:</b> ∑: <b>%2$.2fU</b> Bol: <b>%3$.2fU</b> Baz: <b>%4$.2fU(%5$.0f%%)</b> Sach.: <b>%6$.0fg</b>]]></string>
<!-- Translator-->
<string name="careportal_bgcheck">Kontrola glykémie</string>
<string name="careportal_announcement">Oznámení</string>
@ -161,7 +163,7 @@
<string name="waitingforpumpresult">Čekání na výsledek</string>
<string name="smb_shortname">SMB</string>
<!-- CarbsReq-->
<string name="carbsreq">Požadováno %d g dodatečných sacharidů během %d minut</string>
<string name="carbsreq">Požadováno dalších %d g sacharidů během %d minut</string>
<!-- TDDStatsActivity-->
<string name="stats">Statistiky</string>
<string name="cumulative_tdd">Kumulativní CDD</string>

View file

@ -122,8 +122,8 @@
<!-- Temptarget-->
<string name="mins">%1$d Min.</string>
<!-- TDD-->
<string name="tddformat"><![CDATA[<b>%1$s:</b> ∑: <b>%2$.2fU</b> Bol: <b>%3$.2fU</b> Bas: <b>%4$.2fU</b>]]></string>
<string name="tddwithcarbsformat"><![CDATA[<b>%1$s:</b> ∑: <b>%2$.2fU</b> Bol: <b>%3$.2fU</b> Bas: <b>%4$.2fU</b> KH: <b>%5$.0fg</b>]]></string>
<string name="tddformat"><![CDATA[<b>%1$s:</b> ∑: <b>%2$.2fU</b> Bol: <b>%3$.2fU</b> Bas: <b>%4$.2fIE(%5$.0f%%)</b>]]></string>
<string name="tddwithcarbsformat"><![CDATA[<b>%1$s:</b> ∑: <b>%2$.2fU</b> Bol: <b>%3$.2fU</b> Bas: <b>%4$.2fIE(%5$.0f%%)</b> KH: <b>%6$.0fg</b>]]></string>
<!-- Translator-->
<string name="careportal_bgcheck">BZ-Test</string>
<string name="careportal_announcement">Ankündigung</string>

View file

@ -122,6 +122,8 @@
<!-- Temptarget-->
<string name="mins">%1$dmin</string>
<!-- TDD-->
<string name="tddformat"><![CDATA[<b>%1$s:</b> ∑: <b>%2$.2fU</b> Bol: <b>%3$.2fU</b> Bas: <b>%4$.2fU(%5$.0f%%)</b>]]></string>
<string name="tddwithcarbsformat"><![CDATA[<b>%1$s:</b> ∑: <b>%2$.2fU</b> Bol: <b>%3$.2fU</b> Bas: <b>%4$.2fU(%5$.0f%%)</b> Gluc.: <b>%6$.0fg</b>]]></string>
<!-- Translator-->
<string name="careportal_bgcheck">Contrôle Glycémie</string>
<string name="careportal_announcement">Notification</string>

View file

@ -122,6 +122,8 @@
<!-- Temptarget-->
<string name="mins">%1$dmin</string>
<!-- TDD-->
<string name="tddformat"><![CDATA[<b>%1$s:</b> ∑: <b>%2$.2fU</b> Boli: <b>%3$.2fU</b> Bas: <b>%4$.2fU(%5$.0f%%)</b>]]></string>
<string name="tddwithcarbsformat"><![CDATA[<b>%1$s:</b> ∑: <b>%2$.2fU</b> Boli: <b>%3$.2fU</b> Bas: <b>%4$.2fU(%5$.0f%%)</b> CHO: <b>%6$.0fg</b>]]></string>
<!-- Translator-->
<string name="careportal_bgcheck">Controllo BG</string>
<string name="careportal_announcement">Avviso</string>

View file

@ -122,8 +122,8 @@
<!-- Temptarget-->
<string name="mins">%1$dmin</string>
<!-- TDD-->
<string name="tddformat"><![CDATA[<b>%1$s:</b> ∑: <b>%2$.2fU</b> Bol: <b>%3$.2fU</b> Baz: <b>%4$.2fU</b>]]></string>
<string name="tddwithcarbsformat"><![CDATA[<b>%1$s:</b> ∑: <b>%2$.2fU</b> Bol: <b>%3$.2fU</b> Baz: <b>%4$.2fU</b> AV: <b>%5$.0fg</b>]]></string>
<string name="tddformat"><![CDATA[<b>%1$s:</b> ∑: <b>%2$.2fU</b> Boluso: <b>%3$.2fU</b> Bazės: <b>%4$.2fU(%5$.0f%%)</b>]]></string>
<string name="tddwithcarbsformat"><![CDATA[<b>%1$s:</b> ∑: <b>%2$.2fU</b> Boluso: <b>%3$.2fU</b> Bazės: <b>%4$.2fU(%5$.0f%%)</b> AV: <b>%6$.0fg</b>]]></string>
<!-- Translator-->
<string name="careportal_bgcheck">KG testas</string>
<string name="careportal_announcement">Pranešimas</string>

View file

@ -20,6 +20,7 @@
<string name="androidaps_start">AndroidAPS uruchomiony</string>
<string name="formatinsulinunits">%1$.2fU</string>
<string name="reservoirvalue">%1$.0f / %2$d U</string>
<string name="pump_basebasalrate">%1$.2fJ/g</string>
<string name="format_hours">%1$.2f h</string>
<string name="format_mins">%1$d min.</string>
<string name="format_mins_short">%1$dm</string>
@ -38,10 +39,61 @@
<string name="noprofileset">NIE USTAWIONO PROFILU</string>
<string name="date">Data</string>
<string name="units_label">Jednostki</string>
<string name="dia_label">DIA</string>
<string name="ic_label">IC</string>
<string name="isf_label">ISF</string>
<string name="basal_label">Baza</string>
<string name="target_label">Cel</string>
<string name="initializing">Inicjuje ...</string>
<string name="serialnumber">Numer seryjny</string>
<string name="battery_label">Bateria</string>
<string name="lastconnection_label">Ostatnie połączenie</string>
<string name="lastbolus_label">Ostatni bolus</string>
<string name="dailyunits">Jednostki dzienne</string>
<string name="basebasalrate_label">Podstawowa dawka bazowa</string>
<string name="tempbasal_label">Baza tymczasowa</string>
<string name="virtualpump_extendedbolus_label">Bolus Przedłużony</string>
<string name="reservoir_label">Zbiornik</string>
<string name="pumphistory">Historia pompy</string>
<string name="viewprofile">Zobacz profil</string>
<string name="eventtype">Typ zdarzenia</string>
<string name="mgdl">mg/dl</string>
<string name="mmol">mmol/l</string>
<string name="advancedsettings_title">Ustawienia zaawansowane</string>
<string name="bluetooth">Bluetooth</string>
<string name="btwatchdog_title">BT Watchdog</string>
<string name="btwatchdog_summary">Wyłącza bluetooth telefonu na jedną sekundę, jeśli nie jest możliwe połączenie z pompą. Może to pomóc w niektórych telefonach, w których blokuje się bluetooth.</string>
<!-- Constraints-->
<string name="limitingbasalratio">Ograniczam maks. dawkę bazową do %1$.2f U/h z uwagi na %2$s</string>
<string name="pumplimit">ograniczenie pompy</string>
<string name="limitingpercentrate">Ograniczam maksymalną wartość w procentach do %1$d%% z uwagi na %2$s</string>
<string name="itmustbepositivevalue">wartość musi być dodatnia</string>
<string name="limitingbolus">Ograniczam bolus do %1$.1f U z uwagi na %2$s</string>
<string name="pumpNotInitializedProfileNotSet">Pompa nie zainicjowana, profil nie ustawiony!</string>
<!-- Dialogs-->
<string name="confirmation">Potwierdzenie</string>
<string name="message">Wiadomość</string>
<string name="ok">OK</string>
<string name="cancel">Anuluj</string>
<string name="dismiss">ODRZUĆ</string>
<!-- BlePreCheck-->
<string name="ble_not_supported">Bluetooth Low Energy nie jest obsługiwany.</string>
<string name="ble_not_enabled">Bluetooth nie jest włączony.</string>
<string name="location_not_found_title">Lokalizacja nie jest włączona</string>
<string name="location_not_found_message">Aby uruchomić odnajdywanie Bluetooth na nowszych urządzeniach, lokalizacja musi być uruchomiona. AAPS nie śledzi twojej lokalizacji więc po udanym parowaniu urządzenia Bluetooth można wyłączyć lokalizację.</string>
<!-- DateUtil-->
<string name="minago">%1$dmin temu</string>
<string name="hoursago">%1$.1fh temu</string>
<string name="shorthour">h</string>
<string name="days">dni</string>
<string name="hours">godzin</string>
<string name="unit_second">sekunda</string>
<string name="unit_minute">minuta</string>
<string name="unit_hour">godzina</string>
<string name="unit_day">dzień</string>
<string name="unit_week">tydzień</string>
<string name="unit_seconds">sekund</string>
<string name="unit_minutes">minut</string>
<string name="unit_hours">godzin</string>
<string name="unit_days">dni</string>
<string name="unit_weeks">tygodni</string>
@ -68,6 +120,7 @@
<!-- ProfileSwitch-->
<string name="zerovalueinprofile">Nieprawidłowy profil: %1$s</string>
<!-- Temptarget-->
<string name="mins">%1$dmin</string>
<!-- TDD-->
<!-- Translator-->
<string name="careportal_bgcheck">Sprawdź BG</string>
@ -101,7 +154,28 @@
<string name="enacted">Wykonane</string>
<string name="comment">Komentarz</string>
<string name="success">Sukces</string>
<string name="percent">Procent</string>
<string name="absolute">Całkowity</string>
<string name="configbuilder_insulin">Insulina</string>
<string name="insulin_unit_shortname">U</string>
<string name="waitingforpumpresult">Oczekiwanie na wynik</string>
<string name="smb_shortname">SMB</string>
<!-- CarbsReq-->
<string name="carbsreq">Zalecane podanie %dg węglowodanów w przeciągu %d minut</string>
<!-- TDDStatsActivity-->
<string name="stats">Statystyki</string>
<string name="cumulative_tdd">Kumulatywna TDD (dawka dzienna)</string>
<string name="expweight">Ważona wykładniczo TDD</string>
<string name="basalrate">Baza</string>
<string name="bolus">Bolus</string>
<string name="tdd">TDD</string>
<string name="ratio">Stosunek</string>
<string name="amount_days"># Dni</string>
<string name="weight">Waga</string>
<string name="warning_Message">Możliwa niedokładność jeśli używasz bolusów do wypełnień!</string>
<string name="olddata_Message">Stare dane, naciśnij \"RELOAD\"</string>
<string name="tbb">Suma dzienna bazy (TBB)</string>
<string name="tbb2">TBB * 2</string>
<!-- Ntp-->
<string name="timedetection">Wykrywanie czasu</string>
</resources>

View file

@ -122,8 +122,8 @@
<!-- Temptarget-->
<string name="mins">%1$dmin</string>
<!-- TDD-->
<string name="tddformat"><![CDATA[<b>%1$s:</b> ∑: <b>%2$.2fU</b> Bol: <b>%3$.2fU</b> Bas: <b>%4$.2fU</b>]]></string>
<string name="tddwithcarbsformat"><![CDATA[<b>%1$s:</b> ∑: <b>%2$.2fU</b> Bol: <b>%3$.2fU</b> Bas: <b>%4$.2fU</b> Hidratos: <b>%5$.0fg</b>]]></string>
<string name="tddformat"><![CDATA[<b>%1$s:</b> ∑: <b>%2$.2fU</b> Bol: <b>%3$.2fU</b> Bas: <b>%4$.2fU(%5$.0f%%)</b>]]></string>
<string name="tddwithcarbsformat"><![CDATA[<b>%1$s:</b> ∑: <b>%2$.2fU</b> Bol: <b>%3$.2fU</b> Bas: <b>%4$.2fU(%5$.0f%%)</b> Hidratos: <b>%6$.0fg</b>]]></string>
<!-- Translator-->
<string name="careportal_bgcheck">Verificar Glic</string>
<string name="careportal_announcement">Anúncio</string>

View file

@ -2,16 +2,40 @@
<resources>
<!-- General-->
<string name="error">Eroare</string>
<string name="not_set_short">Nesetată</string>
<string name="profile_set_ok">Profilul bazalei a fost modificat în pompă</string>
<string name="invalidinput">Date de intrare incorecte</string>
<string name="tempbasaldeliveryerror">Eroare la livrare bazală temporară</string>
<string name="waitingforpump">Se așteaptă pompa</string>
<string name="connectingfor">Conectat de %1$d s</string>
<string name="bolusdelivering">Se livrează %1$.2fU</string>
<string name="connecting">Se conectează</string>
<string name="connected">Conectat</string>
<string name="disconnected">Deconectat</string>
<string name="disconnecting">Se deconectează</string>
<string name="androidaps_start">AndroidAPS a pornit</string>
<string name="formatinsulinunits">%1$.2fU</string>
<string name="reservoirvalue">%1$.0f / %2$d U</string>
<string name="pump_basebasalrate">%1$.2fU/h</string>
<string name="format_hours">%1$.2f h</string>
<string name="format_mins">%1$d min</string>
<string name="format_mins_short">%1$dm</string>
<string name="pumpbusy">Pompa face altă acțiune</string>
<string name="connectionerror">Eroare de conexiune cu pompa</string>
<string name="youareonallowedlimit">Ați atins limita permisă</string>
<string name="objectives">Obiective</string>
<string name="close">Închide</string>
<string name="please_wait">Așteptați…</string>
<string name="reload">Reîncărcare</string>
<string name="stoppressed">STOP APĂSAT</string>
<string name="stop">Stop</string>
<string name="invalidprofile">Profil invalid!!!</string>
<string name="noprofileset">NICIUN PROFIL SETAT</string>
<string name="date">Data</string>
<string name="units_label">Unități</string>
<string name="dia_label">DIA</string>
<string name="ic_label">IC</string>
<string name="isf_label">ISF</string>
<string name="basal_label">Bazală</string>
<string name="target_label">Țintă</string>
<string name="initializing">Inițializare...</string>
@ -19,14 +43,34 @@
<string name="battery_label">Baterie</string>
<string name="lastconnection_label">Ultima conexiune</string>
<string name="lastbolus_label">Ultimul bolus</string>
<string name="tempbasal_label">Bazală temporară</string>
<string name="virtualpump_extendedbolus_label">Bolus extins</string>
<string name="reservoir_label">Rezervor</string>
<string name="pumphistory">Istoric pompă</string>
<string name="viewprofile">Afișează profilul</string>
<string name="eventtype">Tip eveniment</string>
<string name="mgdl">mg/dl</string>
<string name="mmol">mmol/l</string>
<string name="advancedsettings_title">Setări avansate</string>
<string name="bluetooth">Bluetooth</string>
<!-- Constraints-->
<string name="pumplimit">limită pompă</string>
<string name="itmustbepositivevalue">trebuie să fie o valoare pozitivă</string>
<string name="limitingbolus">Se limitează bolusul la %1$.1f U datorită %2$s</string>
<string name="pumpNotInitializedProfileNotSet">Pompa nu este inițializată, profilul nu este setat!</string>
<!-- Dialogs-->
<string name="confirmation">Confirmare</string>
<string name="message">Mesaj</string>
<string name="ok">OK</string>
<string name="cancel">Renunță</string>
<string name="dismiss">RENUNȚĂ</string>
<!-- BlePreCheck-->
<string name="ble_not_enabled">Bluetooth-ul este dezactivat.</string>
<string name="location_not_found_title">Localizarea este dezactivată</string>
<!-- DateUtil-->
<string name="minago">acum %1$dmin</string>
<string name="hoursago">%1$.1f h în urmă</string>
<string name="shorthour">h</string>
<string name="days">zile</string>
<string name="hours">ore</string>
<string name="unit_second">secundă</string>
@ -43,29 +87,61 @@
<string name="shortday">z</string>
<!-- Profile-->
<string name="profile_per_unit">/U</string>
<string name="profile_ins_units_per_hour">U/h</string>
<string name="profile_carbs_per_unit">g/U</string>
<!-- ProfileFunction-->
<string name="noprofileselected">Niciun profil selectat</string>
<!-- PumpType-->
<!-- APSResult-->
<string name="let_temp_basal_run">Lasă să funcționeze bazala temporară</string>
<string name="duration">Durată</string>
<string name="reason">Motiv</string>
<!-- ProfileSwitch-->
<string name="zerovalueinprofile">Profil invalid: %1$s</string>
<!-- Temptarget-->
<string name="mins">%1$dmin</string>
<!-- TDD-->
<!-- Translator-->
<string name="careportal_bgcheck">Verificare glicemie</string>
<string name="careportal_announcement">Anunț</string>
<string name="careportal_note">Notă</string>
<string name="careportal_question">Întrebare</string>
<string name="careportal_exercise">Activitate fizică</string>
<string name="careportal_pumpsitechange">Schimbare loc pompă</string>
<string name="careportal_cgmsensorinsert">Inserare senzor</string>
<string name="careportal_cgmsensorstart">Start senzor</string>
<string name="careportal_insulincartridgechange">Schimbare cartuș insulină</string>
<string name="careportal_correctionbolus">Bolus de corecție</string>
<string name="careportal_tempbasalstart">Start bazală temporară</string>
<string name="careportal_tempbasalend">Sfârșit bazală temporară</string>
<string name="careportal_carbscorrection">Corecție de carbohidrați</string>
<string name="careportal_pumpbatterychange">Schimbare baterie pompă</string>
<string name="careportal_temporarytarget">Ţintă temporară</string>
<string name="glucosetype_finger">Deget</string>
<string name="glucosetype_sensor">Senzor</string>
<string name="manual">Manual</string>
<string name="unknown">necunoscută</string>
<!-- Command-->
<!-- PumpEnactResult-->
<string name="comment">Comentariu</string>
<string name="success">Succes</string>
<string name="percent">Procent</string>
<string name="absolute">Absolut</string>
<string name="configbuilder_insulin">Insulină</string>
<string name="insulin_unit_shortname">U</string>
<string name="waitingforpumpresult">Se așteaptă rezultatul</string>
<string name="smb_shortname">SMB</string>
<!-- CarbsReq-->
<!-- TDDStatsActivity-->
<string name="cumulative_tdd">TDD cumulat</string>
<string name="expweight">TDD estimat exponențial</string>
<string name="basalrate">Bazală</string>
<string name="bolus">Bolus</string>
<string name="tdd">TDD</string>
<string name="ratio">Rata</string>
<string name="amount_days"># Zile</string>
<string name="weight">Greutate</string>
<string name="olddata_Message">Date vechi, apăsați \"REÎNCĂRCARE\"</string>
<string name="tbb2">TBB * 2</string>
<!-- Ntp-->
</resources>

View file

@ -122,6 +122,8 @@
<!-- Temptarget-->
<string name="mins">%1$d мин</string>
<!-- TDD-->
<string name="tddformat"><![CDATA[<b>%1$s:</b> ∑: <b>%2$.2fед</b>Бол:<b>%3$.2fед</b> Баз: <b>%4$.2fед(%5$.0f%%)</b>]]></string>
<string name="tddwithcarbsformat"><![CDATA[<b>%1$s</b>∑: <b>%2$.2fU</b> Бол: <b>%3$.2fед</b> Баз: <b>%4$.2fед(%5$.0f%%)</b> ГУ: <b>%6$.0fг</b>]]></string>
<!-- Translator-->
<string name="careportal_bgcheck">Проверка ГК</string>
<string name="careportal_announcement">Оовещение</string>

View file

@ -122,8 +122,6 @@
<!-- Temptarget-->
<string name="mins">%1$d min</string>
<!-- TDD-->
<string name="tddformat"><![CDATA[<b>%1$s:</b> ∑: <b>%2$.2fU</b> Bol: <b>%3$.2fU</b> Bas: <b>%4$.2fU</b>]]></string>
<string name="tddwithcarbsformat"><![CDATA[<b>%1$s:</b> ∑: <b>%2$.2fU</b> Bol: <b>%3$.2fU</b> Bas: <b>%4$.2fU</b> KH: <b>%5$.0fg</b>]]></string>
<!-- Translator-->
<string name="careportal_bgcheck">BG-kontroll</string>
<string name="careportal_announcement">Meddelande</string>

View file

@ -156,8 +156,8 @@
<string name="mins">%1$dmin</string>
<!-- TDD-->
<string name="tddformat"><![CDATA[<b>%1$s:</b> ∑: <b>%2$.2fU</b> Bol: <b>%3$.2fU</b> Bas: <b>%4$.2fU</b>]]></string>
<string name="tddwithcarbsformat"><![CDATA[<b>%1$s:</b> ∑: <b>%2$.2fU</b> Bol: <b>%3$.2fU</b> Bas: <b>%4$.2fU</b> Carbs: <b>%5$.0fg</b>]]></string>
<string name="tddformat"><![CDATA[<b>%1$s:</b> ∑: <b>%2$.2fU</b> Bol: <b>%3$.2fU</b> Bas: <b>%4$.2fU(%5$.0f%%)</b>]]></string>
<string name="tddwithcarbsformat"><![CDATA[<b>%1$s:</b> ∑: <b>%2$.2fU</b> Bol: <b>%3$.2fU</b> Bas: <b>%4$.2fU(%5$.0f%%)</b> Carbs: <b>%6$.0fg</b>]]></string>
<!-- Translator-->
<string name="careportal_bgcheck">BG Check</string>

View file

@ -46,6 +46,10 @@
<item name="android:textSize">10sp</item>
</style>
<style name="ButtonMediumFontStyle">
<item name="android:textSize">15sp</item>
</style>
<!-- Buttons from MaterialDateTimePicker -->
<dimen name="mdtp_material_button_height">48dp</dimen>
<dimen name="mdtp_material_button_textsize">14sp</dimen>

View file

@ -1,2 +1,122 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources>
<string name="danars_pairing">Parowanie</string>
<string name="danars_nodeviceavailable">Urządzenie nie zostało znalezione do tej pory</string>
<string name="danars_pairingok">Parowanie OK</string>
<string name="danars_pairingtimedout">Przekroczono limit czasu parowania</string>
<string name="danars_waitingforpairing">Oczekiwanie na pompę na sparowanie</string>
<string name="danarspump">DanaRS</string>
<string name="danarspump_shortname">Dana</string>
<string name="description_pump_dana_rs">Integracja z pompą DANA RS Diabecare</string>
<string name="maxbolusviolation">Przekroczenie ograniczenia maks. bolusa</string>
<string name="commanderror">Błąd polecenia</string>
<string name="speederror">Błąd prędkości</string>
<string name="insulinlimitviolation">Przekroczono limit insuliny</string>
<string name="boluserrorcode">Zadano: %1$.2fU Dostarczono: %2$.2fU Kod błędu: %3$s</string>
<string name="danar_valuenotsetproperly">Wartość ustawiona nieprawidłowo</string>
<string name="danar_setbasalstep001">Ustaw krok bazy na 0.01 U/h</string>
<string name="resetpairing">Zresetować sparowanie?</string>
<string name="dana_model">%1$s\nModel: %2$02X\nProtokół: %3$02X\nKod: %4$02X</string>
<string name="processinghistory">Przetwarzanie zdarzenia</string>
<string name="danar_enableextendedbolus">Uaktywnij bolusy przedłużone w pompie</string>
<string name="overview_bolusprogress_delivered">Dostarczone</string>
<string name="overview_bolusprogress_stoped">Zatrzymane</string>
<string name="unsupportedfirmware">Nieobsługiwane oprogramowanie pompy</string>
<string name="pumperror">Błąd pompy</string>
<string name="lowbattery">Niski stan baterii</string>
<string name="basalcompare">Dostarczanie mniej niż wstępnie ustawiona baza</string>
<string name="pumpshutdown">Wyłączenie pompy</string>
<string name="batterydischarged">Bateria pompy rozładowana</string>
<string name="occlusion">Zatkanie</string>
<string name="emptyreservoir">Pusty zasobnik</string>
<string name="checkshaft">Sprawdź śrubę tłoka</string>
<string name="basalmax">Max dawka bazowa</string>
<string name="dailymax">Limit dzienny</string>
<string name="bloodsugarmeasurementalert">Alarm pomiaru poziomu cukru</string>
<string name="remaininsulinalert">Pozostała ilość insuliny</string>
<string name="missedbolus">Pominięty bolus</string>
<string name="invalidpairing">Niepoprawne informacje o parowaniu. Żądanie nowego parowania</string>
<string name="gettingpumpstatus">Uzyskiwanie statusu pompy</string>
<string name="gettingextendedbolusstatus">Status otrzymywania bolusa przedłużonego</string>
<string name="gettingbolusstatus">Status otrzymywania bolusa</string>
<string name="gettingtempbasalstatus">Status otrzymywania tymczasowej bazy</string>
<string name="gettingpumpsettings">Otrzymywanie ustawień pompy</string>
<string name="gettingpumptime">Otrzymywanie czasu pompy</string>
<string name="largetimedifftitle">Duża Różnica Czasu</string>
<string name="largetimediff">Duża różnica czasu:\nCzas w pompie jest wyłączony przez więcej niż 1,5 godziny.\n. Ustaw czas ręcznie na pompie i upewnij się, że odczyt historii pompy nie powoduje błędu.\nJeśli to możliwe, usuń historię z pompy przed zmianą czasu lub wyłącz pętlę zamkniętą do jednego DIA po ostatnim nieprawidłowym wpisie dziennika, ale co najmniej jeden DIA od teraz.</string>
<string name="pairfirst">Proszę sparować swoją pompę z telefonem!</string>
<string name="approachingdailylimit">Zbliżam się do dziennego limitu insuliny</string>
<string name="startingbolus">Rozpoczynam podawanie bolusa</string>
<string name="waitingforestimatedbolusend">Oczekuję na zakończenie bolusa. Pozostało %1$d sec.</string>
<string name="stoppingtempbasal">Zatrzymywanie bazy tymczasowej</string>
<string name="settingextendedbolus">Ustawianie bolusa przedłużonego</string>
<string name="stoppingextendedbolus">Zatrzymywanie bolusa przedłużonego</string>
<string name="updatingbasalrates">Uaktualnianie dawek bazowych</string>
<string name="settingtempbasal">Ustawianie bazy tymczasowej</string>
<string name="waitingfortimesynchronization">Oczekiwanie na synchronizację czasu (%1$d sec)</string>
<string name="wrongpassword">Złe hasło</string>
<string name="wrongpumppassword">Błędne hasło pompy!</string>
<string name="danar_history_alarm">Alarmy</string>
<string name="danar_history_basalhours">Godziny Bazy</string>
<string name="danar_history_bolus">Bolusy</string>
<string name="danar_history_carbohydrates">Węglowodany</string>
<string name="danar_history_dailyinsulin">Insulina dzienna</string>
<string name="danar_history_errors">Błędy</string>
<string name="danar_history_glucose">Glukoza</string>
<string name="danar_history_refill">Napełnij</string>
<string name="danar_history_syspend">Wstrzymaj</string>
<string name="danar_history_prime">Wypełnianie</string>
<string name="danar_useroptions">Ustawienia użytkownika</string>
<string name="danar_timedisplay">Format wyświetlanego czasu</string>
<string name="danar_buttonscroll">Przycisk przewijania</string>
<string name="danar_beep">Dźwięk po przyciśnięciu przycisku</string>
<string name="danar_pumpalarm">Alarm</string>
<string name="danar_pumpalarm_sound">Dźwięk</string>
<string name="danar_pumpalarm_vibrate">Wibracja</string>
<string name="danar_pumpalarm_both">Obie opcje</string>
<string name="danar_screentimeout">LCD na czas [sekund]</string>
<string name="danar_backlight">Podświetlenie na czas [sekund]</string>
<string name="danar_glucoseunits">Jednostki glukozy</string>
<string name="danar_shutdown">Wyłączenie [godzin]</string>
<string name="danar_lowreservoir">Niska zawartość zbiornika [Jednostki]</string>
<string name="danar_saveuseroptions">Zapisz ustawienia w pompie</string>
<string name="description_pump_dana_r">Integracja z pompą DANA R Diabecare</string>
<string name="description_pump_dana_r_korean">Integracja z pompą DANA R Diabetes, wersja koreańska</string>
<string name="description_pump_dana_r_v2">Integracja z pompą DANA R Diabecare z oprogramowaniem v2</string>
<string name="danarpump_shortname">DANA</string>
<string name="nobtadapter">Nie odnaleziono urządzenia bluetooth</string>
<string name="devicenotfound">Nie odnaleziono wybranego urządzenia</string>
<string name="danar_switchtouhmode">Zmień tryb z U/d na U/h w pompie</string>
<string name="danarkoreanpump">DanaR wersja Koreańska</string>
<string name="danarpump">DanaR</string>
<string name="pumpdrivercorrected">Poprawiono sterownik pompy</string>
<string name="danarv2pump">DanaRv2</string>
<string name="danar_disableeasymode">Wyłącz tryb EasyUI w pompie</string>
<string name="profile_set_failed">Ustawienie profilu bazy nie powiodło się</string>
<string name="danar_bluetooth_status">Status Bluetooth</string>
<string name="danar_iob_label">IOB w pompie</string>
<string name="basal_step">Krok bazy</string>
<string name="bolus_step">Krok bolusa</string>
<string name="virtualpump_firmware_label">Firmware</string>
<string name="danar_pump_settings">Ustawienia pompy Dana</string>
<string name="timeformat12h">12h</string>
<string name="timeformat24h">24h</string>
<string name="option_on">Włącz</string>
<string name="option_off">Wyłącz</string>
<string name="danar_bt_name_title">Urządzenie Bluetooth DanaR</string>
<string name="danars_password_title">Hasło pompy (tylko v1)</string>
<string name="danar_password_title">Hasło pompy</string>
<string name="danar_useextended_title">Używaj przedłużonych bolusów dla &gt;200%%</string>
<string name="danar_visualizeextendedaspercentage_title">Wizualizacja bolusa przedłużonego jako %%</string>
<string name="bolusspeed">Szybkość podawania bolusa</string>
<string name="selectedpump">Wybrana pompa</string>
<string name="rs_loginsulinchange_title">Zapisz zmianę zbiorniczka</string>
<string name="rs_loginsulinchange_summary">Dodaj zdarzenie \"Zmiana zasobnika insuliny\" do portalu opieki Nightscout, gdy wykryto je w historii pompy</string>
<string name="rs_logcanulachange_title">Zapisz zmianę wkłucia</string>
<string name="rs_logcanulachange_summary">Dodaj zdarzenie \"Zmiana miejsca wkłucia\" do portalu opieki Nightscout, gdy wykryto je w historii pompy</string>
<string name="pin1">PIN1</string>
<string name="pin2">PIN2</string>
<string name="press_ok_on_the_pump">Naciśnij OK na pompie\ni wpisz 2 wyświetlone numery\nUtrzymuj wyświetlacz pompy włączony poprzez naciskanie przycisku minus, aż do momentu zakończenia przepisywania kodu.</string>
<string name="num1pin">1: (12 cyfr)</string>
<string name="num2pin">2: (8 cyfr)</string>
</resources>

View file

@ -1,33 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="danars_nodeviceavailable">Niciun dispozitiv găsit până acum</string>
<string name="danars_pairingok">Conectare OK</string>
<string name="danars_pairingtimedout">Conectare nereușită</string>
<string name="danars_waitingforpairing">Se așteaptă conectarea la pompă</string>
<string name="danarspump">DanaRS</string>
<string name="danarspump_shortname">Dana</string>
<string name="description_pump_dana_rs">Integrare cu pompele DANA Diabcare RS</string>
<string name="maxbolusviolation">Încălcare a valorii maxime a bolusului</string>
<string name="boluserrorcode">Solicitat: %1$.2fU Livrat: %2$.2fU Cod eroare: %3$s</string>
<string name="danar_valuenotsetproperly">Valoare setată incorect</string>
<string name="resetpairing">Resetați informațiile de împerechere?</string>
<string name="dana_model">%1$s\nModel: %2$02X\nProtocol: %3$02X\nCod: %4$02X</string>
<string name="danar_enableextendedbolus">Activează bolusuri extinse în pompă</string>
<string name="overview_bolusprogress_delivered">Livrat</string>
<string name="overview_bolusprogress_stoped">Oprit</string>
<string name="unsupportedfirmware">Soft pompă incompatibil</string>
<string name="pumperror">Eroare a pompei</string>
<string name="batterydischarged">Bateria pompei este descărcată</string>
<string name="occlusion">Ocluzie</string>
<string name="emptyreservoir">Rezervor gol</string>
<string name="basalmax">Maxim bazală</string>
<string name="dailymax">Maximum zilnic</string>
<string name="bloodsugarmeasurementalert">Alertă măsurare glicemie</string>
<string name="gettingpumpstatus">Se primește starea pompei</string>
<string name="gettingextendedbolusstatus">Se citește starea bolusului extins</string>
<string name="gettingbolusstatus">Se citește starea bolusului</string>
<string name="gettingtempbasalstatus">Se citește starea bazalei temporare</string>
<string name="gettingpumpsettings">Se citesc setările pompei</string>
<string name="gettingpumptime">Se citește ora pompei</string>
<string name="largetimedifftitle">Diferență majoră de timp</string>
<string name="startingbolus">Pornire livrare bolus</string>
<string name="stoppingtempbasal">Se oprește bazala temporară</string>
<string name="stoppingextendedbolus">Se oprește bolusul extins</string>
<string name="settingtempbasal">Se setează bazala temporară</string>
<string name="wrongpassword">Parolă greșită</string>
<string name="wrongpumppassword">Parola pompei greșită!</string>
<string name="danar_history_alarm">Alarme</string>
<string name="danar_history_basalhours">Ore bazale</string>
<string name="danar_history_bolus">Bolusuri</string>
<string name="danar_history_carbohydrates">Carbohidrați</string>
<string name="danar_history_dailyinsulin">Insulină zilnică</string>
<string name="danar_history_errors">Erori</string>
<string name="danar_history_glucose">Glicemie</string>
<string name="danar_history_refill">Reumplere</string>
<string name="danar_history_syspend">Suspendare</string>
<string name="danar_history_prime">Amorsare</string>
<string name="danar_useroptions">Opțiunile utilizatorului</string>
<string name="danar_buttonscroll">Buton derulare</string>
<string name="danar_beep">Sunet la apăsarea butonului</string>
<string name="danar_pumpalarm">Alarmă</string>
<string name="danar_pumpalarm_sound">Sunet</string>
<string name="danar_pumpalarm_vibrate">Vibrație</string>
<string name="danar_pumpalarm_both">Ambele</string>
<string name="danar_shutdown">Oprire [hours]</string>
<string name="danar_saveuseroptions">Salvați opțiunile în pompă</string>
<string name="description_pump_dana_r">Integrare cu pompele DANA Diabcare R</string>
<string name="danarpump_shortname">DANA</string>
<string name="nobtadapter">Nu s-a găsit niciun adaptor bluetooth</string>
<string name="devicenotfound">Dispozitivul selectat nu a fost găsit</string>
<string name="danarkoreanpump">DanaR din Coreea</string>
<string name="danarpump">DanaR</string>
<string name="danarv2pump">DanaRv2</string>
<string name="profile_set_failed">Setarea profilului bazalei a eșuat</string>
<string name="danar_bluetooth_status">Status Bluetooth</string>
<string name="danar_iob_label">IOB din pompă</string>
<string name="basal_step">Pas bazală</string>
@ -38,6 +73,11 @@
<string name="timeformat24h">24h</string>
<string name="option_on">Pornit</string>
<string name="option_off">Oprit</string>
<string name="danar_bt_name_title">Dispozitive bluetooth DanaR</string>
<string name="danar_password_title">Parola pompei</string>
<string name="bolusspeed">Viteză bolusare</string>
<string name="selectedpump">Pompa selectată</string>
<string name="rs_loginsulinchange_title">Înregistrează schimbarea rezervorului</string>
<string name="pin1">PIN1</string>
<string name="pin2">PIN2</string>
<string name="num1pin">1: (12 cifre)</string>

View file

@ -554,7 +554,7 @@ class BLEComm @Inject internal constructor(
val size = decryptedBuffer.size
var pass: Int = (decryptedBuffer[size - 1].toInt() and 0x000000FF shl 8) + (decryptedBuffer[size - 2].toInt() and 0x000000FF)
pass = pass xor 3463
danaPump.rsPassword = Integer.toHexString(pass)
danaPump.rsPassword = String.format("%04X", pass)
aapsLogger.debug(LTag.PUMPBTCOMM, "Pump user password: " + danaPump.rsPassword)
if (!danaPump.isRSPasswordOK) {
aapsLogger.error(LTag.PUMPBTCOMM, "Wrong pump password")

View file

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
height="24px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve">
<g id="cp_x5F_compare_x5F_profile">
<rect display="none" width="24" height="24"/>
<path fill="#03A9F4" d="M18.307,8.927c-0.135-0.417-0.494-0.72-0.928-0.783l-3.997-0.581l-1.789-3.622
c-0.387-0.786-1.675-0.786-2.061,0L7.743,7.563L3.746,8.145C3.313,8.207,2.953,8.511,2.818,8.927
C2.683,9.343,2.795,9.8,3.109,10.105l2.894,2.819l-0.683,3.983c-0.074,0.432,0.103,0.868,0.457,1.125
c0.2,0.146,0.437,0.22,0.676,0.22c0.183,0,0.367-0.044,0.535-0.133l3.576-1.879l3.576,1.879c0.39,0.203,0.855,0.173,1.212-0.087
c0.353-0.257,0.531-0.694,0.456-1.125l-0.683-3.983l2.893-2.819C18.329,9.8,18.443,9.343,18.307,8.927z M17.252,9.488l-3.16,3.081
l0.746,4.35c0.014,0.087-0.021,0.174-0.092,0.225c-0.04,0.03-0.087,0.044-0.135,0.044c-0.036,0-0.073-0.008-0.108-0.027
l-3.907-2.053l-3.907,2.053c-0.075,0.044-0.17,0.036-0.242-0.017c-0.07-0.051-0.106-0.138-0.091-0.225l0.746-4.35L3.94,9.488
C3.877,9.427,3.855,9.335,3.882,9.252s0.099-0.143,0.185-0.156l4.369-0.634l1.954-3.959c0.078-0.158,0.334-0.158,0.412,0
l1.953,3.959l4.369,0.634c0.087,0.013,0.158,0.073,0.185,0.156S17.315,9.427,17.252,9.488z"/>
<path fill="#FF5555" d="M21.182,11.032c-0.135-0.417-0.494-0.72-0.928-0.783l-3.997-0.581l-1.789-3.622
c-0.387-0.786-1.675-0.786-2.061,0l-1.789,3.622l-3.998,0.581c-0.432,0.063-0.793,0.366-0.928,0.783
c-0.135,0.416-0.023,0.873,0.291,1.178l2.894,2.819l-0.683,3.983c-0.074,0.432,0.103,0.868,0.457,1.125
c0.2,0.146,0.437,0.22,0.676,0.22c0.183,0,0.367-0.044,0.535-0.133l3.576-1.879l3.576,1.879c0.39,0.203,0.855,0.173,1.212-0.087
c0.353-0.257,0.531-0.694,0.456-1.125l-0.683-3.983l2.893-2.819C21.204,11.905,21.318,11.448,21.182,11.032z M20.127,11.593
l-3.16,3.081l0.746,4.35c0.014,0.087-0.021,0.174-0.092,0.225c-0.04,0.03-0.087,0.044-0.135,0.044
c-0.036,0-0.073-0.008-0.108-0.027l-3.907-2.053l-3.907,2.053c-0.075,0.044-0.17,0.036-0.242-0.017
c-0.07-0.051-0.106-0.138-0.091-0.225l0.746-4.35l-3.162-3.081c-0.063-0.061-0.085-0.153-0.058-0.236
c0.027-0.083,0.099-0.143,0.185-0.156l4.369-0.634l1.954-3.959c0.078-0.158,0.334-0.158,0.412,0l1.953,3.959L20,11.201
c0.087,0.013,0.158,0.073,0.185,0.156S20.19,11.532,20.127,11.593z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View file

@ -4,13 +4,51 @@
<string name="label_actions_activity">AAPS</string>
<string name="label_xdrip">AAPS</string>
<string name="label_xdrip_v2">AAPSv2</string>
<string name="label_warning_sync">Nu există date!</string>
<string name="label_warning_old">Date vechi!</string>
<string name="label_warning_sync_aaps">Sincronizare cu AAPS!</string>
<string name="pref_on">Pornit</string>
<string name="pref_off">Oprit</string>
<string name="pref_show_date">Arată data</string>
<string name="pref_show_iob">Arată IOB</string>
<string name="pref_show_cob">Arată COB</string>
<string name="pref_show_delta">Arată Delta</string>
<string name="pref_show_phone_battery">Arată baterie telefon</string>
<string name="pref_show_rig_battery">Arată Baterie Rig</string>
<string name="pref_show_basal_rate">Arată rata bazală</string>
<string name="pref_show_loop_status">Arată stare buclă închisă</string>
<string name="pref_show_bg">Arată glicemia</string>
<string name="pref_dark" comment="Enables dark visual theme">Întunecat</string>
<string name="pref_highlight_basals">Evidențiere rate bazale</string>
<string name="pref_1_hour">1 oră</string>
<string name="pref_2_hours">2 ore</string>
<string name="pref_3_hours">3 ore</string>
<string name="pref_4_hours">4 ore</string>
<string name="pref_5_hours">5 ore</string>
<string name="pref_default">Implicit</string>
<string name="pref_delta_granularity">Granularitate Delta (Steampunk)</string>
<string name="pref_version">Versiune:</string>
<string name="menu_tempt">ŢintăTemporară</string>
<string name="menu_bolus">Bolus</string>
<string name="menu_ecarb">eCarb</string>
<string name="menu_settings">Setări</string>
<string name="menu_status">Stare</string>
<string name="menu_default">Implicit</string>
<string name="action_start_min">start [min]</string>
<string name="action_confirm">CONFIRMARE</string>
<string name="action_status_pump">STARE POMPĂ</string>
<string name="action_status_loop">STARE BUCLĂ ÎNCHISĂ</string>
<string name="action_bolus">bolus</string>
<string name="status_pump">Pompă</string>
<string name="status_cpp">CPP</string>
<string name="status_tdd">TDD</string>
<string name="activity_carb">Carbohidrați</string>
<string name="activity_IOB">IOB</string>
<string name="unit_mg_dl">mg/dl</string>
<string name="unit_mmol_l">mmol/l</string>
<string name="unit_g" comment="Shortcut for ISO unit: gram">g</string>
<string name="unit_u" comment="Shortcut for: insulin Unit">U</string>
<string name="unit_u_p_h" comment="Shortcut for: insulin Unit per Hour">U/h</string>
<string name="unit_d" comment="One letter shortcut for: Day" maxLength="1">z</string>
<string name="unit_w" comment="One letter shortcut for: Week" maxLength="1">s</string>
</resources>