Pārlūkot izejas kodu

Release 2.2.2 (#133)

* StatView. Simplify bottom glucose HStack

* Crowdin updates (#129)

* Add a Max Carb amount settings

* Update version
Jon B Mårtensson 2 gadi atpakaļ
vecāks
revīzija
a198ab468c
34 mainītis faili ar 121 papildinājumiem un 103 dzēšanām
  1. 1 1
      Config.xcconfig
  2. 1 1
      Dependencies/G7SensorKit/sv.lproj/Localizable.strings
  3. 1 1
      Dependencies/MinimedKit/MinimedKitUI/Resources/nl.lproj/Localizable.strings
  4. 4 4
      Dependencies/OmniBLE/Localizations/nl.lproj/Localizable.strings
  5. 3 3
      Dependencies/OmniKit/OmniKit/Resources/nl.lproj/Localizable.strings
  6. 5 5
      Dependencies/OmniKit/OmniKitUI/Resources/nl.lproj/Localizable.strings
  7. 1 0
      FreeAPS/Resources/json/defaults/freeaps/freeaps_settings.json
  8. 1 1
      FreeAPS/Resources/sv.lproj/InfoPlist.strings
  9. 1 1
      FreeAPS/Sources/Localizations/Main/ar.lproj/Localizable.strings
  10. 1 1
      FreeAPS/Sources/Localizations/Main/ca.lproj/Localizable.strings
  11. 2 2
      FreeAPS/Sources/Localizations/Main/da.lproj/Localizable.strings
  12. 2 2
      FreeAPS/Sources/Localizations/Main/de.lproj/Localizable.strings
  13. 4 1
      FreeAPS/Sources/Localizations/Main/en.lproj/Localizable.strings
  14. 1 1
      FreeAPS/Sources/Localizations/Main/es.lproj/Localizable.strings
  15. 1 1
      FreeAPS/Sources/Localizations/Main/fi.lproj/Localizable.strings
  16. 1 1
      FreeAPS/Sources/Localizations/Main/fr.lproj/Localizable.strings
  17. 1 1
      FreeAPS/Sources/Localizations/Main/he.lproj/Localizable.strings
  18. 19 19
      FreeAPS/Sources/Localizations/Main/it.lproj/Localizable.strings
  19. 1 1
      FreeAPS/Sources/Localizations/Main/nb.lproj/Localizable.strings
  20. 8 8
      FreeAPS/Sources/Localizations/Main/nl.lproj/Localizable.strings
  21. 1 1
      FreeAPS/Sources/Localizations/Main/pl.lproj/Localizable.strings
  22. 1 1
      FreeAPS/Sources/Localizations/Main/pt-BR.lproj/Localizable.strings
  23. 1 1
      FreeAPS/Sources/Localizations/Main/pt-PT.lproj/Localizable.strings
  24. 20 20
      FreeAPS/Sources/Localizations/Main/ru.lproj/Localizable.strings
  25. 1 1
      FreeAPS/Sources/Localizations/Main/sk.lproj/Localizable.strings
  26. 9 9
      FreeAPS/Sources/Localizations/Main/sv.lproj/Localizable.strings
  27. 1 1
      FreeAPS/Sources/Localizations/Main/tr.lproj/Localizable.strings
  28. 12 12
      FreeAPS/Sources/Localizations/Main/uk.lproj/Localizable.strings
  29. 1 1
      FreeAPS/Sources/Localizations/Main/zh-Hans.lproj/Localizable.strings
  30. 5 0
      FreeAPS/Sources/Models/FreeAPSSettings.swift
  31. 3 0
      FreeAPS/Sources/Modules/AddCarbs/AddCarbsStateModel.swift
  32. 2 0
      FreeAPS/Sources/Modules/PumpSettingsEditor/PumpSettingsEditorStateModel.swift
  33. 4 0
      FreeAPS/Sources/Modules/PumpSettingsEditor/View/PumpSettingsEditorRootView.swift
  34. 1 1
      FreeAPS/Sources/Modules/Stat/View/StatsView.swift

+ 1 - 1
Config.xcconfig

@@ -1,5 +1,5 @@
 APP_DISPLAY_NAME = iAPS
-APP_VERSION = 2.2.1
+APP_VERSION = 2.2.2
 APP_BUILD_NUMBER = 1
 COPYRIGHT_NOTICE =
 DEVELOPER_TEAM = ##TEAM_ID##

+ 1 - 1
Dependencies/G7SensorKit/sv.lproj/Localizable.strings

@@ -70,7 +70,7 @@
 "Configuration" = "Konfiguration";
 
 /* title for g7 config settings to upload readings */
-"Upload Readings" = "Ladda upp blodglukos";
+"Upload Readings" = "Ladda upp blodsocker";
 
 /* Button */
 "Scan for new sensor" = "Skanna efter ny sensor";

+ 1 - 1
Dependencies/MinimedKit/MinimedKitUI/Resources/nl.lproj/Localizable.strings

@@ -105,7 +105,7 @@
 "Insulin Remaining" = "Resterende insuline";
 
 /* Text for confidence reminders navigation link */
-"Insulin Type" = "Insulinetype";
+"Insulin Type" = "Insuline soort";
 
 /* Format string fof navigation bar title for MinimedPumpSettingsView (1: model number) */
 "Medtronic %1$@" = "Medtronic %1$@";

+ 4 - 4
Dependencies/OmniBLE/Localizations/nl.lproj/Localizable.strings

@@ -78,7 +78,7 @@
 "Notification Settings" = "Instellingen voor meldingen";
 
 /* */
-"Confidence Reminders" = "Vertrouwensherinneringen";
+"Confidence Reminders" = "Meldingen met piepjes vanuit de Pod";
 
 /* Text for suspend resume button when insulin delivery active */
 "Suspend Insulin Delivery" = "Onderbreken van insuline toediening";
@@ -599,13 +599,13 @@
 "Extended" = "Verlengd";
 
 /* Description for BeepPreference.silent */
-"No confidence reminders are used." = "Er worden geen vertrouwensherinneringen gebruikt.";
+"No confidence reminders are used." = "Er worden geen meldingen met piepjes gebruikt.";
 
 /* Description for BeepPreference.manualCommands */
-"Confidence reminders will sound for commands you initiate, like bolus, cancel bolus, suspend, resume, save notification reminders, etc. When Loop automatically adjusts delivery, no confidence reminders are used." = "Vertrouwen herinneringen zullen klinken voor commando's die u hebt geïnitieerd, zoals bolus, annulering, geschorst, hervatten, opslaan van meldingsherinneringen, etc. Wanneer Loop automatisch de levering wijzigt, worden er geen vertrouwensherinneringen gebruikt.";
+"Confidence reminders will sound for commands you initiate, like bolus, cancel bolus, suspend, resume, save notification reminders, etc. When Loop automatically adjusts delivery, no confidence reminders are used." = "Piepjes uit de Pod zullen klinken voor commando's die u hebt geïnitieerd, zoals bolus, annulering, geschorst, hervatten, opslaan van meldingen etc. Als iAPS automatisch de levering wijzigt, worden er geen piepjes gebruikt.";
 
 /* Description for BeepPreference.extended */
-"Confidence reminders will sound when Loop automatically adjusts delivery as well as for commands you initiate." = "Vertrouwensherinneringen zullen klinken wanneer Loop de levering automatisch aanpast evenals voor commando's die u initieert.";
+"Confidence reminders will sound when Loop automatically adjusts delivery as well as for commands you initiate." = "Piepjes zullen klinken als iAPS de levering automatisch aanpast evenals voor commando's die u initieert.";
 
 /* Label text for temporary basal rate summary */
 "Rate" = "Waarde";

+ 3 - 3
Dependencies/OmniKit/OmniKit/Resources/nl.lproj/Localizable.strings

@@ -63,10 +63,10 @@
 "Communication issue: Unacknowledged command pending." = "Communicatieprobleem: niet-bevestigde opdracht in behandeling";
 
 /* Description for BeepPreference.manualCommands */
-"Confidence reminders will sound for commands you initiate, like bolus, cancel bolus, suspend, resume, save notification reminders, etc. When Loop automatically adjusts delivery, no confidence reminders are used." = "Bevestigingsherinneringen zijn hoorbaar voor opdrachten die je start, zoals bolussen, bolus annuleren, onderbreken, hervatten, meldingsherinneringen opslaan, enz. Wanneer Loop de toediening automatisch aanpast, zijn er geen bevestigingsherinneringen hoorbaar.";
+"Confidence reminders will sound for commands you initiate, like bolus, cancel bolus, suspend, resume, save notification reminders, etc. When Loop automatically adjusts delivery, no confidence reminders are used." = "Piepjes uit de Pod zullen klinken voor commando's die u hebt geïnitieerd, zoals bolus, annulering, geschorst, hervatten, opslaan van meldingen etc. Als iAPS automatisch de levering wijzigt, worden er geen piepjes gebruikt.";
 
 /* Description for BeepPreference.extended */
-"Confidence reminders will sound when Loop automatically adjusts delivery as well as for commands you initiate." = "Bevestigingsherinneringen zijn hoorbaar wanneer Loop de toediening automatisch aanpast, evenals voor opdrachten die je geeft.";
+"Confidence reminders will sound when Loop automatically adjusts delivery as well as for commands you initiate." = "Piepjes zullen klinken als iAPS de levering automatisch aanpast evenals voor commando's die u initieert.";
 
 /* The title for AlarmCode.other notification */
 "Critical Pod Error" = "Kritieke Podfout";
@@ -181,7 +181,7 @@
 "No alerts" = "Geen waarschuwingen";
 
 /* Description for BeepPreference.silent */
-"No confidence reminders are used." = "Er worden geen bevestigingsherinneringen gebruikt.";
+"No confidence reminders are used." = "Er worden geen meldingen met piepjes gebruikt.";
 
 /* Description for Fault Event Code .noFaults */
 "No faults" = "Geen fouten";

+ 5 - 5
Dependencies/OmniKit/OmniKitUI/Resources/nl.lproj/Localizable.strings

@@ -150,10 +150,10 @@
 "Comms Recovered" = "Comms hersteld";
 
 /* Text for confidence reminders navigation link */
-"Confidence Reminders" = "Bevestigingsherinneringen";
+"Confidence Reminders" = "Meldingen met piepjes vanuit de Pod";
 
 /* Help text for BeepPreferenceSelectionView */
-"Confidence reminders are beeps from the pod which can be used to acknowledge selected commands." = "Bevestigingsherinneringen zijn piepjes van de pod die kunnen worden gebruikt ter bevestiging van de geselecteerde opdrachten.";
+"Confidence reminders are beeps from the pod which can be used to acknowledge selected commands." = "Dit zijn meldingen die met piepjes uit de pod komen en kunnen worden gebruikt ter bevestiging van geselecteerde opdrachten.";
 
 /* The title of the configuration section in settings */
 "Configuration" = "Configuratie";
@@ -334,7 +334,7 @@
 
 /* Text for confidence reminders navigation link
    Title for insulin type selection screen */
-"Insulin Type" = "Insulinetype";
+"Insulin Type" = "Insuline soort";
 
 /* The error message shown when Loop's basal schedule has an unsupported rate */
 "Invalid entry" = "Ongeldige invoer";
@@ -675,10 +675,10 @@
 "The App notifies you in advance of Pod expiration.\n\nScroll to set the number of hours advance notice you would like to have." = "De App kondigt van tevoren aan wanneer de Pod verloopt.\n\nScroll om het aantal uren in te stellen voor de gewenste vooraankondiging.";
 
 /* Description text on LowReservoirReminderSetupView */
-"The App notifies you when the amount of insulin in the Pod reaches this level (50-10 U).\n\nScroll to set the number of units at which you would like to be reminded." = "De App geeft een melding wanneer de hoeveelheid insuline in de Pod dit niveau bereikt (50-10 E).\n\nScroll om het aantal eenheden in te stellen waarbij je herinnerd wilt worden.";
+"The App notifies you when the amount of insulin in the Pod reaches this level (50-10 U).\n\nScroll to set the number of units at which you would like to be reminded." = "iAPS geeft een melding wanneer de hoeveelheid insuline in de Pod dit niveau bereikt (50-10 E).\n\nScroll om het aantal eenheden in te stellen waarbij je herinnerd wilt worden.";
 
 /* Footer text for low reservoir value row */
-"The App notifies you when the amount of insulin in the Pod reaches this level." = "De App geeft een melding wanneer de hoeveelheid insuline in de Pod dit niveau bereikt.";
+"The App notifies you when the amount of insulin in the Pod reaches this level." = "iAPS geeft een melding wanneer de hoeveelheid insuline in de Pod dit niveau bereikt.";
 
 /* Description text for critical alerts */
 "The reminders above will not sound if your device is in Silent or Do Not Disturb mode.\n\nThere are other critical Pod alerts and alarms that will sound even if your device is set to Silent or Do Not Disturb mode." = "Bovenstaande herinneringen zijn niet hoorbaar wanneer je apparaat in de modus Stil of Niet Storen staat.\n\nAndere kritieke Podmeldingen en Podalarmen gaan wel af, zelfs als je apparaat op de modus Stil of Niet Storen staat.";

+ 1 - 0
FreeAPS/Resources/json/defaults/freeaps/freeaps_settings.json

@@ -38,4 +38,5 @@
       "useFPUconversion" : false,
       "displayOnWatch" : "HR",
       "animatedBackground" : false
+      "maxCarbs": 1000
 }

+ 1 - 1
FreeAPS/Resources/sv.lproj/InfoPlist.strings

@@ -14,7 +14,7 @@
 "NSCalendarsUsageDescription" = "Kalendern används för att skapa kalenderhändelser för glukosvärden.";
 
 /* Privacy - Health Update Usage Description */
-"NSHealthUpdateUsageDescription" = "Appen Hälsa används för att lagra blodglukosvärden, insulin samt kolhydrater";
+"NSHealthUpdateUsageDescription" = "Appen Hälsa används för att lagra blodsockervärden, insulin samt kolhydrater";
 
 /* Privacy - Health Share Usage Description */
 "NSHealthShareUsageDescription" = "Appen Hälsa används för att lagra blodsockervärden, insulin och kolhydrater.";

+ 1 - 1
FreeAPS/Sources/Localizations/Main/ar.lproj/Localizable.strings

@@ -1531,7 +1531,7 @@ Enact a temp Basal or a temp target */
 "Median" = "Median";
 
 /* CGM readings in statView */
-"Readings today" = "Readings today";
+"Readings" = "Readings";
 
 /* CGM readings in statView */
 "Readings / 24h" = "Readings / 24h";

+ 1 - 1
FreeAPS/Sources/Localizations/Main/ca.lproj/Localizable.strings

@@ -1472,7 +1472,7 @@ Enact a temp Basal or a temp target */
 "Median" = "Median";
 
 /* CGM readings in statView */
-"Readings today" = "Readings today";
+"Readings" = "Readings";
 
 /* CGM readings in statView */
 "Readings / 24h" = "Readings / 24h";

+ 2 - 2
FreeAPS/Sources/Localizations/Main/da.lproj/Localizable.strings

@@ -260,7 +260,7 @@ Enact a temp Basal or a temp target */
 /* */
 "Manual Temp Basal" = "Manual Temp Basal";
 
-/* Allow uploads to different services */
+/* Allow uploads tp NS */
 "Allow uploads" = "Allow uploads";
 
 /* API secret in NS */
@@ -1532,7 +1532,7 @@ Enact a temp Basal or a temp target */
 "Median" = "Median";
 
 /* CGM readings in statView */
-"Readings today" = "Readings today";
+"Readings" = "Readings";
 
 /* CGM readings in statView */
 "Readings / 24h" = "Readings / 24h";

+ 2 - 2
FreeAPS/Sources/Localizations/Main/de.lproj/Localizable.strings

@@ -1531,10 +1531,10 @@ Enact a temp Basal or a temp target */
 "Median" = "Mittelwert";
 
 /* CGM readings in statView */
-"Readings today" = "Lesungen heute";
+"Readings" = "Lesungen";
 
 /* CGM readings in statView */
-"Readings / 24h" = "Lesungen letzte 24h";
+"Readings / 24h" = "Lesungen / 24h";
 
 /* Days of saved readings*/
 "Days" = "Tage";

+ 4 - 1
FreeAPS/Sources/Localizations/Main/en.lproj/Localizable.strings

@@ -341,6 +341,9 @@ Enact a temp Basal or a temp target */
 /* Max setting */
 "Max Bolus" = "Max Bolus";
 
+/* Max setting */
+"Max Carbs" = "Max Carbs";
+
 /* */
 "Pump Settings" = "Pump Settings";
 
@@ -1536,7 +1539,7 @@ Enact a temp Basal or a temp target */
 "Median" = "Median";
 
 /* CGM readings in statView */
-"Readings today" = "Readings today";
+"Readings" = "Readings";
 
 /* CGM readings in statView */
 "Readings / 24h" = "Readings / 24h";

+ 1 - 1
FreeAPS/Sources/Localizations/Main/es.lproj/Localizable.strings

@@ -1531,7 +1531,7 @@ Enact a temp Basal or a temp target */
 "Median" = "Median";
 
 /* CGM readings in statView */
-"Readings today" = "Readings today";
+"Readings" = "Readings";
 
 /* CGM readings in statView */
 "Readings / 24h" = "Readings / 24h";

+ 1 - 1
FreeAPS/Sources/Localizations/Main/fi.lproj/Localizable.strings

@@ -1531,7 +1531,7 @@ Enact a temp Basal or a temp target */
 "Median" = "Median";
 
 /* CGM readings in statView */
-"Readings today" = "Readings today";
+"Readings" = "Readings";
 
 /* CGM readings in statView */
 "Readings / 24h" = "Readings / 24h";

+ 1 - 1
FreeAPS/Sources/Localizations/Main/fr.lproj/Localizable.strings

@@ -1531,7 +1531,7 @@ Enact a temp Basal or a temp target */
 "Median" = "Median";
 
 /* CGM readings in statView */
-"Readings today" = "Readings today";
+"Readings" = "Readings";
 
 /* CGM readings in statView */
 "Readings / 24h" = "Readings / 24h";

+ 1 - 1
FreeAPS/Sources/Localizations/Main/he.lproj/Localizable.strings

@@ -1531,7 +1531,7 @@ Enact a temp Basal or a temp target */
 "Median" = "Median";
 
 /* CGM readings in statView */
-"Readings today" = "Readings today";
+"Readings" = "Readings";
 
 /* CGM readings in statView */
 "Readings / 24h" = "Readings / 24h";

+ 19 - 19
FreeAPS/Sources/Localizations/Main/it.lproj/Localizable.strings

@@ -1278,61 +1278,61 @@ Enact a temp Basal or a temp target */
 /* ----------------------- New Bolus Calculator ---------------------------*/
 /* Warning about bolus recommendation. Title */
 
-"Warning!" = "Warning!";
+"Warning!" = "Attenzione!";
 
 /* Alert to confirm bolus amount to add */
-"\n\nTap 'Add' to continue with selected amount." = "\n\nTap 'Add' to continue with selected amount.";
+"\n\nTap 'Add' to continue with selected amount." = "\n\nTocca 'Aggiungi' per continuare con la quantità selezionata.";
 
 /* */
-"Eventual Glucose" = "Eventual Glucose";
+"Eventual Glucose" = "previsione glicemica";
 
 /* */
-"Target Glucose" = "Target Glucose";
+"Target Glucose" = "Target Glicemia";
 
 /* */
-"Percentage setting" = "Percentage setting";
+"Percentage setting" = "Impostazione percentuale";
 
 /* */
-"Insulin Sensitivity" = "Insulin Sensitivity";
+"Insulin Sensitivity" = "Sensibilità insulinica";
 
 /* Formula displayed in Bolus info pop-up. Make translation short! */
-"(Eventual Glucose - Target) / ISF" = "(Eventual Glucose - Target) / ISF";
+"(Eventual Glucose - Target) / ISF" = "(previsione glicemica - Target) / ISF";
 
 /* */
 "Formula:" = "Formula:";
 
 /* Bolus pop-up footer */
-"Carbs and previous insulin are included in the glucose prediction, but if the Eventual Glucose is lower than the Target Glucose, a bolus will not be recommended." = "Carbs and previous insulin are included in the glucose prediction, but if the Eventual Glucose is lower than the Target Glucose, a bolus will not be recommended.";
+"Carbs and previous insulin are included in the glucose prediction, but if the Eventual Glucose is lower than the Target Glucose, a bolus will not be recommended." = "I carboidrati e l'insulina precedenti sono inclusi nella previsione delle glicemie, ma se l'eventuale previsione glicemica è inferiore al target, non sarà consigliato eseguire il bolo.";
 
 /* Hide pop-up */
-"Hide" = "Hide";
+"Hide" = "Nascondi";
 
 /* Bolus pop-up / Alert string. Make translations concise! */
-"Eventual Glucose > Target Glucose, but glucose is predicted to drop down to " = "Eventual Glucose > Target Glucose, but glucose is predicted to first drop down to ";
+"Eventual Glucose > Target Glucose, but glucose is predicted to drop down to " = "previsione glicemica > target glicemia, ma si prevede che il glucosio scenda prima a ";
 
 /* Bolus pop-up / Alert string. Make translations concise! */
-"which is below your Threshold (" = "which is below your Threshold (";
+"which is below your Threshold (" = "che è al di sotto della tua Soglia (";
 
 /* Bolus pop-up / Alert string. Make translations concise! */
-"Eventual Glucose > Target Glucose, but glucose is climbing slower than expected. Expected: " = "Eventual Glucose > Target Glucose, but glucose is climbing slower than expected. Expected: ";
+"Eventual Glucose > Target Glucose, but glucose is climbing slower than expected. Expected: " = "previsione glicemica > Target glicemia, ma la glicemia sale più lentamente del previsto. ";
 
 //* Bolus pop-up / Alert string. Make translations concise! */
-". Climbing: " = ". Climbing: ";
+". Climbing: " = ". Salita: ";
 
 /* Bolus pop-up / Alert string. Make translations concise! */
-"Eventual Glucose > Target Glucose, but glucose is falling faster than expected. Expected: " = "Eventual Glucose > Target Glucose, but glucose is falling faster than expected. Expected: ";
+"Eventual Glucose > Target Glucose, but glucose is falling faster than expected. Expected: " = "previsione glicemica > Target Glicemia, ma la glicemia sta diminuendo più velocemente del previsto. Previsto:";
 
 /* Bolus pop-up / Alert string. Make translations concise! */
-". Falling: " = ". Falling: ";
+". Falling: " = ". in discesa:";
 
 /* Bolus pop-up / Alert string. Make translations concise! */
-"Eventual Glucose > Target Glucose, but glucose is changing faster than expected. Expected: " = "Eventual Glucose > Target Glucose, but glucose is changing faster than expected. Expected: ";
+"Eventual Glucose > Target Glucose, but glucose is changing faster than expected. Expected: " = "previsione glicemica > Target Glicemia, ma il glicemia sta cambiando più velocemente del previsto. Previsto:";
 
 /* Bolus pop-up / Alert string. Make translations concise! */
-". Changing: " = ". Changing: ";
+". Changing: " = ". Modifica:";
 
 /* Add insulin without bolusing alert */
-" without bolusing" = " without bolusing";
+" without bolusing" = "Aggiungi senza bolo";
 
 /* -------------------------------------------------------------------------------------------
   DASH strings
@@ -1531,7 +1531,7 @@ Enact a temp Basal or a temp target */
 "Median" = "Mediana";
 
 /* CGM readings in statView */
-"Readings today" = "Letture oggi";
+"Readings" = "Letture";
 
 /* CGM readings in statView */
 "Readings / 24h" = "Letture / 24h";

+ 1 - 1
FreeAPS/Sources/Localizations/Main/nb.lproj/Localizable.strings

@@ -1531,7 +1531,7 @@ Enact a temp Basal or a temp target */
 "Median" = "Median";
 
 /* CGM readings in statView */
-"Readings today" = "Avlesninger i dag";
+"Readings" = "Avlesninger";
 
 /* CGM readings in statView */
 "Readings / 24h" = "Avlesninger / 24t";

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 8 - 8
FreeAPS/Sources/Localizations/Main/nl.lproj/Localizable.strings


+ 1 - 1
FreeAPS/Sources/Localizations/Main/pl.lproj/Localizable.strings

@@ -1533,7 +1533,7 @@ Połączono z Nightscout!";
 "Median" = "Median";
 
 /* CGM readings in statView */
-"Readings today" = "Readings today";
+"Readings" = "Readings";
 
 /* CGM readings in statView */
 "Readings / 24h" = "Readings / 24h";

+ 1 - 1
FreeAPS/Sources/Localizations/Main/pt-BR.lproj/Localizable.strings

@@ -1531,7 +1531,7 @@ Enact a temp Basal or a temp target */
 "Median" = "Median";
 
 /* CGM readings in statView */
-"Readings today" = "Readings today";
+"Readings" = "Readings";
 
 /* CGM readings in statView */
 "Readings / 24h" = "Readings / 24h";

+ 1 - 1
FreeAPS/Sources/Localizations/Main/pt-PT.lproj/Localizable.strings

@@ -1531,7 +1531,7 @@ Enact a temp Basal or a temp target */
 "Median" = "Median";
 
 /* CGM readings in statView */
-"Readings today" = "Readings today";
+"Readings" = "Readings";
 
 /* CGM readings in statView */
 "Readings / 24h" = "Readings / 24h";

+ 20 - 20
FreeAPS/Sources/Localizations/Main/ru.lproj/Localizable.strings

@@ -1278,61 +1278,61 @@ Enact a temp Basal or a temp target */
 /* ----------------------- New Bolus Calculator ---------------------------*/
 /* Warning about bolus recommendation. Title */
 
-"Warning!" = "Warning!";
+"Warning!" = "Внимание!";
 
 /* Alert to confirm bolus amount to add */
-"\n\nTap 'Add' to continue with selected amount." = "\n\nTap 'Add' to continue with selected amount.";
+"\n\nTap 'Add' to continue with selected amount." = "\n\nНажмите \"Добавить\", чтобы продолжить с выбранным значением.";
 
 /* */
-"Eventual Glucose" = "Eventual Glucose";
+"Eventual Glucose" = "Возможная глюкоза";
 
 /* */
-"Target Glucose" = "Target Glucose";
+"Target Glucose" = "Целевая глюкоза";
 
 /* */
-"Percentage setting" = "Percentage setting";
+"Percentage setting" = "Установка процента";
 
 /* */
-"Insulin Sensitivity" = "Insulin Sensitivity";
+"Insulin Sensitivity" = "Чувствительность к инсулину";
 
 /* Formula displayed in Bolus info pop-up. Make translation short! */
-"(Eventual Glucose - Target) / ISF" = "(Eventual Glucose - Target) / ISF";
+"(Eventual Glucose - Target) / ISF" = "(Возможная - Цель) / ФЧИ";
 
 /* */
-"Formula:" = "Formula:";
+"Formula:" = "Формула:";
 
 /* Bolus pop-up footer */
-"Carbs and previous insulin are included in the glucose prediction, but if the Eventual Glucose is lower than the Target Glucose, a bolus will not be recommended." = "Carbs and previous insulin are included in the glucose prediction, but if the Eventual Glucose is lower than the Target Glucose, a bolus will not be recommended.";
+"Carbs and previous insulin are included in the glucose prediction, but if the Eventual Glucose is lower than the Target Glucose, a bolus will not be recommended." = "Углеводы и предыдущий прием инсулина учитываются при прогнозировании уровня глюкозы, но если конечная концентрация глюкозы ниже целевой, болюс не рекомендуется.";
 
 /* Hide pop-up */
-"Hide" = "Hide";
+"Hide" = "Скрыть";
 
 /* Bolus pop-up / Alert string. Make translations concise! */
-"Eventual Glucose > Target Glucose, but glucose is predicted to drop down to " = "Eventual Glucose > Target Glucose, but glucose is predicted to first drop down to ";
+"Eventual Glucose > Target Glucose, but glucose is predicted to drop down to " = "Конечная глюкоза выше целевой, но прогнозируется, что уровень глюкозы сначала упадёт до ";
 
 /* Bolus pop-up / Alert string. Make translations concise! */
-"which is below your Threshold (" = "which is below your Threshold (";
+"which is below your Threshold (" = "это ниже порога приостановки (";
 
 /* Bolus pop-up / Alert string. Make translations concise! */
-"Eventual Glucose > Target Glucose, but glucose is climbing slower than expected. Expected: " = "Eventual Glucose > Target Glucose, but glucose is climbing slower than expected. Expected: ";
+"Eventual Glucose > Target Glucose, but glucose is climbing slower than expected. Expected: " = "Конечная глюкоза выше целевой, но уровень глюкозы повышается медленнее, чем ожидалось. Ожидалось: ";
 
 //* Bolus pop-up / Alert string. Make translations concise! */
-". Climbing: " = ". Climbing: ";
+". Climbing: " = ". Поднятие: ";
 
 /* Bolus pop-up / Alert string. Make translations concise! */
-"Eventual Glucose > Target Glucose, but glucose is falling faster than expected. Expected: " = "Eventual Glucose > Target Glucose, but glucose is falling faster than expected. Expected: ";
+"Eventual Glucose > Target Glucose, but glucose is falling faster than expected. Expected: " = "Конечная глюкоза выше целевой, но уровень глюкозы падает быстрее, чем ожидалось. Ожидалось: ";
 
 /* Bolus pop-up / Alert string. Make translations concise! */
-". Falling: " = ". Falling: ";
+". Falling: " = ". Падение: ";
 
 /* Bolus pop-up / Alert string. Make translations concise! */
-"Eventual Glucose > Target Glucose, but glucose is changing faster than expected. Expected: " = "Eventual Glucose > Target Glucose, but glucose is changing faster than expected. Expected: ";
+"Eventual Glucose > Target Glucose, but glucose is changing faster than expected. Expected: " = "Конечная глюкоза выше целевой, но уровень глюкозы меняется быстрее, чем ожидалось. Ожидалось: ";
 
 /* Bolus pop-up / Alert string. Make translations concise! */
-". Changing: " = ". Changing: ";
+". Changing: " = ". Изменение: ";
 
 /* Add insulin without bolusing alert */
-" without bolusing" = " without bolusing";
+" without bolusing" = " без введения болюса помпой";
 
 /* -------------------------------------------------------------------------------------------
   DASH strings
@@ -1531,7 +1531,7 @@ Enact a temp Basal or a temp target */
 "Median" = "Медиана";
 
 /* CGM readings in statView */
-"Readings today" = "Чтений сегодня";
+"Readings" = "Чтения";
 
 /* CGM readings in statView */
 "Readings / 24h" = "Чтения / 24 ч";

+ 1 - 1
FreeAPS/Sources/Localizations/Main/sk.lproj/Localizable.strings

@@ -1531,7 +1531,7 @@ Enact a temp Basal or a temp target */
 "Median" = "Median";
 
 /* CGM readings in statView */
-"Readings today" = "Readings today";
+"Readings" = "Readings";
 
 /* CGM readings in statView */
 "Readings / 24h" = "Readings / 24h";

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 9 - 9
FreeAPS/Sources/Localizations/Main/sv.lproj/Localizable.strings


+ 1 - 1
FreeAPS/Sources/Localizations/Main/tr.lproj/Localizable.strings

@@ -1531,7 +1531,7 @@ Enact a temp Basal or a temp target */
 "Median" = "Orta Değer";
 
 /* CGM readings in statView */
-"Readings today" = "Readings today";
+"Readings" = "Readings";
 
 /* CGM readings in statView */
 "Readings / 24h" = "Readings / 24h";

+ 12 - 12
FreeAPS/Sources/Localizations/Main/uk.lproj/Localizable.strings

@@ -1296,10 +1296,10 @@ Enact a temp Basal or a temp target */
 "Insulin Sensitivity" = "Чутливість до інсуліну";
 
 /* Formula displayed in Bolus info pop-up. Make translation short! */
-"(Eventual Glucose - Target) / ISF" = "(Eventual Glucose - Target) / ISF";
+"(Eventual Glucose - Target) / ISF" = "(Можливий рівень глюкози – ціль) / ISF";
 
 /* */
-"Formula:" = "Formula:";
+"Formula:" = "Формула:";
 
 /* Bolus pop-up footer */
 "Carbs and previous insulin are included in the glucose prediction, but if the Eventual Glucose is lower than the Target Glucose, a bolus will not be recommended." = "Вуглеводи та попередній інсулін включені в прогноз рівня глюкози, але якщо кінцевий рівень глюкози нижчий за цільовий рівень глюкози, болюс не буде рекомендовано.";
@@ -1308,31 +1308,31 @@ Enact a temp Basal or a temp target */
 "Hide" = "Приховати";
 
 /* Bolus pop-up / Alert string. Make translations concise! */
-"Eventual Glucose > Target Glucose, but glucose is predicted to drop down to " = "Eventual Glucose > Target Glucose, but glucose is predicted to first drop down to ";
+"Eventual Glucose > Target Glucose, but glucose is predicted to drop down to " = "Кінцева глюкоза вища за цільову, але прогнозується, що рівень глюкози спочатку впаде до";
 
 /* Bolus pop-up / Alert string. Make translations concise! */
-"which is below your Threshold (" = "which is below your Threshold (";
+"which is below your Threshold (" = "це нижче порога припинення (";
 
 /* Bolus pop-up / Alert string. Make translations concise! */
-"Eventual Glucose > Target Glucose, but glucose is climbing slower than expected. Expected: " = "Eventual Glucose > Target Glucose, but glucose is climbing slower than expected. Expected: ";
+"Eventual Glucose > Target Glucose, but glucose is climbing slower than expected. Expected: " = "Можливий рівень глюкози > цільовий рівень глюкози, але рівень глюкози зростає повільніше, ніж очікувалося. Очікується:";
 
 //* Bolus pop-up / Alert string. Make translations concise! */
-". Climbing: " = ". Climbing: ";
+". Climbing: " = ". Підняття:";
 
 /* Bolus pop-up / Alert string. Make translations concise! */
-"Eventual Glucose > Target Glucose, but glucose is falling faster than expected. Expected: " = "Eventual Glucose > Target Glucose, but glucose is falling faster than expected. Expected: ";
+"Eventual Glucose > Target Glucose, but glucose is falling faster than expected. Expected: " = "Можливий рівень глюкози > цільовий рівень глюкози, але рівень глюкози падає швидше, ніж очікувалося. Очікується:";
 
 /* Bolus pop-up / Alert string. Make translations concise! */
-". Falling: " = ". Falling: ";
+". Falling: " = ". Падіння:";
 
 /* Bolus pop-up / Alert string. Make translations concise! */
-"Eventual Glucose > Target Glucose, but glucose is changing faster than expected. Expected: " = "Eventual Glucose > Target Glucose, but glucose is changing faster than expected. Expected: ";
+"Eventual Glucose > Target Glucose, but glucose is changing faster than expected. Expected: " = "Можлива глюкоза > цільова глюкоза, але рівень глюкози змінюється швидше, ніж очікувалося. Очікується:";
 
 /* Bolus pop-up / Alert string. Make translations concise! */
-". Changing: " = ". Changing: ";
+". Changing: " = ". Зміна: ";
 
 /* Add insulin without bolusing alert */
-" without bolusing" = " without bolusing";
+" without bolusing" = " без введення болюса помпою";
 
 /* -------------------------------------------------------------------------------------------
   DASH strings
@@ -1531,7 +1531,7 @@ Enact a temp Basal or a temp target */
 "Median" = "Медіана";
 
 /* CGM readings in statView */
-"Readings today" = "Читання сьогодні";
+"Readings" = "Читання";
 
 /* CGM readings in statView */
 "Readings / 24h" = "Читання / 24 год";

+ 1 - 1
FreeAPS/Sources/Localizations/Main/zh-Hans.lproj/Localizable.strings

@@ -1531,7 +1531,7 @@ Enact a temp Basal or a temp target */
 "Median" = "Median";
 
 /* CGM readings in statView */
-"Readings today" = "Readings today";
+"Readings" = "Readings";
 
 /* CGM readings in statView */
 "Readings / 24h" = "Readings / 24h";

+ 5 - 0
FreeAPS/Sources/Models/FreeAPSSettings.swift

@@ -40,6 +40,7 @@ struct FreeAPSSettings: JSON, Equatable {
     var yGridLines: Bool = true
     var oneDimensionalGraph: Bool = false
     var rulerMarks: Bool = false
+    var maxCarbs: Decimal = 1000
 }
 
 extension FreeAPSSettings: Decodable {
@@ -209,6 +210,10 @@ extension FreeAPSSettings: Decodable {
             settings.overrideHbA1cUnit = overrideHbA1cUnit
         }
 
+        if let maxCarbs = try? container.decode(Decimal.self, forKey: .maxCarbs) {
+            settings.maxCarbs = maxCarbs
+        }
+
         self = settings
     }
 }

