Merge branch 'dev' into omnipod_eros_bart

This commit is contained in:
Bart Sopers 2019-09-16 00:59:32 +02:00
commit b9d0c8f875
118 changed files with 3169 additions and 3153 deletions

View file

@ -109,7 +109,7 @@ android {
targetSdkVersion 28
multiDexEnabled true
versionCode 1500
version "2.4-dev-e"
version "2.4-dev-f"
buildConfigField "String", "VERSION", '"' + version + '"'
buildConfigField "String", "BUILDVERSION", '"' + generateGitBuild() + '-' + generateDate() + '"'
buildConfigField "String", "REMOTE", '"' + generateGitRemote() + '"'
@ -225,12 +225,12 @@ dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.google.android.gms:play-services-wearable:17.0.0'
implementation 'com.google.firebase:firebase-core:17.1.0'
implementation 'com.google.firebase:firebase-core:17.2.0'
implementation("com.crashlytics.sdk.android:crashlytics:2.9.9@aar") {
transitive = true;
}
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.legacy:legacy-support-v13:1.0.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.cardview:cardview:1.0.0'

View file

@ -40,7 +40,7 @@ import info.nightscout.androidaps.plugins.constraints.dstHelper.DstHelperPlugin;
import info.nightscout.androidaps.plugins.constraints.objectives.ObjectivesPlugin;
import info.nightscout.androidaps.plugins.constraints.safety.SafetyPlugin;
import info.nightscout.androidaps.plugins.constraints.storage.StorageConstraintPlugin;
import info.nightscout.androidaps.plugins.general.actions.ActionsFragment;
import info.nightscout.androidaps.plugins.general.actions.ActionsPlugin;
import info.nightscout.androidaps.plugins.general.automation.AutomationPlugin;
import info.nightscout.androidaps.plugins.general.careportal.CareportalPlugin;
import info.nightscout.androidaps.plugins.general.food.FoodPlugin;
@ -172,7 +172,7 @@ public class MainApp extends Application {
// Register all tabs in app here
pluginsList.add(OverviewPlugin.getPlugin());
pluginsList.add(IobCobCalculatorPlugin.getPlugin());
if (Config.ACTION) pluginsList.add(ActionsFragment.getPlugin());
if (Config.ACTION) pluginsList.add(ActionsPlugin.INSTANCE);
pluginsList.add(InsulinOrefRapidActingPlugin.getPlugin());
pluginsList.add(InsulinOrefUltraRapidActingPlugin.getPlugin());
pluginsList.add(InsulinOrefFreePeakPlugin.getPlugin());
@ -205,7 +205,7 @@ public class MainApp extends Application {
if (Config.SAFETY) pluginsList.add(VersionCheckerPlugin.INSTANCE);
if (Config.SAFETY) pluginsList.add(StorageConstraintPlugin.getPlugin());
if (Config.SAFETY) pluginsList.add(SignatureVerifier.getPlugin());
if (Config.APS) pluginsList.add(ObjectivesPlugin.getPlugin());
if (Config.APS) pluginsList.add(ObjectivesPlugin.INSTANCE);
pluginsList.add(SourceXdripPlugin.getPlugin());
pluginsList.add(SourceNSClientPlugin.getPlugin());
pluginsList.add(SourceMM640gPlugin.getPlugin());
@ -221,11 +221,9 @@ public class MainApp extends Application {
pluginsList.add(StatuslinePlugin.initPlugin(this));
pluginsList.add(PersistentNotificationPlugin.getPlugin());
pluginsList.add(NSClientPlugin.getPlugin());
if (engineeringMode)
pluginsList.add(TidepoolPlugin.INSTANCE);
// if (engineeringMode) pluginsList.add(TidepoolPlugin.INSTANCE);
pluginsList.add(MaintenancePlugin.initPlugin(this));
if (engineeringMode)
pluginsList.add(AutomationPlugin.INSTANCE);
pluginsList.add(AutomationPlugin.INSTANCE);
pluginsList.add(ConfigBuilderPlugin.getPlugin());

View file

@ -11,6 +11,7 @@ import org.slf4j.LoggerFactory;
import java.text.DecimalFormat;
import java.util.TimeZone;
import info.nightscout.androidaps.Config;
import info.nightscout.androidaps.Constants;
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
@ -228,8 +229,10 @@ public class Profile {
for (int index = 0; index < basal_v.size(); index++) {
long secondsFromMidnight = basal_v.keyAt(index);
if (notify && secondsFromMidnight % 3600 != 0) {
Notification notification = new Notification(Notification.BASAL_PROFILE_NOT_ALIGNED_TO_HOURS, String.format(MainApp.gs(R.string.basalprofilenotaligned), from), Notification.NORMAL);
MainApp.bus().post(new EventNewNotification(notification));
if (Config.APS) {
Notification notification = new Notification(Notification.BASAL_PROFILE_NOT_ALIGNED_TO_HOURS, String.format(MainApp.gs(R.string.basalprofilenotaligned), from), Notification.NORMAL);
MainApp.bus().post(new EventNewNotification(notification));
}
}
}
}

View file

@ -93,12 +93,22 @@ public class CareportalEvent implements DataPointWithLabelInterface, Interval {
return (System.currentTimeMillis() - date) / (60 * 60 * 1000.0);
}
public String age() {
public String age(boolean useShortText) {
Map<TimeUnit, Long> diff = computeDiff(date, System.currentTimeMillis());
if (OverviewFragment.shorttextmode)
return diff.get(TimeUnit.DAYS) + "d" + diff.get(TimeUnit.HOURS) + "h";
else
return diff.get(TimeUnit.DAYS) + " " + MainApp.gs(R.string.days) + " " + diff.get(TimeUnit.HOURS) + " " + MainApp.gs(R.string.hours);
String days = " " + MainApp.gs(R.string.days) + " ";
String hours = " " + MainApp.gs(R.string.hours) + " ";
if (useShortText) {
days = "d";
hours = "h";
}
return diff.get(TimeUnit.DAYS) + days + diff.get(TimeUnit.HOURS) + hours;
}
public String age() {
return age(OverviewFragment.shorttextmode);
}
public boolean isOlderThan(double hours) {

View file

@ -12,10 +12,7 @@ import info.nightscout.androidaps.interfaces.Constraint
import info.nightscout.androidaps.plugins.aps.loop.events.EventLoopSetLastRunGui
import info.nightscout.androidaps.plugins.aps.loop.events.EventLoopUpdateGui
import info.nightscout.androidaps.plugins.bus.RxBus
import info.nightscout.androidaps.utils.DateUtil
import info.nightscout.androidaps.utils.FabricPrivacy
import info.nightscout.androidaps.utils.HtmlHelper
import info.nightscout.androidaps.utils.plusAssign
import info.nightscout.androidaps.utils.*
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import kotlinx.android.synthetic.main.loop_fragment.*
@ -61,6 +58,7 @@ class LoopFragment : Fragment() {
})
updateGUI()
SP.putBoolean(R.string.key_objectiveuseloop, true)
}
@Synchronized

View file

@ -51,7 +51,6 @@ import info.nightscout.androidaps.plugins.aps.loop.events.EventNewOpenLoopNotifi
import info.nightscout.androidaps.plugins.bus.RxBus;
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin;
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctions;
import info.nightscout.androidaps.plugins.constraints.objectives.ObjectivesPlugin;
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload;
import info.nightscout.androidaps.plugins.general.wear.ActionStringHandler;
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.events.EventAutosensCalculationFinished;
@ -291,7 +290,7 @@ public class LoopPlugin extends PluginBase {
Profile profile = ProfileFunctions.getInstance().getProfile();
if (!ProfileFunctions.getInstance().isProfileValid("Loop")) {
if (profile == null || !ProfileFunctions.getInstance().isProfileValid("Loop")) {
if (L.isEnabled(L.APS))
log.debug(MainApp.gs(R.string.noprofileselected));
RxBus.INSTANCE.send(new EventLoopSetLastRunGui(MainApp.gs(R.string.noprofileselected)));
@ -471,11 +470,7 @@ public class LoopPlugin extends PluginBase {
lastRun.lastEnact = new Date();
lastRun.lastOpenModeAccept = new Date();
NSUpload.uploadDeviceStatus();
ObjectivesPlugin objectivesPlugin = MainApp.getSpecificPlugin(ObjectivesPlugin.class);
if (objectivesPlugin != null) {
ObjectivesPlugin.getPlugin().manualEnacts++;
ObjectivesPlugin.getPlugin().saveProgress();
}
SP.incInt(R.string.key_ObjectivesmanualEnacts);
}
MainApp.bus().post(new EventAcceptOpenLoopChange());
}

View file

@ -18,6 +18,8 @@ import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.nio.charset.StandardCharsets;
import javax.annotation.Nullable;
import info.nightscout.androidaps.Constants;
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
@ -60,6 +62,7 @@ public class DetermineBasalAdapterAMAJS {
mScriptReader = scriptReader;
}
@Nullable
public DetermineBasalResultAMA invoke() {
if (L.isEnabled(L.APS)) {

View file

@ -29,6 +29,7 @@ import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus;
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin;
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin;
import info.nightscout.androidaps.utils.DateUtil;
import info.nightscout.androidaps.utils.FabricPrivacy;
import info.nightscout.androidaps.utils.HardLimits;
import info.nightscout.androidaps.utils.Profiler;
import info.nightscout.androidaps.utils.Round;
@ -193,7 +194,8 @@ public class OpenAPSAMAPlugin extends PluginBase implements APSInterface {
isTempTarget
);
} catch (JSONException e) {
log.error("Unable to set data: " + e.toString());
FabricPrivacy.logException(e);
return;
}
@ -201,22 +203,30 @@ public class OpenAPSAMAPlugin extends PluginBase implements APSInterface {
if (L.isEnabled(L.APS))
Profiler.log(log, "AMA calculation", start);
// Fix bug determine basal
if (determineBasalResultAMA.rate == 0d && determineBasalResultAMA.duration == 0 && !TreatmentsPlugin.getPlugin().isTempBasalInProgress())
determineBasalResultAMA.tempBasalRequested = false;
if (determineBasalResultAMA == null) {
if (L.isEnabled(L.APS))
log.error("SMB calculation returned null");
lastDetermineBasalAdapterAMAJS = null;
lastAPSResult = null;
lastAPSRun = 0;
} else {
if (determineBasalResultAMA.rate == 0d && determineBasalResultAMA.duration == 0 && !TreatmentsPlugin.getPlugin().isTempBasalInProgress())
determineBasalResultAMA.tempBasalRequested = false;
determineBasalResultAMA.iob = iobArray[0];
determineBasalResultAMA.iob = iobArray[0];
long now = System.currentTimeMillis();
long now = System.currentTimeMillis();
try {
determineBasalResultAMA.json.put("timestamp", DateUtil.toISOString(now));
} catch (JSONException e) {
log.error("Unhandled exception", e);
try {
determineBasalResultAMA.json.put("timestamp", DateUtil.toISOString(now));
} catch (JSONException e) {
log.error("Unhandled exception", e);
}
lastDetermineBasalAdapterAMAJS = determineBasalAdapterAMAJS;
lastAPSResult = determineBasalResultAMA;
lastAPSRun = now;
}
lastDetermineBasalAdapterAMAJS = determineBasalAdapterAMAJS;
lastAPSResult = determineBasalResultAMA;
lastAPSRun = now;
RxBus.INSTANCE.send(new EventOpenAPSUpdateGui());
//deviceStatus.suggested = determineBasalResultAMA.json;

View file

@ -16,6 +16,8 @@ import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.nio.charset.StandardCharsets;
import javax.annotation.Nullable;
import info.nightscout.androidaps.Constants;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus;
@ -48,6 +50,7 @@ public class DetermineBasalAdapterMAJS {
mScriptReader = scriptReader;
}
@Nullable
public DetermineBasalResultMA invoke() {
DetermineBasalResultMA determineBasalResultMA = null;

View file

@ -26,6 +26,7 @@ import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctions;
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus;
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin;
import info.nightscout.androidaps.utils.DateUtil;
import info.nightscout.androidaps.utils.FabricPrivacy;
import info.nightscout.androidaps.utils.HardLimits;
import info.nightscout.androidaps.utils.Profiler;
import info.nightscout.androidaps.utils.Round;
@ -170,7 +171,8 @@ public class OpenAPSMAPlugin extends PluginBase implements APSInterface {
try {
determineBasalAdapterMAJS.setData(profile, maxIob, maxBasal, minBg, maxBg, targetBg, ConfigBuilderPlugin.getPlugin().getActivePump().getBaseBasalRate(), iobTotal, glucoseStatus, mealData);
} catch (JSONException e) {
log.error("Unhandled exception", e);
FabricPrivacy.logException(e);
return;
}
if (L.isEnabled(L.APS))
Profiler.log(log, "MA calculation", start);
@ -179,21 +181,29 @@ public class OpenAPSMAPlugin extends PluginBase implements APSInterface {
long now = System.currentTimeMillis();
DetermineBasalResultMA determineBasalResultMA = determineBasalAdapterMAJS.invoke();
// Fix bug determinef basal
if (determineBasalResultMA.rate == 0d && determineBasalResultMA.duration == 0 && !TreatmentsPlugin.getPlugin().isTempBasalInProgress())
determineBasalResultMA.tempBasalRequested = false;
if (determineBasalResultMA == null) {
if (L.isEnabled(L.APS))
log.error("MA calculation returned null");
lastDetermineBasalAdapterMAJS = null;
lastAPSResult = null;
lastAPSRun = 0;
} else {
// Fix bug determinef basal
if (determineBasalResultMA.rate == 0d && determineBasalResultMA.duration == 0 && !TreatmentsPlugin.getPlugin().isTempBasalInProgress())
determineBasalResultMA.tempBasalRequested = false;
determineBasalResultMA.iob = iobTotal;
determineBasalResultMA.iob = iobTotal;
try {
determineBasalResultMA.json.put("timestamp", DateUtil.toISOString(now));
} catch (JSONException e) {
log.error("Unhandled exception", e);
try {
determineBasalResultMA.json.put("timestamp", DateUtil.toISOString(now));
} catch (JSONException e) {
log.error("Unhandled exception", e);
}
lastDetermineBasalAdapterMAJS = determineBasalAdapterMAJS;
lastAPSResult = determineBasalResultMA;
lastAPSRun = now;
}
lastDetermineBasalAdapterMAJS = determineBasalAdapterMAJS;
lastAPSResult = determineBasalResultMA;
lastAPSRun = now;
RxBus.INSTANCE.send(new EventOpenAPSUpdateGui());
}

View file

@ -18,6 +18,8 @@ import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.nio.charset.StandardCharsets;
import javax.annotation.Nullable;
import info.nightscout.androidaps.Constants;
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
@ -69,6 +71,7 @@ public class DetermineBasalAdapterSMBJS {
}
@Nullable
public DetermineBasalResultSMB invoke() {

View file

@ -32,6 +32,7 @@ import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus;
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin;
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin;
import info.nightscout.androidaps.utils.DateUtil;
import info.nightscout.androidaps.utils.FabricPrivacy;
import info.nightscout.androidaps.utils.HardLimits;
import info.nightscout.androidaps.utils.Profiler;
import info.nightscout.androidaps.utils.Round;
@ -219,7 +220,7 @@ public class OpenAPSSMBPlugin extends PluginBase implements APSInterface, Constr
advancedFiltering.value()
);
} catch (JSONException e) {
log.error(e.getMessage());
FabricPrivacy.logException(e);
return;
}
@ -228,24 +229,32 @@ public class OpenAPSSMBPlugin extends PluginBase implements APSInterface, Constr
DetermineBasalResultSMB determineBasalResultSMB = determineBasalAdapterSMBJS.invoke();
if (L.isEnabled(L.APS))
Profiler.log(log, "SMB calculation", start);
// TODO still needed with oref1?
// Fix bug determine basal
if (determineBasalResultSMB.rate == 0d && determineBasalResultSMB.duration == 0 && !TreatmentsPlugin.getPlugin().isTempBasalInProgress())
determineBasalResultSMB.tempBasalRequested = false;
if (determineBasalResultSMB == null) {
if (L.isEnabled(L.APS))
log.error("SMB calculation returned null");
lastDetermineBasalAdapterSMBJS = null;
lastAPSResult = null;
lastAPSRun = 0;
} else {
// TODO still needed with oref1?
// Fix bug determine basal
if (determineBasalResultSMB.rate == 0d && determineBasalResultSMB.duration == 0 && !TreatmentsPlugin.getPlugin().isTempBasalInProgress())
determineBasalResultSMB.tempBasalRequested = false;
determineBasalResultSMB.iob = iobArray[0];
determineBasalResultSMB.iob = iobArray[0];
try {
determineBasalResultSMB.json.put("timestamp", DateUtil.toISOString(now));
} catch (JSONException e) {
log.error("Unhandled exception", e);
try {
determineBasalResultSMB.json.put("timestamp", DateUtil.toISOString(now));
} catch (JSONException e) {
log.error("Unhandled exception", e);
}
determineBasalResultSMB.inputConstraints = inputConstraints;
lastDetermineBasalAdapterSMBJS = determineBasalAdapterSMBJS;
lastAPSResult = determineBasalResultSMB;
lastAPSRun = now;
}
determineBasalResultSMB.inputConstraints = inputConstraints;
lastDetermineBasalAdapterSMBJS = determineBasalAdapterSMBJS;
lastAPSResult = determineBasalResultSMB;
lastAPSRun = now;
RxBus.INSTANCE.send(new EventOpenAPSUpdateGui());
//deviceStatus.suggested = determineBasalResultAMA.json;

View file

@ -27,6 +27,7 @@ import info.nightscout.androidaps.plugins.general.overview.dialogs.ErrorHelperAc
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin;
import info.nightscout.androidaps.queue.Callback;
import info.nightscout.androidaps.utils.FabricPrivacy;
import info.nightscout.androidaps.utils.SP;
public class ProfileFunctions {
private static Logger log = LoggerFactory.getLogger(L.PROFILE);
@ -101,7 +102,8 @@ public class ProfileFunctions {
}
public boolean isProfileValid(String from) {
return getProfile() != null && getProfile().isValid(from);
Profile profile = getProfile();
return profile != null && profile.isValid(from);
}
@Nullable
@ -159,6 +161,8 @@ public class ProfileFunctions {
public static void doProfileSwitch(final ProfileStore profileStore, final String profileName, final int duration, final int percentage, final int timeshift) {
ProfileSwitch profileSwitch = prepareProfileSwitch(profileStore, profileName, duration, percentage, timeshift, System.currentTimeMillis());
TreatmentsPlugin.getPlugin().addToHistoryProfileSwitch(profileSwitch);
if (percentage == 90 && duration == 10)
SP.putBoolean(R.string.key_objectiveuseprofileswitch, true);
}
public static void doProfileSwitch(final int duration, final int percentage, final int timeshift) {

View file

@ -1,229 +0,0 @@
package info.nightscout.androidaps.plugins.constraints.objectives;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import androidx.annotation.NonNull;
import androidx.cardview.widget.CardView;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.LinearSmoothScroller;
import androidx.recyclerview.widget.RecyclerView;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.LinearLayout;
import android.widget.TextView;
import java.util.Date;
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.plugins.common.SubscriberFragment;
import info.nightscout.androidaps.plugins.constraints.objectives.objectives.Objective;
import info.nightscout.androidaps.utils.FabricPrivacy;
public class ObjectivesFragment extends SubscriberFragment {
RecyclerView recyclerView;
CheckBox enableFake;
TextView reset;
ObjectivesAdapter objectivesAdapter = new ObjectivesAdapter();
Handler handler = new Handler(Looper.getMainLooper());
private Runnable objectiveUpdater = new Runnable() {
@Override
public void run() {
handler.postDelayed(this, 60 * 1000);
updateGUI();
}
};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
try {
View view = inflater.inflate(R.layout.objectives_fragment, container, false);
recyclerView = view.findViewById(R.id.objectives_recyclerview);
recyclerView.setLayoutManager(new LinearLayoutManager(view.getContext()));
recyclerView.setAdapter(objectivesAdapter);
enableFake = view.findViewById(R.id.objectives_fake);
reset = view.findViewById(R.id.objectives_reset);
enableFake.setOnClickListener(v -> updateGUI());
reset.setOnClickListener(v -> {
ObjectivesPlugin.getPlugin().reset();
ObjectivesPlugin.getPlugin().saveProgress();
recyclerView.getAdapter().notifyDataSetChanged();
scrollToCurrentObjective();
});
scrollToCurrentObjective();
startUpdateTimer();
return view;
} catch (Exception e) {
FabricPrivacy.logException(e);
}
return null;
}
@Override
public synchronized void onDestroyView() {
super.onDestroyView();
handler.removeCallbacks(objectiveUpdater);
}
private void startUpdateTimer() {
handler.removeCallbacks(objectiveUpdater);
for (Objective objective : ObjectivesPlugin.getPlugin().getObjectives()) {
if (objective.isStarted() && !objective.isAccomplished()) {
long timeTillNextMinute = (System.currentTimeMillis() - objective.getStartedOn().getTime()) % (60 * 1000);
handler.postDelayed(objectiveUpdater, timeTillNextMinute);
break;
}
}
}
private void scrollToCurrentObjective() {
for (int i = 0; i < ObjectivesPlugin.getPlugin().getObjectives().size(); i++) {
Objective objective = ObjectivesPlugin.getPlugin().getObjectives().get(i);
if (!objective.isStarted() || !objective.isAccomplished()) {
RecyclerView.SmoothScroller smoothScroller = new LinearSmoothScroller(getContext()) {
@Override
protected int getVerticalSnapPreference() {
return LinearSmoothScroller.SNAP_TO_START;
}
@Override
protected int calculateTimeForScrolling(int dx) {
return super.calculateTimeForScrolling(dx) * 4;
}
};
smoothScroller.setTargetPosition(i);
recyclerView.getLayoutManager().startSmoothScroll(smoothScroller);
break;
}
}
}
private class ObjectivesAdapter extends RecyclerView.Adapter<ObjectivesAdapter.ViewHolder> {
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.objectives_item, parent, false));
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
Objective objective = ObjectivesPlugin.getPlugin().getObjectives().get(position);
holder.title.setText(MainApp.gs(R.string.nth_objective, position + 1));
holder.revert.setVisibility(View.INVISIBLE);
if (objective.getObjective() != 0) {
holder.objective.setVisibility(View.VISIBLE);
holder.objective.setText(MainApp.gs(objective.getObjective()));
} else holder.objective.setVisibility(View.GONE);
if (objective.getGate() != 0) {
holder.gate.setVisibility(View.VISIBLE);
holder.gate.setText(MainApp.gs(objective.getGate()));
} else holder.gate.setVisibility(View.GONE);
if (!objective.isStarted()) {
holder.gate.setTextColor(0xFFFFFFFF);
holder.verify.setVisibility(View.GONE);
holder.progress.setVisibility(View.GONE);
if (position == 0 || ObjectivesPlugin.getPlugin().getObjectives().get(position - 1).isAccomplished())
holder.start.setVisibility(View.VISIBLE);
else holder.start.setVisibility(View.GONE);
} else if (objective.isAccomplished()) {
holder.gate.setTextColor(0xFF4CAF50);
holder.verify.setVisibility(View.GONE);
holder.progress.setVisibility(View.GONE);
holder.start.setVisibility(View.GONE);
} else if (objective.isStarted()) {
holder.gate.setTextColor(0xFFFFFFFF);
holder.verify.setVisibility(View.VISIBLE);
holder.verify.setEnabled(objective.isCompleted() || enableFake.isChecked());
holder.start.setVisibility(View.GONE);
if(objective.isRevertable()) {
holder.revert.setVisibility(View.VISIBLE);
}
holder.progress.setVisibility(View.VISIBLE);
holder.progress.removeAllViews();
for (Objective.Task task : objective.getTasks()) {
if (task.shouldBeIgnored()) continue;
TextView textView = new TextView(holder.progress.getContext());
textView.setTextColor(0xFFFFFFFF);
String basicHTML = "%2$s: <font color=\"%1$s\"><b>%3$s</b></font>";
String formattedHTML = String.format(basicHTML, task.isCompleted() ? "#4CAF50" : "#FF9800", MainApp.gs(task.getTask()), task.getProgress());
textView.setText(Html.fromHtml(formattedHTML));
holder.progress.addView(textView, LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
}
}
holder.verify.setOnClickListener((view) -> {
objective.setAccomplishedOn(new Date());
notifyDataSetChanged();
scrollToCurrentObjective();
startUpdateTimer();
});
holder.start.setOnClickListener((view) -> {
objective.setStartedOn(new Date());
notifyDataSetChanged();
scrollToCurrentObjective();
startUpdateTimer();
});
holder.revert.setOnClickListener((view) -> {
objective.setAccomplishedOn(null);
objective.setStartedOn(null);
if (position > 0) {
Objective prevObj = ObjectivesPlugin.getPlugin().getObjectives().get(position - 1);
prevObj.setAccomplishedOn(null);
}
notifyDataSetChanged();
scrollToCurrentObjective();
});
}
@Override
public int getItemCount() {
return ObjectivesPlugin.getPlugin().getObjectives().size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
public CardView cardView;
public TextView title;
public TextView objective;
public TextView gate;
public LinearLayout progress;
public Button verify;
public Button start;
public Button revert;
public ViewHolder(View itemView) {
super(itemView);
cardView = (CardView) itemView;
title = itemView.findViewById(R.id.objective_title);
objective = itemView.findViewById(R.id.objective_objective);
gate = itemView.findViewById(R.id.objective_gate);
progress = itemView.findViewById(R.id.objective_progress);
verify = itemView.findViewById(R.id.objective_verify);
start = itemView.findViewById(R.id.objective_start);
revert = itemView.findViewById(R.id.objective_back);
}
}
}
@Override
public void updateGUI() {
Activity activity = getActivity();
if (activity != null)
activity.runOnUiThread(() -> {
objectivesAdapter.notifyDataSetChanged();
});
}
}

View file

@ -0,0 +1,268 @@
package info.nightscout.androidaps.plugins.constraints.objectives
import android.graphics.Color
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.view.Gravity
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import android.widget.EditText
import android.widget.LinearLayout
import android.widget.TextView
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.LinearSmoothScroller
import androidx.recyclerview.widget.RecyclerView
import info.nightscout.androidaps.MainApp
import info.nightscout.androidaps.R
import info.nightscout.androidaps.plugins.bus.RxBus
import info.nightscout.androidaps.plugins.constraints.objectives.activities.ObjectivesExamDialog
import info.nightscout.androidaps.plugins.constraints.objectives.events.EventObjectivesUpdateGui
import info.nightscout.androidaps.plugins.constraints.objectives.objectives.Objective.ExamTask
import info.nightscout.androidaps.utils.DateUtil
import info.nightscout.androidaps.utils.FabricPrivacy
import info.nightscout.androidaps.utils.HtmlHelper
import info.nightscout.androidaps.utils.SP
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import kotlinx.android.synthetic.main.objectives_fragment.*
class ObjectivesFragment : Fragment() {
private val objectivesAdapter = ObjectivesAdapter()
private val handler = Handler(Looper.getMainLooper())
private var disposable: CompositeDisposable = CompositeDisposable()
private val objectiveUpdater = object : Runnable {
override fun run() {
handler.postDelayed(this, (60 * 1000).toLong())
updateGUI()
}
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.objectives_fragment, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
objectives_recyclerview.layoutManager = LinearLayoutManager(view.context)
objectives_recyclerview.adapter = objectivesAdapter
objectives_fake.setOnClickListener { updateGUI() }
objectives_reset.setOnClickListener {
ObjectivesPlugin.reset()
objectives_recyclerview.adapter?.notifyDataSetChanged()
scrollToCurrentObjective()
}
scrollToCurrentObjective()
startUpdateTimer()
}
@Synchronized
override fun onResume() {
super.onResume()
disposable.add(RxBus
.toObservable(EventObjectivesUpdateGui::class.java)
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
objectives_recyclerview.adapter?.notifyDataSetChanged()
}, {
FabricPrivacy.logException(it)
})
)
}
@Synchronized
override fun onPause() {
super.onPause()
disposable.clear()
}
@Synchronized
override fun onDestroyView() {
super.onDestroyView()
handler.removeCallbacks(objectiveUpdater)
}
private fun startUpdateTimer() {
handler.removeCallbacks(objectiveUpdater)
for (objective in ObjectivesPlugin.objectives) {
if (objective.isStarted && !objective.isAccomplished) {
val timeTillNextMinute = (System.currentTimeMillis() - objective.startedOn) % (60 * 1000)
handler.postDelayed(objectiveUpdater, timeTillNextMinute)
break
}
}
}
private fun scrollToCurrentObjective() {
for (i in 0 until ObjectivesPlugin.objectives.size) {
val objective = ObjectivesPlugin.objectives[i]
if (!objective.isStarted || !objective.isAccomplished) {
val smoothScroller = object : LinearSmoothScroller(context!!) {
override fun getVerticalSnapPreference(): Int {
return SNAP_TO_START
}
override fun calculateTimeForScrolling(dx: Int): Int {
return super.calculateTimeForScrolling(dx) * 4
}
}
smoothScroller.targetPosition = i
objectives_recyclerview.layoutManager?.startSmoothScroll(smoothScroller)
break
}
}
}
private inner class ObjectivesAdapter : RecyclerView.Adapter<ObjectivesAdapter.ViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
return ViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.objectives_item, parent, false))
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val objective = ObjectivesPlugin.objectives[position]
holder.title.text = MainApp.gs(R.string.nth_objective, position + 1)
holder.revert.visibility = View.GONE
if (objective.objective != 0) {
holder.objective.visibility = View.VISIBLE
holder.objective.text = MainApp.gs(objective.objective)
} else
holder.objective.visibility = View.GONE
if (objective.gate != 0) {
holder.gate.visibility = View.VISIBLE
holder.gate.text = MainApp.gs(objective.gate)
} else
holder.gate.visibility = View.GONE
if (!objective.isStarted) {
holder.gate.setTextColor(-0x1)
holder.verify.visibility = View.GONE
holder.progress.visibility = View.GONE
holder.accomplished.visibility = View.GONE
if (position == 0 || ObjectivesPlugin.objectives[position - 1].isAccomplished)
holder.start.visibility = View.VISIBLE
else
holder.start.visibility = View.GONE
} else if (objective.isAccomplished) {
holder.gate.setTextColor(-0xb350b0)
holder.verify.visibility = View.GONE
holder.progress.visibility = View.GONE
holder.start.visibility = View.GONE
holder.accomplished.visibility = View.VISIBLE
} else if (objective.isStarted) {
holder.gate.setTextColor(-0x1)
holder.verify.visibility = View.VISIBLE
holder.verify.isEnabled = objective.isCompleted || objectives_fake.isChecked
holder.start.visibility = View.GONE
holder.accomplished.visibility = View.GONE
if (objective.isRevertable) {
holder.revert.visibility = View.VISIBLE
}
holder.progress.visibility = View.VISIBLE
holder.progress.removeAllViews()
for (task in objective.tasks) {
if (task.shouldBeIgnored()) continue
val name = TextView(holder.progress.context)
name.text = MainApp.gs(task.task) + ":"
name.setTextColor(-0x1)
holder.progress.addView(name, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)
val state = TextView(holder.progress.context)
state.setTextColor(-0x1)
val basicHTML = "<font color=\"%1\$s\"><b>%2\$s</b></font>"
val formattedHTML = String.format(basicHTML, if (task.isCompleted) "#4CAF50" else "#FF9800", task.progress)
state.text = HtmlHelper.fromHtml(formattedHTML)
state.gravity = Gravity.END
holder.progress.addView(state, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)
if (task is ExamTask) {
state.setOnClickListener {
val dialog = ObjectivesExamDialog()
val bundle = Bundle()
val position = objective.tasks.indexOf(task)
bundle.putInt("currentTask", position)
dialog.arguments = bundle
ObjectivesExamDialog.objective = objective
fragmentManager?.let { dialog.show(it, "ObjectivesFragment") }
}
}
val separator = View(holder.progress.context)
separator.setBackgroundColor(Color.DKGRAY)
holder.progress.addView(separator, LinearLayout.LayoutParams.MATCH_PARENT, 2)
}
}
holder.accomplished.text = MainApp.gs(R.string.accomplished, DateUtil.dateAndTimeString(objective.accomplishedOn))
holder.accomplished.setTextColor(-0x3e3e3f)
holder.verify.setOnClickListener {
objective.accomplishedOn = DateUtil.now()
notifyDataSetChanged()
scrollToCurrentObjective()
startUpdateTimer()
}
holder.start.setOnClickListener {
objective.startedOn = DateUtil.now()
notifyDataSetChanged()
scrollToCurrentObjective()
startUpdateTimer()
}
holder.revert.setOnClickListener {
objective.accomplishedOn = 0
objective.startedOn = 0
if (position > 0) {
val prevObj = ObjectivesPlugin.objectives[position - 1]
prevObj.accomplishedOn = 0
}
notifyDataSetChanged()
scrollToCurrentObjective()
}
if (objective.hasSpecialInput && !objective.isAccomplished && objective.isStarted) {
// generate random request code if none exists
val request = SP.getString(R.string.key_objectives_request_code, String.format("%1$05d", (Math.random() * 99999).toInt()))
SP.putString(R.string.key_objectives_request_code, request)
holder.requestCode.text = MainApp.gs(R.string.requestcode, request)
holder.requestCode.visibility = View.VISIBLE
holder.enterButton.visibility = View.VISIBLE
holder.input.visibility = View.VISIBLE
holder.inputHint.visibility = View.VISIBLE
holder.enterButton.setOnClickListener {
val input = holder.input.text.toString()
objective.specialAction(activity, input)
notifyDataSetChanged()
}
} else {
holder.enterButton.visibility = View.GONE
holder.input.visibility = View.GONE
holder.inputHint.visibility = View.GONE
holder.requestCode.visibility = View.GONE
}
}
override fun getItemCount(): Int {
return ObjectivesPlugin.objectives.size
}
inner class ViewHolder internal constructor(itemView: View) : RecyclerView.ViewHolder(itemView) {
val title: TextView = itemView.findViewById(R.id.objective_title)
val objective: TextView = itemView.findViewById(R.id.objective_objective)
val gate: TextView = itemView.findViewById(R.id.objective_gate)
val accomplished: TextView = itemView.findViewById(R.id.objective_accomplished)
val progress: LinearLayout = itemView.findViewById(R.id.objective_progress)
val verify: Button = itemView.findViewById(R.id.objective_verify)
val start: Button = itemView.findViewById(R.id.objective_start)
val revert: Button = itemView.findViewById(R.id.objective_back)
val inputHint: TextView = itemView.findViewById(R.id.objective_inputhint)
val input: EditText = itemView.findViewById(R.id.objective_input)
val enterButton: Button = itemView.findViewById(R.id.objective_enterbutton)
val requestCode: TextView = itemView.findViewById(R.id.objective_requestcode)
}
}
fun updateGUI() {
activity?.runOnUiThread { objectivesAdapter.notifyDataSetChanged() }
}
}

View file

@ -1,164 +0,0 @@
package info.nightscout.androidaps.plugins.constraints.objectives;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.List;
import info.nightscout.androidaps.Config;
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.interfaces.Constraint;
import info.nightscout.androidaps.interfaces.ConstraintsInterface;
import info.nightscout.androidaps.interfaces.PluginBase;
import info.nightscout.androidaps.interfaces.PluginDescription;
import info.nightscout.androidaps.interfaces.PluginType;
import info.nightscout.androidaps.interfaces.PumpInterface;
import info.nightscout.androidaps.logging.L;
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin;
import info.nightscout.androidaps.plugins.constraints.objectives.events.EventObjectivesSaved;
import info.nightscout.androidaps.plugins.constraints.objectives.objectives.Objective;
import info.nightscout.androidaps.plugins.constraints.objectives.objectives.Objective1;
import info.nightscout.androidaps.plugins.constraints.objectives.objectives.Objective2;
import info.nightscout.androidaps.plugins.constraints.objectives.objectives.Objective3;
import info.nightscout.androidaps.plugins.constraints.objectives.objectives.Objective4;
import info.nightscout.androidaps.plugins.constraints.objectives.objectives.Objective5;
import info.nightscout.androidaps.plugins.constraints.objectives.objectives.Objective6;
import info.nightscout.androidaps.plugins.constraints.objectives.objectives.Objective7;
import info.nightscout.androidaps.plugins.constraints.objectives.objectives.Objective8;
import info.nightscout.androidaps.utils.SP;
/**
* Created by mike on 05.08.2016.
*/
public class ObjectivesPlugin extends PluginBase implements ConstraintsInterface {
private static Logger log = LoggerFactory.getLogger(L.CONSTRAINTS);
private static ObjectivesPlugin objectivesPlugin;
public List<Objective> objectives = new ArrayList<>();
public boolean bgIsAvailableInNS = false;
public boolean pumpStatusIsAvailableInNS = false;
public Integer manualEnacts = 0;
public static ObjectivesPlugin getPlugin() {
if (objectivesPlugin == null) {
objectivesPlugin = new ObjectivesPlugin();
}
return objectivesPlugin;
}
private ObjectivesPlugin() {
super(new PluginDescription()
.mainType(PluginType.CONSTRAINTS)
.fragmentClass(ObjectivesFragment.class.getName())
.alwaysEnabled(!Config.NSCLIENT)
.showInList(!Config.NSCLIENT)
.pluginName(R.string.objectives)
.shortName(R.string.objectives_shortname)
.description(R.string.description_objectives)
);
setupObjectives();
loadProgress();
}
@Override
public boolean specialEnableCondition() {
PumpInterface pump = ConfigBuilderPlugin.getPlugin().getActivePump();
return pump == null || pump.getPumpDescription().isTempBasalCapable;
}
private void setupObjectives() {
objectives.add(new Objective1());
objectives.add(new Objective2());
objectives.add(new Objective3());
objectives.add(new Objective4());
objectives.add(new Objective5());
objectives.add(new Objective6());
objectives.add(new Objective7());
objectives.add(new Objective8());
}
public void reset() {
for (Objective objective : objectives) {
objective.setStartedOn(null);
objective.setAccomplishedOn(null);
}
bgIsAvailableInNS = false;
pumpStatusIsAvailableInNS = false;
manualEnacts = 0;
saveProgress();
}
public void saveProgress() {
SP.putBoolean("Objectives" + "bgIsAvailableInNS", bgIsAvailableInNS);
SP.putBoolean("Objectives" + "pumpStatusIsAvailableInNS", pumpStatusIsAvailableInNS);
SP.putString("Objectives" + "manualEnacts", Integer.toString(manualEnacts));
if (L.isEnabled(L.CONSTRAINTS))
log.debug("Objectives stored");
MainApp.bus().post(new EventObjectivesSaved());
}
private void loadProgress() {
bgIsAvailableInNS = SP.getBoolean("Objectives" + "bgIsAvailableInNS", false);
pumpStatusIsAvailableInNS = SP.getBoolean("Objectives" + "pumpStatusIsAvailableInNS", false);
try {
manualEnacts = SP.getInt("Objectives" + "manualEnacts", 0);
} catch (Exception e) {
log.error("Unhandled exception", e);
}
if (L.isEnabled(L.CONSTRAINTS))
log.debug("Objectives loaded");
}
public List<Objective> getObjectives() {
return objectives;
}
/**
* Constraints interface
**/
@Override
public Constraint<Boolean> isLoopInvocationAllowed(Constraint<Boolean> value) {
if (!objectives.get(0).isStarted())
value.set(false, String.format(MainApp.gs(R.string.objectivenotstarted), 1), this);
return value;
}
@Override
public Constraint<Boolean> isClosedLoopAllowed(Constraint<Boolean> value) {
if (!objectives.get(3).isStarted())
value.set(false, String.format(MainApp.gs(R.string.objectivenotstarted), 4), this);
return value;
}
@Override
public Constraint<Boolean> isAutosensModeEnabled(Constraint<Boolean> value) {
if (!objectives.get(5).isStarted())
value.set(false, String.format(MainApp.gs(R.string.objectivenotstarted), 6), this);
return value;
}
@Override
public Constraint<Boolean> isAMAModeEnabled(Constraint<Boolean> value) {
if (!objectives.get(6).isStarted())
value.set(false, String.format(MainApp.gs(R.string.objectivenotstarted), 7), this);
return value;
}
@Override
public Constraint<Boolean> isSMBModeEnabled(Constraint<Boolean> value) {
if (!objectives.get(7).isStarted())
value.set(false, String.format(MainApp.gs(R.string.objectivenotstarted), 8), this);
return value;
}
@Override
public Constraint<Double> applyMaxIOBConstraints(Constraint<Double> maxIob) {
if (objectives.get(3).isStarted() && !objectives.get(3).isAccomplished())
maxIob.set(0d, String.format(MainApp.gs(R.string.objectivenotfinished), 4), this);
return maxIob;
}
}

View file

@ -0,0 +1,170 @@
package info.nightscout.androidaps.plugins.constraints.objectives
import android.app.Activity
import com.google.common.base.Charsets
import com.google.common.hash.Hashing
import info.nightscout.androidaps.BuildConfig
import info.nightscout.androidaps.Config
import info.nightscout.androidaps.MainApp
import info.nightscout.androidaps.R
import info.nightscout.androidaps.interfaces.*
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
import info.nightscout.androidaps.plugins.constraints.objectives.objectives.*
import info.nightscout.androidaps.utils.DateUtil
import info.nightscout.androidaps.utils.OKDialog
import info.nightscout.androidaps.utils.SP
import java.util.*
/**
* Created by mike on 05.08.2016.
*/
object ObjectivesPlugin : PluginBase(PluginDescription()
.mainType(PluginType.CONSTRAINTS)
.fragmentClass(ObjectivesFragment::class.qualifiedName)
.alwaysEnabled(!Config.NSCLIENT)
.showInList(!Config.NSCLIENT)
.pluginName(R.string.objectives)
.shortName(R.string.objectives_shortname)
.description(R.string.description_objectives)), ConstraintsInterface {
var objectives: MutableList<Objective> = ArrayList()
val FIRST_OBJECTIVE = 0
val USAGE_OBJECTIVE = 1
val EXAM_OBJECTIVE = 2
val OPENLOOP_OBJECTIVE = 3
val MAXBASAL_OBJECTIVE = 4
val MAXIOB_ZERO_CL_OBJECTIVE = 5
val MAXIOB_OBJECTIVE = 6
val AUTOSENS_OBJECTIVE = 7
val AMA_OBJECTIVE = 8
val SMB_OBJECTIVE = 9
init {
convertSP()
setupObjectives()
}
override fun specialEnableCondition(): Boolean {
val pump = ConfigBuilderPlugin.getPlugin().activePump
return pump == null || pump.pumpDescription.isTempBasalCapable
}
// convert 2.3 SP version
private fun convertSP() {
doConvertSP(0, "config")
doConvertSP(1, "openloop")
doConvertSP(2, "maxbasal")
doConvertSP(3, "maxiobzero")
doConvertSP(4, "maxiob")
doConvertSP(5, "autosens")
doConvertSP(6, "ama")
doConvertSP(7, "smb")
}
private fun doConvertSP(number: Int, name: String) {
if (!SP.contains("Objectives_" + name + "_started")) {
SP.putLong("Objectives_" + name + "_started", SP.getLong("Objectives" + number + "accomplished", 0L))
SP.putLong("Objectives_" + name + "_accomplished", SP.getLong("Objectives" + number + "accomplished", 0L))
}
// TODO: we can remove Objectives1accomplished sometimes later
}
private fun setupObjectives() {
objectives.clear()
objectives.add(Objective0())
objectives.add(Objective1())
objectives.add(Objective2())
objectives.add(Objective3())
objectives.add(Objective4())
objectives.add(Objective5())
objectives.add(Objective6())
objectives.add(Objective7())
objectives.add(Objective8())
objectives.add(Objective9())
}
fun reset() {
for (objective in objectives) {
objective.startedOn = 0
objective.accomplishedOn = 0
}
SP.putBoolean(R.string.key_ObjectivesbgIsAvailableInNS, false)
SP.putBoolean(R.string.key_ObjectivespumpStatusIsAvailableInNS, false)
SP.putInt(R.string.key_ObjectivesmanualEnacts, 0)
SP.putBoolean(R.string.key_objectiveuseprofileswitch, false)
SP.putBoolean(R.string.key_objectiveusedisconnect, false)
SP.putBoolean(R.string.key_objectiveusereconnect, false)
SP.putBoolean(R.string.key_objectiveusetemptarget, false)
SP.putBoolean(R.string.key_objectiveuseactions, false)
SP.putBoolean(R.string.key_objectiveuseloop, false)
SP.putBoolean(R.string.key_objectiveusescale, false)
}
fun completeObjectives(activity: Activity, request: String) {
val requestCode = SP.getString(R.string.key_objectives_request_code, "")
var url = SP.getString(R.string.key_nsclientinternal_url, "").toLowerCase()
if (!url.endsWith("\"")) url = "$url/"
val hashNS = Hashing.sha1().hashString(url + BuildConfig.APPLICATION_ID + "/" + requestCode, Charsets.UTF_8).toString()
if (request.equals(hashNS.substring(0, 10), ignoreCase = true)) {
SP.putLong("Objectives_" + "openloop" + "_started", DateUtil.now())
SP.putLong("Objectives_" + "openloop" + "_accomplished", DateUtil.now())
SP.putLong("Objectives_" + "maxbasal" + "_started", DateUtil.now())
SP.putLong("Objectives_" + "maxbasal" + "_accomplished", DateUtil.now())
SP.putLong("Objectives_" + "maxiobzero" + "_started", DateUtil.now())
SP.putLong("Objectives_" + "maxiobzero" + "_accomplished", DateUtil.now())
SP.putLong("Objectives_" + "maxiob" + "_started", DateUtil.now())
SP.putLong("Objectives_" + "maxiob" + "_accomplished", DateUtil.now())
SP.putLong("Objectives_" + "autosens" + "_started", DateUtil.now())
SP.putLong("Objectives_" + "autosens" + "_accomplished", DateUtil.now())
SP.putLong("Objectives_" + "ama" + "_started", DateUtil.now())
SP.putLong("Objectives_" + "ama" + "_accomplished", DateUtil.now())
SP.putLong("Objectives_" + "smb" + "_started", DateUtil.now())
SP.putLong("Objectives_" + "smb" + "_accomplished", DateUtil.now())
setupObjectives()
OKDialog.show(activity, "", MainApp.gs(R.string.codeaccepted), null)
} else {
OKDialog.show(activity, "", MainApp.gs(R.string.codeinvalid), null)
}
}
/**
* Constraints interface
*/
override fun isLoopInvocationAllowed(value: Constraint<Boolean>): Constraint<Boolean> {
if (!objectives[FIRST_OBJECTIVE].isStarted)
value.set(false, String.format(MainApp.gs(R.string.objectivenotstarted), FIRST_OBJECTIVE + 1), this)
return value
}
override fun isClosedLoopAllowed(value: Constraint<Boolean>): Constraint<Boolean> {
if (!objectives[MAXIOB_ZERO_CL_OBJECTIVE].isStarted)
value.set(false, String.format(MainApp.gs(R.string.objectivenotstarted), MAXIOB_ZERO_CL_OBJECTIVE + 1), this)
return value
}
override fun isAutosensModeEnabled(value: Constraint<Boolean>): Constraint<Boolean> {
if (!objectives[AUTOSENS_OBJECTIVE].isStarted)
value.set(false, String.format(MainApp.gs(R.string.objectivenotstarted), AUTOSENS_OBJECTIVE + 1), this)
return value
}
override fun isAMAModeEnabled(value: Constraint<Boolean>): Constraint<Boolean> {
if (!objectives[AMA_OBJECTIVE].isStarted)
value.set(false, String.format(MainApp.gs(R.string.objectivenotstarted), AMA_OBJECTIVE + 1), this)
return value
}
override fun isSMBModeEnabled(value: Constraint<Boolean>): Constraint<Boolean> {
if (!objectives[SMB_OBJECTIVE].isStarted)
value.set(false, String.format(MainApp.gs(R.string.objectivenotstarted), SMB_OBJECTIVE + 1), this)
return value
}
override fun applyMaxIOBConstraints(maxIob: Constraint<Double>): Constraint<Double> {
if (objectives[MAXIOB_ZERO_CL_OBJECTIVE].isStarted && !objectives[MAXIOB_ZERO_CL_OBJECTIVE].isAccomplished)
maxIob.set(0.0, String.format(MainApp.gs(R.string.objectivenotfinished), MAXIOB_ZERO_CL_OBJECTIVE + 1), this)
return maxIob
}
}

View file

@ -0,0 +1,132 @@
package info.nightscout.androidaps.plugins.constraints.objectives.activities
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.DialogFragment
import info.nightscout.androidaps.MainApp
import info.nightscout.androidaps.R
import info.nightscout.androidaps.plugins.bus.RxBus
import info.nightscout.androidaps.plugins.constraints.objectives.events.EventObjectivesUpdateGui
import info.nightscout.androidaps.plugins.constraints.objectives.objectives.Objective
import info.nightscout.androidaps.plugins.constraints.objectives.objectives.Objective.*
import info.nightscout.androidaps.utils.DateUtil
import info.nightscout.androidaps.utils.OKDialog
import info.nightscout.androidaps.utils.T
import info.nightscout.androidaps.utils.ToastUtils
import kotlinx.android.synthetic.main.objectives_exam_fragment.*
class ObjectivesExamDialog : DialogFragment() {
companion object {
var objective: Objective? = null
}
var currentTask = 0
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
// load data from bundle
(savedInstanceState ?: arguments)?.let { bundle ->
currentTask = bundle.getInt("currentTask", 0)
}
return inflater.inflate(R.layout.objectives_exam_fragment, container, false)
}
override fun onStart() {
super.onStart()
dialog?.setCanceledOnTouchOutside(false)
dialog?.window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
}
override fun onResume() {
super.onResume()
updateGui()
}
override fun onSaveInstanceState(bundle: Bundle) {
super.onSaveInstanceState(bundle)
bundle.putInt("currentTask", currentTask)
}
fun updateGui() {
objective?.let { objective ->
val task: ExamTask = objective.tasks[currentTask] as ExamTask
objectives_exam_name.setText(task.task)
objectives_exam_question.setText(task.question)
// Options
objectives_exam_options.removeAllViews()
for (o in task.options) {
val option: Option = o as Option;
val cb = option.generate(context)
if (task.answered) {
cb.isEnabled = false
if (option.isCorrect)
cb.isChecked = true
}
objectives_exam_options.addView(cb)
}
// Hints
objectives_exam_hints.removeAllViews()
for (h in task.hints) {
val hint: Hint = h as Hint;
objectives_exam_hints.addView(hint.generate(context))
}
// Disabled to
objectives_exam_disabledto.text = MainApp.gs(R.string.answerdisabledto, DateUtil.timeString(task.disabledTo))
objectives_exam_disabledto.visibility = if (task.isEnabledAnswer) View.GONE else View.VISIBLE
// Buttons
objectives_exam_verify.isEnabled = !task.answered && task.isEnabledAnswer
objectives_exam_verify.setOnClickListener {
var result = true
for (o in task.options) {
val option: Option = o as Option;
result = result && option.evaluate()
}
task.setAnswered(result);
if (!result) {
task.disabledTo = DateUtil.now() + T.hours(1).msecs()
ToastUtils.showToastInUiThread(context, R.string.wronganswer)
} else task.disabledTo = 0
updateGui()
RxBus.send(EventObjectivesUpdateGui())
}
close.setOnClickListener { dismiss() }
objectives_exam_reset.setOnClickListener {
task.answered = false
//task.disabledTo = 0
updateGui()
RxBus.send(EventObjectivesUpdateGui())
}
objectives_back_button.isEnabled = currentTask != 0
objectives_back_button.setOnClickListener {
currentTask--
updateGui()
}
objectives_next_button.isEnabled = currentTask != objective.tasks.size - 1
objectives_next_button.setOnClickListener {
currentTask++
updateGui()
}
objectives_next_unanswered_button.isEnabled = !objective.isCompleted
objectives_next_unanswered_button.setOnClickListener {
for (i in (currentTask + 1)..(objective.tasks.size - 1)) {
if (!objective.tasks[i].isCompleted) {
currentTask = i
updateGui()
return@setOnClickListener
}
}
for (i in 0..currentTask) {
if (!objective.tasks[i].isCompleted) {
currentTask = i
updateGui()
return@setOnClickListener
}
}
}
}
}
}

View file

@ -1,6 +0,0 @@
package info.nightscout.androidaps.plugins.constraints.objectives.events;
import info.nightscout.androidaps.events.Event;
public class EventObjectivesSaved extends Event {
}

View file

@ -0,0 +1,5 @@
package info.nightscout.androidaps.plugins.constraints.objectives.events
import info.nightscout.androidaps.events.EventUpdateGui
class EventObjectivesUpdateGui : EventUpdateGui()

View file

@ -1,35 +1,41 @@
package info.nightscout.androidaps.plugins.constraints.objectives.objectives;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.text.util.Linkify;
import android.widget.CheckBox;
import android.widget.TextView;
import androidx.annotation.StringRes;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.utils.DateUtil;
import info.nightscout.androidaps.utils.SP;
import info.nightscout.androidaps.utils.T;
public abstract class Objective {
private int number;
private String spName;
@StringRes
private int objective;
@StringRes
private int gate;
private Date startedOn;
private Date accomplishedOn;
private List<Task> tasks = new ArrayList<>();
private long startedOn;
private long accomplishedOn;
List<Task> tasks = new ArrayList<>();
public boolean hasSpecialInput = false;
public Objective(int number, @StringRes int objective, @StringRes int gate) {
this.number = number;
public Objective(String spName, @StringRes int objective, @StringRes int gate) {
this.spName = spName;
this.objective = objective;
this.gate = gate;
startedOn = new Date(SP.getLong("Objectives" + number + "started", 0L));
if (startedOn.getTime() == 0L) startedOn = null;
accomplishedOn = new Date(SP.getLong("Objectives" + number + "accomplished", 0L));
if (accomplishedOn.getTime() == 0L) accomplishedOn = null;
startedOn = SP.getLong("Objectives_" + spName + "_started", 0L);
accomplishedOn = SP.getLong("Objectives_" + spName + "_accomplished", 0L);
setupTasks(tasks);
for (Task task : tasks) task.objective = this;
}
@ -47,14 +53,14 @@ public abstract class Objective {
}
public boolean isAccomplished() {
return accomplishedOn != null;
return accomplishedOn != 0;
}
public boolean isStarted() {
return startedOn != null;
return startedOn != 0;
}
public Date getStartedOn() {
public long getStartedOn() {
return startedOn;
}
@ -66,14 +72,18 @@ public abstract class Objective {
return gate;
}
public void setStartedOn(Date startedOn) {
public void setStartedOn(long startedOn) {
this.startedOn = startedOn;
SP.putLong("Objectives" + number + "started", startedOn == null ? 0 : startedOn.getTime());
SP.putLong("Objectives_" + spName + "_started", startedOn);
}
public void setAccomplishedOn(Date accomplishedOn) {
public void setAccomplishedOn(long accomplishedOn) {
this.accomplishedOn = accomplishedOn;
SP.putLong("Objectives" + number + "accomplished", accomplishedOn == null ? 0 : accomplishedOn.getTime());
SP.putLong("Objectives_" + spName + "_accomplished", accomplishedOn);
}
public long getAccomplishedOn() {
return accomplishedOn;
}
protected void setupTasks(List<Task> tasks) {
@ -84,6 +94,8 @@ public abstract class Objective {
return tasks;
}
public void specialAction(Activity activity, String input) {}
public abstract class Task {
@StringRes
private int task;
@ -93,7 +105,7 @@ public abstract class Objective {
this.task = task;
}
public int getTask() {
public @StringRes int getTask() {
return task;
}
@ -116,19 +128,19 @@ public abstract class Objective {
private long minimumDuration;
public MinimumDurationTask(long minimumDuration) {
MinimumDurationTask(long minimumDuration) {
super(R.string.time_elapsed);
this.minimumDuration = minimumDuration;
}
@Override
public boolean isCompleted() {
return getObjective().isStarted() && System.currentTimeMillis() - getObjective().getStartedOn().getTime() >= minimumDuration;
return getObjective().isStarted() && System.currentTimeMillis() - getObjective().getStartedOn() >= minimumDuration;
}
@Override
public String getProgress() {
return getDurationText(System.currentTimeMillis() - getObjective().getStartedOn().getTime())
return getDurationText(System.currentTimeMillis() - getObjective().getStartedOn())
+ " / " + getDurationText(minimumDuration);
}
@ -142,4 +154,117 @@ public abstract class Objective {
}
}
public class ExamTask extends Task {
@StringRes
int question;
List hints = new ArrayList<>();
List options = new ArrayList<>();
private String spIdentifier;
private boolean answered;
private long disabledTo;
ExamTask(@StringRes int task, @StringRes int question, String spIdentifier) {
super(task);
this.question = question;
this.spIdentifier = spIdentifier;
answered = SP.getBoolean("ExamTask_" + spIdentifier, false);
disabledTo = SP.getLong("DisabledTo_" + spIdentifier, 0L);
}
public void setDisabledTo(long newState) {
disabledTo = newState;
SP.putLong("DisabledTo_" + spIdentifier, disabledTo);
}
public long getDisabledTo() {
return disabledTo;
}
public boolean isEnabledAnswer() {
return disabledTo < DateUtil.now();
}
public void setAnswered(boolean newState) {
answered = newState;
SP.putBoolean("ExamTask_" + spIdentifier, answered);
}
public boolean getAnswered() {
return answered;
}
ExamTask option(Option option) {
options.add(option);
return this;
}
ExamTask hint(Hint hint) {
hints.add(hint);
return this;
}
public @StringRes int getQuestion() {
return question;
}
public List getOptions() {
return options;
}
public List getHints() {
return hints;
}
@Override
public boolean isCompleted() {
return answered;
}
}
public class Option {
@StringRes int option;
boolean isCorrect;
CheckBox cb; // TODO: change it, this will block releasing memeory
Option(@StringRes int option, boolean isCorrect) {
this.option = option;
this.isCorrect = isCorrect;
}
public boolean isCorrect() {
return isCorrect;
}
public CheckBox generate(Context context) {
cb = new CheckBox(context);
cb.setText(option);
return cb;
}
public boolean evaluate() {
boolean selection = cb.isChecked();
if (selection && isCorrect) return true;
if (!selection && !isCorrect) return true;
return false;
}
}
public class Hint {
@StringRes int hint;
Hint(@StringRes int hint) {
this.hint = hint;
}
public TextView generate(Context context) {
TextView textView = new TextView(context);
textView.setText(hint);
textView.setAutoLinkMask(Linkify.WEB_URLS);
textView.setLinksClickable(true);
textView.setLinkTextColor(Color.YELLOW);
Linkify.addLinks(textView, Linkify.WEB_URLS);
return textView;
}
}
}

View file

@ -0,0 +1,84 @@
package info.nightscout.androidaps.plugins.constraints.objectives.objectives;
import java.util.List;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.db.DatabaseHelper;
import info.nightscout.androidaps.interfaces.APSInterface;
import info.nightscout.androidaps.interfaces.PluginBase;
import info.nightscout.androidaps.interfaces.PluginType;
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin;
import info.nightscout.androidaps.plugins.constraints.objectives.ObjectivesPlugin;
import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin;
import info.nightscout.androidaps.plugins.general.nsclient.NSClientPlugin;
import info.nightscout.androidaps.plugins.pump.virtual.VirtualPumpPlugin;
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin;
import info.nightscout.androidaps.utils.DateUtil;
import info.nightscout.androidaps.utils.SP;
public class Objective0 extends Objective {
public Objective0() {
super("config", R.string.objectives_0_objective, R.string.objectives_0_gate);
}
@Override
protected void setupTasks(List<Task> tasks) {
tasks.add(new Task(R.string.objectives_bgavailableinns) {
@Override
public boolean isCompleted() {
return SP.getBoolean(R.string.key_ObjectivesbgIsAvailableInNS, false);
}
});
tasks.add(new Task(R.string.nsclienthaswritepermission) {
@Override
public boolean isCompleted() {
return NSClientPlugin.getPlugin().hasWritePermission();
}
});
tasks.add(new Task(R.string.virtualpump_uploadstatus_title) {
@Override
public boolean isCompleted() {
return SP.getBoolean("virtualpump_uploadstatus", false);
}
@Override
public boolean shouldBeIgnored() {
return !VirtualPumpPlugin.getPlugin().isEnabled(PluginType.PUMP);
}
});
tasks.add(new Task(R.string.objectives_pumpstatusavailableinns) {
@Override
public boolean isCompleted() {
return SP.getBoolean(R.string.key_ObjectivespumpStatusIsAvailableInNS, false);
}
});
tasks.add(new Task(R.string.hasbgdata) {
@Override
public boolean isCompleted() {
return DatabaseHelper.lastBg() != null;
}
});
tasks.add(new Task(R.string.loopenabled) {
@Override
public boolean isCompleted() {
return LoopPlugin.getPlugin().isEnabled(PluginType.LOOP);
}
});
tasks.add(new Task(R.string.apsselected) {
@Override
public boolean isCompleted() {
APSInterface usedAPS = ConfigBuilderPlugin.getPlugin().getActiveAPS();
if (usedAPS != null && ((PluginBase) usedAPS).isEnabled(PluginType.APS))
return true;
return false;
}
});
tasks.add(new Task(R.string.activate_profile) {
@Override
public boolean isCompleted() {
return TreatmentsPlugin.getPlugin().getProfileSwitchFromHistory(DateUtil.now()) != null;
}
});
}
}

View file

@ -3,81 +3,60 @@ package info.nightscout.androidaps.plugins.constraints.objectives.objectives;
import java.util.List;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.db.DatabaseHelper;
import info.nightscout.androidaps.interfaces.APSInterface;
import info.nightscout.androidaps.interfaces.PluginBase;
import info.nightscout.androidaps.interfaces.PluginType;
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin;
import info.nightscout.androidaps.plugins.constraints.objectives.ObjectivesPlugin;
import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin;
import info.nightscout.androidaps.plugins.general.nsclient.NSClientPlugin;
import info.nightscout.androidaps.plugins.pump.virtual.VirtualPumpPlugin;
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin;
import info.nightscout.androidaps.utils.DateUtil;
import info.nightscout.androidaps.plugins.general.actions.ActionsPlugin;
import info.nightscout.androidaps.utils.SP;
public class Objective1 extends Objective {
public Objective1() {
super(0, R.string.objectives_0_objective, R.string.objectives_0_gate);
super("usage", R.string.objectives_usage_objective, R.string.objectives_usage_gate);
}
@Override
protected void setupTasks(List<Task> tasks) {
tasks.add(new Task(R.string.objectives_bgavailableinns) {
tasks.add(new Task(R.string.objectives_useprofileswitch) {
@Override
public boolean isCompleted() {
return ObjectivesPlugin.getPlugin().bgIsAvailableInNS;
return SP.getBoolean(R.string.key_objectiveuseprofileswitch, false);
}
});
tasks.add(new Task(R.string.nsclienthaswritepermission) {
tasks.add(new Task(R.string.objectives_usedisconnectpump) {
@Override
public boolean isCompleted() {
return NSClientPlugin.getPlugin().hasWritePermission();
return SP.getBoolean(R.string.key_objectiveusedisconnect, false);
}
});
tasks.add(new Task(R.string.virtualpump_uploadstatus_title) {
tasks.add(new Task(R.string.objectives_usereconnectpump) {
@Override
public boolean isCompleted() {
return SP.getBoolean("virtualpump_uploadstatus", false);
}
@Override
public boolean shouldBeIgnored() {
return !VirtualPumpPlugin.getPlugin().isEnabled(PluginType.PUMP);
return SP.getBoolean(R.string.key_objectiveusereconnect, false);
}
});
tasks.add(new Task(R.string.objectives_pumpstatusavailableinns) {
tasks.add(new Task(R.string.objectives_usetemptarget) {
@Override
public boolean isCompleted() {
return ObjectivesPlugin.getPlugin().pumpStatusIsAvailableInNS;
return SP.getBoolean(R.string.key_objectiveusetemptarget, false);
}
});
tasks.add(new Task(R.string.hasbgdata) {
tasks.add(new Task(R.string.objectives_useactions) {
@Override
public boolean isCompleted() {
return DatabaseHelper.lastBg() != null;
return SP.getBoolean(R.string.key_objectiveuseactions, false) && ActionsPlugin.INSTANCE.isEnabled(PluginType.GENERAL) && ActionsPlugin.INSTANCE.isFragmentVisible();
}
});
tasks.add(new Task(R.string.loopenabled) {
tasks.add(new Task(R.string.objectives_useloop) {
@Override
public boolean isCompleted() {
return LoopPlugin.getPlugin().isEnabled(PluginType.LOOP);
return SP.getBoolean(R.string.key_objectiveuseloop, false);
}
});
tasks.add(new Task(R.string.apsselected) {
tasks.add(new Task(R.string.objectives_usescale) {
@Override
public boolean isCompleted() {
APSInterface usedAPS = ConfigBuilderPlugin.getPlugin().getActiveAPS();
if (usedAPS != null && ((PluginBase) usedAPS).isEnabled(PluginType.APS))
return true;
return false;
}
});
tasks.add(new Task(R.string.activate_profile) {
@Override
public boolean isCompleted() {
return TreatmentsPlugin.getPlugin().getProfileSwitchFromHistory(DateUtil.now()) != null;
return SP.getBoolean(R.string.key_objectiveusescale, false);
}
});
}

View file

@ -1,36 +1,203 @@
package info.nightscout.androidaps.plugins.constraints.objectives.objectives;
import java.util.Collections;
import java.util.List;
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.plugins.constraints.objectives.ObjectivesPlugin;
import info.nightscout.androidaps.utils.T;
public class Objective2 extends Objective {
public final int MANUAL_ENACTS_NEEDED = 20;
public Objective2() {
super(1, R.string.objectives_1_objective, R.string.objectives_1_gate);
super("exam", R.string.objectives_exam_objective, R.string.objectives_exam_gate);
for (Task task : tasks) {
if (!task.isCompleted()) setAccomplishedOn(0);
}
}
@Override
protected void setupTasks(List<Task> tasks) {
tasks.add(new MinimumDurationTask(T.days(7).msecs()));
tasks.add(new Task(R.string.objectives_manualenacts) {
@Override
public boolean isCompleted() {
return ObjectivesPlugin.getPlugin().manualEnacts >= MANUAL_ENACTS_NEEDED;
}
tasks.add(new ExamTask(R.string.dia_label, R.string.dia_whatmeansdia,"dia")
.option(new Option(R.string.dia_minimumis3h, false))
.option(new Option(R.string.dia_minimumis5h, true))
.option(new Option(R.string.dia_meaningisequaltodiapump, false))
.option(new Option(R.string.dia_valuemustbedetermined, true))
.hint(new Hint(R.string.dia_hint1))
);
tasks.add(new ExamTask(R.string.hypott_label, R.string.hypott_whenhypott,"hypott")
.option(new Option(R.string.hypott_goinglow, false))
.option(new Option(R.string.hypott_havinglow, false))
.option(new Option(R.string.hypott_preventoversmb, true))
.hint(new Hint(R.string.hypott_hint1))
);
tasks.add(new ExamTask(R.string.offlineprofile_label, R.string.offlineprofile_whatprofile,"offlineprofile")
.option(new Option(R.string.localprofile, true))
.option(new Option(R.string.nsprofile, false))
.option(new Option(R.string.offlineprofile_nsprofile, true))
.hint(new Hint(R.string.offlineprofile_hint1))
);
tasks.add(new ExamTask(R.string.pumpdisconnect_label, R.string.pumpdisconnect_label,"pumpdisconnect")
.option(new Option(R.string.pumpdisconnect_letknow, true))
.option(new Option(R.string.pumpdisconnect_dontchnage, false))
.hint(new Hint(R.string.pumpdisconnect_hint1))
);
tasks.add(new ExamTask(R.string.objectives_label, R.string.objectives_howtosave,"objectives")
.option(new Option(R.string.objectives_exportsettings, true))
.option(new Option(R.string.objectives_storeelsewhere, true))
.option(new Option(R.string.objectives_doexportonstart, false))
.option(new Option(R.string.objectives_doexportafterchange, true))
.option(new Option(R.string.objectives_doexportafterfirtssettings, true))
.hint(new Hint(R.string.objectives_hint1))
.hint(new Hint(R.string.objectives_hint2))
);
tasks.add(new ExamTask(R.string.noisycgm_label, R.string.noisycgm_whattodo,"noisycgm")
.option(new Option(R.string.nothing, false))
.option(new Option(R.string.disconnectpumpfor1h, false))
.option(new Option(R.string.noisycgm_pause, true))
.option(new Option(R.string.noisycgm_replacesensor, true))
.option(new Option(R.string.noisycgm_turnoffphone, false))
.option(new Option(R.string.noisycgm_checksmoothing, true))
.hint(new Hint(R.string.noisycgm_hint1))
);
tasks.add(new ExamTask(R.string.exercise_label, R.string.exercise_whattodo,"exercise")
.option(new Option(R.string.nothing, false))
.option(new Option(R.string.exercise_setactivitytt, true))
.option(new Option(R.string.exercise_switchprofilebelow100, true))
.option(new Option(R.string.exercise_switchprofileabove100, false))
.option(new Option(R.string.exercise_stoploop, false))
.option(new Option(R.string.exercise_doitbeforestart, true))
.option(new Option(R.string.exercise_doitafterstart, false))
.hint(new Hint(R.string.exercise_hint1))
);
tasks.add(new ExamTask(R.string.suspendloop_label, R.string.suspendloop_doigetinsulin,"suspendloop")
.option(new Option(R.string.suspendloop_yes, true))
.option(new Option(R.string.suspendloop_no, false))
);
tasks.add(new ExamTask(R.string.basaltest_label, R.string.basaltest_when,"basaltest")
.option(new Option(R.string.basaltest_beforeloop, true))
.option(new Option(R.string.basaltest_havingregularhypo, true))
.option(new Option(R.string.basaltest_havingregularhyper, true))
.hint(new Hint(R.string.basaltest_hint1))
);
tasks.add(new ExamTask(R.string.prerequisites_label, R.string.prerequisites_what, "prerequisites")
.option(new Option(R.string.prerequisites_determinedcorrectprofile, true))
.option(new Option(R.string.prerequisites_computer, true))
.option(new Option(R.string.prerequisites_phone, true))
.option(new Option(R.string.prerequisites_car, false))
.option(new Option(R.string.prerequisites_nightscout, true))
.option(new Option(R.string.prerequisites_tidepoolaccount, false))
.option(new Option(R.string.prerequisites_googleaccount, false))
.option(new Option(R.string.prerequisites_githubaccount, false))
.option(new Option(R.string.prerequisites_beanandroiddeveloper, false))
.option(new Option(R.string.prerequisites_own670g, false))
.option(new Option(R.string.prerequisites_smartwatch, false))
.option(new Option(R.string.prerequisites_supportedcgm, true))
.hint(new Hint(R.string.prerequisites_hint1))
);
tasks.add(new ExamTask(R.string.update_label, R.string.whatistrue,"update")
.option(new Option(R.string.update_git, true))
.option(new Option(R.string.update_asap, true))
.option(new Option(R.string.update_keys, true))
.option(new Option(R.string.update_neverupdate, false))
.option(new Option(R.string.update_askfriend, false))
.hint(new Hint(R.string.update_hint1))
);
tasks.add(new ExamTask(R.string.troubleshooting_label, R.string.troubleshooting_wheretoask,"troubleshooting")
.option(new Option(R.string.troubleshooting_fb, true))
.option(new Option(R.string.troubleshooting_wiki, true))
.option(new Option(R.string.troubleshooting_gitter, true))
.option(new Option(R.string.troubleshooting_googlesupport, false))
.option(new Option(R.string.troubleshooting_yourendo, false))
.hint(new Hint(R.string.troubleshooting_hint1))
.hint(new Hint(R.string.troubleshooting_hint2))
.hint(new Hint(R.string.troubleshooting_hint3))
);
tasks.add(new ExamTask(R.string.insulin_label, R.string.insulin_ultrarapid,"insulin")
.option(new Option(R.string.insulin_fiasp, true))
.option(new Option(R.string.insulin_novorapid, false))
.option(new Option(R.string.insulin_humalog, false))
.option(new Option(R.string.insulin_actrapid, false))
.hint(new Hint(R.string.insulin_hint1))
);
tasks.add(new ExamTask(R.string.sensitivity_label, R.string.sensitivity_which,"sensitivity")
.option(new Option(R.string.sensitivityweightedaverage, true))
.option(new Option(R.string.sensitivityoref0, false))
.option(new Option(R.string.sensitivityoref1, false))
.option(new Option(R.string.sensitivityaaps, true))
.hint(new Hint(R.string.sensitivity_hint1))
);
tasks.add(new ExamTask(R.string.sensitivity_label, R.string.sensitivityuam_which,"sensitivityuam")
.option(new Option(R.string.sensitivityweightedaverage, false))
.option(new Option(R.string.sensitivityoref0, false))
.option(new Option(R.string.sensitivityoref1, true))
.option(new Option(R.string.sensitivityaaps, false))
.hint(new Hint(R.string.sensitivity_hint1))
);
tasks.add(new ExamTask(R.string.wrongcarbs_label, R.string.wrongcarbs_whattodo,"wrongcarbs")
.option(new Option(R.string.wrongcarbs_addfakeinsulin, false))
.option(new Option(R.string.wrongcarbs_treatmentstab, true))
);
tasks.add(new ExamTask(R.string.extendedcarbs_label, R.string.extendedcarbs_handling,"extendedcarbs")
.option(new Option(R.string.extendedcarbs_useextendedcarbs, true))
.option(new Option(R.string.extendedcarbs_add, false))
.option(new Option(R.string.extendedcarbs_useextendedbolus, false))
.hint(new Hint(R.string.extendedcarbs_hint1))
);
tasks.add(new ExamTask(R.string.nsclient_label, R.string.nsclient_howcanyou,"nsclient")
.option(new Option(R.string.nsclient_nightscout, true))
.option(new Option(R.string.nsclientinternal, true))
.option(new Option(R.string.nsclient_dexcomfollow, true))
.option(new Option(R.string.nsclient_dexcomfollowxdrip, false))
.option(new Option(R.string.nsclient_xdripfollower, true))
.option(new Option(R.string.nsclient_looponiphone, false))
.option(new Option(R.string.nsclient_spikeiphone, true))
);
tasks.add(new ExamTask(R.string.isf_label, R.string.whatistrue,"isf")
.option(new Option(R.string.isf_increasingvalue, true))
.option(new Option(R.string.isf_decreasingvalue, false))
.option(new Option(R.string.isf_noeffect, false))
.option(new Option(R.string.isf_preferences, false))
.option(new Option(R.string.isf_profile, false))
.hint(new Hint(R.string.isf_hint1))
.hint(new Hint(R.string.isf_hint2))
);
tasks.add(new ExamTask(R.string.ic_label, R.string.whatistrue,"ic")
.option(new Option(R.string.ic_increasingvalue, true))
.option(new Option(R.string.ic_decreasingvalue, false))
.option(new Option(R.string.ic_noeffect, false))
.option(new Option(R.string.ic_different, false))
.option(new Option(R.string.ic_meaning, false))
.hint(new Hint(R.string.ic_hint1))
);
tasks.add(new ExamTask(R.string.profileswitch_label, R.string.profileswitch_pctwillchange,"profileswitch")
.option(new Option(R.string.profileswitch_basalhigher, false))
.option(new Option(R.string.profileswitch_basallower, true))
.option(new Option(R.string.profileswitch_ichigher, true))
.option(new Option(R.string.profileswitch_iclower, false))
.option(new Option(R.string.profileswitch_isfhigher, true))
.option(new Option(R.string.profileswitch_isflower, false))
.option(new Option(R.string.profileswitch_overall, true))
.option(new Option(R.string.profileswitch_targethigher, false))
.option(new Option(R.string.profileswitch_targetlower, false))
.option(new Option(R.string.profileswitch_targetbottom, false))
.hint(new Hint(R.string.profileswitch_hint1))
);
@Override
public String getProgress() {
if (ObjectivesPlugin.getPlugin().manualEnacts >= MANUAL_ENACTS_NEEDED)
return MainApp.gs(R.string.completed_well_done);
else
return ObjectivesPlugin.getPlugin().manualEnacts + " / " + MANUAL_ENACTS_NEEDED;
}
});
tasks.add(new ExamTask(R.string.profileswitch_label, R.string.profileswitchtime_iwant,"profileswitchtime")
.option(new Option(R.string.profileswitchtime_1, false))
.option(new Option(R.string.profileswitchtime__1, true))
.option(new Option(R.string.profileswitchtime_60, false))
.option(new Option(R.string.profileswitchtime__60, false))
.hint(new Hint(R.string.profileswitchtime_hint1))
);
for (Task task : tasks)
Collections.shuffle(((ExamTask)task).options);
}
@Override
public boolean isRevertable() {
return true;
}
}

View file

@ -1,10 +1,45 @@
package info.nightscout.androidaps.plugins.constraints.objectives.objectives;
import android.app.Activity;
import java.util.List;
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.plugins.constraints.objectives.ObjectivesPlugin;
import info.nightscout.androidaps.utils.SP;
import info.nightscout.androidaps.utils.T;
public class Objective3 extends Objective {
public final int MANUAL_ENACTS_NEEDED = 20;
public Objective3() {
super(2, R.string.objectives_2_objective, R.string.objectives_2_gate);
super("openloop", R.string.objectives_openloop_objective, R.string.objectives_openloop_gate);
hasSpecialInput = true;
}
@Override
protected void setupTasks(List<Task> tasks) {
tasks.add(new MinimumDurationTask(T.days(7).msecs()));
tasks.add(new Task(R.string.objectives_manualenacts) {
@Override
public boolean isCompleted() {
return SP.getInt(R.string.key_ObjectivesmanualEnacts, 0) >= MANUAL_ENACTS_NEEDED;
}
@Override
public String getProgress() {
if (SP.getInt(R.string.key_ObjectivesmanualEnacts, 0) >= MANUAL_ENACTS_NEEDED)
return MainApp.gs(R.string.completed_well_done);
else
return SP.getInt(R.string.key_ObjectivesmanualEnacts, 0) + " / " + MANUAL_ENACTS_NEEDED;
}
});
}
@Override
public void specialAction(Activity activity, String input) {
ObjectivesPlugin.INSTANCE.completeObjectives(activity, input);
}
}

View file

@ -1,33 +1,10 @@
package info.nightscout.androidaps.plugins.constraints.objectives.objectives;
import java.util.List;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.interfaces.Constraint;
import info.nightscout.androidaps.plugins.constraints.safety.SafetyPlugin;
import info.nightscout.androidaps.utils.T;
public class Objective4 extends Objective {
public Objective4() {
super(3, R.string.objectives_3_objective, R.string.objectives_3_gate);
}
@Override
protected void setupTasks(List<Task> tasks) {
tasks.add(new MinimumDurationTask(T.days(5).msecs()));
tasks.add(new Task(R.string.closedmodeenabled) {
@Override
public boolean isCompleted() {
Constraint<Boolean> closedLoopEnabled = new Constraint<>(true);
SafetyPlugin.getPlugin().isClosedLoopAllowed(closedLoopEnabled);
return closedLoopEnabled.value();
}
});
}
@Override
public boolean isRevertable() {
return true;
super("maxbasal", R.string.objectives_maxbasal_objective, R.string.objectives_maxbasal_gate);
}
}

View file

@ -2,25 +2,32 @@ package info.nightscout.androidaps.plugins.constraints.objectives.objectives;
import java.util.List;
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.interfaces.Constraint;
import info.nightscout.androidaps.plugins.constraints.safety.SafetyPlugin;
import info.nightscout.androidaps.utils.T;
public class Objective5 extends Objective {
public Objective5() {
super(4, R.string.objectives_4_objective, R.string.objectives_4_gate);
super("maxiobzero", R.string.objectives_maxiobzero_objective, R.string.objectives_maxiobzero_gate);
}
@Override
protected void setupTasks(List<Task> tasks) {
tasks.add(new MinimumDurationTask(T.days(1).msecs()));
tasks.add(new Task(R.string.maxiobset) {
tasks.add(new MinimumDurationTask(T.days(5).msecs()));
tasks.add(new Task(R.string.closedmodeenabled) {
@Override
public boolean isCompleted() {
double maxIOB = MainApp.getConstraintChecker().getMaxIOBAllowed().value();
return maxIOB > 0;
Constraint<Boolean> closedLoopEnabled = new Constraint<>(true);
SafetyPlugin.getPlugin().isClosedLoopAllowed(closedLoopEnabled);
return closedLoopEnabled.value();
}
});
}
@Override
public boolean isRevertable() {
return true;
}
}

View file

@ -2,17 +2,25 @@ package info.nightscout.androidaps.plugins.constraints.objectives.objectives;
import java.util.List;
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.utils.T;
public class Objective6 extends Objective {
public Objective6() {
super(5, R.string.objectives_5_objective, R.string.objectives_5_gate);
super("maxiob", R.string.objectives_maxiob_objective, R.string.objectives_maxiob_gate);
}
@Override
protected void setupTasks(List<Task> tasks) {
tasks.add(new MinimumDurationTask(T.days(7).msecs()));
tasks.add(new MinimumDurationTask(T.days(1).msecs()));
tasks.add(new Task(R.string.maxiobset) {
@Override
public boolean isCompleted() {
double maxIOB = MainApp.getConstraintChecker().getMaxIOBAllowed().value();
return maxIOB > 0;
}
});
}
}

View file

@ -3,16 +3,17 @@ package info.nightscout.androidaps.plugins.constraints.objectives.objectives;
import java.util.List;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.plugins.constraints.objectives.ObjectivesPlugin;
import info.nightscout.androidaps.utils.T;
public class Objective7 extends Objective {
public Objective7() {
super(6, R.string.objectives_6_objective, 0);
super("autosens", R.string.objectives_autosens_objective, R.string.objectives_autosens_gate);
}
@Override
protected void setupTasks(List<Task> tasks) {
tasks.add(new MinimumDurationTask(T.days(28).msecs()));
tasks.add(new MinimumDurationTask(T.days(7).msecs()));
}
}

View file

@ -3,12 +3,13 @@ package info.nightscout.androidaps.plugins.constraints.objectives.objectives;
import java.util.List;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.plugins.constraints.objectives.ObjectivesPlugin;
import info.nightscout.androidaps.utils.T;
public class Objective8 extends Objective {
public Objective8() {
super(7, R.string.objectives_7_objective, R.string.objectives_7_gate);
super("ama", R.string.objectives_ama_objective, 0);
}
@Override

View file

@ -0,0 +1,18 @@
package info.nightscout.androidaps.plugins.constraints.objectives.objectives;
import java.util.List;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.utils.T;
public class Objective9 extends Objective {
public Objective9() {
super("smb", R.string.objectives_smb_objective, R.string.objectives_smb_gate);
}
@Override
protected void setupTasks(List<Task> tasks) {
tasks.add(new MinimumDurationTask(T.days(28).msecs()));
}
}

View file

@ -5,13 +5,13 @@ import android.app.Activity;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import androidx.fragment.app.FragmentManager;
import com.squareup.otto.Subscribe;
import java.util.ArrayList;
@ -43,31 +43,21 @@ import info.nightscout.androidaps.plugins.general.careportal.CareportalFragment;
import info.nightscout.androidaps.plugins.general.careportal.Dialogs.NewNSTreatmentDialog;
import info.nightscout.androidaps.plugins.general.careportal.OptionsToShow;
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin;
import info.nightscout.androidaps.utils.FabricPrivacy;
import info.nightscout.androidaps.utils.SP;
import info.nightscout.androidaps.utils.SingleClickButton;
/**
* A simple {@link Fragment} subclass.
*/
public class ActionsFragment extends SubscriberFragment implements View.OnClickListener {
static ActionsPlugin actionsPlugin = new ActionsPlugin();
static public ActionsPlugin getPlugin() {
return actionsPlugin;
}
View actionsFragmentView;
SingleClickButton profileSwitch;
SingleClickButton tempTarget;
SingleClickButton extendedBolus;
SingleClickButton extendedBolusCancel;
SingleClickButton tempBasal;
SingleClickButton tempBasalCancel;
SingleClickButton fill;
SingleClickButton tddStats;
SingleClickButton history;
private View actionsFragmentView;
private SingleClickButton profileSwitch;
private SingleClickButton tempTarget;
private SingleClickButton extendedBolus;
private SingleClickButton extendedBolusCancel;
private SingleClickButton tempBasal;
private SingleClickButton tempBasalCancel;
private SingleClickButton fill;
private SingleClickButton tddStats;
private SingleClickButton history;
private Map<String, CustomAction> pumpCustomActions = new HashMap<>();
private List<SingleClickButton> pumpCustomButtons = new ArrayList<>();
@ -80,38 +70,33 @@ public class ActionsFragment extends SubscriberFragment implements View.OnClickL
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
try {
View view = inflater.inflate(R.layout.actions_fragment, container, false);
View view = inflater.inflate(R.layout.actions_fragment, container, false);
profileSwitch = (SingleClickButton) view.findViewById(R.id.actions_profileswitch);
tempTarget = (SingleClickButton) view.findViewById(R.id.actions_temptarget);
extendedBolus = (SingleClickButton) view.findViewById(R.id.actions_extendedbolus);
extendedBolusCancel = (SingleClickButton) view.findViewById(R.id.actions_extendedbolus_cancel);
tempBasal = (SingleClickButton) view.findViewById(R.id.actions_settempbasal);
tempBasalCancel = (SingleClickButton) view.findViewById(R.id.actions_canceltempbasal);
fill = (SingleClickButton) view.findViewById(R.id.actions_fill);
tddStats = view.findViewById(R.id.actions_tddstats);
history = view.findViewById(R.id.actions_historybrowser);
profileSwitch = view.findViewById(R.id.actions_profileswitch);
tempTarget = view.findViewById(R.id.actions_temptarget);
extendedBolus = view.findViewById(R.id.actions_extendedbolus);
extendedBolusCancel = view.findViewById(R.id.actions_extendedbolus_cancel);
tempBasal = view.findViewById(R.id.actions_settempbasal);
tempBasalCancel = view.findViewById(R.id.actions_canceltempbasal);
fill = view.findViewById(R.id.actions_fill);
tddStats = view.findViewById(R.id.actions_tddstats);
history = view.findViewById(R.id.actions_historybrowser);
profileSwitch.setOnClickListener(this);
tempTarget.setOnClickListener(this);
extendedBolus.setOnClickListener(this);
extendedBolusCancel.setOnClickListener(this);
tempBasal.setOnClickListener(this);
tempBasalCancel.setOnClickListener(this);
fill.setOnClickListener(this);
history.setOnClickListener(this);
tddStats.setOnClickListener(this);
profileSwitch.setOnClickListener(this);
tempTarget.setOnClickListener(this);
extendedBolus.setOnClickListener(this);
extendedBolusCancel.setOnClickListener(this);
tempBasal.setOnClickListener(this);
tempBasalCancel.setOnClickListener(this);
fill.setOnClickListener(this);
history.setOnClickListener(this);
tddStats.setOnClickListener(this);
actionsFragmentView = view;
actionsFragmentView = view;
updateGUI();
return view;
} catch (Exception e) {
FabricPrivacy.logException(e);
}
return null;
updateGUI();
SP.putBoolean(R.string.key_objectiveuseactions, true);
return view;
}
@Subscribe

View file

@ -1,23 +0,0 @@
package info.nightscout.androidaps.plugins.general.actions;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.interfaces.PluginBase;
import info.nightscout.androidaps.interfaces.PluginDescription;
import info.nightscout.androidaps.interfaces.PluginType;
/**
* Created by mike on 05.11.2016.
*/
public class ActionsPlugin extends PluginBase {
public ActionsPlugin() {
super(new PluginDescription()
.mainType(PluginType.GENERAL)
.fragmentClass(ActionsFragment.class.getName())
.pluginName(R.string.actions)
.shortName(R.string.actions_shortname)
.description(R.string.description_actions)
);
}
}

View file

@ -0,0 +1,13 @@
package info.nightscout.androidaps.plugins.general.actions
import info.nightscout.androidaps.R
import info.nightscout.androidaps.interfaces.PluginBase
import info.nightscout.androidaps.interfaces.PluginDescription
import info.nightscout.androidaps.interfaces.PluginType
object ActionsPlugin : PluginBase(PluginDescription()
.mainType(PluginType.GENERAL)
.fragmentClass(ActionsFragment::class.java.name)
.pluginName(R.string.actions)
.shortName(R.string.actions_shortname)
.description(R.string.description_actions))

View file

@ -84,14 +84,13 @@ class EventListAdapter extends RecyclerView.Adapter<EventListAdapter.ViewHolder>
// enabled event
holder.enabled.setOnCheckedChangeListener((buttonView, isChecked) -> {
event.setEnabled(isChecked);
notifyDataSetChanged();
RxBus.INSTANCE.send(new EventAutomationDataChanged());
});
// remove event
holder.iconTrash.setOnClickListener(v -> {
mEventList.remove(event);
notifyDataSetChanged();
RxBus.INSTANCE.send(new EventAutomationDataChanged());
});
// edit event

View file

@ -71,7 +71,7 @@ public class ActionStartTempTarget extends Action {
int unitResId = value.getUnits().equals(Constants.MGDL) ? R.string.mgdl : R.string.mmol;
new LayoutBuilder()
.add(new LabelWithElement(MainApp.gs(R.string.careportal_temporarytarget), MainApp.gs(unitResId), value))
.add(new LabelWithElement(MainApp.gs(R.string.careportal_temporarytarget) + " [" + MainApp.gs(unitResId) + "]", "", value))
.add(new LabelWithElement(MainApp.gs(R.string.careportal_newnstreatment_duration_min_label), "", duration))
.build(root);
}

View file

@ -26,7 +26,7 @@ class ChooseActionDialog : DialogFragment() {
checkedIndex = bundle.getInt("checkedIndex")
}
dialog.setCanceledOnTouchOutside(false)
dialog?.setCanceledOnTouchOutside(false)
return inflater.inflate(R.layout.automation_dialog_choose_action, container, false)
}

View file

@ -29,7 +29,7 @@ class ChooseTriggerDialog : DialogFragment() {
checkedIndex = bundle.getInt("checkedIndex")
}
dialog.setCanceledOnTouchOutside(false)
dialog?.setCanceledOnTouchOutside(false)
return inflater.inflate(R.layout.automation_dialog_choose_trigger, container, false)
}

View file

@ -26,7 +26,7 @@ class EditActionDialog : DialogFragment() {
bundle.getString("action")?.let { action = Action.instantiate(JSONObject(it)) }
}
dialog.setCanceledOnTouchOutside(false)
dialog?.setCanceledOnTouchOutside(false)
return inflater.inflate(R.layout.automation_dialog_action, container, false)
}

View file

@ -35,7 +35,7 @@ class EditEventDialog : DialogFragment() {
bundle.getString("event")?.let { event = AutomationEvent().fromJSON(it) }
}
dialog.setCanceledOnTouchOutside(false)
dialog?.setCanceledOnTouchOutside(false)
return inflater.inflate(R.layout.automation_dialog_event, container, false)
}

View file

@ -23,7 +23,7 @@ class EditTriggerDialog : DialogFragment() {
bundle.getString("trigger")?.let { trigger = Trigger.instantiate(it) }
}
dialog.setCanceledOnTouchOutside(false)
dialog?.setCanceledOnTouchOutside(false)
return inflater.inflate(R.layout.automation_dialog_edit_trigger, container, false)
}

View file

@ -25,8 +25,8 @@ public class InputDouble extends Element {
};
private double value;
double minValue;
double maxValue;
private double minValue;
private double maxValue;
private double step;
private DecimalFormat decimalFormat;

View file

@ -20,6 +20,11 @@ public class InputDuration extends Element {
this.value = value;
}
public InputDuration(InputDuration another) {
unit = another.unit;
value = another.value;
}
@Override
public void addToLayout(LinearLayout root) {
NumberPicker numberPicker = new NumberPicker(root.getContext(), null);

View file

@ -1,5 +1,7 @@
package info.nightscout.androidaps.plugins.general.automation.elements;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.LinearLayout;
import java.text.DecimalFormat;
@ -17,13 +19,29 @@ public class InputTempTarget extends Element {
private double step;
private DecimalFormat decimalFormat;
private final TextWatcher textWatcher = new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
value = Math.max(minValue, value);
value = Math.min(maxValue, value);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
};
public InputTempTarget() {
super();
setUnits(ProfileFunctions.getInstance().getProfileUnits());
if (getUnits().equals(Constants.MMOL))
value = Constants.MIN_TT_MMOL;
value = 6;
else
value = Constants.MIN_TT_MGDL;
value = 110;
}
public InputTempTarget(InputTempTarget another) {
@ -36,7 +54,7 @@ public class InputTempTarget extends Element {
@Override
public void addToLayout(LinearLayout root) {
NumberPicker numberPicker = new NumberPicker(root.getContext(), null);
numberPicker.setParams(value, minValue, maxValue, step, decimalFormat, true, null, null);
numberPicker.setParams(value, minValue, maxValue, step, decimalFormat, true, null, textWatcher);
numberPicker.setOnValueChangedListener(value -> this.value = value);
root.addView(numberPicker);
}

View file

@ -3,6 +3,7 @@ package info.nightscout.androidaps.plugins.general.automation.elements;
import android.graphics.Typeface;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TableLayout;
import android.widget.TextView;
import info.nightscout.androidaps.MainApp;
@ -37,6 +38,10 @@ public class LabelWithElement extends Element {
textViewPre.setTypeface(textViewPre.getTypeface(), Typeface.BOLD);
layout.addView(textViewPre);
TextView spacer = new TextView(root.getContext());
spacer.setLayoutParams(new TableLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, 1f));
layout.addView(spacer);
// add element to layout
element.addToLayout(layout);

View file

@ -11,8 +11,6 @@ import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.text.DecimalFormat;
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.logging.L;
@ -28,9 +26,7 @@ import info.nightscout.androidaps.utils.T;
public class TriggerBolusAgo extends Trigger {
private static Logger log = LoggerFactory.getLogger(L.AUTOMATION);
private final double step = 1;
private DecimalFormat decimalFormat = new DecimalFormat("1");
public InputDuration minutesAgo = new InputDuration(0, InputDuration.TimeUnit.MINUTES);
private InputDuration minutesAgo = new InputDuration(0, InputDuration.TimeUnit.MINUTES);
private Comparator comparator = new Comparator();
public TriggerBolusAgo() {
@ -39,7 +35,7 @@ public class TriggerBolusAgo extends Trigger {
private TriggerBolusAgo(TriggerBolusAgo triggerBolusAgo) {
super();
minutesAgo = new InputDuration(triggerBolusAgo.minutesAgo.getMinutes(), InputDuration.TimeUnit.MINUTES);
minutesAgo = new InputDuration(triggerBolusAgo.minutesAgo);
lastRun = triggerBolusAgo.lastRun;
comparator = new Comparator(triggerBolusAgo.comparator);
}

View file

@ -32,10 +32,8 @@ import info.nightscout.androidaps.utils.T;
public class TriggerCOB extends Trigger {
private static Logger log = LoggerFactory.getLogger(L.AUTOMATION);
private final int minValue = 0;
private final int maxValue = (int) (SP.getInt(R.string.key_treatmentssafety_maxcarbs, 48));
private final double step = 1;
private DecimalFormat decimalFormat = new DecimalFormat("1");
private InputDouble value = new InputDouble(0, (double) minValue, (double) maxValue, step, decimalFormat);
private final int maxValue = SP.getInt(R.string.key_treatmentssafety_maxcarbs, 48);
private InputDouble value = new InputDouble(0, (double) minValue, (double) maxValue, 1, new DecimalFormat("1"));
private Comparator comparator = new Comparator();
public TriggerCOB() {

View file

@ -51,10 +51,11 @@ public class TriggerDelta extends Trigger {
private TriggerDelta(TriggerDelta triggerDelta) {
super();
this.units = ProfileFunctions.getInstance().getProfileUnits();
initializer();
value = triggerDelta.value;
lastRun = triggerDelta.lastRun;
this.units = triggerDelta.units;
deltaType = triggerDelta.deltaType;
value = new InputDelta(triggerDelta.value);
comparator = new Comparator(triggerDelta.comparator);
}
public double getValue() {
@ -68,7 +69,7 @@ public class TriggerDelta extends Trigger {
if (units.equals(Constants.MMOL))
value = new InputDelta(0, -MMOL_MAX, MMOL_MAX, 0.1d, new DecimalFormat("0.1"), DeltaType.DELTA);
else
value = new InputDelta(0, -MGDL_MAX, MGDL_MAX, 0.1d, new DecimalFormat("1"), DeltaType.DELTA);
value = new InputDelta(0, -MGDL_MAX, MGDL_MAX, 1d, new DecimalFormat("1"), DeltaType.DELTA);
}

View file

@ -51,10 +51,11 @@ public class TriggerLocation extends Trigger {
private TriggerLocation(TriggerLocation triggerLocation) {
super();
latitude = new InputDouble(triggerLocation.latitude.getValue(), -90d, +90d, 0.00001d, new DecimalFormat("0.00000"));
longitude = new InputDouble(triggerLocation.longitude.getValue(), -180d, +180d, 0.00001d, new DecimalFormat("0.00000"));
distance = new InputDouble(200d, 0, 100000, 10d, new DecimalFormat("0"));
latitude = new InputDouble(triggerLocation.latitude);
longitude = new InputDouble(triggerLocation.longitude);
distance = new InputDouble(triggerLocation.distance);
lastRun = triggerLocation.lastRun;
name = triggerLocation.name;
}
@Override

View file

@ -65,7 +65,7 @@ public class TriggerWifiSsid extends Trigger {
return true;
}
boolean doRun = eventNetworkChange.wifiConnected && comparator.getValue().check(eventNetworkChange.ssid, getValue());
boolean doRun = eventNetworkChange.wifiConnected && comparator.getValue().check(eventNetworkChange.getSsid(), getValue());
if (doRun) {
if (L.isEnabled(L.AUTOMATION))
log.debug("Ready for execution: " + friendlyDescription());

View file

@ -22,12 +22,16 @@ import info.nightscout.androidaps.R;
import info.nightscout.androidaps.data.ProfileStore;
import info.nightscout.androidaps.db.CareportalEvent;
import info.nightscout.androidaps.events.EventCareportalEventChange;
import info.nightscout.androidaps.interfaces.PumpInterface;
import info.nightscout.androidaps.plugins.general.careportal.Dialogs.NewNSTreatmentDialog;
import info.nightscout.androidaps.plugins.common.SubscriberFragment;
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin;
import info.nightscout.androidaps.plugins.general.nsclient.data.NSSettingsStatus;
import info.nightscout.androidaps.plugins.general.overview.OverviewFragment;
import info.nightscout.androidaps.utils.DecimalFormatter;
import info.nightscout.androidaps.utils.FabricPrivacy;
import info.nightscout.androidaps.utils.SP;
import info.nightscout.androidaps.utils.SetWarnColor;
public class CareportalFragment extends SubscriberFragment implements View.OnClickListener {
private static Logger log = LoggerFactory.getLogger(CareportalFragment.class);
@ -91,15 +95,15 @@ public class CareportalFragment extends SubscriberFragment implements View.OnCli
view.findViewById(R.id.careportal_openapsoffline).setOnClickListener(this);
view.findViewById(R.id.careportal_temporarytarget).setOnClickListener(this);
iage = (TextView) view.findViewById(R.id.careportal_insulinage);
cage = (TextView) view.findViewById(R.id.careportal_canulaage);
sage = (TextView) view.findViewById(R.id.careportal_sensorage);
pbage = (TextView) view.findViewById(R.id.careportal_pbage);
iage = view.findViewById(R.id.careportal_insulinage);
cage = view.findViewById(R.id.careportal_canulaage);
sage = view.findViewById(R.id.careportal_sensorage);
pbage = view.findViewById(R.id.careportal_pbage);
statsLayout = view.findViewById(R.id.careportal_stats);
noProfileView = view.findViewById(R.id.profileview_noprofile);
butonsLayout = (LinearLayout) view.findViewById(R.id.careportal_buttons);
butonsLayout = view.findViewById(R.id.careportal_buttons);
ProfileStore profileStore = ConfigBuilderPlugin.getPlugin().getActiveProfileInterface() != null ? ConfigBuilderPlugin.getPlugin().getActiveProfileInterface().getProfile() : null;
if (profileStore == null) {
@ -249,13 +253,17 @@ public class CareportalFragment extends SubscriberFragment implements View.OnCli
}
private static TextView handleAge(final TextView age, String eventType, double warnThreshold, double urgentThreshold) {
String notavailable = OverviewFragment.shorttextmode ? "-" : MainApp.gs(R.string.notavailable);
return handleAge(age, "", eventType, warnThreshold, urgentThreshold, OverviewFragment.shorttextmode);
}
public static TextView handleAge(final TextView age, String prefix, String eventType, double warnThreshold, double urgentThreshold, boolean useShortText) {
String notavailable = useShortText ? "-" : MainApp.gs(R.string.notavailable);
if (age != null) {
CareportalEvent careportalEvent = MainApp.getDbHelper().getLastCareportalEvent(eventType);
if (careportalEvent != null) {
age.setTextColor(CareportalFragment.determineTextColor(careportalEvent, warnThreshold, urgentThreshold));
age.setText(careportalEvent.age());
age.setText(prefix + careportalEvent.age(useShortText));
} else {
age.setText(notavailable);
}

View file

@ -741,6 +741,8 @@ public class NewNSTreatmentDialog extends DialogFragment implements View.OnClick
}
TreatmentsPlugin.getPlugin().addToHistoryTempTarget(tempTarget);
}
if (duration == 10)
SP.putBoolean(R.string.key_objectiveusetemptarget, true);
} else {
if (JsonHelper.safeGetString(data, "eventType").equals(CareportalEvent.PROFILESWITCH)) {
ProfileSwitch profileSwitch = ProfileFunctions.prepareProfileSwitch(

View file

@ -17,10 +17,9 @@ import java.util.Map;
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.logging.L;
import info.nightscout.androidaps.plugins.constraints.objectives.ObjectivesPlugin;
import info.nightscout.androidaps.plugins.aps.loop.APSResult;
import info.nightscout.androidaps.logging.BundleLogger;
import info.nightscout.androidaps.logging.L;
import info.nightscout.androidaps.plugins.aps.loop.APSResult;
import info.nightscout.androidaps.utils.DateUtil;
import info.nightscout.androidaps.utils.Round;
import info.nightscout.androidaps.utils.SP;
@ -108,8 +107,7 @@ public class NSDeviceStatus {
setData(devicestatusJson);
if (devicestatusJson.has("pump")) {
// Objectives 0
ObjectivesPlugin.getPlugin().pumpStatusIsAvailableInNS = true;
ObjectivesPlugin.getPlugin().saveProgress();
SP.putBoolean(R.string.key_ObjectivespumpStatusIsAvailableInNS, true);
}
}
if (bundle.containsKey("devicestatuses")) {
@ -120,8 +118,7 @@ public class NSDeviceStatus {
setData(devicestatusJson);
if (devicestatusJson.has("pump")) {
// Objectives 0
ObjectivesPlugin.getPlugin().pumpStatusIsAvailableInNS = true;
ObjectivesPlugin.getPlugin().saveProgress();
SP.putBoolean(R.string.key_ObjectivespumpStatusIsAvailableInNS, true);
}
}
}

View file

@ -4,8 +4,6 @@ import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.NotificationManager;
import androidx.arch.core.util.Function;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
@ -60,7 +58,6 @@ import info.nightscout.androidaps.data.IobTotal;
import info.nightscout.androidaps.data.Profile;
import info.nightscout.androidaps.data.QuickWizardEntry;
import info.nightscout.androidaps.db.BgReading;
import info.nightscout.androidaps.db.CareportalEvent;
import info.nightscout.androidaps.db.DatabaseHelper;
import info.nightscout.androidaps.db.ExtendedBolus;
import info.nightscout.androidaps.db.Source;
@ -92,7 +89,6 @@ import info.nightscout.androidaps.plugins.general.careportal.Dialogs.NewNSTreatm
import info.nightscout.androidaps.plugins.general.careportal.OptionsToShow;
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload;
import info.nightscout.androidaps.plugins.general.nsclient.data.NSDeviceStatus;
import info.nightscout.androidaps.plugins.general.nsclient.data.NSSettingsStatus;
import info.nightscout.androidaps.plugins.general.overview.activities.QuickWizardListActivity;
import info.nightscout.androidaps.plugins.general.overview.dialogs.CalibrationDialog;
import info.nightscout.androidaps.plugins.general.overview.dialogs.NewCarbsDialog;
@ -258,17 +254,17 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
apsModeView = (TextView) view.findViewById(R.id.overview_apsmode);
tempTargetView = (TextView) view.findViewById(R.id.overview_temptarget);
iage = (TextView) view.findViewById(R.id.careportal_insulinage);
cage = (TextView) view.findViewById(R.id.careportal_canulaage);
sage = (TextView) view.findViewById(R.id.careportal_sensorage);
pbage = (TextView) view.findViewById(R.id.careportal_pbage);
iage = view.findViewById(R.id.careportal_insulinage);
cage = view.findViewById(R.id.careportal_canulaage);
sage = view.findViewById(R.id.careportal_sensorage);
pbage = view.findViewById(R.id.careportal_pbage);
iageView = (TextView) view.findViewById(R.id.overview_insulinage);
cageView = (TextView) view.findViewById(R.id.overview_canulaage);
reservoirView = (TextView) view.findViewById(R.id.overview_reservoirlevel);
sageView = (TextView) view.findViewById(R.id.overview_sensorage);
batteryView = (TextView) view.findViewById(R.id.overview_batterylevel);
statuslightsLayout = (LinearLayout) view.findViewById(R.id.overview_statuslights);
iageView = view.findViewById(R.id.overview_insulinage);
cageView = view.findViewById(R.id.overview_canulaage);
reservoirView = view.findViewById(R.id.overview_reservoirlevel);
sageView = view.findViewById(R.id.overview_sensorage);
batteryView = view.findViewById(R.id.overview_batterylevel);
statuslightsLayout = view.findViewById(R.id.overview_statuslights);
bgGraph = (GraphView) view.findViewById(R.id.overview_bggraph);
iobGraph = (GraphView) view.findViewById(R.id.overview_iobgraph);
@ -334,6 +330,7 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
rangeToDisplay = rangeToDisplay > 24 ? 6 : rangeToDisplay;
SP.putInt(R.string.key_rangetodisplay, rangeToDisplay);
updateGUI("rangeChange");
SP.putBoolean(R.string.key_objectiveusescale, true);
return false;
});
@ -592,6 +589,7 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
}
}
});
SP.putBoolean(R.string.key_objectiveusereconnect, true);
NSUpload.uploadOpenAPSOffline(0);
return true;
} else if (item.getTitle().equals(MainApp.gs(R.string.suspendloopfor1h))) {
@ -620,6 +618,7 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
return true;
} else if (item.getTitle().equals(MainApp.gs(R.string.disconnectpumpfor1h))) {
LoopPlugin.getPlugin().disconnectPump(60, profile);
SP.putBoolean(R.string.key_objectiveusedisconnect, true);
updateGUI("suspendmenu");
return true;
} else if (item.getTitle().equals(MainApp.gs(R.string.disconnectpumpfor2h))) {
@ -1324,55 +1323,19 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
cobView.setText(cobText);
}
if (statuslightsLayout != null) {
if (statuslightsLayout != null)
if (SP.getBoolean(R.string.key_show_statuslights, false)) {
CareportalEvent careportalEvent;
NSSettingsStatus nsSettings = new NSSettingsStatus().getInstance();
double iageUrgent = nsSettings.getExtendedWarnValue("iage", "urgent", 96);
double iageWarn = nsSettings.getExtendedWarnValue("iage", "warn", 72);
double cageUrgent = nsSettings.getExtendedWarnValue("cage", "urgent", 72);
double cageWarn = nsSettings.getExtendedWarnValue("cage", "warn", 48);
double sageUrgent = nsSettings.getExtendedWarnValue("sage", "urgent", 166);
double sageWarn = nsSettings.getExtendedWarnValue("sage", "warn", 164);
//double pbageUrgent = nsSettings.getExtendedWarnValue("pgage", "urgent", 360);
//double pbageWarn = nsSettings.getExtendedWarnValue("pgage", "warn", 240);
double batUrgent = SP.getDouble(R.string.key_statuslights_bat_critical, 5.0);
double batWarn = SP.getDouble(R.string.key_statuslights_bat_warning, 25.0);
double resUrgent = SP.getDouble(R.string.key_statuslights_res_critical, 10.0);
double resWarn = SP.getDouble(R.string.key_statuslights_res_warning, 80.0);
if (cageView != null) {
careportalEvent = MainApp.getDbHelper().getLastCareportalEvent(CareportalEvent.SITECHANGE);
double canAge = careportalEvent != null ? careportalEvent.getHoursFromStart() : Double.MAX_VALUE;
applyStatuslight(cageView, "CAN", canAge, cageWarn, cageUrgent, Double.MAX_VALUE, true);
StatuslightHandler handler = new StatuslightHandler();
if (SP.getBoolean(R.string.key_show_statuslights_extended, false)) {
handler.extendedStatuslight(cageView, iageView, reservoirView, sageView, batteryView);
statuslightsLayout.setVisibility(View.VISIBLE);
} else {
handler.statuslight(cageView, iageView, reservoirView, sageView, batteryView);
statuslightsLayout.setVisibility(View.VISIBLE);
}
if (iageView != null) {
careportalEvent = MainApp.getDbHelper().getLastCareportalEvent(CareportalEvent.INSULINCHANGE);
double insulinAge = careportalEvent != null ? careportalEvent.getHoursFromStart() : Double.MAX_VALUE;
applyStatuslight(iageView, "INS", insulinAge, iageWarn, iageUrgent, Double.MAX_VALUE, true);
}
if (reservoirView != null) {
double reservoirLevel = pump.isInitialized() ? pump.getReservoirLevel() : -1;
applyStatuslight(reservoirView, "RES", reservoirLevel, resWarn, resUrgent, -1, false);
}
if (sageView != null) {
careportalEvent = MainApp.getDbHelper().getLastCareportalEvent(CareportalEvent.SENSORCHANGE);
double sensorAge = careportalEvent != null ? careportalEvent.getHoursFromStart() : Double.MAX_VALUE;
applyStatuslight(sageView, "SEN", sensorAge, sageWarn, sageUrgent, Double.MAX_VALUE, true);
}
if (batteryView != null) {
double batteryLevel = pump.isInitialized() ? pump.getBatteryLevel() : -1;
applyStatuslight(batteryView, "BAT", batteryLevel, batWarn, batUrgent, -1, false);
}
statuslightsLayout.setVisibility(View.VISIBLE);
} else {
statuslightsLayout.setVisibility(View.GONE);
}
}
boolean predictionsAvailable;
if (Config.APS)
@ -1559,21 +1522,5 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
Profiler.log(log, from, updateGUIStart);
}
public static void applyStatuslight(TextView view, String text, double value, double warnThreshold, double urgentThreshold, double invalid, boolean checkAscending) {
Function<Double, Boolean> check = checkAscending ? (Double threshold) -> value >= threshold : (Double threshold) -> value <= threshold;
if (value != invalid) {
view.setText(text);
if (check.apply(urgentThreshold)) {
view.setTextColor(MainApp.gc(R.color.ribbonCritical));
} else if (check.apply(warnThreshold)) {
view.setTextColor(MainApp.gc(R.color.ribbonWarning));
} else {
view.setTextColor(MainApp.gc(R.color.ribbonDefault));
}
view.setVisibility(View.VISIBLE);
} else {
view.setVisibility(View.GONE);
}
}
}

View file

@ -0,0 +1,135 @@
package info.nightscout.androidaps.plugins.general.overview;
import android.view.View;
import android.widget.TextView;
import androidx.arch.core.util.Function;
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.db.CareportalEvent;
import info.nightscout.androidaps.interfaces.PumpInterface;
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin;
import info.nightscout.androidaps.plugins.general.careportal.CareportalFragment;
import info.nightscout.androidaps.plugins.general.nsclient.data.NSSettingsStatus;
import info.nightscout.androidaps.utils.DecimalFormatter;
import info.nightscout.androidaps.utils.SP;
import info.nightscout.androidaps.utils.SetWarnColor;
class StatuslightHandler {
/**
* applies the statuslight subview on the overview fragement
*/
void statuslight(TextView cageView, TextView iageView, TextView reservoirView,
TextView sageView, TextView batteryView) {
PumpInterface pump = ConfigBuilderPlugin.getPlugin().getActivePump();
applyStatuslight("cage", CareportalEvent.SITECHANGE, cageView, "CAN", 48, 72);
applyStatuslight("iage", CareportalEvent.INSULINCHANGE, iageView, "INS", 72, 96);
double reservoirLevel = pump.isInitialized() ? pump.getReservoirLevel() : -1;
applyStatuslightLevel(R.string.key_statuslights_res_critical, 10.0,
R.string.key_statuslights_res_warning, 80.0, reservoirView, "RES", reservoirLevel);
applyStatuslight("sage", CareportalEvent.SENSORCHANGE, sageView, "SEN", 164, 166);
double batteryLevel = pump.isInitialized() ? pump.getBatteryLevel() : -1;
applyStatuslightLevel(R.string.key_statuslights_bat_critical, 5.0,
R.string.key_statuslights_bat_warning, 22.0,
batteryView, "BAT", batteryLevel);
}
void applyStatuslight(String nsSettingPlugin, String eventName, TextView view, String text,
int defaultWarnThreshold, int defaultUrgentThreshold) {
NSSettingsStatus nsSettings = NSSettingsStatus.getInstance();
if (view != null) {
double urgent = nsSettings.getExtendedWarnValue(nsSettingPlugin, "urgent", defaultUrgentThreshold);
double warn = nsSettings.getExtendedWarnValue(nsSettingPlugin, "warn", defaultWarnThreshold);
CareportalEvent event = MainApp.getDbHelper().getLastCareportalEvent(eventName);
double age = event != null ? event.getHoursFromStart() : Double.MAX_VALUE;
applyStatuslight(view, text, age, warn, urgent, Double.MAX_VALUE, true);
}
}
void applyStatuslightLevel(int criticalSetting, double criticalDefaultValue,
int warnSetting, double warnDefaultValue,
TextView view, String text, double level) {
if (view != null) {
double resUrgent = SP.getDouble(criticalSetting, criticalDefaultValue);
double resWarn = SP.getDouble(warnSetting, warnDefaultValue);
applyStatuslight(view, text, level, resWarn, resUrgent, -1, false);
}
}
void applyStatuslight(TextView view, String text, double value, double warnThreshold,
double urgentThreshold, double invalid, boolean checkAscending) {
Function<Double, Boolean> check = checkAscending ? (Double threshold) -> value >= threshold :
(Double threshold) -> value <= threshold;
if (value != invalid) {
view.setText(text);
if (check.apply(urgentThreshold)) {
view.setTextColor(MainApp.gc(R.color.ribbonCritical));
} else if (check.apply(warnThreshold)) {
view.setTextColor(MainApp.gc(R.color.ribbonWarning));
} else {
view.setTextColor(MainApp.gc(R.color.ribbonDefault));
}
view.setVisibility(View.VISIBLE);
} else {
view.setVisibility(View.GONE);
}
}
/**
* applies the extended statuslight subview on the overview fragement
*/
void extendedStatuslight(TextView cageView, TextView iageView,
TextView reservoirView, TextView sageView,
TextView batteryView) {
PumpInterface pump = ConfigBuilderPlugin.getPlugin().getActivePump();
handleAge("cage", CareportalEvent.SITECHANGE, cageView, "CAN ",
48, 72);
handleAge("iage", CareportalEvent.INSULINCHANGE, iageView, "INS ",
72, 96);
handleLevel(R.string.key_statuslights_res_critical, 10.0,
R.string.key_statuslights_res_warning, 80.0,
reservoirView, "RES ", pump.getReservoirLevel());
handleAge("sage", CareportalEvent.SENSORCHANGE, sageView, "SEN ",
164, 166);
handleLevel(R.string.key_statuslights_bat_critical, 26.0,
R.string.key_statuslights_bat_warning, 51.0,
batteryView, "BAT ", pump.getBatteryLevel());
}
void handleAge(String nsSettingPlugin, String eventName, TextView view, String text,
int defaultUrgentThreshold, int defaultWarnThreshold) {
NSSettingsStatus nsSettings = new NSSettingsStatus().getInstance();
if (view != null) {
double urgent = nsSettings.getExtendedWarnValue(nsSettingPlugin, "urgent", defaultUrgentThreshold);
double warn = nsSettings.getExtendedWarnValue(nsSettingPlugin, "warn", defaultWarnThreshold);
CareportalFragment.handleAge(view, text, eventName, warn, urgent, true);
}
}
void handleLevel(int criticalSetting, double criticalDefaultValue,
int warnSetting, double warnDefaultValue,
TextView view, String text, double level) {
if (view != null) {
double resUrgent = SP.getDouble(criticalSetting, criticalDefaultValue);
double resWarn = SP.getDouble(warnSetting, warnDefaultValue);
view.setText(text + DecimalFormatter.to0Decimal(level));
SetWarnColor.setColorInverse(view, level, resWarn, resUrgent);
}
}
}

View file

@ -24,7 +24,7 @@ class ErrorDialog : DialogFragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
dialog.setTitle(title)
dialog?.setTitle(title)
isCancelable = false
savedInstanceState?.let { bundle ->

View file

@ -53,7 +53,7 @@ class WizardDialog : DialogFragment() {
private var disposable: CompositeDisposable = CompositeDisposable()
override fun onAttach(context: Context?) {
override fun onAttach(context: Context) {
super.onAttach(context)
this.parentContext = context
}
@ -78,10 +78,10 @@ class WizardDialog : DialogFragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
dialog.window?.requestFeature(Window.FEATURE_NO_TITLE)
dialog.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)
dialog?.window?.requestFeature(Window.FEATURE_NO_TITLE)
dialog?.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)
isCancelable = true
dialog.setCanceledOnTouchOutside(false)
dialog?.setCanceledOnTouchOutside(false)
return inflater.inflate(R.layout.overview_wizard_dialog, container, false)
}
@ -107,6 +107,7 @@ class WizardDialog : DialogFragment() {
?: 0.0, -60.0, 60.0, 5.0, DecimalFormat("0"), false, ok, textWatcher)
initDialog()
treatments_wizard_percent_used.text = SP.getInt(R.string.key_boluswizard_percentage, 100).toString() + "%"
// ok button
ok.setOnClickListener {
if (okClicked) {
@ -128,6 +129,7 @@ class WizardDialog : DialogFragment() {
treatments_wizard_basaliobcheckbox.setOnCheckedChangeListener { buttonView, _ -> onCheckedChanged(buttonView) }
treatments_wizard_bolusiobcheckbox.setOnCheckedChangeListener { buttonView, _ -> onCheckedChanged(buttonView) }
treatments_wizard_bgtrendcheckbox.setOnCheckedChangeListener { buttonView, _ -> onCheckedChanged(buttonView) }
treatments_wizard_sbcheckbox.setOnCheckedChangeListener { buttonView, _ -> onCheckedChanged(buttonView) }
// profile spinner
treatments_wizard_profile.onItemSelectedListener = object : OnItemSelectedListener {
override fun onNothingSelected(parent: AdapterView<*>?) {

View file

@ -4,8 +4,7 @@ package info.nightscout.androidaps.plugins.pump.common.defs;
* Created by andy on 02/05/2018.
*/
public enum DoseStepSize
{
public enum DoseStepSize {
ComboBasal( //
new DoseStepSizeEntry(0f, 1f, 0.01f), //
@ -26,28 +25,25 @@ public enum DoseStepSize
new DoseStepSizeEntry(0f, 1f, 0.025f), //
new DoseStepSizeEntry(1f, 10f, 0.05f), //
new DoseStepSizeEntry(10f, Double.MAX_VALUE, 0.1f)), //
;
DoseStepSizeEntry[] entries;
DoseStepSize(DoseStepSizeEntry...entries)
{
DoseStepSize(DoseStepSizeEntry... entries) {
this.entries = entries;
}
public double getStepSizeForAmount(double amount)
{
public double getStepSizeForAmount(double amount) {
for (DoseStepSizeEntry entry : entries) {
if (entry.from <= amount && entry.to > amount)
return entry.value;
}
// should never come to this
return entries[entries.length-1].value;
return entries[entries.length - 1].value;
}
@ -61,12 +57,9 @@ public enum DoseStepSize
sb.append(entry.from);
sb.append("-");
if (entry.to == Double.MAX_VALUE)
{
if (entry.to == Double.MAX_VALUE) {
sb.append("~}");
}
else
{
} else {
sb.append(entry.to);
sb.append("}, ");
}
@ -76,15 +69,13 @@ public enum DoseStepSize
}
static class DoseStepSizeEntry
{
static class DoseStepSizeEntry {
double from;
double to;
double value;
// to = this value is not included, but would actually mean <, so for rates between 0.025-0.975 u/h, we would have [from=0, to=10]
DoseStepSizeEntry(double from, double to, double value)
{
DoseStepSizeEntry(double from, double to, double value) {
this.from = from;
this.to = to;
this.value = value;

View file

@ -481,7 +481,6 @@ public abstract class AbstractDanaRPlugin extends PluginBase implements PumpInte
if (!veryShort) {
ret += "TDD: " + DecimalFormatter.to0Decimal(pump.dailyTotalUnits) + " / " + pump.maxDailyTotalUnits + " U\n";
}
ret += "IOB: " + pump.iob + "U\n";
ret += "Reserv: " + DecimalFormatter.to0Decimal(pump.reservoirRemainingUnits) + "U\n";
ret += "Batt: " + pump.batteryRemaining + "\n";
return ret;

View file

@ -12,7 +12,7 @@ import java.io.OutputStream;
import info.nightscout.androidaps.logging.L;
import info.nightscout.androidaps.plugins.pump.danaR.comm.MessageBase;
import info.nightscout.androidaps.plugins.pump.danaR.comm.MessageHashTable;
import info.nightscout.androidaps.plugins.pump.danaR.comm.MessageHashTableBase;
import info.nightscout.androidaps.plugins.pump.danaR.services.AbstractSerialIOThread;
import info.nightscout.androidaps.utils.CRC;
@ -30,9 +30,11 @@ public class SerialIOThread extends AbstractSerialIOThread {
private byte[] mReadBuff = new byte[0];
private MessageBase processedMessage;
private MessageHashTableBase hashTable;
public SerialIOThread(BluetoothSocket rfcommSocket) {
public SerialIOThread(BluetoothSocket rfcommSocket, MessageHashTableBase hashTable) {
super();
this.hashTable = hashTable;
mRfCommSocket = rfcommSocket;
try {
@ -68,11 +70,11 @@ public class SerialIOThread extends AbstractSerialIOThread {
message = processedMessage;
} else {
// get it from hash table
message = MessageHashTable.findMessage(command);
message = hashTable.findMessage(command);
}
if (L.isEnabled(L.PUMPBTCOMM))
log.debug("<<<<< " + message.getMessageName() + " " + message.toHexString(extractedBuff));
log.debug("<<<<< " + message.getMessageName() + " " + MessageBase.toHexString(extractedBuff));
// process the message content
message.received = true;
@ -83,14 +85,14 @@ public class SerialIOThread extends AbstractSerialIOThread {
}
}
} catch (Exception e) {
if (e.getMessage().indexOf("bt socket closed") < 0)
if (!e.getMessage().contains("bt socket closed"))
log.error("Thread exception: ", e);
mKeepRunning = false;
}
disconnect("EndOfLoop");
}
void appendToBuffer(byte[] newData, int gotBytes) {
private void appendToBuffer(byte[] newData, int gotBytes) {
// add newData to mReadBuff
byte[] newReadBuff = new byte[mReadBuff.length + gotBytes];
System.arraycopy(mReadBuff, 0, newReadBuff, 0, mReadBuff.length);
@ -98,7 +100,7 @@ public class SerialIOThread extends AbstractSerialIOThread {
mReadBuff = newReadBuff;
}
byte[] cutMessageFromBuffer() {
private byte[] cutMessageFromBuffer() {
if (mReadBuff[0] == (byte) 0x7E && mReadBuff[1] == (byte) 0x7E) {
int length = (mReadBuff[2] & 0xFF) + 7;
// Check if we have enough data
@ -148,7 +150,7 @@ public class SerialIOThread extends AbstractSerialIOThread {
byte[] messageBytes = message.getRawMessageBytes();
if (L.isEnabled(L.PUMPBTCOMM))
log.debug(">>>>> " + message.getMessageName() + " " + message.toHexString(messageBytes));
log.debug(">>>>> " + message.getMessageName() + " " + MessageBase.toHexString(messageBytes));
try {
mOutputStream.write(messageBytes);
@ -165,8 +167,10 @@ public class SerialIOThread extends AbstractSerialIOThread {
}
SystemClock.sleep(200);
if (!message.received) {
log.warn("Reply not received " + message.getMessageName());
if (!message.isReceived()) {
message.handleMessageNotReceived();
if (L.isEnabled(L.PUMPBTCOMM))
log.error("Reply not received " + message.getMessageName());
if (message.getCommand() == 0xF0F1) {
DanaRPump.getInstance().isNewPump = false;
if (L.isEnabled(L.PUMPCOMM))

View file

@ -105,6 +105,9 @@ public class MessageBase {
}
}
public void handleMessageNotReceived() {
}
public int getCommand() {
int command = byteFromRawBuff(buffer, 5) | (byteFromRawBuff(buffer, 4) << 8);
return command;
@ -189,4 +192,8 @@ public class MessageBase {
return sb.toString();
}
public boolean isReceived() {
return received;
}
}

View file

@ -1,82 +0,0 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm;
import java.util.HashMap;
/**
* Created by mike on 28.05.2016.
*/
public class MessageHashTable {
public static HashMap<Integer, MessageBase> messages = null;
static {
if (messages == null) {
messages = new HashMap<Integer, MessageBase>();
put(new MsgBolusStop()); // 0x0101 CMD_MEALINS_STOP
put(new MsgBolusStart()); // 0x0102 CMD_MEALINS_START_DATA
put(new MsgBolusStartWithSpeed()); // 0x0104 CMD_MEALINS_START_DATA_SPEED
put(new MsgBolusProgress()); // 0x0202 CMD_PUMP_THIS_REMAINDER_MEAL_INS
put(new MsgStatusProfile()); // 0x0204 CMD_PUMP_CALCULATION_SETTING
put(new MsgStatusTempBasal()); // 0x0205 CMD_PUMP_EXERCISE_MODE
put(new MsgStatusBolusExtended()); // 0x0207 CMD_PUMP_EXPANS_INS_I
put(new MsgStatusBasic()); // 0x020A CMD_PUMP_INITVIEW_I
put(new MsgStatus()); // 0x020B CMD_PUMP_STATUS
put(new MsgInitConnStatusTime()); // 0x0301 CMD_PUMPINIT_TIME_INFO
put(new MsgInitConnStatusBolus()); // 0x0302 CMD_PUMPINIT_BOLUS_INFO
put(new MsgInitConnStatusBasic()); // 0x0303 CMD_PUMPINIT_INIT_INFO
put(new MsgInitConnStatusOption()); // 0x0304 CMD_PUMPINIT_OPTION
put(new MsgSetTempBasalStart()); // 0x0401 CMD_PUMPSET_EXERCISE_S
put(new MsgSetCarbsEntry()); // 0x0402 CMD_PUMPSET_HIS_S
put(new MsgSetTempBasalStop()); // 0x0403 CMD_PUMPSET_EXERCISE_STOP
put(new MsgSetExtendedBolusStop()); // 0x0406 CMD_PUMPSET_EXPANS_INS_STOP
put(new MsgSetExtendedBolusStart()); // 0x0407 CMD_PUMPSET_EXPANS_INS_S
put(new MsgError()); // 0x0601 CMD_PUMPOWAY_SYSTEM_STATUS
put(new MsgPCCommStart()); // 0x3001 CMD_CONNECT
put(new MsgPCCommStop()); // 0x3002 CMD_DISCONNECT
put(new MsgHistoryBolus()); // 0x3101 CMD_HISTORY_MEAL_INS
put(new MsgHistoryDailyInsulin()); // 0x3102 CMD_HISTORY_DAY_INS
put(new MsgHistoryGlucose()); // 0x3104 CMD_HISTORY_GLUCOSE
put(new MsgHistoryAlarm()); // 0x3105 CMD_HISTORY_ALARM
put(new MsgHistoryError()); // 0x3106 CMD_HISTORY_ERROR
put(new MsgHistoryCarbo()); // 0x3107 CMD_HISTORY_CARBOHY
put(new MsgHistoryRefill()); // 0x3108 CMD_HISTORY_REFILL
put(new MsgHistorySuspend()); // 0x3109 CMD_HISTORY_SUSPEND
put(new MsgHistoryBasalHour()); // 0x310A CMD_HISTORY_BASAL_HOUR
put(new MsgHistoryDone()); // 0x31F1 CMD_HISTORY_DONT_USED
put(new MsgSettingBasal()); // 0x3202 CMD_SETTING_V_BASAL_INS_I
put(new MsgSettingMeal()); // 0x3203 CMD_SETTING_V_MEAL_SETTING_I
put(new MsgSettingProfileRatios()); // 0x3204 CMD_SETTING_V_CCC_I
put(new MsgSettingMaxValues()); // 0x3205 CMD_SETTING_V_MAX_VALUE_I
put(new MsgSettingBasalProfileAll()); // 0x3206 CMD_SETTING_V_BASAL_PROFILE_ALL
put(new MsgSettingShippingInfo()); // 0x3207 CMD_SETTING_V_SHIPPING_I
put(new MsgSettingGlucose()); // 0x3209 CMD_SETTING_V_GLUCOSEandEASY
put(new MsgSettingPumpTime()); // 0x320A CMD_SETTING_V_TIME_I
put(new MsgSettingUserOptions()); // 0x320B CMD_SETTING_V_USER_OPTIONS
put(new MsgSettingActiveProfile()); // 0x320C CMD_SETTING_V_PROFILE_NUMBER
put(new MsgSettingProfileRatiosAll()); // 0x320D CMD_SETTING_V_CIR_CF_VALUE
put(new MsgSetSingleBasalProfile()); // 0x3302 CMD_SETTING_BASAL_INS_S
put(new MsgSetBasalProfile()); // 0x3306 CMD_SETTING_BASAL_PROFILE_S
put(new MsgSetUserOptions()); // 0x330B CMD_SETTING_USER_OPTIONS_S
put(new MsgSetActivateBasalProfile()); // 0x330C CMD_SETTING_PROFILE_NUMBER_S
put(new MsgHistoryAllDone()); // 0x41F1 CMD_HISTORY_ALL_DONE
put(new MsgHistoryAll()); // 0x41F2 CMD_HISTORY_ALL
put(new MsgHistoryNewDone()); // 0x42F1 CMD_HISTORY_NEW_DONE
put(new MsgHistoryNew()); // 0x42F2 CMD_HISTORY_NEW
put(new MsgCheckValue()); // 0xF0F1 CMD_PUMP_CHECK_VALUE
}
}
public static void put(MessageBase message) {
int command = message.getCommand();
//String name = MessageOriginalNames.getName(command);
messages.put(command, message);
//log.debug(String.format("%04x ", command) + " " + name);
}
public static MessageBase findMessage(Integer command) {
if (messages.containsKey(command)) {
return messages.get(command);
} else {
return new MessageBase();
}
}
}

View file

@ -0,0 +1,6 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
interface MessageHashTableBase {
fun put(message: MessageBase)
fun findMessage(command: Int): MessageBase
}

View file

@ -0,0 +1,69 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
import java.util.*
object MessageHashTableR : MessageHashTableBase {
var messages: HashMap<Int, MessageBase> = HashMap()
init {
put(MsgBolusStop()) // 0x0101 CMD_MEALINS_STOP
put(MsgBolusStart()) // 0x0102 CMD_MEALINS_START_DATA
put(MsgBolusStartWithSpeed()) // 0x0104 CMD_MEALINS_START_DATA_SPEED
put(MsgBolusProgress()) // 0x0202 CMD_PUMP_THIS_REMAINDER_MEAL_INS
put(MsgStatusProfile()) // 0x0204 CMD_PUMP_CALCULATION_SETTING
put(MsgStatusTempBasal()) // 0x0205 CMD_PUMP_EXERCISE_MODE
put(MsgStatusBolusExtended()) // 0x0207 CMD_PUMP_EXPANS_INS_I
put(MsgStatusBasic()) // 0x020A CMD_PUMP_INITVIEW_I
put(MsgStatus()) // 0x020B CMD_PUMP_STATUS
put(MsgInitConnStatusTime()) // 0x0301 CMD_PUMPINIT_TIME_INFO
put(MsgInitConnStatusBolus()) // 0x0302 CMD_PUMPINIT_BOLUS_INFO
put(MsgInitConnStatusBasic()) // 0x0303 CMD_PUMPINIT_INIT_INFO
put(MsgInitConnStatusOption()) // 0x0304 CMD_PUMPINIT_OPTION
put(MsgSetTempBasalStart()) // 0x0401 CMD_PUMPSET_EXERCISE_S
put(MsgSetCarbsEntry()) // 0x0402 CMD_PUMPSET_HIS_S
put(MsgSetTempBasalStop()) // 0x0403 CMD_PUMPSET_EXERCISE_STOP
put(MsgSetExtendedBolusStop()) // 0x0406 CMD_PUMPSET_EXPANS_INS_STOP
put(MsgSetExtendedBolusStart()) // 0x0407 CMD_PUMPSET_EXPANS_INS_S
put(MsgError()) // 0x0601 CMD_PUMPOWAY_SYSTEM_STATUS
put(MsgPCCommStart()) // 0x3001 CMD_CONNECT
put(MsgPCCommStop()) // 0x3002 CMD_DISCONNECT
put(MsgHistoryBolus()) // 0x3101 CMD_HISTORY_MEAL_INS
put(MsgHistoryDailyInsulin()) // 0x3102 CMD_HISTORY_DAY_INS
put(MsgHistoryGlucose()) // 0x3104 CMD_HISTORY_GLUCOSE
put(MsgHistoryAlarm()) // 0x3105 CMD_HISTORY_ALARM
put(MsgHistoryError()) // 0x3106 CMD_HISTORY_ERROR
put(MsgHistoryCarbo()) // 0x3107 CMD_HISTORY_CARBOHY
put(MsgHistoryRefill()) // 0x3108 CMD_HISTORY_REFILL
put(MsgHistorySuspend()) // 0x3109 CMD_HISTORY_SUSPEND
put(MsgHistoryBasalHour()) // 0x310A CMD_HISTORY_BASAL_HOUR
put(MsgHistoryDone()) // 0x31F1 CMD_HISTORY_DONT_USED
put(MsgSettingBasal()) // 0x3202 CMD_SETTING_V_BASAL_INS_I
put(MsgSettingMeal()) // 0x3203 CMD_SETTING_V_MEAL_SETTING_I
put(MsgSettingProfileRatios()) // 0x3204 CMD_SETTING_V_CCC_I
put(MsgSettingMaxValues()) // 0x3205 CMD_SETTING_V_MAX_VALUE_I
put(MsgSettingBasalProfileAll()) // 0x3206 CMD_SETTING_V_BASAL_PROFILE_ALL
put(MsgSettingShippingInfo()) // 0x3207 CMD_SETTING_V_SHIPPING_I
put(MsgSettingGlucose()) // 0x3209 CMD_SETTING_V_GLUCOSEandEASY
put(MsgSettingPumpTime()) // 0x320A CMD_SETTING_V_TIME_I
put(MsgSettingUserOptions()) // 0x320B CMD_SETTING_V_USER_OPTIONS
put(MsgSettingActiveProfile()) // 0x320C CMD_SETTING_V_PROFILE_NUMBER
put(MsgSettingProfileRatiosAll()) // 0x320D CMD_SETTING_V_CIR_CF_VALUE
put(MsgSetSingleBasalProfile()) // 0x3302 CMD_SETTING_BASAL_INS_S
put(MsgSetBasalProfile()) // 0x3306 CMD_SETTING_BASAL_PROFILE_S
put(MsgSetUserOptions()) // 0x330B CMD_SETTING_USER_OPTIONS_S
put(MsgSetActivateBasalProfile()) // 0x330C CMD_SETTING_PROFILE_NUMBER_S
put(MsgHistoryAllDone()) // 0x41F1 CMD_HISTORY_ALL_DONE
put(MsgHistoryAll()) // 0x41F2 CMD_HISTORY_ALL
put(MsgHistoryNewDone()) // 0x42F1 CMD_HISTORY_NEW_DONE
put(MsgHistoryNew()) // 0x42F2 CMD_HISTORY_NEW
put(MsgCheckValue()) // 0xF0F1 CMD_PUMP_CHECK_VALUE
}
override fun put(message: MessageBase) {
messages[message.command] = message
}
override fun findMessage(command: Int): MessageBase {
return messages[command] ?: MessageBase()
}
}

View file

@ -34,4 +34,10 @@ public class MsgSettingPumpTime extends MessageBase {
DanaRPump.getInstance().pumpTime = time;
}
@Override
public void handleMessageNotReceived() {
DanaRPump.getInstance().pumpTime = 0;
}
}

View file

@ -33,6 +33,7 @@ import info.nightscout.androidaps.plugins.general.overview.notifications.Notific
import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump;
import info.nightscout.androidaps.plugins.pump.danaR.SerialIOThread;
import info.nightscout.androidaps.plugins.pump.danaR.comm.MessageBase;
import info.nightscout.androidaps.plugins.pump.danaR.comm.MessageHashTableR;
import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgBolusProgress;
import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgBolusStart;
import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgBolusStartWithSpeed;
@ -124,7 +125,7 @@ public class DanaRExecutionService extends AbstractDanaRExecutionService {
if (mSerialIOThread != null) {
mSerialIOThread.disconnect("Recreate SerialIOThread");
}
mSerialIOThread = new SerialIOThread(mRfcommSocket);
mSerialIOThread = new SerialIOThread(mRfcommSocket, MessageHashTableR.INSTANCE);
mHandshakeInProgress = true;
MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.HANDSHAKING, 0));
}
@ -186,6 +187,15 @@ public class DanaRExecutionService extends AbstractDanaRExecutionService {
mSerialIOThread.sendMessage(new MsgSettingUserOptions());
MainApp.bus().post(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumptime)));
mSerialIOThread.sendMessage(new MsgSettingPumpTime());
if (danaRPump.pumpTime == 0) {
// initial handshake was not successfull
// deinitialize pump
danaRPump.lastConnection = 0;
danaRPump.lastSettingsRead = 0;
RxBus.INSTANCE.send(new EventDanaRNewStatus());
MainApp.bus().post(new EventInitializationChanged());
return;
}
long timeDiff = (danaRPump.pumpTime - System.currentTimeMillis()) / 1000L;
if (L.isEnabled(L.PUMP))
log.debug("Pump time difference: " + timeDiff + " seconds");

View file

@ -1,210 +0,0 @@
package info.nightscout.androidaps.plugins.pump.danaRKorean;
import android.bluetooth.BluetoothSocket;
import android.os.SystemClock;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import info.nightscout.androidaps.logging.L;
import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump;
import info.nightscout.androidaps.plugins.pump.danaR.comm.MessageBase;
import info.nightscout.androidaps.plugins.pump.danaR.services.AbstractSerialIOThread;
import info.nightscout.androidaps.plugins.pump.danaRKorean.comm.MessageHashTable_k;
import info.nightscout.androidaps.utils.CRC;
/**
* Created by mike on 17.07.2016.
*/
public class SerialIOThread extends AbstractSerialIOThread {
private static Logger log = LoggerFactory.getLogger(L.PUMPBTCOMM);
private InputStream mInputStream = null;
private OutputStream mOutputStream = null;
private BluetoothSocket mRfCommSocket;
private boolean mKeepRunning = true;
private byte[] mReadBuff = new byte[0];
private MessageBase processedMessage;
public SerialIOThread(BluetoothSocket rfcommSocket) {
super();
mRfCommSocket = rfcommSocket;
try {
mOutputStream = mRfCommSocket.getOutputStream();
mInputStream = mRfCommSocket.getInputStream();
} catch (IOException e) {
log.error("Unhandled exception", e);
}
this.start();
}
@Override
public final void run() {
try {
while (mKeepRunning) {
int availableBytes = mInputStream.available();
// Ask for 1024 byte (or more if available)
byte[] newData = new byte[Math.max(1024, availableBytes)];
int gotBytes = mInputStream.read(newData);
// When we are here there is some new data available
appendToBuffer(newData, gotBytes);
// process all messages we already got
while (mReadBuff.length > 3) { // 3rd byte is packet size. continue only if we an determine packet size
byte[] extractedBuff = cutMessageFromBuffer();
if (extractedBuff == null)
break; // message is not complete in buffer (wrong packet calls disconnection)
int command = (extractedBuff[5] & 0xFF) | ((extractedBuff[4] << 8) & 0xFF00);
MessageBase message;
if (processedMessage != null && processedMessage.getCommand() == command) {
message = processedMessage;
} else {
// get it from hash table
message = MessageHashTable_k.findMessage(command);
}
if (L.isEnabled(L.PUMPBTCOMM))
log.debug("<<<<< " + message.getMessageName() + " " + message.toHexString(extractedBuff));
// process the message content
message.received = true;
message.handleMessage(extractedBuff);
synchronized (message) {
message.notify();
}
}
}
} catch (Exception e) {
if (e.getMessage().indexOf("bt socket closed") < 0)
log.error("Thread exception: ", e);
mKeepRunning = false;
}
disconnect("EndOfLoop");
}
void appendToBuffer(byte[] newData, int gotBytes) {
// add newData to mReadBuff
byte[] newReadBuff = new byte[mReadBuff.length + gotBytes];
System.arraycopy(mReadBuff, 0, newReadBuff, 0, mReadBuff.length);
System.arraycopy(newData, 0, newReadBuff, mReadBuff.length, gotBytes);
mReadBuff = newReadBuff;
}
byte[] cutMessageFromBuffer() {
if (mReadBuff[0] == (byte) 0x7E && mReadBuff[1] == (byte) 0x7E) {
int length = (mReadBuff[2] & 0xFF) + 7;
// Check if we have enough data
if (mReadBuff.length < length) {
return null;
}
if (mReadBuff[length - 2] != (byte) 0x2E || mReadBuff[length - 1] != (byte) 0x2E) {
log.error("wrong packet lenght=" + length + " data " + MessageBase.toHexString(mReadBuff));
disconnect("wrong packet");
return null;
}
short crc = CRC.getCrc16(mReadBuff, 3, length - 7);
byte crcByte0 = (byte) (crc >> 8 & 0xFF);
byte crcByte1 = (byte) (crc & 0xFF);
byte crcByte0received = mReadBuff[length - 4];
byte crcByte1received = mReadBuff[length - 3];
if (crcByte0 != crcByte0received || crcByte1 != crcByte1received) {
log.error("CRC Error" + String.format("%02x ", crcByte0) + String.format("%02x ", crcByte1) + String.format("%02x ", crcByte0received) + String.format("%02x ", crcByte1received));
disconnect("crc error");
return null;
}
// Packet is verified here. extract data
byte[] extractedBuff = new byte[length];
System.arraycopy(mReadBuff, 0, extractedBuff, 0, length);
// remove extracted data from read buffer
byte[] unprocessedData = new byte[mReadBuff.length - length];
System.arraycopy(mReadBuff, length, unprocessedData, 0, unprocessedData.length);
mReadBuff = unprocessedData;
return extractedBuff;
} else {
log.error("Wrong beginning of packet len=" + mReadBuff.length + " " + MessageBase.toHexString(mReadBuff));
disconnect("Wrong beginning of packet");
return null;
}
}
@Override
public synchronized void sendMessage(MessageBase message) {
if (!mRfCommSocket.isConnected()) {
log.error("Socket not connected on sendMessage");
return;
}
processedMessage = message;
byte[] messageBytes = message.getRawMessageBytes();
if (L.isEnabled(L.PUMPBTCOMM))
log.debug(">>>>> " + message.getMessageName() + " " + message.toHexString(messageBytes));
try {
mOutputStream.write(messageBytes);
} catch (Exception e) {
log.error("sendMessage write exception: ", e);
}
synchronized (message) {
try {
message.wait(5000);
} catch (InterruptedException e) {
log.error("sendMessage InterruptedException", e);
}
}
SystemClock.sleep(200);
if (!message.received) {
if (L.isEnabled(L.PUMPBTCOMM))
log.warn("Reply not received " + message.getMessageName());
if (message.getCommand() == 0xF0F1) {
DanaRPump.getInstance().isNewPump = false;
log.error("Old firmware detected");
}
}
}
@Override
public void disconnect(String reason) {
mKeepRunning = false;
try {
mInputStream.close();
} catch (Exception e) {
if (L.isEnabled(L.PUMPBTCOMM))
log.debug(e.getMessage());
}
try {
mOutputStream.close();
} catch (Exception e) {
if (L.isEnabled(L.PUMPBTCOMM))
log.debug(e.getMessage());
}
try {
mRfCommSocket.close();
} catch (Exception e) {
if (L.isEnabled(L.PUMPBTCOMM))
log.debug(e.getMessage());
}
try {
System.runFinalization();
} catch (Exception e) {
if (L.isEnabled(L.PUMPBTCOMM))
log.debug(e.getMessage());
}
if (L.isEnabled(L.PUMPBTCOMM))
log.debug("Disconnected: " + reason);
}
}

View file

@ -0,0 +1,56 @@
package info.nightscout.androidaps.plugins.pump.danaRKorean.comm
import info.nightscout.androidaps.plugins.pump.danaR.comm.*
import java.util.*
object MessageHashTableRkorean : MessageHashTableBase {
var messages: HashMap<Int, MessageBase> = HashMap()
init {
put(MsgBolusStop()) // 0x0101 CMD_MEALINS_STOP
put(MsgBolusStart()) // 0x0102 CMD_MEALINS_START_DATA
put(MsgBolusProgress()) // 0x0202 CMD_PUMP_THIS_REMAINDER_MEAL_INS
put(MsgStatusProfile()) // 0x0204 CMD_PUMP_CALCULATION_SETTING
put(MsgStatusTempBasal()) // 0x0205 CMD_PUMP_EXERCISE_MODE
put(MsgStatusBolusExtended()) // 0x0207 CMD_PUMP_EXPANS_INS_I
put(MsgStatusBasic_k()) // 0x020A CMD_PUMP_INITVIEW_I
put(MsgStatus_k()) // 0x020B CMD_PUMP_STATUS
put(MsgInitConnStatusTime_k()) // 0x0301 CMD_PUMPINIT_TIME_INFO
put(MsgInitConnStatusBolus_k()) // 0x0302 CMD_PUMPINIT_BOLUS_INFO
put(MsgInitConnStatusBasic_k()) // 0x0303 CMD_PUMPINIT_INIT_INFO
put(MsgSetTempBasalStart()) // 0x0401 CMD_PUMPSET_EXERCISE_S
put(MsgSetCarbsEntry()) // 0x0402 CMD_PUMPSET_HIS_S
put(MsgSetTempBasalStop()) // 0x0403 CMD_PUMPSET_EXERCISE_STOP
put(MsgSetExtendedBolusStop()) // 0x0406 CMD_PUMPSET_EXPANS_INS_STOP
put(MsgSetExtendedBolusStart()) // 0x0407 CMD_PUMPSET_EXPANS_INS_S
put(MsgError()) // 0x0601 CMD_PUMPOWAY_SYSTEM_STATUS
put(MsgPCCommStart()) // 0x3001 CMD_CONNECT
put(MsgPCCommStop()) // 0x3002 CMD_DISCONNECT
put(MsgHistoryBolus()) // 0x3101 CMD_HISTORY_MEAL_INS
put(MsgHistoryDailyInsulin()) // 0x3102 CMD_HISTORY_DAY_INS
put(MsgHistoryGlucose()) // 0x3104 CMD_HISTORY_GLUCOSE
put(MsgHistoryAlarm()) // 0x3105 CMD_HISTORY_ALARM
put(MsgHistoryCarbo()) // 0x3107 CMD_HISTORY_CARBOHY
put(MsgSettingBasal_k()) // 0x3202 CMD_SETTING_V_BASAL_INS_I
put(MsgSettingMeal()) // 0x3203 CMD_SETTING_V_MEAL_SETTING_I
put(MsgSettingProfileRatios()) // 0x3204 CMD_SETTING_V_CCC_I
put(MsgSettingMaxValues()) // 0x3205 CMD_SETTING_V_MAX_VALUE_I
put(MsgSettingBasalProfileAll_k()) // 0x3206 CMD_SETTING_V_BASAL_PROFILE_ALL
put(MsgSettingShippingInfo()) // 0x3207 CMD_SETTING_V_SHIPPING_I
put(MsgSettingGlucose()) // 0x3209 CMD_SETTING_V_GLUCOSEandEASY
put(MsgSettingPumpTime()) // 0x320A CMD_SETTING_V_TIME_I
put(MsgSetSingleBasalProfile()) // 0x3302 CMD_SETTING_BASAL_INS_S
put(MsgHistoryAll()) // 0x41F2 CMD_HISTORY_ALL
put(MsgHistoryNewDone()) // 0x42F1 CMD_HISTORY_NEW_DONE
put(MsgHistoryNew()) // 0x42F2 CMD_HISTORY_NEW
put(MsgCheckValue_k()) // 0xF0F1 CMD_PUMP_CHECK_VALUE
}
override fun put(message: MessageBase) {
messages[message.command] = message
}
override fun findMessage(command: Int): MessageBase {
return messages[command] ?: MessageBase()
}
}

View file

@ -1,76 +0,0 @@
package info.nightscout.androidaps.plugins.pump.danaRKorean.comm;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.HashMap;
import info.nightscout.androidaps.plugins.pump.danaR.comm.MessageBase;
import info.nightscout.androidaps.plugins.pump.danaR.comm.*;
/**
* Created by mike on 28.05.2016.
*/
public class MessageHashTable_k {
private static Logger log = LoggerFactory.getLogger(MessageHashTable_k.class);
public static HashMap<Integer, MessageBase> messages = null;
static {
if (messages == null) {
messages = new HashMap<Integer, MessageBase>();
put(new MsgBolusStop()); // 0x0101 CMD_MEALINS_STOP
put(new MsgBolusStart()); // 0x0102 CMD_MEALINS_START_DATA
put(new MsgBolusProgress()); // 0x0202 CMD_PUMP_THIS_REMAINDER_MEAL_INS
put(new MsgStatusProfile()); // 0x0204 CMD_PUMP_CALCULATION_SETTING
put(new MsgStatusTempBasal()); // 0x0205 CMD_PUMP_EXERCISE_MODE
put(new MsgStatusBolusExtended()); // 0x0207 CMD_PUMP_EXPANS_INS_I
put(new MsgStatusBasic_k()); // 0x020A CMD_PUMP_INITVIEW_I
put(new MsgStatus_k()); // 0x020B CMD_PUMP_STATUS
put(new MsgInitConnStatusTime_k()); // 0x0301 CMD_PUMPINIT_TIME_INFO
put(new MsgInitConnStatusBolus_k()); // 0x0302 CMD_PUMPINIT_BOLUS_INFO
put(new MsgInitConnStatusBasic_k()); // 0x0303 CMD_PUMPINIT_INIT_INFO
put(new MsgSetTempBasalStart()); // 0x0401 CMD_PUMPSET_EXERCISE_S
put(new MsgSetCarbsEntry()); // 0x0402 CMD_PUMPSET_HIS_S
put(new MsgSetTempBasalStop()); // 0x0403 CMD_PUMPSET_EXERCISE_STOP
put(new MsgSetExtendedBolusStop()); // 0x0406 CMD_PUMPSET_EXPANS_INS_STOP
put(new MsgSetExtendedBolusStart()); // 0x0407 CMD_PUMPSET_EXPANS_INS_S
put(new MsgError()); // 0x0601 CMD_PUMPOWAY_SYSTEM_STATUS
put(new MsgPCCommStart()); // 0x3001 CMD_CONNECT
put(new MsgPCCommStop()); // 0x3002 CMD_DISCONNECT
put(new MsgHistoryBolus()); // 0x3101 CMD_HISTORY_MEAL_INS
put(new MsgHistoryDailyInsulin()); // 0x3102 CMD_HISTORY_DAY_INS
put(new MsgHistoryGlucose()); // 0x3104 CMD_HISTORY_GLUCOSE
put(new MsgHistoryAlarm()); // 0x3105 CMD_HISTORY_ALARM
put(new MsgHistoryCarbo()); // 0x3107 CMD_HISTORY_CARBOHY
put(new MsgSettingBasal_k()); // 0x3202 CMD_SETTING_V_BASAL_INS_I
put(new MsgSettingMeal()); // 0x3203 CMD_SETTING_V_MEAL_SETTING_I
put(new MsgSettingProfileRatios()); // 0x3204 CMD_SETTING_V_CCC_I
put(new MsgSettingMaxValues()); // 0x3205 CMD_SETTING_V_MAX_VALUE_I
put(new MsgSettingBasalProfileAll_k()); // 0x3206 CMD_SETTING_V_BASAL_PROFILE_ALL
put(new MsgSettingShippingInfo()); // 0x3207 CMD_SETTING_V_SHIPPING_I
put(new MsgSettingGlucose()); // 0x3209 CMD_SETTING_V_GLUCOSEandEASY
put(new MsgSettingPumpTime()); // 0x320A CMD_SETTING_V_TIME_I
put(new MsgSetSingleBasalProfile()); // 0x3302 CMD_SETTING_BASAL_INS_S
put(new MsgHistoryAll()); // 0x41F2 CMD_HISTORY_ALL
put(new MsgHistoryNewDone()); // 0x42F1 CMD_HISTORY_NEW_DONE
put(new MsgHistoryNew()); // 0x42F2 CMD_HISTORY_NEW
put(new MsgCheckValue_k()); // 0xF0F1 CMD_PUMP_CHECK_VALUE
}
}
public static void put(MessageBase message) {
int command = message.getCommand();
//String name = MessageOriginalNames.getName(command);
messages.put(command, message);
//log.debug(String.format("%04x ", command) + " " + name);
}
public static MessageBase findMessage(Integer command) {
if (messages.containsKey(command)) {
return messages.get(command);
} else {
return new MessageBase();
}
}
}

View file

@ -30,6 +30,7 @@ import info.nightscout.androidaps.plugins.general.overview.dialogs.BolusProgress
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification;
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification;
import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump;
import info.nightscout.androidaps.plugins.pump.danaR.SerialIOThread;
import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgBolusProgress;
import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgBolusStart;
import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgBolusStop;
@ -51,7 +52,7 @@ import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgStatusBolusExtended
import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgStatusTempBasal;
import info.nightscout.androidaps.plugins.pump.danaR.events.EventDanaRNewStatus;
import info.nightscout.androidaps.plugins.pump.danaR.services.AbstractDanaRExecutionService;
import info.nightscout.androidaps.plugins.pump.danaRKorean.SerialIOThread;
import info.nightscout.androidaps.plugins.pump.danaRKorean.comm.MessageHashTableRkorean;
import info.nightscout.androidaps.plugins.pump.danaRKorean.comm.MsgCheckValue_k;
import info.nightscout.androidaps.plugins.pump.danaRKorean.comm.MsgSettingBasal_k;
import info.nightscout.androidaps.plugins.pump.danaRKorean.comm.MsgStatusBasic_k;
@ -129,7 +130,7 @@ public class DanaRKoreanExecutionService extends AbstractDanaRExecutionService {
if (mSerialIOThread != null) {
mSerialIOThread.disconnect("Recreate SerialIOThread");
}
mSerialIOThread = new SerialIOThread(mRfcommSocket);
mSerialIOThread = new SerialIOThread(mRfcommSocket, MessageHashTableRkorean.INSTANCE);
mHandshakeInProgress = true;
MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.HANDSHAKING, 0));
}
@ -187,6 +188,15 @@ public class DanaRKoreanExecutionService extends AbstractDanaRExecutionService {
mSerialIOThread.sendMessage(new MsgSettingProfileRatios());
MainApp.bus().post(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumptime)));
mSerialIOThread.sendMessage(new MsgSettingPumpTime());
if (danaRPump.pumpTime == 0) {
// initial handshake was not successfull
// deinitialize pump
danaRPump.lastConnection = 0;
danaRPump.lastSettingsRead = 0;
RxBus.INSTANCE.send(new EventDanaRNewStatus());
MainApp.bus().post(new EventInitializationChanged());
return;
}
long timeDiff = (danaRPump.pumpTime - System.currentTimeMillis()) / 1000L;
if (L.isEnabled(L.PUMP))
log.debug("Pump time difference: " + timeDiff + " seconds");

View file

@ -794,7 +794,6 @@ public class DanaRSPlugin extends PluginBase implements PumpInterface, DanaRInte
if (!veryShort) {
ret += "TDD: " + DecimalFormatter.to0Decimal(pump.dailyTotalUnits) + " / " + pump.maxDailyTotalUnits + " U\n";
}
ret += "IOB: " + pump.iob + "U\n";
ret += "Reserv: " + DecimalFormatter.to0Decimal(pump.reservoirRemainingUnits) + "U\n";
ret += "Batt: " + pump.batteryRemaining + "\n";
return ret;

View file

@ -58,6 +58,9 @@ public class DanaRS_Packet {
public void handleMessage(byte[] data) {
}
public void handleMessageNotReceived() {
}
public String getFriendlyName() {
return "UNKNOWN_PACKET";
}

View file

@ -58,6 +58,11 @@ public class DanaRS_Packet_Option_Get_Pump_Time extends DanaRS_Packet {
}
}
@Override
public void handleMessageNotReceived() {
DanaRPump.getInstance().pumpTime = 0;
}
@Override
public String getFriendlyName() {
return "OPTION__GET_PUMP_TIME";

View file

@ -643,6 +643,7 @@ public class BLEComm {
//SystemClock.sleep(200);
if (!message.isReceived()) {
log.warn("Reply not received " + message.getFriendlyName());
message.handleMessageNotReceived();
}
}

View file

@ -158,6 +158,14 @@ public class DanaRSService extends Service {
bleComm.sendMessage(new DanaRS_Packet_Option_Get_Pump_Time());
long timeDiff = (danaRPump.pumpTime - System.currentTimeMillis()) / 1000L;
if (danaRPump.pumpTime == 0) {
// initial handshake was not successfull
// deinitialize pump
danaRPump.lastConnection = 0;
RxBus.INSTANCE.send(new EventDanaRNewStatus());
MainApp.bus().post(new EventInitializationChanged());
return;
}
if (L.isEnabled(L.PUMPCOMM))
log.debug("Pump time difference: " + timeDiff + " seconds");
if (Math.abs(timeDiff) > 3) {

View file

@ -1,209 +0,0 @@
package info.nightscout.androidaps.plugins.pump.danaRv2;
import android.bluetooth.BluetoothSocket;
import android.os.SystemClock;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import info.nightscout.androidaps.logging.L;
import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump;
import info.nightscout.androidaps.plugins.pump.danaR.comm.MessageBase;
import info.nightscout.androidaps.plugins.pump.danaR.services.AbstractSerialIOThread;
import info.nightscout.androidaps.plugins.pump.danaRv2.comm.MessageHashTable_v2;
import info.nightscout.androidaps.utils.CRC;
/**
* Created by mike on 17.07.2016.
*/
public class SerialIOThread extends AbstractSerialIOThread {
private static Logger log = LoggerFactory.getLogger(L.PUMPBTCOMM);
private InputStream mInputStream = null;
private OutputStream mOutputStream = null;
private BluetoothSocket mRfCommSocket;
private boolean mKeepRunning = true;
private byte[] mReadBuff = new byte[0];
private MessageBase processedMessage;
public SerialIOThread(BluetoothSocket rfcommSocket) {
super();
mRfCommSocket = rfcommSocket;
try {
mOutputStream = mRfCommSocket.getOutputStream();
mInputStream = mRfCommSocket.getInputStream();
} catch (IOException e) {
log.error("Unhandled exception", e);
}
this.start();
}
@Override
public final void run() {
try {
while (mKeepRunning) {
int availableBytes = mInputStream.available();
// Ask for 1024 byte (or more if available)
byte[] newData = new byte[Math.max(1024, availableBytes)];
int gotBytes = mInputStream.read(newData);
// When we are here there is some new data available
appendToBuffer(newData, gotBytes);
// process all messages we already got
while (mReadBuff.length > 3) { // 3rd byte is packet size. continue only if we an determine packet size
byte[] extractedBuff = cutMessageFromBuffer();
if (extractedBuff == null)
break; // message is not complete in buffer (wrong packet calls disconnection)
int command = (extractedBuff[5] & 0xFF) | ((extractedBuff[4] << 8) & 0xFF00);
MessageBase message;
if (processedMessage != null && processedMessage.getCommand() == command) {
message = processedMessage;
} else {
// get it from hash table
message = MessageHashTable_v2.findMessage(command);
}
if (L.isEnabled(L.PUMPBTCOMM))
log.debug("<<<<< " + message.getMessageName() + " " + message.toHexString(extractedBuff));
// process the message content
message.received = true;
message.handleMessage(extractedBuff);
synchronized (message) {
message.notify();
}
}
}
} catch (Exception e) {
if (e.getMessage().indexOf("bt socket closed") < 0)
log.error("Thread exception: ", e);
mKeepRunning = false;
}
disconnect("EndOfLoop");
}
void appendToBuffer(byte[] newData, int gotBytes) {
// add newData to mReadBuff
byte[] newReadBuff = new byte[mReadBuff.length + gotBytes];
System.arraycopy(mReadBuff, 0, newReadBuff, 0, mReadBuff.length);
System.arraycopy(newData, 0, newReadBuff, mReadBuff.length, gotBytes);
mReadBuff = newReadBuff;
}
byte[] cutMessageFromBuffer() {
if (mReadBuff[0] == (byte) 0x7E && mReadBuff[1] == (byte) 0x7E) {
int length = (mReadBuff[2] & 0xFF) + 7;
// Check if we have enough data
if (mReadBuff.length < length) {
return null;
}
if (mReadBuff[length - 2] != (byte) 0x2E || mReadBuff[length - 1] != (byte) 0x2E) {
log.error("wrong packet lenght=" + length + " data " + MessageBase.toHexString(mReadBuff));
disconnect("wrong packet");
return null;
}
short crc = CRC.getCrc16(mReadBuff, 3, length - 7);
byte crcByte0 = (byte) (crc >> 8 & 0xFF);
byte crcByte1 = (byte) (crc & 0xFF);
byte crcByte0received = mReadBuff[length - 4];
byte crcByte1received = mReadBuff[length - 3];
if (crcByte0 != crcByte0received || crcByte1 != crcByte1received) {
log.error("CRC Error" + String.format("%02x ", crcByte0) + String.format("%02x ", crcByte1) + String.format("%02x ", crcByte0received) + String.format("%02x ", crcByte1received));
disconnect("crc error");
return null;
}
// Packet is verified here. extract data
byte[] extractedBuff = new byte[length];
System.arraycopy(mReadBuff, 0, extractedBuff, 0, length);
// remove extracted data from read buffer
byte[] unprocessedData = new byte[mReadBuff.length - length];
System.arraycopy(mReadBuff, length, unprocessedData, 0, unprocessedData.length);
mReadBuff = unprocessedData;
return extractedBuff;
} else {
log.error("Wrong beginning of packet len=" + mReadBuff.length + " " + MessageBase.toHexString(mReadBuff));
disconnect("Wrong beginning of packet");
return null;
}
}
@Override
public synchronized void sendMessage(MessageBase message) {
if (!mRfCommSocket.isConnected()) {
log.error("Socket not connected on sendMessage");
return;
}
processedMessage = message;
byte[] messageBytes = message.getRawMessageBytes();
if (L.isEnabled(L.PUMPBTCOMM))
log.debug(">>>>> " + message.getMessageName() + " " + message.toHexString(messageBytes));
try {
mOutputStream.write(messageBytes);
} catch (Exception e) {
log.error("sendMessage write exception: ", e);
}
synchronized (message) {
try {
message.wait(5000);
} catch (InterruptedException e) {
log.error("sendMessage InterruptedException", e);
}
}
SystemClock.sleep(200);
if (!message.received) {
log.error("Reply not received " + message.getMessageName());
if (message.getCommand() == 0xF0F1) {
DanaRPump.getInstance().isNewPump = false;
log.error("Old firmware detected");
}
}
}
@Override
public void disconnect(String reason) {
mKeepRunning = false;
try {
mInputStream.close();
} catch (Exception e) {
if (L.isEnabled(L.PUMPBTCOMM))
log.debug(e.getMessage());
}
try {
mOutputStream.close();
} catch (Exception e) {
if (L.isEnabled(L.PUMPBTCOMM))
log.debug(e.getMessage());
}
try {
mRfCommSocket.close();
} catch (Exception e) {
if (L.isEnabled(L.PUMPBTCOMM))
log.debug(e.getMessage());
}
try {
System.runFinalization();
} catch (Exception e) {
if (L.isEnabled(L.PUMPBTCOMM))
log.debug(e.getMessage());
}
if (L.isEnabled(L.PUMPBTCOMM))
log.debug("Disconnected: " + reason);
}
}

View file

@ -0,0 +1,77 @@
package info.nightscout.androidaps.plugins.pump.danaRv2.comm
import info.nightscout.androidaps.plugins.pump.danaR.comm.*
import java.util.*
object MessageHashTableRv2 : MessageHashTableBase {
var messages: HashMap<Int, MessageBase> = HashMap()
init {
put(MsgBolusStop()) // 0x0101 CMD_MEALINS_STOP
put(MsgBolusStart()) // 0x0102 CMD_MEALINS_START_DATA
put(MsgBolusStartWithSpeed()) // 0x0104 CMD_MEALINS_START_DATA_SPEED
put(MsgBolusProgress()) // 0x0202 CMD_PUMP_THIS_REMAINDER_MEAL_INS
put(MsgStatusProfile()) // 0x0204 CMD_PUMP_CALCULATION_SETTING
put(MsgStatusTempBasal_v2()) // 0x0205 CMD_PUMP_EXERCISE_MODE
put(MsgStatusBolusExtended_v2()) // 0x0207 CMD_PUMP_EXPANS_INS_I
put(MsgStatusBasic()) // 0x020A CMD_PUMP_INITVIEW_I
put(MsgStatus()) // 0x020B CMD_PUMP_STATUS
put(MsgInitConnStatusTime()) // 0x0301 CMD_PUMPINIT_TIME_INFO
put(MsgInitConnStatusBolus()) // 0x0302 CMD_PUMPINIT_BOLUS_INFO
put(MsgInitConnStatusBasic()) // 0x0303 CMD_PUMPINIT_INIT_INFO
put(MsgInitConnStatusOption()) // 0x0304 CMD_PUMPINIT_OPTION
put(MsgSetTempBasalStart()) // 0x0401 CMD_PUMPSET_EXERCISE_S
put(MsgSetCarbsEntry()) // 0x0402 CMD_PUMPSET_HIS_S
put(MsgSetTempBasalStop()) // 0x0403 CMD_PUMPSET_EXERCISE_STOP
put(MsgSetExtendedBolusStop()) // 0x0406 CMD_PUMPSET_EXPANS_INS_STOP
put(MsgSetExtendedBolusStart()) // 0x0407 CMD_PUMPSET_EXPANS_INS_S
put(MsgError()) // 0x0601 CMD_PUMPOWAY_SYSTEM_STATUS
put(MsgPCCommStart()) // 0x3001 CMD_CONNECT
put(MsgPCCommStop()) // 0x3002 CMD_DISCONNECT
put(MsgHistoryBolus()) // 0x3101 CMD_HISTORY_MEAL_INS
put(MsgHistoryDailyInsulin()) // 0x3102 CMD_HISTORY_DAY_INS
put(MsgHistoryGlucose()) // 0x3104 CMD_HISTORY_GLUCOSE
put(MsgHistoryAlarm()) // 0x3105 CMD_HISTORY_ALARM
put(MsgHistoryError()) // 0x3106 CMD_HISTORY_ERROR
put(MsgHistoryCarbo()) // 0x3107 CMD_HISTORY_CARBOHY
put(MsgHistoryRefill()) // 0x3108 CMD_HISTORY_REFILL
put(MsgHistorySuspend()) // 0x3109 CMD_HISTORY_SUSPEND
put(MsgHistoryBasalHour()) // 0x310A CMD_HISTORY_BASAL_HOUR
put(MsgHistoryDone()) // 0x31F1 CMD_HISTORY_DONT_USED
put(MsgSettingBasal()) // 0x3202 CMD_SETTING_V_BASAL_INS_I
put(MsgSettingMeal()) // 0x3203 CMD_SETTING_V_MEAL_SETTING_I
put(MsgSettingProfileRatios()) // 0x3204 CMD_SETTING_V_CCC_I
put(MsgSettingMaxValues()) // 0x3205 CMD_SETTING_V_MAX_VALUE_I
put(MsgSettingBasalProfileAll()) // 0x3206 CMD_SETTING_V_BASAL_PROFILE_ALL
put(MsgSettingShippingInfo()) // 0x3207 CMD_SETTING_V_SHIPPING_I
put(MsgSettingGlucose()) // 0x3209 CMD_SETTING_V_GLUCOSEandEASY
put(MsgSettingPumpTime()) // 0x320A CMD_SETTING_V_TIME_I
put(MsgSettingUserOptions()) // 0x320B CMD_SETTING_V_USER_OPTIONS
put(MsgSettingActiveProfile()) // 0x320C CMD_SETTING_V_PROFILE_NUMBER
put(MsgSettingProfileRatiosAll()) // 0x320D CMD_SETTING_V_CIR_CF_VALUE
put(MsgSetSingleBasalProfile()) // 0x3302 CMD_SETTING_BASAL_INS_S
put(MsgSetBasalProfile()) // 0x3306 CMD_SETTING_BASAL_PROFILE_S
put(MsgSetUserOptions()) // 0x330B CMD_SETTING_USER_OPTIONS_S
put(MsgSetActivateBasalProfile()) // 0x330C CMD_SETTING_PROFILE_NUMBER_S
put(MsgHistoryAllDone()) // 0x41F1 CMD_HISTORY_ALL_DONE
put(MsgHistoryAll()) // 0x41F2 CMD_HISTORY_ALL
put(MsgHistoryNewDone()) // 0x42F1 CMD_HISTORY_NEW_DONE
put(MsgHistoryNew()) // 0x42F2 CMD_HISTORY_NEW
put(MsgCheckValue_v2()) // 0xF0F1 CMD_PUMP_CHECK_VALUE
put(MsgStatusAPS_v2()) // 0xE001 CMD_PUMPSTATUS_APS
put(MsgSetAPSTempBasalStart_v2()) // 0xE002 CMD_PUMPSET_APSTEMP
put(MsgHistoryEvents_v2()) // 0xE003 CMD_GET_HISTORY
put(MsgSetHistoryEntry_v2()) // 0xE004 CMD_SET_HISTORY_ENTRY
}
override fun put(message: MessageBase) {
messages[message.command] = message
}
override fun findMessage(command: Int): MessageBase {
return messages[command] ?: MessageBase()
}
}

View file

@ -1,92 +0,0 @@
package info.nightscout.androidaps.plugins.pump.danaRv2.comm;
import java.util.HashMap;
import info.nightscout.androidaps.plugins.pump.danaR.comm.MessageBase;
import info.nightscout.androidaps.plugins.pump.danaR.comm.*;
/**
* Created by mike on 28.05.2016.
*/
public class MessageHashTable_v2 {
public static HashMap<Integer, MessageBase> messages = null;
static {
if (messages == null) {
messages = new HashMap<Integer, MessageBase>();
put(new MsgBolusStop()); // 0x0101 CMD_MEALINS_STOP
put(new MsgBolusStart()); // 0x0102 CMD_MEALINS_START_DATA
put(new MsgBolusStartWithSpeed()); // 0x0104 CMD_MEALINS_START_DATA_SPEED
put(new MsgBolusProgress()); // 0x0202 CMD_PUMP_THIS_REMAINDER_MEAL_INS
put(new MsgStatusProfile()); // 0x0204 CMD_PUMP_CALCULATION_SETTING
put(new MsgStatusTempBasal_v2()); // 0x0205 CMD_PUMP_EXERCISE_MODE
put(new MsgStatusBolusExtended_v2()); // 0x0207 CMD_PUMP_EXPANS_INS_I
put(new MsgStatusBasic()); // 0x020A CMD_PUMP_INITVIEW_I
put(new MsgStatus()); // 0x020B CMD_PUMP_STATUS
put(new MsgInitConnStatusTime()); // 0x0301 CMD_PUMPINIT_TIME_INFO
put(new MsgInitConnStatusBolus()); // 0x0302 CMD_PUMPINIT_BOLUS_INFO
put(new MsgInitConnStatusBasic()); // 0x0303 CMD_PUMPINIT_INIT_INFO
put(new MsgInitConnStatusOption()); // 0x0304 CMD_PUMPINIT_OPTION
put(new MsgSetTempBasalStart()); // 0x0401 CMD_PUMPSET_EXERCISE_S
put(new MsgSetCarbsEntry()); // 0x0402 CMD_PUMPSET_HIS_S
put(new MsgSetTempBasalStop()); // 0x0403 CMD_PUMPSET_EXERCISE_STOP
put(new MsgSetExtendedBolusStop()); // 0x0406 CMD_PUMPSET_EXPANS_INS_STOP
put(new MsgSetExtendedBolusStart()); // 0x0407 CMD_PUMPSET_EXPANS_INS_S
put(new MsgError()); // 0x0601 CMD_PUMPOWAY_SYSTEM_STATUS
put(new MsgPCCommStart()); // 0x3001 CMD_CONNECT
put(new MsgPCCommStop()); // 0x3002 CMD_DISCONNECT
put(new MsgHistoryBolus()); // 0x3101 CMD_HISTORY_MEAL_INS
put(new MsgHistoryDailyInsulin()); // 0x3102 CMD_HISTORY_DAY_INS
put(new MsgHistoryGlucose()); // 0x3104 CMD_HISTORY_GLUCOSE
put(new MsgHistoryAlarm()); // 0x3105 CMD_HISTORY_ALARM
put(new MsgHistoryError()); // 0x3106 CMD_HISTORY_ERROR
put(new MsgHistoryCarbo()); // 0x3107 CMD_HISTORY_CARBOHY
put(new MsgHistoryRefill()); // 0x3108 CMD_HISTORY_REFILL
put(new MsgHistorySuspend()); // 0x3109 CMD_HISTORY_SUSPEND
put(new MsgHistoryBasalHour()); // 0x310A CMD_HISTORY_BASAL_HOUR
put(new MsgHistoryDone()); // 0x31F1 CMD_HISTORY_DONT_USED
put(new MsgSettingBasal()); // 0x3202 CMD_SETTING_V_BASAL_INS_I
put(new MsgSettingMeal()); // 0x3203 CMD_SETTING_V_MEAL_SETTING_I
put(new MsgSettingProfileRatios()); // 0x3204 CMD_SETTING_V_CCC_I
put(new MsgSettingMaxValues()); // 0x3205 CMD_SETTING_V_MAX_VALUE_I
put(new MsgSettingBasalProfileAll()); // 0x3206 CMD_SETTING_V_BASAL_PROFILE_ALL
put(new MsgSettingShippingInfo()); // 0x3207 CMD_SETTING_V_SHIPPING_I
put(new MsgSettingGlucose()); // 0x3209 CMD_SETTING_V_GLUCOSEandEASY
put(new MsgSettingPumpTime()); // 0x320A CMD_SETTING_V_TIME_I
put(new MsgSettingUserOptions()); // 0x320B CMD_SETTING_V_USER_OPTIONS
put(new MsgSettingActiveProfile()); // 0x320C CMD_SETTING_V_PROFILE_NUMBER
put(new MsgSettingProfileRatiosAll()); // 0x320D CMD_SETTING_V_CIR_CF_VALUE
put(new MsgSetSingleBasalProfile()); // 0x3302 CMD_SETTING_BASAL_INS_S
put(new MsgSetBasalProfile()); // 0x3306 CMD_SETTING_BASAL_PROFILE_S
put(new MsgSetUserOptions()); // 0x330B CMD_SETTING_USER_OPTIONS_S
put(new MsgSetActivateBasalProfile()); // 0x330C CMD_SETTING_PROFILE_NUMBER_S
put(new MsgHistoryAllDone()); // 0x41F1 CMD_HISTORY_ALL_DONE
put(new MsgHistoryAll()); // 0x41F2 CMD_HISTORY_ALL
put(new MsgHistoryNewDone()); // 0x42F1 CMD_HISTORY_NEW_DONE
put(new MsgHistoryNew()); // 0x42F2 CMD_HISTORY_NEW
put(new MsgCheckValue_v2()); // 0xF0F1 CMD_PUMP_CHECK_VALUE
put(new MsgStatusAPS_v2()); // 0xE001 CMD_PUMPSTATUS_APS
put(new MsgSetAPSTempBasalStart_v2()); // 0xE002 CMD_PUMPSET_APSTEMP
put(new MsgHistoryEvents_v2()); // 0xE003 CMD_GET_HISTORY
put(new MsgSetHistoryEntry_v2()); // 0xE004 CMD_SET_HISTORY_ENTRY
}
}
public static void put(MessageBase message) {
int command = message.getCommand();
//String name = MessageOriginalNames.getName(command);
messages.put(command, message);
//log.debug(String.format("%04x ", command) + " " + name);
}
public static MessageBase findMessage(Integer command) {
if (messages.containsKey(command)) {
return messages.get(command);
} else {
return new MessageBase();
}
}
}

View file

@ -33,6 +33,7 @@ import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotifi
import info.nightscout.androidaps.plugins.general.overview.events.EventOverviewBolusProgress;
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification;
import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump;
import info.nightscout.androidaps.plugins.pump.danaR.SerialIOThread;
import info.nightscout.androidaps.plugins.pump.danaR.comm.MessageBase;
import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgBolusProgress;
import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgBolusStart;
@ -62,7 +63,7 @@ import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgStatusBasic;
import info.nightscout.androidaps.plugins.pump.danaR.events.EventDanaRNewStatus;
import info.nightscout.androidaps.plugins.pump.danaR.services.AbstractDanaRExecutionService;
import info.nightscout.androidaps.plugins.pump.danaRv2.DanaRv2Plugin;
import info.nightscout.androidaps.plugins.pump.danaRv2.SerialIOThread;
import info.nightscout.androidaps.plugins.pump.danaRv2.comm.MessageHashTableRv2;
import info.nightscout.androidaps.plugins.pump.danaRv2.comm.MsgCheckValue_v2;
import info.nightscout.androidaps.plugins.pump.danaRv2.comm.MsgHistoryEvents_v2;
import info.nightscout.androidaps.plugins.pump.danaRv2.comm.MsgSetAPSTempBasalStart_v2;
@ -147,7 +148,7 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
if (mSerialIOThread != null) {
mSerialIOThread.disconnect("Recreate SerialIOThread");
}
mSerialIOThread = new SerialIOThread(mRfcommSocket);
mSerialIOThread = new SerialIOThread(mRfcommSocket, MessageHashTableRv2.INSTANCE);
mHandshakeInProgress = true;
MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.HANDSHAKING, 0));
}
@ -195,6 +196,15 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
MainApp.bus().post(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumptime)));
mSerialIOThread.sendMessage(new MsgSettingPumpTime());
if (danaRPump.pumpTime == 0) {
// initial handshake was not successfull
// deinitialize pump
danaRPump.lastConnection = 0;
danaRPump.lastSettingsRead = 0;
RxBus.INSTANCE.send(new EventDanaRNewStatus());
MainApp.bus().post(new EventInitializationChanged());
return;
}
long timeDiff = (danaRPump.pumpTime - System.currentTimeMillis()) / 1000L;
if (L.isEnabled(L.PUMP))
log.debug("Pump time difference: " + timeDiff + " seconds");

View file

@ -182,6 +182,7 @@ public class MedtronicPumpStatus extends PumpStatus {
} else {
this.pumpType = medtronicPumpMap.get(pumpTypePart);
this.medtronicDeviceType = medtronicDeviceTypeMap.get(pumpTypePart);
this.pumpDescription.setPumpDescription(this.pumpType);
if (pumpTypePart.startsWith("7"))
this.reservoirFullUnits = 300;

View file

@ -16,7 +16,6 @@ import info.nightscout.androidaps.interfaces.PluginBase;
import info.nightscout.androidaps.interfaces.PluginDescription;
import info.nightscout.androidaps.interfaces.PluginType;
import info.nightscout.androidaps.logging.L;
import info.nightscout.androidaps.plugins.constraints.objectives.ObjectivesPlugin;
import info.nightscout.androidaps.plugins.general.nsclient.data.NSSgv;
import info.nightscout.androidaps.utils.JsonHelper;
import info.nightscout.androidaps.utils.SP;
@ -85,8 +84,7 @@ public class SourceNSClientPlugin extends PluginBase implements BgSourceInterfac
}
// Objectives 0
ObjectivesPlugin.getPlugin().bgIsAvailableInNS = true;
ObjectivesPlugin.getPlugin().saveProgress();
SP.putBoolean(R.string.key_ObjectivesbgIsAvailableInNS, true);
}
private void storeSgv(JSONObject sgvJson) {

View file

@ -21,7 +21,7 @@ class WizardInfoDialog : DialogFragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
dialog.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)
dialog?.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)
isCancelable = true
return inflater.inflate(R.layout.treatments_wizardinfo_dialog, container, false)
}

View file

@ -84,7 +84,7 @@ class ProfileViewerDialog : DialogFragment() {
}
override fun onResume() {
dialog.window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
dialog?.window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
super.onResume()
}

View file

@ -425,8 +425,8 @@ public class SWDefinition {
.add(new SWBreak())
.add(new SWFragment(this)
.add(new ObjectivesFragment()))
.validator(() -> ObjectivesPlugin.getPlugin().objectives.get(0).isStarted())
.visibility(() -> !ObjectivesPlugin.getPlugin().objectives.get(0).isStarted() && Config.APS);
.validator(() -> ObjectivesPlugin.INSTANCE.getObjectives().get(ObjectivesPlugin.INSTANCE.getFIRST_OBJECTIVE()).isStarted())
.visibility(() -> !ObjectivesPlugin.INSTANCE.getObjectives().get(ObjectivesPlugin.INSTANCE.getFIRST_OBJECTIVE()).isStarted() && Config.APS);
private void SWDefinitionFull() {
// List all the screens here

View file

@ -26,7 +26,6 @@ import info.nightscout.androidaps.activities.NoSplashAppCompatActivity;
import info.nightscout.androidaps.events.EventProfileNeedsUpdate;
import info.nightscout.androidaps.events.EventProfileStoreChanged;
import info.nightscout.androidaps.events.EventPumpStatusChanged;
import info.nightscout.androidaps.plugins.constraints.objectives.events.EventObjectivesSaved;
import info.nightscout.androidaps.plugins.general.nsclient.events.EventNSClientStatus;
import info.nightscout.androidaps.setupwizard.elements.SWItem;
import info.nightscout.androidaps.setupwizard.events.EventSWUpdate;
@ -121,11 +120,6 @@ public class SetupWizardActivity extends NoSplashAppCompatActivity {
updateButtons();
}
@Subscribe
public void onEventObjectivesSaved(EventObjectivesSaved ignored) {
updateButtons();
}
private void generateLayout() {
SWScreen currentScreen = screens.get(currentWizardPage);
LinearLayout layout = SWItem.generateLayout(this.findViewById(R.id.sw_content_fields));

View file

@ -126,6 +126,13 @@ public class SP {
editor.apply();
}
static public void incInt(int resourceID) {
SharedPreferences.Editor editor = sharedPreferences.edit();
int value = SP.getInt(resourceID, 0) + 1;
editor.putInt(MainApp.gs(resourceID), value);
editor.apply();
}
static public void putString(int resourceID, String value) {
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(MainApp.gs(resourceID), value);

View file

@ -0,0 +1,157 @@
<?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"
tools:context=".plugins.constraints.objectives.activities.ObjectivesExamDialog">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp">
<LinearLayout
android:id="@+id/objectives_exam_options"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:orientation="vertical"
app:layout_constraintTop_toBottomOf="@+id/objectives_exam_hint"
tools:layout_editor_absoluteX="3dp">
</LinearLayout>
<LinearLayout
android:id="@+id/objectives_exam_hints"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginBottom="10dp"
android:orientation="vertical"
app:layout_constraintTop_toBottomOf="@+id/objectives_exam_options"
tools:layout_editor_absoluteX="3dp" />
<LinearLayout
android:id="@+id/objectives_buttons"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:background="#3C3C3C"
android:orientation="horizontal"
android:padding="4dp"
app:layout_constraintTop_toBottomOf="@+id/objectives_exam_disabledto">
<Button
android:id="@+id/objectives_exam_reset"
style="@style/Widget.AppCompat.Button.Borderless.Colored"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/reset" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="" />
<Button
android:id="@+id/close"
style="@style/Widget.AppCompat.Button.Borderless.Colored"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/close" />
<Button
android:id="@+id/objectives_exam_verify"
style="@style/Widget.AppCompat.Button.Borderless.Colored"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/objectives_button_verify" />
</LinearLayout>
<TextView
android:id="@+id/objectives_exam_question"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="Question"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/objectives_exam_name" />
<TextView
android:id="@+id/objectives_exam_hint"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/objectives_hint"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/objectives_exam_question" />
<TextView
android:id="@+id/objectives_exam_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Name"
android:textAppearance="@style/TextAppearance.AppCompat.Large"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/objectives_exam_disabledto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="Disabled to:"
android:textColor="#FF5722"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/objectives_exam_hints" />
<LinearLayout
android:id="@+id/objectives_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:background="#3C3C3C"
android:orientation="horizontal"
android:padding="4dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/objectives_buttons">
<Button
android:id="@+id/objectives_back_button"
style="@style/Widget.AppCompat.Button.Borderless.Colored"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/previous_button" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="" />
<Button
android:id="@+id/objectives_next_button"
style="@style/Widget.AppCompat.Button.Borderless.Colored"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/next_button" />
<Button
android:id="@+id/objectives_next_unanswered_button"
style="@style/Widget.AppCompat.Button.Borderless.Colored"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/unfinshed_button" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>

View file

@ -49,7 +49,9 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:orientation="vertical" />
android:orientation="vertical" >
</LinearLayout>
<Button
android:id="@+id/objective_verify"
@ -71,6 +73,50 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/objectives_button_back" />
<TextView
android:id="@+id/objective_inputhint"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/enter_code_obtained_from_developers_to_bypass_the_rest_of_objectives" />
<TextView
android:id="@+id/objective_requestcode"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Request code: XXXXX" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<EditText
android:id="@+id/objective_input"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ems="10"
android:hint="XXXXXXXXXX"
android:inputType="text" />
<Button
android:id="@+id/objective_enterbutton"
style="@style/Widget.AppCompat.Button.Borderless.Colored"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/objectives_button_enter" />
</LinearLayout>
<TextView
android:id="@+id/objective_accomplished"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:textColor="#FFFFFF"
tools:text="Accomplished" />
</LinearLayout>
</androidx.cardview.widget.CardView>

View file

@ -33,7 +33,6 @@
<string name="description_smb">Mees onlangse algoritme vir gevorderde gebruikers</string>
<string name="description_overview">Wys die huidige staat van jou lus en knoppies vir mees algemene optrede</string>
<string name="description_persistent_notification">Toon \'n voortgesette kennisgewing met \'n kort oorsig van wat jou lus besig is om te doen</string>
<string name="description_profile_local">Definieer \'n profiel wat van lyn af beskikbaar is.</string>
<string name="description_profile_nightscout">Bied die profiel wat jy het beskryf het in Nightscout</string>
<string name="description_profile_simple">Definieer \'n profiel met net een tydblok.</string>
<string name="description_pump_combo">Pomp Integrasie met Accu-Chek Combo pompe, vereis dat ruffy geïnstalleer is</string>
@ -41,15 +40,12 @@
<string name="description_pump_dana_r_korean">Pomp integrasie vir Koreanse DANA Diabecare R pompe</string>
<string name="description_pump_dana_r_v2">Pomp integrasie vir DANA Diabecare R pompe met opgegradeerde firmware</string>
<string name="description_pump_dana_rs">Pomp integrasie vir DANA Diabecare RS pompe</string>
<string name="description_pump_insight">Pomp integrasie vir Accu-Chek Insight pompe, vereis dat SightRemote geïnstalleer is</string>
<string name="description_pump_mdi">Pomp integrasie vir mense wat veelvoudige daaglikse inspuitings doen vir hul diabetes terapie/regime</string>
<string name="description_pump_virtual">Pomp integrasie vir pompe wat nog nie enige drywer het nie (oop lus)</string>
<string name="description_sensitivity_aaps">Sensitiwiteit word bereken op dieselfde manier as Oref0, maar jy kan die tydsraamwerk spesifiseer in die verlede. Minimale karb absorpsie is bereken uit maks karb absorpsie tyd vanaf voorkeure.</string>
<string name="description_sensitivity_oref0">Sensitiwiteit word bereken vanaf 24h data in die verlede en koolhidrate (indien nie geabsorbeer) is na die tyd vermeld in voorkeure afgesny.</string>
<string name="description_sensitivity_oref1">Sensitiwiteit word bereken uit 8h data in die verlede en koolhidrate (indien nie geabsorbeer) is na die tyd vermeld in voorkeure gesny. Plugin bereken ook UAM.</string>
<string name="description_sensitivity_weighted_average">Sensitiwiteit word bereken as \'n geweegde gemiddelde van dwalinge. Nuwer dwalinge het hoër gewig. Minimale karb absorpsie is bereken uit max karb absorpsie tyd vanaf voorkeure. Hierdie algoritme is die vinnigste om sensitiwiteit veranderinge te volg.</string>
<string name="description_source_dexcom_g5">Ontvang BG waardes vanaf die gelapte Dexcom G5 app.</string>
<string name="description_source_dexcom_g6">Ontvang BG waardes vanaf die gelapte Dexcom G6 toep.</string>
<string name="description_source_eversense">Ontvang BG waardes uit die gelapte Eversense toep.</string>
<string name="description_source_glimp">Ontvang BG waardes vanaf Glimp.</string>
<string name="description_source_mm640g">Onvang BG waardes vanaf die 600SeriesAndroidUploader.</string>
@ -73,7 +69,6 @@
<string name="treatments_carbs_label_string">Karbs:</string>
<string name="treatments_iob_label_string">IAB:</string>
<string name="sms_iob">IAB:</string>
<string name="treatments_activity_string">Aktiwiteit:</string>
<string name="treatments_iobtotal_label_string">Totale IAB:</string>
<string name="treatments_iobactivitytotal_label_string">Totale IAB aktiwiteit:</string>
<string name="tempbasals_realduration_label_string">Dur:</string>
@ -146,7 +141,6 @@
<string name="openapsma_lastenact_label">Laaste per hand</string>
<string name="ok">OK</string>
<string name="cancel">Kanselleer</string>
<string name="close">Sluit</string>
<string name="noapsselected">GEEN APS GEKIES OF UITSLAG VERSKAF</string>
<string name="safety">Veiligheid</string>
<string name="openapsma_disabled">Plugin is gedeaktiveer</string>
@ -323,19 +317,6 @@
<string name="overview_bolusprogress_goingtodeliver">Gaan %1$.2fU lewer</string>
<string name="objectives_0_objective">Opstel van visualisering en monitering, en ontleed basale en verhoudings</string>
<string name="objectives_0_gate">Verifieer dat BG beskikbaar is in Nightscout, en dat pomp insulien data opgelaai word</string>
<string name="objectives_1_objective">Begin op \'n oop lus</string>
<string name="objectives_1_gate">Loop in oop lus modus vir \'n paar dae en boots met hand met baie tydelike basale. Stel tydelike gebruik en verstek tydelike teikens (bv. vir aktiwiteit of hipo behandeling koolhidrate)</string>
<string name="objectives_2_objective">Verstaan jou oop lus, insluitend sy tydelike basale aanbevelings</string>
<string name="objectives_2_gate">Gebaseer op daardie ervaring, besluit watter maks basale moet gebruik word, en stel dit op die pomp en voorkeure</string>
<string name="objectives_3_objective">Begin toe die lus met lae glukose opgeskort</string>
<string name="objectives_3_gate">Loop in geslote lus met max IAB = 0 vir \'n paar dae sonder te veel LGS gebeure</string>
<string name="objectives_4_objective">Verstel die geslote lus, verhoog maks IAB bo 0 en geleidelik verlaag BG doelwitte</string>
<string name="objectives_4_gate">Lus vir \'n paar dae, en ten minste een nag met geen lae BG alarms, voor BG val</string>
<string name="objectives_5_objective">Pas basale en verhoudings aan as nodig, en dan aktiveer auto-sens</string>
<string name="objectives_5_gate">1 week suksesvolle dagtyd lus met gereelde karb toevoegings</string>
<string name="objectives_6_objective">Skakel bykomende nutsfunskies aan vir bedagse gebruik, soos bv advanced meal assist</string>
<string name="objectives_7_objective">Skakel bykomende nutsfunskies aan vir bedags gebruik, soos bv. SMB</string>
<string name="objectives_7_gate">Jy moet asb die wiki lees en verhoog maksIAB om SMBs te laat werk! \'n Goeie begin is maksIAB = gemiddelde ete bolus + 3 x maks daaglikse basale</string>
<string name="youareonallowedlimit">Die toegelate limiet is bereik</string>
<string name="noprofileselected">Geen profiel gekies</string>
<string name="smscommunicator_loophasbeendisabled">Loop is gedeaktiveer</string>
@ -569,7 +550,6 @@
<string name="enablesuperbolus">Ontsper superbolus in Ghoeroe</string>
<string name="enablesuperbolus_summary">Ontsper superbolus funksionaliteit in Ghoeroe. Moenie aktiveer totdat jy leer wat dit werklik doen. DIT KAN \'n INSULIEN OORDOSIS VEROORSAAK AS BLINDELINGS GEBRUIK WORD!</string>
<string name="show_statuslights">Wys status vlae op tuisskerm</string>
<string name="show_statuslights_summary">Wys status vlae vir cage, iage, sage, stoor en battery vlak op tuisskerm.</string>
<string name="statuslights_res_warning">Drempel waarskuwings stoor vlak [U]</string>
<string name="statuslights_res_critical">Drempel kritieke stoor vlak [U]</string>
<string name="statuslights_bat_warning">Drempel waarskuwing battery vlak [%%]</string>
@ -727,8 +707,6 @@
<string name="bluetooth">Bluetooth</string>
<string name="btwatchdog_title">BT Watchdog</string>
<string name="btwatchdog_summary">Skakel asb die foon se bluetooth af vir een sekonde Indien geen verbinding met die pomp moontlik is nie. Dit mag help vir sommige selfone waar die bluetooth stapel vries.</string>
<string name="DexcomG5">DexcomG5 App (gelapte)</string>
<string name="DexcomG6">DexcomG6 App (gelapte)</string>
<string name="eversense">Eversense App (bygewerk)</string>
<string name="dexcomg5_nsupload_title">BG data oplaai na NS</string>
<string name="bgsource_upload">BG oplaai instellings</string>
@ -798,50 +776,8 @@
<string name="combo_reservoir_level_insufficient_for_bolus">Nie genoeg insulien vir bolus oor in reserwe</string>
<string name="extendedbolusdeliveryerror">Verlengde bolus afleweringsfout</string>
<string name="insightpump_shortname">Sig</string>
<string name="insightpump">Insight Pomp</string>
<string name="status_no_colon">Status</string>
<string name="changed">Verander</string>
<string name="pump_stopped_uppercase">POMP GESTOP</string>
<string name="status_updated">Status bygewerk</string>
<string name="ago">terug</string>
<string name="with">met</string>
<string name="insight_active_tbr">Aktiveer TBR</string>
<string name="insight_min_left">min oor</string>
<string name="log_book">Log boek</string>
<string name="insight_last_completed_action">Laaste voltooide aksie</string>
<string name="insight_min">min</string>
<string name="insight_remaining_over">oorblywend</string>
<string name="insight_total_with">total with</string>
<string name="insight_upfront_with">upfront with</string>
<string name="insight_stay_always_connected">Bly altyd gekoppel</string>
<string name="insight_history_idle">LEDIG</string>
<string name="insight_history_syncing">SINKRONISEER TANS</string>
<string name="insight_history_busy">BESIG</string>
<string name="insight_history_synced">GESINKRONISEER</string>
<string name="insight_startup_uppercase">SELFLAAI</string>
<string name="insight_needs">benodig</string>
<string name="insight_not_connected_to_companion_app">Nie verbind aan tjommie toepassing!</string>
<string name="insight_companion_app_not_installed">Dit lyk asof metgesel applikasie nie geinstalleerd is!</string>
<string name="insight_incompatible_compantion_app_we_need_version">Onversoenbare metgesel-toepassing, ons benodig weergawe</string>
<string name="insight_unknown">Onbekend</string>
<string name="insight_waiting_for_code">Wag vir kode bevestiging</string>
<string name="insight_code_rejected">Kode verwerp</string>
<string name="insight_app_binding">Toepassing bind</string>
<string name="insight_not_authorized">Nie bemagtig</string>
<string name="insight_incompatible">Onaanpasbaar</string>
<string name="second">sekonde</string>
<string name="minute">minuut</string>
<string name="format_hours">%1$.2f h</string>
<string name="hour">uur</string>
<string name="day">dag</string>
<string name="week">week</string>
<string name="time_plural">s</string>
<string name="insight_keepalive_format_string">%1$ds staak %2$s</string>
<string name="insight_keep_alive_status">Lewendhou-status</string>
<string name="statistics">Statistiek</string>
<string name="connect_preemptively">Verbind as voorsorg</string>
<string name="automatically_connect_when">Koppel outomaties wanneer AndroidAPS skerms oopgemaak word, voordat enige pomp bevel versoek word, om verbindings-traagheid te verminder</string>
<string name="not_recommended_due_to_battery_drain">Nie aanbeveel nie agv battery drein</string>
<string name="enablesmbalways">Aktiveer SMB altyd</string>
<string name="enablesmbalways_summary">Aktiveer SMB altyd onafhanklik van boluse. Slegs moonlik met BG source met goeie filter van data soos G5</string>
<string name="enablesmbaftercarbs">Aktiveer SMB na koolhidrate</string>
@ -945,8 +881,6 @@
<string name="reset">herstel</string>
<string name="waitingfortimesynchronization">Wag vir tydsinkronisasie (%1$d sec)</string>
<string name="loopdisconnectedfor">Ontkoppel (%1$d m)</string>
<string name="automatic_careportal_events">Outomatiese careportal gebeure</string>
<string name="automatically_upload_insulin_cannula_and_battery_changes_to_nightscout">Laai insulien, cannula en battery veranderings en pomp alarms na Nightscout op</string>
<string name="openapssmb_maxiob_title">Maksimum totale IAB OpenAPS kan nie oor [U] gaan</string>
<string name="openapssmb_maxiob_summary">Hierdie waarde is Maks IAB genoem in OpenAPS kontekst\nOpenAPS sal nie meer insulien byvoeg as huidige IAB is groter as hierdie waarde</string>
<string name="pump_stopped">Pomp gestop</string>
@ -997,12 +931,10 @@
<string name="adjustprofileinns">Veranderinge moet gedoen word in NS</string>
<string name="exitwizard">Slaan opstelling-Ghoeroe oor</string>
<string name="setupwizard_loop_description">Druk die knoppie hieronder om AndroidAPS te aktiveer om voorstelle/of veranderings te maak aan basale</string>
<string name="enableobjectives">Aktiveer Doelwitte</string>
<string name="apssetup">Konfigureer APS plugin</string>
<string name="sensitivitysetup">Konfigureer Sensitiwiteits plugin</string>
<string name="setupwizard_sensitivity_description">Sensitiwiteit plugin vir sensitiwiteit opsporing en KAB berekening. Vir meer inligting besoek:</string>
<string name="setupwizard_sensitivity_url">https://github.com/MilosKozak/AndroidAPS/wiki/Sensitivity-detection-and-COB</string>
<string name="nsclientinfotext">NSClient hanteer verbindings na Nightscout. Jy kan hierdie deel oorslaan nou maar jy sal nie doelwitte kan stel totdat jy dit opgestel het nie.</string>
<string name="diawarning">Onthou asseblief: dat nuwe insulien profiele vereis DIA van minstens 5h. DIA 5 6h op nuwe profiel is gelyk aan DIA 3h op ou insulien profiele.</string>
<string name="bgsourcesetup">Konfigureer BG bron</string>
<string name="setupwizard_profile_description">Kies asseblief bron van profiel. As Pasiënt \'n kind is gebruik NS profiel. As niemand jou volg op Nightscout sal jy waarskynlik plaaslike profiel kies. Onthou asseblief dat jy net die bron kies van profiel. Om dit te gebruik moet jy dit aktiveer deur uitvoering \"Profiel skakelaar\"</string>
@ -1055,7 +987,6 @@
<string name="error_adding_treatment_title">Behandeling data onvolledig</string>
<string name="maintenance_settings">Onderhoud instellings</string>
<string name="maintenance_email">E-pos</string>
<string name="invalid_email_message">Ongeldige E-pos</string>
<string name="maintenance_amount">Hoeveel Logs om te stuur</string>
<string name="maintenance">Onderhoud</string>
<string name="maintenance_shortname">MAINT</string>
@ -1117,7 +1048,6 @@
<string name="manufacturing_date">Vervaardigings datum</string>
<string name="delete_pairing">Verwyder maats</string>
<string name="pairing_information">Maat inligting</string>
<string name="refreh_status">Verfris status</string>
<string name="start_pump">Begin pomp</string>
<string name="stop_pump">Stop pomp</string>
<string name="operating_mode">Bedryf modus</string>
@ -1281,12 +1211,9 @@
<string name="triggercoblabel">KOB</string>
<string name="cobcompared">KOB %1$s %2$.0f</string>
<string name="taskname">Aksie naam</string>
<string name="eventname">Gebeurtenis naam</string>
<string name="edit_short">WYSIG</string>
<string name="please_choose_an_action_type">Kies asb \'n aksie tipe:</string>
<string name="please_choose_a_trigger_type">Kies \'n sneller tipe:</string>
<string name="if_label">As:</string>
<string name="then_label">Dan:</string>
<string name="triggers">Snellers:</string>
<string name="remove_label">VERWYDER</string>
<string name="preconditions">Vereistes:</string>
@ -1307,7 +1234,6 @@
<string name="medtronic_pump_frequency_worldwide">Wêreldwyd (868 Mhz)</string>
<string name="medtronic_pump_encoding_4b6b_local">Sagteware 4b6b Enkodeerding</string>
<string name="medtronic_pump_encoding_4b6b_rileylink">Hardeware 4b6b Enkodeerding</string>
<string name="rileylink_mac_address">RileyLink MAC Adres</string>
<string name="medtronic_custom_action_wake_and_tune">Wek en stel in</string>
<string name="medtronic_custom_action_clear_bolus_block">Vee Bolus Blok</string>
<string name="medtronic_custom_action_reset_rileylink">Herstel RileyLink Konfig</string>
@ -1319,9 +1245,7 @@
<string name="rileylink_scanner_scan_scan">SKAN</string>
<string name="rileylink_scanner_scan_stop">STOP</string>
<string name="rileylink_scanner_selected_device">Verkose</string>
<string name="rileylink_scanner_scan">Skan</string>
<string name="rileylink_scanner_title">RileyLink Skan</string>
<string name="rileylink_scanner_scan_menu">Soek RileyLink</string>
<string name="rileylink_scanner_ble_not_supported">Bluetooth Low Energy word nie ondersteun.</string>
<string name="rileylink_scanner_ble_not_enabled">Bluetooth nie aan.</string>
<string name="location_not_found_title">Location nie aan</string>
@ -1334,10 +1258,8 @@
<!-- RL Status Page -->
<string name="rileylink_settings_tab1">Instellings</string>
<string name="rileylink_settings_tab2">Geskiedenis</string>
<string name="rileylink_settings_tab3">Toestel</string>
<string name="rileylink_status">RileyLink Status</string>
<string name="medtronic_pump_status">Pomp Status</string>
<string name="rileylink_settings_title">RileyLink Instellings</string>
<string name="title_activity_rileylink_settings">RileyLink Instellings</string>
<string name="rileylink_title">RileyLink</string>
<string name="rileylink_configured_address">Adres opgestel</string>
@ -1402,7 +1324,6 @@
<string name="medtronic_pump_status_waking_up">Besig om te wek</string>
<string name="medtronic_pump_status_error_comm">Fout met kommunikasie</string>
<string name="medtronic_pump_status_timeout_comm">Te lank op kommunikasie gewag</string>
<string name="medtronic_pump_status_problem_contacting">Probleem om Pomp te kontak</string>
<string name="medtronic_pump_status_pump_unreachable">Pomp onbeskikbaar</string>
<string name="medtronic_pump_status_invalid_config">Ongeldige konfigirasie</string>
<string name="medtronic_pump_status_active">Aktief</string>
@ -1420,7 +1341,6 @@
<string name="medtronic_cmd_basal_profile_not_set_is_same">Basal profiel is dieselfde, so dit is so gelos.</string>
<string name="medtronic_cmd_desc_get_history">Verkry Geskiedenis - Bladsy %1$d (%2$d/16)</string>
<string name="medtronic_cmd_desc_get_history_request">Verkry Geskiedenis - Bladsy %1$d</string>
<string name="medtronic_cmd_desc_get_history_base">Verkry Geskiedenis - Bladsy %1$d</string>
<string name="medtronic_cmd_desc_get_time">Kry Pomp Tyd</string>
<string name="medtronic_cmd_desc_get_settings">Verkry Instellings</string>
<string name="medtronic_cmd_desc_get_model">Kry Pomp Model</string>
@ -1429,11 +1349,8 @@
<string name="medtronic_cmd_desc_get_tbr">Verkry Tydelike Basale</string>
<string name="medtronic_cmd_desc_set_tbr">Stel Tydelike Basale</string>
<string name="medtronic_cmd_desc_set_bolus">Stel Bolus</string>
<string name="pump_no_connection_h">Geen konneksie vir %1$d ure %2$d min</string>
<string name="pump_no_connection_d">Geen konneksie na %1$d dae %2$d ure</string>
<string name="insulinFromCob"><![CDATA[KOB insulin: <font color=\'%1$s\'>%2$.1fg %3$.2fU</font>]]></string>
<string name="bolusconstraintappliedwarning"><![CDATA[<font color=\'%1$s\'>Bolus beperking aangewend: %2$.2fU to %3$.2fU</font>]]></string>
<string name="slowabsorptiondetected"><![CDATA[<font color=\'%1$s\'>!!!!! Stadige Karbs gespeur: %2$d%% van die tyd Gaan u berekeninge na,. KOB Kan verkeerd wees !!!!!</font>]]></string>
<string name="reservoirvalue">%1$.0f / %2$d U</string>
<plurals name="objective_days">
<item quantity="one">%1$d dae</item>

View file

@ -18,6 +18,7 @@
<string name="danar_bt_name_title">DanaR Bluetooth устройство</string>
<string name="ns_sync_use_absolute_title">Използване на абсолютни стойности за базал</string>
<string name="alert_dialog_storage_permission_text">Рестартирайте телефона или AndroidAPS от системните настройки или Android APS няма да записва проблемите (което е важно за работата на алгоритъма)!</string>
<string name="alert_dialog_permission_battery_optimization_failed">Вашият телефон не поддържа оптимизация на батерията - може да се появят проблеми!</string>
<string name="description_actions">Бутони за бърз достъп до основни функции</string>
<string name="description_careportal">Въвеждане на разширени записи в логовете.</string>
<string name="description_config_builder">За конфигурация на активните плъгини</string>
@ -33,7 +34,6 @@
<string name="description_smb">Най-новият алгоритъм (само за напреднали потребители)</string>
<string name="description_overview">Показва текущото състояние на вашия APS и бутони за най-често използваните действия</string>
<string name="description_persistent_notification">Показва известие с резюме на това, което прави вашия APS</string>
<string name="description_profile_local">Работа с профил, който е наличен само на този телефон (локален).</string>
<string name="description_profile_nightscout">Работа с профила, които сте дефинирали в Nightscout</string>
<string name="description_profile_simple">Работа с профил със само една стойност за всички часове.</string>
<string name="description_pump_combo">Поддръжка за Accu-Chek Combo помпи, изискваща инсталиран ruffy</string>
@ -41,15 +41,12 @@
<string name="description_pump_dana_r_korean">Поддръжка за корейски Dana Diabecare R помпи</string>
<string name="description_pump_dana_r_v2">Поддръжка за Dana Diabecare R помпи с обновен софтуер</string>
<string name="description_pump_dana_rs">Поддръжка за Dana Diabecare RS помпи</string>
<string name="description_pump_insight">Поддръжка за Accu-Chek Insight pumps помпи, изискваща инсталиран SightRemote</string>
<string name="description_pump_mdi">Писалки - За хората, които правят множество ежедневни инжекции ( интензифицирано лечение с писалки)</string>
<string name="description_pump_virtual">За помпи, който все още не работят с AndroidAPS(Open Loop)</string>
<string name="description_sensitivity_aaps">Чувствителността се изчислява по същия начин като в Oref0, но можете да зададете времева рамка. Минимална въглехидрати абсорбция се изчислява от Макс време за усвояване на въглехидратите в опциите.</string>
<string name="description_sensitivity_oref0">Чувствителността се изчислява за 24 часа назад в миналото, а въглехидрати (ако не са се абсорбирали) изчезват след изтичане на срока от настройките.</string>
<string name="description_sensitivity_oref1">Чувствителността се изчислява за 8 часа назад в миналото, а въглехидрати (ако не са се абсорбирали) изчезват след изтичане на срока от настройките. Също така се изчисляват и необявени хранения (UAM).</string>
<string name="description_sensitivity_weighted_average">Чувствителността се изчислява като среднопретеглена стойност от отклоненията. По-новите отклонения имат по-високо тегло. Минималната абсорбция на въглехидрати се изчислява от Време за макс усвояване на въглехидрати от опциите. Този алгоритъм е най-бързият при проследяването на промени в чувствителността.</string>
<string name="description_source_dexcom_g5">Получава данни за КЗ от модифицираното приложение на Dexcom.</string>
<string name="description_source_dexcom_g6">Получавай данни за КЗ от модифицираното приложение на Dexcom.</string>
<string name="description_source_eversense">Получава данни за КЗ от модифицираното приложение на Eversense.</string>
<string name="description_source_glimp">Получава данни за КЗ от Glimp.</string>
<string name="description_source_mm640g">Получават стойности на КЗ от 600SeriesAndroidUploader.</string>
@ -73,7 +70,6 @@
<string name="treatments_carbs_label_string">Вълехидрати:</string>
<string name="treatments_iob_label_string">IOB:</string>
<string name="sms_iob">IOB:</string>
<string name="treatments_activity_string">Активен:</string>
<string name="treatments_iobtotal_label_string">Общо IOB:</string>
<string name="treatments_iobactivitytotal_label_string">Общо активен IOB:</string>
<string name="tempbasals_realduration_label_string">Прод.:</string>
@ -146,7 +142,6 @@
<string name="openapsma_lastenact_label">Последно зададено</string>
<string name="ok">ОК</string>
<string name="cancel">Откажи</string>
<string name="close">Затвори</string>
<string name="noapsselected">НЕ Е ИЗБРАН APS ИЛИ НЯМА РЕЗУЛТАТ ОТ НЕГО</string>
<string name="safety">Сигурност</string>
<string name="openapsma_disabled">Модула е изключен</string>
@ -323,19 +318,6 @@
<string name="overview_bolusprogress_goingtodeliver">Ще стартира %1$.2fЕ болус</string>
<string name="objectives_0_objective">Настройка на визуализацията и наблюдението, а също и анализиране на базалните нужди и коефициенти</string>
<string name="objectives_0_gate">Потвърждаване, че КЗ е достъпна в Найтскаут и данните за помпата се качват там</string>
<string name="objectives_1_objective">Стартиране в режим Отворен кръг (Open loop)</string>
<string name="objectives_1_gate">Работа в режим \"Отворен кръг\" за няколко дни и ръчно въвеждане на много временни базали. Настройте и използвайте временни и стандартни временни цели (напр. за активни или хипо-третирани въглехидрати)</string>
<string name="objectives_2_objective">Опитайте се да разбирате по-добре вашият APS в режим \"Отворен кръг\", включително препоръчваните временни базали</string>
<string name="objectives_2_gate">Определяне на макс. лимит на базалния инсулин и настройване в помпата и програмата</string>
<string name="objectives_3_objective">Стартиране на \"Затворен кръг\" с изключване на базал при ниска КЗ</string>
<string name="objectives_3_gate">Стартиране на \"Затворен кръг\" с макс. IOB=0 без твърде много събития тип ниска КЗ</string>
<string name="objectives_4_objective">Настройване на \"Затворен кръг\" чрез повишаване на максималният IOB над 0 и понижаване на целевите нива на КЗ</string>
<string name="objectives_4_gate">Прекарайте няколко дни по този начин, като поне една нощ нямате аларма за ниска КЗ.</string>
<string name="objectives_5_objective">Настройване на базалния инсулин и коефициенти ако е необходимо и активиране на auto-sens</string>
<string name="objectives_5_gate">Една седмица успешно дневно използване с редовно въвеждане на въглехидрати</string>
<string name="objectives_6_objective">Активиране на допълнителни функции за дневно използване, включително и advanced meal assist (АМА)</string>
<string name="objectives_7_objective">Добавяне на допълнителни функции за използване през деня, като SMB</string>
<string name="objectives_7_gate">Вие трябва да прочетете wiki и увеличите maxIOB за да може SMB да работи добре! Добро начало е maxIOB = средния болус за хранене + 3 x най-големия базал от профила</string>
<string name="youareonallowedlimit">Достигнахте лимита</string>
<string name="noprofileselected">Няма избран профил</string>
<string name="smscommunicator_loophasbeendisabled">APS е деактивиран</string>
@ -569,7 +551,10 @@
<string name="enablesuperbolus">Разреши използването на Суперболус</string>
<string name="enablesuperbolus_summary">Разреши функцията суперболус в съветника. Не я разрешавайте докато не научите какво наистина прави. ТОВА МОЖЕ ДА СЪЗДАДЕ ОПАСНОСТ ОТ ПРЕДОЗИРАНЕ С ИНСУЛИН.</string>
<string name="show_statuslights">Покажи статус светлини на началния екран</string>
<string name="show_statuslights_summary">Покажи статус светлини за канула, инсулин, сензор, резервоар и батерията на началния екран.</string>
<string name="show_statuslights_easy">Показвай статус светлини на началния екран</string>
<string name="show_statuslights_easy_summary">Показвай статус светлини за канула, инсулин, сензор, резервоар и батерията на началния екран.</string>
<string name="show_statuslights_extended">Покажи статус светлини с подробности на началния екран</string>
<string name="show_statuslights_extended_summary">Показвай подробни статус светлини за канула, инсулин, сензор, резервоар и батерията на началния екран.</string>
<string name="statuslights_res_warning">Ниво за аларма за останал инсулин в резервоара [Е]</string>
<string name="statuslights_res_critical">Критично ниво на останал инсулин в резервоар [Е]</string>
<string name="statuslights_bat_warning">Ниско ниво на батерията под [%%]</string>
@ -727,8 +712,6 @@
<string name="bluetooth">Блутуут</string>
<string name="btwatchdog_title">Блутуут ограничения</string>
<string name="btwatchdog_summary">Изключва Bluetooth на телефона за една секунда, ако няма връзка с помпата. Това може да помогне на някои телефони, където Bluetooth блокира.</string>
<string name="DexcomG5">Dexcom G5 приложение (модифицирано)</string>
<string name="DexcomG6">Dexcom G6 приложение (модифицирано)</string>
<string name="eversense">Eversense приложение(модифицирано)</string>
<string name="dexcomg5_nsupload_title">Качвай данните за КЗ в NS</string>
<string name="bgsource_upload">Настройки при качване на КЗ към Nightscout</string>
@ -798,50 +781,8 @@
<string name="combo_reservoir_level_insufficient_for_bolus">Няма достатъчно инсулин в резервоара</string>
<string name="extendedbolusdeliveryerror">Грешка при доставяне на удължен болус</string>
<string name="insightpump_shortname">Sight</string>
<string name="insightpump">Помпа Insight</string>
<string name="status_no_colon">Статус</string>
<string name="changed">Променено</string>
<string name="pump_stopped_uppercase">ПОМПАТА Е СПРЯНА</string>
<string name="status_updated">Статуса е актуализиран</string>
<string name="ago">преди</string>
<string name="with">с</string>
<string name="insight_active_tbr">Активен временен базал</string>
<string name="insight_min_left">мин. остават</string>
<string name="log_book">История</string>
<string name="insight_last_completed_action">Последно извършено действие</string>
<string name="insight_min">мин.</string>
<string name="insight_remaining_over">Останало</string>
<string name="insight_total_with">Общо с</string>
<string name="insight_upfront_with">Преди</string>
<string name="insight_stay_always_connected">Винаги свързано</string>
<string name="insight_history_idle">НЕЗАЕТ</string>
<string name="insight_history_syncing">СИНХР. НА</string>
<string name="insight_history_busy">ЗАЕТ</string>
<string name="insight_history_synced">СИНХР.</string>
<string name="insight_startup_uppercase">СТАРТИРАМ</string>
<string name="insight_needs">нужно е</string>
<string name="insight_not_connected_to_companion_app">Не е свързан към приложението!</string>
<string name="insight_companion_app_not_installed">Приложението изглежда не е инсталирано!</string>
<string name="insight_incompatible_compantion_app_we_need_version">Несъвместимо приложение, нужна е версия</string>
<string name="insight_unknown">Неизвестно</string>
<string name="insight_waiting_for_code">Изчаква се потвърждение на кода</string>
<string name="insight_code_rejected">Кодът е отхвърлен</string>
<string name="insight_app_binding">Свързване с апликацията</string>
<string name="insight_not_authorized">Не е разрешено</string>
<string name="insight_incompatible">Несъвместимо</string>
<string name="second">секунда</string>
<string name="minute">минута</string>
<string name="format_hours">%1$.2f ч</string>
<string name="hour">час</string>
<string name="day">ден</string>
<string name="week">седмица</string>
<string name="time_plural">с</string>
<string name="insight_keepalive_format_string">%1$ds изтича %2$s</string>
<string name="insight_keep_alive_status">Запазване на състоянието</string>
<string name="statistics">Статистика</string>
<string name="connect_preemptively">Предварително свързване</string>
<string name="automatically_connect_when">Автоматично свързване при отваряне на AndroidAPS, преди връзка с помпата за намаляване на първоначалното забавяне</string>
<string name="not_recommended_due_to_battery_drain">Не се препоръчва поради голяма консумация на батерия</string>
<string name="enablesmbalways">Разреши SMB постоянно</string>
<string name="enablesmbalways_summary">Разрешава SMB постоянно и независимо от болусите. Възможно само с източник на КЗ с добра филтрация като G5 </string>
<string name="enablesmbaftercarbs">Разреши SMB след въглехидрати</string>
@ -945,8 +886,6 @@
<string name="reset">нулиране</string>
<string name="waitingfortimesynchronization">Изчаква синхронизация на времето (%1$d сек)</string>
<string name="loopdisconnectedfor">Разкачена помпа (%1$d мин)</string>
<string name="automatic_careportal_events">Автоматично careportal събитие</string>
<string name="automatically_upload_insulin_cannula_and_battery_changes_to_nightscout">Автоматично изпраща статус на резервоар, сет и аларми на помпата към Nightscout</string>
<string name="openapssmb_maxiob_title">Максималният общ IOB OpenAPS не може да бъде повече от [U]</string>
<string name="openapssmb_maxiob_summary">Тази стойност се нарича Max IOB в контекста на OpenAPS. OpenAPS няма да добавя инсулин, ако текущата IOB е по-голяма от тази стойност</string>
<string name="pump_stopped">Помпата е спряна</string>
@ -997,12 +936,10 @@
<string name="adjustprofileinns">Промени трябва да се направят и в NS</string>
<string name="exitwizard">Пропусни съветника за настройка</string>
<string name="setupwizard_loop_description">Натиснете бутона по-долу за да позволите AndroidAPS да предлага/прави промени в базалните стойности</string>
<string name="enableobjectives">Разреши Цели</string>
<string name="apssetup">Конфигуриране на APS модул</string>
<string name="sensitivitysetup">Конфигуриране на модул за чувствителност</string>
<string name="setupwizard_sensitivity_description">Модула за чувствителност се използва за определяне на чувствителността и COB изчисления. За повече информация посетете:</string>
<string name="setupwizard_sensitivity_url">https://github.com/MilosKozak/AndroidAPS/wiki/Sensitivity-detection-and-COB</string>
<string name="nsclientinfotext">NSClient поддържа връзка с Nightscout. Можете да пропуснете тази настройка сега, но вие няма можете да преминете целите, докато вие го настроите.</string>
<string name="diawarning">Моля, не забравяйте: нови инсулин профили изискват време на действие на инсулиина - DIA от поне 5ч. DIA 5-6ч на нов профил е равно на DIA 3ч при стари инсулин профили.</string>
<string name="bgsourcesetup">Конфигуриране на източник на КЗ</string>
<string name="setupwizard_profile_description">Моля изберете вид профил. Ако пациентът е дете, трябва да използвате NS профил. Ако никой освен Вас не ви проследява в Nightscout вероятно ще предпочетете Локален профил. Моля, не забравяйте, че тук само избирате източника на профил. За да го използвате трябва да го активирате с натискане на \"Смяна на профила\"</string>
@ -1055,7 +992,6 @@
<string name="error_adding_treatment_title">Данните за лечението не са пълни</string>
<string name="maintenance_settings">Настройки за поддръжка</string>
<string name="maintenance_email">Имейл</string>
<string name="invalid_email_message">Невалиден e-mail</string>
<string name="maintenance_amount">Брой логове за изпращане</string>
<string name="maintenance">Поддръжка</string>
<string name="maintenance_shortname">ПОДДР</string>
@ -1117,7 +1053,6 @@
<string name="manufacturing_date">Дата на производство</string>
<string name="delete_pairing">Изтриване на сдвояване</string>
<string name="pairing_information">Информация за сдвояването</string>
<string name="refreh_status">Обнови статус</string>
<string name="start_pump">Стартирай помпа</string>
<string name="stop_pump">Спри помпа</string>
<string name="operating_mode">Работен режим</string>
@ -1269,6 +1204,7 @@
<string name="autosenslabel">Аутосенс %</string>
<string name="deltacompared">%3$s %1$s %2$s</string>
<string name="deltalabel">Разлика в кръвната захар</string>
<string name="deltalabel_u">Разлика в кръвната захар [%1$s]</string>
<string name="currentlocation">Текущото местоположение</string>
<string name="location">Местоположение</string>
<string name="latitude_short">Ширина:</string>
@ -1281,12 +1217,9 @@
<string name="triggercoblabel">Активни въглехидрати</string>
<string name="cobcompared">Въгл %1$s %2$.0f</string>
<string name="taskname">Име на правилото</string>
<string name="eventname">Име на събитие</string>
<string name="edit_short">РЕД</string>
<string name="please_choose_an_action_type">Моля изберете действие:</string>
<string name="please_choose_a_trigger_type">Моля изберете условие:</string>
<string name="if_label">Ако:</string>
<string name="then_label">Тогава:</string>
<string name="triggers">Активиращи условия:</string>
<string name="remove_label">ИЗТРИИ</string>
<string name="preconditions">Предварителни:</string>
@ -1307,7 +1240,6 @@
<string name="medtronic_pump_frequency_worldwide">Останалата част от света (868 Mhz)</string>
<string name="medtronic_pump_encoding_4b6b_local">Софтуерно 4b6b кодиране</string>
<string name="medtronic_pump_encoding_4b6b_rileylink">Хардуерно 4b6b кодиране</string>
<string name="rileylink_mac_address">RileyLink MAC адрес</string>
<string name="medtronic_custom_action_wake_and_tune">Събуди и настрой</string>
<string name="medtronic_custom_action_clear_bolus_block">Изчисти Bolus Block</string>
<string name="medtronic_custom_action_reset_rileylink">Изчисти RileyLink конфигурацията</string>
@ -1319,9 +1251,7 @@
<string name="rileylink_scanner_scan_scan">СКАНИРАЙ</string>
<string name="rileylink_scanner_scan_stop">СТОП</string>
<string name="rileylink_scanner_selected_device">Избрано</string>
<string name="rileylink_scanner_scan">Сканирай</string>
<string name="rileylink_scanner_title">RileyLink скенер</string>
<string name="rileylink_scanner_scan_menu">Сканирай за RileyLink</string>
<string name="rileylink_scanner_ble_not_supported">Bluetooth Low Energy не се поддържа.</string>
<string name="rileylink_scanner_ble_not_enabled">Bluetooth не е включен.</string>
<string name="location_not_found_title">Локацията не е включена</string>
@ -1334,10 +1264,8 @@
<!-- RL Status Page -->
<string name="rileylink_settings_tab1">Настройки</string>
<string name="rileylink_settings_tab2">История</string>
<string name="rileylink_settings_tab3">Устройство</string>
<string name="rileylink_status">RileyLink статус</string>
<string name="medtronic_pump_status">Статус на помпата</string>
<string name="rileylink_settings_title">RileyLink настройки</string>
<string name="title_activity_rileylink_settings">RileyLink настройки</string>
<string name="rileylink_title">RileyLink</string>
<string name="rileylink_configured_address">Конфигуриран адрес</string>
@ -1402,7 +1330,6 @@
<string name="medtronic_pump_status_waking_up">Събуждане</string>
<string name="medtronic_pump_status_error_comm">Грешка в комуникацията</string>
<string name="medtronic_pump_status_timeout_comm">Изтичане на времето за връзка</string>
<string name="medtronic_pump_status_problem_contacting">Проблем при връзка с помпата</string>
<string name="medtronic_pump_status_pump_unreachable">Помпата е недостъпна</string>
<string name="medtronic_pump_status_invalid_config">Грешна конфигурация</string>
<string name="medtronic_pump_status_active">Активна</string>
@ -1420,7 +1347,6 @@
<string name="medtronic_cmd_basal_profile_not_set_is_same">Профилът е идентичен.</string>
<string name="medtronic_cmd_desc_get_history">Вземи история - стр %1$d (%2$d/16)</string>
<string name="medtronic_cmd_desc_get_history_request">Вземи история - стр %1$d</string>
<string name="medtronic_cmd_desc_get_history_base">Вземи история - стр %1$d</string>
<string name="medtronic_cmd_desc_get_time">Вземи времето на помпата</string>
<string name="medtronic_cmd_desc_get_settings">Вземи настройките на помпата</string>
<string name="medtronic_cmd_desc_get_model">Вземи модел на помпата</string>
@ -1429,12 +1355,14 @@
<string name="medtronic_cmd_desc_get_tbr">Получи временния базал</string>
<string name="medtronic_cmd_desc_set_tbr">Приложи временен базал</string>
<string name="medtronic_cmd_desc_set_bolus">Стартирай болус</string>
<string name="pump_no_connection_h">Няма връзка от %1$d час(а) %2$d мин</string>
<string name="pump_no_connection_d">Няма връзка от %1$d дни %2$d часа</string>
<string name="insulinFromCob"><![CDATA[Инсулин за въгл: <font color=\'%1$s\'>%2$.1fг %3$.2fЕ</font>]]></string>
<string name="bolusconstraintappliedwarning"><![CDATA[<font color=\'%1$s\'>Ограничение на болуса: %2$.2fЕ на %3$.2fЕ</font>]]></string>
<string name="slowabsorptiondetected"><![CDATA[<font color=\'%1$s\'>!!!!! Бавна абсорбция на въглехидрати: %2$d%% от времето. Проверете въведените данни. Може има голяма грешка !!!!!</font>]]></string>
<string name="slowabsorptiondetected"><![CDATA[<font color=\'%1$s\'>!!!!! Бавна абсорбция на въглехидрати: %2$d%% от времето. Проверете въведените данни. Може да има голяма грешка !!!!!</font>]]></string>
<string name="reservoirvalue">%1$.0f / %2$d Е</string>
<string name="partialboluswizard">Стартирай част от резултата в калкулатора [%]</string>
<string name="deliverpartofboluswizard">Калкулатора изчислява нужния инсулин, но само тази част ще бъде доставена. Полезно със SMB алгоритъма.</string>
<string name="loading">Зареждане ...</string>
<string name="objectives_exam_gate">Отговорете правилно на въпросите</string>
<plurals name="objective_days">
<item quantity="one">%1$d дeн</item>
<item quantity="other">%1$d дни</item>

View file

@ -34,7 +34,7 @@
<string name="description_smb">Nejnovější algoritmus pro pokročilé uživatele</string>
<string name="description_overview">Zobrazení stavu a informací. Přístup k nejběžnějším ovládacím prvkům</string>
<string name="description_persistent_notification">Zobrazení průběžného oznámení v Androidu s krátkým přehledem, co smyčka právě dělá</string>
<string name="description_profile_local">Definice profilu přístupného pouze v AndroidAPS (a i bez internetu).</string>
<string name="description_profile_local">Definujte profil, který je dostupný offline.</string>
<string name="description_profile_nightscout">Použití profilu definovaného v Nightscoutu</string>
<string name="description_profile_simple">Jednoduchý profil s jedním časovým pásmem.</string>
<string name="description_pump_combo">Ovladač pumpy pro Accu-Check Combo. Vyžaduje nainstalovanou aplikaci Ruffy</string>
@ -42,15 +42,12 @@
<string name="description_pump_dana_r_korean">Ovladač pumpy pro korejskou verzi DanaR</string>
<string name="description_pump_dana_r_v2">Ovladač pumpy pro DanaR s upgradovaným firmwarem</string>
<string name="description_pump_dana_rs">Ovladač pumpy pro DanaRS</string>
<string name="description_pump_insight">Ovladač pumpy pro Accu-Check Insight. Vyžaduje nainstalovanou aplikaci SightRemote</string>
<string name="description_pump_mdi">Ovladač pumpy pro uživatele inzulínových per</string>
<string name="description_pump_virtual">Ovladač pumpy pro uživatele bez podporované pumpy (Otevřená smyčka)</string>
<string name="description_sensitivity_aaps">Citlivost je počítána stejným způsobem jako v Oref0, ale je možné specifikovat dobu do minulosti. Minimální absorpce sacharidů je počítána dynamicky z maximální doby absorpce definované v nastavení.</string>
<string name="description_sensitivity_oref0">Citlivost je počítána za 24h a sacharidy, pokud nejsou absorbované, jsou oříznuty po čase definovaném v nastavení.</string>
<string name="description_sensitivity_oref1">Citlivost je počítána za 8h a sacharidy, pokud nejsou absorbované, jsou oříznuty po čase definovaném v nastavení. Je také zároveň vyhodnocováno UAM (neoznámené jídlo).</string>
<string name="description_sensitivity_weighted_average">Citlivost je počítána jako vážený průměr z odchylek. Novější mají vyšší prioritu. Minimální absorpce sacharidů je počítána dynamicky z maximální doby absorpce definované v nastavení. Tento algoritmus sleduje nejrychleji změny citlivosti.</string>
<string name="description_source_dexcom_g5">Příjem glykémií z modifikované Dexcom G5 aplikace.</string>
<string name="description_source_dexcom_g6">Příjem glykémií z modifikované Dexcom G6 aplikace.</string>
<string name="description_source_eversense">Příjem glykémií z modifikované Eversense aplikace.</string>
<string name="description_source_glimp">Příjem glykémií z Glimpu.</string>
<string name="description_source_mm640g">Příjem glykémií z Uploaderu 640G.</string>
@ -74,7 +71,6 @@
<string name="treatments_carbs_label_string">Sacharidy:</string>
<string name="treatments_iob_label_string">IOB:</string>
<string name="sms_iob">IOB:</string>
<string name="treatments_activity_string">Aktivita:</string>
<string name="treatments_iobtotal_label_string">Celkové IOB:</string>
<string name="treatments_iobactivitytotal_label_string">Celková aktivita IOB:</string>
<string name="tempbasals_realduration_label_string">Trv:</string>
@ -147,7 +143,6 @@
<string name="openapsma_lastenact_label">Poslední provedení</string>
<string name="ok">OK</string>
<string name="cancel">Zrušit</string>
<string name="close">Zavřít</string>
<string name="noapsselected">ŽÁDNÉ APS NEVYBRÁNO NEBO NEVRÁTILO VÝSLEDEK</string>
<string name="safety">Bezpečnost</string>
<string name="openapsma_disabled">Modul zakázán</string>
@ -324,19 +319,19 @@
<string name="overview_bolusprogress_goingtodeliver">Podávání %1$.2fU inzulínu</string>
<string name="objectives_0_objective">Nastavit vizualizaci a monitoring, analyzovat bazály a koeficienty</string>
<string name="objectives_0_gate">Zkontrolovat, zda jsou glykémie a údaje z pumpy viditelné v Nightscoutu</string>
<string name="objectives_1_objective">Začít s otevřenou smyčkou</string>
<string name="objectives_1_gate">Provozovat několik dní otevřenou smyčku a ručně potvrzovat doporučené dočasné bazály. Nastavovat a používat dočasné cíle (např. pro sport nebo hypo)</string>
<string name="objectives_2_objective">Porozumět otevřené smyčce a doporučeným dočasným bazálům</string>
<string name="objectives_2_gate">Na základě předchozích zkušeností rozhodnout, jaký je třeba maximální bazál a nastavit ho v pumpě a v aplikaci</string>
<string name="objectives_3_objective">Začít uzavřenou smyčku pouze s hlídáním nízké glykémie</string>
<string name="objectives_3_gate">Spustit uzavřenou smyčku s max IOB = 0 na několik dní s minimem nutných korekcí na nízkou glykémii</string>
<string name="objectives_4_objective">Zapnout uzavřenou smyčku, zvyšovat max IOB nad 0 a snižovat cílovou glykémii</string>
<string name="objectives_4_gate">Provozovat smyčku několik dní s alespoň jednou nocí bez alarmů na nízkou glykémii</string>
<string name="objectives_5_objective">Upravit bazály a koeficienty, když bude potřeba a povolit automatickou detekci citlivosti na inzulín</string>
<string name="objectives_5_gate">Jeden týden úspěšného používání s běžným příjmem sacharidů</string>
<string name="objectives_6_objective">Povolit další funkce pro běžné používání jako AMA</string>
<string name="objectives_7_objective">Povolit další funkce pro běžné používání jako SMB</string>
<string name="objectives_7_gate">Přečíst si dokumentaci a zvýšit maximání IOB, aby mohlo SMB fungovat. Pro začátek se dá použít velikost běžného bolusu + 3x maximální denní bazál</string>
<string name="objectives_openloop_objective">Začít s otevřenou smyčkou</string>
<string name="objectives_openloop_gate">Provozovat několik dní otevřenou smyčku a ručně potvrzovat doporučené dočasné bazály. Nastavovat a používat dočasné cíle (např. pro sport nebo hypo)</string>
<string name="objectives_maxbasal_objective">Porozumět otevřené smyčce, včetně jejích doporučení ohledně dočasných bazálů</string>
<string name="objectives_maxbasal_gate">Na základě předchozích zkušeností rozhodnout, jaký je třeba maximální bazál a nastavit ho v pumpě a v aplikaci</string>
<string name="objectives_maxiobzero_objective">Spustit uzavřenou smyčku pouze se zastavováním při nízké glykémii</string>
<string name="objectives_maxiobzero_gate">Spustit uzavřenou smyčku s max IOB = 0 na několik dní s minimem nutných korekcí na nízkou glykémii</string>
<string name="objectives_maxiob_objective">Zapnout uzavřenou smyčku, zvyšovat max IOB nad 0 a snižovat cílovou glykémii</string>
<string name="objectives_maxiob_gate">Provozovat smyčku několik dní s alespoň jednou nocí bez alarmů na nízkou glykémii</string>
<string name="objectives_autosens_objective">Upravit bazály a poměry, bude-li to potřeba, a povolit automatickou detekci citlivosti na inzulín</string>
<string name="objectives_autosens_gate">Jeden týden úspěšného používání s běžným příjmem sacharidů</string>
<string name="objectives_ama_objective">Povolit další funkce pro běžné používání jako AMA</string>
<string name="objectives_smb_objective">Povolit další funkce pro běžné používání jako SMB</string>
<string name="objectives_smb_gate">Přečíst si dokumentaci a zvýšit maximální IOB, aby mohlo SMB fungovat. Pro začátek se dá použít velikost běžného bolusu + 3x maximální denní bazál</string>
<string name="youareonallowedlimit">Dosaženo limitu</string>
<string name="noprofileselected">Není vybrán žádný profil</string>
<string name="smscommunicator_loophasbeendisabled">Smyčka byla zakázána</string>
@ -570,7 +565,10 @@
<string name="enablesuperbolus">Povolit superbolus</string>
<string name="enablesuperbolus_summary">Povolení superbolusu v kalkulátoru. Nepovolujte, dokud se nenaučíte, co to opravdu dělá. MŮŽE ZPŮSOBIT PŘEDÁVKOVÁNÍ INZULÍNEM PŘI NESPRÁVNÉM POUŽITÍ!</string>
<string name="show_statuslights">Zobrazit stavové indikátory na domovské obrazovce</string>
<string name="show_statuslights_summary">Povolte stavové indikátory pro stáří kanyly, inzulínu, senzoru, zásobníku a baterie na domovské obrazovce.</string>
<string name="show_statuslights_easy">Zobrazit originální stavové indikátory na domovské obrazovce</string>
<string name="show_statuslights_easy_summary">Povolí originální stavové indikátory pro stáří kanyly, inzulínu, senzoru, zásobníku a baterie na domovské obrazovce.</string>
<string name="show_statuslights_extended">Zobrazit rozšířené stavové indikátory na domovské obrazovce</string>
<string name="show_statuslights_extended_summary">Povolí rozšířené stavové indikátory pro stáří kanyly, inzulínu, senzoru, zásobníku a baterie na domovské obrazovce.</string>
<string name="statuslights_res_warning">Úroveň varování stavu zásobníku [U]</string>
<string name="statuslights_res_critical">Úroveň kritického varování stavu zásobníku [U]</string>
<string name="statuslights_bat_warning">Úroveň varování stavu baterie [%%]</string>
@ -728,8 +726,6 @@
<string name="bluetooth">Bluetooth</string>
<string name="btwatchdog_title">Hlídač BT</string>
<string name="btwatchdog_summary">Vypne na 1 sek bluetooth v telefonu, pokud se nedaří připojit k pumpě. Může to pomoci u telefonů, které mají problémy s BT</string>
<string name="DexcomG5">DexcomG5 aplikace (upravená)</string>
<string name="DexcomG6">Dexcom G6 aplikace (upravená)</string>
<string name="eversense">Eversense aplikace (upravená)</string>
<string name="dexcomg5_nsupload_title">Nahrávat data do NS</string>
<string name="bgsource_upload">Nastavení nahrávání glykémií</string>
@ -799,50 +795,8 @@
<string name="combo_reservoir_level_insufficient_for_bolus">Nedostatek inzulínu pro takovýto bolus</string>
<string name="extendedbolusdeliveryerror">Chyba spuštění extended bolusu</string>
<string name="insightpump_shortname">Insight</string>
<string name="insightpump">Insight</string>
<string name="status_no_colon">Stav</string>
<string name="changed">Změněno</string>
<string name="pump_stopped_uppercase">PUMPA ZASTAVENA</string>
<string name="status_updated">Stav aktualizován</string>
<string name="ago">zpět</string>
<string name="with">s</string>
<string name="insight_active_tbr">Aktivní dočasný bazál</string>
<string name="insight_min_left">min zbývá</string>
<string name="log_book">Historie</string>
<string name="insight_last_completed_action">Poslední vykonaný příkaz</string>
<string name="insight_min">min</string>
<string name="insight_remaining_over">zůstává nad</string>
<string name="insight_total_with">celkem se</string>
<string name="insight_upfront_with">předem se s</string>
<string name="insight_stay_always_connected">Zůstat stále připojený</string>
<string name="insight_history_idle">NEČINNÝ</string>
<string name="insight_history_syncing">SYNCHRONIZUJI</string>
<string name="insight_history_busy">ZANEPRÁZDNĚN</string>
<string name="insight_history_synced">SYNCHRONIZOVÁNO</string>
<string name="insight_startup_uppercase">SPOUŠTĚNÍ</string>
<string name="insight_needs">potřebuje</string>
<string name="insight_not_connected_to_companion_app">Nepřipojen k podpůrné aplikaci!</string>
<string name="insight_companion_app_not_installed">Podpůrná aplikace patrně není nainstalovaná!</string>
<string name="insight_incompatible_compantion_app_we_need_version">Nekompatibilní podpůrná aplikace, je požadována verze</string>
<string name="insight_unknown">Neznámý</string>
<string name="insight_waiting_for_code">Čekám na potvrzení kódu</string>
<string name="insight_code_rejected">Kód odmítnut</string>
<string name="insight_app_binding">Připojování aplikace</string>
<string name="insight_not_authorized">Neautorizován</string>
<string name="insight_incompatible">Nekompatibilní</string>
<string name="second">sekund</string>
<string name="minute">minut</string>
<string name="format_hours">%1$.2f h</string>
<string name="hour">hodin</string>
<string name="day">dní</string>
<string name="week">týdnů</string>
<string name="time_plural"></string>
<string name="insight_keepalive_format_string">%1$d vyprší %2$s</string>
<string name="insight_keep_alive_status">Stav keep-alive</string>
<string name="statistics">Statistika</string>
<string name="connect_preemptively">Připojování dopředu</string>
<string name="automatically_connect_when">Automaticky připojit při otevření obrazovky AndroidAPS, dříve než dojde k poslání příkazu, aby se omezila doba připojování</string>
<string name="not_recommended_due_to_battery_drain">Nedoporučeno kvůli vybíjení baterie</string>
<string name="enablesmbalways">Vždy povolit SMB</string>
<string name="enablesmbalways_summary">Povolit SMB nezávisle na bolusech. Možno pouze se zdroji glykémií s dobrým filtrováním dat, jako např. G5</string>
<string name="enablesmbaftercarbs">Povolit SMB po jídle</string>
@ -946,8 +900,6 @@
<string name="reset">Resetovat</string>
<string name="waitingfortimesynchronization">Čekání na synchronizaci času (%1$d s)</string>
<string name="loopdisconnectedfor">Odpojeno (%1$d m)</string>
<string name="automatic_careportal_events">Automatické vkládání péče</string>
<string name="automatically_upload_insulin_cannula_and_battery_changes_to_nightscout">Automaticky vloží výměnu inzulínu, setu, baterie a alarmů pumpy do NS</string>
<string name="openapssmb_maxiob_title">Maximální celková hodnota IOB, kterou OpenAPS nemůže překročit [U]</string>
<string name="openapssmb_maxiob_summary">Tato hodnota je v kontextu OpenAPS nazývána Max IOB.\nOpenAPS nikdy nepřidá inzulín, pokud je současné IOB větší než tato hodnota</string>
<string name="pump_stopped">Pumpa zastavena</string>
@ -998,7 +950,6 @@
<string name="adjustprofileinns">Změny musí být prováděny v NS</string>
<string name="exitwizard">Přeskočit průvodce</string>
<string name="setupwizard_loop_description">Stiskněte tlačítko níže, chcete-li AndroidAPS povolit navrhovat nebo provádět změny bazálu</string>
<string name="enableobjectives">Povolit Cíle</string>
<string name="apssetup">Nastavení APS</string>
<string name="sensitivitysetup">Nastavení senzitivity</string>
<string name="setupwizard_sensitivity_description">Plugin senzitivita slouží k detekci změn v senzitivitě a k počítání COB. Více informací zde:</string>
@ -1056,7 +1007,6 @@
<string name="error_adding_treatment_title">Data ošetření neúplná</string>
<string name="maintenance_settings">Nastavení údržby</string>
<string name="maintenance_email">E-mail</string>
<string name="invalid_email_message">Neplatný e-mail</string>
<string name="maintenance_amount">Počet logů k odeslání</string>
<string name="maintenance">Údržba</string>
<string name="maintenance_shortname">ÚDRŽBA</string>
@ -1118,7 +1068,6 @@
<string name="manufacturing_date">Datum výroby</string>
<string name="delete_pairing">Zrušit párování</string>
<string name="pairing_information">Informace o párování</string>
<string name="refreh_status">Aktualizovat stav</string>
<string name="start_pump">Spustit pumpu</string>
<string name="stop_pump">Zastavit pumpu</string>
<string name="operating_mode">Provozní režim</string>
@ -1283,12 +1232,9 @@
<string name="triggercoblabel">COB</string>
<string name="cobcompared">COB %1$s %2$.0f</string>
<string name="taskname">Název úkolu</string>
<string name="eventname">Název události</string>
<string name="edit_short">EDIT</string>
<string name="please_choose_an_action_type">Zvolte typ akce prosím:</string>
<string name="please_choose_a_trigger_type">Zvolte typ podmínky:</string>
<string name="if_label">Pokud:</string>
<string name="then_label">Pak:</string>
<string name="triggers">Podmínky:</string>
<string name="remove_label">ODSTRANIT</string>
<string name="preconditions">Nutné podmínky:</string>
@ -1309,7 +1255,6 @@
<string name="medtronic_pump_frequency_worldwide">Celosvětové (868 Mhz)</string>
<string name="medtronic_pump_encoding_4b6b_local">Software 4b6b Encoding</string>
<string name="medtronic_pump_encoding_4b6b_rileylink">Hardware 4b6b Encoding</string>
<string name="rileylink_mac_address">RileyLink MAC adresa</string>
<string name="medtronic_custom_action_wake_and_tune">Probuzení a spojování</string>
<string name="medtronic_custom_action_clear_bolus_block">Vymazat blokování bolusu</string>
<string name="medtronic_custom_action_reset_rileylink">Resetovat konfiguraci RileyLinku</string>
@ -1321,9 +1266,7 @@
<string name="rileylink_scanner_scan_scan">VYHLEDAT</string>
<string name="rileylink_scanner_scan_stop">ZASTAVIT</string>
<string name="rileylink_scanner_selected_device">Vybráno</string>
<string name="rileylink_scanner_scan">Vyhledávání</string>
<string name="rileylink_scanner_title">Vyhledávání RileyLinku</string>
<string name="rileylink_scanner_scan_menu">Vyhledání RileyLinku</string>
<string name="rileylink_scanner_ble_not_supported">Bluetooth Low Energy nepodporováno.</string>
<string name="rileylink_scanner_ble_not_enabled">Bluetooth není povolen.</string>
<string name="location_not_found_title">Zjišťování místa není povoleno</string>
@ -1336,10 +1279,8 @@
<!-- RL Status Page -->
<string name="rileylink_settings_tab1">Nastavení</string>
<string name="rileylink_settings_tab2">Historie</string>
<string name="rileylink_settings_tab3">Zařízení</string>
<string name="rileylink_status">Status RileyLink</string>
<string name="medtronic_pump_status">Stav pumpy</string>
<string name="rileylink_settings_title">Nastavení RileyLink</string>
<string name="title_activity_rileylink_settings">Nastavení RileyLink</string>
<string name="rileylink_title">RileyLink</string>
<string name="rileylink_configured_address">Nastavená adresa</string>
@ -1404,7 +1345,6 @@
<string name="medtronic_pump_status_waking_up">Probouzení</string>
<string name="medtronic_pump_status_error_comm">Chyba komunikace</string>
<string name="medtronic_pump_status_timeout_comm">Vypršel časový limit komunikace</string>
<string name="medtronic_pump_status_problem_contacting">Problém připojení k pumpě</string>
<string name="medtronic_pump_status_pump_unreachable">Pumpa nedostupná</string>
<string name="medtronic_pump_status_invalid_config">Neplatná konfigurace</string>
<string name="medtronic_pump_status_active">Aktivní</string>
@ -1422,7 +1362,6 @@
<string name="medtronic_cmd_basal_profile_not_set_is_same">Bazální profil je stejný, takže nebude znovu nastaven.</string>
<string name="medtronic_cmd_desc_get_history">Načítání historie - Strana %1$d (%2$d/16)</string>
<string name="medtronic_cmd_desc_get_history_request">Načítání historie - Strana %1$d</string>
<string name="medtronic_cmd_desc_get_history_base">Načítání historie - Strana %1$d</string>
<string name="medtronic_cmd_desc_get_time">Načítání času pumpy</string>
<string name="medtronic_cmd_desc_get_settings">Načítání nastavení</string>
<string name="medtronic_cmd_desc_get_model">Načítání modelu</string>
@ -1431,13 +1370,36 @@
<string name="medtronic_cmd_desc_get_tbr">Načítání dočasného bazálu</string>
<string name="medtronic_cmd_desc_set_tbr">Nastavování dočasného bazálu</string>
<string name="medtronic_cmd_desc_set_bolus">Nastavování bolusu</string>
<string name="pump_no_connection_h">Žádné spojení po dobu %1$d hodin %2$d minut</string>
<string name="pump_no_connection_d">Žádné spojení po dobu %1$d dní %2$d hodin</string>
<string name="insulinFromCob"><![CDATA[Inzulín z COB: <font color=\'%1$s\'>%2$.1fg %3$.2fU</font>]]></string>
<string name="bolusconstraintappliedwarning"><![CDATA[<font color=\'%1$s\'>Aplikováno omezení bolusu: %2$.2fU na %3$.2fU</font>]]></string>
<string name="slowabsorptiondetected"><![CDATA[<font color=\'%1$s\'>!!!!! Detekována pomalá absorbce sacharidů: %2$d%% času. Překontrolujte kalkulaci. COB může být o hodně jinak !!!!!</font>]]></string>
<string name="slowabsorptiondetected"><![CDATA[<font color=\'%1$s\'>!!!!! Detekována pomalá absorbce sacharidů: %2$d%% času. Překontrolujte kalkulaci. COB může nadhodnocené a proto může být počítáno více inzulínu !!!!!</font>]]></string>
<string name="reservoirvalue">%1$.0f / %2$d U</string>
<string name="partialboluswizard">Podat tuto část z výsledku kalkulace [%]</string>
<string name="deliverpartofboluswizard">Kalkulátor provede výpočet, ale dodána je pouze tato část inzulínu. Výhodné při používání SMB algoritmu.</string>
<string name="loading">Načítání…</string>
<string name="snooze">Ztišit</string>
<string name="accomplished">Splněno: %1$s</string>
<string name="objectives_usage_objective">Naučte se, jak ovládat AndroidAPS</string>
<string name="objectives_usage_gate">Provádějte v AndroidAPS různé akce</string>
<string name="objectives_useprofileswitch">Nastavte profil na 90 % na 10 min (Dlouhé stisknutí názvu profilu na obrazovce Přehled)</string>
<string name="objectives_usedisconnectpump">Předstírejte, že se jdete sprchovat. Odpojte pumpu na 1 h (Dlouze přidržte tlačítko Otevřená smyčka)</string>
<string name="objectives_usereconnectpump">...a stejným způsobem ji znovu připojte</string>
<string name="objectives_usetemptarget">Vytvořte vlastní dočasný cíl s trváním 10 min (Dlouze přidržte aktuální cíl)</string>
<string name="objectives_useactions">Na kartě Konfigurace povolte modul Akce, aktivujte jeho zobrazení a zobrazte jeho obsah z horní nabídky</string>
<string name="objectives_useloop">Zobrazte obsah modulu Smyčka</string>
<string name="objectives_usescale">Přepněte režim zobrazení dlouhým stisknutím grafu glykémie</string>
<string name="objectives_button_enter">Zadat</string>
<string name="enter_code_obtained_from_developers_to_bypass_the_rest_of_objectives">Zadejte kód, který jste získali od vývojářů, abyste obešli zbývající cíle</string>
<string name="codeaccepted">Kód přijat</string>
<string name="codeinvalid">Neplatný kód</string>
<string name="objectives_exam_objective">Prokažte své znalosti</string>
<string name="objectives_exam_gate">Studujte a správně zodpovězte otázky</string>
<string name="answerdisabledto">Odpovídání zakázáno do: %1$s</string>
<string name="wronganswer">Špatná odpověď!</string>
<string name="unfinshed_button">Další nedokončená</string>
<string name="close">Zavřít</string>
<string name="requestcode">Kód žádosti: %1$s</string>
<string name="objectives_hint">(zatrhněte všechny správné odpovědi)</string>
<plurals name="objective_days">
<item quantity="one">%1$d den</item>
<item quantity="few">%1$d dnů</item>

View file

@ -34,7 +34,7 @@
<string name="description_smb">Der aktuellste Algorithmus für erfahrene Nutzer</string>
<string name="description_overview">Zeigt den aktuellen Status deines Loops und Knöpfe für die geläufigsten Aktionen an</string>
<string name="description_persistent_notification">Zeigt eine fortlaufende Benachrichtigung mit einer kurzen Übersicht darüber, was dein Loop derzeit tut</string>
<string name="description_profile_local">Definiere ein Profil, das auch offline verfügbar ist.</string>
<string name="description_profile_local">Definiere ein Profil, was auch offline verfügbar ist.</string>
<string name="description_profile_nightscout">Stellt das Profil zur Verfügung, das in Nightscout definiert ist</string>
<string name="description_profile_simple">Definiere ein Profil mit nur einem Zeitblock.</string>
<string name="description_pump_combo">Pumpen-Integration für Accu-Chek Combo Pumpen; erfordert, dass ruffy installiert ist</string>
@ -42,15 +42,12 @@
<string name="description_pump_dana_r_korean">Pumpen-Integration für koreanische DANA Diabecare R Pumpen</string>
<string name="description_pump_dana_r_v2">Pumpen-Integration für DANA Diabecare R Pumpen mit aktualisierter Firmware</string>
<string name="description_pump_dana_rs">Pumpen-Integration für Dana Diabecare RS Pumpen</string>
<string name="description_pump_insight">Pumpen-Integration für Accu-Chek Insight Pumpen, erfordert, dass SightRemote installiert ist</string>
<string name="description_pump_mdi">Pumpen-Integration für Personen, die täglich mehrere Injektionen für ihre Diabetestherapie vornehmen</string>
<string name="description_pump_virtual">Pumpen-Integration für Pumpen, die noch nicht über einen Treiber verfügen (Open Loop)</string>
<string name="description_sensitivity_aaps">Die Sensitivität wird genauso wie bei Oref0 berechnet, aber Du kannst dafür ein Zeitfenster bestimmen. Die minimale Kohlenhydrat-Absorptionsrate wird aus der maximalen Absorptionsdauer aus den Einstellungen abgeleitet.</string>
<string name="description_sensitivity_oref0">Die Sensitivität wird aus den Daten der letzten 24 Stunden berechnet und Kohlenhydrate (falls nicht bereits absorbiert) werden nach der in den Einstellungen angegebenen Zeit als absorbiert betrachtet.</string>
<string name="description_sensitivity_oref1">Die Sensitivität wird aus den Daten der letzten 8 Stunden berechnet und Kohlenhydrate (falls nicht bereits absorbiert) werden nach der in den Einstellungen angegebenen Zeit als absorbiert betrachtet. Das Plugin bezieht Zeiträume, in denen UAM annimmt, dass Kohlenhydrate aktiv waren, nicht mit in die Berechnung ein.</string>
<string name="description_sensitivity_weighted_average">Die Sensitivität wird aus den Abweichungen errechnet. Dabei werden neuere Abweichungen stärker gewichtet als ältere. Die minimale Kohlenhydrat-Aufnahme wird aus der in den Präferenzen angegebenen maximalen Kohlenhydrat-Resorptionszeit abgeleitet. Dieser Algorithmus reagiert am schnellsten auf Änderungen der Empfindlichkeit.</string>
<string name="description_source_dexcom_g5">Empfange Blutzucker-Werte von der gepatchten Dexcom G5-App.</string>
<string name="description_source_dexcom_g6">Empfange BZ-Werte von der gepatchten Dexcom G6 App.</string>
<string name="description_source_eversense">Empfange BZ-Werte von der gepatchten Eversense App.</string>
<string name="description_source_glimp">Empfange Blutzucker-Werte von Glimp.</string>
<string name="description_source_mm640g">Empfange Blutzucker-Werte vom 600SeriesAndroidUploader.</string>
@ -74,7 +71,6 @@
<string name="treatments_carbs_label_string">Kohlenhydrate:</string>
<string name="treatments_iob_label_string">IOB:</string>
<string name="sms_iob">IOB:</string>
<string name="treatments_activity_string">Aktivität:</string>
<string name="treatments_iobtotal_label_string">Gesamt IOB:</string>
<string name="treatments_iobactivitytotal_label_string">Ges. IOB Aktivität:</string>
<string name="tempbasals_realduration_label_string">Dauer:</string>
@ -147,7 +143,6 @@
<string name="openapsma_lastenact_label">Zuletzt abgegeben</string>
<string name="ok">OK</string>
<string name="cancel">Abbrechen</string>
<string name="close">Schliessen</string>
<string name="noapsselected">KEIN APS AUSGEWÄHLT ODER KEIN ERGEBNIS VORHANDEN</string>
<string name="safety">Sicherheit</string>
<string name="openapsma_disabled">Plugin ist deaktiviert</string>
@ -324,19 +319,19 @@
<string name="overview_bolusprogress_goingtodeliver">Werde %1$.2fU abgeben</string>
<string name="objectives_0_objective">Konfiguriere die Anzeige und das Monitoring (Nightscout) und analysiere Basal-Raten und Faktoren</string>
<string name="objectives_0_gate">Verifiziere, dass BZ- und Pumpen-Insulin-Daten erfolgreich zu Nightscout hochgeladen werden.</string>
<string name="objectives_1_objective">Starte den Open Loop Modus</string>
<string name="objectives_1_gate">Erprobe den Open Loop Modus für ein paar Tage und setze manuell temporäre Basal-Raten. Richte temporäre Ziele ein und nutze sie (z.B. für Bewegung, unterstützend zur Hypobehandlung).</string>
<string name="objectives_2_objective">Verstehe den Open Loop und die TBR-Empfehlungen</string>
<string name="objectives_2_gate">Entscheide anhand von dieser Erfahrung, wie hoch max Basal sein sollte, und übernehme den Wert in die Pumpen- und AAPS-Einstellungen.</string>
<string name="objectives_3_objective">Starte den Closed Loop Modus mit Abschaltung bei niedrigen Werten</string>
<string name="objectives_3_gate">Erprobe den Closed Loop Modus mit max IOB = 0 für ein paar Tage, ohne zu viele Unterzuckerungen zu haben.</string>
<string name="objectives_4_objective">Stelle den Closed Loop fein ein, erhöhe max IOB über 0 und setze den Zielbereich langsam herunter.</string>
<string name="objectives_4_gate">Verwende es ein paar Tage und zumindest eine Nacht ohne Niedrig-Alarme (UZ), bevor du den BZ-Zielbereich senkst.</string>
<string name="objectives_5_objective">Passe, falls notwendig, Basal und Faktoren an und aktiviere dann die Autosens-Funktion.</string>
<string name="objectives_5_gate">Loope eine Woche erfolgreich am Tag mit regelmäßiger Kohlenhydrat-Eingabe.</string>
<string name="objectives_6_objective">Aktiviere zusätzliche Funktionen wie z. B. den Mahlzeitenassistenten</string>
<string name="objectives_7_objective">Aktiviere zusätzliche Funktionen wie z. B. SMB</string>
<string name="objectives_7_gate">Lies das Wiki und hebe maxIOB an, damit SMB funktioniert. Ein guter Startwert ist
<string name="objectives_openloop_objective">Den Open Loop starten.</string>
<string name="objectives_openloop_gate">Erprobe den Open Loop Modus für ein paar Tage und setze manuell temporäre Basal-Raten. Richte temporäre Ziele ein und nutze sie (z.B. für Bewegung, unterstützend zur Hypobehandlung).</string>
<string name="objectives_maxbasal_objective">Verstehe den Open Loop und die TBR-Empfehlungen</string>
<string name="objectives_maxbasal_gate">Entscheide anhand von dieser Erfahrung, wie hoch max Basal sein sollte, und übernehme den Wert in die Pumpen- und AAPS-Einstellungen.</string>
<string name="objectives_maxiobzero_objective">Starte den Closed Loop Modus mit Abschaltung bei niedrigen Werten</string>
<string name="objectives_maxiobzero_gate">Erprobe den Closed Loop Modus mit max IOB = 0 für ein paar Tage, ohne zu viele Unterzuckerungen zu haben.</string>
<string name="objectives_maxiob_objective">Stelle den Closed Loop feiner ein, erhöhe max IOB über 0 und setze den Zielwert langsam herunter.</string>
<string name="objectives_maxiob_gate">Bevor Du den Zielwert runter setzt, musst Du einige Tage Erfahrung sammeln und mind. eine Nacht ohne Alarm wegen niedriger BZ-Werte absolvieren.</string>
<string name="objectives_autosens_objective">Passe, falls notwendig, Basal und Faktoren an und aktiviere dann die Autosens-Funktion.</string>
<string name="objectives_autosens_gate">Loope eine Woche erfolgreich tagsüber mit regelmäßiger Kohlenhydrat-Eingabe.</string>
<string name="objectives_ama_objective">Aktiviere zusätzliche Funktionen wie z. B. den erweiterten Mahlzeitenassistenten (AMA).</string>
<string name="objectives_smb_objective">Aktiviere zusätzliche Funktionen wie z. B. SMB</string>
<string name="objectives_smb_gate">Lies das Wiki und hebe maxIOB an, damit SMB funktioniert. Ein guter Startwert ist
maxIOB = durchschnittlicher Essensbolus + 3 x maximale Basalrate</string>
<string name="youareonallowedlimit">Limit erreicht</string>
<string name="noprofileselected">Kein Profil ausgewählt</string>
@ -571,7 +566,10 @@ maxIOB = durchschnittlicher Essensbolus + 3 x maximale Basalrate</string>
<string name="enablesuperbolus">Aktiviere Superbolus im Wizard</string>
<string name="enablesuperbolus_summary">Aktiviere die SuperBolus-Funktion im Wizard. Nicht aktivieren, wenn Du nicht weißt, welche Auswirkungen dieser Bolus hat! ES KANN ZU EINER ÜBERDOSIERUNG AN INSULIN KOMMEN!</string>
<string name="show_statuslights">Statusanzeige auf Homescreen</string>
<string name="show_statuslights_summary">Statusanzeige für CAGE, IAGE, SAGE, Reservoir- und Batteriestand auf dem Homescreen.</string>
<string name="show_statuslights_easy">Ursprüngliche Statusanzeige auf Homescreen</string>
<string name="show_statuslights_easy_summary">Ursprüngliche Statusanzeige für CAGE, IAGE, SAGE, Reservoir- und Batteriestand auf dem Homescreen.</string>
<string name="show_statuslights_extended">Erweiterte Statusanzeige auf Homescreen</string>
<string name="show_statuslights_extended_summary">Erweiterte Statusanzeige für CAGE, IAGE, SAGE, Reservoir- und Batteriestand auf dem Homescreen.</string>
<string name="statuslights_res_warning">Warnschwelle Reservoirstand [IE]</string>
<string name="statuslights_res_critical">Warnschwelle kritischer Reservoirstand [IE]</string>
<string name="statuslights_bat_warning">Warnschwelle Batteriestand [%%]</string>
@ -729,8 +727,6 @@ maxIOB = durchschnittlicher Essensbolus + 3 x maximale Basalrate</string>
<string name="bluetooth">Bluetooth</string>
<string name="btwatchdog_title">BT Watchdog</string>
<string name="btwatchdog_summary">Deaktiviert Bluetooth kurzzeitig, falls keine Verbindung zur Pumpe besteht. Dies kann für Smartphones mit Verbindungsproblemen nützlich sein.</string>
<string name="DexcomG5">DexcomG5 App (gepatcht)</string>
<string name="DexcomG6">DexcomG6 App (gepatcht)</string>
<string name="eversense">Eversense App (gepatcht)</string>
<string name="dexcomg5_nsupload_title">Speichere BZ-Werte in Nightscout</string>
<string name="bgsource_upload">BZ Upload Einstellungen</string>
@ -800,50 +796,8 @@ maxIOB = durchschnittlicher Essensbolus + 3 x maximale Basalrate</string>
<string name="combo_reservoir_level_insufficient_for_bolus">Nicht mehr genug Insulin im Reservoir für den Bolus</string>
<string name="extendedbolusdeliveryerror">Fehler bei der Abgabe eines verzögerten Bolus</string>
<string name="insightpump_shortname">Sight</string>
<string name="insightpump">Insight Pumpe</string>
<string name="status_no_colon">Status</string>
<string name="changed">Geändert</string>
<string name="pump_stopped_uppercase">PUMPE GESTOPPT</string>
<string name="status_updated">Status aktualisiert</string>
<string name="ago">her</string>
<string name="with">mit</string>
<string name="insight_active_tbr">Aktive TBR</string>
<string name="insight_min_left">min übrig</string>
<string name="log_book">Logbuch</string>
<string name="insight_last_completed_action">Letzte abgeschlossene Aktion</string>
<string name="insight_min">min</string>
<string name="insight_remaining_over">verbleibend über</string>
<string name="insight_total_with">insgesamt mit</string>
<string name="insight_upfront_with">insgesamt mit</string>
<string name="insight_stay_always_connected">Bleibe immer verbunden</string>
<string name="insight_history_idle">LEERLAUF</string>
<string name="insight_history_syncing">SYNCHRONISIERUNG</string>
<string name="insight_history_busy">BESCHÄFTIGT</string>
<string name="insight_history_synced">SYNCHRONISIERT</string>
<string name="insight_startup_uppercase">START</string>
<string name="insight_needs">benötigt</string>
<string name="insight_not_connected_to_companion_app">Keine Verbindung zur Begleit-App!</string>
<string name="insight_companion_app_not_installed">Begleit-App scheint nicht installiert zu sein!</string>
<string name="insight_incompatible_compantion_app_we_need_version">Nicht kompatible Begleit-App, wir benötigen Version</string>
<string name="insight_unknown">Unbekannt</string>
<string name="insight_waiting_for_code">Warte auf Code-Bestätigung</string>
<string name="insight_code_rejected">Code abgelehnt</string>
<string name="insight_app_binding">Verbinden zur App</string>
<string name="insight_not_authorized">Nicht autorisiert</string>
<string name="insight_incompatible">Inkompatibel</string>
<string name="second">Sekunde</string>
<string name="minute">Minute</string>
<string name="format_hours">%1$.2f h</string>
<string name="hour">Stunde</string>
<string name="day">Tag</string>
<string name="week">Woche</string>
<string name="time_plural">n</string>
<string name="insight_keepalive_format_string">%1$ds läuft ab in %2$s</string>
<string name="insight_keep_alive_status">Keep-Alive Status</string>
<string name="statistics">Statistiken</string>
<string name="connect_preemptively">Vorausschauend verbinden</string>
<string name="automatically_connect_when">Automatisch verbinden, wenn AndroidAPS geöffnet ist und bevor Befehle an die Pumpe angefragt gesendet, um die Dauer des Verbindungsaufbaus zu verringern</string>
<string name="not_recommended_due_to_battery_drain">Wegen des hohen Energieverbrauchs nicht empfohlen</string>
<string name="enablesmbalways">SMB immer aktivieren</string>
<string name="enablesmbalways_summary">Aktiviere SMB immer, unabhängig von Boli. Dies ist nur möglich, wenn eine BZ-Quelle genutzt wird, die die Daten besonders gut filtert wie z. B. G5.</string>
<string name="enablesmbaftercarbs">Aktiviere SMB nach Mahlzeiten.</string>
@ -947,8 +901,6 @@ maxIOB = durchschnittlicher Essensbolus + 3 x maximale Basalrate</string>
<string name="reset">Zurücksetzen</string>
<string name="waitingfortimesynchronization">Warte auf Zeitsynchronisierung (%1$d Sek.)</string>
<string name="loopdisconnectedfor">Getrennt (%1$d m)</string>
<string name="automatic_careportal_events">Automatische Careportal-Ereignisse</string>
<string name="automatically_upload_insulin_cannula_and_battery_changes_to_nightscout">Automatischer Nightscout-Upload von Reservoir-, Katheter- und Batteriewechseln</string>
<string name="openapssmb_maxiob_title">Maximales Gesamt-IOB, das nicht überschritten werden darf [IE]</string>
<string name="openapssmb_maxiob_summary">Diesen Wert nennt OpenAPS MaxIOB.\nSolange dieser Wert überschritten wird, wird AndroidAPS kein Insulin abgeben.</string>
<string name="pump_stopped">Pumpe gestoppt</string>
@ -999,7 +951,6 @@ maxIOB = durchschnittlicher Essensbolus + 3 x maximale Basalrate</string>
<string name="adjustprofileinns">Änderungen müssen in Nightscout vorgenommen werden.</string>
<string name="exitwizard">Einrichtungsassistenten überspringen</string>
<string name="setupwizard_loop_description">Drücke die Schaltfläche unten, um AndroidAPS zu erlauben, Basal-Änderungen vorzuschlagen/vorzunehmen</string>
<string name="enableobjectives">Zielsetzungen aktivieren</string>
<string name="apssetup">APS-Plugin konfigurieren</string>
<string name="sensitivitysetup">Sensitivitäts Plugin konfigurieren</string>
<string name="setupwizard_sensitivity_description">Das Sensitivitäts-Plugin wird für die Sensitivitäts- und COB-Berechnung verwendet. Für weitere Informationen siehe:</string>
@ -1057,7 +1008,6 @@ maxIOB = durchschnittlicher Essensbolus + 3 x maximale Basalrate</string>
<string name="error_adding_treatment_title">Behandlungsdaten unvollständig</string>
<string name="maintenance_settings">Wartungseinstellungen</string>
<string name="maintenance_email">E-Mail</string>
<string name="invalid_email_message">Ungültige E-Mail</string>
<string name="maintenance_amount">Anzahl der zu sendenden Logs</string>
<string name="maintenance">Wartung</string>
<string name="maintenance_shortname">WRTNG</string>
@ -1120,7 +1070,6 @@ Unerwartetes Verhalten.</string>
<string name="manufacturing_date">Herstellungsdatum</string>
<string name="delete_pairing">Pairing löschen</string>
<string name="pairing_information">Pairinginformationen</string>
<string name="refreh_status">Status aktualisieren</string>
<string name="start_pump">Pumpe starten</string>
<string name="stop_pump">Pumpe stoppen</string>
<string name="operating_mode">Betriebsmodus</string>
@ -1272,6 +1221,7 @@ Unerwartetes Verhalten.</string>
<string name="autosenslabel">Autosens %</string>
<string name="deltacompared">%3$s %1$s %2$s</string>
<string name="deltalabel">BZ-Unterschied</string>
<string name="deltalabel_u">BZ-Unterschied [%1$s]</string>
<string name="currentlocation">Aktueller Standort</string>
<string name="location">Standort</string>
<string name="latitude_short">Breitengrad:</string>
@ -1284,12 +1234,9 @@ Unerwartetes Verhalten.</string>
<string name="triggercoblabel">COB</string>
<string name="cobcompared">COB %1$s %2$.0f</string>
<string name="taskname">Name der Aufgabe</string>
<string name="eventname">Name des Ereignisses</string>
<string name="edit_short">BEARBEITEN</string>
<string name="please_choose_an_action_type">Bitte wähle eine Aktion:</string>
<string name="please_choose_a_trigger_type">Bitte wähle einen Auslöser:</string>
<string name="if_label">Wenn:</string>
<string name="then_label">Dann:</string>
<string name="triggers">Auslöser:</string>
<string name="remove_label">ENTFERNEN</string>
<string name="preconditions">Vorbedingung:</string>
@ -1310,7 +1257,6 @@ Unerwartetes Verhalten.</string>
<string name="medtronic_pump_frequency_worldwide">Weltweit (868 Mhz)</string>
<string name="medtronic_pump_encoding_4b6b_local">Software 4b6b Codierung</string>
<string name="medtronic_pump_encoding_4b6b_rileylink">Hardware 4b6b Codierung</string>
<string name="rileylink_mac_address">RileyLink MAC Adresse</string>
<string name="medtronic_custom_action_wake_and_tune">Aufwachen und anpassen</string>
<string name="medtronic_custom_action_clear_bolus_block">Bolus Block löschen</string>
<string name="medtronic_custom_action_reset_rileylink">RileyLink-Konfiguration zurücksetzen</string>
@ -1322,9 +1268,7 @@ Unerwartetes Verhalten.</string>
<string name="rileylink_scanner_scan_scan">SCANNEN</string>
<string name="rileylink_scanner_scan_stop">STOP</string>
<string name="rileylink_scanner_selected_device">Ausgewählt</string>
<string name="rileylink_scanner_scan">Scannen</string>
<string name="rileylink_scanner_title">RileyLink Scan</string>
<string name="rileylink_scanner_scan_menu">Nach RileyLink suchen</string>
<string name="rileylink_scanner_ble_not_supported">Bluetooth-Low-Energy nicht unterstützt.</string>
<string name="rileylink_scanner_ble_not_enabled">Bluetooth nicht aktiviert.</string>
<string name="location_not_found_title">Standortdienst ist nicht aktiviert</string>
@ -1337,10 +1281,8 @@ Unerwartetes Verhalten.</string>
<!-- RL Status Page -->
<string name="rileylink_settings_tab1">Einstellungen</string>
<string name="rileylink_settings_tab2">Verlauf</string>
<string name="rileylink_settings_tab3">Gerät</string>
<string name="rileylink_status">RileyLink Status</string>
<string name="medtronic_pump_status">Pumpen-Status</string>
<string name="rileylink_settings_title">RileyLink Einstellungen</string>
<string name="title_activity_rileylink_settings">RileyLink Einstellungen</string>
<string name="rileylink_title">RileyLink</string>
<string name="rileylink_configured_address">Konfigurierte Adresse</string>
@ -1405,7 +1347,6 @@ Unerwartetes Verhalten.</string>
<string name="medtronic_pump_status_waking_up">Aufwecken</string>
<string name="medtronic_pump_status_error_comm">Fehler bei der Kommunikation</string>
<string name="medtronic_pump_status_timeout_comm">Zeitüberschreitung bei Kommunikation</string>
<string name="medtronic_pump_status_problem_contacting">Problem beim Kontaktieren der Pumpe</string>
<string name="medtronic_pump_status_pump_unreachable">Pumpe ist nicht erreichbar</string>
<string name="medtronic_pump_status_invalid_config">Ungültige Einstellung</string>
<string name="medtronic_pump_status_active">Aktiv</string>
@ -1423,7 +1364,6 @@ Unerwartetes Verhalten.</string>
<string name="medtronic_cmd_basal_profile_not_set_is_same">Basalprofil, unverändert wird nicht erneut eingestellt.</string>
<string name="medtronic_cmd_desc_get_history">Hole Verlauf - Seite %1$d (%2$d/16)</string>
<string name="medtronic_cmd_desc_get_history_request">Hole Verlauf - Seite %1$d</string>
<string name="medtronic_cmd_desc_get_history_base">Hole Verlauf - Seite %1$d</string>
<string name="medtronic_cmd_desc_get_time">Hole Pumpen-Zeit</string>
<string name="medtronic_cmd_desc_get_settings">Hole Einstellungen</string>
<string name="medtronic_cmd_desc_get_model">Hole Pumpenmodel</string>
@ -1432,13 +1372,36 @@ Unerwartetes Verhalten.</string>
<string name="medtronic_cmd_desc_get_tbr">Hole Temporäre Basalraten</string>
<string name="medtronic_cmd_desc_set_tbr">Setze Temporäre Basalrate</string>
<string name="medtronic_cmd_desc_set_bolus">Setze Bolus</string>
<string name="pump_no_connection_h">Keine Verbindung für %1$d Stunde(n) %2$d Min</string>
<string name="pump_no_connection_d">Keine Verbindung für %1$d Tag(e) und %2$d Stunde(n)</string>
<string name="insulinFromCob"><![CDATA[COB Insulin: <font color=\'%1$s\'>%2$.1fg %3$.2fU</font>]]></string>
<string name="bolusconstraintappliedwarning"><![CDATA[<font color=\'%1$s\'>Bolus-Einschränkung angewendet: %2$.2fU zu %3$.2fU</font>]]></string>
<string name="slowabsorptiondetected"><![CDATA[<font color=\'%1$s\'>!! Langsamer Kohlyenhydrate-Abbau erkannt: %2$d%% der Zeit. Überprüfe deine Berechnung. COB könnte sehr falsch sein !!!!!</font>]]></string>
<string name="slowabsorptiondetected"><![CDATA[<font color=\'%1$s\'>!!!!! Langsamer Kohlenhydrat-Abbau erkannt: %2$d%% der Zeit. Überprüfe Deine Berechnung. COB könnte zu hoch sein und deswegen zu viel Insulin abgegeben werden!!!!!</font>]]></string>
<string name="reservoirvalue">%1$.0f / %2$d IE</string>
<string name="partialboluswizard">Abgabe von [%] des Ergebnisses des Bolusrechners</string>
<string name="deliverpartofboluswizard">Der Bolus-Assistent führt Berechnungen durch, aber nur dieser Teil der berechneten Insulin wird abgegeben. Nützlich mit SMB-Algorithmus.</string>
<string name="loading">Lädt ...</string>
<string name="snooze">Schlummern</string>
<string name="accomplished">Erfüllt: %1$s</string>
<string name="objectives_usage_objective">Lerne, AndroidAPS zu bedienen.</string>
<string name="objectives_usage_gate">Führe verschiedene Aktionen in AndroidAPS aus.</string>
<string name="objectives_useprofileswitch">Setzte das Profil für 10 min. auf 90% (Drücke dazu lange auf den Profilnamen auf der Startseite)</string>
<string name="objectives_usedisconnectpump">Simuliere duschen. Trenne die Pumpe für 1 Std. (Drücke lang auf Open Loop)</string>
<string name="objectives_usereconnectpump">...und verbinde die Pumpe auf dem selben Weg wieder.</string>
<string name="objectives_usetemptarget">Erstelle ein benutzerdefiniertes temporäres Ziel mit 10 min. Dauer (Drücke lange auf Deinen aktuellen Zielwert)</string>
<string name="objectives_useactions">Aktiviere das Plugin Aktionen im Konfigurations-Generator, zeige es an und rufe es vom Startbildschirm aus auf.</string>
<string name="objectives_useloop">Zeige den Inhalt des Loop-Plugins ein.</string>
<string name="objectives_usescale">Nutze die Skalierfunktion. Drücke dazu lange auf das Diagramm.</string>
<string name="objectives_button_enter">Eingabe</string>
<string name="enter_code_obtained_from_developers_to_bypass_the_rest_of_objectives">Gib den Code ein, den Du von den Entwicklern erhalten hast, um die restlichen Objectives zu überspringen.</string>
<string name="codeaccepted">Code akzeptiert</string>
<string name="codeinvalid">Code ungültig</string>
<string name="objectives_exam_objective">Belege Dein Wissen</string>
<string name="objectives_exam_gate">Beantworte die Fragen richtig.</string>
<string name="answerdisabledto">Beantwortung deaktiviert bis: %1$s</string>
<string name="wronganswer">Falsche Antwort!</string>
<string name="unfinshed_button">Nächte unbeantwortete</string>
<string name="close">Schließen</string>
<string name="requestcode">Erfrage Code:: %1$s</string>
<string name="objectives_hint">(kreuze alle richtigen Antworten an)</string>
<plurals name="objective_days">
<item quantity="one">%1$d Tag</item>
<item quantity="other">%1$d Tage</item>

View file

@ -18,6 +18,7 @@
<string name="danar_bt_name_title">DanaR συσκευή Bluetooth</string>
<string name="ns_sync_use_absolute_title">Χρησιμοποιείτε πάντα απόλυτες τιμές βασικού</string>
<string name="alert_dialog_storage_permission_text">Παρακαλώ κάντε επανεκίνηση στο τηλέφώνο ή restart στο AndroidAPS από τις Ρυθμίσεις Συστήματος, \nαλλιώς το AndroidAPS δεν θα έχει καταγραφή (επαληθεύστε ότι οι αλγόριθμοι δουλεύουν σωστά)!</string>
<string name="alert_dialog_permission_battery_optimization_failed">Αυτή η συσκευή δεν φαίνεται να υποστηρίζει τη λίστα κατάτμησης βελτιστοποίησης μπαταρίας - ενδέχεται να αντιμετωπίσετε προβλήματα απόδοσης.</string>
<string name="description_actions">Ορισμένα πλήκτρα για γρήγορη πρόσβαση σε κοινά χαρακτηριστικά</string>
<string name="description_careportal">Εισάγετε καταχωρήσεις ημερολογίου.</string>
<string name="description_config_builder">Χρησιμοποιείται για ρύθμιση ενεργών συνδέσεων</string>
@ -33,7 +34,7 @@
<string name="description_smb">Ο πιο πρόσφατος αλγόριθμος για προχωρημένους χρήστες</string>
<string name="description_overview">Εμφανίζει την τρέχουσα κατάσταση του κυκλώματός σας και τα πλήκτρα για τις πιο κοινές ενέργειες</string>
<string name="description_persistent_notification">Εμφανίζει μία τρέχουσα ειδοποίηση με σύντομη επισκόπηση του τι κάνει το κύκλωμα τώρα</string>
<string name="description_profile_local">Ορίστε ένα προφίλ το οποίο είναι διαθέσιμο εκτός σύνδεσης.</string>
<string name="description_profile_local">Ορίστε ένα προφίλ που είναι διαθέσιμο εκτός σύνδεσης.</string>
<string name="description_profile_nightscout">Παρέχει το προφίλ που έχετε ορίσει στο Nightscout</string>
<string name="description_profile_simple">Ορίστε ένα προφίλ με μόνο μία χρονική περίοδο.</string>
<string name="description_pump_combo">Η ολοκλήρωση της αντλίας, για τις αντλίες Accu-Check Combo, απαιτεί να έχετε εγκαταστήσει ruffy</string>
@ -41,15 +42,12 @@
<string name="description_pump_dana_r_korean">Ολοκλήρωση αντλίας για τις εγχώριες αντλίες Dana Diabecare R</string>
<string name="description_pump_dana_r_v2">Ολοκλήρωση αντλίας για τις αντλίες Dana Diabecare R με αναβαθμισμένο λογισμικό</string>
<string name="description_pump_dana_rs">Ολοκλήρωση αντλίας για τις αντλίες Dana Diabecare RS</string>
<string name="description_pump_insight">Η ολοκλήρωση της αντλίας, για τις αντλίες Accu-Check Insight, απαιτεί να έχετε εγκαταστήσει το SightRemote</string>
<string name="description_pump_mdi">Ολοκλήρωση αντλίας για ανθρώπους που κάνουν εντατικοποιημένο σχήμα ενέσεων για την θεραπεία τους</string>
<string name="description_pump_virtual">Ολοκλήρωση αντλίας για αντλίες που δεν έχουν κανέναν οδηγό ακόμα (Ανοιχτό Κύκλωμα)</string>
<string name="description_sensitivity_aaps">Η ευαισθησία υπολογίζεται με τον ίδιο τρόπο όπως το Oref0, αλλά μπορείτε να καθορίσετε το χρονικό διάστημα στο παρελθόν. Η ελάχιστη απορρόφηση υδατανθράκων υπολογίζεται από την μέγιστη απορρόφηση υδατανθράκων από τις επιλογές.</string>
<string name="description_sensitivity_oref0">Η ευαισθησία υπολογίζεται από 24h δεδομένα στο παρελθόν και οι υδατάνθρακες (αν δεν έχουν απορροφηθεί) κόβονται μετά από χρονικό διάστημα που καθορίζεται στις επιλογές.</string>
<string name="description_sensitivity_oref1">Η ευαισθησία υπολογίζεται από 8h δεδομένα στο παρελθόν και οι υδατάνθρακες (αν δεν έχουν απορροφηθεί) κόβονται μετά από χρονικό διάστημα που καθορίζεται στις επιλογές. Η προσθήκη υπολογίζει ακόμα το UAM.</string>
<string name="description_sensitivity_weighted_average">Η ευαισθησία υπολογίζεται ως ο σταθμισμένος μέσος όρος των αποκλίσεων. Νεότερες αποκλίσεις έχουν μεγαλύτερο βάρος. Η ελάχιστη απορρόφηση υδατανθράκων υπολογίζεται από τον χρόνο της μέγιστης απορρόφησης υδατανθράκων από τις επιλογές. Αυτός ο αλγόριθμος είναι ο πιο γρήγορος για να ακολουθεί τις αλλαγές της ευαισθησίας.</string>
<string name="description_source_dexcom_g5">Λάβετε τις τιμές BG από την εφαρμογή του Dexcom G5.</string>
<string name="description_source_dexcom_g6">Λάβετε τις τιμές BG από την εφαρμογή του Dexcom G6.</string>
<string name="description_source_eversense">Λάβετε τις τιμές BG από την εφαρμογή του Eversense.</string>
<string name="description_source_glimp">Λάβετε τις τιμές BG από το Glimp.</string>
<string name="description_source_mm640g">Λάβετε τις τιμές BG από το 600SeriesAndroidUploader.</string>
@ -73,7 +71,6 @@
<string name="treatments_carbs_label_string">Υδατάνθρακες:</string>
<string name="treatments_iob_label_string">IOB:</string>
<string name="sms_iob">IOB:</string>
<string name="treatments_activity_string">Δραστηριότητα:</string>
<string name="treatments_iobtotal_label_string">Συνολική IOB:</string>
<string name="treatments_iobactivitytotal_label_string">Συνολική δραστηριότητα IOB:</string>
<string name="tempbasals_realduration_label_string">Διάρκεια:</string>
@ -146,7 +143,6 @@
<string name="openapsma_lastenact_label">Τελευταία εφαρμογή</string>
<string name="ok">ΟΚ</string>
<string name="cancel">Ακύρωση</string>
<string name="close">Κλείσιμο</string>
<string name="noapsselected">ΔΕΝ ΕΠΙΛΕΧΘΗΚΕ APS Ή ΒΡΕΘΗΚΕ ΑΠΟΤΕΛΕΣΜΑ</string>
<string name="safety">Ασφάλεια</string>
<string name="openapsma_disabled">Προσθήκη απενεργοποιημένη</string>
@ -323,19 +319,19 @@
<string name="overview_bolusprogress_goingtodeliver">Προς έγχυση %1$.2fU</string>
<string name="objectives_0_objective">Δημιουργία παρακολούθησης και ανάλυση βασικού ρυθμού και αναλογιών</string>
<string name="objectives_0_gate">Επιβεβαιώστε ότι η BG φαίνεται στο Nightscout και τα δεδομένα της αντλίας φορτώθηκαν</string>
<string name="objectives_1_objective">Ξεκινήστε σε ανοιχτό κύκλωμα</string>
<string name="objectives_1_gate">Εκτελέστε σε ανοιχτό κύκλωμα για μερικές ημέρες και χειροκίνητα κάντε πολλές παρεμβάσεις με προσωρινό ρυθμό. Ρυθμίστε και χρησιμοποιήστε προσωρινούς στόχους (π.χ. για αθλήματα ή υπογλυκαιμία)</string>
<string name="objectives_2_objective">Κατανοήστε το ανοιχτό κύκλωμα, περιλαμβάνοντας τις προτάσεις για Προσωρινό ρυθμό</string>
<string name="objectives_2_gate">Βάση της εμπειρίας σας, αποφασίστε ποιο είναι το μέγιστο βασικής δόσης και αποθηκεύστε το στην αντλία και στις Επιλογές</string>
<string name="objectives_3_objective">Ξεκινήστε να κλείσετε το κύκλωμα με Σταμάτημα Χαμηλής Γλυκόζης (Low Glucose Suspend) </string>
<string name="objectives_3_gate">Εκτελέστε σε κλειστό κύκλωμα με μέγιστο IOB = 0 για μερικές ημέρες χωρίς πολλά LGS - υπογλυκαιμίες</string>
<string name="objectives_4_objective">Ρυθμίζοντας το κλειστό κύκλωμα, αυξήστε το μέγιστο IOB πάνω από 0 και σταδιακά μειώστε τους στόχους BG</string>
<string name="objectives_4_gate">Τρέξτε το για λίγες ημέρες, και τουλάχιστον μία νύχτα χωρίς χαμηλό συναγερμό BG, πριν χαμηλώσετε τα όρια</string>
<string name="objectives_5_objective">Ρυθμίστε τον βασικό ρυθμό και τις αναλογίες αν χρειάζεται, και μετά ενεργοποιήστε το auto-sens</string>
<string name="objectives_5_gate">1 επιτυχής εβδομάδα ημερήσιου κυκλώματος με κανονική εισαγωγή υδατανθράκων</string>
<string name="objectives_6_objective">Ενεργοποιώντας επιπρόσθετα χαρακτηριστικά για χρήση κατά την ημέρα, όπως τον Προχωρημένο Βοηθό Γεύματος</string>
<string name="objectives_7_objective">Ενεργοποιήστε άλλες λειτουργίες για χρήση κατά την ημέρα, όπως SMB</string>
<string name="objectives_7_gate">Πρέπει να διαβάσετε τον οδηγό wiki και να αυξήσετε το ανώτατο όριο του IOB για να μπορέσει να λειτουργήσει σωστά η SMB! Μια καλή αρχή είναι μέγιστο IOB= μέσο bolus γεύματος + 3 x το μέγιστο ημερήσιο βασικού ρυθμού</string>
<string name="objectives_openloop_objective">Ξεκινώντας ανοιχτό κύκλωμα</string>
<string name="objectives_openloop_gate">Τρέξτε σε ανοιχτό κύκλωμα μερικές ημέρες και χειροκίνητα κάντε πολλούς προσωρινούς ρυθμούς. Φτιάξτε και χρησιμοποιήστε προσωρινούς και στανταρντ προσωρινούς στόχους (π.χ. για άσκηση ή θεραπεία υπογλυκαιμίας)</string>
<string name="objectives_maxbasal_objective">Κατανοήστε το ανοιχτό κύκλωμα, περιλαμβάνοντας τις προτάσεις για Προσωρινό ρυθμό</string>
<string name="objectives_maxbasal_gate">Βάση της εμπειρίας σας, αποφασίστε ποιο είναι το μέγιστο βασικής δόσης και αποθηκεύστε το στην αντλία και στις Επιλογές</string>
<string name="objectives_maxiobzero_objective">Ξεκινήστε να κλείσετε το κύκλωμα με Σταμάτημα Χαμηλής Γλυκόζης (Low Glucose Suspend)</string>
<string name="objectives_maxiobzero_gate">Εκτελέστε σε κλειστό κύκλωμα με μέγιστο IOB = 0 για μερικές ημέρες χωρίς πολλά LGS - υπογλυκαιμίες</string>
<string name="objectives_maxiob_objective">Ρυθμίζοντας το κλειστό κύκλωμα, αυξήστε το μέγιστο IOB πάνω από 0 και σταδιακά μειώστε τους στόχους BG</string>
<string name="objectives_maxiob_gate">Τρέξτε το για λίγες ημέρες, και τουλάχιστον μία νύχτα χωρίς χαμηλό συναγερμό BG, πριν χαμηλώσετε τα όρια</string>
<string name="objectives_autosens_objective">Ρυθμίστε τον βασικό ρυθμό και τις αναλογίες αν χρειάζεται, και μετά ενεργοποιήστε το auto-sens</string>
<string name="objectives_autosens_gate">1 επιτυχής εβδομάδα ημερήσιου κυκλώματος με κανονική εισαγωγή υδατανθράκων</string>
<string name="objectives_ama_objective">Ενεργοποιώντας επιπρόσθετα χαρακτηριστικά για χρήση κατά την ημέρα, όπως τον Προχωρημένο Βοηθό Γεύματος</string>
<string name="objectives_smb_objective">Ενεργοποιήστε άλλες λειτουργίες για χρήση κατά την ημέρα, όπως SMB</string>
<string name="objectives_smb_gate">Πρέπει να διαβάσετε τον οδηγό wiki και να αυξήσετε το ανώτατο όριο του IOB για να μπορέσει να λειτουργήσει σωστά η SMB! Μια καλή αρχή είναι μέγιστο IOB= μέσο bolus γεύματος + 3 x το μέγιστο ημερήσιο βασικού ρυθμού</string>
<string name="youareonallowedlimit">Φτάσατε το επιτρεπτό όριο</string>
<string name="noprofileselected">Δεν επηλέχθηκε προφίλ</string>
<string name="smscommunicator_loophasbeendisabled">Το κύκλωμα απενεργοποιήθηκε</string>
@ -569,7 +565,10 @@
<string name="enablesuperbolus">Ενεργοποίηση superbolus στον σύντομο οδηγό</string>
<string name="enablesuperbolus_summary">Ενεργοποιήστε την λειτουργία superbolus στον σύντομο οδηγό. Μην το κάνετε μέχρι να μάθετε τι ακριβώς κάνει. ΜΠΟΡΕΙ ΝΑ ΕΓΧΥΣΕΙ ΠΑΡΑΠΑΝΩ ΔΟΣΕΙΣ ΙΝΣΟΥΛΙΝΗΣ ΑΝ ΧΡΗΣΙΜΟΠΟΙΗΘΕΙ ΛΑΝΘΑΣΜΕΝΑ!</string>
<string name="show_statuslights">Εμφάνιση του φωτισμού κατάστασης στην αρχική οθόνη</string>
<string name="show_statuslights_summary">Ενεργοποίηση του φωτισμού κατάστασης για cage, iage, sage, reservoir και επίπεδο μπεταρίας στην αρχική οθόνη.</string>
<string name="show_statuslights_easy">Εμφάνιση του φωτισμού κατάστασης στην αρχική οθόνη</string>
<string name="show_statuslights_easy_summary">Ενεργοποίηση του φωτισμού κατάστασης για cage, iage, sage, reservoir και επίπεδο μπαταρίας στην αρχική οθόνη.</string>
<string name="show_statuslights_extended">Εμφάνιση του φωτισμού κατάστασης στην αρχική οθόνη</string>
<string name="show_statuslights_extended_summary">Ενεργοποίηση του φωτισμού κατάστασης για cage, iage, sage, reservoir και επίπεδο μπαταρίας στην αρχική οθόνη.</string>
<string name="statuslights_res_warning">Όριο προειδοποίησης χαμηλής αμπούλας [U]</string>
<string name="statuslights_res_critical">Όριο προειδοποίησης πολύ χαμηλής αμπούλας [U]</string>
<string name="statuslights_bat_warning">Όριο προειδοποίησης χαμηλής μπαταρίας [%%]</string>
@ -727,8 +726,6 @@
<string name="bluetooth">Bluetooth</string>
<string name="btwatchdog_title">BT Watchdog</string>
<string name="btwatchdog_summary">Απενεργοποιεί το bluetooth του τηλεφώνου για ένα δευτερόλεπτο αν δεν είναι δυνατή η σύνδεση με την αντλία. Αυτό μπορεί να βοηθήσει σε ορισμένα τηλέφωνα όπου το bluetooth παγώνει.</string>
<string name="DexcomG5">Εφαρμογή DexcomG5 (τροποποιημένη)</string>
<string name="DexcomG6">DexcomG6 App (τροποποιημένη)</string>
<string name="eversense">Eversense App (τροποποιημένη)</string>
<string name="dexcomg5_nsupload_title">Ανέβασμα δεδομένων BG στο NS</string>
<string name="bgsource_upload">Ανέβασμα ρυθμίσεων BG</string>
@ -798,50 +795,8 @@
<string name="combo_reservoir_level_insufficient_for_bolus">Δεν υπάρχει αρκετή ινσουλίνη στην αμπούλα για το bolus</string>
<string name="extendedbolusdeliveryerror">Σφάλμα έγχυσης εκτεταμένου bolus</string>
<string name="insightpump_shortname">Sight</string>
<string name="insightpump">Αντλία Insight</string>
<string name="status_no_colon">Κατάσταση</string>
<string name="changed">Τροποποίηση</string>
<string name="pump_stopped_uppercase">Η ΑΝΤΛΙΑ ΣΤΑΜΑΤΗΣΕ</string>
<string name="status_updated">Ενημέρωση Κατάστασης</string>
<string name="ago">πριν</string>
<string name="with">με</string>
<string name="insight_active_tbr">Ενεργό TBR</string>
<string name="insight_min_left">λεπτά απομένουν</string>
<string name="log_book">Βιβλίο καταγραφής</string>
<string name="insight_last_completed_action">Η τελευταία εντολή που εκτελέστηκε</string>
<string name="insight_min">min</string>
<string name="insight_remaining_over">παραμένει πάνω</string>
<string name="insight_total_with">συνολικά με</string>
<string name="insight_upfront_with">εκ των προτέρων με</string>
<string name="insight_stay_always_connected">Μείνετε συνδεδεμένοι</string>
<string name="insight_history_idle">IDLE</string>
<string name="insight_history_syncing">ΣΥΓΧΡΟΝΙΣΜΟΣ</string>
<string name="insight_history_busy">ΑPASXOLHMENH</string>
<string name="insight_history_synced">ΣΥΓΧΡΟΝΙΣΜΕΝΟ</string>
<string name="insight_startup_uppercase">ΕΚΚΊΝΗΣΗ</string>
<string name="insight_needs">ανάγκες</string>
<string name="insight_not_connected_to_companion_app">Δεν έχει συνδεθεί στην εφαρμογή υποστήριξης!</string>
<string name="insight_companion_app_not_installed">Η εφαρμογή υποστήριξης δεν φαίνεται να είναι εγκατεστημένη!</string>
<string name="insight_incompatible_compantion_app_we_need_version">Μη συμβατή εφαρμογή υποστήριξης, απαιτείται η έκδοση</string>
<string name="insight_unknown">Άγνωστο</string>
<string name="insight_waiting_for_code">Αναμονή για επιβεβαίωση κωδικού</string>
<string name="insight_code_rejected">Κωδικός απορρίφθηκε</string>
<string name="insight_app_binding">Σύνδεση εφαρμογής</string>
<string name="insight_not_authorized">Μη εξουσιοδοτημένο</string>
<string name="insight_incompatible">Μη συμβατό</string>
<string name="second">δευτερόλεπτο</string>
<string name="minute">λεπτό</string>
<string name="format_hours">%1$.2f h</string>
<string name="hour">ώρα</string>
<string name="day">ημέρα</string>
<string name="week">εβδομάδα</string>
<string name="time_plural">δευτ</string>
<string name="insight_keepalive_format_string">%1$ds λήγει σε %2$s</string>
<string name="insight_keep_alive_status">Διατηρήστε την κατάσταση ενεργή</string>
<string name="statistics">Στατιστικά</string>
<string name="connect_preemptively">Συνδέστε προληπτικά</string>
<string name="automatically_connect_when">Συνδεθείτε αυτόματα όταν ανοίγουν οι οθόνες AndroidAPS, πριν ζητηθεί η οποιαδήποτε εντολή αντλίας, για να μειωθεί η καθυστέρηση σύνδεσης</string>
<string name="not_recommended_due_to_battery_drain">Δεν συνιστάται λόγω εξάντλησης μπαταρίας</string>
<string name="enablesmbalways">Πάντα ενεργό SMB</string>
<string name="enablesmbalways_summary">Ενεργοποιήστε τις ΜΜΕ ανεξάρτητα από τα bolus. Πιθανόν μόνο με πηγές BG με καλό φιλτράρισμα δεδομένων, όπως το G5</string>
<string name="enablesmbaftercarbs">Ενεργοποίηση SMB μετά από υδατάνθρακες</string>
@ -945,8 +900,6 @@
<string name="reset">επαναφορά</string>
<string name="waitingfortimesynchronization">Αναμονή για συγχρονισμό ώρας (%1$d δευτ)</string>
<string name="loopdisconnectedfor">Αποσυνδέθηκε (%1$d m)</string>
<string name="automatic_careportal_events">Αυτόματα συμβάντα careportal</string>
<string name="automatically_upload_insulin_cannula_and_battery_changes_to_nightscout">Αυτόματο ανέβασμα ινσουλίνης, κάνουλας και αλλαγή μπαταρίας και συναγερμούς αντλίας στο Nightscout</string>
<string name="openapssmb_maxiob_title">Μέγιστη συνολική IOB το OpenAPS δεν μπορεί να πάει πάνω από [U]</string>
<string name="openapssmb_maxiob_summary">Αυτή η τιμή ονομάζεται μέγιστη IOB στο OpenAPS\nTο OpenAPS δεν θα προσθέσει περισσότερη ινσουλίνη αν η τρέχουσα IOB είναι μεγαλύτερη από αυτή την τιμή</string>
<string name="pump_stopped">Η αντλία σταμάτησε</string>
@ -997,7 +950,6 @@
<string name="adjustprofileinns">Αλλαγές πρέπει να γίνουν στο NS</string>
<string name="exitwizard">Παράλειψη του \"Οδηγού εγκατάστασης\"</string>
<string name="setupwizard_loop_description">Πατήστε το παρακάτω πλήκτρο για να ενεργοποιήσετε το AndroidAPS για να προτείνει/κάνει αλλαγές στον βασικό ρυθμό</string>
<string name="enableobjectives">Ενεργοποιήσετε τους Στόχους</string>
<string name="apssetup">Ρυθμίστε την προσθήκη APS</string>
<string name="sensitivitysetup">Ρυθμίσετε την προσθήκη Ευαισθησία</string>
<string name="setupwizard_sensitivity_description">Η προσθήκη Ευαισθησία χρησιμοποιείται για την ανίχνευση αλλαγών στην ευαισθησία και τον υπολογισμό του COB. Για περισσότερες πληροφορίες εδώ:</string>
@ -1055,7 +1007,6 @@
<string name="error_adding_treatment_title">Ελλιπή δεδομένα θεραπείας</string>
<string name="maintenance_settings">Ρυθμίσεις συντήρησης</string>
<string name="maintenance_email">E-mail</string>
<string name="invalid_email_message">Μη έγκυρο Email</string>
<string name="maintenance_amount">Αριθμός αρχείων καταγραφής για αποστολή</string>
<string name="maintenance">Συντήρηση</string>
<string name="maintenance_shortname">ΣΥΝΤΗΡ</string>
@ -1117,7 +1068,6 @@
<string name="manufacturing_date">Ημερομηνία κατασκευής</string>
<string name="delete_pairing">Διαγραφή σύζευξης</string>
<string name="pairing_information">Πληροφορίεςσύζευξης</string>
<string name="refreh_status">Ανανέωση κατάστασης</string>
<string name="start_pump">Έναρξη αντλίας</string>
<string name="stop_pump">Διακοπή αντλίας</string>
<string name="operating_mode">Κατάσταση λειτουργίας</string>
@ -1269,6 +1219,7 @@
<string name="autosenslabel">Autosens %</string>
<string name="deltacompared">%3$s %1$s %2$s</string>
<string name="deltalabel">Διαφορά BG</string>
<string name="deltalabel_u">Διαφορά BG [%1$s]</string>
<string name="currentlocation">Τρέχουσα θέση</string>
<string name="location">Τοποθεσία</string>
<string name="latitude_short">Lat:</string>
@ -1281,12 +1232,9 @@
<string name="triggercoblabel">COB</string>
<string name="cobcompared">COB %1$s %2$.0f</string>
<string name="taskname">Όνομα εργασίας</string>
<string name="eventname">Όνομα συμβάντος</string>
<string name="edit_short">Επεξεργασία</string>
<string name="please_choose_an_action_type">Επιλέξτε έναν τύπο δράσης:</string>
<string name="please_choose_a_trigger_type">Επιλέξτε έναν τύπο ενεργοποίησης:</string>
<string name="if_label">Αν:</string>
<string name="then_label">Έπειτα:</string>
<string name="triggers">Ενεργοποιήσεις:</string>
<string name="remove_label">ΜΕΤΑΚΙΝΗΣΗ</string>
<string name="preconditions">Προϋποθέσεις:</string>
@ -1307,7 +1255,6 @@
<string name="medtronic_pump_frequency_worldwide">Παγκοσμίως (868 Mhz)</string>
<string name="medtronic_pump_encoding_4b6b_local">Κωδικοποίηση λογισμικού 4b6b</string>
<string name="medtronic_pump_encoding_4b6b_rileylink">Κωδικοποίηση hardware 4b6b</string>
<string name="rileylink_mac_address">Διεύθυνση RileyLink MAC</string>
<string name="medtronic_custom_action_wake_and_tune">Wake and Tune Up</string>
<string name="medtronic_custom_action_clear_bolus_block">Καθαρισμός Bolus Block</string>
<string name="medtronic_custom_action_reset_rileylink">Επαναφορά Ρυθμίσεων RileyLink</string>
@ -1319,9 +1266,7 @@
<string name="rileylink_scanner_scan_scan">SCAN</string>
<string name="rileylink_scanner_scan_stop">STOP</string>
<string name="rileylink_scanner_selected_device">Επιλεγμένο</string>
<string name="rileylink_scanner_scan">Scan</string>
<string name="rileylink_scanner_title">RileyLink Scan</string>
<string name="rileylink_scanner_scan_menu">Scan για RileyLink</string>
<string name="rileylink_scanner_ble_not_supported">Χαμηλή ενέργεια Bluetooth δεν υποστηρίζεται.</string>
<string name="rileylink_scanner_ble_not_enabled">Bluetooth μη ενεργοποιημένο.</string>
<string name="location_not_found_title">Τοποθεσία μη ενεργοποιημένη</string>
@ -1334,10 +1279,8 @@
<!-- RL Status Page -->
<string name="rileylink_settings_tab1">Ρυθμίσεις</string>
<string name="rileylink_settings_tab2">Ιστορικό</string>
<string name="rileylink_settings_tab3">Συσκευή</string>
<string name="rileylink_status">Κατάσταση RileyLink</string>
<string name="medtronic_pump_status">Κατάσταση Αντλίας</string>
<string name="rileylink_settings_title">Ρυθμίσεις RileyLink</string>
<string name="title_activity_rileylink_settings">Ρυθμίσεις RileyLink</string>
<string name="rileylink_title">RileyLink</string>
<string name="rileylink_configured_address">Διαμορφωμένη Διεύθυνση</string>
@ -1402,7 +1345,6 @@
<string name="medtronic_pump_status_waking_up">Ξύπνημα</string>
<string name="medtronic_pump_status_error_comm">Σφάλμα με επικοινωνία</string>
<string name="medtronic_pump_status_timeout_comm">Λήξη χρόνου επικοινωνίας</string>
<string name="medtronic_pump_status_problem_contacting">Πρόβλημα επικοινωνίας με Αντλία</string>
<string name="medtronic_pump_status_pump_unreachable">Η αντλία δεν είναι διαθέσιμη</string>
<string name="medtronic_pump_status_invalid_config">Μη έγκυρη παραμετροποίηση</string>
<string name="medtronic_pump_status_active">Ενεργή</string>
@ -1420,7 +1362,6 @@
<string name="medtronic_cmd_basal_profile_not_set_is_same">Το Βασικό Προφίλ είναι ίδιο, οπότε δεν θα μπει ξανά.</string>
<string name="medtronic_cmd_desc_get_history">Βλέπε Ιστορικό - Σελίδα %1$d (%2$d/16)</string>
<string name="medtronic_cmd_desc_get_history_request">Βλέπε Ιστορικό - Σελίδα %1$d</string>
<string name="medtronic_cmd_desc_get_history_base">Βλέπε Ιστορικό - Σελίδα %1$d</string>
<string name="medtronic_cmd_desc_get_time">Πάρτε Ώρα Αντλίας</string>
<string name="medtronic_cmd_desc_get_settings">Λάβετε ρυθμίσεις</string>
<string name="medtronic_cmd_desc_get_model">Λάβετε Μοντέλο Αντλίας</string>
@ -1429,12 +1370,36 @@
<string name="medtronic_cmd_desc_get_tbr">Λάβετε Προσωρινό Ρυθμό</string>
<string name="medtronic_cmd_desc_set_tbr">Βάλτε Προσωρινό Ρυθμό</string>
<string name="medtronic_cmd_desc_set_bolus">Βάλτε Bolus</string>
<string name="pump_no_connection_h">Αποσυνδεδεμένο για %1$d ώρες %2$d λεπτά</string>
<string name="pump_no_connection_d">Αποσυνδεδεμένο για %1$d μέρες %2$d ώρες</string>
<string name="insulinFromCob"><![CDATA[Ινσουλίνη COB: <font color=\'%1$s\'>%2$.1fg %3$.2f</font>]]></string>
<string name="bolusconstraintappliedwarning"><![CDATA[<font color=\'%1$s\'>Bolus constraint applied: %2$.2fU to %3$.2fU</font>]]></string>
<string name="slowabsorptiondetected"><![CDATA[<font color=\'%1$s\'>!!!!! Μικρή απορρόφηση υδατανθράκων ανιχνεύτηκε: %2$d%% της ώρας. Τσεκάρετε τους υπολογισμούς σας. COB μπορεί να είναι κλειστό</font>]]></string>
<string name="slowabsorptiondetected"><![CDATA[<font color=\'%1$s\'>!!!!! Μικρή απορρόφηση υδατανθράκων ανιχνεύτηκε: %2$d%% της ώρας. Τσεκάρετε τους υπολογισμούς σας. COB μπορεί να υπερεκτιμήθηκε και να δόθηκε περισσότερη ινσουλίνη!!!!!</font>]]></string>
<string name="reservoirvalue">%1$.0f / %2$d U</string>
<string name="partialboluswizard">Χορήγηση του αποτελέσματος αυτού του μέρους του υπολογισμού bolus [%]</string>
<string name="deliverpartofboluswizard">Ο Υπολογισμός Bolus κάνει υπολογισμούς αλλά μόνο αυτό το μέρος της υπολογίσημης ινσουλίνης χορηγείται. Χρήσιμο με τον αλγόριθμο SMB.</string>
<string name="loading">Φόρτωση ...</string>
<string name="snooze">Αναβολή</string>
<string name="accomplished">Επιτεύχθηκε: %1$s</string>
<string name="objectives_usage_objective">Μάθε πως να ελέγχεις το AndroidAPS</string>
<string name="objectives_usage_gate">Κάντε διαφορετικές ενέργειες στο AndroidAPS</string>
<string name="objectives_useprofileswitch">Θέστε το προφίλ στο 90% για 10 λεπτά (Παρατεταμένο πάτημα του προφίλ στην Επισκόπηση)</string>
<string name="objectives_usedisconnectpump">Προσομοίωση ένδειξης. Αποσυνδέστε την αντλία για 1 ώρα (Παρατεταμένο στο Ανοιχτό Κύκλωμα)</string>
<string name="objectives_usereconnectpump">... και επανασυνδέστε με τον ίδιο τρόπο</string>
<string name="objectives_usetemptarget">Φτιάξτε προσωρινούς στόχους με διάρκεια 10 λεπτά (Παρατεταμένο πάτημα στον στόχο σας)</string>
<string name="objectives_useactions">Στην Διαμόρφωση ενεργοποιήστε την προσθήκη Ενέργειες, κάντε την ορατή ώστε να την βλέπετε από το δικό της tab</string>
<string name="objectives_useloop">Εμφάνιση περιεχομένου της προσθήκης Κύκλωμα</string>
<string name="objectives_usescale">Χρησιμοποιήστε τη λειτουργία κλίμακας πατώντας παρατεταμένα το διάγραμμα BG</string>
<string name="objectives_button_enter">Εισαγωγή</string>
<string name="enter_code_obtained_from_developers_to_bypass_the_rest_of_objectives">Εισαγάγετε τον κωδικό που λαμβάνετε από τους προγραμματιστές για να παρακάμψετε τους υπόλοιπους στόχους</string>
<string name="codeaccepted">Κωδικός αποδεκτός</string>
<string name="codeinvalid">Μη έγκυρος κωδικός</string>
<string name="objectives_exam_objective">Αποδείξτε τις γνώσεις σας</string>
<string name="objectives_exam_gate">Διαβάστε και απαντήστε τις ερωτήσεις σωστά</string>
<string name="answerdisabledto">Οι απαντήσεις εμφανίζονται στο: %1$s</string>
<string name="wronganswer">Λάθος απάντηση!</string>
<string name="unfinshed_button">Επόμενο ημιτελές</string>
<string name="close">Κλείσιμο</string>
<string name="requestcode">Κωδικός αιτήματος: %1$s</string>
<string name="objectives_hint">(ελέγξτε όλες τις σωστές απαντήσεις)</string>
<plurals name="objective_days">
<item quantity="one">%1$d ημέρα</item>
<item quantity="other">%1$d ημέρες</item>

View file

@ -18,6 +18,7 @@
<string name="danar_bt_name_title">Dispositivo Bluetooth DanaR</string>
<string name="ns_sync_use_absolute_title">Usar siempre valores basales absolutos</string>
<string name="alert_dialog_storage_permission_text">Por favor reinicia el teléfono o AndroidAPS desde ajustes de sistema, sino AndroidAPS no guardará registros (importante para trazar y verificar que el algoritmo funcione correctamente)</string>
<string name="alert_dialog_permission_battery_optimization_failed">Este dispositivo no parece soportar la optimización de la batería por los ajustes - pueden ocurrir problemas de funcionamiento.</string>
<string name="description_actions">Algunos botones para acceder rápidamente a funciones comunes</string>
<string name="description_careportal">Insertar notas de registro avanzadas.</string>
<string name="description_config_builder">Utilizado para configurar complementos activos</string>
@ -33,7 +34,7 @@
<string name="description_smb">Algoritmo más reciente para usuarios avanzados</string>
<string name="description_overview">Muestra el estado actual de tu lazo y los botones para las acciones más usadas</string>
<string name="description_persistent_notification">Muestra una notificación en curso con un breve resumen de lo que está haciendo tu lazo</string>
<string name="description_profile_local">Define un perfil que estará disponible sin conexión.</string>
<string name="description_profile_local">Definir un perfil disponible fuera de linea.</string>
<string name="description_profile_nightscout">Proporciona el perfil definido en Nightscout</string>
<string name="description_profile_simple">Definir un perfil con un solo bloque de tiempo.</string>
<string name="description_pump_combo">Integración de bombas de insulina Accu-Check Combo, necesita tener ruffy instalado</string>
@ -41,15 +42,12 @@
<string name="description_pump_dana_r_korean">Integración de bombas de insulina domésticas de DANA Diabecare R</string>
<string name="description_pump_dana_r_v2">Integración para bombas de insulina DANA Diabecare R con el firmware actualizado</string>
<string name="description_pump_dana_rs">Integración de bombas de insulina de DANA Diabecare RS</string>
<string name="description_pump_insight">Integración de bombas de insulina Accu-Check Insight, necesita tener SightRemote instalado</string>
<string name="description_pump_mdi">Integración de bomba de insulina para personas que usan varias inyecciones diarias para su terapia de diabetes</string>
<string name="description_pump_virtual">Integración para bombas de insulina que aún no tienen ningún controlador/driver (lazo abierto)</string>
<string name="description_sensitivity_aaps">Sensibilidad calculada de la misma manera que Oref0, pero puede especificarse el rango de tiempo. Absorción de carbohidratos mínima se calcula con el máximo tiempo de absorción de carbohidratos en preferencias.</string>
<string name="description_sensitivity_oref0">La sensibilidad se calcula con las últimas 24 h y los carbohidratos (si no son absorbidos) se anulan después del tiempo indicado en preferencias.</string>
<string name="description_sensitivity_oref1">La sensibilidad se calcula con las últimas 8 h y los carbohidratos (si no son absorbidos) se anulan después del tiempo indicado en preferencias. El complemento también calcula UAM.</string>
<string name="description_sensitivity_weighted_average">La sensibilidad se calcula como un promedio ampliado de las desviaciones. Desviaciones más recientes tienen mayor impacto. Absorción de carbohidratos mínima se calcula desde el tiempo de absorción de carbohidratos máximo en preferencias. Este algoritmo es el más rápido siguiendo los cambios de sensibilidad.</string>
<string name="description_source_dexcom_g5">Recibir valores de glucosa de la app parcheada de Dexcom G5.</string>
<string name="description_source_dexcom_g6">Recibir los valores de glucosa de la aplicación Dexcom G6 parcheada.</string>
<string name="description_source_eversense">Recibir los valores de glucosa de la aplicación Eversense parcheada.</string>
<string name="description_source_glimp">Recibir valores de glucosa de Glimp.</string>
<string name="description_source_mm640g">Recibir valores de glucosa del 600SeriesAndroidUploader.</string>
@ -73,7 +71,6 @@
<string name="treatments_carbs_label_string">Carbohidratos:</string>
<string name="treatments_iob_label_string">IOB (Insulina Activa):</string>
<string name="sms_iob">IOB (Insulina Activa):</string>
<string name="treatments_activity_string">Actividad:</string>
<string name="treatments_iobtotal_label_string">IOB total:</string>
<string name="treatments_iobactivitytotal_label_string">Actividad total IOB:</string>
<string name="tempbasals_realduration_label_string">Dur:</string>
@ -322,19 +319,19 @@
<string name="overview_bolusprogress_goingtodeliver">Se van a infundir %1$.2fU</string>
<string name="objectives_0_objective">Configuración de visualización y monitorización, y análisis de basales y ratios</string>
<string name="objectives_0_gate">Comprobar que los datos de BG están disponibles en Nightscout, y que los datos de la bomba de insulina se están subiendo</string>
<string name="objectives_1_objective">Empezar con lazo abierto</string>
<string name="objectives_1_gate">Ejecutar en modo de lazo abierto durante unos días, y aceptar manualmente las basales temporales. Configure y use objetivos temporales y predeterminados (por ejemplo, para actividad o carbohidratos para hipoglucemia)</string>
<string name="objectives_2_objective">Entender el lazo abierto, incluidas las recomendaciones de basales temporales</string>
<string name="objectives_2_gate">Sobre la base de esa experiencia, decidir valores de máximo basal, y ajustar la bomba y preferencias</string>
<string name="objectives_3_objective">Iniciando el lazo cerrado con suspensión con baja glucosa</string>
<string name="objectives_3_gate">Ejecutar en lazo cerrado con max IOB=0 durante unos días sin demasiados valores bajos de glucosa</string>
<string name="objectives_4_objective">Ajuste del lazo cerrado, aumentando máximo IOB por encima de 0 y bajando gradualmente objetivos BG</string>
<string name="objectives_4_gate">Funcionando unos cuantos días, y al menos una noche sin alarmas de glucosa baja, antes de bajar valor de glucosa</string>
<string name="objectives_5_objective">Ajustar los basales y ratios, si es necesario, y luego activar auto-sens</string>
<string name="objectives_5_gate">Una semana con éxito en lazo cerrado durante el día con entrada regular de carbohidratos</string>
<string name="objectives_6_objective">Habilitar funciones adicionales para su uso durante el día, como asistente de comida avanzado</string>
<string name="objectives_7_objective">Habilitar funciones adicionales para uso durante el día como SMB</string>
<string name="objectives_7_gate">¡Debes leer el wiki y subir maxIOB para que SMB funcione bien! Para comenzar un buen valor sería maxIOB = bolo de comida medio + 3 x máximo basal diario</string>
<string name="objectives_openloop_objective">Comenzando en lazo abierto</string>
<string name="objectives_openloop_gate">Ejecutar en modo de lazo abierto durante unos días, y aceptar manualmente las basales temporales. Configure y use objetivos temporales y predeterminados (por ejemplo, para actividad o carbohidratos para hipoglucemia)</string>
<string name="objectives_maxbasal_objective">Entender el lazo abierto, incluidas las recomendaciones de basales temporales</string>
<string name="objectives_maxbasal_gate">Sobre la base de esa experiencia, decidir valores de máximo basal, y ajustar la bomba y preferencias</string>
<string name="objectives_maxiobzero_objective">Iniciando el lazo cerrado con suspensión con baja glucosa</string>
<string name="objectives_maxiobzero_gate">Ejecutar en lazo cerrado con max IOB=0 durante unos días sin demasiados valores bajos de glucosa</string>
<string name="objectives_maxiob_objective">Ajuste del lazo cerrado, aumentando máximo IOB por encima de 0 y bajando gradualmente objetivos BG</string>
<string name="objectives_maxiob_gate">Usar unos cuantos días, y al menos una noche sin alarmas de glucosa baja, antes de bajar valor de glucosa</string>
<string name="objectives_autosens_objective">Ajustar las basales y ratios, si es necesario, y luego activar auto-sens</string>
<string name="objectives_autosens_gate">Una semana con éxito en lazo cerrado durante el día con entrada de carbohidratos</string>
<string name="objectives_ama_objective">Habilitar funciones adicionales para su uso durante el día, como asistente de comida avanzado</string>
<string name="objectives_smb_objective">Habilitar funciones adicionales para uso durante el día como SMB</string>
<string name="objectives_smb_gate">¡Debes leer el wiki y subir maxIOB para que SMB funcione bien! Para comenzar un buen valor sería maxIOB = bolo de comida medio + 3 x máximo basal diario</string>
<string name="youareonallowedlimit">Alcanzado el límite permitido</string>
<string name="noprofileselected">Sin perfil seleccionado</string>
<string name="smscommunicator_loophasbeendisabled">Lazo se ha desactivado</string>
@ -345,6 +342,7 @@
<string name="valueoutofrange">El valor %1$s está fuera de límites</string>
<string name="smscommunicator_remotecommandnotallowed">Comando remoto no permitido</string>
<string name="smscommunicator_remotebolusnotallowed">El bolo remoto no está disponible. Inténtalo de nuevo más tarde.</string>
<string name="smscommunicator_basalreplywithcode">Para iniciar una basal de %1$.2f% durante %2$d min, responder con el código %3$s</string>
<string name="smscommunicator_profilereplywithcode">Para cambiar el perfil a %1$s %2$d%% responder con el código %3$s</string>
<string name="smscommunicator_extendedreplywithcode">Para iniciar un bolo extendido de %1$.2fU durante %2$d minutos, responder con el código %3$s</string>
<string name="smscommunicator_basalpctreplywithcode">Para iniciar una basal de %1$d%% durante %2$d min, responder con el código %3$s</string>
@ -536,10 +534,12 @@
<string name="loopsuspended">Loop desactivado</string>
<string name="loopsuspendedfor">Desactivado (%1$d m)</string>
<string name="loopsuperbolusfor">Superbolo (%1$d m)</string>
<string name="suspendloop">Suspender lazo</string>
<string name="suspendloopfor1h">Desactivar lazo por 1h</string>
<string name="suspendloopfor2h">Desactivar lazo por 2h</string>
<string name="suspendloopfor3h">Desactivar lazo por 3h</string>
<string name="suspendloopfor10h">Desactivar lazo por 10 h</string>
<string name="suspendloopforXmin">Suspender lazo durante %1$d min</string>
<string name="disconnectpumpfor15m">Desconectar bomba por 15 min</string>
<string name="disconnectpumpfor30m">Desconectar bomba por 30 min</string>
<string name="disconnectpumpfor1h">Desconectar bomba por 1 h</string>
@ -565,7 +565,10 @@
<string name="enablesuperbolus">Activar superbolo en asistente</string>
<string name="enablesuperbolus_summary">Activar función superbolo en asistente. No lo actives hasta que hayas aprendido lo que realmente hace. ¡PUEDE CAUSAR SOBREDOSIS DE INSULINA usándolo sin precaución!</string>
<string name="show_statuslights">Mostrar luces de estado en la pantalla de inicio</string>
<string name="show_statuslights_summary">Habilitar las luces de estado para tiempo de la canula, tiempo de la insulina, tiempo del sensor y nivel de bateria en la pantalla de inicio.</string>
<string name="show_statuslights_easy">Mostrar luces de estado originales en la pantalla de inicio</string>
<string name="show_statuslights_easy_summary">Habilitar el estado para tiempo de la cánula, tiempo de la insulina, tiempo del sensor y nivel de batería en la pantalla de inicio.</string>
<string name="show_statuslights_extended">Mostrar luces de estado extendidas en pantalla de inicio</string>
<string name="show_statuslights_extended_summary">Habilita luces de estado extendidas para tiempo de cánula, tiempo de insulina, tiempo del sensor, reservorio y nivel de batería en pantalla de inicio.</string>
<string name="statuslights_res_warning">Umbral de advertencia de nivel de reservorio [U]</string>
<string name="statuslights_res_critical">Umbral crítico de nivel de reservorio [U]</string>
<string name="statuslights_bat_warning">Umbral de advertencia de nivel de batería [%%]</string>
@ -723,8 +726,6 @@
<string name="bluetooth">Bluetooth</string>
<string name="btwatchdog_title">Vigilante de BT</string>
<string name="btwatchdog_summary">Apaga el bluetooth del móvil por un segundo si no hay conexión con la bomba. Esto ayuda con algunos móviles con problemas de establecer conexión bluetooth estable.</string>
<string name="DexcomG5">Aplicación de DexcomG5 (parcheada)</string>
<string name="DexcomG6">DexcomG6 App (parcheada)</string>
<string name="eversense">Eversense App (parcheada)</string>
<string name="dexcomg5_nsupload_title">Subir datos BG a NS</string>
<string name="bgsource_upload">Ajuste de subida de datos de glucosa</string>
@ -794,49 +795,8 @@
<string name="combo_reservoir_level_insufficient_for_bolus">No hay suficiente insulina en el depósito para emitir bolo</string>
<string name="extendedbolusdeliveryerror">Error al emitir bolo extendido</string>
<string name="insightpump_shortname">Sight</string>
<string name="insightpump">Bomba Insight</string>
<string name="status_no_colon">Estado</string>
<string name="changed">Modificado</string>
<string name="pump_stopped_uppercase">BOMBA PARADA</string>
<string name="status_updated">Estado actualizado</string>
<string name="ago">hace</string>
<string name="with">con</string>
<string name="insight_active_tbr">Basal Temporal TBR Activa</string>
<string name="insight_min_left">minutos faltan</string>
<string name="log_book">Libro de registros</string>
<string name="insight_last_completed_action">Última acción completada</string>
<string name="insight_min">min</string>
<string name="insight_remaining_over">restan sobre</string>
<string name="insight_total_with">total con</string>
<string name="insight_upfront_with">por adelantado con</string>
<string name="insight_stay_always_connected">Permanecer siempre conectado</string>
<string name="insight_history_idle">DESOCUPADO</string>
<string name="insight_history_syncing">SINCRONIZANDO</string>
<string name="insight_history_busy">OCUPADO</string>
<string name="insight_history_synced">SINCRONIZADO</string>
<string name="insight_startup_uppercase">PUESTA EN MARCHA</string>
<string name="insight_needs">necesita</string>
<string name="insight_not_connected_to_companion_app">No conectado a la aplicación companion!</string>
<string name="insight_companion_app_not_installed">¡La aplicación Companion no parece estar instalada!</string>
<string name="insight_incompatible_compantion_app_we_need_version">Aplicación Companion incompatible, necesitamos la versión</string>
<string name="insight_unknown">Desconocido</string>
<string name="insight_waiting_for_code">Esperando código de confirmación</string>
<string name="insight_code_rejected">Código rechazado</string>
<string name="insight_app_binding">Vincular con aplicación</string>
<string name="insight_not_authorized">No autorizado</string>
<string name="insight_incompatible">Incompatible</string>
<string name="second">segundo</string>
<string name="minute">minuto</string>
<string name="hour">hora</string>
<string name="day">Día</string>
<string name="week">Semana</string>
<string name="time_plural">s</string>
<string name="insight_keepalive_format_string">%1$ds expira en %2$s</string>
<string name="insight_keep_alive_status">Estado de Mantener-Activo</string>
<string name="statistics">Estadísticas</string>
<string name="connect_preemptively">Conectar de forma preventiva</string>
<string name="automatically_connect_when">Conectar automáticamente cuando se abre AndroidAPS, antes de solicitar ningún comando de bomba, para reducir el retraso de la conexión</string>
<string name="not_recommended_due_to_battery_drain">No recomendado por agotar batería</string>
<string name="format_hours">%1$.2f h</string>
<string name="enablesmbalways">Habilitar SMB siempre</string>
<string name="enablesmbalways_summary">Habilitar SMB siempre de forma independiente a los Bolos. Solo posible con fuente BG con buen filtrado de datos como G5</string>
<string name="enablesmbaftercarbs">Habilitar SMB después de Carbohidratos</string>
@ -879,6 +839,7 @@
<string name="bolusrecordedonly">El Bolo sólo será anotado</string>
<string name="ns_autobackfill_summary">Rellenar BGs perdidos desde NS</string>
<string name="loop_smbsetbypump_label">SMB administrado por bomba</string>
<string name="overview_show_activity">Actividad</string>
<string name="overview_show_sensitivity">Sensibilidad</string>
<string name="overview_show_deviations">Desviaciones</string>
<string name="overview_show_cob">Carbohidratos activos COB</string>
@ -889,6 +850,7 @@
<string name="closed_loop_disabled_on_dev_branch">Ejecutando versión dev. Lazo cerrado no disponible.</string>
<string name="engineering_mode_enabled">Modo de ingeniería activado</string>
<string name="not_eng_mode_or_release">Modo de ingeniería no está activado y no disponible en esta rama</string>
<string name="pump_basebasalrate">%1$.2f U/h</string>
<string name="combo_actvity_reading_basal_profile">Leyendo perfil basal</string>
<string name="combo_bolus_rejected_due_to_pump_history_change">El historial de la bomba ha cambiado después de que se realizó el cálculo del bolo. El bolo no fue entregado. Por favor, vuelva a calcular si aún se necesita un bolo.</string>
<string name="combo_error_updating_treatment_record">El bolo se administró con éxito, pero falló la incorporación de la entrada del tratamiento. Esto puede suceder si se administran dos bolos pequeños del mismo tamaño en los últimos dos minutos. Verifique el historial de la bomba y las entradas de tratamiento y use el portal de tratamientos para agregar entradas faltantes. Asegúrese de no agregar ninguna entrada para el mismo minuto exacto y la misma cantidad.</string>
@ -938,8 +900,6 @@
<string name="reset">reestablecer</string>
<string name="waitingfortimesynchronization">Esperando para sincronización de tiempo (%1$d sec)</string>
<string name="loopdisconnectedfor">Desconectado (%1$d m)</string>
<string name="automatic_careportal_events">Eventos portal tratamientos automáticos</string>
<string name="automatically_upload_insulin_cannula_and_battery_changes_to_nightscout">Subir automáticamente los cambios de insulina, cánula y batería y las alarmas de la bomba a Nightscout</string>
<string name="openapssmb_maxiob_title">Máximo IOB total que OpenAPS no puede superar [U]</string>
<string name="openapssmb_maxiob_summary">Este valor se denomina IOB máx. En el contexto de OpenAPS\nOpenAPS no agregará más insulina si el IOB actual es mayor que este valor</string>
<string name="pump_stopped">Bomba parada</string>
@ -990,12 +950,11 @@
<string name="adjustprofileinns">Cambios deben hacerse en NS</string>
<string name="exitwizard">Saltar asistente de configuración</string>
<string name="setupwizard_loop_description">Presiona el botón de abajo para permitir a AndroidAPS sugerir/hacer cambios en basales</string>
<string name="enableobjectives">Habilitar objetivos</string>
<string name="apssetup">Configurar complemento APS</string>
<string name="sensitivitysetup">Configurar complemento Sensibilidad</string>
<string name="setupwizard_sensitivity_description">El complemento de sensibilidad es usado para detectar la sensibilidad y cálculo de COB. Para más info ver:</string>
<string name="setupwizard_sensitivity_url">https://github.com/MilosKozak/AndroidAPS/wiki/Sensitivity-detection-and-COB</string>
<string name="nsclientinfotext">NSCliente controla la conexión con Nightscout. Puedes saltar esta parte ahora pero no podrás pasar los objetivos hasta que lo configures.</string>
<string name="nsclientinfotext">NSCliente controla la conexión con Nightscout. Puedes saltar este paso ahora pero no podrás completar los objetivos hasta que lo configures.</string>
<string name="diawarning">Por favor, recuerde: nuevos perfiles de insulina requieren DIA de al menos 5h. DIA de 5-6h en nuevos perfiles es lo mismo que DIA de 3h en perfiles antiguos.</string>
<string name="bgsourcesetup">Configurar origen de BG</string>
<string name="setupwizard_profile_description">Selecciona origen de perfil. Si el usuario es un niño debe seleccionar perfil NS. Si no hay nadie siguiendo tu Nightscout probablemente preferirás perfil Local. Recuerde que sólo está seleccionando el origen del perfil. Para usarlo debe activarlo ejecutando \"Cambio Perfil\"</string>
@ -1048,7 +1007,6 @@
<string name="error_adding_treatment_title">Datos de tratamiento incompletos</string>
<string name="maintenance_settings">Ajustes de mantenimiento</string>
<string name="maintenance_email">Email</string>
<string name="invalid_email_message">Email inválido</string>
<string name="maintenance_amount">Ningún registro para enviar</string>
<string name="maintenance">Mantenimiento</string>
<string name="maintenance_shortname">MANT</string>
@ -1074,6 +1032,7 @@
<string name="speederror">Error de velocidad</string>
<string name="insulinlimitviolation">Violación del límite de insulina</string>
<string name="loop_openmode_min_change">Valor mínimo de cambio [%]</string>
<string name="loop_openmode_min_change_summary">El lazo abierto sólo mostrará una demanda de cambio si el cambio es mayor a este valor. El valor predeterminado es el 20 %</string>
<string name="pairfirst">Por favor, empareje su bomba con su teléfono!</string>
<string name="searching_for_devices">Buscando dispositivos…</string>
<string name="please_wait">Por favor, espere…</string>
@ -1109,7 +1068,6 @@
<string name="manufacturing_date">Fecha de fabricación</string>
<string name="delete_pairing">Eliminar emparejamiento</string>
<string name="pairing_information">Información de emparejamiento</string>
<string name="refreh_status">Actualizar estado</string>
<string name="start_pump">Iniciar bomba</string>
<string name="stop_pump">Detener bomba</string>
<string name="operating_mode">Modo de funcionamiento</string>
@ -1142,7 +1100,48 @@
<string name="min_recovery_duration">Min. duración de recuperación [s]</string>
<string name="recovery_duration">Duración de recuperación</string>
<string name="timeout_during_handshake">Tiempo excedido durante el sacudido de mano - reiniciar bluetooth</string>
<string name="weekday_sunday_short">Dom</string>
<string name="weekday_saturday_short">Sáb</string>
<string name="weekday_friday_short">Vie</string>
<string name="weekday_thursday_short">Jue</string>
<string name="weekday_wednesday_short">Mie</string>
<string name="weekday_tuesday_short">Mar</string>
<string name="weekday_monday_short">Lun</string>
<string name="automation_description">Tareas de automatización definidas por el usuario</string>
<string name="automation_missing_task_name">Introduzca un nombre de tarea.</string>
<string name="automation_missing_trigger">Por favor, especifique al menos un iniciador.</string>
<string name="automation_missing_action">Por favor, especifique al menos una acción.</string>
<string name="alreadyenabled">Ya está habilitado</string>
<string name="alreadydisabled">Ya está deshabilitado</string>
<string name="alreadysuspended">Ya está suspendido</string>
<string name="resumeloop">Reactivar el lazo</string>
<string name="notsuspended">No suspendido</string>
<string name="starttemptarget">Iniciar objetivo temporal</string>
<string name="stoptemptarget">Detener objetivo temporal</string>
<string name="islesser">es menor que</string>
<string name="isequalorlesser">es igual o menor que</string>
<string name="isequal">es igual a</string>
<string name="isequalorgreater">es igual o mayor que</string>
<string name="isgreater">es mayor que</string>
<string name="isnotavailable">no está disponible</string>
<string name="unknown">desconocido</string>
<string name="glucoseisnotavailable">El valor de glucosa no está disponible</string>
<string name="glucosecomparedmgdl">Glucosa %1$s %2$.0f %3$s</string>
<string name="glucosecomparedmmol">Glucosa %1$s %2$.1f %3$s</string>
<string name="percentagecompared">Porcentaje de basal en perfil %1$s %2$d</string>
<string name="iobcompared">IOB (Insulina a Bordo) %1$s %2$.1f</string>
<string name="and">Y</string>
<string name="or">O</string>
<string name="xor">Xor (O exclusiva)</string>
<string name="atspecifiedtime">A las %1$s</string>
<string name="use_network_location">Permitir la ubicación de red</string>
<string name="use_gps_location">Añadir ubicación GPS</string>
<string name="use_passive_location">Usar ubicación automática</string>
<string name="locationservice">Servicios de localización</string>
<string name="automation_short">Auto</string>
<string name="automation">Automatización</string>
<string name="profile_total">== ∑%1$s U</string>
<string name="profile_ins_units_per_hour">U/h</string>
<string name="profile_carbs_per_unit">g/U</string>
<string name="profile_per_unit">/U</string>
<string name="dexcom_lognssensorchange_title">Registro de cambio de sensor a NS</string>
@ -1182,7 +1181,21 @@
<string name="sms_wrongcode">Código incorrecto. Comando cancelado.</string>
<string name="notconfigured">Sin configurar</string>
<string name="profileswitchcreated">Cambio de perfil creado</string>
<string name="recurringTime">Hora de Repetición</string>
<string name="every">Cada</string>
<string name="never">Nunca</string>
<string name="mins">%1$dminutos</string>
<string name="condition">Condición:</string>
<string name="action">Acción:</string>
<string name="iob_u">IOB (Insulina a Bordo) [U]:</string>
<string name="glucose_u">Glucosa [%1$s]:</string>
<string name="delete_short">SUPR</string>
<string name="add_short">AÑAD</string>
<string name="copy_short">COPIA</string>
<string name="addnew">Añadir nuevo</string>
<string name="versionChecker">Verificador de versión</string>
<string name="signature_verifier">Verificador de firma</string>
<string name="running_invalid_version">Hemos detectado que está ejecutando una versión no válida. ¡Bucle desactivado!</string>
<string name="old_version">versión antigua</string>
<string name="very_old_version">versión muy antigua</string>
<string name="new_version_warning">Nueva versión desde al menos %1$d dias disponible! Respaldo a LGS después de 60 días, se deshabilitará el lazo después de 90 días</string>
@ -1191,18 +1204,202 @@
<string name="dexcom_app_patched">DexcomG App (parcheada)</string>
<string name="dexcom_short">DXCM</string>
<string name="description_source_dexcom">Recibir valores de glucosa de la app parcheada de Dexcom.</string>
<string name="notification">Notificación</string>
<string name="notification_message">Notificación: %1$s</string>
<string name="message_short">Msj:</string>
<string name="profilepercentage">Porcentaje de perfil</string>
<string name="percent_u">Porcentaje [%]:</string>
<string name="startprofile">Iniciar perfil %1$d%% durante %2$d min</string>
<string name="startprofileforever">Iniciar el perfil %1$d%%</string>
<string name="exists">existe</string>
<string name="notexists">no existe</string>
<string name="temptargetcompared">Objetivo temporal %1$s</string>
<string name="wifissidcompared">SSID WiFi %1$s %2$s</string>
<string name="autosenscompared">Autosens %1$s %2$s %%</string>
<string name="autosenslabel">Autosens %</string>
<string name="deltacompared">%3$s %1$s %2$s</string>
<string name="deltalabel">Diferencia BG</string>
<string name="deltalabel_u">Diferencia de BG %1$s</string>
<string name="currentlocation">Localización actual</string>
<string name="location">Ubicación</string>
<string name="latitude_short">Lat:</string>
<string name="longitude_short">Long:</string>
<string name="distance_short">Dist. [m]:</string>
<string name="name_short">Nombre:</string>
<string name="locationis">La ubicación es %1$s</string>
<string name="lastboluslabel">Último bolo</string>
<string name="lastboluscompared">Hora del último bolo: hace %1$s %2$s min</string>
<string name="triggercoblabel">COB</string>
<string name="cobcompared">COB %1$s %2$.0f</string>
<string name="taskname">Nombre de la tarea</string>
<string name="edit_short">Editar</string>
<string name="please_choose_an_action_type">Por favor, elija el tipo de acción:</string>
<string name="please_choose_a_trigger_type">Por favor, elija un tipo de activación:</string>
<string name="triggers">Activadores:</string>
<string name="remove_label">ELIMINAR</string>
<string name="preconditions">Precondiciones:</string>
<!-- Pump Abstract -->
<string name="pump_operation_not_supported_by_pump_driver">Operación no soportada por bomba y/o controlador.</string>
<string name="pump_operation_not_yet_supported_by_pump">Operación no soportada todavía por la bomba.</string>
<!-- Medtronic (MDT) - Base -->
<string name="description_pump_medtronic">Integración de Bomba para Medtronic, requiere dispositivo RileyLink y modelo específico de Bomba</string>
<!-- MDT Configuration -->
<string name="medtronic_serial_number">Número de serie de la Infusora</string>
<string name="medtronic_pump_type">Tipo de Infusora</string>
<string name="medtronic_pump_frequency">Frecuencia de la Infusora Medtronic</string>
<string name="medtronic_pump_bolus_delay">Retraso antes de que el bolo se inicie (s)</string>
<string name="medtronic_pump_max_bolus">Bolo máximo en infusora (U)</string>
<string name="medtronic_pump_max_basal">Máxima Basal en Infusora (U/h)</string>
<string name="medtronic_pump_encoding">Codificación de Medtronic</string>
<string name="medtronic_pump_frequency_us_ca">US &amp; Canadá (916 MHz)</string>
<string name="medtronic_pump_frequency_worldwide">A nivel mundial (868 Mhz)</string>
<string name="medtronic_pump_encoding_4b6b_local">Codificación de software 4b6b</string>
<string name="medtronic_pump_encoding_4b6b_rileylink">Codificación de hardware 4b6b</string>
<string name="medtronic_custom_action_wake_and_tune">Encender y ajustar</string>
<string name="medtronic_custom_action_clear_bolus_block">Borrar el bloque de bolo</string>
<string name="medtronic_custom_action_reset_rileylink">Restablecer configuración de RileyLink</string>
<string name="medtronic_pump_battery_select">Tipo de batería (Vista de energía)</string>
<string name="medtronic_pump_battery_no">No seleccionado (Vista simple)</string>
<string name="medtronic_pump_battery_alkaline">Alcalina (vista extendida)</string>
<string name="medtronic_pump_battery_lithium">Litio (vista extendida)</string>
<!-- RL BLE Scanning -->
<string name="rileylink_scanner_scan_scan">ESCANEAR</string>
<string name="rileylink_scanner_scan_stop">DETENER</string>
<string name="rileylink_scanner_selected_device">Seleccionado</string>
<string name="rileylink_scanner_title">Escaneo de RileyLink</string>
<string name="rileylink_scanner_ble_not_supported">Bluetooth de baja energía no soportado.</string>
<string name="rileylink_scanner_ble_not_enabled">Bluetooth no activado.</string>
<string name="location_not_found_title">La ubicación no está habilitada</string>
<string name="location_not_found_message">Para activar la visibilidad Bluetooth en nuevos dispositivos, la ubicación debe estar habilitada. AAPS no hace un seguimiento de su ubicación y se puede desactivar después de la realizada la vinculación.</string>
<string name="location_yes">Habilitar</string>
<string name="location_no">No</string>
<string name="rileylink_scanner_scanning">Buscando</string>
<string name="rileylink_scanner_scanning_finished">Búsqueda Finalizada</string>
<string name="rileylink_scanner_scanning_error">Error de escaneo: %1$d</string>
<!-- RL Status Page -->
<string name="rileylink_settings_tab1">Configuración</string>
<string name="rileylink_settings_tab2">Historico</string>
<string name="rileylink_status">Estado RileyLink</string>
<string name="medtronic_pump_status">Estado de Infusora</string>
<string name="title_activity_rileylink_settings">Ajustes de RileyLink</string>
<string name="rileylink_title">RileyLink</string>
<string name="rileylink_configured_address">Dirección configurada</string>
<string name="rileylink_connected_device">Dispositivo conectado</string>
<string name="rileylink_connection_status">Estado de la conexión</string>
<string name="rileylink_connection_error">Error de conexión</string>
<string name="rileylink_device">Dispositivo</string>
<string name="rileylink_device_type">Tipo de dispositivo</string>
<string name="rileylink_device_model">Modelo del dispositivo</string>
<string name="rileylink_last_used_frequency">Última frecuencia usada</string>
<string name="rileylink_last_device_contact">Último contacto del dispositivo</string>
<string name="rileylink_firmware_version">Firmware RL</string>
<!-- RL State -->
<string name="rileylink_state_bt_init">Inicializando Bluetooth…</string>
<string name="rileylink_state_bt_error">Error Bluetooth</string>
<string name="rileylink_state_bt_ready">Bluetooth listo</string>
<string name="rileylink_state_not_started">No iniciado</string>
<string name="rileylink_state_rl_init">Inicialización de RileyLink…</string>
<string name="rileylink_state_rl_error">Error de RileyLink</string>
<string name="rileylink_state_pc_tune_up">Configurando RileyLink y la bomba</string>
<string name="rileylink_state_pc_error">Problema al conectar con la infusora</string>
<string name="rileylink_state_connected">Conectado</string>
<!-- RL Errors -->
<string name="rileylink_error_not_rl">El dispositivo no es un RileyLink</string>
<string name="rileylink_error_unreachable">RileyLink no accesible</string>
<string name="rileylink_error_bt_disabled">Bluetooth está desactivado</string>
<string name="rileylink_error_no_bt_adapter">No hay adaptador Bluetooth</string>
<string name="rileylink_error_tuneup_failed">Error al configurar</string>
<string name="rileylink_error_pump_unreachable">Infusora no alcanzable</string>
<string name="rileylink_error_pod_unreachable">Infusora no alcanzable</string>
<string name="rileylink_error_address_not_set_short">Sin configurar</string>
<!-- RL Target Device -->
<string name="rileylink_target_device_medtronic">Infusora Medtronic</string>
<string name="rileylink_target_device_omnipod">Omnipod</string>
<!-- MDT Errors -->
<string name="medtronic_errors">Errores</string>
<string name="medtronic_error_serial_not_set">Nº serie no establecido.</string>
<string name="medtronic_error_serial_invalid">Número de serie no válido.</string>
<string name="medtronic_error_pump_type_not_set">Tipo de infusora no establecido.</string>
<string name="medtronic_error_pump_type_invalid">Tipo de infusora no soportado.</string>
<string name="medtronic_error_pump_frequency_not_set">No se ha establecido la frecuencia de la infusora.</string>
<string name="medtronic_error_pump_frequency_invalid">Frecuencia de la infusora no soportada.</string>
<string name="medtronic_error_rileylink_address_invalid">Dirección de RileyLink no válida.</string>
<string name="medtronic_error_pump_type_set_differs_from_detected">El tipo de infusora detectado no es el mismo que el tipo configurado.</string>
<string name="medtronic_error_pump_basal_profiles_not_enabled">Los perfiles basales no están habilitados en la infusora.</string>
<string name="medtronic_error_pump_incorrect_basal_profile_selected">El perfil basal establecido en la infusora es incorrecto (debe ser estándar).</string>
<string name="medtronic_error_pump_wrong_tbr_type_set">Tipo incorrecto de basal temporal en la infusora (debe ser Absoluto).</string>
<string name="medtronic_error_pump_wrong_max_bolus_set">Valor máximo incorrecto configurado en la infusora (debe ser %1$.2f).</string>
<string name="medtronic_error_pump_wrong_max_basal_set">Error en el valor máximo de basal configurado en la infusora (debe ser %1$.2f).</string>
<string name="medtronic_error_operation_not_possible_no_configuration">La operación no es posible.\n\n Necesitas configurar primero la infusora Medtronic, antes de poder usar esta operación.</string>
<string name="medtronic_error_pump_24h_time_change_requested">Se ha solicitado un cambio de hora de más de 24h.</string>
<!-- MDT History -->
<string name="medtronic_history_group_basal">Dosis Basales</string>
<string name="medtronic_history_group_configuration">Ajustes</string>
<string name="medtronic_history_group_notification">Notificaciones</string>
<string name="medtronic_history_group_statistic">Estadísticas</string>
<string name="medtronic_history_group_unknown">Desconocido/a</string>
<string name="medtronic_history_group_all">Todos</string>
<string name="medtronic_pump_history">Historial de la infusora Medtronic</string>
<!-- MDT Pump Status -->
<string name="medtronic_pump_status_never_contacted">Nunca conectados</string>
<string name="medtronic_pump_status_waking_up">En fase de inicio</string>
<string name="medtronic_pump_status_error_comm">Error con la comunicación</string>
<string name="medtronic_pump_status_timeout_comm">Tiempo de espera en la comunicación</string>
<string name="medtronic_pump_status_pump_unreachable">Infusora no alcanzable</string>
<string name="medtronic_pump_status_invalid_config">Configuración no válida</string>
<string name="medtronic_pump_status_active">Activo</string>
<string name="medtronic_pump_status_sleeping">Suspendida</string>
<!-- <string name="medtronic_cmd_profile_not_set">Remote Basal profile setting is not supported. Please modify Basal profile on your pump manually.</string> -->
<string name="medtronic_cmd_cancel_bolus_not_supported">Has cancelado el bolo después de que ya estaba enviado a la infusora. Debido a que la infusora Medtronic no soporta comando cancelar, tendrás que cancelarlo manualmente. Pon la infusora en modo suspender y luego reinicia (si todavía quieres cancelar). La aplicación recogerá los cambios en la próxima actualización (en menos de 5 minutos).</string>
<string name="medtronic_cmd_cant_read_tbr">No se pudo leer la basal temporal actual.</string>
<string name="medtronic_cmd_cant_cancel_tbr_stop_op">No se pudo cancelar la basal temporal actual. Detener la operación.</string>
<string name="medtronic_cmd_set_profile_pattern_overflow">El perfil no se pudo activar debido a que los siguientes patrones tienen una basal demasiado grande: %1$s</string>
<string name="medtronic_cmd_bolus_could_not_be_delivered">No se pudo entregar el bolo.</string>
<string name="medtronic_cmd_bolus_could_not_be_delivered_no_insulin">El bolo no pudo ser entregado porque la cantidad de insulina disponible (%1$.2f) es inferior al bolo solicitado (%2$.2f).</string>
<string name="medtronic_cmd_tbr_could_not_be_delivered">La basal temporal no se ha podido activar.</string>
<string name="medtronic_cmd_cant_cancel_tbr">No se pudo cancelar la basal temporal actual.</string>
<string name="medtronic_cmd_basal_profile_could_not_be_set">No se pudo establecer el perfil de basal.</string>
<string name="medtronic_cmd_basal_profile_not_set_is_same">El perfil basal es el mismo, por lo que no será establecido de nuevo.</string>
<string name="medtronic_cmd_desc_get_history">Recuperar el historial - Página %1$d (%2$d/16)</string>
<string name="medtronic_cmd_desc_get_history_request">Recuperar el historial - Página %1$d</string>
<string name="medtronic_cmd_desc_get_time">Obtener la hora de la infusora</string>
<string name="medtronic_cmd_desc_get_settings">Obtener la configuración</string>
<string name="medtronic_cmd_desc_get_model">Obtener el modelo de la infusora</string>
<string name="medtronic_cmd_desc_get_basal_profile">Obtener el perfil basal</string>
<string name="medtronic_cmd_desc_set_basal_profile">Establecer el perfil basal</string>
<string name="medtronic_cmd_desc_get_tbr">Obtener la basal temporal</string>
<string name="medtronic_cmd_desc_set_tbr">Establecer la basal temporal</string>
<string name="medtronic_cmd_desc_set_bolus">Fijar Bolo</string>
<string name="insulinFromCob"><![CDATA[Insulina de COB: <font color=\'%1$s\'>%2$.1fg %3$.2fU</font>]]></string>
<string name="bolusconstraintappliedwarning"><![CDATA[<font color=\'%1$s\'>Restricción de bolo aplicada: %2$.2fU a %3$.2fU</font>]]></string>
<string name="slowabsorptiondetected"><![CDATA[¡<font color=\'%1$s\'>! Se ha detectado una absorción lenta de hidratos de carbono: %2$d% de tiempo. Compruebe de nuevo su calculo. Los COB se pueden sobrestimar, por lo que ¡se podría administrar más insulina de la cuenta!</font>]]></string>
<string name="reservoirvalue">%1$.0f/%2$dU</string>
<string name="partialboluswizard">Administrar esta parte del resultado del asistente de bolos [%]</string>
<string name="deliverpartofboluswizard">El asistente de bolos realiza el cálculo, pero solo se entrega esta parte de la insulina calculada. Útil con el algoritmo SMB.</string>
<string name="loading">Cargando...</string>
<string name="snooze">Silenciar</string>
<string name="accomplished">Completado: %1$s</string>
<string name="objectives_usage_objective">Aprende a controlar AndroidAPS</string>
<string name="objectives_usage_gate">Realice diferentes acciones en AndroidAPS</string>
<string name="objectives_useprofileswitch">Establecer perfil 90% durante 10 min (Pulsación larga en nombre del perfil en Resumen)</string>
<string name="objectives_usedisconnectpump">Simular ducha. Desconectar bomba durante 1h (Pulsación larga en el bucle abierto)</string>
<string name="objectives_usereconnectpump">... y volver a conectar de la misma manera</string>
<string name="objectives_usetemptarget">Crear un objetivo temporal personalizado con 10 min de duración (Pulsación larga en tu objetivo actual)</string>
<string name="objectives_useactions">En Config Builder habilitar el plugin Acciones, hágalo visible y muestre su contenido desde el menú superior</string>
<string name="objectives_useloop">Mostrar contenido del plugin Loop</string>
<string name="objectives_usescale">Usar función de escala mediante un gráfico BG pulsado largo</string>
<string name="objectives_button_enter">Intro</string>
<string name="enter_code_obtained_from_developers_to_bypass_the_rest_of_objectives">Introduzca el código obtenido de los desarrolladores para eludir el resto de objetivos</string>
<string name="codeaccepted">Código aceptado</string>
<string name="codeinvalid">Código no válido</string>
<string name="objectives_exam_objective">Compruebe su conocimiento</string>
<string name="objectives_exam_gate">Responder correctamente</string>
<string name="answerdisabledto">Respuesta deshabilitada a: %1$s</string>
<string name="wronganswer">Respuesta incorrecta!</string>
<string name="unfinshed_button">Siguien&amp;te sin terminar</string>
<string name="close">Cerrar</string>
<string name="requestcode">Solicitad código: %1$s</string>
<string name="objectives_hint">(compruebe todas las respuestas correctas)</string>
<plurals name="objective_days">
<item quantity="one">%1$d día</item>
<item quantity="other">%1$d días</item>

View file

@ -34,7 +34,7 @@
<string name="description_smb">Algorithme le plus récent pour les utilisateurs avancés</string>
<string name="description_overview">Affiche létat actuel de votre Boucle et des boutons dactions les plus courantes</string>
<string name="description_persistent_notification">Affiche une notification en cours avec un bref aperçu de ce que fait votre Boucle</string>
<string name="description_profile_local">Définir un profil qui est disponible hors ligne.</string>
<string name="description_profile_local">Définissez un profil qui est disponible hors ligne.</string>
<string name="description_profile_nightscout">Fournit le profil que vous avez défini dans Nightscout</string>
<string name="description_profile_simple">Définir un profil avec un seul bloc de temps.</string>
<string name="description_pump_combo">Intégration des pompes Accu-Chek Combo il faut avoir Ruffy installé</string>
@ -42,15 +42,12 @@
<string name="description_pump_dana_r_korean">Intégration pour les pompes coréennes de Diabecare DANA RS</string>
<string name="description_pump_dana_r_v2">Intégration pour les pompes de DANA Diabecare R avec firmware mis à jour</string>
<string name="description_pump_dana_rs">Intégration pour les pompes Diabecare DANA RS</string>
<string name="description_pump_insight">Intégration des pompes Accu-Chek Insight. Nécessite SightRemote installé</string>
<string name="description_pump_mdi">Intégration pompe pour les personnes qui font des injections quotidiennes multiples pour le traitement de leur diabète</string>
<string name="description_pump_virtual">Intégration pour les pompes qui nont pas encore de pilote (Boucle Ouverte)</string>
<string name="description_sensitivity_aaps">La Sensibilité est calculée de la même manière que Oref0, mais vous pouvez spécifier la periode concernée. L\'absorption minimale des glucides est calculée à partir des temps dabsorption max des glucides du menu préférences.</string>
<string name="description_sensitivity_oref0">Sensibilité est calculée à partir des données sur les dernières 24h et les glucides (non absorbés) ne sont plus pris en compte après lheure spécifiée dans les préférences.</string>
<string name="description_sensitivity_oref1">Sensibilité est calculée à partir des données des dernières 8 heures et des glucides (si non absorbés) ne sont plus pris en compte après le temps spécifié dans les préférences. Plugin calcule également UAM.</string>
<string name="description_sensitivity_weighted_average">Sensibilité est calculée comme une moyenne pondérée des écarts. Les écarts les plus récents ont un poids plus élevé. L\'absorption minimale des glucides est calculée à partir des temps dabsorption des glucides max du menu préférences. Cet algorithme est le plus rapide pour s\'adapter aux changements de sensibilité.</string>
<string name="description_source_dexcom_g5">Recevoir les valeurs de glycémie de lapp Dexcom G5 patchée.</string>
<string name="description_source_dexcom_g6">Recevoir les valeurs de glycémie de lapp Dexcom G6 patchée.</string>
<string name="description_source_eversense">Recevoir les valeurs de glycémie de lapp Eversense patchée.</string>
<string name="description_source_glimp">Recevoir les glycémies depuis Glimp.</string>
<string name="description_source_mm640g">Recevoir les glycémies depuis le 600SeriesAndroidUploder.</string>
@ -74,7 +71,6 @@
<string name="treatments_carbs_label_string">Glucides :</string>
<string name="treatments_iob_label_string">IA: </string>
<string name="sms_iob">IA:</string>
<string name="treatments_activity_string">Activité :</string>
<string name="treatments_iobtotal_label_string">IA Totale:</string>
<string name="treatments_iobactivitytotal_label_string">Activité IA Totale:</string>
<string name="tempbasals_realduration_label_string">Dur:</string>
@ -147,7 +143,6 @@
<string name="openapsma_lastenact_label">Dernière activation</string>
<string name="ok">OK</string>
<string name="cancel">Annuler</string>
<string name="close">Fermer</string>
<string name="noapsselected">Pas d\'APS séléctionné ou pas de résultat fourni</string>
<string name="safety">Sécurité</string>
<string name="openapsma_disabled">Plugin désactivé</string>
@ -325,19 +320,6 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="overview_bolusprogress_goingtodeliver">%1$.2fU vont être injectées</string>
<string name="objectives_0_objective">Paramétrer la visualisation et la surveillance des données, analyser les débits de basal et les ratios</string>
<string name="objectives_0_gate">Vérifiez que la Glycémie est disponible sur Nightscout et que les données dinsuline ont été téléchargées de la pompe</string>
<string name="objectives_1_objective">Commencez par la configuration Boucle Ouverte</string>
<string name="objectives_1_gate">Utiliser le système Boucle Ouverte pour quelques jours, et activer manuellement de nombreux débits de basal temporaires. Définir et utiliser des objectifs temporaires (ex : activités ou utilisation de glucides pour traiter des hypos)</string>
<string name="objectives_2_objective">Comprendre votre système Boucle Ouverte, y compris ses recommandations de débit de Basal temporaire</string>
<string name="objectives_2_gate">Partant de ce constat, décidez quel est le débit de base maximum à choisir, et entrez le dans la pompe et les préférences </string>
<string name="objectives_3_objective">Commencez par utiliser la Boucle Fermée avec le système Arrêt Glycémie Basse</string>
<string name="objectives_3_gate">Utiliser la Boucle Fermée avec max IA = 0 pour quelques jours sans avoir trop dévénements AGB Arrêt Glycémie Basse (LGS Low Glucose Suspend)</string>
<string name="objectives_4_objective">Ajustez votre système Boucle Fermée, augmentez la fonction « max IOB » au delà de 0 et diminuez progressivement vos cibles glycémiques</string>
<string name="objectives_4_gate">Utiliser pendant quelques jours, et au moins une nuit sans les alarmes dhypoglycémie, avant la baisse de G</string>
<string name="objectives_5_objective">Ajustez si besoin les débits de base et les ratios, activez ensuite « Autosens »</string>
<string name="objectives_5_gate">Une semaine réussie avec des journées en Boucle Fermée, avec des entrées normales des glucides</string>
<string name="objectives_6_objective">Activer dautres fonctionnalités pour lutilisation dans la journée, tel que Assistance Repas Avancée (AMA Advanced Meal Assist)</string>
<string name="objectives_7_objective">Activer des fonctionnalités supplémentaires pour l\'utilisation dans la journée, telles que la fonction SMB</string>
<string name="objectives_7_gate">Vous devez lire le wiki et augmenter les max IA pour faire fonctionner SMB ! Un bon début est max IA = moyenne bolus repas + 3 fois max daily basal</string>
<string name="youareonallowedlimit">Vous avez atteint la limite maximale</string>
<string name="noprofileselected">Aucun profil séléctionné</string>
<string name="smscommunicator_loophasbeendisabled">La Boucle été désactivée</string>
@ -351,7 +333,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="smscommunicator_basalreplywithcode">Pour démarrer Basal %1$.2fU/h pendant %2$d min, renvoyer le code %3$s</string>
<string name="smscommunicator_profilereplywithcode">Pour changer le profil vers %1$s %2$d%%, renvoyer le code %3$s</string>
<string name="smscommunicator_extendedreplywithcode">Pour démarrer le Bolus étendu %1$.2fU pendant %2$d min, renvoyer le code %3$s</string>
<string name="smscommunicator_basalpctreplywithcode">Pour démarrer le Basal %1$d% pendant %2$d min, renvoyer le code %3$s</string>
<string name="smscommunicator_basalpctreplywithcode">Pour démarrer le Basal %1$d%% pendant %2$d min, renvoyer le code %3$s</string>
<string name="smscommunicator_suspendreplywithcode">Envoyer le code %2$s pour suspendre la Boucle pour %1$d minutes</string>
<string name="smscommunicator_tempbasalset">Démarrage réussi pour %1$.2fU/h de basal temporaire pour %2$d min</string>
<string name="smscommunicator_extendedset">Le Bolus étendu %1$.2fU pendant %2$d min a commencé avec succès</string>
@ -571,7 +553,6 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="enablesuperbolus">Activer les Superbolus dans lAssistant</string>
<string name="enablesuperbolus_summary">Activer la fonctionnalité SuperBolus dans lAssistant. Ne pas lactiver avant de bien comprendre comment cela fonctionne réellement. IL PEUT PROVOQUER UNE OVERDOSE DINSULINE SI UTILISÉ AVEUGLÉMENT !</string>
<string name="show_statuslights">Afficher les lumières d\'état sur l\'écran d\'accueil</string>
<string name="show_statuslights_summary">Activer les lumières d\'état pour AgeC, AgeI, AgeS, niveaux du réservoir et de batterie sur l\'écran d\'accueil.</string>
<string name="statuslights_res_warning">Seuil d\'avertissement de niveau du réservoir [U]</string>
<string name="statuslights_res_critical">Seuil critique de niveau du réservoir [U]</string>
<string name="statuslights_bat_warning">Seuil davertissement du niveau de batterie [%%]</string>
@ -729,8 +710,6 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="bluetooth">Bluetooth</string>
<string name="btwatchdog_title">BT Watchdog</string>
<string name="btwatchdog_summary">Ceci va arrêter le Bluetooth du téléphone pour une seconde si la connexion pompe nest pas possible. Cela peut assister certains téléphones dont la connexion Bluetooth se bloque.</string>
<string name="DexcomG5">App Dexcom G5 (adaptée)</string>
<string name="DexcomG6">App DexcomG6 (patché)</string>
<string name="eversense">App Eversense (patché)</string>
<string name="dexcomg5_nsupload_title">Remonter les données glycémiques vers NS</string>
<string name="bgsource_upload">Paramètres de téléchargement des glycémies</string>
@ -800,50 +779,8 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="combo_reservoir_level_insufficient_for_bolus">Pas assez d\'insuline dans le réservoir pour le bolus</string>
<string name="extendedbolusdeliveryerror">Erreur administration bolus étendu</string>
<string name="insightpump_shortname">Vue</string>
<string name="insightpump">Pompe Insight</string>
<string name="status_no_colon">État</string>
<string name="changed">Modifié</string>
<string name="pump_stopped_uppercase">POMPE ARRÊTÉE</string>
<string name="status_updated">L\'état du programme mis à jour</string>
<string name="ago">passé(e)s</string>
<string name="with">avec</string>
<string name="insight_active_tbr">TBR actif</string>
<string name="insight_min_left">il vous reste min</string>
<string name="log_book">Carnet</string>
<string name="insight_last_completed_action">Dernière action terminée</string>
<string name="insight_min">min</string>
<string name="insight_remaining_over">subsistant</string>
<string name="insight_total_with">total</string>
<string name="insight_upfront_with">en amont avec</string>
<string name="insight_stay_always_connected">Rester toujours connectée</string>
<string name="insight_history_idle">EN VEILLE</string>
<string name="insight_history_syncing">SYNCHRONISATION</string>
<string name="insight_history_busy">OCCUPÉ</string>
<string name="insight_history_synced">SYNCHRONISÉ</string>
<string name="insight_startup_uppercase">DÉMARRAGE</string>
<string name="insight_needs">besoins</string>
<string name="insight_not_connected_to_companion_app">Non connectée à l\'application compagnon</string>
<string name="insight_companion_app_not_installed">L\'application compagnon ne semble pas être installée</string>
<string name="insight_incompatible_compantion_app_we_need_version">Application compagnon incompatible, besoin d\'une autre version</string>
<string name="insight_unknown">Inconnue</string>
<string name="insight_waiting_for_code">Attente du code de confirmation</string>
<string name="insight_code_rejected">Code rejeté</string>
<string name="insight_app_binding">Liaison avec app</string>
<string name="insight_not_authorized">Non authorisé</string>
<string name="insight_incompatible">Incompatible</string>
<string name="second">seconde</string>
<string name="minute">minute</string>
<string name="format_hours">%1$.2f h</string>
<string name="hour">heure</string>
<string name="day">jour</string>
<string name="week">semaine</string>
<string name="time_plural">s</string>
<string name="insight_keepalive_format_string">%1$ds expire le %2$s</string>
<string name="insight_keep_alive_status">Statut Rester Actif</string>
<string name="statistics">Statistiques</string>
<string name="connect_preemptively">Se connecter de façon préventive</string>
<string name="automatically_connect_when">Se connecter automatiquement lorsque les écrans AndroidAPS sont ouverts, avant même qu\'une commande de la pompe soit envoyée afin de réduire le délai de connexion</string>
<string name="not_recommended_due_to_battery_drain">Non recommandé en raison de consommation importante de batterie</string>
<string name="enablesmbalways">Activer en permanence les SMB</string>
<string name="enablesmbalways_summary">Activer toujours SMB de manière autonome pour les bolus. Ceci est possible uniquement avec une source de glycémie ayant un très bon filtrage de données comme le G5</string>
<string name="enablesmbaftercarbs">Activer SMB après ingestion de glucides</string>
@ -947,8 +884,6 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="reset">réinitialiser</string>
<string name="waitingfortimesynchronization">En attente de synchronisation de l\'heure (%1$d sec)</string>
<string name="loopdisconnectedfor">Déconnecté (%1$d m)</string>
<string name="automatic_careportal_events">Événements automatiques de Careportal</string>
<string name="automatically_upload_insulin_cannula_and_battery_changes_to_nightscout">Télécharger automatiquement les changements d\'insuline, de cathéter et de batterie ainsi que les alarmes pompe sur Nightscout</string>
<string name="openapssmb_maxiob_title">Maximum Insuline Active IA pour OpenAPS [U]</string>
<string name="openapssmb_maxiob_summary">Cette valeur est appelée Max IA (Insuline Active) dans le contaxte OpenAPS\nOpenAPS najoutera pas plus dinsuline si l\'IA (Insuline Active) actuelle est supérieure à cette valeur</string>
<string name="pump_stopped">Pompe arrêtée</string>
@ -999,7 +934,6 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="adjustprofileinns">Des modifications doivent être effectuées dans NS</string>
<string name="exitwizard">Passer l\'Assistant de configuration</string>
<string name="setupwizard_loop_description">Appuyez sur le bouton ci-dessous pour autoriser AndroidAPS à suggérer/faire des changements de basal</string>
<string name="enableobjectives">Activez les objectifs</string>
<string name="apssetup">Configurer le plugin APS</string>
<string name="sensitivitysetup">Configurer le plugin de Sensibilité</string>
<string name="setupwizard_sensitivity_description">Le plugin de Sensibilité est utilisé pour la détection de la Sensibilité et de calcul de glucides actifs. Pour plus dinformations visitez :</string>
@ -1057,7 +991,6 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="error_adding_treatment_title">Données de traitement incomplètes</string>
<string name="maintenance_settings">Paramètres de maintenance</string>
<string name="maintenance_email">E-mail</string>
<string name="invalid_email_message">Adresse E-mail invalide</string>
<string name="maintenance_amount">Nombre de journaux (Logs) à envoyer</string>
<string name="maintenance">Maintenance</string>
<string name="maintenance_shortname">MAINT</string>
@ -1119,7 +1052,6 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="manufacturing_date">Date de fabrication</string>
<string name="delete_pairing">Supprimer lappairage</string>
<string name="pairing_information">Information sur lappairage</string>
<string name="refreh_status">Actualiser le status</string>
<string name="start_pump">Démarrer la pompe</string>
<string name="stop_pump">Arrêter la pompe</string>
<string name="operating_mode">Mode de fonctionnement</string>
@ -1271,6 +1203,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="autosenslabel">Autosens %</string>
<string name="deltacompared">%3$s %1$s %2$s</string>
<string name="deltalabel">Différence de glycémies</string>
<string name="deltalabel_u">Différence Glycémie [%1$s]</string>
<string name="currentlocation">Localisation actuelle</string>
<string name="location">Localisation</string>
<string name="latitude_short">Lat :</string>
@ -1283,12 +1216,9 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="triggercoblabel">GA</string>
<string name="cobcompared">GA %1$s %2$.0f</string>
<string name="taskname">Nom de tâche</string>
<string name="eventname">Nom de l\'événement</string>
<string name="edit_short">ÉDITER</string>
<string name="please_choose_an_action_type">Merci de choisir un type d\'action :</string>
<string name="please_choose_a_trigger_type">Merci de choisir un type de déclencheur :</string>
<string name="if_label">Si :</string>
<string name="then_label">Alors :</string>
<string name="triggers">Déclencheurs :</string>
<string name="remove_label">SUPPRIMER</string>
<string name="preconditions">Conditions préalables :</string>
@ -1309,7 +1239,6 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="medtronic_pump_frequency_worldwide">Mondial (868 Mhz)</string>
<string name="medtronic_pump_encoding_4b6b_local">Encodage logiciel 4b6b</string>
<string name="medtronic_pump_encoding_4b6b_rileylink">Encodage matériel 4b6b</string>
<string name="rileylink_mac_address">Adresse MAC RileyLink</string>
<string name="medtronic_custom_action_wake_and_tune">Réveil et mise au point</string>
<string name="medtronic_custom_action_clear_bolus_block">Effacer le bloc Bolus</string>
<string name="medtronic_custom_action_reset_rileylink">Réinitialiser la config. RileyLink</string>
@ -1321,9 +1250,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="rileylink_scanner_scan_scan">SCANNER</string>
<string name="rileylink_scanner_scan_stop">ARRÊT</string>
<string name="rileylink_scanner_selected_device">Sélectionné</string>
<string name="rileylink_scanner_scan">Scanner</string>
<string name="rileylink_scanner_title">Scanner RileyLink</string>
<string name="rileylink_scanner_scan_menu">Scanner pour le RileyLink</string>
<string name="rileylink_scanner_ble_not_supported">Bluetooth Low Energy non pris en charge.</string>
<string name="rileylink_scanner_ble_not_enabled">Le Bluetooth n\'est pas activé.</string>
<string name="location_not_found_title">La localisation n\'est pas activée</string>
@ -1336,10 +1263,8 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<!-- RL Status Page -->
<string name="rileylink_settings_tab1">Paramètres</string>
<string name="rileylink_settings_tab2">Historique</string>
<string name="rileylink_settings_tab3">Appareil</string>
<string name="rileylink_status">Statut du RileyLink</string>
<string name="medtronic_pump_status">Statut de la pompe</string>
<string name="rileylink_settings_title">Paramètres RileyLink</string>
<string name="title_activity_rileylink_settings">Paramètres RileyLink</string>
<string name="rileylink_title">RileyLink</string>
<string name="rileylink_configured_address">Adresse configurée</string>
@ -1404,7 +1329,6 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="medtronic_pump_status_waking_up">Réveil en cours</string>
<string name="medtronic_pump_status_error_comm">Erreur de communication</string>
<string name="medtronic_pump_status_timeout_comm">Expiration du délai d\'attente en communication</string>
<string name="medtronic_pump_status_problem_contacting">Problème de communication avec la pompe</string>
<string name="medtronic_pump_status_pump_unreachable">Pompe hors de portée</string>
<string name="medtronic_pump_status_invalid_config">Configuration non valable</string>
<string name="medtronic_pump_status_active">Activé</string>
@ -1422,7 +1346,6 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="medtronic_cmd_basal_profile_not_set_is_same">Le profil Basal est le même, donc il ne sera pas redéfini.</string>
<string name="medtronic_cmd_desc_get_history">Obtenir l\'historique - Page %1$d (%2$d/16)</string>
<string name="medtronic_cmd_desc_get_history_request">Obtenir l\'historique - Page %1$d</string>
<string name="medtronic_cmd_desc_get_history_base">Obtenir l\'historique - Page %1$d</string>
<string name="medtronic_cmd_desc_get_time">Obtenir l\'heure de la pompe</string>
<string name="medtronic_cmd_desc_get_settings">Obtenir les paramètres</string>
<string name="medtronic_cmd_desc_get_model">Obtenir le modèle de pompe</string>
@ -1431,13 +1354,14 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
<string name="medtronic_cmd_desc_get_tbr">Obtenir le Basal Temporaire</string>
<string name="medtronic_cmd_desc_set_tbr">Définir le Basal Temporaire</string>
<string name="medtronic_cmd_desc_set_bolus">Définir le Bolus</string>
<string name="pump_no_connection_h">Aucune connexion depuis %1$d heure(s) %2$d min</string>
<string name="pump_no_connection_d">Aucune connexion depuis %1$d jour(s) %2$d heures</string>
<string name="insulinFromCob"><![CDATA[Insuline pour Gluc Actif GA: <font color=\'%1$s\'>%2$.1fg %3$.2fU</font>]]></string>
<string name="bolusconstraintappliedwarning"><![CDATA[<font color=\'%1$s\'>Contraintes de Bolus appliquées : %2$.2fU à %3$.2f</font>]]></string>
<string name="slowabsorptiondetected"><![CDATA[<font color=\'%1$s\'>!!!!! Absorption lente des glucides détectée : %2$d%% du temps. Vérifiez de nouveau votre calcul. COB peut être vraiment désactivé !!!!!</font>]]></string>
<string name="slowabsorptiondetected"><![CDATA[<font color=\'%1$s\'>!!!!! Absorption lente des glucides détectée : %2$d%% du temps. Vérifiez de nouveau votre calcul. Les GA (Glucides Actifs) peuvent être surestimés et alors plus d\'insuline pourrait être délivré !!!!!</font>]]></string>
<string name="reservoirvalue">%1$.0f / %2$d U</string>
<string name="partialboluswizard">Injecter cette partie de Bolus calculée par lassistant [%]</string>
<string name="deliverpartofboluswizard">L\'assistant Bolus effectue le calcul mais seulement cette partie de l\'insuline calculée est délivrée. Utile avec l\'algorithme SMB.</string>
<string name="loading">Chargement ...</string>
<string name="snooze">Report alarme</string>
<plurals name="objective_days">
<item quantity="one">%1$d jour</item>
<item quantity="other">%1$d jours</item>

View file

@ -42,15 +42,12 @@
<string name="description_pump_dana_r_korean">Integrazione del microinfusore DANA Diabecare R Korean</string>
<string name="description_pump_dana_r_v2">Integrazione del microinfusore DANA Diabecare R con firmware aggiornato</string>
<string name="description_pump_dana_rs">Integrazione del microinfusore DANA Diabecare RS</string>
<string name="description_pump_insight">Integrazione del microinfusore Accu-Chek Insight, è necessario avere installato SightRemote</string>
<string name="description_pump_mdi">Per le persone in terapia multi-iniettiva</string>
<string name="description_pump_virtual">Per microinfusori che non hanno ancora alcun driver (Loop Aperto)</string>
<string name="description_sensitivity_aaps">La sensibilità è calcolata allo stesso modo di Oref0, ma è possibile specificare l\'intervallo di tempo al passato. Minimal carb absorption è calcolato da max carb absorption time nelle preferenze.</string>
<string name="description_sensitivity_oref0">La sensibilità è calcolata dai dati delle ultime 24h e i carboidrati (se non assorbiti) vengono tagliati fuori dopo il tempo specificato nelle preferenze.</string>
<string name="description_sensitivity_oref1">La sensibilità è calcolata dai dati delle ultime 8h e i carboidrati (se non assorbiti) vengono tagliati fuori dopo il tempo specificato nelle preferenze. Il Plugin calcola anche UAM.</string>
<string name="description_sensitivity_weighted_average">La sensibilità è calcolata come media ponderata dalle deviazioni. Le deviazioni più recenti hanno peso maggiore. Minimal carb absorption è calcolato da max carb absorption time nelle preferenze. Questo algoritmo è il più veloce nel seguire i cambiamenti di sensibilità.</string>
<string name="description_source_dexcom_g5">Ricevi valori Glicemia dall\'app Dexcom G5 modificata.</string>
<string name="description_source_dexcom_g6">Ricevi valori Glicemia dall\'app Dexcom G6 modificata.</string>
<string name="description_source_eversense">Ricevi valori Glicemia dall\'app Eversense modificata.</string>
<string name="description_source_glimp">Ricevi valori Glicemia da Glimp.</string>
<string name="description_source_mm640g">Ricevi valori Glicemia da 600SeriesAndroidUploader.</string>
@ -74,7 +71,6 @@
<string name="treatments_carbs_label_string">Carboidrati:</string>
<string name="treatments_iob_label_string">IOB:</string>
<string name="sms_iob">IOB:</string>
<string name="treatments_activity_string">Attività:</string>
<string name="treatments_iobtotal_label_string">IOB Totale:</string>
<string name="treatments_iobactivitytotal_label_string">Attività IOB Totale:</string>
<string name="tempbasals_realduration_label_string">Dur:</string>
@ -147,7 +143,6 @@
<string name="openapsma_lastenact_label">Ultimo attuato</string>
<string name="ok">OK</string>
<string name="cancel">Annulla</string>
<string name="close">Chiudi</string>
<string name="noapsselected">NESSUN APS SELEZIONATO O RISULTATO FORNITO</string>
<string name="safety">Sicurezza</string>
<string name="openapsma_disabled">Plugin disabilitato</string>
@ -324,19 +319,19 @@
<string name="overview_bolusprogress_goingtodeliver">Sto per erogare %1$.2fU</string>
<string name="objectives_0_objective">Configurazione della visualizzazione e del monitoraggio, analisi basali e rapporti</string>
<string name="objectives_0_gate">Verificare che la Glicemia sia disponibile su Nightscout e che i dati sull\'insulina del micro siano in fase di caricamento</string>
<string name="objectives_1_objective">Partenza con Loop Aperto</string>
<string name="objectives_1_gate">Esegui l\'applicazione in modalità Loop Aperto per alcuni giorni e accetta manualmente le basali temporanee. Imposta e utilizza i target temporanei, anche quelli predefiniti (ad esempio, per l\'attività fisica o il trattamento dell\'ipoglicemia con carboidrati)</string>
<string name="objectives_2_objective">Comprendi il tuo Loop Aperto, incluse le relative raccomandazioni sulle basali temporanee</string>
<string name="objectives_2_gate">Sulla base di tale esperienza, decidi quale deve essere il valore max della basale e impostalo sul microinfusore e nelle preferenze</string>
<string name="objectives_3_objective">Iniziare a chiudere il Loop con Low Glucose Suspend</string>
<string name="objectives_3_gate">Esegui l\'applicazione in Loop Chiuso con max IOB = 0 per pochi giorni senza troppi eventi LGS</string>
<string name="objectives_4_objective">Regola il Loop Chiuso, aumentando max IOB al di sopra di 0 e abbassando gradualmente i target glicemici</string>
<string name="objectives_4_gate">Esegui l\'applicazione per alcuni giorni e almeno una notte senza allarmi glicemia, prima di abbassare il target glicemico</string>
<string name="objectives_5_objective">Regola le basali e i rapporti se necessario, quindi attiva auto-sens</string>
<string name="objectives_5_gate">1 settimana di looping diurno con dichiarazione regolare dei carboidrati, eseguito con successo</string>
<string name="objectives_6_objective">Abilita funzioni aggiuntive per l\'uso diurno, ad esempio AMA (advanced meal assist - assistenza avanzata del pasto)</string>
<string name="objectives_7_objective">Abilita funzioni aggiuntive per l\'uso diurno, come SMB</string>
<string name="objectives_7_gate">È necessario leggere il wiki e aumentare maxIOB affinché le azioni di SMB funzionino adeguatamente! Un buon inizio è maxIOB = media bolo posto + 3 x max basale giornaliera</string>
<string name="objectives_openloop_objective">Partenza con Loop Aperto</string>
<string name="objectives_openloop_gate">Esegui l\'applicazione in modalità Loop Aperto per alcuni giorni e accetta manualmente le basali temporanee. Imposta e utilizza i target temporanei, anche quelli predefiniti (ad esempio, per l\'attività fisica o il trattamento dell\'ipoglicemia con carboidrati)</string>
<string name="objectives_maxbasal_objective">Comprendi il tuo Loop Aperto, incluse le relative raccomandazioni sulle basali temporanee</string>
<string name="objectives_maxbasal_gate">Sulla base di tale esperienza, decidi quale deve essere il valore max della basale e impostalo sul microinfusore e nelle preferenze</string>
<string name="objectives_maxiobzero_objective">Iniziare a chiudere il Loop con Low Glucose Suspend</string>
<string name="objectives_maxiobzero_gate">Esegui l\'applicazione in Loop Chiuso con max IOB = 0 per pochi giorni senza troppi eventi LGS</string>
<string name="objectives_maxiob_objective">Regola il Loop Chiuso, aumentando max IOB al di sopra di 0 e abbassando gradualmente i target glicemici</string>
<string name="objectives_maxiob_gate">Esegui l\'applicazione per alcuni giorni e almeno una notte senza allarmi di glicemia bassa, prima di abbassare il target glicemico</string>
<string name="objectives_autosens_objective">Regola le basali e i rapporti se necessario, quindi attiva auto-sens</string>
<string name="objectives_autosens_gate">1 settimana di looping diurno con dichiarazione regolare dei carboidrati, eseguito con successo</string>
<string name="objectives_ama_objective">Abilita funzioni aggiuntive per l\'uso diurno, ad esempio AMA (advanced meal assist - assistenza avanzata del pasto)</string>
<string name="objectives_smb_objective">Abilita funzioni aggiuntive per l\'uso diurno, come SMB</string>
<string name="objectives_smb_gate">È necessario leggere il wiki e aumentare maxIOB affinché le azioni di SMB funzionino adeguatamente! Un buon inizio è maxIOB = media bolo posto + 3 x max basale giornaliera</string>
<string name="youareonallowedlimit">Hai raggiunto il limite consentito</string>
<string name="noprofileselected">Nessun profilo selezionato</string>
<string name="smscommunicator_loophasbeendisabled">Disattivazione Loop corretta</string>
@ -570,7 +565,10 @@
<string name="enablesuperbolus">Abilita Super Bolo nel Calcolatore</string>
<string name="enablesuperbolus_summary">Abilita funzionalità Super Bolo nel Calcolatore. Non abilitare fino a quando non impari ciò che realmente fa. PUÒ CAUSARE SOVRADOSAGGIO DI INSULINA SE USATO IMPROPRIAMENTE!</string>
<string name="show_statuslights">Mostra \"indicatori di stato\" sulla schermata iniziale</string>
<string name="show_statuslights_summary">Abilita indicatori di stato per \"età\" cannula, insulina, sensore, serbatoio e livello batteria sulla schermata iniziale.</string>
<string name="show_statuslights_easy">Mostra \"indicatori di stato\" originali sulla schermata iniziale</string>
<string name="show_statuslights_easy_summary">Abilita indicatori di stato originali per \"età\" cannula, insulina, sensore, serbatoio e livello batteria sulla schermata iniziale.</string>
<string name="show_statuslights_extended">Mostra \"indicatori di stato\" estesi sulla schermata iniziale</string>
<string name="show_statuslights_extended_summary">Abilita indicatori di stato estesi per \"età\" cannula, insulina, sensore, serbatoio e livello batteria sulla schermata iniziale.</string>
<string name="statuslights_res_warning">Soglia di avviso livello serbatoio [U]</string>
<string name="statuslights_res_critical">Soglia critica livello serbatoio [U]</string>
<string name="statuslights_bat_warning">Soglia di avviso livello batteria [%%]</string>
@ -728,8 +726,6 @@
<string name="bluetooth">Bluetooth</string>
<string name="btwatchdog_title">BT Watchdog</string>
<string name="btwatchdog_summary">Spegni il bluetooth del telefono per qualche secondo se non è possibile alcuna connessione al micro. Questo può essere utile su alcuni telefoni.</string>
<string name="DexcomG5">DexcomG5 App (modificata)</string>
<string name="DexcomG6">DexcomG6 App (modificata)</string>
<string name="eversense">Eversense App (modificata)</string>
<string name="dexcomg5_nsupload_title">Carica dati Glicemia su NS</string>
<string name="bgsource_upload">Impostazioni caricamento BG</string>
@ -799,50 +795,8 @@
<string name="combo_reservoir_level_insufficient_for_bolus">Insulina nel serbatoio insufficiente per erogare il bolo</string>
<string name="extendedbolusdeliveryerror">Errore erogazione bolo esteso</string>
<string name="insightpump_shortname">Sight</string>
<string name="insightpump">Micro Insight</string>
<string name="status_no_colon">Stato</string>
<string name="changed">Modificato</string>
<string name="pump_stopped_uppercase">MICRO FERMO</string>
<string name="status_updated">Stato Aggiornato</string>
<string name="ago">fa</string>
<string name="with">con</string>
<string name="insight_active_tbr">TBR attivo</string>
<string name="insight_min_left">min mancanti</string>
<string name="log_book">Registro</string>
<string name="insight_last_completed_action">Ultima azione completata</string>
<string name="insight_min">min</string>
<string name="insight_remaining_over">rimanenti oltre</string>
<string name="insight_total_with">totale con</string>
<string name="insight_upfront_with">in anticipo con</string>
<string name="insight_stay_always_connected">Rimani sempre connesso</string>
<string name="insight_history_idle">INATTIVO</string>
<string name="insight_history_syncing">SINCRONIZZAZIONE</string>
<string name="insight_history_busy">OCCUPATO</string>
<string name="insight_history_synced">SINCRONIZZATO</string>
<string name="insight_startup_uppercase">AVVIO</string>
<string name="insight_needs">Bisogni</string>
<string name="insight_not_connected_to_companion_app">Non connesso alla companion app!</string>
<string name="insight_companion_app_not_installed">La companion app non sembra essere installata!</string>
<string name="insight_incompatible_compantion_app_we_need_version">Companion app incompatibile</string>
<string name="insight_unknown">Sconosciuto</string>
<string name="insight_waiting_for_code">In attesa di conferma del codice</string>
<string name="insight_code_rejected">Codice rifiutato</string>
<string name="insight_app_binding">Associazione applicazione</string>
<string name="insight_not_authorized">Non autorizzato</string>
<string name="insight_incompatible">Incompatibile</string>
<string name="second">secondo</string>
<string name="minute">minuto</string>
<string name="format_hours">%1$.2f h</string>
<string name="hour">ora</string>
<string name="day">giorno</string>
<string name="week">settimana</string>
<string name="time_plural">s</string>
<string name="insight_keepalive_format_string">%1$ds scade: %2$s</string>
<string name="insight_keep_alive_status">Stato di Keep-Alive</string>
<string name="statistics">Statistiche</string>
<string name="connect_preemptively">Connetti preventivamente</string>
<string name="automatically_connect_when">Connetti automaticamente quando vengono aperte le schermate AndroidAPS, prima che venga richiesto qualsiasi comando del micro, per ridurre il ritardo della connessione</string>
<string name="not_recommended_due_to_battery_drain">Non consigliato a causa del consumo della batteria</string>
<string name="enablesmbalways">Abilita SMB sempre</string>
<string name="enablesmbalways_summary">Abilita SMB sempre, indipendentemente dai boli. Possibile solo con sorgente glicemie con buon filtraggio dati, come G5</string>
<string name="enablesmbaftercarbs">Abilita SMB dopo i carboidrati</string>
@ -946,8 +900,6 @@
<string name="reset">reset</string>
<string name="waitingfortimesynchronization">In attesa della sincronizzazione dell\'ora (%1$d sec)</string>
<string name="loopdisconnectedfor">Disconnesso (%1$d m)</string>
<string name="automatic_careportal_events">Eventi careportal automatici</string>
<string name="automatically_upload_insulin_cannula_and_battery_changes_to_nightscout">Carica automaticamente su Nightscout i cambi di insulina, cannula e batteria e gli allarmi micro</string>
<string name="openapssmb_maxiob_title">Max IOB totale oltre la quale OpenAPS non può andare [U]</string>
<string name="openapssmb_maxiob_summary">Questo valore è chiamato Max IOB nel contesto OpenAPS\nOpenAPS non aggiungerà ulteriore insulina se IOB corrente è maggiore di questo valore</string>
<string name="pump_stopped">Micro sospeso</string>
@ -998,7 +950,6 @@
<string name="adjustprofileinns">Le modifiche devono essere fatte in NS</string>
<string name="exitwizard">Salta configurazione guidata</string>
<string name="setupwizard_loop_description">Premere il pulsante in basso per permettere ad AndroidAPS di suggerire/fare modifiche alla basale</string>
<string name="enableobjectives">Abilita gli Obiettivi</string>
<string name="apssetup">Configura il plugin APS</string>
<string name="sensitivitysetup">Configura il plugin di Sensibilità</string>
<string name="setupwizard_sensitivity_description">Il plugin di Sensibilità è utilizzato per il rilevamento della sensibilità all\'insulina e il calcolo di COB. Per ulteriori informazioni visita:</string>
@ -1056,7 +1007,6 @@
<string name="error_adding_treatment_title">Dati trattamento incompleti</string>
<string name="maintenance_settings">Impostazioni Manutenzione</string>
<string name="maintenance_email">Email</string>
<string name="invalid_email_message">Email non valida</string>
<string name="maintenance_amount">Nessun log da inviare</string>
<string name="maintenance">Manutenzione</string>
<string name="maintenance_shortname">MAINT</string>
@ -1118,7 +1068,6 @@
<string name="manufacturing_date">Data di produzione</string>
<string name="delete_pairing">Elimina associazione</string>
<string name="pairing_information">Informazioni associazione</string>
<string name="refreh_status">Aggiorna stato</string>
<string name="start_pump">Avvia micro</string>
<string name="stop_pump">Ferma micro</string>
<string name="operating_mode">Modalità operativa</string>
@ -1270,6 +1219,7 @@
<string name="autosenslabel">Autosens %</string>
<string name="deltacompared">%3$s %1$s %2$s</string>
<string name="deltalabel">Differenza Glicemia</string>
<string name="deltalabel_u">Differenza Glicemia [%1$s]</string>
<string name="currentlocation">Posizione corrente</string>
<string name="location">Posizione</string>
<string name="latitude_short">Lat:</string>
@ -1282,12 +1232,9 @@
<string name="triggercoblabel">COB</string>
<string name="cobcompared">COB %1$s %2$.0f</string>
<string name="taskname">Nome Task</string>
<string name="eventname">Nome Evento</string>
<string name="edit_short">MODIFICA</string>
<string name="please_choose_an_action_type">Scegli un tipo di azione:</string>
<string name="please_choose_a_trigger_type">Scegli un tipo di trigger:</string>
<string name="if_label">If:</string>
<string name="then_label">Then:</string>
<string name="triggers">Trigger:</string>
<string name="remove_label">RIMUOVI</string>
<string name="preconditions">Presupposti:</string>
@ -1308,7 +1255,6 @@
<string name="medtronic_pump_frequency_worldwide">Globale (868 Mhz)</string>
<string name="medtronic_pump_encoding_4b6b_local">Codifica Software 4b6b</string>
<string name="medtronic_pump_encoding_4b6b_rileylink">Codifica Hardware 4b6b</string>
<string name="rileylink_mac_address">RileyLink MAC Address</string>
<string name="medtronic_custom_action_wake_and_tune">Risveglio e Sintonizzazione</string>
<string name="medtronic_custom_action_clear_bolus_block">Cancella Blocco Bolo</string>
<string name="medtronic_custom_action_reset_rileylink">Reset Configurazione RileyLink</string>
@ -1320,9 +1266,7 @@
<string name="rileylink_scanner_scan_scan">SCAN</string>
<string name="rileylink_scanner_scan_stop">STOP</string>
<string name="rileylink_scanner_selected_device">Selezionato</string>
<string name="rileylink_scanner_scan">Scan</string>
<string name="rileylink_scanner_title">Scansione RileyLink</string>
<string name="rileylink_scanner_scan_menu">Scan di RileyLink</string>
<string name="rileylink_scanner_ble_not_supported">Bluetooth Low Energy non supportato.</string>
<string name="rileylink_scanner_ble_not_enabled">Bluetooth disabilitato.</string>
<string name="location_not_found_title">La posizione non è abilitata</string>
@ -1335,10 +1279,8 @@
<!-- RL Status Page -->
<string name="rileylink_settings_tab1">Impostazioni</string>
<string name="rileylink_settings_tab2">Storico</string>
<string name="rileylink_settings_tab3">Dispositivo</string>
<string name="rileylink_status">Stato RileyLink</string>
<string name="medtronic_pump_status">Stato micro</string>
<string name="rileylink_settings_title">Impostazioni RileyLink</string>
<string name="title_activity_rileylink_settings">Impostazioni RileyLink</string>
<string name="rileylink_title">RileyLink</string>
<string name="rileylink_configured_address">Indirizzo configurato</string>
@ -1403,7 +1345,6 @@
<string name="medtronic_pump_status_waking_up">Risveglio</string>
<string name="medtronic_pump_status_error_comm">Errore nella comunicazione</string>
<string name="medtronic_pump_status_timeout_comm">Timeout della comunicazione</string>
<string name="medtronic_pump_status_problem_contacting">Problema di connessione al micro</string>
<string name="medtronic_pump_status_pump_unreachable">Micro irraggiungibile</string>
<string name="medtronic_pump_status_invalid_config">Configurazione non valida</string>
<string name="medtronic_pump_status_active">Attivo</string>
@ -1421,7 +1362,6 @@
<string name="medtronic_cmd_basal_profile_not_set_is_same">Il profilo basale è lo stesso, non sarà impostato di nuovo.</string>
<string name="medtronic_cmd_desc_get_history">Ottieni Storico - Pagina %1$d (%2$d/16)</string>
<string name="medtronic_cmd_desc_get_history_request">Ottieni Storico - Pagina %1$d</string>
<string name="medtronic_cmd_desc_get_history_base">Ottieni Storico - Pagina %1$d</string>
<string name="medtronic_cmd_desc_get_time">Ottieni Orario Micro</string>
<string name="medtronic_cmd_desc_get_settings">Ottieni Impostazioni</string>
<string name="medtronic_cmd_desc_get_model">Ottieni Modello Micro</string>
@ -1430,12 +1370,36 @@
<string name="medtronic_cmd_desc_get_tbr">Ottieni Basale Temporanea</string>
<string name="medtronic_cmd_desc_set_tbr">Imposta Basale Temporanea</string>
<string name="medtronic_cmd_desc_set_bolus">Imposta Bolo</string>
<string name="pump_no_connection_h">Nessuna connessione per %1$d ora(e) e %2$d min</string>
<string name="pump_no_connection_d">Nessuna connessione per %1$d giorno(i) e %2$d ore</string>
<string name="insulinFromCob"><![CDATA[Insulina COB: <font color=\'%1$s\'>%2$.1fg %3$.2fU</font>]]></string>
<string name="bolusconstraintappliedwarning"><![CDATA[<font color=\'%1$s\'>Vincolo Bolo applicato: %2$.2fU a %3$.2fU</font>]]></string>
<string name="slowabsorptiondetected"><![CDATA[<font color=\'%1$s\'>!!!!! Rilevato assorbimento lento dei carboidrati: %2$d%% del tempo. Ricontrolla il tuo calcolo. COB può essere davvero fuori !!!!!</font>]]></string>
<string name="slowabsorptiondetected"><![CDATA[<font color=\'%1$s\'>!!!!! Rilevato assorbimento lento dei carboidrati: %2$d%% del tempo. Ricontrolla il tuo calcolo. COB potrebbero essere sovrastimati e potrebbe essere somministrata più insulina !!!!!</font>]]></string>
<string name="reservoirvalue">%1$.0f / %2$d U</string>
<string name="partialboluswizard">Eroga questa parte del risultato del bolus wizard [%]</string>
<string name="deliverpartofboluswizard">Bolus wizard esegue il calcolo, ma solo questa parte dell\'insulina calcolata è erogata. Utile con algoritmo SMB.</string>
<string name="loading">Caricamento ...</string>
<string name="snooze">Snooze</string>
<string name="accomplished">Compiuto: %1$s</string>
<string name="objectives_usage_objective">Impara a controllare AndroidAPS</string>
<string name="objectives_usage_gate">Esegui varie azioni in AndroidAPS</string>
<string name="objectives_useprofileswitch">Imposta il profilo \"90%\" per 10 min (premi a lungo sul nome profilo nella sezione Panoramica)</string>
<string name="objectives_usedisconnectpump">Simula la doccia. Disconnetti il micro per 1h (premi a lungo su Open Loop)</string>
<string name="objectives_usereconnectpump">... e riconnetti allo stesso modo</string>
<string name="objectives_usetemptarget">Crea un temp-target personalizzato con una durata di 10 min (premi a lungo sul tuo target corrente)</string>
<string name="objectives_useactions">Nel Configuratore attiva il plugin Azioni, rendilo visibile e visualizzane i contenuti tramite il menu in alto</string>
<string name="objectives_useloop">Visualizza il contenuto del plugin Loop</string>
<string name="objectives_usescale">Usa la funzione di ridimensionamento premendo a lungo sul grafico delle glicemie</string>
<string name="objectives_button_enter">Invio</string>
<string name="enter_code_obtained_from_developers_to_bypass_the_rest_of_objectives">Inserisci il codice ottenuto dagli sviluppatori per aggirare il resto degli obiettivi</string>
<string name="codeaccepted">Codice accettato</string>
<string name="codeinvalid">Codice non valido</string>
<string name="objectives_exam_objective">Prova la tua conoscenza</string>
<string name="objectives_exam_gate">Studia e rispondi correttamente alle domande</string>
<string name="answerdisabledto">Risposta disabilitata per: %1$s</string>
<string name="wronganswer">Risposta sbagliata!</string>
<string name="unfinshed_button">Prossimo non completato</string>
<string name="close">Chiudi</string>
<string name="requestcode">Codice richiesta: %1$s</string>
<string name="objectives_hint">(segna tutte le risposte corrette)</string>
<plurals name="objective_days">
<item quantity="one">%1$d giorno</item>
<item quantity="other">%1$d giorni</item>

View file

@ -18,6 +18,7 @@
<string name="danar_bt_name_title">다나R 블루투스</string>
<string name="ns_sync_use_absolute_title">Basal 절대값 사용하기</string>
<string name="alert_dialog_storage_permission_text">폰을 재부팅하거나 AndroidAPS를 재시작하세요 \n그렇지 않으면 로그 기록이 되지 않습니다.(알고리즘이 정상적인 작동하는지 확인하기 위해 로그가 필요합니다.)!</string>
<string name="alert_dialog_permission_battery_optimization_failed">이 장치는 배터리 최적화 화이트리스트를 지원하지 않습니다 - 성능 문제가 발생할 수 있습니다.</string>
<string name="description_actions">일반 기능을 빠르게 실행시킬 버튼</string>
<string name="description_careportal">고급 로그 항목을 입력합니다.</string>
<string name="description_config_builder">활성화된 플러그인을 구성하는 데 사용됩니다.</string>
@ -33,7 +34,7 @@
<string name="description_smb">고급사용자를 위한 가장 최신의 알고리즘</string>
<string name="description_overview">현재 Loop 상태와 기본 기능 버튼을 표시합니다.</string>
<string name="description_persistent_notification">Loop가 어떤 작동하는지에 대한 간략한 개요를 연속 알림으로 보여줍니다.</string>
<string name="description_profile_local">인터넷 연결없이 사용가능한 프로파일</string>
<string name="description_profile_local">오프라인에서 사용 가능한 프로파일을 정의하십시오.</string>
<string name="description_profile_nightscout">Nightscout에서 정의한 프로필을 사용합니다.</string>
<string name="description_profile_simple">하나의 시간대만 설정 가능한 단순 프로파일</string>
<string name="description_pump_combo">아큐-첵 Combo 펌프와 연동, ruffy 설치 필요</string>
@ -41,15 +42,12 @@
<string name="description_pump_dana_r_korean">내수용 다나R 펌프와 연동(다나 R)</string>
<string name="description_pump_dana_r_v2">업그레이드 펌웨어가 설치된 다나R 펌프와 연동</string>
<string name="description_pump_dana_rs">다나RS 펌프와 연동</string>
<string name="description_pump_insight">아큐-첵 Insight 펌프와 연동, SightRemote 설치 필요</string>
<string name="description_pump_mdi">다회요법으로 관리하는 사용자를 위한 설정</string>
<string name="description_pump_virtual">가상용 펌프를 위한 설정(Open Loop)</string>
<string name="description_sensitivity_aaps">Oref0와 동일한 방법으로 민감도가 계산되지만, 과거 시간을 지정할 수 있습니다. 최소 탄수화물 흡수는 설정에서 최대 탄수화물 흡수 시간으로 부터 계산됩니다.</string>
<string name="description_sensitivity_oref0">민감도가 과거 24시간의 데이터로 부터 계산됩니다. (흡수되지 않은 경우) 탄수화물은 설정에서 설정된 시간이 지나면 없어집니다.</string>
<string name="description_sensitivity_oref1">민감도가 과거 8시간의 데이터로 부터 계산됩니다. (흡수되지 않은 경우) 탄수화물은 설정에서 설정된 시간이 지나면 없어집니다. UAM(알리지 않은 음식)도 계산합니다.</string>
<string name="description_sensitivity_weighted_average">민감도가 편차의 가중평균으로 계산됩니다. 최근의 편차가 더 가중됩니다. 최소 탄수화물 흡수는 설정에서 최대 탄수화물 흡수 시간으로 부터 계산됩니다. 이 알고리즘의 민감도가 가장 빠릅니다.</string>
<string name="description_source_dexcom_g5">패치된 DexcomG5 앱에서 혈당값 받기</string>
<string name="description_source_dexcom_g6">패치된 DexcomG6 앱에서 혈당값 받기</string>
<string name="description_source_eversense">패치된 Eversense 앱에서 혈당값 받기</string>
<string name="description_source_glimp">Glimp에서 혈당값 받기</string>
<string name="description_source_mm640g">600SeriesAndroidUploader에서 혈당값 받기</string>
@ -73,7 +71,6 @@
<string name="treatments_carbs_label_string">탄수화물:</string>
<string name="treatments_iob_label_string">IOB:</string>
<string name="sms_iob">IOB:</string>
<string name="treatments_activity_string">활동:</string>
<string name="treatments_iobtotal_label_string">IOB 총량:</string>
<string name="treatments_iobactivitytotal_label_string">활동 IOB 총량:</string>
<string name="tempbasals_realduration_label_string">기간:</string>
@ -322,19 +319,6 @@
<string name="overview_bolusprogress_goingtodeliver">%1$.2fU을 주입합니다</string>
<string name="objectives_0_objective">표시설정과 모니터설정을 완료하고, Basal과 비율을 분석한다.</string>
<string name="objectives_0_gate">나이트스카우트에서 혈당 데이터가 잘 들어오는지, 펌프데이터가 업로드 되는지 확인한다.</string>
<string name="objectives_1_objective">Open Loop를 시작한다.</string>
<string name="objectives_1_gate">Open Loop 모드에서 몇일간 사용하여보고, 임시Basal을 여러번 수동으로 주입해 본다. 임시목표와 기본임시목표(\'식사직전\', \'활동\',\'저혈당\' 임시목표)를 설정하고 사용해 본다.</string>
<string name="objectives_2_objective">임시Basal 추천기능을 포함해서, Open Loop에 대해 이해한다.</string>
<string name="objectives_2_gate">이 경험을 토대로, 최대 Basal을 결정하고 이를 펌프와 설정에 입력한다.</string>
<string name="objectives_3_objective">Closed Loop를 시작하고 저혈당인슐린 중지 기능을 사용해본다.</string>
<string name="objectives_3_gate">최대 IOB = 0 인 상태로 Closed Loop를 몇일동안 실행시켜 본다. 저혈당 인슐린일시중지가 많이 발생하지 않도록 한다.</string>
<string name="objectives_4_objective">Closed Loop를 조정하여 최대 IOB를 0 이상으로 올려서 서서히 혈당 목표치를 낮춘다.</string>
<string name="objectives_4_gate">혈당을 낮추기 전에 몇일간 사용해보되 최소한 하루는 저혈당 혈당 알람이 발생하지 않도록 해본다.</string>
<string name="objectives_5_objective">필요하면 Basal과 비율을 조절하고, auto-sens를 활성화한다.</string>
<string name="objectives_5_gate">평소의 탄수화물을 입력하면서 1주일동안 낮시간대에 loop를 성공적으로 사용해본다.</string>
<string name="objectives_6_objective">AMA(Advanced Meal Assist)같은 낮시간대를 위한 추가적인 기능들을 실행하여 본다.</string>
<string name="objectives_7_objective">낮시간대에 SMB(Super Micro Bolus)같은 추가기능을 활성화해 사용해본다.</string>
<string name="objectives_7_gate">SMB가 잘 작동하게 하기위해서 wiki를 반드시 읽은다음 maxIOB를 올려주세요. maxIOB=평균 식사 Bolus + 3 x 최대하루 Basal이면 괜찮은 시작값입니다.</string>
<string name="youareonallowedlimit">허용된 제한값에 도달하였습니다</string>
<string name="noprofileselected">프로파일이 선택되지 않았습니다</string>
<string name="smscommunicator_loophasbeendisabled">Loop가 중지되었습니다.</string>
@ -537,10 +521,12 @@
<string name="loopsuspended">Loop 일시중지</string>
<string name="loopsuspendedfor">일시중지중 (%d분)</string>
<string name="loopsuperbolusfor">Superbolus (%1$d 분)</string>
<string name="suspendloop">Loop 일시중지</string>
<string name="suspendloopfor1h">1시간동안 Loop 일시중지</string>
<string name="suspendloopfor2h">2시간동안 Loop 일시중지</string>
<string name="suspendloopfor3h">3시간동안 Loop 일시중지</string>
<string name="suspendloopfor10h">10시간동안 Loop 일시중지</string>
<string name="suspendloopforXmin">%1$d분 동안 Loop 일시정지</string>
<string name="disconnectpumpfor15m">15분동안 펌프 일시중지</string>
<string name="disconnectpumpfor30m">30분동안 펌프 일시중지</string>
<string name="disconnectpumpfor1h">1시간동안 펌프 일시중지</string>
@ -566,7 +552,6 @@
<string name="enablesuperbolus">마법사에서 Superbolus 활성화하기</string>
<string name="enablesuperbolus_summary">마법사에서 Superbolus 기능을 활성화합니다. 어떤 기능인지 확실히 알기전까지 활성화 하지 마세요. 제대로 알지 못하고 사용하면 일슐린이 과다 주입될 수 있습니다!</string>
<string name="show_statuslights">홈화면에 상태 표시등 보여주기</string>
<string name="show_statuslights_summary">홈화면에 캐뉼라 사용기간, 인슐린 사용기간, 센서 사용기간, 펌프용 주사기와 배터리 남은 양의 표시등을 활성화합니다.</string>
<string name="statuslights_res_warning">주사기량 경고 기준값[U]</string>
<string name="statuslights_res_critical">주사기량 위험 기준값[U]</string>
<string name="statuslights_bat_warning">배터리량 경고 기준값[%%]</string>
@ -724,8 +709,6 @@
<string name="bluetooth">블루투스</string>
<string name="btwatchdog_title">블루투스 감시기능</string>
<string name="btwatchdog_summary">펌프에 연결이 되지 않을때 폰의 블루투스를 1초간 껐다 켭니다. 블루투스 스택이 정지되는 일부폰에 이 기능이 도움이 됩니다.</string>
<string name="DexcomG5">DexcomG5 앱(패치버전)</string>
<string name="DexcomG6">DexcomG6 앱(패치버전)</string>
<string name="eversense">Eversense 앱(패치버전)</string>
<string name="dexcomg5_nsupload_title">NS에 혈당데이터 업로드하기</string>
<string name="bgsource_upload">혈당 업로드 설정</string>
@ -795,49 +778,8 @@
<string name="combo_reservoir_level_insufficient_for_bolus">Bolus 주입 위한 인슐린이 주사기에 부족합니다.</string>
<string name="extendedbolusdeliveryerror">확장Bolus 주입 에러</string>
<string name="insightpump_shortname">Sight</string>
<string name="insightpump">Insight 펌프</string>
<string name="status_no_colon">상태</string>
<string name="changed">변경됨</string>
<string name="pump_stopped_uppercase">펌프 중지됨</string>
<string name="status_updated">상태 업데이트</string>
<string name="ago"></string>
<string name="with">with</string>
<string name="insight_active_tbr">활성 임시기초량</string>
<string name="insight_min_left">분 남음</string>
<string name="log_book">로그북</string>
<string name="insight_last_completed_action">최근 완료된 액션</string>
<string name="insight_min"></string>
<string name="insight_remaining_over">남은</string>
<string name="insight_total_with">total with</string>
<string name="insight_upfront_with">upfront with</string>
<string name="insight_stay_always_connected">항상 연결상태로 있기</string>
<string name="insight_history_idle">대기</string>
<string name="insight_history_syncing">동기화중</string>
<string name="insight_history_busy">바쁨</string>
<string name="insight_history_synced">동기화됨</string>
<string name="insight_startup_uppercase">시작</string>
<string name="insight_needs">필요</string>
<string name="insight_not_connected_to_companion_app">앱에 연결되지 않았습니다.</string>
<string name="insight_companion_app_not_installed">앱이 설치되지 않았습니다.</string>
<string name="insight_incompatible_compantion_app_we_need_version">호환되지 않는 앱입니다. 이 버전이 필요합니다</string>
<string name="insight_unknown">알 수 없는</string>
<string name="insight_waiting_for_code">코드 승인 대기중</string>
<string name="insight_code_rejected">코드가 거부되었습니다.</string>
<string name="insight_app_binding">앱 연결중</string>
<string name="insight_not_authorized">승인되지 않은</string>
<string name="insight_incompatible">비호환</string>
<string name="second"></string>
<string name="minute"></string>
<string name="hour">시간</string>
<string name="day"></string>
<string name="week"></string>
<string name="time_plural">s</string>
<string name="insight_keepalive_format_string">%1$ds 만료 %2$s</string>
<string name="insight_keep_alive_status">활성 상태</string>
<string name="statistics">통계</string>
<string name="connect_preemptively">우선 연결</string>
<string name="automatically_connect_when">AndroidAPS 화면을 열면 펌프 명령이 요청되기 전에 자동으로 연결하여 연결 지연을 줄입니다.</string>
<string name="not_recommended_due_to_battery_drain">배터리 소모때문에 추천하지 않습니다.</string>
<string name="format_hours">%1$.2f 시간</string>
<string name="enablesmbalways">항상 SMB를 사용합니다.</string>
<string name="enablesmbalways_summary">Bolus와 독립적으로 항상 SMB를 사용합니다. G5처럼 잘 필터된 혈당소스와만 사용이 가능합니다.</string>
<string name="enablesmbaftercarbs">탄수화물 이후 SMB를 사용합니다.</string>
@ -891,6 +833,7 @@
<string name="closed_loop_disabled_on_dev_branch">개발자버전을 실행중입니다. Closed Loop는 비활성화 됩니다.</string>
<string name="engineering_mode_enabled">전문가 모드 사용</string>
<string name="not_eng_mode_or_release">전문가 모드가 활성화되어 있지 않고 Release 버전이 실행되고 있지 않습니다.</string>
<string name="pump_basebasalrate">%1$.2f U/h</string>
<string name="combo_actvity_reading_basal_profile">Basal 프로파일 읽는중</string>
<string name="combo_bolus_rejected_due_to_pump_history_change">Bolus 계산이 수행된 후 펌프 이력이 변경되었습니다. Bolus가 주입되지 않았습니다. Bolus가 여전히 필요하다면 다시 계산하세요.</string>
<string name="combo_error_updating_treatment_record">Bolus가 성공적으로 주입되었지만, 관리 항목에 추가하지 못했습니다. 이것은 동일한 양의 소량의 2개의 Bolus가 최근 2 분 이내에 주입되는 경우에 발생할 수 있습니다. 펌프 이력과 관리 항목을 확인하고 손실된 항목을 추가하기위해 케어포털을 이용하세요. 동일한 시간과 인슐린양의 항목을 추가하지 마세요.</string>
@ -940,8 +883,6 @@
<string name="reset">재설정</string>
<string name="waitingfortimesynchronization">시간 동기화 대기중 (%1$d 초)</string>
<string name="loopdisconnectedfor">연결 끊어짐 (%1$d분)</string>
<string name="automatic_careportal_events">케어포털 이벤트 자동기록</string>
<string name="automatically_upload_insulin_cannula_and_battery_changes_to_nightscout">인슐린, 캐뉼라, 배터리교체, 펌프알람을 Nightscout에 자동으로 업로드합니다.</string>
<string name="openapssmb_maxiob_title">OpenAPS가 초과 할 수 없는 총 IOB의 최대량 [U]</string>
<string name="openapssmb_maxiob_summary">이 값은 OpenAPS에서 Max IOB라고 합니다\n현재 IOB가 이 값보다 크면 OpenAPS는 인슐린을 추가로 주입하지 않습니다.</string>
<string name="pump_stopped">펌프 중지</string>
@ -992,12 +933,11 @@
<string name="adjustprofileinns">오직 NS에서 변경해야합니다.</string>
<string name="exitwizard">설정 마법사 건너뛰기</string>
<string name="setupwizard_loop_description">AndroidAPS가 Basal 변화를 제안 혹은 실행하게 하려면 아래 버튼을 누르세요.</string>
<string name="enableobjectives">목표 활성화하기</string>
<string name="apssetup">APS 플러그인 설정하기</string>
<string name="sensitivitysetup">민감도 플러그인 설정하기</string>
<string name="setupwizard_sensitivity_description">민감도 플러그인은 민감도감지와 COB 계산을 위해 사용됩니다. 더 많은 정보는 다름 링크를 방문하세요.</string>
<string name="setupwizard_sensitivity_url">https://github.com/MilosKozak/AndroidAPS/wiki/Sensitivity-detection-and-COB</string>
<string name="nsclientinfotext">NSClient는 Nightscout에 대한 연결을 처리합니다. 이 부분을 건너 뛸 수 있지만 설정하기 전까지는 목표를 통과하지 못합니다.</string>
<string name="nsclientinfotext">NSClient는 Nightscout와의 연결을 처리합니다. 이 부분을 건너뛸 수 있지만 설정하기 전엔 목적을 수행할 수 없습니다.</string>
<string name="diawarning">새로운 인슐린 프로파일은 최소 5시간의 DIA가 요구됩니다. 새로운 프로파일의 DIA 5-6시간은 구식 인슐린 프로파일의 DIA 3시간과 동일합니다.</string>
<string name="bgsourcesetup">혈당소스 설정하기</string>
<string name="setupwizard_profile_description">프로파일 소스를 선택해주세요. 당뇨인이 어린이라면 NS 프로파일을 선택하여야 합니다. Nightscout으로 관리해줄 사람이 없다면 당신은 로컬 프로파일을 선호할 수도 있습니다. 여기선 프로파일의 소스를 선택할 뿐이라는 것을 명심하세요. 그 프로파일을 실제 사용하려면 \"프로파일 변경\"을 실행하여 프로파일을 활성화 시켜야합니다.</string>
@ -1050,7 +990,6 @@
<string name="error_adding_treatment_title">관리 데이터가 불완전합니다</string>
<string name="maintenance_settings">정비 설정</string>
<string name="maintenance_email">Email</string>
<string name="invalid_email_message">유효하지 않은 Email</string>
<string name="maintenance_amount">전송할 로그 수</string>
<string name="maintenance">정비</string>
<string name="maintenance_shortname">MAINT</string>
@ -1076,6 +1015,7 @@
<string name="speederror">속도 오류</string>
<string name="insulinlimitviolation">인슐린 제한 위반</string>
<string name="loop_openmode_min_change">최소 요청 변화 [%]</string>
<string name="loop_openmode_min_change_summary">Open Loop가 %단위로 이 값보다 변화가 더 클 경우에만 새 변경 요청을 팝업합니다. 기본값은 20 %입니다</string>
<string name="pairfirst">펌프를 폰과 동기화 하십시오</string>
<string name="searching_for_devices">장치 검색중...</string>
<string name="please_wait">잠시 기다려 주세요...</string>
@ -1111,7 +1051,6 @@
<string name="manufacturing_date">제조일</string>
<string name="delete_pairing">동기화 삭제</string>
<string name="pairing_information">동기화 정보</string>
<string name="refreh_status">상태 새로고침</string>
<string name="start_pump">펌프 시작</string>
<string name="stop_pump">펌프 중지</string>
<string name="operating_mode">작동 모드</string>
@ -1151,7 +1090,41 @@
<string name="weekday_wednesday_short"></string>
<string name="weekday_tuesday_short"></string>
<string name="weekday_monday_short"></string>
<string name="automation_description">사용자 정의 자동화 작업</string>
<string name="automation_missing_task_name">작업 이름을 입력하세요.</string>
<string name="automation_missing_trigger">적어도 하나의 트리거를 지정하세요.</string>
<string name="automation_missing_action">적어도 하나의 액션을 지정하세요.</string>
<string name="alreadyenabled">이미 활성화됨</string>
<string name="alreadydisabled">이미 비활성화됨</string>
<string name="alreadysuspended">이미 일시정지됨</string>
<string name="resumeloop">Loop 재실행</string>
<string name="notsuspended">일시 중지되지 않음</string>
<string name="starttemptarget">임시 목표 시작</string>
<string name="stoptemptarget">임시 목표 중지</string>
<string name="islesser">보다 적은</string>
<string name="isequalorlesser">같거나 작은</string>
<string name="isequal">같은</string>
<string name="isequalorgreater">같거나 큰</string>
<string name="isgreater">보다 큰</string>
<string name="isnotavailable">이용할 수 없음</string>
<string name="unknown">알수없음</string>
<string name="glucoseisnotavailable">혈당을 사용할 수 없습니다.</string>
<string name="glucosecomparedmgdl">혈당 %1$s %2$.0f %3$s</string>
<string name="glucosecomparedmmol">혈당 %1$s %2$.1f %3$s</string>
<string name="percentagecompared">프로파일 pct %1$s %2$d</string>
<string name="iobcompared">IOB %1$s %2$.1f</string>
<string name="and">그리고</string>
<string name="or">또는</string>
<string name="xor">전용 또는</string>
<string name="atspecifiedtime">%1$s 에</string>
<string name="use_network_location">네트워크 위치 사용</string>
<string name="use_gps_location">GPS 위치 사용</string>
<string name="use_passive_location">수동 위치 사용</string>
<string name="locationservice">위치 서비스</string>
<string name="automation_short">자동</string>
<string name="automation">자동화</string>
<string name="profile_total">== ∑ %1$s U</string>
<string name="profile_ins_units_per_hour">U/h</string>
<string name="profile_carbs_per_unit">g/U</string>
<string name="profile_per_unit">/U</string>
<string name="dexcom_lognssensorchange_title">센서 교체 NS에 기록하기</string>
@ -1191,7 +1164,21 @@
<string name="sms_wrongcode">잘못된 코드입니다. 명령이 취소됩니다.</string>
<string name="notconfigured">설정되지 않음</string>
<string name="profileswitchcreated">프로파일 변경 생성됨</string>
<string name="recurringTime">반복 시간</string>
<string name="every">매일</string>
<string name="never">절대</string>
<string name="mins">%1$d분</string>
<string name="condition">상태:</string>
<string name="action">실행:</string>
<string name="iob_u">IOB [U]:</string>
<string name="glucose_u">혈당 [%1$s]:</string>
<string name="delete_short">삭제</string>
<string name="add_short">추가</string>
<string name="copy_short">복사</string>
<string name="addnew">새로 추가</string>
<string name="versionChecker">버전 검사기</string>
<string name="signature_verifier">서명 확인</string>
<string name="running_invalid_version">유효하지 않은 버전을 이용 중입니다. Loop가 비활성화 되었습니다!</string>
<string name="old_version">오래된 버전</string>
<string name="very_old_version">아주 오래된 버전</string>
<string name="new_version_warning">최소 %1$d일 새버전이 가능합니다! 60일 후엔 LGS(저혈당 주입중지기능)으로 복귀되며, 90일이후엔 Loop가 비활성화 될 것입니다.</string>
@ -1200,18 +1187,180 @@
<string name="dexcom_app_patched">Dexcom 앱(패치버전)</string>
<string name="dexcom_short">DXCM</string>
<string name="description_source_dexcom">패치된 Dexcom 앱에서 혈당값 받기</string>
<string name="notification">공지</string>
<string name="notification_message">공지: %1$s</string>
<string name="message_short">메세지:</string>
<string name="profilepercentage">프로파일 퍼센트</string>
<string name="percent_u">퍼센트 [%]:</string>
<string name="startprofile">프로파일 %1$d%%을 %2$d 분 동안 시작</string>
<string name="startprofileforever">프로파일 %1$d%% 시작</string>
<string name="exists">존재합니다.</string>
<string name="notexists">존재하지 않습니다.</string>
<string name="temptargetcompared">임시 목표 %1$s</string>
<string name="wifissidcompared">WiFi SSID %1$s %2$s</string>
<string name="autosenscompared">Autosens %1$s %2$s %%</string>
<string name="autosenslabel">Autosens %</string>
<string name="deltacompared">%3$s %1$s %2$s</string>
<string name="deltalabel">혈당 차이</string>
<string name="deltalabel_u">혈당 차이 [%1$s]</string>
<string name="currentlocation">현재 위치</string>
<string name="location">위치</string>
<string name="latitude_short">위도:</string>
<string name="longitude_short">경도</string>
<string name="distance_short">거리 [m]:</string>
<string name="name_short">이름:</string>
<string name="locationis">위치는 %1$s</string>
<string name="lastboluslabel">마지막 Bolus 전</string>
<string name="lastboluscompared">마지막 Bolus 시간 %1$s %2$s 분 전</string>
<string name="triggercoblabel">COB</string>
<string name="cobcompared">COB %1$s %2$.0f</string>
<string name="taskname">작업명</string>
<string name="edit_short">편집</string>
<string name="please_choose_an_action_type">액션 타입을 선택하세요:</string>
<string name="please_choose_a_trigger_type">트리거 타입을 선택하세요:</string>
<string name="triggers">트리거:</string>
<string name="remove_label">삭제</string>
<string name="preconditions">전제 조건:</string>
<!-- Pump Abstract -->
<string name="pump_operation_not_supported_by_pump_driver">펌프 및/또는 드라이버가 작동을 지원하지 않습니다.</string>
<string name="pump_operation_not_yet_supported_by_pump">펌프에서 지원되지 않는 작동.</string>
<!-- Medtronic (MDT) - Base -->
<string name="description_pump_medtronic">메드트로닉 펌프 연동에는 RileyLink와 특정 펌프 모델이 필요합니다.</string>
<!-- MDT Configuration -->
<string name="medtronic_serial_number">펌프 일련번호</string>
<string name="medtronic_pump_type">펌프 타입</string>
<string name="medtronic_pump_frequency">펌프 주파수</string>
<string name="medtronic_pump_bolus_delay">Bolus 시작전 지연시간(초)</string>
<string name="medtronic_pump_max_bolus">펌프의 최대 Bolus(U)</string>
<string name="medtronic_pump_max_basal">펌프의 최대 Basal(U/h)</string>
<string name="medtronic_pump_encoding">메드트로닉 인코딩</string>
<string name="medtronic_pump_frequency_us_ca">미국 &amp; 캐나다(916 MHz)</string>
<string name="medtronic_pump_frequency_worldwide">타국가(868 Mhz)</string>
<string name="medtronic_pump_encoding_4b6b_local">소프트웨어 4b6b 인코딩</string>
<string name="medtronic_pump_encoding_4b6b_rileylink">하드웨어 4b6b 인코딩</string>
<string name="medtronic_custom_action_wake_and_tune">켜기 및 튜닝</string>
<string name="medtronic_custom_action_clear_bolus_block">Bolus 블록 삭제</string>
<string name="medtronic_custom_action_reset_rileylink">RileyLink 구성 재설정</string>
<string name="medtronic_pump_battery_select">배터리 타입(파워뷰)</string>
<string name="medtronic_pump_battery_no">선택되지 않음(심플뷰)</string>
<string name="medtronic_pump_battery_alkaline">알카라인(확장뷰)</string>
<string name="medtronic_pump_battery_lithium">리튬(확장뷰)</string>
<!-- RL BLE Scanning -->
<string name="rileylink_scanner_scan_scan">스캔</string>
<string name="rileylink_scanner_scan_stop">중지</string>
<string name="rileylink_scanner_selected_device">선택됨</string>
<string name="rileylink_scanner_title">RileyLink 스캔</string>
<string name="rileylink_scanner_ble_not_supported">BLE(블루투스 저전력) 지원되지 않음</string>
<string name="rileylink_scanner_ble_not_enabled">블루투스가 활성화되지 않았습니다.</string>
<string name="location_not_found_title">위치가 활성화되지 않았습니다.</string>
<string name="location_not_found_message">최신 스마트폰에서 블루투스 검색이 작동하려면 위치가 활성화되어 있어야합니다. AAPS는 당신의 위치를 추적하지 않으며 페어링에 성공한 후 비활성화 할 수 있습니다.</string>
<string name="location_yes">활성화</string>
<string name="location_no">아니오</string>
<string name="rileylink_scanner_scanning">스캔중</string>
<string name="rileylink_scanner_scanning_finished">스캔 완료</string>
<string name="rileylink_scanner_scanning_error">스캔 에러: %1$d</string>
<!-- RL Status Page -->
<string name="rileylink_settings_tab1">설정</string>
<string name="rileylink_settings_tab2">이력</string>
<string name="rileylink_status">RileyLink 상태</string>
<string name="medtronic_pump_status">펌프 상태</string>
<string name="title_activity_rileylink_settings">RileyLink 설정</string>
<string name="rileylink_title">RileyLink</string>
<string name="rileylink_configured_address">구성된 주소</string>
<string name="rileylink_connected_device">연결된 장치</string>
<string name="rileylink_connection_status">연결상태</string>
<string name="rileylink_connection_error">연결에러</string>
<string name="rileylink_device">장치</string>
<string name="rileylink_device_type">장치타입</string>
<string name="rileylink_device_model">장치모델</string>
<string name="rileylink_last_used_frequency">최근사용 주파수</string>
<string name="rileylink_last_device_contact">최근장치연결</string>
<string name="rileylink_firmware_version">RL 펌웨어</string>
<!-- RL State -->
<string name="rileylink_state_bt_init">블루투스 초기화중...</string>
<string name="rileylink_state_bt_error">블루투스 에러</string>
<string name="rileylink_state_bt_ready">블루투스 준비</string>
<string name="rileylink_state_not_started">시작되지 않았습니다.</string>
<string name="rileylink_state_rl_init">RileyLink 초기화…</string>
<string name="rileylink_state_rl_error">RileyLink 에러</string>
<string name="rileylink_state_pc_tune_up">RileyLink 와 펌프 튜닝</string>
<string name="rileylink_state_pc_error">펌프 연결 문제</string>
<string name="rileylink_state_connected">연결됨</string>
<!-- RL Errors -->
<string name="rileylink_error_not_rl">장치가 RileyLink가 아닙니다.</string>
<string name="rileylink_error_unreachable">RileyLink에 연결할 수 없음</string>
<string name="rileylink_error_bt_disabled">블루투스 비활성</string>
<string name="rileylink_error_no_bt_adapter">블루투스 어댑터 없음</string>
<string name="rileylink_error_tuneup_failed">튜닝 실패</string>
<string name="rileylink_error_pump_unreachable">펌프에 연결할 수 없습니다.</string>
<string name="rileylink_error_pod_unreachable">포드에 연결할 수 없습니다.</string>
<string name="rileylink_error_address_not_set_short">설정되지 않음</string>
<!-- RL Target Device -->
<string name="rileylink_target_device_medtronic">메드트로닉 펌프</string>
<string name="rileylink_target_device_omnipod">옴니포드</string>
<!-- MDT Errors -->
<string name="medtronic_errors">에러</string>
<string name="medtronic_error_serial_not_set">일련번호 # 설정되지 않음</string>
<string name="medtronic_error_serial_invalid">일련번호 # 유효하지않음.</string>
<string name="medtronic_error_pump_type_not_set">펌프 타입이 설정되지 않았습니다.</string>
<string name="medtronic_error_pump_type_invalid">지원되지 않는 펌프 타입입니다.</string>
<string name="medtronic_error_pump_frequency_not_set">펌프 주파수가 설정되지 않았습니다.</string>
<string name="medtronic_error_pump_frequency_invalid">지원되지 않는 펌프 주파수입니다.</string>
<string name="medtronic_error_rileylink_address_invalid">RileyLink 주소가 유효하지 않습니다.</string>
<string name="medtronic_error_pump_type_set_differs_from_detected">감지된 펌프타입이 설정된 타입과 다릅니다.</string>
<string name="medtronic_error_pump_basal_profiles_not_enabled">펌프에서 Basal 프로파일이 활성화되지 않았습니다.</string>
<string name="medtronic_error_pump_incorrect_basal_profile_selected">펌프에 설정된 Basal 프로파일이 올바르지 않습니다 (STD 이어야 합니다).</string>
<string name="medtronic_error_pump_wrong_tbr_type_set">펌프에 잘못된 TBR 유형이 설정되었습니다 (절대값이어야합니다).</string>
<string name="medtronic_error_pump_wrong_max_bolus_set">펌프에 잘못된 최대 Bolus가 설정되었습니다 (%1$.2f 이어야 합니다.).</string>
<string name="medtronic_error_pump_wrong_max_basal_set">펌프에 잘못된 최대 Basal이 설정되었습니다 (%1$.2f 이어야 합니다).</string>
<string name="medtronic_error_operation_not_possible_no_configuration">작업이 불가능합니다.\n\n이 작업을 사용하려면 우선 메드트로닉 펌프를 구성해야합니다.</string>
<string name="medtronic_error_pump_24h_time_change_requested">24시간 이상의 시간 변경이 요청되었습니다.</string>
<!-- MDT History -->
<string name="medtronic_history_group_basal">Basal</string>
<string name="medtronic_history_group_configuration">환경설정</string>
<string name="medtronic_history_group_notification">알림</string>
<string name="medtronic_history_group_statistic">통계</string>
<string name="medtronic_history_group_unknown">알수없음</string>
<string name="medtronic_history_group_all">모든</string>
<string name="medtronic_pump_history">메드트로닉 펌프 이력</string>
<!-- MDT Pump Status -->
<string name="medtronic_pump_status_never_contacted">연결되지 않은</string>
<string name="medtronic_pump_status_waking_up">시작중</string>
<string name="medtronic_pump_status_error_comm">연결오류</string>
<string name="medtronic_pump_status_timeout_comm">연결시간초과</string>
<string name="medtronic_pump_status_pump_unreachable">펌프에 연결할 수 없습니다</string>
<string name="medtronic_pump_status_invalid_config">유효하지 않은 설정</string>
<string name="medtronic_pump_status_active">활성</string>
<string name="medtronic_pump_status_sleeping">대기</string>
<!-- <string name="medtronic_cmd_profile_not_set">Remote Basal profile setting is not supported. Please modify Basal profile on your pump manually.</string> -->
<string name="medtronic_cmd_cancel_bolus_not_supported">펌프에서 이미 설정된 Bolus를 취소했습니다. 메드트로닉 펌프는 취소를 지원하지 않으므로 수동으로 취소해야합니다. (여전히 취소하길 원한다면) 펌프를 일시 중단 모드로 전환 한 다음 다시 시작하십시오. 다음 업데이트시 (5 분 이내에) 변경 사항을 적용합니다.</string>
<string name="medtronic_cmd_cant_read_tbr">현재 TBR을 읽을 수 없습니다.</string>
<string name="medtronic_cmd_cant_cancel_tbr_stop_op">현재 TBR을 취소할 수 없습니다. 작동을 중지합니다.</string>
<string name="medtronic_cmd_set_profile_pattern_overflow">Basal이 너무 높아서 프로파일 설정이 실패했습니다 : %1$s</string>
<string name="medtronic_cmd_bolus_could_not_be_delivered">Bolus가 주입되지 않았습니다.</string>
<string name="medtronic_cmd_bolus_could_not_be_delivered_no_insulin">사용 가능한 인슐린양(%1$.2f)이 요청된 Bolus(%2$.2f)보다 작기 때문에 Bolus를 주입할 수 없습니다.</string>
<string name="medtronic_cmd_tbr_could_not_be_delivered">TBR 이 설정될 수 없습니다.</string>
<string name="medtronic_cmd_cant_cancel_tbr">현재 TBR을 취소할 수 없습니다.</string>
<string name="medtronic_cmd_basal_profile_could_not_be_set">Basal 프로파일을 설정할 수 없습니다.</string>
<string name="medtronic_cmd_basal_profile_not_set_is_same">동일한 Basal 프로파일이라 다시 설정하지 않습니다.</string>
<string name="medtronic_cmd_desc_get_history">이력 받기 - 페이지 %1$d (%2$d/16)</string>
<string name="medtronic_cmd_desc_get_history_request">이력 받기 - 페이지 %1$d</string>
<string name="medtronic_cmd_desc_get_time">펌프 시간 받기</string>
<string name="medtronic_cmd_desc_get_settings">설정 받기</string>
<string name="medtronic_cmd_desc_get_model">펌프 모델 받기</string>
<string name="medtronic_cmd_desc_get_basal_profile">Basal 프로파일 받기</string>
<string name="medtronic_cmd_desc_set_basal_profile">Basal 프로파일 설정</string>
<string name="medtronic_cmd_desc_get_tbr">임시 Basal 받기</string>
<string name="medtronic_cmd_desc_set_tbr">임시 Basal 설정</string>
<string name="medtronic_cmd_desc_set_bolus">Bolus 설정</string>
<string name="insulinFromCob"><![CDATA[COB 인슐린: <font color=\'%1$s\'>%2$.1fg %3$.2fU</font>]]></string>
<string name="bolusconstraintappliedwarning"><![CDATA[<font color=\'%1$s\'>Bolus 제약 적용: %2$.2fU 에서 %3$.2fU</font>]]></string>
<string name="slowabsorptiondetected"><![CDATA[<font color=\'%1$s\'>!!!!! 느린 탄수화물 흡수 감지: %2$d%% of time. 계산을 다시 확인하십시오. COB를 과대하게 측정하여 더 많은 인슐린이 주입될 수 있습니다 !!!!!</font>]]></string>
<string name="reservoirvalue">%1$.0f / %2$d U</string>
<string name="partialboluswizard">Bolus 마법사 결과의 이 부분 주입[%]</string>
<string name="deliverpartofboluswizard">Bolus 마법사는 계산을 수행하지만 계산된 인슐린의 이 부분만 주입됩니다. SMB 알고리즘에 유용합니다.</string>
<string name="loading">불러오는 중…</string>
<string name="snooze">스누즈</string>
<plurals name="objective_days">
<item quantity="other">%1$d 일</item>
</plurals>

View file

@ -33,7 +33,6 @@
<string name="description_smb">Naujausias algoritmas patyrusiems vartotojams</string>
<string name="description_overview">Rodo dabartinę Ciklo būseną ir pagrindinių veiksmų mygtukus</string>
<string name="description_persistent_notification">Rodo atsinaujinančius pranešimus su trumpa Ciklo veiklos apžvalga</string>
<string name="description_profile_local">Nustato profilį, kuris veikia neprisijungus prie interneto.</string>
<string name="description_profile_nightscout">Nustato profilį, kuris įvestas Nightscout puslapyje</string>
<string name="description_profile_simple">Nustato profilį su vieninteliu laiko bloku.</string>
<string name="description_pump_combo">Accu-Chek Combo pompos integracija, reikalinga Ruffy programėlė</string>
@ -41,15 +40,12 @@
<string name="description_pump_dana_r_korean">DANA Diabecare R pompos, skirtos vietinei P. Korėjos rinkai, integracija</string>
<string name="description_pump_dana_r_v2">DANA Diabecare R pompos su atnaujinta programine-aparatine įranga integracija</string>
<string name="description_pump_dana_rs">DANA Diabecare RS pompos integracija</string>
<string name="description_pump_insight">Accu-Chek Insight pompos integracija, kuriai reikalinga SightRemote programėlė</string>
<string name="description_pump_mdi">Integracija žmonėms, naudojantiems insulino injektorius</string>
<string name="description_pump_virtual">Integracija pompoms, kurios dar neturi reikalingo valdiklio (Atviras Ciklas)</string>
<string name="description_sensitivity_aaps">Jautrumas insulinui apskaičiuojamas taip pat kaip ir Oref0, tačiau jūs galite nustatyti, koks praeities laikotarpis bus naudojamas. Minimalus angliavandenių įsisavinimo greitis apskaičiuojamas remiantis maksimaliu angliavandenių įsisavinimo greičiu, kuris įvestas Nustatymuose.</string>
<string name="description_sensitivity_oref0">Jautrumas insulinui apskaičiuojamas remiantis praėjusių 24 val. duomenimis, o (neįsisavinti) angliavandeniai neįtraukiami į skaičiavimus praėjus Nustatymuose nurodytam laikui.</string>
<string name="description_sensitivity_oref1">Jautrumas insulinui apskaičiuojamas remiantis praėjusių 8 val. duomenimis, o (neįsisavinti) angliavandeniai neįtraukiami į skaičiavimus praėjus Nustatymuose nurodytam laikui. Įskiepis taip pat įskaičiuoja NM (neįrašytą maistą).</string>
<string name="description_sensitivity_weighted_average">Jautrumas insulinui apskaičiuojamas kaip nuokrypių svertinis vidurkis. Naujausių nuokrypių svoris yra didesnis. Minimalus angliavandenių įsisavinimo greitis apskaičiuojamas iš maksimalaus angliavandenių įsisavinimo greičio, kuris nurodytas Nustatymuose. Šis algoritmas greičiausiai aptinka pasikeitusį jautrumą insulinui.</string>
<string name="description_source_dexcom_g5">Gauti kraujo gliukozės reikšmes iš modifikuotos Dexcom G5 programėlės.</string>
<string name="description_source_dexcom_g6">Gauti kraujo gliukozės reikšmes iš modifikuotos Dexcom G6 programėlės.</string>
<string name="description_source_eversense">Gauti kraujo gliukozės vertes iš modifikuotos Eversense programėlės.</string>
<string name="description_source_glimp">Gauti kraujo gliukozės vertes iš Glimp.</string>
<string name="description_source_mm640g">Gauti kraujo gliukozės vertes iš 600SeriesAndroidUploader.</string>
@ -73,7 +69,6 @@
<string name="treatments_carbs_label_string">Angliavandeniai:</string>
<string name="treatments_iob_label_string">AIO:</string>
<string name="sms_iob">AIO:</string>
<string name="treatments_activity_string">Aktyvumas:</string>
<string name="treatments_iobtotal_label_string">Visas AIO:</string>
<string name="treatments_iobactivitytotal_label_string">Bendro AIO aktyvumas:</string>
<string name="tempbasals_realduration_label_string">Trukmė:</string>
@ -322,19 +317,6 @@
<string name="overview_bolusprogress_goingtodeliver">Bus suleista %1$.2fvv</string>
<string name="objectives_0_objective">Nustatymai vizualizacijai, monitoringui ir bazės verčių bei koeficientų analizei</string>
<string name="objectives_0_gate">Įsitikinkite, kad gliukozės duomenys rodomi Nightscout, o pompos insulino duomenys yra įkelti</string>
<string name="objectives_1_objective">Aktyvuojamas atviras ciklas</string>
<string name="objectives_1_gate">Keletą dienų praleiskite atvirojo ciklo (Open Loop) režime, rankiniu būdu tvirtindami kuo daugiau siūlomų bazės pakeitimų. Nustatykite ir naudokite laikinus bei numatytuosiuos tikslus (pvz.: fiziniam aktyvumui ir hipo korekcijai angliavandeniais)</string>
<string name="objectives_2_objective">Perpraskite atvirojo ciklo veikimą bei laikinos bazės rekomendacijas</string>
<string name="objectives_2_gate">Remdamiesi šia patirtimi, nuspręskite, koks turėtų būti maksimalus bazės dydis bei įveskite jį pompoje ir programos Nustatymuose</string>
<string name="objectives_3_objective">Pradėkite uždaro ciklo (Closed Loop) režimą su pompos stabdymu esant žemai gliukozei</string>
<string name="objectives_3_gate">Keletą dienų praleiskite uždaro ciklo režime su kuo mažiau hipoglikemijų, kai IK = 0</string>
<string name="objectives_4_objective">Koreguokite savo uždarąjį ciklą po truputį didindami maks IK ir mažindami tikslinę gliukozės vertę</string>
<string name="objectives_4_gate">Praleiskite keletą dienų ir bent vieną naktį be hipoglikemijos aliarmų</string>
<string name="objectives_5_objective">Jei reikia, paderinkite valandines bazės vertes bei pagrindinius parametrus ir įgalinkite Autosens funkciją.</string>
<string name="objectives_5_gate">1 savaitę praleiskite sėkmingai naudodami uždarąjį ciklą dienos metu ir įvesdami visus valgomus angliavandenius.</string>
<string name="objectives_6_objective">Dienos metu aktyvuokite papildomas funkcijas, tokias kaip pažangioji maisto skaičiuoklė (AMA Advanced Meal Assist)</string>
<string name="objectives_7_objective">Dienos metu aktyvuokite papildomas funkcijas, tokias kaip SMB (Super Mikro Bolusas).</string>
<string name="objectives_7_gate">Norėdami, kad SMB veiktų gerai, turite perskaityti dokumentaciją ir padidinti max IK! Pradžiai patartina skaičiuoti taip: maxIK=(didžiausia valandinė bazė x 3) + vidutinis bolusas.</string>
<string name="youareonallowedlimit">Pasiekėte leistiną ribą</string>
<string name="noprofileselected">Nepasirinktas profilis</string>
<string name="smscommunicator_loophasbeendisabled">Ciklas buvo išjungtas</string>
@ -566,7 +548,6 @@
<string name="enablesuperbolus">Įgalinti superbolusus skaičiuoklėje</string>
<string name="enablesuperbolus_summary">Įgalina superbolusų naudojimą insulino skaičiuoklėje. Nenaudokite, kol nesuprantate, ką superbolus funkcija atlieka. NAUDODAMI AKLAI GALITE PERDOZUOTI INSULINO!</string>
<string name="show_statuslights">Pradžios ekrane rodyti spalvotus indikatorius</string>
<string name="show_statuslights_summary">Pradžios ekrane rodyti spalvotus indikatorius adatos, insulino, sensoriaus naudojimo trukmei bei baterijos įkrovimo lygiui.</string>
<string name="statuslights_res_warning">Įspėjimo apie žemą rezervuaro lygį riba [U]</string>
<string name="statuslights_res_critical">Įspėjimo apie kritiškai žemą rezervuaro lygį riba [U]</string>
<string name="statuslights_bat_warning">Įspėjimo apie žemą baterijos įkrovimo lygį riba [%%]</string>
@ -724,8 +705,6 @@
<string name="bluetooth">Bluetooth</string>
<string name="btwatchdog_title">BT Watchdog</string>
<string name="btwatchdog_summary">Vienai sekundei išjungia telefono bluetooth, jei ryšys su pompa nutrūksta. Gali būti veiksminga kai kuriems telefonų modeliams, turintiems BT problemų.</string>
<string name="DexcomG5">Dexcom G5 programėlė (modifikuota)</string>
<string name="DexcomG6">Dexcom G6 programėlė (modifikuota)</string>
<string name="eversense">Eversense programėlė (modifikuota)</string>
<string name="dexcomg5_nsupload_title">Perduoti KG duomenis į NS</string>
<string name="bgsource_upload">KG duomenų perdavimo nustatymai</string>
@ -795,49 +774,7 @@
<string name="combo_reservoir_level_insufficient_for_bolus">Rezervuare nepakanka insulino bolusui</string>
<string name="extendedbolusdeliveryerror">Ištęstinio boluso suleidimo klaida</string>
<string name="insightpump_shortname">Sight</string>
<string name="insightpump">Insight pompa</string>
<string name="status_no_colon">Būsena</string>
<string name="changed">Pakeista</string>
<string name="pump_stopped_uppercase">POMPA SUSTABDYTA</string>
<string name="status_updated">Būsena atnaujinta</string>
<string name="ago">prieš</string>
<string name="with">su</string>
<string name="insight_active_tbr">Aktyvi laikina bazė</string>
<string name="insight_min_left">liko minučių</string>
<string name="log_book">Žurnalas</string>
<string name="insight_last_completed_action">Paskutinis užbaigtas veiksmas</string>
<string name="insight_min">min.</string>
<string name="insight_remaining_over">liko virš</string>
<string name="insight_total_with">iš viso</string>
<string name="insight_upfront_with">iš anksto</string>
<string name="insight_stay_always_connected">Likti prisijungus visada</string>
<string name="insight_history_idle">NEVEIKLUMAS</string>
<string name="insight_history_syncing">SINCHRONIZAVIMAS</string>
<string name="insight_history_busy">UŽIMTA</string>
<string name="insight_history_synced">SINCHRONIZUOTA</string>
<string name="insight_startup_uppercase">PALEISTIS</string>
<string name="insight_needs">būtina</string>
<string name="insight_not_connected_to_companion_app">Nesate prisijungę prie lydinčios programėlės!</string>
<string name="insight_companion_app_not_installed">Lydinčioji programėlė neinstaliuota!</string>
<string name="insight_incompatible_compantion_app_we_need_version">Nesuderinama lydinčioji programėlė, reikalinga versija</string>
<string name="insight_unknown">Nežinoma</string>
<string name="insight_waiting_for_code">Laukiama kodo patvirtinimo</string>
<string name="insight_code_rejected">Kodas atmestas</string>
<string name="insight_app_binding">Sujungiama su programa</string>
<string name="insight_not_authorized">Neautorizuota</string>
<string name="insight_incompatible">Nesuderinama</string>
<string name="second">sek.</string>
<string name="minute">min.</string>
<string name="hour">val.</string>
<string name="day">diena</string>
<string name="week">savaitė</string>
<string name="time_plural">sek.</string>
<string name="insight_keepalive_format_string">%1$ds baigiasi %2$s</string>
<string name="insight_keep_alive_status">Aktyvumo statusas</string>
<string name="statistics">Statistika</string>
<string name="connect_preemptively">Išankstinis sujungimas</string>
<string name="automatically_connect_when">Siekiant išvengti vėlavimo, automatiškai susijungti su pompa, kai AndroidAPS atidaroma, nelaukiant komandos pompai.</string>
<string name="not_recommended_due_to_battery_drain">Nerekomenduojama dėl greito akumuliatoriaus iškrovimo</string>
<string name="enablesmbalways">Leisti SMB visada</string>
<string name="enablesmbalways_summary">Leisti SMB visada, nepriklausomai nuo bolusų. Įmanoma tik naudojant patikimų, filtruotų KG duomenų šaltinį, pvz.: Dexcom G5</string>
<string name="enablesmbaftercarbs">Leisti SMB po angliavandenių įvedimo</string>
@ -938,8 +875,6 @@
<string name="reset">atstatyti</string>
<string name="waitingfortimesynchronization">Laukiama laiko sinchronizavimo (%1$d sek.)</string>
<string name="loopdisconnectedfor">Nesujungta (%1$d min.)</string>
<string name="automatic_careportal_events">Automatiniai priežiūros įvykiai</string>
<string name="automatically_upload_insulin_cannula_and_battery_changes_to_nightscout">Automatiškai įkelti insulino, kanulės ir baterijos pakeitimus ir pompos aliarmus į Nightscout</string>
<string name="openapssmb_maxiob_title">Maksimalus bendras AIO, kurio negali viršyti OpenAPS [U]</string>
<string name="openapssmb_maxiob_summary">Ši vertė yra vadinama Maks AIO OpenAPS kontekste\nOpenAPS nepridės daugiau insulino, jei dabartinis AIO yra didesnis už šią vertę</string>
<string name="pump_stopped">Pompa sustabdyta</string>
@ -990,12 +925,10 @@
<string name="adjustprofileinns">Pakeitimai turi būti daromi NS</string>
<string name="exitwizard">Praleisti sąrankos vedlį</string>
<string name="setupwizard_loop_description">Paspauskite mygtuką žemiau, norėdami leisti AndroidAPS patarti/atlikti bazės pakeitimus</string>
<string name="enableobjectives">Aktyvuoti Tikslus</string>
<string name="apssetup">Konfigūruoti DKS įskiepį</string>
<string name="sensitivitysetup">Konfigūruoti Jautrumo nustatymo įskiepį</string>
<string name="setupwizard_sensitivity_description">Jautrumo įskiepis yra naudojamas jautrumo aptikimui ir AAO skaičiavimams. Daugiau informacijos:</string>
<string name="setupwizard_sensitivity_url">https://github.com/MilosKozak/AndroidAPS/wiki/Sensitivity-detection-and-COB</string>
<string name="nsclientinfotext">NSClient palaiko ryšį su Nightscout. Jūs galite praleisti šią dalį dabar, bet negalėsite pradėti mokymosi programos, kol nenustatysite ryšio su NS.</string>
<string name="diawarning">Atminkite: DKS profiliams reikia IVT bent 5 val. IVT = 5 - 6 val DKS profilyje atitinka IVT = 3 val sename (pompos terapijos) insulino profilyje.</string>
<string name="bgsourcesetup">Sukonfigūruoti KG šaltinį</string>
<string name="setupwizard_profile_description">Prašome pasirinkti profilį. Jei pacientas yra vaikas, turite naudoti NS profilį. Jei niekas neseka jūsų Nightscout platformoje, tada geriau pasirinkti Vietinį profilį. Atminkite, kad čia Jūs tik pasirenkate profilio šaltinį. Norėdami jį aktyvuoti, turite atlikti Profilio keitimą</string>
@ -1048,7 +981,6 @@
<string name="error_adding_treatment_title">Terapijos duomenys nepilni</string>
<string name="maintenance_settings">Serviso nustatymai</string>
<string name="maintenance_email">El. paštas</string>
<string name="invalid_email_message">Neteisingas el. pašto adresas</string>
<string name="maintenance_amount">Siunčiamų įrašų skaičius</string>
<string name="maintenance">Servisas</string>
<string name="maintenance_shortname">Serv</string>
@ -1109,7 +1041,6 @@
<string name="manufacturing_date">Pagaminimo data</string>
<string name="delete_pairing">Panaikinti sąsają</string>
<string name="pairing_information">Sąsajos informacija</string>
<string name="refreh_status">Atnaujinti būseną</string>
<string name="start_pump">Paleisti pompą</string>
<string name="stop_pump">Sustabdyti pompą</string>
<string name="operating_mode">Darbinis režimas</string>
@ -1176,8 +1107,6 @@
<!-- RL Status Page -->
<string name="rileylink_settings_tab1">Parametrai</string>
<string name="rileylink_settings_tab2">Istorija</string>
<string name="rileylink_settings_tab3">Prietaisas</string>
<string name="rileylink_settings_title">RileyLink parametrai</string>
<string name="title_activity_rileylink_settings">RileyLink parametrai</string>
<!-- RL State -->
<!-- RL Errors -->

View file

@ -18,6 +18,7 @@
<string name="danar_bt_name_title">DanaR Bluetooth apparaat</string>
<string name="ns_sync_use_absolute_title">Gebruik altijd absolute basale waarden</string>
<string name="alert_dialog_storage_permission_text">Herstart je telefoon of herstart AndroidAPS vanuit de systeem instellingen a. u. b. \nanders zal AndroidAPS geen logboek hebben (Belangrijk om te controleren of de algoritmes correct werken)!</string>
<string name="alert_dialog_permission_battery_optimization_failed">Dit apparaat lijkt geen ondersteuning te bieden voor whitelisten voor batterijoptimalisatie - u kunt prestatieproblemen ervaren.</string>
<string name="description_actions">Een aantal knoppen voor snelle toegang tot algemene functies</string>
<string name="description_careportal">Voer geavanceerde logboekitems in.</string>
<string name="description_config_builder">Gebruikt om actieve plugins te configureren</string>
@ -33,23 +34,20 @@
<string name="description_smb">Meest recente algoritme voor gevorderde gebruikers</string>
<string name="description_overview">Toont de huidige Loop-status en knoppen voor meest gebruikte acties</string>
<string name="description_persistent_notification">Toont een permanente melding met een beknopt overzicht van hetgeen de Loop momenteel doet</string>
<string name="description_profile_local">Definieer een profiel dat offline beschikbaar is.</string>
<string name="description_profile_nightscout">Geeft het profiel dat je hebt gedefinieerd in Nightscout</string>
<string name="description_profile_simple">Definieer een profiel met slechts één tijdsblok.</string>
<string name="description_profile_local">Maak een profiel dat je offline kunt gebruiken.</string>
<string name="description_profile_nightscout">Gebruik profiel(en) die je hebt aangemaakt in Nightscout</string>
<string name="description_profile_simple">Maak een profiel met slechts één tijdsblok.</string>
<string name="description_pump_combo">Pomp integratie voor Accu-Chek Combo pompen, vereist dat ruffy geïnstalleerd is</string>
<string name="description_pump_dana_r">Pomp integratie voor DANA Diabecare R pompen</string>
<string name="description_pump_dana_r_korean">Pomp integratie voor inheemse DANA Diabecare R pompen</string>
<string name="description_pump_dana_r_v2">Pomp integratie voor DANA Diabecare R pompen met geupgrade firmware</string>
<string name="description_pump_dana_rs">Pomp integratie voor DANA Diabecare RS pompen</string>
<string name="description_pump_insight">Pomp integratie voor Accu-Chek Insight pompen, vereist dat SightRemote geïnstalleerd is</string>
<string name="description_pump_mdi">Pomp integratie voor mensen met pen-therapie (meerdere dagelijkse injecties)</string>
<string name="description_pump_virtual">Pomp integratie voor pompen, waar nog geen driver voor is (Open Loop)</string>
<string name="description_sensitivity_aaps">Gevoeligheid wordt berekend op dezelfde manier als Oref0, maar u kunt een tijdframe naar het verleden specificeren. Minimale koolhydraat absorptie is berekend op basis van max koolhydraat absorptie tijd van de voorkeursinstellingen.</string>
<string name="description_sensitivity_oref0">Gevoeligheid is berekend op basis van 24h gegevens uit het verleden en koolhydraten (indien niet geabsorbeerd) worden hiervan afgehaald, na de duur die is opgegeven in de voorkeursinstellingen.</string>
<string name="description_sensitivity_oref1">Gevoeligheid is berekend op basis van 8h gegevens uit het verleden en koolhydraten (indien niet geabsorbeerd) worden hiervan afgehaald, na de duur die is opgegeven in de voorkeursinstellingen. De plugin berekent ook UAM.</string>
<string name="description_sensitivity_weighted_average">Gevoeligheid wordt berekend als een gewogen gemiddelde van afwijkingen. Nieuwere afwijkingen wegen hierbij zwaarder. Minimale koolhydraat absorptie is berekend op basis van de max koolhydraat absorptie tijd uit de voorkeursinstellingen. Dit algoritme is de snelste in het volgen van wijzigingen van de gevoeligheid.</string>
<string name="description_source_dexcom_g5">Ontvang BG waardes van de aangepaste Dexcom G5 app.</string>
<string name="description_source_dexcom_g6">Ontvang BG waardes van de aangepaste Dexcom G6 app.</string>
<string name="description_source_eversense">Ontvang BG waardes van de aangepaste Eversense app.</string>
<string name="description_source_glimp">Ontvang BG waardes van Glimp.</string>
<string name="description_source_mm640g">Ontvang BG waardes van 600SeriesAndroidUploader.</string>
@ -73,7 +71,6 @@
<string name="treatments_carbs_label_string">Koolhydraten:</string>
<string name="treatments_iob_label_string">IOB:</string>
<string name="sms_iob">IOB:</string>
<string name="treatments_activity_string">Activiteit:</string>
<string name="treatments_iobtotal_label_string">Totale IOB:</string>
<string name="treatments_iobactivitytotal_label_string">Totale IOB activiteit:</string>
<string name="tempbasals_realduration_label_string">Tijdsduur:</string>
@ -146,7 +143,6 @@
<string name="openapsma_lastenact_label">Laatste uitvoering</string>
<string name="ok">OK</string>
<string name="cancel">Annuleer</string>
<string name="close">Sluiten</string>
<string name="noapsselected">GEEN APS GESELECTEERD OF TOEGEKEND RESULTAAT</string>
<string name="safety">Veiligheid</string>
<string name="openapsma_disabled">Plugin is gedeactiveerd</string>
@ -323,20 +319,6 @@
<string name="overview_bolusprogress_goingtodeliver">Er worden %1$.2fE toegediend</string>
<string name="objectives_0_objective">Opzetten van visualisatie en monitoring en analyzeren van basaal en ratio\'s</string>
<string name="objectives_0_gate">Controleren van beschikbaarheid BG en insuline pomp data op Nightscout</string>
<string name="objectives_1_objective">Starten met de Open Loop modus</string>
<string name="objectives_1_gate">In Open Loop modus werken voor enkele dagen en handmatig meermaals tijdelijke basaal instellen.
Stel in en gebruik tijdelijk en standaard tijdelijke streefdoelen (bv. bij sporten of koolhydraten inname bij hypo)</string>
<string name="objectives_2_objective">De Open Loop begrijpen, inclusief de voorgestelde tijdelijke basaalstanden</string>
<string name="objectives_2_gate">Gebaseerd op deze ervaringen beslissen wat het maximale basaal mag zijn en dit in de pomp instellen</string>
<string name="objectives_3_objective">Starten met closed Loop met bescherming tegen lage BG</string>
<string name="objectives_3_gate">In closed Loop werken met een max. IOB = 0 gedurende enkele dagen met een beperkt aantal lage BG</string>
<string name="objectives_4_objective">Inregelen van de closed loop, verhoog de max IOB boven 0 en laat gelijdelijk het streef BG dalen</string>
<string name="objectives_4_gate">Verhoog max. IOB en test enkele dagen als ook minstens 1 nacht zonder een laag BG alarm voordat je jouw streef BG verlaagt</string>
<string name="objectives_5_objective">Pas het basaal en de ratios aan indien nodig, activeer hierna de auto-sens optie</string>
<string name="objectives_5_gate">Gedurende 1 week succesvol closed loop met invoer van koolhydraten</string>
<string name="objectives_6_objective">Activeren van extra functies overdag zoals AMA</string>
<string name="objectives_7_objective">Activeren van extra functies overdag zoals SMB</string>
<string name="objectives_7_gate">Lees de wiki en verhoog maxIOB om SMB goed werkend te krijgen. Een goed begin is maxIOB=gemiddelde maaltijdbolus + 3 x max dagelijkse basaal</string>
<string name="youareonallowedlimit">Limiet bereikt</string>
<string name="noprofileselected">Geen profiel geselecteerd</string>
<string name="smscommunicator_loophasbeendisabled">Loop was uitgeschakeld</string>
@ -570,7 +552,6 @@ Stel in en gebruik tijdelijk en standaard tijdelijke streefdoelen (bv. bij sport
<string name="enablesuperbolus">Activeer superbolus in de wizard</string>
<string name="enablesuperbolus_summary">Activeer de superbolus functie in de wizard. Activeer deze niet tot je begrijpt wat dit doet. OVERDOSIS IS MOGELIJK BIJ BLINDELINGS GEBRUIK!</string>
<string name="show_statuslights">Toon statusindicatoren op startscherm</string>
<string name="show_statuslights_summary">Statusindicatoren inschakelen voor cage, iage, sage, reservoir en batterijniveau op het beginscherm.</string>
<string name="statuslights_res_warning">Drempel waarschuwing reservoir niveau [E]</string>
<string name="statuslights_res_critical">Drempel alarm reservoir niveau [E]</string>
<string name="statuslights_bat_warning">Drempel waarschuwing batterij niveau [%%]</string>
@ -728,8 +709,6 @@ Stel in en gebruik tijdelijk en standaard tijdelijke streefdoelen (bv. bij sport
<string name="bluetooth">Bluetooth</string>
<string name="btwatchdog_title">BT Watchdog</string>
<string name="btwatchdog_summary">Deactiveert de bluetooth functie van de telefoon gedurende een ogenblik. Dit kan op sommige gsm\'s een vastgelopen bluetooth service verhelpen.</string>
<string name="DexcomG5">DexcomG5 App (aangepast)</string>
<string name="DexcomG6">DexcomG6 App (aangepast)</string>
<string name="eversense">Eversense App (aangepast)</string>
<string name="dexcomg5_nsupload_title">Upload BG gegevens naar NS</string>
<string name="bgsource_upload">BG upload instellingen</string>
@ -799,50 +778,8 @@ Stel in en gebruik tijdelijk en standaard tijdelijke streefdoelen (bv. bij sport
<string name="combo_reservoir_level_insufficient_for_bolus">Niet genoeg insuline aanwezig in reservoir voor de bolus</string>
<string name="extendedbolusdeliveryerror">Vertraagde bolus toedieningsfout</string>
<string name="insightpump_shortname">Insight</string>
<string name="insightpump">Insight pomp</string>
<string name="status_no_colon">Status</string>
<string name="changed">Verwisseld</string>
<string name="pump_stopped_uppercase">Pomp Gestopt</string>
<string name="status_updated">Status vernieuwd</string>
<string name="ago">voorbij</string>
<string name="with">met</string>
<string name="insight_active_tbr">Actieve TBR</string>
<string name="insight_min_left">resterende minuten</string>
<string name="log_book">Logboek</string>
<string name="insight_last_completed_action">Laatst afgewerkte actie</string>
<string name="insight_min">min</string>
<string name="insight_remaining_over">resterende van</string>
<string name="insight_total_with">totaal</string>
<string name="insight_upfront_with">op voorhand met</string>
<string name="insight_stay_always_connected">Blijf altijd verbonden</string>
<string name="insight_history_idle">Rust</string>
<string name="insight_history_syncing">Synchroniseren</string>
<string name="insight_history_busy">Bezig</string>
<string name="insight_history_synced">Gesynchroniseerd</string>
<string name="insight_startup_uppercase">Opstarten</string>
<string name="insight_needs">benodigd</string>
<string name="insight_not_connected_to_companion_app">Niet verbonden met de Companion app!</string>
<string name="insight_companion_app_not_installed">Companion app lijkt niet geïnstalleerd!</string>
<string name="insight_incompatible_compantion_app_we_need_version">Incompatiebele Companion app, we hebben deze versie nodig</string>
<string name="insight_unknown">Onbekend</string>
<string name="insight_waiting_for_code">Wacht op confirmatie van code</string>
<string name="insight_code_rejected">Code geweigerd</string>
<string name="insight_app_binding">app koppeling</string>
<string name="insight_not_authorized">Niet geautoriseerd</string>
<string name="insight_incompatible">incompatibel</string>
<string name="second">seconde</string>
<string name="minute">minuut</string>
<string name="format_hours">%1$.2f u</string>
<string name="hour">uur</string>
<string name="day">dag</string>
<string name="week">week</string>
<string name="time_plural">s</string>
<string name="insight_keepalive_format_string">%1$ds verloopt %2$s</string>
<string name="insight_keep_alive_status">Keep-alive status</string>
<string name="statistics">Statistieken</string>
<string name="connect_preemptively">Verbind preventief</string>
<string name="automatically_connect_when">Automatische verbinden wanneer AndroidAPS scherm geopend wordt, voordat er een pomp commando wordt uitgevoerd om zo de verbindingsvertraging te verkleinen</string>
<string name="not_recommended_due_to_battery_drain">Niet aanbevolen door hoog batterij verbruik</string>
<string name="enablesmbalways">Activeer SMB altijd</string>
<string name="enablesmbalways_summary">SMB altijd aan onafhankelijk van bolussen. Enkel mogelijk met een BG bron met goed gefilterde data zoals de G5</string>
<string name="enablesmbaftercarbs">Activeer SMB na koolhydraten</string>
@ -946,8 +883,6 @@ Stel in en gebruik tijdelijk en standaard tijdelijke streefdoelen (bv. bij sport
<string name="reset">Reset</string>
<string name="waitingfortimesynchronization">Wachten voor tijdsynchronisatie (%1$d sec)</string>
<string name="loopdisconnectedfor">Verbinding verbroken (%1$d m)</string>
<string name="automatic_careportal_events">Automatische Careportal gebeurtenissen</string>
<string name="automatically_upload_insulin_cannula_and_battery_changes_to_nightscout">Automatische Insuline, infusieset wissels, batterij wissels en pomp alarmen naar NS uploaden</string>
<string name="openapssmb_maxiob_title">Max totaal IOB dat OpenAPS niet kan overschrijden [E]</string>
<string name="openapssmb_maxiob_summary">Deze waarde heet MAX IOB in OpenAPS context\nOpenAPS zal geen extra insuline toedienen als de actuele IOB onderstaande waarde overschreden heeft</string>
<string name="pump_stopped">Pomp gestopt</string>
@ -998,12 +933,11 @@ Stel in en gebruik tijdelijk en standaard tijdelijke streefdoelen (bv. bij sport
<string name="adjustprofileinns">Wijzigingen moeten worden gedaan in Nightscout</string>
<string name="exitwizard">De installatiewizard overslaan</string>
<string name="setupwizard_loop_description">Druk op de knop hieronder om AndroidAPS basaalwijzigingen te laten voorstellen/uitvoeren</string>
<string name="enableobjectives">Inschakelen van Doelen</string>
<string name="apssetup">APS plugin configureren</string>
<string name="sensitivitysetup">Gevoeligheid plugin configureren</string>
<string name="setupwizard_sensitivity_description">Gevoeligheid plugin wordt gebruikt voor de detectie van de gevoeligheid en COB berekening. Voor meer info bezoek:</string>
<string name="setupwizard_sensitivity_url">https://github.com/MilosKozak/AndroidAPS/wiki/Sensitivity-detection-and-COB</string>
<string name="nsclientinfotext">NSClient zorgt voor verbinding met Nightscout. Je kunt dit deel nu overslaan, maar pas het Doel afronden als je het ingesteld hebt.</string>
<string name="nsclientinfotext">NSClient zorgt voor verbinding met Nightscout. Je kunt dit deel nu overslaan, maar pas de Doelen afronden als je het hebt ingesteld.</string>
<string name="diawarning">Onthoud: nieuwe insuline profielen vereisen een minimale DIA van 5 uur. DIA 5 6h op nieuw profiel is gelijk aan DIA 3h op oude insuline profielen.</string>
<string name="bgsourcesetup">BG bron configureren</string>
<string name="setupwizard_profile_description">Kies een bron van het profiel. Als de patiënt een kind is, moet u het NS-profiel gebruiken. Als er niemand is die je volgt op Nightscout, zul je waarschijnlijk een lokaal profiel prefereren. Onthoud dat u alleen de profielbron selecteert. Om het te gebruiken, moet u het activeren door \"Profiel wisselen\" uit te voeren</string>
@ -1056,7 +990,6 @@ Stel in en gebruik tijdelijk en standaard tijdelijke streefdoelen (bv. bij sport
<string name="error_adding_treatment_title">Behandelingen data incompleet</string>
<string name="maintenance_settings">Onderhoudsinstellingen</string>
<string name="maintenance_email">E-mail</string>
<string name="invalid_email_message">Ongeldige e-mail</string>
<string name="maintenance_amount">Aantal Logs om te verzenden</string>
<string name="maintenance">Onderhoud</string>
<string name="maintenance_shortname">ONDH</string>
@ -1118,7 +1051,6 @@ Stel in en gebruik tijdelijk en standaard tijdelijke streefdoelen (bv. bij sport
<string name="manufacturing_date">Fabricage datum</string>
<string name="delete_pairing">Koppeling verwijderen</string>
<string name="pairing_information">Koppelingsinformatie</string>
<string name="refreh_status">Status vernieuwen</string>
<string name="start_pump">Start pomp</string>
<string name="stop_pump">Stop pomp</string>
<string name="operating_mode">Werkingsmodus</string>
@ -1270,6 +1202,7 @@ Stel in en gebruik tijdelijk en standaard tijdelijke streefdoelen (bv. bij sport
<string name="autosenslabel">Gevoeligheid %</string>
<string name="deltacompared">%3$s %1$s %2$s</string>
<string name="deltalabel">BG verschil</string>
<string name="deltalabel_u">BG verschil [%1$s]</string>
<string name="currentlocation">Huidige locatie</string>
<string name="location">Locatie</string>
<string name="latitude_short">Br:</string>
@ -1282,12 +1215,9 @@ Stel in en gebruik tijdelijk en standaard tijdelijke streefdoelen (bv. bij sport
<string name="triggercoblabel">COB</string>
<string name="cobcompared">COB %1$s %2$.0f</string>
<string name="taskname">Taaknaam</string>
<string name="eventname">Gebeurtenisnaam</string>
<string name="edit_short">EDIT</string>
<string name="please_choose_an_action_type">Kies een type actie:</string>
<string name="please_choose_a_trigger_type">Kies een type trigger:</string>
<string name="if_label">Als:</string>
<string name="then_label">Dan:</string>
<string name="triggers">Triggers:</string>
<string name="remove_label">VERWIJDER</string>
<string name="preconditions">Voorwaarden:</string>
@ -1308,7 +1238,6 @@ Stel in en gebruik tijdelijk en standaard tijdelijke streefdoelen (bv. bij sport
<string name="medtronic_pump_frequency_worldwide">Wereldwijd (868 Mhz)</string>
<string name="medtronic_pump_encoding_4b6b_local">Software 4b6b Codering</string>
<string name="medtronic_pump_encoding_4b6b_rileylink">Hardware 4b6b Codering</string>
<string name="rileylink_mac_address">MAC-adres RileyLink</string>
<string name="medtronic_custom_action_wake_and_tune">Ontwaak en maak verbinding</string>
<string name="medtronic_custom_action_clear_bolus_block">Bolus Blok wissen</string>
<string name="medtronic_custom_action_reset_rileylink">Reset RileyLink Configuratie</string>
@ -1320,9 +1249,7 @@ Stel in en gebruik tijdelijk en standaard tijdelijke streefdoelen (bv. bij sport
<string name="rileylink_scanner_scan_scan">SCAN</string>
<string name="rileylink_scanner_scan_stop">STOP</string>
<string name="rileylink_scanner_selected_device">Geselecteerd</string>
<string name="rileylink_scanner_scan">Scan</string>
<string name="rileylink_scanner_title">RileyLink Scan</string>
<string name="rileylink_scanner_scan_menu">Scan voor RileyLink</string>
<string name="rileylink_scanner_ble_not_supported">Bluetooth Lage Energie modus niet ondersteund.</string>
<string name="rileylink_scanner_ble_not_enabled">Bluetooth niet ingeschakeld.</string>
<string name="location_not_found_title">Locatie is niet ingeschakeld</string>
@ -1335,10 +1262,8 @@ Stel in en gebruik tijdelijk en standaard tijdelijke streefdoelen (bv. bij sport
<!-- RL Status Page -->
<string name="rileylink_settings_tab1">Instellingen</string>
<string name="rileylink_settings_tab2">Geschiedenis</string>
<string name="rileylink_settings_tab3">Apparaat</string>
<string name="rileylink_status">RileyLink Status</string>
<string name="medtronic_pump_status">Pompstatus</string>
<string name="rileylink_settings_title">RileyLink Instellingen</string>
<string name="title_activity_rileylink_settings">RileyLink Instellingen</string>
<string name="rileylink_title">RileyLink</string>
<string name="rileylink_configured_address">Geconfigureerd Adres</string>
@ -1403,7 +1328,6 @@ Stel in en gebruik tijdelijk en standaard tijdelijke streefdoelen (bv. bij sport
<string name="medtronic_pump_status_waking_up">Ontwaken</string>
<string name="medtronic_pump_status_error_comm">Communicatiefout</string>
<string name="medtronic_pump_status_timeout_comm">Time-out op de communicatie</string>
<string name="medtronic_pump_status_problem_contacting">Probleem tijdens verbinden met de pomp</string>
<string name="medtronic_pump_status_pump_unreachable">Pomp niet bereikbaar</string>
<string name="medtronic_pump_status_invalid_config">Ongeldige configuratie</string>
<string name="medtronic_pump_status_active">Actief</string>
@ -1414,13 +1338,13 @@ Stel in en gebruik tijdelijk en standaard tijdelijke streefdoelen (bv. bij sport
<string name="medtronic_cmd_cant_cancel_tbr_stop_op">Kan huidige TBR niet annuleren. Bewerking wordt gestopt.</string>
<string name="medtronic_cmd_set_profile_pattern_overflow">Profiel instellen mislukt omdat de volgende patronen een te groot basaal hebben: %1$s</string>
<string name="medtronic_cmd_bolus_could_not_be_delivered">Bolus kon niet worden afgeleverd.</string>
<string name="medtronic_cmd_bolus_could_not_be_delivered_no_insulin">Bolus kon niet worden uitgevoerd omdat de hoeveelheid beschikbare insuline (%1$.2f) niet voldoende is voor de bolus (%2$.2f).</string>
<string name="medtronic_cmd_tbr_could_not_be_delivered">TBR kon niet worden ingesteld.</string>
<string name="medtronic_cmd_cant_cancel_tbr">Kan huidige TBR niet annuleren.</string>
<string name="medtronic_cmd_basal_profile_could_not_be_set">Basaal profiel kon niet worden ingesteld.</string>
<string name="medtronic_cmd_basal_profile_not_set_is_same">Basal profiel is hetzelfde, dus het zal niet opnieuw worden ingesteld.</string>
<string name="medtronic_cmd_desc_get_history">Ophalen Geschiedenis - Pagina %1$d (%2$d/16)</string>
<string name="medtronic_cmd_desc_get_history_request">Ophalen Geschiedenis - Pagina %1$d</string>
<string name="medtronic_cmd_desc_get_history_base">Ophalen Geschiedenis - Pagina %1$d</string>
<string name="medtronic_cmd_desc_get_time">Haal Pomp Tijd op</string>
<string name="medtronic_cmd_desc_get_settings">Ophalen Instellingen</string>
<string name="medtronic_cmd_desc_get_model">Ophalen Pomp Model</string>
@ -1429,12 +1353,14 @@ Stel in en gebruik tijdelijk en standaard tijdelijke streefdoelen (bv. bij sport
<string name="medtronic_cmd_desc_get_tbr">Ophalen Tijdelijke Basaal</string>
<string name="medtronic_cmd_desc_set_tbr">Instellen Tijdelijke Basaal</string>
<string name="medtronic_cmd_desc_set_bolus">Instellen Bolus</string>
<string name="pump_no_connection_h">Geen verbinding gedurende %1$d uur %2$d min</string>
<string name="pump_no_connection_d">Geen verbinding gedurende %1$d dag(en) %2$d uur</string>
<string name="insulinFromCob"><![CDATA[COB insuline: <font color=\'%1$s\'>%2$.1fg %3$.2fU</font>]]></string>
<string name="bolusconstraintappliedwarning"><![CDATA[<font color=\'%1$s\'>Bolus limiet bereikt: %2$.2fU naar %3$.2fU</font>]]></string>
<string name="slowabsorptiondetected"><![CDATA[<font color=\'%1$s\'>!!! Trage koolhydraat absorptie gedetecteerd: %2$d%% van de tijd. Controleer je berekening goed. COB kan sterk afwijken!!!</font> zijn]]></string>
<string name="slowabsorptiondetected"><![CDATA[<font color=\'%1$s\'>!!! Trage koolhydraat absorptie gedetecteerd: %2$d%% van de tijd. Controleer je berekening nogmaals. COB kan zijn overschat waardoor er misschien meer insuline wordt afgegeven!!!</font> zijn]]></string>
<string name="reservoirvalue">%1$.0f / %2$d E</string>
<string name="partialboluswizard">Voer dit deel van het bolus wizard resultaat uit [%]</string>
<string name="deliverpartofboluswizard">Bolus wizard voert de berekening uit maar alleen dit deel van berekende insuline wordt geleverd. Handig in combinatie met het SMB algoritme.</string>
<string name="loading">Bezig met laden...</string>
<string name="snooze">Sluimeren</string>
<plurals name="objective_days">
<item quantity="one">%1$d dag</item>
<item quantity="other">%1$d dag</item>

View file

@ -18,6 +18,7 @@
<string name="danar_bt_name_title">Urządzenie Bluetooth DanaR</string>
<string name="ns_sync_use_absolute_title">Zawsze używaj wartości bezwzględnych bazy</string>
<string name="alert_dialog_storage_permission_text">Proszę uruchomić ponownie telefon lub zrestartować AndroidAPS w ustawieniach systemu telefonu \ninaczej AndroidAPS nie będzie otrzymywał logowań (ważne ze względu na śledzenie i sprawdzanie poprawności działania algorytmów)!</string>
<string name="alert_dialog_permission_battery_optimization_failed">To urządzenie nie obsługuje białej listy optymalizacji baterii - mogą wystąpić problemy z wydajnością.</string>
<string name="description_actions">Niektóre przyciski umożliwiające szybki dostęp do typowych funkcji</string>
<string name="description_careportal">Wprowadź zaawansowane wpisy w dzienniku.</string>
<string name="description_config_builder">Konfiguracja aktywnych modułów systemu</string>
@ -33,7 +34,7 @@
<string name="description_smb">Najnowszy algorytm dla zaawansowanych użytkowników</string>
<string name="description_overview">Wyświetla bieżący stan twojej pętli i przyciski dla większości typowych działań</string>
<string name="description_persistent_notification">Wyświetla bieżące powiadomienia z krótkim omówieniem działania pętli</string>
<string name="description_profile_local">Zdefiniuj profil dostępny offline.</string>
<string name="description_profile_local">Zdefiniuj profil, który jest dostępny offline.</string>
<string name="description_profile_nightscout">Użycie profilu, który zdefiniowałeś w Nightscout</string>
<string name="description_profile_simple">Zdefiniuj profil z tylko jednym blokiem czasowym.</string>
<string name="description_pump_combo">Integracja z pompą Accu-Chek Combo, wymaga zainstalowania sterownika ruffy</string>
@ -41,15 +42,12 @@
<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="description_pump_dana_rs">Integracja z pompą DANA RS Diabecare</string>
<string name="description_pump_insight">Integracja z pompą Accu-Chek Insight, wymaga zainstalowania SightRemote</string>
<string name="description_pump_mdi">Integracja pompy dla pacjentów podających insulinę w formie wielu zastrzyków dziennie</string>
<string name="description_pump_virtual">Integracja z pompami, które nie posiadają jeszcze żadnego sterownika (Open Loop)</string>
<string name="description_sensitivity_aaps">Wrażliwość jest obliczana w taki sam sposób, jak algorytm Oref0, ale możliwe jest podanie okresu z przeszłości. Minimalne wchłanianie węglowodanów jest obliczana na podstawie czasu wchłaniania max carb, określonego w ustawieniu.</string>
<string name="description_sensitivity_oref0">Wrażliwość jest obliczana na podstawie danych z ostatnich 24 godzin, a węglowodany niewchłonięte nie są brane pod uwagę, po czasie określonym w ustawieniach.</string>
<string name="description_sensitivity_oref1">Wrażliwość jest obliczana na podstawie danych z ostatnich 8 godzin, a węglowodany niewchłonięte nie są brane pod uwagę, po czasie określonym w ustawieniach. Wtyczka oblicza również UAM (posiłek nie wprowadzony do AAPS).</string>
<string name="description_sensitivity_weighted_average">Wrażliwość jest obliczana jako średnia ważona z odchyleń. Nowsze wartości mają większą wagę. Minimalne wchłanianie węglowodanów jest obliczana na podstawie czasu wchłaniania max carb, określonego w ustawieniu. Algorytm ten najszybciej śledzi zmiany wrażliwości.</string>
<string name="description_source_dexcom_g5">Pobieraj wartości BG ze zmodyfikowanej aplikacji Dexcom G5.</string>
<string name="description_source_dexcom_g6">Pobieraj wartości BG ze spatchowanej aplikacji Dexcom G6.</string>
<string name="description_source_eversense">Pobieraj wartości BG ze spatchowanej aplikacji Eversense.</string>
<string name="description_source_glimp">Pobieraj wartości BG z Glimp.</string>
<string name="description_source_mm640g">Pobieraj wartości BG z uploadera pomp serii 600.</string>
@ -73,7 +71,6 @@
<string name="treatments_carbs_label_string">Węglow.:</string>
<string name="treatments_iob_label_string">IOB:</string>
<string name="sms_iob">IOB:</string>
<string name="treatments_activity_string">Aktywność:</string>
<string name="treatments_iobtotal_label_string">Całkowita IOB:</string>
<string name="treatments_iobactivitytotal_label_string">Aktywna IOB:</string>
<string name="tempbasals_realduration_label_string">Czas:</string>
@ -146,7 +143,6 @@
<string name="openapsma_lastenact_label">Ostatnie działanie</string>
<string name="ok">OK</string>
<string name="cancel">Anuluj</string>
<string name="close">Zamknij</string>
<string name="noapsselected">NIE WYBRANO APS LUB NIE UZYSKANO WYNIKU</string>
<string name="safety">Zabezpieczenia</string>
<string name="openapsma_disabled">Wtyczka jest wyłączona</string>
@ -323,19 +319,19 @@
<string name="overview_bolusprogress_goingtodeliver">Zamierzam dostarczyć %1$.2fU</string>
<string name="objectives_0_objective">Konfiguracja wizualizacji i monitorowania, analiza dawek i wartości bazowych</string>
<string name="objectives_0_gate">Sprawdź czy BG (pomiary cukru) są dostępne w Nightscout, i dane pompy insulinowej są ładowane</string>
<string name="objectives_1_objective">Uruchamiam otwartą pętle (OpenLoop)</string>
<string name="objectives_1_gate">Używaj Otwartą pętle (OpenLoop) przez kilka dni, i ręcznie wykonaj wiele dawek bazowych tymczasowych (np. podczas aktywności fizycznej lub leczenia hipoglikemii węglowodanami)</string>
<string name="objectives_2_objective">Zrozumienie działania otwartej pętli, wraz z jej rekomendacjami dawek tymczasowych</string>
<string name="objectives_2_gate">Na podstawie tych doświadczeń zdecyduj jaka maksymalna baza powinna być ustawiona, i wprowadź ją w pompie i w ustawieniach AAPS</string>
<string name="objectives_3_objective">Rozpoczęcie zamknięcia pętli z zawieszeniem podawania bazy przy niskim poziomie cukru</string>
<string name="objectives_3_gate">Używaj zamkniętej pętli (Closed Loop) z max IOB (maksymalną dawką aktywnej insuliny) = 0 bez zbyt wielu incydentów niedocukrzeń</string>
<string name="objectives_4_objective">Dostrajanie zamkniętej pętli, podniesienie wartości max IOB powyżej 0 i stopniowe obniżanie docelowego poziomu cukru (BG target)</string>
<string name="objectives_4_gate">Używaj pętli przez kilka dni i przynajmniej jedną noc bez żadnego alarmu niskiego poziomu, przed obniżeniem docelowego poziomu cukru (BG target)</string>
<string name="objectives_5_objective">Dostosuj bazę i wartości parametrów, i wtedy uruchom funkcję autosens</string>
<string name="objectives_5_gate">1 tydzień sukcesu w działaniu pętli w ciągu dnia z regularnym wprowadzaniem spożywanych węglowodanów (węglow.)</string>
<string name="objectives_6_objective">Uruchomienie do użytku dziennego dodatkowych funkcji, jak AMA (zaawansowany asystent posiłku)</string>
<string name="objectives_7_objective">Uruchomienie do użytku dziennego dodatkowych funkcji, jak SMB (Super Mikro Bolusy)</string>
<string name="objectives_7_gate">Musisz przeczytać wiki i zwiększyć maxIOB, aby SMB działało dobrze! Dobrym początkiem jest max10 = średni bolus + 3 x maks. dzienna dawka bazowa</string>
<string name="objectives_openloop_objective">Rozpoczęcie na trybie otwartej pętli (open loop)</string>
<string name="objectives_openloop_gate">Działaj w trybie Otwartej Pętli przez kilka dni i ręcznie wprowadzaj wiele ustawień bazy tymczasowej. Ustaw i używaj tymczasowych i domyślnych tymczasowych celów (np. do aktywności fizycznej lub węglowodanów w leczeniu hipoglikemii)</string>
<string name="objectives_maxbasal_objective">Zrozumienie działania otwartej pętli, wraz z jej rekomendacjami dawek tymczasowych</string>
<string name="objectives_maxbasal_gate">Na podstawie tych doświadczeń zdecyduj jaka maksymalna baza powinna być ustawiona, i wprowadź ją w pompie i w ustawieniach AAPS</string>
<string name="objectives_maxiobzero_objective">Rozpoczęcie zamknięcia pętli z zawieszeniem podawania bazy przy niskim poziomie cukru</string>
<string name="objectives_maxiobzero_gate">Używaj zamkniętej pętli (Closed Loop) z max IOB (maksymalną dawką aktywnej insuliny) = 0 bez zbyt wielu incydentów niedocukrzeń</string>
<string name="objectives_maxiob_objective">Dostrajanie zamkniętej pętli, podniesienie wartości max IOB powyżej 0 i stopniowe obniżanie docelowego poziomu cukru (BG target)</string>
<string name="objectives_maxiob_gate">Używaj pętli przez kilka dni i przynajmniej jedną noc bez żadnego alarmu niskiego poziomu, przed obniżeniem docelowego poziomu cukru</string>
<string name="objectives_autosens_objective">Dostosuj bazę i wartości parametrów, i wtedy uruchom funkcję autosens</string>
<string name="objectives_autosens_gate">1 tydzień sukcesu w działaniu pętli w ciągu dnia z regularnym wprowadzaniem spożywanych węglowodanów (węglow.)</string>
<string name="objectives_ama_objective">Uruchomienie do użytku dziennego dodatkowych funkcji, jak AMA (zaawansowany asystent posiłku)</string>
<string name="objectives_smb_objective">Uruchomienie do użytku dziennego dodatkowych funkcji, jak SMB (Super Mikro Bolusy)</string>
<string name="objectives_smb_gate">Musisz przeczytać wiki i zwiększyć maxIOB, aby SMB działało dobrze! Dobrym początkiem jest maxIOB = średni bolus + 3 x maks. dzienna dawka bazowa</string>
<string name="youareonallowedlimit">Osiągnąłeś dozwolony limit</string>
<string name="noprofileselected">Nie wybrano profilu</string>
<string name="smscommunicator_loophasbeendisabled">Pętla (Loop) została wyłączona</string>
@ -569,7 +565,10 @@
<string name="enablesuperbolus">Zezwalaj na superbolus w kalkulatorze</string>
<string name="enablesuperbolus_summary">Włącz funkcję Superbolus w kalkulatorze. Nie uruchamiaj, dopóki nie nauczysz się jak ta funkcja działa. MOŻESZ DOPROWADZIĆ DO PRZEDAWKOWANIA INSULINY JEŻELI UŻYJESZ TEJ FUNKCJI NIE POSIADAJĄC ODPOWIEDNIEJ WIEDZY!</string>
<string name="show_statuslights">Pokaż diody stanu na ekranie głównym</string>
<string name="show_statuslights_summary">Włącz diody stanu dla cage, iage, sage, rezerwuar i poziom baterii na ekranie głównym.</string>
<string name="show_statuslights_easy">Pokaż diody stanu na ekranie głównym</string>
<string name="show_statuslights_easy_summary">Włącz diody stanu dla cage, iage, sage, rezerwuar i poziom baterii na ekranie głównym.</string>
<string name="show_statuslights_extended">Pokaż diody stanu na ekranie głównym</string>
<string name="show_statuslights_extended_summary">Włącz diody stanu dla cage, iage, sage, rezerwuar i poziom baterii na ekranie głównym.</string>
<string name="statuslights_res_warning">Próg ostrzeżenia o poziomie zbiornika [U]</string>
<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>
@ -728,8 +727,6 @@
<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>
<string name="DexcomG5">DexcomG5 App (patched)</string>
<string name="DexcomG6">Apka Dexcom G6 (spatchowana)</string>
<string name="eversense">Apka Eversense (spatchowana)</string>
<string name="dexcomg5_nsupload_title">Przekaż dane BG do NS</string>
<string name="bgsource_upload">Ustawienia wysyłania wartości BG (poziomów cukru)</string>
@ -799,50 +796,8 @@
<string name="combo_reservoir_level_insufficient_for_bolus">Za mało insuliny na bolus pozostało w zbiorniku</string>
<string name="extendedbolusdeliveryerror">Błąd dostarczania bolusa przedłużonego</string>
<string name="insightpump_shortname">Sight</string>
<string name="insightpump">Pompa Insight</string>
<string name="status_no_colon">Status</string>
<string name="changed">Zmieniono</string>
<string name="pump_stopped_uppercase">POMPA ZATRZYMANA</string>
<string name="status_updated">Status uaktualniony</string>
<string name="ago">temu</string>
<string name="with">z</string>
<string name="insight_active_tbr">Aktywny TBR</string>
<string name="insight_min_left">min pozostało</string>
<string name="log_book">Dziennik logów</string>
<string name="insight_last_completed_action">Ostatnie wykonane polecenie</string>
<string name="insight_min">min</string>
<string name="insight_remaining_over">pozostaje powyżej</string>
<string name="insight_total_with">razem z</string>
<string name="insight_upfront_with">z góry z</string>
<string name="insight_stay_always_connected">Pozostań zawsze połączony</string>
<string name="insight_history_idle">BEZCZYNNY</string>
<string name="insight_history_syncing">SYNCHRONIZUJE</string>
<string name="insight_history_busy">ZAJĘTY</string>
<string name="insight_history_synced">ZSYNCHRONIZOWANY</string>
<string name="insight_startup_uppercase">URUCHOMIENIE</string>
<string name="insight_needs">wymagania</string>
<string name="insight_not_connected_to_companion_app">Brak połączenia z aplikacją towarzyszącą!</string>
<string name="insight_companion_app_not_installed">Aplikacja towarzysząca prawdopodobnie nie jest zainstalowana!</string>
<string name="insight_incompatible_compantion_app_we_need_version">Niezgodna aplikacja towarzysząca, potrzebujemy wersji</string>
<string name="insight_unknown">Nieznany</string>
<string name="insight_waiting_for_code">Oczekuję na potwierdzenie kodu</string>
<string name="insight_code_rejected">Kod odrzucony</string>
<string name="insight_app_binding">Wiązanie aplikacji</string>
<string name="insight_not_authorized">Nieautoryzowany</string>
<string name="insight_incompatible">Niekompatybilny</string>
<string name="second">sekunda</string>
<string name="minute">minuta</string>
<string name="format_hours">%1$.2f h</string>
<string name="hour">godzina</string>
<string name="day">dzień</string>
<string name="week">tydzień</string>
<string name="time_plural">s</string>
<string name="insight_keepalive_format_string">%1$ds wygasa %2$s</string>
<string name="insight_keep_alive_status">Status czuwania</string>
<string name="statistics">Statystyki</string>
<string name="connect_preemptively">Połącz z wyprzedzeniem</string>
<string name="automatically_connect_when">Automatycznie łącz się, gdy okna AndroidAPS są otwarte, zanim zostanie wydane polecenie do pompy, aby zmniejszyć opóźnienie w połączeniu</string>
<string name="not_recommended_due_to_battery_drain">Niezalecane ze względu na szybkie rozładowywanie baterii</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>
@ -946,8 +901,6 @@
<string name="reset">ponowne uruchomienie</string>
<string name="waitingfortimesynchronization">Oczekiwanie na synchronizację czasu (%1$d sec)</string>
<string name="loopdisconnectedfor">Odłączony (%1$d m)</string>
<string name="automatic_careportal_events">Automatyczne działania PortaluOpieki</string>
<string name="automatically_upload_insulin_cannula_and_battery_changes_to_nightscout">Automatycznie przesyłaj zmianę zasobnika, wkłucia i baterii oraz alarmy pompy do Nightscout</string>
<string name="openapssmb_maxiob_title">Maksymalna, całkowita IOB, której OpenAPS nie może przekroczyć [U]</string>
<string name="openapssmb_maxiob_summary">Ta wartość jest nazywana Max IOB w OpenAPS\nOpenAPS nie poda więcej insuliny jeżeli obecna IOB jest większa niż ta wartość</string>
<string name="pump_stopped">Pompa zatrzymana</string>
@ -998,12 +951,11 @@
<string name="adjustprofileinns">Zmiany muszą być dokonane w NS</string>
<string name="exitwizard">Pomiń Kreatora konfiguracji</string>
<string name="setupwizard_loop_description">Naciśnij przycisk poniżej, by umożliwić AndroidAPS wprowadzenie zmian insuliny bazowej</string>
<string name="enableobjectives">Uruchom Zadania</string>
<string name="apssetup">Skonfiguruj wtyczkę APS</string>
<string name="sensitivitysetup">Skonfiguruj wtyczkę wrażliwości</string>
<string name="setupwizard_sensitivity_description">Wtyczka wrażliwości używana jest w celu określenia wrażliwości i kalkulacji COB. Więcej informacji na:</string>
<string name="setupwizard_sensitivity_url">https://github.com/MilosKozak/AndroidAPS/wiki/Sensitivity-detection-and-COB</string>
<string name="nsclientinfotext">NSClient obsługuje połączenia z Nightscout. Można teraz pominąć tę część, ale nie będziesz mógł wykonać Zadań, dopóki nie dokończysz tej konfiguracji.</string>
<string name="nsclientinfotext">NSClient obsługuje połączenia z Nightscout. Można teraz pominąć tę część, ale nie będziesz mógł wykonać Zadań (programu do nauki), dopóki nie dokończysz tej konfiguracji.</string>
<string name="diawarning">Pamiętaj: nowe profile insuliny wymagają ustawienia DIA (czas działania insuliny) powyżej 5h. DIA między 5-6h na nowym profilu odpowiada 3h DIA na starych profilach insuliny.</string>
<string name="bgsourcesetup">Skonfiguruj źródło BG</string>
<string name="setupwizard_profile_description">Proszę wybrać źródło profilu. Jeśli pacjent jest dzieckiem, należy skorzystać z profilu Nightscout. Jeśli nikt nie obserwuje twojej terapii przez Nightscout, prawdopodobnie wolisz profil Lokalny. Przypomnienie - wybierasz tylko źródło profilu. Musisz go później aktywować za pomocą \"Przełącznika profilu\"</string>
@ -1056,7 +1008,6 @@
<string name="error_adding_treatment_title">Niekompletne dane leczenie</string>
<string name="maintenance_settings">Ustawienia Konserwacji</string>
<string name="maintenance_email">Email</string>
<string name="invalid_email_message">Nieprawidłowy adres e-mail</string>
<string name="maintenance_amount">Liczba logów do wysłania</string>
<string name="maintenance">Konserwacja</string>
<string name="maintenance_shortname">MAINT</string>
@ -1118,7 +1069,6 @@
<string name="manufacturing_date">Data produkcji</string>
<string name="delete_pairing">Usuń parowanie</string>
<string name="pairing_information">Informacja o sparowaniu</string>
<string name="refreh_status">Odśwież Status</string>
<string name="start_pump">Uruchom pompę</string>
<string name="stop_pump">Zatrzymaj pompę</string>
<string name="operating_mode">Tryb działania</string>
@ -1270,6 +1220,7 @@
<string name="autosenslabel">Autosens %</string>
<string name="deltacompared">%3$s %1$s %2$s</string>
<string name="deltalabel">Różnica poziomu cukru</string>
<string name="deltalabel_u">Różnica poziomu cukru [%1$s]</string>
<string name="currentlocation">Obecna lokalizacja</string>
<string name="location">Lokalizacja</string>
<string name="latitude_short">Szerokość:</string>
@ -1282,12 +1233,9 @@
<string name="triggercoblabel">Węgle</string>
<string name="cobcompared">Węgle %1$s %2$.0f</string>
<string name="taskname">Nazwa zadania</string>
<string name="eventname">Nazwa zdarzenia</string>
<string name="edit_short">EDYTUJ</string>
<string name="please_choose_an_action_type">Proszę wybrać typ akcji:</string>
<string name="please_choose_a_trigger_type">Proszę wybrać typ wyzwalacza:</string>
<string name="if_label">Jeżeli:</string>
<string name="then_label">To:</string>
<string name="triggers">Wyzwalacz:</string>
<string name="remove_label">USUŃ</string>
<string name="preconditions">Warunki wstępne:</string>
@ -1308,7 +1256,6 @@
<string name="medtronic_pump_frequency_worldwide">Reszta świata (868 Mhz)</string>
<string name="medtronic_pump_encoding_4b6b_local">Kodowanie oprogramowania 4b6b</string>
<string name="medtronic_pump_encoding_4b6b_rileylink">Kodowanie urządzenia 4b6b</string>
<string name="rileylink_mac_address">Adres MAC urządzenia RileyLink</string>
<string name="medtronic_custom_action_wake_and_tune">Wzbudź i dostrój</string>
<string name="medtronic_custom_action_clear_bolus_block">Wyczyść blok bolusa</string>
<string name="medtronic_custom_action_reset_rileylink">Przywróć konfigurację RileyLink</string>
@ -1320,9 +1267,7 @@
<string name="rileylink_scanner_scan_scan">SKANUJ</string>
<string name="rileylink_scanner_scan_stop">ZATRZYMAJ</string>
<string name="rileylink_scanner_selected_device">Wybrany</string>
<string name="rileylink_scanner_scan">Skanuj</string>
<string name="rileylink_scanner_title">Skan RileyLink</string>
<string name="rileylink_scanner_scan_menu">Szukaj RileyLink</string>
<string name="rileylink_scanner_ble_not_supported">Bluetooth Low Energy nie obsługiwany.</string>
<string name="rileylink_scanner_ble_not_enabled">Bluetooth nie uruchomiony.</string>
<string name="location_not_found_title">Lokalizacja nie jest uruchomiona</string>
@ -1335,10 +1280,8 @@
<!-- RL Status Page -->
<string name="rileylink_settings_tab1">Ustawienia</string>
<string name="rileylink_settings_tab2">Historia</string>
<string name="rileylink_settings_tab3">Urządzenie</string>
<string name="rileylink_status">Stan RileyLink</string>
<string name="medtronic_pump_status">Stan pompy</string>
<string name="rileylink_settings_title">Ustawienia RileyLink</string>
<string name="title_activity_rileylink_settings">Ustawienia RileyLink</string>
<string name="rileylink_title">RileyLink</string>
<string name="rileylink_configured_address">Ustawiony adres</string>
@ -1403,7 +1346,6 @@
<string name="medtronic_pump_status_waking_up">Wybudzanie</string>
<string name="medtronic_pump_status_error_comm">Błąd komunikacji</string>
<string name="medtronic_pump_status_timeout_comm">Przekroczony limit czasu połączenia</string>
<string name="medtronic_pump_status_problem_contacting">Problem z połączeniem z pompą</string>
<string name="medtronic_pump_status_pump_unreachable">Pompa nieosiągalna</string>
<string name="medtronic_pump_status_invalid_config">Nieprawidłowe ustawienia</string>
<string name="medtronic_pump_status_active">Aktywna</string>
@ -1421,7 +1363,6 @@
<string name="medtronic_cmd_basal_profile_not_set_is_same">Profil bazy jest taki sam, więc nie ustawiono ponownie.</string>
<string name="medtronic_cmd_desc_get_history">Pobierz historię - strona %1$d (%2$d/16)</string>
<string name="medtronic_cmd_desc_get_history_request">Pobierz historię - strona %1$d</string>
<string name="medtronic_cmd_desc_get_history_base">Pobierz historię - strona %1$d</string>
<string name="medtronic_cmd_desc_get_time">Pobierz czas pompy</string>
<string name="medtronic_cmd_desc_get_settings">Pobierz ustawienia</string>
<string name="medtronic_cmd_desc_get_model">Pobierz model pompy</string>
@ -1430,12 +1371,36 @@
<string name="medtronic_cmd_desc_get_tbr">Pobierz tymczasową dawkę bazową</string>
<string name="medtronic_cmd_desc_set_tbr">Ustaw tymczasową dawkę bazową</string>
<string name="medtronic_cmd_desc_set_bolus">Ustaw bolus</string>
<string name="pump_no_connection_h">Brak połączenia przez %1$d godzin %2$d min</string>
<string name="pump_no_connection_d">Brak połączenia przez %1$d dni %2$d godzin</string>
<string name="insulinFromCob"><![CDATA[Insulina COB: <font color=\'%1$s\'>%2$.1fg %3$.2fU</font>]]></string>
<string name="bolusconstraintappliedwarning"><![CDATA[<font color=\'%1$s\'>Wprowadzono ograniczenie bolusa: %2$.2fU to %3$.2fU</font>]]></string>
<string name="slowabsorptiondetected"><![CDATA[<font color=\'%1$s\'>!!!!! Wykryto powolne wchłanianie węglowodanów: %2$d%% czasu. Sprawdź ponownie swoje obliczenia. COB mogą się znacznie różnić !!!!!</font>]]></string>
<string name="slowabsorptiondetected"><![CDATA[<font color=\'%1$s\'>!!!!! Wykryto powolne wchłanianie węglowodanów: %2$d%% czasu. Sprawdź ponownie swoje obliczenia. COB mogły być przeszacowane przez co mogło być podane zbyt dużo insuliny !!!!!</font>]]></string>
<string name="reservoirvalue">%1$.0f / %2$d U</string>
<string name="partialboluswizard">Dostarcz tą część dawki insuliny z wyniku kalkulatora bolusa [%]</string>
<string name="deliverpartofboluswizard">Kreator bolusa wykonuje obliczenia, ale tylko ta część obliczonej dawki insuliny jest dostarczana. Pomocne z algorytmem SMB.</string>
<string name="loading">Wczytuję...</string>
<string name="snooze">Wycisz</string>
<string name="accomplished">Wykonane: %1$s</string>
<string name="objectives_usage_objective">Naucz się jak zarządzać AndroidAPS</string>
<string name="objectives_usage_gate">Przeprowadź różne działania w AndroidAPS</string>
<string name="objectives_useprofileswitch">Ustaw profil 90% na 10 min (naciśnij dłużej nazwę profilu na ekranie głównym)</string>
<string name="objectives_usedisconnectpump">Symuluj prysznic. Rozłącz pompę na 1 godzinę (naciśnij dłużej przycisk Otwarta Pętla na ekranie głównym)</string>
<string name="objectives_usereconnectpump">... i połącz się ponownie w ten sam sposób</string>
<string name="objectives_usetemptarget">Utwórz własny cel tymczasowy z czasem trwania 10 min (przyciśnij dłużej przycisk z Twoją nazwą profilu)</string>
<string name="objectives_useactions">W menu konfiguracji uruchom wtyczkę Akcje, zrób ją widoczną i wyświetl jej zawartość w górnym menu</string>
<string name="objectives_useloop">Wyświetl zawartość wtyczki Pętla (Loop)</string>
<string name="objectives_usescale">Użyj funkcji skalowania przez dłuższe dotknięcie wykresu glikemii</string>
<string name="objectives_button_enter">Wprowadź</string>
<string name="enter_code_obtained_from_developers_to_bypass_the_rest_of_objectives">Wprowadź kod otrzymany od programistów by pominąć resztę zadań</string>
<string name="codeaccepted">Kod przyjęty</string>
<string name="codeinvalid">Kod nieprawidłowy</string>
<string name="objectives_exam_objective">Potwierdź swoje umiejętności</string>
<string name="objectives_exam_gate">Ucz się i odpowiedz poprawnie na pytania</string>
<string name="answerdisabledto">Odpowiadanie wyłączone na: %1$s</string>
<string name="wronganswer">Nieprawidłowa odpowiedź!</string>
<string name="unfinshed_button">Następne nieukończone</string>
<string name="close">Zamknij</string>
<string name="requestcode">Kod żadania: %1$s</string>
<string name="objectives_hint">(sprawdź wszystkie poprawne odpowiedzi)</string>
<plurals name="objective_days">
<item quantity="one">%1$d dzień</item>
<item quantity="few">%1$d dni</item>

Some files were not shown because too many files have changed in this diff Show more