diff --git a/Common/zh-Hans-CN.lproj/Intents.strings b/Common/cs.lproj/Intents.strings
similarity index 84%
rename from Common/zh-Hans-CN.lproj/Intents.strings
rename to Common/cs.lproj/Intents.strings
index 3c86a8a39..69202aa99 100644
--- a/Common/zh-Hans-CN.lproj/Intents.strings
+++ b/Common/cs.lproj/Intents.strings
@@ -2,7 +2,7 @@
 "9KhaIS" = "I've set the preset";
 
 /* (No Comment) */
-"80eo5o" = "添加碳水化合物";
+"80eo5o" = "Add Carb Entry";
 
 /* (No Comment) */
 "b085BW" = "I wasn't able to set the preset.";
@@ -17,7 +17,7 @@
 "nDKAmn" = "What's the name of the override you'd like to set?";
 
 /* (No Comment) */
-"OcNxIj" = "添加碳水化合物";
+"OcNxIj" = "Add Carb Entry";
 
 /* (No Comment) */
 "oLQSsJ" = "Enable '${overrideName}' Override Preset";
@@ -29,7 +29,7 @@
 "yBzwCL" = "Override Selection";
 
 /* (No Comment) */
-"yc02Yq" = "将碳水化合物添加到Loop";
+"yc02Yq" = "Add a carb entry to Loop";
 
 /* (No Comment) */
 "ZZ3mtM" = "Enable an override preset in Loop";
diff --git a/Common/de.lproj/Intents.strings b/Common/de.lproj/Intents.strings
index e80f0d1f6..53e85eca4 100644
--- a/Common/de.lproj/Intents.strings
+++ b/Common/de.lproj/Intents.strings
@@ -2,7 +2,7 @@
 "9KhaIS" = "Voreinstellung gesetzt";
 
 /* (No Comment) */
-"80eo5o" = "KH-Eintrag hinzufügen";
+"80eo5o" = "Kohlenhydrate hinzufügen";
 
 /* (No Comment) */
 "b085BW" = "Voreinstellung konnte nicht gesetzt werden.";
@@ -17,7 +17,7 @@
 "nDKAmn" = "Welche Voreinstellung möchten Sie aktivieren?";
 
 /* (No Comment) */
-"OcNxIj" = "KH-Eintrag hinzufügen";
+"OcNxIj" = "Kohlenhydrate hinzufügen";
 
 /* (No Comment) */
 "oLQSsJ" = "Aktiviere '${overrideName}' Voreinstellung";
diff --git a/Common/es.lproj/Intents.strings b/Common/es.lproj/Intents.strings
index 39dd81562..fe4667036 100644
--- a/Common/es.lproj/Intents.strings
+++ b/Common/es.lproj/Intents.strings
@@ -2,7 +2,7 @@
 "9KhaIS" = "He establecido el ajuste";
 
 /* (No Comment) */
-"80eo5o" = "Agregar Registro de Carbs";
+"80eo5o" = "Agregar Entrada de Carb";
 
 /* (No Comment) */
 "b085BW" = "I wasn't able to set the preset.";
@@ -17,7 +17,7 @@
 "nDKAmn" = "What's the name of the override you'd like to set?";
 
 /* (No Comment) */
-"OcNxIj" = "Agregar Registro de Carbs";
+"OcNxIj" = "Agregar Entrada de Carb";
 
 /* (No Comment) */
 "oLQSsJ" = "Enable '${overrideName}' Override Preset";
diff --git a/Common/ja.lproj/Intents.strings b/Common/ja.lproj/Intents.strings
index e4f64097c..f59cfa9e6 100644
--- a/Common/ja.lproj/Intents.strings
+++ b/Common/ja.lproj/Intents.strings
@@ -2,7 +2,7 @@
 "9KhaIS" = "I've set the preset";
 
 /* (No Comment) */
-"80eo5o" = "カーボを追加";
+"80eo5o" = "糖質の記入を追加";
 
 /* (No Comment) */
 "b085BW" = "I wasn't able to set the preset.";
@@ -17,7 +17,7 @@
 "nDKAmn" = "What's the name of the override you'd like to set?";
 
 /* (No Comment) */
-"OcNxIj" = "カーボを追加";
+"OcNxIj" = "糖質の記入を追加";
 
 /* (No Comment) */
 "oLQSsJ" = "Enable '${overrideName}' Override Preset";
diff --git a/Common/nl.lproj/Intents.strings b/Common/nl.lproj/Intents.strings
index 56cd1edcd..e72963d83 100644
--- a/Common/nl.lproj/Intents.strings
+++ b/Common/nl.lproj/Intents.strings
@@ -2,7 +2,7 @@
 "9KhaIS" = "Ik heb het programma ingesteld";
 
 /* (No Comment) */
-"80eo5o" = "Koolhydraatinvoer Toevoegen";
+"80eo5o" = "Kh. Inv. Toevoegen";
 
 /* (No Comment) */
 "b085BW" = "Ik kon het programma niet instellen.";
@@ -17,7 +17,7 @@
 "nDKAmn" = "Wat is de naam van de override die je zou willen instellen?";
 
 /* (No Comment) */
-"OcNxIj" = "Koolhydraatinvoer Toevoegen";
+"OcNxIj" = "Kh. Inv. Toevoegen";
 
 /* (No Comment) */
 "oLQSsJ" = "Override '${overrideName}' Inschakelen";
diff --git a/Common/pt-BR.lproj/Intents.strings b/Common/pt-BR.lproj/Intents.strings
index f6a265b22..130b82cbb 100644
--- a/Common/pt-BR.lproj/Intents.strings
+++ b/Common/pt-BR.lproj/Intents.strings
@@ -2,7 +2,7 @@
 "9KhaIS" = "I've set the preset";
 
 /* (No Comment) */
-"80eo5o" = "Adicionar Carboidratos";
+"80eo5o" = "Adicionar Carb";
 
 /* (No Comment) */
 "b085BW" = "I wasn't able to set the preset.";
@@ -17,7 +17,7 @@
 "nDKAmn" = "What's the name of the override you'd like to set?";
 
 /* (No Comment) */
-"OcNxIj" = "Adicionar Carboidratos";
+"OcNxIj" = "Adicionar Carb";
 
 /* (No Comment) */
 "oLQSsJ" = "Enable '${overrideName}' Override Preset";
diff --git a/Common/ro.lproj/Intents.strings b/Common/ro.lproj/Intents.strings
index 30cc24a11..2f029b1cd 100644
--- a/Common/ro.lproj/Intents.strings
+++ b/Common/ro.lproj/Intents.strings
@@ -2,7 +2,7 @@
 "9KhaIS" = "I've set the preset";
 
 /* (No Comment) */
-"80eo5o" = "Adăugare carbohidrați";
+"80eo5o" = "Adaugă carbohidrați";
 
 /* (No Comment) */
 "b085BW" = "I wasn't able to set the preset.";
@@ -17,7 +17,7 @@
 "nDKAmn" = "What's the name of the override you'd like to set?";
 
 /* (No Comment) */
-"OcNxIj" = "Adăugare carbohidrați";
+"OcNxIj" = "Adaugă carbohidrați";
 
 /* (No Comment) */
 "oLQSsJ" = "Enable '${overrideName}' Override Preset";
diff --git a/Common/sk.lproj/Intents.strings b/Common/sk.lproj/Intents.strings
index 5ec3fa5bc..ef6d2d092 100644
--- a/Common/sk.lproj/Intents.strings
+++ b/Common/sk.lproj/Intents.strings
@@ -4,9 +4,33 @@
 /* (No Comment) */
 "80eo5o" = "Zadať sacharidy";
 
+/* (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" = "Zadať sacharidy";
 
+/* (No Comment) */
+"oLQSsJ" = "Enable '$%1$@' Override Preset";
+
+/* (No Comment) */
+"XNNmtH" = "Enable preset in Loop";
+
+/* (No Comment) */
+"yBzwCL" = "Override Selection";
+
 /* (No Comment) */
 "yc02Yq" = "Zadať sacharidy do Loop";
 
+/* (No Comment) */
+"ZZ3mtM" = "Enable an override preset in Loop";
+
diff --git a/Common/tr.lproj/Intents.strings b/Common/tr.lproj/Intents.strings
index 30ae99dc2..416c11d09 100644
--- a/Common/tr.lproj/Intents.strings
+++ b/Common/tr.lproj/Intents.strings
@@ -2,7 +2,7 @@
 "9KhaIS" = "Ön ayarı yaptım";
 
 /* (No Comment) */
-"80eo5o" = "Karbonhidrat Girişi Ekle";
+"80eo5o" = "Karb Girişi Ekle";
 
 /* (No Comment) */
 "b085BW" = "Ön ayarı yapamadım.";
@@ -17,7 +17,7 @@
 "nDKAmn" = "Ayarlamak istediğiniz geçersiz kılmanın adı nedir?";
 
 /* (No Comment) */
-"OcNxIj" = "Karbonhidrat Girişi Ekle";
+"OcNxIj" = "Karb Girişi Ekle";
 
 /* (No Comment) */
 "oLQSsJ" = "'${overrideName}' Ön Ayarını Geçersiz Kılmayı Etkinleştir";
diff --git a/Common/vi.lproj/Intents.strings b/Common/vi.lproj/Intents.strings
index dccf6b1db..26f9af1fd 100644
--- a/Common/vi.lproj/Intents.strings
+++ b/Common/vi.lproj/Intents.strings
@@ -2,7 +2,7 @@
 "9KhaIS" = "I've set the preset";
 
 /* (No Comment) */
-"80eo5o" = "Khai báo khối lượng Carb";
+"80eo5o" = "Khai báo Carb";
 
 /* (No Comment) */
 "b085BW" = "I wasn't able to set the preset.";
@@ -17,7 +17,7 @@
 "nDKAmn" = "What's the name of the override you'd like to set?";
 
 /* (No Comment) */
-"OcNxIj" = "Khai báo khối lượng Carb";
+"OcNxIj" = "Khai báo Carb";
 
 /* (No Comment) */
 "oLQSsJ" = "Enable '${overrideName}' Override Preset";
diff --git a/Common/zh-Hans-CN.lproj/Localizable.strings b/Common/zh-Hans-CN.lproj/Localizable.strings
deleted file mode 100644
index be5965c65..000000000
--- a/Common/zh-Hans-CN.lproj/Localizable.strings
+++ /dev/null
@@ -1,54 +0,0 @@
-/* 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 16f21e6b2..3c86a8a39 100644
--- a/Common/zh-Hans.lproj/Intents.strings
+++ b/Common/zh-Hans.lproj/Intents.strings
@@ -1,9 +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/DoseMathTests/ar.lproj/Localizable.strings b/DoseMathTests/ar.lproj/Localizable.strings
index a3607f260..97a752352 100644
--- a/DoseMathTests/ar.lproj/Localizable.strings
+++ b/DoseMathTests/ar.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." = "سكر الدم الحالي  %1$@ أقل من نطاق التصحيح.";
+"Current glucose of %1$@ is below correction range." = "قراءة سكر الدم %1$@ أقل من نطاق التصحيح.";
 
 /* The short unit display string for decibles */
 "dB" = "dB";
@@ -14,10 +14,10 @@
 "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$@." = "متوقع سكر الدم خلال  %1$@ هو %2$@.";
+"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$@ أقل من إعدادات التعليق المؤقت.";
+"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$@";
diff --git a/DoseMathTests/de.lproj/Localizable.strings b/DoseMathTests/de.lproj/Localizable.strings
index ffa45f1be..b4b56621f 100644
--- a/DoseMathTests/de.lproj/Localizable.strings
+++ b/DoseMathTests/de.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." = "Der aktuelle Blutzucker von %1$@ liegt unterhalb des Korrekturbereiches.";
+"Current glucose of %1$@ is below correction range." = "Der aktuelle Blutzucker von %1$@ liegt unter dem Korrekturbereich.";
 
 /* The short unit display string for decibles */
 "dB" = "dB";
@@ -8,22 +8,22 @@
 "g" = "g";
 
 /* The short unit display string for milligrams of glucose per decilter */
-"mg/dL" = "mg/dl";
+"mg/dL" = "mg/dL";
 
 /* The short unit display string for millimoles of glucose per liter */
-"mmol/L" = "mmol/l";
+"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$@." = "Der vorhergesagte Blutzucker um %1$@ ist %2$@.";
+"Predicted glucose at %1$@ is %2$@." = "Vorhergesagte Glukose um %1$@ ist %2$@.";
 
 /* Notice when predicted glucose for bolus recommendation is in range */
-"Predicted glucose is in range." = "Der vorhergesagte Glukosewert liegt im Bereich.";
+"Predicted glucose is in range." = "Der vorhergesagte Blutzucker liegt im Zielbereich.";
 
 /* 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." = "Der vorhergesagte Glukosewert von %1$@ liegt unter Ihrer Glukose-Sicherheitsgrenzwerteinstellung.";
+"Predicted glucose of %1$@ is below your glucose safety limit setting." = "Der vorhergesagte Blutzucker von %1$@ liegt unter der Sicherheitsgrenze.";
 
 /* 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." = "Der vorhergesagte Blutzucker von %1$@ liegt unterhalb des eingestellten Schwellwertes zur Unterbrechung der Basalrate. ";
+"Predicted glucose of %1$@ is below your suspend threshold setting." = "Der vorhergesagte Blutzucker von %1$@ liegt unter dem Grenzwert für die Hypo-Abschaltung.";
 
 /* 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 f13cea3d9..8550028f1 100644
--- a/DoseMathTests/es.lproj/Localizable.strings
+++ b/DoseMathTests/es.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." = "Glucosa actual de %1$@ está debajo del rango correctivo.";
+"Current glucose of %1$@ is below correction range." = "Glucosa actual de %1$@ está por debajo del rango de corrección.";
 
 /* The short unit display string for decibles */
 "dB" = "dB";
@@ -14,16 +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$@." = "Glucosa proyectada en %1$@ es %2$@.";
+"Predicted glucose at %1$@ is %2$@." = "Glucosa proyectada a las %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";
+"Predicted glucose of %1$@ is below your glucose safety limit setting." = "Glucosa proyectada de %1$@ se encuentra por debajo de tu nivel de suspensión.";
 
 /* 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.";
+"Predicted glucose of %1$@ is below your suspend threshold setting." = "Glucosa proyectada de %1$@ se encuentra por debajo de su nivel de suspensión.";
 
 /* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
 "QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
diff --git a/DoseMathTests/fi.lproj/Localizable.strings b/DoseMathTests/fi.lproj/Localizable.strings
index 5e7c365eb..715f2b62b 100644
--- a/DoseMathTests/fi.lproj/Localizable.strings
+++ b/DoseMathTests/fi.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." = "Nykyinen glukoosi %1$@ on korjausalueen alapuolella.";
 
 /* The short unit display string for decibles */
 "dB" = "dB";
@@ -14,13 +14,13 @@
 "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$@." = "Ennustettu glukoosi klo %1$@ on %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.";
+"Predicted glucose of %1$@ is below your suspend threshold setting." = "Ennustettu glukoosi %1$@ on pysäytysrajan alapuolella.";
 
 /* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
 "QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
diff --git a/DoseMathTests/fr.lproj/Localizable.strings b/DoseMathTests/fr.lproj/Localizable.strings
index c8074ebd5..5b6ca784e 100644
--- a/DoseMathTests/fr.lproj/Localizable.strings
+++ b/DoseMathTests/fr.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." = "Glycémie actuelle %1$@ sous la plage de correction.";
+"Current glucose of %1$@ is below correction range." = "Glycémie actuelle de %1$@ est en dessous de la plage de correction.";
 
 /* The short unit display string for decibles */
 "dB" = "dB";
@@ -14,13 +14,13 @@
 "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$@." = "Glycémie de %2$@ prédite pour %1$@.";
+"Predicted glucose at %1$@ is %2$@." = "Glycémie prévue à %1$@ est %2$@.";
 
 /* 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.";
+"Predicted glucose of %1$@ is below your glucose safety limit setting." = "La glycémie estimée à %1$@ est sous le seuil de suspension.";
 
 /* 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/it.lproj/Localizable.strings b/DoseMathTests/it.lproj/Localizable.strings
index 0e03d8336..2b1f0b3c8 100644
--- a/DoseMathTests/it.lproj/Localizable.strings
+++ b/DoseMathTests/it.lproj/Localizable.strings
@@ -14,7 +14,7 @@
 "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$@." = "La glicemia prevista a %1$@ è %2$@.";
+"Predicted glucose at %1$@ is %2$@." = "La glicemia prevista tra %1$@ e' di %2$@.";
 
 /* Notice when predicted glucose for bolus recommendation is in range */
 "Predicted glucose is in range." = "La glicemia prevista è nell'intervallo";
@@ -23,7 +23,7 @@
 "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.";
+"Predicted glucose of %1$@ is below your suspend threshold setting." = "La glicemia prevista %1$@ e' inferiore al valore soglia per la sospensione dell'erogazione.";
 
 /* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
 "QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
diff --git a/DoseMathTests/ja.lproj/Localizable.strings b/DoseMathTests/ja.lproj/Localizable.strings
index 95e33d98b..fc23adb8c 100644
--- a/DoseMathTests/ja.lproj/Localizable.strings
+++ b/DoseMathTests/ja.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." = "現在の血糖値は %1$@ で補正範囲を下回っています。";
 
 /* The short unit display string for decibles */
 "dB" = "dB";
@@ -14,10 +14,10 @@
 "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$@." = "%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." = "Predicted glucose of %1$@ is below your suspend threshold setting.";
+"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$@";
diff --git a/DoseMathTests/nb.lproj/Localizable.strings b/DoseMathTests/nb.lproj/Localizable.strings
index dd170d000..656e726c6 100644
--- a/DoseMathTests/nb.lproj/Localizable.strings
+++ b/DoseMathTests/nb.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." = "Nåværende blodsukker på %1$@ er under målområde.";
+"Current glucose of %1$@ is below correction range." = "Gjeldende glukose på %1$@ er under korreksjonsområdet.";
 
 /* The short unit display string for decibles */
 "dB" = "dB";
@@ -14,16 +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$@." = "Forventet blodsukker om %1$@ er %2$@.";
+"Predicted glucose at %1$@ is %2$@." = "Forventet blodsukker kl %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.";
+"Predicted glucose is in range." = "Forventet blodsukker 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.";
+"Predicted glucose of %1$@ is below your glucose safety limit setting." = "Forventet blodsukker på %1$@ er lavere enn innstillingen for blodsukkersikkerhet.";
 
 /* 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.";
+"Predicted glucose of %1$@ is below your suspend threshold setting." = "Forventet blodsukker %1$@ er lavere enn innstilling for insulinstopp";
 
 /* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
 "QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
diff --git a/DoseMathTests/nl.lproj/Localizable.strings b/DoseMathTests/nl.lproj/Localizable.strings
index 943b6cfb5..fc884f793 100644
--- a/DoseMathTests/nl.lproj/Localizable.strings
+++ b/DoseMathTests/nl.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." = "Huidige glucose van %1$@ is onder het correctiebereik.";
+"Current glucose of %1$@ is below correction range." = "Huidige glucose %1$@ is lager dan het correctiebereik.";
 
 /* The short unit display string for decibles */
 "dB" = "dB";
diff --git a/DoseMathTests/pl.lproj/Localizable.strings b/DoseMathTests/pl.lproj/Localizable.strings
index 2e6524a21..37275a855 100644
--- a/DoseMathTests/pl.lproj/Localizable.strings
+++ b/DoseMathTests/pl.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." = "Obecny cukier jest %1$@ poniżej poziomu korekcji.";
+"Current glucose of %1$@ is below correction range." = "Poziom glukozy %1$@ jest poniżej wartości korekcji.";
 
 /* The short unit display string for decibles */
 "dB" = "dB";
@@ -8,22 +8,22 @@
 "g" = "g";
 
 /* The short unit display string for milligrams of glucose per decilter */
-"mg/dL" = "mg/dL";
+"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$@." = "Przewidywany cukier o %1$@ wyniesie %2$@.";
+"Predicted glucose at %1$@ is %2$@." = "Przewidywany poziom cukru 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.";
+"Predicted glucose of %1$@ is below your glucose safety limit setting." = "Przewidywana glukoza %1$@ jest poniżej ustawionego bezpiecznego limitu glukozy.";
 
 /* 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.";
+"Predicted glucose of %1$@ is below your suspend threshold setting." = "Przewidywany poziom cukru %1$@ jest poniżej progu zawieszenia.";
 
 /* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
 "QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
diff --git a/DoseMathTests/pt-BR.lproj/Localizable.strings b/DoseMathTests/pt-BR.lproj/Localizable.strings
index 95e33d98b..e2b2c21af 100644
--- a/DoseMathTests/pt-BR.lproj/Localizable.strings
+++ b/DoseMathTests/pt-BR.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." = " Glicemia atual %1$@ está abaixo da zona de correção.";
 
 /* The short unit display string for decibles */
 "dB" = "dB";
@@ -14,10 +14,10 @@
 "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$@." = "Glicemia prevista em %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." = "Predicted glucose of %1$@ is below your suspend threshold setting.";
+"Predicted glucose of %1$@ is below your suspend threshold setting." = "Glicemia prevista de %1$@ está abaixo do limite de suspensão.";
 
 /* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
 "QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
diff --git a/DoseMathTests/ro.lproj/Localizable.strings b/DoseMathTests/ro.lproj/Localizable.strings
index 67dd1e84f..e40c294d2 100644
--- a/DoseMathTests/ro.lproj/Localizable.strings
+++ b/DoseMathTests/ro.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." = " Glicemia curentă de %1$@ se situează sub intervalul țintă de corecție.";
 
 /* The short unit display string for decibles */
 "dB" = "dB";
@@ -14,7 +14,7 @@
 "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$@." = "Glicemia prognozată pentru %1$@ este %2$@.";
 
 /* Notice when predicted glucose for bolus recommendation is in range */
 "Predicted glucose is in range." = "Glicemia prognozată este în interval.";
@@ -23,10 +23,10 @@
 "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.";
+"Predicted glucose of %1$@ is below your suspend threshold setting." = "Glicemia prognozată de %1$@ se situează sub limita de suspendare configurată";
 
 /* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
-"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
+"QUANTITY_VALUE_AND_UNIT" = "%1$@%2$@";
 
 /* The short unit display string for international units of insulin */
 "U" = "U";
diff --git a/DoseMathTests/ru.lproj/Localizable.strings b/DoseMathTests/ru.lproj/Localizable.strings
index aa8fae2e8..ee719e111 100644
--- a/DoseMathTests/ru.lproj/Localizable.strings
+++ b/DoseMathTests/ru.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." = " Текущая гликемия %1$@ ниже диапазона коррекции";
+"Current glucose of %1$@ is below correction range." = "Гликемия %1$@ ниже диапазона коррекции";
 
 /* The short unit display string for decibles */
 "dB" = "дБ";
@@ -11,7 +11,7 @@
 "mg/dL" = "мг/дл";
 
 /* The short unit display string for millimoles of glucose per liter */
-"mmol/L" = "ммоль/л";
+"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$@." = "Прогнозируемый уровень глюкозы на %1$@ составляет %2$@.";
@@ -23,7 +23,7 @@
 "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$@ ниже установленного вами порога  приостановки помпы";
+"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$@";
diff --git a/DoseMathTests/sv.lproj/Localizable.strings b/DoseMathTests/sv.lproj/Localizable.strings
index 9049443d9..a464fa7a9 100644
--- a/DoseMathTests/sv.lproj/Localizable.strings
+++ b/DoseMathTests/sv.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." = "Nuvarande glukosvärde %1$@ är under målvärdet.";
+"Current glucose of %1$@ is below correction range." = "Nuvarande glukosvärde %1$@ är under målvärde.";
 
 /* The short unit display string for decibles */
 "dB" = "dB";
@@ -11,16 +11,16 @@
 "mg/dL" = "mg/dl";
 
 /* The short unit display string for millimoles of glucose per liter */
-"mmol/L" = "mmol/l";
+"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$@." = "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.";
+"Predicted glucose of %1$@ is below your glucose safety limit setting." = "Förväntat blodsocker 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.";
+"Predicted glucose of %1$@ is below your suspend threshold setting." = "Förväntat glukosvärde %1$@ är under ditt tröskelvärde.";
 
 /* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
 "QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
diff --git a/DoseMathTests/vi.lproj/Localizable.strings b/DoseMathTests/vi.lproj/Localizable.strings
index 95e33d98b..178781704 100644
--- a/DoseMathTests/vi.lproj/Localizable.strings
+++ b/DoseMathTests/vi.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." = " Chỉ số glucose hiện tại %1$@ nằm dưới Phạm vi Điều chỉnh.";
 
 /* The short unit display string for decibles */
 "dB" = "dB";
@@ -14,10 +14,10 @@
 "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$@." = "Dự đoán đường huyết vào lúc %1$@ là %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." = "Predicted glucose of %1$@ is below your suspend threshold setting.";
+"Predicted glucose of %1$@ is below your suspend threshold setting." = "Dự đoán đường huyết %1$@ là dưới ngưỡng tạm ngưng trong cài đặt của bạn.";
 
 /* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
 "QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
diff --git a/DoseMathTests/zh-Hans-CN.lproj/Localizable.strings b/DoseMathTests/zh-Hans-CN.lproj/Localizable.strings
deleted file mode 100644
index 11863c50d..000000000
--- a/DoseMathTests/zh-Hans-CN.lproj/Localizable.strings
+++ /dev/null
@@ -1,27 +0,0 @@
-/* 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 db9ddea71..11863c50d 100644
--- a/DoseMathTests/zh-Hans.lproj/Localizable.strings
+++ b/DoseMathTests/zh-Hans.lproj/Localizable.strings
@@ -1,6 +1,9 @@
 /* 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" = "克";
 
@@ -16,6 +19,9 @@
 /* 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/zh-Hans-CN.lproj/Main.strings b/Learn/zh-Hans-CN.lproj/Main.strings
deleted file mode 100644
index 50fa41e30..000000000
--- a/Learn/zh-Hans-CN.lproj/Main.strings
+++ /dev/null
@@ -1,3 +0,0 @@
-/* Class = "UINavigationItem"; title = "Learn"; ObjectID = "8hF-Ij-B7m"; */
-"8hF-Ij-B7m.title" = "Learn";
-
diff --git a/Loop Intent Extension/ar.lproj/Localizable.strings b/Loop Intent Extension/ar.lproj/Localizable.strings
new file mode 100644
index 000000000..f4d2b4576
--- /dev/null
+++ b/Loop Intent Extension/ar.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/he.lproj/Localizable.strings b/Loop Intent Extension/he.lproj/Localizable.strings
new file mode 100644
index 000000000..f4d2b4576
--- /dev/null
+++ b/Loop Intent Extension/he.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/Localizable.strings b/Loop Intent Extension/it.lproj/Localizable.strings
index f4d2b4576..dcd56fd90 100644
--- a/Loop Intent Extension/it.lproj/Localizable.strings	
+++ b/Loop Intent Extension/it.lproj/Localizable.strings	
@@ -1,3 +1,3 @@
 /* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
-"%1$@ v%2$@" = "%1$@ v%2$@";
+"%1$@ v%2$@" = "%1$@ contro %2$@";
 
diff --git a/Loop Intent Extension/ja.lproj/Localizable.strings b/Loop Intent Extension/ja.lproj/Localizable.strings
new file mode 100644
index 000000000..f4d2b4576
--- /dev/null
+++ b/Loop Intent Extension/ja.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
index cd00fdf1e..7dba838e5 100644
--- a/Loop Intent Extension/pl.lproj/InfoPlist.strings	
+++ b/Loop Intent Extension/pl.lproj/InfoPlist.strings	
@@ -1,5 +1,5 @@
 /* Bundle display name */
-"CFBundleDisplayName" = "Rozbudowanie celu loop";
+"CFBundleDisplayName" = "Loop Intent Extension";
 
 /* Bundle name */
 "CFBundleName" = "Loop Intent Extension";
diff --git a/Loop Intent Extension/pt-BR.lproj/Localizable.strings b/Loop Intent Extension/pt-BR.lproj/Localizable.strings
new file mode 100644
index 000000000..f4d2b4576
--- /dev/null
+++ b/Loop Intent Extension/pt-BR.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/vi.lproj/Localizable.strings b/Loop Intent Extension/vi.lproj/Localizable.strings
new file mode 100644
index 000000000..f4d2b4576
--- /dev/null
+++ b/Loop Intent Extension/vi.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/InfoPlist.strings b/Loop Status Extension/ar.lproj/InfoPlist.strings
new file mode 100644
index 000000000..034a1e1f6
--- /dev/null
+++ b/Loop Status Extension/ar.lproj/InfoPlist.strings	
@@ -0,0 +1,3 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Loop";
+
diff --git a/Loop Status Extension/ar.lproj/Localizable.strings b/Loop Status Extension/ar.lproj/Localizable.strings
index b8fab8959..5935bf328 100644
--- a/Loop Status Extension/ar.lproj/Localizable.strings	
+++ b/Loop Status Extension/ar.lproj/Localizable.strings	
@@ -1,6 +1,33 @@
+/* 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" = "كارب النشط";
+
+/* Widget label title describing the active insulin */
+"Active Insulin" = "أنسولين نشط";
+
+/* The short unit display string for decibles */
+"dB" = "dB";
+
 /* The subtitle format describing eventual glucose.  (1: localized glucose value description) */
 "Eventually %1$@" = "متوقع %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" = "أنسولين نشط %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/ar.lproj/MainInterface.strings b/Loop Status Extension/ar.lproj/MainInterface.strings
index d4d75e4f6..23ec62812 100644
--- a/Loop Status Extension/ar.lproj/MainInterface.strings	
+++ b/Loop Status Extension/ar.lproj/MainInterface.strings	
@@ -1,6 +1,6 @@
 /* Class = "UILabel"; text = "Active Carbs"; ObjectID = "9iF-xY-Bh4"; */
-"9iF-xY-Bh4.text" = "متوقع 92 mg/dL";
+"9iF-xY-Bh4.text" = "كارب النشط";
 
 /* Class = "UILabel"; text = "Active Insulin"; ObjectID = "UPi-dG-yYD"; */
-"UPi-dG-yYD.text" = "أنسولين نشط 1.0 وحدة";
+"UPi-dG-yYD.text" = "أنسولين نشط";
 
diff --git a/Loop Status Extension/da.lproj/Localizable.strings b/Loop Status Extension/da.lproj/Localizable.strings
index deb403fb3..438849248 100644
--- a/Loop Status Extension/da.lproj/Localizable.strings	
+++ b/Loop Status Extension/da.lproj/Localizable.strings	
@@ -17,7 +17,7 @@
 "Active Carbs" = "Aktive kulhydrater";
 
 /* Widget label title describing the active insulin */
-"Active Insulin" = "Aktiv insulin";
+"Active Insulin" = "Aktivt insulin";
 
 /* The short unit display string for decibles */
 "dB" = "dB";
diff --git a/Loop Status Extension/da.lproj/MainInterface.strings b/Loop Status Extension/da.lproj/MainInterface.strings
index 17ae6171d..ca088fa3c 100644
--- a/Loop Status Extension/da.lproj/MainInterface.strings	
+++ b/Loop Status Extension/da.lproj/MainInterface.strings	
@@ -5,7 +5,7 @@
 "dPp-lJ-5sh.text" = "0 g";
 
 /* Class = "UILabel"; text = "Active Insulin"; ObjectID = "UPi-dG-yYD"; */
-"UPi-dG-yYD.text" = "IOB 1.0 E";
+"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/es.lproj/Localizable.strings b/Loop Status Extension/es.lproj/Localizable.strings
index 1f4b7e7b9..a893db739 100644
--- a/Loop Status Extension/es.lproj/Localizable.strings	
+++ b/Loop Status Extension/es.lproj/Localizable.strings	
@@ -26,7 +26,7 @@
 "Eventually %1$@" = "Eventualmente %1$@";
 
 /* The short unit display string for grams */
-"g" = "gr";
+"g" = "g";
 
 /* 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/es.lproj/MainInterface.strings b/Loop Status Extension/es.lproj/MainInterface.strings
index e0568c3db..5354b0e9c 100644
--- a/Loop Status Extension/es.lproj/MainInterface.strings	
+++ b/Loop Status Extension/es.lproj/MainInterface.strings	
@@ -5,7 +5,7 @@
 "dPp-lJ-5sh.text" = "0 gr";
 
 /* Class = "UILabel"; text = "Active Insulin"; ObjectID = "UPi-dG-yYD"; */
-"UPi-dG-yYD.text" = "IOB 1.0 U";
+"UPi-dG-yYD.text" = "Insulina activa";
 
 /* Class = "UILabel"; text = "0 U"; ObjectID = "Vgf-p1-2QP"; */
 "Vgf-p1-2QP.text" = "0 U";
diff --git a/Loop Status Extension/fi.lproj/MainInterface.strings b/Loop Status Extension/fi.lproj/MainInterface.strings
index 64a5dda3e..a1e847d46 100644
--- a/Loop Status Extension/fi.lproj/MainInterface.strings	
+++ b/Loop Status Extension/fi.lproj/MainInterface.strings	
@@ -1,11 +1,11 @@
 /* Class = "UILabel"; text = "Active Carbs"; ObjectID = "9iF-xY-Bh4"; */
-"9iF-xY-Bh4.text" = "Ennuste 92 mg/dL";
+"9iF-xY-Bh4.text" = "Akt. hiilari";
 
 /* 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";
+"UPi-dG-yYD.text" = "Akt. insuliini";
 
 /* Class = "UILabel"; text = "0 U"; ObjectID = "Vgf-p1-2QP"; */
 "Vgf-p1-2QP.text" = "0 U";
diff --git a/Loop Status Extension/he.lproj/InfoPlist.strings b/Loop Status Extension/he.lproj/InfoPlist.strings
new file mode 100644
index 000000000..034a1e1f6
--- /dev/null
+++ b/Loop Status Extension/he.lproj/InfoPlist.strings	
@@ -0,0 +1,3 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Loop";
+
diff --git a/Loop Status Extension/he.lproj/Localizable.strings b/Loop Status Extension/he.lproj/Localizable.strings
index 177cf6e0c..e8c025e6a 100644
--- a/Loop Status Extension/he.lproj/Localizable.strings	
+++ b/Loop Status Extension/he.lproj/Localizable.strings	
@@ -1,6 +1,33 @@
+/* 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" = "Active Carbs";
+
+/* Widget label title describing the active insulin */
+"Active Insulin" = "Active Insulin";
+
+/* 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/it.lproj/Localizable.strings b/Loop Status Extension/it.lproj/Localizable.strings
index 8e38f0632..871ef62d8 100644
--- a/Loop Status Extension/it.lproj/Localizable.strings	
+++ b/Loop Status Extension/it.lproj/Localizable.strings	
@@ -11,10 +11,10 @@
 "%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$@";
+"%1$@ v%2$@" = "%1$@ contro %2$@";
 
 /* Widget label title describing the active carbs */
-"Active Carbs" = "Carboidrati Attivi";
+"Active Carbs" = "Carb Attivi";
 
 /* Widget label title describing the active insulin */
 "Active Insulin" = "Insulina attiva";
diff --git a/Loop Status Extension/ja.lproj/InfoPlist.strings b/Loop Status Extension/ja.lproj/InfoPlist.strings
new file mode 100644
index 000000000..bb232bb4c
--- /dev/null
+++ b/Loop Status Extension/ja.lproj/InfoPlist.strings	
@@ -0,0 +1,3 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "ループ";
+
diff --git a/Loop Status Extension/ja.lproj/Localizable.strings b/Loop Status Extension/ja.lproj/Localizable.strings
index 0f9b31a8e..d328a81f3 100644
--- a/Loop Status Extension/ja.lproj/Localizable.strings	
+++ b/Loop Status Extension/ja.lproj/Localizable.strings	
@@ -1,6 +1,33 @@
+/* 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" = "残存糖質";
+
+/* Widget label title describing the active insulin */
+"Active Insulin" = "残存インスリン";
+
+/* The short unit display string for decibles */
+"dB" = "dB";
+
 /* The subtitle format describing eventual glucose.  (1: localized glucose value description) */
 "Eventually %1$@" = "予想 %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/ja.lproj/MainInterface.strings b/Loop Status Extension/ja.lproj/MainInterface.strings
index b5f1f6ce1..2407f97e6 100644
--- a/Loop Status Extension/ja.lproj/MainInterface.strings	
+++ b/Loop Status Extension/ja.lproj/MainInterface.strings	
@@ -1,6 +1,6 @@
 /* Class = "UILabel"; text = "Active Carbs"; ObjectID = "9iF-xY-Bh4"; */
-"9iF-xY-Bh4.text" = "予想 92 mg/dL";
+"9iF-xY-Bh4.text" = "残存糖質";
 
 /* Class = "UILabel"; text = "Active Insulin"; ObjectID = "UPi-dG-yYD"; */
-"UPi-dG-yYD.text" = "IOB 1.0 U";
+"UPi-dG-yYD.text" = "残存インスリン";
 
diff --git a/Loop Status Extension/pl.lproj/Localizable.strings b/Loop Status Extension/pl.lproj/Localizable.strings
index be2412af1..9f9cab187 100644
--- a/Loop Status Extension/pl.lproj/Localizable.strings	
+++ b/Loop Status Extension/pl.lproj/Localizable.strings	
@@ -35,7 +35,7 @@
 "mg/dL" = "mg/dl";
 
 /* The short unit display string for millimoles of glucose per liter */
-"mmol/L" = "mmol/l";
+"mmol/L" = "mmol/L";
 
 /* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
 "QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
diff --git a/Loop Status Extension/pl.lproj/MainInterface.strings b/Loop Status Extension/pl.lproj/MainInterface.strings
index a68c1231e..137aac2c3 100644
--- a/Loop Status Extension/pl.lproj/MainInterface.strings	
+++ b/Loop Status Extension/pl.lproj/MainInterface.strings	
@@ -5,7 +5,7 @@
 "dPp-lJ-5sh.text" = "0 g";
 
 /* Class = "UILabel"; text = "Active Insulin"; ObjectID = "UPi-dG-yYD"; */
-"UPi-dG-yYD.text" = "IOB 1.0 J";
+"UPi-dG-yYD.text" = "Aktywna insulina";
 
 /* Class = "UILabel"; text = "0 U"; ObjectID = "Vgf-p1-2QP"; */
 "Vgf-p1-2QP.text" = "0 J";
diff --git a/Loop Status Extension/pt-BR.lproj/InfoPlist.strings b/Loop Status Extension/pt-BR.lproj/InfoPlist.strings
new file mode 100644
index 000000000..034a1e1f6
--- /dev/null
+++ b/Loop Status Extension/pt-BR.lproj/InfoPlist.strings	
@@ -0,0 +1,3 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Loop";
+
diff --git a/Loop Status Extension/pt-BR.lproj/Localizable.strings b/Loop Status Extension/pt-BR.lproj/Localizable.strings
index 7d3b49382..ed1ddc805 100644
--- a/Loop Status Extension/pt-BR.lproj/Localizable.strings	
+++ b/Loop Status Extension/pt-BR.lproj/Localizable.strings	
@@ -1,6 +1,33 @@
+/* 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" = "Carboidratos Ativos";
+
+/* Widget label title describing the active insulin */
+"Active Insulin" = "Insulina Ativa";
+
+/* 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" = "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/pt-BR.lproj/MainInterface.strings b/Loop Status Extension/pt-BR.lproj/MainInterface.strings
index b88ada93c..09c233150 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 = "Active Carbs"; ObjectID = "9iF-xY-Bh4"; */
-"9iF-xY-Bh4.text" = "Eventualmente 92 mg/dL";
+"9iF-xY-Bh4.text" = "Carboidratos Ativos";
 
 /* Class = "UILabel"; text = "Active Insulin"; ObjectID = "UPi-dG-yYD"; */
-"UPi-dG-yYD.text" = "IOB 1.0 U";
+"UPi-dG-yYD.text" = "Insulina Ativa";
 
diff --git a/Loop Status Extension/ro.lproj/Localizable.strings b/Loop Status Extension/ro.lproj/Localizable.strings
index c5053c6dc..e749a36e8 100644
--- a/Loop Status Extension/ro.lproj/Localizable.strings	
+++ b/Loop Status Extension/ro.lproj/Localizable.strings	
@@ -38,7 +38,7 @@
 "mmol/L" = "mmol/L";
 
 /* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
-"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
+"QUANTITY_VALUE_AND_UNIT" = "%1$@%2$@";
 
 /* The short unit display string for international units of insulin */
 "U" = "U";
diff --git a/Loop Status Extension/ru.lproj/Localizable.strings b/Loop Status Extension/ru.lproj/Localizable.strings
index c42b7de0c..319107dd5 100644
--- a/Loop Status Extension/ru.lproj/Localizable.strings	
+++ b/Loop Status Extension/ru.lproj/Localizable.strings	
@@ -8,7 +8,7 @@
 "%1$@" = "%1$@";
 
 /* The subtitle format describing units of active insulin. (1: localized insulin value description) */
-"%1$@ U" = "%1$@ ед.";
+"%1$@ U" = "%1$@ Ед.";
 
 /* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
 "%1$@ v%2$@" = "%1$@ против %2$@";
@@ -35,7 +35,7 @@
 "mg/dL" = "мг/дл";
 
 /* The short unit display string for millimoles of glucose per liter */
-"mmol/L" = "ммоль/л";
+"mmol/L" = "mmol/L";
 
 /* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
 "QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
diff --git a/Loop Status Extension/ru.lproj/MainInterface.strings b/Loop Status Extension/ru.lproj/MainInterface.strings
index 280dc1120..7a44069cb 100644
--- a/Loop Status Extension/ru.lproj/MainInterface.strings	
+++ b/Loop Status Extension/ru.lproj/MainInterface.strings	
@@ -5,7 +5,7 @@
 "dPp-lJ-5sh.text" = "0 г";
 
 /* Class = "UILabel"; text = "Active Insulin"; ObjectID = "UPi-dG-yYD"; */
-"UPi-dG-yYD.text" = "IOB 1.0 ед";
+"UPi-dG-yYD.text" = "Активный инсулин";
 
 /* Class = "UILabel"; text = "0 U"; ObjectID = "Vgf-p1-2QP"; */
 "Vgf-p1-2QP.text" = "0 ед.";
diff --git a/Loop Status Extension/sv.lproj/Localizable.strings b/Loop Status Extension/sv.lproj/Localizable.strings
index 2111bb7a2..fb3f8b00e 100644
--- a/Loop Status Extension/sv.lproj/Localizable.strings	
+++ b/Loop Status Extension/sv.lproj/Localizable.strings	
@@ -32,7 +32,7 @@
 "IOB %1$@ U" = "IOB %1$@ E";
 
 /* The short unit display string for milligrams of glucose per decilter */
-"mg/dL" = "mg/dL";
+"mg/dL" = "mg/dl";
 
 /* The short unit display string for millimoles of glucose per liter */
 "mmol/L" = "mmol/L";
diff --git a/Loop Status Extension/sv.lproj/MainInterface.strings b/Loop Status Extension/sv.lproj/MainInterface.strings
index 55e8d3c7b..afc966ed3 100644
--- a/Loop Status Extension/sv.lproj/MainInterface.strings	
+++ b/Loop Status Extension/sv.lproj/MainInterface.strings	
@@ -1,11 +1,11 @@
 /* Class = "UILabel"; text = "Active Carbs"; ObjectID = "9iF-xY-Bh4"; */
-"9iF-xY-Bh4.text" = "Förväntat 5,1 mmol/l";
+"9iF-xY-Bh4.text" = "Aktiva kolhydrater";
 
 /* 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";
+"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/tr.lproj/MainInterface.strings b/Loop Status Extension/tr.lproj/MainInterface.strings
index 3c0a8cd6a..de7b3fc54 100644
--- a/Loop Status Extension/tr.lproj/MainInterface.strings	
+++ b/Loop Status Extension/tr.lproj/MainInterface.strings	
@@ -1,5 +1,5 @@
 /* Class = "UILabel"; text = "Active Carbs"; ObjectID = "9iF-xY-Bh4"; */
-"9iF-xY-Bh4.text" = "Aktif Karbonhidrat";
+"9iF-xY-Bh4.text" = "Aktif Karb.";
 
 /* Class = "UILabel"; text = "0 g"; ObjectID = "dPp-lJ-5sh"; */
 "dPp-lJ-5sh.text" = "0 gr";
diff --git a/Loop Status Extension/vi.lproj/InfoPlist.strings b/Loop Status Extension/vi.lproj/InfoPlist.strings
new file mode 100644
index 000000000..034a1e1f6
--- /dev/null
+++ b/Loop Status Extension/vi.lproj/InfoPlist.strings	
@@ -0,0 +1,3 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Loop";
+
diff --git a/Loop Status Extension/vi.lproj/Localizable.strings b/Loop Status Extension/vi.lproj/Localizable.strings
index 471ea04c9..a0b94d6a7 100644
--- a/Loop Status Extension/vi.lproj/Localizable.strings	
+++ b/Loop Status Extension/vi.lproj/Localizable.strings	
@@ -1,6 +1,33 @@
+/* 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" = "Lượng Carbs còn hoạt động";
+
+/* Widget label title describing the active insulin */
+"Active Insulin" = "Lượng Insulin còn hoạt động";
+
+/* The short unit display string for decibles */
+"dB" = "dB";
+
 /* The subtitle format describing eventual glucose.  (1: localized glucose value description) */
 "Eventually %1$@" = "Kết quả là %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/vi.lproj/MainInterface.strings b/Loop Status Extension/vi.lproj/MainInterface.strings
index cc5e2b60a..c766b97e1 100644
--- a/Loop Status Extension/vi.lproj/MainInterface.strings	
+++ b/Loop Status Extension/vi.lproj/MainInterface.strings	
@@ -1,6 +1,6 @@
 /* Class = "UILabel"; text = "Active Carbs"; ObjectID = "9iF-xY-Bh4"; */
-"9iF-xY-Bh4.text" = "Kết quả là 92 mg/dL";
+"9iF-xY-Bh4.text" = "Lượng Carbs còn hoạt động";
 
 /* Class = "UILabel"; text = "Active Insulin"; ObjectID = "UPi-dG-yYD"; */
-"UPi-dG-yYD.text" = "IOB 1.0 U";
+"UPi-dG-yYD.text" = "Lượng Insulin còn hoạt động";
 
diff --git a/Loop Status Extension/zh-Hans-CN.lproj/Localizable.strings b/Loop Status Extension/zh-Hans-CN.lproj/Localizable.strings
deleted file mode 100644
index b1d62cfb8..000000000
--- a/Loop Status Extension/zh-Hans-CN.lproj/Localizable.strings	
+++ /dev/null
@@ -1,6 +0,0 @@
-/* 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
deleted file mode 100644
index 2a063e608..000000000
--- a/Loop Status Extension/zh-Hans-CN.lproj/MainInterface.strings	
+++ /dev/null
@@ -1,6 +0,0 @@
-/* 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.xcodeproj/project.pbxproj b/Loop.xcodeproj/project.pbxproj
index 43c73910c..31b6ebff5 100644
--- a/Loop.xcodeproj/project.pbxproj
+++ b/Loop.xcodeproj/project.pbxproj
@@ -1483,6 +1483,10 @@
 		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 = "<group>"; };
 		C1201E2B23ECDBD0002DA84A /* WatchContextRequestUserInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WatchContextRequestUserInfo.swift; sourceTree = "<group>"; };
+		C121D8CF29C7866D00DA0520 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/Main.strings; sourceTree = "<group>"; };
+		C121D8D029C7866D00DA0520 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/Localizable.strings; sourceTree = "<group>"; };
+		C121D8D129C7866D00DA0520 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/Localizable.strings; sourceTree = "<group>"; };
+		C121D8D229C7866D00DA0520 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/Interface.strings; sourceTree = "<group>"; };
 		C122DEF829BBFAAE00321F8D /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/InfoPlist.strings; sourceTree = "<group>"; };
 		C122DEF929BBFAAE00321F8D /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = "<group>"; };
 		C122DEFA29BBFAAE00321F8D /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = "<group>"; };
@@ -1492,18 +1496,6 @@
 		C122DEFE29BBFAAE00321F8D /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/ckcomplication.strings; sourceTree = "<group>"; };
 		C122DEFF29BBFAAE00321F8D /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/InfoPlist.strings; sourceTree = "<group>"; };
 		C122DF0029BBFAAE00321F8D /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/InfoPlist.strings; sourceTree = "<group>"; };
-		C126BAFC29830A83002CEE4F /* zh-Hans-CN */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans-CN"; path = "zh-Hans-CN.lproj/Intents.strings"; sourceTree = "<group>"; };
-		C126BAFD29830A83002CEE4F /* zh-Hans-CN */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans-CN"; path = "zh-Hans-CN.lproj/Localizable.strings"; sourceTree = "<group>"; };
-		C126BAFE29830A83002CEE4F /* zh-Hans-CN */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans-CN"; path = "zh-Hans-CN.lproj/Localizable.strings"; sourceTree = "<group>"; };
-		C126BAFF29830A83002CEE4F /* zh-Hans-CN */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans-CN"; path = "zh-Hans-CN.lproj/Main.strings"; sourceTree = "<group>"; };
-		C126BB0029830A83002CEE4F /* zh-Hans-CN */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans-CN"; path = "zh-Hans-CN.lproj/Localizable.strings"; sourceTree = "<group>"; };
-		C126BB0129830A83002CEE4F /* zh-Hans-CN */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans-CN"; path = "zh-Hans-CN.lproj/MainInterface.strings"; sourceTree = "<group>"; };
-		C126BB0229830A83002CEE4F /* zh-Hans-CN */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans-CN"; path = "zh-Hans-CN.lproj/InfoPlist.strings"; sourceTree = "<group>"; };
-		C126BB0329830A83002CEE4F /* zh-Hans-CN */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans-CN"; path = "zh-Hans-CN.lproj/Localizable.strings"; sourceTree = "<group>"; };
-		C126BB0429830A83002CEE4F /* zh-Hans-CN */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans-CN"; path = "zh-Hans-CN.lproj/Main.strings"; sourceTree = "<group>"; };
-		C126BB0529830A83002CEE4F /* zh-Hans-CN */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans-CN"; path = "zh-Hans-CN.lproj/Localizable.strings"; sourceTree = "<group>"; };
-		C126BB0629830A83002CEE4F /* zh-Hans-CN */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans-CN"; path = "zh-Hans-CN.lproj/Localizable.strings"; sourceTree = "<group>"; };
-		C126BB0729830A83002CEE4F /* zh-Hans-CN */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans-CN"; path = "zh-Hans-CN.lproj/Interface.strings"; sourceTree = "<group>"; };
 		C12BCCF929BBFA480066A158 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/Localizable.strings; sourceTree = "<group>"; };
 		C12CB9AC23106A3C00F84978 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Intents.strings; sourceTree = "<group>"; };
 		C12CB9AE23106A5C00F84978 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Intents.strings; sourceTree = "<group>"; };
@@ -1523,6 +1515,11 @@
 		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; };
+		C15A581F29C7866600D3A5A1 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Localizable.strings; sourceTree = "<group>"; };
+		C15A582029C7866600D3A5A1 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		C15A582129C7866600D3A5A1 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Localizable.strings; sourceTree = "<group>"; };
+		C15A582229C7866600D3A5A1 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Localizable.strings; sourceTree = "<group>"; };
+		C15A582329C7866600D3A5A1 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/InfoPlist.strings; sourceTree = "<group>"; };
 		C165756E2534C468004AE16E /* SimpleBolusViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SimpleBolusViewModelTests.swift; sourceTree = "<group>"; };
 		C16575702538A36B004AE16E /* CGMStalenessMonitor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CGMStalenessMonitor.swift; sourceTree = "<group>"; };
 		C16575722538AFF6004AE16E /* CGMStalenessMonitorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CGMStalenessMonitorTests.swift; sourceTree = "<group>"; };
@@ -1559,6 +1556,13 @@
 		C19008FD25225D3900721625 /* SimpleBolusCalculator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SimpleBolusCalculator.swift; sourceTree = "<group>"; };
 		C19008FF252271BB00721625 /* SimpleBolusCalculatorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SimpleBolusCalculatorTests.swift; sourceTree = "<group>"; };
 		C191D2A025B3ACAA00C26C0B /* DosingStrategySelectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DosingStrategySelectionView.swift; sourceTree = "<group>"; };
+		C192C5FE29C78711001EFEA6 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = vi.lproj/Localizable.strings; sourceTree = "<group>"; };
+		C192C5FF29C78711001EFEA6 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = vi.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		C192C60029C78711001EFEA6 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = vi.lproj/Localizable.strings; sourceTree = "<group>"; };
+		C192C60129C78711001EFEA6 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = vi.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		C192C60229C78711001EFEA6 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = vi.lproj/Localizable.strings; sourceTree = "<group>"; };
+		C192C60329C78711001EFEA6 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = vi.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		C192C60429C78711001EFEA6 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = vi.lproj/InfoPlist.strings; sourceTree = "<group>"; };
 		C19A2247298951AC000E4E71 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
 		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; };
@@ -1576,6 +1580,13 @@
 		C1AD62FF29BBFAA80002685D /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = ro.lproj/Localizable.strings; sourceTree = "<group>"; };
 		C1AD630029BBFAA80002685D /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = ro.lproj/ckcomplication.strings; sourceTree = "<group>"; };
 		C1AF062229426300002C1B19 /* ManualGlucoseEntryRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ManualGlucoseEntryRow.swift; sourceTree = "<group>"; };
+		C1B0CFD429C786BF0045B04D /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Localizable.strings; sourceTree = "<group>"; };
+		C1B0CFD529C786BF0045B04D /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		C1B0CFD629C786BF0045B04D /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Localizable.strings; sourceTree = "<group>"; };
+		C1B0CFD729C786BF0045B04D /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		C1B0CFD829C786BF0045B04D /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Localizable.strings; sourceTree = "<group>"; };
+		C1B0CFD929C786BF0045B04D /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		C1B0CFDA29C786BF0045B04D /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/InfoPlist.strings; sourceTree = "<group>"; };
 		C1B267992995824000BCB7C1 /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/Localizable.strings; sourceTree = "<group>"; };
 		C1B2679A2995824000BCB7C1 /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/InfoPlist.strings; sourceTree = "<group>"; };
 		C1B2679B2995824000BCB7C1 /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/Localizable.strings; sourceTree = "<group>"; };
@@ -1613,6 +1624,7 @@
 		C1C31280297E4C0400296DA4 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Localizable.strings; sourceTree = "<group>"; };
 		C1C31281297E4C0400296DA4 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/InfoPlist.strings; sourceTree = "<group>"; };
 		C1C31282297E4F6E00296DA4 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Localizable.strings; sourceTree = "<group>"; };
+		C1C5357529C6346A00E32DF9 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/Intents.strings; sourceTree = "<group>"; };
 		C1C6591B1E1B1FDA0025CC58 /* recommend_temp_basal_dropping_then_rising.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = recommend_temp_basal_dropping_then_rising.json; sourceTree = "<group>"; };
 		C1C660D0252E4DD5009B5C32 /* LoopConstants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoopConstants.swift; sourceTree = "<group>"; };
 		C1D0B62F2986D4D90098D215 /* LocalizedString.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalizedString.swift; sourceTree = "<group>"; };
@@ -1623,6 +1635,14 @@
 		C1E2773D224177C000354103 /* ClockKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ClockKit.framework; path = Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/ClockKit.framework; sourceTree = DEVELOPER_DIR; };
 		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 = "<group>"; };
+		C1E5A6DE29C7870100703C90 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/Localizable.strings; sourceTree = "<group>"; };
+		C1E693CA29C786E200410918 /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "pt-BR.lproj/Localizable.strings"; sourceTree = "<group>"; };
+		C1E693CB29C786E200410918 /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "pt-BR.lproj/InfoPlist.strings"; sourceTree = "<group>"; };
+		C1E693CC29C786E200410918 /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "pt-BR.lproj/Localizable.strings"; sourceTree = "<group>"; };
+		C1E693CD29C786E200410918 /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "pt-BR.lproj/InfoPlist.strings"; sourceTree = "<group>"; };
+		C1E693CE29C786E200410918 /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "pt-BR.lproj/Localizable.strings"; sourceTree = "<group>"; };
+		C1E693CF29C786E200410918 /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "pt-BR.lproj/InfoPlist.strings"; sourceTree = "<group>"; };
+		C1E693D029C786E200410918 /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "pt-BR.lproj/InfoPlist.strings"; sourceTree = "<group>"; };
 		C1E71721292E90CC00DA646F /* SmallStatusWidgetEntryView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SmallStatusWidgetEntryView.swift; sourceTree = "<group>"; };
 		C1EB0D1D299581D900628475 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/InfoPlist.strings; sourceTree = "<group>"; };
 		C1EB0D1E299581D900628475 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = "<group>"; };
@@ -1643,11 +1663,30 @@
 		C1F48FFE2995821600C8BD69 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/ckcomplication.strings; sourceTree = "<group>"; };
 		C1F48FFF2995821600C8BD69 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/InfoPlist.strings; sourceTree = "<group>"; };
 		C1F490002995821600C8BD69 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		C1F4FD5929C7869800D7ACBC /* fi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fi; path = fi.lproj/Localizable.strings; sourceTree = "<group>"; };
 		C1F7822527CC056900C0919A /* SettingsManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsManager.swift; sourceTree = "<group>"; };
 		C1F8B1D122375E4200DD66CF /* BolusProgressTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BolusProgressTableViewCell.swift; sourceTree = "<group>"; };
 		C1F8B1DB223862D500DD66CF /* BolusProgressTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = BolusProgressTableViewCell.xib; sourceTree = "<group>"; };
+		C1FAB5BE29C786B000D25073 /* hi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hi; path = hi.lproj/Localizable.strings; sourceTree = "<group>"; };
+		C1FAB5BF29C786B000D25073 /* hi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hi; path = hi.lproj/Main.strings; sourceTree = "<group>"; };
+		C1FAB5C029C786B000D25073 /* hi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hi; path = hi.lproj/Localizable.strings; sourceTree = "<group>"; };
+		C1FAB5C129C786B000D25073 /* hi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hi; path = hi.lproj/Localizable.strings; sourceTree = "<group>"; };
+		C1FAB5C229C786B000D25073 /* hi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hi; path = hi.lproj/Interface.strings; sourceTree = "<group>"; };
 		C1FB428B217806A300FAB378 /* StateColorPalette.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StateColorPalette.swift; sourceTree = "<group>"; };
 		C1FB428E217921D600FAB378 /* PumpManagerUI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PumpManagerUI.swift; sourceTree = "<group>"; };
+		C1FDCBFC29C786F90056E652 /* sk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sk; path = sk.lproj/Main.strings; sourceTree = "<group>"; };
+		C1FDCBFD29C786F90056E652 /* sk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sk; path = sk.lproj/Localizable.strings; sourceTree = "<group>"; };
+		C1FDCBFE29C786F90056E652 /* sk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sk; path = sk.lproj/Localizable.strings; sourceTree = "<group>"; };
+		C1FDCBFF29C786F90056E652 /* sk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sk; path = sk.lproj/Localizable.strings; sourceTree = "<group>"; };
+		C1FDCC0029C786F90056E652 /* sk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sk; path = sk.lproj/Localizable.strings; sourceTree = "<group>"; };
+		C1FDCC0129C786F90056E652 /* sk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sk; path = sk.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		C1FDCC0229C786F90056E652 /* sk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sk; path = sk.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		C1FDCC0329C786F90056E652 /* sk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sk; path = sk.lproj/Interface.strings; sourceTree = "<group>"; };
+		C1FF3D4929C786A900BDC1EC /* he */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = he; path = he.lproj/Localizable.strings; sourceTree = "<group>"; };
+		C1FF3D4A29C786A900BDC1EC /* he */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = he; path = he.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		C1FF3D4B29C786A900BDC1EC /* he */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = he; path = he.lproj/Localizable.strings; sourceTree = "<group>"; };
+		C1FF3D4C29C786A900BDC1EC /* he */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = he; path = he.lproj/Localizable.strings; sourceTree = "<group>"; };
+		C1FF3D4D29C786A900BDC1EC /* he */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = he; path = he.lproj/InfoPlist.strings; sourceTree = "<group>"; };
 		E90909CC24E34AC500F963D2 /* high_and_rising_with_cob_momentum_effect.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = high_and_rising_with_cob_momentum_effect.json; sourceTree = "<group>"; };
 		E90909CD24E34AC500F963D2 /* high_and_rising_with_cob_insulin_effect.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = high_and_rising_with_cob_insulin_effect.json; sourceTree = "<group>"; };
 		E90909CE24E34AC500F963D2 /* high_and_rising_with_cob_predicted_glucose.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = high_and_rising_with_cob_predicted_glucose.json; sourceTree = "<group>"; };
@@ -3415,9 +3454,9 @@
 				tr,
 				he,
 				ar,
-				"zh-Hans-CN",
 				sk,
 				cs,
+				hi,
 			);
 			mainGroup = 43776F831B8022E90074EA36;
 			packageReferences = (
@@ -4296,7 +4335,9 @@
 				F5D9C01927DABBE0002E48F6 /* tr */,
 				F5E0BDD527E1D71D0033557E /* he */,
 				C1C31277297E4BFE00296DA4 /* ar */,
-				C126BB0429830A83002CEE4F /* zh-Hans-CN */,
+				C121D8CF29C7866D00DA0520 /* cs */,
+				C1FAB5BF29C786B000D25073 /* hi */,
+				C1FDCBFC29C786F90056E652 /* sk */,
 			);
 			name = Main.storyboard;
 			sourceTree = "<group>";
@@ -4333,8 +4374,8 @@
 				F5D9C01727DABBE0002E48F6 /* tr */,
 				F5E0BDD327E1D71C0033557E /* he */,
 				C1C3127F297E4C0400296DA4 /* ar */,
-				C126BAFC29830A83002CEE4F /* zh-Hans-CN */,
 				C1C247882995823200371B88 /* sk */,
+				C1C5357529C6346A00E32DF9 /* cs */,
 			);
 			name = Intents.intentdefinition;
 			sourceTree = "<group>";
@@ -4363,7 +4404,9 @@
 				F5D9C01B27DABBE1002E48F6 /* tr */,
 				F5E0BDD727E1D71E0033557E /* he */,
 				C1C31279297E4BFE00296DA4 /* ar */,
-				C126BB0729830A83002CEE4F /* zh-Hans-CN */,
+				C121D8D229C7866D00DA0520 /* cs */,
+				C1FAB5C229C786B000D25073 /* hi */,
+				C1FDCC0329C786F90056E652 /* sk */,
 			);
 			name = Interface.storyboard;
 			sourceTree = "<group>";
@@ -4392,7 +4435,6 @@
 				F5D9C01C27DABBE1002E48F6 /* tr */,
 				F5E0BDD827E1D71E0033557E /* he */,
 				C1C3127A297E4BFE00296DA4 /* ar */,
-				C126BAFF29830A83002CEE4F /* zh-Hans-CN */,
 			);
 			name = Main.storyboard;
 			sourceTree = "<group>";
@@ -4414,6 +4456,12 @@
 				C1F48FFA2995821600C8BD69 /* pl */,
 				C1B267992995824000BCB7C1 /* tr */,
 				C122DEFA29BBFAAE00321F8D /* ru */,
+				C15A582129C7866600D3A5A1 /* ar */,
+				C1FF3D4B29C786A900BDC1EC /* he */,
+				C1B0CFD629C786BF0045B04D /* ja */,
+				C1E693CC29C786E200410918 /* pt-BR */,
+				C1FDCBFD29C786F90056E652 /* sk */,
+				C192C60029C78711001EFEA6 /* vi */,
 			);
 			name = Localizable.strings;
 			sourceTree = "<group>";
@@ -4434,6 +4482,12 @@
 				C1F48FFF2995821600C8BD69 /* pl */,
 				C1B2679D2995824000BCB7C1 /* tr */,
 				C122DEFF29BBFAAE00321F8D /* ru */,
+				C15A582329C7866600D3A5A1 /* ar */,
+				C1FF3D4D29C786A900BDC1EC /* he */,
+				C1B0CFD929C786BF0045B04D /* ja */,
+				C1E693CF29C786E200410918 /* pt-BR */,
+				C1FDCC0129C786F90056E652 /* sk */,
+				C192C60329C78711001EFEA6 /* vi */,
 			);
 			name = InfoPlist.strings;
 			sourceTree = "<group>";
@@ -4462,7 +4516,6 @@
 				F5D9C01A27DABBE1002E48F6 /* tr */,
 				F5E0BDD627E1D71D0033557E /* he */,
 				C1C31278297E4BFE00296DA4 /* ar */,
-				C126BB0129830A83002CEE4F /* zh-Hans-CN */,
 				C1C2478E2995823200371B88 /* sk */,
 			);
 			name = MainInterface.storyboard;
@@ -4512,7 +4565,6 @@
 				F5D9C02127DABBE3002E48F6 /* tr */,
 				F5E0BDDD27E1D7210033557E /* he */,
 				C174571329830930009EFCF2 /* ar */,
-				C126BB0029830A83002CEE4F /* zh-Hans-CN */,
 				C1C2478D2995823200371B88 /* sk */,
 			);
 			name = Localizable.strings;
@@ -4537,6 +4589,9 @@
 				C1EB0D1F299581D900628475 /* es */,
 				C1F48FFB2995821600C8BD69 /* pl */,
 				C122DEFB29BBFAAE00321F8D /* ru */,
+				C1B0CFD729C786BF0045B04D /* ja */,
+				C1E693CD29C786E200410918 /* pt-BR */,
+				C192C60129C78711001EFEA6 /* vi */,
 			);
 			name = InfoPlist.strings;
 			sourceTree = "<group>";
@@ -4565,7 +4620,9 @@
 				F5D9C02227DABBE3002E48F6 /* tr */,
 				F5E0BDDE27E1D7210033557E /* he */,
 				C1C31280297E4C0400296DA4 /* ar */,
-				C126BB0529830A83002CEE4F /* zh-Hans-CN */,
+				C121D8D029C7866D00DA0520 /* cs */,
+				C1FAB5C029C786B000D25073 /* hi */,
+				C1FDCBFE29C786F90056E652 /* sk */,
 			);
 			name = Localizable.strings;
 			sourceTree = "<group>";
@@ -4594,7 +4651,6 @@
 				F5D9C02027DABBE2002E48F6 /* tr */,
 				F5E0BDDC27E1D7200033557E /* he */,
 				C174571429830930009EFCF2 /* ar */,
-				C126BB0229830A83002CEE4F /* zh-Hans-CN */,
 				C1C247902995823200371B88 /* sk */,
 			);
 			name = InfoPlist.strings;
@@ -4623,7 +4679,6 @@
 				F5D9C02627DABBE4002E48F6 /* tr */,
 				F5E0BDE227E1D7230033557E /* he */,
 				C174571229830930009EFCF2 /* ar */,
-				C126BAFE29830A83002CEE4F /* zh-Hans-CN */,
 				C1C2478A2995823200371B88 /* sk */,
 			);
 			name = Localizable.strings;
@@ -4653,7 +4708,9 @@
 				F5D9C02527DABBE4002E48F6 /* tr */,
 				F5E0BDE127E1D7230033557E /* he */,
 				C174571529830930009EFCF2 /* ar */,
-				C126BB0629830A83002CEE4F /* zh-Hans-CN */,
+				C121D8D129C7866D00DA0520 /* cs */,
+				C1FAB5C129C786B000D25073 /* hi */,
+				C1FDCC0029C786F90056E652 /* sk */,
 			);
 			name = Localizable.strings;
 			sourceTree = "<group>";
@@ -4682,9 +4739,9 @@
 				F5D9C01F27DABBE2002E48F6 /* tr */,
 				F5E0BDDB27E1D7200033557E /* he */,
 				C1C31282297E4F6E00296DA4 /* ar */,
-				C126BB0329830A83002CEE4F /* zh-Hans-CN */,
 				C1C247912995823200371B88 /* sk */,
 				C12BCCF929BBFA480066A158 /* cs */,
+				C1FAB5BE29C786B000D25073 /* hi */,
 			);
 			name = Localizable.strings;
 			sourceTree = "<group>";
@@ -4738,7 +4795,6 @@
 				F5D9C01E27DABBE2002E48F6 /* tr */,
 				F5E0BDDA27E1D71F0033557E /* he */,
 				C1C3127C297E4BFE00296DA4 /* ar */,
-				C126BAFD29830A83002CEE4F /* zh-Hans-CN */,
 				C1C247892995823200371B88 /* sk */,
 			);
 			name = Localizable.strings;
@@ -4802,6 +4858,11 @@
 				C1F48FF82995821600C8BD69 /* pl */,
 				C1C2478C2995823200371B88 /* sk */,
 				C122DEF929BBFAAE00321F8D /* ru */,
+				C15A581F29C7866600D3A5A1 /* ar */,
+				C1FF3D4929C786A900BDC1EC /* he */,
+				C1B0CFD429C786BF0045B04D /* ja */,
+				C1E693CA29C786E200410918 /* pt-BR */,
+				C192C5FE29C78711001EFEA6 /* vi */,
 			);
 			name = Localizable.strings;
 			sourceTree = "<group>";
@@ -4823,6 +4884,11 @@
 				C1F48FF92995821600C8BD69 /* pl */,
 				C14952152995822A0095AA84 /* ru */,
 				C1C2478F2995823200371B88 /* sk */,
+				C15A582029C7866600D3A5A1 /* ar */,
+				C1FF3D4A29C786A900BDC1EC /* he */,
+				C1B0CFD529C786BF0045B04D /* ja */,
+				C1E693CB29C786E200410918 /* pt-BR */,
+				C192C5FF29C78711001EFEA6 /* vi */,
 			);
 			name = InfoPlist.strings;
 			sourceTree = "<group>";
@@ -4859,6 +4925,14 @@
 				C1B2679B2995824000BCB7C1 /* tr */,
 				C1AD62FF29BBFAA80002685D /* ro */,
 				C122DEFD29BBFAAE00321F8D /* ru */,
+				C15A582229C7866600D3A5A1 /* ar */,
+				C1F4FD5929C7869800D7ACBC /* fi */,
+				C1FF3D4C29C786A900BDC1EC /* he */,
+				C1B0CFD829C786BF0045B04D /* ja */,
+				C1E693CE29C786E200410918 /* pt-BR */,
+				C1FDCBFF29C786F90056E652 /* sk */,
+				C1E5A6DE29C7870100703C90 /* sv */,
+				C192C60229C78711001EFEA6 /* vi */,
 			);
 			name = Localizable.strings;
 			sourceTree = "<group>";
@@ -4882,6 +4956,10 @@
 				C1BCB5B9298309C4001C50FF /* it */,
 				C1F490002995821600C8BD69 /* pl */,
 				C122DF0029BBFAAE00321F8D /* ru */,
+				C1B0CFDA29C786BF0045B04D /* ja */,
+				C1E693D029C786E200410918 /* pt-BR */,
+				C1FDCC0229C786F90056E652 /* sk */,
+				C192C60429C78711001EFEA6 /* vi */,
 			);
 			name = InfoPlist.strings;
 			sourceTree = "<group>";
@@ -5222,6 +5300,9 @@
 				PRODUCT_BUNDLE_IDENTIFIER = "$(MAIN_APP_BUNDLE_IDENTIFIER)";
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				PROVISIONING_PROFILE_SPECIFIER = "$(LOOP_PROVISIONING_PROFILE_SPECIFIER_DEBUG)";
+				SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
+				SUPPORTS_MACCATALYST = NO;
+				SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
 				TARGETED_DEVICE_FAMILY = 1;
 			};
 			name = Debug;
@@ -5245,6 +5326,9 @@
 				PRODUCT_BUNDLE_IDENTIFIER = "$(MAIN_APP_BUNDLE_IDENTIFIER)";
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				PROVISIONING_PROFILE_SPECIFIER = "$(LOOP_PROVISIONING_PROFILE_SPECIFIER_RELEASE)";
+				SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
+				SUPPORTS_MACCATALYST = NO;
+				SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
 				TARGETED_DEVICE_FAMILY = 1;
 			};
 			name = Release;
diff --git a/Loop/Views/AlertManagementView.swift b/Loop/Views/AlertManagementView.swift
index 7fb8b940c..9999786a3 100644
--- a/Loop/Views/AlertManagementView.swift
+++ b/Loop/Views/AlertManagementView.swift
@@ -121,7 +121,7 @@ struct AlertManagementView: View {
     
     private var missedMealAlertSection: some View {
         Section(footer: DescriptiveText(label: NSLocalizedString("When enabled, Loop can notify you when it detects a meal that wasn't logged.", comment: "Description of missed meal notifications."))) {
-            Toggle("Missed Meal Notifications", isOn: missedMealNotificationsEnabled)
+            Toggle(NSLocalizedString("Missed Meal Notifications", comment: "Title for missed meal notifications toggle"), isOn: missedMealNotificationsEnabled)
         }
     }
 }
diff --git a/Loop/ar.lproj/InfoPlist.strings b/Loop/ar.lproj/InfoPlist.strings
index 9d3aeaf5c..be734bf6e 100644
--- a/Loop/ar.lproj/InfoPlist.strings
+++ b/Loop/ar.lproj/InfoPlist.strings
@@ -1,3 +1,6 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Loop";
+
 /* Bundle name */
 "CFBundleName" = "$(PRODUCT_NAME)";
 
diff --git a/Loop/ar.lproj/Localizable.strings b/Loop/ar.lproj/Localizable.strings
index c81e5f8cc..e91468b9b 100644
--- a/Loop/ar.lproj/Localizable.strings
+++ b/Loop/ar.lproj/Localizable.strings
@@ -1,6 +1,12 @@
 /* The string format appended to active insulin that describes pending insulin. (1: pending insulin) */
 " (pending: %@)" = " (قيد الانتظار: %@)";
 
+/* String denoting lack of a recommended bolus amount in the simple bolus calculator */
+"–" = "—";
+
+/* No glucose value representation (3 dashes for mg/dL) */
+"– – –" = "---";
+
 /* The format for an active override preset. (1: preset symbol)(2: preset name) */
 "%@ %@" = "%1$@ %2$@";
 
@@ -16,6 +22,9 @@
 /* Format string for glucose target range. (1: Min target)(2: Max target)(3: glucose unit) */
 "%1$@ – %2$@ %3$@" = "%1$@ – %2$@ %3$@";
 
+/* Format string combining carb entry quantity and absorption time emoji */
+"%1$@ %2$@" = "%1$@ %2$@";
+
 /* Format string for carb ratio average. (1: value)(2: carb unit) */
 "%1$@ %2$@/U" = "%1$@ %2$@/وحدة";
 
@@ -58,12 +67,18 @@
 /* The string format describing active carbohydrates. (1: localized glucose value description) */
 "Active Carbohydrates: %@" = "الكربوهيدرات النشطة: %@";
 
+/* Title describing quantity of still-absorbing carbohydrates */
+"Active Carbs" = "كارب النشط";
+
 /* The title of the Insulin On-Board graph */
-"Active Insulin" = "الأنسولين النشط";
+"Active Insulin" = "أنسولين نشط";
 
 /* The string format describing active insulin. (1: localized insulin value description) */
 "Active Insulin: %@" = "الأنسولين النشط: %@";
 
+/* Title of the user activity for adding carbs */
+"Add Carb Entry" = "Add Carb Entry";
+
 /* Action sheet title selecting CGM
    Title text for button to set up a CGM */
 "Add CGM" = "إضافة CGM";
@@ -102,7 +117,7 @@
 
 /* The label of the bolus entry button
    The notification title for a bolus failure */
-"Bolus" = "الجرعة";
+"Bolus" = "Bolus";
 
 /* The format string for bolus progress. (1: delivered volume)(2: total volume) */
 "Bolused %1$@ of %2$@" = "تم ضخ %1$@ من %2$@";
@@ -123,6 +138,9 @@
    The title text for the carb ratio schedule */
 "Carb Ratios" = "معاملات الكارب";
 
+/* The title of the view controller to create a new carb entry */
+"carb-entry-title-add" = "Add Carb Entry";
+
 /* Title of the prediction input effect for carbohydrates */
 "Carbohydrates" = "الكربوهيدرات";
 
@@ -169,6 +187,9 @@
 /* The title of the cell indicating a generic temporary override is enabled */
 "Custom Override" = "تجاوز مخصص";
 
+/* The short unit display string for decibles */
+"dB" = "dB";
+
 /* Button title to delete CGM */
 "Delete CGM" = "حذف CGM";
 
@@ -178,6 +199,10 @@
 /* The action hint of the workout mode toggle button when enabled */
 "Disables" = "تعطيل";
 
+/* Default alert dismissal
+   The button label of the action used to dismiss an error alert */
+"Dismiss" = "تجاهل";
+
 /* The action hint of the workout mode toggle button when disabled */
 "Enables" = "تفعيل";
 
@@ -202,6 +227,9 @@
 /* The format string used to describe a finite workout targets duration */
 "For %1$@" = "لمدة %1$@";
 
+/* The short unit display string for grams */
+"g" = "g";
+
 /* The title of the glucose and prediction graph */
 "Glucose" = "قراءات السكر";
 
@@ -255,9 +283,15 @@
 /* The notification alert describing a long-lasting loop failure. The substitution parameter is the time interval since the last loop */
 "Loop has not completed successfully in %@" = "لم تتم الحلقة المغلقة بنجاح منذ %@";
 
+/* The short unit display string for milligrams of glucose per decilter */
+"mg/dL" = "mg/dL";
+
 /* The error message for missing data. (1: missing data details) */
 "Missing data: %1$@" = "بيانات مفقودة: %1$@";
 
+/* The short unit display string for millimoles of glucose per liter */
+"mmol/L" = "mmol/L";
+
 /* Details for missing data error when momentum effects are missing */
 "Momentum effects" = "تأثيرات النشاط";
 
@@ -267,6 +301,17 @@
 /* The error message displayed for device connection errors. */
 "No connected devices, or failure during device connection" = "لا يوجد أجهزة متصلة, أو يوجد خطأ أثناء الاتصال";
 
+/* Alert acknowledgment OK button
+   Critical Alert permissions disabled alert button
+   Default action for alert when alert acknowledgment fails
+   Notifications permissions disabled alert button
+   Text for ok action on notification of upcoming profile expiration
+   The title of the notification action to acknowledge a device alert */
+"OK" = "موافق";
+
+/* Notification Setting Status is On */
+"On" = "On";
+
 /* The title text for the override presets */
 "Override Presets" = "تخطي الإعدادات المسبقة";
 
@@ -303,6 +348,9 @@
 /* The title of the cell indicating the pump is suspended */
 "Pump Suspended" = "تم إيقاف الضخ مؤقتا";
 
+/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
+"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
+
 /* Title of insulin model preset */
 "Rapid-Acting – Adults" = "التأثيرالسريع - كبار";
 
@@ -313,7 +361,7 @@
 "Recommendation expired: %1$@ old" = "انتهت صلاحية التوصية منذ: %1$@ ";
 
 /* The title of the cell displaying a recommended temp basal value */
-"Recommended Basal" = "الضخ المستمر الموصى به";
+"Recommended Basal" = "الضخ المستمر المقترح";
 
 /* Accessibility hint describing recommended bolus units */
 "Recommended Bolus: %@ Units" = "الجرعة الموصى بها: %@ وحدات";
@@ -363,6 +411,10 @@
 /* The short unit display string for international units of insulin */
 "U" = "وحدة";
 
+/* Event title displayed when StoredPumpEvent.title is not set
+   The default description to use when an entry has no dose description */
+"Unknown" = "Unknown";
+
 /* The format for the description of a temporary override end date */
 "until %@" = "حتى %@";
 
diff --git a/Loop/ar.lproj/Main.strings b/Loop/ar.lproj/Main.strings
index d9f5de8ca..9b859aca7 100644
--- a/Loop/ar.lproj/Main.strings
+++ b/Loop/ar.lproj/Main.strings
@@ -1,3 +1,6 @@
+/* Class = "UILabel"; text = "g"; ObjectID = "0RV-d5-muE"; */
+"0RV-d5-muE.text" = "g";
+
 /* Class = "UINavigationItem"; title = "Status"; ObjectID = "3kU-n2-fha"; */
 "3kU-n2-fha.title" = "الحالة";
 
@@ -11,7 +14,7 @@
 "aCb-Qs-bpu.text" = "تفاصيل";
 
 /* Class = "UILabel"; text = "Label"; ObjectID = "bIL-Ub-qYp"; */
-"bIL-Ub-qYp.text" = "علامة";
+"bIL-Ub-qYp.text" = "Label";
 
 /* Class = "UILabel"; text = "Glucose Change"; ObjectID = "bq4-98-cQU"; */
 "bq4-98-cQU.text" = "تغير قراءات السكر";
@@ -23,7 +26,7 @@
 "D4C-I2-dhA.text" = "Future glucose is predicted by combining the effects of multiple inputs. Use this tool to toggle various inputs to see how they compare to the final prediction.";
 
 /* Class = "UILabel"; text = "Label"; ObjectID = "d6m-qV-wWi"; */
-"d6m-qV-wWi.text" = "علامة";
+"d6m-qV-wWi.text" = "Label";
 
 /* Class = "UILabel"; text = "eventually 92 mg/dL"; ObjectID = "E41-FN-nkk"; */
 "E41-FN-nkk.text" = "في النهاية 92 mg/dL";
@@ -31,6 +34,9 @@
 /* Class = "UILabel"; text = "Observed"; ObjectID = "EAn-Ja-S1d"; */
 "EAn-Ja-S1d.text" = "مُلاحظ";
 
+/* Class = "UILabel"; text = "3.5 U/hour @ 12:12 PM"; ObjectID = "fWV-jg-ICt"; */
+"fWV-jg-ICt.text" = "3.5 وحدة/ساعة @ 12:12 مساء";
+
 /* Class = "UITableViewController"; title = "Carbohydrate Effects"; ObjectID = "hZZ-2S-lrd"; */
 "hZZ-2S-lrd.title" = "تأثيرات الكربوهيدرات";
 
@@ -44,10 +50,10 @@
 "k3F-Na-7mn.text" = "الضخ المستمر المقترح";
 
 /* Class = "UILabel"; text = "Label"; ObjectID = "Krd-Aa-ret"; */
-"Krd-Aa-ret.text" = "علامة";
+"Krd-Aa-ret.text" = "Label";
 
 /* Class = "UILabel"; text = "Label"; ObjectID = "OFA-qT-ZAg"; */
-"OFA-qT-ZAg.text" = "علامة";
+"OFA-qT-ZAg.text" = "Label";
 
 /* Class = "UITableViewController"; title = "Predicted Glucose"; ObjectID = "PA3-sP-cWY"; */
 "PA3-sP-cWY.title" = "سكر الدم المتوقع";
@@ -62,11 +68,14 @@
 "tuw-av-A3x.text" = "قراءات السكر";
 
 /* Class = "UILabel"; text = "Label"; ObjectID = "ufi-Kj-33k"; */
-"ufi-Kj-33k.text" = "علامة";
+"ufi-Kj-33k.text" = "Label";
 
 /* Class = "UINavigationItem"; title = "Carbohydrates"; ObjectID = "Vpi-5b-bY5"; */
 "Vpi-5b-bY5.title" = "الكربوهيدرات";
 
+/* Class = "UILabel"; text = "Recommended Basal"; ObjectID = "xhx-PI-bBI"; */
+"xhx-PI-bBI.text" = "الضخ المستمر المقترح";
+
 /* Class = "UILabel"; text = "0"; ObjectID = "yn7-2M-jZz"; */
 "yn7-2M-jZz.text" = "0";
 
diff --git a/Loop/cs.lproj/Localizable.strings b/Loop/cs.lproj/Localizable.strings
index c0b4c9c43..f27d65665 100644
--- a/Loop/cs.lproj/Localizable.strings
+++ b/Loop/cs.lproj/Localizable.strings
@@ -1,21 +1,90 @@
 /* remaining time in setting's profile expiration section */
 " remaining" = "zbývající";
 
+/* No glucose value representation (3 dashes for mg/dL) */
+"– – –" = "– – –";
+
+/* The title of the nightscout API secret credential */
+"API Secret" = "API Secret";
+
 /* Settings app profile section */
 "App Profile" = "Profil";
 
+/* Confirmation message for deleting a service */
+"Are you sure you want to delete this service?" = "Opravdu chcete tuto službu smazat?";
+
+/* The title of the basal rate profile screen
+   The title text for the basal rate schedule */
+"Basal Rates" = "Úrovně bazálu";
+
+/* The title of the cancel action in an action sheet */
+"Cancel" = "Zrušit";
+
+/* The title of the action used to dismiss an error alert */
+"com.loudnate.LoopKit.errorAlertActionTitle" = "OK";
+
+/* The title of the configuration section in settings */
+"Configuration" = "Konfigurace";
+
+/* Default alert dismissal */
+"Continue" = "Pokračovat";
+
+/* Critical Alerts Status text */
+"Critical Alerts" = "Kritická upozornění";
+
+/* The title of the button to remove the credentials for a service */
+"Delete Account" = "Smazat účet";
+
+/* Button title to delete a service */
+"Delete Service" = "Smazat službu";
+
+/* Title text for delivery limits */
+"Delivery Limits" = "Limity podávání";
+
+/* No comment provided by engineer. */
+"Done" = "Hotovo";
+
 /* Secondary text for alerts disabled warning, which appears on the main status screen. */
 "Fix now by turning Notifications, Critical Alerts and Time Sensitive Notifications ON." = "Opravit nyní zapnutím Oznámení, Kritických upozornění a Časově citlivých oznámení.";
 
+/* The title of the glucose and prediction graph */
+"Glucose" = "Glukóza";
+
 /* The title text for how to update */
 "How to update (LoopDocs)" = "Jak aktualizovat (LoopDocs)";
 
+/* Insulin type label */
+"Insulin Type" = "Typ inzulínu";
+
+/* The title of the Nightscout service */
+"Nightscout" = "Nightscout";
+
+/* Notification Setting Status is Off */
+"Off" = "Vypnuto";
+
+/* Alert acknowledgment OK button
+   Critical Alert permissions disabled alert button
+   Default action for alert when alert acknowledgment fails
+   Notifications permissions disabled alert button
+   Text for ok action on notification of upcoming profile expiration
+   The title of the notification action to acknowledge a device alert */
+"OK" = "OK";
+
+/* Notification Setting Status is On */
+"On" = "Zapnuto";
+
 /* Settings App Profile expiration view */
 "Profile Expiration" = "Vypršení platnosti profilu";
 
 /* Time that profile expires */
 "Profile expires " = "Platnost profilu vyprší";
 
+/* The title of the notification action to retry a bolus command */
+"Retry" = "Zkusit znovu";
+
+/* The title of the nightscout site URL credential */
+"Site URL" = "URL adresa webu";
+
 /* Unknown amount of time in settings' profile expiration section */
 "Unknown time" = "Neznámý čas";
 
diff --git a/Loop/cs.lproj/Main.strings b/Loop/cs.lproj/Main.strings
new file mode 100644
index 000000000..8b1faf67a
--- /dev/null
+++ b/Loop/cs.lproj/Main.strings
@@ -0,0 +1,6 @@
+/* Class = "UINavigationItem"; title = "Status"; ObjectID = "3kU-n2-fha"; */
+"3kU-n2-fha.title" = "Status";
+
+/* Class = "UILabel"; text = "Glucose"; ObjectID = "tuw-av-A3x"; */
+"tuw-av-A3x.text" = "Glukóza";
+
diff --git a/Loop/da.lproj/Localizable.strings b/Loop/da.lproj/Localizable.strings
index 2c1d6d39e..33c567280 100644
--- a/Loop/da.lproj/Localizable.strings
+++ b/Loop/da.lproj/Localizable.strings
@@ -141,7 +141,7 @@
 "Active Carbs" = "Aktive kulhydrater";
 
 /* The title of the Insulin On-Board graph */
-"Active Insulin" = "Aktiv insulin";
+"Active Insulin" = "Aktivt insulin";
 
 /* The string format describing active insulin. (1: localized insulin value description) */
 "Active Insulin: %@" = "Aktiv insulin: %@";
@@ -205,13 +205,13 @@
 "App Profile" = "App-profil";
 
 /* Action sheet confirmation message for pump history deletion */
-"Are you sure you want to delete all history entries?" = "Er du sikker på, at du vil slette alle gamle indtastninger?";
+"Are you sure you want to delete all history entries?" = "Er du sikker på at du vil slette alle gamle indtastninger?";
 
 /* Action sheet confirmation message for logged dose deletion */
 "Are you sure you want to delete all logged dose entries?" = "Er du sikker på, at du vil slette alle logget dosis?";
 
 /* Action sheet confirmation message for reservoir deletion */
-"Are you sure you want to delete all reservoir values?" = "Er du sikker på, at du vil slette alle reservoir-værdier?";
+"Are you sure you want to delete all reservoir values?" = "Er du sikker på at du vil slette alle reservoirværdier?";
 
 /* No comment provided by engineer. */
 "Are you sure you want to delete all your %@ Data?\n(This action is not reversible)" = "Er du sikker på, at du vil slette alle dine %@ data?\n(Denne handling kan ikke fortrydes)";
@@ -329,7 +329,7 @@
 "Check your device time and/or remove any invalid data from Apple Health." = "Tjek din enheds tid og/eller fjern ugyldige data fra Apple Health.";
 
 /* Carb entry section footer text explaining absorption time */
-"Choose a longer absorption time for larger meals, or those containing fats and proteins. This is only guidance to the algorithm and need not be exact." = "Vælg en længere absorptionstid for større måltider, eller dem, der indeholder fedt og proteiner. Dette er kun vejledning til algoritmen og behøver ikke være nøjagtig.";
+"Choose a longer absorption time for larger meals, or those containing fats and proteins. This is only guidance to the algorithm and need not be exact." = "Vælg en længere absorptionstid ved større måltider, eller dem med fedt og proteiner. Det er blot hjælp til algoritmen og behøver ikke være nøjagtig.";
 
 /* The button label of the action used to dismiss the unsafe notification permission alert */
 "Close" = "Luk";
@@ -338,7 +338,7 @@
 "Closed Loop" = "Lukket Loop";
 
 /* Alert title for closed loop off informational modal */
-"Closed Loop OFF" = "Lukket Loop slået fra";
+"Closed Loop OFF" = "Lukket loop FRA";
 
 /* The description text for the looping enabled switch cell when closed loop is not allowed because the sensor is inactive */
 "Closed Loop requires an active CGM Sensor Session" = "Lukket Loop kræver en aktiv CGM sensor-session";
@@ -390,7 +390,7 @@
 "Current Glucose" = "Nuværende blodsukker";
 
 /* Message when offering bolus recommendation even though bg is below range. (1: glucose value) */
-"Current glucose of %1$@ is below correction range." = " Nuværende blodsukker på %1$@ er under dit korrektionsområde.";
+"Current glucose of %1$@ is below correction range." = "Den aktuelle glukose for %1$@ er under korrektionsområdet.";
 
 /* The title of the cell indicating a generic temporary override is enabled */
 "Custom Override" = "Brugerdefineret Override";
@@ -417,7 +417,7 @@
 "Delete CGM" = "Slet CGM";
 
 /* Button title to delete a service */
-"Delete Service" = "Slet tjeneste";
+"Delete Service" = "Slet service";
 
 /* No comment provided by engineer. */
 "Delete Testing CGM Data" = "Slet CGM testdata";
@@ -432,7 +432,7 @@
 "Deliver" = "Afgiv";
 
 /* Title text for delivery limits */
-"Delivery Limits" = "Indgivningsgrænser";
+"Delivery Limits" = "Insulingrænser";
 
 /* Descriptive text for Therapy Settings */
 "Diabetes Treatment" = "Diabetesbehandling";
@@ -445,7 +445,7 @@
 
 /* Default alert dismissal
    The button label of the action used to dismiss an error alert */
-"Dismiss" = "Luk";
+"Dismiss" = "Afvis";
 
 /* No comment provided by engineer. */
 "Done" = "Udført";
@@ -484,7 +484,7 @@
 "Error Exporting Logs" = "Der opstod en fejl under eksport af log";
 
 /* The alert title for a resume error */
-"Error Resuming" = "Fejl ved forsøg på genoptagelse";
+"Error Resuming" = "Fejl ved genoptagelse";
 
 /* Segmented button title for insulin delivery log event history */
 "Event History" = "Hændelseshistorik";
@@ -535,7 +535,7 @@
 "Get help with Alert Permissions" = "Få hjælp til advarselstilladelser";
 
 /* The title of the glucose and prediction graph */
-"Glucose" = "Blodsukker";
+"Glucose" = "Glukose";
 
 /* The error message when glucose data is too old to be used. (1: glucose data age in minutes) */
 "Glucose data is %1$@ old" = "Blodsukkerdata er %1$@ gamle";
@@ -578,7 +578,7 @@
 "Insulin adjustments have been disabled!" = "Insulinjusteringer er blevet deaktiveret!";
 
 /* The title of the insulin delivery graph */
-"Insulin Delivery" = "Insulinindgivelse";
+"Insulin Delivery" = "Insulintilførsel";
 
 /* Details for missing data error when insulin effects are missing */
 "Insulin effects" = "Insulineffekter";
@@ -592,7 +592,7 @@
 
 /* The title of the insulin sensitivities schedule screen
    The title text for the insulin sensitivity schedule */
-"Insulin Sensitivities" = "Insulinfølsomhed";
+"Insulin Sensitivities" = "Insulinfølsomheder";
 
 /* Details for configuration error when insulin sensitivity schedule is missing */
 "Insulin Sensitivity Schedule" = "Insulinfølsomhed tidsplan";
@@ -781,22 +781,22 @@
 "On" = "Tændt";
 
 /* The title text for the override presets */
-"Override Presets" = "Override forudinstillinger";
+"Override Presets" = "Override forudindstillinger";
 
 /* The label of the pre-meal mode toggle button */
 "Pre-Meal Targets" = "Før-måltid Må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$@." = "Forventet blodsukker ved %1$@ er %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." = "Det forventede glukose er inden for intervallet.";
+"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." = "Forventet blodsukker på %1$@ er under den indstillede suspenderingsgrænse.";
+"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." = "Forventet blodsukker på %1$@ er under den indstillede suspenderingsgrænse.";
+"Predicted glucose of %1$@ is below your suspend threshold setting." = "Forventet glukose på %1$@ er under din indstilling for suspenderingstærskel.";
 
 /* Format string describing retrospective glucose prediction comparison. (1: Predicted glucose)(2: Actual glucose)(3: difference) */
 "Predicted: %1$@\nActual: %2$@ (%3$@)" = "Forventet: %1$@\nFaktisk: %2$@ (%3$@)";
@@ -823,7 +823,7 @@
 "Pump data is %1$@ old" = "Pumpedata er %1$@ gammel";
 
 /* The title of the screen displaying a pump event */
-"Pump Event" = "Pumpehændelse";
+"Pump Event" = "Pumpe-hændelse";
 
 /* Details for configuration error when pump manager is missing */
 "Pump Manager" = "Pumpemanager";
@@ -847,16 +847,16 @@
 "QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
 
 /* Title of insulin model preset */
-"Rapid-Acting – Adults" = "Hurtigtvirkende – Voksne";
+"Rapid-Acting – Adults" = "Hurtigt-virkende (Rapid) – Voksne";
 
 /* Title of insulin model preset */
-"Rapid-Acting – Children" = "Hurtigtvirkende – Børn";
+"Rapid-Acting – Children" = "Hurtigt-virkende (Rapid) – Børn";
 
 /* The error message when a recommendation has expired. (1: age of recommendation in minutes) */
 "Recommendation expired: %1$@ old" = "Forslag udløbet: %1$@ gamle";
 
 /* The title of the cell displaying a recommended temp basal value */
-"Recommended Basal" = "Foreslået Basal";
+"Recommended Basal" = "Anbefalet basal";
 
 /* Label for recommended bolus row on bolus screen
    Label for recommended bolus row on simple bolus screen */
@@ -921,7 +921,7 @@
 "since %@" = "siden %@";
 
 /* The title of the nightscout site URL credential */
-"Site URL" = "Side URL";
+"Site URL" = "Side-URL";
 
 /* Software update button link text */
 "Software Update" = "Software-opdatering";
@@ -972,7 +972,7 @@
 "The bolus recommendation has updated. Please reconfirm the bolus amount." = "Bolusanbefalingen er opdateret. Bekræft venligst bolus.";
 
 /* Subtitle description of Walsh insulin model setting */
-"The legacy model used by Loop, allowing customization of action duration." = "Den model, der bruges af Loop, tillader tilpasning af handlingens varighed.";
+"The legacy model used by Loop, allowing customization of action duration." = "Ældre model, der bruges af Loop, og som gør det muligt at tilpasse insulinens varighed.";
 
 /* Alert body displayed absorption time greater than max (1: maximum absorption time) */
 "The maximum absorption time is %@" = "Den maksimale absorptionstid er %@";
@@ -996,10 +996,10 @@
 "The remote command expired %.0f minutes ago." = "Fjernkommandoen udløb for %.0f minutter siden.";
 
 /* Title text for button to Therapy Settings */
-"Therapy Settings" = "Indstillinger";
+"Therapy Settings" = "Behandlingsindstillinger";
 
 /* Title of the carb entry date picker cell */
-"Time" = "Tidspunkt";
+"Time" = "Tid";
 
 /* Time Sensitive Status text */
 "Time Sensitive Notifications" = "Tidsfølsomme meddelelser";
diff --git a/Loop/da.lproj/Main.strings b/Loop/da.lproj/Main.strings
index a6f8e744e..b6d4bab2d 100644
--- a/Loop/da.lproj/Main.strings
+++ b/Loop/da.lproj/Main.strings
@@ -5,7 +5,7 @@
 "3kU-n2-fha.title" = "Status";
 
 /* Class = "UILabel"; text = "3.5 U/hour @ 12:12 PM"; ObjectID = "5gz-kZ-iF1"; */
-"5gz-kZ-iF1.text" = "3.5 E/time @ 12:12 PM";
+"5gz-kZ-iF1.text" = "3.5 E/time @ 12:12";
 
 /* Class = "UILabel"; text = "Predicted"; ObjectID = "87H-N1-0vJ"; */
 "87H-N1-0vJ.text" = "Forventet";
@@ -80,7 +80,7 @@
 "SQx-au-ZcM.text" = "g aktive kulhydrater";
 
 /* Class = "UILabel"; text = "Glucose"; ObjectID = "tuw-av-A3x"; */
-"tuw-av-A3x.text" = "Blodsukker";
+"tuw-av-A3x.text" = "Glukose";
 
 /* Class = "UINavigationItem"; title = "Add/Edit Carb Entry"; ObjectID = "Tz7-80-bJ7"; */
 "Tz7-80-bJ7.title" = "Tilføj/rediger kulhydrater";
diff --git a/Loop/de.lproj/InfoPlist.strings b/Loop/de.lproj/InfoPlist.strings
index d527a9e29..112edb124 100644
--- a/Loop/de.lproj/InfoPlist.strings
+++ b/Loop/de.lproj/InfoPlist.strings
@@ -20,7 +20,7 @@
 "NSHealthShareUsageDescription" = "Mahlzeit-Daten aus der HealthKit-Datenbank werden verwendet, um Blutzuckereffekte zu bestimmen. Blutzuckerdaten aus der HealthKit-Datenbank werden für die Grafik- und Momentumberechnung verwendet.";
 
 /* Privacy - Health Update Usage Description */
-"NSHealthUpdateUsageDescription" = "Die in der App und auf der Uhr eingegebenen Kohlenhydratmengen werden in der Health-Datenbank gespeichert. Blutzuckerdaten, die vom CGM abgerufen werden, werden sicher in HealthKit gespeichert.";
+"NSHealthUpdateUsageDescription" = "In der App und auf der Uhr eingegebene Daten zu Kohlenhydratmahlzeiten werden in der HealthKit-Datenbank  gespeichert. Vom CGM abgerufene Glukosedaten werden sicher in HealthKit-Datenbank gespeichert.";
 
 /* Privacy - Siri Usage Description */
 "NSSiriUsageDescription" = "Loop verwendet Siri, damit Sie Voreinstellungen mit Ihrer Sprache ausführen können.";
diff --git a/Loop/de.lproj/Localizable.strings b/Loop/de.lproj/Localizable.strings
index 9ace4f9f7..e50ff87f1 100755
--- a/Loop/de.lproj/Localizable.strings
+++ b/Loop/de.lproj/Localizable.strings
@@ -35,7 +35,7 @@
 "%@ remaining" = "%@ verbleiben";
 
 /* The subtitle format describing total insulin. (1: localized insulin total) */
-"%@ U Total" = "%@ Gesamt-IE";
+"%@ U Total" = "%@ IE gesamt";
 
 /* Appends a full-stop to a statement */
 "%@." = "%@.";
@@ -147,7 +147,7 @@
 "Active Insulin: %@" = "Aktives Insulin: %@";
 
 /* Title of the user activity for adding carbs */
-"Add Carb Entry" = "KH-Eintrag hinzufügen";
+"Add Carb Entry" = "Kohlenhydrate hinzufügen";
 
 /* Action sheet title selecting CGM
    Title text for button to set up a CGM */
@@ -196,22 +196,22 @@
 "An updated bolus recommendation is available." = "Eine aktualisierte Bolusempfehlung ist verfügbar.";
 
 /* The title of the amplitude API key credential */
-"API Key" = "API Schlüssel";
+"API Key" = "API Key";
 
 /* The title of the nightscout API secret credential */
-"API Secret" = "API Geheimnis";
+"API Secret" = "API Secret";
 
 /* Settings app profile section */
 "App Profile" = "App-Profil";
 
 /* Action sheet confirmation message for pump history deletion */
-"Are you sure you want to delete all history entries?" = "Möchten Sie wirklich alle Verlaufseinträge löschen?";
+"Are you sure you want to delete all history entries?" = "Möchtest Du wirklich alle Verlaufseinträge löschen?";
 
 /* Action sheet confirmation message for logged dose deletion */
 "Are you sure you want to delete all logged dose entries?" = "Möchten Sie wirklich alle protokollierten Dosiseinträge löschen?";
 
 /* Action sheet confirmation message for reservoir deletion */
-"Are you sure you want to delete all reservoir values?" = "Möchten Sie wirklich alle Reservoirwerte löschen?";
+"Are you sure you want to delete all reservoir values?" = "Möchtest Du wirklich alle Reservoirwerte löschen?";
 
 /* No comment provided by engineer. */
 "Are you sure you want to delete all your %@ Data?\n(This action is not reversible)" = "Möchten Sie wirklich alle %@-Daten löschen?\n(Diese Aktion kann nicht rückgängig gemacht werden)";
@@ -220,7 +220,7 @@
 "Are you sure you want to delete this CGM?" = "Sind Sie sicher, dass Sie dieses CGM löschen wollen?";
 
 /* Confirmation message for deleting a service */
-"Are you sure you want to delete this service?" = "Möchten Sie diesen Dienst wirklich löschen?";
+"Are you sure you want to delete this service?" = "Bist Du sicher, dass Du diesen Dienst löschen möchtest?";
 
 /* Format fragment for a specific time */
 "at %@" = "um %@";
@@ -232,11 +232,11 @@
 "Authenticate to log %@ Units" = "Authentifizieren Sie sich, um %@ Einheiten zu protokollieren";
 
 /* Details for configuration error when basal rate schedule is missing */
-"Basal Rate Schedule" = "Basalraten-Zeitplan";
+"Basal Rate Schedule" = "Basalratenplan";
 
 /* The title of the basal rate profile screen
    The title text for the basal rate schedule */
-"Basal Rates" = "Basalraten";
+"Basal Rates" = "Basalrate";
 
 /* Caption for bolus screen notice when no bolus is recommended for the predicted glucose */
 "Based on your predicted glucose, no bolus is recommended." = "Basierend auf Ihrem vorhergesagten Blutzucker wird kein Bolus empfohlen.";
@@ -261,7 +261,7 @@
 "Bolus Issue" = "Bolus Problem";
 
 /* Alert title for an updated bolus recommendation */
-"Bolus Recommendation Updated" = "Bolusempfehlung aktualisiert";
+"Bolus Recommendation Updated" = "Aktualisierte Bolusempfehlung";
 
 /* Title for card displaying carb entry and bolus recommendation */
 "Bolus Summary" = "Bolus Zusammenfassung";
@@ -270,10 +270,10 @@
 "Bolus Too Small" = "Bolus zu gering";
 
 /* The format string for bolus progress. (1: delivered volume)(2: total volume) */
-"Bolused %1$@ of %2$@" = "%1$@ abgegeben von %2$@";
+"Bolused %1$@ of %2$@" = "%1$@ von %2$@ als Bolus verabreicht";
 
 /* The format string for bolus in progress showing total volume. (1: total volume) */
-"Bolusing %1$@" = "Abgabe %1$@";
+"Bolusing %1$@" = "Bolusabgabe %1$@";
 
 /* The title of the cancel action in an action sheet */
 "Cancel" = "Abbrechen";
@@ -293,10 +293,10 @@
 
 /* The title of the carb ratios schedule screen
    The title text for the carb ratio schedule */
-"Carb Ratios" = "Kohlenhydratfaktoren";
+"Carb Ratios" = "KH-Verhältnis";
 
 /* The title of the view controller to create a new carb entry */
-"carb-entry-title-add" = "KH-Eintrag hinzufügen";
+"carb-entry-title-add" = "Kohlenhydrate hinzufügen";
 
 /* The title of the view controller to edit an existing carb entry */
 "carb-entry-title-edit" = "KH-Eintrag bearbeiten";
@@ -311,10 +311,10 @@
 "Carbs Absorbed (g) ÷ Carb Ratio (g/U) × Insulin Sensitivity (%1$@/U)" = "Resorbierte Kohlenhydrate (g) ÷ Kohlenhydratfaktor (g/IE) × Insulinempfindlichkeit (%1$@/IE)";
 
 /* The notification alert describing a low pump battery */
-"Change the pump battery immediately" = "Wechsel sofort die Pumpenbatterie.";
+"Change the pump battery immediately" = "Wechseln Sie sofort die Pumpenbatterie";
 
 /* The notification alert describing an empty pump reservoir */
-"Change the pump reservoir now" = "Wechsel jetzt das Pumpenreservoir.";
+"Change the pump reservoir now" = "Wechseln Sie jetzt das Pumpenreservoir";
 
 /* Details for configuration error when one or more loop settings are missing */
 "Check settings" = "Überprüfe die Einstellungen.";
@@ -329,10 +329,10 @@
 "Check your device time and/or remove any invalid data from Apple Health." = "Überprüfen Sie die Uhrzeit Ihres Geräts und/oder entfernen Sie alle ungültigen Daten aus Apple Health.";
 
 /* Carb entry section footer text explaining absorption time */
-"Choose a longer absorption time for larger meals, or those containing fats and proteins. This is only guidance to the algorithm and need not be exact." = "Wähle eine längere Resorptionsdauer für größere Mahlzeiten oder solche, die Fette und Proteine enthalten. Dies ist nur eine Anleitung für den Algorithmus und muss nicht genau sein.";
+"Choose a longer absorption time for larger meals, or those containing fats and proteins. This is only guidance to the algorithm and need not be exact." = "Wähle eine längere Resorptionsdauer für größere Mahlzeiten, oder welche die viel Fett und Proteine beinhalten. Dies ist eine Unterstützung für den Algorithmus und muss nicht genau sein.";
 
 /* The button label of the action used to dismiss the unsafe notification permission alert */
-"Close" = "Schließen";
+"Close" = "Schliessen";
 
 /* The title text for the looping enabled switch cell */
 "Closed Loop" = "Closed Loop";
@@ -368,14 +368,14 @@
 "Continue" = "Weiter";
 
 /* The title of the continuous glucose monitor section in settings */
-"Continuous Glucose Monitor" = "Kontinuierliche Glukosemessung";
+"Continuous Glucose Monitor" = "Kontinuierliche Blutzuckermessung";
 
 /* The title of the glucose target range schedule screen
    The title text for the glucose target range schedule */
 "Correction Range" = "Korrekturbereich";
 
 /* Critical Alerts Status text */
-"Critical Alerts" = "Dringende Warnungen";
+"Critical Alerts" = "Kritische Warnungen";
 
 /* Critical event log ready text */
 "Critical Event Log Ready" = "Kritisches Ereignisprotokoll bereit";
@@ -393,10 +393,10 @@
 "Current glucose of %1$@ is below correction range." = "Der aktuelle Blutzucker von %1$@ liegt unter dem Korrekturbereich.";
 
 /* The title of the cell indicating a generic temporary override is enabled */
-"Custom Override" = "Eigene Voreinstellung";
+"Custom Override" = "Benutzerdefinierter Override";
 
 /* The title of the cell indicating a generic custom preset is enabled */
-"Custom Preset" = "Zielbereichänderung";
+"Custom Preset" = "Voreinstellung";
 
 /* Date picker label */
 "Date" = "Datum";
@@ -429,10 +429,10 @@
 "Delete Testing Pump Data" = "Pumpen-Test-Daten löschen";
 
 /* Button text to deliver a bolus */
-"Deliver" = "Bolus";
+"Deliver" = "Abgeben";
 
 /* Title text for delivery limits */
-"Delivery Limits" = "Verabreichungslimits";
+"Delivery Limits" = "Abgabelimits";
 
 /* Descriptive text for Therapy Settings */
 "Diabetes Treatment" = "Diabetes-Behandlung";
@@ -456,6 +456,9 @@
 /* The title of the Dosing Strategy section in settings */
 "Dosing Strategy" = "Dosierungsstrategie";
 
+/* Remote command error description: duration exceed max (1: max duration in hours). */
+"Duration exceeds: %1$.1f hours" = "Dauer überschritten: %1$.1f Stunden";
+
 /* Message to the user to enable bluetooth */
 "Enable\nBluetooth" = "Bluetooth einschalten";
 
@@ -487,7 +490,7 @@
 "Error Resuming" = "Fehler beim Fortfahren";
 
 /* Segmented button title for insulin delivery log event history */
-"Event History" = "Ereignishistorie";
+"Event History" = "Ereignisverlauf";
 
 /* The subtitle format describing eventual glucose. (1: localized glucose value description) */
 "Eventually %@" = "Voraussichtlich %@";
@@ -508,7 +511,7 @@
 "Export-%1$@" = "Export-%1$@";
 
 /* The alert title for a resume error */
-"Failed to Resume Insulin Delivery" = "Insulinabgabe konnte nicht fortgesetzt werden";
+"Failed to Resume Insulin Delivery" = "Wiederaufnahme der Insulinabgabe fehlgeschlagen";
 
 /* Title of insulin model preset */
 "Fiasp" = "Fiasp";
@@ -517,7 +520,7 @@
 "Fingerstick Glucose" = "blutiger Blutzucker";
 
 /* Secondary text for alerts disabled warning, which appears on the main status screen. */
-"Fix now by turning Notifications, Critical Alerts and Time Sensitive Notifications ON." = "Beheben Sie dies jetzt, indem Sie Benachrichtigungen, kritische Alarme und zeitkritische Benachrichtigungen einschalten.";
+"Fix now by turning Notifications, Critical Alerts and Time Sensitive Notifications ON." = "Behebe dies jetzt, indem Du Benachrichtigungen, kritische Alarme und zeitkritische Benachrichtigungen einschaltest.";
 
 /* The format string used to describe a finite workout targets duration */
 "For %1$@" = "Für %1$@";
@@ -538,10 +541,10 @@
 "Glucose" = "Blutzucker";
 
 /* The error message when glucose data is too old to be used. (1: glucose data age in minutes) */
-"Glucose data is %1$@ old" = "Blutzucker ist %1$@ alt";
+"Glucose data is %1$@ old" = "Blutzuckerdaten sind %1$@ alt";
 
 /* Description of error when glucose data is missing */
-"Glucose data not available" = "Blutzucker ist nicht verfügbar";
+"Glucose data not available" = "Blutzuckerdaten nicht verfügbar";
 
 /* Alert title when glucose data returns while on bolus screen */
 "Glucose Data Now Available" = "Blutzucker jetzt verfügbar";
@@ -578,7 +581,7 @@
 "Insulin adjustments have been disabled!" = "Die Insulinanpassung wurde deaktiviert!";
 
 /* The title of the insulin delivery graph */
-"Insulin Delivery" = "Insulinabgabe";
+"Insulin Delivery" = "Insulin Delivery";
 
 /* Details for missing data error when insulin effects are missing */
 "Insulin effects" = "Insulinwirkungen";
@@ -598,14 +601,17 @@
 "Insulin Sensitivity Schedule" = "Insulinsensitivitätsplan";
 
 /* The title of the cell indicating the pump is suspended */
-"Insulin Suspended" = "Insulin unterbrochen";
+"Insulin Suspended" = "Insulinabgabe unterbrochen";
 
 /* Insulin type label */
-"Insulin Type" = "Insulinart";
+"Insulin Type" = "Insulintyp";
 
 /* Description of an interrupted bolus dose entry (1: title for dose type, 2: value (? if no value) in bold, 3: programmed value (? if no value), 4: unit) */
 "Interrupted %1$@: <b>%2$@</b> of %3$@ %4$@" = "%1$@ unterbrochen: <b>%2$@</b> von %3$@ %4$@";
 
+/* Remote command error description: invalid bolus amount. */
+"Invalid Bolus Amount" = "Ungültige Bolusmenge";
+
 /* Remote command error description: invalid carb amount. */
 "Invalid carb amount" = "Ungültige Kohlenhydratmenge";
 
@@ -621,11 +627,14 @@
 /* The title text for the issue report cell */
 "Issue Report" = "Problembericht";
 
+/* The notification description for a meal that was possibly not logged in Loop. */
+"It looks like you may not have logged a meal you ate. Tap to log it now." = "Es sieht so aus als ob du vergessen hast eine Mahlzeit einzugeben. Tippe um sie nun einzutragen.";
+
 /* Title of the warning shown when a large meal was entered */
 "Large Meal Entered" = "Große Mahlzeit eingegeben";
 
 /* Glucose HUD accessibility hint */
-"Launches CGM app" = "Startet die CGM-App";
+"Launches CGM app" = "Öffnet die CGM-App";
 
 /* OK button title for alert shown when delivery status is uncertain */
 "Learn More" = "Mehr erfahren";
@@ -634,7 +643,7 @@
 "Less than a minute remaining" = "Weniger als eine Minute verbleiben";
 
 /* The loading message for the diagnostic report screen */
-"Loading..." = "laden ...";
+"Loading..." = "Wird geladen...";
 
 /* Button text to log a dose
    Title for dose logging screen */
@@ -647,7 +656,7 @@
 "Loop Crashed" = "Loop ist abgestürzt";
 
 /* The notification title for a loop failure */
-"Loop Failure" = "Loopfehler";
+"Loop Failure" = "Loop fehlgeschlagen";
 
 /* Bluetooth unavailable alert body. */
 "Loop has detected an issue with your Bluetooth settings, and will not work successfully until Bluetooth is enabled. You will not receive glucose readings, or be able to bolus." = "Loop hat ein Problem mit Ihren Bluetooth-Einstellungen festgestellt und funktioniert nicht, bis Bluetooth aktiviert ist. Sie erhalten keine Blutzucker-Werte und es kann kein Bolus abgeben werden.";
@@ -690,7 +699,7 @@
 "Meal Bolus" = "Mahzeiten Bolus";
 
 /* The short unit display string for milligrams of glucose per decilter */
-"mg/dL" = "mg/dl";
+"mg/dL" = "mg/dL";
 
 /* The error message for missing data. (1: missing data details) */
 "Missing data: %1$@" = "Fehlende Daten: %1$@";
@@ -699,19 +708,22 @@
 "Missing maximum allowed bolus in settings" = "Maximal erlaubter Bolus in den Einstellungen fehlt";
 
 /* The short unit display string for millimoles of glucose per liter */
-"mmol/L" = "mmol/l";
+"mmol/L" = "mmol/L";
 
 /* Details for missing data error when momentum effects are missing */
 "Momentum effects" = "Momentum-Effekte";
 
 /* Text for more info action on notification of upcoming profile expiration */
-"More Info" = "Mehr Infos";
+"More Info" = "Weitere Info";
 
 /* Label for toggle to mute all alerts */
 "Mute All Alerts" = "Alle Alarme stummschalten";
 
 /* Sensor state description for the non-valid state */
-"Needs Attention" = "Benötigt Aufmerksamkeit";
+"Needs Attention" = "Erfordert Aufmerksamkeit";
+
+/* Remote command error description: negative duration error. */
+"Negative duration not allowed" = "Eine negative Dauer ist nicht erlaubt";
 
 /* The title of the Nightscout service */
 "Nightscout" = "Nightscout";
@@ -783,6 +795,9 @@
 /* The title text for the override presets */
 "Override Presets" = "Voreinstellungen";
 
+/* The notification title for a meal that was possibly not logged in Loop. */
+"Possible Missed Meal" = "Wahrscheinlich eine Mahlzeit vergessen";
+
 /* The label of the pre-meal mode toggle button */
 "Pre-Meal Targets" = "Ziel vor dem Essen";
 
@@ -799,7 +814,7 @@
 "Predicted glucose of %1$@ is below your suspend threshold setting." = "Der vorhergesagte Blutzucker von %1$@ liegt unter dem Grenzwert für die Hypo-Abschaltung.";
 
 /* Format string describing retrospective glucose prediction comparison. (1: Predicted glucose)(2: Actual glucose)(3: difference) */
-"Predicted: %1$@\nActual: %2$@ (%3$@)" = "Vorausgesagt: %1$@\nAktuell: %2$@ (%3$@)";
+"Predicted: %1$@\nActual: %2$@ (%3$@)" = "Vorhergesagt: %1$@\nAktuell: %2$@ (%3$@)";
 
 /* Preparing critical event log text */
 "Preparing Critical Event Logs" = "Vorbereiten der kritischer Ereigniss-Protokollen";
@@ -808,7 +823,7 @@
 "Profile Expiration" = "Ablauf des Profils";
 
 /* Time that profile expires */
-"Profile expires " = "Profil läuft ab";
+"Profile expires " = "Profil läuft ab ";
 
 /* The title for notification of upcoming profile expiration */
 "Profile Expires Soon" = "Profil läuft in Kürze ab";
@@ -823,7 +838,7 @@
 "Pump data is %1$@ old" = "Pumpendaten sind %1$@ alt";
 
 /* The title of the screen displaying a pump event */
-"Pump Event" = "Pumpenereignis";
+"Pump Event" = "Pumpen-Ereignis";
 
 /* Details for configuration error when pump manager is missing */
 "Pump Manager" = "Pumpenmanager";
@@ -909,7 +924,7 @@
 "Setup Incomplete" = "Einrichtung unvollständig";
 
 /* Loop Completion HUD accessibility hint */
-"Shows last loop error" = "Zeigt den letzten Loopfehler an";
+"Shows last loop error" = "Zeigt den letzten Loop-Fehler an";
 
 /* Title of simple bolus view when not displaying meal entry */
 "Simple Bolus Calculator" = "Einfacher Bolusrechner";
@@ -921,11 +936,14 @@
 "since %@" = "seit %@";
 
 /* The title of the nightscout site URL credential */
-"Site URL" = "Seiten URL";
+"Site URL" = "Website URL";
 
 /* Software update button link text */
 "Software Update" = "Software-Aktualisierung";
 
+/* Remote command error description: invalid start time is out of range. */
+"Start time is out of range: %@" = "Startzeit liegt außerhalb des Bereichs: %@";
+
 /* The format for the description of a temporary override start date */
 "starting at %@" = "Beginnt um %@";
 
@@ -936,10 +954,10 @@
    Support screen title
    The title of the support item in settings
    The title of the support section in settings */
-"Support" = "Support";
+"Support" = "Unterstützung";
 
 /* The title text in settings */
-"Suspend Threshold" = "Wert für die Hypo-Abschaltung";
+"Suspend Threshold" = "Grenzwert für Hypo-Abschaltung";
 
 /* Descriptive text for button to add CGM device */
 "Tap here to set up a CGM" = "Tippe hier, um ein CGM einzurichten";
@@ -972,7 +990,7 @@
 "The bolus recommendation has updated. Please reconfirm the bolus amount." = "Die Bolusempfehlung wurde aktualisiert. Bitte bestätigen Sie die Bolusmenge erneut.";
 
 /* Subtitle description of Walsh insulin model setting */
-"The legacy model used by Loop, allowing customization of action duration." = "Das herkömmliche von Loop verwendete Modell, welches die Anpassung der Wirkungsdauer ermöglicht.";
+"The legacy model used by Loop, allowing customization of action duration." = "Das von Loop verwendete Legacy-Modell, das die Anpassung der Aktionsdauer ermöglicht.";
 
 /* Alert body displayed absorption time greater than max (1: maximum absorption time) */
 "The maximum absorption time is %@" = "Die maximale Resorptionszeit beträgt %@";
@@ -996,7 +1014,7 @@
 "The remote command expired %.0f minutes ago." = "Der Fernbefehl ist vor %.0f Minuten abgelaufen.";
 
 /* Title text for button to Therapy Settings */
-"Therapy Settings" = "Behandlungseinstellungen";
+"Therapy Settings" = "Therapieeinstellungen";
 
 /* Title of the carb entry date picker cell */
 "Time" = "Zeit";
@@ -1035,6 +1053,9 @@
 /* The error message displayed for unknown errors. (1: unknown error) */
 "Unknown Error: %1$@" = "Unbekannter Fehler: %1$@";
 
+/* Remote command error description: unknown preset (1: preset name). */
+"Unknown preset: %1$@" = "Unbekannte Voreinstellung: %1$@";
+
 /* Unknown amount of time in settings' profile expiration section */
 "Unknown time" = "Unbekannte Zeit";
 
@@ -1066,7 +1087,10 @@
 "When current or forecasted glucose is below the glucose safety limit, Loop will not recommend a bolus, and will always recommend a temporary basal rate of 0 units per hour." = "Wenn der aktuelle oder prognostizierte Glukosewert unter dem Glukosesicherheitsgrenzwert liegt, empfiehlt Loop keinen Bolus und immer eine temporäre Basalrate von 0 Einheiten pro Stunde.";
 
 /* Explanation of suspend threshold */
-"When current or forecasted glucose is below the suspend threshold, Loop will not recommend a bolus, and will always recommend a temporary basal rate of 0 units per hour." = "Wenn die aktuelle oder prognostizierte Glukose unter dem Wert für die Hypo-Abschaltung liegt, empfiehlt Loop immer eine temporäre Basalrate von 0 Einheiten pro Stunde und - wenn kein gesonderter Bolusgrenzwert definiert ist - auch keinen Bolus.";
+"When current or forecasted glucose is below the suspend threshold, Loop will not recommend a bolus, and will always recommend a temporary basal rate of 0 units per hour." = "Wenn der aktuelle oder prognostizierte Blutzucker unter dem Schwellenwert für die Unterbrechung liegt, empfiehlt Loop keinen Bolus, sondern immer eine temporäre Basalrate von 0 Einheiten pro Stunde.";
+
+/* Description of missed meal notifications. */
+"When enabled, Loop can notify you when it detects a meal that wasn't logged." = "Wenn aktiviert, kann Loop Dich benachrichtigen, wenn es eine Mahlzeit erkennt, die nicht protokolliert wurde.";
 
 /* No comment provided by engineer. */
 "When out of Closed Loop mode, the app uses a simplified bolus calculator like a typical pump." = "Ist der Loop-Modus ausgeschaltet, dann verwendet die App einen vereinfachten Bolusrechner wie eine typische Pumpe.";
diff --git a/Loop/de.lproj/Main.strings b/Loop/de.lproj/Main.strings
index cc74b81a2..3d0ec8f99 100644
--- a/Loop/de.lproj/Main.strings
+++ b/Loop/de.lproj/Main.strings
@@ -5,7 +5,7 @@
 "3kU-n2-fha.title" = "Status";
 
 /* Class = "UILabel"; text = "3.5 U/hour @ 12:12 PM"; ObjectID = "5gz-kZ-iF1"; */
-"5gz-kZ-iF1.text" = "3,5 IE/h @ 12:12";
+"5gz-kZ-iF1.text" = "3.5 IE/h @ 12:12";
 
 /* Class = "UILabel"; text = "Predicted"; ObjectID = "87H-N1-0vJ"; */
 "87H-N1-0vJ.text" = "Vorhergesagt";
@@ -14,7 +14,7 @@
 "aCb-Qs-bpu.text" = "Detail";
 
 /* Class = "UILabel"; text = "Food Type"; ObjectID = "ap1-M6-naG"; */
-"ap1-M6-naG.text" = "Essensart";
+"ap1-M6-naG.text" = "Essenstyp";
 
 /* Class = "UILabel"; text = "Label"; ObjectID = "bIL-Ub-qYp"; */
 "bIL-Ub-qYp.text" = "Beschriftung";
@@ -47,7 +47,7 @@
 "hZZ-2S-lrd.title" = "Kohlenhydrat-Effekte";
 
 /* Class = "UILabel"; text = "Observed changes in glucose, subtracting changes modeled from insulin delivery, can be used to estimate carbohydrate absorption."; ObjectID = "IxU-As-glo"; */
-"IxU-As-glo.text" = "Die beobachtete Blutzuckerveränderung abzüglich der modellbasierten Veränderung kann verwendet werden, um die Kohlenhydratabsorption abzuschätzen.";
+"IxU-As-glo.text" = "Die beobachtete Blutzuckerveränderung abzüglich der modellbasierten Veränderung kann verwendet werden, um die Kohlenhydratresorption abzuschätzen.";
 
 /* Class = "UILabel"; text = "Detail"; ObjectID = "J7x-W5-gwo"; */
 "J7x-W5-gwo.text" = "Detail";
@@ -77,7 +77,7 @@
 "Rse-x8-amW.text" = "voraussichtlich 92 mg/dL";
 
 /* Class = "UILabel"; text = "g Active Carbs"; ObjectID = "SQx-au-ZcM"; */
-"SQx-au-ZcM.text" = "g COB";
+"SQx-au-ZcM.text" = "g aktive Kohlenhydrate";
 
 /* Class = "UILabel"; text = "Glucose"; ObjectID = "tuw-av-A3x"; */
 "tuw-av-A3x.text" = "Blutzucker";
@@ -95,7 +95,7 @@
 "Wx8-Tf-FnG.text" = "KH Menge gegessen";
 
 /* Class = "UILabel"; text = "Recommended Basal"; ObjectID = "xhx-PI-bBI"; */
-"xhx-PI-bBI.text" = "Empfohlener Basalwert";
+"xhx-PI-bBI.text" = "Empfohlene Basalrate";
 
 /* Class = "UIButton"; normalTitle = "🍕"; ObjectID = "xl9-Wc-Pdu"; */
 "xl9-Wc-Pdu.normalTitle" = "🍕";
diff --git a/Loop/es.lproj/InfoPlist.strings b/Loop/es.lproj/InfoPlist.strings
index b240bdb2f..ae97a2339 100644
--- a/Loop/es.lproj/InfoPlist.strings
+++ b/Loop/es.lproj/InfoPlist.strings
@@ -5,10 +5,10 @@
 "CFBundleName" = "$(PRODUCT_NAME)";
 
 /* Privacy - Bluetooth Always Usage Description */
-"NSBluetoothAlwaysUsageDescription" = "Bluetooth se utiliza para las comunicaciones con la microinfusora y los dispositivos de monitoreo continuo de glucosa.";
+"NSBluetoothAlwaysUsageDescription" = "El bluetooth se utiliza para las comunicaciones con la bomba de insulina y los dispositivos de monitoreo continuo de glucosa.";
 
 /* Privacy - Bluetooth Peripheral Usage Description */
-"NSBluetoothPeripheralUsageDescription" = "Bluetooth se utiliza para las comunicaciones con la microinfusora y los dispositivos de monitoreo continuo de glucosa.";
+"NSBluetoothPeripheralUsageDescription" = "El bluetooth se utiliza para las comunicaciones con la bomba de insulina y los dispositivos de monitoreo continuo de glucosa.";
 
 /* Privacy - Camera Usage Description */
 "NSCameraUsageDescription" = "La cámara se utiliza para escanear los códigos de barras de los dispositivos.";
@@ -20,7 +20,7 @@
 "NSHealthShareUsageDescription" = "Datos de alimentos de la base de datos de Salud se utiliza para determinar los efectos en el nivel de glucosa. Datos de glucosa de la bsase de datos de Salud se utilizan para graficar y determinar cálculos de momento.";
 
 /* Privacy - Health Update Usage Description */
-"NSHealthUpdateUsageDescription" = "Datos de alimentos ingresados en la aplicación y en el reloj son almacenados en la base de datos de Salud. Los datos de glucosa extraídos del monitor continuo de glucosa se almacenan de manera segura en Kit de Salud.";
+"NSHealthUpdateUsageDescription" = "Datos de alimentos ingresados en la aplicación y en el reloj son almacenados en la base de datos de Salud. Los datos de glucosa extraídos del monitor continuo de glucosa se almacenan de manera segura en HealthKit.";
 
 /* Privacy - Siri Usage Description */
 "NSSiriUsageDescription" = "Loop utiliza Siri para permitirte activar ajustes preestablecidos con tu voz.";
diff --git a/Loop/es.lproj/Localizable.strings b/Loop/es.lproj/Localizable.strings
index 043659f14..567cfb464 100644
--- a/Loop/es.lproj/Localizable.strings
+++ b/Loop/es.lproj/Localizable.strings
@@ -93,13 +93,13 @@
 
 /* Description of a basal temp basal dose entry (1: title for dose type, 2: value (? if no value) in bold, 3: unit)
    Description of a bolus dose entry (1: title for dose type, 2: value (? if no value) in bold, 3: unit) */
-"%1$@: <b>%2$@</b> %3$@" = "%1$@ : <b> %2$@ </b> %3$@";
+"%1$@: <b>%2$@</b> %3$@" = "%1$@: <b>%2$@</b> %3$@";
 
 /* Description of the prediction input effect for glucose momentum */
-"15 min glucose regression coefficient (b₁), continued with decay over 30 min" = "Coeficiente de regresión de glucosa de 15 minutos (b₁), continuado con decadencia sobre 30 minutos.";
+"15 min glucose regression coefficient (b₁), continued with decay over 30 min" = "Coeficiente de regresión de glucosa de 15 minutos (b₁), continuado con decaimiento durante 30 minutos";
 
 /* Description of the prediction input effect for retrospective correction */
-"30 min comparison of glucose prediction vs actual, continued with decay over 60 min" = "Comparación de glucosa actual contra la predicha en 30 minutos, continuada con decaimiento sobre 60 minutos.";
+"30 min comparison of glucose prediction vs actual, continued with decay over 60 min" = "Comparación de glucosa actual contra la proyectada en 30 minutos, continuada con decaimiento durante 60 minutos.";
 
 /* Estimated remaining duration with a few seconds */
 "A few seconds remaining" = "Quedan unos segundos";
@@ -141,17 +141,17 @@
 "Active Carbs" = "Carbohidratos Activos";
 
 /* The title of the Insulin On-Board graph */
-"Active Insulin" = "Insulina Activa";
+"Active Insulin" = "Insulina activa";
 
 /* The string format describing active insulin. (1: localized insulin value description) */
 "Active Insulin: %@" = "Insulina Activa: %@";
 
 /* Title of the user activity for adding carbs */
-"Add Carb Entry" = "Agregar Carbohidratos";
+"Add Carb Entry" = "Agregar Entrada de Carb";
 
 /* Action sheet title selecting CGM
    Title text for button to set up a CGM */
-"Add CGM" = "Agregar CGM";
+"Add CGM" = "Agregar MCG";
 
 /* The label of the meal button */
 "Add Meal" = "Agregar Alimento";
@@ -199,31 +199,31 @@
 "API Key" = "API Key";
 
 /* The title of the nightscout API secret credential */
-"API Secret" = "Secreto API";
+"API Secret" = "Clave secreta API";
 
 /* Settings app profile section */
 "App Profile" = "Perfil de la aplicación";
 
 /* Action sheet confirmation message for pump history deletion */
-"Are you sure you want to delete all history entries?" = "¿Estás seguro de que quieres borrar todas las entradas históricas?";
+"Are you sure you want to delete all history entries?" = "¿Estás seguro de querer eliminar todos las entradas históricas?";
 
 /* Action sheet confirmation message for logged dose deletion */
 "Are you sure you want to delete all logged dose entries?" = "¿Estás seguro de que quieres borrar todas las entradas de dosis registradas?";
 
 /* Action sheet confirmation message for reservoir deletion */
-"Are you sure you want to delete all reservoir values?" = "¿Estás seguro de que quieres eliminar todos los datos del reservorio?";
+"Are you sure you want to delete all reservoir values?" = "¿Estás seguro de querer eliminar todos los datos del reservorio?";
 
 /* No comment provided by engineer. */
 "Are you sure you want to delete all your %@ Data?\n(This action is not reversible)" = "¿Estás seguro de que quieres eliminar todos tus datos de %@ ?\n (Esta acción no es reversible)";
 
 /* Confirmation message for deleting a CGM */
-"Are you sure you want to delete this CGM?" = "¿Está usted seguro de querer eliminar este CGM?";
+"Are you sure you want to delete this CGM?" = "¿Está seguro de que quiere eliminar este MCG?";
 
 /* Confirmation message for deleting a service */
-"Are you sure you want to delete this service?" = "Are you sure you want to delete this service?";
+"Are you sure you want to delete this service?" = "¿Está seguro de que desea eliminar este servicio?";
 
 /* Format fragment for a specific time */
-"at %@" = "a %@";
+"at %@" = "en %@";
 
 /* The message displayed during a device authentication prompt for bolus specification */
 "Authenticate to Bolus %@ Units" = "Autenticar para Bolo %@ Unidades";
@@ -236,7 +236,7 @@
 
 /* The title of the basal rate profile screen
    The title text for the basal rate schedule */
-"Basal Rates" = "Perfil Basal";
+"Basal Rates" = "Tasas basales";
 
 /* Caption for bolus screen notice when no bolus is recommended for the predicted glucose */
 "Based on your predicted glucose, no bolus is recommended." = "Basándose en su glucosa proyectada, no se recomienda ningún bolo.";
@@ -293,13 +293,13 @@
 
 /* The title of the carb ratios schedule screen
    The title text for the carb ratio schedule */
-"Carb Ratios" = "Relacíon de carbohidratos";
+"Carb Ratios" = "Ratios de carbohidratos";
 
 /* The title of the view controller to create a new carb entry */
-"carb-entry-title-add" = "Agregar Carbohidratos";
+"carb-entry-title-add" = "Agregar Entrada de Carb";
 
 /* The title of the view controller to edit an existing carb entry */
-"carb-entry-title-edit" = "Editar Entrada de Carbohidratos";
+"carb-entry-title-edit" = "Editar Entrada de Carb";
 
 /* Title for bolus screen warning when carbohydrate entry is too large */
 "Carbohydrate Entry Too Large" = "Entrada de carbohidratos demasiado grande";
@@ -311,10 +311,10 @@
 "Carbs Absorbed (g) ÷ Carb Ratio (g/U) × Insulin Sensitivity (%1$@/U)" = "Carbohidratos absorbidos (gr) ÷ Relación de Carbohidratos (gr/U) x Sensibilidad a Insulina (%1$@/U)";
 
 /* The notification alert describing a low pump battery */
-"Change the pump battery immediately" = "Cambie la batería de la microinfusora de inmediato";
+"Change the pump battery immediately" = "Cambie la batería de la bomba de inmediato";
 
 /* The notification alert describing an empty pump reservoir */
-"Change the pump reservoir now" = "Cambie el reservorio de la microinfusora ya";
+"Change the pump reservoir now" = "Cambie el depósito de la bomba ahora";
 
 /* Details for configuration error when one or more loop settings are missing */
 "Check settings" = "Verificar ajustes";
@@ -329,13 +329,13 @@
 "Check your device time and/or remove any invalid data from Apple Health." = "Compruebe la hora de su dispositivo y/o elimine cualquier dato no válido de Apple Health.";
 
 /* Carb entry section footer text explaining absorption time */
-"Choose a longer absorption time for larger meals, or those containing fats and proteins. This is only guidance to the algorithm and need not be exact." = "Escoja un tiempo más largo de absorción para comidas más grandes, o las cuales que contienen más grasa o proteína. Éste es consejo al algoritmo y no es necesario de que sea exacto. ";
+"Choose a longer absorption time for larger meals, or those containing fats and proteins. This is only guidance to the algorithm and need not be exact." = "Elija un tiempo de absorción más largo para comidas más grandes, o aquellas que contienen grasas y proteínas. Esta es solo una guía para el algoritmo y no necesita ser exacta.";
 
 /* The button label of the action used to dismiss the unsafe notification permission alert */
 "Close" = "Cerrar";
 
 /* The title text for the looping enabled switch cell */
-"Closed Loop" = "Asa cerrada";
+"Closed Loop" = "Circuito Cerrado";
 
 /* Alert title for closed loop off informational modal */
 "Closed Loop OFF" = "Asa cerrada APAGADA";
@@ -372,7 +372,7 @@
 
 /* The title of the glucose target range schedule screen
    The title text for the glucose target range schedule */
-"Correction Range" = "Rango de Correción";
+"Correction Range" = "Rango de Corrección";
 
 /* Critical Alerts Status text */
 "Critical Alerts" = "Alertas críticas";
@@ -390,13 +390,13 @@
 "Current Glucose" = "Glucosa actual";
 
 /* Message when offering bolus recommendation even though bg is below range. (1: glucose value) */
-"Current glucose of %1$@ is below correction range." = "Glucosa actual de %1$@ está por debajo del rango correctivo.";
+"Current glucose of %1$@ is below correction range." = "Glucosa actual de %1$@ está por debajo del rango de corrección.";
 
 /* The title of the cell indicating a generic temporary override is enabled */
 "Custom Override" = "Sobreescritura personalizada";
 
 /* The title of the cell indicating a generic custom preset is enabled */
-"Custom Preset" = "Preajuste personalizado";
+"Custom Preset" = "Ajuste Preestablecido personalizado";
 
 /* Date picker label */
 "Date" = "Fecha";
@@ -414,10 +414,10 @@
 "Delete All" = "Eliminar Todos";
 
 /* Button title to delete CGM */
-"Delete CGM" = "Eliminar CGM";
+"Delete CGM" = "Eliminar MCG";
 
 /* Button title to delete a service */
-"Delete Service" = "Delete Service";
+"Delete Service" = "Eliminar servicio";
 
 /* No comment provided by engineer. */
 "Delete Testing CGM Data" = "Eliminar prueba de datos CGM";
@@ -432,7 +432,7 @@
 "Deliver" = "Entregar";
 
 /* Title text for delivery limits */
-"Delivery Limits" = "Límites de Dosificación";
+"Delivery Limits" = "Límites de Administración de Insulina";
 
 /* Descriptive text for Therapy Settings */
 "Diabetes Treatment" = "Tratamiento de la diabetes";
@@ -484,7 +484,7 @@
 "Error Exporting Logs" = "Error al exportar registros";
 
 /* The alert title for a resume error */
-"Error Resuming" = "Error de reanudación";
+"Error Resuming" = "Error Reanudando";
 
 /* Segmented button title for insulin delivery log event history */
 "Event History" = "Historial de Eventos";
@@ -538,7 +538,7 @@
 "Glucose" = "Glucosa";
 
 /* The error message when glucose data is too old to be used. (1: glucose data age in minutes) */
-"Glucose data is %1$@ old" = "Los datos de glucosa son %1$@ antiguos";
+"Glucose data is %1$@ old" = "Los datos de glucosa son de hace %1$@ ";
 
 /* Description of error when glucose data is missing */
 "Glucose data not available" = "Los datos de glucosa no están disponibles";
@@ -578,7 +578,7 @@
 "Insulin adjustments have been disabled!" = "¡Se han deshabilitado los ajustes de insulina!";
 
 /* The title of the insulin delivery graph */
-"Insulin Delivery" = "Administración de Insulina";
+"Insulin Delivery" = "Insulin Delivery";
 
 /* Details for missing data error when insulin effects are missing */
 "Insulin effects" = "Efectos de la insulina";
@@ -592,7 +592,7 @@
 
 /* The title of the insulin sensitivities schedule screen
    The title text for the insulin sensitivity schedule */
-"Insulin Sensitivities" = "Sensibilidades a Insulina";
+"Insulin Sensitivities" = "Sensibilidad a la insulina";
 
 /* Details for configuration error when insulin sensitivity schedule is missing */
 "Insulin Sensitivity Schedule" = "Horario de la sensibilidad a la insulina";
@@ -690,7 +690,7 @@
 "Meal Bolus" = "Bolo de Comida";
 
 /* The short unit display string for milligrams of glucose per decilter */
-"mg/dL" = "mg/dl";
+"mg/dL" = "mg/dL";
 
 /* The error message for missing data. (1: missing data details) */
 "Missing data: %1$@" = "Faltan Datos: %1$@";
@@ -699,13 +699,13 @@
 "Missing maximum allowed bolus in settings" = "Falta el bolo máximo permitido en la configuración";
 
 /* The short unit display string for millimoles of glucose per liter */
-"mmol/L" = "mmol/l";
+"mmol/L" = "mmol/L";
 
 /* Details for missing data error when momentum effects are missing */
 "Momentum effects" = "Efectos de Momento";
 
 /* Text for more info action on notification of upcoming profile expiration */
-"More Info" = "Más información";
+"More Info" = "Más Info";
 
 /* Label for toggle to mute all alerts */
 "Mute All Alerts" = "Silenciar todas las alertas";
@@ -781,13 +781,13 @@
 "On" = "Encendido";
 
 /* The title text for the override presets */
-"Override Presets" = "Sobreescritura de objetivos preestablecidos";
+"Override Presets" = "Sobreescrituras preestablecidas";
 
 /* The label of the pre-meal mode toggle button */
 "Pre-Meal Targets" = "Objetivos Pre-Comida";
 
 /* 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$@.";
+"Predicted glucose at %1$@ is %2$@." = "Glucosa proyectada a las %1$@ es %2$@.";
 
 /* Notice when predicted glucose for bolus recommendation is in range */
 "Predicted glucose is in range." = "La glucosa proyectada está en rango";
@@ -814,16 +814,16 @@
 "Profile Expires Soon" = "El perfil caduca pronto";
 
 /* The title of the pump section in settings */
-"Pump" = "Microinfusora";
+"Pump" = "Microinfusadora";
 
 /* The notification title for a low pump battery */
-"Pump Battery Low" = "Batería de Microinfusora Baja";
+"Pump Battery Low" = "Batería de la bomba baja";
 
 /* The error message when pump data is too old to be used. (1: pump data age in minutes) */
 "Pump data is %1$@ old" = "Los datos de la microinfusora son %1$@ viejos";
 
 /* The title of the screen displaying a pump event */
-"Pump Event" = "Evento de Bomba";
+"Pump Event" = "Evento de microinfusadora";
 
 /* Details for configuration error when pump manager is missing */
 "Pump Manager" = "Administratión de Microinfusora";
@@ -832,10 +832,10 @@
 "Pump Manager Error: %1$@" = "Error del administrador de bomba: %1$@";
 
 /* The notification title for an empty pump reservoir */
-"Pump Reservoir Empty" = "Reservorio de Microinfusora Vacío";
+"Pump Reservoir Empty" = "Reserva de bomba vacía";
 
 /* The notification title for a low pump reservoir */
-"Pump Reservoir Low" = "Reservorio de Microinfusora Bajo";
+"Pump Reservoir Low" = "Reserva de bomba baja";
 
 /* The title of the cell indicating the pump is suspended */
 "Pump Suspended" = "Microinfusora Suspendida";
@@ -853,7 +853,7 @@
 "Rapid-Acting – Children" = "Acción Rápida — Niños";
 
 /* The error message when a recommendation has expired. (1: age of recommendation in minutes) */
-"Recommendation expired: %1$@ old" = "Recomendación expiró: %1$@ vieja";
+"Recommendation expired: %1$@ old" = "Recomendación expiró hace: %1$@";
 
 /* The title of the cell displaying a recommended temp basal value */
 "Recommended Basal" = "Basal Recomendada";
@@ -927,7 +927,7 @@
 "Software Update" = "Actualización de software";
 
 /* The format for the description of a temporary override start date */
-"starting at %@" = "comenzando a la %@";
+"starting at %@" = "comenzando a las %@";
 
 /* The title of the cell indicating a bolus is being sent */
 "Starting Bolus" = "Comenzando Bolo";
@@ -936,7 +936,7 @@
    Support screen title
    The title of the support item in settings
    The title of the support section in settings */
-"Support" = "Soporte";
+"Support" = "Ayuda";
 
 /* The title text in settings */
 "Suspend Threshold" = "Nivel de Suspensión";
@@ -972,7 +972,7 @@
 "The bolus recommendation has updated. Please reconfirm the bolus amount." = "La recomendación de bolo ha sido updatada. Reconfirme el bolo.";
 
 /* Subtitle description of Walsh insulin model setting */
-"The legacy model used by Loop, allowing customization of action duration." = "El model utilizado por ediciones iniciales de Loop, permite ajustar duración de acción.";
+"The legacy model used by Loop, allowing customization of action duration." = "El modelo heredado utilizado por Loop, que permite personalizar la duración de la acción de la insulina.";
 
 /* Alert body displayed absorption time greater than max (1: maximum absorption time) */
 "The maximum absorption time is %@" = "El tiempo máximo de absorción es %@";
@@ -1039,7 +1039,7 @@
 "Unknown time" = "Tiempo desconocido";
 
 /* The format for the description of a temporary override end date */
-"until %@" = "hasta la %@";
+"until %@" = "hasta las %@";
 
 /* The title of a target alert action specifying pre-meal targets duration for 1 hour or until the user enters carbs (whichever comes first). */
 "Until I enter carbs" = "Hasta que registre carbohidratos";
@@ -1051,7 +1051,7 @@
 "Use Pre-Meal Preset" = "Usar Pre-Comida";
 
 /* The title of the alert controller used to select a duration for workout targets */
-"Use Workout Glucose Targets" = "Utilice Objetivos de Glucosa de Ejercicio";
+"Use Workout Glucose Targets" = "Usar Objetivos de Glucosa de Ejercicio";
 
 /* The title of the alert controller used to select a duration for workout targets */
 "Use Workout Preset" = "Usar Ejercicio";
diff --git a/Loop/es.lproj/Main.strings b/Loop/es.lproj/Main.strings
index 4392f8233..e1b907707 100644
--- a/Loop/es.lproj/Main.strings
+++ b/Loop/es.lproj/Main.strings
@@ -26,7 +26,7 @@
 "d3X-AN-tA5.text" = "gr Totales";
 
 /* Class = "UILabel"; text = "Future glucose is predicted by combining the effects of multiple inputs. Use this tool to toggle various inputs to see how they compare to the final prediction."; ObjectID = "D4C-I2-dhA"; */
-"D4C-I2-dhA.text" = "La glucosa futura se predice combinando los efectos de diversas entradada de datos.  Utiliza esta herramienta para cambiar datos de entrada y ver como varía la predicción final.";
+"D4C-I2-dhA.text" = "La glucosa futura se predice combinando los efectos de diversos datos de entrada.  Utiliza esta herramienta para cambiar datos de entrada y ver como varía la predicción final.";
 
 /* Class = "UILabel"; text = "Label"; ObjectID = "d6m-qV-wWi"; */
 "d6m-qV-wWi.text" = "Etiqueta";
@@ -77,7 +77,7 @@
 "Rse-x8-amW.text" = "eventualmente 92 mg/dL";
 
 /* Class = "UILabel"; text = "g Active Carbs"; ObjectID = "SQx-au-ZcM"; */
-"SQx-au-ZcM.text" = "gr CAB";
+"SQx-au-ZcM.text" = "gr Carbohidratos Activos";
 
 /* Class = "UILabel"; text = "Glucose"; ObjectID = "tuw-av-A3x"; */
 "tuw-av-A3x.text" = "Glucosa";
diff --git a/Loop/fi.lproj/Localizable.strings b/Loop/fi.lproj/Localizable.strings
index b1b191b4b..81a97d048 100644
--- a/Loop/fi.lproj/Localizable.strings
+++ b/Loop/fi.lproj/Localizable.strings
@@ -105,7 +105,7 @@
 "Active Carbs" = "Akt. hiilari";
 
 /* The title of the Insulin On-Board graph */
-"Active Insulin" = "Aktiivinen insuliini";
+"Active Insulin" = "Akt. insuliini";
 
 /* The string format describing active insulin. (1: localized insulin value description) */
 "Active Insulin: %@" = "Aktiivinen insuliini: %@";
@@ -262,7 +262,10 @@
 "Check your CGM data source" = "Tarkista CGM-tietolähde";
 
 /* Carb entry section footer text explaining absorption time */
-"Choose a longer absorption time for larger meals, or those containing fats and proteins. This is only guidance to the algorithm and need not be exact." = "Valitse pidempi imeytymisaika isoille tai paljon rasvaa ja proteiineja sisältäville aterioille. Tämä on suuntaa antava tieto, eikä sen tarvitse olla tarkka.";
+"Choose a longer absorption time for larger meals, or those containing fats and proteins. This is only guidance to the algorithm and need not be exact." = "Valitse pidempi imeytymisaika isoille tai paljon rasvaa ja proteiineja sisältäville aterioille. Tämä on suuntaa antava ohje, eikä sen tarvitse olla tarkka.";
+
+/* The button label of the action used to dismiss the unsafe notification permission alert */
+"Close" = "Sulje";
 
 /* The title text for the looping enabled switch cell */
 "Closed Loop" = "Suljettu säätö";
@@ -288,6 +291,9 @@
 /* The error message displayed for configuration errors. (1: configuration error details) */
 "Configuration Error: %1$@" = "Määritysvirhe: %1$@";
 
+/* Default alert dismissal */
+"Continue" = "Jatka";
+
 /* The title of the continuous glucose monitor section in settings */
 "Continuous Glucose Monitor" = "Glukoosinseuranta (CGM)";
 
@@ -460,7 +466,7 @@
 "Insulin Absorbed (U) × Insulin Sensitivity (%1$@/U)" = "Imeytynyt insuliini (U) × Insuliiniherkkyys (%1$@/U)";
 
 /* The title of the insulin delivery graph */
-"Insulin Delivery" = "Insuliinin annostelu";
+"Insulin Delivery" = "Insulin Delivery";
 
 /* Details for missing data error when insulin effects are missing */
 "Insulin effects" = "Insuliinivaikutus";
@@ -525,6 +531,9 @@
 /* Description string for temp basal only dosing strategy */
 "Loop will set temporary basal rates to increase and decrease insulin delivery." = "Loop käyttää tilapäisiä basaalitasoja lisätäkseen tai vähentääkseen insuliinin annostelua.";
 
+/* Details for configuration error when maximum bolus is missing */
+"Maximum Bolus" = "Suurin sallittu bolus";
+
 /* Title for bolus entry screen when also entering carbs */
 "Meal Bolus" = "Ateriabolus";
 
@@ -540,6 +549,9 @@
 /* Details for missing data error when momentum effects are missing */
 "Momentum effects" = "Liikevaikutukset (momentum)";
 
+/* Text for more info action on notification of upcoming profile expiration */
+"More Info" = "Lisätietoa";
+
 /* Sensor state description for the non-valid state */
 "Needs Attention" = "Tarvitsee huomiota";
 
@@ -569,6 +581,9 @@
 /* Title for bolus screen notice when pump data is missing or stale */
 "No Recent Pump Data" = "Ei viimeaikaisia pumpun tietoja";
 
+/* Notification Setting Status is Off */
+"Off" = "Pois päältä";
+
 /* Alert acknowledgment OK button
    Critical Alert permissions disabled alert button
    Default action for alert when alert acknowledgment fails
@@ -577,6 +592,9 @@
    The title of the notification action to acknowledge a device alert */
 "OK" = "OK";
 
+/* Notification Setting Status is On */
+"On" = "Päällä";
+
 /* The title text for the override presets */
 "Override Presets" = "Tilapäisasetukset";
 
@@ -608,7 +626,7 @@
 "Pump data is %1$@ old" = "Pumpputieto on %1$@ vanha";
 
 /* The title of the screen displaying a pump event */
-"Pump Event" = "Pumpun tapahtuma";
+"Pump Event" = "Pumpputapahtuma";
 
 /* Details for configuration error when pump manager is missing */
 "Pump Manager" = "Pumpun hallinta";
@@ -654,7 +672,7 @@
 "Retrospective Correction" = "Retrospektiivinen korjaus";
 
 /* The title of the notification action to retry a bolus command */
-"Retry" = "Uudelleen";
+"Retry" = "Yritä uudelleen";
 
 /* Button text to save carbs and/or manual glucose entry and deliver a bolus */
 "Save and Deliver" = "Tallenna ja annostele";
@@ -722,6 +740,9 @@
 /* Subtitle description of Walsh insulin model setting */
 "The legacy model used by Loop, allowing customization of action duration." = "Loopin vanha insuliinimalli, jossa voi muokata insuliinin vaikutusaikaa.";
 
+/* Alert body displayed absorption time greater than max (1: maximum absorption time) */
+"The maximum absorption time is %@" = "Pisin sallittu imeytymisaika on %@";
+
 /* Alert message for a maximum bolus validation error (1: max bolus value) */
 "The maximum bolus amount is %@ U." = "Suurin sallittu bolus on %@ U.";
 
diff --git a/Loop/fi.lproj/Main.strings b/Loop/fi.lproj/Main.strings
index 5a220d009..2b5bb08c6 100644
--- a/Loop/fi.lproj/Main.strings
+++ b/Loop/fi.lproj/Main.strings
@@ -11,7 +11,7 @@
 "87H-N1-0vJ.text" = "Ennustettu";
 
 /* Class = "UILabel"; text = "Detail"; ObjectID = "aCb-Qs-bpu"; */
-"aCb-Qs-bpu.text" = "Yksityiskohta";
+"aCb-Qs-bpu.text" = "Detail";
 
 /* Class = "UILabel"; text = "Food Type"; ObjectID = "ap1-M6-naG"; */
 "ap1-M6-naG.text" = "Ruokatyyppi";
@@ -40,6 +40,9 @@
 /* Class = "UIButton"; normalTitle = "🍭"; ObjectID = "Fal-Vf-lfh"; */
 "Fal-Vf-lfh.normalTitle" = "🍭";
 
+/* Class = "UILabel"; text = "3.5 U/hour @ 12:12 PM"; ObjectID = "fWV-jg-ICt"; */
+"fWV-jg-ICt.text" = "3.5 U/h @ 12:12";
+
 /* Class = "UITableViewController"; title = "Carbohydrate Effects"; ObjectID = "hZZ-2S-lrd"; */
 "hZZ-2S-lrd.title" = "Hiilihydraattivaikutus";
 
@@ -47,7 +50,7 @@
 "IxU-As-glo.text" = "Havaittua glukoosin muutosta, josta on vähennetty insuliinin mallinnettu vaikutus, voidaan käyttää hiilihydraattien imeytymisen arviointiin.";
 
 /* Class = "UILabel"; text = "Detail"; ObjectID = "J7x-W5-gwo"; */
-"J7x-W5-gwo.text" = "Yksityiskohta";
+"J7x-W5-gwo.text" = "Detail";
 
 /* Class = "UILabel"; text = "Recommended Basal"; ObjectID = "k3F-Na-7mn"; */
 "k3F-Na-7mn.text" = "Suositeltu basaali";
@@ -91,6 +94,9 @@
 /* Class = "UILabel"; text = "Amount Consumed"; ObjectID = "Wx8-Tf-FnG"; */
 "Wx8-Tf-FnG.text" = "Määrä";
 
+/* Class = "UILabel"; text = "Recommended Basal"; ObjectID = "xhx-PI-bBI"; */
+"xhx-PI-bBI.text" = "Suositeltu basaali";
+
 /* Class = "UIButton"; normalTitle = "🍕"; ObjectID = "xl9-Wc-Pdu"; */
 "xl9-Wc-Pdu.normalTitle" = "🍕";
 
@@ -101,7 +107,7 @@
 "yn7-2M-jZz.text" = "0";
 
 /* Class = "UILabel"; text = "Title"; ObjectID = "zbc-87-wxZ"; */
-"zbc-87-wxZ.text" = "Otsikko";
+"zbc-87-wxZ.text" = "Title";
 
 /* Class = "UILabel"; text = "0"; ObjectID = "zvZ-uf-zMX"; */
 "zvZ-uf-zMX.text" = "0";
diff --git a/Loop/fr.lproj/InfoPlist.strings b/Loop/fr.lproj/InfoPlist.strings
index 81f9e547c..159de0fb7 100644
--- a/Loop/fr.lproj/InfoPlist.strings
+++ b/Loop/fr.lproj/InfoPlist.strings
@@ -20,7 +20,7 @@
 "NSHealthShareUsageDescription" = "Les données sur les repas provenant de la base de données Health sont utilisées pour déterminer les effets du glucose. Les données sur la glycémie de la base de données Health sont utilisées pour le calcul graphique et le calcul du momentum. Les données de sommeil provenant de la base de données Health sont utilisées pour améliorer les cadrans Apple Watch.";
 
 /* Privacy - Health Update Usage Description */
-"NSHealthUpdateUsageDescription" = "Les données sur les repas glucidiques saisies dans l'application et sur la montre sont stockées dans la base de données Health. Les données de glucose extraites du CGM sont stockées de manière sécurisée dans HealthKit.";
+"NSHealthUpdateUsageDescription" = "Les données de glucides des repas entrées dans l'application ou la montre sont enregistrées dans la base de donnée Santé. Les données de taux de glucose provenant du CGM sont enregistrées de manière sécurisée dans HealthKit.";
 
 /* Privacy - Siri Usage Description */
 "NSSiriUsageDescription" = "Loop utilise Siri pour vous permettre d’activer des préréglages avec votre voix.";
diff --git a/Loop/fr.lproj/Localizable.strings b/Loop/fr.lproj/Localizable.strings
index 0ec2f0502..6daeadb98 100644
--- a/Loop/fr.lproj/Localizable.strings
+++ b/Loop/fr.lproj/Localizable.strings
@@ -1,5 +1,5 @@
 /* The string format appended to active insulin that describes pending insulin. (1: pending insulin) */
-" (pending: %@)" = " (en attente : %@)";
+" (pending: %@)" = " (en attente : %@)";
 
 /* Status row title for premeal override enabled (leading space is to separate from symbol) */
 " Pre-meal Preset" = " Préréglage Pré-repas";
@@ -26,13 +26,13 @@
 "%@ %@" = "%1$@ %2$@";
 
 /* Formats absorbed carb value */
-"%@ absorbed" = "%@ absorbé";
+"%@ absorbed" = "%@ absorbé(s)";
 
 /* Estimated remaining duration with more than a minute */
 "%@ remaining" = "%@ restant";
 
 /* The subtitle format describing total insulin. (1: localized insulin total) */
-"%@ U Total" = "%@ U Totaux";
+"%@ U Total" = "%@ U total";
 
 /* Appends a full-stop to a statement */
 "%@." = "%@.";
@@ -96,7 +96,7 @@
 "15 min glucose regression coefficient (b₁), continued with decay over 30 min" = "Coefficient de régression du glucose de 15 minutes (b1), décroissance poursuivie au-delà de 30 min.";
 
 /* Description of the prediction input effect for retrospective correction */
-"30 min comparison of glucose prediction vs actual, continued with decay over 60 min" = "Comparaison sur 30 min de la glycémie Prédiction vs Actuelle, suivie d'une décroissance (decay) sur 60 min.";
+"30 min comparison of glucose prediction vs actual, continued with decay over 60 min" = "Comparaison sur 30 min de la glycémie prévue par rapport à celle réelle, suivie d'une décroissance (decay) sur 60 min.";
 
 /* Estimated remaining duration with a few seconds */
 "A few seconds remaining" = "Quelques secondes restantes";
@@ -108,10 +108,10 @@
 "A manual glucose entry must be between %1$@ and %2$@." = "Une saisie manuelle de la glycémie doit être comprise entre %1$@ et %2$@.";
 
 /* Subtitle of Fiasp preset */
-"A model based on the published absorption of Fiasp insulin." = "Un modèle basé sur l’absorption publiée de l’insuline FIASP.";
+"A model based on the published absorption of Fiasp insulin." = "Un modèle basé sur l’absorption de l’insuline FIASP (telle que publiée).";
 
 /* Subtitle of Rapid-Acting – Adult preset */
-"A model based on the published absorption of Humalog, Novolog, and Apidra insulin in adults." = "Un modèle basé sur l’absorption publiée de l’Humalog, Novolog (Novorapid), et Apidra chez l’adulte.";
+"A model based on the published absorption of Humalog, Novolog, and Apidra insulin in adults." = "Un modèle basé sur les absorptions de l’Humalog, Novolog (Novorapid), et Apidra chez l’adulte (telles que publiées).";
 
 /* Software update available section footer (1: app name) */
 "A new version of %@ is available and is recommended to continue using the app." = "Une nouvelle version de %@ est disponible et est recommandée pour continuer à utiliser l'application.";
@@ -123,7 +123,7 @@
 "A pump must be configured before a bolus can be delivered." = "Une pompe doit être configurée avant qu'un bolus puisse être administré.";
 
 /* Title of the carb entry absorption time cell */
-"Absorption Time" = "Durée d'absorption";
+"Absorption Time" = "Durée d’absorption";
 
 /* Action to copy the recommended Bolus value to the actual Bolus Field */
 "AcceptRecommendedBolus" = "AcceptRecommendedBolus";
@@ -214,13 +214,13 @@
 "Are you sure you want to delete this CGM?" = "Voulez-vous vraiment supprimer ce CGM?";
 
 /* Confirmation message for deleting a service */
-"Are you sure you want to delete this service?" = "Voulez-vous vraiment supprimer ce service ?";
+"Are you sure you want to delete this service?" = "Voulez-vous vraiment supprimer ce service?";
 
 /* Format fragment for a specific time */
-"at %@" = "at %@";
+"at %@" = "à %@";
 
 /* The message displayed during a device authentication prompt for bolus specification */
-"Authenticate to Bolus %@ Units" = "Authentifier pour effectuer un Bolus %@ Unités";
+"Authenticate to Bolus %@ Units" = "Authentifiez-vous pour administrer %@ Unités";
 
 /* The message displayed during a device authentication prompt to log an insulin dose */
 "Authenticate to log %@ Units" = "Authentifier pour enregistrer %@ unités";
@@ -287,13 +287,13 @@
 
 /* The title of the carb ratios schedule screen
    The title text for the carb ratio schedule */
-"Carb Ratios" = "Ratios Glucides";
+"Carb Ratios" = "Ratios Insuline-Glucides";
 
 /* The title of the view controller to create a new carb entry */
 "carb-entry-title-add" = "Ajouter des glucides";
 
 /* The title of the view controller to edit an existing carb entry */
-"carb-entry-title-edit" = "Editer les glucides";
+"carb-entry-title-edit" = "Modifier l’entrée des glucides";
 
 /* Title for bolus screen warning when carbohydrate entry is too large */
 "Carbohydrate Entry Too Large" = "Les glucides saisis sont trop important";
@@ -323,7 +323,7 @@
 "Check your device time and/or remove any invalid data from Apple Health." = "Vérifiez l'heure de votre appareil et/ou supprimez toute donnée invalide d'Apple Health.";
 
 /* Carb entry section footer text explaining absorption time */
-"Choose a longer absorption time for larger meals, or those containing fats and proteins. This is only guidance to the algorithm and need not be exact." = "Choisissez un temps d'absorption plus long pour les repas plus gros ou ceux contenant des graisses et des protéines. Ceci n'est qu'un guide pour l'algorithme et n'a pas besoin d'être exact.";
+"Choose a longer absorption time for larger meals, or those containing fats and proteins. This is only guidance to the algorithm and need not be exact." = "Choisissez un temps d’absorption plus long pour les gros repas ou ceux contenant des graisses et des protéines. Ceci est seulement un guide pour l'algorithme et n'a pas besoin d'être exact.";
 
 /* The button label of the action used to dismiss the unsafe notification permission alert */
 "Close" = "Fermer";
@@ -405,10 +405,10 @@
 "Delete Account" = "Supprimer le compte";
 
 /* Button title to delete all objects */
-"Delete All" = "Tout supprimer";
+"Delete All" = "Supprimer tout";
 
 /* Button title to delete CGM */
-"Delete CGM" = "Supprimer le CGM";
+"Delete CGM" = "Effacer le CGM";
 
 /* Button title to delete a service */
 "Delete Service" = "Supprimer le service";
@@ -426,7 +426,7 @@
 "Deliver" = "Administrer";
 
 /* Title text for delivery limits */
-"Delivery Limits" = "Limites de Administration";
+"Delivery Limits" = "Limites d'Administration";
 
 /* Descriptive text for Therapy Settings */
 "Diabetes Treatment" = "Traitement du diabète";
@@ -502,7 +502,7 @@
 "Export-%1$@" = "Export-%1$@";
 
 /* The alert title for a resume error */
-"Failed to Resume Insulin Delivery" = "Échec de la reprise de la distribution d'Insuline";
+"Failed to Resume Insulin Delivery" = "Échec de la reprise de l’administration d’insuline";
 
 /* Title of insulin model preset */
 "Fiasp" = "Fiasp";
@@ -511,7 +511,7 @@
 "Fingerstick Glucose" = "Glucose capilaire";
 
 /* The format string used to describe a finite workout targets duration */
-"For %1$@" = "Pour %1$@";
+"For %1$@" = "Pendant %1$@";
 
 /* No comment provided by engineer. */
 "Forecasted blood glucose may still be higher than target range." = "Le taux de glucose sanguin prévu pourrait quand-même être plus élevé que la plage cible.";
@@ -529,7 +529,7 @@
 "Glucose" = "Glycémie";
 
 /* The error message when glucose data is too old to be used. (1: glucose data age in minutes) */
-"Glucose data is %1$@ old" = "Données de glucose sont vielles de %1$@";
+"Glucose data is %1$@ old" = "Les dernières données de glucose remontent à %1$@";
 
 /* Description of error when glucose data is missing */
 "Glucose data not available" = "Les données de glucose ne sont pas disponibles";
@@ -560,7 +560,7 @@
 "Insulin" = "Insuline";
 
 /* Description of the prediction input effect for insulin */
-"Insulin Absorbed (U) × Insulin Sensitivity (%1$@/U)" = "Insuline absorbée x Facteur de sensibilité à l'insuline (%1$@/U)";
+"Insulin Absorbed (U) × Insulin Sensitivity (%1$@/U)" = "Insuline Absorbée (U) × Sensibilité à l'Insuline ( %1$@ /U)";
 
 /* Notification body for crash recovery alert */
 "Insulin adjustments have been disabled!" = "Les ajustements d’insuline ont été désactivés!";
@@ -607,7 +607,7 @@
 "Invalid glucose reading with a timestamp that is %1$@ in the future" = "Lecture de glucose non valide avec un horodatage situé à %1$@ dans le futur";
 
 /* The title text for the issue report cell */
-"Issue Report" = "Editer rapport";
+"Issue Report" = "Créer un rapport";
 
 /* Title of the warning shown when a large meal was entered */
 "Large Meal Entered" = "Grand repas entré";
@@ -699,7 +699,7 @@
 "Mute All Alerts" = "Enlever le son de toutes les alertes";
 
 /* Sensor state description for the non-valid state */
-"Needs Attention" = "Attention Requise";
+"Needs Attention" = "Demande votre attention";
 
 /* The title of the Nightscout service */
 "Nightscout" = "Nightscout";
@@ -713,7 +713,7 @@
 "No Bolus Recommended" = "Aucun Bolus Recommandé";
 
 /* The error message displayed for device connection errors. */
-"No connected devices, or failure during device connection" = "Pas d'appareil connecté, ou échec durant la connectionà l'appareil";
+"No connected devices, or failure during device connection" = "Pas d'appareil connecté, ou échec durant la connexion à l'appareil";
 
 /* Alert title for a missing maximum bolus setting error */
 "No Maximum Bolus Configured" = "Aucun Bolus Maximum configuré";
@@ -769,7 +769,7 @@
 "On" = "Activé";
 
 /* The title text for the override presets */
-"Override Presets" = "Préréglage Ajustements";
+"Override Presets" = "Préréglages ajustement";
 
 /* The label of the pre-meal mode toggle button */
 "Pre-Meal Targets" = "Objectif de Pré-Repas";
@@ -787,7 +787,7 @@
 "Predicted glucose of %1$@ is below your suspend threshold setting." = "Prédiction de la glycémie à %1$@ sous le seuil de suspension défini.";
 
 /* Format string describing retrospective glucose prediction comparison. (1: Predicted glucose)(2: Actual glucose)(3: difference) */
-"Predicted: %1$@\nActual: %2$@ (%3$@)" = "Prédit: %1$@\nActuel: %2$@ (%3$@)";
+"Predicted: %1$@\nActual: %2$@ (%3$@)" = "Prédit : %1$@\nRéel : %2$@ (%3$@)";
 
 /* Preparing critical event log text */
 "Preparing Critical Event Logs" = "Préparation des journaux d’événements critiques";
@@ -802,10 +802,10 @@
 "Pump Battery Low" = "Batterie de la pompe faible";
 
 /* The error message when pump data is too old to be used. (1: pump data age in minutes) */
-"Pump data is %1$@ old" = "Données de pompe sont vielles de %1$@";
+"Pump data is %1$@ old" = "Les données de la pompe remontent à %1$@";
 
 /* The title of the screen displaying a pump event */
-"Pump Event" = "Événement de la pompe";
+"Pump Event" = "Événement pompe";
 
 /* Details for configuration error when pump manager is missing */
 "Pump Manager" = "Gestionnaire de pompe";
@@ -817,7 +817,7 @@
 "Pump Reservoir Empty" = "Réservoir de la pompe vide";
 
 /* The notification title for a low pump reservoir */
-"Pump Reservoir Low" = "Niveau du réservoir de la pompe bas";
+"Pump Reservoir Low" = "Réservoir de la pompe bas";
 
 /* The title of the cell indicating the pump is suspended */
 "Pump Suspended" = "Pompe suspendue";
@@ -835,7 +835,7 @@
 "Rapid-Acting – Children" = "Action rapide - Enfant";
 
 /* The error message when a recommendation has expired. (1: age of recommendation in minutes) */
-"Recommendation expired: %1$@ old" = "Recommandation expirée: veille de %1$@";
+"Recommendation expired: %1$@ old" = "Recommandation expirée, remonte à %1$@";
 
 /* The title of the cell displaying a recommended temp basal value */
 "Recommended Basal" = "Recommandation basal";
@@ -848,7 +848,7 @@
 "Recommended Bolus Exceeds Maximum Bolus" = "Le bolus recommandé dépasse le bolus maximal";
 
 /* Accessibility hint describing recommended bolus units */
-"Recommended Bolus: %@ Units" = "Bolus Recommendé: %@ Unités";
+"Recommended Bolus: %@ Units" = "Bolus recommandé: %@ Unités";
 
 /* The notification title for a remote bolus. (1: Bolus amount)
    The notification title for a remote failure. (1: Bolus amount) */
@@ -864,10 +864,10 @@
 "Reservoir" = "Réservoir";
 
 /* Title of the prediction input effect for retrospective correction */
-"Retrospective Correction" = "Correction Rétrospective";
+"Retrospective Correction" = "Correction rétrospective";
 
 /* The title of the notification action to retry a bolus command */
-"Retry" = "Nouvel essai";
+"Retry" = "Réessayer";
 
 /* Button text to save carbs and/or manual glucose entry and deliver a bolus */
 "Save and Deliver" = "Enregistrer et Administrer";
@@ -885,7 +885,7 @@
 "Services" = "Services";
 
 /* The label of the settings button */
-"Settings" = "Options";
+"Settings" = "Paramètres";
 
 /* The title of the cell indicating that onboarding is suspended */
 "Setup Incomplete" = "Configuration incomplète";
@@ -912,7 +912,7 @@
 "starting at %@" = "commence à %@";
 
 /* The title of the cell indicating a bolus is being sent */
-"Starting Bolus" = "Commencer un bolus";
+"Starting Bolus" = "Début du bolus";
 
 /* Section title for Support
    Support screen title
@@ -936,7 +936,7 @@
 "Tap to Add" = "Ajout";
 
 /* The subtitle of the cell displaying an action to resume insulin delivery */
-"Tap to Resume" = "Taper pour reprendre";
+"Tap to Resume" = "Appuyez pour reprendre";
 
 /* Message presented in the status row instructing the user to tap this row to stop a bolus */
 "Tap to Stop" = "Stop";
@@ -954,7 +954,7 @@
 "The bolus recommendation has updated. Please reconfirm the bolus amount." = "La recommandation du bolus a changé. Veuillez reconfirmer la quantité du bolus";
 
 /* Subtitle description of Walsh insulin model setting */
-"The legacy model used by Loop, allowing customization of action duration." = "Le modèle hérité utilisé par Loop, permettant de personnaliser la durée de l’action.";
+"The legacy model used by Loop, allowing customization of action duration." = "Le modèle original utilisé par Loop, permettant de gérer la durée d'action de l'insuline.";
 
 /* Alert body displayed absorption time greater than max (1: maximum absorption time) */
 "The maximum absorption time is %@" = "Le temps d'absorption maximum est de %@";
@@ -1051,7 +1051,7 @@
 "When out of Closed Loop mode, the app uses a simplified bolus calculator like a typical pump." = "En dehors du mode Boucle fermée, l'application utilise un calcul de bolus simplifié comme pour une pompe classique.";
 
 /* The label of the workout mode toggle button */
-"Workout Targets" = "Objectifs d'entraînement";
+"Workout Targets" = "Objectifs exercice";
 
 /* Workout override still on reminder alert body. */
 "Workout Temp Adjust has been turned on for more than 24 hours. Make sure you still want it enabled, or turn it off in the app." = "Le réglage de la température d'entraînement est activé depuis plus de 24 heures. Vérifiez que vous souhaitez toujours l'activer ou désactivez-le dans l'application. Vérifiez que vous souhaitez toujours le garder actif ou désactivez-le dans l'application.";
diff --git a/Loop/fr.lproj/Main.strings b/Loop/fr.lproj/Main.strings
index a1573a396..7174e77a0 100644
--- a/Loop/fr.lproj/Main.strings
+++ b/Loop/fr.lproj/Main.strings
@@ -5,7 +5,7 @@
 "3kU-n2-fha.title" = "Statut";
 
 /* Class = "UILabel"; text = "3.5 U/hour @ 12:12 PM"; ObjectID = "5gz-kZ-iF1"; */
-"5gz-kZ-iF1.text" = "3.5 U/h @ 12:12 PM";
+"5gz-kZ-iF1.text" = "3.5 U/heure @ 12:12";
 
 /* Class = "UILabel"; text = "Predicted"; ObjectID = "87H-N1-0vJ"; */
 "87H-N1-0vJ.text" = "Prédit";
@@ -17,22 +17,22 @@
 "ap1-M6-naG.text" = "Type d'aliment";
 
 /* Class = "UILabel"; text = "Label"; ObjectID = "bIL-Ub-qYp"; */
-"bIL-Ub-qYp.text" = "Étiquette";
+"bIL-Ub-qYp.text" = "Label";
 
 /* Class = "UILabel"; text = "Glucose Change"; ObjectID = "bq4-98-cQU"; */
 "bq4-98-cQU.text" = "Variation de la glycémie";
 
 /* Class = "UILabel"; text = "g Total"; ObjectID = "d3X-AN-tA5"; */
-"d3X-AN-tA5.text" = "g Totaux";
+"d3X-AN-tA5.text" = "g total";
 
 /* Class = "UILabel"; text = "Future glucose is predicted by combining the effects of multiple inputs. Use this tool to toggle various inputs to see how they compare to the final prediction."; ObjectID = "D4C-I2-dhA"; */
-"D4C-I2-dhA.text" = "La glycémie future est prédite en combinant les effets de plusieurs facteurs. Utilisez cet outils pour changer différents facteurs afin d'observer leur impact sur la prédiction finale.";
+"D4C-I2-dhA.text" = "Le glucose futur est prédit en combinant les effets de plusieurs entrées. Utilisez cet outil pour basculer entre différentes entrées afin de voir comment elles se comparent à la prédiction finale. Utilisez cet outil pour aller et venir entre les différentes entrées et voir comment elles se comparent à la prédiction finale.";
 
 /* Class = "UILabel"; text = "Label"; ObjectID = "d6m-qV-wWi"; */
-"d6m-qV-wWi.text" = "Étiquette";
+"d6m-qV-wWi.text" = "Label";
 
 /* Class = "UILabel"; text = "eventually 92 mg/dL"; ObjectID = "E41-FN-nkk"; */
-"E41-FN-nkk.text" = "Finalement 92 mg/dL";
+"E41-FN-nkk.text" = "finalement 92 mg/dL";
 
 /* Class = "UILabel"; text = "Observed"; ObjectID = "EAn-Ja-S1d"; */
 "EAn-Ja-S1d.text" = "Observé";
@@ -47,7 +47,7 @@
 "hZZ-2S-lrd.title" = "Effets des glucides";
 
 /* Class = "UILabel"; text = "Observed changes in glucose, subtracting changes modeled from insulin delivery, can be used to estimate carbohydrate absorption."; ObjectID = "IxU-As-glo"; */
-"IxU-As-glo.text" = "Les variations observées dans la glycémie, soustrayant les variations modélisées d'administration d'insuline peuvent être utilisées pour estimer l'absoption des glucides.";
+"IxU-As-glo.text" = "Les variations observées dans la glycémie, soustrayant les variations modélisées d'administration d'insuline peuvent être utilisées pour estimer l'absorption des glucides.";
 
 /* Class = "UILabel"; text = "Detail"; ObjectID = "J7x-W5-gwo"; */
 "J7x-W5-gwo.text" = "Détail";
@@ -56,13 +56,13 @@
 "k3F-Na-7mn.text" = "Recommandation basal";
 
 /* Class = "UILabel"; text = "Label"; ObjectID = "Krd-Aa-ret"; */
-"Krd-Aa-ret.text" = "Étiquette";
+"Krd-Aa-ret.text" = "Label";
 
 /* Class = "UILabel"; text = "Label"; ObjectID = "OFA-qT-ZAg"; */
-"OFA-qT-ZAg.text" = "Étiquette";
+"OFA-qT-ZAg.text" = "Label";
 
 /* Class = "UITableViewController"; title = "Predicted Glucose"; ObjectID = "PA3-sP-cWY"; */
-"PA3-sP-cWY.title" = "Glycémie prédite";
+"PA3-sP-cWY.title" = "Prédiction de glycémie";
 
 /* Class = "UIButton"; normalTitle = "🍽"; ObjectID = "Qe9-uc-vPR"; */
 "Qe9-uc-vPR.normalTitle" = "🍽";
@@ -74,10 +74,10 @@
 "qPH-vU-xlu.text" = "Type d'aliment";
 
 /* Class = "UILabel"; text = "eventually 92 mg/dL"; ObjectID = "Rse-x8-amW"; */
-"Rse-x8-amW.text" = "Finalement 92 mg/dL";
+"Rse-x8-amW.text" = "finalement 92 mg/dL";
 
 /* Class = "UILabel"; text = "g Active Carbs"; ObjectID = "SQx-au-ZcM"; */
-"SQx-au-ZcM.text" = "g Active Carbs";
+"SQx-au-ZcM.text" = "g glucides actifs";
 
 /* Class = "UILabel"; text = "Glucose"; ObjectID = "tuw-av-A3x"; */
 "tuw-av-A3x.text" = "Glycémie";
@@ -86,7 +86,7 @@
 "Tz7-80-bJ7.title" = "Ajouter/Modifier Glucides Consommés";
 
 /* Class = "UILabel"; text = "Label"; ObjectID = "ufi-Kj-33k"; */
-"ufi-Kj-33k.text" = "Étiquette";
+"ufi-Kj-33k.text" = "Label";
 
 /* Class = "UINavigationItem"; title = "Carbohydrates"; ObjectID = "Vpi-5b-bY5"; */
 "Vpi-5b-bY5.title" = "Glucides";
@@ -107,7 +107,7 @@
 "yn7-2M-jZz.text" = "0";
 
 /* Class = "UILabel"; text = "Title"; ObjectID = "zbc-87-wxZ"; */
-"zbc-87-wxZ.text" = "Titre";
+"zbc-87-wxZ.text" = "Title";
 
 /* Class = "UILabel"; text = "0"; ObjectID = "zvZ-uf-zMX"; */
 "zvZ-uf-zMX.text" = "0";
diff --git a/Loop/he.lproj/InfoPlist.strings b/Loop/he.lproj/InfoPlist.strings
index b422a039c..a0bb09dad 100644
--- a/Loop/he.lproj/InfoPlist.strings
+++ b/Loop/he.lproj/InfoPlist.strings
@@ -1,3 +1,6 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Loop";
+
 /* Bundle name */
 "CFBundleName" = "$(PRODUCT_NAME)";
 
diff --git a/Loop/he.lproj/Localizable.strings b/Loop/he.lproj/Localizable.strings
index 4d33a3235..cb169e9ec 100644
--- a/Loop/he.lproj/Localizable.strings
+++ b/Loop/he.lproj/Localizable.strings
@@ -25,6 +25,9 @@
 /* Format string for glucose target range. (1: Min target)(2: Max target)(3: glucose unit) */
 "%1$@ – %2$@ %3$@" = "%1$@ – %2$@ %3$@";
 
+/* Format string combining carb entry quantity and absorption time emoji */
+"%1$@ %2$@" = "%1$@ %2$@";
+
 /* Format string for carb ratio average. (1: value)(2: carb unit) */
 "%1$@ %2$@/U" = "%1$@ %2$@/U";
 
@@ -58,6 +61,9 @@
 /* Subtitle of Rapid-Acting – Adult preset */
 "A model based on the published absorption of Humalog, Novolog, and Apidra insulin in adults." = "A model based on the published absorption of Humalog, Novolog, and Apidra insulin in adults.";
 
+/* Title of the carb entry absorption time cell */
+"Absorption Time" = "Absorption Time";
+
 /* Action to copy the recommended Bolus value to the actual Bolus Field */
 "AcceptRecommendedBolus" = "AcceptRecommendedBolus";
 
@@ -67,12 +73,18 @@
 /* The string format describing active carbohydrates. (1: localized glucose value description) */
 "Active Carbohydrates: %@" = "Active Carbohydrates: %@";
 
+/* Title describing quantity of still-absorbing carbohydrates */
+"Active Carbs" = "Active Carbs";
+
 /* The title of the Insulin On-Board graph */
 "Active Insulin" = "Active Insulin";
 
 /* The string format describing active insulin. (1: localized insulin value description) */
 "Active Insulin: %@" = "Active Insulin: %@";
 
+/* Title of the user activity for adding carbs */
+"Add Carb Entry" = "Add Carb Entry";
+
 /* Action sheet title selecting CGM
    Title text for button to set up a CGM */
 "Add CGM" = "Add CGM";
@@ -99,6 +111,12 @@
 /* The title of the nightscout API secret credential */
 "API Secret" = "API Secret";
 
+/* Action sheet confirmation message for pump history deletion */
+"Are you sure you want to delete all history entries?" = "Are you sure you want to delete all history entries?";
+
+/* Action sheet confirmation message for reservoir deletion */
+"Are you sure you want to delete all reservoir values?" = "Are you sure you want to delete all reservoir values?";
+
 /* Confirmation message for deleting a CGM */
 "Are you sure you want to delete this CGM?" = "Are you sure you want to delete this CGM?";
 
@@ -141,6 +159,12 @@
    The title text for the carb ratio schedule */
 "Carb Ratios" = "Carb Ratios";
 
+/* The title of the view controller to create a new carb entry */
+"carb-entry-title-add" = "Add Carb Entry";
+
+/* The title of the view controller to edit an existing carb entry */
+"carb-entry-title-edit" = "Edit Carb Entry";
+
 /* Title of the prediction input effect for carbohydrates */
 "Carbohydrates" = "Carbohydrates";
 
@@ -162,9 +186,18 @@
 /* Recovery suggestion when glucose data is missing */
 "Check your CGM data source" = "Check your CGM data source";
 
+/* Carb entry section footer text explaining absorption time */
+"Choose a longer absorption time for larger meals, or those containing fats and proteins. This is only guidance to the algorithm and need not be exact." = "Choose a longer absorption time for larger meals, or those containing fats and proteins. This is only guidance to the algorithm and need not be exact.";
+
 /* The title text for the looping enabled switch cell */
 "Closed Loop" = "Closed Loop";
 
+/* The format string describing the date of an IOB value. The first format argument is the localized date. */
+"com.loudnate.InsulinKit.IOBDateLabel" = "at %1$@";
+
+/* The format string describing the starting date of a total value. The first format argument is the localized date. */
+"com.loudnate.InsulinKit.totalDateLabel" = "since %1$@";
+
 /* The title of the action used to dismiss an error alert */
 "com.loudnate.LoopKit.errorAlertActionTitle" = "OK";
 
@@ -174,6 +207,9 @@
 /* The error message displayed for configuration errors. (1: configuration error details) */
 "Configuration Error: %1$@" = "Configuration Error: %1$@";
 
+/* Default alert dismissal */
+"Continue" = "Continue";
+
 /* The title of the continuous glucose monitor section in settings */
 "Continuous Glucose Monitor" = "Continuous Glucose Monitor";
 
@@ -187,12 +223,18 @@
 /* The title of the cell indicating a generic temporary override is enabled */
 "Custom Override" = "Custom Override";
 
+/* Date picker label */
+"Date" = "Date";
+
 /* The short unit display string for decibles */
 "dB" = "dB";
 
 /* The title of the button to remove the credentials for a service */
 "Delete Account" = "Delete Account";
 
+/* Button title to delete all objects */
+"Delete All" = "Delete All";
+
 /* Button title to delete CGM */
 "Delete CGM" = "Delete CGM";
 
@@ -205,6 +247,10 @@
 /* The action hint of the workout mode toggle button when enabled */
 "Disables" = "Disables";
 
+/* Default alert dismissal
+   The button label of the action used to dismiss an error alert */
+"Dismiss" = "Dismiss";
+
 /* The action hint of the workout mode toggle button when disabled */
 "Enables" = "Enables";
 
@@ -217,6 +263,9 @@
 /* The alert title for a resume error */
 "Error Resuming" = "Error Resuming";
 
+/* Segmented button title for insulin delivery log event history */
+"Event History" = "Event History";
+
 /* The subtitle format describing eventual glucose. (1: localized glucose value description) */
 "Eventually %@" = "Eventually %@";
 
@@ -229,6 +278,9 @@
 /* The format string used to describe a finite workout targets duration */
 "For %1$@" = "For %1$@";
 
+/* The short unit display string for grams */
+"g" = "g";
+
 /* The title of the glucose and prediction graph */
 "Glucose" = "Glucose";
 
@@ -282,21 +334,47 @@
 /* The notification alert describing a long-lasting loop failure. The substitution parameter is the time interval since the last loop */
 "Loop has not completed successfully in %@" = "Loop has not completed successfully in %@";
 
+/* Details for configuration error when maximum bolus is missing */
+"Maximum Bolus" = "Maximum Bolus";
+
+/* The short unit display string for milligrams of glucose per decilter */
+"mg/dL" = "mg/dL";
+
 /* The error message for missing data. (1: missing data details) */
 "Missing data: %1$@" = "Missing data: %1$@";
 
+/* The short unit display string for millimoles of glucose per liter */
+"mmol/L" = "mmol/L";
+
 /* Details for missing data error when momentum effects are missing */
 "Momentum effects" = "Momentum effects";
 
+/* Text for more info action on notification of upcoming profile expiration */
+"More Info" = "More Info";
+
 /* Sensor state description for the non-valid state */
 "Needs Attention" = "Needs Attention";
 
 /* The title of the Nightscout service */
-"Nightscout" = "Nightscout";
+"Nightscout" = "נייטסקאוט";
 
 /* The error message displayed for device connection errors. */
 "No connected devices, or failure during device connection" = "No connected devices, or failure during device connection";
 
+/* Notification Setting Status is Off */
+"Off" = "כבוי";
+
+/* Alert acknowledgment OK button
+   Critical Alert permissions disabled alert button
+   Default action for alert when alert acknowledgment fails
+   Notifications permissions disabled alert button
+   Text for ok action on notification of upcoming profile expiration
+   The title of the notification action to acknowledge a device alert */
+"OK" = "OK";
+
+/* Notification Setting Status is On */
+"On" = "דולק";
+
 /* The title text for the override presets */
 "Override Presets" = "Override Presets";
 
@@ -321,6 +399,9 @@
 /* The error message when pump data is too old to be used. (1: pump data age in minutes) */
 "Pump data is %1$@ old" = "Pump data is %1$@ old";
 
+/* The title of the screen displaying a pump event */
+"Pump Event" = "Pump Event";
+
 /* Details for configuration error when pump manager is missing */
 "Pump Manager" = "Pump Manager";
 
@@ -333,6 +414,9 @@
 /* The title of the cell indicating the pump is suspended */
 "Pump Suspended" = "Pump Suspended";
 
+/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
+"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
+
 /* Title of insulin model preset */
 "Rapid-Acting – Adults" = "Rapid-Acting – Adults";
 
@@ -370,7 +454,7 @@
 "since %@" = "since %@";
 
 /* The title of the nightscout site URL credential */
-"Site URL" = "Site URL";
+"Site URL" = "כתובת האתר";
 
 /* The format for the description of a temporary override start date */
 "starting at %@" = "starting at %@";
@@ -387,12 +471,22 @@
 /* Subtitle description of Walsh insulin model setting */
 "The legacy model used by Loop, allowing customization of action duration." = "The legacy model used by Loop, allowing customization of action duration.";
 
+/* Alert body displayed absorption time greater than max (1: maximum absorption time) */
+"The maximum absorption time is %@" = "The maximum absorption time is %@";
+
 /* Body of the alert describing a maximum bolus validation error. (1: The localized max bolus value) */
 "The maximum bolus amount is %@ Units" = "The maximum bolus amount is %@ Units";
 
+/* Title of the carb entry date picker cell */
+"Time" = "שעה";
+
 /* The short unit display string for international units of insulin */
 "U" = "U";
 
+/* Event title displayed when StoredPumpEvent.title is not set
+   The default description to use when an entry has no dose description */
+"Unknown" = "Unknown";
+
 /* The format for the description of a temporary override end date */
 "until %@" = "until %@";
 
@@ -408,3 +502,6 @@
 /* The label of the workout mode toggle button */
 "Workout Targets" = "Workout Targets";
 
+/* The title of the action used when confirming entered amount of carbohydrates. */
+"Yes" = "כן";
+
diff --git a/Loop/hi.lproj/Localizable.strings b/Loop/hi.lproj/Localizable.strings
new file mode 100644
index 000000000..e503ab1e0
--- /dev/null
+++ b/Loop/hi.lproj/Localizable.strings
@@ -0,0 +1,18 @@
+/* No glucose value representation (3 dashes for mg/dL) */
+"– – –" = "– – –";
+
+/* The title of the nightscout API secret credential */
+"API Secret" = "एपीआई पास्वर्ड";
+
+/* The title of the cancel action in an action sheet */
+"Cancel" = "निरस्त";
+
+/* Default alert dismissal */
+"Continue" = "जारी";
+
+/* The title of the glucose and prediction graph */
+"Glucose" = "शुगर";
+
+/* Title of the carb entry date picker cell */
+"Time" = "समय";
+
diff --git a/Loop/hi.lproj/Main.strings b/Loop/hi.lproj/Main.strings
new file mode 100644
index 000000000..82a5ef795
--- /dev/null
+++ b/Loop/hi.lproj/Main.strings
@@ -0,0 +1,3 @@
+/* Class = "UILabel"; text = "Glucose"; ObjectID = "tuw-av-A3x"; */
+"tuw-av-A3x.text" = "शुगर";
+
diff --git a/Loop/it.lproj/InfoPlist.strings b/Loop/it.lproj/InfoPlist.strings
index 1bcdc1b42..9e861d4c3 100644
--- a/Loop/it.lproj/InfoPlist.strings
+++ b/Loop/it.lproj/InfoPlist.strings
@@ -5,10 +5,10 @@
 "CFBundleName" = "$(PRODUCT_NAME)";
 
 /* Privacy - Bluetooth Always Usage Description */
-"NSBluetoothAlwaysUsageDescription" = "Il Bluetooth viene utilizzato per comunicare con il microinfusore e i dispositivi CGM.";
+"NSBluetoothAlwaysUsageDescription" = "Il Bluetooth è utilizzato per comunicare con il microinfusore ed il sensore glicemico";
 
 /* Privacy - Bluetooth Peripheral Usage Description */
-"NSBluetoothPeripheralUsageDescription" = "Il Bluetooth viene utilizzato per comunicare con il microinfusore e i dispositivi CGM.";
+"NSBluetoothPeripheralUsageDescription" = "Il Bluetooth è utilizzato per comunicare con il microinfusore ed il sensore glicemico";
 
 /* Privacy - Camera Usage Description */
 "NSCameraUsageDescription" = "La fotocamera è utilizzata per scansionare i codici a barre dei tuoi dispositivi.";
@@ -20,7 +20,7 @@
 "NSHealthShareUsageDescription" = "I dati sui pasti dal database Salute vengono utilizzati per determinare gli effetti del glucosio. I dati del glucosio del database Salute vengono utilizzati per il calcolo del grafico della glicemia.";
 
 /* Privacy - Health Update Usage Description */
-"NSHealthUpdateUsageDescription" = "I dati sui carboidrati inseriti nell'app e sull'orologio sono memorizzati nel database Salute. I dati relativi al glucosio recuperati dal CGM vengono memorizzati in modo sicuro in Salute.";
+"NSHealthUpdateUsageDescription" = "I dati sui carboidrati dei pasti inseriti nell'app e sull'orologio sono trasferiti nel database di Salute. I dati recuperati dal sensore CGM sono storati nel database di HealthKit.";
 
 /* Privacy - Siri Usage Description */
 "NSSiriUsageDescription" = "Loop utilizza Siri per permettere l'attivazione delle preimpostazioni con la tua voce";
diff --git a/Loop/it.lproj/Localizable.strings b/Loop/it.lproj/Localizable.strings
index 9bc2f7823..633dfbfa1 100644
--- a/Loop/it.lproj/Localizable.strings
+++ b/Loop/it.lproj/Localizable.strings
@@ -17,7 +17,7 @@
 "– –" = "– –";
 
 /* No glucose value representation (3 dashes for mg/dL) */
-"– – –" = "– – –";
+"– – –" = "---";
 
 /* Full stop character */
 "." = ".";
@@ -26,7 +26,7 @@
 "%@ %@" = "%1$@ %2$@";
 
 /* Formats absorbed carb value */
-"%@ absorbed" = "%@ assorbiti";
+"%@ absorbed" = "%@ assorbito";
 
 /* Estimated remaining duration with more than a minute */
 "%@ remaining" = "%@ rimanente";
@@ -50,7 +50,7 @@
 "%1$@ %2$@" = "%1$@ %2$@";
 
 /* Format string for carb ratio average. (1: value)(2: carb unit) */
-"%1$@ %2$@/U" = "%1$@ %2$@/U";
+"%1$@ %2$@/U" = "%1$@ %2$@ /U";
 
 /* Formats (1: carb start time) and (2: carb absorption duration) */
 "%1$@ + %2$@" = "%1$@ + %2$@";
@@ -80,13 +80,13 @@
 "%1$@ U/hour @ %2$@" = "%1$@ U/ora @ %2$@";
 
 /* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
-"%1$@ v%2$@" = "%1$@ v%2$@";
+"%1$@ v%2$@" = "%1$@ contro %2$@";
 
 /* Format string for body for notification of upcoming provisioning profile expiration. (1: app name) (2: amount of time until expiration */
 "%1$@ will stop working in %2$@. You will need to update before that, with a new provisioning profile." = "%1$@ smetterà di funzionare in %2$@. Dovrai aggiornare prima di tale data con un nuovo provisioning profile.";
 
 /* Formats (1: carb value) and (2: food type) */
-"%1$@: %2$@" = "%1$@: %2$@";
+"%1$@: %2$@" = "%1$@ : %2$@";
 
 /* Description of a basal temp basal dose entry (1: title for dose type, 2: value (? if no value) in bold, 3: unit)
    Description of a bolus dose entry (1: title for dose type, 2: value (? if no value) in bold, 3: unit) */
@@ -96,7 +96,7 @@
 "15 min glucose regression coefficient (b₁), continued with decay over 30 min" = "Coefficiente di regressione del glucosio a 15 min (b₁), interpolato con il decadimento a 30 min.";
 
 /* Description of the prediction input effect for retrospective correction */
-"30 min comparison of glucose prediction vs actual, continued with decay over 60 min" = "Confronto della previsione della glicemia a 30 min vs reale, interpolato con il decadimento sino a 60 min.";
+"30 min comparison of glucose prediction vs actual, continued with decay over 60 min" = "30 min di confronto tra la previsione glicemica e quella attuale, proseguita con il degrado sino a 60 minuti";
 
 /* Estimated remaining duration with a few seconds */
 "A few seconds remaining" = "Pochi secondi rimanenti";
@@ -111,7 +111,7 @@
 "A model based on the published absorption of Fiasp insulin." = "Modello basato sull'assorbimento dichiarato dell'insulina Fiasp";
 
 /* Subtitle of Rapid-Acting – Adult preset */
-"A model based on the published absorption of Humalog, Novolog, and Apidra insulin in adults." = "Modello basato sull'assorbimento negli adulti dell'insulina Humalog, Novolog ed Apidra.";
+"A model based on the published absorption of Humalog, Novolog, and Apidra insulin in adults." = "Modello basato sull'assorbimento dichiarato dell'insulina Humalog, Novolog e Apidra negli adulti";
 
 /* Software update available section footer (1: app name) */
 "A new version of %@ is available and is recommended to continue using the app." = "Una nuova versione di %@ è disponibile ed è raccomandato di continuare a utilizzare l'app.";
@@ -129,19 +129,19 @@
 "AcceptRecommendedBolus" = "AcceptRecommendedBolus";
 
 /* The title of the Carbs On-Board graph */
-"Active Carbohydrates" = "Carboidrati Attivi";
+"Active Carbohydrates" = "Carboidrati attivi";
 
 /* The string format describing active carbohydrates. (1: localized glucose value description) */
-"Active Carbohydrates: %@" = "Carboidrati Attivi: %@";
+"Active Carbohydrates: %@" = "Carboidrati attivi: %@";
 
 /* Title describing quantity of still-absorbing carbohydrates */
-"Active Carbs" = "Carboidrati Attivi";
+"Active Carbs" = "Carb Attivi";
 
 /* The title of the Insulin On-Board graph */
-"Active Insulin" = "Insulina Attiva";
+"Active Insulin" = "Insulina attiva";
 
 /* The string format describing active insulin. (1: localized insulin value description) */
-"Active Insulin: %@" = "Insulina Attiva: %@";
+"Active Insulin: %@" = "Insulina attiva: %@";
 
 /* Title of the user activity for adding carbs */
 "Add Carb Entry" = "Agg. Carb. Assunti";
@@ -230,7 +230,7 @@
 
 /* The title of the basal rate profile screen
    The title text for the basal rate schedule */
-"Basal Rates" = "Velocità Basali";
+"Basal Rates" = "Velocità basali";
 
 /* Caption for bolus screen notice when no bolus is recommended for the predicted glucose */
 "Based on your predicted glucose, no bolus is recommended." = "In base alla glicemia prevista, non è consigliato alcun bolo.";
@@ -287,13 +287,13 @@
 
 /* The title of the carb ratios schedule screen
    The title text for the carb ratio schedule */
-"Carb Ratios" = "Rapporti Carboidrati";
+"Carb Ratios" = "Rapporti carboidrati";
 
 /* The title of the view controller to create a new carb entry */
 "carb-entry-title-add" = "Agg. Carb. Assunti";
 
 /* The title of the view controller to edit an existing carb entry */
-"carb-entry-title-edit" = "Modifica Carboidrati Assunti";
+"carb-entry-title-edit" = "Mod. Carb Assunti";
 
 /* Title for bolus screen warning when carbohydrate entry is too large */
 "Carbohydrate Entry Too Large" = "Le voci dei Carboidrati inseriti sono troppo grandi";
@@ -302,28 +302,28 @@
 "Carbohydrates" = "Carboidrati";
 
 /* Description of the prediction input effect for carbohydrates. (1: The glucose unit string) */
-"Carbs Absorbed (g) ÷ Carb Ratio (g/U) × Insulin Sensitivity (%1$@/U)" = "Carboidrati Assorbiti (g) ÷ Rapporto carboidrati/insulina (g/U) × Sensibilità Insulinica (%1$@/U)";
+"Carbs Absorbed (g) ÷ Carb Ratio (g/U) × Insulin Sensitivity (%1$@/U)" = "Carboidrati Assorbiti ÷ Rapporto Carboidrati (gr/U) × Sensibilità Insulinica (%1$@/U)";
 
 /* The notification alert describing a low pump battery */
 "Change the pump battery immediately" = "Cambiare immediatamente la batteria del microinfusore";
 
 /* The notification alert describing an empty pump reservoir */
-"Change the pump reservoir now" = "Cambiare il serbatoio del microinfusore";
+"Change the pump reservoir now" = "Cambiare subito il serbatoio del microinfusore";
 
 /* Details for configuration error when one or more loop settings are missing */
-"Check settings" = "Controlla le impostazioni";
+"Check settings" = "Controllare le impostazioni";
 
 /* Recovery suggestion when reservoir data is missing */
-"Check that your pump is in range" = "Controlla che il tuo microinfusore sia nei paraggi";
+"Check that your pump is in range" = "Controlllare che il microinfusore si trovi vicino";
 
 /* Recovery suggestion when glucose data is missing */
-"Check your CGM data source" = "Controlla la sorgente CGM";
+"Check your CGM data source" = "Controllare la sorgente dati del sensore";
 
 /* Caption for bolus screen notice when glucose data is in the future */
 "Check your device time and/or remove any invalid data from Apple Health." = "Controlla l'ora del tuo dispositivo e/o rimuovi eventuali dati non validi da Apple Salute.";
 
 /* Carb entry section footer text explaining absorption time */
-"Choose a longer absorption time for larger meals, or those containing fats and proteins. This is only guidance to the algorithm and need not be exact." = "Scegliere tempi di assorbimento piu' lunghi per pasti grandi o che contengono Grassi e Proteine. Questa e' la sola guida per l'algoritmo e necessita che sia corretta.";
+"Choose a longer absorption time for larger meals, or those containing fats and proteins. This is only guidance to the algorithm and need not be exact." = "Scegli un tempo di assorbimento piu lungo per i pasti piu grandi o quelli contenenti grassi e proteine. Questa e solo una guida all’algoritmo e non e necessario che sia esatta.";
 
 /* The button label of the action used to dismiss the unsafe notification permission alert */
 "Close" = "Chiudi";
@@ -402,7 +402,7 @@
 "Delete" = "Cancella";
 
 /* The title of the button to remove the credentials for a service */
-"Delete Account" = "Cancella account";
+"Delete Account" = "Cancella Account";
 
 /* Button title to delete all objects */
 "Delete All" = "Cancella tutto";
@@ -435,7 +435,7 @@
 "Did you intend to enter %1$@ grams as the amount of carbohydrates for this meal?" = "Intendevi inserire %1$@ grammi come quantità di carboidrati per questo pasto?";
 
 /* The action hint of the workout mode toggle button when enabled */
-"Disables" = "Disabilitato";
+"Disables" = "Disabilita";
 
 /* Default alert dismissal
    The button label of the action used to dismiss an error alert */
@@ -472,13 +472,13 @@
 "Enter suspend threshold" = "Inserisci soglia di sospensione";
 
 /* The alert title for an error while canceling a bolus */
-"Error Canceling Bolus" = "Errore durante l’annullamento del bolo";
+"Error Canceling Bolus" = "Errore durante l'Annullamento del Bolo";
 
 /* Critical event log export error alert title */
 "Error Exporting Logs" = "Errore durante l'esportazione dei registri";
 
 /* The alert title for a resume error */
-"Error Resuming" = "Errore durante la ripresa";
+"Error Resuming" = "Errore durante la Ripresa";
 
 /* Segmented button title for insulin delivery log event history */
 "Event History" = "Storia degli Eventi";
@@ -526,7 +526,7 @@
 "Get help with Alert Permissions" = "Ottieni assistenza per le autorizzazioni";
 
 /* The title of the glucose and prediction graph */
-"Glucose" = "Glicemie";
+"Glucose" = "Glicemia";
 
 /* The error message when glucose data is too old to be used. (1: glucose data age in minutes) */
 "Glucose data is %1$@ old" = "I dati sulla glicemia sono %1$@ vecchi";
@@ -551,7 +551,7 @@
 "Immediate" = "Immediato";
 
 /* The title of a target alert action specifying an indefinitely long workout targets duration */
-"Indefinitely" = "Per sempre";
+"Indefinitely" = "A tempo indeterminato";
 
 /* Title of the alert when carb input maximum was exceeded. */
 "Input Maximum Exceeded" = "Superato il numero massimo di input";
@@ -573,7 +573,7 @@
 
 /* Details for configuration error when insulin model is missing
    The title text for the insulin model setting row */
-"Insulin Model" = "Modello d'azione dell'Insulina";
+"Insulin Model" = "Modello di azione dell'Insulina";
 
 /* Descriptive text for Insulin Pump */
 "Insulin Pump" = "Microinfusore";
@@ -607,7 +607,7 @@
 "Invalid glucose reading with a timestamp that is %1$@ in the future" = "Lettura del glucosio non valida con data e ora %1$@ nel futuro";
 
 /* The title text for the issue report cell */
-"Issue Report" = "Segnalazione";
+"Issue Report" = "Report dei problemi";
 
 /* Title of the warning shown when a large meal was entered */
 "Large Meal Entered" = "Pasto abbondante inserito";
@@ -622,7 +622,7 @@
 "Less than a minute remaining" = "Manca meno di un minuto";
 
 /* The loading message for the diagnostic report screen */
-"Loading..." = "Carica...";
+"Loading..." = "Caricamento...";
 
 /* Button text to log a dose
    Title for dose logging screen */
@@ -635,13 +635,13 @@
 "Loop Crashed" = "Loop si è bloccato";
 
 /* The notification title for a loop failure */
-"Loop Failure" = "Loop Fallito";
+"Loop Failure" = "Malfunzionamento di Loop";
 
 /* Bluetooth unavailable alert body. */
 "Loop has detected an issue with your Bluetooth settings, and will not work successfully until Bluetooth is enabled. You will not receive glucose readings, or be able to bolus." = "Loop ha rilevato un problema con le tue impostazioni Bluetooth e non funzionerà correttamente finché il Bluetooth non sarà abilitato. Non riceverai letture glicemiche né potrai eseguire il bolo.";
 
 /* The notification alert describing a long-lasting loop failure. The substitution parameter is the time interval since the last loop */
-"Loop has not completed successfully in %@" = "Loop non completato con successo da %@";
+"Loop has not completed successfully in %@" = "Loop non ha funzionato correttamente per %@";
 
 /* Description string for automatic bolus dosing strategy */
 "Loop will automatically bolus when insulin needs are above scheduled basal, and will use temporary basal rates when needed to reduce insulin delivery below scheduled basal." = "Loop eseguirà automaticamente il bolo quando il fabbisogno d'insulina è superiore alla basale programmata e utilizzerà velocità basali temporanee quando necessario per ridurre l'erogazione d'insulina al di sotto della basale programmata.";
@@ -693,13 +693,13 @@
 "Momentum effects" = "Effetto glicemico attuale";
 
 /* Text for more info action on notification of upcoming profile expiration */
-"More Info" = "Più info";
+"More Info" = "Piu info";
 
 /* Label for toggle to mute all alerts */
 "Mute All Alerts" = "Disattiva tutti gli avvisi";
 
 /* Sensor state description for the non-valid state */
-"Needs Attention" = "Fai Attenzione";
+"Needs Attention" = "Esige Attenzione";
 
 /* The title of the Nightscout service */
 "Nightscout" = "Nightscout";
@@ -778,7 +778,7 @@
 "Predicted glucose at %1$@ is %2$@." = "La glicemia prevista tra %1$@ e' di %2$@.";
 
 /* Notice when predicted glucose for bolus recommendation is in range */
-"Predicted glucose is in range." = "La glicemia prevista e' nei valori giusti.";
+"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";
@@ -799,13 +799,13 @@
 "Pump" = "Microinfusore";
 
 /* The notification title for a low pump battery */
-"Pump Battery Low" = "Batteria Microinfusore e' quasi esaurita";
+"Pump Battery Low" = "Batteria Microinfusore bassa";
 
 /* The error message when pump data is too old to be used. (1: pump data age in minutes) */
 "Pump data is %1$@ old" = "I dati forniti dal microinfusore sono di %1$@ fa";
 
 /* The title of the screen displaying a pump event */
-"Pump Event" = "Azione del Microinfusore";
+"Pump Event" = "Evento Microinfusore";
 
 /* Details for configuration error when pump manager is missing */
 "Pump Manager" = "Gestione Microinfusore";
@@ -820,7 +820,7 @@
 "Pump Reservoir Low" = "Serbatoio microinfusore Basso";
 
 /* The title of the cell indicating the pump is suspended */
-"Pump Suspended" = "Microinfusore sospesa";
+"Pump Suspended" = "Microinfusore sospeso";
 
 /* The error message displayed for pumpSuspended errors. */
 "Pump Suspended. Automatic dosing is disabled." = "Microinfusore Sospeso. Il dosagio autoamtico e' disattivato";
@@ -835,7 +835,7 @@
 "Rapid-Acting – Children" = "Insulina ultrarapida – Bambini";
 
 /* The error message when a recommendation has expired. (1: age of recommendation in minutes) */
-"Recommendation expired: %1$@ old" = "La dose raccomandata e' scaduta da %1$@";
+"Recommendation expired: %1$@ old" = "La raccomandazione è scaduta: %1$@ fa";
 
 /* The title of the cell displaying a recommended temp basal value */
 "Recommended Basal" = "Basale Raccomandata";
@@ -848,7 +848,7 @@
 "Recommended Bolus Exceeds Maximum Bolus" = "Il Bolo Raccomandato supera la quantità del Bolo Massimo.";
 
 /* Accessibility hint describing recommended bolus units */
-"Recommended Bolus: %@ Units" = "Bolo Consigliato: %@ Unità";
+"Recommended Bolus: %@ Units" = "Bolo Raccomandato: %@ Unità";
 
 /* The notification title for a remote bolus. (1: Bolus amount)
    The notification title for a remote failure. (1: Bolus amount) */
@@ -864,10 +864,10 @@
 "Reservoir" = "Serbatoio";
 
 /* Title of the prediction input effect for retrospective correction */
-"Retrospective Correction" = "Correzione Retrospettiva";
+"Retrospective Correction" = "Correzione retrospettiva";
 
 /* The title of the notification action to retry a bolus command */
-"Retry" = "Riprovare";
+"Retry" = "Riprova";
 
 /* Button text to save carbs and/or manual glucose entry and deliver a bolus */
 "Save and Deliver" = "Salva e Invia";
@@ -891,7 +891,7 @@
 "Setup Incomplete" = "Impostazione Incompleta";
 
 /* Loop Completion HUD accessibility hint */
-"Shows last loop error" = "Mostra ultimo errore di Loop";
+"Shows last loop error" = "Mostra l'ultimo errore di Loop";
 
 /* Title of simple bolus view when not displaying meal entry */
 "Simple Bolus Calculator" = "Calcolatore bolo semplice";
@@ -909,7 +909,7 @@
 "Software Update" = "Aggiornamento software";
 
 /* The format for the description of a temporary override start date */
-"starting at %@" = "a partire da %@";
+"starting at %@" = "inizia a %@";
 
 /* The title of the cell indicating a bolus is being sent */
 "Starting Bolus" = "Avvio Bolo";
@@ -921,7 +921,7 @@
 "Support" = "Supporto";
 
 /* The title text in settings */
-"Suspend Threshold" = "Blocco Erogazione";
+"Suspend Threshold" = "Sospendi Soglia";
 
 /* Descriptive text for button to add CGM device */
 "Tap here to set up a CGM" = "Premi per impostare un CGM";
@@ -969,7 +969,7 @@
 "The maximum bolus amount is %@ U." = "L'importo massimo del bolo è %@ U.";
 
 /* Body of the alert describing a maximum bolus validation error. (1: The localized max bolus value) */
-"The maximum bolus amount is %@ Units" = "Il massimo bolo eseguibile e' pari a %@ Unità";
+"The maximum bolus amount is %@ Units" = "Il Bolo Massimo è %@ Unità";
 
 /* Alert message for a missing maximum bolus setting error */
 "The maximum bolus setting must be configured before a bolus can be delivered." = "L'impostazione del bolo massimo deve essere configurata prima di poter erogare un bolo.";
@@ -1030,13 +1030,13 @@
 "Use Pre-Meal Preset" = "Usa preimpostazione Pre-Pasto";
 
 /* The title of the alert controller used to select a duration for workout targets */
-"Use Workout Glucose Targets" = "Utilizza i target glicemici personalizzati per l'attivita' sportiva";
+"Use Workout Glucose Targets" = "Utilizza i target glicemi per l'allenamento";
 
 /* The title of the alert controller used to select a duration for workout targets */
 "Use Workout Preset" = "Usa l'allenamento preimpostato";
 
 /* Title of insulin model setting */
-"Walsh" = "Walsh";
+"Walsh" = "modello mimetico modificabile di insulina ";
 
 /* Alert Permissions Need Attention alert title */
 "Warning! Safety notifications are turned OFF" = "Attenzione! Le notifiche di sicurezza sono disattivate";
@@ -1045,13 +1045,13 @@
 "When current or forecasted glucose is below the glucose safety limit, Loop will not recommend a bolus, and will always recommend a temporary basal rate of 0 units per hour." = "Quando la glicemia attuale o prevista è inferiore al limite di sicurezza, Loop non consiglia un bolo e raccomanda sempre una velocità basale temporanea di 0 unità all'ora.";
 
 /* Explanation of suspend threshold */
-"When current or forecasted glucose is below the suspend threshold, Loop will not recommend a bolus, and will always recommend a temporary basal rate of 0 units per hour." = "Quando l'attuale valore glicemico o un valore previsto nel futuro e' al di sotto del valore minimo previsto per la sospensione dell'erogazione, Loop non consigliera' un bolo e blocchera' l'erogazione delle basali.";
+"When current or forecasted glucose is below the suspend threshold, Loop will not recommend a bolus, and will always recommend a temporary basal rate of 0 units per hour." = "Quando la glicemia attuale o prevista è sotto la soglia di sospensione, Loop non consiglia un bolo, e raccomanda una velocità basale temporanea  di 0 unità per ora.";
 
 /* No comment provided by engineer. */
 "When out of Closed Loop mode, the app uses a simplified bolus calculator like a typical pump." = "Quando non è in modalità ciclo chiuso, l'applicazione utilizza un calcolatore di bolo semplificato come un tipico microinfusore.";
 
 /* The label of the workout mode toggle button */
-"Workout Targets" = "Target per l'attivita' sportiva";
+"Workout Targets" = "Obiettivi di allenamento";
 
 /* Workout override still on reminder alert body. */
 "Workout Temp Adjust has been turned on for more than 24 hours. Make sure you still want it enabled, or turn it off in the app." = "La regolazione della temperatura di allenamento è stata attivata per più di 24 ore. Assicurarsi di volerla ancora attivare o disattivarla nell'app.";
diff --git a/Loop/it.lproj/Main.strings b/Loop/it.lproj/Main.strings
index 2fd397c61..db668d2b1 100644
--- a/Loop/it.lproj/Main.strings
+++ b/Loop/it.lproj/Main.strings
@@ -23,10 +23,10 @@
 "bq4-98-cQU.text" = "Modifica Carboidrati";
 
 /* Class = "UILabel"; text = "g Total"; ObjectID = "d3X-AN-tA5"; */
-"d3X-AN-tA5.text" = "g Totali";
+"d3X-AN-tA5.text" = "Totale gr";
 
 /* Class = "UILabel"; text = "Future glucose is predicted by combining the effects of multiple inputs. Use this tool to toggle various inputs to see how they compare to the final prediction."; ObjectID = "D4C-I2-dhA"; */
-"D4C-I2-dhA.text" = "La glicemia futura é predetta adottando una combinazione di multiple funzioni. Utilizzare questo strumento per attivare o meno le varie funzioni per valutare come esse influiscono sul valore glicemico predetto.";
+"D4C-I2-dhA.text" = "La glicemia futura è predetta combinando gli effetti di più dati inseriti. L'utilizzo di questo applicativo permette di valutare come i singoli dati inseriti influiscano sul valore finale predetto.";
 
 /* Class = "UILabel"; text = "Label"; ObjectID = "d6m-qV-wWi"; */
 "d6m-qV-wWi.text" = "Etichetta";
@@ -44,7 +44,7 @@
 "fWV-jg-ICt.text" = "3.5 U/ora @ 12:12 PM";
 
 /* Class = "UITableViewController"; title = "Carbohydrate Effects"; ObjectID = "hZZ-2S-lrd"; */
-"hZZ-2S-lrd.title" = "Effetti dei Carboidrati";
+"hZZ-2S-lrd.title" = "Effetti dei carboidrati";
 
 /* Class = "UILabel"; text = "Observed changes in glucose, subtracting changes modeled from insulin delivery, can be used to estimate carbohydrate absorption."; ObjectID = "IxU-As-glo"; */
 "IxU-As-glo.text" = "Per valutare l'assorbimento dei carboidrati, è possibile utilizzare i cambiamenti osservati nel glucosio, sottraendo i cambiamenti modellati dall'erogazione di insulina.";
@@ -77,10 +77,10 @@
 "Rse-x8-amW.text" = "probabile glic. 92 mg/dL";
 
 /* Class = "UILabel"; text = "g Active Carbs"; ObjectID = "SQx-au-ZcM"; */
-"SQx-au-ZcM.text" = "g Carboidrati Attivi";
+"SQx-au-ZcM.text" = "g Carboidrati attivi";
 
 /* Class = "UILabel"; text = "Glucose"; ObjectID = "tuw-av-A3x"; */
-"tuw-av-A3x.text" = "Glicemie";
+"tuw-av-A3x.text" = "Glicemia";
 
 /* Class = "UINavigationItem"; title = "Add/Edit Carb Entry"; ObjectID = "Tz7-80-bJ7"; */
 "Tz7-80-bJ7.title" = "Aggiungi/Modifica carboidrati Assunti";
diff --git a/Loop/ja.lproj/InfoPlist.strings b/Loop/ja.lproj/InfoPlist.strings
index 2797fd72f..b3e1c6d3b 100644
--- a/Loop/ja.lproj/InfoPlist.strings
+++ b/Loop/ja.lproj/InfoPlist.strings
@@ -1,3 +1,6 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "ループ";
+
 /* Bundle name */
 "CFBundleName" = "$(PRODUCT_NAME)";
 
diff --git a/Loop/ja.lproj/Localizable.strings b/Loop/ja.lproj/Localizable.strings
index becc4d7db..1dff961aa 100644
--- a/Loop/ja.lproj/Localizable.strings
+++ b/Loop/ja.lproj/Localizable.strings
@@ -1,6 +1,12 @@
 /* The string format appended to active insulin that describes pending insulin. (1: pending insulin) */
 " (pending: %@)" = " (保留中: %@)";
 
+/* String denoting lack of a recommended bolus amount in the simple bolus calculator */
+"–" = "—";
+
+/* No glucose value representation (3 dashes for mg/dL) */
+"– – –" = "---";
+
 /* The format for an active override preset. (1: preset symbol)(2: preset name) */
 "%@ %@" = "%1$@ %2$@";
 
@@ -16,6 +22,9 @@
 /* Format string for glucose target range. (1: Min target)(2: Max target)(3: glucose unit) */
 "%1$@ – %2$@ %3$@" = "%1$@ – %2$@ %3$@";
 
+/* Format string combining carb entry quantity and absorption time emoji */
+"%1$@ %2$@" = "%1$@ %2$@";
+
 /* Format string for carb ratio average. (1: value)(2: carb unit) */
 "%1$@ %2$@/U" = "%1$@ %2$@/U";
 
@@ -49,6 +58,9 @@
 /* Subtitle of Rapid-Acting – Adult preset */
 "A model based on the published absorption of Humalog, Novolog, and Apidra insulin in adults." = "大人使用時の Humalog、Novolog、Apidraインスリンの公表吸収率に基づいたモデル。";
 
+/* Title of the carb entry absorption time cell */
+"Absorption Time" = "吸収時間";
+
 /* Action to copy the recommended Bolus value to the actual Bolus Field */
 "AcceptRecommendedBolus" = "推奨ボーラス値を使う";
 
@@ -58,6 +70,9 @@
 /* The string format describing active carbohydrates. (1: localized glucose value description) */
 "Active Carbohydrates: %@" = "残存糖質: %@";
 
+/* Title describing quantity of still-absorbing carbohydrates */
+"Active Carbs" = "残存糖質";
+
 /* The title of the Insulin On-Board graph */
 "Active Insulin" = "残存インスリン";
 
@@ -65,7 +80,7 @@
 "Active Insulin: %@" = "残存インスリン: %@";
 
 /* Title of the user activity for adding carbs */
-"Add Carb Entry" = "カーボを追加";
+"Add Carb Entry" = "糖質の記入を追加";
 
 /* Action sheet title selecting CGM
    Title text for button to set up a CGM */
@@ -85,7 +100,13 @@
 "API Key" = "API キー";
 
 /* The title of the nightscout API secret credential */
-"API Secret" = "API シークレット";
+"API Secret" = "APIシークレット";
+
+/* Action sheet confirmation message for pump history deletion */
+"Are you sure you want to delete all history entries?" = "入力履歴をすべて削除しますか?";
+
+/* Action sheet confirmation message for reservoir deletion */
+"Are you sure you want to delete all reservoir values?" = "リザーバの値をすべて削除しますか?";
 
 /* Confirmation message for deleting a CGM */
 "Are you sure you want to delete this CGM?" = "このCGMを削除しますか?";
@@ -114,7 +135,7 @@
 "Bolusing %1$@" = "%1$@ ボーラス中";
 
 /* The title of the cancel action in an action sheet */
-"Cancel" = "取消";
+"Cancel" = "キャンセル";
 
 /* The title of the cell indicating a bolus is being canceled */
 "Canceling Bolus" = "ボーラスをキャンセルします";
@@ -124,10 +145,16 @@
 
 /* The title of the carb ratios schedule screen
    The title text for the carb ratio schedule */
-"Carb Ratios" = "糖質比";
+"Carb Ratios" = "Carb Ratios";
+
+/* The title of the view controller to create a new carb entry */
+"carb-entry-title-add" = "糖質の記入を追加";
+
+/* The title of the view controller to edit an existing carb entry */
+"carb-entry-title-edit" = "糖質の記入を編集";
 
 /* Title of the prediction input effect for carbohydrates */
-"Carbohydrates" = "糖質";
+"Carbohydrates" = "残存糖質";
 
 /* Description of the prediction input effect for carbohydrates. (1: The glucose unit string) */
 "Carbs Absorbed (g) ÷ Carb Ratio (g/U) × Insulin Sensitivity (%1$@/U)" = "吸収済糖質(g) ÷ 糖質比 (g/U) × インスリン効果値(%1$@/U)";
@@ -147,9 +174,18 @@
 /* Recovery suggestion when glucose data is missing */
 "Check your CGM data source" = "CGM データソースを確認してください";
 
+/* Carb entry section footer text explaining absorption time */
+"Choose a longer absorption time for larger meals, or those containing fats and proteins. This is only guidance to the algorithm and need not be exact." = "量の多い食事や脂質やたんぱく質を含んだ食事には長い吸収時間を選んでください。これはアルゴリズムのための参考で、厳密である必要はありません。";
+
 /* The title text for the looping enabled switch cell */
 "Closed Loop" = "クローズドループ";
 
+/* The format string describing the date of an IOB value. The first format argument is the localized date. */
+"com.loudnate.InsulinKit.IOBDateLabel" = "%1$@ 時点";
+
+/* The format string describing the starting date of a total value. The first format argument is the localized date. */
+"com.loudnate.InsulinKit.totalDateLabel" = "%1$@ より";
+
 /* The title of the action used to dismiss an error alert */
 "com.loudnate.LoopKit.errorAlertActionTitle" = "OK";
 
@@ -159,12 +195,15 @@
 /* The error message displayed for configuration errors. (1: configuration error details) */
 "Configuration Error: %1$@" = "設定エラー: %1$@";
 
+/* Default alert dismissal */
+"Continue" = "次へ";
+
 /* The title of the continuous glucose monitor section in settings */
 "Continuous Glucose Monitor" = "CGM";
 
 /* The title of the glucose target range schedule screen
    The title text for the glucose target range schedule */
-"Correction Range" = "補正範囲";
+"Correction Range" = "ターゲット範囲";
 
 /* Message when offering bolus recommendation even though bg is below range. (1: glucose value) */
 "Current glucose of %1$@ is below correction range." = "現在の血糖値は %1$@ で補正範囲を下回っています。";
@@ -172,15 +211,34 @@
 /* The title of the cell indicating a generic temporary override is enabled */
 "Custom Override" = "カスタムオーバーライド";
 
+/* Date picker label */
+"Date" = "日付";
+
+/* The short unit display string for decibles */
+"dB" = "dB";
+
+/* The title of the button to remove the credentials for a service */
+"Delete Account" = "アカウントを削除";
+
+/* Button title to delete all objects */
+"Delete All" = "すべて削除";
+
 /* Button title to delete CGM */
 "Delete CGM" = "CGMを削除";
 
+/* Button title to delete a service */
+"Delete Service" = "Delete Service";
+
 /* Title text for delivery limits */
 "Delivery Limits" = "注入限度";
 
 /* The action hint of the workout mode toggle button when enabled */
 "Disables" = "無効にする";
 
+/* Default alert dismissal
+   The button label of the action used to dismiss an error alert */
+"Dismiss" = "閉じる";
+
 /* The action hint of the workout mode toggle button when disabled */
 "Enables" = "有効にする";
 
@@ -193,6 +251,9 @@
 /* The alert title for a resume error */
 "Error Resuming" = "再開エラー";
 
+/* Segmented button title for insulin delivery log event history */
+"Event History" = "Event History";
+
 /* The subtitle format describing eventual glucose. (1: localized glucose value description) */
 "Eventually %@" = "予想 %@";
 
@@ -205,6 +266,9 @@
 /* The format string used to describe a finite workout targets duration */
 "For %1$@" = "%1$@につき";
 
+/* The short unit display string for grams */
+"g" = "g";
+
 /* The title of the glucose and prediction graph */
 "Glucose" = "血糖値";
 
@@ -227,7 +291,7 @@
 "Insulin Absorbed (U) × Insulin Sensitivity (%1$@/U)" = "吸収済インスリン(U) × インスリン効果値(%1$@/U)";
 
 /* The title of the insulin delivery graph */
-"Insulin Delivery" = "インスリン放出";
+"Insulin Delivery" = "Insulin Delivery";
 
 /* Details for missing data error when insulin effects are missing */
 "Insulin effects" = "インスリン効果";
@@ -258,18 +322,47 @@
 /* The notification alert describing a long-lasting loop failure. The substitution parameter is the time interval since the last loop */
 "Loop has not completed successfully in %@" = "ループが %@ の間クローズされていません";
 
+/* Details for configuration error when maximum bolus is missing */
+"Maximum Bolus" = "最大ボーラス";
+
+/* The short unit display string for milligrams of glucose per decilter */
+"mg/dL" = "mg/dL";
+
 /* The error message for missing data. (1: missing data details) */
 "Missing data: %1$@" = "データがありません: %1$@";
 
+/* The short unit display string for millimoles of glucose per liter */
+"mmol/L" = "mmol/L";
+
 /* Details for missing data error when momentum effects are missing */
 "Momentum effects" = "モメンタム効果";
 
+/* Text for more info action on notification of upcoming profile expiration */
+"More Info" = "詳細";
+
+/* Sensor state description for the non-valid state */
+"Needs Attention" = "注意してください";
+
 /* The title of the Nightscout service */
 "Nightscout" = "Nightscout";
 
 /* The error message displayed for device connection errors. */
 "No connected devices, or failure during device connection" = "機器が未接続、または接続に問題";
 
+/* Alert acknowledgment OK button
+   Critical Alert permissions disabled alert button
+   Default action for alert when alert acknowledgment fails
+   Notifications permissions disabled alert button
+   Text for ok action on notification of upcoming profile expiration
+   The title of the notification action to acknowledge a device alert */
+"OK" = "OK";
+
+/* Notification Setting Status is On */
+"On" = "オン";
+
+/* The title text for the override presets */
+"Override Presets" = "オーバーライドプリセット";
+
 /* The label of the pre-meal mode toggle button */
 "Pre-Meal Targets" = "食前ターゲット";
 
@@ -291,6 +384,9 @@
 /* The error message when pump data is too old to be used. (1: pump data age in minutes) */
 "Pump data is %1$@ old" = "ポンプデータが %1$@前のものです";
 
+/* The title of the screen displaying a pump event */
+"Pump Event" = "ポンプイベント";
+
 /* Details for configuration error when pump manager is missing */
 "Pump Manager" = "ポンプ設定";
 
@@ -303,6 +399,9 @@
 /* The title of the cell indicating the pump is suspended */
 "Pump Suspended" = "ポンプ一時停止中";
 
+/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
+"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
+
 /* Title of insulin model preset */
 "Rapid-Acting – Adults" = "超速攻型 - 大人";
 
@@ -319,7 +418,7 @@
 "Recommended Bolus: %@ Units" = "推奨ボーラス: %@ 単位";
 
 /* Details for missing data error when reservoir data is missing */
-"Reservoir" = "リザーバ";
+"Reservoir" = "Reservoir";
 
 /* Title of the prediction input effect for retrospective correction */
 "Retrospective Correction" = "レトロ補正";
@@ -340,7 +439,7 @@
 "since %@" = "%@ から";
 
 /* The title of the nightscout site URL credential */
-"Site URL" = "アドレス";
+"Site URL" = "URL";
 
 /* The format for the description of a temporary override start date */
 "starting at %@" = "%@から開始";
@@ -357,12 +456,19 @@
 /* Subtitle description of Walsh insulin model setting */
 "The legacy model used by Loop, allowing customization of action duration." = "ループのレガシーモデルで、作用期間をカスタマイズできます。";
 
+/* Alert body displayed absorption time greater than max (1: maximum absorption time) */
+"The maximum absorption time is %@" = "最大吸収時間: %@";
+
 /* Body of the alert describing a maximum bolus validation error. (1: The localized max bolus value) */
 "The maximum bolus amount is %@ Units" = "最大ボーラス量は %@単位です";
 
 /* The short unit display string for international units of insulin */
 "U" = "U";
 
+/* Event title displayed when StoredPumpEvent.title is not set
+   The default description to use when an entry has no dose description */
+"Unknown" = "不明";
+
 /* The format for the description of a temporary override end date */
 "until %@" = "%@まで";
 
diff --git a/Loop/ja.lproj/Main.strings b/Loop/ja.lproj/Main.strings
index 6a1c81809..efa46d8f0 100644
--- a/Loop/ja.lproj/Main.strings
+++ b/Loop/ja.lproj/Main.strings
@@ -1,3 +1,6 @@
+/* Class = "UILabel"; text = "g"; ObjectID = "0RV-d5-muE"; */
+"0RV-d5-muE.text" = "g";
+
 /* Class = "UINavigationItem"; title = "Status"; ObjectID = "3kU-n2-fha"; */
 "3kU-n2-fha.title" = "ステータス";
 
@@ -8,7 +11,7 @@
 "87H-N1-0vJ.text" = "予想";
 
 /* Class = "UILabel"; text = "Detail"; ObjectID = "aCb-Qs-bpu"; */
-"aCb-Qs-bpu.text" = "詳細";
+"aCb-Qs-bpu.text" = "Detail";
 
 /* Class = "UILabel"; text = "Label"; ObjectID = "bIL-Ub-qYp"; */
 "bIL-Ub-qYp.text" = "ラベル";
@@ -31,6 +34,9 @@
 /* Class = "UILabel"; text = "Observed"; ObjectID = "EAn-Ja-S1d"; */
 "EAn-Ja-S1d.text" = "観察";
 
+/* Class = "UILabel"; text = "3.5 U/hour @ 12:12 PM"; ObjectID = "fWV-jg-ICt"; */
+"fWV-jg-ICt.text" = "3.5 U/時 @ 12:12 PM";
+
 /* Class = "UITableViewController"; title = "Carbohydrate Effects"; ObjectID = "hZZ-2S-lrd"; */
 "hZZ-2S-lrd.title" = "糖質効果";
 
@@ -38,7 +44,7 @@
 "IxU-As-glo.text" = "観察されたグルコース値の変動から、インスリン注入のモデルによる変動を引くことにより、糖質の吸収を推定することができます。";
 
 /* Class = "UILabel"; text = "Detail"; ObjectID = "J7x-W5-gwo"; */
-"J7x-W5-gwo.text" = "詳細";
+"J7x-W5-gwo.text" = "Detail";
 
 /* Class = "UILabel"; text = "Recommended Basal"; ObjectID = "k3F-Na-7mn"; */
 "k3F-Na-7mn.text" = "推奨基礎分泌量";
@@ -67,11 +73,14 @@
 /* Class = "UINavigationItem"; title = "Carbohydrates"; ObjectID = "Vpi-5b-bY5"; */
 "Vpi-5b-bY5.title" = "残存糖質";
 
+/* Class = "UILabel"; text = "Recommended Basal"; ObjectID = "xhx-PI-bBI"; */
+"xhx-PI-bBI.text" = "推奨基礎分泌量";
+
 /* Class = "UILabel"; text = "0"; ObjectID = "yn7-2M-jZz"; */
 "yn7-2M-jZz.text" = "0";
 
 /* Class = "UILabel"; text = "Title"; ObjectID = "zbc-87-wxZ"; */
-"zbc-87-wxZ.text" = "タイトル";
+"zbc-87-wxZ.text" = "Title";
 
 /* Class = "UILabel"; text = "0"; ObjectID = "zvZ-uf-zMX"; */
 "zvZ-uf-zMX.text" = "0";
diff --git a/Loop/nb.lproj/InfoPlist.strings b/Loop/nb.lproj/InfoPlist.strings
index e0d723d67..4e6970dff 100644
--- a/Loop/nb.lproj/InfoPlist.strings
+++ b/Loop/nb.lproj/InfoPlist.strings
@@ -20,7 +20,7 @@
 "NSHealthShareUsageDescription" = "Matdata fra Health-databasen brukes til å bestemme blodsukkereffekt. Blodsukkerdata hentes fra HealthKit for opptegning og analyse.";
 
 /* Privacy - Health Update Usage Description */
-"NSHealthUpdateUsageDescription" = "Angitte karbohydrater i matdataene som tastes inn i appen blir lagret i Health-databasen.";
+"NSHealthUpdateUsageDescription" = "Karbohydratmåltidsdata som legges inn i appen og på klokken lagres i Helsedatabasen. Glukosedata hentet fra CGM lagres sikkert i HealthKit.";
 
 /* Privacy - Siri Usage Description */
 "NSSiriUsageDescription" = "Loop bruker Siri slik at du kan bruke forhåndsinnstillinger med stemmen din.";
diff --git a/Loop/nb.lproj/Localizable.strings b/Loop/nb.lproj/Localizable.strings
index 210ef9047..d941f0e45 100644
--- a/Loop/nb.lproj/Localizable.strings
+++ b/Loop/nb.lproj/Localizable.strings
@@ -1,5 +1,5 @@
 /* The string format appended to active insulin that describes pending insulin. (1: pending insulin) */
-" (pending: %@)" = " (Gjenstår: %@)";
+" (pending: %@)" = "(venter: %@ )";
 
 /* Status row title for premeal override enabled (leading space is to separate from symbol) */
 " Pre-meal Preset" = " Forhåndsinnstilling før måltid";
@@ -14,7 +14,7 @@
 " Workout Preset" = "Forhåndsinnstilling for trening";
 
 /* String denoting lack of a recommended bolus amount in the simple bolus calculator */
-"–" = "—";
+"–" = "–";
 
 /* No comment provided by engineer. */
 "– –" = "– –";
@@ -38,7 +38,7 @@
 "%@ U Total" = "%@ E Totalt";
 
 /* Appends a full-stop to a statement */
-"%@." = "%@.";
+"%@." = "%@ .";
 
 /* Alert text for failing to cancel temp basal (1: reason description, 2: app name) */
 "%@%@ was unable to cancel your current temporary basal rate, which is higher than the new Max Basal limit you have set. This may result in higher insulin delivery than desired.\n\nConsider suspending insulin delivery manually and then immediately resuming to enact basal delivery with the new limit in place." = "%1$@ %2$@ kunne ikke avbryte den nåværende midlertidige basaldosen, som er høyere enn den nye maksimale basalgrensen du har angitt. Dette kan føre til høyere insulintilførsel enn ønsket. \n\n Vurder å avbryte insulintilførselen manuelt og deretter umiddelbart gjenoppta for å innføre basaltilførsel med den nye grensen på plass.";
@@ -53,7 +53,7 @@
 "%1$@ %2$@" = "%1$@ %2$@";
 
 /* Format string for carb ratio average. (1: value)(2: carb unit) */
-"%1$@ %2$@/U" = "%1$@ %2$@/E";
+"%1$@ %2$@/U" = "%1$@ %2$@ /E";
 
 /* Formats (1: carb start time) and (2: carb absorption duration) */
 "%1$@ + %2$@" = "%1$@ + %2$@";
@@ -74,7 +74,7 @@
 "%1$@ U" = "%1$@ E";
 
 /* Low reservoir alert format string. (1: Number of units remaining) */
-"%1$@ U left" = "%1$@ E gjenstår";
+"%1$@ U left" = "%1$@ E igjen";
 
 /* Low reservoir alert with time remaining format string. (1: Number of units remaining)(2: approximate time remaining) */
 "%1$@ U left: %2$@" = "%1$@ E gjenstår: %2$@";
@@ -83,13 +83,13 @@
 "%1$@ U/hour @ %2$@" = "%1$@ E/timen @ %2$@";
 
 /* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
-"%1$@ v%2$@" = "%1$@ v%2$@";
+"%1$@ v%2$@" = "%1$@ v %2$@";
 
 /* Format string for body for notification of upcoming provisioning profile expiration. (1: app name) (2: amount of time until expiration */
 "%1$@ will stop working in %2$@. You will need to update before that, with a new provisioning profile." = "%1$@ slutter å fungere om %2$@ . Du må oppdatere før det, med en ny klargjøringsprofil.";
 
 /* Formats (1: carb value) and (2: food type) */
-"%1$@: %2$@" = "%1$@: %2$@";
+"%1$@: %2$@" = "%1$@ : %2$@";
 
 /* Description of a basal temp basal dose entry (1: title for dose type, 2: value (? if no value) in bold, 3: unit)
    Description of a bolus dose entry (1: title for dose type, 2: value (? if no value) in bold, 3: unit) */
@@ -111,10 +111,10 @@
 "A manual glucose entry must be between %1$@ and %2$@." = "En manuell BS-registrering må være mellom %1$@ og %2$@ .";
 
 /* Subtitle of Fiasp preset */
-"A model based on the published absorption of Fiasp insulin." = "En modell basert på publiserte data for absorpsjon av Fiasp insulin.";
+"A model based on the published absorption of Fiasp insulin." = "En modell basert på publisert absorpsjon av Fiasp-insulin.";
 
 /* Subtitle of Rapid-Acting – Adult preset */
-"A model based on the published absorption of Humalog, Novolog, and Apidra insulin in adults." = "En modell basert på publiserte data for absorpsjon av Humalog, Novolog og Apidra insulin hos voksne.";
+"A model based on the published absorption of Humalog, Novolog, and Apidra insulin in adults." = "En modell basert på publisert absorpsjon av Humalog, Novolog og Apidra insulin hos voksne.";
 
 /* Software update available section footer (1: app name) */
 "A new version of %@ is available and is recommended to continue using the app." = "En ny versjon av %@ er tilgjengelig og anbefales for å fortsette å bruke appen.";
@@ -126,7 +126,7 @@
 "A pump must be configured before a bolus can be delivered." = "En pumpe må konfigureres før en bolus kan tilføres.";
 
 /* Title of the carb entry absorption time cell */
-"Absorption Time" = "Absorpsjonstid";
+"Absorption Time" = "Absorbsjonstid";
 
 /* Action to copy the recommended Bolus value to the actual Bolus Field */
 "AcceptRecommendedBolus" = "AksepterAnbefaltBolus";
@@ -181,7 +181,7 @@
 "Amplitude" = "Amplitude";
 
 /* Warning to ensure the carb entry is accurate during an override */
-"An active override is modifying your carb ratio and insulin sensitivity. If you don't want this to affect your bolus calculation and projected glucose, consider turning off the override." = "En aktiv overstyring er å endre karbohydratforholdet og insulinfølsomheten. Hvis du ikke vil at dette skal påvirke bolusberegningen og projisert blodsukker, bør du vurdere å slå av overstyringen.";
+"An active override is modifying your carb ratio and insulin sensitivity. If you don't want this to affect your bolus calculation and projected glucose, consider turning off the override." = "En aktiv overstyring modifiserer ditt karbohydratforhold og insulinfølsomhet. Hvis du ikke vil at dette skal påvirke bolusberegningen og projisert blodsukker, bør du vurdere å slå av overstyringen.";
 
 /* Alert message for a carb entry persistence error */
 "An error occurred while trying to save your carb entry." = "Det oppstod en feil under forsøk på å lagre karbohydratregistreringen.";
@@ -205,7 +205,7 @@
 "App Profile" = "App-profil";
 
 /* Action sheet confirmation message for pump history deletion */
-"Are you sure you want to delete all history entries?" = "Er du sikker på at du vil slette alle historiske registreringer?";
+"Are you sure you want to delete all history entries?" = "Er du sikker på at du vil slette alle historiske innslag?";
 
 /* Action sheet confirmation message for logged dose deletion */
 "Are you sure you want to delete all logged dose entries?" = "Er du sikker på at du vil slette alle loggførte doseoppføringer?";
@@ -217,16 +217,16 @@
 "Are you sure you want to delete all your %@ Data?\n(This action is not reversible)" = "Er du sikker på at du vil slette alle dine %@ Data?\n(Denne handlingen kan ikke angres)";
 
 /* Confirmation message for deleting a CGM */
-"Are you sure you want to delete this CGM?" = "Er du sikker på at du vil slette denne CGM?";
+"Are you sure you want to delete this CGM?" = "Er du sikker på at du vil slette CGM?";
 
 /* Confirmation message for deleting a service */
 "Are you sure you want to delete this service?" = "Er du sikker på at du vil slette denne tjenesten?";
 
 /* Format fragment for a specific time */
-"at %@" = "kl. %@";
+"at %@" = "kl %@";
 
 /* The message displayed during a device authentication prompt for bolus specification */
-"Authenticate to Bolus %@ Units" = "Autentiser for å gi bolus %@ E";
+"Authenticate to Bolus %@ Units" = "Autentiserer for å gi %@ Enheter i Bolus";
 
 /* The message displayed during a device authentication prompt to log an insulin dose */
 "Authenticate to log %@ Units" = "Autentiser for å logge %@ Enheter";
@@ -236,7 +236,7 @@
 
 /* The title of the basal rate profile screen
    The title text for the basal rate schedule */
-"Basal Rates" = "Basal ratio";
+"Basal Rates" = "Basal-satser";
 
 /* Caption for bolus screen notice when no bolus is recommended for the predicted glucose */
 "Based on your predicted glucose, no bolus is recommended." = "Basert på ditt forventede blodsukker, anbefales ingen bolus.";
@@ -270,7 +270,7 @@
 "Bolus Too Small" = "Bolus er for liten";
 
 /* The format string for bolus progress. (1: delivered volume)(2: total volume) */
-"Bolused %1$@ of %2$@" = "Ga bolus %1$@ av %2$@";
+"Bolused %1$@ of %2$@" = "Bolus %1$@ av %2$@";
 
 /* The format string for bolus in progress showing total volume. (1: total volume) */
 "Bolusing %1$@" = "Gir bolus %1$@";
@@ -282,7 +282,7 @@
 "Canceling Bolus" = "Avbryter bolus";
 
 /* Details for missing data error when carb effects are missing */
-"Carb effects" = "Karbohydrateffekter";
+"Carb effects" = "Karb effekter";
 
 /* Back button text for bolus screen to return to carb entry screen
    Label for carb entry row on bolus screen */
@@ -293,13 +293,13 @@
 
 /* The title of the carb ratios schedule screen
    The title text for the carb ratio schedule */
-"Carb Ratios" = "Karbohydratsforhold";
+"Carb Ratios" = "Karb forhold";
 
 /* The title of the view controller to create a new carb entry */
 "carb-entry-title-add" = "Legg til karbohydrater";
 
 /* The title of the view controller to edit an existing carb entry */
-"carb-entry-title-edit" = "Endre karbohydrat registeringen";
+"carb-entry-title-edit" = "Rediger karbohydrater";
 
 /* Title for bolus screen warning when carbohydrate entry is too large */
 "Carbohydrate Entry Too Large" = "Karbohydratinntaket er for stort";
@@ -308,19 +308,19 @@
 "Carbohydrates" = "Karbohydrater";
 
 /* Description of the prediction input effect for carbohydrates. (1: The glucose unit string) */
-"Carbs Absorbed (g) ÷ Carb Ratio (g/U) × Insulin Sensitivity (%1$@/U)" = "Karbohydrater absorbert (g) ÷ Karbohydratforhold (g/E) × Insulinfølsomhet (%1$@/E)";
+"Carbs Absorbed (g) ÷ Carb Ratio (g/U) × Insulin Sensitivity (%1$@/U)" = "Karbohydrater absorbert (g) ÷ karbohydratforhold (g / E) × insulinfølsomhet (%1$@ / E)";
 
 /* The notification alert describing a low pump battery */
-"Change the pump battery immediately" = "Bytt batteri på pumpe snarest";
+"Change the pump battery immediately" = "Skift pumpebatteri umiddelbart";
 
 /* The notification alert describing an empty pump reservoir */
-"Change the pump reservoir now" = "Bytt reservoar på pumpe nå";
+"Change the pump reservoir now" = "Bytt pumpereservoar nå";
 
 /* Details for configuration error when one or more loop settings are missing */
 "Check settings" = "Sjekk innstillinger";
 
 /* Recovery suggestion when reservoir data is missing */
-"Check that your pump is in range" = "Sjekk at pumpen er innen rekkevidde";
+"Check that your pump is in range" = "Sjekk at pumpen din er innenfor rekkevidde";
 
 /* Recovery suggestion when glucose data is missing */
 "Check your CGM data source" = "Sjekk CGM";
@@ -329,7 +329,7 @@
 "Check your device time and/or remove any invalid data from Apple Health." = "Sjekk enhetens klokke og/ eller fjern eventuelle ugyldige data fra Apple Helse.";
 
 /* Carb entry section footer text explaining absorption time */
-"Choose a longer absorption time for larger meals, or those containing fats and proteins. This is only guidance to the algorithm and need not be exact." = "Velg en lengre absorpsjonstid for større måltider, eller de som inneholder fett og proteiner. Dette er bare veiledning til algoritmen og trenger ikke være nøyaktig.";
+"Choose a longer absorption time for larger meals, or those containing fats and proteins. This is only guidance to the algorithm and need not be exact." = "Velg en lengre absorpsjonstid for større måltider, eller de som inneholder fett og proteiner. Dette er bare veiledning til algoritmen og trenger ikke å være nøyaktig.";
 
 /* The button label of the action used to dismiss the unsafe notification permission alert */
 "Close" = "Lukk";
@@ -353,7 +353,7 @@
 "com.loudnate.InsulinKit.totalDateLabel" = "siden %1$@";
 
 /* The title of the action used to dismiss an error alert */
-"com.loudnate.LoopKit.errorAlertActionTitle" = "OK";
+"com.loudnate.LoopKit.errorAlertActionTitle" = "Ok";
 
 /* Title text for button to complete setup */
 "Complete Setup" = "Fullfør oppsett";
@@ -375,7 +375,7 @@
 "Correction Range" = "Korreksjonsområde";
 
 /* Critical Alerts Status text */
-"Critical Alerts" = "Kristiske varsler";
+"Critical Alerts" = "Kritiske varsler";
 
 /* Critical event log ready text */
 "Critical Event Log Ready" = "Kritisk hendelseslogg er klar";
@@ -390,13 +390,13 @@
 "Current Glucose" = "Nåværende blodsukker";
 
 /* Message when offering bolus recommendation even though bg is below range. (1: glucose value) */
-"Current glucose of %1$@ is below correction range." = "Nåværende blodsukker på %1$@ er under korreksjonssområde.";
+"Current glucose of %1$@ is below correction range." = "Gjeldende glukose på %1$@ er under korreksjonsområdet.";
 
 /* The title of the cell indicating a generic temporary override is enabled */
 "Custom Override" = "Tilpasset overstyring";
 
 /* The title of the cell indicating a generic custom preset is enabled */
-"Custom Preset" = "Egendefinerte tilpasninger";
+"Custom Preset" = "Egendefinert forhåndsinnstilling";
 
 /* Date picker label */
 "Date" = "Dato";
@@ -408,7 +408,7 @@
 "Delete" = "Slett";
 
 /* The title of the button to remove the credentials for a service */
-"Delete Account" = "Slett konto";
+"Delete Account" = "Slett Konto";
 
 /* Button title to delete all objects */
 "Delete All" = "Slett alle";
@@ -429,7 +429,7 @@
 "Delete Testing Pump Data" = "Slett data for testpumpe";
 
 /* Button text to deliver a bolus */
-"Deliver" = "Gi";
+"Deliver" = "Gi bolus";
 
 /* Title text for delivery limits */
 "Delivery Limits" = "Leveringsgrenser";
@@ -441,11 +441,11 @@
 "Did you intend to enter %1$@ grams as the amount of carbohydrates for this meal?" = "Hadde du tenkt å angi %1$@ gram som mengde karbohydrater for dette måltidet?";
 
 /* The action hint of the workout mode toggle button when enabled */
-"Disables" = "Deaktiver";
+"Disables" = "Deaktiverer";
 
 /* Default alert dismissal
    The button label of the action used to dismiss an error alert */
-"Dismiss" = "Ignorer";
+"Dismiss" = "Avvis";
 
 /* No comment provided by engineer. */
 "Done" = "Ferdig";
@@ -456,6 +456,9 @@
 /* The title of the Dosing Strategy section in settings */
 "Dosing Strategy" = "Doseringsstrategi";
 
+/* Remote command error description: duration exceed max (1: max duration in hours). */
+"Duration exceeds: %1$.1f hours" = "Varigheten overskrider: %1$.1f timer";
+
 /* Message to the user to enable bluetooth */
 "Enable\nBluetooth" = "Aktiver blåtann";
 
@@ -475,7 +478,7 @@
 "Enter glucose safety limit" = "Angi sikkerhetsgrensen for blodsukker";
 
 /* The placeholder text instructing users to enter a suspend treshold */
-"Enter suspend threshold" = "Legg til grense for insulinstopp";
+"Enter suspend threshold" = "Angi suspenderingsgrense";
 
 /* The alert title for an error while canceling a bolus */
 "Error Canceling Bolus" = "Kunne ikke avbryte bolus";
@@ -484,13 +487,13 @@
 "Error Exporting Logs" = "Feil ved eksport av logger";
 
 /* The alert title for a resume error */
-"Error Resuming" = "Kunne ikke gjenoppta";
+"Error Resuming" = "Feil ved gjenopptagelse";
 
 /* Segmented button title for insulin delivery log event history */
 "Event History" = "Hendelseshistorie";
 
 /* The subtitle format describing eventual glucose. (1: localized glucose value description) */
-"Eventually %@" = "Omsider %@";
+"Eventually %@" = "Til slutt %@";
 
 /* Remote command error description: bolus exceeds maximum bolus in settings. */
 "Exceeds maximum allowed bolus in settings" = "Overskrider maksimalt tillatt bolus i innstillingene";
@@ -499,7 +502,7 @@
 "Exceeds maximum allowed carbs" = "Overskrider maksimalt tillatte karbohydrater";
 
 /* The title of the alert describing a maximum bolus validation error */
-"Exceeds Maximum Bolus" = "Overskrider maks bolus";
+"Exceeds Maximum Bolus" = "Overskrider maksimal bolus";
 
 /* The title of the export critical event logs in support */
 "Export Critical Event Logs" = "Eksporter kritiske hendelseslogger";
@@ -508,7 +511,7 @@
 "Export-%1$@" = "Eksporter- %1$@";
 
 /* The alert title for a resume error */
-"Failed to Resume Insulin Delivery" = "Insulinleveringen kunne ikke gjenopptas";
+"Failed to Resume Insulin Delivery" = "Kunne ikke gjenoppta insulinlevering";
 
 /* Title of insulin model preset */
 "Fiasp" = "Fiasp";
@@ -520,7 +523,7 @@
 "Fix now by turning Notifications, Critical Alerts and Time Sensitive Notifications ON." = "Fiks nå ved å slå PÅ varsler, kritiske varsler og tidssensitive varsler.";
 
 /* The format string used to describe a finite workout targets duration */
-"For %1$@" = "Til %1$@";
+"For %1$@" = "I %1$@";
 
 /* No comment provided by engineer. */
 "Forecasted blood glucose may still be higher than target range." = "Forventet blodsukker kan fortsatt være høyere enn målområdet.";
@@ -535,7 +538,7 @@
 "Get help with Alert Permissions" = "Få hjelp med varslingsinnstillinger";
 
 /* The title of the glucose and prediction graph */
-"Glucose" = "Glukose";
+"Glucose" = "Blodsukker";
 
 /* The error message when glucose data is too old to be used. (1: glucose data age in minutes) */
 "Glucose data is %1$@ old" = "Blodsukkerdata er %1$@ gammel";
@@ -551,7 +554,7 @@
 "Glucose Entry Out of Range" = "Blodsukkerdata er utenfor intervallet";
 
 /* Title of the prediction input effect for glucose momentum */
-"Glucose Momentum" = "Glukosemomentum";
+"Glucose Momentum" = "Glukose Momentum";
 
 /* Details for configuration error when glucose target range schedule is missing */
 "Glucose Target Range Schedule" = "Tidsplan for blodsukker målområde";
@@ -563,7 +566,7 @@
 "Immediate" = "Umiddelbar";
 
 /* The title of a target alert action specifying an indefinitely long workout targets duration */
-"Indefinitely" = "Uendelig";
+"Indefinitely" = "På ubestemt tid";
 
 /* Title of the alert when carb input maximum was exceeded. */
 "Input Maximum Exceeded" = "Maksimalt antall er overskredet";
@@ -572,45 +575,48 @@
 "Insulin" = "Insulin";
 
 /* Description of the prediction input effect for insulin */
-"Insulin Absorbed (U) × Insulin Sensitivity (%1$@/U)" = "Insulin absorbert (E) × Insulinfølsomhet (%1$@/E)";
+"Insulin Absorbed (U) × Insulin Sensitivity (%1$@/U)" = "Insulin absorbert (E) × insulinfølsomhet ( %1$@ /E)";
 
 /* Notification body for crash recovery alert */
 "Insulin adjustments have been disabled!" = "Insulinjusteringer er deaktivert!";
 
 /* The title of the insulin delivery graph */
-"Insulin Delivery" = "Insulinlevering";
+"Insulin Delivery" = "Insulin Delivery";
 
 /* Details for missing data error when insulin effects are missing */
-"Insulin effects" = "Insulineffekter";
+"Insulin effects" = "Insulin effekt";
 
 /* Details for configuration error when insulin model is missing
    The title text for the insulin model setting row */
-"Insulin Model" = "Insulinmodell";
+"Insulin Model" = "Insulin modell";
 
 /* Descriptive text for Insulin Pump */
 "Insulin Pump" = "Insulinpumpe";
 
 /* The title of the insulin sensitivities schedule screen
    The title text for the insulin sensitivity schedule */
-"Insulin Sensitivities" = "Insulinfølsomhet";
+"Insulin Sensitivities" = "Insulinsensitivitet";
 
 /* Details for configuration error when insulin sensitivity schedule is missing */
 "Insulin Sensitivity Schedule" = "Insulin følsomhet tidsplan";
 
 /* The title of the cell indicating the pump is suspended */
-"Insulin Suspended" = "Insulin pauset";
+"Insulin Suspended" = "Insulintilførsel utsatt";
 
 /* Insulin type label */
-"Insulin Type" = "Insulin Type";
+"Insulin Type" = "Insulintype";
 
 /* Description of an interrupted bolus dose entry (1: title for dose type, 2: value (? if no value) in bold, 3: programmed value (? if no value), 4: unit) */
 "Interrupted %1$@: <b>%2$@</b> of %3$@ %4$@" = "Avbrutt %1$@: <b>%2$@</b> av %3$@ %4$@";
 
+/* Remote command error description: invalid bolus amount. */
+"Invalid Bolus Amount" = "Ugyldig bolusmengde";
+
 /* Remote command error description: invalid carb amount. */
 "Invalid carb amount" = "Ugyldig karbohydratmengde";
 
 /* The error message when invalid data was encountered. (1: details of invalid data) */
-"Invalid data: %1$@" = "Ugyldig data: %1$@";
+"Invalid data: %1$@" = "Ugyldige data: %1$@";
 
 /* Title for bolus screen notice when glucose data is in the future */
 "Invalid Future Glucose" = "Ugyldig fremtidig blodsukker";
@@ -619,13 +625,16 @@
 "Invalid glucose reading with a timestamp that is %1$@ in the future" = "Ugyldig blodsukkermåling med et tidsstempel som er %1$@ i fremtiden";
 
 /* The title text for the issue report cell */
-"Issue Report" = "Hendelsesrapport";
+"Issue Report" = "Problem Rapport";
+
+/* The notification description for a meal that was possibly not logged in Loop. */
+"It looks like you may not have logged a meal you ate. Tap to log it now." = "Det ser ut til at du kanskje ikke har logget et måltid du har spist. Trykk for å logge den nå.";
 
 /* Title of the warning shown when a large meal was entered */
 "Large Meal Entered" = "Angitt Stort Måltid";
 
 /* Glucose HUD accessibility hint */
-"Launches CGM app" = "Starter CGM app";
+"Launches CGM app" = "Laster inn CGM-appen";
 
 /* OK button title for alert shown when delivery status is uncertain */
 "Learn More" = "Lære mer";
@@ -634,7 +643,7 @@
 "Less than a minute remaining" = "Mindre enn et minutt gjenstår";
 
 /* The loading message for the diagnostic report screen */
-"Loading..." = "Laster...";
+"Loading..." = "Laster inn...";
 
 /* Button text to log a dose
    Title for dose logging screen */
@@ -647,13 +656,16 @@
 "Loop Crashed" = "Loop krasjet";
 
 /* The notification title for a loop failure */
-"Loop Failure" = "Loop feilet";
+"Loop Failure" = "Loop-feil";
 
 /* Bluetooth unavailable alert body. */
 "Loop has detected an issue with your Bluetooth settings, and will not work successfully until Bluetooth is enabled. You will not receive glucose readings, or be able to bolus." = "Loop har oppdaget et problem med Bluetooth-innstillingene dine, og vil ikke fungere før Bluetooth er aktivert. Du vil ikke motta blodsukkermålinger, eller være i stand til å gi bolus.";
 
+/* Warning displayed when user is adding a meal from an missed meal notification */
+"Loop has detected an missed meal and estimated its size. Edit the carb amount to match the amount of any carbs you may have eaten." = "Loop har oppdaget et glemt måltid og estimert størrelsen. Rediger karbohydratmengden for å matche mengden av karbohydrater du måtte ha spist.";
+
 /* The notification alert describing a long-lasting loop failure. The substitution parameter is the time interval since the last loop */
-"Loop has not completed successfully in %@" = "Loop har ikke kjørt vellykket på %@";
+"Loop has not completed successfully in %@" = "Loop er ikke fullført i %@";
 
 /* Description string for automatic bolus dosing strategy */
 "Loop will automatically bolus when insulin needs are above scheduled basal, and will use temporary basal rates when needed to reduce insulin delivery below scheduled basal." = "Lopp vil sette bolus når insulinbehovet er over planlagt basal, og vil bruke midlertidige basale rater når det er nødvendig for å redusere insulintilførselen under planlagt basal";
@@ -693,7 +705,7 @@
 "mg/dL" = "mg/dL";
 
 /* The error message for missing data. (1: missing data details) */
-"Missing data: %1$@" = "Mangler data: %1$@";
+"Missing data: %1$@" = "Manglende data: %1$@";
 
 /* Remote command error description: missing maximum bolus in settings. */
 "Missing maximum allowed bolus in settings" = "Mangler maksimalt tillatt bolus i innstillingene";
@@ -702,7 +714,7 @@
 "mmol/L" = "mmol/L";
 
 /* Details for missing data error when momentum effects are missing */
-"Momentum effects" = "Momentumeffekter";
+"Momentum effects" = "Momentum effekt";
 
 /* Text for more info action on notification of upcoming profile expiration */
 "More Info" = "Mer info";
@@ -713,6 +725,9 @@
 /* Sensor state description for the non-valid state */
 "Needs Attention" = "Trenger tilsyn";
 
+/* Remote command error description: negative duration error. */
+"Negative duration not allowed" = "Negativ varighet ikke tillatt";
+
 /* The title of the Nightscout service */
 "Nightscout" = "Nightscout";
 
@@ -725,7 +740,7 @@
 "No Bolus Recommended" = "Ingen anbefalt bolus";
 
 /* The error message displayed for device connection errors. */
-"No connected devices, or failure during device connection" = "Ingen tilkoblede enheter, eller feil under tilkobling til enhet";
+"No connected devices, or failure during device connection" = "Ingen tilkoblede enheter, eller feil under enhetstilkobling";
 
 /* Alert title for a missing maximum bolus setting error */
 "No Maximum Bolus Configured" = "Ingen maksimal bolus er konfigurert";
@@ -775,16 +790,19 @@
    Notifications permissions disabled alert button
    Text for ok action on notification of upcoming profile expiration
    The title of the notification action to acknowledge a device alert */
-"OK" = "OK";
+"OK" = "Ok";
 
 /* Notification Setting Status is On */
 "On" = "På";
 
 /* The title text for the override presets */
-"Override Presets" = "Forhåndslagrede overstyringer";
+"Override Presets" = "Egendefinerte overstyringer";
+
+/* The notification title for a meal that was possibly not logged in Loop. */
+"Possible Missed Meal" = "Mulig savnet måltid";
 
 /* The label of the pre-meal mode toggle button */
-"Pre-Meal Targets" = "Pre-måltids mål";
+"Pre-Meal Targets" = "Målområde før måltid";
 
 /* 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 kl %1$@ er %2$@.";
@@ -799,7 +817,7 @@
 "Predicted glucose of %1$@ is below your suspend threshold setting." = "Forventet blodsukker %1$@ er lavere enn innstilling for insulinstopp";
 
 /* Format string describing retrospective glucose prediction comparison. (1: Predicted glucose)(2: Actual glucose)(3: difference) */
-"Predicted: %1$@\nActual: %2$@ (%3$@)" = "Forespeilet: %1$@\nFaktisk: %2$@ (%3$@)";
+"Predicted: %1$@\nActual: %2$@ (%3$@)" = "Forventet: %1$@\nFaktisk: %2$@ ( %3$@ )";
 
 /* Preparing critical event log text */
 "Preparing Critical Event Logs" = "Forbereder logg av kritiske hendelser";
@@ -817,28 +835,28 @@
 "Pump" = "Pumpe";
 
 /* The notification title for a low pump battery */
-"Pump Battery Low" = "Pumpebatteri lavt";
+"Pump Battery Low" = "Lavt pumpebatteri";
 
 /* The error message when pump data is too old to be used. (1: pump data age in minutes) */
-"Pump data is %1$@ old" = "Pumpedata er %1$@ gammelt";
+"Pump data is %1$@ old" = "Pumpedata er %1$@ gamle";
 
 /* The title of the screen displaying a pump event */
 "Pump Event" = "Pumpehendelse";
 
 /* Details for configuration error when pump manager is missing */
-"Pump Manager" = "Pumpeinnstilling";
+"Pump Manager" = "Pumpe manager";
 
 /* The error message displayed for pump manager errors. (1: pump manager error) */
 "Pump Manager Error: %1$@" = "Pump Manager-feil: %1$@";
 
 /* The notification title for an empty pump reservoir */
-"Pump Reservoir Empty" = "Pumpereservoar tomt";
+"Pump Reservoir Empty" = "Pumpereservoar Tomt";
 
 /* The notification title for a low pump reservoir */
-"Pump Reservoir Low" = "Pumpereservoar lavt";
+"Pump Reservoir Low" = "Pumpereservoar Lavt";
 
 /* The title of the cell indicating the pump is suspended */
-"Pump Suspended" = "Pumpe satt på pause";
+"Pump Suspended" = "Pumpe Utsatt";
 
 /* The error message displayed for pumpSuspended errors. */
 "Pump Suspended. Automatic dosing is disabled." = "Pumpe suspendert. Automatisk dosing er deaktivert.";
@@ -847,16 +865,16 @@
 "QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
 
 /* Title of insulin model preset */
-"Rapid-Acting – Adults" = "Hurtigvirkende – voksen";
+"Rapid-Acting – Adults" = "Hurtigvirkende - Voksen";
 
 /* Title of insulin model preset */
-"Rapid-Acting – Children" = "Hurtigvirkende – Barn";
+"Rapid-Acting – Children" = "Hurtigvirkende - Barn";
 
 /* The error message when a recommendation has expired. (1: age of recommendation in minutes) */
 "Recommendation expired: %1$@ old" = "Anbefaling utløpt: %1$@ gammelt";
 
 /* The title of the cell displaying a recommended temp basal value */
-"Recommended Basal" = "Anbefalt basal";
+"Recommended Basal" = "Anbefalt Basal";
 
 /* Label for recommended bolus row on bolus screen
    Label for recommended bolus row on simple bolus screen */
@@ -885,7 +903,7 @@
 "Retrospective Correction" = "Retrospektiv korreksjon";
 
 /* The title of the notification action to retry a bolus command */
-"Retry" = "Prøv igjen";
+"Retry" = "Prøv på nytt";
 
 /* Button text to save carbs and/or manual glucose entry and deliver a bolus */
 "Save and Deliver" = "Lagre og gi bolus";
@@ -921,25 +939,28 @@
 "since %@" = "siden %@";
 
 /* The title of the nightscout site URL credential */
-"Site URL" = "Site URL";
+"Site URL" = "Nettstedslenke (URL)";
 
 /* Software update button link text */
 "Software Update" = "Programvare oppdatering";
 
+/* Remote command error description: invalid start time is out of range. */
+"Start time is out of range: %@" = "Starttiden er utenfor området: %@";
+
 /* The format for the description of a temporary override start date */
-"starting at %@" = "startet %@";
+"starting at %@" = "starter på %@";
 
 /* The title of the cell indicating a bolus is being sent */
-"Starting Bolus" = "Starter bolus";
+"Starting Bolus" = "Starter Bolus";
 
 /* Section title for Support
    Support screen title
    The title of the support item in settings
    The title of the support section in settings */
-"Support" = "Hjelp";
+"Support" = "Support";
 
 /* The title text in settings */
-"Suspend Threshold" = "Grense for insulinstopp";
+"Suspend Threshold" = "Terskel for utsettelse";
 
 /* Descriptive text for button to add CGM device */
 "Tap here to set up a CGM" = "Trykk her for å sette opp en CGM";
@@ -954,7 +975,7 @@
 "Tap to Add" = "Trykk for å legge til";
 
 /* The subtitle of the cell displaying an action to resume insulin delivery */
-"Tap to Resume" = "Trykk for å gjenoppta";
+"Tap to Resume" = "Trykk for å fortsette";
 
 /* Message presented in the status row instructing the user to tap this row to stop a bolus */
 "Tap to Stop" = "Trykk for å stoppe";
@@ -972,7 +993,7 @@
 "The bolus recommendation has updated. Please reconfirm the bolus amount." = "Bolus-anbefalingen er oppdatert. Bekreft bolusverdien på nytt.";
 
 /* Subtitle description of Walsh insulin model setting */
-"The legacy model used by Loop, allowing customization of action duration." = "Den gamle modellen brukt av Loop, tillater endring av varighet for handling.";
+"The legacy model used by Loop, allowing customization of action duration." = "Den eldre modellen som brukes av Loop, tillater tilpasning av handlingsvarighet.";
 
 /* Alert body displayed absorption time greater than max (1: maximum absorption time) */
 "The maximum absorption time is %@" = "Maksimal absorpsjonstid er %@";
@@ -987,7 +1008,7 @@
 "The maximum bolus amount is %@ U." = "Maksimal bolus er satt til %@ E.";
 
 /* Body of the alert describing a maximum bolus validation error. (1: The localized max bolus value) */
-"The maximum bolus amount is %@ Units" = "Maks bolus er satt til %@ enheter";
+"The maximum bolus amount is %@ Units" = "Maksimal bolusmengde er %@ enheter";
 
 /* Alert message for a missing maximum bolus setting error */
 "The maximum bolus setting must be configured before a bolus can be delivered." = "Innstillingen for maksimal bolus må konfigureres før bolus kan leveres.";
@@ -1035,11 +1056,14 @@
 /* The error message displayed for unknown errors. (1: unknown error) */
 "Unknown Error: %1$@" = "Ukjent feil: %1$@";
 
+/* Remote command error description: unknown preset (1: preset name). */
+"Unknown preset: %1$@" = "Ukjent forhåndsinnstilling: %1$@";
+
 /* Unknown amount of time in settings' profile expiration section */
 "Unknown time" = "Ukjent tid";
 
 /* The format for the description of a temporary override end date */
-"until %@" = "frem til %@";
+"until %@" = "til %@";
 
 /* The title of a target alert action specifying pre-meal targets duration for 1 hour or until the user enters carbs (whichever comes first). */
 "Until I enter carbs" = "Frem til jeg legger inn karbohydrater";
@@ -1066,13 +1090,16 @@
 "When current or forecasted glucose is below the glucose safety limit, Loop will not recommend a bolus, and will always recommend a temporary basal rate of 0 units per hour." = "Når gjeldende eller anslått glukose er under glukosesikkerhetsgrensen, vil ikke Loop anbefale en bolus, og vil alltid anbefale en midlertidig basalrate på 0 enheter per time.";
 
 /* Explanation of suspend threshold */
-"When current or forecasted glucose is below the suspend threshold, Loop will not recommend a bolus, and will always recommend a temporary basal rate of 0 units per hour." = "Når nåværende eller forventet blodsukker er under grensen for insulinstopp, vil ikke Loop anbefale en bolus, og vil alltid anbefale en midlertidig basalrate på 0 enheter per time.";
+"When current or forecasted glucose is below the suspend threshold, Loop will not recommend a bolus, and will always recommend a temporary basal rate of 0 units per hour." = "Når gjeldende eller anslått glukose er under suspenderingsterskelen, vil ikke Loop anbefale en bolus, og vil alltid anbefale en midlertidig basalrate på 0 enheter per time.";
+
+/* Description of missed meal notifications. */
+"When enabled, Loop can notify you when it detects a meal that wasn't logged." = "Når den er aktivert, kan Loop varsle deg når den oppdager et måltid som ikke ble logget.";
 
 /* No comment provided by engineer. */
 "When out of Closed Loop mode, the app uses a simplified bolus calculator like a typical pump." = "Når den er ute av lukket Loop-modus, bruker appen en forenklet boluskalkulator som en vanlig pumpe.";
 
 /* The label of the workout mode toggle button */
-"Workout Targets" = "Treningsmål";
+"Workout Targets" = "Målområder for trening";
 
 /* Workout override still on reminder alert body. */
 "Workout Temp Adjust has been turned on for more than 24 hours. Make sure you still want it enabled, or turn it off in the app." = "Temp Adjust for trening har vært slått på i mer enn 24 timer. Forsikre deg om at du fortsatt vil ha den aktivert, eller slå den av i appen.";
diff --git a/Loop/nb.lproj/Main.strings b/Loop/nb.lproj/Main.strings
index 42e93961d..c366e5007 100644
--- a/Loop/nb.lproj/Main.strings
+++ b/Loop/nb.lproj/Main.strings
@@ -5,13 +5,13 @@
 "3kU-n2-fha.title" = "Status";
 
 /* Class = "UILabel"; text = "3.5 U/hour @ 12:12 PM"; ObjectID = "5gz-kZ-iF1"; */
-"5gz-kZ-iF1.text" = "3,5 E/timen @ 12:12 PM";
+"5gz-kZ-iF1.text" = "3,5 E/time @ 12:12";
 
 /* Class = "UILabel"; text = "Predicted"; ObjectID = "87H-N1-0vJ"; */
 "87H-N1-0vJ.text" = "Forventet";
 
 /* Class = "UILabel"; text = "Detail"; ObjectID = "aCb-Qs-bpu"; */
-"aCb-Qs-bpu.text" = "Detaljer";
+"aCb-Qs-bpu.text" = "Detalj";
 
 /* Class = "UILabel"; text = "Food Type"; ObjectID = "ap1-M6-naG"; */
 "ap1-M6-naG.text" = "Type mat";
@@ -20,19 +20,19 @@
 "bIL-Ub-qYp.text" = "Etikett";
 
 /* Class = "UILabel"; text = "Glucose Change"; ObjectID = "bq4-98-cQU"; */
-"bq4-98-cQU.text" = "Blodsukkerendring";
+"bq4-98-cQU.text" = "Glukose endring";
 
 /* Class = "UILabel"; text = "g Total"; ObjectID = "d3X-AN-tA5"; */
-"d3X-AN-tA5.text" = "g totalt";
+"d3X-AN-tA5.text" = "g Totalt";
 
 /* Class = "UILabel"; text = "Future glucose is predicted by combining the effects of multiple inputs. Use this tool to toggle various inputs to see how they compare to the final prediction."; ObjectID = "D4C-I2-dhA"; */
-"D4C-I2-dhA.text" = "Fremtidig blodsukker forutsies ved å kombinere effektene av flere parametre. Bruk dette verktøyet til å bytte ulike parametre for å se hvordan de påvirker den endelige prediksjonen.";
+"D4C-I2-dhA.text" = "Fremtidig glukose er spådd ved å kombinere effekten av flere inndata. Bruk dette verktøyet til å veksle mellom ulike inndata for å se hvordan de er sammenlignet med den endelige prediksjonen.";
 
 /* Class = "UILabel"; text = "Label"; ObjectID = "d6m-qV-wWi"; */
 "d6m-qV-wWi.text" = "Etikett";
 
 /* Class = "UILabel"; text = "eventually 92 mg/dL"; ObjectID = "E41-FN-nkk"; */
-"E41-FN-nkk.text" = "omsider 92 mg/dL";
+"E41-FN-nkk.text" = "etterhvert 92 mg/dL";
 
 /* Class = "UILabel"; text = "Observed"; ObjectID = "EAn-Ja-S1d"; */
 "EAn-Ja-S1d.text" = "Observert";
@@ -44,16 +44,16 @@
 "fWV-jg-ICt.text" = "3,5 E/time @ 12:12";
 
 /* Class = "UITableViewController"; title = "Carbohydrate Effects"; ObjectID = "hZZ-2S-lrd"; */
-"hZZ-2S-lrd.title" = "Effekt av karbohydrater";
+"hZZ-2S-lrd.title" = "Karbohydrat effekt";
 
 /* Class = "UILabel"; text = "Observed changes in glucose, subtracting changes modeled from insulin delivery, can be used to estimate carbohydrate absorption."; ObjectID = "IxU-As-glo"; */
-"IxU-As-glo.text" = "Observerte endringer i blodsukker, minus endringer fra levert insulin, kan brukes for å estimere absorpsjon av karbohydrater.";
+"IxU-As-glo.text" = "Observerte endringer i glukose, subtrahering av endringer modellert fra insulintilførsel, kan brukes til å estimere karbohydratabsorpsjon.";
 
 /* Class = "UILabel"; text = "Detail"; ObjectID = "J7x-W5-gwo"; */
-"J7x-W5-gwo.text" = "Detaljer";
+"J7x-W5-gwo.text" = "Detalj";
 
 /* Class = "UILabel"; text = "Recommended Basal"; ObjectID = "k3F-Na-7mn"; */
-"k3F-Na-7mn.text" = "Anbefalt basal";
+"k3F-Na-7mn.text" = "Anbefalt Basal";
 
 /* Class = "UILabel"; text = "Label"; ObjectID = "Krd-Aa-ret"; */
 "Krd-Aa-ret.text" = "Etikett";
@@ -62,7 +62,7 @@
 "OFA-qT-ZAg.text" = "Etikett";
 
 /* Class = "UITableViewController"; title = "Predicted Glucose"; ObjectID = "PA3-sP-cWY"; */
-"PA3-sP-cWY.title" = "Forventet blodsukker";
+"PA3-sP-cWY.title" = "Forventet Glukose";
 
 /* Class = "UIButton"; normalTitle = "🍽"; ObjectID = "Qe9-uc-vPR"; */
 "Qe9-uc-vPR.normalTitle" = "🍽";
@@ -74,13 +74,13 @@
 "qPH-vU-xlu.text" = "Type mat";
 
 /* Class = "UILabel"; text = "eventually 92 mg/dL"; ObjectID = "Rse-x8-amW"; */
-"Rse-x8-amW.text" = "omsider 92 mg/dL";
+"Rse-x8-amW.text" = "etterhvert 92 mg/dL";
 
 /* Class = "UILabel"; text = "g Active Carbs"; ObjectID = "SQx-au-ZcM"; */
 "SQx-au-ZcM.text" = "g Aktive karbohydrater";
 
 /* Class = "UILabel"; text = "Glucose"; ObjectID = "tuw-av-A3x"; */
-"tuw-av-A3x.text" = "Glukose";
+"tuw-av-A3x.text" = "Blodsukker";
 
 /* Class = "UINavigationItem"; title = "Add/Edit Carb Entry"; ObjectID = "Tz7-80-bJ7"; */
 "Tz7-80-bJ7.title" = "Legg til/endre karbohydrater";
diff --git a/Loop/nl.lproj/Localizable.strings b/Loop/nl.lproj/Localizable.strings
index 68d7d177b..8c433b6c6 100644
--- a/Loop/nl.lproj/Localizable.strings
+++ b/Loop/nl.lproj/Localizable.strings
@@ -29,7 +29,7 @@
 "%@ %@" = "%1$@ %2$@";
 
 /* Formats absorbed carb value */
-"%@ absorbed" = "%@ opgenomen";
+"%@ absorbed" = "%@ geabsorbeerd";
 
 /* Estimated remaining duration with more than a minute */
 "%@ remaining" = "%@ resterend";
@@ -47,13 +47,13 @@
 "%1@%2@" = "%1$@%2$@";
 
 /* Format string for glucose target range. (1: Min target)(2: Max target)(3: glucose unit) */
-"%1$@ – %2$@ %3$@" = "%1$@ – %2$@ %3$@";
+"%1$@ – %2$@ %3$@" = "%1$@ - %2$@ %3$@";
 
 /* Format string combining carb entry quantity and absorption time emoji */
 "%1$@ %2$@" = "%1$@ %2$@";
 
 /* Format string for carb ratio average. (1: value)(2: carb unit) */
-"%1$@ %2$@/U" = "%1$@ %2$@/E";
+"%1$@ %2$@/U" = "%1$@ %2$@ /E";
 
 /* Formats (1: carb start time) and (2: carb absorption duration) */
 "%1$@ + %2$@" = "%1$@ + %2$@";
@@ -74,10 +74,10 @@
 "%1$@ U" = "%1$@ E";
 
 /* Low reservoir alert format string. (1: Number of units remaining) */
-"%1$@ U left" = "%1$@ E resterend";
+"%1$@ U left" = "%1$@ E over";
 
 /* Low reservoir alert with time remaining format string. (1: Number of units remaining)(2: approximate time remaining) */
-"%1$@ U left: %2$@" = "%1$@ E resterend: %2$@";
+"%1$@ U left: %2$@" = "%1$@ E over: %2$@";
 
 /* The format for recommended temp basal rate and time. (1: localized rate number)(2: localized time) */
 "%1$@ U/hour @ %2$@" = "%1$@ E/uur @ %2$@";
@@ -89,7 +89,7 @@
 "%1$@ will stop working in %2$@. You will need to update before that, with a new provisioning profile." = "%1$@ stopt met werken in %2$@. Je zult eerder moeten updaten, met een nieuw beschikbaargesteld profiel.";
 
 /* Formats (1: carb value) and (2: food type) */
-"%1$@: %2$@" = "%1$@: %2$@";
+"%1$@: %2$@" = "%1$@ : %2$@";
 
 /* Description of a basal temp basal dose entry (1: title for dose type, 2: value (? if no value) in bold, 3: unit)
    Description of a bolus dose entry (1: title for dose type, 2: value (? if no value) in bold, 3: unit) */
@@ -114,7 +114,7 @@
 "A model based on the published absorption of Fiasp insulin." = "Een model gebaseerd op de gepubliceerde opname van Fiasp insuline.";
 
 /* Subtitle of Rapid-Acting – Adult preset */
-"A model based on the published absorption of Humalog, Novolog, and Apidra insulin in adults." = "Een model gebaseerd op de gepubliceerde opname van Humalog, Novorapid, en Apidra insuline bij volwassenen.";
+"A model based on the published absorption of Humalog, Novolog, and Apidra insulin in adults." = "Een model gebaseerd op de gepubliceerde absorptie van Humalog-, Novolog- en Apidra-insuline bij volwassenen.";
 
 /* Software update available section footer (1: app name) */
 "A new version of %@ is available and is recommended to continue using the app." = "Er is een nieuwe versie van %@ beschikbaar die aanbevolen wordt om de app te kunnen blijven gebruiken.";
@@ -147,18 +147,18 @@
 "Active Insulin: %@" = "Actieve Insuline: %@";
 
 /* Title of the user activity for adding carbs */
-"Add Carb Entry" = "Koolhydraatinvoer Toevoegen";
+"Add Carb Entry" = "Kh. Inv. Toevoegen";
 
 /* Action sheet title selecting CGM
    Title text for button to set up a CGM */
-"Add CGM" = "CGM Toevoegen";
+"Add CGM" = "Voeg CGM toe";
 
 /* The label of the meal button */
-"Add Meal" = "Maaltijd Toevoegen";
+"Add Meal" = "Voeg Maaltijd toe";
 
 /* Action sheet title selecting Pump
    Title text for button to set up a new pump */
-"Add Pump" = "Pomp Toevoegen";
+"Add Pump" = "Voeg Pomp toe";
 
 /* Title text for button to set up a service */
 "Add Service" = "Service Toevoegen";
@@ -220,7 +220,7 @@
 "Are you sure you want to delete this CGM?" = "Weet je zeker dat je deze CGM wilt verwijderen";
 
 /* Confirmation message for deleting a service */
-"Are you sure you want to delete this service?" = "Weet je zeker dat je deze service wilt verwijderen?";
+"Are you sure you want to delete this service?" = "Weet je zeker dat je deze service wil verwijderen?";
 
 /* Format fragment for a specific time */
 "at %@" = "om %@";
@@ -353,7 +353,7 @@
 "com.loudnate.InsulinKit.totalDateLabel" = "sinds %1$@";
 
 /* The title of the action used to dismiss an error alert */
-"com.loudnate.LoopKit.errorAlertActionTitle" = "OK";
+"com.loudnate.LoopKit.errorAlertActionTitle" = "Ok";
 
 /* Title text for button to complete setup */
 "Complete Setup" = "Volledige Installatie";
@@ -408,10 +408,10 @@
 "Delete" = "Verwijderen";
 
 /* The title of the button to remove the credentials for a service */
-"Delete Account" = "Account Verwijderen";
+"Delete Account" = "Verwijder Account";
 
 /* Button title to delete all objects */
-"Delete All" = "Alles Verwijderen";
+"Delete All" = "Verwijder Alles";
 
 /* Button title to delete CGM */
 "Delete CGM" = "Verwijder CGM";
@@ -456,6 +456,9 @@
 /* The title of the Dosing Strategy section in settings */
 "Dosing Strategy" = "Doseerstrategie";
 
+/* Remote command error description: duration exceed max (1: max duration in hours). */
+"Duration exceeds: %1$.1f hours" = "Duur overschrijdt: %1$.1f uur";
+
 /* Message to the user to enable bluetooth */
 "Enable\nBluetooth" = "Bluetooth\nInschakelen";
 
@@ -484,7 +487,7 @@
 "Error Exporting Logs" = "Fout bij exporteren logboeken";
 
 /* The alert title for a resume error */
-"Error Resuming" = "Fout bij vervolgen";
+"Error Resuming" = "Fout Bij Hervatten";
 
 /* Segmented button title for insulin delivery log event history */
 "Event History" = "Logboek";
@@ -523,7 +526,7 @@
 "For %1$@" = "Voor %1$@";
 
 /* No comment provided by engineer. */
-"Forecasted blood glucose may still be higher than target range." = "De voorspelde bloedglucose kan nog steeds hoger zijn dan het streefbereik.";
+"Forecasted blood glucose may still be higher than target range." = "Voorspelde bloedglucose kan nog steeds hoger zijn dan het streefbereik.";
 
 /* Title for forecast explanation modal on bolus view */
 "Forecasted Glucose" = "Voorspelde Glucose";
@@ -592,7 +595,7 @@
 
 /* The title of the insulin sensitivities schedule screen
    The title text for the insulin sensitivity schedule */
-"Insulin Sensitivities" = "Insulinegevoeligheid";
+"Insulin Sensitivities" = "Insulinegevoeligheden";
 
 /* Details for configuration error when insulin sensitivity schedule is missing */
 "Insulin Sensitivity Schedule" = "Insulinegevoeligheidschema";
@@ -606,11 +609,17 @@
 /* Description of an interrupted bolus dose entry (1: title for dose type, 2: value (? if no value) in bold, 3: programmed value (? if no value), 4: unit) */
 "Interrupted %1$@: <b>%2$@</b> of %3$@ %4$@" = "Onderbroken %1$@: <b>%2$@</b> van %3$@ %4$@";
 
+/* Remote command error description: invalid absorption time. */
+"Invalid absorption time: %d hours" = "Ongeldige opnametijd: %d uur";
+
+/* Remote command error description: invalid bolus amount. */
+"Invalid Bolus Amount" = "Ongeldige bolushoeveelheid";
+
 /* Remote command error description: invalid carb amount. */
 "Invalid carb amount" = "Ongeldige hoeveelheid koolhydraten";
 
 /* The error message when invalid data was encountered. (1: details of invalid data) */
-"Invalid data: %1$@" = "Niet valide gegevens: %1$@";
+"Invalid data: %1$@" = "Ongeldige gegevens: %1$@";
 
 /* Title for bolus screen notice when glucose data is in the future */
 "Invalid Future Glucose" = "Ongeldige Toekomstige Glucose";
@@ -621,11 +630,14 @@
 /* The title text for the issue report cell */
 "Issue Report" = "Probleemrapportage";
 
+/* The notification description for a meal that was possibly not logged in Loop. */
+"It looks like you may not have logged a meal you ate. Tap to log it now." = "Het lijkt erop dat je een maaltijd die je hebt gegeten niet hebt toegevoegd. Tik om het nu toe te voegen.";
+
 /* Title of the warning shown when a large meal was entered */
 "Large Meal Entered" = "Grote Maaltijd Ingevoerd";
 
 /* Glucose HUD accessibility hint */
-"Launches CGM app" = "Start de CGM app op";
+"Launches CGM app" = "Lanceert CGM app";
 
 /* OK button title for alert shown when delivery status is uncertain */
 "Learn More" = "Meer Informatie";
@@ -647,11 +659,14 @@
 "Loop Crashed" = "Loop is Vastgelopen";
 
 /* The notification title for a loop failure */
-"Loop Failure" = "Loop fout";
+"Loop Failure" = "Loopstoring";
 
 /* Bluetooth unavailable alert body. */
 "Loop has detected an issue with your Bluetooth settings, and will not work successfully until Bluetooth is enabled. You will not receive glucose readings, or be able to bolus." = "Loop heeft een probleem met je Bluetoothinstellingen gedetecteerd en zal niet goed werken totdat Bluetooth wordt ingeschakeld. Je ontvangt geen glucosemetingen en je kunt niet bolussen.";
 
+/* Warning displayed when user is adding a meal from an missed meal notification */
+"Loop has detected an missed meal and estimated its size. Edit the carb amount to match the amount of any carbs you may have eaten." = "Loop heeft een gemiste maaltijd gedetecteerd en een schatting van de hoeveelheid gedaan. Bewerk de hoeveelheid koolhydraten, zodat deze overeenkomt met de hoeveelheid koolhydraten die je mogelijk hebt gegeten.";
+
 /* The notification alert describing a long-lasting loop failure. The substitution parameter is the time interval since the last loop */
 "Loop has not completed successfully in %@" = "Loop is niet goed afgerond in %@";
 
@@ -692,8 +707,11 @@
 /* The short unit display string for milligrams of glucose per decilter */
 "mg/dL" = "mg/dL";
 
+/* Title for missed meal notifications toggle */
+"Missed Meal Notifications" = "Gemiste Maaltijdmeldingen";
+
 /* The error message for missing data. (1: missing data details) */
-"Missing data: %1$@" = "Missende gegevens: %1$@";
+"Missing data: %1$@" = "Ontbrekende gegevens: %1$@";
 
 /* Remote command error description: missing maximum bolus in settings. */
 "Missing maximum allowed bolus in settings" = "Maximaal toegestane bolus ontbreekt in instellingen";
@@ -711,7 +729,10 @@
 "Mute All Alerts" = "Alle Waarschuwingen Dempen";
 
 /* Sensor state description for the non-valid state */
-"Needs Attention" = "Aandacht Vereist";
+"Needs Attention" = "Aandacht Nodig";
+
+/* Remote command error description: negative duration error. */
+"Negative duration not allowed" = "Negatieve duur niet toegestaan";
 
 /* The title of the Nightscout service */
 "Nightscout" = "Nightscout";
@@ -725,7 +746,7 @@
 "No Bolus Recommended" = "Geen Bolus Aanbevolen";
 
 /* The error message displayed for device connection errors. */
-"No connected devices, or failure during device connection" = "Geen gekoppelde apparaten, of fout bij apparaat verbinding";
+"No connected devices, or failure during device connection" = "Geen aangesloten apparaten of storingen tijdens het verbinden met het apparaat";
 
 /* Alert title for a missing maximum bolus setting error */
 "No Maximum Bolus Configured" = "Geen Maximale Bolus Geconfigureerd";
@@ -775,7 +796,7 @@
    Notifications permissions disabled alert button
    Text for ok action on notification of upcoming profile expiration
    The title of the notification action to acknowledge a device alert */
-"OK" = "OK";
+"OK" = "Ok";
 
 /* Notification Setting Status is On */
 "On" = "Aan";
@@ -783,11 +804,14 @@
 /* The title text for the override presets */
 "Override Presets" = "Override Programma's";
 
+/* The notification title for a meal that was possibly not logged in Loop. */
+"Possible Missed Meal" = "Mogelijk Gemiste Maaltijd";
+
 /* The label of the pre-meal mode toggle button */
 "Pre-Meal Targets" = "Pre-Meal Doelen";
 
 /* 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$@." = "Verwachte glucose op %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.";
@@ -826,7 +850,7 @@
 "Pump Event" = "Pompgebeurtenis";
 
 /* Details for configuration error when pump manager is missing */
-"Pump Manager" = "Pompbeheer";
+"Pump Manager" = "Pomp Manager";
 
 /* The error message displayed for pump manager errors. (1: pump manager error) */
 "Pump Manager Error: %1$@" = "Pompmanager Fout: %1$@";
@@ -844,7 +868,7 @@
 "Pump Suspended. Automatic dosing is disabled." = "Pomp Onderbroken. Automatisch doseren is uitgeschakeld.";
 
 /* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
-"QUANTITY_VALUE_AND_UNIT" = "%1$@%2$@";
+"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
 
 /* Title of insulin model preset */
 "Rapid-Acting – Adults" = "Snelwerkend - Volwassenen";
@@ -885,7 +909,7 @@
 "Retrospective Correction" = "Retroperspectieve Correctie";
 
 /* The title of the notification action to retry a bolus command */
-"Retry" = "Opnieuw proberen";
+"Retry" = "Opnieuw Proberen";
 
 /* Button text to save carbs and/or manual glucose entry and deliver a bolus */
 "Save and Deliver" = "Opslaan en Toedienen";
@@ -918,7 +942,7 @@
 "Simple Meal Calculator" = "Eenvoudige Maaltijdcalculator";
 
 /* Format fragment for a start time */
-"since %@" = "na %@";
+"since %@" = "sinds %@";
 
 /* The title of the nightscout site URL credential */
 "Site URL" = "Site URL";
@@ -926,6 +950,9 @@
 /* Software update button link text */
 "Software Update" = "Software Update";
 
+/* Remote command error description: invalid start time is out of range. */
+"Start time is out of range: %@" = "Starttijd is buiten bereik: %@";
+
 /* The format for the description of a temporary override start date */
 "starting at %@" = "start om %@";
 
@@ -972,7 +999,7 @@
 "The bolus recommendation has updated. Please reconfirm the bolus amount." = "De aanbevolen bolus is bijgewerkt. Bevestig de bolus opnieuw.";
 
 /* Subtitle description of Walsh insulin model setting */
-"The legacy model used by Loop, allowing customization of action duration." = "Het oude model dat door Loop werd gebruikt dat toestaat de actieduur aan te passen.";
+"The legacy model used by Loop, allowing customization of action duration." = "Het model gebruikt bij Loop, staat verandering van actieduur toe.";
 
 /* Alert body displayed absorption time greater than max (1: maximum absorption time) */
 "The maximum absorption time is %@" = "De maximale opnametijd is %@";
@@ -1035,6 +1062,9 @@
 /* The error message displayed for unknown errors. (1: unknown error) */
 "Unknown Error: %1$@" = "Onbekende Fout: %1$@";
 
+/* Remote command error description: unknown preset (1: preset name). */
+"Unknown preset: %1$@" = "Onbekende voorinstelling: %1$@";
+
 /* Unknown amount of time in settings' profile expiration section */
 "Unknown time" = "Onbekende tijd";
 
@@ -1068,6 +1098,9 @@
 /* Explanation of suspend threshold */
 "When current or forecasted glucose is below the suspend threshold, Loop will not recommend a bolus, and will always recommend a temporary basal rate of 0 units per hour." = "Wanneer de huidige of voorspelde glucose onder de onderbrekingsdrempel ligt, zal Loop geen bolus aanbevelen en zal Loop altijd een tijdelijke basaalsnelheid van 0 eenheden per uur aanbevelen.";
 
+/* Description of missed meal notifications. */
+"When enabled, Loop can notify you when it detects a meal that wasn't logged." = "Indien ingeschakeld, kan Loop je op de hoogte stellen wanneer het een maaltijd detecteert die niet is toegevoegd.";
+
 /* No comment provided by engineer. */
 "When out of Closed Loop mode, the app uses a simplified bolus calculator like a typical pump." = "Als de Gesloten Loop modus is uitgeschakeld, gebruikt de app een vereenvoudigde boluscalculator zoals bij een gewone pomp.";
 
diff --git a/Loop/nl.lproj/Main.strings b/Loop/nl.lproj/Main.strings
index 52201f6fb..3e4238380 100644
--- a/Loop/nl.lproj/Main.strings
+++ b/Loop/nl.lproj/Main.strings
@@ -5,7 +5,7 @@
 "3kU-n2-fha.title" = "Status";
 
 /* Class = "UILabel"; text = "3.5 U/hour @ 12:12 PM"; ObjectID = "5gz-kZ-iF1"; */
-"5gz-kZ-iF1.text" = "3,5 E/U @ 12:12 PM";
+"5gz-kZ-iF1.text" = "3,5 E/uur @ 12:12 uur";
 
 /* Class = "UILabel"; text = "Predicted"; ObjectID = "87H-N1-0vJ"; */
 "87H-N1-0vJ.text" = "Voorspeld";
@@ -32,10 +32,10 @@
 "d6m-qV-wWi.text" = "Etiket";
 
 /* Class = "UILabel"; text = "eventually 92 mg/dL"; ObjectID = "E41-FN-nkk"; */
-"E41-FN-nkk.text" = "uiteindelijk 92 mg/dL";
+"E41-FN-nkk.text" = "uiteindelijk 5,1 mmol/L";
 
 /* Class = "UILabel"; text = "Observed"; ObjectID = "EAn-Ja-S1d"; */
-"EAn-Ja-S1d.text" = "Geobserveerd";
+"EAn-Ja-S1d.text" = "Waargenomen";
 
 /* Class = "UIButton"; normalTitle = "🍭"; ObjectID = "Fal-Vf-lfh"; */
 "Fal-Vf-lfh.normalTitle" = "🍭";
@@ -53,7 +53,7 @@
 "J7x-W5-gwo.text" = "Detail";
 
 /* Class = "UILabel"; text = "Recommended Basal"; ObjectID = "k3F-Na-7mn"; */
-"k3F-Na-7mn.text" = "Voorgestelde basaal";
+"k3F-Na-7mn.text" = "Aanbevolen Basaal";
 
 /* Class = "UILabel"; text = "Label"; ObjectID = "Krd-Aa-ret"; */
 "Krd-Aa-ret.text" = "Etiket";
@@ -62,7 +62,7 @@
 "OFA-qT-ZAg.text" = "Etiket";
 
 /* Class = "UITableViewController"; title = "Predicted Glucose"; ObjectID = "PA3-sP-cWY"; */
-"PA3-sP-cWY.title" = "Voorspelde glucose";
+"PA3-sP-cWY.title" = "Voorspelde bloedsuiker";
 
 /* Class = "UIButton"; normalTitle = "🍽"; ObjectID = "Qe9-uc-vPR"; */
 "Qe9-uc-vPR.normalTitle" = "🍽";
@@ -74,7 +74,7 @@
 "qPH-vU-xlu.text" = "Type Eten";
 
 /* Class = "UILabel"; text = "eventually 92 mg/dL"; ObjectID = "Rse-x8-amW"; */
-"Rse-x8-amW.text" = "uiteindelijk 92 mg/dL";
+"Rse-x8-amW.text" = "uiteindelijk 5,1 mmol/L";
 
 /* Class = "UILabel"; text = "g Active Carbs"; ObjectID = "SQx-au-ZcM"; */
 "SQx-au-ZcM.text" = "g Actieve Kh";
diff --git a/Loop/pl.lproj/Localizable.strings b/Loop/pl.lproj/Localizable.strings
index 9e3ec7754..a8947c797 100644
--- a/Loop/pl.lproj/Localizable.strings
+++ b/Loop/pl.lproj/Localizable.strings
@@ -2,7 +2,7 @@
 " (pending: %@)" = " (oczekujące: %@)";
 
 /* Status row title for premeal override enabled (leading space is to separate from symbol) */
-" Pre-meal Preset" = "Wstępne ustawienie przed posiłkiem";
+" Pre-meal Preset" = " Przed Posiłkiem";
 
 /* remaining time in setting's profile expiration section */
 " remaining" = " pozostały";
@@ -141,13 +141,13 @@
 "Active Carbs" = "Aktywne węglowodany";
 
 /* The title of the Insulin On-Board graph */
-"Active Insulin" = "Aktywna Insulina";
+"Active Insulin" = "Aktywna insulina";
 
 /* The string format describing active insulin. (1: localized insulin value description) */
 "Active Insulin: %@" = "Aktywna Insulina: %@";
 
 /* Title of the user activity for adding carbs */
-"Add Carb Entry" = "Dodaj pozycję dla węglowodanów";
+"Add Carb Entry" = "Wprowadź węglowodany";
 
 /* Action sheet title selecting CGM
    Title text for button to set up a CGM */
@@ -211,7 +211,7 @@
 "Are you sure you want to delete all logged dose entries?" = "Czy na pewno chcesz usunąć wszystkie zapisane wpisy dawek?";
 
 /* Action sheet confirmation message for reservoir deletion */
-"Are you sure you want to delete all reservoir values?" = "Czy jesteś pewien, że chcesz usunąć historię zbiornika?";
+"Are you sure you want to delete all reservoir values?" = "Czy jesteś pewien, że chcesz usunąć wszystkie wartości zbiornika?";
 
 /* No comment provided by engineer. */
 "Are you sure you want to delete all your %@ Data?\n(This action is not reversible)" = "Czy na pewno chcesz usunąć wszystkie swoje dane %@ ?\n (Ta czynność jest nieodwracalna)";
@@ -220,7 +220,7 @@
 "Are you sure you want to delete this CGM?" = "Czy na pewno chcesz usunąć ten CGM?";
 
 /* Confirmation message for deleting a service */
-"Are you sure you want to delete this service?" = "Are you sure you want to delete this service?";
+"Are you sure you want to delete this service?" = "Czy na pewno chcesz usunąć tę usługę?";
 
 /* Format fragment for a specific time */
 "at %@" = "o %@";
@@ -236,7 +236,7 @@
 
 /* The title of the basal rate profile screen
    The title text for the basal rate schedule */
-"Basal Rates" = "Wartości bazy";
+"Basal Rates" = "Dawka Podstawowa (Baza)";
 
 /* Caption for bolus screen notice when no bolus is recommended for the predicted glucose */
 "Based on your predicted glucose, no bolus is recommended." = "Na podstawie przewidywanej glikemii nie zaleca się podawania bolusa.";
@@ -293,7 +293,7 @@
 
 /* The title of the carb ratios schedule screen
    The title text for the carb ratio schedule */
-"Carb Ratios" = "Wartości Węglowodanów";
+"Carb Ratios" = "Współczynniki węglowodanowe";
 
 /* The title of the view controller to create a new carb entry */
 "carb-entry-title-add" = "Wprowadź węglowodany";
@@ -311,10 +311,10 @@
 "Carbs Absorbed (g) ÷ Carb Ratio (g/U) × Insulin Sensitivity (%1$@/U)" = "Ilość węglowodanów (g) ÷ stosunek węglowodanów (g/J) × czułość insuliny (%1$@/J)";
 
 /* The notification alert describing a low pump battery */
-"Change the pump battery immediately" = "Zmień pilnie baterię w pompie";
+"Change the pump battery immediately" = "Natychmiast wymienić baterię pompy";
 
 /* The notification alert describing an empty pump reservoir */
-"Change the pump reservoir now" = "Uzupełnij insulinę w pompie";
+"Change the pump reservoir now" = "Zmień zbiorniczek w pompie";
 
 /* Details for configuration error when one or more loop settings are missing */
 "Check settings" = "Sprawdź ustawienia";
@@ -329,7 +329,7 @@
 "Check your device time and/or remove any invalid data from Apple Health." = "Sprawdź czas urządzenia i/lub usuń wszelkie nieprawidłowe dane z aplikacji Zdrowie.";
 
 /* Carb entry section footer text explaining absorption time */
-"Choose a longer absorption time for larger meals, or those containing fats and proteins. This is only guidance to the algorithm and need not be exact." = "Wybierz dłuższy czas absorpcji dla większych posiłków bądź tych bogatych w tłuszcze i białka.\nTo tylko wskazówka dla algorytmu i nie musi być bardzo dokładna.";
+"Choose a longer absorption time for larger meals, or those containing fats and proteins. This is only guidance to the algorithm and need not be exact." = "Wybierz dłuższy czas absorpcji dla większych, bogatobiałkowych lub wysokotłuszczowych posiłków. To tylko wskazówka dla algorytmu i nie musi być bardzo dokładna.";
 
 /* The button label of the action used to dismiss the unsafe notification permission alert */
 "Close" = "Zamknij";
@@ -372,7 +372,7 @@
 
 /* The title of the glucose target range schedule screen
    The title text for the glucose target range schedule */
-"Correction Range" = "Zakres korekty";
+"Correction Range" = "Zakres docelowy";
 
 /* Critical Alerts Status text */
 "Critical Alerts" = "Alerty krytyczne";
@@ -393,7 +393,7 @@
 "Current glucose of %1$@ is below correction range." = "Poziom glukozy %1$@ jest poniżej wartości korekcji.";
 
 /* The title of the cell indicating a generic temporary override is enabled */
-"Custom Override" = "Cel Tymczasowy";
+"Custom Override" = "Custom Override";
 
 /* The title of the cell indicating a generic custom preset is enabled */
 "Custom Preset" = "Cel Tymczasowy";
@@ -417,7 +417,7 @@
 "Delete CGM" = "Usuń CGM";
 
 /* Button title to delete a service */
-"Delete Service" = "Delete Service";
+"Delete Service" = "Usuń usługę";
 
 /* No comment provided by engineer. */
 "Delete Testing CGM Data" = "Usuń testowe dane CGM";
@@ -432,10 +432,10 @@
 "Deliver" = "Podaj Bolus";
 
 /* Title text for delivery limits */
-"Delivery Limits" = "Limit podaży";
+"Delivery Limits" = "Limity podawania";
 
 /* Descriptive text for Therapy Settings */
-"Diabetes Treatment" = "Leczenie cukrzycy";
+"Diabetes Treatment" = "w leczeniu cukrzycy";
 
 /* Alert body when entered carbohydrates is greater than threshold (1: entered quantity in grams) */
 "Did you intend to enter %1$@ grams as the amount of carbohydrates for this meal?" = "Czy zamierzałeś wprowadzić %1$@ gramów jako ilość węglowodanów dla tego posiłku?";
@@ -456,6 +456,9 @@
 /* The title of the Dosing Strategy section in settings */
 "Dosing Strategy" = "Strategia dawkowania";
 
+/* Remote command error description: duration exceed max (1: max duration in hours). */
+"Duration exceeds: %1$.1f hours" = "Czas trwania przekracza: %1$.1f godzin";
+
 /* Message to the user to enable bluetooth */
 "Enable\nBluetooth" = "Włączać\nBluetooth";
 
@@ -578,7 +581,7 @@
 "Insulin adjustments have been disabled!" = "Korekty insuliny zostały wyłączone!";
 
 /* The title of the insulin delivery graph */
-"Insulin Delivery" = "Podaż insuliny";
+"Insulin Delivery" = "Insulin Delivery";
 
 /* Details for missing data error when insulin effects are missing */
 "Insulin effects" = "wpływ insuliny";
@@ -592,7 +595,7 @@
 
 /* The title of the insulin sensitivities schedule screen
    The title text for the insulin sensitivity schedule */
-"Insulin Sensitivities" = "Wrażliwość na insulinę";
+"Insulin Sensitivities" = "Wrażliwość na insulinę (ISF)";
 
 /* Details for configuration error when insulin sensitivity schedule is missing */
 "Insulin Sensitivity Schedule" = "Harmonogram wrażliwości na insulinę";
@@ -606,6 +609,12 @@
 /* Description of an interrupted bolus dose entry (1: title for dose type, 2: value (? if no value) in bold, 3: programmed value (? if no value), 4: unit) */
 "Interrupted %1$@: <b>%2$@</b> of %3$@ %4$@" = "Przerwane %1$@ : <b> %2$@ </b> z %3$@ %4$@";
 
+/* Remote command error description: invalid absorption time. */
+"Invalid absorption time: %d hours" = "Nieprawidłowy czas absorpcji: %d godzin";
+
+/* Remote command error description: invalid bolus amount. */
+"Invalid Bolus Amount" = "Nieprawidłowa wielkość bolusa";
+
 /* Remote command error description: invalid carb amount. */
 "Invalid carb amount" = "Nieprawidłowa ilość węglowodanów";
 
@@ -621,6 +630,9 @@
 /* The title text for the issue report cell */
 "Issue Report" = "Zgłaszanie błędów";
 
+/* The notification description for a meal that was possibly not logged in Loop. */
+"It looks like you may not have logged a meal you ate. Tap to log it now." = "Wygląda na to, że nie wprowadziłeś zjedzonego posiłku. Stuknij, aby dodać zaległy posiłek.";
+
 /* Title of the warning shown when a large meal was entered */
 "Large Meal Entered" = "Wprowadzono duży posiłek";
 
@@ -647,11 +659,14 @@
 "Loop Crashed" = "Pętla uległa awarii";
 
 /* The notification title for a loop failure */
-"Loop Failure" = "Błąd Loop";
+"Loop Failure" = "Awaria pętli";
 
 /* Bluetooth unavailable alert body. */
 "Loop has detected an issue with your Bluetooth settings, and will not work successfully until Bluetooth is enabled. You will not receive glucose readings, or be able to bolus." = "Loop wykrył problem z ustawieniami Bluetooth i nie będzie działać poprawnie, dopóki Bluetooth nie zostanie włączony. Nie będziesz otrzymywać odczytów poziomu glukozy ani możliwości podania bolusa.";
 
+/* Warning displayed when user is adding a meal from an missed meal notification */
+"Loop has detected an missed meal and estimated its size. Edit the carb amount to match the amount of any carbs you may have eaten." = "Pętla wykryła pominięty posiłek i oszacowała jego wielkość. Edytuj ilość węglowodanów, aby odpowiadała ilości węglowodanów, które mogłeś zjeść.";
+
 /* The notification alert describing a long-lasting loop failure. The substitution parameter is the time interval since the last loop */
 "Loop has not completed successfully in %@" = "Loop nie działał poprawnie przez %@";
 
@@ -692,6 +707,9 @@
 /* The short unit display string for milligrams of glucose per decilter */
 "mg/dL" = "mg/dl";
 
+/* Title for missed meal notifications toggle */
+"Missed Meal Notifications" = "Powiadomienia o pominiętych posiłkach";
+
 /* The error message for missing data. (1: missing data details) */
 "Missing data: %1$@" = "Brakujące dane: %1$@";
 
@@ -699,7 +717,7 @@
 "Missing maximum allowed bolus in settings" = "Brak ustawionego maksymalnego dozwolonego bolusa";
 
 /* The short unit display string for millimoles of glucose per liter */
-"mmol/L" = "mmol/l";
+"mmol/L" = "mmol/L";
 
 /* Details for missing data error when momentum effects are missing */
 "Momentum effects" = "wpływ pędu";
@@ -713,6 +731,9 @@
 /* Sensor state description for the non-valid state */
 "Needs Attention" = "Potrzebuje uwagi";
 
+/* Remote command error description: negative duration error. */
+"Negative duration not allowed" = "Ujemny czas trwania nie jest dozwolony";
+
 /* The title of the Nightscout service */
 "Nightscout" = "Nightscout";
 
@@ -781,7 +802,10 @@
 "On" = "Włącz";
 
 /* The title text for the override presets */
-"Override Presets" = "Wstępne ustawienia pominięcia";
+"Override Presets" = "Override Presets";
+
+/* The notification title for a meal that was possibly not logged in Loop. */
+"Possible Missed Meal" = "Możliwe pominięcie posiłku";
 
 /* The label of the pre-meal mode toggle button */
 "Pre-Meal Targets" = "Poziom przed posiłkiem";
@@ -832,10 +856,10 @@
 "Pump Manager Error: %1$@" = "Błąd menedżera pompy: %1$@";
 
 /* The notification title for an empty pump reservoir */
-"Pump Reservoir Empty" = "Zbiornik w pompie jest pusty";
+"Pump Reservoir Empty" = "Zbiorniczek w pompie jest pusty";
 
 /* The notification title for a low pump reservoir */
-"Pump Reservoir Low" = "Niski stan zbiornika w pompie";
+"Pump Reservoir Low" = "Niski poziom w zbiorniczku pompy";
 
 /* The title of the cell indicating the pump is suspended */
 "Pump Suspended" = "Pump Suspended";
@@ -847,16 +871,16 @@
 "QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
 
 /* Title of insulin model preset */
-"Rapid-Acting – Adults" = "Szybko-działająca - Dorośli";
+"Rapid-Acting – Adults" = "Szybko działające – dorośli";
 
 /* Title of insulin model preset */
-"Rapid-Acting – Children" = "Szybko-działająca - Dzieci";
+"Rapid-Acting – Children" = "Szybko działająca – dzieci";
 
 /* The error message when a recommendation has expired. (1: age of recommendation in minutes) */
 "Recommendation expired: %1$@ old" = "Rekomendacja nieaktualna od %1$@";
 
 /* The title of the cell displaying a recommended temp basal value */
-"Recommended Basal" = "Rekomendowana baza";
+"Recommended Basal" = "Zalecana baza";
 
 /* Label for recommended bolus row on bolus screen
    Label for recommended bolus row on simple bolus screen */
@@ -879,13 +903,13 @@
 "Remote Command Expired" = "Zdalne polecenie wygasło";
 
 /* Details for missing data error when reservoir data is missing */
-"Reservoir" = "Zbiornik";
+"Reservoir" = "Zbiorniczek";
 
 /* Title of the prediction input effect for retrospective correction */
 "Retrospective Correction" = "Korekcja retrospektywna";
 
 /* The title of the notification action to retry a bolus command */
-"Retry" = "Ponów";
+"Retry" = "Spróbuj ponownie";
 
 /* Button text to save carbs and/or manual glucose entry and deliver a bolus */
 "Save and Deliver" = "Zapisz i podaj";
@@ -926,6 +950,9 @@
 /* Software update button link text */
 "Software Update" = "Aktualizacja oprogramowania";
 
+/* Remote command error description: invalid start time is out of range. */
+"Start time is out of range: %@" = "Czas rozpoczęcia jest poza zakresem: %@";
+
 /* The format for the description of a temporary override start date */
 "starting at %@" = "starting at %@";
 
@@ -942,19 +969,19 @@
 "Suspend Threshold" = "Próg zawieszenia pompy";
 
 /* Descriptive text for button to add CGM device */
-"Tap here to set up a CGM" = "Dotknij tutaj, aby skonfigurować CGM";
+"Tap here to set up a CGM" = "Stuknij tutaj, aby skonfigurować CGM";
 
 /* Descriptive text for button to add pump device */
-"Tap here to set up a pump" = "Dotknij tutaj, aby skonfigurować pompę";
+"Tap here to set up a pump" = "Stuknij tutaj, aby skonfigurować pompę";
 
 /* The descriptive text of the add service button in settings */
-"Tap here to set up a Service" = "Dotknij tutaj, aby skonfigurować usługę";
+"Tap here to set up a Service" = "Stuknij tutaj, aby skonfigurować usługę";
 
 /* The subtitle of the cell displaying an action to add a manually measurement glucose value */
 "Tap to Add" = "Dodaj glikemię";
 
 /* The subtitle of the cell displaying an action to resume insulin delivery */
-"Tap to Resume" = "Dotknij, aby wznowić";
+"Tap to Resume" = "Stuknij, aby wznowić";
 
 /* Message presented in the status row instructing the user to tap this row to stop a bolus */
 "Tap to Stop" = "Bolus STOP!";
@@ -1030,11 +1057,14 @@
 
 /* Event title displayed when StoredPumpEvent.title is not set
    The default description to use when an entry has no dose description */
-"Unknown" = "Nieznane";
+"Unknown" = "Nieznany";
 
 /* The error message displayed for unknown errors. (1: unknown error) */
 "Unknown Error: %1$@" = "Nieznany błąd: %1$@";
 
+/* Remote command error description: unknown preset (1: preset name). */
+"Unknown preset: %1$@" = "Nieznane ustawienie: %1$@";
+
 /* Unknown amount of time in settings' profile expiration section */
 "Unknown time" = "Nieznany czas";
 
@@ -1068,6 +1098,9 @@
 /* Explanation of suspend threshold */
 "When current or forecasted glucose is below the suspend threshold, Loop will not recommend a bolus, and will always recommend a temporary basal rate of 0 units per hour." = "Kiedy aktualna lub prognozowana glukoza znajduje się poniżej progu zawieszenia, Loop nie zaleca bolusa i zawsze zaleca tymczasową dawkę podstawową wynoszącą 0 jednostek na godzinę.";
 
+/* Description of missed meal notifications. */
+"When enabled, Loop can notify you when it detects a meal that wasn't logged." = "Po włączeniu Loop może powiadomić Cię, gdy wykryje posiłek, który nie został wprowadzony.";
+
 /* No comment provided by engineer. */
 "When out of Closed Loop mode, the app uses a simplified bolus calculator like a typical pump." = "Poza trybem pętli zamkniętej aplikacja korzysta z uproszczonego kalkulatora bolusa, takiego jak typowa pompa.";
 
diff --git a/Loop/pl.lproj/Main.strings b/Loop/pl.lproj/Main.strings
index eb0db8e09..5921fb72f 100644
--- a/Loop/pl.lproj/Main.strings
+++ b/Loop/pl.lproj/Main.strings
@@ -11,7 +11,7 @@
 "87H-N1-0vJ.text" = "Przewidywane";
 
 /* Class = "UILabel"; text = "Detail"; ObjectID = "aCb-Qs-bpu"; */
-"aCb-Qs-bpu.text" = "Szczegóły";
+"aCb-Qs-bpu.text" = "Detail";
 
 /* Class = "UILabel"; text = "Food Type"; ObjectID = "ap1-M6-naG"; */
 "ap1-M6-naG.text" = "Rodzaj żywności";
@@ -50,10 +50,10 @@
 "IxU-As-glo.text" = "Obserwowane zmiany w poziomie glukozy i uwzględnianie zmian podaży insuliny mogą być użyte do oszacowania czasu absorpcji węglowodanów.";
 
 /* Class = "UILabel"; text = "Detail"; ObjectID = "J7x-W5-gwo"; */
-"J7x-W5-gwo.text" = "Szczegóły";
+"J7x-W5-gwo.text" = "Detail";
 
 /* Class = "UILabel"; text = "Recommended Basal"; ObjectID = "k3F-Na-7mn"; */
-"k3F-Na-7mn.text" = "Rekomendowana dawka podstawowa";
+"k3F-Na-7mn.text" = "Zalecana baza";
 
 /* Class = "UILabel"; text = "Label"; ObjectID = "Krd-Aa-ret"; */
 "Krd-Aa-ret.text" = "Etykieta";
@@ -107,7 +107,7 @@
 "yn7-2M-jZz.text" = "0";
 
 /* Class = "UILabel"; text = "Title"; ObjectID = "zbc-87-wxZ"; */
-"zbc-87-wxZ.text" = "Tytuł";
+"zbc-87-wxZ.text" = "Title";
 
 /* Class = "UILabel"; text = "0"; ObjectID = "zvZ-uf-zMX"; */
 "zvZ-uf-zMX.text" = "0";
diff --git a/Loop/pt-BR.lproj/InfoPlist.strings b/Loop/pt-BR.lproj/InfoPlist.strings
index 96a0de7f0..4bcdbc511 100644
--- a/Loop/pt-BR.lproj/InfoPlist.strings
+++ b/Loop/pt-BR.lproj/InfoPlist.strings
@@ -1,3 +1,6 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Loop";
+
 /* Bundle name */
 "CFBundleName" = "$(PRODUCT_NAME)";
 
diff --git a/Loop/pt-BR.lproj/Localizable.strings b/Loop/pt-BR.lproj/Localizable.strings
index c473be359..89b099253 100644
--- a/Loop/pt-BR.lproj/Localizable.strings
+++ b/Loop/pt-BR.lproj/Localizable.strings
@@ -1,6 +1,12 @@
 /* The string format appended to active insulin that describes pending insulin. (1: pending insulin) */
 " (pending: %@)" = " (pendente: %@)";
 
+/* String denoting lack of a recommended bolus amount in the simple bolus calculator */
+"–" = "—";
+
+/* No glucose value representation (3 dashes for mg/dL) */
+"– – –" = "---";
+
 /* The format for an active override preset. (1: preset symbol)(2: preset name) */
 "%@ %@" = "%1$@ %2$@";
 
@@ -16,6 +22,9 @@
 /* Format string for glucose target range. (1: Min target)(2: Max target)(3: glucose unit) */
 "%1$@ – %2$@ %3$@" = "%1$@ – %2$@ %3$@";
 
+/* Format string combining carb entry quantity and absorption time emoji */
+"%1$@ %2$@" = "%1$@ %2$@";
+
 /* Format string for carb ratio average. (1: value)(2: carb unit) */
 "%1$@ %2$@/U" = "%1$@ %2$@/U";
 
@@ -49,6 +58,9 @@
 /* Subtitle of Rapid-Acting – Adult preset */
 "A model based on the published absorption of Humalog, Novolog, and Apidra insulin in adults." = "Um modelo baseado na absorção publicada das insulinas Humalog, Novolog e Apidra em adultos.";
 
+/* Title of the carb entry absorption time cell */
+"Absorption Time" = "Tempo de Absorção";
+
 /* Action to copy the recommended Bolus value to the actual Bolus Field */
 "AcceptRecommendedBolus" = "AceitarBolusRecomendado";
 
@@ -58,6 +70,9 @@
 /* The string format describing active carbohydrates. (1: localized glucose value description) */
 "Active Carbohydrates: %@" = "Carboidratos Ativos: %@";
 
+/* Title describing quantity of still-absorbing carbohydrates */
+"Active Carbs" = "Carboidratos Ativos";
+
 /* The title of the Insulin On-Board graph */
 "Active Insulin" = "Insulina Ativa";
 
@@ -85,7 +100,13 @@
 "API Key" = "API Key";
 
 /* The title of the nightscout API secret credential */
-"API Secret" = "API Secret";
+"API Secret" = "Chave API";
+
+/* Action sheet confirmation message for pump history deletion */
+"Are you sure you want to delete all history entries?" = "Tem certeza de que deseja excluir todas as entradas do histórico?";
+
+/* Action sheet confirmation message for reservoir deletion */
+"Are you sure you want to delete all reservoir values?" = "Tem certeza de que deseja excluir todos os valores do reservatório?";
 
 /* Confirmation message for deleting a CGM */
 "Are you sure you want to delete this CGM?" = "Você está certo que quer remover este CGM?";
@@ -101,7 +122,7 @@
 
 /* The title of the basal rate profile screen
    The title text for the basal rate schedule */
-"Basal Rates" = "Taxa Basal";
+"Basal Rates" = "Taxas Basais";
 
 /* The label of the bolus entry button
    The notification title for a bolus failure */
@@ -124,7 +145,13 @@
 
 /* The title of the carb ratios schedule screen
    The title text for the carb ratio schedule */
-"Carb Ratios" = "Relação Carb";
+"Carb Ratios" = "Taxas de Carbs";
+
+/* The title of the view controller to create a new carb entry */
+"carb-entry-title-add" = "Adicionar Carb";
+
+/* The title of the view controller to edit an existing carb entry */
+"carb-entry-title-edit" = "Editar Carb";
 
 /* Title of the prediction input effect for carbohydrates */
 "Carbohydrates" = "Carboidratos";
@@ -147,40 +174,71 @@
 /* Recovery suggestion when glucose data is missing */
 "Check your CGM data source" = "Verifique seu dispositivo CGM";
 
+/* Carb entry section footer text explaining absorption time */
+"Choose a longer absorption time for larger meals, or those containing fats and proteins. This is only guidance to the algorithm and need not be exact." = "Escolha um tempo de absorção mais longo para refeições maiores ou aquelas que contenham gorduras e proteínas. Esta é apenas uma orientação para o algoritmo e não precisa ser exata.";
+
 /* The title text for the looping enabled switch cell */
 "Closed Loop" = "Ciclo Fechado";
 
+/* The format string describing the date of an IOB value. The first format argument is the localized date. */
+"com.loudnate.InsulinKit.IOBDateLabel" = "em %1$@";
+
+/* The format string describing the starting date of a total value. The first format argument is the localized date. */
+"com.loudnate.InsulinKit.totalDateLabel" = "desde %1$@";
+
 /* The title of the action used to dismiss an error alert */
 "com.loudnate.LoopKit.errorAlertActionTitle" = "OK";
 
 /* The title of the configuration section in settings */
-"Configuration" = "Configurações";
+"Configuration" = "Configuração";
 
 /* The error message displayed for configuration errors. (1: configuration error details) */
 "Configuration Error: %1$@" = "Erro de Configuração: %1$@";
 
+/* Default alert dismissal */
+"Continue" = "Continuar";
+
 /* The title of the continuous glucose monitor section in settings */
 "Continuous Glucose Monitor" = "Monitoramento Contínuo de Glicose";
 
 /* The title of the glucose target range schedule screen
    The title text for the glucose target range schedule */
-"Correction Range" = "Zona de correção";
+"Correction Range" = "Faixa de Correção";
 
 /* Message when offering bolus recommendation even though bg is below range. (1: glucose value) */
 "Current glucose of %1$@ is below correction range." = " Glicemia atual %1$@ está abaixo da zona de correção.";
 
 /* The title of the cell indicating a generic temporary override is enabled */
-"Custom Override" = "Sobreposições";
+"Custom Override" = "Sobreposição Personalizada";
+
+/* Date picker label */
+"Date" = "Data";
+
+/* The short unit display string for decibles */
+"dB" = "dB";
+
+/* The title of the button to remove the credentials for a service */
+"Delete Account" = "Remover Conta";
+
+/* Button title to delete all objects */
+"Delete All" = "Remover Todos";
 
 /* Button title to delete CGM */
 "Delete CGM" = "Remover CGM";
 
+/* Button title to delete a service */
+"Delete Service" = "Delete Service";
+
 /* Title text for delivery limits */
-"Delivery Limits" = "Limites de entrega";
+"Delivery Limits" = "Limites de Entrega";
 
 /* The action hint of the workout mode toggle button when enabled */
 "Disables" = "Desativa";
 
+/* Default alert dismissal
+   The button label of the action used to dismiss an error alert */
+"Dismiss" = "Dispensar";
+
 /* The action hint of the workout mode toggle button when disabled */
 "Enables" = "Ativar";
 
@@ -193,6 +251,9 @@
 /* The alert title for a resume error */
 "Error Resuming" = "Erro ao Retomar";
 
+/* Segmented button title for insulin delivery log event history */
+"Event History" = "Event History";
+
 /* The subtitle format describing eventual glucose. (1: localized glucose value description) */
 "Eventually %@" = "Eventualmente %@";
 
@@ -205,6 +266,9 @@
 /* The format string used to describe a finite workout targets duration */
 "For %1$@" = "Por %1$@";
 
+/* The short unit display string for grams */
+"g" = "g";
+
 /* The title of the glucose and prediction graph */
 "Glucose" = "Glicose";
 
@@ -227,7 +291,7 @@
 "Insulin Absorbed (U) × Insulin Sensitivity (%1$@/U)" = "Insulina Absorvida (U) × Sensibilidade a Insulina (%1$@/U)";
 
 /* The title of the insulin delivery graph */
-"Insulin Delivery" = "Insulina Entregue";
+"Insulin Delivery" = "Insulin Delivery";
 
 /* Details for missing data error when insulin effects are missing */
 "Insulin effects" = "Efeitos da Insulina";
@@ -258,18 +322,44 @@
 /* The notification alert describing a long-lasting loop failure. The substitution parameter is the time interval since the last loop */
 "Loop has not completed successfully in %@" = "Nenhum ciclo completo com sucesso em %@";
 
+/* Details for configuration error when maximum bolus is missing */
+"Maximum Bolus" = "Bolus Máximo";
+
+/* The short unit display string for milligrams of glucose per decilter */
+"mg/dL" = "mg/dL";
+
 /* The error message for missing data. (1: missing data details) */
 "Missing data: %1$@" = "Dados ausentes: %1$@";
 
+/* The short unit display string for millimoles of glucose per liter */
+"mmol/L" = "mmol/L";
+
 /* Details for missing data error when momentum effects are missing */
 "Momentum effects" = "Efeitos de aceleração";
 
+/* Text for more info action on notification of upcoming profile expiration */
+"More Info" = "Mais Info";
+
+/* Sensor state description for the non-valid state */
+"Needs Attention" = "Precisa de Atenção";
+
 /* The title of the Nightscout service */
 "Nightscout" = "Nightscout";
 
 /* The error message displayed for device connection errors. */
 "No connected devices, or failure during device connection" = "Nenhum dispositivo conectado ou falha durante a conexão";
 
+/* Alert acknowledgment OK button
+   Critical Alert permissions disabled alert button
+   Default action for alert when alert acknowledgment fails
+   Notifications permissions disabled alert button
+   Text for ok action on notification of upcoming profile expiration
+   The title of the notification action to acknowledge a device alert */
+"OK" = "OK";
+
+/* Notification Setting Status is On */
+"On" = "Ligado";
+
 /* The title text for the override presets */
 "Override Presets" = "Sobreposições Predefinidas";
 
@@ -294,6 +384,9 @@
 /* The error message when pump data is too old to be used. (1: pump data age in minutes) */
 "Pump data is %1$@ old" = "Dados da bomba são de %1$@ atrás";
 
+/* The title of the screen displaying a pump event */
+"Pump Event" = "Eventos da Bomba";
+
 /* Details for configuration error when pump manager is missing */
 "Pump Manager" = "Gerenciamento da Bomba";
 
@@ -306,6 +399,9 @@
 /* The title of the cell indicating the pump is suspended */
 "Pump Suspended" = "Bomba Suspensa";
 
+/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
+"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
+
 /* Title of insulin model preset */
 "Rapid-Acting – Adults" = "Ação-Rápida – Adultos";
 
@@ -322,13 +418,13 @@
 "Recommended Bolus: %@ Units" = "Bolus Recomendado: %@ Unidades";
 
 /* Details for missing data error when reservoir data is missing */
-"Reservoir" = "Reservatório";
+"Reservoir" = "Reservoir";
 
 /* Title of the prediction input effect for retrospective correction */
 "Retrospective Correction" = "Correção Retrospectiva";
 
 /* The title of the notification action to retry a bolus command */
-"Retry" = "Tentar novamente";
+"Retry" = "Tentar de Novo";
 
 /* The title of the services section in settings */
 "Services" = "Serviços";
@@ -360,12 +456,19 @@
 /* Subtitle description of Walsh insulin model setting */
 "The legacy model used by Loop, allowing customization of action duration." = "O modelo antigo utilizado pelo Loop permitindo personalização da duração da ação.";
 
+/* Alert body displayed absorption time greater than max (1: maximum absorption time) */
+"The maximum absorption time is %@" = "O tempo máximo de absorção é %@";
+
 /* Body of the alert describing a maximum bolus validation error. (1: The localized max bolus value) */
 "The maximum bolus amount is %@ Units" = "O bolus máximo é %@ Unidades";
 
 /* The short unit display string for international units of insulin */
 "U" = "U";
 
+/* Event title displayed when StoredPumpEvent.title is not set
+   The default description to use when an entry has no dose description */
+"Unknown" = "Desconhecido";
+
 /* The format for the description of a temporary override end date */
 "until %@" = "até %@";
 
diff --git a/Loop/pt-BR.lproj/Main.strings b/Loop/pt-BR.lproj/Main.strings
index 3dac206a3..a78e3c7a4 100644
--- a/Loop/pt-BR.lproj/Main.strings
+++ b/Loop/pt-BR.lproj/Main.strings
@@ -1,5 +1,8 @@
+/* Class = "UILabel"; text = "g"; ObjectID = "0RV-d5-muE"; */
+"0RV-d5-muE.text" = "g";
+
 /* Class = "UINavigationItem"; title = "Status"; ObjectID = "3kU-n2-fha"; */
-"3kU-n2-fha.title" = "Status";
+"3kU-n2-fha.title" = "Estado";
 
 /* Class = "UILabel"; text = "3.5 U/hour @ 12:12 PM"; ObjectID = "5gz-kZ-iF1"; */
 "5gz-kZ-iF1.text" = "3.5 U/hora @ 12:12 PM";
@@ -8,7 +11,7 @@
 "87H-N1-0vJ.text" = "Prevista";
 
 /* Class = "UILabel"; text = "Detail"; ObjectID = "aCb-Qs-bpu"; */
-"aCb-Qs-bpu.text" = "Detalhes";
+"aCb-Qs-bpu.text" = "Detail";
 
 /* Class = "UILabel"; text = "Label"; ObjectID = "bIL-Ub-qYp"; */
 "bIL-Ub-qYp.text" = "Rótulo";
@@ -31,6 +34,9 @@
 /* Class = "UILabel"; text = "Observed"; ObjectID = "EAn-Ja-S1d"; */
 "EAn-Ja-S1d.text" = "Observada";
 
+/* Class = "UILabel"; text = "3.5 U/hour @ 12:12 PM"; ObjectID = "fWV-jg-ICt"; */
+"fWV-jg-ICt.text" = "3.5 U/hora @ 12:12 PM";
+
 /* Class = "UITableViewController"; title = "Carbohydrate Effects"; ObjectID = "hZZ-2S-lrd"; */
 "hZZ-2S-lrd.title" = "Efeitos dos Carboidratos";
 
@@ -38,7 +44,7 @@
 "IxU-As-glo.text" = "Alterações observadas na glicose, subtraindo alterações modeladas da administração de insulina, podem ser usadas para estimar a absorção de carboidratos.";
 
 /* Class = "UILabel"; text = "Detail"; ObjectID = "J7x-W5-gwo"; */
-"J7x-W5-gwo.text" = "Detalhes";
+"J7x-W5-gwo.text" = "Detail";
 
 /* Class = "UILabel"; text = "Recommended Basal"; ObjectID = "k3F-Na-7mn"; */
 "k3F-Na-7mn.text" = "Basal Recomendada";
@@ -67,11 +73,14 @@
 /* Class = "UINavigationItem"; title = "Carbohydrates"; ObjectID = "Vpi-5b-bY5"; */
 "Vpi-5b-bY5.title" = "Carboidratos";
 
+/* Class = "UILabel"; text = "Recommended Basal"; ObjectID = "xhx-PI-bBI"; */
+"xhx-PI-bBI.text" = "Basal Recomendada";
+
 /* Class = "UILabel"; text = "0"; ObjectID = "yn7-2M-jZz"; */
 "yn7-2M-jZz.text" = "0";
 
 /* Class = "UILabel"; text = "Title"; ObjectID = "zbc-87-wxZ"; */
-"zbc-87-wxZ.text" = "Título";
+"zbc-87-wxZ.text" = "Title";
 
 /* Class = "UILabel"; text = "0"; ObjectID = "zvZ-uf-zMX"; */
 "zvZ-uf-zMX.text" = "0";
diff --git a/Loop/ro.lproj/InfoPlist.strings b/Loop/ro.lproj/InfoPlist.strings
index c207261b9..342b12482 100644
--- a/Loop/ro.lproj/InfoPlist.strings
+++ b/Loop/ro.lproj/InfoPlist.strings
@@ -5,7 +5,7 @@
 "CFBundleName" = "$(PRODUCT_NAME)";
 
 /* Privacy - Bluetooth Always Usage Description */
-"NSBluetoothAlwaysUsageDescription" = "Bluetooth este folosit pentru a comunica cu pompa de insulină, precum și cu dispozitivele de monitorizare glicemică continuă";
+"NSBluetoothAlwaysUsageDescription" = "Bluetooth este folosit pentru a comunica cu pompa de insulină, precum și cu dispozitivele de monitorizare glicemică continuă.";
 
 /* Privacy - Bluetooth Peripheral Usage Description */
 "NSBluetoothPeripheralUsageDescription" = "Bluetooth este folosit pentru a comunica cu pompa de insulină, precum și cu dispozitivele de monitorizare glicemică continuă.";
@@ -20,7 +20,7 @@
 "NSHealthShareUsageDescription" = "Informațiile despre nutriție din baza de date Sănătate sunt folosite pentru a determina efectele glucozei. Informațiile despre glucoză din baza de date Sănătate sunt folosite pentru construirea de grafice și calcule de trend/momentum.";
 
 /* Privacy - Health Update Usage Description */
-"NSHealthUpdateUsageDescription" = "Carbohidrații introduși în aplicație și pe ceas sunt stocați în baza de date Sănătate. Glicemiile din GCM sunt stocate în mod confidențial în HealthKit.";
+"NSHealthUpdateUsageDescription" = "Carbohidrații introduși în aplicație și pe ceas sunt stocați în baza de date Sănătate. Glicemiile din GCM sunt stocate în siguranță în HealthKit.";
 
 /* Privacy - Siri Usage Description */
 "NSSiriUsageDescription" = "Loop folosește Siri pentru a vă permite să activați presetări cu ajutorul vocii.";
diff --git a/Loop/ro.lproj/Localizable.strings b/Loop/ro.lproj/Localizable.strings
index 6ca9de534..2aa2fcb60 100644
--- a/Loop/ro.lproj/Localizable.strings
+++ b/Loop/ro.lproj/Localizable.strings
@@ -26,7 +26,7 @@
 "." = ".";
 
 /* The format for an active override preset. (1: preset symbol)(2: preset name) */
-"%@ %@" = "%1$@ %2$@";
+"%@ %@" = "%1$@%2$@";
 
 /* Formats absorbed carb value */
 "%@ absorbed" = "%@ absorbiți";
@@ -50,7 +50,7 @@
 "%1$@ – %2$@ %3$@" = "%1$@ – %2$@ %3$@";
 
 /* Format string combining carb entry quantity and absorption time emoji */
-"%1$@ %2$@" = "%1$@ %2$@";
+"%1$@ %2$@" = "%1$@%2$@";
 
 /* Format string for carb ratio average. (1: value)(2: carb unit) */
 "%1$@ %2$@/U" = "%1$@ %2$@/U";
@@ -147,7 +147,7 @@
 "Active Insulin: %@" = "Insulină activă: %@";
 
 /* Title of the user activity for adding carbs */
-"Add Carb Entry" = "Adăugare carbohidrați";
+"Add Carb Entry" = "Adaugă carbohidrați";
 
 /* Action sheet title selecting CGM
    Title text for button to set up a CGM */
@@ -199,7 +199,7 @@
 "API Key" = "API Key";
 
 /* The title of the nightscout API secret credential */
-"API Secret" = "API Secret";
+"API Secret" = "Secretul API";
 
 /* Settings app profile section */
 "App Profile" = "Profil";
@@ -211,16 +211,16 @@
 "Are you sure you want to delete all logged dose entries?" = "Sigur doriți să ștergeți toate înregistrările despre dozele de insulina?";
 
 /* Action sheet confirmation message for reservoir deletion */
-"Are you sure you want to delete all reservoir values?" = "Sigur doriți să ștergeți toate înregistrările despre rezervorul pompei?";
+"Are you sure you want to delete all reservoir values?" = "Sigur doriți să ștergeți toate valorile de rezervor?";
 
 /* No comment provided by engineer. */
 "Are you sure you want to delete all your %@ Data?\n(This action is not reversible)" = "Sunteţi sigur că doriţi să ştergeţi toate datele %@.\n(Această acţiune nu este reversibilă)";
 
 /* Confirmation message for deleting a CGM */
-"Are you sure you want to delete this CGM?" = "Sigur doriți să ștergeți acest CGM?";
+"Are you sure you want to delete this CGM?" = "Sunteți sigur că doriți să ștergeți acest CGM?";
 
 /* Confirmation message for deleting a service */
-"Are you sure you want to delete this service?" = "Sunteți sigur că doriți să eliminați acest serviciu?";
+"Are you sure you want to delete this service?" = "Ești sigur că vrei să ștergi acest serviciu?";
 
 /* Format fragment for a specific time */
 "at %@" = "la %@";
@@ -257,12 +257,18 @@
    The notification title for a bolus failure */
 "Bolus" = "Bolus";
 
+/* The notification title for a bolus issue */
+"Bolus Issue" = "Problemă bolus";
+
 /* Alert title for an updated bolus recommendation */
-"Bolus Recommendation Updated" = "Recomandare actualizată pentru bolus";
+"Bolus Recommendation Updated" = "Actualizare Recomandare bolus";
 
 /* Title for card displaying carb entry and bolus recommendation */
 "Bolus Summary" = "Rezumat Bolus";
 
+/* Alert title for a bolus too small validation error */
+"Bolus Too Small" = "Bolus prea mic";
+
 /* The format string for bolus progress. (1: delivered volume)(2: total volume) */
 "Bolused %1$@ of %2$@" = "Bolus administrat %1$@ of %2$@";
 
@@ -282,16 +288,22 @@
    Label for carb entry row on bolus screen */
 "Carb Entry" = "Cantitate CH";
 
+/* Details for configuration error when carb ratio schedule is missing */
+"Carb Ratio Schedule" = "Programul raportului de carbohidrați";
+
 /* The title of the carb ratios schedule screen
    The title text for the carb ratio schedule */
 "Carb Ratios" = "Raport carbohidrați/insulină";
 
 /* The title of the view controller to create a new carb entry */
-"carb-entry-title-add" = "Adăugare carbohidrați";
+"carb-entry-title-add" = "Adaugă carbohidrați";
 
 /* The title of the view controller to edit an existing carb entry */
 "carb-entry-title-edit" = "Editează carbohidrați";
 
+/* Title for bolus screen warning when carbohydrate entry is too large */
+"Carbohydrate Entry Too Large" = "Intrarea de carbohidrați este prea mare";
+
 /* Title of the prediction input effect for carbohydrates */
 "Carbohydrates" = "Carbohidrați";
 
@@ -299,10 +311,10 @@
 "Carbs Absorbed (g) ÷ Carb Ratio (g/U) × Insulin Sensitivity (%1$@/U)" = "Carbohidrați absorbiți (g) ÷ Raport carbohidrați (g/U) × Factor de sensibilitate la insulină (%1$@/U)";
 
 /* The notification alert describing a low pump battery */
-"Change the pump battery immediately" = "Schimbați bateria pompei imediat";
+"Change the pump battery immediately" = "Schimbați imediat bateria pompei";
 
 /* The notification alert describing an empty pump reservoir */
-"Change the pump reservoir now" = "Schimbați bateria pompei acum";
+"Change the pump reservoir now" = "Schimbați rezervorul pompei acum";
 
 /* Details for configuration error when one or more loop settings are missing */
 "Check settings" = "Verificați setările";
@@ -313,18 +325,27 @@
 /* Recovery suggestion when glucose data is missing */
 "Check your CGM data source" = "Verificați sursa de date CGM";
 
+/* Caption for bolus screen notice when glucose data is in the future */
+"Check your device time and/or remove any invalid data from Apple Health." = "Verificați ora dispozitivului și/sau eliminați orice date incorecte din Apple Health.";
+
 /* Carb entry section footer text explaining absorption time */
 "Choose a longer absorption time for larger meals, or those containing fats and proteins. This is only guidance to the algorithm and need not be exact." = "Alegeți o durată mai lungă de absorbție pentru mese mai mari sau pentru cele care conțin grăsimi și proteine. Nu e necesară o valoare exactă, scopul e să oferim doar o ghidare pentru algoritm.";
 
+/* The button label of the action used to dismiss the unsafe notification permission alert */
+"Close" = "Închide";
+
 /* The title text for the looping enabled switch cell */
 "Closed Loop" = "Loop automat";
 
 /* Alert title for closed loop off informational modal */
-"Closed Loop OFF" = "Buclă închisă oprită";
+"Closed Loop OFF" = "Buclă închisă dezactivata";
 
 /* The description text for the looping enabled switch cell when closed loop is not allowed because the sensor is inactive */
 "Closed Loop requires an active CGM Sensor Session" = "Buclă închisă necesită o sesiune activă de senzor CGM";
 
+/* The description text for the looping enabled switch cell when onboarding is not complete */
+"Closed Loop requires Setup to be Complete" = "Bucla închisă necesită ca setarea să fie finalizată";
+
 /* The format string describing the date of an IOB value. The first format argument is the localized date. */
 "com.loudnate.InsulinKit.IOBDateLabel" = "la %1$@";
 
@@ -334,12 +355,18 @@
 /* The title of the action used to dismiss an error alert */
 "com.loudnate.LoopKit.errorAlertActionTitle" = "OK";
 
+/* Title text for button to complete setup */
+"Complete Setup" = "Configurare finalizată";
+
 /* The title of the configuration section in settings */
 "Configuration" = "Configurare";
 
 /* The error message displayed for configuration errors. (1: configuration error details) */
 "Configuration Error: %1$@" = "Eroare configurare: %1$@";
 
+/* Default alert dismissal */
+"Continue" = "Continuă";
+
 /* The title of the continuous glucose monitor section in settings */
 "Continuous Glucose Monitor" = "Monitorizare glicemică continuă";
 
@@ -347,6 +374,9 @@
    The title text for the glucose target range schedule */
 "Correction Range" = "Interval țintă pentru corecție";
 
+/* Critical Alerts Status text */
+"Critical Alerts" = "Alerte critice";
+
 /* Critical event log ready text */
 "Critical Event Log Ready" = "Jurnal evenimente critice pregătit";
 
@@ -363,7 +393,7 @@
 "Current glucose of %1$@ is below correction range." = " Glicemia curentă de %1$@ se situează sub intervalul țintă de corecție.";
 
 /* The title of the cell indicating a generic temporary override is enabled */
-"Custom Override" = "Înlocuire";
+"Custom Override" = "Modificare personalizată";
 
 /* The title of the cell indicating a generic custom preset is enabled */
 "Custom Preset" = "Presetare particularizată";
@@ -384,10 +414,10 @@
 "Delete All" = "Șterge tot";
 
 /* Button title to delete CGM */
-"Delete CGM" = "Șterge CGM";
+"Delete CGM" = "Ștergeți CGM";
 
 /* Button title to delete a service */
-"Delete Service" = "Șterge serviciu";
+"Delete Service" = "Șterge serviciul";
 
 /* No comment provided by engineer. */
 "Delete Testing CGM Data" = "Șterge date CGM de testare";
@@ -402,11 +432,14 @@
 "Deliver" = "Livrează";
 
 /* Title text for delivery limits */
-"Delivery Limits" = "Limite administrare";
+"Delivery Limits" = "Limite de livrare";
 
 /* Descriptive text for Therapy Settings */
 "Diabetes Treatment" = "Tratament Diabet";
 
+/* Alert body when entered carbohydrates is greater than threshold (1: entered quantity in grams) */
+"Did you intend to enter %1$@ grams as the amount of carbohydrates for this meal?" = "Ați intenționat să introduceți %1$@ grame ca cantitate de carbohidrați pentru această masă?";
+
 /* The action hint of the workout mode toggle button when enabled */
 "Disables" = "Dezactivează";
 
@@ -415,7 +448,7 @@
 "Dismiss" = "Renunță";
 
 /* No comment provided by engineer. */
-"Done" = "Terminat";
+"Done" = "Realizat";
 
 /* Title for card to log dose */
 "Dose Summary" = "Rezumat doză";
@@ -423,6 +456,9 @@
 /* The title of the Dosing Strategy section in settings */
 "Dosing Strategy" = "Strategie de dozare";
 
+/* Remote command error description: duration exceed max (1: max duration in hours). */
+"Duration exceeds: %1$.1f hours" = "Durata depășește: %1$.1f ore";
+
 /* Message to the user to enable bluetooth */
 "Enable\nBluetooth" = "Activează Bluetooth";
 
@@ -459,6 +495,12 @@
 /* The subtitle format describing eventual glucose. (1: localized glucose value description) */
 "Eventually %@" = "Ajunge la %@";
 
+/* Remote command error description: bolus exceeds maximum bolus in settings. */
+"Exceeds maximum allowed bolus in settings" = "Depășește bolusul maxim permis în setări";
+
+/* Remote command error description: carbs exceed maximum amount. */
+"Exceeds maximum allowed carbs" = "Depășește maximul de carbohidrați permis";
+
 /* The title of the alert describing a maximum bolus validation error */
 "Exceeds Maximum Bolus" = "Depășește bolusul maxim";
 
@@ -469,7 +511,7 @@
 "Export-%1$@" = "Export-%1$@";
 
 /* The alert title for a resume error */
-"Failed to Resume Insulin Delivery" = "Nu s-a reușit reluarea livrării insulinei";
+"Failed to Resume Insulin Delivery" = "Nu s-a reușit reluarea administrării de insulină";
 
 /* Title of insulin model preset */
 "Fiasp" = "Fiasp";
@@ -483,11 +525,20 @@
 /* The format string used to describe a finite workout targets duration */
 "For %1$@" = "Timp de %1$@";
 
+/* No comment provided by engineer. */
+"Forecasted blood glucose may still be higher than target range." = "Glicemia prognozată poate fi în continuare mai mare decât intervalul țintă.";
+
+/* Title for forecast explanation modal on bolus view */
+"Forecasted Glucose" = "Glicemia prognozată";
+
 /* The short unit display string for grams */
 "g" = "g";
 
+/* Get help with Alert Permissions support button text */
+"Get help with Alert Permissions" = "Obțineți ajutor cu permisiunile de alertă";
+
 /* The title of the glucose and prediction graph */
-"Glucose" = "Glicemie";
+"Glucose" = "Glucoza";
 
 /* The error message when glucose data is too old to be used. (1: glucose data age in minutes) */
 "Glucose data is %1$@ old" = "Datele despre glicemie au o vechime de %1$@";
@@ -505,6 +556,9 @@
 /* Title of the prediction input effect for glucose momentum */
 "Glucose Momentum" = "Momentum glicemie";
 
+/* Details for configuration error when glucose target range schedule is missing */
+"Glucose Target Range Schedule" = "Programul intervalului țintă de glucoză";
+
 /* The title text for how to update */
 "How to update (LoopDocs)" = "Cum se actualizează (LoopDocs)";
 
@@ -527,34 +581,40 @@
 "Insulin adjustments have been disabled!" = "Ajustările de insulină au fost dezactivate!";
 
 /* The title of the insulin delivery graph */
-"Insulin Delivery" = "Administrare insulină";
+"Insulin Delivery" = "Insulin Delivery";
 
 /* Details for missing data error when insulin effects are missing */
 "Insulin effects" = "Efecte insulină";
 
 /* Details for configuration error when insulin model is missing
    The title text for the insulin model setting row */
-"Insulin Model" = "Model insulină";
+"Insulin Model" = "Modelul de insulină";
 
 /* Descriptive text for Insulin Pump */
 "Insulin Pump" = "Pompa de insulină";
 
 /* The title of the insulin sensitivities schedule screen
    The title text for the insulin sensitivity schedule */
-"Insulin Sensitivities" = "Sensibilitate insulină";
+"Insulin Sensitivities" = "Factor de sensibilitate la insulină";
 
 /* Details for configuration error when insulin sensitivity schedule is missing */
 "Insulin Sensitivity Schedule" = "Programul  Factorului de Sensibilitate la Insulină";
 
 /* The title of the cell indicating the pump is suspended */
-"Insulin Suspended" = "Livrarea insulinei suspendată";
+"Insulin Suspended" = "Administrarea insulinei suspendată";
 
 /* Insulin type label */
-"Insulin Type" = "Tip insulină";
+"Insulin Type" = "Tipul de insulină";
 
 /* Description of an interrupted bolus dose entry (1: title for dose type, 2: value (? if no value) in bold, 3: programmed value (? if no value), 4: unit) */
 "Interrupted %1$@: <b>%2$@</b> of %3$@ %4$@" = "Întrerupere %1$@: <b>%2$@</b> din %3$@ %4$@";
 
+/* Remote command error description: invalid absorption time. */
+"Invalid absorption time: %d hours" = "Timp invalid de absorbție: %li ore";
+
+/* Remote command error description: invalid bolus amount. */
+"Invalid Bolus Amount" = "Cantitate invalidă de bolus";
+
 /* Remote command error description: invalid carb amount. */
 "Invalid carb amount" = "Cantitate de carbohidrați invalidă";
 
@@ -570,6 +630,9 @@
 /* The title text for the issue report cell */
 "Issue Report" = "Raportare probleme";
 
+/* The notification description for a meal that was possibly not logged in Loop. */
+"It looks like you may not have logged a meal you ate. Tap to log it now." = "Se pare că nu ați înregistrat o masă pe care ați mâncat-o. Atingeți pentru a o înregistra acum.";
+
 /* Title of the warning shown when a large meal was entered */
 "Large Meal Entered" = "O cantitate mare de carbohidrați a fost introdusă";
 
@@ -601,6 +664,9 @@
 /* Bluetooth unavailable alert body. */
 "Loop has detected an issue with your Bluetooth settings, and will not work successfully until Bluetooth is enabled. You will not receive glucose readings, or be able to bolus." = "Loop a detectat o problemă cu setările Bluetooth și nu va funcționa cu succes până când Bluetooth nu este activat. Nu veţi primi valori ale glicemiei sau nu veţi putea face bolus.";
 
+/* Warning displayed when user is adding a meal from an missed meal notification */
+"Loop has detected an missed meal and estimated its size. Edit the carb amount to match the amount of any carbs you may have eaten." = "Loop a detectat o masă neanunțată și a estimat dimensiunea acesteia. Editați cantitatea de carbohidrați pentru a se potrivi cu cantitatea de carbohidrați pe care ați consumat-o.";
+
 /* The notification alert describing a long-lasting loop failure. The substitution parameter is the time interval since the last loop */
 "Loop has not completed successfully in %@" = "Loop nu a rulat cu succes timp de %@";
 
@@ -641,6 +707,9 @@
 /* The short unit display string for milligrams of glucose per decilter */
 "mg/dL" = "mg/dL";
 
+/* Title for missed meal notifications toggle */
+"Missed Meal Notifications" = "Notificări privind mesele pierdute";
+
 /* The error message for missing data. (1: missing data details) */
 "Missing data: %1$@" = "Date lipsă: %1$@";
 
@@ -654,7 +723,7 @@
 "Momentum effects" = "Efecte momentum";
 
 /* Text for more info action on notification of upcoming profile expiration */
-"More Info" = "Mai multe informații";
+"More Info" = "Detalii";
 
 /* Label for toggle to mute all alerts */
 "Mute All Alerts" = "Dezactivați toate alertele";
@@ -662,6 +731,9 @@
 /* Sensor state description for the non-valid state */
 "Needs Attention" = "Necesită atenție";
 
+/* Remote command error description: negative duration error. */
+"Negative duration not allowed" = "Durata negativă nu este permisă";
+
 /* The title of the Nightscout service */
 "Nightscout" = "Nightscout";
 
@@ -715,6 +787,9 @@
 /* Notification Setting Status is Off */
 "Off" = "Oprit";
 
+/* Modal body for crash recovery alert */
+"Oh no! Loop crashed while dosing, and insulin adjustments have been paused until this dialog is closed. Dosing history may not be accurate. Please review Insulin Delivery charts, and monitor your blood glucose carefully." = "Oh nu! Loop s-a blocat în timpul administrării, iar ajustările insulinei au fost întrerupte până când acest dialog este închis. Istoricul administrării poate să nu fie exact. Vă rugăm să consultați tabelele de livrare a insulinei și să vă monitorizați cu atenție glicemia.";
+
 /* Alert acknowledgment OK button
    Critical Alert permissions disabled alert button
    Default action for alert when alert acknowledgment fails
@@ -723,15 +798,24 @@
    The title of the notification action to acknowledge a device alert */
 "OK" = "OK";
 
+/* Notification Setting Status is On */
+"On" = "Pornit";
+
 /* The title text for the override presets */
 "Override Presets" = "Presetări de înlocuire";
 
+/* The notification title for a meal that was possibly not logged in Loop. */
+"Possible Missed Meal" = "Posibilă masă neanunțată";
+
 /* The label of the pre-meal mode toggle button */
 "Pre-Meal Targets" = "Ținte preprandiale";
 
 /* 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$@." = "Glicemia prognozată pentru %1$@ este %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ă.";
 
@@ -750,8 +834,11 @@
 /* Time that profile expires */
 "Profile expires " = "Profilul expiră ";
 
+/* The title for notification of upcoming profile expiration */
+"Profile Expires Soon" = "Profilul expiră în curând";
+
 /* The title of the pump section in settings */
-"Pump" = "Pompă";
+"Pump" = "Pompa";
 
 /* The notification title for a low pump battery */
 "Pump Battery Low" = "Nivel scăzut baterie pompă";
@@ -760,16 +847,19 @@
 "Pump data is %1$@ old" = "Datele din pompă sunt vechi de %1$@";
 
 /* The title of the screen displaying a pump event */
-"Pump Event" = "Eveniment pompă";
+"Pump Event" = "Eveniment de pompă";
 
 /* Details for configuration error when pump manager is missing */
 "Pump Manager" = "Manager pompă";
 
+/* The error message displayed for pump manager errors. (1: pump manager error) */
+"Pump Manager Error: %1$@" = "Eroare de gestionare a pompei: %1$@";
+
 /* The notification title for an empty pump reservoir */
-"Pump Reservoir Empty" = "Rezervor pompă gol";
+"Pump Reservoir Empty" = "Rezervorul pompei este gol";
 
 /* The notification title for a low pump reservoir */
-"Pump Reservoir Low" = "Nivel scăzut rezervor pompă";
+"Pump Reservoir Low" = "Rezervor de pompare scăzut";
 
 /* The title of the cell indicating the pump is suspended */
 "Pump Suspended" = "Pompă suspendată";
@@ -778,27 +868,40 @@
 "Pump Suspended. Automatic dosing is disabled." = "Pompă suspendată. Administrarea automată este dezactivată.";
 
 /* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
-"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
+"QUANTITY_VALUE_AND_UNIT" = "%1$@%2$@";
 
 /* Title of insulin model preset */
-"Rapid-Acting – Adults" = "Rapid-Acting – Adulți";
+"Rapid-Acting – Adults" = "Acțiune rapidă – Adulți";
 
 /* Title of insulin model preset */
-"Rapid-Acting – Children" = "Rapid-Acting – Copii";
+"Rapid-Acting – Children" = "Acțiune rapidă - Copii";
 
 /* The error message when a recommendation has expired. (1: age of recommendation in minutes) */
 "Recommendation expired: %1$@ old" = "Recomandare expirată: acum %1$@";
 
 /* The title of the cell displaying a recommended temp basal value */
-"Recommended Basal" = "Bazal recomandat";
+"Recommended Basal" = "Bazala recomandată";
 
 /* Label for recommended bolus row on bolus screen
    Label for recommended bolus row on simple bolus screen */
 "Recommended Bolus" = "Bolus recomandat";
 
+/* Title for bolus screen warning when recommended bolus exceeds max bolus */
+"Recommended Bolus Exceeds Maximum Bolus" = "Bolusul recomandat depășește bolusul maxim";
+
 /* Accessibility hint describing recommended bolus units */
 "Recommended Bolus: %@ Units" = "Bolus recomandat: %@ unități";
 
+/* The notification title for a remote bolus. (1: Bolus amount)
+   The notification title for a remote failure. (1: Bolus amount) */
+"Remote Bolus Entry: %@ U" = "Introducere de la distanță a bolusului: %@ U";
+
+/* The carb amount message for a remote carbs entry notification. (1: Carb amount in grams) */
+"Remote Carbs Entry: %d grams" = "Introducere de la distanță a carbohidraților: %d grame";
+
+/* The notification title for the remote command expiration error */
+"Remote Command Expired" = "Comanda de la distanță a expirat";
+
 /* Details for missing data error when reservoir data is missing */
 "Reservoir" = "Rezervor";
 
@@ -814,12 +917,21 @@
 /* Button text to save carbs and/or manual glucose entry without a bolus */
 "Save without Bolusing" = "Salvează fără bolusare";
 
+/* Scheduled Delivery status text */
+"Scheduled" = "Programat";
+
+/* List header for mute all alerts period */
+"Select Mute Period" = "Selectați perioada de dezactivare";
+
 /* The title of the services section in settings */
 "Services" = "Servicii";
 
 /* The label of the settings button */
 "Settings" = "Setări";
 
+/* The title of the cell indicating that onboarding is suspended */
+"Setup Incomplete" = "Configurare nefinalizată";
+
 /* Loop Completion HUD accessibility hint */
 "Shows last loop error" = "Afișează ultima eroare de loop";
 
@@ -833,7 +945,13 @@
 "since %@" = "de la %@";
 
 /* The title of the nightscout site URL credential */
-"Site URL" = "Site URL";
+"Site URL" = "URL site";
+
+/* Software update button link text */
+"Software Update" = "Actualizare de software";
+
+/* Remote command error description: invalid start time is out of range. */
+"Start time is out of range: %@" = "Ora de începere este în afara intervalului: %@";
 
 /* The format for the description of a temporary override start date */
 "starting at %@" = "începând de la %@";
@@ -868,11 +986,29 @@
 /* Message presented in the status row instructing the user to tap this row to stop a bolus */
 "Tap to Stop" = "Atingeți pentru a opri";
 
+/* The title of the cell indicating alerts are temporarily muted */
+"Temp Mute Alerts" = "Dezactivare temporară a alertelor";
+
+/* Alert message for a bolus too small validation error */
+"The bolus amount entered is smaller than the minimum deliverable." = "Cantitatea de bolus introdusă este mai mică decât valoarea minimă administrabilă.";
+
+/* Forecast explanation modal on bolus view */
+"The bolus dosing algorithm uses a more conservative estimate of forecasted blood glucose than what is used to adjust your basal rate.\n\nAs a result, your forecasted blood glucose after a bolus may still be higher than your target range." = "Algoritmul de dozare al bolusurilor folosește o estimare mai conservatoare a glicemiei prognozate decât cea utilizată pentru a ajusta rata bazală. \n\n Ca rezultat, glicemia estimată după un bolus poate fi în continuare mai mare decât intervalul țintă.";
+
 /* Alert message for an updated bolus recommendation */
 "The bolus recommendation has updated. Please reconfirm the bolus amount." = "Recomandarea pentru bolus a fost actualizată. Vă rugăm să reconfirmaţi valoarea bolusului.";
 
 /* Subtitle description of Walsh insulin model setting */
-"The legacy model used by Loop, allowing customization of action duration." = "Modelul învechit utilizat de Loop, permite personalizarea duratei de acțiune.";
+"The legacy model used by Loop, allowing customization of action duration." = "Modelul vechi utilizat de Loop, permite personalizarea duratei de acțiune.";
+
+/* Alert body displayed absorption time greater than max (1: maximum absorption time) */
+"The maximum absorption time is %@" = "Timpul maxim de absorbție este %@";
+
+/* Alert body displayed for quantity greater than max (1: maximum quantity in grams) */
+"The maximum allowed amount is %@ grams." = "Cantitatea maximă admisă este de %@ grame.";
+
+/* Warning for simple bolus when carbohydrate entry is too large. (1: maximum carbohydrate entry) */
+"The maximum amount allowed is %1$@." = "Cantitatea maximă permisă este %1$@.";
 
 /* Alert message for a maximum bolus validation error (1: max bolus value) */
 "The maximum bolus amount is %@ U." = "Valoarea maximă bolus este %@ U.";
@@ -883,12 +1019,18 @@
 /* Alert message for a missing maximum bolus setting error */
 "The maximum bolus setting must be configured before a bolus can be delivered." = "Trebuie sa configurați o valoare maxima pentru bolus înainte ca acesta să poată fi livrat.";
 
+/* The notification body for a remote command expiration. (1: Expiration in minutes) */
+"The remote command expired %.0f minutes ago." = "Comanda de la distanță a expirat acum %.0f minute.";
+
 /* Title text for button to Therapy Settings */
 "Therapy Settings" = "Setări Terapie";
 
 /* Title of the carb entry date picker cell */
 "Time" = "Timp";
 
+/* Time Sensitive Status text */
+"Time Sensitive Notifications" = "Notificări urgente";
+
 /* Critical event log export error alert try again button */
 "Try Again" = "Reîncercați";
 
@@ -898,6 +1040,9 @@
 /* The short unit display string for international units of insulin */
 "U" = "U";
 
+/* Title for alert shown when alert acknowledgement fails */
+"Unable To Clear Alert" = "Nu se poate șterge alerta";
+
 /* Title for alert shown when delivery status is uncertain */
 "Unable To Reach Pump" = "Nu se poate conecta la pompă";
 
@@ -914,6 +1059,12 @@
    The default description to use when an entry has no dose description */
 "Unknown" = "Necunoscut";
 
+/* The error message displayed for unknown errors. (1: unknown error) */
+"Unknown Error: %1$@" = "Eroare necunoscută: %1$@";
+
+/* Remote command error description: unknown preset (1: preset name). */
+"Unknown preset: %1$@" = "Presetare necunoscută: %1$@";
+
 /* Unknown amount of time in settings' profile expiration section */
 "Unknown time" = "Timp necunoscut";
 
@@ -938,12 +1089,18 @@
 /* Title of insulin model setting */
 "Walsh" = "Walsh";
 
+/* Alert Permissions Need Attention alert title */
+"Warning! Safety notifications are turned OFF" = "Atenție! Notificările de siguranță sunt DEZACTIVATE";
+
 /* Explanation of glucose safety limit */
 "When current or forecasted glucose is below the glucose safety limit, Loop will not recommend a bolus, and will always recommend a temporary basal rate of 0 units per hour." = "În momentul în care glicemia actuală sau cea prognozată se situează sub limita de siguranța, Loop nu va recomanda un bolus și va recomanda întotdeauna o rată bazală temporară de 0 unități pe ora.";
 
 /* Explanation of suspend threshold */
 "When current or forecasted glucose is below the suspend threshold, Loop will not recommend a bolus, and will always recommend a temporary basal rate of 0 units per hour." = "În momentul în care glicemia actuală sau cea prognozată se situează sub limita de suspendare, Loop nu va recomanda un bolus și va recomanda întotdeauna o rată bazală temporară de 0 unități pe ora.";
 
+/* Description of missed meal notifications. */
+"When enabled, Loop can notify you when it detects a meal that wasn't logged." = "Când este activat, Loop vă poate notifica când detectează o masă care nu a fost înregistrată.";
+
 /* No comment provided by engineer. */
 "When out of Closed Loop mode, the app uses a simplified bolus calculator like a typical pump." = "Când modul Buclă închisa nu este activat, aplicația folosește un calculator simplificat pentru bolus similar cu cel al unei pompe tipice.";
 
@@ -956,12 +1113,36 @@
 /* Workout override still on reminder alert title */
 "Workout Temp Adjust Still On" = "Ajustare temporara antrenament încă activa";
 
+/* The title of the action used when confirming entered amount of carbohydrates. */
+"Yes" = "Da";
+
+/* Format for Notifications permissions disabled alert body. (1: app name) */
+"You may not get sound, visual or vibration alerts regarding critical safety information.\n\nTo fix the issue, tap ‘Settings’ and make sure Notifications, Critical Alerts and Time Sensitive Notifications are turned ON." = "Este posibil să nu primiți alerte sonore, vizuale sau cu vibrații referitoare la informații critice de siguranță. \n\nPentru a remedia problema, atingeți „Setări” și asigurați-vă că notificările, alertele critice și notificările sensibile la timp sunt activate.";
+
+/* Time change alert body. (1: app name) */
+"Your %1$@’s time has been changed. %2$@ needs accurate time records to make predictions about your glucose and adjust your insulin accordingly.\n\nCheck in your %1$@ Settings (General / Date & Time) and verify that 'Set Automatically' is turned ON. Failure to resolve could lead to serious under-delivery or over-delivery of insulin." = "Ora %1$@ dumneavoastră a fost schimbată. %2$@ are nevoie de înregistrări precise ale timpului pentru a face predicții despre glicemia și pentru a ajusta insulina în consecință. \n\nVerificați setările %1$@ (General / Data și Ora) și verificați dacă „Setare automată” este activată. Nerezolvarea poate duce la o administrare insuficientă sau excesivă de insulină.";
+
+/* Format string for simple bolus screen warning when glucose is below glucose warning limit. */
+"Your glucose is below %1$@. Are you sure you want to bolus?" = "Glicemia dumneavoastră este sub %1$@. Sunteți sigur/ă că doriți să bolusați?";
+
 /* Caption for bolus screen notice when no bolus is recommended due to prediction dropping below glucose safety limit */
 "Your glucose is below or predicted to go below your glucose safety limit, %@." = "Glicemia ta este sub sau se anticipează că va scădea sub limita de siguranță, %@.";
 
 /* Format string for bolus screen warning when no bolus is recommended due input value below glucose safety limit. (1: suspendThreshold) */
 "Your glucose is below your glucose safety limit, %1$@." = "Glicemia ta este sub limita de siguranță, %1$@.";
 
+/* Format string for meal bolus screen warning when no bolus is recommended due to glucose input value below recommendation threshold */
+"Your glucose is low. Eat carbs and consider waiting to bolus until your glucose is in a safe range." = "Glicemia dumneavoastră este scăzută. Consumați carbohidrați și luați în considerare posibilitatea de a aștepta să faceți un bolus până când glicemia se află într-un interval sigur.";
+
+/* Bolus screen warning when no bolus is recommended due to glucose input value below recommendation threshold for meal bolus */
+"Your glucose is low. Eat carbs and monitor closely." = "Glicemia dumneavoastră este scăzută. Mâncați carbohidrați și monitorizați cu atenție.";
+
+/* Warning for simple bolus when max bolus is exceeded. (1: maximum bolus) */
+"Your maximum bolus amount is %1$@." = "Valoarea maximă a bolusului este %1$@ .";
+
+/* Caption for bolus screen notice when pump data is missing or stale */
+"Your pump data is stale. %1$@ cannot recommend a bolus amount." = "Datele pompei dumneavoastră sunt învechite. %1$@ nu poate recomanda o cantitate de bolus.";
+
 /* The description text for the looping enabled switch cell when closed loop is not allowed because the pump is delivering a manual temp basal. */
 "Your pump is delivering a manual temporary basal rate." = "Pompa dumneavoastră furnizează o rată bazală temporară manuală.";
 
diff --git a/Loop/ro.lproj/Main.strings b/Loop/ro.lproj/Main.strings
index 86d6d1318..ee20499b6 100644
--- a/Loop/ro.lproj/Main.strings
+++ b/Loop/ro.lproj/Main.strings
@@ -2,7 +2,7 @@
 "0RV-d5-muE.text" = "g";
 
 /* Class = "UINavigationItem"; title = "Status"; ObjectID = "3kU-n2-fha"; */
-"3kU-n2-fha.title" = "Status";
+"3kU-n2-fha.title" = "Stare";
 
 /* Class = "UILabel"; text = "3.5 U/hour @ 12:12 PM"; ObjectID = "5gz-kZ-iF1"; */
 "5gz-kZ-iF1.text" = "3.5 U/oră @ 12:12 PM";
@@ -11,7 +11,7 @@
 "87H-N1-0vJ.text" = "Estimată";
 
 /* Class = "UILabel"; text = "Detail"; ObjectID = "aCb-Qs-bpu"; */
-"aCb-Qs-bpu.text" = "Detaliu";
+"aCb-Qs-bpu.text" = "Detail";
 
 /* Class = "UILabel"; text = "Food Type"; ObjectID = "ap1-M6-naG"; */
 "ap1-M6-naG.text" = "Tip mâncare";
@@ -50,10 +50,10 @@
 "IxU-As-glo.text" = "Modificările observate ale glicemiei, eliminând modificările modelate din administrarea insulinei, pot fi folosite pentru a estima absorbția carbohidraților.";
 
 /* Class = "UILabel"; text = "Detail"; ObjectID = "J7x-W5-gwo"; */
-"J7x-W5-gwo.text" = "Detaliu";
+"J7x-W5-gwo.text" = "Detail";
 
 /* Class = "UILabel"; text = "Recommended Basal"; ObjectID = "k3F-Na-7mn"; */
-"k3F-Na-7mn.text" = "Bazal recomandat";
+"k3F-Na-7mn.text" = "Bazala recomandată";
 
 /* Class = "UILabel"; text = "Label"; ObjectID = "Krd-Aa-ret"; */
 "Krd-Aa-ret.text" = "Etichetă";
@@ -80,13 +80,13 @@
 "SQx-au-ZcM.text" = "g CLB";
 
 /* Class = "UILabel"; text = "Glucose"; ObjectID = "tuw-av-A3x"; */
-"tuw-av-A3x.text" = "Glicemie";
+"tuw-av-A3x.text" = "Glucoza";
 
 /* Class = "UINavigationItem"; title = "Add/Edit Carb Entry"; ObjectID = "Tz7-80-bJ7"; */
 "Tz7-80-bJ7.title" = "Adaugă/Editează carbohidrați";
 
 /* Class = "UILabel"; text = "Label"; ObjectID = "ufi-Kj-33k"; */
-"ufi-Kj-33k.text" = "Eticheă";
+"ufi-Kj-33k.text" = "Etichetă";
 
 /* Class = "UINavigationItem"; title = "Carbohydrates"; ObjectID = "Vpi-5b-bY5"; */
 "Vpi-5b-bY5.title" = "Carbohidrați";
@@ -107,7 +107,7 @@
 "yn7-2M-jZz.text" = "0";
 
 /* Class = "UILabel"; text = "Title"; ObjectID = "zbc-87-wxZ"; */
-"zbc-87-wxZ.text" = "Titlu";
+"zbc-87-wxZ.text" = "Title";
 
 /* Class = "UILabel"; text = "0"; ObjectID = "zvZ-uf-zMX"; */
 "zvZ-uf-zMX.text" = "0";
diff --git a/Loop/ru.lproj/Localizable.strings b/Loop/ru.lproj/Localizable.strings
index 0d86be5be..7ce532293 100644
--- a/Loop/ru.lproj/Localizable.strings
+++ b/Loop/ru.lproj/Localizable.strings
@@ -74,10 +74,10 @@
 "%1$@ U" = "%1$@ Ед.";
 
 /* Low reservoir alert format string. (1: Number of units remaining) */
-"%1$@ U left" = "%1$@ Осталось ед";
+"%1$@ U left" = "%1$@ Ед осталось";
 
 /* Low reservoir alert with time remaining format string. (1: Number of units remaining)(2: approximate time remaining) */
-"%1$@ U left: %2$@" = "%1$@ Осталось ед: %2$@ ";
+"%1$@ U left: %2$@" = "%1$@ Ед осталось: %2$@";
 
 /* The format for recommended temp basal rate and time. (1: localized rate number)(2: localized time) */
 "%1$@ U/hour @ %2$@" = "%1$@ ед/час @ %2$@";
@@ -93,7 +93,7 @@
 
 /* Description of a basal temp basal dose entry (1: title for dose type, 2: value (? if no value) in bold, 3: unit)
    Description of a bolus dose entry (1: title for dose type, 2: value (? if no value) in bold, 3: unit) */
-"%1$@: <b>%2$@</b> %3$@" = "%1$@ : <b> %2$@ </b> %3$@";
+"%1$@: <b>%2$@</b> %3$@" = "%1$@: <b>%2$@</b> %3$@";
 
 /* Description of the prediction input effect for glucose momentum */
 "15 min glucose regression coefficient (b₁), continued with decay over 30 min" = "15-мин коэффициент регрессии гликемии (b1), продолжен с угасанием 30 мин";
@@ -141,7 +141,7 @@
 "Active Carbs" = "Активные углеводы";
 
 /* The title of the Insulin On-Board graph */
-"Active Insulin" = "Действующий инсулин";
+"Active Insulin" = "Активный инсулин";
 
 /* The string format describing active insulin. (1: localized insulin value description) */
 "Active Insulin: %@" = "Действующий инсулин: %@";
@@ -205,7 +205,7 @@
 "App Profile" = "Профиль приложения";
 
 /* Action sheet confirmation message for pump history deletion */
-"Are you sure you want to delete all history entries?" = "Вы уверены, что хотите удалить все записи истории?";
+"Are you sure you want to delete all history entries?" = "Подтвердите удаление всех записей истории?";
 
 /* Action sheet confirmation message for logged dose deletion */
 "Are you sure you want to delete all logged dose entries?" = "Вы уверены, что хотите удалить все зарегистрированные записи о дозах?";
@@ -296,10 +296,10 @@
 "Carb Ratios" = "Соотношения углеводов";
 
 /* The title of the view controller to create a new carb entry */
-"carb-entry-title-add" = "Добавление записи углеводов";
+"carb-entry-title-add" = "Добавить запись углеводов";
 
 /* The title of the view controller to edit an existing carb entry */
-"carb-entry-title-edit" = "Редактирование записи углеводов";
+"carb-entry-title-edit" = "Редактировать запись углеводов";
 
 /* Title for bolus screen warning when carbohydrate entry is too large */
 "Carbohydrate Entry Too Large" = "Слишком много углеводов";
@@ -311,7 +311,7 @@
 "Carbs Absorbed (g) ÷ Carb Ratio (g/U) × Insulin Sensitivity (%1$@/U)" = "Усвоенные углеводы (г) ÷ Коэффициент углеводов (г/U) × Чувствительность к инсулину (%1$@/U)";
 
 /* The notification alert describing a low pump battery */
-"Change the pump battery immediately" = "Замените батарею помпы немедленно";
+"Change the pump battery immediately" = "Немедленно замените батарейку в помпе";
 
 /* The notification alert describing an empty pump reservoir */
 "Change the pump reservoir now" = "Замените резервуар помпы сейчас";
@@ -329,7 +329,7 @@
 "Check your device time and/or remove any invalid data from Apple Health." = "Проверьте время вашего устройства и/или удалите недействительные данные из Apple Health.";
 
 /* Carb entry section footer text explaining absorption time */
-"Choose a longer absorption time for larger meals, or those containing fats and proteins. This is only guidance to the algorithm and need not be exact." = "Выберите более длительное время усвоения для больших порций пищи или тех, которые содержат жиры и белки. Это лишь руководство к алгоритму и не обязательно должно быть точным.";
+"Choose a longer absorption time for larger meals, or those containing fats and proteins. This is only guidance to the algorithm and need not be exact." = "Выберите более высокую длительность усвоения для обильной пищи или для пищи с белками и протеинами. Это единственное указание для алгоритма не нуждается в дополнительных уточнениях.";
 
 /* The button label of the action used to dismiss the unsafe notification permission alert */
 "Close" = "Закрыть";
@@ -393,7 +393,7 @@
 "Current glucose of %1$@ is below correction range." = "Гликемия %1$@ ниже диапазона коррекции";
 
 /* The title of the cell indicating a generic temporary override is enabled */
-"Custom Override" = "Настраиваемая временная цель";
+"Custom Override" = "Настраиваемое ручное управление";
 
 /* The title of the cell indicating a generic custom preset is enabled */
 "Custom Preset" = "Пользовательский пресет";
@@ -411,10 +411,10 @@
 "Delete Account" = "Удалить аккаунт";
 
 /* Button title to delete all objects */
-"Delete All" = "Удалить все";
+"Delete All" = "Стереть все";
 
 /* Button title to delete CGM */
-"Delete CGM" = "Удалить мониторинг";
+"Delete CGM" = "Удалить CGM";
 
 /* Button title to delete a service */
 "Delete Service" = "Удалить сервис";
@@ -432,7 +432,7 @@
 "Deliver" = "Подать";
 
 /* Title text for delivery limits */
-"Delivery Limits" = "Предел подачи";
+"Delivery Limits" = "Пределы подачи";
 
 /* Descriptive text for Therapy Settings */
 "Diabetes Treatment" = "Лечение диабета";
@@ -456,6 +456,9 @@
 /* The title of the Dosing Strategy section in settings */
 "Dosing Strategy" = "Стратегия дозирования";
 
+/* Remote command error description: duration exceed max (1: max duration in hours). */
+"Duration exceeds: %1$.1f hours" = "Продолжительность превышает: %1$.1f часов";
+
 /* Message to the user to enable bluetooth */
 "Enable\nBluetooth" = "Включить\nBluetooth";
 
@@ -535,7 +538,7 @@
 "Get help with Alert Permissions" = "Справка по разрешениям на оповещения";
 
 /* The title of the glucose and prediction graph */
-"Glucose" = "Гликемия";
+"Glucose" = "Глюкоза";
 
 /* The error message when glucose data is too old to be used. (1: glucose data age in minutes) */
 "Glucose data is %1$@ old" = "Данные о глюкозе устарели на %1$@";
@@ -578,7 +581,7 @@
 "Insulin adjustments have been disabled!" = "Регулировка инсулина была отключена!";
 
 /* The title of the insulin delivery graph */
-"Insulin Delivery" = "Подача инсулина";
+"Insulin Delivery" = "Insulin Delivery";
 
 /* Details for missing data error when insulin effects are missing */
 "Insulin effects" = "Влияние инсулина";
@@ -606,6 +609,9 @@
 /* Description of an interrupted bolus dose entry (1: title for dose type, 2: value (? if no value) in bold, 3: programmed value (? if no value), 4: unit) */
 "Interrupted %1$@: <b>%2$@</b> of %3$@ %4$@" = "Прервано %1$@: <b>%2$@</b> из %3$@ %4$@";
 
+/* Remote command error description: invalid bolus amount. */
+"Invalid Bolus Amount" = "Неверный объем болюса";
+
 /* Remote command error description: invalid carb amount. */
 "Invalid carb amount" = "Неверное количество углеводов";
 
@@ -621,6 +627,9 @@
 /* The title text for the issue report cell */
 "Issue Report" = "Сообщить об ошибе";
 
+/* The notification description for a meal that was possibly not logged in Loop. */
+"It looks like you may not have logged a meal you ate. Tap to log it now." = "Похоже, что Вы не ввели съеденную Вами еду. Нажмите , чтобы записать ее сейчас.";
+
 /* Title of the warning shown when a large meal was entered */
 "Large Meal Entered" = "Введена большая порция еды";
 
@@ -647,11 +656,14 @@
 "Loop Crashed" = "Произошел сбой приложения";
 
 /* The notification title for a loop failure */
-"Loop Failure" = "Ошибка в работе цикла/контура";
+"Loop Failure" = "Ошибка в работе петли";
 
 /* Bluetooth unavailable alert body. */
 "Loop has detected an issue with your Bluetooth settings, and will not work successfully until Bluetooth is enabled. You will not receive glucose readings, or be able to bolus." = "Loop обнаружил проблему в настройках Bluetooth и не будет успешно работать, пока Bluetooth не будет включен. Вы не будете получать показания глюкозы и не сможете вводить болюс.";
 
+/* Warning displayed when user is adding a meal from an missed meal notification */
+"Loop has detected an missed meal and estimated its size. Edit the carb amount to match the amount of any carbs you may have eaten." = "Loop обнаружил пропущенный прием пищи и оценил его размер. Отредактируйте количество углеводов, чтобы оно соответствовало количеству тех углеводов, которые вы, возможно, съели.";
+
 /* The notification alert describing a long-lasting loop failure. The substitution parameter is the time interval since the last loop */
 "Loop has not completed successfully in %@" = "Ну удалось успешно  замкнуть цикл/контур в %@";
 
@@ -678,7 +690,7 @@
 "Maximum Basal Rate Per Hour" = "Максимальная базальная скорость в час";
 
 /* Details for configuration error when maximum bolus is missing */
-"Maximum Bolus" = "Максимальный болюс";
+"Maximum Bolus" = "Максимальный Болюс";
 
 /* Title for bolus screen warning when max bolus is exceeded */
 "Maximum Bolus Exceeded" = "Превышен максимальный объем болюса";
@@ -699,13 +711,13 @@
 "Missing maximum allowed bolus in settings" = "Отсутствие максимально допустимого болюса в настройках";
 
 /* The short unit display string for millimoles of glucose per liter */
-"mmol/L" = "ммоль/л";
+"mmol/L" = "mmol/L";
 
 /* Details for missing data error when momentum effects are missing */
 "Momentum effects" = "Влияние динамики СК";
 
 /* Text for more info action on notification of upcoming profile expiration */
-"More Info" = "Дополнительная информация";
+"More Info" = "Доп. инфо";
 
 /* Label for toggle to mute all alerts */
 "Mute All Alerts" = "Выключить все оповещения";
@@ -713,6 +725,9 @@
 /* Sensor state description for the non-valid state */
 "Needs Attention" = "Требует внимания";
 
+/* Remote command error description: negative duration error. */
+"Negative duration not allowed" = "Отрицательная продолжительность не допускается";
+
 /* The title of the Nightscout service */
 "Nightscout" = "Nightscout";
 
@@ -781,13 +796,16 @@
 "On" = "Включено";
 
 /* The title text for the override presets */
-"Override Presets" = "Пресеты временных целей";
+"Override Presets" = "Редактировать параметры";
+
+/* The notification title for a meal that was possibly not logged in Loop. */
+"Possible Missed Meal" = "Возможный пропуск приема пищи";
 
 /* The label of the pre-meal mode toggle button */
 "Pre-Meal Targets" = "Целевые значения до еды";
 
 /* 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." = "Прогнозируемый уровень глюкозы находится в диапазоне.";
@@ -817,7 +835,7 @@
 "Pump" = "Помпа";
 
 /* The notification title for a low pump battery */
-"Pump Battery Low" = "Низкий заряд батареи помпы";
+"Pump Battery Low" = "Батарея помпы разряжена";
 
 /* The error message when pump data is too old to be used. (1: pump data age in minutes) */
 "Pump data is %1$@ old" = "Данные помпы от %1$@ ";
@@ -835,7 +853,7 @@
 "Pump Reservoir Empty" = "Резервуар помпы пуст";
 
 /* The notification title for a low pump reservoir */
-"Pump Reservoir Low" = "Низкий уровень резервуара помпы";
+"Pump Reservoir Low" = "Мало инсулина в резервуаре";
 
 /* The title of the cell indicating the pump is suspended */
 "Pump Suspended" = "Помпа приостановлена";
@@ -847,7 +865,7 @@
 "QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
 
 /* Title of insulin model preset */
-"Rapid-Acting – Adults" = "Боыстродействующий - взрослые";
+"Rapid-Acting – Adults" = "Быстродействующий - взрослые";
 
 /* Title of insulin model preset */
 "Rapid-Acting – Children" = "Быстродействующий - дети";
@@ -879,13 +897,13 @@
 "Remote Command Expired" = "Срок действия удаленной команды истек";
 
 /* Details for missing data error when reservoir data is missing */
-"Reservoir" = "Резервуар";
+"Reservoir" = "Reservoir";
 
 /* Title of the prediction input effect for retrospective correction */
 "Retrospective Correction" = "Ретроспективная коррекция";
 
 /* The title of the notification action to retry a bolus command */
-"Retry" = "Повторить попытку";
+"Retry" = "Повторить";
 
 /* Button text to save carbs and/or manual glucose entry and deliver a bolus */
 "Save and Deliver" = "Сохранить и подать болюс";
@@ -926,6 +944,9 @@
 /* Software update button link text */
 "Software Update" = "Обновление программного обеспечения";
 
+/* Remote command error description: invalid start time is out of range. */
+"Start time is out of range: %@" = "Время начала вне допустимого диапазона: %@";
+
 /* The format for the description of a temporary override start date */
 "starting at %@" = "начало с %@";
 
@@ -1011,7 +1032,7 @@
 "Turn on Bluetooth to receive alerts, alarms or sensor glucose readings." = "Включите Bluetooth для получения предупреждений, сигналов тревоги или показаний датчика глюкозы.";
 
 /* The short unit display string for international units of insulin */
-"U" = "Ед";
+"U" = "ед";
 
 /* Title for alert shown when alert acknowledgement fails */
 "Unable To Clear Alert" = "Невозможно снять предупреждение";
@@ -1035,6 +1056,9 @@
 /* The error message displayed for unknown errors. (1: unknown error) */
 "Unknown Error: %1$@" = "Неизвестная ошибка: %1$@";
 
+/* Remote command error description: unknown preset (1: preset name). */
+"Unknown preset: %1$@" = "Неизвестный пресет: %1$@";
+
 /* Unknown amount of time in settings' profile expiration section */
 "Unknown time" = "Неизвестное время";
 
@@ -1068,6 +1092,9 @@
 /* Explanation of suspend threshold */
 "When current or forecasted glucose is below the suspend threshold, Loop will not recommend a bolus, and will always recommend a temporary basal rate of 0 units per hour." = "Если текущая или предсказываемая гликемия ниже порога приостановки помпы, алгоритм цикла ипж не рекомендует болюс и всегда рекомендует временный базал 0 ед/час";
 
+/* Description of missed meal notifications. */
+"When enabled, Loop can notify you when it detects a meal that wasn't logged." = "Если эта функция включена, Loop может уведомить вас, когда обнаружит прием пищи, который не был внесен.";
+
 /* No comment provided by engineer. */
 "When out of Closed Loop mode, the app uses a simplified bolus calculator like a typical pump." = "Когда приложение выходит из режима замкнутого цикла, оно использует упрощенный калькулятор болюса, как в обычной помпе.";
 
diff --git a/Loop/ru.lproj/Main.strings b/Loop/ru.lproj/Main.strings
index b2fcbdd7e..365558fd7 100644
--- a/Loop/ru.lproj/Main.strings
+++ b/Loop/ru.lproj/Main.strings
@@ -2,7 +2,7 @@
 "0RV-d5-muE.text" = "г";
 
 /* Class = "UINavigationItem"; title = "Status"; ObjectID = "3kU-n2-fha"; */
-"3kU-n2-fha.title" = "Состояние";
+"3kU-n2-fha.title" = "Статус";
 
 /* Class = "UILabel"; text = "3.5 U/hour @ 12:12 PM"; ObjectID = "5gz-kZ-iF1"; */
 "5gz-kZ-iF1.text" = "3,5 ед./час @ 12:12 PM";
@@ -11,13 +11,13 @@
 "87H-N1-0vJ.text" = "Предсказываемый";
 
 /* Class = "UILabel"; text = "Detail"; ObjectID = "aCb-Qs-bpu"; */
-"aCb-Qs-bpu.text" = "Подробнее";
+"aCb-Qs-bpu.text" = "Detail";
 
 /* Class = "UILabel"; text = "Food Type"; ObjectID = "ap1-M6-naG"; */
 "ap1-M6-naG.text" = "Тип еды";
 
 /* Class = "UILabel"; text = "Label"; ObjectID = "bIL-Ub-qYp"; */
-"bIL-Ub-qYp.text" = "Пометка";
+"bIL-Ub-qYp.text" = "Ярлык";
 
 /* Class = "UILabel"; text = "Glucose Change"; ObjectID = "bq4-98-cQU"; */
 "bq4-98-cQU.text" = "Изменение глюкозы";
@@ -29,7 +29,7 @@
 "D4C-I2-dhA.text" = "Будущие значения СК предсказываются на основе определения эффекта множественных факторов. Пользуйтесь этим инструментом для перехода между разными вводными чтобы увидеть как они сопоставимы с окончательным предсказанием";
 
 /* Class = "UILabel"; text = "Label"; ObjectID = "d6m-qV-wWi"; */
-"d6m-qV-wWi.text" = "Пометка";
+"d6m-qV-wWi.text" = "Ярлык";
 
 /* Class = "UILabel"; text = "eventually 92 mg/dL"; ObjectID = "E41-FN-nkk"; */
 "E41-FN-nkk.text" = "в конечном итоге 92 мг/дл";
@@ -50,16 +50,16 @@
 "IxU-As-glo.text" = "Наблюдаются изменения СК, вычитаются изменения смоделированные на подаваемом инсулине, могут использоваться для оценки усвоения углеводов";
 
 /* Class = "UILabel"; text = "Detail"; ObjectID = "J7x-W5-gwo"; */
-"J7x-W5-gwo.text" = "Подробнее";
+"J7x-W5-gwo.text" = "Detail";
 
 /* Class = "UILabel"; text = "Recommended Basal"; ObjectID = "k3F-Na-7mn"; */
 "k3F-Na-7mn.text" = "Рекомендуемый базал";
 
 /* Class = "UILabel"; text = "Label"; ObjectID = "Krd-Aa-ret"; */
-"Krd-Aa-ret.text" = "Пометка";
+"Krd-Aa-ret.text" = "Ярлык";
 
 /* Class = "UILabel"; text = "Label"; ObjectID = "OFA-qT-ZAg"; */
-"OFA-qT-ZAg.text" = "Пометка";
+"OFA-qT-ZAg.text" = "Ярлык";
 
 /* Class = "UITableViewController"; title = "Predicted Glucose"; ObjectID = "PA3-sP-cWY"; */
 "PA3-sP-cWY.title" = "Предсказываемый СК";
@@ -80,13 +80,13 @@
 "SQx-au-ZcM.text" = "г активных углеводов";
 
 /* Class = "UILabel"; text = "Glucose"; ObjectID = "tuw-av-A3x"; */
-"tuw-av-A3x.text" = "Гликемия";
+"tuw-av-A3x.text" = "Глюкоза";
 
 /* Class = "UINavigationItem"; title = "Add/Edit Carb Entry"; ObjectID = "Tz7-80-bJ7"; */
 "Tz7-80-bJ7.title" = "Добавить/редактировать запись об углеводах";
 
 /* Class = "UILabel"; text = "Label"; ObjectID = "ufi-Kj-33k"; */
-"ufi-Kj-33k.text" = "Пометка";
+"ufi-Kj-33k.text" = "Ярлык";
 
 /* Class = "UINavigationItem"; title = "Carbohydrates"; ObjectID = "Vpi-5b-bY5"; */
 "Vpi-5b-bY5.title" = "Углеводы";
@@ -107,7 +107,7 @@
 "yn7-2M-jZz.text" = "0";
 
 /* Class = "UILabel"; text = "Title"; ObjectID = "zbc-87-wxZ"; */
-"zbc-87-wxZ.text" = "Название";
+"zbc-87-wxZ.text" = "Title";
 
 /* Class = "UILabel"; text = "0"; ObjectID = "zvZ-uf-zMX"; */
 "zvZ-uf-zMX.text" = "0";
diff --git a/Loop/sk.lproj/Localizable.strings b/Loop/sk.lproj/Localizable.strings
index 80f71d718..624aba7ec 100644
--- a/Loop/sk.lproj/Localizable.strings
+++ b/Loop/sk.lproj/Localizable.strings
@@ -1,6 +1,24 @@
+/* No glucose value representation (3 dashes for mg/dL) */
+"– – –" = "– – –";
+
+/* The format for an active override preset. (1: preset symbol)(2: preset name) */
+"%@ %@" = "%1$@ %2$@";
+
+/* Formats absorbed carb value */
+"%@ absorbed" = "%@ absorbované";
+
+/* The subtitle format describing total insulin. (1: localized insulin total) */
+"%@ U Total" = "%@ j Celkom";
+
+/* Appends a full-stop to a statement */
+"%@." = "%@ .";
+
 /* Alert text for failing to cancel temp basal (1: reason description, 2: app name) */
 "%@%@ was unable to cancel your current temporary basal rate, which is higher than the new Max Basal limit you have set. This may result in higher insulin delivery than desired.\n\nConsider suspending insulin delivery manually and then immediately resuming to enact basal delivery with the new limit in place." = "%1$@%2$@ nedokázal zrušiť vašu aktuálnu dočasnú bazálnu dávku, ktorá je vyššia ako nový maximálny bazálny limit, ktorý ste nastavili. To môže viesť k vyššiemu dodávaniu inzulínu, ako je požadované.\n\nZvážte ručné pozastavenie podávania inzulínu a následné okamžité obnovenie, aby ste uplatnili novým bazálny limit.";
 
+/* Format string for glucose target range. (1: Min target)(2: Max target)(3: glucose unit) */
+"%1$@ – %2$@ %3$@" = "%1$@ – %2$@ %3$@";
+
 /* Format string combining carb entry quantity and absorption time emoji */
 "%1$@ %2$@" = "%1$@ %2$@";
 
@@ -13,3 +31,246 @@
 /* Message for alert shown when delivery status is uncertain. (1: app name) */
 "%1$@ is unable to communicate with your insulin pump. The app will continue trying to reach your pump, but insulin delivery information cannot be updated and no automation can continue.\nYou can wait several minutes to see if the issue resolves or tap the button below to learn more about other options." = "%1$@ nedokáže komunikovať s vašou inzulínovou pumpou. Aplikácia sa bude naďalej pokúšať kontaktovať vašu pumpu, ale informácie o podávaní inzulínu nemožno aktualizovať a nemôže pokračovať žiadna automatizácia.\nMôžete počkať niekoľko minút, aby ste zistili, či sa problém vyriešil, alebo klepnutím na tlačidlo nižšie sa dozviete viac o ďalších možnostiach.";
 
+/* Reservoir entry (1: volume value) */
+"%1$@ U" = "%@ j";
+
+/* Low reservoir alert format string. (1: Number of units remaining) */
+"%1$@ U left" = "Zostáva %1$@ j";
+
+/* Low reservoir alert with time remaining format string. (1: Number of units remaining)(2: approximate time remaining) */
+"%1$@ U left: %2$@" = "Zostáva %1$@ j: %2$@";
+
+/* The format for recommended temp basal rate and time. (1: localized rate number)(2: localized time) */
+"%1$@ U/hour @ %2$@" = "%1$@ j/hod @ %2$@";
+
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v %2$@";
+
+/* Formats (1: carb value) and (2: food type) */
+"%1$@: %2$@" = "%1$@ : %2$@";
+
+/* Description of the prediction input effect for glucose momentum */
+"15 min glucose regression coefficient (b₁), continued with decay over 30 min" = "15 minútový regresný koeficient glykémie (b1), pokračujúci s poklesom počas 30 minút";
+
+/* Subtitle of Fiasp preset */
+"A model based on the published absorption of Fiasp insulin." = "Model založený na publikovanej absorpcii inzulínu Fiasp.";
+
+/* Subtitle of Rapid-Acting – Adult preset */
+"A model based on the published absorption of Humalog, Novolog, and Apidra insulin in adults." = "Model založený na publikovanej absorpcii inzulínu Humalog, Novolog a Apidra u dospelých.";
+
+/* Action to copy the recommended Bolus value to the actual Bolus Field */
+"AcceptRecommendedBolus" = "Akceptovať Odporúčaný Bolus";
+
+/* The title of the Carbs On-Board graph */
+"Active Carbohydrates" = "Aktívne sacharidy";
+
+/* The string format describing active carbohydrates. (1: localized glucose value description) */
+"Active Carbohydrates: %@" = "Aktívne sacharidy: %@";
+
+/* Title describing quantity of still-absorbing carbohydrates */
+"Active Carbs" = "Aktívne sacharidy";
+
+/* The title of the Insulin On-Board graph */
+"Active Insulin" = "Aktívny inzulín";
+
+/* The string format describing active insulin. (1: localized insulin value description) */
+"Active Insulin: %@" = "Aktívny inzulín: %@";
+
+/* Title of the user activity for adding carbs */
+"Add Carb Entry" = "Zadať sacharidy";
+
+/* Action sheet title selecting CGM
+   Title text for button to set up a CGM */
+"Add CGM" = "Pridať CGM";
+
+/* The label of the meal button */
+"Add Meal" = "Zadať jedlo";
+
+/* Action sheet title selecting Pump
+   Title text for button to set up a new pump */
+"Add Pump" = "Pridať pumpu";
+
+/* The title of the amplitude API key credential */
+"API Key" = "Kľúč API";
+
+/* The title of the nightscout API secret credential */
+"API Secret" = "API Secret";
+
+/* Confirmation message for deleting a CGM */
+"Are you sure you want to delete this CGM?" = "Naozaj chcete odstrániť toto CGM?";
+
+/* Confirmation message for deleting a service */
+"Are you sure you want to delete this service?" = "Naozaj chcete odstrániť túto službu?";
+
+/* Format fragment for a specific time */
+"at %@" = "o %@";
+
+/* The message displayed during a device authentication prompt for bolus specification */
+"Authenticate to Bolus %@ Units" = "Potvrdiť pre Bolus %@ Jednotky";
+
+/* Details for configuration error when basal rate schedule is missing */
+"Basal Rate Schedule" = "Harmonogram bazálnej dávky";
+
+/* The title of the basal rate profile screen
+   The title text for the basal rate schedule */
+"Basal Rates" = "Bazálne dávky";
+
+/* The label of the bolus entry button
+   The notification title for a bolus failure */
+"Bolus" = "Bolus";
+
+/* The format string for bolus progress. (1: delivered volume)(2: total volume) */
+"Bolused %1$@ of %2$@" = "Podaný bolus %1$@ z %2$@";
+
+/* The format string for bolus in progress showing total volume. (1: total volume) */
+"Bolusing %1$@" = "Bolus sa podáva";
+
+/* The title of the cancel action in an action sheet */
+"Cancel" = "Zrušiť";
+
+/* The title of the cell indicating a bolus is being canceled */
+"Canceling Bolus" = "Bolus sa ruší";
+
+/* Details for missing data error when carb effects are missing */
+"Carb effects" = "Účinky sacharidov";
+
+/* The title of the carb ratios schedule screen
+   The title text for the carb ratio schedule */
+"Carb Ratios" = "Inzulínovo sacharidový pomer";
+
+/* The title of the view controller to create a new carb entry */
+"carb-entry-title-add" = "Zadať sacharidy";
+
+/* Title of the prediction input effect for carbohydrates */
+"Carbohydrates" = "Sacharidy";
+
+/* Description of the prediction input effect for carbohydrates. (1: The glucose unit string) */
+"Carbs Absorbed (g) ÷ Carb Ratio (g/U) × Insulin Sensitivity (%1$@/U)" = "Absorbované sacharidy (g) ÷ Inzulínovo sacharidový pomer (g/j) × Faktor citlivosti na inzulín (%1$@/j)";
+
+/* The notification alert describing a low pump battery */
+"Change the pump battery immediately" = "Ihneď vymeňte batériu pumpy";
+
+/* The notification alert describing an empty pump reservoir */
+"Change the pump reservoir now" = "Ihneď vymeňte zásobník pumpy";
+
+/* The title of the action used to dismiss an error alert */
+"com.loudnate.LoopKit.errorAlertActionTitle" = "OK";
+
+/* The title of the configuration section in settings */
+"Configuration" = "Konfigurácia";
+
+/* Default alert dismissal */
+"Continue" = "Pokračovať";
+
+/* Critical Alerts Status text */
+"Critical Alerts" = "Kritické výstrahy";
+
+/* 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.";
+
+/* Date picker label */
+"Date" = "Dátum";
+
+/* The short unit display string for decibles */
+"dB" = "dB";
+
+/* The title of the button to remove the credentials for a service */
+"Delete Account" = "Odstrániť účet";
+
+/* Button title to delete CGM */
+"Delete CGM" = "Odstrániť CGM";
+
+/* Button title to delete a service */
+"Delete Service" = "Odstrániť službu";
+
+/* Button text to deliver a bolus */
+"Deliver" = "Podať";
+
+/* Title text for delivery limits */
+"Delivery Limits" = "Limity podávania";
+
+/* No comment provided by engineer. */
+"Done" = "Hotovo";
+
+/* The alert title for a resume error */
+"Error Resuming" = "Chyba pri obnovení";
+
+/* The alert title for a resume error */
+"Failed to Resume Insulin Delivery" = "Obnovenie podávania inzulínu zlyhalo";
+
+/* The short unit display string for grams */
+"g" = "g";
+
+/* The title of the glucose and prediction graph */
+"Glucose" = "Glykémia";
+
+/* The title of the insulin delivery graph */
+"Insulin Delivery" = "Podávanie inzulínu";
+
+/* Details for configuration error when insulin model is missing
+   The title text for the insulin model setting row */
+"Insulin Model" = "Inzulínový model";
+
+/* Insulin type label */
+"Insulin Type" = "Typ inzulínu";
+
+/* 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";
+
+/* The title of the Nightscout service */
+"Nightscout" = "Nightscout";
+
+/* Notification Setting Status is Off */
+"Off" = "Vypnuté";
+
+/* Alert acknowledgment OK button
+   Critical Alert permissions disabled alert button
+   Default action for alert when alert acknowledgment fails
+   Notifications permissions disabled alert button
+   Text for ok action on notification of upcoming profile expiration
+   The title of the notification action to acknowledge a device alert */
+"OK" = "OK";
+
+/* Notification Setting Status is On */
+"On" = "Zapnuté";
+
+/* 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 title of the cell displaying a recommended temp basal value */
+"Recommended Basal" = "Odporúčaný bazal";
+
+/* Details for missing data error when reservoir data is missing */
+"Reservoir" = "Rezervoár";
+
+/* The title of the notification action to retry a bolus command */
+"Retry" = "Skúsiť znova";
+
+/* The label of the settings button */
+"Settings" = "Nastavenia";
+
+/* The title of the nightscout site URL credential */
+"Site URL" = "URL adresa webu";
+
+/* Title of the carb entry date picker cell */
+"Time" = "Čas";
+
+/* The short unit display string for international units of insulin */
+"U" = "j";
+
+/* Event title displayed when StoredPumpEvent.title is not set
+   The default description to use when an entry has no dose description */
+"Unknown" = "Neznáme";
+
+/* The title of the action used when confirming entered amount of carbohydrates. */
+"Yes" = "Áno";
+
diff --git a/Loop/sk.lproj/Main.strings b/Loop/sk.lproj/Main.strings
new file mode 100644
index 000000000..6bca0ce1c
--- /dev/null
+++ b/Loop/sk.lproj/Main.strings
@@ -0,0 +1,63 @@
+/* Class = "UILabel"; text = "g"; ObjectID = "0RV-d5-muE"; */
+"0RV-d5-muE.text" = "g";
+
+/* Class = "UINavigationItem"; title = "Status"; ObjectID = "3kU-n2-fha"; */
+"3kU-n2-fha.title" = "Stav";
+
+/* Class = "UILabel"; text = "3.5 U/hour @ 12:12 PM"; ObjectID = "5gz-kZ-iF1"; */
+"5gz-kZ-iF1.text" = "3,5 i/hod o 12:12";
+
+/* Class = "UILabel"; text = "Predicted"; ObjectID = "87H-N1-0vJ"; */
+"87H-N1-0vJ.text" = "Predpoklad";
+
+/* Class = "UILabel"; text = "Detail"; ObjectID = "aCb-Qs-bpu"; */
+"aCb-Qs-bpu.text" = "Detail";
+
+/* Class = "UILabel"; text = "Glucose Change"; ObjectID = "bq4-98-cQU"; */
+"bq4-98-cQU.text" = "Zmena glykémie";
+
+/* Class = "UILabel"; text = "g Total"; ObjectID = "d3X-AN-tA5"; */
+"d3X-AN-tA5.text" = "g Celkom";
+
+/* Class = "UILabel"; text = "Future glucose is predicted by combining the effects of multiple inputs. Use this tool to toggle various inputs to see how they compare to the final prediction."; ObjectID = "D4C-I2-dhA"; */
+"D4C-I2-dhA.text" = "Budúca glykémia sa predpovedá kombináciou účinkov viacerých vstupov. Pomocou tohto nástroja môžete prepínať rôzne vstupy, aby ste videli, ako vplývajú v porovnaní s konečnou predpoveďou.";
+
+/* Class = "UILabel"; text = "eventually 92 mg/dL"; ObjectID = "E41-FN-nkk"; */
+"E41-FN-nkk.text" = "pravdepodobne 92mg/dl";
+
+/* Class = "UILabel"; text = "Observed"; ObjectID = "EAn-Ja-S1d"; */
+"EAn-Ja-S1d.text" = "Pozorované";
+
+/* Class = "UILabel"; text = "3.5 U/hour @ 12:12 PM"; ObjectID = "fWV-jg-ICt"; */
+"fWV-jg-ICt.text" = "3,5 i/hod o 12:12";
+
+/* Class = "UITableViewController"; title = "Carbohydrate Effects"; ObjectID = "hZZ-2S-lrd"; */
+"hZZ-2S-lrd.title" = "Účinky sacharidov";
+
+/* Class = "UILabel"; text = "Detail"; ObjectID = "J7x-W5-gwo"; */
+"J7x-W5-gwo.text" = "Detail";
+
+/* Class = "UILabel"; text = "Recommended Basal"; ObjectID = "k3F-Na-7mn"; */
+"k3F-Na-7mn.text" = "Odporúčaný bazal";
+
+/* Class = "UITableViewController"; title = "Predicted Glucose"; ObjectID = "PA3-sP-cWY"; */
+"PA3-sP-cWY.title" = "Predpokladaná glykémia";
+
+/* Class = "UILabel"; text = "eventually 92 mg/dL"; ObjectID = "Rse-x8-amW"; */
+"Rse-x8-amW.text" = "pravdepodobne 92mg/dl";
+
+/* Class = "UILabel"; text = "g Active Carbs"; ObjectID = "SQx-au-ZcM"; */
+"SQx-au-ZcM.text" = "g Aktívne sacharidy";
+
+/* Class = "UILabel"; text = "Glucose"; ObjectID = "tuw-av-A3x"; */
+"tuw-av-A3x.text" = "Glykémia";
+
+/* Class = "UINavigationItem"; title = "Carbohydrates"; ObjectID = "Vpi-5b-bY5"; */
+"Vpi-5b-bY5.title" = "Sacharidy";
+
+/* Class = "UILabel"; text = "Recommended Basal"; ObjectID = "xhx-PI-bBI"; */
+"xhx-PI-bBI.text" = "Odporúčaný bazal";
+
+/* Class = "UILabel"; text = "Title"; ObjectID = "zbc-87-wxZ"; */
+"zbc-87-wxZ.text" = "Názov";
+
diff --git a/Loop/sv.lproj/Localizable.strings b/Loop/sv.lproj/Localizable.strings
index d76fd4ead..5dafbda24 100644
--- a/Loop/sv.lproj/Localizable.strings
+++ b/Loop/sv.lproj/Localizable.strings
@@ -47,7 +47,7 @@
 "%1$@ is unable to communicate with your insulin pump. The app will continue trying to reach your pump, but insulin delivery information cannot be updated and no automation can continue.\nYou can wait several minutes to see if the issue resolves or tap the button below to learn more about other options." = "%1$@ kan inte kommunicera med din insulinpump. Appen kommer att fortsätta att försöka nå din pump, men under tiden kan information om insulintillförsel inte uppdateras och automatisering inte fortsätta.\nDu kan vänta flera minuter för att se om problemet löser sig eller klicka på knappen nedan för att läsa mer om andra alternativ.";
 
 /* Reservoir entry (1: volume value) */
-"%1$@ U" = "%1$@ IE";
+"%1$@ U" = "%1$@ E";
 
 /* Low reservoir alert format string. (1: Number of units remaining) */
 "%1$@ U left" = "%1$@ E kvar";
@@ -156,13 +156,13 @@
 "API Secret" = "API Secret";
 
 /* Action sheet confirmation message for pump history deletion */
-"Are you sure you want to delete all history entries?" = "Är du säker på att du vill radera all händelsehistorik?";
+"Are you sure you want to delete all history entries?" = "Säkert att du vill radera all händelsehistorik?";
 
 /* Action sheet confirmation message for logged dose deletion */
 "Are you sure you want to delete all logged dose entries?" = "Är du säker på att du vill ta bort alla dina loggade doser?";
 
 /* Action sheet confirmation message for reservoir deletion */
-"Are you sure you want to delete all reservoir values?" = "Är du säker på att du vill ta bort alla reservoarvärden?";
+"Are you sure you want to delete all reservoir values?" = "Säkert att du vill radera alla reservoarvärden?";
 
 /* No comment provided by engineer. */
 "Are you sure you want to delete all your %@ Data?\n(This action is not reversible)" = "Vill du ta bort alla dina %@data?\n(Denna åtgärd är inte reversibel)";
@@ -206,7 +206,7 @@
 "Bolus" = "Bolus";
 
 /* Alert title for an updated bolus recommendation */
-"Bolus Recommendation Updated" = "Bolusrekommendation uppdaterad";
+"Bolus Recommendation Updated" = "Det finns en ny bolusrekommendation";
 
 /* Title for card displaying carb entry and bolus recommendation */
 "Bolus Summary" = "Bolus sammanfattning";
@@ -232,13 +232,13 @@
 
 /* The title of the carb ratios schedule screen
    The title text for the carb ratio schedule */
-"Carb Ratios" = "Kolhydratskvoter";
+"Carb Ratios" = "Insulinkvoter";
 
 /* The title of the view controller to create a new carb entry */
 "carb-entry-title-add" = "Lägg till kolhydrater";
 
 /* The title of the view controller to edit an existing carb entry */
-"carb-entry-title-edit" = "Editera kolhydrater";
+"carb-entry-title-edit" = "Ändra kolhydrater";
 
 /* Title of the prediction input effect for carbohydrates */
 "Carbohydrates" = "Kolhydrater";
@@ -262,13 +262,16 @@
 "Check your CGM data source" = "Kontrollera din CGM:s datakälla";
 
 /* Carb entry section footer text explaining absorption time */
-"Choose a longer absorption time for larger meals, or those containing fats and proteins. This is only guidance to the algorithm and need not be exact." = "Välj en längre absorbtionstid för stora måltider eller måltider som innehåller fett och protein. Detta är endast en rekommendation till algoritmen och behöver inte vara exakt.";
+"Choose a longer absorption time for larger meals, or those containing fats and proteins. This is only guidance to the algorithm and need not be exact." = "Välj en längre absorptionstid för måltid med mycket fett eller protein. Ofta är det bäst att dela upp måltiden i snabba och långsamma kolhydrater och mata in dessa var för sig.";
+
+/* The button label of the action used to dismiss the unsafe notification permission alert */
+"Close" = "Stäng";
 
 /* The title text for the looping enabled switch cell */
 "Closed Loop" = "Sluten loop";
 
 /* Alert title for closed loop off informational modal */
-"Closed Loop OFF" = "Sluten Loop är av";
+"Closed Loop OFF" = "Sluten Loop är AV";
 
 /* The description text for the looping enabled switch cell when closed loop is not allowed because the sensor is inactive */
 "Closed Loop requires an active CGM Sensor Session" = "Sluten Loop kräver en aktiv CGM-sensor";
@@ -288,6 +291,9 @@
 /* The error message displayed for configuration errors. (1: configuration error details) */
 "Configuration Error: %1$@" = "Konfigurationsfel %1$@";
 
+/* Default alert dismissal */
+"Continue" = "Fortsätt";
+
 /* The title of the continuous glucose monitor section in settings */
 "Continuous Glucose Monitor" = "Kontinuerlig glukosmätning";
 
@@ -311,7 +317,7 @@
 "Current glucose of %1$@ is below correction range." = "Nuvarande glukosvärde %1$@ är under målvärde.";
 
 /* The title of the cell indicating a generic temporary override is enabled */
-"Custom Override" = "Anpassad override";
+"Custom Override" = "Anpassad Override";
 
 /* The title of the cell indicating a generic custom preset is enabled */
 "Custom Preset" = "Anpassad förinställning";
@@ -399,7 +405,7 @@
 "Error Exporting Logs" = "Fel vid export av loggar";
 
 /* The alert title for a resume error */
-"Error Resuming" = "Fel vid försök att återgå";
+"Error Resuming" = "Fel vid återupptagande";
 
 /* Segmented button title for insulin delivery log event history */
 "Event History" = "Händelsehistorik";
@@ -460,7 +466,7 @@
 "Insulin Absorbed (U) × Insulin Sensitivity (%1$@/U)" = "Insulin absorberat (E) × Insulinkänslighet (%1$@/E)";
 
 /* The title of the insulin delivery graph */
-"Insulin Delivery" = "Insulin doserat";
+"Insulin Delivery" = "Insulin Delivery";
 
 /* Details for missing data error when insulin effects are missing */
 "Insulin effects" = "Insulineffekter";
@@ -483,7 +489,7 @@
 "Insulin Type" = "Insulintyp";
 
 /* Description of an interrupted bolus dose entry (1: title for dose type, 2: value (? if no value) in bold, 3: programmed value (? if no value), 4: unit) */
-"Interrupted %1$@: <b>%2$@</b> of %3$@ %4$@" = "Interrupted %1$@: <b>%2$@</b> av %3$@ %4$@";
+"Interrupted %1$@: <b>%2$@</b> of %3$@ %4$@" = "Avbruten %1$@: <b>%2$@</b> av %3$@ %4$@";
 
 /* The error message when invalid data was encountered. (1: details of invalid data) */
 "Invalid data: %1$@" = "Ogiltigt värde: %1$@";
@@ -511,7 +517,7 @@
 "Logged Insulin Dose" = "Loggad insulindos";
 
 /* The notification title for a loop failure */
-"Loop Failure" = "Loop-fel";
+"Loop Failure" = "Loopfel";
 
 /* Bluetooth unavailable alert body. */
 "Loop has detected an issue with your Bluetooth settings, and will not work successfully until Bluetooth is enabled. You will not receive glucose readings, or be able to bolus." = "Loop har upptäckt ett problem med dina Bluetooth-inställningar och kommer inte att fungera förrän Bluetooth är aktiverat. Du kommer varken att kunna se dina blodsockervärden eller att kunna ge någon bolus.";
@@ -525,6 +531,9 @@
 /* Description string for temp basal only dosing strategy */
 "Loop will set temporary basal rates to increase and decrease insulin delivery." = "Loop kommer att ställa in tillfälliga basalnivåer för att öka eller minska insulintillförsel.";
 
+/* Details for configuration error when maximum bolus is missing */
+"Maximum Bolus" = "Maximal bolus";
+
 /* Title for bolus entry screen when also entering carbs */
 "Meal Bolus" = "Måltidsbolus";
 
@@ -535,11 +544,14 @@
 "Missing data: %1$@" = "Saknar data: %1$@";
 
 /* The short unit display string for millimoles of glucose per liter */
-"mmol/L" = "mmol/l";
+"mmol/L" = "mmol/L";
 
 /* Details for missing data error when momentum effects are missing */
 "Momentum effects" = "Momentumeffekter";
 
+/* Text for more info action on notification of upcoming profile expiration */
+"More Info" = "Mer info";
+
 /* Sensor state description for the non-valid state */
 "Needs Attention" = "Kräver uppmärksamhet";
 
@@ -569,6 +581,9 @@
 /* Title for bolus screen notice when pump data is missing or stale */
 "No Recent Pump Data" = "Det finns inga aktuella pumpdata";
 
+/* Notification Setting Status is Off */
+"Off" = "Av";
+
 /* Alert acknowledgment OK button
    Critical Alert permissions disabled alert button
    Default action for alert when alert acknowledgment fails
@@ -577,6 +592,9 @@
    The title of the notification action to acknowledge a device alert */
 "OK" = "OK";
 
+/* Notification Setting Status is On */
+"On" = "På";
+
 /* The title text for the override presets */
 "Override Presets" = "Override förinställningar";
 
@@ -638,7 +656,7 @@
 "Recommendation expired: %1$@ old" = "Rekommendationen gick ut för %1$@ sedan";
 
 /* The title of the cell displaying a recommended temp basal value */
-"Recommended Basal" = "Rekommenderat basalvärde";
+"Recommended Basal" = "Rekommenderad basaldos";
 
 /* Label for recommended bolus row on bolus screen
    Label for recommended bolus row on simple bolus screen */
@@ -681,7 +699,7 @@
 "since %@" = "sedan %@";
 
 /* The title of the nightscout site URL credential */
-"Site URL" = "Adress (URL)";
+"Site URL" = "Nightscout-URL";
 
 /* The format for the description of a temporary override start date */
 "starting at %@" = "Börjar kl.  %@";
@@ -720,7 +738,10 @@
 "The bolus recommendation has updated. Please reconfirm the bolus amount." = "Bolusrekommendationen har uppdaterats. Konfirmera bolus";
 
 /* Subtitle description of Walsh insulin model setting */
-"The legacy model used by Loop, allowing customization of action duration." = "Äldre modell använd av Loop, vilken tillåter anpassing av effektvaraktighet.";
+"The legacy model used by Loop, allowing customization of action duration." = "Äldre modell använd av Loop, vilken tillåter anpassning av insulinets verkningstid.";
+
+/* Alert body displayed absorption time greater than max (1: maximum absorption time) */
+"The maximum absorption time is %@" = "Maximala absorptionstiden är %@";
 
 /* Alert message for a maximum bolus validation error (1: max bolus value) */
 "The maximum bolus amount is %@ U." = "Den högst tillåtna bolusmängden är %@ E.";
diff --git a/Loop/sv.lproj/Main.strings b/Loop/sv.lproj/Main.strings
index e89501cd7..352f1e692 100644
--- a/Loop/sv.lproj/Main.strings
+++ b/Loop/sv.lproj/Main.strings
@@ -11,13 +11,13 @@
 "87H-N1-0vJ.text" = "Förväntat";
 
 /* Class = "UILabel"; text = "Detail"; ObjectID = "aCb-Qs-bpu"; */
-"aCb-Qs-bpu.text" = "Detalj";
+"aCb-Qs-bpu.text" = "Detail";
 
 /* Class = "UILabel"; text = "Food Type"; ObjectID = "ap1-M6-naG"; */
 "ap1-M6-naG.text" = "Typ av mat";
 
 /* Class = "UILabel"; text = "Label"; ObjectID = "bIL-Ub-qYp"; */
-"bIL-Ub-qYp.text" = "Etikett";
+"bIL-Ub-qYp.text" = "Label";
 
 /* Class = "UILabel"; text = "Glucose Change"; ObjectID = "bq4-98-cQU"; */
 "bq4-98-cQU.text" = "Glukosförändring";
@@ -29,10 +29,10 @@
 "D4C-I2-dhA.text" = "Förväntat glukosvärde beräknas genom kombination av flera inmatningar. Använd det här verktyget för att jämföra hur de påverkar det förväntade resultatet.";
 
 /* Class = "UILabel"; text = "Label"; ObjectID = "d6m-qV-wWi"; */
-"d6m-qV-wWi.text" = "Titel";
+"d6m-qV-wWi.text" = "Label";
 
 /* Class = "UILabel"; text = "eventually 92 mg/dL"; ObjectID = "E41-FN-nkk"; */
-"E41-FN-nkk.text" = "förväntat 5,1 mmol/l";
+"E41-FN-nkk.text" = "Förväntat 5,1 mmol/l";
 
 /* Class = "UILabel"; text = "Observed"; ObjectID = "EAn-Ja-S1d"; */
 "EAn-Ja-S1d.text" = "Observerad";
@@ -40,6 +40,9 @@
 /* Class = "UIButton"; normalTitle = "🍭"; ObjectID = "Fal-Vf-lfh"; */
 "Fal-Vf-lfh.normalTitle" = "🍭";
 
+/* Class = "UILabel"; text = "3.5 U/hour @ 12:12 PM"; ObjectID = "fWV-jg-ICt"; */
+"fWV-jg-ICt.text" = "3.5 E/h kl. 12:12";
+
 /* Class = "UITableViewController"; title = "Carbohydrate Effects"; ObjectID = "hZZ-2S-lrd"; */
 "hZZ-2S-lrd.title" = "Kolhydrateffekter";
 
@@ -47,7 +50,7 @@
 "IxU-As-glo.text" = "Observerad glukosförändring, med borttagen förändring modellerad från insulindoser, kan användas för att uppskatta kolhydratabsorptionen.";
 
 /* Class = "UILabel"; text = "Detail"; ObjectID = "J7x-W5-gwo"; */
-"J7x-W5-gwo.text" = "Detalj";
+"J7x-W5-gwo.text" = "Detail";
 
 /* Class = "UILabel"; text = "Recommended Basal"; ObjectID = "k3F-Na-7mn"; */
 "k3F-Na-7mn.text" = "Rekommenderad basaldos";
@@ -83,7 +86,7 @@
 "Tz7-80-bJ7.title" = "Lägg till/Ändra kolhydrater";
 
 /* Class = "UILabel"; text = "Label"; ObjectID = "ufi-Kj-33k"; */
-"ufi-Kj-33k.text" = "Titel";
+"ufi-Kj-33k.text" = "Label";
 
 /* Class = "UINavigationItem"; title = "Carbohydrates"; ObjectID = "Vpi-5b-bY5"; */
 "Vpi-5b-bY5.title" = "Kolhydrater";
@@ -91,6 +94,9 @@
 /* Class = "UILabel"; text = "Amount Consumed"; ObjectID = "Wx8-Tf-FnG"; */
 "Wx8-Tf-FnG.text" = "Mängd";
 
+/* Class = "UILabel"; text = "Recommended Basal"; ObjectID = "xhx-PI-bBI"; */
+"xhx-PI-bBI.text" = "Rekommenderad basaldos";
+
 /* Class = "UIButton"; normalTitle = "🍕"; ObjectID = "xl9-Wc-Pdu"; */
 "xl9-Wc-Pdu.normalTitle" = "🍕";
 
@@ -101,7 +107,7 @@
 "yn7-2M-jZz.text" = "0";
 
 /* Class = "UILabel"; text = "Title"; ObjectID = "zbc-87-wxZ"; */
-"zbc-87-wxZ.text" = "Titel";
+"zbc-87-wxZ.text" = "Title";
 
 /* Class = "UILabel"; text = "0"; ObjectID = "zvZ-uf-zMX"; */
 "zvZ-uf-zMX.text" = "0";
diff --git a/Loop/tr.lproj/InfoPlist.strings b/Loop/tr.lproj/InfoPlist.strings
index a18eb9170..2c9bfbe1b 100644
--- a/Loop/tr.lproj/InfoPlist.strings
+++ b/Loop/tr.lproj/InfoPlist.strings
@@ -20,7 +20,7 @@
 "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, Apple Watch komplikasyonunu iyileştirmek için kullanılır.";
 
 /* Privacy - Health Update Usage Description */
-"NSHealthUpdateUsageDescription" = "Uygulamaya ve saate girilen öğün karbonhidrat verileri Sağlık veritabanında saklanır. CGM'den alınan glikoz verileri, HealthKit'te güvenli bir şekilde saklanır.";
+"NSHealthUpdateUsageDescription" = "Uygulamaya ve saate girilen öğün karbonhidrat verileri Sağlık veritabanında saklanır. CGM'den alınan KŞ verileri, HealthKit'te güvenli bir şekilde saklanır.";
 
 /* Privacy - Siri Usage Description */
 "NSSiriUsageDescription" = "Loop, ön ayarları sesinizle gerçekleştirmenize izin vermek için Siri'yi kullanır.";
diff --git a/Loop/tr.lproj/Localizable.strings b/Loop/tr.lproj/Localizable.strings
index c9148469b..6beb2db14 100644
--- a/Loop/tr.lproj/Localizable.strings
+++ b/Loop/tr.lproj/Localizable.strings
@@ -93,7 +93,7 @@
 
 /* Description of a basal temp basal dose entry (1: title for dose type, 2: value (? if no value) in bold, 3: unit)
    Description of a bolus dose entry (1: title for dose type, 2: value (? if no value) in bold, 3: unit) */
-"%1$@: <b>%2$@</b> %3$@" = "%1$@ : <b> %2$@ </b> %3$@";
+"%1$@: <b>%2$@</b> %3$@" = "%1$@: <b>%2$@</b> %3$@";
 
 /* Description of the prediction input effect for glucose momentum */
 "15 min glucose regression coefficient (b₁), continued with decay over 30 min" = "15 dakikalık glikoz regresyon katsayısı (b₁), 30 dakika boyunca bozuk devam etti";
@@ -236,7 +236,7 @@
 
 /* The title of the basal rate profile screen
    The title text for the basal rate schedule */
-"Basal Rates" = "Bazal Oranları";
+"Basal Rates" = "Bazal Oranlar";
 
 /* Caption for bolus screen notice when no bolus is recommended for the predicted glucose */
 "Based on your predicted glucose, no bolus is recommended." = "Tahmini KŞ'ne bağlı olarak bolus önerilmez.";
@@ -390,10 +390,10 @@
 "Current Glucose" = "Mevcut KŞ";
 
 /* Message when offering bolus recommendation even though bg is below range. (1: glucose value) */
-"Current glucose of %1$@ is below correction range." = "Mevcut KŞ %1$@ düzeltme aralığının altında.";
+"Current glucose of %1$@ is below correction range." = "%1$@ Mevcut KŞ düzeltme aralığının altında.";
 
 /* The title of the cell indicating a generic temporary override is enabled */
-"Custom Override" = "Özel Geçersiz Kılma";
+"Custom Override" = "Özel Geçersiz kılma";
 
 /* The title of the cell indicating a generic custom preset is enabled */
 "Custom Preset" = "Özel Ön Ayar";
@@ -517,7 +517,7 @@
 "Fingerstick Glucose" = "Parmak Ucu KŞ";
 
 /* The format string used to describe a finite workout targets duration */
-"For %1$@" = "For %1$@";
+"For %1$@" = "%1$@ için";
 
 /* No comment provided by engineer. */
 "Forecasted blood glucose may still be higher than target range." = "Öngörülen KŞ, hala hedef aralıktan yüksek olabilir.";
@@ -532,7 +532,7 @@
 "Get help with Alert Permissions" = "Uyarı İzinleri ile ilgili yardım alın";
 
 /* The title of the glucose and prediction graph */
-"Glucose" = "KŞ";
+"Glucose" = "Kan şekeri";
 
 /* The error message when glucose data is too old to be used. (1: glucose data age in minutes) */
 "Glucose data is %1$@ old" = "%1$@ eski KŞ verisi";
@@ -575,7 +575,7 @@
 "Insulin adjustments have been disabled!" = "İnsülin ayarlamaları devre dışı bırakıldı!";
 
 /* The title of the insulin delivery graph */
-"Insulin Delivery" = "İnsülin İletimi";
+"Insulin Delivery" = "İnsulin İletimi";
 
 /* Details for missing data error when insulin effects are missing */
 "Insulin effects" = "İnsülin etkileri";
@@ -778,13 +778,13 @@
 "On" = "Açık";
 
 /* The title text for the override presets */
-"Override Presets" = "Ön Ayarları Geçersiz Kılma";
+"Override Presets" = "Geçersiz Kılma Ön Ayarları";
 
 /* The label of the pre-meal mode toggle button */
 "Pre-Meal Targets" = "Yemek Öncesi Hedefler";
 
 /* 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$@." = "Tahmini KŞ %1$@  %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.";
diff --git a/Loop/tr.lproj/Main.strings b/Loop/tr.lproj/Main.strings
index 4a6dcf995..321845405 100644
--- a/Loop/tr.lproj/Main.strings
+++ b/Loop/tr.lproj/Main.strings
@@ -5,7 +5,7 @@
 "3kU-n2-fha.title" = "Durum";
 
 /* Class = "UILabel"; text = "3.5 U/hour @ 12:12 PM"; ObjectID = "5gz-kZ-iF1"; */
-"5gz-kZ-iF1.text" = "3.5 U/hour @ 12:12 PM";
+"5gz-kZ-iF1.text" = "3.5 Ü/saat @ 12:12 PM";
 
 /* Class = "UILabel"; text = "Predicted"; ObjectID = "87H-N1-0vJ"; */
 "87H-N1-0vJ.text" = "Tahmini";
@@ -71,7 +71,7 @@
 "QhO-Yi-AqQ.normalTitle" = "🌮";
 
 /* Class = "UILabel"; text = "Food Type"; ObjectID = "qPH-vU-xlu"; */
-"qPH-vU-xlu.text" = "Food Type";
+"qPH-vU-xlu.text" = "Yemek Tipi";
 
 /* Class = "UILabel"; text = "eventually 92 mg/dL"; ObjectID = "Rse-x8-amW"; */
 "Rse-x8-amW.text" = "Nihai KŞ 92 mg/dL";
@@ -80,7 +80,7 @@
 "SQx-au-ZcM.text" = "gr Aktif Karb.";
 
 /* Class = "UILabel"; text = "Glucose"; ObjectID = "tuw-av-A3x"; */
-"tuw-av-A3x.text" = "Glucose";
+"tuw-av-A3x.text" = "Kan şekeri";
 
 /* Class = "UINavigationItem"; title = "Add/Edit Carb Entry"; ObjectID = "Tz7-80-bJ7"; */
 "Tz7-80-bJ7.title" = "Karb. Girişi Ekle/Düzenle";
diff --git a/Loop/vi.lproj/InfoPlist.strings b/Loop/vi.lproj/InfoPlist.strings
index 8f2686ff2..26e6ae78c 100644
--- a/Loop/vi.lproj/InfoPlist.strings
+++ b/Loop/vi.lproj/InfoPlist.strings
@@ -1,3 +1,6 @@
+/* Bundle display name */
+"CFBundleDisplayName" = "Loop";
+
 /* Bundle name */
 "CFBundleName" = "$(PRODUCT_NAME)";
 
diff --git a/Loop/vi.lproj/Localizable.strings b/Loop/vi.lproj/Localizable.strings
index 40358f494..a05cd3465 100644
--- a/Loop/vi.lproj/Localizable.strings
+++ b/Loop/vi.lproj/Localizable.strings
@@ -1,6 +1,12 @@
 /* The string format appended to active insulin that describes pending insulin. (1: pending insulin) */
 " (pending: %@)" = " (đang chờ xử lý: %@)";
 
+/* String denoting lack of a recommended bolus amount in the simple bolus calculator */
+"–" = "—";
+
+/* No glucose value representation (3 dashes for mg/dL) */
+"– – –" = "---";
+
 /* The format for an active override preset. (1: preset symbol)(2: preset name) */
 "%@ %@" = "%1$@ %2$@";
 
@@ -16,6 +22,9 @@
 /* Format string for glucose target range. (1: Min target)(2: Max target)(3: glucose unit) */
 "%1$@ – %2$@ %3$@" = "%1$@ – %2$@ %3$@";
 
+/* Format string combining carb entry quantity and absorption time emoji */
+"%1$@ %2$@" = "%1$@ %2$@";
+
 /* Format string for carb ratio average. (1: value)(2: carb unit) */
 "%1$@ %2$@/U" = "%1$@ %2$@/U";
 
@@ -49,6 +58,9 @@
 /* Subtitle of Rapid-Acting – Adult preset */
 "A model based on the published absorption of Humalog, Novolog, and Apidra insulin in adults." = "Mô hình dựa trên sự hấp thụ được công bố của các loại insulin Humalog, Novolog và Apidra ở người lớn.";
 
+/* Title of the carb entry absorption time cell */
+"Absorption Time" = "Thời gian Hấp thụ";
+
 /* Action to copy the recommended Bolus value to the actual Bolus Field */
 "AcceptRecommendedBolus" = "AcceptRecommendedBolus";
 
@@ -58,6 +70,9 @@
 /* The string format describing active carbohydrates. (1: localized glucose value description) */
 "Active Carbohydrates: %@" = "Lượng Carbohydrates còn hoạt động: %@";
 
+/* Title describing quantity of still-absorbing carbohydrates */
+"Active Carbs" = "Lượng Carbs còn hoạt động";
+
 /* The title of the Insulin On-Board graph */
 "Active Insulin" = "Lượng Insulin còn hoạt động";
 
@@ -65,7 +80,7 @@
 "Active Insulin: %@" = "Lượng Insulin còn hoạt động: %@";
 
 /* Title of the user activity for adding carbs */
-"Add Carb Entry" = "Khai báo khối lượng Carb";
+"Add Carb Entry" = "Khai báo Carb";
 
 /* Action sheet title selecting CGM
    Title text for button to set up a CGM */
@@ -87,6 +102,12 @@
 /* The title of the nightscout API secret credential */
 "API Secret" = "API Secret";
 
+/* Action sheet confirmation message for pump history deletion */
+"Are you sure you want to delete all history entries?" = "Bạn có chắc muốn xóa hết các dữ liệu cũ?";
+
+/* Action sheet confirmation message for reservoir deletion */
+"Are you sure you want to delete all reservoir values?" = "Bạn có chắc muốn xóa hết mọi giá trị của ngăn chứa insulin?";
+
 /* Confirmation message for deleting a CGM */
 "Are you sure you want to delete this CGM?" = "Bạn có chắc sẽ xóa CGM này?";
 
@@ -101,11 +122,11 @@
 
 /* The title of the basal rate profile screen
    The title text for the basal rate schedule */
-"Basal Rates" = "Basal Rates";
+"Basal Rates" = "Lịch biểu tiêm liều nền";
 
 /* The label of the bolus entry button
    The notification title for a bolus failure */
-"Bolus" = "Liều Bolus";
+"Bolus" = "Bolus";
 
 /* The format string for bolus progress. (1: delivered volume)(2: total volume) */
 "Bolused %1$@ of %2$@" = "Đã thực hiện Bolus %1$@ của %2$@";
@@ -124,10 +145,16 @@
 
 /* The title of the carb ratios schedule screen
    The title text for the carb ratio schedule */
-"Carb Ratios" = "Tỷ lệ Carb";
+"Carb Ratios" = "Carb Ratios";
+
+/* The title of the view controller to create a new carb entry */
+"carb-entry-title-add" = "Khai báo Carb";
+
+/* The title of the view controller to edit an existing carb entry */
+"carb-entry-title-edit" = "Chỉnh sửa Carb";
 
 /* Title of the prediction input effect for carbohydrates */
-"Carbohydrates" = "Các bon hydrat";
+"Carbohydrates" = "Carbohydrates";
 
 /* Description of the prediction input effect for carbohydrates. (1: The glucose unit string) */
 "Carbs Absorbed (g) ÷ Carb Ratio (g/U) × Insulin Sensitivity (%1$@/U)" = "Khối lượng carb tiêu thụ (g) ÷ Tỷ lệ Carb (g/U) × Độ nhạy của Insulin (%1$@/U)";
@@ -147,9 +174,18 @@
 /* Recovery suggestion when glucose data is missing */
 "Check your CGM data source" = "Kiểm tra nguồn dữ liệu CGM của bạn";
 
+/* Carb entry section footer text explaining absorption time */
+"Choose a longer absorption time for larger meals, or those containing fats and proteins. This is only guidance to the algorithm and need not be exact." = "Lựa chọn khoảng thời gian tiêu hóa dài hơn cho các bữa ăn no, hoặc những bữa ăn nhiều chất béo và protein. Đây chỉ là hướng dẫn cho thuật toán Algorithm và không cần phải chính xác.";
+
 /* The title text for the looping enabled switch cell */
 "Closed Loop" = "Vòng lặp kín";
 
+/* The format string describing the date of an IOB value. The first format argument is the localized date. */
+"com.loudnate.InsulinKit.IOBDateLabel" = "lúc %1$@";
+
+/* The format string describing the starting date of a total value. The first format argument is the localized date. */
+"com.loudnate.InsulinKit.totalDateLabel" = "từ lúc %1$@";
+
 /* The title of the action used to dismiss an error alert */
 "com.loudnate.LoopKit.errorAlertActionTitle" = "OK";
 
@@ -159,28 +195,50 @@
 /* The error message displayed for configuration errors. (1: configuration error details) */
 "Configuration Error: %1$@" = "Lỗi cấu hình: %1$@";
 
+/* Default alert dismissal */
+"Continue" = "Tiếp tục";
+
 /* The title of the continuous glucose monitor section in settings */
 "Continuous Glucose Monitor" = "Kiểm soát đường huyết liên tục";
 
 /* The title of the glucose target range schedule screen
    The title text for the glucose target range schedule */
-"Correction Range" = "Phạm vi Điều chỉnh";
+"Correction Range" = "Phạm vi liều Bổ sung";
 
 /* Message when offering bolus recommendation even though bg is below range. (1: glucose value) */
 "Current glucose of %1$@ is below correction range." = " Chỉ số glucose hiện tại %1$@ nằm dưới Phạm vi Điều chỉnh.";
 
 /* The title of the cell indicating a generic temporary override is enabled */
-"Custom Override" = "Chồng liều";
+"Custom Override" = "Thói quen Chồng liều";
+
+/* Date picker label */
+"Date" = "Ngày";
+
+/* The short unit display string for decibles */
+"dB" = "dB";
+
+/* The title of the button to remove the credentials for a service */
+"Delete Account" = "Xóa Tài khoản";
+
+/* Button title to delete all objects */
+"Delete All" = "Xóa hết";
 
 /* Button title to delete CGM */
 "Delete CGM" = "Xóa CGM";
 
+/* Button title to delete a service */
+"Delete Service" = "Delete Service";
+
 /* Title text for delivery limits */
-"Delivery Limits" = "Giới hạn tiêm";
+"Delivery Limits" = "Giới hạn liều tiêm";
 
 /* The action hint of the workout mode toggle button when enabled */
 "Disables" = "Vô hiệu hóa";
 
+/* Default alert dismissal
+   The button label of the action used to dismiss an error alert */
+"Dismiss" = "Từ bỏ";
+
 /* The action hint of the workout mode toggle button when disabled */
 "Enables" = "Cho phép";
 
@@ -191,7 +249,10 @@
 "Error Canceling Bolus" = "Lỗi hủy liều Bolus";
 
 /* The alert title for a resume error */
-"Error Resuming" = "Lỗi trong việc Bắt đầu lại";
+"Error Resuming" = "Lỗi khi đang tái thực hiện";
+
+/* Segmented button title for insulin delivery log event history */
+"Event History" = "Event History";
 
 /* The subtitle format describing eventual glucose. (1: localized glucose value description) */
 "Eventually %@" = "Kết quả %@";
@@ -205,6 +266,9 @@
 /* The format string used to describe a finite workout targets duration */
 "For %1$@" = "For %1$@";
 
+/* The short unit display string for grams */
+"g" = "g";
+
 /* The title of the glucose and prediction graph */
 "Glucose" = "Đường huyết";
 
@@ -227,7 +291,7 @@
 "Insulin Absorbed (U) × Insulin Sensitivity (%1$@/U)" = "Lượng insulin tiêu hao (U) × Độ nhạy của insulin (%1$@/U)";
 
 /* The title of the insulin delivery graph */
-"Insulin Delivery" = "Khối lượng tiêm insulin";
+"Insulin Delivery" = "Insulin Delivery";
 
 /* Details for missing data error when insulin effects are missing */
 "Insulin effects" = "Tác dụng của insulin";
@@ -258,20 +322,46 @@
 /* The notification alert describing a long-lasting loop failure. The substitution parameter is the time interval since the last loop */
 "Loop has not completed successfully in %@" = "Loop không hoạt động thành công trong %@";
 
+/* Details for configuration error when maximum bolus is missing */
+"Maximum Bolus" = "Liều Bolus tối đa";
+
+/* The short unit display string for milligrams of glucose per decilter */
+"mg/dL" = "mg/dL";
+
 /* The error message for missing data. (1: missing data details) */
 "Missing data: %1$@" = "Dữ liệu thiếu: %1$@";
 
+/* The short unit display string for millimoles of glucose per liter */
+"mmol/L" = "mmol/L";
+
 /* Details for missing data error when momentum effects are missing */
 "Momentum effects" = "Hiệu ứng động lượng";
 
+/* Text for more info action on notification of upcoming profile expiration */
+"More Info" = "Thêm thông tin";
+
+/* Sensor state description for the non-valid state */
+"Needs Attention" = "Cần chú ý";
+
 /* The title of the Nightscout service */
 "Nightscout" = "Nightscout";
 
 /* The error message displayed for device connection errors. */
 "No connected devices, or failure during device connection" = "Không có thiết bị nào được kết nối, hoặc lỗi trong quá trình kết nối";
 
+/* Alert acknowledgment OK button
+   Critical Alert permissions disabled alert button
+   Default action for alert when alert acknowledgment fails
+   Notifications permissions disabled alert button
+   Text for ok action on notification of upcoming profile expiration
+   The title of the notification action to acknowledge a device alert */
+"OK" = "OK";
+
+/* Notification Setting Status is On */
+"On" = "On";
+
 /* The title text for the override presets */
-"Override Presets" = "Ghi đè cài đặt trước";
+"Override Presets" = "Cài đặt chồng liều";
 
 /* The label of the pre-meal mode toggle button */
 "Pre-Meal Targets" = "Mục tiêu trước bữa ăn";
@@ -294,6 +384,9 @@
 /* The error message when pump data is too old to be used. (1: pump data age in minutes) */
 "Pump data is %1$@ old" = "Dữ liệu bơm %1$@ là cũ";
 
+/* The title of the screen displaying a pump event */
+"Pump Event" = "Pump Event";
+
 /* Details for configuration error when pump manager is missing */
 "Pump Manager" = "Trình quản lý bơm";
 
@@ -306,6 +399,9 @@
 /* The title of the cell indicating the pump is suspended */
 "Pump Suspended" = "Bơm đã tạm ngưng";
 
+/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
+"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
+
 /* Title of insulin model preset */
 "Rapid-Acting – Adults" = "Thuốc tác động nhanh cho người lớn";
 
@@ -316,13 +412,13 @@
 "Recommendation expired: %1$@ old" = "Khuyến cáo hết hạn: %1$@ phút";
 
 /* The title of the cell displaying a recommended temp basal value */
-"Recommended Basal" = "Liều Basal khuyến nghị";
+"Recommended Basal" = "Khuyến nghị liều Basal";
 
 /* Accessibility hint describing recommended bolus units */
 "Recommended Bolus: %@ Units" = "Liều Bolus khuyến nghị: %@ Units";
 
 /* Details for missing data error when reservoir data is missing */
-"Reservoir" = "Ngăn chứa insulin";
+"Reservoir" = "Reservoir";
 
 /* Title of the prediction input effect for retrospective correction */
 "Retrospective Correction" = "Liều Bổ sung còn hiệu lực";
@@ -360,12 +456,19 @@
 /* Subtitle description of Walsh insulin model setting */
 "The legacy model used by Loop, allowing customization of action duration." = "Mô hình cũ được Loop sử dụng, cho phép tùy chỉnh thời lượng hành động.";
 
+/* Alert body displayed absorption time greater than max (1: maximum absorption time) */
+"The maximum absorption time is %@" = "Thời gian tiêu hóa tối đa là  %@";
+
 /* Body of the alert describing a maximum bolus validation error. (1: The localized max bolus value) */
 "The maximum bolus amount is %@ Units" = "Số lượng bolus tối đa là %@ Units";
 
 /* The short unit display string for international units of insulin */
 "U" = "U";
 
+/* Event title displayed when StoredPumpEvent.title is not set
+   The default description to use when an entry has no dose description */
+"Unknown" = "Không nhận ra";
+
 /* The format for the description of a temporary override end date */
 "until %@" = "cho đến khi %@";
 
diff --git a/Loop/vi.lproj/Main.strings b/Loop/vi.lproj/Main.strings
index 0817085a3..b05737c3a 100644
--- a/Loop/vi.lproj/Main.strings
+++ b/Loop/vi.lproj/Main.strings
@@ -1,3 +1,6 @@
+/* Class = "UILabel"; text = "g"; ObjectID = "0RV-d5-muE"; */
+"0RV-d5-muE.text" = "g";
+
 /* Class = "UINavigationItem"; title = "Status"; ObjectID = "3kU-n2-fha"; */
 "3kU-n2-fha.title" = "Tình trạng";
 
@@ -8,10 +11,10 @@
 "87H-N1-0vJ.text" = "Được dự đoán";
 
 /* Class = "UILabel"; text = "Detail"; ObjectID = "aCb-Qs-bpu"; */
-"aCb-Qs-bpu.text" = "Chi tiết";
+"aCb-Qs-bpu.text" = "Detail";
 
 /* Class = "UILabel"; text = "Label"; ObjectID = "bIL-Ub-qYp"; */
-"bIL-Ub-qYp.text" = "Nhãn";
+"bIL-Ub-qYp.text" = "Label";
 
 /* Class = "UILabel"; text = "Glucose Change"; ObjectID = "bq4-98-cQU"; */
 "bq4-98-cQU.text" = "Mức đường huyết thay đổi";
@@ -23,14 +26,17 @@
 "D4C-I2-dhA.text" = "Glucose trong tương lai được dự đoán bằng cách kết hợp các tác động của nhiều dữ liệu đầu vào. Sử dụng công cụ này để chuyển đổi các đầu vào khác nhau để xem cách chúng so sánh với dự đoán cuối cùng.";
 
 /* Class = "UILabel"; text = "Label"; ObjectID = "d6m-qV-wWi"; */
-"d6m-qV-wWi.text" = "Nhãn";
+"d6m-qV-wWi.text" = "Label";
 
 /* Class = "UILabel"; text = "eventually 92 mg/dL"; ObjectID = "E41-FN-nkk"; */
-"E41-FN-nkk.text" = "kết quả 92 mg/dL";
+"E41-FN-nkk.text" = "kết quả là 92 mg/dL";
 
 /* Class = "UILabel"; text = "Observed"; ObjectID = "EAn-Ja-S1d"; */
 "EAn-Ja-S1d.text" = "Được quan sát";
 
+/* Class = "UILabel"; text = "3.5 U/hour @ 12:12 PM"; ObjectID = "fWV-jg-ICt"; */
+"fWV-jg-ICt.text" = "3.5 U/hour @ 12:12 PM";
+
 /* Class = "UITableViewController"; title = "Carbohydrate Effects"; ObjectID = "hZZ-2S-lrd"; */
 "hZZ-2S-lrd.title" = "Carbohydrate Effects";
 
@@ -44,10 +50,10 @@
 "k3F-Na-7mn.text" = "Khuyến nghị liều Basal";
 
 /* Class = "UILabel"; text = "Label"; ObjectID = "Krd-Aa-ret"; */
-"Krd-Aa-ret.text" = "Nhãn";
+"Krd-Aa-ret.text" = "Label";
 
 /* Class = "UILabel"; text = "Label"; ObjectID = "OFA-qT-ZAg"; */
-"OFA-qT-ZAg.text" = "Nhãn";
+"OFA-qT-ZAg.text" = "Label";
 
 /* Class = "UITableViewController"; title = "Predicted Glucose"; ObjectID = "PA3-sP-cWY"; */
 "PA3-sP-cWY.title" = "Đường huyết được dự đoán";
@@ -62,11 +68,14 @@
 "tuw-av-A3x.text" = "Đường huyết";
 
 /* Class = "UILabel"; text = "Label"; ObjectID = "ufi-Kj-33k"; */
-"ufi-Kj-33k.text" = "Nhãn";
+"ufi-Kj-33k.text" = "Label";
 
 /* Class = "UINavigationItem"; title = "Carbohydrates"; ObjectID = "Vpi-5b-bY5"; */
 "Vpi-5b-bY5.title" = "Carbohydrates";
 
+/* Class = "UILabel"; text = "Recommended Basal"; ObjectID = "xhx-PI-bBI"; */
+"xhx-PI-bBI.text" = "Khuyến nghị liều Basal";
+
 /* Class = "UILabel"; text = "0"; ObjectID = "yn7-2M-jZz"; */
 "yn7-2M-jZz.text" = "0";
 
diff --git a/Loop/zh-Hans-CN.lproj/InfoPlist.strings b/Loop/zh-Hans-CN.lproj/InfoPlist.strings
deleted file mode 100644
index 09fb0ea7e..000000000
--- a/Loop/zh-Hans-CN.lproj/InfoPlist.strings
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Bundle name */
-"CFBundleName" = "$(PRODUCT_NAME)";
-
-/* Privacy - Bluetooth Always Usage Description */
-"NSBluetoothAlwaysUsageDescription" = "蓝牙用于与胰岛素泵和连续血糖监测设备进行通信";
-
-/* Privacy - Bluetooth Peripheral Usage Description */
-"NSBluetoothPeripheralUsageDescription" = "蓝牙用于与胰岛素泵和连续血糖监测设备进行通信";
-
-/* Privacy - Face ID Usage Description */
-"NSFaceIDUsageDescription" = "使用人脸解锁来确认输注胰岛素剂量";
-
-/* Privacy - Health Share Usage Description */
-"NSHealthShareUsageDescription" = "数据库中的膳食数据用于确定葡萄糖影响。健康数据库中的葡萄糖数据用于绘图和动量计算。";
-
-/* Privacy - Health Update Usage Description */
-"NSHealthUpdateUsageDescription" = "在应用程序和手表中输入的碳水化合物膳食数据存储在健康数据库中。从CGM检索的葡萄糖数据安全地存储在HealthKit中。";
-
diff --git a/Loop/zh-Hans-CN.lproj/Localizable.strings b/Loop/zh-Hans-CN.lproj/Localizable.strings
deleted file mode 100644
index 30f090690..000000000
--- a/Loop/zh-Hans-CN.lproj/Localizable.strings
+++ /dev/null
@@ -1,386 +0,0 @@
-/* The string format appended to active insulin that describes pending insulin. (1: pending insulin) */
-" (pending: %@)" = " (待执行: %@)";
-
-/* The format for an active override preset. (1: preset symbol)(2: preset name) */
-"%@ %@" = "%1$@ %2$@";
-
-/* Formats absorbed carb value */
-"%@ absorbed" = "%@ 已吸收";
-
-/* The subtitle format describing total insulin. (1: localized insulin total) */
-"%@ U Total" = "%@ 单位 总量";
-
-/* Appends a full-stop to a statement */
-"%@." = "%@.";
-
-/* Format string for glucose target range. (1: Min target)(2: Max target)(3: glucose unit) */
-"%1$@ – %2$@ %3$@" = "%1$@ – %2$@ %3$@";
-
-/* Format string for carb ratio average. (1: value)(2: carb unit) */
-"%1$@ %2$@/U" = "%1$@ %2$@/单位";
-
-/* Formats (1: carb start time) and (2: carb absorption duration) */
-"%1$@ + %2$@" = "%1$@ + %2$@";
-
-/* Low reservoir alert format string. (1: Number of units remaining) */
-"%1$@ U left" = "%1$@ 单位 剩余";
-
-/* Low reservoir alert with time remaining format string. (1: Number of units remaining)(2: approximate time remaining) */
-"%1$@ U left: %2$@" = "%1$@ 单位 剩余: %2$@";
-
-/* The format for recommended temp basal rate and time. (1: localized rate number)(2: localized time) */
-"%1$@ U/hour @ %2$@" = "%1$@ 单位/小时 @ %2$@";
-
-/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
-"%1$@ v%2$@" = "%1$@ v%2$@";
-
-/* Formats (1: carb value) and (2: food type) */
-"%1$@: %2$@" = "%1$@: %2$@";
-
-/* Description of the prediction input effect for glucose momentum */
-"15 min glucose regression coefficient (b₁), continued with decay over 30 min" = "15分钟葡萄糖回归系数（b1），持续30分钟衰减";
-
-/* Description of the prediction input effect for retrospective correction */
-"30 min comparison of glucose prediction vs actual, continued with decay over 60 min" = "30分钟葡萄糖预测与实际比较，持续60分钟以上衰减";
-
-/* Subtitle of Fiasp preset */
-"A model based on the published absorption of Fiasp insulin." = "基于公布的Fiasp胰岛素吸收的模型";
-
-/* Subtitle of Rapid-Acting – Adult preset */
-"A model based on the published absorption of Humalog, Novolog, and Apidra insulin in adults." = "基于已公布的Humalog，Novolog和Apidra胰岛素在成人中吸收的模型。";
-
-/* Action to copy the recommended Bolus value to the actual Bolus Field */
-"AcceptRecommendedBolus" = "按照推荐的大剂量输注";
-
-/* The title of the Carbs On-Board graph */
-"Active Carbohydrates" = "活性碳水化合物";
-
-/* The string format describing active carbohydrates. (1: localized glucose value description) */
-"Active Carbohydrates: %@" = "活性碳水化合物: %@";
-
-/* The title of the Insulin On-Board graph */
-"Active Insulin" = "活性胰岛素";
-
-/* The string format describing active insulin. (1: localized insulin value description) */
-"Active Insulin: %@" = "活性胰岛素: %@";
-
-/* Title of the user activity for adding carbs */
-"Add Carb Entry" = "添加碳水化合物";
-
-/* Action sheet title selecting CGM
-   Title text for button to set up a CGM */
-"Add CGM" = "添加CGM";
-
-/* The label of the meal button */
-"Add Meal" = "添加用餐信息";
-
-/* Action sheet title selecting Pump
-   Title text for button to set up a new pump */
-"Add Pump" = "添加泵";
-
-/* Title text for button to set up a service */
-"Add Service" = "Add Service";
-
-/* The title of the section containing algorithm settings */
-"Algorithm Settings" = "算法设置";
-
-/* Confirmation message for deleting a CGM */
-"Are you sure you want to delete this CGM?" = "确定要删除该CGM数据源？";
-
-/* Confirmation message for deleting a service */
-"Are you sure you want to delete this service?" = "Are you sure you want to delete this service?";
-
-/* Format fragment for a specific time */
-"at %@" = "%@分钟内";
-
-/* The message displayed during a device authentication prompt for bolus specification */
-"Authenticate to Bolus %@ Units" = "解锁以输注大剂量 %@ 单位";
-
-/* Details for configuration error when basal rate schedule is missing */
-"Basal Rate Schedule" = "基础率表";
-
-/* The title of the basal rate profile screen
-   The title text for the basal rate schedule */
-"Basal Rates" = "基础率";
-
-/* The label of the bolus entry button
-   The notification title for a bolus failure */
-"Bolus" = "大剂量";
-
-/* The format string for bolus progress. (1: delivered volume)(2: total volume) */
-"Bolused %1$@ of %2$@" = "大剂量已输注%1$@ of %2$@";
-
-/* The format string for bolus in progress showing total volume. (1: total volume) */
-"Bolusing %1$@" = "%1$@大剂量注射中";
-
-/* The title of the cancel action in an action sheet */
-"Cancel" = "取消";
-
-/* The title of the cell indicating a bolus is being canceled */
-"Canceling Bolus" = "取消大剂量";
-
-/* Details for missing data error when carb effects are missing */
-"Carb effects" = "碳水效果";
-
-/* The title of the carb ratios schedule screen
-   The title text for the carb ratio schedule */
-"Carb Ratios" = "碳水化合物吸收率";
-
-/* Title of the prediction input effect for carbohydrates */
-"Carbohydrates" = "碳水化合物";
-
-/* Description of the prediction input effect for carbohydrates. (1: The glucose unit string) */
-"Carbs Absorbed (g) ÷ Carb Ratio (g/U) × Insulin Sensitivity (%1$@/U)" = "已吸收碳水化合物（克）÷碳水化合物吸收率（克 / 单位）×胰岛素敏感系数 (%1$@/单位)";
-
-/* The notification alert describing a low pump battery */
-"Change the pump battery immediately" = "立即更换胰岛素泵电池";
-
-/* The notification alert describing an empty pump reservoir */
-"Change the pump reservoir now" = "立即更换储药器";
-
-/* Details for configuration error when one or more loop settings are missing */
-"Check settings" = "检查设置";
-
-/* Recovery suggestion when reservoir data is missing */
-"Check that your pump is in range" = "请检查你的泵是否在范围内";
-
-/* Recovery suggestion when glucose data is missing */
-"Check your CGM data source" = "请检查你的动态血糖数据来源";
-
-/* The title text for the looping enabled switch cell */
-"Closed Loop" = "开启闭环";
-
-/* The title of the action used to dismiss an error alert */
-"com.loudnate.LoopKit.errorAlertActionTitle" = "OK";
-
-/* The title of the configuration section in settings */
-"Configuration" = "配置";
-
-/* The error message displayed for configuration errors. (1: configuration error details) */
-"Configuration Error: %1$@" = "配置错误：%1$@";
-
-/* The title of the continuous glucose monitor section in settings */
-"Continuous Glucose Monitor" = "连续葡萄糖监测";
-
-/* The title of the glucose target range schedule screen
-   The title text for the glucose target range schedule */
-"Correction Range" = "修正范围";
-
-/* Message when offering bolus recommendation even though bg is below range. (1: glucose value) */
-"Current glucose of %1$@ is below correction range." = "当前葡萄糖%1$@低于修正范围";
-
-/* The title of the cell indicating a generic temporary override is enabled */
-"Custom Override" = "自定义覆盖";
-
-/* The title of the button to remove the credentials for a service */
-"Delete Account" = "删除账户";
-
-/* Button title to delete CGM */
-"Delete CGM" = "删除CGM数据源";
-
-/* Button title to delete a service */
-"Delete Service" = "Delete Service";
-
-/* Title text for delivery limits */
-"Delivery Limits" = "输注限制";
-
-/* The action hint of the workout mode toggle button when enabled */
-"Disables" = "禁用";
-
-/* The action hint of the workout mode toggle button when disabled */
-"Enables" = "启用";
-
-/* The placeholder text instructing users to enter a suspend treshold */
-"Enter suspend threshold" = "输入暂停阈值";
-
-/* The alert title for an error while canceling a bolus */
-"Error Canceling Bolus" = "无法取消大剂量";
-
-/* The alert title for a resume error */
-"Error Resuming" = "无法恢复输注";
-
-/* The subtitle format describing eventual glucose. (1: localized glucose value description) */
-"Eventually %@" = "最终 %@";
-
-/* The title of the alert describing a maximum bolus validation error */
-"Exceeds Maximum Bolus" = "超过大剂量最大输注限制";
-
-/* Title of insulin model preset */
-"Fiasp" = "Fiasp";
-
-/* The format string used to describe a finite workout targets duration */
-"For %1$@" = "对于 %1$@";
-
-/* The title of the glucose and prediction graph */
-"Glucose" = "葡萄糖";
-
-/* The error message when glucose data is too old to be used. (1: glucose data age in minutes) */
-"Glucose data is %1$@ old" = "葡萄糖%1$@分钟未更新";
-
-/* Description of error when glucose data is missing */
-"Glucose data not available" = "血糖数据不可用";
-
-/* Title of the prediction input effect for glucose momentum */
-"Glucose Momentum" = "葡萄糖增量预测算法";
-
-/* The title of a target alert action specifying an indefinitely long workout targets duration */
-"Indefinitely" = "永久";
-
-/* Title of the prediction input effect for insulin */
-"Insulin" = "胰岛素";
-
-/* Description of the prediction input effect for insulin */
-"Insulin Absorbed (U) × Insulin Sensitivity (%1$@/U)" = "已吸收胰岛素×胰岛素敏感系数";
-
-/* The title of the insulin delivery graph */
-"Insulin Delivery" = "已输注胰岛素";
-
-/* Details for missing data error when insulin effects are missing */
-"Insulin effects" = "胰岛素效果";
-
-/* Details for configuration error when insulin model is missing
-   The title text for the insulin model setting row */
-"Insulin Model" = "胰岛素模型";
-
-/* The title of the insulin sensitivities schedule screen
-   The title text for the insulin sensitivity schedule */
-"Insulin Sensitivities" = "胰岛素敏感系数";
-
-/* The error message when invalid data was encountered. (1: details of invalid data) */
-"Invalid data: %1$@" = "无效数据: %1$@";
-
-/* The title text for the issue report cell */
-"Issue Report" = "反馈问题";
-
-/* Glucose HUD accessibility hint */
-"Launches CGM app" = "启动CGM软件";
-
-/* The loading message for the diagnostic report screen */
-"Loading..." = "读取中...";
-
-/* The notification title for a loop failure */
-"Loop Failure" = "Loop失败";
-
-/* The notification alert describing a long-lasting loop failure. The substitution parameter is the time interval since the last loop */
-"Loop has not completed successfully in %@" = "Loop运行异常 %@";
-
-/* The error message for missing data. (1: missing data details) */
-"Missing data: %1$@" = "数据缺失: %1$@";
-
-/* Details for missing data error when momentum effects are missing */
-"Momentum effects" = "葡萄糖动量效应";
-
-/* Sensor state description for the non-valid state */
-"Needs Attention" = "请注意";
-
-/* The error message displayed for device connection errors. */
-"No connected devices, or failure during device connection" = "没有连接的设备，或设备连接期间发生故障";
-
-/* The title text for the override presets */
-"Override Presets" = "覆盖预设置";
-
-/* The label of the pre-meal mode toggle button */
-"Pre-Meal Targets" = "餐前目标";
-
-/* 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 describing retrospective glucose prediction comparison. (1: Predicted glucose)(2: Actual glucose)(3: difference) */
-"Predicted: %1$@\nActual: %2$@ (%3$@)" = "预测值: %1$@\n实际值: %2$@ (%3$@)";
-
-/* The title of the pump section in settings */
-"Pump" = "胰岛素泵";
-
-/* The notification title for a low pump battery */
-"Pump Battery Low" = "胰岛素泵电量低";
-
-/* The error message when pump data is too old to be used. (1: pump data age in minutes) */
-"Pump data is %1$@ old" = "胰岛素泵数据%1$@分钟未更新";
-
-/* Details for configuration error when pump manager is missing */
-"Pump Manager" = "泵管理";
-
-/* The notification title for an empty pump reservoir */
-"Pump Reservoir Empty" = "储药器药量已用完";
-
-/* The notification title for a low pump reservoir */
-"Pump Reservoir Low" = "药量低";
-
-/* The title of the cell indicating the pump is suspended */
-"Pump Suspended" = "泵已暂停输注";
-
-/* Title of insulin model preset */
-"Rapid-Acting – Adults" = "速效胰岛素 - 成人模型";
-
-/* Title of insulin model preset */
-"Rapid-Acting – Children" = "速效胰岛素 - 儿童模型";
-
-/* The error message when a recommendation has expired. (1: age of recommendation in minutes) */
-"Recommendation expired: %1$@ old" = "%1$@分钟前推荐剂量已过期";
-
-/* The title of the cell displaying a recommended temp basal value */
-"Recommended Basal" = "推荐基础率";
-
-/* Accessibility hint describing recommended bolus units */
-"Recommended Bolus: %@ Units" = "推荐大剂量：%@单位";
-
-/* Details for missing data error when reservoir data is missing */
-"Reservoir" = "储药器";
-
-/* Title of the prediction input effect for retrospective correction */
-"Retrospective Correction" = "回顾性修正";
-
-/* The title of the notification action to retry a bolus command */
-"Retry" = "重试";
-
-/* The title of the services section in settings */
-"Services" = "服务";
-
-/* The label of the settings button */
-"Settings" = "设置";
-
-/* Loop Completion HUD accessibility hint */
-"Shows last loop error" = "显示Loop上一次的错误";
-
-/* Format fragment for a start time */
-"since %@" = "自从%@分钟前";
-
-/* The format for the description of a temporary override start date */
-"starting at %@" = "开始于 %@";
-
-/* The title of the cell indicating a bolus is being sent */
-"Starting Bolus" = "开始输注大剂量";
-
-/* The title text in settings */
-"Suspend Threshold" = "暂停阈值";
-
-/* The subtitle of the cell displaying an action to resume insulin delivery */
-"Tap to Resume" = "点击恢复输注";
-
-/* Subtitle description of Walsh insulin model setting */
-"The legacy model used by Loop, allowing customization of action duration." = "Loop使用的默认模型参数，您可以自行修改胰岛素代谢时间。";
-
-/* Body of the alert describing a maximum bolus validation error. (1: The localized max bolus value) */
-"The maximum bolus amount is %@ Units" = "大剂量输注最大限制为%@单位";
-
-/* The short unit display string for international units of insulin */
-"U" = "U";
-
-/* The format for the description of a temporary override end date */
-"until %@" = "直到 %@";
-
-/* The title of the alert controller used to select a duration for workout targets */
-"Use Workout Glucose Targets" = "使用运动状态的血糖目标";
-
-/* Title of insulin model setting */
-"Walsh" = "Walsh";
-
-/* Explanation of suspend threshold */
-"When current or forecasted glucose is below the suspend threshold, Loop will not recommend a bolus, and will always recommend a temporary basal rate of 0 units per hour." = "当前或预测的葡萄糖低于暂停阈值时，Loop不推荐推注，并且总是建议每小时0单位的临时基础速率。";
-
-/* The label of the workout mode toggle button */
-"Workout Targets" = "运动模式血糖目标";
-
diff --git a/Loop/zh-Hans-CN.lproj/Main.strings b/Loop/zh-Hans-CN.lproj/Main.strings
deleted file mode 100644
index ed66f0b26..000000000
--- a/Loop/zh-Hans-CN.lproj/Main.strings
+++ /dev/null
@@ -1,78 +0,0 @@
-/* Class = "UINavigationItem"; title = "Status"; ObjectID = "3kU-n2-fha"; */
-"3kU-n2-fha.title" = "状态";
-
-/* Class = "UILabel"; text = "3.5 U/hour @ 12:12 PM"; ObjectID = "5gz-kZ-iF1"; */
-"5gz-kZ-iF1.text" = "3.5u/小时 @ 12:12 PM";
-
-/* Class = "UILabel"; text = "Predicted"; ObjectID = "87H-N1-0vJ"; */
-"87H-N1-0vJ.text" = "预计";
-
-/* Class = "UILabel"; text = "Detail"; ObjectID = "aCb-Qs-bpu"; */
-"aCb-Qs-bpu.text" = "详细";
-
-/* Class = "UILabel"; text = "Label"; ObjectID = "bIL-Ub-qYp"; */
-"bIL-Ub-qYp.text" = "标签";
-
-/* Class = "UILabel"; text = "Glucose Change"; ObjectID = "bq4-98-cQU"; */
-"bq4-98-cQU.text" = "葡萄糖变化";
-
-/* Class = "UILabel"; text = "g Total"; ObjectID = "d3X-AN-tA5"; */
-"d3X-AN-tA5.text" = "克 总计";
-
-/* Class = "UILabel"; text = "Future glucose is predicted by combining the effects of multiple inputs. Use this tool to toggle various inputs to see how they compare to the final prediction."; ObjectID = "D4C-I2-dhA"; */
-"D4C-I2-dhA.text" = "未来血糖根据您输入的多种参数计算，选中不同选项可以观察不同输入对最终血糖预测的影响";
-
-/* Class = "UILabel"; text = "Label"; ObjectID = "d6m-qV-wWi"; */
-"d6m-qV-wWi.text" = "标签";
-
-/* Class = "UILabel"; text = "eventually 92 mg/dL"; ObjectID = "E41-FN-nkk"; */
-"E41-FN-nkk.text" = "最终血糖为92 毫克/分升";
-
-/* Class = "UILabel"; text = "Observed"; ObjectID = "EAn-Ja-S1d"; */
-"EAn-Ja-S1d.text" = "观察值";
-
-/* Class = "UITableViewController"; title = "Carbohydrate Effects"; ObjectID = "hZZ-2S-lrd"; */
-"hZZ-2S-lrd.title" = " 碳水化合物的影响";
-
-/* Class = "UILabel"; text = "Observed changes in glucose, subtracting changes modeled from insulin delivery, can be used to estimate carbohydrate absorption."; ObjectID = "IxU-As-glo"; */
-"IxU-As-glo.text" = "观察到的葡萄糖变化，减去以胰岛素递送为模型的变化，可用于估计碳水化合物吸收。";
-
-/* Class = "UILabel"; text = "Detail"; ObjectID = "J7x-W5-gwo"; */
-"J7x-W5-gwo.text" = "详情";
-
-/* Class = "UILabel"; text = "Recommended Basal"; ObjectID = "k3F-Na-7mn"; */
-"k3F-Na-7mn.text" = "推荐基础率";
-
-/* Class = "UILabel"; text = "Label"; ObjectID = "Krd-Aa-ret"; */
-"Krd-Aa-ret.text" = "标签";
-
-/* Class = "UILabel"; text = "Label"; ObjectID = "OFA-qT-ZAg"; */
-"OFA-qT-ZAg.text" = "标签";
-
-/* Class = "UITableViewController"; title = "Predicted Glucose"; ObjectID = "PA3-sP-cWY"; */
-"PA3-sP-cWY.title" = "预测的血糖";
-
-/* Class = "UILabel"; text = "eventually 92 mg/dL"; ObjectID = "Rse-x8-amW"; */
-"Rse-x8-amW.text" = "最终血糖为92 毫克/分升";
-
-/* Class = "UILabel"; text = "g Active Carbs"; ObjectID = "SQx-au-ZcM"; */
-"SQx-au-ZcM.text" = "活性碳水化合物 克";
-
-/* Class = "UILabel"; text = "Glucose"; ObjectID = "tuw-av-A3x"; */
-"tuw-av-A3x.text" = "葡萄糖";
-
-/* Class = "UILabel"; text = "Label"; ObjectID = "ufi-Kj-33k"; */
-"ufi-Kj-33k.text" = "标签";
-
-/* Class = "UINavigationItem"; title = "Carbohydrates"; ObjectID = "Vpi-5b-bY5"; */
-"Vpi-5b-bY5.title" = "碳水化合物";
-
-/* Class = "UILabel"; text = "0"; ObjectID = "yn7-2M-jZz"; */
-"yn7-2M-jZz.text" = "0";
-
-/* Class = "UILabel"; text = "Title"; ObjectID = "zbc-87-wxZ"; */
-"zbc-87-wxZ.text" = "标题";
-
-/* Class = "UILabel"; text = "0"; ObjectID = "zvZ-uf-zMX"; */
-"zvZ-uf-zMX.text" = "0";
-
diff --git a/Loop/zh-Hans.lproj/InfoPlist.strings b/Loop/zh-Hans.lproj/InfoPlist.strings
index 104dd44b1..09fb0ea7e 100644
--- a/Loop/zh-Hans.lproj/InfoPlist.strings
+++ b/Loop/zh-Hans.lproj/InfoPlist.strings
@@ -1,9 +1,15 @@
+/* Bundle name */
+"CFBundleName" = "$(PRODUCT_NAME)";
+
 /* Privacy - Bluetooth Always Usage Description */
 "NSBluetoothAlwaysUsageDescription" = "蓝牙用于与胰岛素泵和连续血糖监测设备进行通信";
 
 /* Privacy - Bluetooth Peripheral Usage Description */
 "NSBluetoothPeripheralUsageDescription" = "蓝牙用于与胰岛素泵和连续血糖监测设备进行通信";
 
+/* Privacy - Face ID Usage Description */
+"NSFaceIDUsageDescription" = "使用人脸解锁来确认输注胰岛素剂量";
+
 /* Privacy - Health Share Usage Description */
 "NSHealthShareUsageDescription" = "数据库中的膳食数据用于确定葡萄糖影响。健康数据库中的葡萄糖数据用于绘图和动量计算。";
 
diff --git a/Loop/zh-Hans.lproj/Localizable.strings b/Loop/zh-Hans.lproj/Localizable.strings
index 4d918ee17..683fc6c28 100644
--- a/Loop/zh-Hans.lproj/Localizable.strings
+++ b/Loop/zh-Hans.lproj/Localizable.strings
@@ -1,18 +1,27 @@
-/* No comment provided by engineer. */
-" " = " ";
-
 /* The string format appended to active insulin that describes pending insulin. (1: pending insulin) */
 " (pending: %@)" = " (待执行: %@)";
 
+/* The format for an active override preset. (1: preset symbol)(2: preset name) */
+"%@ %@" = "%1$@ %2$@";
+
 /* Formats absorbed carb value */
 "%@ absorbed" = "%@ 已吸收";
 
 /* The subtitle format describing total insulin. (1: localized insulin total) */
 "%@ U Total" = "%@ 单位 总量";
 
+/* Appends a full-stop to a statement */
+"%@." = "%@.";
+
+/* Format string for glucose target range. (1: Min target)(2: Max target)(3: glucose unit) */
+"%1$@ – %2$@ %3$@" = "%1$@ – %2$@ %3$@";
+
 /* Format string for carb ratio average. (1: value)(2: carb unit) */
 "%1$@ %2$@/U" = "%1$@ %2$@/单位";
 
+/* Formats (1: carb start time) and (2: carb absorption duration) */
+"%1$@ + %2$@" = "%1$@ + %2$@";
+
 /* Low reservoir alert format string. (1: Number of units remaining) */
 "%1$@ U left" = "%1$@ 单位 剩余";
 
@@ -22,6 +31,12 @@
 /* The format for recommended temp basal rate and time. (1: localized rate number)(2: localized time) */
 "%1$@ U/hour @ %2$@" = "%1$@ 单位/小时 @ %2$@";
 
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v%2$@";
+
+/* Formats (1: carb value) and (2: food type) */
+"%1$@: %2$@" = "%1$@: %2$@";
+
 /* Description of the prediction input effect for glucose momentum */
 "15 min glucose regression coefficient (b₁), continued with decay over 30 min" = "15分钟葡萄糖回归系数（b1），持续30分钟衰减";
 
@@ -63,12 +78,18 @@
    Title text for button to set up a new pump */
 "Add Pump" = "添加泵";
 
+/* Title text for button to set up a service */
+"Add Service" = "Add Service";
+
 /* The title of the section containing algorithm settings */
 "Algorithm Settings" = "算法设置";
 
 /* Confirmation message for deleting a CGM */
 "Are you sure you want to delete this CGM?" = "确定要删除该CGM数据源？";
 
+/* Confirmation message for deleting a service */
+"Are you sure you want to delete this service?" = "Are you sure you want to delete this service?";
+
 /* Format fragment for a specific time */
 "at %@" = "%@分钟内";
 
@@ -129,12 +150,18 @@
 /* The title text for the looping enabled switch cell */
 "Closed Loop" = "开启闭环";
 
+/* The title of the action used to dismiss an error alert */
+"com.loudnate.LoopKit.errorAlertActionTitle" = "OK";
+
 /* The title of the configuration section in settings */
 "Configuration" = "配置";
 
 /* The error message displayed for configuration errors. (1: configuration error details) */
 "Configuration Error: %1$@" = "配置错误：%1$@";
 
+/* Default alert dismissal */
+"Continue" = "继续";
+
 /* The title of the continuous glucose monitor section in settings */
 "Continuous Glucose Monitor" = "连续葡萄糖监测";
 
@@ -154,6 +181,9 @@
 /* Button title to delete CGM */
 "Delete CGM" = "删除CGM数据源";
 
+/* Button title to delete a service */
+"Delete Service" = "Delete Service";
+
 /* Title text for delivery limits */
 "Delivery Limits" = "输注限制";
 
@@ -170,7 +200,10 @@
 "Error Canceling Bolus" = "无法取消大剂量";
 
 /* The alert title for a resume error */
-"Error Resuming" = "无法恢复输注";
+"Error Resuming" = "恢复输注错误";
+
+/* Segmented button title for insulin delivery log event history */
+"Event History" = "历史事件";
 
 /* The subtitle format describing eventual glucose. (1: localized glucose value description) */
 "Eventually %@" = "最终 %@";
@@ -178,6 +211,9 @@
 /* The title of the alert describing a maximum bolus validation error */
 "Exceeds Maximum Bolus" = "超过大剂量最大输注限制";
 
+/* Title of insulin model preset */
+"Fiasp" = "Fiasp";
+
 /* The format string used to describe a finite workout targets duration */
 "For %1$@" = "对于 %1$@";
 
@@ -246,6 +282,9 @@
 /* The error message displayed for device connection errors. */
 "No connected devices, or failure during device connection" = "没有连接的设备，或设备连接期间发生故障";
 
+/* Notification Setting Status is On */
+"On" = "开";
+
 /* The title text for the override presets */
 "Override Presets" = "覆盖预设置";
 
@@ -298,7 +337,7 @@
 "Recommended Bolus: %@ Units" = "推荐大剂量：%@单位";
 
 /* Details for missing data error when reservoir data is missing */
-"Reservoir" = "储药器";
+"Reservoir" = "胰岛素容量";
 
 /* Title of the prediction input effect for retrospective correction */
 "Retrospective Correction" = "回顾性修正";
@@ -336,12 +375,22 @@
 /* Body of the alert describing a maximum bolus validation error. (1: The localized max bolus value) */
 "The maximum bolus amount is %@ Units" = "大剂量输注最大限制为%@单位";
 
+/* The short unit display string for international units of insulin */
+"U" = "U";
+
+/* Event title displayed when StoredPumpEvent.title is not set
+   The default description to use when an entry has no dose description */
+"Unknown" = "未知";
+
 /* The format for the description of a temporary override end date */
 "until %@" = "直到 %@";
 
 /* The title of the alert controller used to select a duration for workout targets */
 "Use Workout Glucose Targets" = "使用运动状态的血糖目标";
 
+/* Title of insulin model setting */
+"Walsh" = "Walsh";
+
 /* Explanation of suspend threshold */
 "When current or forecasted glucose is below the suspend threshold, Loop will not recommend a bolus, and will always recommend a temporary basal rate of 0 units per hour." = "当前或预测的葡萄糖低于暂停阈值时，Loop不推荐推注，并且总是建议每小时0单位的临时基础速率。";
 
diff --git a/Loop/zh-Hans.lproj/Main.strings b/Loop/zh-Hans.lproj/Main.strings
index ec1538ec5..ed66f0b26 100644
--- a/Loop/zh-Hans.lproj/Main.strings
+++ b/Loop/zh-Hans.lproj/Main.strings
@@ -55,6 +55,9 @@
 /* Class = "UILabel"; text = "eventually 92 mg/dL"; ObjectID = "Rse-x8-amW"; */
 "Rse-x8-amW.text" = "最终血糖为92 毫克/分升";
 
+/* Class = "UILabel"; text = "g Active Carbs"; ObjectID = "SQx-au-ZcM"; */
+"SQx-au-ZcM.text" = "活性碳水化合物 克";
+
 /* Class = "UILabel"; text = "Glucose"; ObjectID = "tuw-av-A3x"; */
 "tuw-av-A3x.text" = "葡萄糖";
 
@@ -64,6 +67,12 @@
 /* Class = "UINavigationItem"; title = "Carbohydrates"; ObjectID = "Vpi-5b-bY5"; */
 "Vpi-5b-bY5.title" = "碳水化合物";
 
+/* Class = "UILabel"; text = "0"; ObjectID = "yn7-2M-jZz"; */
+"yn7-2M-jZz.text" = "0";
+
 /* Class = "UILabel"; text = "Title"; ObjectID = "zbc-87-wxZ"; */
 "zbc-87-wxZ.text" = "标题";
 
+/* Class = "UILabel"; text = "0"; ObjectID = "zvZ-uf-zMX"; */
+"zvZ-uf-zMX.text" = "0";
+
diff --git a/LoopCore/ar.lproj/Localizable.strings b/LoopCore/ar.lproj/Localizable.strings
new file mode 100644
index 000000000..f4d2b4576
--- /dev/null
+++ b/LoopCore/ar.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/LoopCore/he.lproj/Localizable.strings b/LoopCore/he.lproj/Localizable.strings
new file mode 100644
index 000000000..f4d2b4576
--- /dev/null
+++ b/LoopCore/he.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/LoopCore/it.lproj/Localizable.strings b/LoopCore/it.lproj/Localizable.strings
index b9c76380d..61672471f 100644
--- a/LoopCore/it.lproj/Localizable.strings
+++ b/LoopCore/it.lproj/Localizable.strings
@@ -1,5 +1,5 @@
 /* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
-"%1$@ v%2$@" = "%1$@ v%2$@";
+"%1$@ v%2$@" = "%1$@ contro %2$@";
 
 /* Title string for automatic bolus dosing strategy */
 "Automatic Bolus" = "Bolo Automatico";
diff --git a/LoopCore/ja.lproj/Localizable.strings b/LoopCore/ja.lproj/Localizable.strings
new file mode 100644
index 000000000..f4d2b4576
--- /dev/null
+++ b/LoopCore/ja.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/LoopCore/pt-BR.lproj/Localizable.strings b/LoopCore/pt-BR.lproj/Localizable.strings
new file mode 100644
index 000000000..f4d2b4576
--- /dev/null
+++ b/LoopCore/pt-BR.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/LoopCore/sk.lproj/Localizable.strings b/LoopCore/sk.lproj/Localizable.strings
new file mode 100644
index 000000000..0039fc241
--- /dev/null
+++ b/LoopCore/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/LoopCore/vi.lproj/Localizable.strings b/LoopCore/vi.lproj/Localizable.strings
new file mode 100644
index 000000000..f4d2b4576
--- /dev/null
+++ b/LoopCore/vi.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/LoopUI/Views/LoopCompletionHUDView.swift b/LoopUI/Views/LoopCompletionHUDView.swift
index 7d37df7e0..b0e6b1387 100644
--- a/LoopUI/Views/LoopCompletionHUDView.swift
+++ b/LoopUI/Views/LoopCompletionHUDView.swift
@@ -208,7 +208,7 @@ extension LoopCompletionHUDView {
         switch freshness {
         case .fresh:
             if loopStateView.open {
-                let reason = closedLoopDisallowedLocalizedDescription ?? NSLocalizedString("Tap Settings to toggle Closed Loop ON if you wish for the app to automate your insulin.", comment: "Instructions for user to close loop if it is allowed.")
+                let reason = closedLoopDisallowedLocalizedDescription ?? LocalizedString("Tap Settings to toggle Closed Loop ON if you wish for the app to automate your insulin.", comment: "Instructions for user to close loop if it is allowed.")
                 return (title: LocalizedString("Closed Loop OFF", comment: "Title of green open loop OFF message"),
                         message: String(format: LocalizedString("\n%1$@ is operating with Closed Loop in the OFF position. Your pump and CGM will continue operating, but the app will not adjust dosing automatically.\n\n%2$@", comment: "Green closed loop OFF message (1: app name)(2: reason for open loop)"), Bundle.main.bundleDisplayName, reason))
             } else {
diff --git a/LoopUI/ar.lproj/Localizable.strings b/LoopUI/ar.lproj/Localizable.strings
index d6ae9e68e..7da2dd267 100644
--- a/LoopUI/ar.lproj/Localizable.strings
+++ b/LoopUI/ar.lproj/Localizable.strings
@@ -1,3 +1,6 @@
+/* No glucose value representation (3 dashes for mg/dL) */
+"– – –" = "---";
+
 /* Format string describing the time interval since the last completion date. (1: The localized date components */
 "%@ ago" = "%@ ago";
 
@@ -10,21 +13,45 @@
 /* Accessibility format string describing the basal rate. (1: localized basal rate value)(2: last updated time) */
 "%1$@ units per hour at %2$@" = "%1$@ units per hour at %2$@";
 
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v%2$@";
+
 /* Format string describing glucose units per minute (1: glucose unit string) */
 "%1$@/min" = "%1$@/min";
 
 /* Accessibility hint describing completion HUD for a closed loop */
 "Closed loop" = "Closed loop";
 
+/* The short unit display string for decibles */
+"dB" = "dB";
+
+/* The short unit display string for grams */
+"g" = "g";
+
+/* Title of red loop message */
+"Loop Failure" = "فشل في الحلقة المغلقة";
+
 /* Accessbility format label describing the time interval since the last completion date. (1: The localized date components) */
 "Loop ran %@ ago" = "Loop ran %@ ago";
 
+/* 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";
+
 /* Accessibility label component for glucose HUD describing an invalid state */
 "Needs attention" = "Needs attention";
 
 /* Accessbility hint describing completion HUD for an open loop */
 "Open loop" = "Open loop";
 
+/* 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" = "وحدة";
+
 /* Accessibility value for an unknown value */
 "Unknown" = "Unknown";
 
diff --git a/LoopUI/cs.lproj/Localizable.strings b/LoopUI/cs.lproj/Localizable.strings
new file mode 100644
index 000000000..cf9c1665a
--- /dev/null
+++ b/LoopUI/cs.lproj/Localizable.strings
@@ -0,0 +1,3 @@
+/* No glucose value representation (3 dashes for mg/dL) */
+"– – –" = "– – –";
+
diff --git a/LoopUI/de.lproj/Localizable.strings b/LoopUI/de.lproj/Localizable.strings
index d545a2a40..4ef4ec616 100644
--- a/LoopUI/de.lproj/Localizable.strings
+++ b/LoopUI/de.lproj/Localizable.strings
@@ -14,7 +14,7 @@
 "– – –" = "– – –";
 
 /* Format string describing the time interval since the last completion date. (1: The localized date components */
-"%@ ago" = "vor %@";
+"%@ ago" = "%@ vor";
 
 /* The format string describing the basal rate. */
 "%@ U" = "%@ IE";
@@ -62,7 +62,7 @@
 "Last completed loop %1$@." = "Loop wurde nicht erfolgreich abgeschlossen seit %@";
 
 /* Title of red loop message */
-"Loop Failure" = "Loop Fehler";
+"Loop Failure" = "Loop fehlgeschlagen";
 
 /* Accessbility format label describing the time interval since the last completion date. (1: The localized date components) */
 "Loop ran %@ ago" = "Loop lief seit %@";
@@ -74,7 +74,7 @@
 "LOW" = "NIEDRIG";
 
 /* The short unit display string for milligrams of glucose per decilter */
-"mg/dL" = "mg/dl";
+"mg/dL" = "mg/dL";
 
 /* The short unit display string for millimoles of glucose per liter */
 "mmol/L" = "mmol/L";
diff --git a/LoopUI/es.lproj/InfoPlist.strings b/LoopUI/es.lproj/InfoPlist.strings
index 7ea416197..5c1fb1340 100644
--- a/LoopUI/es.lproj/InfoPlist.strings
+++ b/LoopUI/es.lproj/InfoPlist.strings
@@ -1,3 +1,6 @@
 /* (No Comment) */
 "CFBundleDisplayName" = "LoopUI";
 
+/* (No Comment) */
+"CFBundleName" = "$(PRODUCT_NAME)";
+
diff --git a/LoopUI/es.lproj/Localizable.strings b/LoopUI/es.lproj/Localizable.strings
index 154ba69f1..34d3a8c84 100644
--- a/LoopUI/es.lproj/Localizable.strings
+++ b/LoopUI/es.lproj/Localizable.strings
@@ -14,7 +14,7 @@
 "– – –" = "– – –";
 
 /* Format string describing the time interval since the last completion date. (1: The localized date components */
-"%@ ago" = "hace %@";
+"%@ ago" = "Hace %@";
 
 /* The format string describing the basal rate. */
 "%@ U" = "%@ U";
@@ -56,7 +56,7 @@
 "g" = "g";
 
 /* String displayed instead of a glucose value above the CGM range */
-"HIGH" = "ALTA";
+"HIGH" = "ALTO";
 
 /* Last loop time completed message (1: last loop time string) */
 "Last completed loop %1$@." = "Último loop completado %1$@.";
@@ -71,13 +71,13 @@
 "Loop Warning" = "Advertencia de Loop";
 
 /* String displayed instead of a glucose value below the CGM range */
-"LOW" = "BAJA";
+"LOW" = "BAJO";
 
 /* The short unit display string for milligrams of glucose per decilter */
-"mg/dL" = "mg/dl";
+"mg/dL" = "mg/dL";
 
 /* The short unit display string for millimoles of glucose per liter */
-"mmol/L" = "mmol/l";
+"mmol/L" = "mmol/L";
 
 /* Accessibility label component for glucose HUD describing an invalid state */
 "Needs attention" = "Necesita atención";
diff --git a/LoopUI/he.lproj/Localizable.strings b/LoopUI/he.lproj/Localizable.strings
index d6ae9e68e..6177f0dd6 100644
--- a/LoopUI/he.lproj/Localizable.strings
+++ b/LoopUI/he.lproj/Localizable.strings
@@ -1,3 +1,6 @@
+/* No glucose value representation (3 dashes for mg/dL) */
+"– – –" = "---";
+
 /* Format string describing the time interval since the last completion date. (1: The localized date components */
 "%@ ago" = "%@ ago";
 
@@ -10,21 +13,51 @@
 /* Accessibility format string describing the basal rate. (1: localized basal rate value)(2: last updated time) */
 "%1$@ units per hour at %2$@" = "%1$@ units per hour at %2$@";
 
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v%2$@";
+
 /* Format string describing glucose units per minute (1: glucose unit string) */
 "%1$@/min" = "%1$@/min";
 
 /* Accessibility hint describing completion HUD for a closed loop */
 "Closed loop" = "Closed loop";
 
+/* The short unit display string for decibles */
+"dB" = "dB";
+
+/* The short unit display string for grams */
+"g" = "g";
+
+/* String displayed instead of a glucose value above the CGM range */
+"HIGH" = "גבוה";
+
+/* Title of red loop message */
+"Loop Failure" = "Loop Failure";
+
 /* Accessbility format label describing the time interval since the last completion date. (1: The localized date components) */
 "Loop ran %@ ago" = "Loop ran %@ ago";
 
+/* String displayed instead of a glucose value below the CGM range */
+"LOW" = "נמוך";
+
+/* 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";
+
 /* Accessibility label component for glucose HUD describing an invalid state */
 "Needs attention" = "Needs attention";
 
 /* Accessbility hint describing completion HUD for an open loop */
 "Open loop" = "Open loop";
 
+/* 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";
+
 /* Accessibility value for an unknown value */
 "Unknown" = "Unknown";
 
diff --git a/LoopUI/hi.lproj/Localizable.strings b/LoopUI/hi.lproj/Localizable.strings
new file mode 100644
index 000000000..b30804332
--- /dev/null
+++ b/LoopUI/hi.lproj/Localizable.strings
@@ -0,0 +1,9 @@
+/* No glucose value representation (3 dashes for mg/dL) */
+"– – –" = "– – –";
+
+/* String displayed instead of a glucose value above the CGM range */
+"HIGH" = "HIGH";
+
+/* String displayed instead of a glucose value below the CGM range */
+"LOW" = "LOW";
+
diff --git a/LoopUI/it.lproj/Localizable.strings b/LoopUI/it.lproj/Localizable.strings
index 75ace592d..37c6c625c 100644
--- a/LoopUI/it.lproj/Localizable.strings
+++ b/LoopUI/it.lproj/Localizable.strings
@@ -11,7 +11,7 @@
 "\n%1$@ is operating with Closed Loop in the OFF position. Your pump and CGM will continue operating, but the app will not adjust dosing automatically.\n\n%2$@" = "\n%1$@ sta funzionando con il ciclo chiuso in posizione OFF. Il microinfusore e il CGM continueranno a funzionare, ma l'applicazione non regolerà automaticamente il dosaggio.\n\n%2$@";
 
 /* No glucose value representation (3 dashes for mg/dL) */
-"– – –" = "– – –";
+"– – –" = "---";
 
 /* Format string describing the time interval since the last completion date. (1: The localized date components */
 "%@ ago" = "%@ fa";
@@ -32,7 +32,7 @@
 "%1$@ units per hour at %2$@" = "%1$@ unità per ora a %2$@";
 
 /* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
-"%1$@ v%2$@" = "%1$@ v%2$@";
+"%1$@ v%2$@" = "%1$@ contro %2$@";
 
 /* Format string describing glucose units per minute (1: glucose unit string) */
 "%1$@/min" = "%1$@/min";
@@ -62,7 +62,7 @@
 "Last completed loop %1$@." = "Ultimo ciclo completato %1$@ .";
 
 /* Title of red loop message */
-"Loop Failure" = "Loop Fallito";
+"Loop Failure" = "Malfunzionamento di Loop";
 
 /* Accessbility format label describing the time interval since the last completion date. (1: The localized date components) */
 "Loop ran %@ ago" = "Loop funziona %@ fa";
diff --git a/LoopUI/ja.lproj/InfoPlist.strings b/LoopUI/ja.lproj/InfoPlist.strings
new file mode 100644
index 000000000..f8e9a2b43
--- /dev/null
+++ b/LoopUI/ja.lproj/InfoPlist.strings
@@ -0,0 +1,3 @@
+/* (No Comment) */
+"CFBundleName" = "$(PRODUCT_NAME)";
+
diff --git a/LoopUI/ja.lproj/Localizable.strings b/LoopUI/ja.lproj/Localizable.strings
index dc0fe55bc..6e658af6b 100644
--- a/LoopUI/ja.lproj/Localizable.strings
+++ b/LoopUI/ja.lproj/Localizable.strings
@@ -1,3 +1,6 @@
+/* No glucose value representation (3 dashes for mg/dL) */
+"– – –" = "---";
+
 /* Format string describing the time interval since the last completion date. (1: The localized date components */
 "%@ ago" = "%@ 前";
 
@@ -10,21 +13,45 @@
 /* Accessibility format string describing the basal rate. (1: localized basal rate value)(2: last updated time) */
 "%1$@ units per hour at %2$@" = "%1$@ U/時 @ %2$@";
 
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v%2$@";
+
 /* Format string describing glucose units per minute (1: glucose unit string) */
 "%1$@/min" = "%1$@/分";
 
 /* Accessibility hint describing completion HUD for a closed loop */
 "Closed loop" = "クローズドループ";
 
+/* The short unit display string for decibles */
+"dB" = "dB";
+
+/* The short unit display string for grams */
+"g" = "g";
+
+/* Title of red loop message */
+"Loop Failure" = "ループの不良";
+
 /* Accessbility format label describing the time interval since the last completion date. (1: The localized date components) */
 "Loop ran %@ ago" = "ループは %@ 前に作動しました";
 
+/* 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";
+
 /* Accessibility label component for glucose HUD describing an invalid state */
 "Needs attention" = "注意が必要です";
 
 /* Accessbility hint describing completion HUD for an open loop */
 "Open loop" = "オープンループ";
 
+/* 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";
+
 /* Accessibility value for an unknown value */
 "Unknown" = "不明";
 
diff --git a/LoopUI/nb.lproj/Localizable.strings b/LoopUI/nb.lproj/Localizable.strings
index 46078ff5b..cf8aa0316 100644
--- a/LoopUI/nb.lproj/Localizable.strings
+++ b/LoopUI/nb.lproj/Localizable.strings
@@ -62,7 +62,7 @@
 "Last completed loop %1$@." = "Sist fullført loop %1$@.";
 
 /* Title of red loop message */
-"Loop Failure" = "Loop feilet";
+"Loop Failure" = "Loop-feil";
 
 /* Accessbility format label describing the time interval since the last completion date. (1: The localized date components) */
 "Loop ran %@ ago" = "Loop kjørte %@ siden";
diff --git a/LoopUI/pl.lproj/InfoPlist.strings b/LoopUI/pl.lproj/InfoPlist.strings
index 7ea416197..5c1fb1340 100644
--- a/LoopUI/pl.lproj/InfoPlist.strings
+++ b/LoopUI/pl.lproj/InfoPlist.strings
@@ -1,3 +1,6 @@
 /* (No Comment) */
 "CFBundleDisplayName" = "LoopUI";
 
+/* (No Comment) */
+"CFBundleName" = "$(PRODUCT_NAME)";
+
diff --git a/LoopUI/pl.lproj/Localizable.strings b/LoopUI/pl.lproj/Localizable.strings
index 153d8a2b9..e1364eb1b 100644
--- a/LoopUI/pl.lproj/Localizable.strings
+++ b/LoopUI/pl.lproj/Localizable.strings
@@ -2,10 +2,10 @@
 "\n%1$@\n\n%2$@ is operating with Closed Loop in the ON position." = "\n%1$@\n\n %2$@ działa z zamkniętą pętlą w pozycji WŁĄCZONA.";
 
 /* Red loop message (1: last loop  string) (2: app name) */
-"\n%1$@\n\nTap your CGM and insulin pump status icons for more information. %2$@ will continue trying to complete a loop, but check for potential communication issues with your pump and CGM." = "\n%1$@\n\nDotknij ikony stanu CGM i pompy insulinowej, aby uzyskać więcej informacji. %2$@ będzie nadal próbował ukończyć pętlę, ale uważaj na potencjalne problemy z komunikacją z pompą i CGM.";
+"\n%1$@\n\nTap your CGM and insulin pump status icons for more information. %2$@ will continue trying to complete a loop, but check for potential communication issues with your pump and CGM." = "\n%1$@\n\nStuknij ikonę stanu CGM i pompy insulinowej, aby uzyskać więcej informacji. %2$@ będzie nadal próbował ukończyć pętlę, ale uważaj na potencjalne problemy z komunikacją z pompą i CGM.";
 
 /* Yellow loop message (1: last loop string) (2: app name) */
-"\n%1$@\n\nTap your CGM and insulin pump status icons for more information. %2$@ will continue trying to complete a loop, but watch for potential communication issues with your pump and CGM." = "\n%1$@\n\nDotknij ikony stanu CGM i pompy insulinowej, aby uzyskać więcej informacji. %2$@ będzie nadal próbował ukończyć pętlę, ale uważaj na potencjalne problemy z komunikacją z pompą i CGM.";
+"\n%1$@\n\nTap your CGM and insulin pump status icons for more information. %2$@ will continue trying to complete a loop, but watch for potential communication issues with your pump and CGM." = "\n%1$@\n\nStuknij ikony stanu CGM i pompy insulinowej, aby uzyskać więcej informacji. %2$@ będzie nadal próbował ukończyć pętlę, ale uważaj na potencjalne problemy z komunikacją z pompą i CGM.";
 
 /* Green closed loop OFF message (1: app name)(2: reason for open loop) */
 "\n%1$@ is operating with Closed Loop in the OFF position. Your pump and CGM will continue operating, but the app will not adjust dosing automatically.\n\n%2$@" = "\n%1$@ działa z zamkniętą pętlą w pozycji WYŁĄCZONA. Twoja pompa i CGM będą nadal działać, ale aplikacja nie będzie automatycznie dostosowywać dawkowania. \n\n %2$@";
@@ -77,7 +77,7 @@
 "mg/dL" = "mg/dl";
 
 /* The short unit display string for millimoles of glucose per liter */
-"mmol/L" = "mmol/l";
+"mmol/L" = "mmol/L";
 
 /* Accessibility label component for glucose HUD describing an invalid state */
 "Needs attention" = "Wymaga uwagi";
@@ -89,7 +89,7 @@
 "QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
 
 /* Instructions for user to close loop if it is allowed. */
-"Tap Settings to toggle Closed Loop ON if you wish for the app to automate your insulin." = "Dotknij Ustawienia, aby włączyć Pętlę zamkniętą, jeśli chcesz, aby aplikacja zautomatyzowała podawanie insuliny.";
+"Tap Settings to toggle Closed Loop ON if you wish for the app to automate your insulin." = "Stuknij Ustawienia, aby włączyć Pętlę zamkniętą, jeśli chcesz, aby aplikacja zautomatyzowała podawanie insuliny.";
 
 /* The short unit display string for international units of insulin */
 "U" = "J";
diff --git a/LoopUI/pt-BR.lproj/InfoPlist.strings b/LoopUI/pt-BR.lproj/InfoPlist.strings
new file mode 100644
index 000000000..f8e9a2b43
--- /dev/null
+++ b/LoopUI/pt-BR.lproj/InfoPlist.strings
@@ -0,0 +1,3 @@
+/* (No Comment) */
+"CFBundleName" = "$(PRODUCT_NAME)";
+
diff --git a/LoopUI/pt-BR.lproj/Localizable.strings b/LoopUI/pt-BR.lproj/Localizable.strings
index 78b767bae..917f3065f 100644
--- a/LoopUI/pt-BR.lproj/Localizable.strings
+++ b/LoopUI/pt-BR.lproj/Localizable.strings
@@ -1,3 +1,6 @@
+/* No glucose value representation (3 dashes for mg/dL) */
+"– – –" = "---";
+
 /* Format string describing the time interval since the last completion date. (1: The localized date components */
 "%@ ago" = "%@ atrás";
 
@@ -10,21 +13,45 @@
 /* Accessibility format string describing the basal rate. (1: localized basal rate value)(2: last updated time) */
 "%1$@ units per hour at %2$@" = "%1$@ unidades por hora em %2$@";
 
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v%2$@";
+
 /* Format string describing glucose units per minute (1: glucose unit string) */
 "%1$@/min" = "%1$@/min";
 
 /* Accessibility hint describing completion HUD for a closed loop */
 "Closed loop" = "Ciclo fechado";
 
+/* The short unit display string for decibles */
+"dB" = "dB";
+
+/* The short unit display string for grams */
+"g" = "g";
+
+/* Title of red loop message */
+"Loop Failure" = "Falha no Loop";
+
 /* Accessbility format label describing the time interval since the last completion date. (1: The localized date components) */
 "Loop ran %@ ago" = "Ciclo executado %@ atrás";
 
+/* 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";
+
 /* Accessibility label component for glucose HUD describing an invalid state */
 "Needs attention" = "Precisa de atenção";
 
 /* Accessbility hint describing completion HUD for an open loop */
 "Open loop" = "Ciclo aberto";
 
+/* 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";
+
 /* Accessibility value for an unknown value */
 "Unknown" = "Desconhecido";
 
diff --git a/LoopUI/ro.lproj/Localizable.strings b/LoopUI/ro.lproj/Localizable.strings
index 3ac7d754a..640e17f36 100644
--- a/LoopUI/ro.lproj/Localizable.strings
+++ b/LoopUI/ro.lproj/Localizable.strings
@@ -14,7 +14,7 @@
 "– – –" = "– – –";
 
 /* Format string describing the time interval since the last completion date. (1: The localized date components */
-"%@ ago" = "acum %@";
+"%@ ago" = "%@ în urmă";
 
 /* The format string describing the basal rate. */
 "%@ U" = "%@ U";
@@ -86,7 +86,7 @@
 "Open loop" = "Loop manual";
 
 /* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
-"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
+"QUANTITY_VALUE_AND_UNIT" = "%1$@%2$@";
 
 /* Instructions for user to close loop if it is allowed. */
 "Tap Settings to toggle Closed Loop ON if you wish for the app to automate your insulin." = "Atingeți Setări pentru a activa bucla închisă dacă doriți ca aplicația să vă automatizeze administrarea de insulină.";
@@ -95,7 +95,7 @@
 "U" = "U";
 
 /* Accessibility value for an unknown value */
-"Unknown" = "Necunoscută";
+"Unknown" = "Necunoscut";
 
 /* Acessibility label describing completion HUD waiting for first run */
 "Waiting for first run" = "Se așteaptă prima rulare";
diff --git a/LoopUI/ru.lproj/InfoPlist.strings b/LoopUI/ru.lproj/InfoPlist.strings
index 7ea416197..5c1fb1340 100644
--- a/LoopUI/ru.lproj/InfoPlist.strings
+++ b/LoopUI/ru.lproj/InfoPlist.strings
@@ -1,3 +1,6 @@
 /* (No Comment) */
 "CFBundleDisplayName" = "LoopUI";
 
+/* (No Comment) */
+"CFBundleName" = "$(PRODUCT_NAME)";
+
diff --git a/LoopUI/ru.lproj/Localizable.strings b/LoopUI/ru.lproj/Localizable.strings
index 16b80ea68..b4492143d 100644
--- a/LoopUI/ru.lproj/Localizable.strings
+++ b/LoopUI/ru.lproj/Localizable.strings
@@ -44,7 +44,7 @@
 "Closed loop" = "Алгоритм замкнутого цикла";
 
 /* Title of green open loop OFF message */
-"Closed Loop OFF" = "Замкнутый контур ВЫКЛ";
+"Closed Loop OFF" = "Замкнутый цикл ВЫКЛ";
 
 /* Title of green closed loop ON message */
 "Closed Loop ON" = "Замкнутый контур ВКЛ";
@@ -77,7 +77,7 @@
 "mg/dL" = "мг/дл";
 
 /* The short unit display string for millimoles of glucose per liter */
-"mmol/L" = "ммоль/л";
+"mmol/L" = "mmol/L";
 
 /* Accessibility label component for glucose HUD describing an invalid state */
 "Needs attention" = "Требует внимания";
@@ -92,7 +92,7 @@
 "Tap Settings to toggle Closed Loop ON if you wish for the app to automate your insulin." = "Нажмите \"Настройки\", чтобы включить \"Замкнутый цикл\", если вы хотите, чтобы приложение автоматизировало подачу инсулина.";
 
 /* The short unit display string for international units of insulin */
-"U" = "Ед";
+"U" = "ед";
 
 /* Accessibility value for an unknown value */
 "Unknown" = "Неизвестно";
diff --git a/LoopUI/sk.lproj/Localizable.strings b/LoopUI/sk.lproj/Localizable.strings
new file mode 100644
index 000000000..38e5a37ce
--- /dev/null
+++ b/LoopUI/sk.lproj/Localizable.strings
@@ -0,0 +1,39 @@
+/* No glucose value representation (3 dashes for mg/dL) */
+"– – –" = "– – –";
+
+/* Format string describing the time interval since the last completion date. (1: The localized date components */
+"%@ ago" = "pred %@";
+
+/* The format string describing the basal rate. */
+"%@ U" = "%@ j";
+
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v %2$@";
+
+/* The short unit display string for decibles */
+"dB" = "dB";
+
+/* The short unit display string for grams */
+"g" = "g";
+
+/* String displayed instead of a glucose value above the CGM range */
+"HIGH" = "VYSOKÁ";
+
+/* String displayed instead of a glucose value below the CGM range */
+"LOW" = "NÍZKA";
+
+/* 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";
+
+/* Accessibility value for an unknown value */
+"Unknown" = "Neznáme";
+
diff --git a/LoopUI/sv.lproj/Localizable.strings b/LoopUI/sv.lproj/Localizable.strings
index a2db7e0b5..542e0e624 100644
--- a/LoopUI/sv.lproj/Localizable.strings
+++ b/LoopUI/sv.lproj/Localizable.strings
@@ -50,7 +50,7 @@
 "mg/dL" = "mg/dl";
 
 /* The short unit display string for millimoles of glucose per liter */
-"mmol/L" = "mmol/l";
+"mmol/L" = "mmol/L";
 
 /* Accessibility label component for glucose HUD describing an invalid state */
 "Needs attention" = "Kräver åtgärd";
diff --git a/LoopUI/tr.lproj/Localizable.strings b/LoopUI/tr.lproj/Localizable.strings
index 38aefc442..87166dd6b 100644
--- a/LoopUI/tr.lproj/Localizable.strings
+++ b/LoopUI/tr.lproj/Localizable.strings
@@ -95,7 +95,7 @@
 "U" = "Ü";
 
 /* Accessibility value for an unknown value */
-"Unknown" = "Bilinmiyor";
+"Unknown" = "Bilinmeyen";
 
 /* Acessibility label describing completion HUD waiting for first run */
 "Waiting for first run" = "İlk çalıştırma için bekleniyor";
diff --git a/LoopUI/vi.lproj/InfoPlist.strings b/LoopUI/vi.lproj/InfoPlist.strings
new file mode 100644
index 000000000..f8e9a2b43
--- /dev/null
+++ b/LoopUI/vi.lproj/InfoPlist.strings
@@ -0,0 +1,3 @@
+/* (No Comment) */
+"CFBundleName" = "$(PRODUCT_NAME)";
+
diff --git a/LoopUI/vi.lproj/Localizable.strings b/LoopUI/vi.lproj/Localizable.strings
index 8461c5fb2..18ad4de1d 100644
--- a/LoopUI/vi.lproj/Localizable.strings
+++ b/LoopUI/vi.lproj/Localizable.strings
@@ -1,3 +1,6 @@
+/* No glucose value representation (3 dashes for mg/dL) */
+"– – –" = "---";
+
 /* Format string describing the time interval since the last completion date. (1: The localized date components */
 "%@ ago" = "%@ trước đó";
 
@@ -10,21 +13,45 @@
 /* Accessibility format string describing the basal rate. (1: localized basal rate value)(2: last updated time) */
 "%1$@ units per hour at %2$@" = "%1$@ units một giờ lúc %2$@";
 
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v%2$@";
+
 /* Format string describing glucose units per minute (1: glucose unit string) */
 "%1$@/min" = "%1$@/phút";
 
 /* Accessibility hint describing completion HUD for a closed loop */
 "Closed loop" = "Closed loop";
 
+/* The short unit display string for decibles */
+"dB" = "dB";
+
+/* The short unit display string for grams */
+"g" = "g";
+
+/* Title of red loop message */
+"Loop Failure" = "Loop lỗi";
+
 /* Accessbility format label describing the time interval since the last completion date. (1: The localized date components) */
 "Loop ran %@ ago" = "Loop hoạt động %@ trước đó";
 
+/* 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";
+
 /* Accessibility label component for glucose HUD describing an invalid state */
 "Needs attention" = "Cần chú ý";
 
 /* Accessbility hint describing completion HUD for an open loop */
 "Open loop" = "Open loop";
 
+/* 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";
+
 /* Accessibility value for an unknown value */
 "Unknown" = "Không nhận ra";
 
diff --git a/LoopUI/zh-Hans-CN.lproj/Localizable.strings b/LoopUI/zh-Hans-CN.lproj/Localizable.strings
deleted file mode 100644
index 222ee9677..000000000
--- a/LoopUI/zh-Hans-CN.lproj/Localizable.strings
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Format string describing the time interval since the last completion date. (1: The localized date components */
-"%@ ago" = "之前%@";
-
-/* The format string describing the basal rate. */
-"%@ U" = "%@ 单位";
-
-/* Accessbility format value describing glucose: (1: glucose number)(2: glucose time) */
-"%1$@ at %2$@" = "%2$@ 分钟时为 %1$@";
-
-/* Accessibility format string describing the basal rate. (1: localized basal rate value)(2: last updated time) */
-"%1$@ units per hour at %2$@" = "%1$@ 每小时的单位 %2$@";
-
-/* Format string describing glucose units per minute (1: glucose unit string) */
-"%1$@/min" = "%1$@/分钟";
-
-/* Accessibility hint describing completion HUD for a closed loop */
-"Closed loop" = "启动闭环";
-
-/* Accessbility format label describing the time interval since the last completion date. (1: The localized date components) */
-"Loop ran %@ ago" = "闭环已停止运行%@";
-
-/* Accessibility label component for glucose HUD describing an invalid state */
-"Needs attention" = "请注意";
-
-/* Accessbility hint describing completion HUD for an open loop */
-"Open loop" = "关闭闭环";
-
-/* Accessibility value for an unknown value */
-"Unknown" = "未知";
-
-/* Acessibility label describing completion HUD waiting for first run */
-"Waiting for first run" = "等待第一次运行";
-
diff --git a/StatusWidget/ar.lproj/Localizable.strings b/StatusWidget/ar.lproj/Localizable.strings
new file mode 100644
index 000000000..1b5e22003
--- /dev/null
+++ b/StatusWidget/ar.lproj/Localizable.strings
@@ -0,0 +1,24 @@
+/* No comment provided by engineer. */
+"%@ U" = "%@ U";
+
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v%2$@";
+
+/* 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" = "وحدة";
+
diff --git a/StatusWidget/es.lproj/Localizable.strings b/StatusWidget/es.lproj/Localizable.strings
index a7a77e270..10a11e8f2 100644
--- a/StatusWidget/es.lproj/Localizable.strings
+++ b/StatusWidget/es.lproj/Localizable.strings
@@ -23,7 +23,7 @@
 "Eventual" = "Eventual";
 
 /* The short unit display string for grams */
-"g" = "gr";
+"g" = "g";
 
 /* No comment provided by engineer. */
 "Loop Status Widget" = "Widget de Estado de Loop";
diff --git a/StatusWidget/fi.lproj/Localizable.strings b/StatusWidget/fi.lproj/Localizable.strings
new file mode 100644
index 000000000..01fd5fd8c
--- /dev/null
+++ b/StatusWidget/fi.lproj/Localizable.strings
@@ -0,0 +1,30 @@
+/* No comment provided by engineer. */
+"---" = "---";
+
+/* No comment provided by engineer. */
+"%@" = "%@";
+
+/* No comment provided by engineer. */
+"%@ U" = "%@ U";
+
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v%2$@";
+
+/* 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/StatusWidget/he.lproj/Localizable.strings b/StatusWidget/he.lproj/Localizable.strings
new file mode 100644
index 000000000..45356883f
--- /dev/null
+++ b/StatusWidget/he.lproj/Localizable.strings
@@ -0,0 +1,24 @@
+/* No comment provided by engineer. */
+"%@ U" = "%@ U";
+
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v%2$@";
+
+/* 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/StatusWidget/it.lproj/Localizable.strings b/StatusWidget/it.lproj/Localizable.strings
index ebd8e8ba4..e048bd3a2 100644
--- a/StatusWidget/it.lproj/Localizable.strings
+++ b/StatusWidget/it.lproj/Localizable.strings
@@ -14,7 +14,7 @@
 "%@ U" = "%@ U";
 
 /* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
-"%1$@ v%2$@" = "%1$@ v%2$@";
+"%1$@ v%2$@" = "%1$@ contro %2$@";
 
 /* The short unit display string for decibles */
 "dB" = "dB";
diff --git a/StatusWidget/ja.lproj/Localizable.strings b/StatusWidget/ja.lproj/Localizable.strings
new file mode 100644
index 000000000..45356883f
--- /dev/null
+++ b/StatusWidget/ja.lproj/Localizable.strings
@@ -0,0 +1,24 @@
+/* No comment provided by engineer. */
+"%@ U" = "%@ U";
+
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v%2$@";
+
+/* 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/StatusWidget/pl.lproj/Localizable.strings b/StatusWidget/pl.lproj/Localizable.strings
index 145a800bd..ebb661750 100644
--- a/StatusWidget/pl.lproj/Localizable.strings
+++ b/StatusWidget/pl.lproj/Localizable.strings
@@ -32,7 +32,7 @@
 "mg/dL" = "mg/dl";
 
 /* The short unit display string for millimoles of glucose per liter */
-"mmol/L" = "mmol/l";
+"mmol/L" = "mmol/L";
 
 /* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
 "QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
diff --git a/StatusWidget/pt-BR.lproj/Localizable.strings b/StatusWidget/pt-BR.lproj/Localizable.strings
new file mode 100644
index 000000000..45356883f
--- /dev/null
+++ b/StatusWidget/pt-BR.lproj/Localizable.strings
@@ -0,0 +1,24 @@
+/* No comment provided by engineer. */
+"%@ U" = "%@ U";
+
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v%2$@";
+
+/* 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/StatusWidget/ru.lproj/Localizable.strings b/StatusWidget/ru.lproj/Localizable.strings
index 3769166a8..f00c8af85 100644
--- a/StatusWidget/ru.lproj/Localizable.strings
+++ b/StatusWidget/ru.lproj/Localizable.strings
@@ -32,7 +32,7 @@
 "mg/dL" = "мг/дл";
 
 /* The short unit display string for millimoles of glucose per liter */
-"mmol/L" = "ммоль/л";
+"mmol/L" = "mmol/L";
 
 /* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
 "QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
@@ -41,5 +41,5 @@
 "See your current blood glucose and insulin delivery." = "Смотрите текущий уровень глюкозы в крови и ввод инсулина.";
 
 /* The short unit display string for international units of insulin */
-"U" = "Ед";
+"U" = "ед";
 
diff --git a/StatusWidget/sk.lproj/Localizable.strings b/StatusWidget/sk.lproj/Localizable.strings
new file mode 100644
index 000000000..c85e70521
--- /dev/null
+++ b/StatusWidget/sk.lproj/Localizable.strings
@@ -0,0 +1,24 @@
+/* No comment provided by engineer. */
+"%@ U" = "%@ j";
+
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v %2$@";
+
+/* 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" = "j";
+
diff --git a/StatusWidget/sv.lproj/Localizable.strings b/StatusWidget/sv.lproj/Localizable.strings
new file mode 100644
index 000000000..e3c1e4c52
--- /dev/null
+++ b/StatusWidget/sv.lproj/Localizable.strings
@@ -0,0 +1,30 @@
+/* No comment provided by engineer. */
+"---" = "---";
+
+/* No comment provided by engineer. */
+"%@" = "%@";
+
+/* No comment provided by engineer. */
+"%@ U" = "%@ E";
+
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v%2$@";
+
+/* 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" = "E";
+
diff --git a/StatusWidget/vi.lproj/Localizable.strings b/StatusWidget/vi.lproj/Localizable.strings
new file mode 100644
index 000000000..45356883f
--- /dev/null
+++ b/StatusWidget/vi.lproj/Localizable.strings
@@ -0,0 +1,24 @@
+/* No comment provided by engineer. */
+"%@ U" = "%@ U";
+
+/* The format string for the app name and version number. (1: bundle name)(2: bundle version) */
+"%1$@ v%2$@" = "%1$@ v%2$@";
+
+/* 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/Version.xcconfig b/Version.xcconfig
index d749ddab1..373efdca0 100644
--- a/Version.xcconfig
+++ b/Version.xcconfig
@@ -7,7 +7,7 @@
 //
 
 // Version [DEFAULT]
-LOOP_MARKETING_VERSION = 3.2.0
+LOOP_MARKETING_VERSION = 3.3.0
 CURRENT_PROJECT_VERSION = 57
 
 // Optional override
diff --git a/WatchApp Extension/ar.lproj/InfoPlist.strings b/WatchApp Extension/ar.lproj/InfoPlist.strings
new file mode 100644
index 000000000..f77dc07d1
--- /dev/null
+++ b/WatchApp Extension/ar.lproj/InfoPlist.strings	
@@ -0,0 +1,3 @@
+/* Privacy - Health Update Usage Description */
+"NSHealthUpdateUsageDescription" = "بيانات كربوهيدرات الوجبة المدخلة للتطبيق و الساعة محفوظة في قواعد بيانات تطبيق صحتي. يتم تخزين بيانات سكر الدم المستردة من نظام متابعة سكر الدم المستمرة بشكل آمن في تطبيق صحتي.";
+
diff --git a/WatchApp Extension/ar.lproj/Localizable.strings b/WatchApp Extension/ar.lproj/Localizable.strings
index a54698d41..a592945b1 100644
--- a/WatchApp Extension/ar.lproj/Localizable.strings	
+++ b/WatchApp Extension/ar.lproj/Localizable.strings	
@@ -1,25 +1,62 @@
+/* No glucose value representation (3 dashes for mg/dL) */
+"– – –" = "---";
+
+/* Format string for glucose range (1: lower bound)(2: upper bound)(3: unit) */
+"%1$@ – %2$@ %3$@" = "%1$@ – %2$@ %3$@";
+
 /* HUD row title for COB */
 "Active Carbs" = "كارب النشط";
 
 /* HUD row title for IOB */
 "Active Insulin" = "أنسولين نشط";
 
+/* Title of the user activity for adding carbs */
+"Add Carb Entry" = "Add Carb Entry";
+
+/* Button text to confirm manual bolus on Apple Watch */
+"Bolus" = "Bolus";
+
 /* The title of the alert controller displayed after a bolus attempt fails */
-"Bolus Failed" = "فشل في إعطاء الجرعة";
+"Bolus Failed" = "Bolus Failed";
+
+/* The short unit display string for decibles */
+"dB" = "dB";
 
 /* The action button title to dismiss an error message */
 "Dismiss" = "تجاهل";
 
+/* Short unit label for gram measurement
+   The short unit display string for grams */
+"g" = "g";
+
 /* The recovery message displayed after a bolus attempt fails
    The recovery message displayed after a carb entry send attempt fails
    The recovery message displayed after a glucose range override send attempt fails */
 "Make sure your iPhone is nearby and try again" = "تأكد من أن الآيفون الخاص بك قريب ثم حاول مرة أخرى";
 
+/* 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";
+
 /* HUD row title for Net Basal Rate */
 "Net Basal Rate" = "صافي الضخ المستمر";
 
+/* No comment provided by engineer. */
+"OK" = "موافق";
+
+/* Label for on button */
+"On" = "On";
+
 /* The text for the Watch button for enabling a temporary override */
-"Override" = "تجاوز";
+"Override" = "Override";
+
+/* Title for sheet to enable/disable pre-meal on watch */
+"Pre-Meal" = "Pre-Meal";
+
+/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
+"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
 
 /* The label and value showing the recommended bolus */
 "Rec: %@ U" = "التوصية: %@ U";
@@ -31,6 +68,9 @@
    The title of the alert controller displayed after a glucose range override send attempt fails */
 "Send Failed" = "فشل الإرسال";
 
+/* The short unit display string for international units of insulin */
+"U" = "وحدة";
+
 /* The short unit display string for international units of insulin delivery per hour */
 "U/hr" = "وحدة لكل ساعة";
 
diff --git a/WatchApp Extension/cs.lproj/Localizable.strings b/WatchApp Extension/cs.lproj/Localizable.strings
new file mode 100644
index 000000000..74ce94ddb
--- /dev/null
+++ b/WatchApp Extension/cs.lproj/Localizable.strings	
@@ -0,0 +1,18 @@
+/* No glucose value representation (3 dashes for mg/dL) */
+"– – –" = "– – –";
+
+/* Button text to continue from carb entry to bolus entry on Apple Watch */
+"Continue" = "Pokračovat";
+
+/* Label for off button */
+"Off" = "Vypnuto";
+
+/* No comment provided by engineer. */
+"OK" = "OK";
+
+/* Label for on button */
+"On" = "Zapnuto";
+
+/* Button text to confirm carb entry without bolusing on Apple Watch */
+"Save" = "Uložit";
+
diff --git a/WatchApp Extension/da.lproj/InfoPlist.strings b/WatchApp Extension/da.lproj/InfoPlist.strings
index 5e8763dc4..4cfb717ce 100644
--- a/WatchApp Extension/da.lproj/InfoPlist.strings	
+++ b/WatchApp Extension/da.lproj/InfoPlist.strings	
@@ -5,8 +5,8 @@
 "CFBundleName" = "WatchApp-udvidelse";
 
 /* Privacy - Health Share Usage Description */
-"NSHealthShareUsageDescription" = "Måltidsdata fra Health-databasen anvendes til at bestemme glukosevirkningerne. Glukosedata fra Health-databasen anvendes til grafisk fremstilling og momentumberegning. Søvndata fra Health-databasen bruges til at optimere leveringen af opdateringer af Apple Watch-komplikationer i den tid, du er vågen.";
+"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.";
 
 /* Privacy - Health Update Usage Description */
-"NSHealthUpdateUsageDescription" = "Data om kulhydratmåltider, der indtastes i appen og på uret, gemmes i Health-databasen. Glukosedata, der hentes fra CGM'en, gemmes sikkert i HealthKit.";
+"NSHealthUpdateUsageDescription" = "Data om kulhydratmåltider, der indtastes i appen og på uret, gemmes i Apples Health-database. Glukosedata, der hentes fra CGM'en, gemmes sikkert i HealthKit.";
 
diff --git a/WatchApp Extension/da.lproj/Localizable.strings b/WatchApp Extension/da.lproj/Localizable.strings
index 24aed0b4c..3098b3385 100644
--- a/WatchApp Extension/da.lproj/Localizable.strings	
+++ b/WatchApp Extension/da.lproj/Localizable.strings	
@@ -17,7 +17,7 @@
 "Active Insulin" = "Aktivt insulin";
 
 /* Title of the user activity for adding carbs */
-"Add Carb Entry" = "Tilføj kulhydratindtastning";
+"Add Carb Entry" = "Tilføj kulhydrater";
 
 /* Button text to confirm manual bolus on Apple Watch */
 "Bolus" = "Bolus";
@@ -26,7 +26,7 @@
 "Bolus Failed" = "Bolus fejlede";
 
 /* Alert title for updated bolus recommendation on Apple Watch */
-"Bolus Recommendation Updated" = "Bolusanbefaling er opdateret";
+"Bolus Recommendation Updated" = "Bolusanbefaling opdateret";
 
 /* Button text to continue from carb entry to bolus entry on Apple Watch */
 "Continue" = "Fortsæt";
@@ -35,7 +35,7 @@
 "dB" = "dB";
 
 /* The action button title to dismiss an error message */
-"Dismiss" = "Ignorer";
+"Dismiss" = "Afvis";
 
 /* Short unit label for gram measurement
    The short unit display string for grams */
@@ -60,13 +60,13 @@
 "Net Basal Rate" = "Netto basalrate";
 
 /* Label for off button */
-"Off" = "Fra";
+"Off" = "Slukket";
 
 /* No comment provided by engineer. */
 "OK" = "OK";
 
 /* Label for on button */
-"On" = "Til";
+"On" = "Tændt";
 
 /* The text for the Watch button for enabling a temporary override */
 "Override" = "Override";
diff --git a/WatchApp Extension/de.lproj/InfoPlist.strings b/WatchApp Extension/de.lproj/InfoPlist.strings
index ab0be0335..0099ce395 100644
--- a/WatchApp Extension/de.lproj/InfoPlist.strings	
+++ b/WatchApp Extension/de.lproj/InfoPlist.strings	
@@ -5,7 +5,7 @@
 "CFBundleName" = "WatchApp-Erweiterung";
 
 /* Privacy - Health Share Usage Description */
-"NSHealthShareUsageDescription" = "Mahlzeitendaten aus der HealthKit-Datenbank werden verwendet, um Glukoseeffekte zu bestimmen. Glukosedaten aus der HealthKit-Datenbank werden für die grafische Darstellung und Impulsberechnung verwendet. Schlafdaten aus der HealthKit-Datenbank werden verwendet, um die Bereitstellung von Apple Watch-Komplikationsupdates während der Zeit, in der Du wach bist, zu optimieren.";
+"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.";
 
 /* Privacy - Health Update Usage Description */
 "NSHealthUpdateUsageDescription" = "In der App und auf der Uhr eingegebene Daten zu Kohlenhydratmahlzeiten werden in der HealthKit-Datenbank  gespeichert. Vom CGM abgerufene Glukosedaten werden sicher in HealthKit-Datenbank gespeichert.";
diff --git a/WatchApp Extension/de.lproj/Localizable.strings b/WatchApp Extension/de.lproj/Localizable.strings
index 447c3d6b9..00e61b976 100644
--- a/WatchApp Extension/de.lproj/Localizable.strings	
+++ b/WatchApp Extension/de.lproj/Localizable.strings	
@@ -17,7 +17,7 @@
 "Active Insulin" = "Aktives Insulin";
 
 /* Title of the user activity for adding carbs */
-"Add Carb Entry" = "KH-Eintrag hinzufügen";
+"Add Carb Entry" = "Kohlenhydrate hinzufügen";
 
 /* Button text to confirm manual bolus on Apple Watch */
 "Bolus" = "Bolus";
@@ -35,7 +35,7 @@
 "dB" = "dB";
 
 /* The action button title to dismiss an error message */
-"Dismiss" = "Verwerfen";
+"Dismiss" = "Schließen";
 
 /* Short unit label for gram measurement
    The short unit display string for grams */
diff --git a/WatchApp Extension/es.lproj/Localizable.strings b/WatchApp Extension/es.lproj/Localizable.strings
index 20be19a87..6dcbce104 100644
--- a/WatchApp Extension/es.lproj/Localizable.strings	
+++ b/WatchApp Extension/es.lproj/Localizable.strings	
@@ -11,13 +11,13 @@
 "%1$@ – %2$@ %3$@" = "%1$@ – %2$@ %3$@";
 
 /* HUD row title for COB */
-"Active Carbs" = "Carbs Activos";
+"Active Carbs" = "Carbohidratos Activos";
 
 /* HUD row title for IOB */
 "Active Insulin" = "Insulina activa";
 
 /* Title of the user activity for adding carbs */
-"Add Carb Entry" = "Agregar Entrada de Carbohydratos";
+"Add Carb Entry" = "Agregar Entrada de Carb";
 
 /* Button text to confirm manual bolus on Apple Watch */
 "Bolus" = "Bolo";
@@ -51,10 +51,10 @@
 "Make sure your iPhone is nearby and try again." = "Asegúrate que tu iPhone se encuentre cerca e inténtalo de nuevo.";
 
 /* The short unit display string for milligrams of glucose per decilter */
-"mg/dL" = "mg/dl";
+"mg/dL" = "mg/dL";
 
 /* The short unit display string for millimoles of glucose per liter */
-"mmol/L" = "mmol/l";
+"mmol/L" = "mmol/L";
 
 /* HUD row title for Net Basal Rate */
 "Net Basal Rate" = "Tasa basal neta";
@@ -96,7 +96,7 @@
 "Reservoir Volume" = "Volumen de Reservorio";
 
 /* Button text to confirm carb entry without bolusing on Apple Watch */
-"Save" = "Guardar";
+"Save" = "Agregar";
 
 /* Button text to confirm carb entry and bolus on Apple Watch */
 "Save & Bolus" = "Guardar & administrar bolo";
diff --git a/WatchApp Extension/fi.lproj/InfoPlist.strings b/WatchApp Extension/fi.lproj/InfoPlist.strings
index 267e1111c..eca830a0a 100644
--- a/WatchApp Extension/fi.lproj/InfoPlist.strings	
+++ b/WatchApp Extension/fi.lproj/InfoPlist.strings	
@@ -4,3 +4,9 @@
 /* Bundle name */
 "CFBundleName" = "WatchApp-laajennus";
 
+/* 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.";
+
+/* Privacy - Health Update Usage Description */
+"NSHealthUpdateUsageDescription" = "Sovelluksen ja kellon kautta tallennetut hiilihydraattitiedot tallennetaan Terveys-sovellukseen. Glukoosiseurannan kautta saadut glukoositiedot tallennetaan turvallisesti HealthKitiin.";
+
diff --git a/WatchApp Extension/fi.lproj/Localizable.strings b/WatchApp Extension/fi.lproj/Localizable.strings
index 08a239049..7f4af4de9 100644
--- a/WatchApp Extension/fi.lproj/Localizable.strings	
+++ b/WatchApp Extension/fi.lproj/Localizable.strings	
@@ -17,7 +17,7 @@
 "Active Insulin" = "Akt. insuliini";
 
 /* Title of the user activity for adding carbs */
-"Add Carb Entry" = "Lisää hiilari";
+"Add Carb Entry" = "Lisää hiilihydraatteja";
 
 /* Button text to confirm manual bolus on Apple Watch */
 "Bolus" = "Bolus";
@@ -35,7 +35,7 @@
 "dB" = "dB";
 
 /* The action button title to dismiss an error message */
-"Dismiss" = "Hylkää";
+"Dismiss" = "Ohita";
 
 /* Short unit label for gram measurement
    The short unit display string for grams */
@@ -75,7 +75,7 @@
 "Please reconfirm the bolus amount." = "Vahvista bolus uudelleen.";
 
 /* Title for sheet to enable/disable pre-meal on watch */
-"Pre-Meal" = "E. ateriaa";
+"Pre-Meal" = "Ennen ateriaa";
 
 /* The text for the Watch button for enabling a custom preset */
 "Preset" = "Esiasetus";
diff --git a/WatchApp Extension/fr.lproj/Localizable.strings b/WatchApp Extension/fr.lproj/Localizable.strings
index 0fddf79bf..d433047a6 100644
--- a/WatchApp Extension/fr.lproj/Localizable.strings	
+++ b/WatchApp Extension/fr.lproj/Localizable.strings	
@@ -23,7 +23,7 @@
 "Bolus" = "Bolus";
 
 /* The title of the alert controller displayed after a bolus attempt fails */
-"Bolus Failed" = "Bolus Échoué";
+"Bolus Failed" = "Échec du bolus";
 
 /* Alert title for updated bolus recommendation on Apple Watch */
 "Bolus Recommendation Updated" = "Recommandation de Bolus modifiée";
@@ -35,7 +35,7 @@
 "dB" = "dB";
 
 /* The action button title to dismiss an error message */
-"Dismiss" = "Rejeter";
+"Dismiss" = "Fermer";
 
 /* Short unit label for gram measurement
    The short unit display string for grams */
@@ -75,7 +75,7 @@
 "Please reconfirm the bolus amount." = "Veuillez reconfirmer le bolus.";
 
 /* Title for sheet to enable/disable pre-meal on watch */
-"Pre-Meal" = "Pré-repas";
+"Pre-Meal" = "Pré-Repas";
 
 /* The text for the Watch button for enabling a custom preset */
 "Preset" = "Préréglage";
diff --git a/WatchApp Extension/he.lproj/InfoPlist.strings b/WatchApp Extension/he.lproj/InfoPlist.strings
new file mode 100644
index 000000000..7d477d677
--- /dev/null
+++ b/WatchApp Extension/he.lproj/InfoPlist.strings	
@@ -0,0 +1,3 @@
+/* Privacy - Health Update Usage Description */
+"NSHealthUpdateUsageDescription" = "Carbohydrate meal data entered in the app and on the watch is stored in the Health database. Glucose data retrieved from the CGM is stored securely in HealthKit.";
+
diff --git a/WatchApp Extension/he.lproj/Localizable.strings b/WatchApp Extension/he.lproj/Localizable.strings
index e171cc6ba..936389eac 100644
--- a/WatchApp Extension/he.lproj/Localizable.strings	
+++ b/WatchApp Extension/he.lproj/Localizable.strings	
@@ -1,36 +1,85 @@
+/* No glucose value representation (3 dashes for mg/dL) */
+"– – –" = "---";
+
+/* Format string for glucose range (1: lower bound)(2: upper bound)(3: unit) */
+"%1$@ – %2$@ %3$@" = "%1$@ – %2$@ %3$@";
+
 /* HUD row title for COB */
 "Active Carbs" = "Active Carbs";
 
 /* HUD row title for IOB */
 "Active Insulin" = "Active Insulin";
 
+/* Title of the user activity for adding carbs */
+"Add Carb Entry" = "Add Carb Entry";
+
+/* Button text to confirm manual bolus on Apple Watch */
+"Bolus" = "Bolus";
+
 /* The title of the alert controller displayed after a bolus attempt fails */
 "Bolus Failed" = "Bolus Failed";
 
+/* Button text to continue from carb entry to bolus entry on Apple Watch */
+"Continue" = "Continue";
+
+/* The short unit display string for decibles */
+"dB" = "dB";
+
 /* The action button title to dismiss an error message */
 "Dismiss" = "Dismiss";
 
+/* Short unit label for gram measurement
+   The short unit display string for grams */
+"g" = "g";
+
 /* The recovery message displayed after a bolus attempt fails
    The recovery message displayed after a carb entry send attempt fails
    The recovery message displayed after a glucose range override send attempt fails */
 "Make sure your iPhone is nearby and try again" = "Make sure your iPhone is nearby and try again";
 
+/* 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";
+
 /* HUD row title for Net Basal Rate */
 "Net Basal Rate" = "Net Basal Rate";
 
+/* Label for off button */
+"Off" = "כבוי";
+
+/* No comment provided by engineer. */
+"OK" = "OK";
+
+/* Label for on button */
+"On" = "דולק";
+
 /* The text for the Watch button for enabling a temporary override */
 "Override" = "Override";
 
+/* Title for sheet to enable/disable pre-meal on watch */
+"Pre-Meal" = "Pre-Meal";
+
+/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
+"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
+
 /* The label and value showing the recommended bolus */
 "Rec: %@ U" = "Rec: %@ U";
 
 /* HUD row title for remaining reservoir volume */
 "Reservoir Volume" = "Reservoir Volume";
 
+/* Button text to confirm carb entry without bolusing on Apple Watch */
+"Save" = "Save";
+
 /* The title of the alert controller displayed after a carb entry send attempt fails
    The title of the alert controller displayed after a glucose range override send attempt fails */
 "Send Failed" = "Send Failed";
 
+/* The short unit display string for international units of insulin */
+"U" = "U";
+
 /* The short unit display string for international units of insulin delivery per hour */
 "U/hr" = "U/hr";
 
diff --git a/WatchApp Extension/hi.lproj/Localizable.strings b/WatchApp Extension/hi.lproj/Localizable.strings
new file mode 100644
index 000000000..6af2a264c
--- /dev/null
+++ b/WatchApp Extension/hi.lproj/Localizable.strings	
@@ -0,0 +1,6 @@
+/* No glucose value representation (3 dashes for mg/dL) */
+"– – –" = "– – –";
+
+/* Button text to continue from carb entry to bolus entry on Apple Watch */
+"Continue" = "जारी";
+
diff --git a/WatchApp Extension/it.lproj/InfoPlist.strings b/WatchApp Extension/it.lproj/InfoPlist.strings
index 1ed113fe7..15dcd10c3 100644
--- a/WatchApp Extension/it.lproj/InfoPlist.strings	
+++ b/WatchApp Extension/it.lproj/InfoPlist.strings	
@@ -8,5 +8,5 @@
 "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.";
 
 /* Privacy - Health Update Usage Description */
-"NSHealthUpdateUsageDescription" = "I dati sui carboidrati inseriti nell'app e sull'orologio sono memorizzati nel database Salute. I dati relativi al glucosio recuperati dal CGM vengono memorizzati in modo sicuro in Salute.";
+"NSHealthUpdateUsageDescription" = "I dati sui carboidrati dei pasti inseriti nell'app e sull'orologio sono trasferiti nel database di Salute. I dati recuperati dal sensore CGM sono storati nel database di HealthKit.";
 
diff --git a/WatchApp Extension/it.lproj/Localizable.strings b/WatchApp Extension/it.lproj/Localizable.strings
index 314013178..49989cb3f 100644
--- a/WatchApp Extension/it.lproj/Localizable.strings	
+++ b/WatchApp Extension/it.lproj/Localizable.strings	
@@ -2,7 +2,7 @@
 "---" = "---";
 
 /* No glucose value representation (3 dashes for mg/dL) */
-"– – –" = "– – –";
+"– – –" = "---";
 
 /* No comment provided by engineer. */
 "%@" = "%@";
@@ -11,7 +11,7 @@
 "%1$@ – %2$@ %3$@" = "%1$@ – %2$@ %3$@";
 
 /* HUD row title for COB */
-"Active Carbs" = "Carboidrati attivi";
+"Active Carbs" = "Carb Attivi";
 
 /* HUD row title for IOB */
 "Active Insulin" = "Insulina attiva";
@@ -66,7 +66,7 @@
 "OK" = "OK";
 
 /* Label for on button */
-"On" = "Acceso ";
+"On" = "Acceso";
 
 /* The text for the Watch button for enabling a temporary override */
 "Override" = "Programma Alternativo";
@@ -118,5 +118,5 @@
 "Unable to Reach iPhone" = "Impossibile raggiungere iPhone";
 
 /* The text for the Watch button for enabling workout mode */
-"Workout" = "Attività fisica";
+"Workout" = "Allenarsi";
 
diff --git a/WatchApp Extension/ja.lproj/InfoPlist.strings b/WatchApp Extension/ja.lproj/InfoPlist.strings
new file mode 100644
index 000000000..697e08173
--- /dev/null
+++ b/WatchApp Extension/ja.lproj/InfoPlist.strings	
@@ -0,0 +1,3 @@
+/* Privacy - Health Update Usage Description */
+"NSHealthUpdateUsageDescription" = "健康データベースからの食事データは、グルコース効果を決定するために使用される。 グルコースデータはグラフ作成と解析のためにHealthKitから検索されます";
+
diff --git a/WatchApp Extension/ja.lproj/Localizable.strings b/WatchApp Extension/ja.lproj/Localizable.strings
index c341eac1a..4128891d8 100644
--- a/WatchApp Extension/ja.lproj/Localizable.strings	
+++ b/WatchApp Extension/ja.lproj/Localizable.strings	
@@ -1,3 +1,9 @@
+/* No glucose value representation (3 dashes for mg/dL) */
+"– – –" = "---";
+
+/* Format string for glucose range (1: lower bound)(2: upper bound)(3: unit) */
+"%1$@ – %2$@ %3$@" = "%1$@ – %2$@ %3$@";
+
 /* HUD row title for COB */
 "Active Carbs" = "残存糖質";
 
@@ -5,35 +11,72 @@
 "Active Insulin" = "残存インスリン";
 
 /* Title of the user activity for adding carbs */
-"Add Carb Entry" = "カーボを追加";
+"Add Carb Entry" = "糖質の記入を追加";
+
+/* Button text to confirm manual bolus on Apple Watch */
+"Bolus" = "ボーラス";
 
 /* The title of the alert controller displayed after a bolus attempt fails */
 "Bolus Failed" = "ボーラス不成功";
 
+/* Button text to continue from carb entry to bolus entry on Apple Watch */
+"Continue" = "次へ";
+
+/* The short unit display string for decibles */
+"dB" = "dB";
+
 /* The action button title to dismiss an error message */
 "Dismiss" = "閉じる";
 
+/* Short unit label for gram measurement
+   The short unit display string for grams */
+"g" = "g";
+
 /* The recovery message displayed after a bolus attempt fails
    The recovery message displayed after a carb entry send attempt fails
    The recovery message displayed after a glucose range override send attempt fails */
 "Make sure your iPhone is nearby and try again" = "iPhone が近くにあることを確認して、再実行してください";
 
+/* 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";
+
 /* HUD row title for Net Basal Rate */
 "Net Basal Rate" = "正味基礎インスリン";
 
+/* No comment provided by engineer. */
+"OK" = "OK";
+
+/* Label for on button */
+"On" = "オン";
+
 /* The text for the Watch button for enabling a temporary override */
 "Override" = "オーバーライド";
 
+/* Title for sheet to enable/disable pre-meal on watch */
+"Pre-Meal" = "食前";
+
+/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
+"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
+
 /* The label and value showing the recommended bolus */
 "Rec: %@ U" = "推奨: %@ U";
 
 /* HUD row title for remaining reservoir volume */
 "Reservoir Volume" = "リザーバ残量";
 
+/* Button text to confirm carb entry without bolusing on Apple Watch */
+"Save" = "保存";
+
 /* The title of the alert controller displayed after a carb entry send attempt fails
    The title of the alert controller displayed after a glucose range override send attempt fails */
 "Send Failed" = "送信に失敗";
 
+/* The short unit display string for international units of insulin */
+"U" = "U";
+
 /* The short unit display string for international units of insulin delivery per hour */
 "U/hr" = "U/時";
 
diff --git a/WatchApp Extension/nb.lproj/Localizable.strings b/WatchApp Extension/nb.lproj/Localizable.strings
index 9d6b5baaf..d498deb27 100644
--- a/WatchApp Extension/nb.lproj/Localizable.strings	
+++ b/WatchApp Extension/nb.lproj/Localizable.strings	
@@ -23,10 +23,10 @@
 "Bolus" = "Bolus";
 
 /* The title of the alert controller displayed after a bolus attempt fails */
-"Bolus Failed" = "Bolus mislyktes";
+"Bolus Failed" = "Bolus feilet";
 
 /* Alert title for updated bolus recommendation on Apple Watch */
-"Bolus Recommendation Updated" = "Bolusanbefaling oppdatert";
+"Bolus Recommendation Updated" = "Bolus anbefaling er oppdatert";
 
 /* Button text to continue from carb entry to bolus entry on Apple Watch */
 "Continue" = "Fortsett";
@@ -63,7 +63,7 @@
 "Off" = "Av";
 
 /* No comment provided by engineer. */
-"OK" = "OK";
+"OK" = "Ok";
 
 /* Label for on button */
 "On" = "På";
diff --git a/WatchApp Extension/nl.lproj/Localizable.strings b/WatchApp Extension/nl.lproj/Localizable.strings
index 30e1d3777..e3401838f 100644
--- a/WatchApp Extension/nl.lproj/Localizable.strings	
+++ b/WatchApp Extension/nl.lproj/Localizable.strings	
@@ -17,7 +17,7 @@
 "Active Insulin" = "Actieve Insuline";
 
 /* Title of the user activity for adding carbs */
-"Add Carb Entry" = "Koolhydraatinvoer Toevoegen";
+"Add Carb Entry" = "Kh. Inv. Toevoegen";
 
 /* Button text to confirm manual bolus on Apple Watch */
 "Bolus" = "Bolus";
@@ -63,7 +63,7 @@
 "Off" = "Uit";
 
 /* No comment provided by engineer. */
-"OK" = "OK";
+"OK" = "Ok";
 
 /* Label for on button */
 "On" = "Aan";
@@ -81,7 +81,7 @@
 "Preset" = "Override";
 
 /* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
-"QUANTITY_VALUE_AND_UNIT" = "%1$@%2$@";
+"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
 
 /* The label and value showing the recommended bolus */
 "Rec: %@ U" = "Voorgesteld: %@ E";
diff --git a/WatchApp Extension/pl.lproj/Localizable.strings b/WatchApp Extension/pl.lproj/Localizable.strings
index 6bb5cb3f7..3e167590d 100644
--- a/WatchApp Extension/pl.lproj/Localizable.strings	
+++ b/WatchApp Extension/pl.lproj/Localizable.strings	
@@ -23,7 +23,7 @@
 "Bolus" = "Bolus";
 
 /* The title of the alert controller displayed after a bolus attempt fails */
-"Bolus Failed" = "Podanie bolusa nie powiodło się";
+"Bolus Failed" = "Bolus nie podany";
 
 /* Alert title for updated bolus recommendation on Apple Watch */
 "Bolus Recommendation Updated" = "Zaktualizowano rekomendowanego Bolus";
@@ -35,7 +35,7 @@
 "dB" = "dB";
 
 /* The action button title to dismiss an error message */
-"Dismiss" = "Zignoruj";
+"Dismiss" = "Odrzucać";
 
 /* Short unit label for gram measurement
    The short unit display string for grams */
@@ -54,7 +54,7 @@
 "mg/dL" = "mg/dl";
 
 /* The short unit display string for millimoles of glucose per liter */
-"mmol/L" = "mmol/l";
+"mmol/L" = "mmol/L";
 
 /* HUD row title for Net Basal Rate */
 "Net Basal Rate" = "Dawka podstawowa netto";
@@ -112,7 +112,7 @@
 "U" = "J";
 
 /* The short unit display string for international units of insulin delivery per hour */
-"U/hr" = "J/godz.";
+"U/hr" = "J/godz";
 
 /* The title of the alert controller displayed after a potential carb entry send attempt fails */
 "Unable to Reach iPhone" = "Nie można połączyć się z iPhone'em";
diff --git a/WatchApp Extension/pt-BR.lproj/InfoPlist.strings b/WatchApp Extension/pt-BR.lproj/InfoPlist.strings
new file mode 100644
index 000000000..4be038b8f
--- /dev/null
+++ b/WatchApp Extension/pt-BR.lproj/InfoPlist.strings	
@@ -0,0 +1,3 @@
+/* Privacy - Health Update Usage Description */
+"NSHealthUpdateUsageDescription" = "Dados de carboidratos inseridos no aplicativo e no  Apple Watch são armazenados no banco de dados de saúde. Dados de glicemia recebidos do CGM são armazenados de modo seguro no HealthKit.";
+
diff --git a/WatchApp Extension/pt-BR.lproj/Localizable.strings b/WatchApp Extension/pt-BR.lproj/Localizable.strings
index 0c6e9b373..6075041cd 100644
--- a/WatchApp Extension/pt-BR.lproj/Localizable.strings	
+++ b/WatchApp Extension/pt-BR.lproj/Localizable.strings	
@@ -1,36 +1,82 @@
+/* No glucose value representation (3 dashes for mg/dL) */
+"– – –" = "---";
+
+/* Format string for glucose range (1: lower bound)(2: upper bound)(3: unit) */
+"%1$@ – %2$@ %3$@" = "%1$@ – %2$@ %3$@";
+
 /* HUD row title for COB */
 "Active Carbs" = "Carboidratos Ativos";
 
 /* HUD row title for IOB */
 "Active Insulin" = "Insulina Ativa";
 
+/* Title of the user activity for adding carbs */
+"Add Carb Entry" = "Adicionar Carb";
+
+/* Button text to confirm manual bolus on Apple Watch */
+"Bolus" = "Bolus";
+
 /* The title of the alert controller displayed after a bolus attempt fails */
 "Bolus Failed" = "Bolus Falhou";
 
+/* Button text to continue from carb entry to bolus entry on Apple Watch */
+"Continue" = "Continuar";
+
+/* The short unit display string for decibles */
+"dB" = "dB";
+
 /* The action button title to dismiss an error message */
 "Dismiss" = "Dispensar";
 
+/* Short unit label for gram measurement
+   The short unit display string for grams */
+"g" = "g";
+
 /* The recovery message displayed after a bolus attempt fails
    The recovery message displayed after a carb entry send attempt fails
    The recovery message displayed after a glucose range override send attempt fails */
 "Make sure your iPhone is nearby and try again" = "Verifique se o iPhone está próximo e tente novamente";
 
+/* 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";
+
 /* HUD row title for Net Basal Rate */
 "Net Basal Rate" = "Taxa Basal Líquida";
 
+/* No comment provided by engineer. */
+"OK" = "OK";
+
+/* Label for on button */
+"On" = "Ligado";
+
 /* The text for the Watch button for enabling a temporary override */
 "Override" = "Sobrepor";
 
+/* Title for sheet to enable/disable pre-meal on watch */
+"Pre-Meal" = "Pré-Refeição";
+
+/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
+"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
+
 /* The label and value showing the recommended bolus */
 "Rec: %@ U" = "Rec: %@ U";
 
 /* HUD row title for remaining reservoir volume */
 "Reservoir Volume" = "Volume do Reservatório";
 
+/* Button text to confirm carb entry without bolusing on Apple Watch */
+"Save" = "Salvar";
+
 /* The title of the alert controller displayed after a carb entry send attempt fails
    The title of the alert controller displayed after a glucose range override send attempt fails */
 "Send Failed" = "Envio falhou";
 
+/* The short unit display string for international units of insulin */
+"U" = "U";
+
 /* The short unit display string for international units of insulin delivery per hour */
 "U/hr" = "U/hr";
 
diff --git a/WatchApp Extension/ro.lproj/Localizable.strings b/WatchApp Extension/ro.lproj/Localizable.strings
index aa309fd72..7283a04a9 100644
--- a/WatchApp Extension/ro.lproj/Localizable.strings	
+++ b/WatchApp Extension/ro.lproj/Localizable.strings	
@@ -35,7 +35,7 @@
 "dB" = "dB";
 
 /* The action button title to dismiss an error message */
-"Dismiss" = "Închide";
+"Dismiss" = "Renunță";
 
 /* Short unit label for gram measurement
    The short unit display string for grams */
@@ -81,7 +81,7 @@
 "Preset" = "Presetare";
 
 /* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
-"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
+"QUANTITY_VALUE_AND_UNIT" = "%1$@%2$@";
 
 /* The label and value showing the recommended bolus */
 "Rec: %@ U" = "Rec: %@ U";
diff --git a/WatchApp Extension/ru.lproj/Localizable.strings b/WatchApp Extension/ru.lproj/Localizable.strings
index d557e30a6..a6a406387 100644
--- a/WatchApp Extension/ru.lproj/Localizable.strings	
+++ b/WatchApp Extension/ru.lproj/Localizable.strings	
@@ -32,10 +32,10 @@
 "Continue" = "Продолжить";
 
 /* The short unit display string for decibles */
-"dB" = "dB";
+"dB" = "дБ";
 
 /* The action button title to dismiss an error message */
-"Dismiss" = "Пропустить";
+"Dismiss" = "Отклонить";
 
 /* Short unit label for gram measurement
    The short unit display string for grams */
@@ -54,7 +54,7 @@
 "mg/dL" = "мг/дл";
 
 /* The short unit display string for millimoles of glucose per liter */
-"mmol/L" = "ммоль/л";
+"mmol/L" = "mmol/L";
 
 /* HUD row title for Net Basal Rate */
 "Net Basal Rate" = "Чистая базальная доза";
@@ -109,10 +109,10 @@
 "Turn Digital Crown\nto bolus" = "Покрутите колесико\nдля болюса";
 
 /* The short unit display string for international units of insulin */
-"U" = "Ед";
+"U" = "ед";
 
 /* The short unit display string for international units of insulin delivery per hour */
-"U/hr" = "Ед/ч";
+"U/hr" = "U/hr";
 
 /* The title of the alert controller displayed after a potential carb entry send attempt fails */
 "Unable to Reach iPhone" = "Не удается подключиться к iPhone";
diff --git a/WatchApp Extension/sk.lproj/InfoPlist.strings b/WatchApp Extension/sk.lproj/InfoPlist.strings
new file mode 100644
index 000000000..075d65454
--- /dev/null
+++ b/WatchApp Extension/sk.lproj/InfoPlist.strings	
@@ -0,0 +1,6 @@
+/* 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.";
+
+/* Privacy - Health Update Usage Description */
+"NSHealthUpdateUsageDescription" = "Údaje o uhlohydrátoch zadané v aplikácii a na hodinkách sú uložené v databáze Health. Údaje o glukóze získané z CGM sú bezpečne uložené v HealthKit.";
+
diff --git a/WatchApp Extension/sk.lproj/Localizable.strings b/WatchApp Extension/sk.lproj/Localizable.strings
new file mode 100644
index 000000000..3c8292484
--- /dev/null
+++ b/WatchApp Extension/sk.lproj/Localizable.strings	
@@ -0,0 +1,52 @@
+/* No glucose value representation (3 dashes for mg/dL) */
+"– – –" = "– – –";
+
+/* Format string for glucose range (1: lower bound)(2: upper bound)(3: unit) */
+"%1$@ – %2$@ %3$@" = "%1$@ – %2$@ %3$@";
+
+/* HUD row title for COB */
+"Active Carbs" = "Aktívne sacharidy";
+
+/* HUD row title for IOB */
+"Active Insulin" = "Aktívny inzulín";
+
+/* Title of the user activity for adding carbs */
+"Add Carb Entry" = "Zadať sacharidy";
+
+/* Button text to confirm manual bolus on Apple Watch */
+"Bolus" = "Bolus";
+
+/* Button text to continue from carb entry to bolus entry on Apple Watch */
+"Continue" = "Pokračovať";
+
+/* The short unit display string for decibles */
+"dB" = "dB";
+
+/* Short unit label for gram measurement
+   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";
+
+/* Label for off button */
+"Off" = "Vypnuté";
+
+/* No comment provided by engineer. */
+"OK" = "OK";
+
+/* Label for on button */
+"On" = "Zapnuté";
+
+/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
+"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
+
+/* Button text to confirm carb entry without bolusing on Apple Watch */
+"Save" = "Uložiť";
+
+/* The short unit display string for international units of insulin */
+"U" = "j";
+
diff --git a/WatchApp Extension/sv.lproj/InfoPlist.strings b/WatchApp Extension/sv.lproj/InfoPlist.strings
index f1b4dc588..4bd26fa9d 100644
--- a/WatchApp Extension/sv.lproj/InfoPlist.strings	
+++ b/WatchApp Extension/sv.lproj/InfoPlist.strings	
@@ -4,3 +4,9 @@
 /* Bundle name */
 "CFBundleName" = "WatchApp Extension";
 
+/* 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.";
+
+/* Privacy - Health Update Usage Description */
+"NSHealthUpdateUsageDescription" = "Kolhydratvärden inmatade i appen i klockan lagras i Apple Health-databasen. Glukosvärden mottagna från CGM lagras krypterat i HealthKit.";
+
diff --git a/WatchApp Extension/sv.lproj/Localizable.strings b/WatchApp Extension/sv.lproj/Localizable.strings
index cf9dad0e5..4899f2cc6 100644
--- a/WatchApp Extension/sv.lproj/Localizable.strings	
+++ b/WatchApp Extension/sv.lproj/Localizable.strings	
@@ -54,7 +54,7 @@
 "mg/dL" = "mg/dl";
 
 /* The short unit display string for millimoles of glucose per liter */
-"mmol/L" = "mmol/l";
+"mmol/L" = "mmol/L";
 
 /* HUD row title for Net Basal Rate */
 "Net Basal Rate" = "Nettobasaldos";
@@ -112,7 +112,7 @@
 "U" = "E";
 
 /* The short unit display string for international units of insulin delivery per hour */
-"U/hr" = "E/h";
+"U/hr" = "E/timme";
 
 /* The title of the alert controller displayed after a potential carb entry send attempt fails */
 "Unable to Reach iPhone" = "Det går inte att nå iPhone";
diff --git a/WatchApp Extension/tr.lproj/Localizable.strings b/WatchApp Extension/tr.lproj/Localizable.strings
index 86c1b9aef..7566f1dfd 100644
--- a/WatchApp Extension/tr.lproj/Localizable.strings	
+++ b/WatchApp Extension/tr.lproj/Localizable.strings	
@@ -69,7 +69,7 @@
 "On" = "Açık";
 
 /* The text for the Watch button for enabling a temporary override */
-"Override" = "Geçersiz Kıl";
+"Override" = "Geçersiz kıl";
 
 /* Alert message for updated bolus recommendation on Apple Watch */
 "Please reconfirm the bolus amount." = "Lütfen bolus miktarını tekrar onaylayın.";
diff --git a/WatchApp Extension/vi.lproj/InfoPlist.strings b/WatchApp Extension/vi.lproj/InfoPlist.strings
new file mode 100644
index 000000000..20fe32df1
--- /dev/null
+++ b/WatchApp Extension/vi.lproj/InfoPlist.strings	
@@ -0,0 +1,3 @@
+/* Privacy - Health Update Usage Description */
+"NSHealthUpdateUsageDescription" = "Dữ liệu Carbohydrate của bữa ăn được nhập trên phần mềm và trên đồng hồ thông minh sẽ được lưu trữ tại app Health. Các thông số glucose được lấy từ thiết bị theo dõi đường huyết liên tục/CGM sẽ được lưu trữ an toàn trong HealthKit.";
+
diff --git a/WatchApp Extension/vi.lproj/Localizable.strings b/WatchApp Extension/vi.lproj/Localizable.strings
index eedc89b52..81a949147 100644
--- a/WatchApp Extension/vi.lproj/Localizable.strings	
+++ b/WatchApp Extension/vi.lproj/Localizable.strings	
@@ -1,3 +1,9 @@
+/* No glucose value representation (3 dashes for mg/dL) */
+"– – –" = "---";
+
+/* Format string for glucose range (1: lower bound)(2: upper bound)(3: unit) */
+"%1$@ – %2$@ %3$@" = "%1$@ – %2$@ %3$@";
+
 /* HUD row title for COB */
 "Active Carbs" = "Lượng Carbs còn hoạt động";
 
@@ -5,24 +11,55 @@
 "Active Insulin" = "Lượng Insulin còn hoạt động";
 
 /* Title of the user activity for adding carbs */
-"Add Carb Entry" = "Khai báo khối lượng Carb";
+"Add Carb Entry" = "Khai báo Carb";
+
+/* Button text to confirm manual bolus on Apple Watch */
+"Bolus" = "Bolus";
 
 /* The title of the alert controller displayed after a bolus attempt fails */
 "Bolus Failed" = "Bolus lỗi";
 
+/* Button text to continue from carb entry to bolus entry on Apple Watch */
+"Continue" = "Tiếp tục";
+
+/* The short unit display string for decibles */
+"dB" = "dB";
+
 /* The action button title to dismiss an error message */
 "Dismiss" = "Từ bỏ";
 
+/* Short unit label for gram measurement
+   The short unit display string for grams */
+"g" = "g";
+
 /* The recovery message displayed after a bolus attempt fails
    The recovery message displayed after a carb entry send attempt fails
    The recovery message displayed after a glucose range override send attempt fails */
 "Make sure your iPhone is nearby and try again" = "Đảm bảo rằng iPhone của bạn đang ở gần và thử lại";
 
+/* 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";
+
 /* HUD row title for Net Basal Rate */
 "Net Basal Rate" = "Tỷ lệ liều basal ròng";
 
+/* No comment provided by engineer. */
+"OK" = "OK";
+
+/* Label for on button */
+"On" = "On";
+
 /* The text for the Watch button for enabling a temporary override */
-"Override" = "Chồng liều";
+"Override" = "Chồng lên";
+
+/* Title for sheet to enable/disable pre-meal on watch */
+"Pre-Meal" = "Trước bữa ăn";
+
+/* Format string for combining localized numeric value and unit. (1: numeric value)(2: unit) */
+"QUANTITY_VALUE_AND_UNIT" = "%1$@ %2$@";
 
 /* The label and value showing the recommended bolus */
 "Rec: %@ U" = "Khuyến nghị: %@ U";
@@ -30,13 +67,19 @@
 /* HUD row title for remaining reservoir volume */
 "Reservoir Volume" = "Khối lượng ngăn chứa insulin";
 
+/* Button text to confirm carb entry without bolusing on Apple Watch */
+"Save" = "Lưu";
+
 /* The title of the alert controller displayed after a carb entry send attempt fails
    The title of the alert controller displayed after a glucose range override send attempt fails */
 "Send Failed" = "Chuyển bị lỗi";
 
+/* The short unit display string for international units of insulin */
+"U" = "U";
+
 /* The short unit display string for international units of insulin delivery per hour */
 "U/hr" = "U/giờ";
 
 /* The text for the Watch button for enabling workout mode */
-"Workout" = "Tập luyện";
+"Workout" = "Workout";
 
diff --git a/WatchApp Extension/zh-Hans-CN.lproj/Localizable.strings b/WatchApp Extension/zh-Hans-CN.lproj/Localizable.strings
deleted file mode 100644
index d9a27d7db..000000000
--- a/WatchApp Extension/zh-Hans-CN.lproj/Localizable.strings	
+++ /dev/null
@@ -1,42 +0,0 @@
-/* HUD row title for COB */
-"Active Carbs" = "活性碳水化合物";
-
-/* HUD row title for IOB */
-"Active Insulin" = "活性胰岛素";
-
-/* Title of the user activity for adding carbs */
-"Add Carb Entry" = "添加碳水化合物";
-
-/* The title of the alert controller displayed after a bolus attempt fails */
-"Bolus Failed" = "大剂量输注失败";
-
-/* The action button title to dismiss an error message */
-"Dismiss" = "忽略";
-
-/* The recovery message displayed after a bolus attempt fails
-   The recovery message displayed after a carb entry send attempt fails
-   The recovery message displayed after a glucose range override send attempt fails */
-"Make sure your iPhone is nearby and try again" = "请确保苹果手机接近设备并重试";
-
-/* HUD row title for Net Basal Rate */
-"Net Basal Rate" = "净基础率";
-
-/* The text for the Watch button for enabling a temporary override */
-"Override" = "覆盖";
-
-/* The label and value showing the recommended bolus */
-"Rec: %@ U" = "推荐: %@ 单位";
-
-/* HUD row title for remaining reservoir volume */
-"Reservoir Volume" = "储药器容量";
-
-/* The title of the alert controller displayed after a carb entry send attempt fails
-   The title of the alert controller displayed after a glucose range override send attempt fails */
-"Send Failed" = "发送失败";
-
-/* The short unit display string for international units of insulin delivery per hour */
-"U/hr" = "U/小时";
-
-/* The text for the Watch button for enabling workout mode */
-"Workout" = "运动";
-
diff --git a/WatchApp Extension/zh-Hans.lproj/Localizable.strings b/WatchApp Extension/zh-Hans.lproj/Localizable.strings
index d9a27d7db..e03baf967 100644
--- a/WatchApp Extension/zh-Hans.lproj/Localizable.strings	
+++ b/WatchApp Extension/zh-Hans.lproj/Localizable.strings	
@@ -10,6 +10,9 @@
 /* The title of the alert controller displayed after a bolus attempt fails */
 "Bolus Failed" = "大剂量输注失败";
 
+/* Button text to continue from carb entry to bolus entry on Apple Watch */
+"Continue" = "继续";
+
 /* The action button title to dismiss an error message */
 "Dismiss" = "忽略";
 
@@ -21,6 +24,9 @@
 /* HUD row title for Net Basal Rate */
 "Net Basal Rate" = "净基础率";
 
+/* Label for on button */
+"On" = "开";
+
 /* The text for the Watch button for enabling a temporary override */
 "Override" = "覆盖";
 
@@ -30,6 +36,9 @@
 /* HUD row title for remaining reservoir volume */
 "Reservoir Volume" = "储药器容量";
 
+/* Button text to confirm carb entry without bolusing on Apple Watch */
+"Save" = "保存";
+
 /* The title of the alert controller displayed after a carb entry send attempt fails
    The title of the alert controller displayed after a glucose range override send attempt fails */
 "Send Failed" = "发送失败";
diff --git a/WatchApp/cs.lproj/Interface.strings b/WatchApp/cs.lproj/Interface.strings
new file mode 100644
index 000000000..3a926b93b
--- /dev/null
+++ b/WatchApp/cs.lproj/Interface.strings
@@ -0,0 +1,6 @@
+/* Class = "WKInterfaceLabel"; text = "– – –"; ObjectID = "Dt1-kz-jMZ"; */
+"Dt1-kz-jMZ.text" = "– – –";
+
+/* Class = "WKInterfaceLabel"; text = "– – –"; ObjectID = "yl8-ZP-c3l"; */
+"yl8-ZP-c3l.text" = "– – –";
+
diff --git a/WatchApp/da.lproj/Interface.strings b/WatchApp/da.lproj/Interface.strings
index 751049d30..b631717d3 100644
--- a/WatchApp/da.lproj/Interface.strings
+++ b/WatchApp/da.lproj/Interface.strings
@@ -20,7 +20,7 @@
 "jj3-Gq-HBy.text" = "Bolus fejlede";
 
 /* Class = "WKInterfaceLabel"; text = "Running"; ObjectID = "JXa-s1-PJx"; */
-"JXa-s1-PJx.text" = "Kører";
+"JXa-s1-PJx.text" = "Løber";
 
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "Mhe-aR-kQQ"; */
 "Mhe-aR-kQQ.text" = "–";
diff --git a/WatchApp/de.lproj/Interface.strings b/WatchApp/de.lproj/Interface.strings
index 10392d419..e2bd9d868 100644
--- a/WatchApp/de.lproj/Interface.strings
+++ b/WatchApp/de.lproj/Interface.strings
@@ -20,7 +20,7 @@
 "jj3-Gq-HBy.text" = "Bolus fehlgeschlagen";
 
 /* Class = "WKInterfaceLabel"; text = "Running"; ObjectID = "JXa-s1-PJx"; */
-"JXa-s1-PJx.text" = "Läuft";
+"JXa-s1-PJx.text" = "Laufen";
 
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "Mhe-aR-kQQ"; */
 "Mhe-aR-kQQ.text" = "–";
diff --git a/WatchApp/es.lproj/Interface.strings b/WatchApp/es.lproj/Interface.strings
index b7baa4f33..5611ae9b5 100644
--- a/WatchApp/es.lproj/Interface.strings
+++ b/WatchApp/es.lproj/Interface.strings
@@ -1,20 +1,20 @@
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "CsQ-fc-KLC"; */
-"CsQ-fc-KLC.text" = "—";
+"CsQ-fc-KLC.text" = "–";
 
 /* Class = "WKInterfaceLabel"; text = "TOTAL CARBS"; ObjectID = "dea-qG-va8"; */
 "dea-qG-va8.text" = "CARBS";
 
 /* Class = "WKInterfaceLabel"; text = "– – –"; ObjectID = "Dt1-kz-jMZ"; */
-"Dt1-kz-jMZ.text" = "---";
+"Dt1-kz-jMZ.text" = "– – –";
 
 /* Class = "WKInterfaceLabel"; text = "Pre-Meal"; ObjectID = "f5G-bS-9pd"; */
 "f5G-bS-9pd.text" = "Pre-Comida";
 
 /* Class = "WKInterfaceLabel"; text = "Carbs"; ObjectID = "hln-CI-MRP"; */
-"hln-CI-MRP.text" = "Carbs";
+"hln-CI-MRP.text" = "Carbohidratos";
 
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "IRi-4t-ESO"; */
-"IRi-4t-ESO.text" = "—";
+"IRi-4t-ESO.text" = "–";
 
 /* Class = "WKInterfaceLabel"; text = "Bolus Failed"; ObjectID = "jj3-Gq-HBy"; */
 "jj3-Gq-HBy.text" = "Bolo Falló";
@@ -23,7 +23,7 @@
 "JXa-s1-PJx.text" = "Correr";
 
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "Mhe-aR-kQQ"; */
-"Mhe-aR-kQQ.text" = "—";
+"Mhe-aR-kQQ.text" = "–";
 
 /* Class = "WKInterfaceLabel"; text = "TITLE"; ObjectID = "MZU-QV-PtZ"; */
 "MZU-QV-PtZ.text" = "TÍTULO";
@@ -53,7 +53,7 @@
 "ycL-5X-a05.text" = "CARBS ACTIVOS";
 
 /* Class = "WKInterfaceLabel"; text = "– – –"; ObjectID = "yl8-ZP-c3l"; */
-"yl8-ZP-c3l.text" = "---";
+"yl8-ZP-c3l.text" = "– – –";
 
 /* Class = "WKInterfaceLabel"; text = "Label"; ObjectID = "zO8-x6-bZd"; */
 "zO8-x6-bZd.text" = "Etiqueta";
diff --git a/WatchApp/fi.lproj/Interface.strings b/WatchApp/fi.lproj/Interface.strings
index c676abfbe..5fb2f12a5 100644
--- a/WatchApp/fi.lproj/Interface.strings
+++ b/WatchApp/fi.lproj/Interface.strings
@@ -1,20 +1,20 @@
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "CsQ-fc-KLC"; */
-"CsQ-fc-KLC.text" = "—";
+"CsQ-fc-KLC.text" = "–";
 
 /* Class = "WKInterfaceLabel"; text = "TOTAL CARBS"; ObjectID = "dea-qG-va8"; */
 "dea-qG-va8.text" = "HIILARI YHT.";
 
 /* Class = "WKInterfaceLabel"; text = "– – –"; ObjectID = "Dt1-kz-jMZ"; */
-"Dt1-kz-jMZ.text" = "---";
+"Dt1-kz-jMZ.text" = "– – –";
 
 /* Class = "WKInterfaceLabel"; text = "Pre-Meal"; ObjectID = "f5G-bS-9pd"; */
-"f5G-bS-9pd.text" = "E. ateriaa";
+"f5G-bS-9pd.text" = "Ennen ateriaa";
 
 /* Class = "WKInterfaceLabel"; text = "Carbs"; ObjectID = "hln-CI-MRP"; */
-"hln-CI-MRP.text" = "Hiilari";
+"hln-CI-MRP.text" = "Hiilihydraatit";
 
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "IRi-4t-ESO"; */
-"IRi-4t-ESO.text" = "—";
+"IRi-4t-ESO.text" = "–";
 
 /* Class = "WKInterfaceLabel"; text = "Bolus Failed"; ObjectID = "jj3-Gq-HBy"; */
 "jj3-Gq-HBy.text" = "Bolus epäonnistui";
@@ -23,7 +23,7 @@
 "JXa-s1-PJx.text" = "Juoksu";
 
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "Mhe-aR-kQQ"; */
-"Mhe-aR-kQQ.text" = "—";
+"Mhe-aR-kQQ.text" = "–";
 
 /* Class = "WKInterfaceLabel"; text = "TITLE"; ObjectID = "MZU-QV-PtZ"; */
 "MZU-QV-PtZ.text" = "OTSIKKO";
@@ -53,7 +53,7 @@
 "ycL-5X-a05.text" = "AKT. HIILARI";
 
 /* Class = "WKInterfaceLabel"; text = "– – –"; ObjectID = "yl8-ZP-c3l"; */
-"yl8-ZP-c3l.text" = "---";
+"yl8-ZP-c3l.text" = "– – –";
 
 /* Class = "WKInterfaceLabel"; text = "Label"; ObjectID = "zO8-x6-bZd"; */
 "zO8-x6-bZd.text" = "Nimiö";
diff --git a/WatchApp/fr.lproj/Interface.strings b/WatchApp/fr.lproj/Interface.strings
index 49691654e..b05a7fb86 100644
--- a/WatchApp/fr.lproj/Interface.strings
+++ b/WatchApp/fr.lproj/Interface.strings
@@ -1,11 +1,11 @@
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "CsQ-fc-KLC"; */
-"CsQ-fc-KLC.text" = "—";
+"CsQ-fc-KLC.text" = "–";
 
 /* Class = "WKInterfaceLabel"; text = "TOTAL CARBS"; ObjectID = "dea-qG-va8"; */
 "dea-qG-va8.text" = "GLUCIDES TOTAUX";
 
 /* Class = "WKInterfaceLabel"; text = "– – –"; ObjectID = "Dt1-kz-jMZ"; */
-"Dt1-kz-jMZ.text" = "---";
+"Dt1-kz-jMZ.text" = "– – –";
 
 /* Class = "WKInterfaceLabel"; text = "Pre-Meal"; ObjectID = "f5G-bS-9pd"; */
 "f5G-bS-9pd.text" = "Pré-Repas";
@@ -14,16 +14,16 @@
 "hln-CI-MRP.text" = "Glucides";
 
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "IRi-4t-ESO"; */
-"IRi-4t-ESO.text" = "—";
+"IRi-4t-ESO.text" = "–";
 
 /* Class = "WKInterfaceLabel"; text = "Bolus Failed"; ObjectID = "jj3-Gq-HBy"; */
 "jj3-Gq-HBy.text" = "Échec du bolus";
 
 /* Class = "WKInterfaceLabel"; text = "Running"; ObjectID = "JXa-s1-PJx"; */
-"JXa-s1-PJx.text" = "Course";
+"JXa-s1-PJx.text" = "En marche";
 
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "Mhe-aR-kQQ"; */
-"Mhe-aR-kQQ.text" = "—";
+"Mhe-aR-kQQ.text" = "–";
 
 /* Class = "WKInterfaceLabel"; text = "TITLE"; ObjectID = "MZU-QV-PtZ"; */
 "MZU-QV-PtZ.text" = "TITLE";
@@ -53,7 +53,7 @@
 "ycL-5X-a05.text" = "GLUCIDES ACTIFS";
 
 /* Class = "WKInterfaceLabel"; text = "– – –"; ObjectID = "yl8-ZP-c3l"; */
-"yl8-ZP-c3l.text" = "---";
+"yl8-ZP-c3l.text" = "– – –";
 
 /* Class = "WKInterfaceLabel"; text = "Label"; ObjectID = "zO8-x6-bZd"; */
 "zO8-x6-bZd.text" = "Label";
diff --git a/WatchApp/he.lproj/Interface.strings b/WatchApp/he.lproj/Interface.strings
index 90168e6e5..cc20662d5 100644
--- a/WatchApp/he.lproj/Interface.strings
+++ b/WatchApp/he.lproj/Interface.strings
@@ -1,11 +1,11 @@
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "CsQ-fc-KLC"; */
-"CsQ-fc-KLC.text" = "–";
+"CsQ-fc-KLC.text" = "-";
 
 /* Class = "WKInterfaceLabel"; text = "TOTAL CARBS"; ObjectID = "dea-qG-va8"; */
 "dea-qG-va8.text" = "TOTAL CARBS";
 
 /* Class = "WKInterfaceLabel"; text = "– – –"; ObjectID = "Dt1-kz-jMZ"; */
-"Dt1-kz-jMZ.text" = "– – –";
+"Dt1-kz-jMZ.text" = "---";
 
 /* Class = "WKInterfaceLabel"; text = "Pre-Meal"; ObjectID = "f5G-bS-9pd"; */
 "f5G-bS-9pd.text" = "Pre-Meal";
@@ -14,7 +14,7 @@
 "hln-CI-MRP.text" = "Carbs";
 
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "IRi-4t-ESO"; */
-"IRi-4t-ESO.text" = "–";
+"IRi-4t-ESO.text" = "-";
 
 /* Class = "WKInterfaceLabel"; text = "Bolus Failed"; ObjectID = "jj3-Gq-HBy"; */
 "jj3-Gq-HBy.text" = "Bolus Failed";
@@ -23,7 +23,7 @@
 "JXa-s1-PJx.text" = "Running";
 
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "Mhe-aR-kQQ"; */
-"Mhe-aR-kQQ.text" = "–";
+"Mhe-aR-kQQ.text" = "-";
 
 /* Class = "WKInterfaceLabel"; text = "TITLE"; ObjectID = "MZU-QV-PtZ"; */
 "MZU-QV-PtZ.text" = "TITLE";
@@ -53,7 +53,7 @@
 "ycL-5X-a05.text" = "ACTIVE CARBS";
 
 /* Class = "WKInterfaceLabel"; text = "– – –"; ObjectID = "yl8-ZP-c3l"; */
-"yl8-ZP-c3l.text" = "– – –";
+"yl8-ZP-c3l.text" = "---";
 
 /* Class = "WKInterfaceLabel"; text = "Label"; ObjectID = "zO8-x6-bZd"; */
 "zO8-x6-bZd.text" = "Label";
diff --git a/WatchApp/hi.lproj/Interface.strings b/WatchApp/hi.lproj/Interface.strings
new file mode 100644
index 000000000..3a926b93b
--- /dev/null
+++ b/WatchApp/hi.lproj/Interface.strings
@@ -0,0 +1,6 @@
+/* Class = "WKInterfaceLabel"; text = "– – –"; ObjectID = "Dt1-kz-jMZ"; */
+"Dt1-kz-jMZ.text" = "– – –";
+
+/* Class = "WKInterfaceLabel"; text = "– – –"; ObjectID = "yl8-ZP-c3l"; */
+"yl8-ZP-c3l.text" = "– – –";
+
diff --git a/WatchApp/it.lproj/Interface.strings b/WatchApp/it.lproj/Interface.strings
index 28019579e..e7f8c1ef9 100644
--- a/WatchApp/it.lproj/Interface.strings
+++ b/WatchApp/it.lproj/Interface.strings
@@ -1,5 +1,5 @@
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "CsQ-fc-KLC"; */
-"CsQ-fc-KLC.text" = "—";
+"CsQ-fc-KLC.text" = "–";
 
 /* Class = "WKInterfaceLabel"; text = "TOTAL CARBS"; ObjectID = "dea-qG-va8"; */
 "dea-qG-va8.text" = "TOTALE CARBOIDRATI";
@@ -11,19 +11,19 @@
 "f5G-bS-9pd.text" = "Pre-Pasto";
 
 /* Class = "WKInterfaceLabel"; text = "Carbs"; ObjectID = "hln-CI-MRP"; */
-"hln-CI-MRP.text" = "Carboidrati";
+"hln-CI-MRP.text" = "Carb.";
 
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "IRi-4t-ESO"; */
-"IRi-4t-ESO.text" = "—";
+"IRi-4t-ESO.text" = "–";
 
 /* Class = "WKInterfaceLabel"; text = "Bolus Failed"; ObjectID = "jj3-Gq-HBy"; */
 "jj3-Gq-HBy.text" = "Bolo Fallito";
 
 /* Class = "WKInterfaceLabel"; text = "Running"; ObjectID = "JXa-s1-PJx"; */
-"JXa-s1-PJx.text" = "Attività fisica";
+"JXa-s1-PJx.text" = "Corsa";
 
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "Mhe-aR-kQQ"; */
-"Mhe-aR-kQQ.text" = "—";
+"Mhe-aR-kQQ.text" = "–";
 
 /* Class = "WKInterfaceLabel"; text = "TITLE"; ObjectID = "MZU-QV-PtZ"; */
 "MZU-QV-PtZ.text" = "TITOLO";
diff --git a/WatchApp/ja.lproj/InfoPlist.strings b/WatchApp/ja.lproj/InfoPlist.strings
new file mode 100644
index 000000000..de9898d5a
--- /dev/null
+++ b/WatchApp/ja.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* (No Comment) */
+"CFBundleDisplayName" = "ループ";
+
+/* (No Comment) */
+"CFBundleName" = "$(PRODUCT_NAME)";
+
diff --git a/WatchApp/ja.lproj/Interface.strings b/WatchApp/ja.lproj/Interface.strings
index 0374f7ec8..fa66ec3dd 100644
--- a/WatchApp/ja.lproj/Interface.strings
+++ b/WatchApp/ja.lproj/Interface.strings
@@ -11,7 +11,7 @@
 "f5G-bS-9pd.text" = "食前";
 
 /* Class = "WKInterfaceLabel"; text = "Carbs"; ObjectID = "hln-CI-MRP"; */
-"hln-CI-MRP.text" = "糖質";
+"hln-CI-MRP.text" = "カーボ";
 
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "IRi-4t-ESO"; */
 "IRi-4t-ESO.text" = "—";
diff --git a/WatchApp/nb.lproj/Interface.strings b/WatchApp/nb.lproj/Interface.strings
index 101f69d17..92d8e5a05 100644
--- a/WatchApp/nb.lproj/Interface.strings
+++ b/WatchApp/nb.lproj/Interface.strings
@@ -1,11 +1,11 @@
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "CsQ-fc-KLC"; */
-"CsQ-fc-KLC.text" = "—";
+"CsQ-fc-KLC.text" = "–";
 
 /* Class = "WKInterfaceLabel"; text = "TOTAL CARBS"; ObjectID = "dea-qG-va8"; */
 "dea-qG-va8.text" = "KARBOHYDRATER TOTALT";
 
 /* Class = "WKInterfaceLabel"; text = "– – –"; ObjectID = "Dt1-kz-jMZ"; */
-"Dt1-kz-jMZ.text" = "---";
+"Dt1-kz-jMZ.text" = "– – –";
 
 /* Class = "WKInterfaceLabel"; text = "Pre-Meal"; ObjectID = "f5G-bS-9pd"; */
 "f5G-bS-9pd.text" = "Pre-måltid";
@@ -14,7 +14,7 @@
 "hln-CI-MRP.text" = "Karbohydrater";
 
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "IRi-4t-ESO"; */
-"IRi-4t-ESO.text" = "—";
+"IRi-4t-ESO.text" = "–";
 
 /* Class = "WKInterfaceLabel"; text = "Bolus Failed"; ObjectID = "jj3-Gq-HBy"; */
 "jj3-Gq-HBy.text" = "Bolus feilet";
@@ -23,7 +23,7 @@
 "JXa-s1-PJx.text" = "Løper";
 
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "Mhe-aR-kQQ"; */
-"Mhe-aR-kQQ.text" = "—";
+"Mhe-aR-kQQ.text" = "–";
 
 /* Class = "WKInterfaceLabel"; text = "TITLE"; ObjectID = "MZU-QV-PtZ"; */
 "MZU-QV-PtZ.text" = "TITTEL";
@@ -53,7 +53,7 @@
 "ycL-5X-a05.text" = "AKTIVE KARBOHYDRATER";
 
 /* Class = "WKInterfaceLabel"; text = "– – –"; ObjectID = "yl8-ZP-c3l"; */
-"yl8-ZP-c3l.text" = "---";
+"yl8-ZP-c3l.text" = "– – –";
 
 /* Class = "WKInterfaceLabel"; text = "Label"; ObjectID = "zO8-x6-bZd"; */
 "zO8-x6-bZd.text" = "Etikett";
diff --git a/WatchApp/nl.lproj/Interface.strings b/WatchApp/nl.lproj/Interface.strings
index 9a687520d..daf7473d9 100644
--- a/WatchApp/nl.lproj/Interface.strings
+++ b/WatchApp/nl.lproj/Interface.strings
@@ -1,5 +1,5 @@
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "CsQ-fc-KLC"; */
-"CsQ-fc-KLC.text" = "—";
+"CsQ-fc-KLC.text" = "–";
 
 /* Class = "WKInterfaceLabel"; text = "TOTAL CARBS"; ObjectID = "dea-qG-va8"; */
 "dea-qG-va8.text" = "Totaal Koolhydraten";
@@ -14,13 +14,13 @@
 "hln-CI-MRP.text" = "Koolhydraten";
 
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "IRi-4t-ESO"; */
-"IRi-4t-ESO.text" = "—";
+"IRi-4t-ESO.text" = "–";
 
 /* Class = "WKInterfaceLabel"; text = "Bolus Failed"; ObjectID = "jj3-Gq-HBy"; */
 "jj3-Gq-HBy.text" = "Bolus Mislukt";
 
 /* Class = "WKInterfaceLabel"; text = "Running"; ObjectID = "JXa-s1-PJx"; */
-"JXa-s1-PJx.text" = "Actief";
+"JXa-s1-PJx.text" = "Hardlopen";
 
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "Mhe-aR-kQQ"; */
 "Mhe-aR-kQQ.text" = "–";
@@ -56,5 +56,5 @@
 "yl8-ZP-c3l.text" = "– –";
 
 /* Class = "WKInterfaceLabel"; text = "Label"; ObjectID = "zO8-x6-bZd"; */
-"zO8-x6-bZd.text" = "Label";
+"zO8-x6-bZd.text" = "Etiket";
 
diff --git a/WatchApp/pl.lproj/InfoPlist.strings b/WatchApp/pl.lproj/InfoPlist.strings
index cea778d37..9250064a2 100644
--- a/WatchApp/pl.lproj/InfoPlist.strings
+++ b/WatchApp/pl.lproj/InfoPlist.strings
@@ -1,3 +1,6 @@
 /* (No Comment) */
-"CFBundleDisplayName" = "Pętla";
+"CFBundleDisplayName" = "Loop";
+
+/* (No Comment) */
+"CFBundleName" = "$(PRODUCT_NAME)";
 
diff --git a/WatchApp/pl.lproj/Interface.strings b/WatchApp/pl.lproj/Interface.strings
index 951b771be..6199faad1 100644
--- a/WatchApp/pl.lproj/Interface.strings
+++ b/WatchApp/pl.lproj/Interface.strings
@@ -1,11 +1,11 @@
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "CsQ-fc-KLC"; */
-"CsQ-fc-KLC.text" = "—";
+"CsQ-fc-KLC.text" = "–";
 
 /* Class = "WKInterfaceLabel"; text = "TOTAL CARBS"; ObjectID = "dea-qG-va8"; */
 "dea-qG-va8.text" = "WĘGLOWODANY OGÓŁEM";
 
 /* Class = "WKInterfaceLabel"; text = "– – –"; ObjectID = "Dt1-kz-jMZ"; */
-"Dt1-kz-jMZ.text" = "---";
+"Dt1-kz-jMZ.text" = "– – –";
 
 /* Class = "WKInterfaceLabel"; text = "Pre-Meal"; ObjectID = "f5G-bS-9pd"; */
 "f5G-bS-9pd.text" = "Przed posiłkiem";
@@ -14,7 +14,7 @@
 "hln-CI-MRP.text" = "Węglowodany";
 
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "IRi-4t-ESO"; */
-"IRi-4t-ESO.text" = "—";
+"IRi-4t-ESO.text" = "–";
 
 /* Class = "WKInterfaceLabel"; text = "Bolus Failed"; ObjectID = "jj3-Gq-HBy"; */
 "jj3-Gq-HBy.text" = "Bolus nie podany";
@@ -23,7 +23,7 @@
 "JXa-s1-PJx.text" = "Pracuje";
 
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "Mhe-aR-kQQ"; */
-"Mhe-aR-kQQ.text" = "—";
+"Mhe-aR-kQQ.text" = "–";
 
 /* Class = "WKInterfaceLabel"; text = "TITLE"; ObjectID = "MZU-QV-PtZ"; */
 "MZU-QV-PtZ.text" = "TYTUŁ";
@@ -53,7 +53,7 @@
 "ycL-5X-a05.text" = "AKTYWNE WĘGLOWODANY";
 
 /* Class = "WKInterfaceLabel"; text = "– – –"; ObjectID = "yl8-ZP-c3l"; */
-"yl8-ZP-c3l.text" = "---";
+"yl8-ZP-c3l.text" = "– – –";
 
 /* Class = "WKInterfaceLabel"; text = "Label"; ObjectID = "zO8-x6-bZd"; */
 "zO8-x6-bZd.text" = "Etykieta";
diff --git a/WatchApp/pt-BR.lproj/InfoPlist.strings b/WatchApp/pt-BR.lproj/InfoPlist.strings
new file mode 100644
index 000000000..9250064a2
--- /dev/null
+++ b/WatchApp/pt-BR.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* (No Comment) */
+"CFBundleDisplayName" = "Loop";
+
+/* (No Comment) */
+"CFBundleName" = "$(PRODUCT_NAME)";
+
diff --git a/WatchApp/ro.lproj/Interface.strings b/WatchApp/ro.lproj/Interface.strings
index 0a87fa6af..fc462cb69 100644
--- a/WatchApp/ro.lproj/Interface.strings
+++ b/WatchApp/ro.lproj/Interface.strings
@@ -1,11 +1,11 @@
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "CsQ-fc-KLC"; */
-"CsQ-fc-KLC.text" = "—";
+"CsQ-fc-KLC.text" = "–";
 
 /* Class = "WKInterfaceLabel"; text = "TOTAL CARBS"; ObjectID = "dea-qG-va8"; */
 "dea-qG-va8.text" = "CARBOHIDRAȚI TOTALI";
 
 /* Class = "WKInterfaceLabel"; text = "– – –"; ObjectID = "Dt1-kz-jMZ"; */
-"Dt1-kz-jMZ.text" = "---";
+"Dt1-kz-jMZ.text" = "– – –";
 
 /* Class = "WKInterfaceLabel"; text = "Pre-Meal"; ObjectID = "f5G-bS-9pd"; */
 "f5G-bS-9pd.text" = "Preprandial";
@@ -14,16 +14,16 @@
 "hln-CI-MRP.text" = "Carbohidrați";
 
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "IRi-4t-ESO"; */
-"IRi-4t-ESO.text" = "—";
+"IRi-4t-ESO.text" = "–";
 
 /* Class = "WKInterfaceLabel"; text = "Bolus Failed"; ObjectID = "jj3-Gq-HBy"; */
 "jj3-Gq-HBy.text" = "Bolus eșuat";
 
 /* Class = "WKInterfaceLabel"; text = "Running"; ObjectID = "JXa-s1-PJx"; */
-"JXa-s1-PJx.text" = "Rulează";
+"JXa-s1-PJx.text" = "Se rulează";
 
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "Mhe-aR-kQQ"; */
-"Mhe-aR-kQQ.text" = "—";
+"Mhe-aR-kQQ.text" = "–";
 
 /* Class = "WKInterfaceLabel"; text = "TITLE"; ObjectID = "MZU-QV-PtZ"; */
 "MZU-QV-PtZ.text" = "TITLU";
@@ -53,7 +53,7 @@
 "ycL-5X-a05.text" = "CARBOHIDRAȚI ACTIVI";
 
 /* Class = "WKInterfaceLabel"; text = "– – –"; ObjectID = "yl8-ZP-c3l"; */
-"yl8-ZP-c3l.text" = "---";
+"yl8-ZP-c3l.text" = "– – –";
 
 /* Class = "WKInterfaceLabel"; text = "Label"; ObjectID = "zO8-x6-bZd"; */
 "zO8-x6-bZd.text" = "Etichetă";
diff --git a/WatchApp/ru.lproj/InfoPlist.strings b/WatchApp/ru.lproj/InfoPlist.strings
index 273b97d2b..9250064a2 100644
--- a/WatchApp/ru.lproj/InfoPlist.strings
+++ b/WatchApp/ru.lproj/InfoPlist.strings
@@ -1,3 +1,6 @@
 /* (No Comment) */
 "CFBundleDisplayName" = "Loop";
 
+/* (No Comment) */
+"CFBundleName" = "$(PRODUCT_NAME)";
+
diff --git a/WatchApp/ru.lproj/Interface.strings b/WatchApp/ru.lproj/Interface.strings
index 762e27a9b..cf2c90d48 100644
--- a/WatchApp/ru.lproj/Interface.strings
+++ b/WatchApp/ru.lproj/Interface.strings
@@ -1,11 +1,11 @@
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "CsQ-fc-KLC"; */
-"CsQ-fc-KLC.text" = "—";
+"CsQ-fc-KLC.text" = "–";
 
 /* Class = "WKInterfaceLabel"; text = "TOTAL CARBS"; ObjectID = "dea-qG-va8"; */
 "dea-qG-va8.text" = "ВСЕГО УГЛЕВОДОВ";
 
 /* Class = "WKInterfaceLabel"; text = "– – –"; ObjectID = "Dt1-kz-jMZ"; */
-"Dt1-kz-jMZ.text" = "---";
+"Dt1-kz-jMZ.text" = "– – –";
 
 /* Class = "WKInterfaceLabel"; text = "Pre-Meal"; ObjectID = "f5G-bS-9pd"; */
 "f5G-bS-9pd.text" = "До еды";
@@ -14,22 +14,22 @@
 "hln-CI-MRP.text" = "Углеводы";
 
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "IRi-4t-ESO"; */
-"IRi-4t-ESO.text" = "—";
+"IRi-4t-ESO.text" = "–";
 
 /* Class = "WKInterfaceLabel"; text = "Bolus Failed"; ObjectID = "jj3-Gq-HBy"; */
 "jj3-Gq-HBy.text" = "Болюс не состоялся";
 
 /* Class = "WKInterfaceLabel"; text = "Running"; ObjectID = "JXa-s1-PJx"; */
-"JXa-s1-PJx.text" = "Бег";
+"JXa-s1-PJx.text" = "Выполнение";
 
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "Mhe-aR-kQQ"; */
-"Mhe-aR-kQQ.text" = "—";
+"Mhe-aR-kQQ.text" = "–";
 
 /* Class = "WKInterfaceLabel"; text = "TITLE"; ObjectID = "MZU-QV-PtZ"; */
 "MZU-QV-PtZ.text" = "НАЗВАНИЕ";
 
 /* Class = "WKInterfaceLabel"; text = "Override"; ObjectID = "nC0-X3-oFJ"; */
-"nC0-X3-oFJ.text" = "Перезаписать";
+"nC0-X3-oFJ.text" = "Включить";
 
 /* Class = "WKInterfaceController"; title = "Loop"; ObjectID = "rNf-Mh-tID"; */
 "rNf-Mh-tID.title" = "Loop";
@@ -53,7 +53,7 @@
 "ycL-5X-a05.text" = "АКТИВНЫЕ УГЛЕВОДЫ";
 
 /* Class = "WKInterfaceLabel"; text = "– – –"; ObjectID = "yl8-ZP-c3l"; */
-"yl8-ZP-c3l.text" = "---";
+"yl8-ZP-c3l.text" = "– – –";
 
 /* Class = "WKInterfaceLabel"; text = "Label"; ObjectID = "zO8-x6-bZd"; */
 "zO8-x6-bZd.text" = "Ярлык";
diff --git a/WatchApp/sk.lproj/InfoPlist.strings b/WatchApp/sk.lproj/InfoPlist.strings
new file mode 100644
index 000000000..273b97d2b
--- /dev/null
+++ b/WatchApp/sk.lproj/InfoPlist.strings
@@ -0,0 +1,3 @@
+/* (No Comment) */
+"CFBundleDisplayName" = "Loop";
+
diff --git a/WatchApp/sk.lproj/Interface.strings b/WatchApp/sk.lproj/Interface.strings
new file mode 100644
index 000000000..39844f814
--- /dev/null
+++ b/WatchApp/sk.lproj/Interface.strings
@@ -0,0 +1,15 @@
+/* Class = "WKInterfaceLabel"; text = "– – –"; ObjectID = "Dt1-kz-jMZ"; */
+"Dt1-kz-jMZ.text" = "– – –";
+
+/* Class = "WKInterfaceController"; title = "Loop"; ObjectID = "rNf-Mh-tID"; */
+"rNf-Mh-tID.title" = "Loop";
+
+/* Class = "WKInterfaceLabel"; text = "Bolus"; ObjectID = "smL-Rc-IZh"; */
+"smL-Rc-IZh.text" = "Bolus";
+
+/* Class = "WKInterfaceController"; title = "Loop"; ObjectID = "v5b-sO-bb8"; */
+"v5b-sO-bb8.title" = "Loop";
+
+/* Class = "WKInterfaceLabel"; text = "– – –"; ObjectID = "yl8-ZP-c3l"; */
+"yl8-ZP-c3l.text" = "– – –";
+
diff --git a/WatchApp/sv.lproj/Interface.strings b/WatchApp/sv.lproj/Interface.strings
index 43cb4490b..668835726 100644
--- a/WatchApp/sv.lproj/Interface.strings
+++ b/WatchApp/sv.lproj/Interface.strings
@@ -1,20 +1,20 @@
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "CsQ-fc-KLC"; */
-"CsQ-fc-KLC.text" = "—";
+"CsQ-fc-KLC.text" = "–";
 
 /* Class = "WKInterfaceLabel"; text = "TOTAL CARBS"; ObjectID = "dea-qG-va8"; */
 "dea-qG-va8.text" = "Kolh. totalt";
 
 /* Class = "WKInterfaceLabel"; text = "– – –"; ObjectID = "Dt1-kz-jMZ"; */
-"Dt1-kz-jMZ.text" = "---";
+"Dt1-kz-jMZ.text" = "– – –";
 
 /* Class = "WKInterfaceLabel"; text = "Pre-Meal"; ObjectID = "f5G-bS-9pd"; */
 "f5G-bS-9pd.text" = "Före måltid";
 
 /* Class = "WKInterfaceLabel"; text = "Carbs"; ObjectID = "hln-CI-MRP"; */
-"hln-CI-MRP.text" = "Kolh.";
+"hln-CI-MRP.text" = "Kolhydrater";
 
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "IRi-4t-ESO"; */
-"IRi-4t-ESO.text" = "—";
+"IRi-4t-ESO.text" = "–";
 
 /* Class = "WKInterfaceLabel"; text = "Bolus Failed"; ObjectID = "jj3-Gq-HBy"; */
 "jj3-Gq-HBy.text" = "Bolus misslyckades";
@@ -23,7 +23,7 @@
 "JXa-s1-PJx.text" = "Löpning";
 
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "Mhe-aR-kQQ"; */
-"Mhe-aR-kQQ.text" = "—";
+"Mhe-aR-kQQ.text" = "–";
 
 /* Class = "WKInterfaceLabel"; text = "TITLE"; ObjectID = "MZU-QV-PtZ"; */
 "MZU-QV-PtZ.text" = "TITLE";
@@ -53,7 +53,7 @@
 "ycL-5X-a05.text" = "AKTIVA KOLH.";
 
 /* Class = "WKInterfaceLabel"; text = "– – –"; ObjectID = "yl8-ZP-c3l"; */
-"yl8-ZP-c3l.text" = "---";
+"yl8-ZP-c3l.text" = "– – –";
 
 /* Class = "WKInterfaceLabel"; text = "Label"; ObjectID = "zO8-x6-bZd"; */
 "zO8-x6-bZd.text" = "Label";
diff --git a/WatchApp/tr.lproj/Interface.strings b/WatchApp/tr.lproj/Interface.strings
index e8397a632..6de4cf475 100644
--- a/WatchApp/tr.lproj/Interface.strings
+++ b/WatchApp/tr.lproj/Interface.strings
@@ -20,7 +20,7 @@
 "jj3-Gq-HBy.text" = "Bolus Başarısız";
 
 /* Class = "WKInterfaceLabel"; text = "Running"; ObjectID = "JXa-s1-PJx"; */
-"JXa-s1-PJx.text" = "Koşu";
+"JXa-s1-PJx.text" = "Çalışıyor";
 
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "Mhe-aR-kQQ"; */
 "Mhe-aR-kQQ.text" = "–";
diff --git a/WatchApp/vi.lproj/InfoPlist.strings b/WatchApp/vi.lproj/InfoPlist.strings
new file mode 100644
index 000000000..9250064a2
--- /dev/null
+++ b/WatchApp/vi.lproj/InfoPlist.strings
@@ -0,0 +1,6 @@
+/* (No Comment) */
+"CFBundleDisplayName" = "Loop";
+
+/* (No Comment) */
+"CFBundleName" = "$(PRODUCT_NAME)";
+
diff --git a/WatchApp/vi.lproj/Interface.strings b/WatchApp/vi.lproj/Interface.strings
index 7b9bd1fd8..0f58d40ea 100644
--- a/WatchApp/vi.lproj/Interface.strings
+++ b/WatchApp/vi.lproj/Interface.strings
@@ -11,7 +11,7 @@
 "f5G-bS-9pd.text" = "Trước bữa ăn";
 
 /* Class = "WKInterfaceLabel"; text = "Carbs"; ObjectID = "hln-CI-MRP"; */
-"hln-CI-MRP.text" = "Lượng Carbs";
+"hln-CI-MRP.text" = "Carbs";
 
 /* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "IRi-4t-ESO"; */
 "IRi-4t-ESO.text" = "—";
diff --git a/WatchApp/zh-Hans-CN.lproj/Interface.strings b/WatchApp/zh-Hans-CN.lproj/Interface.strings
deleted file mode 100644
index a493bb05e..000000000
--- a/WatchApp/zh-Hans-CN.lproj/Interface.strings
+++ /dev/null
@@ -1,60 +0,0 @@
-/* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "CsQ-fc-KLC"; */
-"CsQ-fc-KLC.text" = "—";
-
-/* Class = "WKInterfaceLabel"; text = "TOTAL CARBS"; ObjectID = "dea-qG-va8"; */
-"dea-qG-va8.text" = "碳水总量";
-
-/* Class = "WKInterfaceLabel"; text = "– – –"; ObjectID = "Dt1-kz-jMZ"; */
-"Dt1-kz-jMZ.text" = "---";
-
-/* Class = "WKInterfaceLabel"; text = "Pre-Meal"; ObjectID = "f5G-bS-9pd"; */
-"f5G-bS-9pd.text" = "餐前模式";
-
-/* Class = "WKInterfaceLabel"; text = "Carbs"; ObjectID = "hln-CI-MRP"; */
-"hln-CI-MRP.text" = "碳水化合物";
-
-/* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "IRi-4t-ESO"; */
-"IRi-4t-ESO.text" = "—";
-
-/* Class = "WKInterfaceLabel"; text = "Bolus Failed"; ObjectID = "jj3-Gq-HBy"; */
-"jj3-Gq-HBy.text" = "大剂量输注失败";
-
-/* Class = "WKInterfaceLabel"; text = "Running"; ObjectID = "JXa-s1-PJx"; */
-"JXa-s1-PJx.text" = "运行中";
-
-/* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "Mhe-aR-kQQ"; */
-"Mhe-aR-kQQ.text" = "—";
-
-/* Class = "WKInterfaceLabel"; text = "TITLE"; ObjectID = "MZU-QV-PtZ"; */
-"MZU-QV-PtZ.text" = "名称";
-
-/* Class = "WKInterfaceLabel"; text = "Override"; ObjectID = "nC0-X3-oFJ"; */
-"nC0-X3-oFJ.text" = "Override";
-
-/* Class = "WKInterfaceController"; title = "Loop"; ObjectID = "rNf-Mh-tID"; */
-"rNf-Mh-tID.title" = "Loop";
-
-/* Class = "WKInterfaceLabel"; text = "Bolus"; ObjectID = "smL-Rc-IZh"; */
-"smL-Rc-IZh.text" = "大剂量";
-
-/* Class = "WKInterfaceLabel"; text = "Label"; ObjectID = "T4U-wP-dSW"; */
-"T4U-wP-dSW.text" = "标签";
-
-/* Class = "WKInterfaceLabel"; text = "🏃‍♀️"; ObjectID = "UVY-pa-SUL"; */
-"UVY-pa-SUL.text" = "🏃‍♀️";
-
-/* Class = "WKInterfaceController"; title = "Loop"; ObjectID = "v5b-sO-bb8"; */
-"v5b-sO-bb8.title" = "Loop";
-
-/* Class = "WKInterfaceLabel"; text = "<body>"; ObjectID = "XkS-y5-khE"; */
-"XkS-y5-khE.text" = "<body>";
-
-/* Class = "WKInterfaceLabel"; text = "ACTIVE CARBS"; ObjectID = "ycL-5X-a05"; */
-"ycL-5X-a05.text" = "ACTIVE CARBS";
-
-/* Class = "WKInterfaceLabel"; text = "– – –"; ObjectID = "yl8-ZP-c3l"; */
-"yl8-ZP-c3l.text" = "---";
-
-/* Class = "WKInterfaceLabel"; text = "Label"; ObjectID = "zO8-x6-bZd"; */
-"zO8-x6-bZd.text" = "标签";
-
diff --git a/WatchApp/zh-Hans.lproj/Interface.strings b/WatchApp/zh-Hans.lproj/Interface.strings
index 16cd8924a..a493bb05e 100644
--- a/WatchApp/zh-Hans.lproj/Interface.strings
+++ b/WatchApp/zh-Hans.lproj/Interface.strings
@@ -1,27 +1,60 @@
+/* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "CsQ-fc-KLC"; */
+"CsQ-fc-KLC.text" = "—";
+
 /* Class = "WKInterfaceLabel"; text = "TOTAL CARBS"; ObjectID = "dea-qG-va8"; */
 "dea-qG-va8.text" = "碳水总量";
 
+/* Class = "WKInterfaceLabel"; text = "– – –"; ObjectID = "Dt1-kz-jMZ"; */
+"Dt1-kz-jMZ.text" = "---";
+
 /* Class = "WKInterfaceLabel"; text = "Pre-Meal"; ObjectID = "f5G-bS-9pd"; */
 "f5G-bS-9pd.text" = "餐前模式";
 
 /* Class = "WKInterfaceLabel"; text = "Carbs"; ObjectID = "hln-CI-MRP"; */
 "hln-CI-MRP.text" = "碳水化合物";
 
+/* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "IRi-4t-ESO"; */
+"IRi-4t-ESO.text" = "—";
+
 /* Class = "WKInterfaceLabel"; text = "Bolus Failed"; ObjectID = "jj3-Gq-HBy"; */
 "jj3-Gq-HBy.text" = "大剂量输注失败";
 
 /* Class = "WKInterfaceLabel"; text = "Running"; ObjectID = "JXa-s1-PJx"; */
 "JXa-s1-PJx.text" = "运行中";
 
+/* Class = "WKInterfaceLabel"; text = "–"; ObjectID = "Mhe-aR-kQQ"; */
+"Mhe-aR-kQQ.text" = "—";
+
 /* Class = "WKInterfaceLabel"; text = "TITLE"; ObjectID = "MZU-QV-PtZ"; */
 "MZU-QV-PtZ.text" = "名称";
 
+/* Class = "WKInterfaceLabel"; text = "Override"; ObjectID = "nC0-X3-oFJ"; */
+"nC0-X3-oFJ.text" = "Override";
+
+/* Class = "WKInterfaceController"; title = "Loop"; ObjectID = "rNf-Mh-tID"; */
+"rNf-Mh-tID.title" = "Loop";
+
 /* Class = "WKInterfaceLabel"; text = "Bolus"; ObjectID = "smL-Rc-IZh"; */
 "smL-Rc-IZh.text" = "大剂量";
 
 /* Class = "WKInterfaceLabel"; text = "Label"; ObjectID = "T4U-wP-dSW"; */
 "T4U-wP-dSW.text" = "标签";
 
+/* Class = "WKInterfaceLabel"; text = "🏃‍♀️"; ObjectID = "UVY-pa-SUL"; */
+"UVY-pa-SUL.text" = "🏃‍♀️";
+
+/* Class = "WKInterfaceController"; title = "Loop"; ObjectID = "v5b-sO-bb8"; */
+"v5b-sO-bb8.title" = "Loop";
+
+/* Class = "WKInterfaceLabel"; text = "<body>"; ObjectID = "XkS-y5-khE"; */
+"XkS-y5-khE.text" = "<body>";
+
+/* Class = "WKInterfaceLabel"; text = "ACTIVE CARBS"; ObjectID = "ycL-5X-a05"; */
+"ycL-5X-a05.text" = "ACTIVE CARBS";
+
+/* Class = "WKInterfaceLabel"; text = "– – –"; ObjectID = "yl8-ZP-c3l"; */
+"yl8-ZP-c3l.text" = "---";
+
 /* Class = "WKInterfaceLabel"; text = "Label"; ObjectID = "zO8-x6-bZd"; */
 "zO8-x6-bZd.text" = "标签";
 