+ 3 - 0
FreeAPS/Sources/Modules/AddCarbs/AddCarbsStateModel.swift

@@ -16,12 +16,14 @@ extension AddCarbs {
         @Published var dish: String = ""
         @Published var selection: Presets?
         @Published var summation: [String] = []
+        @Published var maxCarbs: Decimal = 0
 
         let coredataContext = CoreDataStack.shared.persistentContainer.viewContext
 
         override func subscribe() {
             subscribeSetting(\.useFPUconversion, on: $useFPUconversion) { useFPUconversion = $0 }
             carbsRequired = provider.suggestion?.carbsReq
+            maxCarbs = settings.settings.maxCarbs
         }
 
         func add() {
@@ -29,6 +31,7 @@ extension AddCarbs {
                 showModal(for: nil)
                 return
             }
+            carbs = min(carbs, maxCarbs)
 
             if useFPUconversion {
                 // -------------------------- FPU--------------------------------------

+ 2 - 0
FreeAPS/Sources/Modules/PumpSettingsEditor/PumpSettingsEditorStateModel.swift

@@ -5,6 +5,7 @@ extension PumpSettingsEditor {
         @Published var maxBasal: Decimal = 0.0
         @Published var maxBolus: Decimal = 0.0
         @Published var dia: Decimal = 0.0
+        @Published var maxCarbs: Decimal = 1000
 
         @Published var syncInProgress = false
 
@@ -13,6 +14,7 @@ extension PumpSettingsEditor {
             maxBasal = settings.maxBasal
             maxBolus = settings.maxBolus
             dia = settings.insulinActionCurve
+            subscribeSetting(\.maxCarbs, on: $maxCarbs) { maxCarbs = $0 }
         }
 
         func save() {

+ 4 - 0
FreeAPS/Sources/Modules/PumpSettingsEditor/View/PumpSettingsEditorRootView.swift

@@ -23,6 +23,10 @@ extension PumpSettingsEditor {
                         Text("Max Bolus")
                         DecimalTextField("U", value: $state.maxBolus, formatter: formatter)
                     }
+                    HStack {
+                        Text("Max Carbs")
+                        DecimalTextField("g", value: $state.maxCarbs, formatter: formatter)
+                    }
                 }
 
                 Section(header: Text("Duration of Insulin Action")) {

+ 1 - 1
FreeAPS/Sources/Modules/Stat/View/StatsView.swift

@@ -182,7 +182,7 @@ struct StatsView: View {
             let numberOfDays = (current - previous).timeInterval / 8.64E4
 
             VStack(spacing: 5) {
-                Text(numberOfDays < 1 ? "Readings today" : "Readings / 24h").font(.subheadline)
+                Text(numberOfDays < 1 ? "Readings" : "Readings / 24h").font(.subheadline)
                     .foregroundColor(.secondary)
                 Text(bgs.readings.formatted(.number.grouping(.never).rounded().precision(.fractionLength(0))))
             }