Merge branch 'dev' into dagger3

This commit is contained in:
Milos Kozak 2020-02-05 15:58:29 +01:00
commit 234f34e22a
30 changed files with 132 additions and 28 deletions

View file

@ -22,11 +22,8 @@ import javax.inject.Inject
class CalibrationDialog : DialogFragmentWithDate() {
@Inject
lateinit var resourceHelper: ResourceHelper
@Inject
lateinit var profileFunction: ProfileFunction
@Inject lateinit var resourceHelper: ResourceHelper
@Inject lateinit var profileFunction: ProfileFunction
override fun onSaveInstanceState(savedInstanceState: Bundle) {
super.onSaveInstanceState(savedInstanceState)
@ -63,6 +60,7 @@ class CalibrationDialog : DialogFragmentWithDate() {
if (bg > 0) {
activity?.let { activity ->
OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.overview_calibration), HtmlHelper.fromHtml(Joiner.on("<br/>").join(actions)), Runnable {
aapsLogger.debug("USER ENTRY: CALIBRATION $bg")
XdripCalibrations.confirmAndSendCalibration(bg, context)
})
}

View file

@ -189,6 +189,7 @@ class CarbsDialog : DialogFragmentWithDate() {
OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.carbs), HtmlHelper.fromHtml(Joiner.on("<br/>").join(actions)), Runnable {
when {
activitySelected -> {
aapsLogger.debug("USER ENTRY: TEMPTARGET ACTIVITY $activityTT duration: $activityTTDuration")
val tempTarget = TempTarget()
.date(System.currentTimeMillis())
.duration(activityTTDuration)
@ -200,6 +201,7 @@ class CarbsDialog : DialogFragmentWithDate() {
}
eatingSoonSelected -> {
aapsLogger.debug("USER ENTRY: TEMPTARGET EATING SOON $eatingSoonTT duration: $eatingSoonTTDuration")
val tempTarget = TempTarget()
.date(System.currentTimeMillis())
.duration(eatingSoonTTDuration)
@ -211,6 +213,7 @@ class CarbsDialog : DialogFragmentWithDate() {
}
hypoSelected -> {
aapsLogger.debug("USER ENTRY: TEMPTARGET HYPO $hypoTT duration: $hypoTTDuration")
val tempTarget = TempTarget()
.date(System.currentTimeMillis())
.duration(hypoTTDuration)
@ -223,8 +226,10 @@ class CarbsDialog : DialogFragmentWithDate() {
}
if (carbsAfterConstraints > 0) {
if (duration == 0) {
aapsLogger.debug("USER ENTRY: CARBS $carbsAfterConstraints time: $time")
CarbsGenerator.createCarb(carbsAfterConstraints, time, CareportalEvent.CARBCORRECTION, notes)
} else {
aapsLogger.debug("USER ENTRY: CARBS $carbsAfterConstraints time: $time duration: $duration")
CarbsGenerator.generateCarbs(carbsAfterConstraints, time, duration, notes)
NSUpload.uploadEvent(CareportalEvent.NOTE, DateUtil.now() - 2000, resourceHelper.gs(R.string.generated_ecarbs_note, carbsAfterConstraints, duration, timeOffset))
}

View file

@ -6,7 +6,6 @@ import android.text.TextWatcher
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import androidx.annotation.StringRes
import com.google.common.base.Joiner
import info.nightscout.androidaps.Constants
@ -88,12 +87,14 @@ class CareDialog : DialogFragmentWithDate() {
EventType.BGCHECK -> {
action_care_duration_layout.visibility = View.GONE
}
EventType.SENSOR_INSERT,
EventType.BATTERY_CHANGE -> {
action_care_bg_layout.visibility = View.GONE
actions_care_bgsource.visibility = View.GONE
action_care_duration_layout.visibility = View.GONE
}
EventType.NOTE,
EventType.EXERCISE -> {
action_care_bg_layout.visibility = View.GONE
@ -184,6 +185,7 @@ class CareDialog : DialogFragmentWithDate() {
EventType.EXERCISE -> CareportalEvent.EXERCISE
}
careportalEvent.json = json.toString()
aapsLogger.debug("USER ENTRY: CAREPORTAL ${careportalEvent.eventType} json: ${careportalEvent.json}")
MainApp.getDbHelper().createOrUpdate(careportalEvent)
NSUpload.uploadCareportalEntryToNS(json)
}, null)

View file

@ -13,7 +13,6 @@ import info.nightscout.androidaps.MainApp
import info.nightscout.androidaps.R
import info.nightscout.androidaps.activities.ErrorHelperActivity
import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.services.AlarmSoundService
import kotlinx.android.synthetic.main.dialog_error.*
import javax.inject.Inject
@ -39,6 +38,7 @@ class ErrorDialog : DaggerDialogFragment() {
bundle.getString("title")?.let { title = it }
sound = bundle.getInt("sound", R.raw.error)
}
aapsLogger.debug("Error dialog displayed")
return inflater.inflate(R.layout.dialog_error, container, false)
}
@ -47,11 +47,11 @@ class ErrorDialog : DaggerDialogFragment() {
error_title.text = title
overview_error_ok.setOnClickListener {
aapsLogger.debug(LTag.UI, "Error dialog ok button pressed")
aapsLogger.debug("USER ENTRY: Error dialog ok button pressed")
dismiss()
}
overview_error_mute.setOnClickListener {
aapsLogger.debug(LTag.UI, "Error dialog mute button pressed")
aapsLogger.debug("USER ENTRY: Error dialog mute button pressed")
stopAlarm()
}
startAlarm()

View file

@ -72,6 +72,7 @@ class ExtendedBolusDialog : DialogFragmentWithDate() {
activity?.let { activity ->
OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.extended_bolus), HtmlHelper.fromHtml(Joiner.on("<br/>").join(actions)), Runnable {
aapsLogger.debug("USER ENTRY: EXTENDED BOLUS $insulinAfterConstraint duration: $durationInMinutes")
commandQueue.extendedBolus(insulinAfterConstraint, durationInMinutes, object : Callback() {
override fun run() {
if (!result.success) {

View file

@ -116,13 +116,16 @@ class FillDialog : DialogFragmentWithDate() {
activity?.let { activity ->
OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.primefill), HtmlHelper.fromHtml(Joiner.on("<br/>").join(actions)), Runnable {
if (insulinAfterConstraints > 0) {
aapsLogger.debug("USER ENTRY: PRIME BOLUS $insulinAfterConstraints")
requestPrimeBolus(insulinAfterConstraints, notes)
}
if (siteChange) {
aapsLogger.debug("USER ENTRY: SITE CHANGE")
generateCareportalEvent(CareportalEvent.SITECHANGE, eventTime, notes)
}
if (insulinChange) {
// add a second for case of both checked
aapsLogger.debug("USER ENTRY: INSULIN CHANGE")
generateCareportalEvent(CareportalEvent.INSULINCHANGE, eventTime + 1000, notes)
}
}, null)

View file

@ -154,6 +154,7 @@ class InsulinDialog : DialogFragmentWithDate() {
activity?.let { activity ->
OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.bolus), HtmlHelper.fromHtml(Joiner.on("<br/>").join(actions)), Runnable {
if (eatingSoonChecked) {
aapsLogger.debug("USER ENTRY: TEMPTARGET EATING SOON $eatingSoonTT duration: $eatingSoonTTDuration")
val tempTarget = TempTarget()
.date(System.currentTimeMillis())
.duration(eatingSoonTTDuration)
@ -171,9 +172,11 @@ class InsulinDialog : DialogFragmentWithDate() {
detailedBolusInfo.source = Source.USER
detailedBolusInfo.notes = notes
if (recordOnlyChecked) {
aapsLogger.debug("USER ENTRY: BOLUS RECORD ONLY $insulinAfterConstraints")
detailedBolusInfo.date = time
activePlugin.activeTreatments.addToHistoryTreatment(detailedBolusInfo, false)
} else {
aapsLogger.debug("USER ENTRY: BOLUS $insulinAfterConstraints")
detailedBolusInfo.date = DateUtil.now()
commandQueue.bolus(detailedBolusInfo, object : Callback() {
override fun run() {

View file

@ -102,6 +102,7 @@ class ProfileSwitchDialog : DialogFragmentWithDate() {
activity?.let { activity ->
OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.careportal_profileswitch), HtmlHelper.fromHtml(Joiner.on("<br/>").join(actions)), Runnable {
aapsLogger.debug("USER ENTRY: PROFILE SWITCH $profile percent: $percent timeshift: $timeShift duration: $duration")
treatmentsPlugin.doProfileSwitch(profileStore, profile, duration.toInt(), percent, timeShift, eventTime)
})
}

View file

@ -114,10 +114,13 @@ class TempBasalDialog : DialogFragmentWithDate() {
}
}
}
if (isPercentPump)
if (isPercentPump) {
aapsLogger.debug("USER ENTRY: TEMP BASAL $percent% duration: $durationInMinutes")
commandQueue.tempBasalPercent(percent, durationInMinutes, true, profile, callback)
else
} else {
aapsLogger.debug("USER ENTRY: TEMP BASAL $absolute duration: $durationInMinutes")
commandQueue.tempBasalAbsolute(absolute, durationInMinutes, true, profile, callback)
}
})
}
return true

View file

@ -133,6 +133,7 @@ class TempTargetDialog : DialogFragmentWithDate() {
activity?.let { activity ->
OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.careportal_temporarytarget), HtmlHelper.fromHtml(Joiner.on("<br/>").join(actions)), Runnable {
aapsLogger.debug("USER ENTRY: TEMP TARGET $target duration: $duration")
if (target == 0.0 || duration == 0.0) {
val tempTarget = TempTarget()
.date(eventTime)

View file

@ -109,6 +109,7 @@ class TreatmentDialog : DialogFragmentWithDate() {
if (insulinAfterConstraints > 0 || carbsAfterConstraints > 0) {
activity?.let { activity ->
OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.overview_treatment_label), HtmlHelper.fromHtml(Joiner.on("<br/>").join(actions)), Runnable {
aapsLogger.debug("USER ENTRY: BOLUS insulin $insulin carbs: $carbs")
val detailedBolusInfo = DetailedBolusInfo()
if (insulinAfterConstraints == 0.0) detailedBolusInfo.eventType = CareportalEvent.CARBCORRECTION
if (carbsAfterConstraints == 0) detailedBolusInfo.eventType = CareportalEvent.CORRECTIONBOLUS

View file

@ -18,6 +18,7 @@ import info.nightscout.androidaps.events.*
import info.nightscout.androidaps.historyBrowser.HistoryBrowseActivity
import info.nightscout.androidaps.interfaces.ActivePluginProvider
import info.nightscout.androidaps.interfaces.CommandQueueProvider
import info.nightscout.androidaps.logging.L
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
import info.nightscout.androidaps.plugins.general.actions.defs.CustomAction
@ -26,14 +27,15 @@ import info.nightscout.androidaps.queue.Callback
import info.nightscout.androidaps.utils.FabricPrivacy
import info.nightscout.androidaps.utils.OKDialog
import info.nightscout.androidaps.utils.SingleClickButton
import info.nightscout.androidaps.utils.sharedPreferences.SP
import info.nightscout.androidaps.utils.extensions.plusAssign
import info.nightscout.androidaps.utils.resources.ResourceHelper
import info.nightscout.androidaps.utils.sharedPreferences.SP
import info.nightscout.androidaps.utils.toVisibility
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import kotlinx.android.synthetic.main.actions_fragment.*
import kotlinx.android.synthetic.main.careportal_stats_fragment.*
import org.slf4j.LoggerFactory
import java.util.*
import javax.inject.Inject
@ -47,6 +49,7 @@ class ActionsFragment : DaggerFragment() {
@Inject lateinit var fabricPrivacy: FabricPrivacy
@Inject lateinit var activePlugin: ActivePluginProvider
@Inject lateinit var commandQueue: CommandQueueProvider
private val log = LoggerFactory.getLogger(L.CORE)
private var disposable: CompositeDisposable = CompositeDisposable()
@ -77,6 +80,7 @@ class ActionsFragment : DaggerFragment() {
}
actions_extendedbolus_cancel.setOnClickListener {
if (activePlugin.activeTreatments.isInHistoryExtendedBoluslInProgress) {
log.debug("USER ENTRY: CANCEL EXTENDED BOLUS")
commandQueue.cancelExtended(object : Callback() {
override fun run() {
if (!result.success) {
@ -96,6 +100,7 @@ class ActionsFragment : DaggerFragment() {
}
actions_canceltempbasal.setOnClickListener {
if (activePlugin.activeTreatments.isTempBasalInProgress) {
log.debug("USER ENTRY: CANCEL TEMP BASAL")
commandQueue.cancelTempBasal(true, object : Callback() {
override fun run() {
if (!result.success) {

View file

@ -685,6 +685,7 @@ public class OverviewFragment extends DaggerFragment implements View.OnClickList
if (profile == null)
return true;
if (item.getTitle().equals(resourceHelper.gs(R.string.disableloop))) {
aapsLogger.debug("USER ENTRY: LOOP DISABLED");
loopPlugin.setPluginEnabled(PluginType.LOOP, false);
loopPlugin.setFragmentVisible(PluginType.LOOP, false);
configBuilderPlugin.storeSettings("DisablingLoop");
@ -700,6 +701,7 @@ public class OverviewFragment extends DaggerFragment implements View.OnClickList
loopPlugin.createOfflineEvent(24 * 60); // upload 24h, we don't know real duration
return true;
} else if (item.getTitle().equals(resourceHelper.gs(R.string.enableloop))) {
aapsLogger.debug("USER ENTRY: LOOP ENABLED");
loopPlugin.setPluginEnabled(PluginType.LOOP, true);
loopPlugin.setFragmentVisible(PluginType.LOOP, true);
configBuilderPlugin.storeSettings("EnablingLoop");
@ -708,6 +710,7 @@ public class OverviewFragment extends DaggerFragment implements View.OnClickList
return true;
} else if (item.getTitle().equals(resourceHelper.gs(R.string.resume)) ||
item.getTitle().equals(resourceHelper.gs(R.string.reconnect))) {
aapsLogger.debug("USER ENTRY: RESUME");
loopPlugin.suspendTo(0L);
updateGUI("suspendmenu");
configBuilderPlugin.getCommandQueue().cancelTempBasal(true, new Callback() {
@ -722,39 +725,48 @@ public class OverviewFragment extends DaggerFragment implements View.OnClickList
loopPlugin.createOfflineEvent(0);
return true;
} else if (item.getTitle().equals(resourceHelper.gs(R.string.suspendloopfor1h))) {
aapsLogger.debug("USER ENTRY: SUSPEND 1h");
loopPlugin.suspendLoop(60);
updateGUI("suspendmenu");
return true;
} else if (item.getTitle().equals(resourceHelper.gs(R.string.suspendloopfor2h))) {
aapsLogger.debug("USER ENTRY: SUSPEND 2h");
loopPlugin.suspendLoop(120);
updateGUI("suspendmenu");
return true;
} else if (item.getTitle().equals(resourceHelper.gs(R.string.suspendloopfor3h))) {
aapsLogger.debug("USER ENTRY: SUSPEND 3h");
loopPlugin.suspendLoop(180);
updateGUI("suspendmenu");
return true;
} else if (item.getTitle().equals(resourceHelper.gs(R.string.suspendloopfor10h))) {
aapsLogger.debug("USER ENTRY: SUSPEND 10h");
loopPlugin.suspendLoop(600);
updateGUI("suspendmenu");
return true;
} else if (item.getTitle().equals(resourceHelper.gs(R.string.disconnectpumpfor15m))) {
aapsLogger.debug("USER ENTRY: DISCONNECT 15m");
loopPlugin.disconnectPump(15, profile);
updateGUI("suspendmenu");
return true;
} else if (item.getTitle().equals(resourceHelper.gs(R.string.disconnectpumpfor30m))) {
aapsLogger.debug("USER ENTRY: DISCONNECT 30m");
loopPlugin.disconnectPump(30, profile);
updateGUI("suspendmenu");
return true;
} else if (item.getTitle().equals(resourceHelper.gs(R.string.disconnectpumpfor1h))) {
aapsLogger.debug("USER ENTRY: DISCONNECT 1h");
loopPlugin.disconnectPump(60, profile);
sp.putBoolean(R.string.key_objectiveusedisconnect, true);
updateGUI("suspendmenu");
return true;
} else if (item.getTitle().equals(resourceHelper.gs(R.string.disconnectpumpfor2h))) {
aapsLogger.debug("USER ENTRY: DISCONNECT 2h");
loopPlugin.disconnectPump(120, profile);
updateGUI("suspendmenu");
return true;
} else if (item.getTitle().equals(resourceHelper.gs(R.string.disconnectpumpfor3h))) {
aapsLogger.debug("USER ENTRY: DISCONNECT 3h");
loopPlugin.disconnectPump(180, profile);
updateGUI("suspendmenu");
return true;
@ -772,6 +784,7 @@ public class OverviewFragment extends DaggerFragment implements View.OnClickList
if (manager != null)
pvd.show(manager, "ProfileViewDialog");
} else if (item.getTitle().equals(resourceHelper.gs(R.string.eatingsoon))) {
aapsLogger.debug("USER ENTRY: TEMP TARGET EATING SOON");
double target = Profile.toMgdl(defaultValueHelper.determineEatingSoonTT(), ProfileFunctions.getSystemUnits());
TempTarget tempTarget = new TempTarget()
.date(System.currentTimeMillis())
@ -782,6 +795,7 @@ public class OverviewFragment extends DaggerFragment implements View.OnClickList
.high(target);
treatmentsPlugin.addToHistoryTempTarget(tempTarget);
} else if (item.getTitle().equals(resourceHelper.gs(R.string.activity))) {
aapsLogger.debug("USER ENTRY: TEMP TARGET ACTIVITY");
double target = Profile.toMgdl(defaultValueHelper.determineActivityTT(), ProfileFunctions.getSystemUnits());
TempTarget tempTarget = new TempTarget()
.date(now())
@ -792,6 +806,7 @@ public class OverviewFragment extends DaggerFragment implements View.OnClickList
.high(target);
treatmentsPlugin.addToHistoryTempTarget(tempTarget);
} else if (item.getTitle().equals(resourceHelper.gs(R.string.hypo))) {
aapsLogger.debug("USER ENTRY: TEMP TARGET HYPO");
double target = Profile.toMgdl(defaultValueHelper.determineHypoTT(), ProfileFunctions.getSystemUnits());
TempTarget tempTarget = new TempTarget()
.date(now())
@ -806,6 +821,7 @@ public class OverviewFragment extends DaggerFragment implements View.OnClickList
if (manager != null)
new TempTargetDialog().show(manager, "Overview");
} else if (item.getTitle().equals(resourceHelper.gs(R.string.cancel))) {
aapsLogger.debug("USER ENTRY: TEMP TARGET CANCEL");
TempTarget tempTarget = new TempTarget()
.source(Source.USER)
.date(now())
@ -922,6 +938,7 @@ public class OverviewFragment extends DaggerFragment implements View.OnClickList
loopPlugin.invoke("Accept temp button", false);
if (loopPlugin.lastRun != null && loopPlugin.lastRun.lastAPSRun != null && loopPlugin.lastRun.constraintsProcessed.isChangeRequested()) {
OKDialog.showConfirmation(context, resourceHelper.gs(R.string.pump_tempbasal_label), loopPlugin.lastRun.constraintsProcessed.toSpanned(), () -> {
aapsLogger.debug("USER ENTRY: ACCEPT TEMP BASAL");
hideTempRecommendation();
clearNotification();
loopPlugin.acceptChangeRequest();
@ -937,7 +954,7 @@ public class OverviewFragment extends DaggerFragment implements View.OnClickList
final PumpInterface pump = configBuilderPlugin.getActivePump();
final QuickWizardEntry quickWizardEntry = quickWizard.getActive();
if (quickWizardEntry != null && actualBg != null && profile != null && pump != null) {
if (quickWizardEntry != null && actualBg != null && profile != null) {
quickWizardButton.setVisibility(View.VISIBLE);
final BolusWizard wizard = quickWizardEntry.doCalc(profile, profileName, actualBg, true);

View file

@ -313,6 +313,7 @@ class BolusWizard @Inject constructor(
OKDialog.showConfirmation(context, resourceHelper.gs(R.string.boluswizard), confirmMessage, Runnable {
if (insulinAfterConstraints > 0 || carbs > 0) {
if (useSuperBolus) {
aapsLogger.debug("USER ENTRY: SUPERBOLUS TBR")
if (loopPlugin.isEnabled(PluginType.LOOP)) {
loopPlugin.superBolusTo(System.currentTimeMillis() + 2 * 60L * 60 * 1000)
rxBus.send(EventRefreshOverview("WizardDialog"))
@ -358,7 +359,8 @@ class BolusWizard @Inject constructor(
detailedBolusInfo.boluscalc = nsJSON()
detailedBolusInfo.source = Source.USER
detailedBolusInfo.notes = notes
if (detailedBolusInfo.insulin > 0 || pump.pumpDescription.storesCarbInfo == true) {
aapsLogger.debug("USER ENTRY: BOLUS insulin $insulinAfterConstraints carbs: $carbs")
if (detailedBolusInfo.insulin > 0 || pump.pumpDescription.storesCarbInfo) {
commandQueue.bolus(detailedBolusInfo, object : Callback() {
override fun run() {
if (!result.success) {

View file

@ -946,6 +946,7 @@
<string name="startobjective">Starte deine erste Zielsetzung</string>
<string name="permission">Berechtigung</string>
<string name="askforpermission">Nach Berechtigung fragen</string>
<string name="needsystemwindowpermission">Die App benötigt die Systemberechtigung für App-Benachrichtigungen</string>
<string name="needlocationpermission">AndroidAPS benötigt die Standortfreigabe für den BT-Scan.</string>
<string name="needstoragepermission">AndroidAPS benötigt Zugriff auf den Speicher, um Log-Dateien speichern zu können.</string>
<string name="request">Anfordern</string>
@ -1450,4 +1451,8 @@ Unerwartetes Verhalten.</string>
<string name="phonechecker">\"PhoneChecker\"</string>
<string name="chartmenu">Diagrammmenü</string>
<string name="sensitivity_short">AS</string>
<string name="loop_smbrequest_time_label">SMB Anfragezeit</string>
<string name="loop_smbexecution_time_label">SMB Ausführungszeit</string>
<string name="loop_tbrrequest_time_label">Temp. BR Anfragezeit</string>
<string name="loop_tbrexecution_time_label">Temp. BR Ausführungszeit</string>
</resources>

View file

@ -1449,4 +1449,8 @@
<string name="phonechecker">\"PhoneChecker\"</string>
<string name="chartmenu">Menu grafico</string>
<string name="sensitivity_short">AS</string>
<string name="loop_smbrequest_time_label">Tempo richiesta SMB</string>
<string name="loop_smbexecution_time_label">Tempo esecuzione SMB</string>
<string name="loop_tbrrequest_time_label">Tempo richiesta basale temporanea</string>
<string name="loop_tbrexecution_time_label">Tempo esecuzione basale temporanea</string>
</resources>

View file

@ -131,12 +131,12 @@
<string name="isf_profile">변경사항을 적용하는데 프로파일에서 ISF 값 변경하는 것으로 충분합니다.</string>
<string name="isf_hint1">https://androidaps.readthedocs.io/en/latest/CROWDIN/ko/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/CROWDIN/ko/Usage/Profiles.html</string>
<string name="ic_label">Topic: IC(인슐린 대 탄수화물) 비율</string>
<string name="ic_label">주제: IC(인슐린-탄수화물 비)</string>
<string name="ic_increasingvalue">높은 IC 비율은 탄수화물 섭취시 인슐린이 보다 덜 주입되게 합니다.</string>
<string name="ic_decreasingvalue">낮은 IC 비율은 탄수화물 섭취시 인슐린이 보다 덜 주입되게 합니다.</string>
<string name="ic_noeffect">COB가 0 인 경우 IC 비율을 변경하면 혈당을 교정하기 위해 다른 양의 인슐린이 주입됩니다.</string>
<string name="ic_different">Bread Unit을 10g 혹은 12g으로 계산한다면 IC 값도 달라집니다.</string>
<string name="ic_meaning">IC의 의미는 다음과 같습니다: 1U의 인슐린에 대한 적정 Bread Unit 양</string>
<string name="ic_different">빵유닛(Bread Unit)을 10g 혹은 12g으로 계산한다면 IC 값도 달라집니다.</string>
<string name="ic_meaning">IC의 의미는 다음과 같습니다: 1U의 인슐린으로 얼마나 많은 빵유닛(Bread Units)이 처리되는지.</string>
<string name="ic_hint1">https://androidaps.readthedocs.io/en/latest/CROWDIN/ko/Getting-Started/FAQ.html#carbohydrate-to-insulin-ratio-cr-g-u</string>
<string name="profileswitch_label">주제: 프로파일 변경</string>
<string name="profileswitch_pctwillchange">프로파일을 90%로 설정하면 어떻게 됩니까?</string>

View file

@ -28,13 +28,13 @@
<string name="accomplished">완료: %1$s</string>
<string name="objectives_usage_objective">AndroidAPS를 사용하는 방법을 배워봅니다</string>
<string name="objectives_usage_gate">AndroidAPS에서 다양한 작업을 수행해보세요</string>
<string name="objectives_useprofileswitch">10분동안 프로파일 90%를 설정해보세요(개요에서 프로파일명을 길게 눌러보세요)</string>
<string name="objectives_usedisconnectpump">샤워한다고 가정하고 펌프를 1시간 동안 펌프를 일시중지하세요 (개요에서 Open Loop를 길게 눌러보세요)</string>
<string name="objectives_useprofileswitch">10분동안 프로파일 90%를 설정해보세요(에서 프로파일명을 길게 눌러보세요)</string>
<string name="objectives_usedisconnectpump">샤워한다고 가정하고 펌프를 1시간 동안 펌프를 일시중지하세요 (에서 Open Loop를 길게 눌러보세요)</string>
<string name="objectives_usereconnectpump">... 그리고 같은 방법으로 펌프를 재연결하세요</string>
<string name="objectives_usetemptarget">10분의 사용자정의 임시 목표를 생성해 보세요 (개요에서 본인의 현재 목표혈당을 길게 눌러보세요)</string>
<string name="objectives_usetemptarget">사용자정의 임시 목표를 10분동안 실행해보세요 (홈에서 본인의 현재 목표혈당을 길게 눌러보세요)</string>
<string name="objectives_useactions">구성관리자에서 실행 플러그인을 활성화하고 메뉴에서 표시되게 합니다</string>
<string name="objectives_useloop">Loop 플러그인 내용을 표시합니다</string>
<string name="objectives_usescale">개요의 혈당 차트를 길게 눌러 차트 시간을 변경하세요</string>
<string name="objectives_usescale">의 혈당 차트를 길게 눌러 차트 시간을 변경하세요</string>
<string name="objectives_button_enter">입력</string>
<string name="enter_code_obtained_from_developers_to_bypass_the_rest_of_objectives">당신이 OpenAPS 사용자였고 당신의 NS가 최소 3개월의 Loop 데이터가 저장되어 있다면, objectives@androidaps.org로 메일을 보내 당신의 NS주소를 알려주시고 목표를 건너뛸 수 있는 코드를 요청하세요. 그리고 개발자로 부터 받은 코드를 입력하세요.</string>
<string name="codeaccepted">코드 인증</string>

View file

@ -273,7 +273,7 @@
<string name="smscommunicator_tt_canceled">임시 목표 취소가 완료되었습니다</string>
<string name="bolusdelivering">%1$.2fU 주입중</string>
<string name="smscommunicator_remotecommandsallowed">SMS 원격 명령 사용하기</string>
<string name="glucosetype_finger"></string>
<string name="glucosetype_finger"></string>
<string name="glucosetype_sensor">센서</string>
<string name="manual">수동</string>
<string name="careportal_temporarytarget">임시 목표</string>
@ -641,7 +641,7 @@
<string name="enableuam_summary">알리지 않은 식사 감지</string>
<string name="insulin_oref_peak">IOB 커브 피크 시간</string>
<string name="insulin_peak_time">피크 시간 [min]</string>
<string name="free_peak_oref">자유-피크 Oref</string>
<string name="free_peak_oref">사용자지정-피크 Oref</string>
<string name="rapid_acting_oref">초속효성 Oref</string>
<string name="ultrarapid_oref">초-초속효성 Oref</string>
<string name="dia_too_short">DIA %1$f는 너무 짧습니다. 대신 %2$f을 사용하세요!</string>
@ -783,15 +783,15 @@
<string name="ago"></string>
<string name="format_hours">%1$.2f 시간</string>
<string name="format_mins">%1$d 분</string>
<string name="enablesmbalways">항상 SMB를 사용합니다.</string>
<string name="enablesmbalways">항상 SMB 사용하기</string>
<string name="enablesmbalways_summary">Bolus와 독립적으로 항상 SMB를 사용합니다. G5처럼 잘 필터된 혈당소스와만 사용이 가능합니다.</string>
<string name="enablesmbaftercarbs">탄수화물 이후 SMB를 사용합니다.</string>
<string name="enablesmbaftercarbs_summary">탄수화물 이후 6시간동안 SMB를 사용합니다, 0 COB이라도 적용됩니다. G5처럼 잘 필터된 혈당소스와만 사용이 가능합니다.</string>
<string name="enablesmbwithcob">COB와 SMB를 사용합니다.</string>
<string name="enablesmbwithcob_summary">활성화된 COB가 있으면 SMB를 사용합니다.</string>
<string name="enablesmbwithtemptarget">임시 목표와 SMB를 사용합니다.</string>
<string name="enablesmbwithtemptarget">임시 목표에서 SMB 사용하기</string>
<string name="enablesmbwithtemptarget_summary">활성화된 임시 목표(식사직전, 운동)가 있으면 SMB를 사용합니다.</string>
<string name="enablesmbwithhightemptarget">높은임시 목표와 SMB를 사용합니다.</string>
<string name="enablesmbwithhightemptarget">높은 임시 목표에서 SMB 사용하기</string>
<string name="enablesmbwithhightemptarget_summary">활성화된 높은 임시 목표(운동)가 있으면 SMB를 사용합니다.</string>
<string name="let_temp_basal_run">임시Basal 허용</string>
<string name="mute">음소거</string>
@ -946,6 +946,7 @@
<string name="startobjective">첫번째 목표를 시작하세요.</string>
<string name="permission">권한</string>
<string name="askforpermission">권한 요청하기</string>
<string name="needsystemwindowpermission">알림에 대한 시스템 창 권한이 필요합니다</string>
<string name="needlocationpermission">블루투스 스캔을 위해 위치 권한이 필요로 합니다.</string>
<string name="needstoragepermission">로그 파일을 저장하기 위해 저장공간 권한이 필요로 합니다.</string>
<string name="request">요청</string>
@ -1449,4 +1450,8 @@
<string name="phonechecker">\"전화확인\"</string>
<string name="chartmenu">차트 메뉴</string>
<string name="sensitivity_short">AS</string>
<string name="loop_smbrequest_time_label">SMB 요청시간</string>
<string name="loop_smbexecution_time_label">SMB 실행시간</string>
<string name="loop_tbrrequest_time_label">임시 Basal 요청시간</string>
<string name="loop_tbrexecution_time_label">임시 Basal 실행시간</string>
</resources>

View file

@ -1447,4 +1447,6 @@
<string name="closed_loop_disabled_with_eb">Closed Loop desabilitado por causa da execução do Bólus Estendido</string>
<string name="extended_bolus_short">BE</string>
<string name="phonechecker">\"VerificadorTelefone\"</string>
<string name="chartmenu">Menu do Gráfico</string>
<string name="sensitivity_short">AS</string>
</resources>

View file

@ -948,6 +948,7 @@ Context | Edit Context</string>
<string name="startobjective">Начните первую Цель</string>
<string name="permission">Права доступа</string>
<string name="askforpermission">Запросить права доступа</string>
<string name="needsystemwindowpermission">Приложению требуется разрешение системного окна для уведомлений</string>
<string name="needlocationpermission">Приложение нуждается в разрешении на доступ к определению местоположения для сканирования bluetooth</string>
<string name="needstoragepermission">Приложение нуждается в разрешении доступа к хранению данных для хранения лог-файлов</string>
<string name="request">Запрос</string>
@ -1451,4 +1452,8 @@ Context | Edit Context</string>
<string name="phonechecker">\"PhoneChecker\"</string>
<string name="chartmenu">Меню графика</string>
<string name="sensitivity_short">Авточувств</string>
<string name="loop_smbrequest_time_label">Время запроса микроболюса SMB</string>
<string name="loop_smbexecution_time_label">Время выполнения микроболюса SMB</string>
<string name="loop_tbrrequest_time_label">Время запроса временной базальной скорости</string>
<string name="loop_tbrexecution_time_label">Время выполнения временной базальной скорости</string>
</resources>

View file

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources></resources>

View file

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources></resources>

View file

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources></resources>

View file

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources></resources>

View file

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources></resources>

View file

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources></resources>

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources>
<!-- <string name="fi_lang" translatable="false">Finnish</string> -->
<!-- <string name="he_lang" translatable="false">Hebrew</string> -->
<!-- <string name="ga_lang" translatable="false">Irish</string> -->
<!-- <string name="ja_lang" translatable="false">Japanese</string> -->
<!-- Pump Abstract -->
<!-- Medtronic (MDT) - Base -->
<!-- MDT Configuration -->
<!-- RL BLE Scanning -->
<!-- RL Status Page -->
<!-- RL State -->
<!-- RL Errors -->
<!-- RL Target Device -->
<!-- MDT Errors -->
<!-- MDT History -->
<!-- MDT Pump Status -->
<!-- <string name="medtronic_cmd_profile_not_set">Remote Basal profile setting is not supported. Please modify Basal profile on your pump manually.</string> -->
</resources>

View file

@ -35,7 +35,7 @@
<string name="pref_show_ago">Afficher Min Passées</string>
<string name="pref_dark" comment="Enables dark visual theme">Sombre</string>
<string name="pref_highlight_basals">Surbrillance Basale</string>
<string name="pref_matching_divider" comment="To make divider match its background with background of whole watchface">Séparateur Noir</string>
<string name="pref_matching_divider" comment="To make divider match its background with background of whole watchface">Séparateur Invisible</string>
<string name="pref_chart_timeframe">Echelle Graphique</string>
<string name="pref_1_hour">1 heure</string>
<string name="pref_2_hours">2 heures</string>

View file

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources></resources>