diff --git a/CHANGELOG.md b/CHANGELOG.md index 2cdd1e34..84a6e628 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,32 @@ # Changelog +## [v1.16.0](https://github.com/babybuddy/babybuddy/tree/v1.16.0) (2023-05-02) + +[Full Changelog](https://github.com/babybuddy/babybuddy/compare/v1.15.1...v1.16.0) + +**Implemented enhancements:** + +- PROXY\_HEADER - Documentation update [\#608](https://github.com/babybuddy/babybuddy/issues/608) +- Feature Request: Store Baby's Schedule/Routine [\#362](https://github.com/babybuddy/babybuddy/issues/362) +- Add `id` to filter fields for children-api endpoint [\#625](https://github.com/babybuddy/babybuddy/pull/625) ([MrApplejuice](https://github.com/MrApplejuice)) + +**Fixed bugs:** + +- Birth date when adding time does not format correctly [\#631](https://github.com/babybuddy/babybuddy/issues/631) + +**Closed issues:** + +- DOC : new value to SECURE\_PROXY\_SSL\_HEADER [\#632](https://github.com/babybuddy/babybuddy/issues/632) +- new feature : add wash the baby activity [\#630](https://github.com/babybuddy/babybuddy/issues/630) +- Hide unused fields from dashboard [\#622](https://github.com/babybuddy/babybuddy/issues/622) +- Feature Request - Potty Training [\#620](https://github.com/babybuddy/babybuddy/issues/620) +- Unable to install Baby Buddy in Home Assistant via Add-Ons [\#618](https://github.com/babybuddy/babybuddy/issues/618) +- Notifications filling each screen even when navigating to another screen [\#616](https://github.com/babybuddy/babybuddy/issues/616) + +**Merged pull requests:** + +- Add django-specific notes for PROXY\_HEADER config [\#609](https://github.com/babybuddy/babybuddy/pull/609) ([p-b--](https://github.com/p-b--)) + ## [v1.15.1](https://github.com/babybuddy/babybuddy/tree/v1.15.1) (2023-03-18) [Full Changelog](https://github.com/babybuddy/babybuddy/compare/v1.15.0...v1.15.1) @@ -348,7 +375,7 @@ - Fix German translation mistake [\#368](https://github.com/babybuddy/babybuddy/pull/368) ([MrApplejuice](https://github.com/MrApplejuice)) - Add timer restart and stop triggers to REST-API [\#367](https://github.com/babybuddy/babybuddy/pull/367) ([MrApplejuice](https://github.com/MrApplejuice)) - Optional last name [\#361](https://github.com/babybuddy/babybuddy/pull/361) ([Alberdi](https://github.com/Alberdi)) -- Add Height, Head Circumference, and BMI [\#360](https://github.com/babybuddy/babybuddy/pull/360) ([Daegalus](https://github.com/Daegalus)) +- Add Height, Head Circumference, and BMI [\#360](https://github.com/babybuddy/babybuddy/pull/360) ([daegalus](https://github.com/daegalus)) - Improve iOS webapp/clip/pwa experience [\#359](https://github.com/babybuddy/babybuddy/pull/359) ([cdubz](https://github.com/cdubz)) - Convert envir variables that are supposed to be boolean to boolean [\#356](https://github.com/babybuddy/babybuddy/pull/356) ([MagiX13](https://github.com/MagiX13)) diff --git a/README.md b/README.md index 8b1a9ca2..81744a5b 100644 --- a/README.md +++ b/README.md @@ -68,6 +68,8 @@ for information about how to create/update translations. :it: Italian +:norway: Norwegian Bokmål + :poland: Polish :portugal: :brazil: Portuguese diff --git a/babybuddy/__init__.py b/babybuddy/__init__.py index d2af8098..66974abd 100644 --- a/babybuddy/__init__.py +++ b/babybuddy/__init__.py @@ -46,7 +46,7 @@ """ # noqa __title__ = "Baby Buddy" -__version__ = "1.15.1" +__version__ = "1.16.0" __license__ = "BSD 2-Clause" VERSION = __version__ diff --git a/babybuddy/settings/base.py b/babybuddy/settings/base.py index 65c9005b..153748ca 100644 --- a/babybuddy/settings/base.py +++ b/babybuddy/settings/base.py @@ -185,6 +185,7 @@ LANGUAGES = [ ("de", _("German")), ("hu", _("Hungarian")), ("it", _("Italian")), + ("nb", _("Norwegian Bokmål")), ("pl", _("Polish")), ("pt", _("Portuguese")), ("ru", _("Russian")), diff --git a/gulpfile.config.js b/gulpfile.config.js index d9b5aac2..54e6bab8 100644 --- a/gulpfile.config.js +++ b/gulpfile.config.js @@ -44,6 +44,7 @@ module.exports = { 'node_modules/plotly.js/dist/plotly-locale-fr.js', 'node_modules/plotly.js/dist/plotly-locale-hu.js', 'node_modules/plotly.js/dist/plotly-locale-it.js', + 'node_modules/plotly.js/dist/plotly-locale-no.js', 'node_modules/plotly.js/dist/plotly-locale-nl.js', 'node_modules/plotly.js/dist/plotly-locale-pl.js', 'node_modules/plotly.js/dist/plotly-locale-pt-br.js', diff --git a/locale/ca/LC_MESSAGES/django.po b/locale/ca/LC_MESSAGES/django.po index dd01ee96..927ea5ad 100644 --- a/locale/ca/LC_MESSAGES/django.po +++ b/locale/ca/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Baby Buddy\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-02-22 14:39+0000\n" +"POT-Creation-Date: 2023-05-02 18:53-0700\n" "Language: ca\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -182,26 +182,30 @@ msgid "Italian" msgstr "Italià" #: babybuddy/settings/base.py:187 +msgid "Norwegian Bokmål" +msgstr "" + +#: babybuddy/settings/base.py:188 msgid "Polish" msgstr "Polac" -#: babybuddy/settings/base.py:188 +#: babybuddy/settings/base.py:189 msgid "Portuguese" msgstr "Portuguès" -#: babybuddy/settings/base.py:189 +#: babybuddy/settings/base.py:190 msgid "Russian" msgstr "" -#: babybuddy/settings/base.py:190 +#: babybuddy/settings/base.py:191 msgid "Spanish" msgstr "Espanyol" -#: babybuddy/settings/base.py:191 +#: babybuddy/settings/base.py:192 msgid "Swedish" msgstr "Suec" -#: babybuddy/settings/base.py:192 +#: babybuddy/settings/base.py:193 msgid "Turkish" msgstr "Turc" diff --git a/locale/cs/LC_MESSAGES/django.po b/locale/cs/LC_MESSAGES/django.po index 9aae2efb..ceded373 100644 --- a/locale/cs/LC_MESSAGES/django.po +++ b/locale/cs/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Baby Buddy\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-02-22 14:39+0000\n" +"POT-Creation-Date: 2023-05-02 18:53-0700\n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -180,26 +180,30 @@ msgid "Italian" msgstr "" #: babybuddy/settings/base.py:187 -msgid "Polish" +msgid "Norwegian Bokmål" msgstr "" #: babybuddy/settings/base.py:188 -msgid "Portuguese" +msgid "Polish" msgstr "" #: babybuddy/settings/base.py:189 -msgid "Russian" +msgid "Portuguese" msgstr "" #: babybuddy/settings/base.py:190 +msgid "Russian" +msgstr "" + +#: babybuddy/settings/base.py:191 msgid "Spanish" msgstr "španělština" -#: babybuddy/settings/base.py:191 +#: babybuddy/settings/base.py:192 msgid "Swedish" msgstr "švédština" -#: babybuddy/settings/base.py:192 +#: babybuddy/settings/base.py:193 msgid "Turkish" msgstr "turečtina" diff --git a/locale/da/LC_MESSAGES/django.po b/locale/da/LC_MESSAGES/django.po index 6ae97ddd..71b61a62 100644 --- a/locale/da/LC_MESSAGES/django.po +++ b/locale/da/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Baby Buddy\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-02-22 14:39+0000\n" +"POT-Creation-Date: 2023-05-02 18:53-0700\n" "Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -182,26 +182,30 @@ msgid "Italian" msgstr "Italiensk" #: babybuddy/settings/base.py:187 +msgid "Norwegian Bokmål" +msgstr "" + +#: babybuddy/settings/base.py:188 msgid "Polish" msgstr "Polsk" -#: babybuddy/settings/base.py:188 +#: babybuddy/settings/base.py:189 msgid "Portuguese" msgstr "Portugisisk" -#: babybuddy/settings/base.py:189 +#: babybuddy/settings/base.py:190 msgid "Russian" msgstr "" -#: babybuddy/settings/base.py:190 +#: babybuddy/settings/base.py:191 msgid "Spanish" msgstr "Spansk" -#: babybuddy/settings/base.py:191 +#: babybuddy/settings/base.py:192 msgid "Swedish" msgstr "Svensk" -#: babybuddy/settings/base.py:192 +#: babybuddy/settings/base.py:193 msgid "Turkish" msgstr "Tyrkisk" diff --git a/locale/de/LC_MESSAGES/django.mo b/locale/de/LC_MESSAGES/django.mo index 3662cbce..22a9040d 100644 Binary files a/locale/de/LC_MESSAGES/django.mo and b/locale/de/LC_MESSAGES/django.mo differ diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po index 2fbf426f..1a9c3e5d 100644 --- a/locale/de/LC_MESSAGES/django.po +++ b/locale/de/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Baby Buddy\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-02-22 14:39+0000\n" +"POT-Creation-Date: 2023-05-02 18:53-0700\n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -181,26 +181,30 @@ msgid "Italian" msgstr "Italienisch" #: babybuddy/settings/base.py:187 +msgid "Norwegian Bokmål" +msgstr "" + +#: babybuddy/settings/base.py:188 msgid "Polish" msgstr "Polnisch" -#: babybuddy/settings/base.py:188 +#: babybuddy/settings/base.py:189 msgid "Portuguese" msgstr "Portugiesisch" -#: babybuddy/settings/base.py:189 +#: babybuddy/settings/base.py:190 msgid "Russian" msgstr "Russisch" -#: babybuddy/settings/base.py:190 +#: babybuddy/settings/base.py:191 msgid "Spanish" msgstr "Spanisch" -#: babybuddy/settings/base.py:191 +#: babybuddy/settings/base.py:192 msgid "Swedish" msgstr "Schwedisch" -#: babybuddy/settings/base.py:192 +#: babybuddy/settings/base.py:193 msgid "Turkish" msgstr "Türkisch" @@ -554,7 +558,7 @@ msgstr "Weiter" #: babybuddy/templates/babybuddy/user_add_device.html:15 msgid "Authentication Methods" -msgstr "" +msgstr "Authentifizierungsmethoden" #: babybuddy/templates/babybuddy/user_add_device.html:18 #: babybuddy/templates/babybuddy/user_settings_form.html:81 @@ -1900,10 +1904,8 @@ msgstr[0] "vor %(n)s Mahlzeit%(plural)sen" msgstr[1] "vor %(n)s Mahlzeit%(plural)sen" #: dashboard/templates/cards/pumping_last.html:6 -#, fuzzy -#| msgid "Pumping" msgid "Last Pumping" -msgstr "Abpumpen" +msgstr "Letztes Abpumpen" #: dashboard/templates/cards/sleep_last.html:6 msgid "Last Sleep" diff --git a/locale/en_GB/LC_MESSAGES/django.po b/locale/en_GB/LC_MESSAGES/django.po index b013b7ff..8efd8f5e 100644 --- a/locale/en_GB/LC_MESSAGES/django.po +++ b/locale/en_GB/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Baby Buddy\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-02-22 14:39+0000\n" +"POT-Creation-Date: 2023-05-02 18:53-0700\n" "Language: en-GB\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -177,26 +177,30 @@ msgid "Italian" msgstr "" #: babybuddy/settings/base.py:187 -msgid "Polish" +msgid "Norwegian Bokmål" msgstr "" #: babybuddy/settings/base.py:188 -msgid "Portuguese" +msgid "Polish" msgstr "" #: babybuddy/settings/base.py:189 -msgid "Russian" +msgid "Portuguese" msgstr "" #: babybuddy/settings/base.py:190 -msgid "Spanish" +msgid "Russian" msgstr "" #: babybuddy/settings/base.py:191 -msgid "Swedish" +msgid "Spanish" msgstr "" #: babybuddy/settings/base.py:192 +msgid "Swedish" +msgstr "" + +#: babybuddy/settings/base.py:193 msgid "Turkish" msgstr "" diff --git a/locale/es/LC_MESSAGES/django.po b/locale/es/LC_MESSAGES/django.po index 95db45bc..2ee7e934 100644 --- a/locale/es/LC_MESSAGES/django.po +++ b/locale/es/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Baby Buddy\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-02-22 14:39+0000\n" +"POT-Creation-Date: 2023-05-02 18:53-0700\n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -182,26 +182,30 @@ msgid "Italian" msgstr "Italiano" #: babybuddy/settings/base.py:187 +msgid "Norwegian Bokmål" +msgstr "" + +#: babybuddy/settings/base.py:188 msgid "Polish" msgstr "Polaco" -#: babybuddy/settings/base.py:188 +#: babybuddy/settings/base.py:189 msgid "Portuguese" msgstr "Portugués" -#: babybuddy/settings/base.py:189 +#: babybuddy/settings/base.py:190 msgid "Russian" msgstr "" -#: babybuddy/settings/base.py:190 +#: babybuddy/settings/base.py:191 msgid "Spanish" msgstr "Español" -#: babybuddy/settings/base.py:191 +#: babybuddy/settings/base.py:192 msgid "Swedish" msgstr "Sueco" -#: babybuddy/settings/base.py:192 +#: babybuddy/settings/base.py:193 msgid "Turkish" msgstr "Turco" diff --git a/locale/fi/LC_MESSAGES/django.mo b/locale/fi/LC_MESSAGES/django.mo index 99173f45..f24026e5 100644 Binary files a/locale/fi/LC_MESSAGES/django.mo and b/locale/fi/LC_MESSAGES/django.mo differ diff --git a/locale/fi/LC_MESSAGES/django.po b/locale/fi/LC_MESSAGES/django.po index fcb4ffb1..5bfa3f9c 100644 --- a/locale/fi/LC_MESSAGES/django.po +++ b/locale/fi/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Baby Buddy\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-02-22 14:39+0000\n" +"POT-Creation-Date: 2023-05-02 18:53-0700\n" "Language: fi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -28,7 +28,7 @@ msgstr "Työpöytä" #: babybuddy/forms.py:15 babybuddy/templates/babybuddy/user_list.html:21 msgid "Read only" -msgstr "" +msgstr "Vain luku" #: babybuddy/forms.py:16 msgid "Restricts user to viewing data only." @@ -82,11 +82,11 @@ msgstr "30 min." #: babybuddy/models.py:40 msgid "Hide Empty Dashboard Cards" -msgstr "" +msgstr "Piilota tyhjät työpöydän kortit" #: babybuddy/models.py:43 msgid "Hide data older than" -msgstr "" +msgstr "Piilota vanhempi data kuin" #: babybuddy/models.py:45 msgid "This setting controls which data will be shown in the dashboard." @@ -94,27 +94,27 @@ msgstr "" #: babybuddy/models.py:51 msgid "show all data" -msgstr "" +msgstr "näytä kaikki data" #: babybuddy/models.py:52 msgid "1 day" -msgstr "" +msgstr "1 päivä" #: babybuddy/models.py:53 msgid "2 days" -msgstr "" +msgstr "2 päivää" #: babybuddy/models.py:54 msgid "3 days" -msgstr "" +msgstr "3 päivää" #: babybuddy/models.py:55 msgid "1 week" -msgstr "" +msgstr "1 viikko" #: babybuddy/models.py:56 msgid "4 weeks" -msgstr "" +msgstr "4 viikkoa" #: babybuddy/models.py:63 msgid "Language" @@ -142,14 +142,12 @@ msgid "Chinese (simplified)" msgstr "" #: babybuddy/settings/base.py:178 -#, fuzzy -#| msgid "Spanish" msgid "Danish" -msgstr "espanja" +msgstr "" #: babybuddy/settings/base.py:179 msgid "Dutch" -msgstr "" +msgstr "hollanti" #: babybuddy/settings/base.py:180 msgid "English (US)" @@ -165,7 +163,7 @@ msgstr "ranska" #: babybuddy/settings/base.py:183 msgid "Finnish" -msgstr "" +msgstr "suomi" #: babybuddy/settings/base.py:184 msgid "German" @@ -177,29 +175,33 @@ msgstr "" #: babybuddy/settings/base.py:186 msgid "Italian" -msgstr "" +msgstr "italia" #: babybuddy/settings/base.py:187 -msgid "Polish" -msgstr "englanti" +msgid "Norwegian Bokmål" +msgstr "" #: babybuddy/settings/base.py:188 +msgid "Polish" +msgstr "puola" + +#: babybuddy/settings/base.py:189 msgid "Portuguese" msgstr "" -#: babybuddy/settings/base.py:189 +#: babybuddy/settings/base.py:190 msgid "Russian" msgstr "" -#: babybuddy/settings/base.py:190 +#: babybuddy/settings/base.py:191 msgid "Spanish" msgstr "espanja" -#: babybuddy/settings/base.py:191 +#: babybuddy/settings/base.py:192 msgid "Swedish" msgstr "ruotsi" -#: babybuddy/settings/base.py:192 +#: babybuddy/settings/base.py:193 msgid "Turkish" msgstr "turkki" @@ -281,14 +283,14 @@ msgstr "Uni" #: core/templates/core/tummytime_list.html:7 #: core/templates/core/tummytime_list.html:12 msgid "Tummy Time" -msgstr "Ihokontakti" +msgstr "Maha-aika" #: babybuddy/templates/babybuddy/nav-dropdown.html:96 #: core/templates/timeline/timeline.html:4 #: core/templates/timeline/timeline.html:7 #: dashboard/templates/dashboard/child_button_group.html:9 msgid "Timeline" -msgstr "" +msgstr "Aikajana" #: babybuddy/templates/babybuddy/nav-dropdown.html:107 #: babybuddy/templates/babybuddy/nav-dropdown.html:115 core/models.py:188 @@ -331,7 +333,7 @@ msgstr "Muistiinpanot" #: babybuddy/templates/babybuddy/nav-dropdown.html:149 msgid "Measurements" -msgstr "" +msgstr "Mitat" #: babybuddy/templates/babybuddy/nav-dropdown.html:157 core/models.py:139 #: core/models.py:151 core/models.py:152 core/models.py:155 @@ -362,11 +364,11 @@ msgstr "" #: reports/templates/reports/head_circumference_change.html:9 #: reports/templates/reports/report_list.html:25 msgid "Head Circumference" -msgstr "" +msgstr "Päänympärys" #: babybuddy/templates/babybuddy/nav-dropdown.html:177 msgid "Head Circumference entry" -msgstr "" +msgstr "Päänympätysmerkintä" #: babybuddy/templates/babybuddy/nav-dropdown.html:185 core/models.py:369 #: core/models.py:381 core/models.py:382 core/models.py:385 @@ -381,11 +383,11 @@ msgstr "" #: reports/templates/reports/height_change.html:9 #: reports/templates/reports/report_list.html:26 msgid "Height" -msgstr "" +msgstr "Pituus" #: babybuddy/templates/babybuddy/nav-dropdown.html:191 msgid "Height entry" -msgstr "" +msgstr "Pituusmerkintä" #: babybuddy/templates/babybuddy/nav-dropdown.html:199 core/models.py:507 #: core/models.py:520 core/models.py:521 core/models.py:524 @@ -433,11 +435,11 @@ msgstr "Aktiviteetit" #: babybuddy/templates/babybuddy/nav-dropdown.html:240 #: reports/graphs/diaperchange_lifetimes.py:27 msgid "Changes" -msgstr "Muutokset" +msgstr "Vaihdot" #: babybuddy/templates/babybuddy/nav-dropdown.html:246 msgid "Change" -msgstr "Muutos" +msgstr "Vaihto" #: babybuddy/templates/babybuddy/nav-dropdown.html:253 #: babybuddy/templates/babybuddy/welcome.html:34 core/models.py:313 @@ -459,11 +461,11 @@ msgstr "Syötöt" #: reports/templates/reports/pumping_amounts.html:4 #: reports/templates/reports/pumping_amounts.html:9 msgid "Pumping" -msgstr "" +msgstr "Pumppaus" #: babybuddy/templates/babybuddy/nav-dropdown.html:273 msgid "Pumping entry" -msgstr "" +msgstr "Pumppausmerkintä" #: babybuddy/templates/babybuddy/nav-dropdown.html:286 msgid "Sleep entry" @@ -471,7 +473,7 @@ msgstr "Unimerkintä" #: babybuddy/templates/babybuddy/nav-dropdown.html:299 msgid "Tummy Time entry" -msgstr "Ihokontakti" +msgstr "Maha-aikamerkintä" #: babybuddy/templates/babybuddy/nav-dropdown.html:323 #: babybuddy/templates/babybuddy/user_add_device.html:7 @@ -490,10 +492,8 @@ msgstr "Salasana" #: babybuddy/templates/babybuddy/user_add_device.html:4 #: babybuddy/templates/babybuddy/user_add_device.html:8 #: babybuddy/templates/babybuddy/user_add_device.html:12 -#, fuzzy -#| msgid "Add a Feeding" msgid "Add a device" -msgstr "Lisää syöttö" +msgstr "Lisää laite" #: babybuddy/templates/babybuddy/nav-dropdown.html:330 msgid "Logout" @@ -650,25 +650,22 @@ msgstr "Peruuta" #: babybuddy/templates/babybuddy/user_confirm_unlock.html:4 msgid "Unlock User" -msgstr "" +msgstr "Avaa käyttäjä" #: babybuddy/templates/babybuddy/user_confirm_unlock.html:9 #: babybuddy/templates/babybuddy/user_confirm_unlock.html:18 #: babybuddy/templates/babybuddy/user_form.html:31 msgid "Unlock" -msgstr "" +msgstr "Avaa" #: babybuddy/templates/babybuddy/user_confirm_unlock.html:15 -#, fuzzy, python-format -#| msgid "" -#| "
CSRF_TRUSTED_ORIGINS
"
+"environment variable. If multiple origins are required separate with commas."
+msgstr ""
+"Legg til %(origin)s til CSRF_TRUSTED_ORIGINS
"
+"miljøvariabel. Om flere er påkrevd, separer verdien med komma"
+
+#: babybuddy/templates/error/404.html:4 babybuddy/templates/error/404.html:7
+msgid "Page Not Found"
+msgstr "Siden ble ikke funnet"
+
+#: babybuddy/templates/error/404.html:9
+#, python-format
+msgid "The path %(request_path)s
does not exist."
+msgstr "Stien %(request_path)s
eksisterer ikke."
+
+#: babybuddy/templates/error/500.html:4 babybuddy/templates/error/500.html:7
+msgid "Server Error"
+msgstr "Serverfeil"
+
+#: babybuddy/templates/error/base.html:14
+msgid "Return to Baby Buddy"
+msgstr "Gå tilbake til Baby Buddy"
+
+#: babybuddy/templates/error/lockout.html:4
+msgid "Too Many Login Attempts"
+msgstr "For mange innloggingsforsøk"
+
+#: babybuddy/templates/registration/login.html:32
+msgid "Login"
+msgstr "Logg inn"
+
+#: babybuddy/templates/registration/login.html:38
+msgid "Forgot your password?"
+msgstr "Glemt passord?"
+
+#: babybuddy/templates/registration/password_reset_complete.html:4
+msgid "Password Reset Successfully!"
+msgstr "Passordet er resatt! "
+
+#: babybuddy/templates/registration/password_reset_complete.html:8
+msgid "Your password has been set. You may go ahead and log in now."
+msgstr "Passordet er blitt satt. Du kan nå logge inn."
+
+#: babybuddy/templates/registration/password_reset_complete.html:9
+msgid "Log in"
+msgstr "Logg inn"
+
+#: babybuddy/templates/registration/password_reset_confirm.html:4
+msgid "Password Reset"
+msgstr "Reset passord"
+
+#: babybuddy/templates/registration/password_reset_confirm.html:13
+msgid ""
+"Oh snap! The two passwords did not match. Please try again."
+msgstr ""
+"Woops! Passordene samsvarer ikke. Vennligst prøv igjen."
+
+#: babybuddy/templates/registration/password_reset_confirm.html:22
+msgid "Enter your new password in each field below."
+msgstr "Tast inn ditt nye passord i feltet under."
+
+#: babybuddy/templates/registration/password_reset_confirm.html:46
+#: babybuddy/templates/registration/password_reset_form.html:31
+msgid "Reset Password"
+msgstr "Resett passord"
+
+#: babybuddy/templates/registration/password_reset_done.html:4
+msgid "Reset Email Sent"
+msgstr "Passord resett e-post er sendt."
+
+#: babybuddy/templates/registration/password_reset_done.html:9
+msgid ""
+"We've emailed you instructions for setting your password, if an account "
+"exists with the email you entered. You should receive them shortly."
+msgstr ""
+"Vi har sendt deg en e-post med instruksjoner for å sette passordet ditt, "
+"dersom du har en bruker. Du skal motta denne innen kort tid."
+
+#: babybuddy/templates/registration/password_reset_done.html:15
+msgid ""
+"If you don't receive an email, please make sure you've entered the address "
+"you registered with, and check your spam folder."
+msgstr ""
+"Om du ikke mottar e-post fra oss, dobbeltsjekk at du har tastet inn riktig "
+"brukerdata og ev. søppelboksen din."
+
+#: babybuddy/templates/registration/password_reset_email.html:2
+#, python-format
+msgid ""
+"You're receiving this email because you requested a password reset for your "
+"user account at %(site_name)s."
+msgstr ""
+"Du mottar denne e-posten fordi du har forespurt nytt passord for din bruker "
+"på %(site_name)s."
+
+#: babybuddy/templates/registration/password_reset_email.html:4
+msgid "Please go to the following page and choose a new password:"
+msgstr "Vennligst gå til følgende side og velg et passord:"
+
+#: babybuddy/templates/registration/password_reset_email.html:8
+msgid "Your username, in case you’ve forgotten:"
+msgstr "Ditt brukernavn, i tilfelle du har glemt det:"
+
+#: babybuddy/templates/registration/password_reset_email.html:10
+msgid "Thanks for using Baby Buddy!"
+msgstr "Takk for at du bruker Baby Buddy!"
+
+#: babybuddy/templates/registration/password_reset_form.html:4
+msgid "Forgot Password"
+msgstr "Glemt Passord"
+
+#: babybuddy/templates/registration/password_reset_form.html:9
+msgid ""
+"Enter your account email address in the form below. If the address is valid, "
+"you will receive instructions for resetting your password."
+msgstr ""
+"Fyll inn e-posten knyttet til brukeren din i skjemaet under. Om e-posten er "
+"gyldig vil du motta instruksjoner for å resette passordet ditt."
+
+#: babybuddy/views.py:53
+msgid "Forbidden"
+msgstr "Forbudt"
+
+#: babybuddy/views.py:54
+msgid "CSRF verification failed. Request aborted."
+msgstr "CSRF-verifikasjon feilet. Forespørselen er avbrutt."
+
+#: babybuddy/views.py:112
+#, fuzzy, python-format
+#| msgid "User %(username)s added!"
+msgid "User %(username)s added!"
+msgstr "Brukeren %(username) er lagt til!"
+
+#: babybuddy/views.py:123
+#, fuzzy, python-format
+#| msgid "User %(username)s updated."
+msgid "User %(username)s updated."
+msgstr "Bruker %(username) er oppdatert."
+
+#: babybuddy/views.py:138
+msgid "User unlocked."
+msgstr "Bruker låst opp."
+
+#: babybuddy/views.py:162
+#, python-brace-format
+msgid "User {user} deleted."
+msgstr "Brukeren {user} er slettet. "
+
+#: babybuddy/views.py:183
+msgid "Password updated."
+msgstr "Passordet er oppdatert."
+
+#: babybuddy/views.py:197
+msgid "User API key regenerated."
+msgstr "Bruker API key er generert."
+
+#: babybuddy/views.py:238
+msgid "Settings saved!"
+msgstr "Innstillinger lagret!"
+
+#: core/filters.py:11 core/models.py:96 core/models.py:115
+msgid "Tag"
+msgstr "Tagg"
+
+#: core/forms.py:120
+msgid "Name does not match child name."
+msgstr "Navnet samsvarer ikke med barnets navn"
+
+#: core/forms.py:136
+msgid ""
+"Click on the tags to add (+) or remove (-) tags or use the text editor to "
+"create new tags."
+msgstr ""
+"Klikk på taggene (+) eller for å fjerne (-) tagger, eller brukt "
+"tekstredigereren for å opprette nye tagger."
+
+#: core/models.py:28
+msgid "Date can not be in the future."
+msgstr "Dato kan ikke være i fremtiden."
+
+#: core/models.py:42
+msgid "Start time must come before end time."
+msgstr "Starttid må komme før sluttid."
+
+#: core/models.py:45
+msgid "Duration too long."
+msgstr "Varigheten er for lang."
+
+#: core/models.py:61
+msgid "Another entry intersects the specified time period."
+msgstr "En annen oppføring kolliderer med den satte tidsperioden."
+
+#: core/models.py:75
+msgid "Date/time can not be in the future."
+msgstr "Dato/tid kan ikke være i fremtiden."
+
+#: core/models.py:84 core/models.py:237
+#: core/templates/core/diaperchange_list.html:30
+msgid "Color"
+msgstr "Farge"
+
+#: core/models.py:90
+msgid "Last used"
+msgstr "Sist brukt"
+
+#: core/models.py:97 core/templates/core/bmi_list.html:30
+#: core/templates/core/diaperchange_list.html:32
+#: core/templates/core/feeding_list.html:35
+#: core/templates/core/head_circumference_list.html:30
+#: core/templates/core/height_list.html:30
+#: core/templates/core/note_list.html:30
+#: core/templates/core/pumping_list.html:30
+#: core/templates/core/sleep_list.html:32
+#: core/templates/core/temperature_list.html:30
+#: core/templates/core/tummytime_list.html:31
+#: core/templates/core/weight_list.html:30
+msgid "Tags"
+msgstr "Tagger"
+
+#: core/models.py:141 core/models.py:341 core/models.py:371 core/models.py:676
+#: core/templates/core/bmi_list.html:25
+#: core/templates/core/feeding_list.html:25
+#: core/templates/core/head_circumference_list.html:25
+#: core/templates/core/height_list.html:25
+#: core/templates/core/weight_list.html:25 reports/graphs/bmi_change.py:28
+#: reports/graphs/diaperchange_amounts.py:37
+#: reports/graphs/diaperchange_types.py:49 reports/graphs/feeding_amounts.py:70
+#: reports/graphs/feeding_duration.py:56
+#: reports/graphs/head_circumference_change.py:28
+#: reports/graphs/height_change.py:28 reports/graphs/pumping_amounts.py:60
+#: reports/graphs/sleep_pattern.py:157 reports/graphs/sleep_totals.py:59
+#: reports/graphs/tummytime_duration.py:51 reports/graphs/weight_change.py:28
+msgid "Date"
+msgstr "Dato"
+
+#: core/models.py:163
+msgid "First name"
+msgstr "Fornavn"
+
+#: core/models.py:165
+msgid "Last name"
+msgstr "Etternavn"
+
+#: core/models.py:167
+msgid "Birth date"
+msgstr "Fødselsdato"
+
+#: core/models.py:174
+msgid "Slug"
+msgstr "Slug"
+
+#: core/models.py:177
+msgid "Picture"
+msgstr "Bilde"
+
+#: core/models.py:224 core/models.py:398 core/models.py:429 core/models.py:510
+#: core/templates/core/diaperchange_list.html:25
+#: core/templates/core/note_list.html:25
+#: core/templates/core/pumping_list.html:25
+#: core/templates/core/temperature_list.html:25
+#: reports/graphs/temperature_change.py:27
+msgid "Time"
+msgstr "Tid"
+
+#: core/models.py:226 core/templates/core/diaperchange_list.html:61
+#: reports/graphs/diaperchange_types.py:36
+msgid "Wet"
+msgstr "Våt"
+
+#: core/models.py:227 core/templates/core/diaperchange_list.html:62
+#: reports/graphs/diaperchange_types.py:30
+msgid "Solid"
+msgstr "Fast"
+
+#: core/models.py:231
+msgid "Black"
+msgstr "Svart"
+
+#: core/models.py:232
+msgid "Brown"
+msgstr "Brun"
+
+#: core/models.py:233
+msgid "Green"
+msgstr "Grønn"
+
+#: core/models.py:234
+msgid "Yellow"
+msgstr "Gul"
+
+#: core/models.py:239 core/models.py:303 core/models.py:428
+#: core/templates/core/diaperchange_list.html:31
+#: core/templates/core/pumping_list.html:29
+#: dashboard/templates/cards/pumping_last.html:23
+msgid "Amount"
+msgstr "Mengde"
+
+#: core/models.py:276 core/models.py:454 core/models.py:544 core/models.py:633
+msgid "Start time"
+msgstr "Startid"
+
+#: core/models.py:277 core/models.py:455 core/models.py:547 core/models.py:634
+msgid "End time"
+msgstr "Sluttid"
+
+#: core/models.py:279 core/models.py:457 core/models.py:550 core/models.py:636
+#: core/templates/core/feeding_list.html:34
+#: core/templates/core/sleep_list.html:30
+#: core/templates/core/timer_list.html:29
+#: core/templates/core/tummytime_list.html:29
+msgid "Duration"
+msgstr "Varighet"
+
+#: core/models.py:283
+msgid "Breast milk"
+msgstr "Brystmelk"
+
+#: core/models.py:284
+msgid "Formula"
+msgstr "Sammensetning"
+
+#: core/models.py:285
+msgid "Fortified breast milk"
+msgstr "Forsterket morsmelk"
+
+#: core/models.py:286
+msgid "Solid food"
+msgstr "Fast føde"
+
+#: core/models.py:289 core/templates/core/feeding_list.html:30
+msgid "Type"
+msgstr "Type"
+
+#: core/models.py:293
+msgid "Bottle"
+msgstr "Flaske"
+
+#: core/models.py:294
+msgid "Left breast"
+msgstr "Venstre bryst"
+
+#: core/models.py:295
+msgid "Right breast"
+msgstr "Høyre bryst"
+
+#: core/models.py:296
+msgid "Both breasts"
+msgstr "Begge bryst"
+
+#: core/models.py:297
+msgid "Parent fed"
+msgstr "Foreldrestyrt mating"
+
+#: core/models.py:298
+msgid "Self fed"
+msgstr "Selvstyrt mating"
+
+#: core/models.py:301 core/templates/core/feeding_list.html:29
+msgid "Method"
+msgstr "Metode"
+
+#: core/models.py:453
+msgid "Napping"
+msgstr "Middagshvil"
+
+#: core/models.py:541 core/templates/core/timer_list.html:25
+msgid "Name"
+msgstr "Navn"
+
+#: core/models.py:565 core/templates/core/timer_form.html:4
+msgid "Timer"
+msgstr "Tidtaker"
+
+#: core/models.py:566 core/templates/core/timer_confirm_delete.html:9
+#: core/templates/core/timer_confirm_delete_inactive.html:9
+#: core/templates/core/timer_detail.html:8
+#: core/templates/core/timer_form.html:7 core/templates/core/timer_list.html:4
+#: core/templates/core/timer_list.html:7 core/templates/core/timer_list.html:12
+#: core/templates/core/timer_nav.html:10
+msgid "Timers"
+msgstr "Tidtakere"
+
+#: core/models.py:569
+#, python-brace-format
+msgid "Timer #{id}"
+msgstr "Tidtaker #{id}"
+
+#: core/models.py:639 core/templates/core/tummytime_list.html:30
+msgid "Milestone"
+msgstr "Milepæl"
+
+#: core/templates/core/bmi_confirm_delete.html:4
+msgid "Delete a BMI Entry"
+msgstr "Slett BMI-oppføring"
+
+#: core/templates/core/bmi_form.html:8 core/templates/core/bmi_form.html:17
+#: core/templates/core/bmi_form.html:27
+msgid "Add a BMI Entry"
+msgstr "Legg til BMI-oppføring"
+
+#: core/templates/core/bmi_list.html:15
+msgid "Add BMI"
+msgstr "Legg til BMI"
+
+#: core/templates/core/bmi_list.html:70
+msgid "No BMI entries found."
+msgstr "Ingen KMI-oppføringer funnet."
+
+#: core/templates/core/child_confirm_delete.html:4
+msgid "Delete a Child"
+msgstr "Slett et barn"
+
+#: core/templates/core/child_confirm_delete.html:20
+msgid "To confirm this action. Type the full name of the child below."
+msgstr "For å bekrefte denne handlingen, fyll inn navnet på barnet under."
+
+#: core/templates/core/child_detail.html:25
+#: dashboard/templates/dashboard/dashboard.html:32
+msgid "Born"
+msgstr "Født"
+
+#: core/templates/core/child_detail.html:26
+#: dashboard/templates/dashboard/dashboard.html:33
+msgid "Age"
+msgstr "Alder"
+
+#: core/templates/core/child_list.html:15
+msgid "Add Child"
+msgstr "Legg til barn"
+
+#: core/templates/core/child_list.html:27
+msgid "Birth Date"
+msgstr "Fødselsdato"
+
+#: core/templates/core/child_list.html:62
+msgid "No children found."
+msgstr "Ingen barn funnet."
+
+#: core/templates/core/child_quick_switch.html:6
+msgid "Switch child"
+msgstr "Skift barn"
+
+#: core/templates/core/child_quick_switch.html:13
+msgid "Switch to…"
+msgstr "Skift til..."
+
+#: core/templates/core/diaperchange_confirm_delete.html:4
+msgid "Delete a Diaper Change"
+msgstr "Slett et bleieskift"
+
+#: core/templates/core/diaperchange_form.html:6
+msgid "Update a Diaper Change"
+msgstr "Oppdater et bleieskift"
+
+#: core/templates/core/diaperchange_form.html:8
+#: core/templates/core/diaperchange_form.html:27
+msgid "Add a Diaper Change"
+msgstr "Legg til bleieskift"
+
+#: core/templates/core/diaperchange_form.html:17
+#: core/templates/core/feeding_form.html:17
+#: core/templates/core/note_form.html:17 core/templates/core/sleep_form.html:17
+#: core/templates/core/tummytime_form.html:17
+#: core/templates/core/widget_tag_editor.html:24
+msgid "Add"
+msgstr "Legg til"
+
+#: core/templates/core/diaperchange_list.html:15
+msgid "Add Diaper Change"
+msgstr "Legg til bleieskift"
+
+#: core/templates/core/diaperchange_list.html:29
+msgid "Contents"
+msgstr "Innhold"
+
+#: core/templates/core/diaperchange_list.html:77
+msgid "No diaper changes found."
+msgstr "Ingen bleieskift funnet."
+
+#: core/templates/core/feeding_confirm_delete.html:4
+msgid "Delete a Feeding"
+msgstr "Slett en mating"
+
+#: core/templates/core/feeding_form.html:6
+msgid "Update a Feeding"
+msgstr "Oppdater en mating"
+
+#: core/templates/core/feeding_form.html:8
+#: core/templates/core/feeding_form.html:27
+msgid "Add a Feeding"
+msgstr "Legg til en mating"
+
+#: core/templates/core/feeding_list.html:15
+msgid "Add Feeding"
+msgstr "Legg til mating"
+
+#: core/templates/core/feeding_list.html:33
+msgid "Amt."
+msgstr "Amt."
+
+#: core/templates/core/feeding_list.html:82
+msgid "No feedings found."
+msgstr "Ingen matinger funnet."
+
+#: core/templates/core/head_circumference_confirm_delete.html:4
+msgid "Delete a Head Circumference Entry"
+msgstr "Slett en hodeomrektsoppføring"
+
+#: core/templates/core/head_circumference_form.html:8
+#: core/templates/core/head_circumference_form.html:17
+#: core/templates/core/head_circumference_form.html:27
+msgid "Add a Head Circumference Entry"
+msgstr "Legg til en hodeomkretsoppføring"
+
+#: core/templates/core/head_circumference_list.html:15
+msgid "Add Head Circumference"
+msgstr "Legg til hodeomkrets"
+
+#: core/templates/core/head_circumference_list.html:70
+msgid "No head circumference entries found."
+msgstr "Ingen hodeomkretsoppføring funnet."
+
+#: core/templates/core/height_confirm_delete.html:4
+msgid "Delete a Height Entry"
+msgstr "Slett en høydeoppføring"
+
+#: core/templates/core/height_form.html:8
+#: core/templates/core/height_form.html:17
+#: core/templates/core/height_form.html:27
+msgid "Add a Height Entry"
+msgstr "Legg til en høydeoppføring"
+
+#: core/templates/core/height_list.html:15
+msgid "Add Height"
+msgstr "Legg til høye"
+
+#: core/templates/core/height_list.html:70
+msgid "No height entries found."
+msgstr "Ingen høyeoppføring funnet."
+
+#: core/templates/core/note_confirm_delete.html:4
+msgid "Delete a Note"
+msgstr "Slett et notat"
+
+#: core/templates/core/note_form.html:6
+msgid "Update a Note"
+msgstr "Oppdater et notat"
+
+#: core/templates/core/note_form.html:8 core/templates/core/note_form.html:27
+msgid "Add a Note"
+msgstr "Legg til notat"
+
+#: core/templates/core/note_list.html:15
+msgid "Add Note"
+msgstr "Legg til notat"
+
+#: core/templates/core/note_list.html:64
+msgid "No notes found."
+msgstr "Ingen notat funnet."
+
+#: core/templates/core/pumping_confirm_delete.html:4
+msgid "Delete a Pumping Entry"
+msgstr "Slett en brystpumpeoppføring"
+
+#: core/templates/core/pumping_form.html:8
+#: core/templates/core/pumping_form.html:17
+#: core/templates/core/pumping_form.html:27
+msgid "Add a Pumping Entry"
+msgstr "Legg til en brystpumpeoppføring"
+
+#: core/templates/core/pumping_list.html:15
+msgid "Add Pumping Entry"
+msgstr "Legg til brystpumpeoppføring"
+
+#: core/templates/core/pumping_list.html:70
+msgid "No pumping entries found."
+msgstr "Ingen brystpumpeoppføringer funnet."
+
+#: core/templates/core/quick_timer_nav.html:9
+#: core/templates/core/quick_timer_nav.html:29
+#: core/templates/core/timer_nav.html:37
+msgid "Quick Start Timer"
+msgstr "Hurtigstart tidtaker"
+
+#: core/templates/core/quick_timer_nav.html:19
+#: core/templates/core/timer_nav.html:28
+msgid "Quick Start Timer For…"
+msgstr "Hurtigtidtaker for..."
+
+#: core/templates/core/sleep_confirm_delete.html:4
+msgid "Delete a Sleep Entry"
+msgstr "Slett en søvnoppføring"
+
+#: core/templates/core/sleep_form.html:6
+msgid "Update a Sleep Entry"
+msgstr "Oppdater en søvnoppføring"
+
+#: core/templates/core/sleep_form.html:8 core/templates/core/sleep_form.html:27
+msgid "Add a Sleep Entry"
+msgstr "Legg til søvnoppføring"
+
+#: core/templates/core/sleep_list.html:15
+msgid "Add Sleep"
+msgstr "Legg til søvn"
+
+#: core/templates/core/sleep_list.html:25
+#: core/templates/core/timer_form.html:12
+#: core/templates/core/timer_list.html:24
+#: core/templates/core/tummytime_list.html:24
+msgid "Start"
+msgstr "Start"
+
+#: core/templates/core/sleep_list.html:26
+#: core/templates/core/timer_list.html:30
+#: core/templates/core/tummytime_list.html:25
+msgid "End"
+msgstr "Slutt"
+
+#: core/templates/core/sleep_list.html:31
+msgid "Nap"
+msgstr "Lur"
+
+#: core/templates/core/sleep_list.html:74
+msgid "No sleep entries found."
+msgstr "Ingen søvnoppføring funnet."
+
+#: core/templates/core/temperature_confirm_delete.html:4
+msgid "Delete a Temperature Reading"
+msgstr "Slett en temperaturavlesning"
+
+#: core/templates/core/temperature_form.html:8
+#: core/templates/core/temperature_form.html:17
+msgid "Add a Temperature Reading"
+msgstr "Legg til temperaturavlesning"
+
+#: core/templates/core/temperature_form.html:27
+msgid "Add a Temperature Entry"
+msgstr "Legg til en temperaturoppføring"
+
+#: core/templates/core/temperature_list.html:15
+msgid "Add Temperature Reading"
+msgstr "Legg til temperaturavlesning"
+
+#: core/templates/core/temperature_list.html:70
+msgid "No temperature entries found."
+msgstr "Ingen temperaturoppføringer er funnet."
+
+#: core/templates/core/timer_confirm_delete.html:5
+#, fuzzy, python-format
+#| msgid "Delete %(object)s"
+msgid "Delete %(object)s"
+msgstr "Slett %(object)er"
+
+#: core/templates/core/timer_confirm_delete_inactive.html:5
+msgid "Delete All Inactive Timers"
+msgstr "Slett alle inaktive tidtakere"
+
+#: core/templates/core/timer_confirm_delete_inactive.html:10
+msgid "Delete Inactive"
+msgstr "Slett inaktiv"
+
+#: core/templates/core/timer_confirm_delete_inactive.html:17
+#, python-format
+msgid "Are you sure you want to delete %(number)s inactive timer?"
+msgid_plural "Are you sure you want to delete %(number)s inactive timers?"
+msgstr[0] "Er du sikker på at du vil slette %(number)s inaktiv tidtaker?"
+msgstr[1] "Er du sikker på at du vil slette %(number)s inaktive tidtakere?"
+
+#: core/templates/core/timer_detail.html:28
+msgid "Started"
+msgstr "Startet"
+
+#: core/templates/core/timer_detail.html:30
+msgid "Stopped"
+msgstr "Stoppet"
+
+#: core/templates/core/timer_detail.html:34
+#, fuzzy, python-format
+#| msgid "%(timer)s created by %(user)s"
+msgid "%(timer)s created by %(user)s"
+msgstr "%(timer) opprettet av %(user)"
+
+#: core/templates/core/timer_detail.html:63
+msgid "Timer actions"
+msgstr "Tidtaketalternativ"
+
+#: core/templates/core/timer_detail.html:77
+msgid "Restart timer"
+msgstr "Start tidtaking på nytt"
+
+#: core/templates/core/timer_detail.html:84
+msgid "Delete timer"
+msgstr "Slett tidtaker"
+
+#: core/templates/core/timer_form.html:22
+#: core/templates/core/timer_list.html:15 core/templates/core/timer_nav.html:15
+msgid "Start Timer"
+msgstr "Start tidtaker"
+
+#: core/templates/core/timer_list.html:58
+msgid "No timer entries found."
+msgstr "Ingen tidtakeroppføringer funnet."
+
+#: core/templates/core/timer_list.html:68
+msgid "Delete Inactive Timers"
+msgstr "Slett inaktive tidtakere"
+
+#: core/templates/core/timer_nav.html:20
+msgid "View Timers"
+msgstr "Vis tidtakere"
+
+#: core/templates/core/timer_nav.html:44
+#: dashboard/templates/cards/timer_list.html:6
+msgid "Active Timers"
+msgstr "Aktive tidtakere"
+
+#: core/templates/core/timer_nav.html:50
+#: dashboard/templates/cards/diaperchange_last.html:17
+#: dashboard/templates/cards/diaperchange_types.html:12
+#: dashboard/templates/cards/feeding_day.html:20
+#: dashboard/templates/cards/feeding_day.html:52
+#: dashboard/templates/cards/feeding_last.html:17
+#: dashboard/templates/cards/feeding_last_method.html:43
+#: dashboard/templates/cards/pumping_last.html:17
+#: dashboard/templates/cards/sleep_last.html:17
+#: dashboard/templates/cards/sleep_naps_day.html:18
+#: dashboard/templates/cards/sleep_recent.html:20
+#: dashboard/templates/cards/sleep_recent.html:52
+#: dashboard/templates/cards/tummytime_day.html:14
+msgid "None"
+msgstr "Ingen"
+
+#: core/templates/core/tummytime_confirm_delete.html:4
+msgid "Delete a Tummy Time Entry"
+msgstr "Slett en magetidoppføring"
+
+#: core/templates/core/tummytime_form.html:6
+msgid "Update a Tummy Time Entry"
+msgstr "Oppdater en magetidoppføring"
+
+#: core/templates/core/tummytime_form.html:8
+#: core/templates/core/tummytime_form.html:27
+msgid "Add a Tummy Time Entry"
+msgstr "Legg til magetidoppføring"
+
+#: core/templates/core/tummytime_list.html:15
+msgid "Add Tummy Time"
+msgstr "Legg til magetid"
+
+#: core/templates/core/tummytime_list.html:67
+msgid "No tummy time entries found."
+msgstr "Ingen magetidoppføringer funnet."
+
+#: core/templates/core/weight_confirm_delete.html:4
+msgid "Delete a Weight Entry"
+msgstr "Slett en vektoppføring"
+
+#: core/templates/core/weight_form.html:8
+#: core/templates/core/weight_form.html:17
+#: core/templates/core/weight_form.html:27
+msgid "Add a Weight Entry"
+msgstr "Legg til en vektoppføring"
+
+#: core/templates/core/weight_list.html:15
+msgid "Add Weight"
+msgstr "Legg til vekt"
+
+#: core/templates/core/weight_list.html:70
+msgid "No weight entries found."
+msgstr "Ingen vektoppføringer funnet."
+
+#: core/templates/core/widget_tag_editor.html:22
+msgid "Tag name"
+msgstr "Taggnavn"
+
+#: core/templates/core/widget_tag_editor.html:28
+msgid "Recently used:"
+msgstr "Sist brukte:"
+
+#: core/templates/core/widget_tag_editor.html:53
+msgctxt "Error modal"
+msgid "Error"
+msgstr "Feil"
+
+#: core/templates/core/widget_tag_editor.html:58
+msgctxt "Error modal"
+msgid "An error ocurred."
+msgstr "En feil oppstod."
+
+#: core/templates/core/widget_tag_editor.html:59
+msgctxt "Error modal"
+msgid "Invalid tag name."
+msgstr "Ugyldig taggnavn."
+
+#: core/templates/core/widget_tag_editor.html:60
+msgctxt "Error modal"
+msgid "Failed to create tag."
+msgstr "Kunne ikke opprette tagg."
+
+#: core/templates/core/widget_tag_editor.html:61
+msgctxt "Error modal"
+msgid "Failed to obtain tag data."
+msgstr "Kunne ikke hente taggdata."
+
+#: core/templates/core/widget_tag_editor.html:66
+msgctxt "Error modal"
+msgid "Close"
+msgstr "Lukk"
+
+#: core/templates/timeline/_timeline.html:38
+#, python-format
+msgid "%(since)s ago (%(time)s)"
+msgstr "%(since)s siden (%(time)s)"
+
+#: core/templates/timeline/_timeline.html:44
+#, python-format
+msgid "Duration: %(duration)s"
+msgstr "Varighet: %(duration)s"
+
+#: core/templates/timeline/_timeline.html:53
+#, python-format
+msgid "%(since)s since previous"
+msgstr "%(since)s siden sist"
+
+#: core/templates/timeline/_timeline.html:61
+#: dashboard/templates/dashboard/child_button_group.html:20
+msgid "Edit"
+msgstr "Endre"
+
+#: core/templates/timeline/_timeline.html:85
+msgid "No events"
+msgstr "Ingen hendelser"
+
+#: core/templatetags/datetime.py:60
+msgid "Today"
+msgstr "I dag"
+
+#: core/templatetags/datetime.py:75
+msgid "{}, {}"
+msgstr "{}, {}"
+
+#: core/templatetags/duration.py:25
+msgid "0 days"
+msgstr "0 dager"
+
+#: core/templatetags/duration.py:111
+#: dashboard/templates/cards/diaperchange_types.html:49
+msgid "today"
+msgstr "i dag"
+
+#: core/templatetags/duration.py:113
+#: dashboard/templates/cards/diaperchange_types.html:51
+msgid "yesterday"
+msgstr "i går"
+
+#: core/templatetags/duration.py:116
+msgid " days ago"
+msgstr "␣dager siden"
+
+#: core/timeline.py:53
+#, python-format
+msgid "%(child)s started tummy time!"
+msgstr "%(child)s har startet magetid!"
+
+#: core/timeline.py:65
+#, python-format
+msgid "%(child)s finished tummy time."
+msgstr "%(child)s avsluttet magetid."
+
+#: core/timeline.py:91
+#, python-format
+msgid "%(child)s fell asleep."
+msgstr "%(child)s sovnet."
+
+#: core/timeline.py:103
+#, python-format
+msgid "%(child)s woke up."
+msgstr "%(child)s våknet."
+
+#: core/timeline.py:137
+#, python-format
+msgid "Amount: %(amount).0f"
+msgstr "Mengde: %(amount).0f"
+
+#: core/timeline.py:145
+#, python-format
+msgid "%(child)s started feeding."
+msgstr "%(child)s startet mating."
+
+#: core/timeline.py:158
+#, python-format
+msgid "%(child)s finished feeding."
+msgstr "%(child)s avsluttet mating."
+
+#: core/timeline.py:185
+#, python-format
+msgid "%(child)s had a %(type)s diaper change."
+msgstr "%(child)s har hatt en %(type)s bleieskift."
+
+#: core/utils.py:40
+#, fuzzy, python-format
+#| msgid "%(hours)s hour"
+#| msgid_plural "%(hours)s hours"
+msgid "%(hours)s hour"
+msgid_plural "%(hours)s hours"
+msgstr[0] "%(hours) time"
+msgstr[1] "%(hours) timer"
+
+#: core/utils.py:44
+#, fuzzy, python-format
+#| msgid "%(minutes)s minute"
+#| msgid_plural "%(minutes)s minutes"
+msgid "%(minutes)s minute"
+msgid_plural "%(minutes)s minutes"
+msgstr[0] "%(minutes) minutt"
+msgstr[1] "%(minutes) minutter"
+
+#: core/utils.py:50
+#, python-format
+msgid "%(seconds)s second"
+msgid_plural "%(seconds)s seconds"
+msgstr[0] "%(seconds) sekund"
+msgstr[1] "%(seconds) sekunder"
+
+#: core/views.py:33
+#, fuzzy, python-format
+#| msgid "%(model)s entry for %(child)s added!"
+msgid "%(model)s entry for %(child)s added!"
+msgstr "%(model)er oppført for %(child)er er lagt til!"
+
+#: core/views.py:35 core/views.py:308
+#, python-format
+msgid "%(model)s entry added!"
+msgstr "%(model)s oppføring lagt til!"
+
+#: core/views.py:61 core/views.py:316
+#, python-format
+msgid "%(model)s entry for %(child)s updated."
+msgstr "%(model)s oppføring for %(child)s oppdatert."
+
+#: core/views.py:63
+#, python-format
+msgid "%(model)s entry updated."
+msgstr "%(model)s oppføring oppdatert."
+
+#: core/views.py:69 core/views.py:146
+#, fuzzy, python-format
+#| msgid "%(model)s entry deleted."
+msgid "%(model)s entry deleted."
+msgstr "%(model) oppføring slettet."
+
+#: core/views.py:115
+#, python-format
+msgid "%(first_name)s %(last_name)s added!"
+msgstr "%(first_name)s %(last_name)s lagt til!"
+
+#: core/views.py:366
+#, fuzzy, python-format
+#| msgid "%(model)s reading added!"
+msgid "%(model)s reading added!"
+msgstr "%(model) avlesning lagt til!"
+
+#: core/views.py:374
+#, python-format
+msgid "%(model)s reading for %(child)s updated."
+msgstr "%(model)s avlesning for %(child)s er oppdatert."
+
+#: core/views.py:483
+#, python-format
+msgid "%(timer)s stopped."
+msgstr "%(timer)s stoppet."
+
+#: core/views.py:506
+msgid "All inactive timers deleted."
+msgstr "Alle inaktive tidtakere er slettet."
+
+#: core/views.py:516
+msgid "No inactive timers exist."
+msgstr "Ingen inaktive tidtakere eksisterer."
+
+#: dashboard/templates/cards/diaperchange_last.html:6
+msgid "Last Diaper Change"
+msgstr "Sist bleieskift"
+
+#: dashboard/templates/cards/diaperchange_last.html:12
+#: dashboard/templates/cards/feeding_last.html:12
+#: dashboard/templates/cards/pumping_last.html:12
+#: dashboard/templates/cards/sleep_last.html:12
+#: dashboard/templates/cards/tummytime_last.html:13
+#, python-format
+msgid "Oh snap! The\n" +#~ " two passwords did not match. Please try again.
" +#~ msgstr "" +#~ "Oh snap! Passordene stemte ikke " +#~ "overens, prøv på nytt.
" + +#~ msgid "" +#~ "We've emailed you instructions for setting your\n" +#~ " password, if an account exists with the email you entered. " +#~ "You\n" +#~ " should receive them shortly.
\n" +#~ "If you don't receive an email, please make sure " +#~ "you've\n" +#~ " entered the address you registered with, and check your spam\n" +#~ " folder.
" +#~ msgstr "" +#~ "Vi har sendt deg passord reset epost, om det finnes en konto på e-" +#~ "postadressen du har oppgitt.
\n" +#~ "Hvis du ikke har motatt eposten, sjekk at du " +#~ "har tastet inn riktig e-post addresse, og sjekk spam mappen.
" + +#~ msgid "" +#~ "Enter your account email address in the\n" +#~ " form below. If the address is valid, you will receive " +#~ "instructions for\n" +#~ " resetting your password.
" +#~ msgstr "" +#~ "Skriv inn epostadressen i feltet under. Om adressen " +#~ "finnes, vil du få tilsendt instruksjoner for hvordan du resetter passord." +#~ "
" + +#~ msgid "Wet and/or solid is required." +#~ msgstr "Våt og/eller fast er påkrevd." + +#~ msgid "Only \"Bottle\" method is allowed with \"Formula\" type." +#~ msgstr "Kun metoden \"Flaske\" er akseptert med valget \"Sammensetning\"." + +#~ msgid "Add a Change" +#~ msgstr "Legg til en endring" + +#~ msgid "%(timer)s created by %(object.user)s" +#~ msgstr "%(timer)e opprettet av %(object.user)e" + +#~ msgid "%(child)s had a diaper change." +#~ msgstr "%(child)s har hatt et bleieskift." + +#~ msgid "%(time)s ago" +#~ msgstr "&(time)s siden" + +#~ msgid "Today's Sleep" +#~ msgstr "Søvn i dag" + +#~ msgid "None yet today" +#~ msgstr "Ingen ennå i dag" + +#~ msgid "%(count)s sleep entries" +#~ msgstr "%(count) søvnoppføringer" + +#~ msgid "Last Slept" +#~ msgstr "Siste søvn" + +#~ msgid "%(count)s nap%(plural)s" +#~ msgstr "%(count) hvile%(plural)s" + +#~ msgid "%(count)s active timer%(plural)s" +#~ msgstr "%(count) aktiv tidtaker%(plural)" + +#~ msgid "Started by %(instance.user)s at %(start)s" +#~ msgstr "Startet av %(instance.user) den %(start)" + +#~ msgid "There is no enough data to generate this report." +#~ msgstr "Det er ikke nok data til å generere denne rapporten." + +#~ msgid "Total feeding amount" +#~ msgstr "Total matemengde" + +#~ msgid "Total Feeding Amounts" +#~ msgstr "Total matemengde" + +#~ msgid "Are you sure you want to delete %(number)s inactive timer%(plural)s?" +#~ msgstr "" +#~ "Er du sikker på at du vil slette %(number) inaktiv tidtaker%(plural)e?" + +#~ msgid "%(n)s feeding%(plural)s ago" +#~ msgstr "%(n)s mating%(plural)e siden" + +#~ msgid "Contents: %(contents)s" +#~ msgstr "Innhold: %(contents)s" + +#~ msgid "%(count)s feeding entries" +#~ msgstr "%(count)s matingsoppføringer" + +#~ msgid "No bmi entries found." +#~ msgstr "Ingen BMI-oppføringer funnet." diff --git a/locale/nl/LC_MESSAGES/django.po b/locale/nl/LC_MESSAGES/django.po index d17f45ba..c80f1d28 100644 --- a/locale/nl/LC_MESSAGES/django.po +++ b/locale/nl/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Baby Buddy\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-02-22 14:39+0000\n" +"POT-Creation-Date: 2023-05-02 18:53-0700\n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -182,26 +182,30 @@ msgid "Italian" msgstr "Italiaans" #: babybuddy/settings/base.py:187 +msgid "Norwegian Bokmål" +msgstr "" + +#: babybuddy/settings/base.py:188 msgid "Polish" msgstr "Pools" -#: babybuddy/settings/base.py:188 +#: babybuddy/settings/base.py:189 msgid "Portuguese" msgstr "Portugees" -#: babybuddy/settings/base.py:189 +#: babybuddy/settings/base.py:190 msgid "Russian" msgstr "" -#: babybuddy/settings/base.py:190 +#: babybuddy/settings/base.py:191 msgid "Spanish" msgstr "Spaans" -#: babybuddy/settings/base.py:191 +#: babybuddy/settings/base.py:192 msgid "Swedish" msgstr "Zweeds" -#: babybuddy/settings/base.py:192 +#: babybuddy/settings/base.py:193 msgid "Turkish" msgstr "Turks" @@ -1912,10 +1916,8 @@ msgstr[0] "%(n)s maaltijd geleden" msgstr[1] "%(n)s maaltijden geleden" #: dashboard/templates/cards/pumping_last.html:6 -#, fuzzy -#| msgid "Pumping" msgid "Last Pumping" -msgstr "Afkolven" +msgstr "" #: dashboard/templates/cards/sleep_last.html:6 msgid "Last Sleep" diff --git a/locale/pl/LC_MESSAGES/django.po b/locale/pl/LC_MESSAGES/django.po index 4e63561b..1d063410 100644 --- a/locale/pl/LC_MESSAGES/django.po +++ b/locale/pl/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Baby Buddy\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-02-22 14:39+0000\n" +"POT-Creation-Date: 2023-05-02 18:53-0700\n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -183,26 +183,30 @@ msgid "Italian" msgstr "" #: babybuddy/settings/base.py:187 -msgid "Polish" +msgid "Norwegian Bokmål" msgstr "" #: babybuddy/settings/base.py:188 -msgid "Portuguese" +msgid "Polish" msgstr "" #: babybuddy/settings/base.py:189 -msgid "Russian" +msgid "Portuguese" msgstr "" #: babybuddy/settings/base.py:190 +msgid "Russian" +msgstr "" + +#: babybuddy/settings/base.py:191 msgid "Spanish" msgstr "Hiszpański" -#: babybuddy/settings/base.py:191 +#: babybuddy/settings/base.py:192 msgid "Swedish" msgstr "Szwedzki" -#: babybuddy/settings/base.py:192 +#: babybuddy/settings/base.py:193 msgid "Turkish" msgstr "Turecki" diff --git a/locale/pt/LC_MESSAGES/django.mo b/locale/pt/LC_MESSAGES/django.mo index d8de947d..15e4361f 100644 Binary files a/locale/pt/LC_MESSAGES/django.mo and b/locale/pt/LC_MESSAGES/django.mo differ diff --git a/locale/pt/LC_MESSAGES/django.po b/locale/pt/LC_MESSAGES/django.po index 98ae979a..4bee998f 100644 --- a/locale/pt/LC_MESSAGES/django.po +++ b/locale/pt/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Baby Buddy\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-02-22 14:39+0000\n" +"POT-Creation-Date: 2023-05-02 18:53-0700\n" "Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -32,7 +32,7 @@ msgstr "Apenas Leitura" #: babybuddy/forms.py:16 msgid "Restricts user to viewing data only." -msgstr "" +msgstr "Limita o utilizador a modo de leitura." #: babybuddy/models.py:19 msgid "Refresh rate" @@ -137,7 +137,7 @@ msgstr "Catalão" #: babybuddy/settings/base.py:176 msgid "Czech" -msgstr "" +msgstr "Checo" #: babybuddy/settings/base.py:177 msgid "Chinese (simplified)" @@ -145,7 +145,7 @@ msgstr "Chinês (Simplificado)" #: babybuddy/settings/base.py:178 msgid "Danish" -msgstr "" +msgstr "Dinamarquês" #: babybuddy/settings/base.py:179 msgid "Dutch" @@ -175,33 +175,37 @@ msgstr "Alemão" #: babybuddy/settings/base.py:185 msgid "Hungarian" -msgstr "" +msgstr "Húngaro" #: babybuddy/settings/base.py:186 msgid "Italian" msgstr "Italiano" #: babybuddy/settings/base.py:187 +msgid "Norwegian Bokmål" +msgstr "" + +#: babybuddy/settings/base.py:188 msgid "Polish" msgstr "Polaco" -#: babybuddy/settings/base.py:188 +#: babybuddy/settings/base.py:189 msgid "Portuguese" msgstr "Português" -#: babybuddy/settings/base.py:189 -msgid "Russian" -msgstr "" - #: babybuddy/settings/base.py:190 +msgid "Russian" +msgstr "Russo" + +#: babybuddy/settings/base.py:191 msgid "Spanish" msgstr "Espanhol" -#: babybuddy/settings/base.py:191 +#: babybuddy/settings/base.py:192 msgid "Swedish" msgstr "Sueco" -#: babybuddy/settings/base.py:192 +#: babybuddy/settings/base.py:193 msgid "Turkish" msgstr "Turco" @@ -696,7 +700,7 @@ msgstr "Actualizar" #: babybuddy/templates/babybuddy/user_form.html:28 msgid "User locked." -msgstr "" +msgstr "Utilizador bloqueado." #: babybuddy/templates/babybuddy/user_form.html:35 #: core/templates/core/bmi_form.html:23 core/templates/core/child_form.html:24 @@ -740,7 +744,7 @@ msgstr "Activo" #: babybuddy/templates/babybuddy/user_list.html:24 msgid "Locked" -msgstr "" +msgstr "Bloqueado" #: babybuddy/templates/babybuddy/user_list.html:25 #: core/templates/core/bmi_list.html:24 core/templates/core/bmi_list.html:38 @@ -841,7 +845,7 @@ msgstr "Adicionar uma Criança" #: babybuddy/templates/error/400.html:4 babybuddy/templates/error/400.html:7 msgid "Bad Request" -msgstr "" +msgstr "Pedido errado" #: babybuddy/templates/error/403.html:4 babybuddy/templates/error/403.html:7 msgid "Permission Denied" @@ -873,7 +877,7 @@ msgstr "Página não encontrada" #: babybuddy/templates/error/404.html:9 #, python-format msgid "The path%(request_path)s
does not exist."
-msgstr ""
+msgstr "O caminho %(request_path)s
não existe."
#: babybuddy/templates/error/500.html:4 babybuddy/templates/error/500.html:7
msgid "Server Error"
@@ -886,7 +890,7 @@ msgstr "Bem-vindo ao Baby Buddy!"
#: babybuddy/templates/error/lockout.html:4
msgid "Too Many Login Attempts"
-msgstr ""
+msgstr "Demasiadas tentativas de acesso"
#: babybuddy/templates/registration/login.html:32
msgid "Login"
@@ -957,15 +961,15 @@ msgstr ""
#: babybuddy/templates/registration/password_reset_email.html:4
msgid "Please go to the following page and choose a new password:"
-msgstr ""
+msgstr "Vá até á seguinte página e introduza a nova password:"
#: babybuddy/templates/registration/password_reset_email.html:8
msgid "Your username, in case you’ve forgotten:"
-msgstr ""
+msgstr "O teu nome de utilizador, caso te tenhas esquecido:"
#: babybuddy/templates/registration/password_reset_email.html:10
msgid "Thanks for using Baby Buddy!"
-msgstr ""
+msgstr "Obrigado por utilizar o Baby Buddy!"
#: babybuddy/templates/registration/password_reset_form.html:4
msgid "Forgot Password"
@@ -985,7 +989,7 @@ msgstr "Proibido"
#: babybuddy/views.py:54
msgid "CSRF verification failed. Request aborted."
-msgstr ""
+msgstr "Verificação CSRF falhou. Pedido cancelado."
#: babybuddy/views.py:112
#, python-format
@@ -999,7 +1003,7 @@ msgstr "Utilizador %(username)s actualizado."
#: babybuddy/views.py:138
msgid "User unlocked."
-msgstr ""
+msgstr "Utilizador desbloqueado."
#: babybuddy/views.py:162
#, python-brace-format
@@ -1459,7 +1463,7 @@ msgstr "Temporizador Rápido"
#: core/templates/core/quick_timer_nav.html:19
#: core/templates/core/timer_nav.html:28
msgid "Quick Start Timer For…"
-msgstr ""
+msgstr "Temporizador rápido para..."
#: core/templates/core/sleep_confirm_delete.html:4
msgid "Delete a Sleep Entry"
@@ -1915,10 +1919,8 @@ msgstr[0] "%(n)s alimentaçõe%(plural)s atrás"
msgstr[1] "%(n)s alimentaçõe%(plural)s atrás"
#: dashboard/templates/cards/pumping_last.html:6
-#, fuzzy
-#| msgid "Pumping"
msgid "Last Pumping"
-msgstr "Extração com Bomba"
+msgstr "Última extração"
#: dashboard/templates/cards/sleep_last.html:6
msgid "Last Sleep"
diff --git a/locale/ru/LC_MESSAGES/django.po b/locale/ru/LC_MESSAGES/django.po
index 629b9cb0..835f40df 100644
--- a/locale/ru/LC_MESSAGES/django.po
+++ b/locale/ru/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Baby Buddy\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-02-22 14:39+0000\n"
+"POT-Creation-Date: 2023-05-02 18:53-0700\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -183,26 +183,30 @@ msgid "Italian"
msgstr "Italian"
#: babybuddy/settings/base.py:187
+msgid "Norwegian Bokmål"
+msgstr ""
+
+#: babybuddy/settings/base.py:188
msgid "Polish"
msgstr "Polish"
-#: babybuddy/settings/base.py:188
+#: babybuddy/settings/base.py:189
msgid "Portuguese"
msgstr "Portuguese"
-#: babybuddy/settings/base.py:189
+#: babybuddy/settings/base.py:190
msgid "Russian"
msgstr ""
-#: babybuddy/settings/base.py:190
+#: babybuddy/settings/base.py:191
msgid "Spanish"
msgstr "Spanish"
-#: babybuddy/settings/base.py:191
+#: babybuddy/settings/base.py:192
msgid "Swedish"
msgstr "Swedish"
-#: babybuddy/settings/base.py:192
+#: babybuddy/settings/base.py:193
msgid "Turkish"
msgstr "Turkish"
diff --git a/locale/sv/LC_MESSAGES/django.po b/locale/sv/LC_MESSAGES/django.po
index 7d7363ef..6fee9c98 100644
--- a/locale/sv/LC_MESSAGES/django.po
+++ b/locale/sv/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Baby Buddy\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-02-22 14:39+0000\n"
+"POT-Creation-Date: 2023-05-02 18:53-0700\n"
"Language: sv\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -184,26 +184,30 @@ msgid "Italian"
msgstr "Italienska"
#: babybuddy/settings/base.py:187
+msgid "Norwegian Bokmål"
+msgstr ""
+
+#: babybuddy/settings/base.py:188
msgid "Polish"
msgstr "Polska"
-#: babybuddy/settings/base.py:188
+#: babybuddy/settings/base.py:189
msgid "Portuguese"
msgstr "Portugisiska"
-#: babybuddy/settings/base.py:189
+#: babybuddy/settings/base.py:190
msgid "Russian"
msgstr ""
-#: babybuddy/settings/base.py:190
+#: babybuddy/settings/base.py:191
msgid "Spanish"
msgstr "Spanska"
-#: babybuddy/settings/base.py:191
+#: babybuddy/settings/base.py:192
msgid "Swedish"
msgstr "Svenska"
-#: babybuddy/settings/base.py:192
+#: babybuddy/settings/base.py:193
msgid "Turkish"
msgstr "Turkiska"
diff --git a/locale/tr/LC_MESSAGES/django.po b/locale/tr/LC_MESSAGES/django.po
index a9d625f4..4c2cf366 100644
--- a/locale/tr/LC_MESSAGES/django.po
+++ b/locale/tr/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Baby Buddy\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-02-22 14:39+0000\n"
+"POT-Creation-Date: 2023-05-02 18:53-0700\n"
"Language: tr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -184,26 +184,30 @@ msgid "Italian"
msgstr "İtalyanca"
#: babybuddy/settings/base.py:187
+msgid "Norwegian Bokmål"
+msgstr ""
+
+#: babybuddy/settings/base.py:188
msgid "Polish"
msgstr "Lehçe"
-#: babybuddy/settings/base.py:188
+#: babybuddy/settings/base.py:189
msgid "Portuguese"
msgstr "Portekizce"
-#: babybuddy/settings/base.py:189
+#: babybuddy/settings/base.py:190
msgid "Russian"
msgstr ""
-#: babybuddy/settings/base.py:190
+#: babybuddy/settings/base.py:191
msgid "Spanish"
msgstr "İspanyolca"
-#: babybuddy/settings/base.py:191
+#: babybuddy/settings/base.py:192
msgid "Swedish"
msgstr "İsveççe"
-#: babybuddy/settings/base.py:192
+#: babybuddy/settings/base.py:193
msgid "Turkish"
msgstr "Türkçe"
diff --git a/locale/zh/LC_MESSAGES/django.po b/locale/zh/LC_MESSAGES/django.po
index d7959e9f..f3ec12fc 100644
--- a/locale/zh/LC_MESSAGES/django.po
+++ b/locale/zh/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Baby Buddy\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-02-22 14:39+0000\n"
+"POT-Creation-Date: 2023-05-02 18:53-0700\n"
"Language: zh-Hans\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -180,26 +180,30 @@ msgid "Italian"
msgstr "意大利语"
#: babybuddy/settings/base.py:187
+msgid "Norwegian Bokmål"
+msgstr ""
+
+#: babybuddy/settings/base.py:188
msgid "Polish"
msgstr "波兰语"
-#: babybuddy/settings/base.py:188
+#: babybuddy/settings/base.py:189
msgid "Portuguese"
msgstr "葡萄牙语"
-#: babybuddy/settings/base.py:189
+#: babybuddy/settings/base.py:190
msgid "Russian"
msgstr ""
-#: babybuddy/settings/base.py:190
+#: babybuddy/settings/base.py:191
msgid "Spanish"
msgstr "西班牙语"
-#: babybuddy/settings/base.py:191
+#: babybuddy/settings/base.py:192
msgid "Swedish"
msgstr "瑞典语"
-#: babybuddy/settings/base.py:192
+#: babybuddy/settings/base.py:193
msgid "Turkish"
msgstr "土耳其语"
diff --git a/package-lock.json b/package-lock.json
index 4e1d48cd..9b0fd515 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -26,14 +26,14 @@
"jquery": "^3.6.4",
"masonry-layout": "^4.2.2",
"npm-force-resolutions": "^0.0.10",
- "plotly.js": "^2.20.0",
+ "plotly.js": "^2.22.0",
"pulltorefreshjs": "^0.1.22",
"pump": "^3.0.0",
- "sass": "^1.60.0",
- "stylelint": "^15.3.0",
- "stylelint-config-recommended-scss": "^9.0.1",
+ "sass": "^1.62.1",
+ "stylelint": "^15.6.1",
+ "stylelint-config-recommended-scss": "^11.0.0",
"stylelint-order": "^6.0.3",
- "stylelint-scss": "^4.5.0"
+ "stylelint-scss": "^5.0.0"
}
},
"node_modules/@babel/code-frame": {
@@ -131,9 +131,9 @@
}
},
"node_modules/@csstools/css-parser-algorithms": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.1.0.tgz",
- "integrity": "sha512-KP8TicdXpUyeB1NMlbHud/1l39xvLGvqNFWMpG4qC6H1zs9SadGUHe5SO92n/659sDW9aGDvm9AMru0DZkN1Bw==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.1.1.tgz",
+ "integrity": "sha512-viRnRh02AgO4mwIQb2xQNJju0i+Fh9roNgmbR5xEuG7J3TGgxjnE95HnBLgsFJOJOksvcfxOUCgODcft6Y07cA==",
"dev": true,
"engines": {
"node": "^14 || ^16 || >=18"
@@ -143,13 +143,13 @@
"url": "https://opencollective.com/csstools"
},
"peerDependencies": {
- "@csstools/css-tokenizer": "^2.0.0"
+ "@csstools/css-tokenizer": "^2.1.1"
}
},
"node_modules/@csstools/css-tokenizer": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.1.0.tgz",
- "integrity": "sha512-dtqFyoJBHUxGi9zPZdpCKP1xk8tq6KPHJ/NY4qWXiYo6IcSGwzk3L8x2XzZbbyOyBs9xQARoGveU2AsgLj6D2A==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.1.1.tgz",
+ "integrity": "sha512-GbrTj2Z8MCTUv+52GE0RbFGM527xuXZ0Xa5g0Z+YN573uveS4G0qi6WNOMyz3yrFM/jaILTTwJ0+umx81EzqfA==",
"dev": true,
"engines": {
"node": "^14 || ^16 || >=18"
@@ -160,9 +160,9 @@
}
},
"node_modules/@csstools/media-query-list-parser": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.0.2.tgz",
- "integrity": "sha512-8V6JD8Av1HttuClYr1ZBu0LRVe5Nnz4qrv8RppO8mobsX/USBHZy5JQOXYIlpOVhl46nzkx3X5cfH6CqUghjrQ==",
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.0.4.tgz",
+ "integrity": "sha512-GyYot6jHgcSDZZ+tLSnrzkR7aJhF2ZW6d+CXH66mjy5WpAQhZD4HDke2OQ36SivGRWlZJpAz7TzbW6OKlEpxAA==",
"dev": true,
"engines": {
"node": "^14 || ^16 || >=18"
@@ -172,8 +172,8 @@
"url": "https://opencollective.com/csstools"
},
"peerDependencies": {
- "@csstools/css-parser-algorithms": "^2.0.0",
- "@csstools/css-tokenizer": "^2.0.0"
+ "@csstools/css-parser-algorithms": "^2.1.1",
+ "@csstools/css-tokenizer": "^2.1.1"
}
},
"node_modules/@csstools/selector-specificity": {
@@ -1182,16 +1182,6 @@
"integrity": "sha512-H0ea4Fd3lS1+sTEB2TgcLoK21lLhwEJzlQv3IN47pJS976Gx4zoWe0ak3q+uYh60ppQxg9F16Ri4tS1sfD4+jA==",
"dev": true
},
- "node_modules/bindings": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
- "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "file-uri-to-path": "1.0.0"
- }
- },
"node_modules/bit-twiddle": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/bit-twiddle/-/bit-twiddle-1.0.2.tgz",
@@ -2739,13 +2729,6 @@
"node": "^10.12.0 || >=12.0.0"
}
},
- "node_modules/file-uri-to-path": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
- "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
- "dev": true,
- "optional": true
- },
"node_modules/fill-range": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
@@ -3080,25 +3063,6 @@
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
"dev": true
},
- "node_modules/fsevents": {
- "version": "1.2.13",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
- "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
- "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.",
- "dev": true,
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "dependencies": {
- "bindings": "^1.5.0",
- "nan": "^2.12.1"
- },
- "engines": {
- "node": ">= 4.0"
- }
- },
"node_modules/function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
@@ -4649,9 +4613,9 @@
"dev": true
},
"node_modules/html-tags": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz",
- "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==",
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz",
+ "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==",
"dev": true,
"engines": {
"node": ">=8"
@@ -5440,12 +5404,6 @@
"node": ">=8"
}
},
- "node_modules/lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
- "dev": true
- },
"node_modules/lodash._basecopy": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz",
@@ -6169,18 +6127,17 @@
"node": ">= 0.10"
}
},
- "node_modules/nan": {
- "version": "2.17.0",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz",
- "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==",
- "dev": true,
- "optional": true
- },
"node_modules/nanoid": {
- "version": "3.3.4",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
- "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
+ "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
"dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
"bin": {
"nanoid": "bin/nanoid.cjs"
},
@@ -6924,9 +6881,9 @@
}
},
"node_modules/plotly.js": {
- "version": "2.20.0",
- "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-2.20.0.tgz",
- "integrity": "sha512-aitv9IkW9Od55oewdnnABVDxZ7SJTGFp+uISURIfN3Gn0/xi2FwJCstUyoHKHT/an+jzWFsaiqFQL9FDxn2s8A==",
+ "version": "2.22.0",
+ "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-2.22.0.tgz",
+ "integrity": "sha512-g+YTMnChFDx/fNUV2rqkrf87wKwKuOhqv9LIxhmPyF94RGM4v4blP0mmgwQ278qv3kXmfTMJecIUusr1gzscng==",
"dev": true,
"dependencies": {
"@plotly/d3": "3.8.1",
@@ -7026,9 +6983,9 @@
}
},
"node_modules/postcss": {
- "version": "8.4.21",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz",
- "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==",
+ "version": "8.4.23",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz",
+ "integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==",
"dev": true,
"funding": [
{
@@ -7038,10 +6995,14 @@
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
}
],
"dependencies": {
- "nanoid": "^3.3.4",
+ "nanoid": "^3.3.6",
"picocolors": "^1.0.0",
"source-map-js": "^1.0.2"
},
@@ -7100,9 +7061,9 @@
}
},
"node_modules/postcss-selector-parser": {
- "version": "6.0.11",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz",
- "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==",
+ "version": "6.0.12",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.12.tgz",
+ "integrity": "sha512-NdxGCAZdRrwVI1sy59+Wzrh+pMMHxapGnpfenDVlMEXoOcvt4pGE0JLK9YY2F5dLxcFYA/YbVQKhcGU+FtSYQg==",
"dev": true,
"dependencies": {
"cssesc": "^3.0.0",
@@ -8030,9 +7991,9 @@
"dev": true
},
"node_modules/sass": {
- "version": "1.60.0",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.60.0.tgz",
- "integrity": "sha512-updbwW6fNb5gGm8qMXzVO7V4sWf7LMXnMly/JEyfbfERbVH46Fn6q02BX7/eHTdKpE7d+oTkMMQpFWNUMfFbgQ==",
+ "version": "1.62.1",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.62.1.tgz",
+ "integrity": "sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A==",
"dev": true,
"dependencies": {
"chokidar": ">=3.0.0 <4.0.0",
@@ -8043,7 +8004,7 @@
"sass": "sass.js"
},
"engines": {
- "node": ">=12.0.0"
+ "node": ">=14.0.0"
}
},
"node_modules/sass/node_modules/anymatch": {
@@ -8119,20 +8080,6 @@
"node": ">=8"
}
},
- "node_modules/sass/node_modules/fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "dev": true,
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
"node_modules/sass/node_modules/is-binary-path": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
@@ -8251,10 +8198,16 @@
"dev": true
},
"node_modules/signal-exit": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.1.tgz",
+ "integrity": "sha512-uUWsN4aOxJAS8KOuf3QMyFtgm1pkb6I+KRZbRF/ghdf5T7sM+B1lLLzPDxswUjkmHyxQAVzEgG35E3NzDM9GVw==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
},
"node_modules/signum": {
"version": "1.0.0",
@@ -8773,18 +8726,18 @@
"dev": true
},
"node_modules/stylelint": {
- "version": "15.3.0",
- "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.3.0.tgz",
- "integrity": "sha512-9UYBYk7K9rtlKcTUDZrtntE840sZM00qyYBQHHe7tjwMNUsPsGvR6Fd43IxHEAhRrDLzpy3TVaHb6CReBB3eFg==",
+ "version": "15.6.1",
+ "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.6.1.tgz",
+ "integrity": "sha512-d8icFBlVl93Elf3Z5ABQNOCe4nx69is3D/NZhDLAie1eyYnpxfeKe7pCfqzT5W4F8vxHCLSDfV8nKNJzogvV2Q==",
"dev": true,
"dependencies": {
- "@csstools/css-parser-algorithms": "^2.0.1",
- "@csstools/css-tokenizer": "^2.1.0",
- "@csstools/media-query-list-parser": "^2.0.1",
- "@csstools/selector-specificity": "^2.1.1",
+ "@csstools/css-parser-algorithms": "^2.1.1",
+ "@csstools/css-tokenizer": "^2.1.1",
+ "@csstools/media-query-list-parser": "^2.0.4",
+ "@csstools/selector-specificity": "^2.2.0",
"balanced-match": "^2.0.0",
"colord": "^2.9.3",
- "cosmiconfig": "^8.1.0",
+ "cosmiconfig": "^8.1.3",
"css-functions-list": "^3.1.0",
"css-tree": "^2.3.1",
"debug": "^4.3.4",
@@ -8794,7 +8747,7 @@
"global-modules": "^2.0.0",
"globby": "^11.1.0",
"globjoin": "^0.1.4",
- "html-tags": "^3.2.0",
+ "html-tags": "^3.3.1",
"ignore": "^5.2.4",
"import-lazy": "^4.0.0",
"imurmurhash": "^0.1.4",
@@ -8805,11 +8758,11 @@
"micromatch": "^4.0.5",
"normalize-path": "^3.0.0",
"picocolors": "^1.0.0",
- "postcss": "^8.4.21",
+ "postcss": "^8.4.23",
"postcss-media-query-parser": "^0.2.3",
"postcss-resolve-nested-selector": "^0.1.1",
"postcss-safe-parser": "^6.0.0",
- "postcss-selector-parser": "^6.0.11",
+ "postcss-selector-parser": "^6.0.12",
"postcss-value-parser": "^4.2.0",
"resolve-from": "^5.0.0",
"string-width": "^4.2.3",
@@ -8819,7 +8772,7 @@
"svg-tags": "^1.0.0",
"table": "^6.8.1",
"v8-compile-cache": "^2.3.0",
- "write-file-atomic": "^5.0.0"
+ "write-file-atomic": "^5.0.1"
},
"bin": {
"stylelint": "bin/stylelint.js"
@@ -8833,27 +8786,27 @@
}
},
"node_modules/stylelint-config-recommended": {
- "version": "10.0.1",
- "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-10.0.1.tgz",
- "integrity": "sha512-TQ4xQ48tW4QSlODcti7pgSRqBZcUaBzuh0jPpfiMhwJKBPkqzTIAU+IrSWL/7BgXlOM90DjB7YaNgFpx8QWhuA==",
+ "version": "12.0.0",
+ "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-12.0.0.tgz",
+ "integrity": "sha512-x6x8QNARrGO2sG6iURkzqL+Dp+4bJorPMMRNPScdvaUK8PsynriOcMW7AFDKqkWAS5wbue/u8fUT/4ynzcmqdQ==",
"dev": true,
"peerDependencies": {
- "stylelint": "^15.0.0"
+ "stylelint": "^15.5.0"
}
},
"node_modules/stylelint-config-recommended-scss": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-9.0.1.tgz",
- "integrity": "sha512-qAmz/TdrqslwiMTuLM3QXeISUkfEDUXGMfRBCHm/xrkCJNnQefv+mzG2mWTsWkqcVk8HAyUkug10dwAcYp2fCQ==",
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-11.0.0.tgz",
+ "integrity": "sha512-EDghTDU7aOv2LTsRZvcT1w8mcjUaMhuy+t38iV5I/0Qiu6ixdkRwhLEMul3K/fnB2v9Nwqvb3xpvJfPH+HduDw==",
"dev": true,
"dependencies": {
- "postcss-scss": "^4.0.2",
- "stylelint-config-recommended": "^10.0.1",
- "stylelint-scss": "^4.4.0"
+ "postcss-scss": "^4.0.6",
+ "stylelint-config-recommended": "^12.0.0",
+ "stylelint-scss": "^4.6.0"
},
"peerDependencies": {
"postcss": "^8.3.3",
- "stylelint": "^15.0.0"
+ "stylelint": "^15.5.0"
},
"peerDependenciesMeta": {
"postcss": {
@@ -8861,6 +8814,21 @@
}
}
},
+ "node_modules/stylelint-config-recommended-scss/node_modules/stylelint-scss": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.7.0.tgz",
+ "integrity": "sha512-TSUgIeS0H3jqDZnby1UO1Qv3poi1N8wUYIJY6D1tuUq2MN3lwp/rITVo0wD+1SWTmRm0tNmGO0b7nKInnqF6Hg==",
+ "dev": true,
+ "dependencies": {
+ "postcss-media-query-parser": "^0.2.3",
+ "postcss-resolve-nested-selector": "^0.1.1",
+ "postcss-selector-parser": "^6.0.11",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "peerDependencies": {
+ "stylelint": "^14.5.1 || ^15.0.0"
+ }
+ },
"node_modules/stylelint-order": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-6.0.3.tgz",
@@ -8875,16 +8843,15 @@
}
},
"node_modules/stylelint-scss": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.5.0.tgz",
- "integrity": "sha512-/+rQ8FePOiwT5xblOHkujYzRYfSjmE6HYhLpqJShL+9wH6/HaAVj4mWpXlpEsM3ZgIpOblG9Y+/BycSJzWgjNw==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-5.0.0.tgz",
+ "integrity": "sha512-5Ee5kG3JIcP2jk2PMoFMiNmW/815V+wK5o37X5ke90ihWMpPXI9iyqeA6zEWipWSRXeQc0kqbd7hKqiR+wPKNA==",
"dev": true,
"dependencies": {
- "lodash": "^4.17.21",
"postcss-media-query-parser": "^0.2.3",
"postcss-resolve-nested-selector": "^0.1.1",
- "postcss-selector-parser": "^6.0.6",
- "postcss-value-parser": "^4.1.0"
+ "postcss-selector-parser": "^6.0.11",
+ "postcss-value-parser": "^4.2.0"
},
"peerDependencies": {
"stylelint": "^14.5.1 || ^15.0.0"
@@ -10077,13 +10044,13 @@
"dev": true
},
"node_modules/write-file-atomic": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.0.tgz",
- "integrity": "sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz",
+ "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==",
"dev": true,
"dependencies": {
"imurmurhash": "^0.1.4",
- "signal-exit": "^3.0.7"
+ "signal-exit": "^4.0.1"
},
"engines": {
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
diff --git a/package.json b/package.json
index 9100aa6a..feb1e2eb 100644
--- a/package.json
+++ b/package.json
@@ -26,13 +26,13 @@
"jquery": "^3.6.4",
"masonry-layout": "^4.2.2",
"npm-force-resolutions": "^0.0.10",
- "plotly.js": "^2.20.0",
+ "plotly.js": "^2.22.0",
"pulltorefreshjs": "^0.1.22",
"pump": "^3.0.0",
- "sass": "^1.60.0",
- "stylelint": "^15.3.0",
- "stylelint-config-recommended-scss": "^9.0.1",
+ "sass": "^1.62.1",
+ "stylelint": "^15.6.1",
+ "stylelint-config-recommended-scss": "^11.0.0",
"stylelint-order": "^6.0.3",
- "stylelint-scss": "^4.5.0"
+ "stylelint-scss": "^5.0.0"
}
}
diff --git a/requirements.txt b/requirements.txt
index f4681843..da007d7c 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,15 +1,15 @@
-i https://pypi.python.org/simple
asgiref==3.6.0 ; python_version >= '3.7'
-boto3==1.26.123
-botocore==1.29.123 ; python_version >= '3.7'
+boto3==1.26.125
+botocore==1.29.125 ; python_version >= '3.7'
defusedxml==0.7.1 ; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
-diff-match-patch==20200713 ; python_version >= '2.7'
+diff-match-patch==20230430 ; python_version >= '3.7'
dj-database-url==2.0.0
django==4.2
django-appconf==1.0.5 ; python_version >= '3.1'
django-axes==5.41.1
django-dbsettings==1.3.0
-django-filter==23.1
+django-filter==23.2
django-imagekit==4.1.0
django-import-export==3.2.0
django-ipware==5.0.0 ; python_version >= '3.7'
@@ -19,7 +19,7 @@ django-taggit==3.1.0
django-widget-tweaks==1.4.12
djangorestframework==3.14.0
et-xmlfile==1.1.0 ; python_version >= '3.6'
-faker==18.6.0
+faker==18.6.1
gunicorn==20.1.0
jmespath==1.0.1 ; python_version >= '3.7'
markuppy==1.14
diff --git a/static/babybuddy/css/app.a8ba77c4f554.css b/static/babybuddy/css/app.71b5f91f1d9d.css
similarity index 99%
rename from static/babybuddy/css/app.a8ba77c4f554.css
rename to static/babybuddy/css/app.71b5f91f1d9d.css
index 058b20b5..aa1b999d 100644
--- a/static/babybuddy/css/app.a8ba77c4f554.css
+++ b/static/babybuddy/css/app.71b5f91f1d9d.css
@@ -6040,8 +6040,6 @@ textarea.form-control-lg {
border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateX(-100%);
}
-}
-@media (max-width: 575.98px) {
.offcanvas-sm.offcanvas-end {
top: 0;
right: 0;
@@ -6049,8 +6047,6 @@ textarea.form-control-lg {
border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateX(100%);
}
-}
-@media (max-width: 575.98px) {
.offcanvas-sm.offcanvas-top {
top: 0;
right: 0;
@@ -6060,8 +6056,6 @@ textarea.form-control-lg {
border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateY(-100%);
}
-}
-@media (max-width: 575.98px) {
.offcanvas-sm.offcanvas-bottom {
right: 0;
left: 0;
@@ -6070,13 +6064,9 @@ textarea.form-control-lg {
border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateY(100%);
}
-}
-@media (max-width: 575.98px) {
.offcanvas-sm.showing, .offcanvas-sm.show:not(.hiding) {
transform: none;
}
-}
-@media (max-width: 575.98px) {
.offcanvas-sm.showing, .offcanvas-sm.hiding, .offcanvas-sm.show {
visibility: visible;
}
@@ -6128,8 +6118,6 @@ textarea.form-control-lg {
border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateX(-100%);
}
-}
-@media (max-width: 767.98px) {
.offcanvas-md.offcanvas-end {
top: 0;
right: 0;
@@ -6137,8 +6125,6 @@ textarea.form-control-lg {
border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateX(100%);
}
-}
-@media (max-width: 767.98px) {
.offcanvas-md.offcanvas-top {
top: 0;
right: 0;
@@ -6148,8 +6134,6 @@ textarea.form-control-lg {
border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateY(-100%);
}
-}
-@media (max-width: 767.98px) {
.offcanvas-md.offcanvas-bottom {
right: 0;
left: 0;
@@ -6158,13 +6142,9 @@ textarea.form-control-lg {
border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateY(100%);
}
-}
-@media (max-width: 767.98px) {
.offcanvas-md.showing, .offcanvas-md.show:not(.hiding) {
transform: none;
}
-}
-@media (max-width: 767.98px) {
.offcanvas-md.showing, .offcanvas-md.hiding, .offcanvas-md.show {
visibility: visible;
}
@@ -6216,8 +6196,6 @@ textarea.form-control-lg {
border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateX(-100%);
}
-}
-@media (max-width: 991.98px) {
.offcanvas-lg.offcanvas-end {
top: 0;
right: 0;
@@ -6225,8 +6203,6 @@ textarea.form-control-lg {
border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateX(100%);
}
-}
-@media (max-width: 991.98px) {
.offcanvas-lg.offcanvas-top {
top: 0;
right: 0;
@@ -6236,8 +6212,6 @@ textarea.form-control-lg {
border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateY(-100%);
}
-}
-@media (max-width: 991.98px) {
.offcanvas-lg.offcanvas-bottom {
right: 0;
left: 0;
@@ -6246,13 +6220,9 @@ textarea.form-control-lg {
border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateY(100%);
}
-}
-@media (max-width: 991.98px) {
.offcanvas-lg.showing, .offcanvas-lg.show:not(.hiding) {
transform: none;
}
-}
-@media (max-width: 991.98px) {
.offcanvas-lg.showing, .offcanvas-lg.hiding, .offcanvas-lg.show {
visibility: visible;
}
@@ -6304,8 +6274,6 @@ textarea.form-control-lg {
border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateX(-100%);
}
-}
-@media (max-width: 1199.98px) {
.offcanvas-xl.offcanvas-end {
top: 0;
right: 0;
@@ -6313,8 +6281,6 @@ textarea.form-control-lg {
border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateX(100%);
}
-}
-@media (max-width: 1199.98px) {
.offcanvas-xl.offcanvas-top {
top: 0;
right: 0;
@@ -6324,8 +6290,6 @@ textarea.form-control-lg {
border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateY(-100%);
}
-}
-@media (max-width: 1199.98px) {
.offcanvas-xl.offcanvas-bottom {
right: 0;
left: 0;
@@ -6334,13 +6298,9 @@ textarea.form-control-lg {
border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateY(100%);
}
-}
-@media (max-width: 1199.98px) {
.offcanvas-xl.showing, .offcanvas-xl.show:not(.hiding) {
transform: none;
}
-}
-@media (max-width: 1199.98px) {
.offcanvas-xl.showing, .offcanvas-xl.hiding, .offcanvas-xl.show {
visibility: visible;
}
@@ -6392,8 +6352,6 @@ textarea.form-control-lg {
border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateX(-100%);
}
-}
-@media (max-width: 1399.98px) {
.offcanvas-xxl.offcanvas-end {
top: 0;
right: 0;
@@ -6401,8 +6359,6 @@ textarea.form-control-lg {
border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateX(100%);
}
-}
-@media (max-width: 1399.98px) {
.offcanvas-xxl.offcanvas-top {
top: 0;
right: 0;
@@ -6412,8 +6368,6 @@ textarea.form-control-lg {
border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateY(-100%);
}
-}
-@media (max-width: 1399.98px) {
.offcanvas-xxl.offcanvas-bottom {
right: 0;
left: 0;
@@ -6422,13 +6376,9 @@ textarea.form-control-lg {
border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateY(100%);
}
-}
-@media (max-width: 1399.98px) {
.offcanvas-xxl.showing, .offcanvas-xxl.show:not(.hiding) {
transform: none;
}
-}
-@media (max-width: 1399.98px) {
.offcanvas-xxl.showing, .offcanvas-xxl.hiding, .offcanvas-xxl.show {
visibility: visible;
}
diff --git a/static/babybuddy/css/app.71b5f91f1d9d.css.gz b/static/babybuddy/css/app.71b5f91f1d9d.css.gz
new file mode 100644
index 00000000..e7c11da9
Binary files /dev/null and b/static/babybuddy/css/app.71b5f91f1d9d.css.gz differ
diff --git a/static/babybuddy/css/app.a8ba77c4f554.css.gz b/static/babybuddy/css/app.a8ba77c4f554.css.gz
deleted file mode 100644
index f5429ae0..00000000
Binary files a/static/babybuddy/css/app.a8ba77c4f554.css.gz and /dev/null differ
diff --git a/static/babybuddy/css/app.css b/static/babybuddy/css/app.css
index d2d17715..345bd0c0 100644
--- a/static/babybuddy/css/app.css
+++ b/static/babybuddy/css/app.css
@@ -6040,8 +6040,6 @@ textarea.form-control-lg {
border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateX(-100%);
}
-}
-@media (max-width: 575.98px) {
.offcanvas-sm.offcanvas-end {
top: 0;
right: 0;
@@ -6049,8 +6047,6 @@ textarea.form-control-lg {
border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateX(100%);
}
-}
-@media (max-width: 575.98px) {
.offcanvas-sm.offcanvas-top {
top: 0;
right: 0;
@@ -6060,8 +6056,6 @@ textarea.form-control-lg {
border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateY(-100%);
}
-}
-@media (max-width: 575.98px) {
.offcanvas-sm.offcanvas-bottom {
right: 0;
left: 0;
@@ -6070,13 +6064,9 @@ textarea.form-control-lg {
border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateY(100%);
}
-}
-@media (max-width: 575.98px) {
.offcanvas-sm.showing, .offcanvas-sm.show:not(.hiding) {
transform: none;
}
-}
-@media (max-width: 575.98px) {
.offcanvas-sm.showing, .offcanvas-sm.hiding, .offcanvas-sm.show {
visibility: visible;
}
@@ -6128,8 +6118,6 @@ textarea.form-control-lg {
border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateX(-100%);
}
-}
-@media (max-width: 767.98px) {
.offcanvas-md.offcanvas-end {
top: 0;
right: 0;
@@ -6137,8 +6125,6 @@ textarea.form-control-lg {
border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateX(100%);
}
-}
-@media (max-width: 767.98px) {
.offcanvas-md.offcanvas-top {
top: 0;
right: 0;
@@ -6148,8 +6134,6 @@ textarea.form-control-lg {
border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateY(-100%);
}
-}
-@media (max-width: 767.98px) {
.offcanvas-md.offcanvas-bottom {
right: 0;
left: 0;
@@ -6158,13 +6142,9 @@ textarea.form-control-lg {
border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateY(100%);
}
-}
-@media (max-width: 767.98px) {
.offcanvas-md.showing, .offcanvas-md.show:not(.hiding) {
transform: none;
}
-}
-@media (max-width: 767.98px) {
.offcanvas-md.showing, .offcanvas-md.hiding, .offcanvas-md.show {
visibility: visible;
}
@@ -6216,8 +6196,6 @@ textarea.form-control-lg {
border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateX(-100%);
}
-}
-@media (max-width: 991.98px) {
.offcanvas-lg.offcanvas-end {
top: 0;
right: 0;
@@ -6225,8 +6203,6 @@ textarea.form-control-lg {
border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateX(100%);
}
-}
-@media (max-width: 991.98px) {
.offcanvas-lg.offcanvas-top {
top: 0;
right: 0;
@@ -6236,8 +6212,6 @@ textarea.form-control-lg {
border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateY(-100%);
}
-}
-@media (max-width: 991.98px) {
.offcanvas-lg.offcanvas-bottom {
right: 0;
left: 0;
@@ -6246,13 +6220,9 @@ textarea.form-control-lg {
border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateY(100%);
}
-}
-@media (max-width: 991.98px) {
.offcanvas-lg.showing, .offcanvas-lg.show:not(.hiding) {
transform: none;
}
-}
-@media (max-width: 991.98px) {
.offcanvas-lg.showing, .offcanvas-lg.hiding, .offcanvas-lg.show {
visibility: visible;
}
@@ -6304,8 +6274,6 @@ textarea.form-control-lg {
border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateX(-100%);
}
-}
-@media (max-width: 1199.98px) {
.offcanvas-xl.offcanvas-end {
top: 0;
right: 0;
@@ -6313,8 +6281,6 @@ textarea.form-control-lg {
border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateX(100%);
}
-}
-@media (max-width: 1199.98px) {
.offcanvas-xl.offcanvas-top {
top: 0;
right: 0;
@@ -6324,8 +6290,6 @@ textarea.form-control-lg {
border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateY(-100%);
}
-}
-@media (max-width: 1199.98px) {
.offcanvas-xl.offcanvas-bottom {
right: 0;
left: 0;
@@ -6334,13 +6298,9 @@ textarea.form-control-lg {
border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateY(100%);
}
-}
-@media (max-width: 1199.98px) {
.offcanvas-xl.showing, .offcanvas-xl.show:not(.hiding) {
transform: none;
}
-}
-@media (max-width: 1199.98px) {
.offcanvas-xl.showing, .offcanvas-xl.hiding, .offcanvas-xl.show {
visibility: visible;
}
@@ -6392,8 +6352,6 @@ textarea.form-control-lg {
border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateX(-100%);
}
-}
-@media (max-width: 1399.98px) {
.offcanvas-xxl.offcanvas-end {
top: 0;
right: 0;
@@ -6401,8 +6359,6 @@ textarea.form-control-lg {
border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateX(100%);
}
-}
-@media (max-width: 1399.98px) {
.offcanvas-xxl.offcanvas-top {
top: 0;
right: 0;
@@ -6412,8 +6368,6 @@ textarea.form-control-lg {
border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateY(-100%);
}
-}
-@media (max-width: 1399.98px) {
.offcanvas-xxl.offcanvas-bottom {
right: 0;
left: 0;
@@ -6422,13 +6376,9 @@ textarea.form-control-lg {
border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
transform: translateY(100%);
}
-}
-@media (max-width: 1399.98px) {
.offcanvas-xxl.showing, .offcanvas-xxl.show:not(.hiding) {
transform: none;
}
-}
-@media (max-width: 1399.98px) {
.offcanvas-xxl.showing, .offcanvas-xxl.hiding, .offcanvas-xxl.show {
visibility: visible;
}
diff --git a/static/babybuddy/css/app.css.gz b/static/babybuddy/css/app.css.gz
index b4f48931..ebf1b0ee 100644
Binary files a/static/babybuddy/css/app.css.gz and b/static/babybuddy/css/app.css.gz differ
diff --git a/static/babybuddy/js/graph.ad87e6353f28.js b/static/babybuddy/js/graph.ad87e6353f28.js
deleted file mode 100644
index c72c3413..00000000
--- a/static/babybuddy/js/graph.ad87e6353f28.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Plotly=t():e.Plotly=t()}(self,function(){return function(){var e={98847:function(e,t,r){"use strict";var n=r(71828),a={"X,X div":'direction:ltr;font-family:"Open Sans",verdana,arial,sans-serif;margin:0;padding:0;',"X input,X button":'font-family:"Open Sans",verdana,arial,sans-serif;',"X input:focus,X button:focus":"outline:none;","X a":"text-decoration:none;","X a:hover":"text-decoration:none;","X .crisp":"shape-rendering:crispEdges;","X .user-select-none":"-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;","X svg":"overflow:hidden;","X svg a":"fill:#447adb;","X svg a:hover":"fill:#3c6dc5;","X .main-svg":"position:absolute;top:0;left:0;pointer-events:none;","X .main-svg .draglayer":"pointer-events:all;","X .cursor-default":"cursor:default;","X .cursor-pointer":"cursor:pointer;","X .cursor-crosshair":"cursor:crosshair;","X .cursor-move":"cursor:move;","X .cursor-col-resize":"cursor:col-resize;","X .cursor-row-resize":"cursor:row-resize;","X .cursor-ns-resize":"cursor:ns-resize;","X .cursor-ew-resize":"cursor:ew-resize;","X .cursor-sw-resize":"cursor:sw-resize;","X .cursor-s-resize":"cursor:s-resize;","X .cursor-se-resize":"cursor:se-resize;","X .cursor-w-resize":"cursor:w-resize;","X .cursor-e-resize":"cursor:e-resize;","X .cursor-nw-resize":"cursor:nw-resize;","X .cursor-n-resize":"cursor:n-resize;","X .cursor-ne-resize":"cursor:ne-resize;","X .cursor-grab":"cursor:-webkit-grab;cursor:grab;","X .modebar":"position:absolute;top:2px;right:2px;","X .ease-bg":"-webkit-transition:background-color .3s ease 0s;-moz-transition:background-color .3s ease 0s;-ms-transition:background-color .3s ease 0s;-o-transition:background-color .3s ease 0s;transition:background-color .3s ease 0s;","X .modebar--hover>:not(.watermark)":"opacity:0;-webkit-transition:opacity .3s ease 0s;-moz-transition:opacity .3s ease 0s;-ms-transition:opacity .3s ease 0s;-o-transition:opacity .3s ease 0s;transition:opacity .3s ease 0s;","X:hover .modebar--hover .modebar-group":"opacity:1;","X .modebar-group":"float:left;display:inline-block;box-sizing:border-box;padding-left:8px;position:relative;vertical-align:middle;white-space:nowrap;","X .modebar-btn":"position:relative;font-size:16px;padding:3px 4px;height:22px;cursor:pointer;line-height:normal;box-sizing:border-box;","X .modebar-btn svg":"position:relative;top:2px;","X .modebar.vertical":"display:flex;flex-direction:column;flex-wrap:wrap;align-content:flex-end;max-height:100%;","X .modebar.vertical svg":"top:-1px;","X .modebar.vertical .modebar-group":"display:block;float:none;padding-left:0px;padding-bottom:8px;","X .modebar.vertical .modebar-group .modebar-btn":"display:block;text-align:center;","X [data-title]:before,X [data-title]:after":"position:absolute;-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);-o-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);display:none;opacity:0;z-index:1001;pointer-events:none;top:110%;right:50%;","X [data-title]:hover:before,X [data-title]:hover:after":"display:block;opacity:1;","X [data-title]:before":'content:"";position:absolute;background:rgba(0,0,0,0);border:6px solid rgba(0,0,0,0);z-index:1002;margin-top:-12px;border-bottom-color:#69738a;margin-right:-6px;',"X [data-title]:after":"content:attr(data-title);background:#69738a;color:#fff;padding:8px 10px;font-size:12px;line-height:12px;white-space:nowrap;margin-right:-18px;border-radius:2px;","X .vertical [data-title]:before,X .vertical [data-title]:after":"top:0%;right:200%;","X .vertical [data-title]:before":"border:6px solid rgba(0,0,0,0);border-left-color:#69738a;margin-top:8px;margin-right:-30px;",Y:'font-family:"Open Sans",verdana,arial,sans-serif;position:fixed;top:50px;right:20px;z-index:10000;font-size:10pt;max-width:180px;',"Y p":"margin:0;","Y .notifier-note":"min-width:180px;max-width:250px;border:1px solid #fff;z-index:3000;margin:0;background-color:#8c97af;background-color:rgba(140,151,175,.9);color:#fff;padding:10px;overflow-wrap:break-word;word-wrap:break-word;-ms-hyphens:auto;-webkit-hyphens:auto;hyphens:auto;","Y .notifier-close":"color:#fff;opacity:.8;float:right;padding:0 5px;background:none;border:none;font-size:20px;font-weight:bold;line-height:20px;","Y .notifier-close:hover":"color:#444;text-decoration:none;cursor:pointer;"};for(var i in a){var o=i.replace(/^,/," ,").replace(/X/g,".js-plotly-plot .plotly").replace(/Y/g,".plotly-notifier");n.addStyleRule(o,a[i])}},98222:function(e,t,r){"use strict";e.exports=r(82887)},27206:function(e,t,r){"use strict";e.exports=r(60822)},5224:function(e,t,r){"use strict";e.exports=r(83832)},59509:function(e,t,r){"use strict";e.exports=r(72201)},49866:function(e,t,r){"use strict";e.exports=r(99442)},19548:function(e,t,r){"use strict";e.exports=r(8729)},61039:function(e,t,r){"use strict";e.exports=r(14382)},24296:function(e,t,r){"use strict";e.exports=r(43102)},58872:function(e,t,r){"use strict";e.exports=r(92165)},65591:function(e,t,r){"use strict";e.exports=r(36071)},69738:function(e,t,r){"use strict";e.exports=r(43905)},92650:function(e,t,r){"use strict";e.exports=r(35902)},73434:function(e,t,r){"use strict";e.exports=r(94507)},760:function(e,t,r){"use strict";var n=r(19548);n.register([r(27206),r(5224),r(58872),r(65591),r(69738),r(92650),r(49866),r(25743),r(6197),r(73434),r(54201),r(98222),r(61039),r(24296),r(66398),r(59509)]),e.exports=n},54201:function(e,t,r){"use strict";e.exports=r(58810)},25743:function(e,t,r){"use strict";e.exports=r(52979)},66398:function(e,t,r){"use strict";e.exports=r(32275)},6197:function(e,t,r){"use strict";e.exports=r(47462)},82884:function(e){"use strict";e.exports=[{path:"",backoff:0},{path:"M-2.4,-3V3L0.6,0Z",backoff:.6},{path:"M-3.7,-2.5V2.5L1.3,0Z",backoff:1.3},{path:"M-4.45,-3L-1.65,-0.2V0.2L-4.45,3L1.55,0Z",backoff:1.55},{path:"M-2.2,-2.2L-0.2,-0.2V0.2L-2.2,2.2L-1.4,3L1.6,0L-1.4,-3Z",backoff:1.6},{path:"M-4.4,-2.1L-0.6,-0.2V0.2L-4.4,2.1L-4,3L2,0L-4,-3Z",backoff:2},{path:"M2,0A2,2 0 1,1 0,-2A2,2 0 0,1 2,0Z",backoff:0,noRotate:!0},{path:"M2,2V-2H-2V2Z",backoff:0,noRotate:!0}]},50215:function(e,t,r){"use strict";var n=r(82884),a=r(41940),i=r(85555),o=r(44467).templatedArray;r(24695);e.exports=o("annotation",{visible:{valType:"boolean",dflt:!0,editType:"calc+arraydraw"},text:{valType:"string",editType:"calc+arraydraw"},textangle:{valType:"angle",dflt:0,editType:"calc+arraydraw"},font:a({editType:"calc+arraydraw",colorEditType:"arraydraw"}),width:{valType:"number",min:1,dflt:null,editType:"calc+arraydraw"},height:{valType:"number",min:1,dflt:null,editType:"calc+arraydraw"},opacity:{valType:"number",min:0,max:1,dflt:1,editType:"arraydraw"},align:{valType:"enumerated",values:["left","center","right"],dflt:"center",editType:"arraydraw"},valign:{valType:"enumerated",values:["top","middle","bottom"],dflt:"middle",editType:"arraydraw"},bgcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"arraydraw"},bordercolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"arraydraw"},borderpad:{valType:"number",min:0,dflt:1,editType:"calc+arraydraw"},borderwidth:{valType:"number",min:0,dflt:1,editType:"calc+arraydraw"},showarrow:{valType:"boolean",dflt:!0,editType:"calc+arraydraw"},arrowcolor:{valType:"color",editType:"arraydraw"},arrowhead:{valType:"integer",min:0,max:n.length,dflt:1,editType:"arraydraw"},startarrowhead:{valType:"integer",min:0,max:n.length,dflt:1,editType:"arraydraw"},arrowside:{valType:"flaglist",flags:["end","start"],extras:["none"],dflt:"end",editType:"arraydraw"},arrowsize:{valType:"number",min:.3,dflt:1,editType:"calc+arraydraw"},startarrowsize:{valType:"number",min:.3,dflt:1,editType:"calc+arraydraw"},arrowwidth:{valType:"number",min:.1,editType:"calc+arraydraw"},standoff:{valType:"number",min:0,dflt:0,editType:"calc+arraydraw"},startstandoff:{valType:"number",min:0,dflt:0,editType:"calc+arraydraw"},ax:{valType:"any",editType:"calc+arraydraw"},ay:{valType:"any",editType:"calc+arraydraw"},axref:{valType:"enumerated",dflt:"pixel",values:["pixel",i.idRegex.x.toString()],editType:"calc"},ayref:{valType:"enumerated",dflt:"pixel",values:["pixel",i.idRegex.y.toString()],editType:"calc"},xref:{valType:"enumerated",values:["paper",i.idRegex.x.toString()],editType:"calc"},x:{valType:"any",editType:"calc+arraydraw"},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"auto",editType:"calc+arraydraw"},xshift:{valType:"number",dflt:0,editType:"calc+arraydraw"},yref:{valType:"enumerated",values:["paper",i.idRegex.y.toString()],editType:"calc"},y:{valType:"any",editType:"calc+arraydraw"},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],dflt:"auto",editType:"calc+arraydraw"},yshift:{valType:"number",dflt:0,editType:"calc+arraydraw"},clicktoshow:{valType:"enumerated",values:[!1,"onoff","onout"],dflt:!1,editType:"arraydraw"},xclick:{valType:"any",editType:"arraydraw"},yclick:{valType:"any",editType:"arraydraw"},hovertext:{valType:"string",editType:"arraydraw"},hoverlabel:{bgcolor:{valType:"color",editType:"arraydraw"},bordercolor:{valType:"color",editType:"arraydraw"},font:a({editType:"arraydraw"}),editType:"arraydraw"},captureevents:{valType:"boolean",editType:"arraydraw"},editType:"calc",_deprecated:{ref:{valType:"string",editType:"calc"}}})},3749:function(e,t,r){"use strict";var n=r(71828),a=r(89298),i=r(92605).draw;function o(e){var t=e._fullLayout;n.filterVisible(t.annotations).forEach(function(t){var r=a.getFromId(e,t.xref),n=a.getFromId(e,t.yref),i=a.getRefType(t.xref),o=a.getRefType(t.yref);t._extremes={},"range"===i&&l(t,r),"range"===o&&l(t,n)})}function l(e,t){var r,n=t._id,i=n.charAt(0),o=e[i],l=e["a"+i],s=e[i+"ref"],c=e["a"+i+"ref"],u=e["_"+i+"padplus"],f=e["_"+i+"padminus"],d={x:1,y:-1}[i]*e[i+"shift"],h=3*e.arrowsize*e.arrowwidth||0,p=h+d,y=h-d,v=3*e.startarrowsize*e.arrowwidth||0,g=v+d,m=v-d;if(c===s){var x=a.findExtremes(t,[t.r2c(o)],{ppadplus:p,ppadminus:y}),b=a.findExtremes(t,[t.r2c(l)],{ppadplus:Math.max(u,g),ppadminus:Math.max(f,m)});r={min:[x.min[0],b.min[0]],max:[x.max[0],b.max[0]]}}else g=l?g+l:g,m=l?m-l:m,r=a.findExtremes(t,[t.r2c(o)],{ppadplus:Math.max(u,p,g),ppadminus:Math.max(f,y,m)});e._extremes[n]=r}e.exports=function(e){var t=e._fullLayout;if(n.filterVisible(t.annotations).length&&e._fullData.length)return n.syncOrAsync([i,o],e)}},44317:function(e,t,r){"use strict";var n=r(71828),a=r(73972),i=r(44467).arrayEditor;function o(e,t){var r,n,a,i,o,s,c,u=e._fullLayout.annotations,f=[],d=[],h=[],p=(t||[]).length;for(r=0;r"+h+"":"B"===s&&9===c?e+="B":xe(s)&&(e+=me[c/3+5]));return i?D+e:e}function we(e,t){if(e){var r=Object.keys(F).reduce(function(e,r){return-1!==t.indexOf(r)&&F[r].forEach(function(t){e[t]=1}),e},{});Object.keys(e).forEach(function(t){r[t]||(1===t.length?e[t]=0:delete e[t])})}}function ke(e,t){for(var r=[],n={},a=0;a
")}(t,r,n,a):y.getValue(l.text,r),y.coerceString(m,o)}(C,n,a,k,A);w=function(e,t){var r=y.getValue(e.textposition,t);return y.coerceEnumerated(x,r)}(P,a);var I="stack"===v.mode||"relative"===v.mode,z=n[a],N=!I||z._outmost;if(R&&"none"!==w&&(!z.isBlank&&l!==c&&f!==h||"auto"!==w&&"inside"!==w)){var F=C.font,j=p.getBarColor(n[a],P),B=p.getInsideTextFont(P,a,F,j),H=p.getOutsideTextFont(P,a,F),U=r.datum();E?"log"===k.type&&U.s0<=0&&(l=k.range[0]":h>c&&(n.prefixBoundary=!0);break;case"<":(hc||n.starts.length&&d===u)&&(n.prefixBoundary=!0);break;case"][":f=Math.min(h[0],h[1]),d=Math.max(h[0],h[1]),fc&&(n.prefixBoundary=!0)}}}},90654:function(e,t,r){"use strict";var n=r(21081),a=r(86068),i=r(53572);e.exports={min:"zmin",max:"zmax",calc:function(e,t,r){var o=t.contours,l=t.line,s=o.size||1,c=o.coloring,u=a(t,{isColorbar:!0});if("heatmap"===c){var f=n.extractOpts(t);r._fillgradient=f.reversescale?n.flipScale(f.colorscale):f.colorscale,r._zrange=[f.min,f.max]}else"fill"===c&&(r._fillcolor=u);r._line={color:"lines"===c?u:l.color,width:!1!==o.showlines?l.width:0,dash:l.dash},r._levels={start:o.start,end:i(o),size:s}}}},36914:function(e){"use strict";e.exports={BOTTOMSTART:[1,9,13,104,713],TOPSTART:[4,6,7,104,713],LEFTSTART:[8,12,14,208,1114],RIGHTSTART:[2,3,11,208,1114],NEWDELTA:[null,[-1,0],[0,-1],[-1,0],[1,0],null,[0,-1],[-1,0],[0,1],[0,1],null,[0,1],[1,0],[1,0],[0,-1]],CHOOSESADDLE:{104:[4,1],208:[2,8],713:[7,13],1114:[11,14]},SADDLEREMAINDER:{1:4,2:8,4:1,7:13,8:2,11:14,13:7,14:11},LABELDISTANCE:2,LABELINCREASE:10,LABELMIN:3,LABELMAX:10,LABELOPTIMIZER:{EDGECOST:1,ANGLECOST:1,NEIGHBORCOST:5,SAMELEVELFACTOR:10,SAMELEVELDISTANCE:5,MAXCOST:100,INITIALSEARCHPOINTS:10,ITERATIONS:5}}},83179:function(e,t,r){"use strict";var n=r(92770),a=r(14523),i=r(7901),o=i.addOpacity,l=i.opacity,s=r(74808),c=s.CONSTRAINT_REDUCTION,u=s.COMPARISON_OPS2;e.exports=function(e,t,r,i,s,f){var d,h,p,y=t.contours,v=r("contours.operation");(y._operation=c[v],function(e,t){var r;-1===u.indexOf(t.operation)?(e("contours.value",[0,1]),Array.isArray(t.value)?t.value.length>2?t.value=t.value.slice(2):0===t.length?t.value=[0,1]:t.length<2?(r=parseFloat(t.value[0]),t.value=[r,r+1]):t.value=[parseFloat(t.value[0]),parseFloat(t.value[1])]:n(t.value)&&(r=parseFloat(t.value),t.value=[r,r+1])):(e("contours.value",0),n(t.value)||(Array.isArray(t.value)?t.value=parseFloat(t.value[0]):t.value=0))}(r,y),"="===v?d=y.showlines=!0:(d=r("contours.showlines"),p=r("fillcolor",o((e.line||{}).color||s,.5))),d)&&(h=r("line.color",p&&l(p)?o(t.fillcolor,1):s),r("line.width",2),r("line.dash"));r("line.smoothing"),a(r,i,h,f)}},64237:function(e,t,r){"use strict";var n=r(74808),a=r(92770);function i(e,t){var r,i=Array.isArray(t);function o(e){return a(e)?+e:null}return-1!==n.COMPARISON_OPS2.indexOf(e)?r=o(i?t[0]:t):-1!==n.INTERVAL_OPS.indexOf(e)?r=i?[o(t[0]),o(t[1])]:[o(t),o(t)]:-1!==n.SET_OPS.indexOf(e)&&(r=i?t.map(o):[o(t)]),r}function o(e){return function(t){t=i(e,t);var r=Math.min(t[0],t[1]),n=Math.max(t[0],t[1]);return{start:r,end:n,size:n-r}}}function l(e){return function(t){return{start:t=i(e,t),end:1/0,size:1/0}}}e.exports={"[]":o("[]"),"][":o("]["),">":l(">"),"<":l("<"),"=":l("=")}},67217:function(e){"use strict";e.exports=function(e,t,r,n){var a=n("contours.start"),i=n("contours.end"),o=!1===a||!1===i,l=r("contours.size");!(o?t.autocontour=!0:r("autocontour",!1))&&l||r("ncontours")}},84857:function(e,t,r){"use strict";var n=r(71828);function a(e){return n.extendFlat({},e,{edgepaths:n.extendDeep([],e.edgepaths),paths:n.extendDeep([],e.paths),starts:n.extendDeep([],e.starts)})}e.exports=function(e,t){var r,i,o,l=function(e){return e.reverse()},s=function(e){return e};switch(t){case"=":case"<":return e;case">":for(1!==e.length&&n.warn("Contour data invalid for the specified inequality operation."),i=e[0],r=0;r