diff --git a/Common/FeatureFlags.swift b/Common/FeatureFlags.swift
index 636d99f1ee..b2f0953ee9 100644
--- a/Common/FeatureFlags.swift
+++ b/Common/FeatureFlags.swift
@@ -26,7 +26,7 @@ struct FeatureFlagConfiguration: Decodable {
let observeHealthKitCarbSamplesFromOtherApps: Bool
let observeHealthKitDoseSamplesFromOtherApps: Bool
let observeHealthKitGlucoseSamplesFromOtherApps: Bool
- let remoteOverridesEnabled: Bool
+ let remoteCommandsEnabled: Bool
let predictedGlucoseChartClampEnabled: Bool
let scenariosEnabled: Bool
let sensitivityOverridesEnabled: Bool
@@ -37,6 +37,7 @@ struct FeatureFlagConfiguration: Decodable {
let usePositiveMomentumAndRCForManualBoluses: Bool
let dynamicCarbAbsorptionEnabled: Bool
let adultChildInsulinModelSelectionEnabled: Bool
+ let profileExpirationSettingsViewEnabled: Bool
fileprivate init() {
@@ -160,10 +161,10 @@ struct FeatureFlagConfiguration: Decodable {
#endif
// Swift compiler config is inverse, since the default state is enabled.
- #if REMOTE_OVERRIDES_DISABLED
- self.remoteOverridesEnabled = false
+ #if REMOTE_COMMANDS_DISABLED || REMOTE_OVERRIDES_DISABLED //REMOTE_OVERRIDES_DISABLED: backwards compatibility of Loop 3 & prior
+ self.remoteCommandsEnabled = false
#else
- self.remoteOverridesEnabled = true
+ self.remoteCommandsEnabled = true
#endif
#if SCENARIOS_ENABLED
@@ -212,6 +213,13 @@ struct FeatureFlagConfiguration: Decodable {
#endif
self.dynamicCarbAbsorptionEnabled = true
+
+ // ProfileExpirationSettingsView is inverse, since the default state is enabled.
+ #if PROFILE_EXPIRATION_SETTINGS_VIEW_DISABLED
+ self.profileExpirationSettingsViewEnabled = false
+ #else
+ self.profileExpirationSettingsViewEnabled = true
+ #endif
}
}
@@ -232,7 +240,7 @@ extension FeatureFlagConfiguration : CustomDebugStringConvertible {
"* observeHealthKitDoseSamplesFromOtherApps: \(observeHealthKitDoseSamplesFromOtherApps)",
"* observeHealthKitGlucoseSamplesFromOtherApps: \(observeHealthKitGlucoseSamplesFromOtherApps)",
"* predictedGlucoseChartClampEnabled: \(predictedGlucoseChartClampEnabled)",
- "* remoteOverridesEnabled: \(remoteOverridesEnabled)",
+ "* remoteCommandsEnabled: \(remoteCommandsEnabled)",
"* scenariosEnabled: \(scenariosEnabled)",
"* sensitivityOverridesEnabled: \(sensitivityOverridesEnabled)",
"* showEventualBloodGlucoseOnWatchEnabled: \(showEventualBloodGlucoseOnWatchEnabled)",
@@ -244,7 +252,8 @@ extension FeatureFlagConfiguration : CustomDebugStringConvertible {
"* simpleBolusCalculatorEnabled: \(simpleBolusCalculatorEnabled)",
"* usePositiveMomentumAndRCForManualBoluses: \(usePositiveMomentumAndRCForManualBoluses)",
"* dynamicCarbAbsorptionEnabled: \(dynamicCarbAbsorptionEnabled)",
- "* adultChildInsulinModelSelectionEnabled: \(adultChildInsulinModelSelectionEnabled)"
+ "* adultChildInsulinModelSelectionEnabled: \(adultChildInsulinModelSelectionEnabled)",
+ "* profileExpirationSettingsViewEnabled: \(profileExpirationSettingsViewEnabled)"
].joined(separator: "\n")
}
}
diff --git a/Common/ar.lproj/Intents.strings b/Common/ar.lproj/Intents.strings
new file mode 100644
index 0000000000..69202aa99c
--- /dev/null
+++ b/Common/ar.lproj/Intents.strings
@@ -0,0 +1,36 @@
+/* (No Comment) */
+"9KhaIS" = "I've set the preset";
+
+/* (No Comment) */
+"80eo5o" = "Add Carb Entry";
+
+/* (No Comment) */
+"b085BW" = "I wasn't able to set the preset.";
+
+/* (No Comment) */
+"I4OZy8" = "Enable Override Preset";
+
+/* (No Comment) */
+"lYMuWV" = "Override Name";
+
+/* (No Comment) */
+"nDKAmn" = "What's the name of the override you'd like to set?";
+
+/* (No Comment) */
+"OcNxIj" = "Add Carb Entry";
+
+/* (No Comment) */
+"oLQSsJ" = "Enable '${overrideName}' Override Preset";
+
+/* (No Comment) */
+"XNNmtH" = "Enable preset in Loop";
+
+/* (No Comment) */
+"yBzwCL" = "Override Selection";
+
+/* (No Comment) */
+"yc02Yq" = "Add a carb entry to Loop";
+
+/* (No Comment) */
+"ZZ3mtM" = "Enable an override preset in Loop";
+
diff --git a/Common/ar.lproj/Localizable.strings b/Common/ar.lproj/Localizable.strings
new file mode 100644
index 0000000000..e0fb9dff1b
--- /dev/null
+++ b/Common/ar.lproj/Localizable.strings
@@ -0,0 +1,24 @@
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v%2$@";
+
+/* Title of the user activity for adding carbs */
+"Add Carb Entry" = "Add Carb Entry";
+
+/* The short unit display string for decibles */
+"dB" = "dB";
+
+/* The short unit display string for grams */
+"g" = "g";
+
+/* The short unit display string for milligrams of glucose per decilter */
+"mg/dL" = "mg/dL";
+
+/* The short unit display string for millimoles of glucose per liter */
+"mmol/L" = "mmol/L";
+
+/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
+"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
+
+/* The short unit display string for international units of insulin */
+"U" = "U";
+
diff --git a/Common/da.lproj/Intents.strings b/Common/da.lproj/Intents.strings
index a901bd953b..7fdba3c551 100644
--- a/Common/da.lproj/Intents.strings
+++ b/Common/da.lproj/Intents.strings
@@ -1,18 +1,36 @@
+/* (No Comment) */
+"9KhaIS" = "Jeg har indstillet forudindstillingen";
+
/* (No Comment) */
"80eo5o" = "Tilføj kulhydrater";
+/* (No Comment) */
+"b085BW" = "Jeg var ikke i stand til at indstille forudindstillingen.";
+
+/* (No Comment) */
+"I4OZy8" = "Aktiver forudindstilling for Override";
+
+/* (No Comment) */
+"lYMuWV" = "Override navn";
+
+/* (No Comment) */
+"nDKAmn" = "Hvad er navnet på den Override, du vil angive?";
+
/* (No Comment) */
"OcNxIj" = "Tilføj kulhydrater";
/* (No Comment) */
-"yc02Yq" = "Tilføj kulhydrater til Loop.";
+"oLQSsJ" = "Aktiver \"${overrideName}\" Override forudindstilling";
+
+/* (No Comment) */
+"XNNmtH" = "Aktiver forudindstilling i Loop";
+
+/* (No Comment) */
+"yBzwCL" = "Override valg";
+
+/* (No Comment) */
+"yc02Yq" = "Tilføj kulhydrater til Loop";
+
+/* (No Comment) */
+"ZZ3mtM" = "Aktivere en forudindstilling for Override i Loop";
-"9KhaIS" = "I've set the preset";
-"I4OZy8" = "Enable Override Preset";
-"XNNmtH" = "Enable preset in Loop";
-"ZZ3mtM" = "Enable an override preset in Loop";
-"b085BW" = "I wasn't able to set the preset.";
-"lYMuWV" = "Override Name";
-"nDKAmn" = "What's the name of the override you'd like to set?";
-"oLQSsJ" = "Enable '${overrideName}' Override Preset";
-"yBzwCL" = "Override Selection";
diff --git a/Common/da.lproj/Localizable.strings b/Common/da.lproj/Localizable.strings
index d19cbd7249..05492ad924 100644
--- a/Common/da.lproj/Localizable.strings
+++ b/Common/da.lproj/Localizable.strings
@@ -4,6 +4,9 @@
/* Title of the user activity for adding carbs */
"Add Carb Entry" = "Tilføj kulhydrater";
+/* Lesson subtitle */
+"Computes the percentage of glucose measurements within a specified range" = "Beregner procentdelen af blodsukkermålinger inden for et specificeret interval";
+
/* Title of the button to begin lesson execution */
"Continue" = "Fortsæt";
@@ -14,7 +17,7 @@
"g" = "g";
/* Placeholder for upper range entry */
-"Maximum" = "Maximum";
+"Maximum" = "Maksimum";
/* The short unit display string for milligrams of glucose per decilter */
"mg/dL" = "mg/dL";
@@ -26,7 +29,7 @@
"mmol/L" = "mmol/L";
/* Lesson title */
-"Modal Day" = "Modal Dag";
+"Modal Day" = "Modal-dag";
/* Lesson result text for no data */
"No data available" = "Ingen data tilgængelige";
@@ -38,16 +41,16 @@
"Range" = "Interval";
/* Title of config entry */
-"Start Date" = "Start Dato";
+"Start Date" = "Startdato";
/* Lesson title */
-"Time in Range" = "Tme in Range";
+"Time in Range" = "Tid inden for korrektionsområde";
/* The short unit display string for international units of insulin */
"U" = "E";
/* Lesson subtitle */
-"Visualizes the most frequent glucose values by time of day" = "Visualiserer de hyppigste blodsukker værdier fordelt på dagen";
+"Visualizes the most frequent glucose values by time of day" = "Visualiserer de hyppigste blodsukkerværdier fordelt på dagen";
/* Unit string for a count of calendar weeks */
"Weeks" = "Uger";
diff --git a/Common/de.lproj/Intents.strings b/Common/de.lproj/Intents.strings
index cb4bd9c6fb..e80f0d1f67 100644
--- a/Common/de.lproj/Intents.strings
+++ b/Common/de.lproj/Intents.strings
@@ -14,7 +14,7 @@
"lYMuWV" = "Voreinstellungs-Name";
/* (No Comment) */
-"nDKAmn" = "Welche Voreinstellung möchtest Du aktivieren?";
+"nDKAmn" = "Welche Voreinstellung möchten Sie aktivieren?";
/* (No Comment) */
"OcNxIj" = "KH-Eintrag hinzufügen";
diff --git a/Common/es.lproj/Intents.strings b/Common/es.lproj/Intents.strings
index d7f678f91c..39dd81562a 100644
--- a/Common/es.lproj/Intents.strings
+++ b/Common/es.lproj/Intents.strings
@@ -1,18 +1,36 @@
-/* INIntentTitle */
-"80eo5o" = "Agregar Registro de Carbs";
+/* (No Comment) */
+"9KhaIS" = "He establecido el ajuste";
-/* INIntentParameterCombinationTitle */
-"OcNxIj" = "Agregar Registro de Carbs";
+/* (No Comment) */
+"80eo5o" = "Agregar Registro de Carbs";
-/* INIntentDescription */
-"yc02Yq" = "Agregar registro de carbs a Loop";
+/* (No Comment) */
+"b085BW" = "I wasn't able to set the preset.";
-"9KhaIS" = "I've set the preset";
+/* (No Comment) */
"I4OZy8" = "Enable Override Preset";
-"XNNmtH" = "Enable preset in Loop";
-"ZZ3mtM" = "Enable an override preset in Loop";
-"b085BW" = "I wasn't able to set the preset.";
+
+/* (No Comment) */
"lYMuWV" = "Override Name";
+
+/* (No Comment) */
"nDKAmn" = "What's the name of the override you'd like to set?";
+
+/* (No Comment) */
+"OcNxIj" = "Agregar Registro de Carbs";
+
+/* (No Comment) */
"oLQSsJ" = "Enable '${overrideName}' Override Preset";
+
+/* (No Comment) */
+"XNNmtH" = "Enable preset in Loop";
+
+/* (No Comment) */
"yBzwCL" = "Override Selection";
+
+/* (No Comment) */
+"yc02Yq" = "Agregar registro de carbs a Loop";
+
+/* (No Comment) */
+"ZZ3mtM" = "Enable an override preset in Loop";
+
diff --git a/Common/es.lproj/Localizable.strings b/Common/es.lproj/Localizable.strings
index edde7c378c..2517bb2aa1 100644
--- a/Common/es.lproj/Localizable.strings
+++ b/Common/es.lproj/Localizable.strings
@@ -7,18 +7,33 @@
/* Lesson subtitle */
"Computes the percentage of glucose measurements within a specified range" = "Calcula el porcentaje de medidas de glucosa entre una gama especificada";
+/* Title of the button to begin lesson execution */
+"Continue" = "Continuar";
+
/* The short unit display string for decibles */
"dB" = "dB";
/* The short unit display string for grams */
"g" = "g";
+/* Placeholder for upper range entry */
+"Maximum" = "Máximo";
+
/* The short unit display string for milligrams of glucose per decilter */
"mg/dL" = "mg/dL";
+/* Placeholder for lower range entry */
+"Minimum" = "Mínimo";
+
/* The short unit display string for millimoles of glucose per liter */
"mmol/L" = "mmol/L";
+/* Lesson title */
+"Modal Day" = "Día modal";
+
+/* Lesson result text for no data */
+"No data available" = "Datos no disponibles";
+
/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
@@ -28,6 +43,15 @@
/* Title of config entry */
"Start Date" = "Fecha de Inicio";
+/* Lesson title */
+"Time in Range" = "Tiempo en Rango";
+
/* The short unit display string for international units of insulin */
"U" = "U";
+/* Lesson subtitle */
+"Visualizes the most frequent glucose values by time of day" = "Visualiza los valores de glucosa más frecuentes por hora del día";
+
+/* Unit string for a count of calendar weeks */
+"Weeks" = "Semanas";
+
diff --git a/Common/fi.lproj/Intents.strings b/Common/fi.lproj/Intents.strings
index cd3e0d1c9f..e4c15dd161 100644
--- a/Common/fi.lproj/Intents.strings
+++ b/Common/fi.lproj/Intents.strings
@@ -1,18 +1,36 @@
/* (No Comment) */
-"80eo5o" = "Lisää hiilihydraatteja";
+"9KhaIS" = "I've set the preset";
/* (No Comment) */
-"OcNxIj" = "Lisää hiilihydraatteja";
+"80eo5o" = "Lisää hiilihydraatteja";
/* (No Comment) */
-"yc02Yq" = "Lisää hiilihydraatteja Loopiin";
+"b085BW" = "I wasn't able to set the preset.";
-"9KhaIS" = "I've set the preset";
+/* (No Comment) */
"I4OZy8" = "Enable Override Preset";
-"XNNmtH" = "Enable preset in Loop";
-"ZZ3mtM" = "Enable an override preset in Loop";
-"b085BW" = "I wasn't able to set the preset.";
+
+/* (No Comment) */
"lYMuWV" = "Override Name";
+
+/* (No Comment) */
"nDKAmn" = "What's the name of the override you'd like to set?";
+
+/* (No Comment) */
+"OcNxIj" = "Lisää hiilihydraatteja";
+
+/* (No Comment) */
"oLQSsJ" = "Enable '${overrideName}' Override Preset";
+
+/* (No Comment) */
+"XNNmtH" = "Enable preset in Loop";
+
+/* (No Comment) */
"yBzwCL" = "Override Selection";
+
+/* (No Comment) */
+"yc02Yq" = "Lisää hiilihydraatteja Loopiin";
+
+/* (No Comment) */
+"ZZ3mtM" = "Enable an override preset in Loop";
+
diff --git a/Common/fr.lproj/Intents.strings b/Common/fr.lproj/Intents.strings
index 6adcf0a383..56bed88c3f 100644
--- a/Common/fr.lproj/Intents.strings
+++ b/Common/fr.lproj/Intents.strings
@@ -1,18 +1,36 @@
+/* (No Comment) */
+"9KhaIS" = "J'ai défini le préréglage";
+
/* (No Comment) */
"80eo5o" = "Ajouter des glucides";
+/* (No Comment) */
+"b085BW" = "Je n'ai pas pu définir le préréglage.";
+
+/* (No Comment) */
+"I4OZy8" = "Activer l'ajustement préréglé";
+
+/* (No Comment) */
+"lYMuWV" = "Nom Ajustement";
+
+/* (No Comment) */
+"nDKAmn" = "Quel est le nom de l'ajustement que vous voulez définir ?";
+
/* (No Comment) */
"OcNxIj" = "Ajouter des glucides";
+/* (No Comment) */
+"oLQSsJ" = "Activer l'ajustement '${overrideName}' ";
+
+/* (No Comment) */
+"XNNmtH" = "Activer le préréglage dans Loop";
+
+/* (No Comment) */
+"yBzwCL" = "Selection Ajustement";
+
/* (No Comment) */
"yc02Yq" = "Ajouter des glucides à Loop";
-"9KhaIS" = "I've set the preset";
-"I4OZy8" = "Enable Override Preset";
-"XNNmtH" = "Enable preset in Loop";
-"ZZ3mtM" = "Enable an override preset in Loop";
-"b085BW" = "I wasn't able to set the preset.";
-"lYMuWV" = "Override Name";
-"nDKAmn" = "What's the name of the override you'd like to set?";
-"oLQSsJ" = "Enable '${overrideName}' Override Preset";
-"yBzwCL" = "Override Selection";
+/* (No Comment) */
+"ZZ3mtM" = "Activer un ajustement préréglé dans Loop";
+
diff --git a/Common/fr.lproj/Localizable.strings b/Common/fr.lproj/Localizable.strings
index 694e77a7d1..e58151d89a 100644
--- a/Common/fr.lproj/Localizable.strings
+++ b/Common/fr.lproj/Localizable.strings
@@ -7,18 +7,33 @@
/* Lesson subtitle */
"Computes the percentage of glucose measurements within a specified range" = "Ceci calcule le pourcentage des mesures de glycémie dans une plage spécifique";
+/* Title of the button to begin lesson execution */
+"Continue" = "Continuer";
+
/* The short unit display string for decibles */
"dB" = "dB";
/* The short unit display string for grams */
"g" = "g";
+/* Placeholder for upper range entry */
+"Maximum" = "Maximum";
+
/* The short unit display string for milligrams of glucose per decilter */
"mg/dL" = "mg/dL";
+/* Placeholder for lower range entry */
+"Minimum" = "Minimum";
+
/* The short unit display string for millimoles of glucose per liter */
"mmol/L" = "mmol/L";
+/* Lesson title */
+"Modal Day" = "Journée type";
+
+/* Lesson result text for no data */
+"No data available" = "Données indisponibles";
+
/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
@@ -26,8 +41,17 @@
"Range" = "Plage";
/* Title of config entry */
-"Start Date" = "Date de commencement";
+"Start Date" = "Date de démarrage";
+
+/* Lesson title */
+"Time in Range" = "Durée dans la cible";
/* The short unit display string for international units of insulin */
"U" = "U";
+/* Lesson subtitle */
+"Visualizes the most frequent glucose values by time of day" = "Visualise les glycémies les plus fréquentes par heure de la journée";
+
+/* Unit string for a count of calendar weeks */
+"Weeks" = "Semaines";
+
diff --git a/Common/he.lproj/Intents.strings b/Common/he.lproj/Intents.strings
index 853af215c0..69202aa99c 100644
--- a/Common/he.lproj/Intents.strings
+++ b/Common/he.lproj/Intents.strings
@@ -1,24 +1,36 @@
-"80eo5o" = "Add Carb Entry";
-
+/* (No Comment) */
"9KhaIS" = "I've set the preset";
-"I4OZy8" = "Enable Override Preset";
-
-"OcNxIj" = "Add Carb Entry";
-
-"XNNmtH" = "Enable preset in Loop";
-
-"ZZ3mtM" = "Enable an override preset in Loop";
+/* (No Comment) */
+"80eo5o" = "Add Carb Entry";
+/* (No Comment) */
"b085BW" = "I wasn't able to set the preset.";
+/* (No Comment) */
+"I4OZy8" = "Enable Override Preset";
+
+/* (No Comment) */
"lYMuWV" = "Override Name";
+/* (No Comment) */
"nDKAmn" = "What's the name of the override you'd like to set?";
+/* (No Comment) */
+"OcNxIj" = "Add Carb Entry";
+
+/* (No Comment) */
"oLQSsJ" = "Enable '${overrideName}' Override Preset";
+/* (No Comment) */
+"XNNmtH" = "Enable preset in Loop";
+
+/* (No Comment) */
"yBzwCL" = "Override Selection";
+/* (No Comment) */
"yc02Yq" = "Add a carb entry to Loop";
+/* (No Comment) */
+"ZZ3mtM" = "Enable an override preset in Loop";
+
diff --git a/Common/it.lproj/Intents.strings b/Common/it.lproj/Intents.strings
index d3a0e94880..847d80d4eb 100644
--- a/Common/it.lproj/Intents.strings
+++ b/Common/it.lproj/Intents.strings
@@ -1,18 +1,36 @@
/* (No Comment) */
-"80eo5o" = "Aggiungi carboidrati assunti";
+"9KhaIS" = "Ho impostato la preimpostazione";
/* (No Comment) */
-"OcNxIj" = "Aggiungi carboidrati assunti";
+"80eo5o" = "Agg. Carb. Assunti";
/* (No Comment) */
-"yc02Yq" = "Aggiungi carboidrati assunti a Loop";
+"b085BW" = "I wasn't able to set the preset.";
+
+/* (No Comment) */
+"I4OZy8" = "Abilita Programma Alternativo";
+
+/* (No Comment) */
+"lYMuWV" = "Nome Programma Alternativo";
+
+/* (No Comment) */
+"nDKAmn" = "Qual'è il nome del programma alternativo che vuoi impostare?";
+
+/* (No Comment) */
+"OcNxIj" = "Agg. Carb. Assunti";
+
+/* (No Comment) */
+"oLQSsJ" = "Abilita '${overrideName}' Programma Alternativo";
-"9KhaIS" = "I've set the preset";
-"I4OZy8" = "Enable Override Preset";
+/* (No Comment) */
"XNNmtH" = "Enable preset in Loop";
-"ZZ3mtM" = "Enable an override preset in Loop";
-"b085BW" = "I wasn't able to set the preset.";
-"lYMuWV" = "Override Name";
-"nDKAmn" = "What's the name of the override you'd like to set?";
-"oLQSsJ" = "Enable '${overrideName}' Override Preset";
-"yBzwCL" = "Override Selection";
+
+/* (No Comment) */
+"yBzwCL" = "Selezione Programma Alternativo";
+
+/* (No Comment) */
+"yc02Yq" = "Aggiungi carboidrati a Loop";
+
+/* (No Comment) */
+"ZZ3mtM" = "Attiva Programma Alternativo in Loop";
+
diff --git a/Common/it.lproj/Localizable.strings b/Common/it.lproj/Localizable.strings
index 6da1a77ad0..55e7848e7b 100644
--- a/Common/it.lproj/Localizable.strings
+++ b/Common/it.lproj/Localizable.strings
@@ -2,7 +2,10 @@
"%1$@ v%2$@" = "%1$@ v%2$@";
/* Title of the user activity for adding carbs */
-"Add Carb Entry" = "Aggiungi carboidrati assunti";
+"Add Carb Entry" = "Agg. Carb. Assunti";
+
+/* Lesson subtitle */
+"Computes the percentage of glucose measurements within a specified range" = "Calcola la percentuale di misurazioni della glicemia entro un intervallo specifico";
/* Title of the button to begin lesson execution */
"Continue" = "Continua";
diff --git a/Common/ja.lproj/Intents.strings b/Common/ja.lproj/Intents.strings
index ca2038ce0d..e4f64097c9 100644
--- a/Common/ja.lproj/Intents.strings
+++ b/Common/ja.lproj/Intents.strings
@@ -1,18 +1,36 @@
/* (No Comment) */
-"80eo5o" = "カーボを追加";
+"9KhaIS" = "I've set the preset";
/* (No Comment) */
-"OcNxIj" = "カーボを追加";
+"80eo5o" = "カーボを追加";
/* (No Comment) */
-"yc02Yq" = "ループにカーボを追加";
+"b085BW" = "I wasn't able to set the preset.";
-"9KhaIS" = "I've set the preset";
+/* (No Comment) */
"I4OZy8" = "Enable Override Preset";
-"XNNmtH" = "Enable preset in Loop";
-"ZZ3mtM" = "Enable an override preset in Loop";
-"b085BW" = "I wasn't able to set the preset.";
+
+/* (No Comment) */
"lYMuWV" = "Override Name";
+
+/* (No Comment) */
"nDKAmn" = "What's the name of the override you'd like to set?";
+
+/* (No Comment) */
+"OcNxIj" = "カーボを追加";
+
+/* (No Comment) */
"oLQSsJ" = "Enable '${overrideName}' Override Preset";
+
+/* (No Comment) */
+"XNNmtH" = "Enable preset in Loop";
+
+/* (No Comment) */
"yBzwCL" = "Override Selection";
+
+/* (No Comment) */
+"yc02Yq" = "ループにカーボを追加";
+
+/* (No Comment) */
+"ZZ3mtM" = "Enable an override preset in Loop";
+
diff --git a/Common/nb.lproj/Intents.strings b/Common/nb.lproj/Intents.strings
index d7a0b641a9..0fe45121af 100644
--- a/Common/nb.lproj/Intents.strings
+++ b/Common/nb.lproj/Intents.strings
@@ -1,18 +1,36 @@
+/* (No Comment) */
+"9KhaIS" = "Jeg har angitt forhåndsinnstillingen";
+
/* (No Comment) */
"80eo5o" = "Legg til karbohydrater";
+/* (No Comment) */
+"b085BW" = "Jeg kunne ikke angi forhåndsinnstillingen.";
+
+/* (No Comment) */
+"I4OZy8" = "Aktiver forhåndsinnstillt overstyring";
+
+/* (No Comment) */
+"lYMuWV" = "Navn på overstyring";
+
+/* (No Comment) */
+"nDKAmn" = "Hva heter overstyringen du vil angi?";
+
/* (No Comment) */
"OcNxIj" = "Legg til karbohydrater";
+/* (No Comment) */
+"oLQSsJ" = "Enable '${overrideName}' Override Preset";
+
+/* (No Comment) */
+"XNNmtH" = "Aktiver forhåndsinnstilling i Loop";
+
+/* (No Comment) */
+"yBzwCL" = "Overstyr valg";
+
/* (No Comment) */
"yc02Yq" = "Legg til karbohydrater i Loop";
-"9KhaIS" = "I've set the preset";
-"I4OZy8" = "Enable Override Preset";
-"XNNmtH" = "Enable preset in Loop";
-"ZZ3mtM" = "Enable an override preset in Loop";
-"b085BW" = "I wasn't able to set the preset.";
-"lYMuWV" = "Override Name";
-"nDKAmn" = "What's the name of the override you'd like to set?";
-"oLQSsJ" = "Enable '${overrideName}' Override Preset";
-"yBzwCL" = "Override Selection";
+/* (No Comment) */
+"ZZ3mtM" = "Aktiver en forhåndsinnstilling for overstyring i Loop";
+
diff --git a/Common/nb.lproj/Localizable.strings b/Common/nb.lproj/Localizable.strings
index 32bdd8539c..056b65c455 100644
--- a/Common/nb.lproj/Localizable.strings
+++ b/Common/nb.lproj/Localizable.strings
@@ -4,6 +4,9 @@
/* Title of the user activity for adding carbs */
"Add Carb Entry" = "Legg til karbohydrater";
+/* Lesson subtitle */
+"Computes the percentage of glucose measurements within a specified range" = "Beregner prosentandelen av blodsukkermålinger innenfor et spesifisert område";
+
/* Title of the button to begin lesson execution */
"Continue" = "Fortsett";
diff --git a/Common/nl.lproj/Intents.strings b/Common/nl.lproj/Intents.strings
index 1533363380..56cd1edcde 100644
--- a/Common/nl.lproj/Intents.strings
+++ b/Common/nl.lproj/Intents.strings
@@ -1,18 +1,36 @@
/* (No Comment) */
-"80eo5o" = "Voeg koolhydraten toe";
+"9KhaIS" = "Ik heb het programma ingesteld";
/* (No Comment) */
-"OcNxIj" = "Voeg koolhydraten toe";
+"80eo5o" = "Koolhydraatinvoer Toevoegen";
/* (No Comment) */
-"yc02Yq" = "Voeg koolhydraten toe aan Loop";
+"b085BW" = "Ik kon het programma niet instellen.";
+
+/* (No Comment) */
+"I4OZy8" = "Override Programma Inschakelen";
+
+/* (No Comment) */
+"lYMuWV" = "Override Naam";
+
+/* (No Comment) */
+"nDKAmn" = "Wat is de naam van de override die je zou willen instellen?";
+
+/* (No Comment) */
+"OcNxIj" = "Koolhydraatinvoer Toevoegen";
+
+/* (No Comment) */
+"oLQSsJ" = "Override '${overrideName}' Inschakelen";
+
+/* (No Comment) */
+"XNNmtH" = "Programma in Loop inschakelen";
+
+/* (No Comment) */
+"yBzwCL" = "Overrideselectie";
+
+/* (No Comment) */
+"yc02Yq" = "Voeg koolhydrateninvoer toe aan Loop";
+
+/* (No Comment) */
+"ZZ3mtM" = "Een override programma in Loop inschakelen";
-"9KhaIS" = "I've set the preset";
-"I4OZy8" = "Enable Override Preset";
-"XNNmtH" = "Enable preset in Loop";
-"ZZ3mtM" = "Enable an override preset in Loop";
-"b085BW" = "I wasn't able to set the preset.";
-"lYMuWV" = "Override Name";
-"nDKAmn" = "What's the name of the override you'd like to set?";
-"oLQSsJ" = "Enable '${overrideName}' Override Preset";
-"yBzwCL" = "Override Selection";
diff --git a/Common/nl.lproj/Localizable.strings b/Common/nl.lproj/Localizable.strings
index e98674e351..a272262f20 100644
--- a/Common/nl.lproj/Localizable.strings
+++ b/Common/nl.lproj/Localizable.strings
@@ -2,13 +2,13 @@
"%1$@ v%2$@" = "%1$@ v%2$@";
/* Title of the user activity for adding carbs */
-"Add Carb Entry" = "Voeg koolhydraten toe";
+"Add Carb Entry" = "Koolhydraatinvoer Toevoegen";
/* Lesson subtitle */
"Computes the percentage of glucose measurements within a specified range" = "Berekent het percentage glucosemetingen in een specifiek bereik";
/* Title of the button to begin lesson execution */
-"Continue" = "Ga verder";
+"Continue" = "Ga Verder";
/* The short unit display string for decibles */
"dB" = "dB";
@@ -29,10 +29,10 @@
"mmol/L" = "mmol/L";
/* Lesson title */
-"Modal Day" = "Modale dag";
+"Modal Day" = "Modale Dag";
/* Lesson result text for no data */
-"No data available" = "Geen data beschikbaar";
+"No data available" = "Geen gegevens beschikbaar";
/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
@@ -41,16 +41,16 @@
"Range" = "Bereik";
/* Title of config entry */
-"Start Date" = "Start datum";
+"Start Date" = "Startdatum";
/* Lesson title */
-"Time in Range" = "Tijd binnen bereik";
+"Time in Range" = "Tijd binnen Bereik";
/* The short unit display string for international units of insulin */
"U" = "E";
/* Lesson subtitle */
-"Visualizes the most frequent glucose values by time of day" = "Geeft de meest voorkomende glucose waardes weer per moment van de dag ";
+"Visualizes the most frequent glucose values by time of day" = "Geeft de meest voorkomende glucosewaarden weer per moment van de dag";
/* Unit string for a count of calendar weeks */
"Weeks" = "Weken";
diff --git a/Common/pl.lproj/Intents.strings b/Common/pl.lproj/Intents.strings
index 9cec9c4b65..86f8cd9c3f 100644
--- a/Common/pl.lproj/Intents.strings
+++ b/Common/pl.lproj/Intents.strings
@@ -1,18 +1,36 @@
-/* INIntentTitle */
-"80eo5o" = "Add Carb Entry";
-
-/* INIntentParameterCombinationTitle */
-"OcNxIj" = "Add Carb Entry";
-
-/* INIntentDescription */
-"yc02Yq" = "Add a carb entry to Loop";
-
-"9KhaIS" = "I've set the preset";
-"I4OZy8" = "Enable Override Preset";
-"XNNmtH" = "Enable preset in Loop";
-"ZZ3mtM" = "Enable an override preset in Loop";
-"b085BW" = "I wasn't able to set the preset.";
-"lYMuWV" = "Override Name";
-"nDKAmn" = "What's the name of the override you'd like to set?";
-"oLQSsJ" = "Enable '${overrideName}' Override Preset";
-"yBzwCL" = "Override Selection";
+/* (No Comment) */
+"9KhaIS" = "Ustawiłem Cel Tymczas.";
+
+/* (No Comment) */
+"80eo5o" = "Wprowadź węglowodany";
+
+/* (No Comment) */
+"b085BW" = "Nie mogłem ustawić celu.";
+
+/* (No Comment) */
+"I4OZy8" = "Włącz Cel Tymczasowy";
+
+/* (No Comment) */
+"lYMuWV" = "Nazwa Celu Tymczas.";
+
+/* (No Comment) */
+"nDKAmn" = "Jak nazywa się Cel Tymczasowy, który chcesz włączyć?";
+
+/* (No Comment) */
+"OcNxIj" = "Wprowadź węglowodany";
+
+/* (No Comment) */
+"oLQSsJ" = "Włącz '${overrideName}' Cel Tymczasowy";
+
+/* (No Comment) */
+"XNNmtH" = "Włącz Cel Tymczasowy w pętli";
+
+/* (No Comment) */
+"yBzwCL" = "Wybierz Cel Tymczasowy";
+
+/* (No Comment) */
+"yc02Yq" = "Dodaj węglowodany do pętli";
+
+/* (No Comment) */
+"ZZ3mtM" = "Włącz Cel Tymczasowy w pętli";
+
diff --git a/Common/pl.lproj/Localizable.strings b/Common/pl.lproj/Localizable.strings
index f630a70c5d..904ee7d8a8 100644
--- a/Common/pl.lproj/Localizable.strings
+++ b/Common/pl.lproj/Localizable.strings
@@ -4,20 +4,54 @@
/* Title of the user activity for adding carbs */
"Add Carb Entry" = "Dodaj pozycję dla węglowodanów";
+/* Lesson subtitle */
+"Computes the percentage of glucose measurements within a specified range" = "Oblicza procent pomiarów glukozy w określonym zakresie";
+
+/* Title of the button to begin lesson execution */
+"Continue" = "Kontynuuj";
+
/* The short unit display string for decibles */
"dB" = "dB";
/* The short unit display string for grams */
"g" = "g";
+/* Placeholder for upper range entry */
+"Maximum" = "Maksymalnie";
+
/* The short unit display string for milligrams of glucose per decilter */
"mg/dL" = "mg/dL";
+/* Placeholder for lower range entry */
+"Minimum" = "Minimalnie";
+
/* The short unit display string for millimoles of glucose per liter */
"mmol/L" = "mmol/L";
+/* Lesson title */
+"Modal Day" = "Dzień modalny";
+
+/* Lesson result text for no data */
+"No data available" = "Brak danych";
+
/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
+/* Section title for glucose range */
+"Range" = "Zasięg";
+
+/* Title of config entry */
+"Start Date" = "Data rozpoczęcia";
+
+/* Lesson title */
+"Time in Range" = "Czas w zakresie (TIR)";
+
/* The short unit display string for international units of insulin */
"U" = "J";
+
+/* Lesson subtitle */
+"Visualizes the most frequent glucose values by time of day" = "Wizualizuje najczęstsze wartości glukozy według pory dnia";
+
+/* Unit string for a count of calendar weeks */
+"Weeks" = "Tygodnie";
+
diff --git a/Common/pt-BR.lproj/Intents.strings b/Common/pt-BR.lproj/Intents.strings
index 694faa1fe9..f6a265b221 100644
--- a/Common/pt-BR.lproj/Intents.strings
+++ b/Common/pt-BR.lproj/Intents.strings
@@ -1,18 +1,36 @@
/* (No Comment) */
-"80eo5o" = "Adicionar Carboidratos";
+"9KhaIS" = "I've set the preset";
/* (No Comment) */
-"OcNxIj" = "Adicionar Carboidratos";
+"80eo5o" = "Adicionar Carboidratos";
/* (No Comment) */
-"yc02Yq" = "Adicionar Carboidratos ao Loop";
+"b085BW" = "I wasn't able to set the preset.";
-"9KhaIS" = "I've set the preset";
+/* (No Comment) */
"I4OZy8" = "Enable Override Preset";
-"XNNmtH" = "Enable preset in Loop";
-"ZZ3mtM" = "Enable an override preset in Loop";
-"b085BW" = "I wasn't able to set the preset.";
+
+/* (No Comment) */
"lYMuWV" = "Override Name";
+
+/* (No Comment) */
"nDKAmn" = "What's the name of the override you'd like to set?";
+
+/* (No Comment) */
+"OcNxIj" = "Adicionar Carboidratos";
+
+/* (No Comment) */
"oLQSsJ" = "Enable '${overrideName}' Override Preset";
+
+/* (No Comment) */
+"XNNmtH" = "Enable preset in Loop";
+
+/* (No Comment) */
"yBzwCL" = "Override Selection";
+
+/* (No Comment) */
+"yc02Yq" = "Adicionar Carboidratos ao Loop";
+
+/* (No Comment) */
+"ZZ3mtM" = "Enable an override preset in Loop";
+
diff --git a/Common/ro.lproj/Intents.strings b/Common/ro.lproj/Intents.strings
index ce36e2214c..30cc24a11d 100644
--- a/Common/ro.lproj/Intents.strings
+++ b/Common/ro.lproj/Intents.strings
@@ -1,18 +1,36 @@
/* (No Comment) */
-"80eo5o" = "Adăugare carbohidrați";
+"9KhaIS" = "I've set the preset";
/* (No Comment) */
-"OcNxIj" = "Adăugare carbohidrați";
+"80eo5o" = "Adăugare carbohidrați";
/* (No Comment) */
-"yc02Yq" = "Adaugă carbohidrați în Loop";
+"b085BW" = "I wasn't able to set the preset.";
-"9KhaIS" = "I've set the preset";
+/* (No Comment) */
"I4OZy8" = "Enable Override Preset";
-"XNNmtH" = "Enable preset in Loop";
-"ZZ3mtM" = "Enable an override preset in Loop";
-"b085BW" = "I wasn't able to set the preset.";
+
+/* (No Comment) */
"lYMuWV" = "Override Name";
+
+/* (No Comment) */
"nDKAmn" = "What's the name of the override you'd like to set?";
+
+/* (No Comment) */
+"OcNxIj" = "Adăugare carbohidrați";
+
+/* (No Comment) */
"oLQSsJ" = "Enable '${overrideName}' Override Preset";
+
+/* (No Comment) */
+"XNNmtH" = "Enable preset in Loop";
+
+/* (No Comment) */
"yBzwCL" = "Override Selection";
+
+/* (No Comment) */
+"yc02Yq" = "Adaugă carbohidrați în Loop";
+
+/* (No Comment) */
+"ZZ3mtM" = "Enable an override preset in Loop";
+
diff --git a/Common/ru.lproj/Intents.strings b/Common/ru.lproj/Intents.strings
index 2f55bd8c16..43f070d0c0 100644
--- a/Common/ru.lproj/Intents.strings
+++ b/Common/ru.lproj/Intents.strings
@@ -1,18 +1,36 @@
+/* (No Comment) */
+"9KhaIS" = "Я установил пресет";
+
/* (No Comment) */
"80eo5o" = "Добавить запись углеводов";
+/* (No Comment) */
+"b085BW" = "Я не смог установить пресет.";
+
+/* (No Comment) */
+"I4OZy8" = "Включить пресет временной цели";
+
+/* (No Comment) */
+"lYMuWV" = "Имя пресета";
+
+/* (No Comment) */
+"nDKAmn" = "Как называется пресет, которое вы хотите установить?";
+
/* (No Comment) */
"OcNxIj" = "Добавить запись углеводов";
+/* (No Comment) */
+"oLQSsJ" = "Включить '${overrideName}' пресет";
+
+/* (No Comment) */
+"XNNmtH" = "Включить пресет в Loop";
+
+/* (No Comment) */
+"yBzwCL" = "Выбор временных целей";
+
/* (No Comment) */
"yc02Yq" = "Добавьте запись углеводов в алгоритм цикла";
-"9KhaIS" = "I've set the preset";
-"I4OZy8" = "Enable Override Preset";
-"XNNmtH" = "Enable preset in Loop";
-"ZZ3mtM" = "Enable an override preset in Loop";
-"b085BW" = "I wasn't able to set the preset.";
-"lYMuWV" = "Override Name";
-"nDKAmn" = "What's the name of the override you'd like to set?";
-"oLQSsJ" = "Enable '${overrideName}' Override Preset";
-"yBzwCL" = "Override Selection";
+/* (No Comment) */
+"ZZ3mtM" = "Включение пресета ВЦ в Loop";
+
diff --git a/Common/ru.lproj/Localizable.strings b/Common/ru.lproj/Localizable.strings
index bdee38ba11..29b8b0e0e1 100644
--- a/Common/ru.lproj/Localizable.strings
+++ b/Common/ru.lproj/Localizable.strings
@@ -4,21 +4,51 @@
/* Title of the user activity for adding carbs */
"Add Carb Entry" = "Введите углеводы";
+/* Lesson subtitle */
+"Computes the percentage of glucose measurements within a specified range" = "Вычисляет процент измерений глюкозы в заданном диапазоне";
+
+/* Title of the button to begin lesson execution */
+"Continue" = "Продолжить";
+
/* The short unit display string for decibles */
"dB" = "dB";
/* The short unit display string for grams */
"g" = "г";
+/* Placeholder for upper range entry */
+"Maximum" = "Максимум";
+
/* The short unit display string for milligrams of glucose per decilter */
"mg/dL" = "мг/дл";
+/* Placeholder for lower range entry */
+"Minimum" = "Минимум";
+
/* The short unit display string for millimoles of glucose per liter */
"mmol/L" = "ммоль/л";
+/* Lesson result text for no data */
+"No data available" = "Данные недоступны";
+
/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
+/* Section title for glucose range */
+"Range" = "Диапазон";
+
+/* Title of config entry */
+"Start Date" = "Дата начала";
+
+/* Lesson title */
+"Time in Range" = "Время в диапазоне";
+
/* The short unit display string for international units of insulin */
"U" = "ед";
+/* Lesson subtitle */
+"Visualizes the most frequent glucose values by time of day" = "Визуализация наиболее частых значений глюкозы по времени суток";
+
+/* Unit string for a count of calendar weeks */
+"Weeks" = "Недели";
+
diff --git a/Common/sk.lproj/Intents.strings b/Common/sk.lproj/Intents.strings
new file mode 100644
index 0000000000..5ec3fa5bc7
--- /dev/null
+++ b/Common/sk.lproj/Intents.strings
@@ -0,0 +1,12 @@
+/* (No Comment) */
+"9KhaIS" = "Nastavil som predvoľbu";
+
+/* (No Comment) */
+"80eo5o" = "Zadať sacharidy";
+
+/* (No Comment) */
+"OcNxIj" = "Zadať sacharidy";
+
+/* (No Comment) */
+"yc02Yq" = "Zadať sacharidy do Loop";
+
diff --git a/Common/sk.lproj/Localizable.strings b/Common/sk.lproj/Localizable.strings
new file mode 100644
index 0000000000..4e49851fe2
--- /dev/null
+++ b/Common/sk.lproj/Localizable.strings
@@ -0,0 +1,54 @@
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v %2$@";
+
+/* Title of the user activity for adding carbs */
+"Add Carb Entry" = "Zadať sacharidy";
+
+/* Lesson subtitle */
+"Computes the percentage of glucose measurements within a specified range" = "Vypočíta percento meraní glykémie v rámci špecifikovaného rozsahu";
+
+/* Title of the button to begin lesson execution */
+"Continue" = "Pokračovať";
+
+/* The short unit display string for decibles */
+"dB" = "dB";
+
+/* The short unit display string for grams */
+"g" = "g";
+
+/* Placeholder for upper range entry */
+"Maximum" = "Maximum";
+
+/* The short unit display string for milligrams of glucose per decilter */
+"mg/dL" = "mg/dL";
+
+/* Placeholder for lower range entry */
+"Minimum" = "Minimum";
+
+/* The short unit display string for millimoles of glucose per liter */
+"mmol/L" = "mmol/L";
+
+/* Lesson result text for no data */
+"No data available" = "Údaje nie sú k dispozícii";
+
+/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
+"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
+
+/* Section title for glucose range */
+"Range" = "Rozsah";
+
+/* Title of config entry */
+"Start Date" = "Dátum začiatku";
+
+/* Lesson title */
+"Time in Range" = "Čas v rozsahu";
+
+/* The short unit display string for international units of insulin */
+"U" = "j";
+
+/* Lesson subtitle */
+"Visualizes the most frequent glucose values by time of day" = "Zobrazuje najčastejšie hodnoty glykémie podľa hodín dňa";
+
+/* Unit string for a count of calendar weeks */
+"Weeks" = "Týždne";
+
diff --git a/Common/sv.lproj/Intents.strings b/Common/sv.lproj/Intents.strings
index 20bf063944..25e1a6e213 100644
--- a/Common/sv.lproj/Intents.strings
+++ b/Common/sv.lproj/Intents.strings
@@ -1,18 +1,36 @@
/* (No Comment) */
-"80eo5o" = "Lägg till kolhydrater";
+"9KhaIS" = "I've set the preset";
/* (No Comment) */
-"OcNxIj" = "Lägg till kolhydrater";
+"80eo5o" = "Lägg till kolhydrater";
/* (No Comment) */
-"yc02Yq" = "Lägg till kolhydrater för att kunna loopa";
+"b085BW" = "I wasn't able to set the preset.";
-"9KhaIS" = "I've set the preset";
+/* (No Comment) */
"I4OZy8" = "Enable Override Preset";
-"XNNmtH" = "Enable preset in Loop";
-"ZZ3mtM" = "Enable an override preset in Loop";
-"b085BW" = "I wasn't able to set the preset.";
+
+/* (No Comment) */
"lYMuWV" = "Override Name";
+
+/* (No Comment) */
"nDKAmn" = "What's the name of the override you'd like to set?";
+
+/* (No Comment) */
+"OcNxIj" = "Lägg till kolhydrater";
+
+/* (No Comment) */
"oLQSsJ" = "Enable '${overrideName}' Override Preset";
+
+/* (No Comment) */
+"XNNmtH" = "Enable preset in Loop";
+
+/* (No Comment) */
"yBzwCL" = "Override Selection";
+
+/* (No Comment) */
+"yc02Yq" = "Lägg till kolhydrater för att kunna loopa";
+
+/* (No Comment) */
+"ZZ3mtM" = "Enable an override preset in Loop";
+
diff --git a/Common/tr.lproj/Intents.strings b/Common/tr.lproj/Intents.strings
index 853af215c0..30ae99dc21 100644
--- a/Common/tr.lproj/Intents.strings
+++ b/Common/tr.lproj/Intents.strings
@@ -1,24 +1,36 @@
-"80eo5o" = "Add Carb Entry";
+/* (No Comment) */
+"9KhaIS" = "Ön ayarı yaptım";
-"9KhaIS" = "I've set the preset";
+/* (No Comment) */
+"80eo5o" = "Karbonhidrat Girişi Ekle";
-"I4OZy8" = "Enable Override Preset";
+/* (No Comment) */
+"b085BW" = "Ön ayarı yapamadım.";
-"OcNxIj" = "Add Carb Entry";
+/* (No Comment) */
+"I4OZy8" = "Ön Ayarı Geçersiz Kıl";
-"XNNmtH" = "Enable preset in Loop";
+/* (No Comment) */
+"lYMuWV" = "Geçersiz Kılma Adı";
-"ZZ3mtM" = "Enable an override preset in Loop";
+/* (No Comment) */
+"nDKAmn" = "Ayarlamak istediğiniz geçersiz kılmanın adı nedir?";
-"b085BW" = "I wasn't able to set the preset.";
+/* (No Comment) */
+"OcNxIj" = "Karbonhidrat Girişi Ekle";
-"lYMuWV" = "Override Name";
+/* (No Comment) */
+"oLQSsJ" = "'${overrideName}' Ön Ayarını Geçersiz Kılmayı Etkinleştir";
-"nDKAmn" = "What's the name of the override you'd like to set?";
+/* (No Comment) */
+"XNNmtH" = "Döngüde ön ayarı etkinleştir";
-"oLQSsJ" = "Enable '${overrideName}' Override Preset";
+/* (No Comment) */
+"yBzwCL" = "Geçersiz Kılma Seçimi";
-"yBzwCL" = "Override Selection";
+/* (No Comment) */
+"yc02Yq" = "Döngüye bir karbonhidrat girişi ekleyin";
-"yc02Yq" = "Add a carb entry to Loop";
+/* (No Comment) */
+"ZZ3mtM" = "Döngüde ön ayarı geçersiz kıl";
diff --git a/Common/tr.lproj/Localizable.strings b/Common/tr.lproj/Localizable.strings
index e0fb9dff1b..f924e32220 100644
--- a/Common/tr.lproj/Localizable.strings
+++ b/Common/tr.lproj/Localizable.strings
@@ -2,23 +2,56 @@
"%1$@ v%2$@" = "%1$@ v%2$@";
/* Title of the user activity for adding carbs */
-"Add Carb Entry" = "Add Carb Entry";
+"Add Carb Entry" = "Karbonhidrat Girişi Ekle";
+
+/* Lesson subtitle */
+"Computes the percentage of glucose measurements within a specified range" = "Belirli bir aralıktaki glikoz ölçümlerinin yüzdesini hesaplar";
+
+/* Title of the button to begin lesson execution */
+"Continue" = "Devam et";
/* The short unit display string for decibles */
"dB" = "dB";
/* The short unit display string for grams */
-"g" = "g";
+"g" = "gr";
+
+/* Placeholder for upper range entry */
+"Maximum" = "Maksimum";
/* The short unit display string for milligrams of glucose per decilter */
"mg/dL" = "mg/dL";
+/* Placeholder for lower range entry */
+"Minimum" = "Minimum";
+
/* The short unit display string for millimoles of glucose per liter */
"mmol/L" = "mmol/L";
+/* Lesson title */
+"Modal Day" = "Modal Gün";
+
+/* Lesson result text for no data */
+"No data available" = "Kullanılabilir veri yok";
+
/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
+/* Section title for glucose range */
+"Range" = "Aralık";
+
+/* Title of config entry */
+"Start Date" = "Başlangıç tarihi";
+
+/* Lesson title */
+"Time in Range" = "Aralıktaki Süre";
+
/* The short unit display string for international units of insulin */
-"U" = "U";
+"U" = "Ü";
+
+/* Lesson subtitle */
+"Visualizes the most frequent glucose values by time of day" = "En sık görülen glikoz değerlerini günün saatine göre görselleştirir";
+
+/* Unit string for a count of calendar weeks */
+"Weeks" = "Hafta";
diff --git a/Common/vi.lproj/Intents.strings b/Common/vi.lproj/Intents.strings
index e078394091..dccf6b1dba 100644
--- a/Common/vi.lproj/Intents.strings
+++ b/Common/vi.lproj/Intents.strings
@@ -1,18 +1,36 @@
/* (No Comment) */
-"80eo5o" = "Khai báo khối lượng Carb";
+"9KhaIS" = "I've set the preset";
/* (No Comment) */
-"OcNxIj" = "Khai báo khối lượng Carb";
+"80eo5o" = "Khai báo khối lượng Carb";
/* (No Comment) */
-"yc02Yq" = "Khai báo khối lượng Carb cho Loop";
+"b085BW" = "I wasn't able to set the preset.";
-"9KhaIS" = "I've set the preset";
+/* (No Comment) */
"I4OZy8" = "Enable Override Preset";
-"XNNmtH" = "Enable preset in Loop";
-"ZZ3mtM" = "Enable an override preset in Loop";
-"b085BW" = "I wasn't able to set the preset.";
+
+/* (No Comment) */
"lYMuWV" = "Override Name";
+
+/* (No Comment) */
"nDKAmn" = "What's the name of the override you'd like to set?";
+
+/* (No Comment) */
+"OcNxIj" = "Khai báo khối lượng Carb";
+
+/* (No Comment) */
"oLQSsJ" = "Enable '${overrideName}' Override Preset";
+
+/* (No Comment) */
+"XNNmtH" = "Enable preset in Loop";
+
+/* (No Comment) */
"yBzwCL" = "Override Selection";
+
+/* (No Comment) */
+"yc02Yq" = "Khai báo khối lượng Carb cho Loop";
+
+/* (No Comment) */
+"ZZ3mtM" = "Enable an override preset in Loop";
+
diff --git a/Common/zh-Hans-CN.lproj/Intents.strings b/Common/zh-Hans-CN.lproj/Intents.strings
new file mode 100644
index 0000000000..3c86a8a391
--- /dev/null
+++ b/Common/zh-Hans-CN.lproj/Intents.strings
@@ -0,0 +1,36 @@
+/* (No Comment) */
+"9KhaIS" = "I've set the preset";
+
+/* (No Comment) */
+"80eo5o" = "添加碳水化合物";
+
+/* (No Comment) */
+"b085BW" = "I wasn't able to set the preset.";
+
+/* (No Comment) */
+"I4OZy8" = "Enable Override Preset";
+
+/* (No Comment) */
+"lYMuWV" = "Override Name";
+
+/* (No Comment) */
+"nDKAmn" = "What's the name of the override you'd like to set?";
+
+/* (No Comment) */
+"OcNxIj" = "添加碳水化合物";
+
+/* (No Comment) */
+"oLQSsJ" = "Enable '${overrideName}' Override Preset";
+
+/* (No Comment) */
+"XNNmtH" = "Enable preset in Loop";
+
+/* (No Comment) */
+"yBzwCL" = "Override Selection";
+
+/* (No Comment) */
+"yc02Yq" = "将碳水化合物添加到Loop";
+
+/* (No Comment) */
+"ZZ3mtM" = "Enable an override preset in Loop";
+
diff --git a/Common/zh-Hans-CN.lproj/Localizable.strings b/Common/zh-Hans-CN.lproj/Localizable.strings
new file mode 100644
index 0000000000..be5965c657
--- /dev/null
+++ b/Common/zh-Hans-CN.lproj/Localizable.strings
@@ -0,0 +1,54 @@
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v%2$@";
+
+/* Title of the user activity for adding carbs */
+"Add Carb Entry" = "添加碳水化合物";
+
+/* Lesson subtitle */
+"Computes the percentage of glucose measurements within a specified range" = "计算在指定范围内的血糖测量值的百分比";
+
+/* Title of the button to begin lesson execution */
+"Continue" = "继续";
+
+/* The short unit display string for decibles */
+"dB" = "dB";
+
+/* The short unit display string for grams */
+"g" = "克";
+
+/* Placeholder for upper range entry */
+"Maximum" = "最大";
+
+/* The short unit display string for milligrams of glucose per decilter */
+"mg/dL" = "毫克/分升";
+
+/* Placeholder for lower range entry */
+"Minimum" = "最小";
+
+/* The short unit display string for millimoles of glucose per liter */
+"mmol/L" = "毫摩尔/升";
+
+/* Lesson result text for no data */
+"No data available" = "无数据";
+
+/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
+"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
+
+/* Section title for glucose range */
+"Range" = "范围";
+
+/* Title of config entry */
+"Start Date" = "开始日期";
+
+/* Lesson title */
+"Time in Range" = "在目标范围的时间";
+
+/* The short unit display string for international units of insulin */
+"U" = "单位";
+
+/* Lesson subtitle */
+"Visualizes the most frequent glucose values by time of day" = "全天血糖数据";
+
+/* Unit string for a count of calendar weeks */
+"Weeks" = "周";
+
diff --git a/Common/zh-Hans.lproj/Intents.strings b/Common/zh-Hans.lproj/Intents.strings
index cff018b0c0..16f21e6b21 100644
--- a/Common/zh-Hans.lproj/Intents.strings
+++ b/Common/zh-Hans.lproj/Intents.strings
@@ -7,12 +7,3 @@
/* (No Comment) */
"yc02Yq" = "将碳水化合物添加到Loop";
-"9KhaIS" = "I've set the preset";
-"I4OZy8" = "Enable Override Preset";
-"XNNmtH" = "Enable preset in Loop";
-"ZZ3mtM" = "Enable an override preset in Loop";
-"b085BW" = "I wasn't able to set the preset.";
-"lYMuWV" = "Override Name";
-"nDKAmn" = "What's the name of the override you'd like to set?";
-"oLQSsJ" = "Enable '${overrideName}' Override Preset";
-"yBzwCL" = "Override Selection";
diff --git a/Common/zh-Hans.lproj/Localizable.strings b/Common/zh-Hans.lproj/Localizable.strings
index be5965c657..62b18b0ecd 100644
--- a/Common/zh-Hans.lproj/Localizable.strings
+++ b/Common/zh-Hans.lproj/Localizable.strings
@@ -1,6 +1,3 @@
-/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
-"%1$@ v%2$@" = "%1$@ v%2$@";
-
/* Title of the user activity for adding carbs */
"Add Carb Entry" = "添加碳水化合物";
@@ -10,9 +7,6 @@
/* Title of the button to begin lesson execution */
"Continue" = "继续";
-/* The short unit display string for decibles */
-"dB" = "dB";
-
/* The short unit display string for grams */
"g" = "克";
@@ -31,9 +25,6 @@
/* Lesson result text for no data */
"No data available" = "无数据";
-/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
-"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
-
/* Section title for glucose range */
"Range" = "范围";
diff --git a/DoseMathTests/DoseMathTests.swift b/DoseMathTests/DoseMathTests.swift
index ce9e1767bf..5205955465 100644
--- a/DoseMathTests/DoseMathTests.swift
+++ b/DoseMathTests/DoseMathTests.swift
@@ -751,7 +751,7 @@ class RecommendTempBasalTests: XCTestCase {
func testHighAndFalling() {
let glucose = loadGlucoseValueFixture("recommend_temp_basal_high_and_falling")
-
+
let insulinModel = WalshInsulinModel(actionDuration: insulinActionDuration, delay: 0)
let dose = glucose.recommendedTempBasal(
diff --git a/DoseMathTests/da.lproj/Localizable.strings b/DoseMathTests/da.lproj/Localizable.strings
index 13db793a4f..8161cac496 100644
--- a/DoseMathTests/da.lproj/Localizable.strings
+++ b/DoseMathTests/da.lproj/Localizable.strings
@@ -1,5 +1,5 @@
/* Message when offering bolus recommendation even though bg is below range. (1: glucose value) */
-"Current glucose of %1$@ is below correction range." = "Current glucose of %1$@ is below correction range.";
+"Current glucose of %1$@ is below correction range." = "Den aktuelle glukose for %1$@ er under korrektionsområdet.";
/* The short unit display string for decibles */
"dB" = "dB";
@@ -14,10 +14,16 @@
"mmol/L" = "mmol/L";
/* Message when offering bolus recommendation even though bg is below range and minBG is in future. (1: glucose time)(2: glucose number) */
-"Predicted glucose at %1$@ is %2$@." = "Predicted glucose at %1$@ is %2$@.";
+"Predicted glucose at %1$@ is %2$@." = "Forventet glukose ved %1$@ er %2$@.";
+
+/* Notice when predicted glucose for bolus recommendation is in range */
+"Predicted glucose is in range." = "Den forventede glukose er inden for intervallet.";
+
+/* Notice message when recommending bolus when BG is below the glucose safety limit. (1: glucose value) */
+"Predicted glucose of %1$@ is below your glucose safety limit setting." = "Det forventede glukoseindhold på %1$@ er under din indstilling af glukose-sikkerhedsgrænsen.";
/* Notice message when recommending bolus when BG is below the suspend threshold. (1: glucose value) */
-"Predicted glucose of %1$@ is below your suspend threshold setting." = "Predicted glucose of %1$@ is below your suspend threshold setting.";
+"Predicted glucose of %1$@ is below your suspend threshold setting." = "Forventet glukose på %1$@ er under din indstilling for suspenderingstærskel.";
/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
diff --git a/DoseMathTests/es.lproj/Localizable.strings b/DoseMathTests/es.lproj/Localizable.strings
index ea86cdbd48..f13cea3d92 100644
--- a/DoseMathTests/es.lproj/Localizable.strings
+++ b/DoseMathTests/es.lproj/Localizable.strings
@@ -16,6 +16,12 @@
/* Message when offering bolus recommendation even though bg is below range and minBG is in future. (1: glucose time)(2: glucose number) */
"Predicted glucose at %1$@ is %2$@." = "Glucosa proyectada en %1$@ es %2$@.";
+/* Notice when predicted glucose for bolus recommendation is in range */
+"Predicted glucose is in range." = "La glucosa proyectada está en rango";
+
+/* Notice message when recommending bolus when BG is below the glucose safety limit. (1: glucose value) */
+"Predicted glucose of %1$@ is below your glucose safety limit setting." = "La glucosa proyectada de %1$@ está por debajo del límite de seguridad de glucosa";
+
/* Notice message when recommending bolus when BG is below the suspend threshold. (1: glucose value) */
"Predicted glucose of %1$@ is below your suspend threshold setting." = "Glucosa proyectada de %1$@ se encuentra debajo de tu nivel de suspensión.";
diff --git a/DoseMathTests/fi.lproj/Localizable.strings b/DoseMathTests/fi.lproj/Localizable.strings
index 95e33d98bb..5e7c365eb4 100644
--- a/DoseMathTests/fi.lproj/Localizable.strings
+++ b/DoseMathTests/fi.lproj/Localizable.strings
@@ -16,6 +16,9 @@
/* Message when offering bolus recommendation even though bg is below range and minBG is in future. (1: glucose time)(2: glucose number) */
"Predicted glucose at %1$@ is %2$@." = "Predicted glucose at %1$@ is %2$@.";
+/* Notice message when recommending bolus when BG is below the glucose safety limit. (1: glucose value) */
+"Predicted glucose of %1$@ is below your glucose safety limit setting." = "Ennustettu glukoosi %1$@ on turvarajan alapuolella.";
+
/* Notice message when recommending bolus when BG is below the suspend threshold. (1: glucose value) */
"Predicted glucose of %1$@ is below your suspend threshold setting." = "Predicted glucose of %1$@ is below your suspend threshold setting.";
diff --git a/DoseMathTests/fr.lproj/Localizable.strings b/DoseMathTests/fr.lproj/Localizable.strings
index a148669627..c8074ebd51 100644
--- a/DoseMathTests/fr.lproj/Localizable.strings
+++ b/DoseMathTests/fr.lproj/Localizable.strings
@@ -16,6 +16,12 @@
/* Message when offering bolus recommendation even though bg is below range and minBG is in future. (1: glucose time)(2: glucose number) */
"Predicted glucose at %1$@ is %2$@." = "Glycémie de %2$@ prédite pour %1$@.";
+/* Notice when predicted glucose for bolus recommendation is in range */
+"Predicted glucose is in range." = "La glycémie prévue est dans la plage.";
+
+/* Notice message when recommending bolus when BG is below the glucose safety limit. (1: glucose value) */
+"Predicted glucose of %1$@ is below your glucose safety limit setting." = "La glycémie prévue à %1$@ est en dessous de la limite de sécurité paramétrée pour la glycémie.";
+
/* Notice message when recommending bolus when BG is below the suspend threshold. (1: glucose value) */
"Predicted glucose of %1$@ is below your suspend threshold setting." = "Prédiction de la glycémie à %1$@ sous le seuil de suspension défini.";
diff --git a/DoseMathTests/he.lproj/Localizable.strings b/DoseMathTests/he.lproj/Localizable.strings
index cb195752e8..95e33d98bb 100644
--- a/DoseMathTests/he.lproj/Localizable.strings
+++ b/DoseMathTests/he.lproj/Localizable.strings
@@ -24,3 +24,4 @@
/* The short unit display string for international units of insulin */
"U" = "U";
+
diff --git a/DoseMathTests/it.lproj/Localizable.strings b/DoseMathTests/it.lproj/Localizable.strings
index ac7b220625..0e03d8336f 100644
--- a/DoseMathTests/it.lproj/Localizable.strings
+++ b/DoseMathTests/it.lproj/Localizable.strings
@@ -1,5 +1,5 @@
/* Message when offering bolus recommendation even though bg is below range. (1: glucose value) */
-"Current glucose of %1$@ is below correction range." = "La glicemia corrente %1$@ é al di sotto dell'intervallo glicemico selezionato.";
+"Current glucose of %1$@ is below correction range." = "La glicemia attuale di %1$@ è al di sotto dell'intervallo glicemico selezionato.";
/* The short unit display string for decibles */
"dB" = "dB";
@@ -16,6 +16,12 @@
/* Message when offering bolus recommendation even though bg is below range and minBG is in future. (1: glucose time)(2: glucose number) */
"Predicted glucose at %1$@ is %2$@." = "La glicemia prevista a %1$@ è %2$@.";
+/* Notice when predicted glucose for bolus recommendation is in range */
+"Predicted glucose is in range." = "La glicemia prevista è nell'intervallo";
+
+/* Notice message when recommending bolus when BG is below the glucose safety limit. (1: glucose value) */
+"Predicted glucose of %1$@ is below your glucose safety limit setting." = "La glicemia prevista da %1$@ è al di sotto del tuo limite glicemico di sicurezza";
+
/* Notice message when recommending bolus when BG is below the suspend threshold. (1: glucose value) */
"Predicted glucose of %1$@ is below your suspend threshold setting." = "La glicemia prevista %1$@ è inferiore al valore glicemico previsto per la sospensione dell'erogazione.";
diff --git a/DoseMathTests/nb.lproj/Localizable.strings b/DoseMathTests/nb.lproj/Localizable.strings
index f76a4f8154..dd170d0003 100644
--- a/DoseMathTests/nb.lproj/Localizable.strings
+++ b/DoseMathTests/nb.lproj/Localizable.strings
@@ -16,6 +16,12 @@
/* Message when offering bolus recommendation even though bg is below range and minBG is in future. (1: glucose time)(2: glucose number) */
"Predicted glucose at %1$@ is %2$@." = "Forventet blodsukker om %1$@ er %2$@.";
+/* Notice when predicted glucose for bolus recommendation is in range */
+"Predicted glucose is in range." = "Forventet glukose er innenfor målområdet.";
+
+/* Notice message when recommending bolus when BG is below the glucose safety limit. (1: glucose value) */
+"Predicted glucose of %1$@ is below your glucose safety limit setting." = "Forventet blodsukker %1$@ er under innstilling for insulinstopp.";
+
/* Notice message when recommending bolus when BG is below the suspend threshold. (1: glucose value) */
"Predicted glucose of %1$@ is below your suspend threshold setting." = "Forventet blodsukker %1$@ er under innstillingen for insulinstopp.";
diff --git a/DoseMathTests/nl.lproj/Localizable.strings b/DoseMathTests/nl.lproj/Localizable.strings
index f104ed4a4d..943b6cfb5e 100644
--- a/DoseMathTests/nl.lproj/Localizable.strings
+++ b/DoseMathTests/nl.lproj/Localizable.strings
@@ -1,11 +1,11 @@
/* Message when offering bolus recommendation even though bg is below range. (1: glucose value) */
-"Current glucose of %1$@ is below correction range." = "Huidige glucose van %1$@ is onder het correctie bereik.";
+"Current glucose of %1$@ is below correction range." = "Huidige glucose van %1$@ is onder het correctiebereik.";
/* The short unit display string for decibles */
"dB" = "dB";
/* The short unit display string for grams */
-"g" = "gr";
+"g" = "g";
/* The short unit display string for milligrams of glucose per decilter */
"mg/dL" = "mg/dL";
@@ -14,10 +14,16 @@
"mmol/L" = "mmol/L";
/* Message when offering bolus recommendation even though bg is below range and minBG is in future. (1: glucose time)(2: glucose number) */
-"Predicted glucose at %1$@ is %2$@." = "Voorspelde glucose van %1$@ is %2$@.";
+"Predicted glucose at %1$@ is %2$@." = "Voorspelde glucose om %1$@ is %2$@.";
+
+/* Notice when predicted glucose for bolus recommendation is in range */
+"Predicted glucose is in range." = "Voorspelde glucose is binnen bereik.";
+
+/* Notice message when recommending bolus when BG is below the glucose safety limit. (1: glucose value) */
+"Predicted glucose of %1$@ is below your glucose safety limit setting." = "Voorspelde glucose van %1$@ ligt onder je ingestelde glucoseveiligheidslimiet.";
/* Notice message when recommending bolus when BG is below the suspend threshold. (1: glucose value) */
-"Predicted glucose of %1$@ is below your suspend threshold setting." = "Voorspelde glucose van %1$@ is onder het onderbreken van basaal instelling.";
+"Predicted glucose of %1$@ is below your suspend threshold setting." = "Verwachte glucose van %1$@ is lager dan je ingestelde insulineonderbrekingsdrempel.";
/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
diff --git a/DoseMathTests/pl.lproj/Localizable.strings b/DoseMathTests/pl.lproj/Localizable.strings
index de8ed4e1d2..2e6524a217 100644
--- a/DoseMathTests/pl.lproj/Localizable.strings
+++ b/DoseMathTests/pl.lproj/Localizable.strings
@@ -16,6 +16,12 @@
/* Message when offering bolus recommendation even though bg is below range and minBG is in future. (1: glucose time)(2: glucose number) */
"Predicted glucose at %1$@ is %2$@." = "Przewidywany cukier o %1$@ wyniesie %2$@.";
+/* Notice when predicted glucose for bolus recommendation is in range */
+"Predicted glucose is in range." = "Przewidywane stężenie glukozy jest w zakresie.";
+
+/* Notice message when recommending bolus when BG is below the glucose safety limit. (1: glucose value) */
+"Predicted glucose of %1$@ is below your glucose safety limit setting." = "Przewidywany poziom cukru %1$@ jest poniżej progu zawieszenia.";
+
/* Notice message when recommending bolus when BG is below the suspend threshold. (1: glucose value) */
"Predicted glucose of %1$@ is below your suspend threshold setting." = "Przewidywany poziom cukru %1$@ jest poniżej progu wstrzymania.";
@@ -24,3 +30,4 @@
/* The short unit display string for international units of insulin */
"U" = "J";
+
diff --git a/DoseMathTests/ro.lproj/Localizable.strings b/DoseMathTests/ro.lproj/Localizable.strings
index 95e33d98bb..67dd1e84f9 100644
--- a/DoseMathTests/ro.lproj/Localizable.strings
+++ b/DoseMathTests/ro.lproj/Localizable.strings
@@ -16,6 +16,12 @@
/* Message when offering bolus recommendation even though bg is below range and minBG is in future. (1: glucose time)(2: glucose number) */
"Predicted glucose at %1$@ is %2$@." = "Predicted glucose at %1$@ is %2$@.";
+/* Notice when predicted glucose for bolus recommendation is in range */
+"Predicted glucose is in range." = "Glicemia prognozată este în interval.";
+
+/* Notice message when recommending bolus when BG is below the glucose safety limit. (1: glucose value) */
+"Predicted glucose of %1$@ is below your glucose safety limit setting." = "Glicemia prognozată de %1$@ se situează sub limita de siguranță configurată.";
+
/* Notice message when recommending bolus when BG is below the suspend threshold. (1: glucose value) */
"Predicted glucose of %1$@ is below your suspend threshold setting." = "Predicted glucose of %1$@ is below your suspend threshold setting.";
diff --git a/DoseMathTests/ru.lproj/Localizable.strings b/DoseMathTests/ru.lproj/Localizable.strings
index c15e8d72e7..aa8fae2e84 100644
--- a/DoseMathTests/ru.lproj/Localizable.strings
+++ b/DoseMathTests/ru.lproj/Localizable.strings
@@ -2,7 +2,7 @@
"Current glucose of %1$@ is below correction range." = " Текущая гликемия %1$@ ниже диапазона коррекции";
/* The short unit display string for decibles */
-"dB" = "dB";
+"dB" = "дБ";
/* The short unit display string for grams */
"g" = "г";
@@ -14,7 +14,13 @@
"mmol/L" = "ммоль/л";
/* Message when offering bolus recommendation even though bg is below range and minBG is in future. (1: glucose time)(2: glucose number) */
-"Predicted glucose at %1$@ is %2$@." = "Предсказываемая гликемия в %1$@ - %2$@.";
+"Predicted glucose at %1$@ is %2$@." = "Прогнозируемый уровень глюкозы на %1$@ составляет %2$@.";
+
+/* Notice when predicted glucose for bolus recommendation is in range */
+"Predicted glucose is in range." = "Прогнозируемый уровень глюкозы находится в диапазоне.";
+
+/* Notice message when recommending bolus when BG is below the glucose safety limit. (1: glucose value) */
+"Predicted glucose of %1$@ is below your glucose safety limit setting." = "Прогнозируемое значение глюкозы %1$@ ниже установленного вами предела безопасности глюкозы.";
/* Notice message when recommending bolus when BG is below the suspend threshold. (1: glucose value) */
"Predicted glucose of %1$@ is below your suspend threshold setting." = "Предсказываемая гликемия %1$@ ниже установленного вами порога приостановки помпы";
diff --git a/DoseMathTests/sk.lproj/Localizable.strings b/DoseMathTests/sk.lproj/Localizable.strings
new file mode 100644
index 0000000000..a8f518bed3
--- /dev/null
+++ b/DoseMathTests/sk.lproj/Localizable.strings
@@ -0,0 +1,27 @@
+/* Message when offering bolus recommendation even though bg is below range. (1: glucose value) */
+"Current glucose of %1$@ is below correction range." = "Aktuálna glykémie %1$@ je pod cieľovým rozsahom.";
+
+/* The short unit display string for decibles */
+"dB" = "dB";
+
+/* The short unit display string for grams */
+"g" = "g";
+
+/* The short unit display string for milligrams of glucose per decilter */
+"mg/dL" = "mg/dL";
+
+/* The short unit display string for millimoles of glucose per liter */
+"mmol/L" = "mmol/L";
+
+/* Message when offering bolus recommendation even though bg is below range and minBG is in future. (1: glucose time)(2: glucose number) */
+"Predicted glucose at %1$@ is %2$@." = "Predpokladaná glykémia o %1$@ je %2$@ .";
+
+/* Notice when predicted glucose for bolus recommendation is in range */
+"Predicted glucose is in range." = "Predpokladaná glykémia je v cieľovom rozsahu.";
+
+/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
+"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
+
+/* The short unit display string for international units of insulin */
+"U" = "j";
+
diff --git a/DoseMathTests/sv.lproj/Localizable.strings b/DoseMathTests/sv.lproj/Localizable.strings
index b992061cd5..9049443d9b 100644
--- a/DoseMathTests/sv.lproj/Localizable.strings
+++ b/DoseMathTests/sv.lproj/Localizable.strings
@@ -16,6 +16,9 @@
/* Message when offering bolus recommendation even though bg is below range and minBG is in future. (1: glucose time)(2: glucose number) */
"Predicted glucose at %1$@ is %2$@." = "Förväntat glukosvärde vid %1$@ är %2$@.";
+/* Notice message when recommending bolus when BG is below the glucose safety limit. (1: glucose value) */
+"Predicted glucose of %1$@ is below your glucose safety limit setting." = "Förväntat glukosvärde på %1$@ är under ditt tröskelvärde.";
+
/* Notice message when recommending bolus when BG is below the suspend threshold. (1: glucose value) */
"Predicted glucose of %1$@ is below your suspend threshold setting." = "Det förväntade slutglukosvärdet %1$@ är under ditt angivna tröskelvärde.";
diff --git a/DoseMathTests/tr.lproj/Localizable.strings b/DoseMathTests/tr.lproj/Localizable.strings
index cb195752e8..16eb8735b9 100644
--- a/DoseMathTests/tr.lproj/Localizable.strings
+++ b/DoseMathTests/tr.lproj/Localizable.strings
@@ -1,11 +1,11 @@
/* Message when offering bolus recommendation even though bg is below range. (1: glucose value) */
-"Current glucose of %1$@ is below correction range." = "Current glucose of %1$@ is below correction range.";
+"Current glucose of %1$@ is below correction range." = "%1$@ Mevcut KŞ düzeltme aralığının altında.";
/* The short unit display string for decibles */
"dB" = "dB";
/* The short unit display string for grams */
-"g" = "g";
+"g" = "gr";
/* The short unit display string for milligrams of glucose per decilter */
"mg/dL" = "mg/dL";
@@ -14,13 +14,20 @@
"mmol/L" = "mmol/L";
/* Message when offering bolus recommendation even though bg is below range and minBG is in future. (1: glucose time)(2: glucose number) */
-"Predicted glucose at %1$@ is %2$@." = "Predicted glucose at %1$@ is %2$@.";
+"Predicted glucose at %1$@ is %2$@." = "Tahmini KŞ %1$@ %2$@.";
+
+/* Notice when predicted glucose for bolus recommendation is in range */
+"Predicted glucose is in range." = "Tahmini KŞ aralık içinde.";
+
+/* Notice message when recommending bolus when BG is below the glucose safety limit. (1: glucose value) */
+"Predicted glucose of %1$@ is below your glucose safety limit setting." = "%1$@ tahmini KŞ, KŞ güvenlik limiti ayarınızın altında.";
/* Notice message when recommending bolus when BG is below the suspend threshold. (1: glucose value) */
-"Predicted glucose of %1$@ is below your suspend threshold setting." = "Predicted glucose of %1$@ is below your suspend threshold setting.";
+"Predicted glucose of %1$@ is below your suspend threshold setting." = "Tahmini KŞ %1$@ askıya alma eşiği ayarınızın altında.";
/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
/* The short unit display string for international units of insulin */
-"U" = "U";
+"U" = "Ü";
+
diff --git a/DoseMathTests/zh-Hans-CN.lproj/Localizable.strings b/DoseMathTests/zh-Hans-CN.lproj/Localizable.strings
new file mode 100644
index 0000000000..11863c50dc
--- /dev/null
+++ b/DoseMathTests/zh-Hans-CN.lproj/Localizable.strings
@@ -0,0 +1,27 @@
+/* Message when offering bolus recommendation even though bg is below range. (1: glucose value) */
+"Current glucose of %1$@ is below correction range." = "当前血糖%1$@低于纠正目标.";
+
+/* The short unit display string for decibles */
+"dB" = "dB";
+
+/* The short unit display string for grams */
+"g" = "克";
+
+/* The short unit display string for milligrams of glucose per decilter */
+"mg/dL" = "毫克/分升";
+
+/* The short unit display string for millimoles of glucose per liter */
+"mmol/L" = "毫摩尔/升";
+
+/* Message when offering bolus recommendation even though bg is below range and minBG is in future. (1: glucose time)(2: glucose number) */
+"Predicted glucose at %1$@ is %2$@." = "未来%1$@时间的血糖为%2$@.";
+
+/* Notice message when recommending bolus when BG is below the suspend threshold. (1: glucose value) */
+"Predicted glucose of %1$@ is below your suspend threshold setting." = "预计血糖%1$@低于低血糖暂停阈值";
+
+/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
+"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
+
+/* The short unit display string for international units of insulin */
+"U" = "单位";
+
diff --git a/DoseMathTests/zh-Hans.lproj/Localizable.strings b/DoseMathTests/zh-Hans.lproj/Localizable.strings
index 11863c50dc..db9ddea719 100644
--- a/DoseMathTests/zh-Hans.lproj/Localizable.strings
+++ b/DoseMathTests/zh-Hans.lproj/Localizable.strings
@@ -1,9 +1,6 @@
/* Message when offering bolus recommendation even though bg is below range. (1: glucose value) */
"Current glucose of %1$@ is below correction range." = "当前血糖%1$@低于纠正目标.";
-/* The short unit display string for decibles */
-"dB" = "dB";
-
/* The short unit display string for grams */
"g" = "克";
@@ -19,9 +16,6 @@
/* Notice message when recommending bolus when BG is below the suspend threshold. (1: glucose value) */
"Predicted glucose of %1$@ is below your suspend threshold setting." = "预计血糖%1$@低于低血糖暂停阈值";
-/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
-"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
-
/* The short unit display string for international units of insulin */
"U" = "单位";
diff --git a/Learn/Base.lproj/LaunchScreen.storyboard b/Learn/Base.lproj/LaunchScreen.storyboard
deleted file mode 100644
index bfa3612941..0000000000
--- a/Learn/Base.lproj/LaunchScreen.storyboard
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Learn/ar.lproj/Main.strings b/Learn/ar.lproj/Main.strings
index bb24a4e11e..6359029045 100644
--- a/Learn/ar.lproj/Main.strings
+++ b/Learn/ar.lproj/Main.strings
@@ -1,3 +1,3 @@
-
/* Class = "UINavigationItem"; title = "Learn"; ObjectID = "8hF-Ij-B7m"; */
"8hF-Ij-B7m.title" = "تعلم";
+
diff --git a/Learn/da.lproj/InfoPlist.strings b/Learn/da.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..bf67d54ddb
--- /dev/null
+++ b/Learn/da.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle name */
+"CFBundleName" = "Lær";
+
+/* Privacy - Health Share Usage Description */
+"NSHealthShareUsageDescription" = "Mad-data fra Health-databasen bruges til at bestemme blodsukkereffekten. Blodsukkerdata fra Health-databasen bruges til graftegning og momentumberegning. Søvndata fra sundhedsdatabasen bruges til at optimere leveringen af opdateringer om komplikationer af Apple Watch i den tid, du er vågen.";
+
diff --git a/Learn/da.lproj/Main.strings b/Learn/da.lproj/Main.strings
index 50fa41e306..d8d90ac21a 100644
--- a/Learn/da.lproj/Main.strings
+++ b/Learn/da.lproj/Main.strings
@@ -1,3 +1,3 @@
/* Class = "UINavigationItem"; title = "Learn"; ObjectID = "8hF-Ij-B7m"; */
-"8hF-Ij-B7m.title" = "Learn";
+"8hF-Ij-B7m.title" = "Lær";
diff --git a/Learn/de.lproj/InfoPlist.strings b/Learn/de.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..7b3a9db485
--- /dev/null
+++ b/Learn/de.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle name */
+"CFBundleName" = "Lerne";
+
+/* Privacy - Health Share Usage Description */
+"NSHealthShareUsageDescription" = "Mahlzeitendaten aus der Health Datenbank werden verwendet, um die Glukoseeffekte zu bestimmen. Glukosedaten aus der Health Datenbank werden zur grafischen Darstellung und Impulsberechnung verwendet. Schlafdaten aus der Health-Datenbank werden verwendet, um die Bereitstellung von Apple Watch-Komplikationsupdates während Ihrer Wachzeit zu optimieren.";
+
diff --git a/Learn/es.lproj/InfoPlist.strings b/Learn/es.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..9ca3ae0719
--- /dev/null
+++ b/Learn/es.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle name */
+"CFBundleName" = "Aprender";
+
+/* Privacy - Health Share Usage Description */
+"NSHealthShareUsageDescription" = "Los datos de alimentos de la base de datos de Salud se utilizan para determinar los efectos en el nivel de glucosa. Los datos de glucosa de la base de datos de Salud se utilizan para graficar y determinar cálculos de momento. Los datos de Sueño de la base de datos de Salud se utilizan para optimizar la entrega de actualizaciones de las complicaciones del Apple Watch durante el tiempo que está despierto.";
+
diff --git a/Learn/fi.lproj/InfoPlist.strings b/Learn/fi.lproj/InfoPlist.strings
index fbbd5eaa64..72a3c2f38b 100644
--- a/Learn/fi.lproj/InfoPlist.strings
+++ b/Learn/fi.lproj/InfoPlist.strings
@@ -1,3 +1,6 @@
+/* Bundle name */
+"CFBundleName" = "Opettele";
+
/* Privacy - Health Share Usage Description */
"NSHealthShareUsageDescription" = "Terveys-sovelluksen ateriatietoja käytetään glukoosivaikutusten määrittämiseen. Terveys-sovelluksen glukoositietoja käytetään graafeissa ja laskelmissa. Unitietoja käytetään Apple Watch -komplikaation toiminnan optimointiin hereillä olon aikana.";
diff --git a/Learn/fr.lproj/InfoPlist.strings b/Learn/fr.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..904ee70a5b
--- /dev/null
+++ b/Learn/fr.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle name */
+"CFBundleName" = "Apprendre";
+
+/* Privacy - Health Share Usage Description */
+"NSHealthShareUsageDescription" = "Les données sur les repas provenant de la base de données Santé sont utilisées pour déterminer les effets du glucose. Les données relatives au glucose provenant de la base de données Santé sont utilisées pour la création de graphiques et le calcul de l'élan. Les données relatives au sommeil provenant de la base de données Santé sont utilisées pour optimiser l'envoi des mises à jour des complications de l'Apple Watch pendant la période où vous êtes éveillé(e).";
+
diff --git a/Learn/he.lproj/LaunchScreen.strings b/Learn/he.lproj/LaunchScreen.strings
deleted file mode 100644
index 8b13789179..0000000000
--- a/Learn/he.lproj/LaunchScreen.strings
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/Learn/he.lproj/Main.strings b/Learn/he.lproj/Main.strings
index 6b8f04c045..50fa41e306 100644
--- a/Learn/he.lproj/Main.strings
+++ b/Learn/he.lproj/Main.strings
@@ -1,3 +1,3 @@
-
/* Class = "UINavigationItem"; title = "Learn"; ObjectID = "8hF-Ij-B7m"; */
"8hF-Ij-B7m.title" = "Learn";
+
diff --git a/Learn/it.lproj/InfoPlist.strings b/Learn/it.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..3cf2b9683c
--- /dev/null
+++ b/Learn/it.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle name */
+"CFBundleName" = "Impara";
+
+/* Privacy - Health Share Usage Description */
+"NSHealthShareUsageDescription" = "I dati sui pasti del database Salute vengono utilizzati per determinare gli effetti del glucosio. I dati sul glucosio del database Salute vengono utilizzati per la rappresentazione grafica e il calcolo del momento. I dati sul sonno del database Salute vengono utilizzati per ottimizzare la consegna degli aggiornamenti delle complicazioni di Apple Watch durante il periodo di veglia.";
+
diff --git a/Learn/nb.lproj/InfoPlist.strings b/Learn/nb.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..874720150f
--- /dev/null
+++ b/Learn/nb.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle name */
+"CFBundleName" = "Lære";
+
+/* Privacy - Health Share Usage Description */
+"NSHealthShareUsageDescription" = "Måltidsdata fra helsedatabasen brukes til å bestemme glukoseeffekter. Glukosedata fra helsedatabasen brukes til grafer og momentumberegning. Søvndata fra helsedatabasen brukes til å optimalisere leveringen av Apple Watch-komplikasjonsoppdateringer når du er våken.";
+
diff --git a/Learn/nl.lproj/InfoPlist.strings b/Learn/nl.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..2d6020792e
--- /dev/null
+++ b/Learn/nl.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle name */
+"CFBundleName" = "Leer";
+
+/* Privacy - Health Share Usage Description */
+"NSHealthShareUsageDescription" = "Maaltijdgegevens uit de database Gezondheid worden gebruikt om glucose-effecenten te bepalen. Glucosegegevens uit de database Gezondheid worden gebruikt voor grafieken en het berekenen van trendlijnen. Slaapgegevens uit de database Gezondheid worden gebruikt om de Apple Watch complicatie bij te werken wanneer je wakker bent.";
+
diff --git a/Learn/pl.lproj/InfoPlist.strings b/Learn/pl.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..afba6db611
--- /dev/null
+++ b/Learn/pl.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle name */
+"CFBundleName" = "Learn";
+
+/* Privacy - Health Share Usage Description */
+"NSHealthShareUsageDescription" = "Dane posiłków z bazy danych aplikacji Zdrowie służą do określania wpływu glukozy. Dane dotyczące glukozy z bazy danych aplikacji Zdrowie są wykorzystywane do tworzenia wykresów i wyznaczania trendu. Dane dotyczące snu z bazy danych aplikacji Zdrowie służą do optymalizacji dostarczania aktualizacji komplikacji Apple Watch w czasie, gdy nie śpisz.";
+
diff --git a/Learn/pl.lproj/Main.strings b/Learn/pl.lproj/Main.strings
index 6b8f04c045..50fa41e306 100644
--- a/Learn/pl.lproj/Main.strings
+++ b/Learn/pl.lproj/Main.strings
@@ -1,3 +1,3 @@
-
/* Class = "UINavigationItem"; title = "Learn"; ObjectID = "8hF-Ij-B7m"; */
"8hF-Ij-B7m.title" = "Learn";
+
diff --git a/Learn/ro.lproj/InfoPlist.strings b/Learn/ro.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..7b3f99c93d
--- /dev/null
+++ b/Learn/ro.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle name */
+"CFBundleName" = "Learn";
+
+/* Privacy - Health Share Usage Description */
+"NSHealthShareUsageDescription" = "Datele mesei din baza de date din aplicația Sănătate sunt folosite pentru a determina efectele glicemice. Datele despre glicemie din baza de date Sănătate sunt folosite pentru construirea graficelor și calcularea influențelor glicemice. Datele de somn din baza de date Sănătate sunt folosite pentru a optimiza livrarea de actualizări de datele ale ceasului Apple pe perioada când sunteți treaz.";
+
diff --git a/Learn/ru.lproj/InfoPlist.strings b/Learn/ru.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..c0198b35f9
--- /dev/null
+++ b/Learn/ru.lproj/InfoPlist.strings
@@ -0,0 +1,3 @@
+/* Bundle name */
+"CFBundleName" = "Узнать";
+
diff --git a/Learn/sk.lproj/InfoPlist.strings b/Learn/sk.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..da8422aedb
--- /dev/null
+++ b/Learn/sk.lproj/InfoPlist.strings
@@ -0,0 +1,3 @@
+/* Privacy - Health Share Usage Description */
+"NSHealthShareUsageDescription" = "Údaje o jedle z databázy Health sa používajú na určenie účinkov glukózy. Údaje o glukóze z databázy Health sa používajú na vytváranie grafov a výpočet hybnosti. Údaje o spánku z databázy Health sa používajú na optimalizáciu doručovania aktualizácií komplikácií Apple Watch v čase, keď ste hore.";
+
diff --git a/Learn/sv.lproj/InfoPlist.strings b/Learn/sv.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..55302cd95c
--- /dev/null
+++ b/Learn/sv.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle name */
+"CFBundleName" = "Learn";
+
+/* Privacy - Health Share Usage Description */
+"NSHealthShareUsageDescription" = "Kolhydratdata från Apple Health-databasen används för att avgöra blodsockereffekt. Blodsockervärden från Apple Health-databasen används i diagram och för beräkning av förändring.";
+
diff --git a/Learn/tr.lproj/InfoPlist.strings b/Learn/tr.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..7ff69b11e8
--- /dev/null
+++ b/Learn/tr.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle name */
+"CFBundleName" = "Öğren";
+
+/* Privacy - Health Share Usage Description */
+"NSHealthShareUsageDescription" = "Sağlık veri tabanından alınan yemek verileri, glikoz etkilerini belirlemek için kullanılır. Sağlık veri tabanından alınan glikoz verileri, grafik ve momentum hesaplaması için kullanılır. Sağlık veritabanındaki uyku verileri, uyanık olduğunuz süre boyunca Apple Watch komplikasyon güncellemelerinin teslimini optimize etmek için kullanılır.";
+
diff --git a/Learn/tr.lproj/LaunchScreen.strings b/Learn/tr.lproj/LaunchScreen.strings
deleted file mode 100644
index 8b13789179..0000000000
--- a/Learn/tr.lproj/LaunchScreen.strings
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/Learn/tr.lproj/Main.strings b/Learn/tr.lproj/Main.strings
index 6b8f04c045..92d1c6c547 100644
--- a/Learn/tr.lproj/Main.strings
+++ b/Learn/tr.lproj/Main.strings
@@ -1,3 +1,3 @@
-
/* Class = "UINavigationItem"; title = "Learn"; ObjectID = "8hF-Ij-B7m"; */
-"8hF-Ij-B7m.title" = "Learn";
+"8hF-Ij-B7m.title" = "Öğren";
+
diff --git a/Learn/zh-Hans-CN.lproj/Main.strings b/Learn/zh-Hans-CN.lproj/Main.strings
new file mode 100644
index 0000000000..50fa41e306
--- /dev/null
+++ b/Learn/zh-Hans-CN.lproj/Main.strings
@@ -0,0 +1,3 @@
+/* Class = "UINavigationItem"; title = "Learn"; ObjectID = "8hF-Ij-B7m"; */
+"8hF-Ij-B7m.title" = "Learn";
+
diff --git a/Loop Intent Extension/da.lproj/InfoPlist.strings b/Loop Intent Extension/da.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..e1fa874bc4
--- /dev/null
+++ b/Loop Intent Extension/da.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Loop Intent-udvidelse";
+
+/* Bundle name */
+"CFBundleName" = "Loop Intent-udvidelse";
+
diff --git a/Loop Intent Extension/da.lproj/Localizable.strings b/Loop Intent Extension/da.lproj/Localizable.strings
new file mode 100644
index 0000000000..f4d2b4576f
--- /dev/null
+++ b/Loop Intent Extension/da.lproj/Localizable.strings
@@ -0,0 +1,3 @@
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v%2$@";
+
diff --git a/Loop Intent Extension/de.lproj/InfoPlist.strings b/Loop Intent Extension/de.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..b26b270e4a
--- /dev/null
+++ b/Loop Intent Extension/de.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Loop Absichts Erweiterung";
+
+/* Bundle name */
+"CFBundleName" = "Loop Absichts Erweiterung";
+
diff --git a/Loop Intent Extension/de.lproj/Localizable.strings b/Loop Intent Extension/de.lproj/Localizable.strings
new file mode 100644
index 0000000000..f4d2b4576f
--- /dev/null
+++ b/Loop Intent Extension/de.lproj/Localizable.strings
@@ -0,0 +1,3 @@
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v%2$@";
+
diff --git a/Loop Intent Extension/es.lproj/InfoPlist.strings b/Loop Intent Extension/es.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..0ddf6e188b
--- /dev/null
+++ b/Loop Intent Extension/es.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Extensión de Intención de Loop";
+
+/* Bundle name */
+"CFBundleName" = "Extensión de Intención de Loop";
+
diff --git a/Loop Intent Extension/es.lproj/Localizable.strings b/Loop Intent Extension/es.lproj/Localizable.strings
new file mode 100644
index 0000000000..f4d2b4576f
--- /dev/null
+++ b/Loop Intent Extension/es.lproj/Localizable.strings
@@ -0,0 +1,3 @@
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v%2$@";
+
diff --git a/Loop Intent Extension/fi.lproj/InfoPlist.strings b/Loop Intent Extension/fi.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..7dba838e53
--- /dev/null
+++ b/Loop Intent Extension/fi.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Loop Intent Extension";
+
+/* Bundle name */
+"CFBundleName" = "Loop Intent Extension";
+
diff --git a/Loop Intent Extension/fi.lproj/Localizable.strings b/Loop Intent Extension/fi.lproj/Localizable.strings
new file mode 100644
index 0000000000..f4d2b4576f
--- /dev/null
+++ b/Loop Intent Extension/fi.lproj/Localizable.strings
@@ -0,0 +1,3 @@
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v%2$@";
+
diff --git a/Loop Intent Extension/fr.lproj/InfoPlist.strings b/Loop Intent Extension/fr.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..7dba838e53
--- /dev/null
+++ b/Loop Intent Extension/fr.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Loop Intent Extension";
+
+/* Bundle name */
+"CFBundleName" = "Loop Intent Extension";
+
diff --git a/Loop Intent Extension/fr.lproj/Localizable.strings b/Loop Intent Extension/fr.lproj/Localizable.strings
new file mode 100644
index 0000000000..f4d2b4576f
--- /dev/null
+++ b/Loop Intent Extension/fr.lproj/Localizable.strings
@@ -0,0 +1,3 @@
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v%2$@";
+
diff --git a/Loop Intent Extension/it.lproj/InfoPlist.strings b/Loop Intent Extension/it.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..d7b1b818ad
--- /dev/null
+++ b/Loop Intent Extension/it.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Estensione dell'intento di Loop";
+
+/* Bundle name */
+"CFBundleName" = "Estensione dell'intento di Loop";
+
diff --git a/Loop Intent Extension/it.lproj/Localizable.strings b/Loop Intent Extension/it.lproj/Localizable.strings
new file mode 100644
index 0000000000..f4d2b4576f
--- /dev/null
+++ b/Loop Intent Extension/it.lproj/Localizable.strings
@@ -0,0 +1,3 @@
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v%2$@";
+
diff --git a/Loop Intent Extension/nb.lproj/InfoPlist.strings b/Loop Intent Extension/nb.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..359db83e9d
--- /dev/null
+++ b/Loop Intent Extension/nb.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Utvidelse av Loop intensjon";
+
+/* Bundle name */
+"CFBundleName" = "Utvidelse av Loop intensjon";
+
diff --git a/Loop Intent Extension/nb.lproj/Localizable.strings b/Loop Intent Extension/nb.lproj/Localizable.strings
new file mode 100644
index 0000000000..0039fc241d
--- /dev/null
+++ b/Loop Intent Extension/nb.lproj/Localizable.strings
@@ -0,0 +1,3 @@
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v %2$@";
+
diff --git a/Loop Intent Extension/nl.lproj/InfoPlist.strings b/Loop Intent Extension/nl.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..7e45d4d58b
--- /dev/null
+++ b/Loop Intent Extension/nl.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Loop Intent Extensie";
+
+/* Bundle name */
+"CFBundleName" = "Loop Intent Extensie";
+
diff --git a/Loop Intent Extension/nl.lproj/Localizable.strings b/Loop Intent Extension/nl.lproj/Localizable.strings
new file mode 100644
index 0000000000..f4d2b4576f
--- /dev/null
+++ b/Loop Intent Extension/nl.lproj/Localizable.strings
@@ -0,0 +1,3 @@
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v%2$@";
+
diff --git a/Loop Intent Extension/pl.lproj/InfoPlist.strings b/Loop Intent Extension/pl.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..cd00fdf1ea
--- /dev/null
+++ b/Loop Intent Extension/pl.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Rozbudowanie celu loop";
+
+/* Bundle name */
+"CFBundleName" = "Loop Intent Extension";
+
diff --git a/Loop Intent Extension/pl.lproj/Localizable.strings b/Loop Intent Extension/pl.lproj/Localizable.strings
new file mode 100644
index 0000000000..f4d2b4576f
--- /dev/null
+++ b/Loop Intent Extension/pl.lproj/Localizable.strings
@@ -0,0 +1,3 @@
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v%2$@";
+
diff --git a/Loop Intent Extension/ro.lproj/InfoPlist.strings b/Loop Intent Extension/ro.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..a9ddd00908
--- /dev/null
+++ b/Loop Intent Extension/ro.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Extensie Intent Loop";
+
+/* Bundle name */
+"CFBundleName" = "Extensie Intent Loop";
+
diff --git a/Loop Intent Extension/ro.lproj/Localizable.strings b/Loop Intent Extension/ro.lproj/Localizable.strings
new file mode 100644
index 0000000000..f4d2b4576f
--- /dev/null
+++ b/Loop Intent Extension/ro.lproj/Localizable.strings
@@ -0,0 +1,3 @@
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v%2$@";
+
diff --git a/Loop Intent Extension/ru.lproj/InfoPlist.strings b/Loop Intent Extension/ru.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..7dba838e53
--- /dev/null
+++ b/Loop Intent Extension/ru.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Loop Intent Extension";
+
+/* Bundle name */
+"CFBundleName" = "Loop Intent Extension";
+
diff --git a/Loop Intent Extension/ru.lproj/Localizable.strings b/Loop Intent Extension/ru.lproj/Localizable.strings
new file mode 100644
index 0000000000..d468c09692
--- /dev/null
+++ b/Loop Intent Extension/ru.lproj/Localizable.strings
@@ -0,0 +1,3 @@
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ против %2$@";
+
diff --git a/Loop Intent Extension/sk.lproj/Localizable.strings b/Loop Intent Extension/sk.lproj/Localizable.strings
new file mode 100644
index 0000000000..0039fc241d
--- /dev/null
+++ b/Loop Intent Extension/sk.lproj/Localizable.strings
@@ -0,0 +1,3 @@
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v %2$@";
+
diff --git a/Loop Intent Extension/sv.lproj/InfoPlist.strings b/Loop Intent Extension/sv.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..7dba838e53
--- /dev/null
+++ b/Loop Intent Extension/sv.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Loop Intent Extension";
+
+/* Bundle name */
+"CFBundleName" = "Loop Intent Extension";
+
diff --git a/Loop Intent Extension/sv.lproj/Localizable.strings b/Loop Intent Extension/sv.lproj/Localizable.strings
new file mode 100644
index 0000000000..f4d2b4576f
--- /dev/null
+++ b/Loop Intent Extension/sv.lproj/Localizable.strings
@@ -0,0 +1,3 @@
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v%2$@";
+
diff --git a/Loop Intent Extension/tr.lproj/InfoPlist.strings b/Loop Intent Extension/tr.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..64bff70e71
--- /dev/null
+++ b/Loop Intent Extension/tr.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Döngü Amaç Uzantısı";
+
+/* Bundle name */
+"CFBundleName" = "Döngü Amaç Uzantısı";
+
diff --git a/Loop Intent Extension/tr.lproj/Localizable.strings b/Loop Intent Extension/tr.lproj/Localizable.strings
new file mode 100644
index 0000000000..f4d2b4576f
--- /dev/null
+++ b/Loop Intent Extension/tr.lproj/Localizable.strings
@@ -0,0 +1,3 @@
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v%2$@";
+
diff --git a/Loop Status Extension/ar.lproj/Localizable.strings b/Loop Status Extension/ar.lproj/Localizable.strings
index 5b7fa9b26d..b8fab89599 100644
--- a/Loop Status Extension/ar.lproj/Localizable.strings
+++ b/Loop Status Extension/ar.lproj/Localizable.strings
@@ -3,3 +3,4 @@
/* The subtitle format describing units of active insulin. (1: localized insulin value description) */
"IOB %1$@ U" = "أنسولين نشط %1$@ وحدة";
+
diff --git a/Loop Status Extension/ar.lproj/MainInterface.strings b/Loop Status Extension/ar.lproj/MainInterface.strings
index f5f9da2c9a..d4d75e4f6e 100644
--- a/Loop Status Extension/ar.lproj/MainInterface.strings
+++ b/Loop Status Extension/ar.lproj/MainInterface.strings
@@ -1,6 +1,6 @@
-
-/* Class = "UILabel"; text = "Eventually 92 mg/dL"; ObjectID = "9iF-xY-Bh4"; */
+/* Class = "UILabel"; text = "Active Carbs"; ObjectID = "9iF-xY-Bh4"; */
"9iF-xY-Bh4.text" = "متوقع 92 mg/dL";
-/* Class = "UILabel"; text = "IOB 1.0 U"; ObjectID = "UPi-dG-yYD"; */
+/* Class = "UILabel"; text = "Active Insulin"; ObjectID = "UPi-dG-yYD"; */
"UPi-dG-yYD.text" = "أنسولين نشط 1.0 وحدة";
+
diff --git a/Loop Status Extension/da.lproj/InfoPlist.strings b/Loop Status Extension/da.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..ffe563a634
--- /dev/null
+++ b/Loop Status Extension/da.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Loop";
+
+/* Bundle name */
+"CFBundleName" = "Loop-statusudvidelse";
+
diff --git a/Loop Status Extension/da.lproj/Localizable.strings b/Loop Status Extension/da.lproj/Localizable.strings
index fdea45f6b6..deb403fb3e 100644
--- a/Loop Status Extension/da.lproj/Localizable.strings
+++ b/Loop Status Extension/da.lproj/Localizable.strings
@@ -1,9 +1,45 @@
+/* Displayed in the widget when the amount of active carbs cannot be determined. */
+"? g" = "? g";
+
+/* Displayed in the widget when the amount of active insulin cannot be determined. */
+"? U" = "? E";
+
+/* The subtitle format describing the grams of active carbs. (1: localized carb value description) */
+"%1$@" = "%1$@";
+
+/* The subtitle format describing units of active insulin. (1: localized insulin value description) */
+"%1$@ U" = "%1$@ E";
+
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v%2$@";
+
+/* Widget label title describing the active carbs */
+"Active Carbs" = "Aktive kulhydrater";
+
+/* Widget label title describing the active insulin */
+"Active Insulin" = "Aktiv insulin";
+
+/* The short unit display string for decibles */
+"dB" = "dB";
+
/* The subtitle format describing eventual glucose. (1: localized glucose value description) */
-"Eventually %1$@" = "Til sidst %1$@";
+"Eventually %1$@" = "Med tiden %1$@";
+
+/* The short unit display string for grams */
+"g" = "g";
/* The subtitle format describing units of active insulin. (1: localized insulin value description) */
"IOB %1$@ U" = "IOB %1$@ E";
+/* The short unit display string for milligrams of glucose per decilter */
+"mg/dL" = "mg/dL";
+
+/* The short unit display string for millimoles of glucose per liter */
+"mmol/L" = "mmol/L";
+
+/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
+"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
+
/* The short unit display string for international units of insulin */
"U" = "E";
diff --git a/Loop Status Extension/da.lproj/MainInterface.strings b/Loop Status Extension/da.lproj/MainInterface.strings
index 00e818d7d5..17ae6171d0 100644
--- a/Loop Status Extension/da.lproj/MainInterface.strings
+++ b/Loop Status Extension/da.lproj/MainInterface.strings
@@ -1,6 +1,12 @@
-/* Class = "UILabel"; text = "Eventually 92 mg/dL"; ObjectID = "9iF-xY-Bh4"; */
-"9iF-xY-Bh4.text" = "Til sidst 92 mg/dL";
+/* Class = "UILabel"; text = "Active Carbs"; ObjectID = "9iF-xY-Bh4"; */
+"9iF-xY-Bh4.text" = "Aktive kulhydrater";
-/* Class = "UILabel"; text = "IOB 1.0 U"; ObjectID = "UPi-dG-yYD"; */
+/* Class = "UILabel"; text = "0 g"; ObjectID = "dPp-lJ-5sh"; */
+"dPp-lJ-5sh.text" = "0 g";
+
+/* Class = "UILabel"; text = "Active Insulin"; ObjectID = "UPi-dG-yYD"; */
"UPi-dG-yYD.text" = "IOB 1.0 E";
+/* Class = "UILabel"; text = "0 U"; ObjectID = "Vgf-p1-2QP"; */
+"Vgf-p1-2QP.text" = "0 E";
+
diff --git a/Loop Status Extension/de.lproj/InfoPlist.strings b/Loop Status Extension/de.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..8a7abf7ee4
--- /dev/null
+++ b/Loop Status Extension/de.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Loop";
+
+/* Bundle name */
+"CFBundleName" = "Loop Status-Erweiterung";
+
diff --git a/Loop Status Extension/de.lproj/Localizable.strings b/Loop Status Extension/de.lproj/Localizable.strings
index 51c1679402..8dac8187e8 100644
--- a/Loop Status Extension/de.lproj/Localizable.strings
+++ b/Loop Status Extension/de.lproj/Localizable.strings
@@ -1,9 +1,18 @@
+/* Displayed in the widget when the amount of active carbs cannot be determined. */
+"? g" = "? g";
+
/* Displayed in the widget when the amount of active insulin cannot be determined. */
"? U" = "? IE";
+/* The subtitle format describing the grams of active carbs. (1: localized carb value description) */
+"%1$@" = "%1$@";
+
/* The subtitle format describing units of active insulin. (1: localized insulin value description) */
"%1$@ U" = "%1$@ IE";
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v%2$@";
+
/* Widget label title describing the active carbs */
"Active Carbs" = "Aktive KH";
@@ -16,9 +25,21 @@
/* The subtitle format describing eventual glucose. (1: localized glucose value description) */
"Eventually %1$@" = "Irgendwann %1$@";
+/* The short unit display string for grams */
+"g" = "g";
+
/* The subtitle format describing units of active insulin. (1: localized insulin value description) */
"IOB %1$@ U" = "IOB %1$@ IE";
+/* The short unit display string for milligrams of glucose per decilter */
+"mg/dL" = "mg/dL";
+
+/* The short unit display string for millimoles of glucose per liter */
+"mmol/L" = "mmol/L";
+
+/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
+"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
+
/* The short unit display string for international units of insulin */
"U" = "IE";
diff --git a/Loop Status Extension/de.lproj/MainInterface.strings b/Loop Status Extension/de.lproj/MainInterface.strings
index e525eeb307..fb0ae387e6 100644
--- a/Loop Status Extension/de.lproj/MainInterface.strings
+++ b/Loop Status Extension/de.lproj/MainInterface.strings
@@ -1,6 +1,9 @@
/* Class = "UILabel"; text = "Active Carbs"; ObjectID = "9iF-xY-Bh4"; */
"9iF-xY-Bh4.text" = "Aktive KH";
+/* Class = "UILabel"; text = "0 g"; ObjectID = "dPp-lJ-5sh"; */
+"dPp-lJ-5sh.text" = "0 g";
+
/* Class = "UILabel"; text = "Active Insulin"; ObjectID = "UPi-dG-yYD"; */
"UPi-dG-yYD.text" = "Aktives Insulin";
diff --git a/Loop Status Extension/en.lproj/MainInterface.strings b/Loop Status Extension/en.lproj/MainInterface.strings
index 0f89462fa3..3a52b2e5e2 100644
--- a/Loop Status Extension/en.lproj/MainInterface.strings
+++ b/Loop Status Extension/en.lproj/MainInterface.strings
@@ -1,6 +1,6 @@
-
-/* Class = "UILabel"; text = "Eventually 92 mg/dL"; ObjectID = "9iF-xY-Bh4"; */
+/* Class = "UILabel"; text = "Active Carbs"; ObjectID = "9iF-xY-Bh4"; */
"9iF-xY-Bh4.text" = "Eventually 92 mg/dL";
-/* Class = "UILabel"; text = "IOB 1.0 U"; ObjectID = "UPi-dG-yYD"; */
+/* Class = "UILabel"; text = "Active Insulin"; ObjectID = "UPi-dG-yYD"; */
"UPi-dG-yYD.text" = "IOB 1.0 U";
+
diff --git a/Loop Status Extension/es.lproj/InfoPlist.strings b/Loop Status Extension/es.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..029eaa2d2a
--- /dev/null
+++ b/Loop Status Extension/es.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Loop";
+
+/* Bundle name */
+"CFBundleName" = "Extensión de Estado de Loop";
+
diff --git a/Loop Status Extension/es.lproj/Localizable.strings b/Loop Status Extension/es.lproj/Localizable.strings
index 7d3b493829..1f4b7e7b96 100644
--- a/Loop Status Extension/es.lproj/Localizable.strings
+++ b/Loop Status Extension/es.lproj/Localizable.strings
@@ -1,6 +1,45 @@
+/* Displayed in the widget when the amount of active carbs cannot be determined. */
+"? g" = "? gr";
+
+/* Displayed in the widget when the amount of active insulin cannot be determined. */
+"? U" = "? U";
+
+/* The subtitle format describing the grams of active carbs. (1: localized carb value description) */
+"%1$@" = "%1$@";
+
+/* The subtitle format describing units of active insulin. (1: localized insulin value description) */
+"%1$@ U" = "%1$@ U";
+
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v%2$@";
+
+/* Widget label title describing the active carbs */
+"Active Carbs" = "Carbohidratos Activos";
+
+/* Widget label title describing the active insulin */
+"Active Insulin" = "Insulina activa";
+
+/* The short unit display string for decibles */
+"dB" = "dB";
+
/* The subtitle format describing eventual glucose. (1: localized glucose value description) */
"Eventually %1$@" = "Eventualmente %1$@";
+/* The short unit display string for grams */
+"g" = "gr";
+
/* The subtitle format describing units of active insulin. (1: localized insulin value description) */
"IOB %1$@ U" = "IOB %1$@ U";
+/* The short unit display string for milligrams of glucose per decilter */
+"mg/dL" = "mg/dL";
+
+/* The short unit display string for millimoles of glucose per liter */
+"mmol/L" = "mmol/L";
+
+/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
+"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
+
+/* The short unit display string for international units of insulin */
+"U" = "U";
+
diff --git a/Loop Status Extension/es.lproj/MainInterface.strings b/Loop Status Extension/es.lproj/MainInterface.strings
index 8d4fcfa1e0..e0568c3dbb 100644
--- a/Loop Status Extension/es.lproj/MainInterface.strings
+++ b/Loop Status Extension/es.lproj/MainInterface.strings
@@ -1,6 +1,12 @@
-/* Class = "UILabel"; text = "Eventually 92 mg/dL"; ObjectID = "9iF-xY-Bh4"; */
-"9iF-xY-Bh4.text" = "Eventualmente 92 mg/dL";
+/* Class = "UILabel"; text = "Active Carbs"; ObjectID = "9iF-xY-Bh4"; */
+"9iF-xY-Bh4.text" = "Carbohidratos Activos";
-/* Class = "UILabel"; text = "IOB 1.0 U"; ObjectID = "UPi-dG-yYD"; */
+/* Class = "UILabel"; text = "0 g"; ObjectID = "dPp-lJ-5sh"; */
+"dPp-lJ-5sh.text" = "0 gr";
+
+/* Class = "UILabel"; text = "Active Insulin"; ObjectID = "UPi-dG-yYD"; */
"UPi-dG-yYD.text" = "IOB 1.0 U";
+/* Class = "UILabel"; text = "0 U"; ObjectID = "Vgf-p1-2QP"; */
+"Vgf-p1-2QP.text" = "0 U";
+
diff --git a/Loop Status Extension/fi.lproj/InfoPlist.strings b/Loop Status Extension/fi.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..1565e025fa
--- /dev/null
+++ b/Loop Status Extension/fi.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Loop";
+
+/* Bundle name */
+"CFBundleName" = "Loop Status Extension";
+
diff --git a/Loop Status Extension/fi.lproj/Localizable.strings b/Loop Status Extension/fi.lproj/Localizable.strings
index 1dbfbd5cf3..af5d51baf2 100644
--- a/Loop Status Extension/fi.lproj/Localizable.strings
+++ b/Loop Status Extension/fi.lproj/Localizable.strings
@@ -1,6 +1,45 @@
+/* Displayed in the widget when the amount of active carbs cannot be determined. */
+"? g" = "? g";
+
+/* Displayed in the widget when the amount of active insulin cannot be determined. */
+"? U" = "? U";
+
+/* The subtitle format describing the grams of active carbs. (1: localized carb value description) */
+"%1$@" = "%1$@";
+
+/* The subtitle format describing units of active insulin. (1: localized insulin value description) */
+"%1$@ U" = "%1$@ U";
+
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v%2$@";
+
+/* Widget label title describing the active carbs */
+"Active Carbs" = "Akt. hiilari";
+
+/* Widget label title describing the active insulin */
+"Active Insulin" = "Akt. insuliini";
+
+/* The short unit display string for decibles */
+"dB" = "dB";
+
/* The subtitle format describing eventual glucose. (1: localized glucose value description) */
"Eventually %1$@" = "Ennuste %1$@";
+/* The short unit display string for grams */
+"g" = "g";
+
/* The subtitle format describing units of active insulin. (1: localized insulin value description) */
"IOB %1$@ U" = "IOB %1$@ U";
+/* The short unit display string for milligrams of glucose per decilter */
+"mg/dL" = "mg/dL";
+
+/* The short unit display string for millimoles of glucose per liter */
+"mmol/L" = "mmol/L";
+
+/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
+"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
+
+/* The short unit display string for international units of insulin */
+"U" = "U";
+
diff --git a/Loop Status Extension/fi.lproj/MainInterface.strings b/Loop Status Extension/fi.lproj/MainInterface.strings
index 9bb1d27d3d..64a5dda3e9 100644
--- a/Loop Status Extension/fi.lproj/MainInterface.strings
+++ b/Loop Status Extension/fi.lproj/MainInterface.strings
@@ -1,6 +1,12 @@
-/* Class = "UILabel"; text = "Eventually 92 mg/dL"; ObjectID = "9iF-xY-Bh4"; */
+/* Class = "UILabel"; text = "Active Carbs"; ObjectID = "9iF-xY-Bh4"; */
"9iF-xY-Bh4.text" = "Ennuste 92 mg/dL";
-/* Class = "UILabel"; text = "IOB 1.0 U"; ObjectID = "UPi-dG-yYD"; */
+/* Class = "UILabel"; text = "0 g"; ObjectID = "dPp-lJ-5sh"; */
+"dPp-lJ-5sh.text" = "0 g";
+
+/* Class = "UILabel"; text = "Active Insulin"; ObjectID = "UPi-dG-yYD"; */
"UPi-dG-yYD.text" = "IOB 1.0 U";
+/* Class = "UILabel"; text = "0 U"; ObjectID = "Vgf-p1-2QP"; */
+"Vgf-p1-2QP.text" = "0 U";
+
diff --git a/Loop Status Extension/fr.lproj/InfoPlist.strings b/Loop Status Extension/fr.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..1565e025fa
--- /dev/null
+++ b/Loop Status Extension/fr.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Loop";
+
+/* Bundle name */
+"CFBundleName" = "Loop Status Extension";
+
diff --git a/Loop Status Extension/fr.lproj/Localizable.strings b/Loop Status Extension/fr.lproj/Localizable.strings
index 78372a5724..1c6e8dfb18 100644
--- a/Loop Status Extension/fr.lproj/Localizable.strings
+++ b/Loop Status Extension/fr.lproj/Localizable.strings
@@ -1,6 +1,45 @@
+/* Displayed in the widget when the amount of active carbs cannot be determined. */
+"? g" = "? g";
+
+/* Displayed in the widget when the amount of active insulin cannot be determined. */
+"? U" = "? U";
+
+/* The subtitle format describing the grams of active carbs. (1: localized carb value description) */
+"%1$@" = "%1$@";
+
+/* The subtitle format describing units of active insulin. (1: localized insulin value description) */
+"%1$@ U" = "%1$@ U";
+
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v%2$@";
+
+/* Widget label title describing the active carbs */
+"Active Carbs" = "Glucides actifs";
+
+/* Widget label title describing the active insulin */
+"Active Insulin" = "Insuline active";
+
+/* The short unit display string for decibles */
+"dB" = "dB";
+
/* The subtitle format describing eventual glucose. (1: localized glucose value description) */
-"Eventually %1$@" = "Éventuellement %1$@";
+"Eventually %1$@" = "Finalement %1$@";
+
+/* The short unit display string for grams */
+"g" = "g";
/* The subtitle format describing units of active insulin. (1: localized insulin value description) */
"IOB %1$@ U" = "IOB %1$@ U";
+/* The short unit display string for milligrams of glucose per decilter */
+"mg/dL" = "mg/dL";
+
+/* The short unit display string for millimoles of glucose per liter */
+"mmol/L" = "mmol/L";
+
+/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
+"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
+
+/* The short unit display string for international units of insulin */
+"U" = "U";
+
diff --git a/Loop Status Extension/fr.lproj/MainInterface.strings b/Loop Status Extension/fr.lproj/MainInterface.strings
index 718222e748..4d13ebda2d 100644
--- a/Loop Status Extension/fr.lproj/MainInterface.strings
+++ b/Loop Status Extension/fr.lproj/MainInterface.strings
@@ -1,6 +1,12 @@
-/* Class = "UILabel"; text = "Eventually 92 mg/dL"; ObjectID = "9iF-xY-Bh4"; */
-"9iF-xY-Bh4.text" = "Éventuellement 92 mg/dL";
+/* Class = "UILabel"; text = "Active Carbs"; ObjectID = "9iF-xY-Bh4"; */
+"9iF-xY-Bh4.text" = "Glucides actifs";
-/* Class = "UILabel"; text = "IOB 1.0 U"; ObjectID = "UPi-dG-yYD"; */
-"UPi-dG-yYD.text" = "IOB 1.0 U";
+/* Class = "UILabel"; text = "0 g"; ObjectID = "dPp-lJ-5sh"; */
+"dPp-lJ-5sh.text" = "0 g";
+
+/* Class = "UILabel"; text = "Active Insulin"; ObjectID = "UPi-dG-yYD"; */
+"UPi-dG-yYD.text" = "Insuline active";
+
+/* Class = "UILabel"; text = "0 U"; ObjectID = "Vgf-p1-2QP"; */
+"Vgf-p1-2QP.text" = "0 U";
diff --git a/Loop Status Extension/he.lproj/Localizable.strings b/Loop Status Extension/he.lproj/Localizable.strings
index d21551845d..177cf6e0c5 100644
--- a/Loop Status Extension/he.lproj/Localizable.strings
+++ b/Loop Status Extension/he.lproj/Localizable.strings
@@ -3,3 +3,4 @@
/* The subtitle format describing units of active insulin. (1: localized insulin value description) */
"IOB %1$@ U" = "IOB %1$@ U";
+
diff --git a/Loop Status Extension/he.lproj/MainInterface.strings b/Loop Status Extension/he.lproj/MainInterface.strings
index 25ea93a823..1adc815b18 100644
--- a/Loop Status Extension/he.lproj/MainInterface.strings
+++ b/Loop Status Extension/he.lproj/MainInterface.strings
@@ -1,12 +1,12 @@
-
/* Class = "UILabel"; text = "Active Carbs"; ObjectID = "9iF-xY-Bh4"; */
"9iF-xY-Bh4.text" = "Active Carbs";
+/* Class = "UILabel"; text = "0 g"; ObjectID = "dPp-lJ-5sh"; */
+"dPp-lJ-5sh.text" = "0 g";
+
/* Class = "UILabel"; text = "Active Insulin"; ObjectID = "UPi-dG-yYD"; */
"UPi-dG-yYD.text" = "Active Insulin";
/* Class = "UILabel"; text = "0 U"; ObjectID = "Vgf-p1-2QP"; */
"Vgf-p1-2QP.text" = "0 U";
-/* Class = "UILabel"; text = "0 g"; ObjectID = "dPp-lJ-5sh"; */
-"dPp-lJ-5sh.text" = "0 g";
diff --git a/Loop Status Extension/it.lproj/InfoPlist.strings b/Loop Status Extension/it.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..da11eb5a77
--- /dev/null
+++ b/Loop Status Extension/it.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Loop";
+
+/* Bundle name */
+"CFBundleName" = "Estensione dello stato di funzionamento di Loop";
+
diff --git a/Loop Status Extension/it.lproj/Localizable.strings b/Loop Status Extension/it.lproj/Localizable.strings
index 8d36fd4bed..8e38f06326 100644
--- a/Loop Status Extension/it.lproj/Localizable.strings
+++ b/Loop Status Extension/it.lproj/Localizable.strings
@@ -1,6 +1,45 @@
+/* Displayed in the widget when the amount of active carbs cannot be determined. */
+"? g" = "? g";
+
+/* Displayed in the widget when the amount of active insulin cannot be determined. */
+"? U" = "? U";
+
+/* The subtitle format describing the grams of active carbs. (1: localized carb value description) */
+"%1$@" = "%1$@";
+
+/* The subtitle format describing units of active insulin. (1: localized insulin value description) */
+"%1$@ U" = "%1$@ U";
+
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v%2$@";
+
+/* Widget label title describing the active carbs */
+"Active Carbs" = "Carboidrati Attivi";
+
+/* Widget label title describing the active insulin */
+"Active Insulin" = "Insulina attiva";
+
+/* The short unit display string for decibles */
+"dB" = "dB";
+
/* The subtitle format describing eventual glucose. (1: localized glucose value description) */
"Eventually %1$@" = "Probabile Glic. %1$@";
+/* The short unit display string for grams */
+"g" = "g";
+
/* The subtitle format describing units of active insulin. (1: localized insulin value description) */
"IOB %1$@ U" = "IOB %1$@ U";
+/* The short unit display string for milligrams of glucose per decilter */
+"mg/dL" = "mg/dL";
+
+/* The short unit display string for millimoles of glucose per liter */
+"mmol/L" = "mmol/L";
+
+/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
+"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
+
+/* The short unit display string for international units of insulin */
+"U" = "U";
+
diff --git a/Loop Status Extension/it.lproj/MainInterface.strings b/Loop Status Extension/it.lproj/MainInterface.strings
index 660125a4df..ab9c005998 100644
--- a/Loop Status Extension/it.lproj/MainInterface.strings
+++ b/Loop Status Extension/it.lproj/MainInterface.strings
@@ -1,6 +1,12 @@
-/* Class = "UILabel"; text = "Eventually 92 mg/dL"; ObjectID = "9iF-xY-Bh4"; */
-"9iF-xY-Bh4.text" = "probabile glic. 92 mg/dL";
+/* Class = "UILabel"; text = "Active Carbs"; ObjectID = "9iF-xY-Bh4"; */
+"9iF-xY-Bh4.text" = "Carb Attivi";
-/* Class = "UILabel"; text = "IOB 1.0 U"; ObjectID = "UPi-dG-yYD"; */
-"UPi-dG-yYD.text" = "IOB 1.0 U";
+/* Class = "UILabel"; text = "0 g"; ObjectID = "dPp-lJ-5sh"; */
+"dPp-lJ-5sh.text" = "0 g";
+
+/* Class = "UILabel"; text = "Active Insulin"; ObjectID = "UPi-dG-yYD"; */
+"UPi-dG-yYD.text" = "Insulina attiva";
+
+/* Class = "UILabel"; text = "0 U"; ObjectID = "Vgf-p1-2QP"; */
+"Vgf-p1-2QP.text" = "0 U";
diff --git a/Loop Status Extension/ja.lproj/MainInterface.strings b/Loop Status Extension/ja.lproj/MainInterface.strings
index 3e7844c42b..b5f1f6ce14 100644
--- a/Loop Status Extension/ja.lproj/MainInterface.strings
+++ b/Loop Status Extension/ja.lproj/MainInterface.strings
@@ -1,6 +1,6 @@
-/* Class = "UILabel"; text = "Eventually 92 mg/dL"; ObjectID = "9iF-xY-Bh4"; */
+/* Class = "UILabel"; text = "Active Carbs"; ObjectID = "9iF-xY-Bh4"; */
"9iF-xY-Bh4.text" = "予想 92 mg/dL";
-/* Class = "UILabel"; text = "IOB 1.0 U"; ObjectID = "UPi-dG-yYD"; */
+/* Class = "UILabel"; text = "Active Insulin"; ObjectID = "UPi-dG-yYD"; */
"UPi-dG-yYD.text" = "IOB 1.0 U";
diff --git a/Loop Status Extension/nb.lproj/InfoPlist.strings b/Loop Status Extension/nb.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..24d50f5390
--- /dev/null
+++ b/Loop Status Extension/nb.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Loop";
+
+/* Bundle name */
+"CFBundleName" = "Utvidelse av Loop status";
+
diff --git a/Loop Status Extension/nb.lproj/Localizable.strings b/Loop Status Extension/nb.lproj/Localizable.strings
index af0e1fc932..2e4a88ce5f 100644
--- a/Loop Status Extension/nb.lproj/Localizable.strings
+++ b/Loop Status Extension/nb.lproj/Localizable.strings
@@ -1,9 +1,45 @@
+/* Displayed in the widget when the amount of active carbs cannot be determined. */
+"? g" = "? g";
+
+/* Displayed in the widget when the amount of active insulin cannot be determined. */
+"? U" = "? E";
+
+/* The subtitle format describing the grams of active carbs. (1: localized carb value description) */
+"%1$@" = "%1$@";
+
+/* The subtitle format describing units of active insulin. (1: localized insulin value description) */
+"%1$@ U" = "%1$@ E";
+
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v %2$@";
+
+/* Widget label title describing the active carbs */
+"Active Carbs" = "Aktive karbohydrater";
+
+/* Widget label title describing the active insulin */
+"Active Insulin" = "Aktivt insulin";
+
+/* The short unit display string for decibles */
+"dB" = "dB";
+
/* The subtitle format describing eventual glucose. (1: localized glucose value description) */
"Eventually %1$@" = "Omsider %1$@";
+/* The short unit display string for grams */
+"g" = "g";
+
/* The subtitle format describing units of active insulin. (1: localized insulin value description) */
"IOB %1$@ U" = "IOB %1$@ E";
+/* The short unit display string for milligrams of glucose per decilter */
+"mg/dL" = "mg/dL";
+
+/* The short unit display string for millimoles of glucose per liter */
+"mmol/L" = "mmol/L";
+
+/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
+"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
+
/* The short unit display string for international units of insulin */
"U" = "E";
diff --git a/Loop Status Extension/nb.lproj/MainInterface.strings b/Loop Status Extension/nb.lproj/MainInterface.strings
index c464634590..7942de07be 100644
--- a/Loop Status Extension/nb.lproj/MainInterface.strings
+++ b/Loop Status Extension/nb.lproj/MainInterface.strings
@@ -1,6 +1,12 @@
-/* Class = "UILabel"; text = "Eventually 92 mg/dL"; ObjectID = "9iF-xY-Bh4"; */
-"9iF-xY-Bh4.text" = "Omsider 92 mg/dL";
+/* Class = "UILabel"; text = "Active Carbs"; ObjectID = "9iF-xY-Bh4"; */
+"9iF-xY-Bh4.text" = "Aktive karbohydrater";
-/* Class = "UILabel"; text = "IOB 1.0 U"; ObjectID = "UPi-dG-yYD"; */
-"UPi-dG-yYD.text" = "IOB 1.0 E";
+/* Class = "UILabel"; text = "0 g"; ObjectID = "dPp-lJ-5sh"; */
+"dPp-lJ-5sh.text" = "0 g";
+
+/* Class = "UILabel"; text = "Active Insulin"; ObjectID = "UPi-dG-yYD"; */
+"UPi-dG-yYD.text" = "Aktivt insulin";
+
+/* Class = "UILabel"; text = "0 U"; ObjectID = "Vgf-p1-2QP"; */
+"Vgf-p1-2QP.text" = "0 E";
diff --git a/Loop Status Extension/nl.lproj/InfoPlist.strings b/Loop Status Extension/nl.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..62e5156f17
--- /dev/null
+++ b/Loop Status Extension/nl.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Loop";
+
+/* Bundle name */
+"CFBundleName" = "Loop Status Extensie";
+
diff --git a/Loop Status Extension/nl.lproj/Localizable.strings b/Loop Status Extension/nl.lproj/Localizable.strings
index 20a25693db..b5f9439380 100644
--- a/Loop Status Extension/nl.lproj/Localizable.strings
+++ b/Loop Status Extension/nl.lproj/Localizable.strings
@@ -1,9 +1,45 @@
+/* Displayed in the widget when the amount of active carbs cannot be determined. */
+"? g" = "? g";
+
+/* Displayed in the widget when the amount of active insulin cannot be determined. */
+"? U" = "? E";
+
+/* The subtitle format describing the grams of active carbs. (1: localized carb value description) */
+"%1$@" = "%1$@";
+
+/* The subtitle format describing units of active insulin. (1: localized insulin value description) */
+"%1$@ U" = "%1$@ E";
+
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v%2$@";
+
+/* Widget label title describing the active carbs */
+"Active Carbs" = "Actieve Koolhydraten";
+
+/* Widget label title describing the active insulin */
+"Active Insulin" = "Actieve Insuline";
+
+/* The short unit display string for decibles */
+"dB" = "dB";
+
/* The subtitle format describing eventual glucose. (1: localized glucose value description) */
"Eventually %1$@" = "Uiteindelijk %1$@";
+/* The short unit display string for grams */
+"g" = "g";
+
/* The subtitle format describing units of active insulin. (1: localized insulin value description) */
"IOB %1$@ U" = "IOB %1$@ E";
+/* The short unit display string for milligrams of glucose per decilter */
+"mg/dL" = "mg/dL";
+
+/* The short unit display string for millimoles of glucose per liter */
+"mmol/L" = "mmol/L";
+
+/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
+"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
+
/* The short unit display string for international units of insulin */
"U" = "E";
diff --git a/Loop Status Extension/nl.lproj/MainInterface.strings b/Loop Status Extension/nl.lproj/MainInterface.strings
index c652dfaa76..3300ee0aec 100644
--- a/Loop Status Extension/nl.lproj/MainInterface.strings
+++ b/Loop Status Extension/nl.lproj/MainInterface.strings
@@ -1,6 +1,12 @@
-/* Class = "UILabel"; text = "Eventually 92 mg/dL"; ObjectID = "9iF-xY-Bh4"; */
-"9iF-xY-Bh4.text" = "Uiteindelijk 92 mg/dL";
+/* Class = "UILabel"; text = "Active Carbs"; ObjectID = "9iF-xY-Bh4"; */
+"9iF-xY-Bh4.text" = "Actieve Koolhydraten";
-/* Class = "UILabel"; text = "IOB 1.0 U"; ObjectID = "UPi-dG-yYD"; */
-"UPi-dG-yYD.text" = "IOB 1.0 E";
+/* Class = "UILabel"; text = "0 g"; ObjectID = "dPp-lJ-5sh"; */
+"dPp-lJ-5sh.text" = "0 g";
+
+/* Class = "UILabel"; text = "Active Insulin"; ObjectID = "UPi-dG-yYD"; */
+"UPi-dG-yYD.text" = "Actieve Insuline";
+
+/* Class = "UILabel"; text = "0 U"; ObjectID = "Vgf-p1-2QP"; */
+"Vgf-p1-2QP.text" = "0 E";
diff --git a/Loop Status Extension/pl.lproj/InfoPlist.strings b/Loop Status Extension/pl.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..1565e025fa
--- /dev/null
+++ b/Loop Status Extension/pl.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Loop";
+
+/* Bundle name */
+"CFBundleName" = "Loop Status Extension";
+
diff --git a/Loop Status Extension/pl.lproj/Localizable.strings b/Loop Status Extension/pl.lproj/Localizable.strings
index 6522679f83..be2412af17 100644
--- a/Loop Status Extension/pl.lproj/Localizable.strings
+++ b/Loop Status Extension/pl.lproj/Localizable.strings
@@ -1,5 +1,45 @@
+/* Displayed in the widget when the amount of active carbs cannot be determined. */
+"? g" = "? g";
+
+/* Displayed in the widget when the amount of active insulin cannot be determined. */
+"? U" = "? J";
+
+/* The subtitle format describing the grams of active carbs. (1: localized carb value description) */
+"%1$@" = "%1$@";
+
+/* The subtitle format describing units of active insulin. (1: localized insulin value description) */
+"%1$@ U" = "%1$@ J";
+
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v%2$@";
+
+/* Widget label title describing the active carbs */
+"Active Carbs" = "Aktywne węglowodany";
+
+/* Widget label title describing the active insulin */
+"Active Insulin" = "Aktywna insulina";
+
+/* The short unit display string for decibles */
+"dB" = "dB";
+
/* The subtitle format describing eventual glucose. (1: localized glucose value description) */
"Eventually %1$@" = "Docelowo %1$@";
+/* The short unit display string for grams */
+"g" = "g";
+
/* The subtitle format describing units of active insulin. (1: localized insulin value description) */
"IOB %1$@ U" = "IOB %1$@ J";
+
+/* The short unit display string for milligrams of glucose per decilter */
+"mg/dL" = "mg/dl";
+
+/* The short unit display string for millimoles of glucose per liter */
+"mmol/L" = "mmol/l";
+
+/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
+"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
+
+/* The short unit display string for international units of insulin */
+"U" = "J";
+
diff --git a/Loop Status Extension/pl.lproj/MainInterface.strings b/Loop Status Extension/pl.lproj/MainInterface.strings
index 7421b4922b..a68c1231ed 100644
--- a/Loop Status Extension/pl.lproj/MainInterface.strings
+++ b/Loop Status Extension/pl.lproj/MainInterface.strings
@@ -1,6 +1,12 @@
+/* Class = "UILabel"; text = "Active Carbs"; ObjectID = "9iF-xY-Bh4"; */
+"9iF-xY-Bh4.text" = "Aktywne węglowodany";
-/* Class = "UILabel"; text = "Eventually 92 mg/dL"; ObjectID = "9iF-xY-Bh4"; */
-"9iF-xY-Bh4.text" = "docelowo 92 mg/dL";
+/* Class = "UILabel"; text = "0 g"; ObjectID = "dPp-lJ-5sh"; */
+"dPp-lJ-5sh.text" = "0 g";
-/* Class = "UILabel"; text = "IOB 1.0 U"; ObjectID = "UPi-dG-yYD"; */
+/* Class = "UILabel"; text = "Active Insulin"; ObjectID = "UPi-dG-yYD"; */
"UPi-dG-yYD.text" = "IOB 1.0 J";
+
+/* Class = "UILabel"; text = "0 U"; ObjectID = "Vgf-p1-2QP"; */
+"Vgf-p1-2QP.text" = "0 J";
+
diff --git a/Loop Status Extension/pt-BR.lproj/MainInterface.strings b/Loop Status Extension/pt-BR.lproj/MainInterface.strings
index 8d4fcfa1e0..b88ada93c5 100644
--- a/Loop Status Extension/pt-BR.lproj/MainInterface.strings
+++ b/Loop Status Extension/pt-BR.lproj/MainInterface.strings
@@ -1,6 +1,6 @@
-/* Class = "UILabel"; text = "Eventually 92 mg/dL"; ObjectID = "9iF-xY-Bh4"; */
+/* Class = "UILabel"; text = "Active Carbs"; ObjectID = "9iF-xY-Bh4"; */
"9iF-xY-Bh4.text" = "Eventualmente 92 mg/dL";
-/* Class = "UILabel"; text = "IOB 1.0 U"; ObjectID = "UPi-dG-yYD"; */
+/* Class = "UILabel"; text = "Active Insulin"; ObjectID = "UPi-dG-yYD"; */
"UPi-dG-yYD.text" = "IOB 1.0 U";
diff --git a/Loop Status Extension/ro.lproj/InfoPlist.strings b/Loop Status Extension/ro.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..811f60ffd2
--- /dev/null
+++ b/Loop Status Extension/ro.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Loop";
+
+/* Bundle name */
+"CFBundleName" = "Extensie stare Loop";
+
diff --git a/Loop Status Extension/ro.lproj/Localizable.strings b/Loop Status Extension/ro.lproj/Localizable.strings
index 177cf6e0c5..c5053c6dc8 100644
--- a/Loop Status Extension/ro.lproj/Localizable.strings
+++ b/Loop Status Extension/ro.lproj/Localizable.strings
@@ -1,6 +1,45 @@
+/* Displayed in the widget when the amount of active carbs cannot be determined. */
+"? g" = "? g";
+
+/* Displayed in the widget when the amount of active insulin cannot be determined. */
+"? U" = "? U";
+
+/* The subtitle format describing the grams of active carbs. (1: localized carb value description) */
+"%1$@" = "%1$@";
+
+/* The subtitle format describing units of active insulin. (1: localized insulin value description) */
+"%1$@ U" = "%1$@ U";
+
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v%2$@";
+
+/* Widget label title describing the active carbs */
+"Active Carbs" = "Carbohidrați activi";
+
+/* Widget label title describing the active insulin */
+"Active Insulin" = "Insulină activă";
+
+/* The short unit display string for decibles */
+"dB" = "dB";
+
/* The subtitle format describing eventual glucose. (1: localized glucose value description) */
"Eventually %1$@" = "Eventually %1$@";
+/* The short unit display string for grams */
+"g" = "g";
+
/* The subtitle format describing units of active insulin. (1: localized insulin value description) */
"IOB %1$@ U" = "IOB %1$@ U";
+/* The short unit display string for milligrams of glucose per decilter */
+"mg/dL" = "mg/dL";
+
+/* The short unit display string for millimoles of glucose per liter */
+"mmol/L" = "mmol/L";
+
+/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
+"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
+
+/* The short unit display string for international units of insulin */
+"U" = "U";
+
diff --git a/Loop Status Extension/ro.lproj/MainInterface.strings b/Loop Status Extension/ro.lproj/MainInterface.strings
index 3eb5d43c9e..52df0e4c8c 100644
--- a/Loop Status Extension/ro.lproj/MainInterface.strings
+++ b/Loop Status Extension/ro.lproj/MainInterface.strings
@@ -1,6 +1,12 @@
-/* Class = "UILabel"; text = "Eventually 92 mg/dL"; ObjectID = "9iF-xY-Bh4"; */
-"9iF-xY-Bh4.text" = "Eventually 92 mg/dL";
+/* Class = "UILabel"; text = "Active Carbs"; ObjectID = "9iF-xY-Bh4"; */
+"9iF-xY-Bh4.text" = "Carbohidrați activi";
-/* Class = "UILabel"; text = "IOB 1.0 U"; ObjectID = "UPi-dG-yYD"; */
-"UPi-dG-yYD.text" = "IOB 1.0 U";
+/* Class = "UILabel"; text = "0 g"; ObjectID = "dPp-lJ-5sh"; */
+"dPp-lJ-5sh.text" = "0 g";
+
+/* Class = "UILabel"; text = "Active Insulin"; ObjectID = "UPi-dG-yYD"; */
+"UPi-dG-yYD.text" = "Insulină activă";
+
+/* Class = "UILabel"; text = "0 U"; ObjectID = "Vgf-p1-2QP"; */
+"Vgf-p1-2QP.text" = "0 U";
diff --git a/Loop Status Extension/ru.lproj/InfoPlist.strings b/Loop Status Extension/ru.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..1565e025fa
--- /dev/null
+++ b/Loop Status Extension/ru.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Loop";
+
+/* Bundle name */
+"CFBundleName" = "Loop Status Extension";
+
diff --git a/Loop Status Extension/ru.lproj/Localizable.strings b/Loop Status Extension/ru.lproj/Localizable.strings
index 1049e0663e..c42b7de0c6 100644
--- a/Loop Status Extension/ru.lproj/Localizable.strings
+++ b/Loop Status Extension/ru.lproj/Localizable.strings
@@ -1,6 +1,45 @@
+/* Displayed in the widget when the amount of active carbs cannot be determined. */
+"? g" = "? г";
+
+/* Displayed in the widget when the amount of active insulin cannot be determined. */
+"? U" = "? ед.";
+
+/* The subtitle format describing the grams of active carbs. (1: localized carb value description) */
+"%1$@" = "%1$@";
+
+/* The subtitle format describing units of active insulin. (1: localized insulin value description) */
+"%1$@ U" = "%1$@ ед.";
+
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ против %2$@";
+
+/* Widget label title describing the active carbs */
+"Active Carbs" = "Активные углеводы";
+
+/* Widget label title describing the active insulin */
+"Active Insulin" = "Активный инсулин";
+
+/* The short unit display string for decibles */
+"dB" = "дБ";
+
/* The subtitle format describing eventual glucose. (1: localized glucose value description) */
"Eventually %1$@" = "В конечном итоге %1$@";
+/* The short unit display string for grams */
+"g" = "г";
+
/* The subtitle format describing units of active insulin. (1: localized insulin value description) */
"IOB %1$@ U" = "IOB %1$@ ед";
+/* The short unit display string for milligrams of glucose per decilter */
+"mg/dL" = "мг/дл";
+
+/* The short unit display string for millimoles of glucose per liter */
+"mmol/L" = "ммоль/л";
+
+/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
+"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
+
+/* The short unit display string for international units of insulin */
+"U" = "ед";
+
diff --git a/Loop Status Extension/ru.lproj/MainInterface.strings b/Loop Status Extension/ru.lproj/MainInterface.strings
index ac17fcfd98..280dc11206 100644
--- a/Loop Status Extension/ru.lproj/MainInterface.strings
+++ b/Loop Status Extension/ru.lproj/MainInterface.strings
@@ -1,6 +1,12 @@
-/* Class = "UILabel"; text = "Eventually 92 mg/dL"; ObjectID = "9iF-xY-Bh4"; */
-"9iF-xY-Bh4.text" = "в конечном итоге 92 мг/дл";
+/* Class = "UILabel"; text = "Active Carbs"; ObjectID = "9iF-xY-Bh4"; */
+"9iF-xY-Bh4.text" = "Активные углеводы";
-/* Class = "UILabel"; text = "IOB 1.0 U"; ObjectID = "UPi-dG-yYD"; */
+/* Class = "UILabel"; text = "0 g"; ObjectID = "dPp-lJ-5sh"; */
+"dPp-lJ-5sh.text" = "0 г";
+
+/* Class = "UILabel"; text = "Active Insulin"; ObjectID = "UPi-dG-yYD"; */
"UPi-dG-yYD.text" = "IOB 1.0 ед";
+/* Class = "UILabel"; text = "0 U"; ObjectID = "Vgf-p1-2QP"; */
+"Vgf-p1-2QP.text" = "0 ед.";
+
diff --git a/Loop Status Extension/sk.lproj/InfoPlist.strings b/Loop Status Extension/sk.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..034a1e1f6a
--- /dev/null
+++ b/Loop Status Extension/sk.lproj/InfoPlist.strings
@@ -0,0 +1,3 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Loop";
+
diff --git a/Loop Status Extension/sk.lproj/Localizable.strings b/Loop Status Extension/sk.lproj/Localizable.strings
new file mode 100644
index 0000000000..f7fe0850f1
--- /dev/null
+++ b/Loop Status Extension/sk.lproj/Localizable.strings
@@ -0,0 +1,42 @@
+/* Displayed in the widget when the amount of active carbs cannot be determined. */
+"? g" = "? g";
+
+/* Displayed in the widget when the amount of active insulin cannot be determined. */
+"? U" = "? j";
+
+/* The subtitle format describing the grams of active carbs. (1: localized carb value description) */
+"%1$@" = "%1$@";
+
+/* The subtitle format describing units of active insulin. (1: localized insulin value description) */
+"%1$@ U" = "%@ j";
+
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v %2$@";
+
+/* Widget label title describing the active carbs */
+"Active Carbs" = "Aktívne sacharidy";
+
+/* Widget label title describing the active insulin */
+"Active Insulin" = "Aktívny inzulín";
+
+/* The short unit display string for decibles */
+"dB" = "dB";
+
+/* The short unit display string for grams */
+"g" = "g";
+
+/* The subtitle format describing units of active insulin. (1: localized insulin value description) */
+"IOB %1$@ U" = "IOB %1$@ j";
+
+/* The short unit display string for milligrams of glucose per decilter */
+"mg/dL" = "mg/dL";
+
+/* The short unit display string for millimoles of glucose per liter */
+"mmol/L" = "mmol/L";
+
+/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
+"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
+
+/* The short unit display string for international units of insulin */
+"U" = "j";
+
diff --git a/Loop Status Extension/sk.lproj/MainInterface.strings b/Loop Status Extension/sk.lproj/MainInterface.strings
new file mode 100644
index 0000000000..e249f99412
--- /dev/null
+++ b/Loop Status Extension/sk.lproj/MainInterface.strings
@@ -0,0 +1,12 @@
+/* Class = "UILabel"; text = "Active Carbs"; ObjectID = "9iF-xY-Bh4"; */
+"9iF-xY-Bh4.text" = "Aktívne sacharidy";
+
+/* Class = "UILabel"; text = "0 g"; ObjectID = "dPp-lJ-5sh"; */
+"dPp-lJ-5sh.text" = "0 g";
+
+/* Class = "UILabel"; text = "Active Insulin"; ObjectID = "UPi-dG-yYD"; */
+"UPi-dG-yYD.text" = "Aktívny inzulín";
+
+/* Class = "UILabel"; text = "0 U"; ObjectID = "Vgf-p1-2QP"; */
+"Vgf-p1-2QP.text" = "0 j";
+
diff --git a/Loop Status Extension/sv.lproj/InfoPlist.strings b/Loop Status Extension/sv.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..1565e025fa
--- /dev/null
+++ b/Loop Status Extension/sv.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Loop";
+
+/* Bundle name */
+"CFBundleName" = "Loop Status Extension";
+
diff --git a/Loop Status Extension/sv.lproj/Localizable.strings b/Loop Status Extension/sv.lproj/Localizable.strings
index ec07cf13d5..2111bb7a2c 100644
--- a/Loop Status Extension/sv.lproj/Localizable.strings
+++ b/Loop Status Extension/sv.lproj/Localizable.strings
@@ -1,9 +1,45 @@
+/* Displayed in the widget when the amount of active carbs cannot be determined. */
+"? g" = "? g";
+
+/* Displayed in the widget when the amount of active insulin cannot be determined. */
+"? U" = "? E";
+
+/* The subtitle format describing the grams of active carbs. (1: localized carb value description) */
+"%1$@" = "%1$@";
+
+/* The subtitle format describing units of active insulin. (1: localized insulin value description) */
+"%1$@ U" = "%1$@ E";
+
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v%2$@";
+
+/* Widget label title describing the active carbs */
+"Active Carbs" = "Aktiva kolhydrater";
+
+/* Widget label title describing the active insulin */
+"Active Insulin" = "Aktivt insulin";
+
+/* The short unit display string for decibles */
+"dB" = "dB";
+
/* The subtitle format describing eventual glucose. (1: localized glucose value description) */
"Eventually %1$@" = "Förväntat %1$@";
+/* The short unit display string for grams */
+"g" = "g";
+
/* The subtitle format describing units of active insulin. (1: localized insulin value description) */
"IOB %1$@ U" = "IOB %1$@ E";
+/* The short unit display string for milligrams of glucose per decilter */
+"mg/dL" = "mg/dL";
+
+/* The short unit display string for millimoles of glucose per liter */
+"mmol/L" = "mmol/L";
+
+/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
+"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
+
/* The short unit display string for international units of insulin */
"U" = "E";
diff --git a/Loop Status Extension/sv.lproj/MainInterface.strings b/Loop Status Extension/sv.lproj/MainInterface.strings
index d826dbc61a..55e8d3c7b0 100644
--- a/Loop Status Extension/sv.lproj/MainInterface.strings
+++ b/Loop Status Extension/sv.lproj/MainInterface.strings
@@ -1,6 +1,12 @@
-/* Class = "UILabel"; text = "Eventually 92 mg/dL"; ObjectID = "9iF-xY-Bh4"; */
+/* Class = "UILabel"; text = "Active Carbs"; ObjectID = "9iF-xY-Bh4"; */
"9iF-xY-Bh4.text" = "Förväntat 5,1 mmol/l";
-/* Class = "UILabel"; text = "IOB 1.0 U"; ObjectID = "UPi-dG-yYD"; */
+/* Class = "UILabel"; text = "0 g"; ObjectID = "dPp-lJ-5sh"; */
+"dPp-lJ-5sh.text" = "0 g";
+
+/* Class = "UILabel"; text = "Active Insulin"; ObjectID = "UPi-dG-yYD"; */
"UPi-dG-yYD.text" = "IOB 1.0 E";
+/* Class = "UILabel"; text = "0 U"; ObjectID = "Vgf-p1-2QP"; */
+"Vgf-p1-2QP.text" = "0 E";
+
diff --git a/Loop Status Extension/tr.lproj/InfoPlist.strings b/Loop Status Extension/tr.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..a67e46ff7e
--- /dev/null
+++ b/Loop Status Extension/tr.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Loop";
+
+/* Bundle name */
+"CFBundleName" = "Loop Durum Uzantısı";
+
diff --git a/Loop Status Extension/tr.lproj/Localizable.strings b/Loop Status Extension/tr.lproj/Localizable.strings
index d21551845d..0f5ebe9125 100644
--- a/Loop Status Extension/tr.lproj/Localizable.strings
+++ b/Loop Status Extension/tr.lproj/Localizable.strings
@@ -1,5 +1,45 @@
+/* Displayed in the widget when the amount of active carbs cannot be determined. */
+"? g" = "? gr";
+
+/* Displayed in the widget when the amount of active insulin cannot be determined. */
+"? U" = "? Ü";
+
+/* The subtitle format describing the grams of active carbs. (1: localized carb value description) */
+"%1$@" = "%1$@";
+
+/* The subtitle format describing units of active insulin. (1: localized insulin value description) */
+"%1$@ U" = "%1$@ Ü";
+
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v%2$@";
+
+/* Widget label title describing the active carbs */
+"Active Carbs" = "Aktif Karb.";
+
+/* Widget label title describing the active insulin */
+"Active Insulin" = "Aktif İnsülin";
+
+/* The short unit display string for decibles */
+"dB" = "dB";
+
/* The subtitle format describing eventual glucose. (1: localized glucose value description) */
-"Eventually %1$@" = "Eventually %1$@";
+"Eventually %1$@" = "Nihai KŞ %1$@";
+
+/* The short unit display string for grams */
+"g" = "gr";
/* The subtitle format describing units of active insulin. (1: localized insulin value description) */
-"IOB %1$@ U" = "IOB %1$@ U";
+"IOB %1$@ U" = "AİNS %1$@ Ü";
+
+/* The short unit display string for milligrams of glucose per decilter */
+"mg/dL" = "mg/dL";
+
+/* The short unit display string for millimoles of glucose per liter */
+"mmol/L" = "mmol/L";
+
+/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
+"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
+
+/* The short unit display string for international units of insulin */
+"U" = "Ü";
+
diff --git a/Loop Status Extension/tr.lproj/MainInterface.strings b/Loop Status Extension/tr.lproj/MainInterface.strings
index 25ea93a823..3c0a8cd6af 100644
--- a/Loop Status Extension/tr.lproj/MainInterface.strings
+++ b/Loop Status Extension/tr.lproj/MainInterface.strings
@@ -1,12 +1,12 @@
-
/* Class = "UILabel"; text = "Active Carbs"; ObjectID = "9iF-xY-Bh4"; */
-"9iF-xY-Bh4.text" = "Active Carbs";
+"9iF-xY-Bh4.text" = "Aktif Karbonhidrat";
+
+/* Class = "UILabel"; text = "0 g"; ObjectID = "dPp-lJ-5sh"; */
+"dPp-lJ-5sh.text" = "0 gr";
/* Class = "UILabel"; text = "Active Insulin"; ObjectID = "UPi-dG-yYD"; */
-"UPi-dG-yYD.text" = "Active Insulin";
+"UPi-dG-yYD.text" = "Aktif İnsülin";
/* Class = "UILabel"; text = "0 U"; ObjectID = "Vgf-p1-2QP"; */
-"Vgf-p1-2QP.text" = "0 U";
+"Vgf-p1-2QP.text" = "0 Ü";
-/* Class = "UILabel"; text = "0 g"; ObjectID = "dPp-lJ-5sh"; */
-"dPp-lJ-5sh.text" = "0 g";
diff --git a/Loop Status Extension/vi.lproj/MainInterface.strings b/Loop Status Extension/vi.lproj/MainInterface.strings
index 66ec8fb074..cc5e2b60a3 100644
--- a/Loop Status Extension/vi.lproj/MainInterface.strings
+++ b/Loop Status Extension/vi.lproj/MainInterface.strings
@@ -1,6 +1,6 @@
-/* Class = "UILabel"; text = "Eventually 92 mg/dL"; ObjectID = "9iF-xY-Bh4"; */
+/* Class = "UILabel"; text = "Active Carbs"; ObjectID = "9iF-xY-Bh4"; */
"9iF-xY-Bh4.text" = "Kết quả là 92 mg/dL";
-/* Class = "UILabel"; text = "IOB 1.0 U"; ObjectID = "UPi-dG-yYD"; */
+/* Class = "UILabel"; text = "Active Insulin"; ObjectID = "UPi-dG-yYD"; */
"UPi-dG-yYD.text" = "IOB 1.0 U";
diff --git a/Loop Status Extension/zh-Hans-CN.lproj/Localizable.strings b/Loop Status Extension/zh-Hans-CN.lproj/Localizable.strings
new file mode 100644
index 0000000000..b1d62cfb8c
--- /dev/null
+++ b/Loop Status Extension/zh-Hans-CN.lproj/Localizable.strings
@@ -0,0 +1,6 @@
+/* The subtitle format describing eventual glucose. (1: localized glucose value description) */
+"Eventually %1$@" = "最终 %1$@";
+
+/* The subtitle format describing units of active insulin. (1: localized insulin value description) */
+"IOB %1$@ U" = "IOB %1$@ 单位";
+
diff --git a/Loop Status Extension/zh-Hans-CN.lproj/MainInterface.strings b/Loop Status Extension/zh-Hans-CN.lproj/MainInterface.strings
new file mode 100644
index 0000000000..2a063e6084
--- /dev/null
+++ b/Loop Status Extension/zh-Hans-CN.lproj/MainInterface.strings
@@ -0,0 +1,6 @@
+/* Class = "UILabel"; text = "Active Carbs"; ObjectID = "9iF-xY-Bh4"; */
+"9iF-xY-Bh4.text" = "最终血糖为92 毫克/分升";
+
+/* Class = "UILabel"; text = "Active Insulin"; ObjectID = "UPi-dG-yYD"; */
+"UPi-dG-yYD.text" = "IOB 1.0 单位";
+
diff --git a/Loop Status Extension/zh-Hans.lproj/MainInterface.strings b/Loop Status Extension/zh-Hans.lproj/MainInterface.strings
index c315a458c2..2a063e6084 100644
--- a/Loop Status Extension/zh-Hans.lproj/MainInterface.strings
+++ b/Loop Status Extension/zh-Hans.lproj/MainInterface.strings
@@ -1,6 +1,6 @@
-/* Class = "UILabel"; text = "Eventually 92 mg/dL"; ObjectID = "9iF-xY-Bh4"; */
+/* Class = "UILabel"; text = "Active Carbs"; ObjectID = "9iF-xY-Bh4"; */
"9iF-xY-Bh4.text" = "最终血糖为92 毫克/分升";
-/* Class = "UILabel"; text = "IOB 1.0 U"; ObjectID = "UPi-dG-yYD"; */
+/* Class = "UILabel"; text = "Active Insulin"; ObjectID = "UPi-dG-yYD"; */
"UPi-dG-yYD.text" = "IOB 1.0 单位";
diff --git a/Loop.xcconfig b/Loop.xcconfig
index 9c14533902..9e1bb856ae 100644
--- a/Loop.xcconfig
+++ b/Loop.xcconfig
@@ -45,6 +45,9 @@ LOOP_PROVISIONING_PROFILE_SPECIFIER_WATCHAPP_EXTENSION_RELEASE =
// Min iOS Version [DEFAULT]
IPHONEOS_DEPLOYMENT_TARGET = 15.1
+// Base string for opening app via URL [DEFAULT]
+URL_SCHEME_NAME = $(MAIN_APP_DISPLAY_NAME)
+
// Version [DEFAULT]
#include? "Version.xcconfig"
diff --git a/Loop.xcodeproj/project.pbxproj b/Loop.xcodeproj/project.pbxproj
index 207c5acac7..43c73910c1 100644
--- a/Loop.xcodeproj/project.pbxproj
+++ b/Loop.xcodeproj/project.pbxproj
@@ -85,11 +85,8 @@
4344629820A8B2D700C4BE6F /* OSLog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4374B5EE209D84BE00D17AA8 /* OSLog.swift */; };
4345E3F421F036FC009E00E5 /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43D848AF1E7DCBE100DADCBC /* Result.swift */; };
4345E3F521F036FC009E00E5 /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43D848AF1E7DCBE100DADCBC /* Result.swift */; };
- 4345E3F821F03D2A009E00E5 /* DatesAndNumberCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4345E3F721F03D2A009E00E5 /* DatesAndNumberCell.swift */; };
- 4345E3FA21F0473B009E00E5 /* TextCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4345E3F921F0473B009E00E5 /* TextCell.swift */; };
4345E3FB21F04911009E00E5 /* UIColor+HIG.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43BFF0C31E4659E700FF19A9 /* UIColor+HIG.swift */; };
4345E3FC21F04911009E00E5 /* UIColor+HIG.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43BFF0C31E4659E700FF19A9 /* UIColor+HIG.swift */; };
- 4345E3FE21F04A50009E00E5 /* DateIntervalFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4345E3FD21F04A50009E00E5 /* DateIntervalFormatter.swift */; };
4345E3FF21F051C6009E00E5 /* LoopCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 43D9FFCF21EAE05D00AF44BF /* LoopCore.framework */; };
4345E40021F051DD009E00E5 /* LoopCore.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 43D9FFCF21EAE05D00AF44BF /* LoopCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
4345E40121F67300009E00E5 /* PotentialCarbEntryUserInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43DE92581C5479E4001FFDE1 /* PotentialCarbEntryUserInfo.swift */; };
@@ -157,29 +154,15 @@
43C05CAC21EB2B8B006FB252 /* NSBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 430DA58D1D4AEC230097D1CA /* NSBundle.swift */; };
43C05CAD21EB2BBF006FB252 /* NSUserDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = 430B29892041F54A00BA9F93 /* NSUserDefaults.swift */; };
43C05CAF21EB2C24006FB252 /* NSBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 430DA58D1D4AEC230097D1CA /* NSBundle.swift */; };
- 43C05CB121EBBDB9006FB252 /* TimeInRangeLesson.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43C05CB021EBBDB9006FB252 /* TimeInRangeLesson.swift */; };
43C05CB221EBD88A006FB252 /* LoopCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 43D9002A21EB209400AF44BF /* LoopCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
- 43C05CB521EBE274006FB252 /* Date.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43C05CB421EBE274006FB252 /* Date.swift */; };
- 43C05CB621EBE321006FB252 /* NSTimeInterval.swift in Sources */ = {isa = PBXBuildFile; fileRef = 439897341CD2F7DE00223065 /* NSTimeInterval.swift */; };
43C05CB821EBEA54006FB252 /* HKUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43C05CB721EBEA54006FB252 /* HKUnit.swift */; };
43C05CB921EBEA54006FB252 /* HKUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43C05CB721EBEA54006FB252 /* HKUnit.swift */; };
- 43C05CBD21EBF77D006FB252 /* LessonsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43C05CBC21EBF77D006FB252 /* LessonsViewController.swift */; };
- 43C05CC021EBFFA4006FB252 /* Lesson.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43C05CBF21EBFFA4006FB252 /* Lesson.swift */; };
- 43C05CC221EC06E4006FB252 /* LessonConfigurationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43C05CC121EC06E4006FB252 /* LessonConfigurationViewController.swift */; };
43C05CC521EC29E3006FB252 /* TextFieldTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4374B5F3209D89A900D17AA8 /* TextFieldTableViewCell.swift */; };
- 43C05CC621EC29E7006FB252 /* TextFieldTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4374B5F3209D89A900D17AA8 /* TextFieldTableViewCell.swift */; };
43C05CC721EC2ABC006FB252 /* IdentifiableClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 434FF1E91CF26C29000DB779 /* IdentifiableClass.swift */; };
43C05CC821EC2ABC006FB252 /* IdentifiableClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 434FF1E91CF26C29000DB779 /* IdentifiableClass.swift */; };
- 43C05CCA21EC382B006FB252 /* NumberEntry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43C05CC921EC382B006FB252 /* NumberEntry.swift */; };
43C0944A1CACCC73001F6403 /* NotificationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43C094491CACCC73001F6403 /* NotificationManager.swift */; };
43C2FAE11EB656A500364AFF /* GlucoseEffectVelocity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43C2FAE01EB656A500364AFF /* GlucoseEffectVelocity.swift */; };
43C513191E864C4E001547C7 /* GlucoseRangeSchedule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43C513181E864C4E001547C7 /* GlucoseRangeSchedule.swift */; };
- 43C5F257222C7B7200905D10 /* TimeComponents.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43C5F256222C7B7200905D10 /* TimeComponents.swift */; };
- 43C5F258222C7BD400905D10 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43D9FFA421EA9A0C00AF44BF /* AppDelegate.swift */; };
- 43C5F25A222C921B00905D10 /* OSLog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43C5F259222C921B00905D10 /* OSLog.swift */; };
- 43C728F5222266F000C62969 /* ModalDayLesson.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43C728F4222266F000C62969 /* ModalDayLesson.swift */; };
- 43C728F72222700000C62969 /* DateIntervalEntry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43C728F62222700000C62969 /* DateIntervalEntry.swift */; };
- 43C728F9222A448700C62969 /* DayCalculator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43C728F8222A448700C62969 /* DayCalculator.swift */; };
43CB2B2B1D924D450079823D /* WCSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43CB2B2A1D924D450079823D /* WCSession.swift */; };
43CE7CDE1CA8B63E003CC1B0 /* Data.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43CE7CDD1CA8B63E003CC1B0 /* Data.swift */; };
43D381621EBD9759007F8C8F /* HeaderValuesTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43D381611EBD9759007F8C8F /* HeaderValuesTableViewCell.swift */; };
@@ -187,26 +170,9 @@
43D9002021EB209400AF44BF /* NSTimeInterval.swift in Sources */ = {isa = PBXBuildFile; fileRef = 439897341CD2F7DE00223065 /* NSTimeInterval.swift */; };
43D9002D21EB225D00AF44BF /* HealthKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 43D9002C21EB225D00AF44BF /* HealthKit.framework */; };
43D9002F21EB234400AF44BF /* LoopCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 43D9002A21EB209400AF44BF /* LoopCore.framework */; };
- 43D9F81821EC51CC000578CD /* DateEntry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43D9F81721EC51CC000578CD /* DateEntry.swift */; };
- 43D9F81A21EC593C000578CD /* UITableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43D9F81921EC593C000578CD /* UITableViewCell.swift */; };
- 43D9F81E21EF0609000578CD /* NumberRangeEntry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43D9F81D21EF0609000578CD /* NumberRangeEntry.swift */; };
- 43D9F82021EF0906000578CD /* NSNumber.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43D9F81F21EF0906000578CD /* NSNumber.swift */; };
- 43D9F82221EF0A7A000578CD /* QuantityRangeEntry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43D9F82121EF0A7A000578CD /* QuantityRangeEntry.swift */; };
- 43D9F82421EFF1AB000578CD /* LessonResultsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43D9F82321EFF1AB000578CD /* LessonResultsViewController.swift */; };
- 43D9FFAA21EA9A0C00AF44BF /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 43D9FFA821EA9A0C00AF44BF /* Main.storyboard */; };
- 43D9FFAC21EA9A0F00AF44BF /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 43D9FFAB21EA9A0F00AF44BF /* Assets.xcassets */; };
- 43D9FFAF21EA9A0F00AF44BF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 43D9FFAD21EA9A0F00AF44BF /* LaunchScreen.storyboard */; };
- 43D9FFB421EA9AD800AF44BF /* LoopUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4F75288B1DFE1DC600C322D6 /* LoopUI.framework */; };
- 43D9FFB621EA9B2F00AF44BF /* HealthKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 43F5C2C81B929C09003EB13D /* HealthKit.framework */; };
- 43D9FFBB21EA9CC900AF44BF /* LoopKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 43F78D4B1C914197002152D1 /* LoopKit.framework */; };
- 43D9FFBC21EA9CCD00AF44BF /* LoopKitUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 437AFEE6203688CF008C4892 /* LoopKitUI.framework */; };
- 43D9FFC021EAB22E00AF44BF /* DataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43D9FFBF21EAB22E00AF44BF /* DataManager.swift */; };
43D9FFD321EAE05D00AF44BF /* LoopCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 43D9FFD121EAE05D00AF44BF /* LoopCore.h */; settings = {ATTRIBUTES = (Public, ); }; };
43D9FFD621EAE05D00AF44BF /* LoopCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 43D9FFCF21EAE05D00AF44BF /* LoopCore.framework */; };
43D9FFD721EAE05D00AF44BF /* LoopCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 43D9FFCF21EAE05D00AF44BF /* LoopCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
- 43D9FFDE21EAE3AE00AF44BF /* LoopCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 43D9FFCF21EAE05D00AF44BF /* LoopCore.framework */; };
- 43D9FFE021EAE3E500AF44BF /* LoopUI.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4F75288B1DFE1DC600C322D6 /* LoopUI.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
- 43D9FFE121EAE3E500AF44BF /* LoopCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 43D9FFCF21EAE05D00AF44BF /* LoopCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
43D9FFFB21EAF3D300AF44BF /* NSTimeInterval.swift in Sources */ = {isa = PBXBuildFile; fileRef = 439897341CD2F7DE00223065 /* NSTimeInterval.swift */; };
43DBF0531C93EC8200B3C386 /* DeviceDataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43DBF0521C93EC8200B3C386 /* DeviceDataManager.swift */; };
43DFB62320D4CAE7008A7BAE /* PumpManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43C3B6F620BBCAA30026CAFA /* PumpManager.swift */; };
@@ -295,6 +261,7 @@
4FF4D0F81E1725B000846527 /* NibLoadable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 434F54561D287FDB002A9274 /* NibLoadable.swift */; };
4FF4D1001E18374700846527 /* WatchContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FF4D0FF1E18374700846527 /* WatchContext.swift */; };
4FF4D1011E18375000846527 /* WatchContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FF4D0FF1E18374700846527 /* WatchContext.swift */; };
+ 63F5E17C297DDF3900A62D4B /* ckcomplication.strings in Resources */ = {isa = PBXBuildFile; fileRef = 63F5E17A297DDF3900A62D4B /* ckcomplication.strings */; };
7D23667D21250C7E0028B67D /* LocalizedString.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D23667C21250C7E0028B67D /* LocalizedString.swift */; };
7D7076351FE06EDE004AC8EA /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 7D7076371FE06EDE004AC8EA /* Localizable.strings */; };
7D7076451FE06EE0004AC8EA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 7D7076471FE06EE0004AC8EA /* InfoPlist.strings */; };
@@ -303,8 +270,6 @@
7D7076591FE06EE2004AC8EA /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 7D70765B1FE06EE2004AC8EA /* Localizable.strings */; };
7D70765E1FE06EE3004AC8EA /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 7D7076601FE06EE3004AC8EA /* Localizable.strings */; };
7D7076631FE06EE4004AC8EA /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 7D7076651FE06EE4004AC8EA /* Localizable.strings */; };
- 7D9BEEF32335CF8D005DCFD6 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 7D9BEEF52335CF8D005DCFD6 /* Localizable.strings */; };
- 80F864E62433BF5D0026EC26 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 80F864E42433BF5D0026EC26 /* InfoPlist.strings */; };
891B508524342BE1005DA578 /* CarbAndBolusFlowViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 891B508424342BE1005DA578 /* CarbAndBolusFlowViewModel.swift */; };
892A5D59222F0A27008961AB /* Debug.swift in Sources */ = {isa = PBXBuildFile; fileRef = 892A5D58222F0A27008961AB /* Debug.swift */; };
892A5D692230C41D008961AB /* RangeReplaceableCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 892A5D682230C41D008961AB /* RangeReplaceableCollection.swift */; };
@@ -389,6 +354,12 @@
A98556852493F901000FD662 /* AlertStore+SimulatedCoreData.swift in Sources */ = {isa = PBXBuildFile; fileRef = A98556842493F901000FD662 /* AlertStore+SimulatedCoreData.swift */; };
A987CD4924A58A0100439ADC /* ZipArchive.swift in Sources */ = {isa = PBXBuildFile; fileRef = A987CD4824A58A0100439ADC /* ZipArchive.swift */; };
A999D40624663D18004C89D4 /* PumpManagerError.swift in Sources */ = {isa = PBXBuildFile; fileRef = A999D40524663D18004C89D4 /* PumpManagerError.swift */; };
+ A99A114229A581F4007919CE /* BolusAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = A99A114129A581F4007919CE /* BolusAction.swift */; };
+ A99A114429A5829A007919CE /* CarbAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = A99A114329A5829A007919CE /* CarbAction.swift */; };
+ A99A114629A582A2007919CE /* OverrideAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = A99A114529A582A2007919CE /* OverrideAction.swift */; };
+ A99A114E29A5879D007919CE /* BolusActionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A99A114B29A5879C007919CE /* BolusActionTests.swift */; };
+ A99A114F29A5879D007919CE /* CarbActionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A99A114C29A5879C007919CE /* CarbActionTests.swift */; };
+ A99A115029A5879D007919CE /* OverrideActionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A99A114D29A5879C007919CE /* OverrideActionTests.swift */; };
A9A056B324B93C62007CF06D /* CriticalEventLogExportView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9A056B224B93C62007CF06D /* CriticalEventLogExportView.swift */; };
A9A056B524B94123007CF06D /* CriticalEventLogExportViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9A056B424B94123007CF06D /* CriticalEventLogExportViewModel.swift */; };
A9A63F8E246B271600588D5B /* NSTimeInterval.swift in Sources */ = {isa = PBXBuildFile; fileRef = 439897341CD2F7DE00223065 /* NSTimeInterval.swift */; };
@@ -454,7 +425,12 @@
B4E96D5D248A82A2002DABAD /* StatusBarHUDView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B4E96D5C248A82A2002DABAD /* StatusBarHUDView.xib */; };
B4F3D25124AF890C0095CE44 /* BluetoothStateManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4F3D25024AF890C0095CE44 /* BluetoothStateManager.swift */; };
B4FEEF7D24B8A71F00A8DF9B /* DeviceDataManager+DeviceStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4FEEF7C24B8A71F00A8DF9B /* DeviceDataManager+DeviceStatus.swift */; };
+ C1004DF22981F5B700B8CF94 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = C1004DF02981F5B700B8CF94 /* InfoPlist.strings */; };
+ C1004DF52981F5B700B8CF94 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = C1004DF32981F5B700B8CF94 /* Localizable.strings */; };
+ C1004DF82981F5B700B8CF94 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = C1004DF62981F5B700B8CF94 /* InfoPlist.strings */; };
C10B28461EA9BA5E006EA1FC /* far_future_high_bg_forecast.json in Resources */ = {isa = PBXBuildFile; fileRef = C10B28451EA9BA5E006EA1FC /* far_future_high_bg_forecast.json */; };
+ C11613492983096D00777E7C /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = C11613472983096D00777E7C /* InfoPlist.strings */; };
+ C116134C2983096D00777E7C /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = C116134A2983096D00777E7C /* Localizable.strings */; };
C11B9D5B286778A800500CF8 /* SwiftCharts in Frameworks */ = {isa = PBXBuildFile; productRef = C11B9D5A286778A800500CF8 /* SwiftCharts */; };
C11B9D5E286778D000500CF8 /* LoopKitUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C11B9D5D286778D000500CF8 /* LoopKitUI.framework */; };
C11B9D62286779C000500CF8 /* MockKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C11B9D60286779C000500CF8 /* MockKit.framework */; };
@@ -495,7 +471,6 @@
C17824A61E1AF91F00D9D25C /* ManualBolusRecommendation.swift in Sources */ = {isa = PBXBuildFile; fileRef = C17824A41E1AD4D100D9D25C /* ManualBolusRecommendation.swift */; };
C17DDC9C28AC339E005FBF4C /* PersistedProperty.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1DA986B2843B6F9001D04CC /* PersistedProperty.swift */; };
C17DDC9D28AC33A1005FBF4C /* PersistedProperty.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1DA986B2843B6F9001D04CC /* PersistedProperty.swift */; };
- C1814B86225E507C008D2D8E /* Sequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1814B85225E507C008D2D8E /* Sequence.swift */; };
C18913B52524F24C007B0683 /* DeviceDataManager+SimpleBolusViewModelDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = C18913B42524F24C007B0683 /* DeviceDataManager+SimpleBolusViewModelDelegate.swift */; };
C19008FE25225D3900721625 /* SimpleBolusCalculator.swift in Sources */ = {isa = PBXBuildFile; fileRef = C19008FD25225D3900721625 /* SimpleBolusCalculator.swift */; };
C1900900252271BB00721625 /* SimpleBolusCalculatorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C19008FF252271BB00721625 /* SimpleBolusCalculatorTests.swift */; };
@@ -525,6 +500,8 @@
C1C73F0D1DE3D0270022FC89 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = C1C73F0F1DE3D0270022FC89 /* InfoPlist.strings */; };
C1CCF1122858FA900035389C /* LoopCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 43D9FFCF21EAE05D00AF44BF /* LoopCore.framework */; };
C1CCF1172858FBAD0035389C /* SwiftCharts in Frameworks */ = {isa = PBXBuildFile; productRef = C1CCF1162858FBAD0035389C /* SwiftCharts */; };
+ C1D0B6302986D4D90098D215 /* LocalizedString.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1D0B62F2986D4D90098D215 /* LocalizedString.swift */; };
+ C1D0B6312986D4D90098D215 /* LocalizedString.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1D0B62F2986D4D90098D215 /* LocalizedString.swift */; };
C1D289B522F90A52003FFBD9 /* BasalDeliveryState.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1D289B422F90A52003FFBD9 /* BasalDeliveryState.swift */; };
C1DE5D23251BFC4D00439E49 /* SimpleBolusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1DE5D22251BFC4D00439E49 /* SimpleBolusView.swift */; };
C1E2773E224177C000354103 /* ClockKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C1E2773D224177C000354103 /* ClockKit.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
@@ -581,6 +558,7 @@
E942DE96253BE68F00AC532D /* NSBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 430DA58D1D4AEC230097D1CA /* NSBundle.swift */; };
E942DE9F253BE6A900AC532D /* NSTimeInterval.swift in Sources */ = {isa = PBXBuildFile; fileRef = 439897341CD2F7DE00223065 /* NSTimeInterval.swift */; };
E942DF34253BF87F00AC532D /* Intents.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = 43785E9B2120E7060057DED1 /* Intents.intentdefinition */; };
+ E950CA9129002D9000B5B692 /* LoopDataManagerDosingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E950CA9029002D9000B5B692 /* LoopDataManagerDosingTests.swift */; };
E95D380124EADE7C005E2F50 /* DoseStoreProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = E95D380024EADE7C005E2F50 /* DoseStoreProtocol.swift */; };
E95D380324EADF36005E2F50 /* CarbStoreProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = E95D380224EADF36005E2F50 /* CarbStoreProtocol.swift */; };
E95D380524EADF78005E2F50 /* GlucoseStoreProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = E95D380424EADF78005E2F50 /* GlucoseStoreProtocol.swift */; };
@@ -598,6 +576,18 @@
E9B08021253BBDE900BAD8F8 /* IntentExtensionInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9B08020253BBDE900BAD8F8 /* IntentExtensionInfo.swift */; };
E9B0802B253BBDFF00BAD8F8 /* IntentExtensionInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9B08020253BBDE900BAD8F8 /* IntentExtensionInfo.swift */; };
E9B080B1253BDA6300BAD8F8 /* UserDefaults+LoopIntents.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9B08015253BBD7300BAD8F8 /* UserDefaults+LoopIntents.swift */; };
+ E9B3552229358C440076AB04 /* MealDetectionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9B3552129358C440076AB04 /* MealDetectionManager.swift */; };
+ E9B355292935919E0076AB04 /* MissedMealSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9B35525293590980076AB04 /* MissedMealSettings.swift */; };
+ E9B3552A293591E70076AB04 /* MissedMealNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9B3551B292844010076AB04 /* MissedMealNotification.swift */; };
+ E9B3552B293591E70076AB04 /* MissedMealNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9B3551B292844010076AB04 /* MissedMealNotification.swift */; };
+ E9B3552D293592B40076AB04 /* MealDetectionManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9B3552C293592B40076AB04 /* MealDetectionManagerTests.swift */; };
+ E9B3552F2935968E0076AB04 /* HKHealthStoreMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9B3552E2935968E0076AB04 /* HKHealthStoreMock.swift */; };
+ E9B35538293706CB0076AB04 /* needs_clamping_counteraction_effect.json in Resources */ = {isa = PBXBuildFile; fileRef = E9B35532293706CA0076AB04 /* needs_clamping_counteraction_effect.json */; };
+ E9B35539293706CB0076AB04 /* dynamic_autofill_counteraction_effect.json in Resources */ = {isa = PBXBuildFile; fileRef = E9B35533293706CA0076AB04 /* dynamic_autofill_counteraction_effect.json */; };
+ E9B3553A293706CB0076AB04 /* missed_meal_counteraction_effect.json in Resources */ = {isa = PBXBuildFile; fileRef = E9B35534293706CB0076AB04 /* missed_meal_counteraction_effect.json */; };
+ E9B3553B293706CB0076AB04 /* noisy_cgm_counteraction_effect.json in Resources */ = {isa = PBXBuildFile; fileRef = E9B35535293706CB0076AB04 /* noisy_cgm_counteraction_effect.json */; };
+ E9B3553C293706CB0076AB04 /* realistic_report_counteraction_effect.json in Resources */ = {isa = PBXBuildFile; fileRef = E9B35536293706CB0076AB04 /* realistic_report_counteraction_effect.json */; };
+ E9B3553D293706CB0076AB04 /* long_interval_counteraction_effect.json in Resources */ = {isa = PBXBuildFile; fileRef = E9B35537293706CB0076AB04 /* long_interval_counteraction_effect.json */; };
E9BB27AB23B85C3500FB4987 /* SleepStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9BB27AA23B85C3500FB4987 /* SleepStore.swift */; };
E9C00EF224C6221B00628F35 /* LoopSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9C00EEF24C620EF00628F35 /* LoopSettings.swift */; };
E9C00EF324C6222400628F35 /* LoopSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9C00EEF24C620EF00628F35 /* LoopSettings.swift */; };
@@ -640,13 +630,6 @@
remoteGlobalIDString = 43A943711B926B7B0051FA24;
remoteInfo = WatchApp;
};
- 43D9FFB921EA9CA400AF44BF /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 43776F841B8022E90074EA36 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 4F75288A1DFE1DC600C322D6;
- remoteInfo = LoopUI;
- };
43D9FFD421EAE05D00AF44BF /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 43776F841B8022E90074EA36 /* Project object */;
@@ -682,13 +665,6 @@
remoteGlobalIDString = 43D9FFCE21EAE05D00AF44BF;
remoteInfo = LoopCore;
};
- A942E446225FD9A300DD4980 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 43776F841B8022E90074EA36 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 43D9FFCE21EAE05D00AF44BF;
- remoteInfo = LoopCore;
- };
C117ED70232EDB3200DA57CD /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 43776F841B8022E90074EA36 /* Project object */;
@@ -775,18 +751,6 @@
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
};
- 43D9FFDF21EAE3C600AF44BF /* Embed Frameworks */ = {
- isa = PBXCopyFilesBuildPhase;
- buildActionMask = 2147483647;
- dstPath = "";
- dstSubfolderSpec = 10;
- files = (
- 43D9FFE021EAE3E500AF44BF /* LoopUI.framework in Embed Frameworks */,
- 43D9FFE121EAE3E500AF44BF /* LoopCore.framework in Embed Frameworks */,
- );
- name = "Embed Frameworks";
- runOnlyForDeploymentPostprocessing = 0;
- };
43E2D8DD1D20C072004DA55F /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
@@ -989,11 +953,9 @@
43D9F81F21EF0906000578CD /* NSNumber.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NSNumber.swift; sourceTree = ""; };
43D9F82121EF0A7A000578CD /* QuantityRangeEntry.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuantityRangeEntry.swift; sourceTree = ""; };
43D9F82321EFF1AB000578CD /* LessonResultsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LessonResultsViewController.swift; sourceTree = ""; };
- 43D9FFA221EA9A0C00AF44BF /* Learn.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Learn.app; sourceTree = BUILT_PRODUCTS_DIR; };
43D9FFA421EA9A0C00AF44BF /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
43D9FFA921EA9A0C00AF44BF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
43D9FFAB21EA9A0F00AF44BF /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
- 43D9FFAE21EA9A0F00AF44BF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
43D9FFB021EA9A0F00AF44BF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
43D9FFB521EA9B0100AF44BF /* Learn.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Learn.entitlements; sourceTree = ""; };
43D9FFBF21EAB22E00AF44BF /* DataManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataManager.swift; sourceTree = ""; };
@@ -1073,6 +1035,7 @@
4FDDD23620DC51DF00D04B16 /* LoopDataManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoopDataManager.swift; sourceTree = ""; };
4FF4D0FF1E18374700846527 /* WatchContext.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WatchContext.swift; sourceTree = ""; };
4FFEDFBE20E5CF22000BFC58 /* ChartHUDController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChartHUDController.swift; sourceTree = ""; };
+ 63F5E17B297DDF3900A62D4B /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Base.lproj/ckcomplication.strings; sourceTree = ""; };
7D199D93212A067600241026 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/Main.strings; sourceTree = ""; };
7D199D94212A067600241026 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/MainInterface.strings; sourceTree = ""; };
7D199D95212A067600241026 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/Interface.strings; sourceTree = ""; };
@@ -1379,6 +1342,12 @@
A98556842493F901000FD662 /* AlertStore+SimulatedCoreData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AlertStore+SimulatedCoreData.swift"; sourceTree = ""; };
A987CD4824A58A0100439ADC /* ZipArchive.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ZipArchive.swift; sourceTree = ""; };
A999D40524663D18004C89D4 /* PumpManagerError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PumpManagerError.swift; sourceTree = ""; };
+ A99A114129A581F4007919CE /* BolusAction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BolusAction.swift; sourceTree = ""; };
+ A99A114329A5829A007919CE /* CarbAction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CarbAction.swift; sourceTree = ""; };
+ A99A114529A582A2007919CE /* OverrideAction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OverrideAction.swift; sourceTree = ""; };
+ A99A114B29A5879C007919CE /* BolusActionTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BolusActionTests.swift; sourceTree = ""; };
+ A99A114C29A5879C007919CE /* CarbActionTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CarbActionTests.swift; sourceTree = ""; };
+ A99A114D29A5879C007919CE /* OverrideActionTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OverrideActionTests.swift; sourceTree = ""; };
A9A056B224B93C62007CF06D /* CriticalEventLogExportView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CriticalEventLogExportView.swift; sourceTree = ""; };
A9A056B424B94123007CF06D /* CriticalEventLogExportViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CriticalEventLogExportViewModel.swift; sourceTree = ""; };
A9B607AF247F000F00792BE4 /* UserNotifications+Loop.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UserNotifications+Loop.swift"; sourceTree = ""; };
@@ -1436,14 +1405,106 @@
B4E96D5C248A82A2002DABAD /* StatusBarHUDView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = StatusBarHUDView.xib; sourceTree = ""; };
B4F3D25024AF890C0095CE44 /* BluetoothStateManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BluetoothStateManager.swift; sourceTree = ""; };
B4FEEF7C24B8A71F00A8DF9B /* DeviceDataManager+DeviceStatus.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DeviceDataManager+DeviceStatus.swift"; sourceTree = ""; };
+ C1004DEF2981F5B700B8CF94 /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004DF12981F5B700B8CF94 /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004DF42981F5B700B8CF94 /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/Localizable.strings; sourceTree = ""; };
+ C1004DF72981F5B700B8CF94 /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004DF92981F5B700B8CF94 /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/Localizable.strings; sourceTree = ""; };
+ C1004DFA2981F5B700B8CF94 /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004DFB2981F5B700B8CF94 /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004DFC2981F5B700B8CF94 /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004DFD2981F67A00B8CF94 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004DFE2981F67A00B8CF94 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004DFF2981F67A00B8CF94 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/Localizable.strings; sourceTree = ""; };
+ C1004E002981F67A00B8CF94 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E012981F67A00B8CF94 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/Localizable.strings; sourceTree = ""; };
+ C1004E022981F67A00B8CF94 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E032981F67A00B8CF94 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E042981F67A00B8CF94 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E052981F6A100B8CF94 /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = ro.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E062981F6A100B8CF94 /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = ro.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E072981F6A100B8CF94 /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = ro.lproj/Localizable.strings; sourceTree = ""; };
+ C1004E082981F6A100B8CF94 /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = ro.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E092981F6A100B8CF94 /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = ro.lproj/Localizable.strings; sourceTree = ""; };
+ C1004E0A2981F6A100B8CF94 /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = ro.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E0B2981F6A100B8CF94 /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = ro.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E0C2981F6A100B8CF94 /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = ro.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E0D2981F6E200B8CF94 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E0E2981F6E200B8CF94 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E0F2981F6E200B8CF94 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Localizable.strings; sourceTree = ""; };
+ C1004E102981F6E200B8CF94 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E112981F6E200B8CF94 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Localizable.strings; sourceTree = ""; };
+ C1004E122981F6E200B8CF94 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E132981F6E200B8CF94 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E142981F6E200B8CF94 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E152981F6F500B8CF94 /* nb */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nb; path = nb.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E162981F6F500B8CF94 /* nb */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nb; path = nb.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E172981F6F500B8CF94 /* nb */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nb; path = nb.lproj/Localizable.strings; sourceTree = ""; };
+ C1004E182981F6F500B8CF94 /* nb */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nb; path = nb.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E192981F6F500B8CF94 /* nb */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nb; path = nb.lproj/Localizable.strings; sourceTree = ""; };
+ C1004E1A2981F6F500B8CF94 /* nb */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nb; path = nb.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E1B2981F6F500B8CF94 /* nb */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nb; path = nb.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E1C2981F6F500B8CF94 /* nb */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nb; path = nb.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E1D2981F72D00B8CF94 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E1E2981F72D00B8CF94 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E1F2981F72D00B8CF94 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Localizable.strings; sourceTree = ""; };
+ C1004E202981F72D00B8CF94 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E212981F72D00B8CF94 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Localizable.strings; sourceTree = ""; };
+ C1004E222981F72D00B8CF94 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E232981F72D00B8CF94 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E242981F72D00B8CF94 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E252981F74300B8CF94 /* fi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fi; path = fi.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E262981F74300B8CF94 /* fi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fi; path = fi.lproj/Localizable.strings; sourceTree = ""; };
+ C1004E272981F74300B8CF94 /* fi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fi; path = fi.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E282981F74300B8CF94 /* fi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fi; path = fi.lproj/Localizable.strings; sourceTree = ""; };
+ C1004E292981F74300B8CF94 /* fi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fi; path = fi.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E2A2981F74300B8CF94 /* fi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fi; path = fi.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E2B2981F74300B8CF94 /* fi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fi; path = fi.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E2C2981F75B00B8CF94 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E2D2981F75B00B8CF94 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E2E2981F75B00B8CF94 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E2F2981F75B00B8CF94 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E302981F77B00B8CF94 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E312981F77B00B8CF94 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E322981F77B00B8CF94 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = ""; };
+ C1004E332981F77B00B8CF94 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E342981F77B00B8CF94 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1004E352981F77B00B8CF94 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InfoPlist.strings; sourceTree = ""; };
C101947127DD473C004E7EB8 /* MockKitUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = MockKitUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
C10B28451EA9BA5E006EA1FC /* far_future_high_bg_forecast.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = far_future_high_bg_forecast.json; sourceTree = ""; };
+ C11613482983096D00777E7C /* nb */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nb; path = nb.lproj/InfoPlist.strings; sourceTree = ""; };
+ C116134B2983096D00777E7C /* nb */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nb; path = nb.lproj/Localizable.strings; sourceTree = ""; };
+ C116134D2983096D00777E7C /* nb */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nb; path = nb.lproj/ckcomplication.strings; sourceTree = ""; };
+ C11A2BCE29830A3100AC5135 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Localizable.strings; sourceTree = ""; };
+ C11A2BCF29830A3100AC5135 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/ckcomplication.strings; sourceTree = ""; };
C11AA5C7258736CF00BDE12F /* DerivedAssetsBase.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = DerivedAssetsBase.xcassets; sourceTree = ""; };
C11B9D5D286778D000500CF8 /* LoopKitUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LoopKitUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
C11B9D60286779C000500CF8 /* MockKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = MockKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
C11B9D61286779C000500CF8 /* MockKitUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = MockKitUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
C11BD0542523CFED00236B08 /* SimpleBolusViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SimpleBolusViewModel.swift; sourceTree = ""; };
C1201E2B23ECDBD0002DA84A /* WatchContextRequestUserInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WatchContextRequestUserInfo.swift; sourceTree = ""; };
+ C122DEF829BBFAAE00321F8D /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/InfoPlist.strings; sourceTree = ""; };
+ C122DEF929BBFAAE00321F8D /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = ""; };
+ C122DEFA29BBFAAE00321F8D /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = ""; };
+ C122DEFB29BBFAAE00321F8D /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/InfoPlist.strings; sourceTree = ""; };
+ C122DEFC29BBFAAE00321F8D /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/InfoPlist.strings; sourceTree = ""; };
+ C122DEFD29BBFAAE00321F8D /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = ""; };
+ C122DEFE29BBFAAE00321F8D /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/ckcomplication.strings; sourceTree = ""; };
+ C122DEFF29BBFAAE00321F8D /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/InfoPlist.strings; sourceTree = ""; };
+ C122DF0029BBFAAE00321F8D /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/InfoPlist.strings; sourceTree = ""; };
+ C126BAFC29830A83002CEE4F /* zh-Hans-CN */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans-CN"; path = "zh-Hans-CN.lproj/Intents.strings"; sourceTree = ""; };
+ C126BAFD29830A83002CEE4F /* zh-Hans-CN */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans-CN"; path = "zh-Hans-CN.lproj/Localizable.strings"; sourceTree = ""; };
+ C126BAFE29830A83002CEE4F /* zh-Hans-CN */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans-CN"; path = "zh-Hans-CN.lproj/Localizable.strings"; sourceTree = ""; };
+ C126BAFF29830A83002CEE4F /* zh-Hans-CN */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans-CN"; path = "zh-Hans-CN.lproj/Main.strings"; sourceTree = ""; };
+ C126BB0029830A83002CEE4F /* zh-Hans-CN */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans-CN"; path = "zh-Hans-CN.lproj/Localizable.strings"; sourceTree = ""; };
+ C126BB0129830A83002CEE4F /* zh-Hans-CN */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans-CN"; path = "zh-Hans-CN.lproj/MainInterface.strings"; sourceTree = ""; };
+ C126BB0229830A83002CEE4F /* zh-Hans-CN */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans-CN"; path = "zh-Hans-CN.lproj/InfoPlist.strings"; sourceTree = ""; };
+ C126BB0329830A83002CEE4F /* zh-Hans-CN */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans-CN"; path = "zh-Hans-CN.lproj/Localizable.strings"; sourceTree = ""; };
+ C126BB0429830A83002CEE4F /* zh-Hans-CN */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans-CN"; path = "zh-Hans-CN.lproj/Main.strings"; sourceTree = ""; };
+ C126BB0529830A83002CEE4F /* zh-Hans-CN */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans-CN"; path = "zh-Hans-CN.lproj/Localizable.strings"; sourceTree = ""; };
+ C126BB0629830A83002CEE4F /* zh-Hans-CN */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans-CN"; path = "zh-Hans-CN.lproj/Localizable.strings"; sourceTree = ""; };
+ C126BB0729830A83002CEE4F /* zh-Hans-CN */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans-CN"; path = "zh-Hans-CN.lproj/Interface.strings"; sourceTree = ""; };
+ C12BCCF929BBFA480066A158 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/Localizable.strings; sourceTree = ""; };
C12CB9AC23106A3C00F84978 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Intents.strings; sourceTree = ""; };
C12CB9AE23106A5C00F84978 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Intents.strings; sourceTree = ""; };
C12CB9B023106A5F00F84978 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Intents.strings; sourceTree = ""; };
@@ -1454,6 +1515,11 @@
C12F21A61DFA79CB00748193 /* recommend_temp_basal_very_low_end_in_range.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = recommend_temp_basal_very_low_end_in_range.json; sourceTree = ""; };
C13DA2AF24F6C7690098BB29 /* UIViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIViewController.swift; sourceTree = ""; };
C148CEE624FD91BD00711B3B /* DeliveryUncertaintyAlertManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeliveryUncertaintyAlertManager.swift; sourceTree = ""; };
+ C14952142995822A0095AA84 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/InfoPlist.strings; sourceTree = ""; };
+ C14952152995822A0095AA84 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/InfoPlist.strings; sourceTree = ""; };
+ C155A8F32986396E009BD257 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InfoPlist.strings; sourceTree = ""; };
+ C155A8F42986396E009BD257 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = ""; };
+ C155A8F52986396E009BD257 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/ckcomplication.strings; sourceTree = ""; };
C159C8192867857000A86EC0 /* LoopKitUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LoopKitUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
C159C8212867859800A86EC0 /* MockKitUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = MockKitUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
C159C82E286787EF00A86EC0 /* LoopKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LoopKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -1468,6 +1534,10 @@
C16DA84122E8E112008624C2 /* PluginManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PluginManager.swift; sourceTree = ""; };
C1742331259BEADC00399C9D /* ManualEntryDoseView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ManualEntryDoseView.swift; sourceTree = ""; };
C174233B259BEB0F00399C9D /* ManualEntryDoseViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ManualEntryDoseViewModel.swift; sourceTree = ""; };
+ C174571229830930009EFCF2 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Localizable.strings; sourceTree = ""; };
+ C174571329830930009EFCF2 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Localizable.strings; sourceTree = ""; };
+ C174571429830930009EFCF2 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/InfoPlist.strings; sourceTree = ""; };
+ C174571529830930009EFCF2 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Localizable.strings; sourceTree = ""; };
C1750AEB255B013300B8011C /* Minizip.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Minizip.framework; sourceTree = BUILT_PRODUCTS_DIR; };
C1777A6525A125F100595963 /* ManualEntryDoseViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ManualEntryDoseViewModelTests.swift; sourceTree = ""; };
C17824991E1999FA00D9D25C /* CaseCountable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CaseCountable.swift; sourceTree = ""; };
@@ -1475,23 +1545,77 @@
C17824A21E19EAB600D9D25C /* recommend_temp_basal_start_very_low_end_high.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = recommend_temp_basal_start_very_low_end_high.json; sourceTree = ""; };
C17824A41E1AD4D100D9D25C /* ManualBolusRecommendation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ManualBolusRecommendation.swift; sourceTree = ""; };
C1814B85225E507C008D2D8E /* Sequence.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Sequence.swift; sourceTree = ""; };
+ C186B73F298309A700F83024 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = ""; };
+ C18886E629830A5E004C982D /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = ""; };
+ C18886E729830A5E004C982D /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Localizable.strings; sourceTree = ""; };
+ C18886E829830A5E004C982D /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/ckcomplication.strings; sourceTree = ""; };
C18913B42524F24C007B0683 /* DeviceDataManager+SimpleBolusViewModelDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DeviceDataManager+SimpleBolusViewModelDelegate.swift"; sourceTree = ""; };
C18A491222FCC22800FDA733 /* build-derived-assets.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = "build-derived-assets.sh"; sourceTree = ""; };
C18A491322FCC22900FDA733 /* make_scenario.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = make_scenario.py; sourceTree = ""; };
C18A491522FCC22900FDA733 /* copy-plugins.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = "copy-plugins.sh"; sourceTree = ""; };
+ C18B725E299581C600F138D3 /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/InfoPlist.strings; sourceTree = ""; };
+ C18B725F299581C600F138D3 /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/Localizable.strings; sourceTree = ""; };
+ C18B7260299581C600F138D3 /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/ckcomplication.strings; sourceTree = ""; };
C19008FD25225D3900721625 /* SimpleBolusCalculator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SimpleBolusCalculator.swift; sourceTree = ""; };
C19008FF252271BB00721625 /* SimpleBolusCalculatorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SimpleBolusCalculatorTests.swift; sourceTree = ""; };
C191D2A025B3ACAA00C26C0B /* DosingStrategySelectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DosingStrategySelectionView.swift; sourceTree = ""; };
+ C19A2247298951AC000E4E71 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; };
C19C8BB928651DFB0056D5E4 /* TrueTime.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TrueTime.framework; sourceTree = BUILT_PRODUCTS_DIR; };
C19C8BC228651EAE0056D5E4 /* LoopTestingKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LoopTestingKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
C19C8BC728651F0A0056D5E4 /* MockKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = MockKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
C19C8C20286776C20056D5E4 /* LoopKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LoopKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ C19E387B298638CE00851444 /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/InfoPlist.strings; sourceTree = ""; };
+ C19E387C298638CE00851444 /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/InfoPlist.strings; sourceTree = ""; };
+ C19E387D298638CE00851444 /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/Localizable.strings; sourceTree = ""; };
+ C19E387E298638CE00851444 /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/InfoPlist.strings; sourceTree = ""; };
C19E96DD23D2733F003F79B0 /* LoopCompletionFreshness.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoopCompletionFreshness.swift; sourceTree = ""; };
C19F496225630504003632D7 /* Minizip.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Minizip.framework; sourceTree = BUILT_PRODUCTS_DIR; };
C1AD41FF256D61E500164DDD /* Comparable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Comparable.swift; sourceTree = ""; };
+ C1AD48CE298639890013B994 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1AD62FE29BBFAA80002685D /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = ro.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1AD62FF29BBFAA80002685D /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = ro.lproj/Localizable.strings; sourceTree = ""; };
+ C1AD630029BBFAA80002685D /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = ro.lproj/ckcomplication.strings; sourceTree = ""; };
C1AF062229426300002C1B19 /* ManualGlucoseEntryRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ManualGlucoseEntryRow.swift; sourceTree = ""; };
+ C1B267992995824000BCB7C1 /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/Localizable.strings; sourceTree = ""; };
+ C1B2679A2995824000BCB7C1 /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1B2679B2995824000BCB7C1 /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/Localizable.strings; sourceTree = ""; };
+ C1B2679C2995824000BCB7C1 /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/ckcomplication.strings; sourceTree = ""; };
+ C1B2679D2995824000BCB7C1 /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1BCB5AF298309C4001C50FF /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1BCB5B0298309C4001C50FF /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1BCB5B1298309C4001C50FF /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Localizable.strings; sourceTree = ""; };
+ C1BCB5B2298309C4001C50FF /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1BCB5B3298309C4001C50FF /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Localizable.strings; sourceTree = ""; };
+ C1BCB5B4298309C4001C50FF /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1BCB5B5298309C4001C50FF /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1BCB5B6298309C4001C50FF /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Localizable.strings; sourceTree = ""; };
+ C1BCB5B7298309C4001C50FF /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/ckcomplication.strings; sourceTree = ""; };
+ C1BCB5B8298309C4001C50FF /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1BCB5B9298309C4001C50FF /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1C247882995823200371B88 /* sk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sk; path = sk.lproj/Intents.strings; sourceTree = ""; };
+ C1C247892995823200371B88 /* sk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sk; path = sk.lproj/Localizable.strings; sourceTree = ""; };
+ C1C2478A2995823200371B88 /* sk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sk; path = sk.lproj/Localizable.strings; sourceTree = ""; };
+ C1C2478B2995823200371B88 /* sk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sk; path = sk.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1C2478C2995823200371B88 /* sk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sk; path = sk.lproj/Localizable.strings; sourceTree = ""; };
+ C1C2478D2995823200371B88 /* sk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sk; path = sk.lproj/Localizable.strings; sourceTree = ""; };
+ C1C2478E2995823200371B88 /* sk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sk; path = sk.lproj/MainInterface.strings; sourceTree = ""; };
+ C1C2478F2995823200371B88 /* sk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sk; path = sk.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1C247902995823200371B88 /* sk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sk; path = sk.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1C247912995823200371B88 /* sk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sk; path = sk.lproj/Localizable.strings; sourceTree = ""; };
+ C1C31277297E4BFE00296DA4 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Main.strings; sourceTree = ""; };
+ C1C31278297E4BFE00296DA4 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/MainInterface.strings; sourceTree = ""; };
+ C1C31279297E4BFE00296DA4 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Interface.strings; sourceTree = ""; };
+ C1C3127A297E4BFE00296DA4 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Main.strings; sourceTree = ""; };
+ C1C3127C297E4BFE00296DA4 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Localizable.strings; sourceTree = ""; };
+ C1C3127D297E4C0100296DA4 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1C3127E297E4C0100296DA4 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/ckcomplication.strings; sourceTree = ""; };
+ C1C3127F297E4C0400296DA4 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Intents.strings; sourceTree = ""; };
+ C1C31280297E4C0400296DA4 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Localizable.strings; sourceTree = ""; };
+ C1C31281297E4C0400296DA4 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1C31282297E4F6E00296DA4 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Localizable.strings; sourceTree = ""; };
C1C6591B1E1B1FDA0025CC58 /* recommend_temp_basal_dropping_then_rising.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = recommend_temp_basal_dropping_then_rising.json; sourceTree = ""; };
C1C660D0252E4DD5009B5C32 /* LoopConstants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoopConstants.swift; sourceTree = ""; };
+ C1D0B62F2986D4D90098D215 /* LocalizedString.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalizedString.swift; sourceTree = ""; };
C1D197FE232CF92D0096D646 /* capture-build-details.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = "capture-build-details.sh"; sourceTree = ""; };
C1D289B422F90A52003FFBD9 /* BasalDeliveryState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BasalDeliveryState.swift; sourceTree = ""; };
C1DA986B2843B6F9001D04CC /* PersistedProperty.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PersistedProperty.swift; sourceTree = ""; };
@@ -1500,8 +1624,25 @@
C1E2774722433D7A00354103 /* MKRingProgressView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = MKRingProgressView.framework; sourceTree = BUILT_PRODUCTS_DIR; };
C1E3862428247B7100F561A4 /* StoredLoopNotRunningNotification.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoredLoopNotRunningNotification.swift; sourceTree = ""; };
C1E71721292E90CC00DA646F /* SmallStatusWidgetEntryView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SmallStatusWidgetEntryView.swift; sourceTree = ""; };
+ C1EB0D1D299581D900628475 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1EB0D1E299581D900628475 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = ""; };
+ C1EB0D1F299581D900628475 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1EB0D20299581D900628475 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1EB0D21299581D900628475 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = ""; };
+ C1EB0D22299581D900628475 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/ckcomplication.strings; sourceTree = ""; };
C1EF747128D6A44A00C8C083 /* CrashRecoveryManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrashRecoveryManager.swift; sourceTree = ""; };
C1F2075B26D6F9B0007AB7EB /* ProfileExpirationAlerter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileExpirationAlerter.swift; sourceTree = ""; };
+ C1F48FF62995821600C8BD69 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1F48FF72995821600C8BD69 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1F48FF82995821600C8BD69 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/Localizable.strings; sourceTree = ""; };
+ C1F48FF92995821600C8BD69 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1F48FFA2995821600C8BD69 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/Localizable.strings; sourceTree = ""; };
+ C1F48FFB2995821600C8BD69 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1F48FFC2995821600C8BD69 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1F48FFD2995821600C8BD69 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/Localizable.strings; sourceTree = ""; };
+ C1F48FFE2995821600C8BD69 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/ckcomplication.strings; sourceTree = ""; };
+ C1F48FFF2995821600C8BD69 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/InfoPlist.strings; sourceTree = ""; };
+ C1F490002995821600C8BD69 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/InfoPlist.strings; sourceTree = ""; };
C1F7822527CC056900C0919A /* SettingsManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsManager.swift; sourceTree = ""; };
C1F8B1D122375E4200DD66CF /* BolusProgressTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BolusProgressTableViewCell.swift; sourceTree = ""; };
C1F8B1DB223862D500DD66CF /* BolusProgressTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = BolusProgressTableViewCell.xib; sourceTree = ""; };
@@ -1544,6 +1685,7 @@
E93E86C824E2E02200FF40C8 /* high_and_stable_counteraction_effect.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = high_and_stable_counteraction_effect.json; sourceTree = ""; };
E93E86C924E2E02200FF40C8 /* high_and_stable_momentum_effect.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = high_and_stable_momentum_effect.json; sourceTree = ""; };
E942DE6D253BE5E100AC532D /* Loop Intent Extension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "Loop Intent Extension.entitlements"; sourceTree = ""; };
+ E950CA9029002D9000B5B692 /* LoopDataManagerDosingTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoopDataManagerDosingTests.swift; sourceTree = ""; };
E95D380024EADE7C005E2F50 /* DoseStoreProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DoseStoreProtocol.swift; sourceTree = ""; };
E95D380224EADF36005E2F50 /* CarbStoreProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CarbStoreProtocol.swift; sourceTree = ""; };
E95D380424EADF78005E2F50 /* GlucoseStoreProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GlucoseStoreProtocol.swift; sourceTree = ""; };
@@ -1561,6 +1703,17 @@
E9B07FED253BBC7100BAD8F8 /* OverrideIntentHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OverrideIntentHandler.swift; sourceTree = ""; };
E9B08015253BBD7300BAD8F8 /* UserDefaults+LoopIntents.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UserDefaults+LoopIntents.swift"; sourceTree = ""; };
E9B08020253BBDE900BAD8F8 /* IntentExtensionInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntentExtensionInfo.swift; sourceTree = ""; };
+ E9B3551B292844010076AB04 /* MissedMealNotification.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MissedMealNotification.swift; sourceTree = "