diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 000000000..86fbabe8f --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,30 @@ +# See https://pre-commit.com for more information +# See https://pre-commit.com/hooks.html for more hooks +repos: + - repo: local + hooks: + - id: pre-commit-yarn-build + name: Build javascript files + entry: yarn --cwd ./vue build + language: system + types: [ python ] + pass_filenames: false + +#- id: pre-commit-django-migrations +# name: Check django migrations +# entry: bash -c './venv/bin/activate && ./manage.py makemigrations --check' +# language: system +# types: [ python ] +# pass_filenames: false +# - id: pre-commit-django-make-messages +# name: Make messages if necessary +# entry: ./manage.py makemessages -i venv -a +# language: system +# types: [ python ] +# pass_filenames: false +# - id: pre-commit-django-compile-messages +# name: Compile messages if necessary +# entry: ./manage.py compilemessages -i venv +# language: system +# types: [ python ] +# pass_filenames: false \ No newline at end of file diff --git a/cookbook/locale/ca/LC_MESSAGES/django.mo b/cookbook/locale/ca/LC_MESSAGES/django.mo index 0f65776c7..46fe0385e 100644 Binary files a/cookbook/locale/ca/LC_MESSAGES/django.mo and b/cookbook/locale/ca/LC_MESSAGES/django.mo differ diff --git a/cookbook/locale/de/LC_MESSAGES/django.mo b/cookbook/locale/de/LC_MESSAGES/django.mo index 460db34a9..6253c5d6b 100644 Binary files a/cookbook/locale/de/LC_MESSAGES/django.mo and b/cookbook/locale/de/LC_MESSAGES/django.mo differ diff --git a/cookbook/locale/de/LC_MESSAGES/django.po b/cookbook/locale/de/LC_MESSAGES/django.po index ee8c8d465..78a889965 100644 --- a/cookbook/locale/de/LC_MESSAGES/django.po +++ b/cookbook/locale/de/LC_MESSAGES/django.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-12-26 13:48+0100\n" +"POT-Creation-Date: 2021-01-13 23:31+0100\n" "PO-Revision-Date: 2020-06-02 19:28+0000\n" "Last-Translator: vabene1111 , 2020\n" "Language-Team: German (https://www.transifex.com/django-recipes/teams/110507/" @@ -23,15 +23,14 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: cookbook/filters.py:15 cookbook/templates/base.html:80 -#: cookbook/templates/forms/edit_internal_recipe.html:199 -#: cookbook/templates/forms/ingredients.html:34 -#: cookbook/templates/recipe_view.html:107 cookbook/templates/stats.html:28 -#: cookbook/views/lists.py:48 +#: .\cookbook\filters.py:22 .\cookbook\templates\base.html:82 +#: .\cookbook\templates\forms\edit_internal_recipe.html:215 +#: .\cookbook\templates\forms\ingredients.html:34 +#: .\cookbook\templates\stats.html:28 .\cookbook\views\lists.py:72 msgid "Ingredients" msgstr "Zutaten" -#: cookbook/forms.py:37 +#: .\cookbook\forms.py:44 msgid "" "Color of the top navigation bar. Not all colors work with all themes, just " "try them out!" @@ -39,35 +38,35 @@ msgstr "" "Farbe der oberen Navigationsleiste. Nicht alle Farben passen, daher einfach " "mal ausprobieren!" -#: cookbook/forms.py:38 +#: .\cookbook\forms.py:45 msgid "Default Unit to be used when inserting a new ingredient into a recipe." msgstr "Standardeinheit für neue Zutaten." -#: cookbook/forms.py:39 +#: .\cookbook\forms.py:46 msgid "" "Enables support for fractions in ingredient amounts (e.g. convert decimals " "to fractions automatically)" msgstr "Unterstützung für Brüche aktivieren in Zutaten aktivieren." -#: cookbook/forms.py:40 +#: .\cookbook\forms.py:47 msgid "" "Users with whom newly created meal plan/shopping list entries should be " "shared by default." msgstr "" -#: cookbook/forms.py:41 +#: .\cookbook\forms.py:48 msgid "Show recently viewed recipes on search page." msgstr "Zeige zuletzt angeschaute Rezepte über den Suchergebnissen." -#: cookbook/forms.py:42 +#: .\cookbook\forms.py:49 msgid "Number of decimals to round ingredients." msgstr "Anzahl Dezimalstellen, auf die gerundet werden soll." -#: cookbook/forms.py:43 +#: .\cookbook\forms.py:50 msgid "If you want to be able to create and see comments underneath recipes." msgstr "Ob Kommentare unter Rezepten erstellt und angesehen werden können." -#: cookbook/forms.py:45 +#: .\cookbook\forms.py:52 msgid "" "Setting to 0 will disable auto sync. When viewing a shopping list the list " "is updated every set seconds to sync changes someone else might have made. " @@ -79,7 +78,11 @@ msgstr "" "aktualisiert. Dies ist nützlich, wenn mehrere Personen eine Liste beim " "Einkaufen verwenden, benötigt jedoch etwas Datenvolumen." -#: cookbook/forms.py:62 +#: .\cookbook\forms.py:55 +msgid "Makes the navbar stick to the top of the page." +msgstr "" + +#: .\cookbook\forms.py:71 msgid "" "Both fields are optional. If none are given the username will be displayed " "instead" @@ -87,35 +90,41 @@ msgstr "" "Beide Felder sind optional, wenn keins von beiden gegeben ist, wird der " "Nutzername angezeigt" -#: cookbook/forms.py:76 cookbook/forms.py:94 cookbook/forms.py:241 -#: cookbook/templates/forms/edit_internal_recipe.html:45 +#: .\cookbook\forms.py:92 .\cookbook\forms.py:113 .\cookbook\forms.py:277 +#: .\cookbook\templates\forms\edit_internal_recipe.html:45 msgid "Name" msgstr "Name" -#: cookbook/forms.py:77 cookbook/forms.py:95 cookbook/forms.py:242 -#: cookbook/templates/base.html:87 -#: cookbook/templates/forms/edit_internal_recipe.html:65 -#: cookbook/templates/stats.html:24 cookbook/templates/url_import.html:177 +#: .\cookbook\forms.py:93 .\cookbook\forms.py:114 .\cookbook\forms.py:278 +#: .\cookbook\templates\base.html:89 +#: .\cookbook\templates\forms\edit_internal_recipe.html:68 +#: .\cookbook\templates\stats.html:24 .\cookbook\templates\url_import.html:178 msgid "Keywords" msgstr "Schlagwörter" -#: cookbook/forms.py:78 cookbook/forms.py:96 +#: .\cookbook\forms.py:94 .\cookbook\forms.py:115 msgid "Preparation time in minutes" msgstr "Zubereitungszeit in Minuten" -#: cookbook/forms.py:79 cookbook/forms.py:97 +#: .\cookbook\forms.py:95 .\cookbook\forms.py:116 msgid "Waiting time (cooking/baking) in minutes" msgstr "Wartezeit (kochen/backen) in Minuten" -#: cookbook/forms.py:80 cookbook/forms.py:243 +#: .\cookbook\forms.py:96 .\cookbook\forms.py:279 msgid "Path" msgstr "Pfad" -#: cookbook/forms.py:81 +#: .\cookbook\forms.py:97 msgid "Storage UID" msgstr "Speicher ID" -#: cookbook/forms.py:108 +#: .\cookbook\forms.py:117 +#, fuzzy +#| msgid "Number of Days" +msgid "Number of servings" +msgstr "Anzahl Tage" + +#: .\cookbook\forms.py:128 msgid "" "Include - [ ] in list for easier usage in markdown based " "documents." @@ -123,63 +132,63 @@ msgstr "" "Füge - [ ] vor den Zutaten ein, um sie besser in einem Markdown-" "Dokument zu verwenden." -#: cookbook/forms.py:120 +#: .\cookbook\forms.py:140 msgid "Export Base64 encoded image?" msgstr "Base64 kodiertes Bild exportieren?" -#: cookbook/forms.py:124 +#: .\cookbook\forms.py:144 msgid "Download export directly or show on page?" msgstr "Direkter Download oder Anzeige auf Seite ?" -#: cookbook/forms.py:130 +#: .\cookbook\forms.py:152 msgid "Simply paste a JSON export into this textarea and click import." msgstr "Einfach JSON in die Textbox einfügen und \"Importieren\" klicken." -#: cookbook/forms.py:139 +#: .\cookbook\forms.py:162 msgid "New Unit" msgstr "Neue Einheit" -#: cookbook/forms.py:140 +#: .\cookbook\forms.py:163 msgid "New unit that other gets replaced by." msgstr "Neue Einheit, die die alte ersetzt." -#: cookbook/forms.py:145 +#: .\cookbook\forms.py:168 msgid "Old Unit" msgstr "Alte Einheit" -#: cookbook/forms.py:146 +#: .\cookbook\forms.py:169 msgid "Unit that should be replaced." msgstr "Einheit, die ersetzt werden soll." -#: cookbook/forms.py:156 +#: .\cookbook\forms.py:179 msgid "New Food" msgstr "Neue Zutat" -#: cookbook/forms.py:157 +#: .\cookbook\forms.py:180 msgid "New food that other gets replaced by." msgstr "Neue Zutat, die die alte ersetzt." -#: cookbook/forms.py:162 +#: .\cookbook\forms.py:185 msgid "Old Food" msgstr "Alte Zutat." -#: cookbook/forms.py:163 +#: .\cookbook\forms.py:186 msgid "Food that should be replaced." msgstr "Zutat, die ersetzt werden soll." -#: cookbook/forms.py:175 +#: .\cookbook\forms.py:198 msgid "Add your comment: " msgstr "Schreibe einen Kommentar: " -#: cookbook/forms.py:200 +#: .\cookbook\forms.py:229 msgid "Leave empty for dropbox and enter app password for nextcloud." msgstr "Für Dropbox leer lassen, bei Nextcloud App-Passwort eingeben." -#: cookbook/forms.py:203 +#: .\cookbook\forms.py:236 msgid "Leave empty for nextcloud and enter api token for dropbox." msgstr "Für Nextcloud leer lassen, für Dropbox API-Token eingeben." -#: cookbook/forms.py:211 +#: .\cookbook\forms.py:244 msgid "" "Leave empty for dropbox and enter only base url for nextcloud (/remote." "php/webdav/ is added automatically)" @@ -187,25 +196,26 @@ msgstr "" "Für Dropbox leer lassen. Für Nextcloud Server-URL angeben, (/remote." "php/webdav/ wird automatisch hinzugefügt)" -#: cookbook/forms.py:230 +#: .\cookbook\forms.py:263 msgid "Search String" msgstr "Suchwort" -#: cookbook/forms.py:244 +#: .\cookbook\forms.py:280 msgid "File ID" msgstr "Datei ID" -#: cookbook/forms.py:262 +#: .\cookbook\forms.py:299 msgid "You must provide at least a recipe or a title." msgstr "Mindestens ein Rezept oder ein Titel müssen angegeben werden." -#: cookbook/forms.py:271 +#: .\cookbook\forms.py:312 msgid "You can list default users to share recipes with in the settings." msgstr "" "Benutzer, mit denen neue Rezepte standardmäßig geteilt werden sollen, können " "in den Einstellungen angegeben werden." -#: cookbook/forms.py:272 cookbook/templates/forms/edit_internal_recipe.html:352 +#: .\cookbook\forms.py:313 +#: .\cookbook\templates\forms\edit_internal_recipe.html:372 msgid "" "You can use markdown to format this field. See the docs here" @@ -213,262 +223,259 @@ msgstr "" "Markdown kann genutzt werden, um dieses Feld zu formatieren. Siehe hier für weitere Information." -#: cookbook/forms.py:273 -msgid "Scaling factor for recipe." -msgstr "Skalierungsfaktor für das Rezept." - -#: cookbook/forms.py:284 +#: .\cookbook\forms.py:328 msgid "A username is not required, if left blank the new user can choose one." msgstr "" "Kein Benutzername benötigt. Wenn leer gelassen, kann der neue Benutzer einen " "wählen." -#: cookbook/helper/permission_helper.py:130 -#: cookbook/helper/permission_helper.py:186 -#: cookbook/helper/permission_helper.py:200 -#: cookbook/helper/permission_helper.py:211 -#: cookbook/helper/permission_helper.py:222 cookbook/views/data.py:27 -#: cookbook/views/views.py:79 cookbook/views/views.py:158 +#: .\cookbook\helper\permission_helper.py:137 +#: .\cookbook\helper\permission_helper.py:207 +#: .\cookbook\helper\permission_helper.py:221 +#: .\cookbook\helper\permission_helper.py:232 +#: .\cookbook\helper\permission_helper.py:243 .\cookbook\views\data.py:32 +#: .\cookbook\views\views.py:100 .\cookbook\views\views.py:228 msgid "You do not have the required permissions to view this page!" msgstr "Du hast nicht die notwendigen Rechte, um diese Seite zu anzuzeigen!" -#: cookbook/helper/permission_helper.py:140 +#: .\cookbook\helper\permission_helper.py:152 msgid "You are not logged in and therefore cannot view this page!" msgstr "Du bist nicht angemeldet, daher kannst du diese Seite nicht sehen!" -#: cookbook/helper/permission_helper.py:144 -#: cookbook/helper/permission_helper.py:158 -#: cookbook/helper/permission_helper.py:172 cookbook/views/delete.py:132 +#: .\cookbook\helper\permission_helper.py:162 +#: .\cookbook\helper\permission_helper.py:178 +#: .\cookbook\helper\permission_helper.py:193 .\cookbook\views\delete.py:143 msgid "You cannot interact with this object as it is not owned by you!" msgstr "" "Du kannst mit diesem Objekt nicht interagieren, da es dir nicht gehört!" -#: cookbook/helper/recipe_url_import.py:36 +#: .\cookbook\helper\recipe_url_import.py:39 msgid "The requested site provided malformed data and cannot be read." msgstr "" "Die angefragte Seite hat ungültige Daten zurückgegeben oder die Daten " "konnten nicht verarbeitet werden." -#: cookbook/helper/recipe_url_import.py:45 +#: .\cookbook\helper\recipe_url_import.py:53 msgid "" "The requested site does not provide any recognized data format to import the " "recipe from." msgstr "" "Die angefragte Seite stellt keine bekannten Datenformate zur Verfügung." -#: cookbook/helper/recipe_url_import.py:161 +#: .\cookbook\helper\recipe_url_import.py:176 msgid "Imported from" msgstr "Importiert von" -#: cookbook/migrations/0047_auto_20200602_1133.py:12 +#: .\cookbook\migrations\0047_auto_20200602_1133.py:12 msgid "Breakfast" msgstr "Frühstück" -#: cookbook/migrations/0047_auto_20200602_1133.py:17 +#: .\cookbook\migrations\0047_auto_20200602_1133.py:17 msgid "Lunch" msgstr "Mittagessen" -#: cookbook/migrations/0047_auto_20200602_1133.py:22 +#: .\cookbook\migrations\0047_auto_20200602_1133.py:22 msgid "Dinner" msgstr "Abendessen" -#: cookbook/migrations/0047_auto_20200602_1133.py:27 +#: .\cookbook\migrations\0047_auto_20200602_1133.py:27 msgid "Other" msgstr "Andere" -#: cookbook/models.py:60 cookbook/templates/shopping_list.html:44 +#: .\cookbook\models.py:77 .\cookbook\templates\shopping_list.html:44 msgid "Search" msgstr "Suche" -#: cookbook/models.py:60 cookbook/templates/base.html:74 -#: cookbook/templates/meal_plan.html:5 cookbook/views/delete.py:149 -#: cookbook/views/edit.py:194 cookbook/views/new.py:156 +#: .\cookbook\models.py:78 .\cookbook\templates\base.html:76 +#: .\cookbook\templates\meal_plan.html:5 .\cookbook\views\delete.py:162 +#: .\cookbook\views\edit.py:215 .\cookbook\views\new.py:189 msgid "Meal-Plan" msgstr "Plan" -#: cookbook/models.py:60 cookbook/templates/base.html:71 +#: .\cookbook\models.py:79 .\cookbook\templates\base.html:73 msgid "Books" msgstr "Bücher" -#: cookbook/models.py:66 +#: .\cookbook\models.py:86 msgid "Small" msgstr "Klein" -#: cookbook/models.py:66 +#: .\cookbook\models.py:86 msgid "Large" msgstr "Groß" -#: cookbook/models.py:175 -#: cookbook/templates/forms/edit_internal_recipe.html:178 +#: .\cookbook\models.py:217 +#: .\cookbook\templates\forms\edit_internal_recipe.html:194 msgid "Text" msgstr "Text" -#: cookbook/models.py:175 -#: cookbook/templates/forms/edit_internal_recipe.html:179 +#: .\cookbook\models.py:217 +#: .\cookbook\templates\forms\edit_internal_recipe.html:195 msgid "Time" msgstr "Zeit" -#: cookbook/tables.py:29 cookbook/templates/books.html:36 -#: cookbook/templates/generic/edit_template.html:6 -#: cookbook/templates/generic/edit_template.html:14 -#: cookbook/templates/meal_plan.html:274 cookbook/templates/recipe_view.html:38 -#: cookbook/templates/recipes_table.html:77 -#: cookbook/templates/shopping_list.html:29 +#: .\cookbook\tables.py:35 .\cookbook\templates\books.html:36 +#: .\cookbook\templates\generic\edit_template.html:6 +#: .\cookbook\templates\generic\edit_template.html:14 +#: .\cookbook\templates\meal_plan.html:283 +#: .\cookbook\templates\recipes_table.html:77 +#: .\cookbook\templates\shopping_list.html:29 msgid "Edit" msgstr "Bearbeiten" -#: cookbook/tables.py:103 cookbook/tables.py:122 -#: cookbook/templates/books.html:38 -#: cookbook/templates/generic/delete_template.html:5 -#: cookbook/templates/generic/delete_template.html:13 -#: cookbook/templates/generic/edit_template.html:27 -#: cookbook/templates/meal_plan.html:270 +#: .\cookbook\tables.py:124 .\cookbook\tables.py:147 +#: .\cookbook\templates\books.html:38 +#: .\cookbook\templates\generic\delete_template.html:5 +#: .\cookbook\templates\generic\delete_template.html:13 +#: .\cookbook\templates\generic\edit_template.html:27 +#: .\cookbook\templates\meal_plan.html:279 msgid "Delete" msgstr "Löschen" -#: cookbook/tables.py:121 +#: .\cookbook\tables.py:144 msgid "Link" msgstr "Link" -#: cookbook/templates/404.html:5 +#: .\cookbook\templates\404.html:5 msgid "404 Error" msgstr "404 Fehler" -#: cookbook/templates/404.html:18 +#: .\cookbook\templates\404.html:18 msgid "The page you are looking for could not be found." msgstr "Die angeforderte Seite konnte nicht gefunden werden." -#: cookbook/templates/404.html:33 +#: .\cookbook\templates\404.html:33 msgid "Take me Home" msgstr "Zur Hauptseite" -#: cookbook/templates/404.html:35 +#: .\cookbook\templates\404.html:35 msgid "Report a Bug" msgstr "Einen Bug melden" -#: cookbook/templates/api_info.html:5 cookbook/templates/base.html:146 -#: cookbook/templates/rest_framework/api.html:11 +#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:148 +#: .\cookbook\templates\rest_framework\api.html:11 msgid "API Documentation" msgstr "API-Dokumentation" -#: cookbook/templates/base.html:60 cookbook/templates/forms/ingredients.html:7 -#: cookbook/templates/index.html:7 +#: .\cookbook\templates\base.html:62 +#: .\cookbook\templates\forms\ingredients.html:7 +#: .\cookbook\templates\index.html:7 msgid "Cookbook" msgstr "Kochbuch" -#: cookbook/templates/base.html:67 +#: .\cookbook\templates\base.html:69 msgid "Utensils" msgstr "Utensilien" -#: cookbook/templates/base.html:77 +#: .\cookbook\templates\base.html:79 msgid "Shopping" msgstr "Einkaufsliste" -#: cookbook/templates/base.html:91 cookbook/views/delete.py:78 -#: cookbook/views/edit.py:76 cookbook/views/lists.py:21 -#: cookbook/views/new.py:56 +#: .\cookbook\templates\base.html:93 .\cookbook\views\delete.py:81 +#: .\cookbook\views\edit.py:82 .\cookbook\views\lists.py:26 +#: .\cookbook\views\new.py:62 msgid "Keyword" msgstr "Schlagwort" -#: cookbook/templates/base.html:93 +#: .\cookbook\templates\base.html:95 msgid "Batch Edit" msgstr "Massenbearbeitung" -#: cookbook/templates/base.html:98 +#: .\cookbook\templates\base.html:100 msgid "Storage Data" msgstr "Datenquellen" -#: cookbook/templates/base.html:102 +#: .\cookbook\templates\base.html:104 msgid "Storage Backends" msgstr "Speicherquellen" -#: cookbook/templates/base.html:104 +#: .\cookbook\templates\base.html:106 msgid "Configure Sync" msgstr "Sync einstellen" -#: cookbook/templates/base.html:106 +#: .\cookbook\templates\base.html:108 msgid "Discovered Recipes" msgstr "Entdeckte Rezepte" -#: cookbook/templates/base.html:108 +#: .\cookbook\templates\base.html:110 msgid "Discovery Log" msgstr "Entdeckungs-Log" -#: cookbook/templates/base.html:110 cookbook/templates/stats.html:10 +#: .\cookbook\templates\base.html:112 .\cookbook\templates\stats.html:10 msgid "Statistics" msgstr "Statistiken" -#: cookbook/templates/base.html:112 +#: .\cookbook\templates\base.html:114 msgid "Units & Ingredients" msgstr "Einheiten & Zutaten" -#: cookbook/templates/base.html:114 +#: .\cookbook\templates\base.html:116 msgid "Import Recipe" msgstr "Importiere Rezept" -#: cookbook/templates/base.html:130 cookbook/templates/settings.html:6 -#: cookbook/templates/settings.html:16 +#: .\cookbook\templates\base.html:132 .\cookbook\templates\settings.html:6 +#: .\cookbook\templates\settings.html:16 msgid "Settings" msgstr "Einstellungen" -#: cookbook/templates/base.html:132 cookbook/templates/history.html:6 -#: cookbook/templates/history.html:14 +#: .\cookbook\templates\base.html:134 .\cookbook\templates\history.html:6 +#: .\cookbook\templates\history.html:14 msgid "History" msgstr "Geschichte" -#: cookbook/templates/base.html:136 cookbook/templates/system.html:13 +#: .\cookbook\templates\base.html:138 .\cookbook\templates\system.html:13 msgid "System" msgstr "System" -#: cookbook/templates/base.html:138 +#: .\cookbook\templates\base.html:140 msgid "Admin" msgstr "Admin" -#: cookbook/templates/base.html:142 +#: .\cookbook\templates\base.html:144 msgid "Markdown Guide" msgstr "Markdown-Hilfe" -#: cookbook/templates/base.html:144 +#: .\cookbook\templates\base.html:146 msgid "GitHub" msgstr "GitHub" -#: cookbook/templates/base.html:148 +#: .\cookbook\templates\base.html:150 msgid "API Browser" msgstr "API Browser" -#: cookbook/templates/base.html:151 +#: .\cookbook\templates\base.html:153 msgid "Logout" msgstr "Ausloggen" -#: cookbook/templates/base.html:156 -#: cookbook/templates/registration/login.html:4 -#: cookbook/templates/registration/login.html:46 +#: .\cookbook\templates\base.html:158 +#: .\cookbook\templates\registration\login.html:4 +#: .\cookbook\templates\registration\login.html:46 msgid "Login" msgstr "Einloggen" -#: cookbook/templates/batch/edit.html:6 +#: .\cookbook\templates\batch\edit.html:6 msgid "Batch edit Category" msgstr "Kategorie-Massenbearbeitung" -#: cookbook/templates/batch/edit.html:15 +#: .\cookbook\templates\batch\edit.html:15 msgid "Batch edit Recipes" msgstr "Rezept-Massenbearbeitung" -#: cookbook/templates/batch/edit.html:20 +#: .\cookbook\templates\batch\edit.html:20 msgid "Add the specified keywords to all recipes containing a word" msgstr "" "Ausgewählte Schlagwörter zu allen Rezepten, die das Suchwort enthalten, " "hinzufügen" -#: cookbook/templates/batch/monitor.html:6 cookbook/views/edit.py:59 +#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:65 msgid "Sync" msgstr "Synchronisieren" -#: cookbook/templates/batch/monitor.html:10 +#: .\cookbook\templates\batch\monitor.html:10 msgid "Manage watched Folders" msgstr "Überwachte Ordner verwalten" -#: cookbook/templates/batch/monitor.html:14 +#: .\cookbook\templates\batch\monitor.html:14 #, fuzzy #| msgid "" #| "On this Page you can manage all storage folder locations that should be " @@ -480,20 +487,20 @@ msgstr "" "Auf dieser Seite kannst du alle Ordner verwalten, die überwacht und " "synchronisiert werden sollen." -#: cookbook/templates/batch/monitor.html:16 +#: .\cookbook\templates\batch\monitor.html:16 msgid "The path must be in the following format" msgstr "Der Pfad muss folgendes Format haben" -#: cookbook/templates/batch/monitor.html:27 +#: .\cookbook\templates\batch\monitor.html:27 msgid "Sync Now!" msgstr "Jetzt Synchronisieren!" -#: cookbook/templates/batch/waiting.html:4 -#: cookbook/templates/batch/waiting.html:10 +#: .\cookbook\templates\batch\waiting.html:4 +#: .\cookbook\templates\batch\waiting.html:10 msgid "Importing Recipes" msgstr "Rezepte werden importiert" -#: cookbook/templates/batch/waiting.html:23 +#: .\cookbook\templates\batch\waiting.html:23 msgid "" "This can take a few minutes, depending on the number of recipes in sync, " "please wait." @@ -501,339 +508,262 @@ msgstr "" "Abhängig von der Anzahl der Rezepte kann dieser Vorgang einige Minuten " "dauern, bitte warten." -#: cookbook/templates/books.html:5 cookbook/templates/books.html:11 +#: .\cookbook\templates\books.html:5 .\cookbook\templates\books.html:11 msgid "Recipe Books" msgstr "Rezeptbuch" -#: cookbook/templates/books.html:15 +#: .\cookbook\templates\books.html:15 msgid "New Book" msgstr "Neues Buch" -#: cookbook/templates/books.html:27 cookbook/templates/recipe_view.html:69 -#: cookbook/templates/recipe_view.html:451 +#: .\cookbook\templates\books.html:27 .\cookbook\templates\recipe_view.html:26 msgid "by" msgstr "von" -#: cookbook/templates/books.html:34 +#: .\cookbook\templates\books.html:34 msgid "Toggle Recipes" msgstr "Rezepte umschalten" -#: cookbook/templates/books.html:54 cookbook/templates/meal_plan_entry.html:48 -#: cookbook/templates/recipe_view.html:92 -#: cookbook/templates/recipes_table.html:59 +#: .\cookbook\templates\books.html:54 +#: .\cookbook\templates\meal_plan_entry.html:48 +#: .\cookbook\templates\recipes_table.html:59 msgid "Last cooked" msgstr "Zuletzt gekocht" -#: cookbook/templates/books.html:71 +#: .\cookbook\templates\books.html:71 msgid "There are no recipes in this book yet." msgstr "In diesem Buch sind bisher keine Rezepte." -#: cookbook/templates/export.html:6 +#: .\cookbook\templates\export.html:6 msgid "Export Recipes" msgstr "Exportiere Rezepte" -#: cookbook/templates/export.html:19 cookbook/templates/recipe_view.html:52 -#: cookbook/templates/shopping_list.html:272 +#: .\cookbook\templates\export.html:19 +#: .\cookbook\templates\shopping_list.html:272 msgid "Export" msgstr "Export" -#: cookbook/templates/export.html:31 +#: .\cookbook\templates\export.html:31 msgid "Exported Recipe" msgstr "Exportierte Rezepte" -#: cookbook/templates/export.html:42 +#: .\cookbook\templates\export.html:42 msgid "Copy to clipboard" msgstr "In Zwischenablage kopieren" -#: cookbook/templates/export.html:54 +#: .\cookbook\templates\export.html:54 msgid "Copied!" msgstr "Kopiert!" -#: cookbook/templates/export.html:61 +#: .\cookbook\templates\export.html:61 msgid "Copy list to clipboard" msgstr "Kopiere Liste in Zwischenablage" -#: cookbook/templates/forms/edit_import_recipe.html:5 -#: cookbook/templates/forms/edit_import_recipe.html:9 +#: .\cookbook\templates\forms\edit_import_recipe.html:5 +#: .\cookbook\templates\forms\edit_import_recipe.html:9 msgid "Import new Recipe" msgstr "Rezept importieren" -#: cookbook/templates/forms/edit_import_recipe.html:14 -#: cookbook/templates/forms/edit_internal_recipe.html:364 -#: cookbook/templates/forms/edit_internal_recipe.html:393 -#: cookbook/templates/generic/edit_template.html:23 -#: cookbook/templates/generic/new_template.html:23 -#: cookbook/templates/include/log_cooking.html:28 -#: cookbook/templates/meal_plan.html:318 -#: cookbook/templates/recipe_view.html:502 cookbook/templates/settings.html:28 -#: cookbook/templates/settings.html:35 cookbook/templates/settings.html:57 -#: cookbook/templates/settings.html:72 -#: cookbook/templates/shopping_list.html:274 +#: .\cookbook\templates\forms\edit_import_recipe.html:14 +#: .\cookbook\templates\forms\edit_internal_recipe.html:384 +#: .\cookbook\templates\forms\edit_internal_recipe.html:413 +#: .\cookbook\templates\generic\edit_template.html:23 +#: .\cookbook\templates\generic\new_template.html:23 +#: .\cookbook\templates\include\log_cooking.html:28 +#: .\cookbook\templates\meal_plan.html:327 +#: .\cookbook\templates\settings.html:28 .\cookbook\templates\settings.html:35 +#: .\cookbook\templates\settings.html:57 .\cookbook\templates\settings.html:72 +#: .\cookbook\templates\shopping_list.html:274 msgid "Save" msgstr "Speichern" -#: cookbook/templates/forms/edit_internal_recipe.html:7 -#: cookbook/templates/forms/edit_internal_recipe.html:34 +#: .\cookbook\templates\forms\edit_internal_recipe.html:7 +#: .\cookbook\templates\forms\edit_internal_recipe.html:34 msgid "Edit Recipe" msgstr "Rezept bearbeiten" -#: cookbook/templates/forms/edit_internal_recipe.html:59 +#: .\cookbook\templates\forms\edit_internal_recipe.html:59 msgid "Preparation Time" msgstr "Vorbereitungs Zeit" -#: cookbook/templates/forms/edit_internal_recipe.html:62 +#: .\cookbook\templates\forms\edit_internal_recipe.html:62 msgid "Waiting Time" msgstr "Wartezeit" -#: cookbook/templates/forms/edit_internal_recipe.html:73 +#: .\cookbook\templates\forms\edit_internal_recipe.html:65 +#: .\cookbook\templates\include\log_cooking.html:16 +msgid "Servings" +msgstr "Portionen" + +#: .\cookbook\templates\forms\edit_internal_recipe.html:76 msgid "Select Keywords" msgstr "Schlagwort wählen" -#: cookbook/templates/forms/edit_internal_recipe.html:88 -#: cookbook/templates/recipe_view.html:218 +#: .\cookbook\templates\forms\edit_internal_recipe.html:90 +#, fuzzy +#| msgid "Nutrition" +msgid "Description" +msgstr "Nährwert" + +#: .\cookbook\templates\forms\edit_internal_recipe.html:104 msgid "Nutrition" msgstr "Nährwert" -#: cookbook/templates/forms/edit_internal_recipe.html:92 -#: cookbook/templates/forms/edit_internal_recipe.html:142 +#: .\cookbook\templates\forms\edit_internal_recipe.html:108 +#: .\cookbook\templates\forms\edit_internal_recipe.html:158 msgid "Delete Step" msgstr "Schritt löschen" -#: cookbook/templates/forms/edit_internal_recipe.html:96 -#: cookbook/templates/recipe_view.html:222 +#: .\cookbook\templates\forms\edit_internal_recipe.html:112 msgid "Calories" msgstr "Kalorien" -#: cookbook/templates/forms/edit_internal_recipe.html:99 -#: cookbook/templates/recipe_view.html:230 +#: .\cookbook\templates\forms\edit_internal_recipe.html:115 msgid "Carbohydrates" msgstr "Kohlenhydrate" -#: cookbook/templates/forms/edit_internal_recipe.html:102 -#: cookbook/templates/recipe_view.html:238 +#: .\cookbook\templates\forms\edit_internal_recipe.html:118 msgid "Fats" msgstr "Fett" -#: cookbook/templates/forms/edit_internal_recipe.html:104 -#: cookbook/templates/recipe_view.html:246 +#: .\cookbook\templates\forms\edit_internal_recipe.html:120 msgid "Proteins" msgstr "Proteine" -#: cookbook/templates/forms/edit_internal_recipe.html:126 -#: cookbook/templates/forms/edit_internal_recipe.html:426 -#: cookbook/templates/recipe_view.html:287 +#: .\cookbook\templates\forms\edit_internal_recipe.html:142 +#: .\cookbook\templates\forms\edit_internal_recipe.html:446 msgid "Step" msgstr "Schritt" -#: cookbook/templates/forms/edit_internal_recipe.html:147 +#: .\cookbook\templates\forms\edit_internal_recipe.html:163 msgid "Show as header" msgstr "Als Überschrift anzeigen" -#: cookbook/templates/forms/edit_internal_recipe.html:153 +#: .\cookbook\templates\forms\edit_internal_recipe.html:169 msgid "Hide as header" msgstr "nicht als Überschrift anzeigen" -#: cookbook/templates/forms/edit_internal_recipe.html:158 +#: .\cookbook\templates\forms\edit_internal_recipe.html:174 msgid "Move Up" msgstr "Nach oben" -#: cookbook/templates/forms/edit_internal_recipe.html:163 +#: .\cookbook\templates\forms\edit_internal_recipe.html:179 msgid "Move Down" msgstr "Nach unten" -#: cookbook/templates/forms/edit_internal_recipe.html:172 +#: .\cookbook\templates\forms\edit_internal_recipe.html:188 msgid "Step Name" msgstr "Name des Schritts" -#: cookbook/templates/forms/edit_internal_recipe.html:176 +#: .\cookbook\templates\forms\edit_internal_recipe.html:192 msgid "Step Type" msgstr "Art des Schritts" -#: cookbook/templates/forms/edit_internal_recipe.html:187 +#: .\cookbook\templates\forms\edit_internal_recipe.html:203 msgid "Step time in Minutes" msgstr "Zeit in Minuten" -#: cookbook/templates/forms/edit_internal_recipe.html:241 -#: cookbook/templates/shopping_list.html:148 +#: .\cookbook\templates\forms\edit_internal_recipe.html:257 +#: .\cookbook\templates\shopping_list.html:148 msgid "Select Unit" msgstr "Einheit auswählen" -#: cookbook/templates/forms/edit_internal_recipe.html:242 -#: cookbook/templates/forms/edit_internal_recipe.html:266 -#: cookbook/templates/shopping_list.html:149 -#: cookbook/templates/shopping_list.html:171 +#: .\cookbook\templates\forms\edit_internal_recipe.html:258 +#: .\cookbook\templates\forms\edit_internal_recipe.html:282 +#: .\cookbook\templates\shopping_list.html:149 +#: .\cookbook\templates\shopping_list.html:171 msgid "Create" msgstr "Erstellen" -#: cookbook/templates/forms/edit_internal_recipe.html:243 -#: cookbook/templates/forms/edit_internal_recipe.html:267 -#: cookbook/templates/shopping_list.html:150 -#: cookbook/templates/shopping_list.html:172 -#: cookbook/templates/shopping_list.html:214 -#: cookbook/templates/url_import.html:100 -#: cookbook/templates/url_import.html:132 +#: .\cookbook\templates\forms\edit_internal_recipe.html:259 +#: .\cookbook\templates\forms\edit_internal_recipe.html:283 +#: .\cookbook\templates\shopping_list.html:150 +#: .\cookbook\templates\shopping_list.html:172 +#: .\cookbook\templates\shopping_list.html:214 +#: .\cookbook\templates\url_import.html:100 +#: .\cookbook\templates\url_import.html:132 msgid "Select" msgstr "Wählen" -#: cookbook/templates/forms/edit_internal_recipe.html:265 -#: cookbook/templates/shopping_list.html:170 +#: .\cookbook\templates\forms\edit_internal_recipe.html:281 +#: .\cookbook\templates\shopping_list.html:170 msgid "Select Food" msgstr "Zutat wählen" -#: cookbook/templates/forms/edit_internal_recipe.html:282 -#: cookbook/templates/meal_plan.html:249 cookbook/templates/url_import.html:147 +#: .\cookbook\templates\forms\edit_internal_recipe.html:298 +#: .\cookbook\templates\meal_plan.html:258 +#: .\cookbook\templates\url_import.html:147 msgid "Note" msgstr "Notiz" -#: cookbook/templates/forms/edit_internal_recipe.html:299 +#: .\cookbook\templates\forms\edit_internal_recipe.html:315 msgid "Delete Ingredient" msgstr "Zutat löschen" -#: cookbook/templates/forms/edit_internal_recipe.html:305 +#: .\cookbook\templates\forms\edit_internal_recipe.html:321 msgid "Make Header" msgstr "Überschrift machen" -#: cookbook/templates/forms/edit_internal_recipe.html:311 +#: .\cookbook\templates\forms\edit_internal_recipe.html:327 msgid "Make Ingredient" msgstr "Zutat machen" -#: cookbook/templates/forms/edit_internal_recipe.html:317 +#: .\cookbook\templates\forms\edit_internal_recipe.html:333 msgid "Disable Amount" msgstr "Menge deaktivieren" -#: cookbook/templates/forms/edit_internal_recipe.html:323 +#: .\cookbook\templates\forms\edit_internal_recipe.html:339 msgid "Enable Amount" msgstr "Menge aktivieren" -#: cookbook/templates/forms/edit_internal_recipe.html:349 -#: cookbook/templates/recipe_view.html:269 -#: cookbook/templates/url_import.html:171 +#: .\cookbook\templates\forms\edit_internal_recipe.html:343 +msgid "Copy Template Reference" +msgstr "" + +#: .\cookbook\templates\forms\edit_internal_recipe.html:369 +#: .\cookbook\templates\url_import.html:172 msgid "Instructions" msgstr "Anleitung" -#: cookbook/templates/forms/edit_internal_recipe.html:362 -#: cookbook/templates/forms/edit_internal_recipe.html:390 +#: .\cookbook\templates\forms\edit_internal_recipe.html:382 +#: .\cookbook\templates\forms\edit_internal_recipe.html:410 msgid "Save & View" msgstr "Speichern & Ansehen" -#: cookbook/templates/forms/edit_internal_recipe.html:366 -#: cookbook/templates/forms/edit_internal_recipe.html:396 +#: .\cookbook\templates\forms\edit_internal_recipe.html:386 +#: .\cookbook\templates\forms\edit_internal_recipe.html:416 msgid "Add Step" msgstr "Schritt hinzufügen" -#: cookbook/templates/forms/edit_internal_recipe.html:369 -#: cookbook/templates/forms/edit_internal_recipe.html:400 +#: .\cookbook\templates\forms\edit_internal_recipe.html:389 +#: .\cookbook\templates\forms\edit_internal_recipe.html:420 msgid "Add Nutrition" msgstr "Nährwerte hinzufügen" -#: cookbook/templates/forms/edit_internal_recipe.html:371 -#: cookbook/templates/forms/edit_internal_recipe.html:402 +#: .\cookbook\templates\forms\edit_internal_recipe.html:391 +#: .\cookbook\templates\forms\edit_internal_recipe.html:422 msgid "Remove Nutrition" msgstr "Nährwerte entfernen" -#: cookbook/templates/forms/edit_internal_recipe.html:373 -#: cookbook/templates/forms/edit_internal_recipe.html:405 +#: .\cookbook\templates\forms\edit_internal_recipe.html:393 +#: .\cookbook\templates\forms\edit_internal_recipe.html:425 msgid "View Recipe" msgstr "Rezept ansehen" -#: cookbook/templates/forms/edit_internal_recipe.html:375 -#: cookbook/templates/forms/edit_internal_recipe.html:407 +#: .\cookbook\templates\forms\edit_internal_recipe.html:395 +#: .\cookbook\templates\forms\edit_internal_recipe.html:427 msgid "Delete Recipe" msgstr "Rezept löschen" -#: cookbook/templates/forms/edit_internal_recipe.html:413 +#: .\cookbook\templates\forms\edit_internal_recipe.html:433 msgid "Steps" msgstr "Schritte" -#: cookbook/templates/forms/edit_internal_recipe.html:534 -#: cookbook/templates/forms/edit_internal_recipe.html:552 -#: cookbook/templates/forms/edit_internal_recipe.html:566 -#: cookbook/templates/forms/edit_internal_recipe.html:647 -#: cookbook/templates/forms/edit_internal_recipe.html:666 -#: cookbook/templates/forms/edit_internal_recipe.html:686 -#: cookbook/templates/meal_plan.html:442 cookbook/templates/meal_plan.html:454 -#: cookbook/templates/meal_plan.html:509 cookbook/templates/meal_plan.html:522 -#: cookbook/templates/meal_plan.html:533 cookbook/templates/meal_plan.html:559 -#: cookbook/templates/meal_plan.html:570 cookbook/templates/meal_plan.html:584 -#: cookbook/templates/meal_plan.html:591 cookbook/templates/meal_plan.html:599 -#: cookbook/templates/shopping_list.html:453 -#: cookbook/templates/shopping_list.html:480 -#: cookbook/templates/shopping_list.html:516 -#: cookbook/templates/shopping_list.html:536 -#: cookbook/templates/shopping_list.html:547 -#: cookbook/templates/shopping_list.html:570 -#: cookbook/templates/shopping_list.html:596 -#: cookbook/templates/shopping_list.html:612 -#: cookbook/templates/shopping_list.html:654 -#: cookbook/templates/shopping_list.html:664 -#: cookbook/templates/shopping_list.html:673 -#: cookbook/templates/shopping_list.html:692 -#: cookbook/templates/url_import.html:308 -#: cookbook/templates/url_import.html:313 -#: cookbook/templates/url_import.html:322 -#: cookbook/templates/url_import.html:366 -#: cookbook/templates/url_import.html:384 -#: cookbook/templates/url_import.html:403 -msgid "Error" -msgstr "Fehler" - -#: cookbook/templates/forms/edit_internal_recipe.html:534 -msgid "There was an error loading the recipe!" -msgstr "Es gab einen Fehler beim Laden des Rezepts!" - -#: cookbook/templates/forms/edit_internal_recipe.html:545 -#: cookbook/templates/forms/edit_internal_recipe.html:562 -#: cookbook/templates/shopping_list.html:527 -#: cookbook/templates/shopping_list.html:543 -msgid "Updated" -msgstr "Aktualisiert" - -#: cookbook/templates/forms/edit_internal_recipe.html:545 -#: cookbook/templates/forms/edit_internal_recipe.html:562 -#: cookbook/templates/shopping_list.html:543 -msgid "Changes saved successfully!" -msgstr "Änderungen erfolgreich gespeichert!" - -#: cookbook/templates/forms/edit_internal_recipe.html:552 -#: cookbook/templates/forms/edit_internal_recipe.html:566 -msgid "There was an error updating the recipe!" -msgstr "Es gab einen Fehler beim aktualisieren des Rezepts!" - -#: cookbook/templates/forms/edit_internal_recipe.html:610 -msgid "Are you sure that you want to delete this ingredient?" -msgstr "Bist du sicher das du diese Zutat löschen willst?" - -#: cookbook/templates/forms/edit_internal_recipe.html:615 -msgid "Are you sure that you want to delete this step?" -msgstr "Soll dieser Schritt wirklich gelöscht werden?" - -#: cookbook/templates/forms/edit_internal_recipe.html:647 -#: cookbook/templates/forms/edit_internal_recipe.html:666 -#: cookbook/templates/forms/edit_internal_recipe.html:686 -#: cookbook/templates/meal_plan.html:442 cookbook/templates/meal_plan.html:454 -#: cookbook/templates/meal_plan.html:509 cookbook/templates/meal_plan.html:522 -#: cookbook/templates/meal_plan.html:533 cookbook/templates/meal_plan.html:559 -#: cookbook/templates/meal_plan.html:570 cookbook/templates/meal_plan.html:584 -#: cookbook/templates/meal_plan.html:591 cookbook/templates/meal_plan.html:599 -#: cookbook/templates/shopping_list.html:453 -#: cookbook/templates/shopping_list.html:480 -#: cookbook/templates/shopping_list.html:612 -#: cookbook/templates/shopping_list.html:654 -#: cookbook/templates/shopping_list.html:664 -#: cookbook/templates/shopping_list.html:673 -#: cookbook/templates/shopping_list.html:692 -#: cookbook/templates/url_import.html:308 -#: cookbook/templates/url_import.html:366 -#: cookbook/templates/url_import.html:384 -#: cookbook/templates/url_import.html:403 -msgid "There was an error loading a resource!" -msgstr "Es gab einen Fehler beim laden der Ressource!" - -#: cookbook/templates/forms/ingredients.html:15 +#: .\cookbook\templates\forms\ingredients.html:15 msgid "Edit Ingredients" msgstr "Zutaten Bearbeiten" -#: cookbook/templates/forms/ingredients.html:16 +#: .\cookbook\templates\forms\ingredients.html:16 msgid "" "\n" " The following form can be used if, accidentally, two (or more) units " @@ -851,126 +781,124 @@ msgstr "" "entsprechenden Rezepte.\n" " " -#: cookbook/templates/forms/ingredients.html:24 -#: cookbook/templates/stats.html:26 +#: .\cookbook\templates\forms\ingredients.html:24 +#: .\cookbook\templates\stats.html:26 msgid "Units" msgstr "Einheiten" -#: cookbook/templates/forms/ingredients.html:26 +#: .\cookbook\templates\forms\ingredients.html:26 msgid "Are you sure that you want to merge these two units?" msgstr "Bist du sicher diese beiden Einheiten zusammengeführt werden sollen ?" -#: cookbook/templates/forms/ingredients.html:31 -#: cookbook/templates/forms/ingredients.html:40 +#: .\cookbook\templates\forms\ingredients.html:31 +#: .\cookbook\templates\forms\ingredients.html:40 msgid "Merge" msgstr "Zusammenführen" -#: cookbook/templates/forms/ingredients.html:36 +#: .\cookbook\templates\forms\ingredients.html:36 msgid "Are you sure that you want to merge these two ingredients?" msgstr "Bist du sicher diese beiden Zutaten zusammengeführt werden sollen ?" -#: cookbook/templates/generic/delete_template.html:18 +#: .\cookbook\templates\generic\delete_template.html:18 #, fuzzy, python-format #| msgid "Are you sure you want to delete the %(title)s: %(object)s?" msgid "Are you sure you want to delete the %(title)s: %(object)s " msgstr "Bist du sicher das %(title)s: %(object)s gelöscht werden soll " -#: cookbook/templates/generic/delete_template.html:21 +#: .\cookbook\templates\generic\delete_template.html:21 msgid "Confirm" msgstr "Bestätigen" -#: cookbook/templates/generic/edit_template.html:30 +#: .\cookbook\templates\generic\edit_template.html:30 msgid "View" msgstr "Angucken" -#: cookbook/templates/generic/edit_template.html:34 +#: .\cookbook\templates\generic\edit_template.html:34 msgid "Delete original file" msgstr "Original löschen" -#: cookbook/templates/generic/list_template.html:6 -#: cookbook/templates/generic/list_template.html:12 +#: .\cookbook\templates\generic\list_template.html:6 +#: .\cookbook\templates\generic\list_template.html:12 msgid "List" msgstr "Liste" -#: cookbook/templates/generic/list_template.html:25 +#: .\cookbook\templates\generic\list_template.html:25 msgid "Filter" msgstr "Filter" -#: cookbook/templates/generic/list_template.html:30 +#: .\cookbook\templates\generic\list_template.html:30 msgid "Import all" msgstr "Alle importieren" -#: cookbook/templates/generic/new_template.html:6 -#: cookbook/templates/generic/new_template.html:14 -#: cookbook/templates/meal_plan.html:316 +#: .\cookbook\templates\generic\new_template.html:6 +#: .\cookbook\templates\generic\new_template.html:14 +#: .\cookbook\templates\meal_plan.html:325 msgid "New" msgstr "Neu" -#: cookbook/templates/generic/table_template.html:76 -#: cookbook/templates/recipes_table.html:112 +#: .\cookbook\templates\generic\table_template.html:76 +#: .\cookbook\templates\recipes_table.html:112 msgid "previous" msgstr "vorherige" -#: cookbook/templates/generic/table_template.html:98 -#: cookbook/templates/recipes_table.html:134 +#: .\cookbook\templates\generic\table_template.html:98 +#: .\cookbook\templates\recipes_table.html:134 msgid "next" msgstr "nächste" -#: cookbook/templates/history.html:20 +#: .\cookbook\templates\history.html:20 msgid "View Log" msgstr "Aufruf Log" -#: cookbook/templates/history.html:24 +#: .\cookbook\templates\history.html:24 msgid "Cook Log" msgstr "Koch Log" -#: cookbook/templates/import.html:6 +#: .\cookbook\templates\import.html:6 msgid "Import Recipes" msgstr "Importierte Rezepte" -#: cookbook/templates/import.html:14 cookbook/templates/url_import.html:203 -#: cookbook/views/delete.py:54 cookbook/views/edit.py:161 +#: .\cookbook\templates\import.html:14 +#: .\cookbook\templates\url_import.html:206 .\cookbook\views\delete.py:57 +#: .\cookbook\views\edit.py:181 msgid "Import" msgstr "Rezept Importieren" -#: cookbook/templates/include/log_cooking.html:7 +#: .\cookbook\templates\include\log_cooking.html:7 msgid "Log Recipe Cooking" msgstr "Kochen Protokollieren" -#: cookbook/templates/include/log_cooking.html:13 +#: .\cookbook\templates\include\log_cooking.html:13 msgid "All fields are optional and can be left empty." msgstr "Alle Felder sind optional und können leer gelassen werden." -#: cookbook/templates/include/log_cooking.html:16 -msgid "Servings" -msgstr "Portionen" - -#: cookbook/templates/include/log_cooking.html:19 +#: .\cookbook\templates\include\log_cooking.html:19 msgid "Rating" msgstr "Bewertung" -#: cookbook/templates/include/log_cooking.html:27 -#: cookbook/templates/include/recipe_open_modal.html:18 -#: cookbook/templates/meal_plan.html:276 cookbook/templates/meal_plan.html:320 -#: cookbook/templates/meal_plan.html:359 +#: .\cookbook\templates\include\log_cooking.html:27 +#: .\cookbook\templates\include\recipe_open_modal.html:18 +#: .\cookbook\templates\meal_plan.html:285 +#: .\cookbook\templates\meal_plan.html:329 +#: .\cookbook\templates\meal_plan.html:368 msgid "Close" msgstr "Schließen" -#: cookbook/templates/include/recipe_open_modal.html:7 -#: cookbook/templates/meal_plan.html:243 cookbook/views/delete.py:25 -#: cookbook/views/edit.py:227 cookbook/views/new.py:36 +#: .\cookbook\templates\include\recipe_open_modal.html:7 +#: .\cookbook\templates\meal_plan.html:249 .\cookbook\views\delete.py:27 +#: .\cookbook\views\edit.py:259 .\cookbook\views\new.py:40 msgid "Recipe" msgstr "Rezept" -#: cookbook/templates/include/recipe_open_modal.html:32 +#: .\cookbook\templates\include\recipe_open_modal.html:32 msgid "Open Recipe" msgstr "Rezept öffnen" -#: cookbook/templates/include/storage_backend_warning.html:4 +#: .\cookbook\templates\include\storage_backend_warning.html:4 msgid "Security Warning" msgstr "Sicherheitswarnung" -#: cookbook/templates/include/storage_backend_warning.html:5 +#: .\cookbook\templates\include\storage_backend_warning.html:5 msgid "" "\n" " The Password and Token field are stored as plain text " @@ -992,45 +920,45 @@ msgstr "" "oder Accounts mit limitiertem Zugriff verwendet werden.\n" " " -#: cookbook/templates/index.html:29 +#: .\cookbook\templates\index.html:29 msgid "Search recipe ..." msgstr "Suche Rezept ..." -#: cookbook/templates/index.html:44 +#: .\cookbook\templates\index.html:44 msgid "New Recipe" msgstr "Neues Rezept" -#: cookbook/templates/index.html:47 +#: .\cookbook\templates\index.html:47 msgid "Website Import" msgstr "Webseiten Import" -#: cookbook/templates/index.html:53 +#: .\cookbook\templates\index.html:53 msgid "Advanced Search" msgstr "Erweiterte Suche" -#: cookbook/templates/index.html:57 +#: .\cookbook\templates\index.html:57 msgid "Reset Search" msgstr "Suche zurücksetzen" -#: cookbook/templates/index.html:85 +#: .\cookbook\templates\index.html:85 msgid "Last viewed" msgstr "Zuletzt angesehen" -#: cookbook/templates/index.html:87 cookbook/templates/meal_plan.html:174 -#: cookbook/templates/stats.html:22 +#: .\cookbook\templates\index.html:87 .\cookbook\templates\meal_plan.html:180 +#: .\cookbook\templates\stats.html:22 msgid "Recipes" msgstr "Rezepte" -#: cookbook/templates/index.html:94 +#: .\cookbook\templates\index.html:94 msgid "Log in to view recipes" msgstr "Einloggen um Rezepte anzusehen" -#: cookbook/templates/markdown_info.html:5 -#: cookbook/templates/markdown_info.html:13 +#: .\cookbook\templates\markdown_info.html:5 +#: .\cookbook\templates\markdown_info.html:13 msgid "Markdown Info" msgstr "Markdown Info" -#: cookbook/templates/markdown_info.html:14 +#: .\cookbook\templates\markdown_info.html:14 msgid "" "\n" " Markdown is lightweight markup language that can be used to format " @@ -1054,44 +982,44 @@ msgstr "" "\">hier. Die wichtigsten Formatierungszeichen befinden sich auch hier " "auf dieser Seite." -#: cookbook/templates/markdown_info.html:25 +#: .\cookbook\templates\markdown_info.html:25 msgid "Headers" msgstr "Überschriften" -#: cookbook/templates/markdown_info.html:54 +#: .\cookbook\templates\markdown_info.html:54 msgid "Formatting" msgstr "Formatierung" -#: cookbook/templates/markdown_info.html:56 -#: cookbook/templates/markdown_info.html:72 +#: .\cookbook\templates\markdown_info.html:56 +#: .\cookbook\templates\markdown_info.html:72 msgid "Line breaks are inserted by adding two spaces after the end of a line" msgstr "Zeilenumbrüchen entstehen durch zwei Leerzeichen am ende einer Zeile" -#: cookbook/templates/markdown_info.html:57 -#: cookbook/templates/markdown_info.html:73 +#: .\cookbook\templates\markdown_info.html:57 +#: .\cookbook\templates\markdown_info.html:73 msgid "or by leaving a blank line inbetween." msgstr "oder durch eine leere Zeile dazwischen." -#: cookbook/templates/markdown_info.html:59 -#: cookbook/templates/markdown_info.html:74 +#: .\cookbook\templates\markdown_info.html:59 +#: .\cookbook\templates\markdown_info.html:74 msgid "This text is bold" msgstr "Dieser Text ist dick dargestellt" -#: cookbook/templates/markdown_info.html:60 -#: cookbook/templates/markdown_info.html:75 +#: .\cookbook\templates\markdown_info.html:60 +#: .\cookbook\templates\markdown_info.html:75 msgid "This text is italic" msgstr "Dieser Text ist kursiv dargestellt" -#: cookbook/templates/markdown_info.html:61 -#: cookbook/templates/markdown_info.html:77 +#: .\cookbook\templates\markdown_info.html:61 +#: .\cookbook\templates\markdown_info.html:77 msgid "Blockquotes are also possible" msgstr "Zitate sind auch möglich" -#: cookbook/templates/markdown_info.html:84 +#: .\cookbook\templates\markdown_info.html:84 msgid "Lists" msgstr "Listen" -#: cookbook/templates/markdown_info.html:85 +#: .\cookbook\templates\markdown_info.html:85 msgid "" "Lists can ordered or unorderd. It is important to leave a blank line " "before the list!" @@ -1099,39 +1027,39 @@ msgstr "" "Liste können sortiert oder unsortiert sein. Es ist wichtig das eine leere " "Zeile vor der Liste frei gelassen wird!" -#: cookbook/templates/markdown_info.html:87 -#: cookbook/templates/markdown_info.html:108 +#: .\cookbook\templates\markdown_info.html:87 +#: .\cookbook\templates\markdown_info.html:108 msgid "Ordered List" msgstr "Geordnete Liste" -#: cookbook/templates/markdown_info.html:89 -#: cookbook/templates/markdown_info.html:90 -#: cookbook/templates/markdown_info.html:91 -#: cookbook/templates/markdown_info.html:110 -#: cookbook/templates/markdown_info.html:111 -#: cookbook/templates/markdown_info.html:112 +#: .\cookbook\templates\markdown_info.html:89 +#: .\cookbook\templates\markdown_info.html:90 +#: .\cookbook\templates\markdown_info.html:91 +#: .\cookbook\templates\markdown_info.html:110 +#: .\cookbook\templates\markdown_info.html:111 +#: .\cookbook\templates\markdown_info.html:112 msgid "unordered list item" msgstr "Ungeordneter Listeneintrag" -#: cookbook/templates/markdown_info.html:93 -#: cookbook/templates/markdown_info.html:114 +#: .\cookbook\templates\markdown_info.html:93 +#: .\cookbook\templates\markdown_info.html:114 msgid "Unordered List" msgstr "Ungeordnete Liste" -#: cookbook/templates/markdown_info.html:95 -#: cookbook/templates/markdown_info.html:96 -#: cookbook/templates/markdown_info.html:97 -#: cookbook/templates/markdown_info.html:116 -#: cookbook/templates/markdown_info.html:117 -#: cookbook/templates/markdown_info.html:118 +#: .\cookbook\templates\markdown_info.html:95 +#: .\cookbook\templates\markdown_info.html:96 +#: .\cookbook\templates\markdown_info.html:97 +#: .\cookbook\templates\markdown_info.html:116 +#: .\cookbook\templates\markdown_info.html:117 +#: .\cookbook\templates\markdown_info.html:118 msgid "ordered list item" msgstr "Geordneter Listen Eintrag" -#: cookbook/templates/markdown_info.html:125 +#: .\cookbook\templates\markdown_info.html:125 msgid "Images & Links" msgstr "Bilder & Links" -#: cookbook/templates/markdown_info.html:126 +#: .\cookbook\templates\markdown_info.html:126 msgid "" "Links can be formatted with Markdown. This application also allows to paste " "links directly into markdown fields without any formatting." @@ -1139,60 +1067,65 @@ msgstr "" "Links können mit Markdown formatiert werden aber es ist auch möglich Links " "vollständig ohne Formatierung einzufügen." -#: cookbook/templates/markdown_info.html:132 -#: cookbook/templates/markdown_info.html:145 +#: .\cookbook\templates\markdown_info.html:132 +#: .\cookbook\templates\markdown_info.html:145 msgid "This will become an image" msgstr "Dieser Text hier wird ein Bild werden" -#: cookbook/templates/markdown_info.html:152 +#: .\cookbook\templates\markdown_info.html:152 msgid "Tables" msgstr "Tabellen" -#: cookbook/templates/markdown_info.html:153 +#: .\cookbook\templates\markdown_info.html:153 +#, fuzzy +#| msgid "" +#| "Markdown tables are hard to create by hand. It is recommended to use a " +#| "table editor like this one." msgid "" "Markdown tables are hard to create by hand. It is recommended to use a table " -"editor like this one." +"editor like this one." msgstr "" "Es ist schwierig Markdown Tabellen von Hand zu erstellen, daher bietet es " "sich an Werkzeuge wie dieses hier zu verwenden." -#: cookbook/templates/markdown_info.html:155 -#: cookbook/templates/markdown_info.html:157 -#: cookbook/templates/markdown_info.html:171 -#: cookbook/templates/markdown_info.html:177 +#: .\cookbook\templates\markdown_info.html:155 +#: .\cookbook\templates\markdown_info.html:157 +#: .\cookbook\templates\markdown_info.html:171 +#: .\cookbook\templates\markdown_info.html:177 msgid "Table" msgstr "Tabelle" -#: cookbook/templates/markdown_info.html:155 -#: cookbook/templates/markdown_info.html:172 +#: .\cookbook\templates\markdown_info.html:155 +#: .\cookbook\templates\markdown_info.html:172 msgid "Header" msgstr "Überschrift" -#: cookbook/templates/markdown_info.html:157 -#: cookbook/templates/markdown_info.html:178 +#: .\cookbook\templates\markdown_info.html:157 +#: .\cookbook\templates\markdown_info.html:178 msgid "Cell" msgstr "Zelle" -#: cookbook/templates/meal_plan.html:101 +#: .\cookbook\templates\meal_plan.html:103 msgid "New Entry" msgstr "Neuer Eintrag" -#: cookbook/templates/meal_plan.html:113 -#: cookbook/templates/shopping_list.html:48 +#: .\cookbook\templates\meal_plan.html:115 +#: .\cookbook\templates\shopping_list.html:48 msgid "Search Recipe" msgstr "Rezept Suchen" -#: cookbook/templates/meal_plan.html:135 cookbook/templates/meal_plan.html:640 +#: .\cookbook\templates\meal_plan.html:141 msgid "Title" msgstr "Titel" -#: cookbook/templates/meal_plan.html:137 +#: .\cookbook\templates\meal_plan.html:143 msgid "Note (optional)" msgstr "Notiz (optional)" -#: cookbook/templates/meal_plan.html:139 +#: .\cookbook\templates\meal_plan.html:145 msgid "" "You can use markdown to format this field. See the docs here" @@ -1200,42 +1133,45 @@ msgstr "" "Dieses Feld Unterstützt Markdown Formatierung. Siehe Dokumentation" -#: cookbook/templates/meal_plan.html:143 -msgid "Recipe Multiplier" -msgstr "Rezept Multiplikator" +#: .\cookbook\templates\meal_plan.html:149 +#: .\cookbook\templates\meal_plan.html:253 +#, fuzzy +#| msgid "Servings" +msgid "Serving Count" +msgstr "Portionen" -#: cookbook/templates/meal_plan.html:149 +#: .\cookbook\templates\meal_plan.html:155 msgid "Create only note" msgstr "Nur Notiz erstellen" -#: cookbook/templates/meal_plan.html:164 -#: cookbook/templates/shopping_list.html:7 -#: cookbook/templates/shopping_list.html:25 -#: cookbook/templates/shopping_list.html:533 +#: .\cookbook\templates\meal_plan.html:170 +#: .\cookbook\templates\shopping_list.html:7 +#: .\cookbook\templates\shopping_list.html:25 +#: .\cookbook\templates\shopping_list.html:535 msgid "Shopping List" msgstr "Einkaufsliste" -#: cookbook/templates/meal_plan.html:168 +#: .\cookbook\templates\meal_plan.html:174 msgid "Shopping list currently empty" msgstr "Einkaufsliste aktuell leer" -#: cookbook/templates/meal_plan.html:171 +#: .\cookbook\templates\meal_plan.html:177 msgid "Open Shopping List" msgstr "Einkaufsliste öffnen" -#: cookbook/templates/meal_plan.html:185 +#: .\cookbook\templates\meal_plan.html:191 msgid "Plan" msgstr "Plan" -#: cookbook/templates/meal_plan.html:192 +#: .\cookbook\templates\meal_plan.html:198 msgid "Number of Days" msgstr "Anzahl Tage" -#: cookbook/templates/meal_plan.html:202 +#: .\cookbook\templates\meal_plan.html:208 msgid "Weekday offset" msgstr "Wochentage verschieben" -#: cookbook/templates/meal_plan.html:205 +#: .\cookbook\templates\meal_plan.html:211 msgid "" "Number of days starting from the first day of the week to offset the default " "view." @@ -1243,45 +1179,80 @@ msgstr "" "Anzahl der Tage von ersten Tag der Woche die der Plan standardmäßig " "verschoben sein soll." -#: cookbook/templates/meal_plan.html:213 cookbook/templates/meal_plan.html:287 +#: .\cookbook\templates\meal_plan.html:219 +#: .\cookbook\templates\meal_plan.html:296 msgid "Edit plan types" msgstr "Plan Typen editieren" -#: cookbook/templates/meal_plan.html:215 +#: .\cookbook\templates\meal_plan.html:221 msgid "Show help" msgstr "Hilfe anzeigen" -#: cookbook/templates/meal_plan.html:216 +#: .\cookbook\templates\meal_plan.html:222 msgid "Week iCal export" msgstr "Woche als iCal exportieren" -#: cookbook/templates/meal_plan.html:257 -#: cookbook/templates/meal_plan_entry.html:18 +#: .\cookbook\templates\meal_plan.html:266 +#: .\cookbook\templates\meal_plan_entry.html:18 msgid "Created by" msgstr "Erstellt von" -#: cookbook/templates/meal_plan.html:263 -#: cookbook/templates/meal_plan_entry.html:20 +#: .\cookbook\templates\meal_plan.html:272 +#: .\cookbook\templates\meal_plan_entry.html:20 msgid "Shared with" msgstr "Geteilt mit" -#: cookbook/templates/meal_plan.html:273 cookbook/templates/recipe_view.html:43 +#: .\cookbook\templates\meal_plan.html:282 msgid "Add to Shopping" msgstr "Zur Einkaufsliste hinzufügen" -#: cookbook/templates/meal_plan.html:316 +#: .\cookbook\templates\meal_plan.html:325 msgid "New meal type" msgstr "Neue Mahlzeit" -#: cookbook/templates/meal_plan.html:331 +#: .\cookbook\templates\meal_plan.html:340 msgid "Meal Plan Help" msgstr "Plan Hilfe" -#: cookbook/templates/meal_plan.html:337 +#: .\cookbook\templates\meal_plan.html:346 +#, fuzzy +#| msgid "" +#| "\n" +#| "

The meal plan module allows planning of " +#| "meals both with recipes or just notes.

\n" +#| "

Simply select a recipe from the list of " +#| "recently viewed recipes or search the one you\n" +#| " want and drag it to the desired plan " +#| "position. You can also add a note and a title and\n" +#| " then drag the recipe to create a plan " +#| "entry with a custom title and note. Creating only\n" +#| " Notes is possible by dragging the create " +#| "note box into the plan.

\n" +#| "

Click on a recipe in order to open the " +#| "detail view. Here you can also add it to the\n" +#| " shopping list. You can also add all " +#| "recipes of a day to the shopping list by\n" +#| " clicking the shopping cart at the top of " +#| "the table.

\n" +#| "

Since a common use case is to plan meals " +#| "together you can define\n" +#| " users you want to share your plan with in " +#| "the settings.\n" +#| "

\n" +#| "

You can also edit the types of meals you " +#| "want to plan. If you share your plan with\n" +#| " someone with\n" +#| " different meals, their meal types will " +#| "appear in your list as well. To prevent\n" +#| " duplicates (e.g. Other and Misc.)\n" +#| " name your meal types the same as the " +#| "users you share your meals with and they will be\n" +#| " merged.

\n" +#| " " msgid "" "\n" "

The meal plan module allows planning of meals " -"both with recipes or just notes.

\n" +"both with recipes and notes.

\n" "

Simply select a recipe from the list of " "recently viewed recipes or search the one you\n" " want and drag it to the desired plan " @@ -1290,8 +1261,8 @@ msgid "" "with a custom title and note. Creating only\n" " Notes is possible by dragging the create " "note box into the plan.

\n" -"

Click on a recipe in order to open the detail " -"view. Here you can also add it to the\n" +"

Click on a recipe in order to open the " +"detailed view. There you can also add it to the\n" " shopping list. You can also add all recipes " "of a day to the shopping list by\n" " clicking the shopping cart at the top of the " @@ -1335,170 +1306,102 @@ msgstr "" "gleich benannt werden, dadurch kann das System sie zusammenfassen.

\n" " " -#: cookbook/templates/meal_plan.html:609 -msgid "" -"When deleting a meal type all entries using that type will be deleted as " -"well. Deletion will apply when configuration is saved. Do you want to " -"proceed?" -msgstr "" -"Wenn eine Mahlzeit gelöscht wird werden auch alle Einträge mit dieser " -"Mahlzeit gelöscht. Die Löschung wird erst aktiv wenn die Konfiguration " -"gespeichert wird. Fortfahren ?" - -#: cookbook/templates/meal_plan_entry.html:6 +#: .\cookbook\templates\meal_plan_entry.html:6 msgid "Meal Plan View" msgstr "Plan Ansicht" -#: cookbook/templates/meal_plan_entry.html:50 +#: .\cookbook\templates\meal_plan_entry.html:50 msgid "Never cooked before." msgstr "Noch nie gekocht." -#: cookbook/templates/meal_plan_entry.html:76 +#: .\cookbook\templates\meal_plan_entry.html:76 msgid "Other meals on this day" msgstr "Andere Mahlzeiten an diesem Tag" -#: cookbook/templates/recipe_view.html:40 -msgid "Add to Book" -msgstr "Zu Buch hinzufügen" - -#: cookbook/templates/recipe_view.html:46 -msgid "Add to Plan" -msgstr "Zum Plan hinzufügen" - -#: cookbook/templates/recipe_view.html:48 -#: cookbook/templates/recipes_table.html:81 -msgid "Log Cooking" -msgstr "Kochen Protokollieren" - -#: cookbook/templates/recipe_view.html:50 -msgid "Print" -msgstr "Drucken" - -#: cookbook/templates/recipe_view.html:55 -msgid "Share" -msgstr "Teilen" - -#: cookbook/templates/recipe_view.html:64 -msgid "in" -msgstr "in" - -#: cookbook/templates/recipe_view.html:82 -msgid "Preparation time ~" -msgstr "Vorbereitungs Zeit ~" - -#: cookbook/templates/recipe_view.html:88 -msgid "Waiting time ~" -msgstr "Wartezeit ~" - -#: cookbook/templates/recipe_view.html:206 -#: cookbook/templates/recipes_table.html:19 -#: cookbook/templates/recipes_table.html:23 -#: cookbook/templates/url_import.html:50 -msgid "Recipe Image" -msgstr "Rezept Bild" - -#: cookbook/templates/recipe_view.html:290 -msgid "Minutes" -msgstr "Minuten" - -#: cookbook/templates/recipe_view.html:393 -#: cookbook/templates/recipe_view.html:430 -msgid "View external recipe" -msgstr "Externes Rezept ansehen" - -#: cookbook/templates/recipe_view.html:408 -msgid "External recipe image" -msgstr "Externes Rezeptbild" - -#: cookbook/templates/recipe_view.html:415 -msgid "External recipe" -msgstr "Externes Rezept" - -#: cookbook/templates/recipe_view.html:417 -msgid "" -"\n" -" This is an external recipe, which means " -"you can only view it by opening the link\n" -" above.\n" -" You can convert this recipe to a fancy " -"recipe by pressing the convert button. The\n" -" original\n" -" file\n" -" will still be accessible.\n" -" " +#: .\cookbook\templates\offline.html:5 +msgid "Offline" msgstr "" -"\n" -" Dies ist ein externes Rezept. Das bedeutet das es " -"nur durch klicken auf den link geöffnet werden kann.\n" -" Das Rezept kann durch drücken des Umwandeln Knopfes " -"in ein schickes lokales Rezept verwandelt werden. Die originale Datei " -"bleibt weiterhin verfügbar.\n" -" " -#: cookbook/templates/recipe_view.html:428 -msgid "Convert now!" -msgstr "Jetzt umwandeln!" +#: .\cookbook\templates\offline.html:18 +msgid "You are currently offline!" +msgstr "" -#: cookbook/templates/recipe_view.html:446 cookbook/templates/stats.html:47 +#: .\cookbook\templates\offline.html:19 +msgid "" +"This app does not (yet) support offline functionality. Please make sure to " +"re-establish a network connection." +msgstr "" + +#: .\cookbook\templates\recipe_view.html:21 .\cookbook\templates\stats.html:47 msgid "Comments" msgstr "Kommentare" -#: cookbook/templates/recipe_view.html:469 cookbook/views/delete.py:108 -#: cookbook/views/edit.py:143 +#: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:115 +#: .\cookbook\views\edit.py:161 msgid "Comment" msgstr "Kommentar" -#: cookbook/templates/recipes_table.html:46 -#: cookbook/templates/url_import.html:55 +#: .\cookbook\templates\recipes_table.html:19 +#: .\cookbook\templates\recipes_table.html:23 +#: .\cookbook\templates\url_import.html:50 +msgid "Recipe Image" +msgstr "Rezept Bild" + +#: .\cookbook\templates\recipes_table.html:46 +#: .\cookbook\templates\url_import.html:55 msgid "Preparation time ca." msgstr "Zubereitungszeit ca." -#: cookbook/templates/recipes_table.html:52 -#: cookbook/templates/url_import.html:60 +#: .\cookbook\templates\recipes_table.html:52 +#: .\cookbook\templates\url_import.html:60 msgid "Waiting time ca." msgstr "Wartezeit ca." -#: cookbook/templates/recipes_table.html:55 +#: .\cookbook\templates\recipes_table.html:55 msgid "External" msgstr "Extern" -#: cookbook/templates/registration/login.html:10 +#: .\cookbook\templates\recipes_table.html:81 +msgid "Log Cooking" +msgstr "Kochen Protokollieren" + +#: .\cookbook\templates\registration\login.html:10 msgid "Your username and password didn't match. Please try again." msgstr "Nutzername oder Passwort falsch. Bitte versuch es erneut." -#: cookbook/templates/registration/signup.html:5 +#: .\cookbook\templates\registration\signup.html:5 msgid "Register" msgstr "Registrieren" -#: cookbook/templates/registration/signup.html:9 +#: .\cookbook\templates\registration\signup.html:9 msgid "Create your Account" msgstr "Account erstellen" -#: cookbook/templates/registration/signup.html:14 +#: .\cookbook\templates\registration\signup.html:14 msgid "Create User" msgstr "Nutzer erstellen" -#: cookbook/templates/rest_framework/api.html:5 +#: .\cookbook\templates\rest_framework\api.html:5 msgid "Recipe Home" msgstr "Rezept Hauptseite" -#: cookbook/templates/settings.html:22 +#: .\cookbook\templates\settings.html:22 msgid "Account" msgstr "Account" -#: cookbook/templates/settings.html:41 +#: .\cookbook\templates\settings.html:41 msgid "Language" msgstr "Sprache" -#: cookbook/templates/settings.html:66 +#: .\cookbook\templates\settings.html:66 msgid "Style" msgstr "Stil" -#: cookbook/templates/settings.html:78 +#: .\cookbook\templates\settings.html:78 msgid "API Token" msgstr "API Token" -#: cookbook/templates/settings.html:79 +#: .\cookbook\templates\settings.html:79 msgid "" "You can use both basic authentication and token based authentication to " "access the REST API." @@ -1506,7 +1409,7 @@ msgstr "" "Sowohl basic auth als auch token basierte Authentifizierung können für die " "REST API verwendet werden." -#: cookbook/templates/settings.html:91 +#: .\cookbook\templates\settings.html:91 msgid "" "Use the token as an Authorization header prefixed by the word token as shown " "in the following examples:" @@ -1514,127 +1417,114 @@ msgstr "" "Benutzt das Token als Authorization header mit dem präfix token wie in " "folgendem Beispiel:" -#: cookbook/templates/settings.html:93 +#: .\cookbook\templates\settings.html:93 msgid "or" msgstr "oder" -#: cookbook/templates/setup.html:6 cookbook/templates/system.html:5 +#: .\cookbook\templates\setup.html:6 .\cookbook\templates\system.html:5 msgid "Cookbook Setup" msgstr "Kochbuch Setup" -#: cookbook/templates/setup.html:14 +#: .\cookbook\templates\setup.html:14 msgid "Setup" msgstr "Setup" -#: cookbook/templates/setup.html:15 -msgid "To start using this application you must first create a superuser account." +#: .\cookbook\templates\setup.html:15 +msgid "" +"To start using this application you must first create a superuser account." msgstr "" "Um diese Anwendung zu Benutzen muss zunächst ein Administrator erstellt " "werden." -#: cookbook/templates/setup.html:20 +#: .\cookbook\templates\setup.html:20 msgid "Create Superuser account" msgstr "Administrator Erstellen" -#: cookbook/templates/shopping_list.html:71 +#: .\cookbook\templates\shopping_list.html:71 msgid "Shopping Recipes" msgstr "Einkaufs Rezepte" -#: cookbook/templates/shopping_list.html:75 +#: .\cookbook\templates\shopping_list.html:75 msgid "No recipes selected" msgstr "Keine Rezepte ausgewählt" -#: cookbook/templates/shopping_list.html:135 +#: .\cookbook\templates\shopping_list.html:135 msgid "Amount" msgstr "Menge" -#: cookbook/templates/shopping_list.html:196 +#: .\cookbook\templates\shopping_list.html:196 msgid "Finished" msgstr "Erledigt" -#: cookbook/templates/shopping_list.html:213 +#: .\cookbook\templates\shopping_list.html:213 msgid "Select User" msgstr "Nutzer Auswählen" -#: cookbook/templates/shopping_list.html:232 +#: .\cookbook\templates\shopping_list.html:232 msgid "You are offline, shopping list might not syncronize." msgstr "Du bist offline, die Einkaufsliste aktualisiert möglicherweise nicht." -#: cookbook/templates/shopping_list.html:280 +#: .\cookbook\templates\shopping_list.html:280 msgid "Copy/Export" msgstr "Kopieren/Exportieren" -#: cookbook/templates/shopping_list.html:284 +#: .\cookbook\templates\shopping_list.html:284 msgid "List Prefix" msgstr "Listen Präfix" -#: cookbook/templates/shopping_list.html:516 -#: cookbook/templates/shopping_list.html:547 -#: cookbook/templates/shopping_list.html:570 -msgid "There was an error updating a resource!" -msgstr "Es gab einen Fehler beim aktualisieren der Ressource!" - -#: cookbook/templates/shopping_list.html:527 -msgid "Object created successfully!" -msgstr "Objekt erfolgreich erstellt!" - -#: cookbook/templates/shopping_list.html:536 +#: .\cookbook\templates\shopping_list.html:538 msgid "There was an error creating a resource!" msgstr "Es gab einen Fehler beim erstellen einer Ressource!" -#: cookbook/templates/shopping_list.html:596 -msgid "Please enter a valid food" -msgstr "Bitte ein gültiges Lebensmittel eingeben" - -#: cookbook/templates/stats.html:4 +#: .\cookbook\templates\stats.html:4 msgid "Stats" msgstr "Statistiken" -#: cookbook/templates/stats.html:19 +#: .\cookbook\templates\stats.html:19 msgid "Number of objects" msgstr "Anzahl der Objekte" -#: cookbook/templates/stats.html:30 +#: .\cookbook\templates\stats.html:30 msgid "Recipe Imports" msgstr "Rezept Importe" -#: cookbook/templates/stats.html:38 +#: .\cookbook\templates\stats.html:38 msgid "Objects stats" msgstr "Objekt Statistiken" -#: cookbook/templates/stats.html:41 +#: .\cookbook\templates\stats.html:41 msgid "Recipes without Keywords" msgstr "Rezepte ohne Schlagwort" -#: cookbook/templates/stats.html:43 +#: .\cookbook\templates\stats.html:43 msgid "External Recipes" msgstr "Externe Rezepte" -#: cookbook/templates/stats.html:45 +#: .\cookbook\templates\stats.html:45 msgid "Internal Recipes" msgstr "Interne Rezepte" -#: cookbook/templates/system.html:21 cookbook/views/lists.py:74 +#: .\cookbook\templates\system.html:21 .\cookbook\views\lists.py:128 msgid "Invite Links" msgstr "Einladungs Link" -#: cookbook/templates/system.html:22 +#: .\cookbook\templates\system.html:22 msgid "Show Links" msgstr "Links anzeigen" -#: cookbook/templates/system.html:26 +#: .\cookbook\templates\system.html:27 msgid "Backup & Restore" msgstr "Backup & Wiederherstellung" -#: cookbook/templates/system.html:27 +#: .\cookbook\templates\system.html:28 msgid "Download Backup" msgstr "Backup herunterladen" -#: cookbook/templates/system.html:37 +#: .\cookbook\templates\system.html:49 msgid "System Information" msgstr "System Information" -#: cookbook/templates/system.html:39 +#: .\cookbook\templates\system.html:51 msgid "" "\n" " Django Recipes is an open source free software application. It can " @@ -1652,21 +1542,21 @@ msgstr "" "github.com/vabene1111/recipes/releases\">hier.\n" " " -#: cookbook/templates/system.html:53 +#: .\cookbook\templates\system.html:65 msgid "Media Serving" msgstr "Media Serving" -#: cookbook/templates/system.html:54 cookbook/templates/system.html:69 -#: cookbook/templates/system.html:85 +#: .\cookbook\templates\system.html:66 .\cookbook\templates\system.html:81 +#: .\cookbook\templates\system.html:97 msgid "Warning" msgstr "Warnung" -#: cookbook/templates/system.html:54 cookbook/templates/system.html:69 -#: cookbook/templates/system.html:85 cookbook/templates/system.html:100 +#: .\cookbook\templates\system.html:66 .\cookbook\templates\system.html:81 +#: .\cookbook\templates\system.html:97 .\cookbook\templates\system.html:112 msgid "Ok" msgstr "Ok" -#: cookbook/templates/system.html:56 +#: .\cookbook\templates\system.html:68 msgid "" "Serving media files directly using gunicorn/python is not recommend!\n" " Please follow the steps described\n" @@ -1682,16 +1572,16 @@ msgstr "" " your installation.\n" " " -#: cookbook/templates/system.html:62 cookbook/templates/system.html:78 -#: cookbook/templates/system.html:93 cookbook/templates/system.html:107 +#: .\cookbook\templates\system.html:74 .\cookbook\templates\system.html:90 +#: .\cookbook\templates\system.html:105 .\cookbook\templates\system.html:119 msgid "Everything is fine!" msgstr "Alles ok!" -#: cookbook/templates/system.html:67 +#: .\cookbook\templates\system.html:79 msgid "Secret Key" msgstr "Secret Key" -#: cookbook/templates/system.html:71 +#: .\cookbook\templates\system.html:83 msgid "" "\n" " You do not have a SECRET_KEY configured in your " @@ -1713,11 +1603,11 @@ msgstr "" "file.\n" " " -#: cookbook/templates/system.html:83 +#: .\cookbook\templates\system.html:95 msgid "Debug Mode" msgstr "Debug Mode" -#: cookbook/templates/system.html:87 +#: .\cookbook\templates\system.html:99 msgid "" "\n" " This application is still running in debug mode. This is most " @@ -1735,15 +1625,15 @@ msgstr "" "file.\n" " " -#: cookbook/templates/system.html:98 +#: .\cookbook\templates\system.html:110 msgid "Database" msgstr "Datenbank" -#: cookbook/templates/system.html:100 +#: .\cookbook\templates\system.html:112 msgid "Info" msgstr "Information" -#: cookbook/templates/system.html:102 +#: .\cookbook\templates\system.html:114 msgid "" "\n" " This application is not running with a Postgres database " @@ -1757,36 +1647,37 @@ msgstr "" " features only work with postgres databases.\n" " " -#: cookbook/templates/url_import.html:5 +#: .\cookbook\templates\url_import.html:5 msgid "URL Import" msgstr "URL Import" -#: cookbook/templates/url_import.html:23 +#: .\cookbook\templates\url_import.html:23 msgid "Enter website URL" msgstr "Webseiten URL eingeben" -#: cookbook/templates/url_import.html:44 +#: .\cookbook\templates\url_import.html:44 msgid "Recipe Name" msgstr "Rezept Name" -#: cookbook/templates/url_import.html:99 cookbook/templates/url_import.html:131 -#: cookbook/templates/url_import.html:186 +#: .\cookbook\templates\url_import.html:99 +#: .\cookbook\templates\url_import.html:131 +#: .\cookbook\templates\url_import.html:187 msgid "Select one" msgstr "Auswählen" -#: cookbook/templates/url_import.html:197 +#: .\cookbook\templates\url_import.html:198 msgid "All Keywords" msgstr "Alle Schlagwörter" -#: cookbook/templates/url_import.html:199 +#: .\cookbook\templates\url_import.html:201 msgid "Import all keywords, not only the ones already existing." msgstr "Importiert alle Schlagwörter, nicht nur die die bereits existieren." -#: cookbook/templates/url_import.html:225 +#: .\cookbook\templates\url_import.html:228 msgid "Information" msgstr "Information" -#: cookbook/templates/url_import.html:227 +#: .\cookbook\templates\url_import.html:230 msgid "" " Only websites containing ld+json or microdata information can currently\n" " be imported. Most big recipe pages " @@ -1801,52 +1692,44 @@ msgstr "" "importiert werden kann sie aber strukturierte Daten aufweist kann ein GitHub " "Issue geöffnet werden." -#: cookbook/templates/url_import.html:235 +#: .\cookbook\templates\url_import.html:238 msgid "Google ld+json Info" msgstr "Google ld+json Informationen" -#: cookbook/templates/url_import.html:238 +#: .\cookbook\templates\url_import.html:241 msgid "GitHub Issues" msgstr "GitHub Issues" -#: cookbook/templates/url_import.html:240 +#: .\cookbook\templates\url_import.html:243 msgid "Recipe Markup Specification" msgstr "Recipe Markup Spezifikation" -#: cookbook/templates/url_import.html:313 -msgid "Already importing the selected recipe, please wait!" -msgstr "Das Rezept wird bereits importiert, bitte warten!" - -#: cookbook/templates/url_import.html:322 -msgid "An error occurred while trying to import this recipe!" -msgstr "Beim importieren der Webseite ist ein Fehler aufgetreten!" - -#: cookbook/views/api.py:58 +#: .\cookbook\views\api.py:75 msgid "Parameter filter_list incorrectly formatted" msgstr "Parameter filter_list incorrectly formatted" -#: cookbook/views/api.py:70 +#: .\cookbook\views\api.py:88 msgid "Preference for given user already exists" msgstr "Preference for given user already exists" -#: cookbook/views/api.py:349 +#: .\cookbook\views\api.py:395 msgid "Sync successful!" msgstr "Synchronisation erfolgreich!" -#: cookbook/views/api.py:352 +#: .\cookbook\views\api.py:400 msgid "Error synchronizing with Storage" msgstr "Fehler beim Synchronisieren" -#: cookbook/views/api.py:410 +#: .\cookbook\views\api.py:466 msgid "The requested page could not be found." msgstr "Die Angefragte Seite konnte nicht gefunden werden." -#: cookbook/views/api.py:413 +#: .\cookbook\views\api.py:475 msgid "" "The requested page refused to provide any information (Status Code 403)." msgstr "Die angefragte Seite hat die Anfrage abgelehnt (Status Code 403)." -#: cookbook/views/data.py:83 +#: .\cookbook\views\data.py:101 #, python-format msgid "Batch edit done. %(count)d recipe was updated." msgid_plural "Batch edit done. %(count)d Recipes where updated." @@ -1854,84 +1737,88 @@ msgstr[0] "Massenbearbeitung erfolgreich. %(count)d Rezept wurde aktualisiert." msgstr[1] "" "Massenbearbeitung erfolgreich. %(count)d Rezepte wurden aktualisiert." -#: cookbook/views/delete.py:66 +#: .\cookbook\views\delete.py:69 msgid "Monitor" msgstr "Monitor" -#: cookbook/views/delete.py:90 cookbook/views/lists.py:66 -#: cookbook/views/new.py:75 +#: .\cookbook\views\delete.py:93 .\cookbook\views\lists.py:109 +#: .\cookbook\views\new.py:83 msgid "Storage Backend" msgstr "Speicher Quelle" -#: cookbook/views/delete.py:97 +#: .\cookbook\views\delete.py:103 msgid "" "Could not delete this storage backend as it is used in at least one monitor." msgstr "" "Speicherquelle konnte nicht gelöscht werden da sie in mindestens einem " "Monitor verwendet wird." -#: cookbook/views/delete.py:119 cookbook/views/edit.py:175 -#: cookbook/views/new.py:125 +#: .\cookbook\views\delete.py:126 .\cookbook\views\edit.py:195 +#: .\cookbook\views\new.py:144 msgid "Recipe Book" msgstr "Rezeptbuch" -#: cookbook/views/delete.py:138 +#: .\cookbook\views\delete.py:151 msgid "Bookmarks" msgstr "Lesezeichen" -#: cookbook/views/delete.py:160 cookbook/views/new.py:181 +#: .\cookbook\views\delete.py:173 .\cookbook\views\new.py:214 msgid "Invite Link" msgstr "Einladungslink" -#: cookbook/views/edit.py:93 +#: .\cookbook\views\edit.py:99 msgid "Food" msgstr "Lebensmittel" -#: cookbook/views/edit.py:102 +#: .\cookbook\views\edit.py:109 msgid "You cannot edit this storage!" msgstr "Du kannst diese Speicherquelle nicht bearbeiten!" -#: cookbook/views/edit.py:121 +#: .\cookbook\views\edit.py:130 msgid "Storage saved!" msgstr "Speicherquelle gespeichert!" -#: cookbook/views/edit.py:123 +#: .\cookbook\views\edit.py:136 msgid "There was an error updating this storage backend!" msgstr "Es gab einen Fehler beim aktualisierung dieser Speicher Quelle!" -#: cookbook/views/edit.py:130 +#: .\cookbook\views\edit.py:147 msgid "Storage" msgstr "Speicher" -#: cookbook/views/edit.py:215 +#: .\cookbook\views\edit.py:242 msgid "Changes saved!" msgstr "Änderungen gespeichert!" -#: cookbook/views/edit.py:219 +#: .\cookbook\views\edit.py:250 msgid "Error saving changes!" msgstr "Fehler beim Speichern der Daten!" -#: cookbook/views/edit.py:249 +#: .\cookbook\views\edit.py:286 msgid "Units merged!" msgstr "Einheiten zusammengeführt!" -#: cookbook/views/edit.py:262 +#: .\cookbook\views\edit.py:292 .\cookbook\views\edit.py:314 +msgid "Cannot merge with the same object!" +msgstr "" + +#: .\cookbook\views\edit.py:308 msgid "Foods merged!" msgstr "Lebensmittel vereint" -#: cookbook/views/import_export.py:42 +#: .\cookbook\views\import_export.py:52 msgid "Recipe imported successfully!" msgstr "Rezept erfolgreich importiert!" -#: cookbook/views/import_export.py:45 +#: .\cookbook\views\import_export.py:61 msgid "Something went wrong during the import!" msgstr "Beim Import ist etwas schief gegangen!" -#: cookbook/views/import_export.py:48 +#: .\cookbook\views\import_export.py:70 msgid "Could not parse the supplied JSON!" msgstr "Das JSON konnte nicht gelesen werden!" -#: cookbook/views/import_export.py:79 +#: .\cookbook\views\import_export.py:106 msgid "" "External recipes cannot be exported, please share the file directly or " "select an internal recipe." @@ -1939,40 +1826,44 @@ msgstr "" "Externe Rezepte können nicht exportiert werden, bitte Datei direkt teilen " "oder ein Internes Rezept auswählen." -#: cookbook/views/lists.py:29 +#: .\cookbook\views\lists.py:42 msgid "Import Log" msgstr "Import Log" -#: cookbook/views/lists.py:38 +#: .\cookbook\views\lists.py:55 msgid "Discovery" msgstr "Entdeckung" -#: cookbook/views/lists.py:58 +#: .\cookbook\views\lists.py:92 msgid "Shopping Lists" msgstr "Einkaufslisten" -#: cookbook/views/new.py:98 +#: .\cookbook\views\new.py:107 msgid "Imported new recipe!" msgstr "Importier neue Rezepte!" -#: cookbook/views/new.py:101 +#: .\cookbook\views\new.py:114 msgid "There was an error importing this recipe!" msgstr "Beim importieren des Rezeptes ist ein Fehler aufgetreten!" -#: cookbook/views/views.py:86 +#: .\cookbook\views\views.py:111 msgid "You do not have the required permissions to perform this action!" msgstr "" "Sie haben nicht die notwendigen Berechtigungen um diese Aktion durchzuführen!" -#: cookbook/views/views.py:98 +#: .\cookbook\views\views.py:130 msgid "Comment saved!" msgstr "Kommentar gespeichert!" -#: cookbook/views/views.py:108 +#: .\cookbook\views\views.py:146 +msgid "This recipe is already linked to the book!" +msgstr "" + +#: .\cookbook\views\views.py:152 msgid "Bookmark saved!" msgstr "Lesezeichen gespeichert!" -#: cookbook/views/views.py:255 +#: .\cookbook\views\views.py:378 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " @@ -1981,22 +1872,132 @@ msgstr "" "Die Setup Seite kann nur für den ersten Nutzer verwendet werden. Zum " "zurücksetzen von Passwörtern bitte der Django Dokumentation folgen." -#: cookbook/views/views.py:262 cookbook/views/views.py:302 +#: .\cookbook\views\views.py:386 .\cookbook\views\views.py:434 msgid "Passwords dont match!" msgstr "Passwörter stimmen nicht überein!" -#: cookbook/views/views.py:273 cookbook/views/views.py:311 +#: .\cookbook\views\views.py:400 .\cookbook\views\views.py:448 msgid "User has been created, please login!" msgstr "Benutzer wurde erstellt, bitte einloggen!" -#: cookbook/views/views.py:288 +#: .\cookbook\views\views.py:417 msgid "Malformed Invite Link supplied!" msgstr "Fehlerhaften Einladungslink angegeben!" -#: cookbook/views/views.py:328 +#: .\cookbook\views\views.py:469 msgid "Invite Link not valid or already used!" msgstr "Einladungslink ungültig oder bereits genutzt!" +#~ msgid "Scaling factor for recipe." +#~ msgstr "Skalierungsfaktor für das Rezept." + +#~ msgid "Error" +#~ msgstr "Fehler" + +#~ msgid "There was an error loading the recipe!" +#~ msgstr "Es gab einen Fehler beim Laden des Rezepts!" + +#~ msgid "Updated" +#~ msgstr "Aktualisiert" + +#~ msgid "Changes saved successfully!" +#~ msgstr "Änderungen erfolgreich gespeichert!" + +#~ msgid "There was an error updating the recipe!" +#~ msgstr "Es gab einen Fehler beim aktualisieren des Rezepts!" + +#~ msgid "Are you sure that you want to delete this ingredient?" +#~ msgstr "Bist du sicher das du diese Zutat löschen willst?" + +#~ msgid "Are you sure that you want to delete this step?" +#~ msgstr "Soll dieser Schritt wirklich gelöscht werden?" + +#~ msgid "There was an error loading a resource!" +#~ msgstr "Es gab einen Fehler beim laden der Ressource!" + +#~ msgid "Recipe Multiplier" +#~ msgstr "Rezept Multiplikator" + +#~ msgid "" +#~ "When deleting a meal type all entries using that type will be deleted as " +#~ "well. Deletion will apply when configuration is saved. Do you want to " +#~ "proceed?" +#~ msgstr "" +#~ "Wenn eine Mahlzeit gelöscht wird werden auch alle Einträge mit dieser " +#~ "Mahlzeit gelöscht. Die Löschung wird erst aktiv wenn die Konfiguration " +#~ "gespeichert wird. Fortfahren ?" + +#~ msgid "Add to Book" +#~ msgstr "Zu Buch hinzufügen" + +#~ msgid "Add to Plan" +#~ msgstr "Zum Plan hinzufügen" + +#~ msgid "Print" +#~ msgstr "Drucken" + +#~ msgid "Share" +#~ msgstr "Teilen" + +#~ msgid "in" +#~ msgstr "in" + +#~ msgid "Preparation time ~" +#~ msgstr "Vorbereitungs Zeit ~" + +#~ msgid "Waiting time ~" +#~ msgstr "Wartezeit ~" + +#~ msgid "Minutes" +#~ msgstr "Minuten" + +#~ msgid "View external recipe" +#~ msgstr "Externes Rezept ansehen" + +#~ msgid "External recipe image" +#~ msgstr "Externes Rezeptbild" + +#~ msgid "External recipe" +#~ msgstr "Externes Rezept" + +#~ msgid "" +#~ "\n" +#~ " This is an external recipe, which " +#~ "means you can only view it by opening the link\n" +#~ " above.\n" +#~ " You can convert this recipe to a " +#~ "fancy recipe by pressing the convert button. The\n" +#~ " original\n" +#~ " file\n" +#~ " will still be accessible.\n" +#~ " " +#~ msgstr "" +#~ "\n" +#~ " Dies ist ein externes Rezept. Das bedeutet das es " +#~ "nur durch klicken auf den link geöffnet werden kann.\n" +#~ " Das Rezept kann durch drücken des Umwandeln " +#~ "Knopfes in ein schickes lokales Rezept verwandelt werden. Die originale " +#~ "Datei bleibt weiterhin verfügbar.\n" +#~ " " + +#~ msgid "Convert now!" +#~ msgstr "Jetzt umwandeln!" + +#~ msgid "There was an error updating a resource!" +#~ msgstr "Es gab einen Fehler beim aktualisieren der Ressource!" + +#~ msgid "Object created successfully!" +#~ msgstr "Objekt erfolgreich erstellt!" + +#~ msgid "Please enter a valid food" +#~ msgstr "Bitte ein gültiges Lebensmittel eingeben" + +#~ msgid "Already importing the selected recipe, please wait!" +#~ msgstr "Das Rezept wird bereits importiert, bitte warten!" + +#~ msgid "An error occurred while trying to import this recipe!" +#~ msgstr "Beim importieren der Webseite ist ein Fehler aufgetreten!" + #~ msgid "Default user to share newly created meal plan entries with." #~ msgstr "" #~ "Standardbenutzer, mit denen neue Einträge in der Mahlzeitenplanung " diff --git a/cookbook/locale/it/LC_MESSAGES/django.mo b/cookbook/locale/it/LC_MESSAGES/django.mo index 2a197d0e5..12d1dd1fb 100644 Binary files a/cookbook/locale/it/LC_MESSAGES/django.mo and b/cookbook/locale/it/LC_MESSAGES/django.mo differ diff --git a/cookbook/static/vue/js/recipe_view.js b/cookbook/static/vue/js/recipe_view.js index c232e8005..909449a16 100644 --- a/cookbook/static/vue/js/recipe_view.js +++ b/cookbook/static/vue/js/recipe_view.js @@ -1 +1 @@ -(function(e){function t(t){for(var i,n,c=t[0],o=t[1],l=t[2],p=0,f=[];p0?s("div",{staticClass:"col-md-6 order-md-1 col-sm-12 order-sm-2 col-12 order-2",staticStyle:{"margin-top":"2vh"}},[s("div",{staticClass:"card border-primary"},[s("div",{staticClass:"card-body"},[s("div",{staticClass:"row"},[s("div",{staticClass:"col col-md-8"},[s("h4",{staticClass:"card-title"},[s("i",{staticClass:"fas fa-pepper-hot"}),e._v(" "+e._s(e._("Ingredients")))])])]),s("br"),s("div",{staticClass:"row"},[s("div",{staticClass:"col-md-12"},[s("table",{staticClass:"table table-sm"},[e._l(e.recipe.steps,(function(t){return[e._l(t.ingredients,(function(t){return[s("Ingredient",{key:t.id,attrs:{ingredient:t,ingredient_factor:e.ingredient_factor},on:{"checked-state-changed":e.updateIngredientCheckedState}})]}))]}))],2)])])])])]):e._e(),s("div",{staticClass:"col-12 order-1 col-sm-12 order-sm-1 col-md-6 order-md-2"},[s("div",{staticClass:"row"},[s("div",{staticClass:"col-12"},[null!==e.recipe.image?s("img",{staticClass:"img img-fluid rounded",staticStyle:{"max-height":"30vh"},attrs:{src:e.recipe.image,alt:e._("Recipe Image")}}):e._e()])]),s("div",{staticClass:"row",staticStyle:{"margin-top":"2vh"}},[s("div",{staticClass:"col-12"},[s("Nutrition",{attrs:{recipe:e.recipe,ingredient_factor:e.ingredient_factor}})],1)])])]),e.recipe.internal?e._e():[e.recipe.file_path.includes(".pdf")?s("div",[s("PdfViewer",{attrs:{recipe:e.recipe}})],1):e._e(),e.recipe.file_path.includes(".png")||e.recipe.file_path.includes(".jpg")||e.recipe.file_path.includes(".jpeg")?s("div",[s("ImageViewer",{attrs:{recipe:e.recipe}})],1):e._e()],e._l(e.recipe.steps,(function(t,i){return s("div",{key:t.id,staticStyle:{"margin-top":"1vh"}},[s("Step",{attrs:{recipe:e.recipe,step:t,ingredient_factor:e.ingredient_factor,index:i,start_time:e.start_time},on:{"update-start-time":e.updateStartTime,"checked-state-changed":e.updateIngredientCheckedState}})],1)}))],2)],2)},r=[function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"my-auto",staticStyle:{"padding-right":"4px"}},[s("i",{staticClass:"fas fa-user-clock fa-2x text-primary"})])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"my-auto",staticStyle:{"padding-right":"4px"}},[s("i",{staticClass:"far fa-clock fa-2x text-primary"})])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"my-auto",staticStyle:{"padding-right":"4px"}},[s("i",{staticClass:"fas fa-pizza-slice fa-2x text-primary"})])}],n=s("b85c"),c=s("5f5b"),o=(s("2dd8"),s("bc3a")),l=s.n(o),d=(s("99af"),s("59e4"));function p(e,t,s){var i=Math.floor(e),a=1,r=i+1,n=1;if(e!==i)while(a<=t&&n<=t){var c=(i+r)/(a+n);if(e===c){a+n<=t?(a+=n,i+=r,n=t+1):a>n?n=t+1:a=t+1;break}et&&(a=n,i=r),!s)return[0,i,a];var o=Math.floor(i/a);return[o,i-o*a,a]}var f={methods:{makeToast:function(e,t){var s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return u(e,t,s)}}};function u(e,t){var s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=new d["a"];i.$bvToast.toast(t,{title:e,variant:s,toaster:"b-toaster-top-center",solid:!0})}var m={methods:{_:function(e){return _(e)}}};function _(e){return window.gettext(e)}var v={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return g(e,t)}}};function g(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function b(e){return window.USER_PREF[e]}function h(e,t){if(b("user_fractions")){var s="",i=p.cont(e*t,9,!0);return i[0]>0&&(s+=i[0]),i[1]>0&&(s+=" ".concat(i[1],"").concat(i[2],"")),s}return j(e*t)}function j(e){var t=b("user_fractions")?b("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}function y(e){var t=g("api:recipe-detail",e);return void 0!==window.SHARE_UID&&(t+="?share="+window.SHARE_UID),l.a.get(t).then((function(e){return e.data})).catch((function(e){w(e,"There was an error loading a resource!","danger")}))}function C(e){return l.a.post(g("api:cooklog-list"),e).then((function(e){console.log(e),u("Saved","Cook Log entry saved!","success")})).catch((function(e){w(e,"There was an error creating a resource!","danger")}))}function w(e,t){if("response"in e){console.log(e.response);var s="statusText"in e.response?e.response.statusText:_("Error");t+="\n\n"+JSON.stringify(e.response.data),u(s,t,"danger")}else u("Error",t,"danger"),console.log(e)}l.a.defaults.xsrfCookieName="csrftoken",l.a.defaults.xsrfHeaderName="X-CSRFTOKEN";var k=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",[s("hr"),"TEXT"===e.step.type?[e.recipe.steps.length>1?s("div",{staticClass:"row"},[s("div",{staticClass:"col col-md4"},[s("h5",{staticClass:"text-primary"},[e.step.name?[e._v(e._s(e.step.name))]:[e._v(e._s(e._("Step"))+" "+e._s(e.index+1))],0!==e.step.time?s("small",{staticClass:"text-muted",staticStyle:{"margin-left":"4px"}},[s("i",{staticClass:"fas fa-user-clock"}),e._v(" "+e._s(e.step.time)+" "+e._s(e._("min"))+" ")]):e._e(),""!==e.start_time?s("small",[s("b-link",{attrs:{id:"id_reactive_popover_"+e.step.id,href:"#"},on:{click:e.openPopover}},[e._v(" "+e._s(e.moment(e.start_time).add(e.step.time_offset,"minutes").format("HH:mm"))+" ")])],1):e._e()],2)]),s("div",{staticClass:"col col-md-8",staticStyle:{"text-align":"right"}},[s("b-button",{staticClass:"shadow-none",class:{"text-primary":e.details_visible,"text-success":!e.details_visible},staticStyle:{border:"none",background:"none"},on:{click:function(t){e.details_visible=!e.details_visible}}},[s("i",{staticClass:"far fa-check-circle"})])],1)]):e._e(),s("b-collapse",{attrs:{id:"collapse-1"},model:{value:e.details_visible,callback:function(t){e.details_visible=t},expression:"details_visible"}},[s("div",{staticClass:"row"},[e.step.ingredients.length>0&&e.recipe.steps.length>1?s("div",{staticClass:"col col-md-4"},[s("table",{staticClass:"table table-sm"},[e._l(e.step.ingredients,(function(t){return[s("Ingredient",{key:t.id,attrs:{ingredient:t,ingredient_factor:e.ingredient_factor},on:{"checked-state-changed":function(s){return e.$emit("checked-state-changed",t)}}})]}))],2)]):e._e(),s("div",{staticClass:"col",class:{"col-md-8":e.recipe.steps.length>1,"col-md-12":e.recipe.steps.length<=1}},[s("compile-component",{attrs:{code:e.step.ingredients_markdown,ingredient_factor:e.ingredient_factor}})],1)])])]:e._e(),"TIME"===e.step.type?[s("div",{staticClass:"row"},[s("div",{staticClass:"col-10 offset-1",staticStyle:{"text-align":"center"}},[s("h4",{staticClass:"text-primary"},[e.step.name?[e._v(e._s(e.step.name))]:[e._v(e._s(e._("Step"))+" "+e._s(e.index+1))]],2),0!==e.step.time?s("span",{staticClass:"text-muted",staticStyle:{"margin-left":"4px"}},[s("i",{staticClass:"fa fa-stopwatch"}),e._v(" "+e._s(e.step.time)+" "+e._s(e._("min")))]):e._e(),""!==e.start_time?s("b-link",{attrs:{id:"id_reactive_popover_"+e.step.id,href:"#"},on:{click:e.openPopover}},[e._v(" "+e._s(e.moment(e.start_time).add(e.step.time_offset,"minutes").format("HH:mm"))+" ")]):e._e()],1),s("div",{staticClass:"col-2",staticStyle:{"text-align":"right"}},[s("b-button",{staticClass:"shadow-none",class:{"text-primary":e.details_visible,"text-success":!e.details_visible},staticStyle:{border:"none",background:"none"},on:{click:function(t){e.details_visible=!e.details_visible}}},[s("i",{staticClass:"far fa-check-circle"})])],1)]),s("b-collapse",{attrs:{id:"collapse-1"},model:{value:e.details_visible,callback:function(t){e.details_visible=t},expression:"details_visible"}},[""!==e.step.instruction?s("div",{staticClass:"row"},[s("div",{staticClass:"col col-md-12",staticStyle:{"text-align":"center"}},[s("compile-component",{attrs:{code:e.step.ingredients_markdown,ingredient_factor:e.ingredient_factor}})],1)]):e._e()])]:e._e(),""!==e.start_time?s("div",[s("b-popover",{ref:"id_reactive_popover_"+e.step.id,attrs:{target:"id_reactive_popover_"+e.step.id,triggers:"click",placement:"bottom",title:e._("Step start time")}},[s("div",[s("b-form-group",{staticClass:"mb-1",attrs:{label:"Time","label-for":"popover-input-1","label-cols":"3"}},[s("b-form-input",{attrs:{type:"datetime-local",id:"popover-input-1",size:"sm"},model:{value:e.set_time_input,callback:function(t){e.set_time_input=t},expression:"set_time_input"}})],1)],1),s("div",{staticClass:"row",staticStyle:{"margin-top":"1vh"}},[s("div",{staticClass:"col-12",staticStyle:{"text-align":"right"}},[s("b-button",{staticStyle:{"margin-right":"8px"},attrs:{size:"sm",variant:"secondary"},on:{click:e.closePopover}},[e._v("Cancel")]),s("b-button",{attrs:{size:"sm",variant:"primary"},on:{click:e.updateTime}},[e._v("Ok")])],1)])])],1):e._e()],2)},x=[],S=(s("a9e3"),function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("tr",{on:{click:function(t){return e.$emit("checked-state-changed",e.ingredient)}}},[s("td",[e.ingredient.checked?s("i",{staticClass:"far fa-check-circle text-success"}):e._e(),e.ingredient.checked?e._e():s("i",{staticClass:"far fa-check-circle text-primary"})]),s("td",[0!==e.ingredient.amount?s("span",[e._v(e._s(e.calculateAmount(e.ingredient.amount)))]):e._e()]),s("td",[null!==e.ingredient.unit?s("span",[e._v(e._s(e.ingredient.unit.name))]):e._e()]),s("td",[null!==e.ingredient.food?s("span",[e._v(e._s(e.ingredient.food.name))]):e._e()]),s("td",[e.ingredient.note?s("div",[s("span",{directives:[{name:"b-popover",rawName:"v-b-popover.hover",value:e.ingredient.note,expression:"ingredient.note",modifiers:{hover:!0}}],staticClass:"d-print-none"},[s("i",{staticClass:"far fa-comment"})]),s("div",{staticClass:"d-none d-print-block"},[s("i",{staticClass:"far fa-comment-alt"}),e._v(" "+e._s(e.ingredient.note)+" ")])]):e._e()])])}),O=[],E={name:"Ingredient",props:{ingredient:Object,ingredient_factor:{type:Number,default:1}},data:function(){return{checked:!1}},methods:{calculateAmount:function(e){return h(e,this.ingredient_factor)}}},$=E,z=s("2877"),N=Object(z["a"])($,S,O,!1,null,null,null),P=N.exports,M=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",[s(e.compiled,{tag:"component",attrs:{ingredient_factor:e.ingredient_factor,code:e.code}})],1)},T=[],D=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("span",[e._v(e._s(e.calculateAmount(e.number)))])},I=[],U={name:"ScalableNumber",props:{number:Number,factor:{type:Number,default:4}},methods:{calculateAmount:function(e){return h(e,this.factor)}}},R=U,A=Object(z["a"])(R,D,I,!1,null,null,null),H=A.exports,L={name:"CompileComponent",props:["code","ingredient_factor"],data:function(){return{compiled:null}},mounted:function(){this.compiled=i["default"].component("compiled-component",{props:["ingredient_factor","code"],components:{ScalableNumber:H},template:"
".concat(this.code,"
")})}},V=L,F=Object(z["a"])(V,M,T,!1,null,null,null),J=F.exports,K=s("c1df"),q=s.n(K);i["default"].prototype.moment=q.a;var G={name:"Step",mixins:[m],components:{Ingredient:P,CompileComponent:J},props:{step:Object,ingredient_factor:Number,index:Number,recipe:Object,start_time:String},data:function(){return{details_visible:!0,set_time_input:""}},mounted:function(){this.set_time_input=q()(this.start_time).add(this.step.time_offset,"minutes").format("yyyy-MM-DDTHH:mm")},methods:{calculateAmount:function(e){return h(e,this.ingredient_factor)},updateTime:function(){this.$emit("update-start-time",q()(this.set_time_input).add(-1*this.time_offset,"minutes").format("yyyy-MM-DDTHH:mm")),this.closePopover()},closePopover:function(){this.$refs["id_reactive_popover_".concat(this.step.id)].$emit("close")},openPopover:function(){this.$refs["id_reactive_popover_".concat(this.step.id)].$emit("open")}}},X=G,B=Object(z["a"])(X,k,x,!1,null,null,null),W=B.exports,Q=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",[s("div",{staticClass:"dropdown"},[e._m(0),s("div",{staticClass:"dropdown-menu dropdown-menu-right",attrs:{"aria-labelledby":"dropdownMenuLink"}},[s("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_recipe",e.recipe.id)}},[s("i",{staticClass:"fas fa-pencil-alt fa-fw"}),e._v(" "+e._s(e._("Edit")))]),e.recipe.internal?e._e():s("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_convert_recipe",e.recipe.id)}},[s("i",{staticClass:"fas fa-exchange-alt fa-fw"}),e._v(" "+e._s(e._("Convert to internal recipe")))]),s("button",{staticClass:"dropdown-item",attrs:{onclick:"$('#bookmarkModal').modal({'show':true})"}},[s("i",{staticClass:"fas fa-bookmark fa-fw"}),e._v(" "+e._s(e._("Add to Book"))+" ")]),e.recipe.internal?s("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_shopping")+"?r=["+e.recipe.id+","+e.servings_value+"]",target:"_blank",rel:"noopener noreferrer"}},[s("i",{staticClass:"fas fa-shopping-cart fa-fw"}),e._v(" "+e._s(e._("Add to Shopping"))+" ")]):e._e(),s("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_meal_plan")+"?r="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[s("i",{staticClass:"fas fa-calendar fa-fw"}),e._v(" "+e._s(e._("Add to Plan"))+" ")]),s("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_cook_log")}}},[s("i",{staticClass:"fas fa-clipboard-list fa-fw"}),e._v(" "+e._s(e._("Log Cooking"))+" ")]),s("button",{staticClass:"dropdown-item",attrs:{onclick:"window.print()"}},[s("i",{staticClass:"fas fa-print fa-fw"}),e._v(" "+e._s(e._("Print"))+" ")]),s("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_export")+"?r="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[s("i",{staticClass:"fas fa-file-export fa-fw"}),e._v(" "+e._s(e._("Export")))]),e.recipe.internal?s("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_share_link",e.recipe.id),target:"_blank",rel:"noopener noreferrer"}},[s("i",{staticClass:"fas fa-share-alt fa-fw"}),e._v(" "+e._s(e._("Share")))]):e._e()])]),s("cook-log",{attrs:{recipe:e.recipe}})],1)},Y=[function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("a",{staticClass:"btn shadow-none",attrs:{href:"#",role:"button",id:"dropdownMenuLink","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}},[s("i",{staticClass:"fas fa-ellipsis-v"})])}],Z=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",[s("b-modal",{staticClass:"modal",attrs:{id:"id_modal_cook_log",title:e._("Log Recipe Cooking"),"ok-title":e._("Save"),"cancel-title":e._("Close")},on:{ok:function(t){return e.logCook()}}},[s("p",[e._v(e._s(e._("All fields are optional and can be left empty.")))]),s("form",[s("label",{attrs:{for:"id_log_servings"}},[e._v(e._s(e._("Servings")))]),s("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.servings,expression:"logObject.servings"}],staticClass:"form-control",attrs:{type:"number",id:"id_log_servings"},domProps:{value:e.logObject.servings},on:{input:function(t){t.target.composing||e.$set(e.logObject,"servings",t.target.value)}}}),s("label",{staticStyle:{"margin-top":"2vh"}},[e._v(e._s(e._("Rating"))+" - "),s("span",{attrs:{id:"id_rating_show"}},[e._v(e._s(e.logObject.rating)+"/5")])]),s("b-form-rating",{model:{value:e.logObject.rating,callback:function(t){e.$set(e.logObject,"rating",t)},expression:"logObject.rating"}}),s("label",{staticStyle:{"margin-top":"2vh"},attrs:{for:"id_date"}},[e._v(e._s(e._("Date")))]),s("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.created_at,expression:"logObject.created_at"}],staticClass:"form-control",attrs:{type:"datetime-local",id:"id_date"},domProps:{value:e.logObject.created_at},on:{input:function(t){t.target.composing||e.$set(e.logObject,"created_at",t.target.value)}}})],1)])],1)},ee=[];i["default"].prototype.moment=q.a,i["default"].use(c["a"]);var te={name:"CookLog",mixins:[m],props:{recipe:Object},data:function(){return{logObject:{recipe:this.recipe.id,servings:0,rating:0,created_at:q()().format("yyyy-MM-DDTHH:mm")}}},methods:{logCook:function(){C(this.logObject)}}},se=te,ie=Object(z["a"])(se,Z,ee,!1,null,null,null),ae=ie.exports,re={name:"RecipeContextMenu",mixins:[v,m],components:{CookLog:ae},data:function(){return{servings_value:0}},props:{recipe:Object,servings:{type:Number,default:-1}},mounted:function(){this.servings_value=-1===this.servings?this.recipe.servings:this.servings}},ne=re,ce=Object(z["a"])(ne,Q,Y,!1,null,null,null),oe=ce.exports,le=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",[s("iframe",{staticStyle:{border:"none"},attrs:{src:e.pdfUrl,width:"100%",height:"700px"}})])},de=[],pe={name:"PdfViewer",mixins:[v],props:{recipe:Object},computed:{pdfUrl:function(){return"/static/pdfjs/viewer.html?file="+g("api_get_recipe_file",this.recipe.id)}}},fe=pe,ue=Object(z["a"])(fe,le,de,!1,null,null,null),me=ue.exports,_e=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",[s("img",{attrs:{src:e.pdfUrl,width:"100%",height:"700px",alt:e._("External Recipe Image")}})])},ve=[],ge={name:"ImageViewer",mixins:[m],props:{recipe:Object},computed:{pdfUrl:function(){return g("api_get_recipe_file",this.recipe.id)}}},be=ge,he=Object(z["a"])(be,_e,ve,!1,null,null,null),je=he.exports,ye=function(){var e=this,t=e.$createElement,s=e._self._c||t;return null!==e.recipe.nutrition?s("div",[s("div",{staticClass:"card border-success"},[s("div",{staticClass:"card-body"},[s("div",{staticClass:"row"},[s("div",{staticClass:"col-12"},[s("h4",{staticClass:"card-title"},[s("i",{staticClass:"fas fa-carrot"}),e._v(" "+e._s(e._("Nutrition")))])])]),s("div",{staticClass:"row"},[s("div",{staticClass:"col-6"},[s("i",{staticClass:"fas fa-fire fa-fw text-primary"}),e._v(" "+e._s(e._("Calories"))+" ")]),s("div",{staticClass:"col-6"},[e._v(" "+e._s(e.calculateAmount(e.recipe.nutrition.calories))+" kcal ")])]),s("div",{staticClass:"row"},[s("div",{staticClass:"col-6"},[s("i",{staticClass:"fas fa-bread-slice fa-fw text-primary"}),e._v(" "+e._s(e._("Carbohydrates"))+" ")]),s("div",{staticClass:"col-6"},[e._v(" "+e._s(e.calculateAmount(e.recipe.nutrition.carbohydrates))+" g ")])]),s("div",{staticClass:"row"},[s("div",{staticClass:"col-6"},[s("i",{staticClass:"fas fa-cheese fa-fw text-primary"}),e._v(" "+e._s(e._("Fats"))+" ")]),s("div",{staticClass:"col-6"},[e._v(" "+e._s(e.calculateAmount(e.recipe.nutrition.fats))+" g ")])]),s("div",{staticClass:"row"},[s("div",{staticClass:"col-6"},[s("i",{staticClass:"fas fa-drumstick-bite fa-fw text-primary"}),e._v(" "+e._s(e._("Proteins"))+" ")]),s("div",{staticClass:"col-6"},[e._v(" "+e._s(e.calculateAmount(e.recipe.nutrition.proteins))+" g ")])])])])]):e._e()},Ce=[],we={name:"Nutrition",mixins:[m],props:{recipe:Object,ingredient_factor:Number},methods:{calculateAmount:function(e){return h(e,this.ingredient_factor)}}},ke=we,xe=Object(z["a"])(ke,ye,Ce,!1,null,null,null),Se=xe.exports,Oe=function(){var e=this,t=e.$createElement,s=e._self._c||t;return e.recipe.keywords.length>0?s("div",e._l(e.recipe.keywords,(function(t){return s("small",{key:t.id,staticStyle:{padding:"2px"}},[e._v(" "+e._s(t.icon)+" "+e._s(t.name)+" ")])})),0):e._e()},Ee=[],$e={name:"Keywords",props:{recipe:Object}},ze=$e,Ne=Object(z["a"])(ze,Oe,Ee,!1,null,null,null),Pe=Ne.exports,Me=function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)},Te=[function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"row"},[s("div",{staticClass:"col",staticStyle:{"text-align":"center"}},[s("i",{staticClass:"fas fa-spinner fa-spin fa-10x"})])])}],De={name:"LoadingSpinner",props:{recipe:Object}},Ie=De,Ue=Object(z["a"])(Ie,Me,Te,!1,null,null,null),Re=Ue.exports;i["default"].prototype.moment=q.a,i["default"].use(c["a"]);var Ae={name:"RecipeView",mixins:[m,v,f],components:{PdfViewer:me,ImageViewer:je,Ingredient:P,Step:W,RecipeContextMenu:oe,Nutrition:Se,Keywords:Pe,LoadingSpinner:Re},computed:{ingredient_factor:function(){return this.servings/this.recipe.servings}},data:function(){return{loading:!0,recipe_id:window.RECIPE_ID,recipe:void 0,ingredient_count:0,servings:1,start_time:""}},mounted:function(){this.loadRecipe(this.recipe_id)},methods:{loadRecipe:function(e){var t=this;y(e).then((function(e){0!==window.USER_SERVINGS&&(e.servings=window.USER_SERVINGS),t.servings=e.servings;var s,i=0,a=Object(n["a"])(e.steps);try{for(a.s();!(s=a.n()).done;){var r=s.value;t.ingredient_count+=r.ingredients.length;var c,o=Object(n["a"])(r.ingredients);try{for(o.s();!(c=o.n()).done;){var l=c.value;t.$set(l,"checked",!1)}}catch(d){o.e(d)}finally{o.f()}r.time_offset=i,i+=r.time}}catch(d){a.e(d)}finally{a.f()}i>0&&(t.start_time=q()().format("yyyy-MM-DDTHH:mm")),t.recipe=e,t.loading=!1}))},updateStartTime:function(e){this.start_time=e},updateIngredientCheckedState:function(e){var t,s=Object(n["a"])(this.recipe.steps);try{for(s.s();!(t=s.n()).done;){var i,a=t.value,r=Object(n["a"])(a.ingredients);try{for(r.s();!(i=r.n()).done;){var c=i.value;c.id===e.id&&this.$set(c,"checked",!c.checked)}}catch(o){r.e(o)}finally{r.f()}}}catch(o){s.e(o)}finally{s.f()}}}},He=Ae,Le=Object(z["a"])(He,a,r,!1,null,null,null),Ve=Le.exports;i["default"].config.productionTip=!1,new i["default"]({render:function(e){return e(Ve)}}).$mount("#app")},4678:function(e,t,s){var i={"./af":"2bfb","./af.js":"2bfb","./ar":"8e73","./ar-dz":"a356","./ar-dz.js":"a356","./ar-kw":"423e","./ar-kw.js":"423e","./ar-ly":"1cfd","./ar-ly.js":"1cfd","./ar-ma":"0a84","./ar-ma.js":"0a84","./ar-sa":"8230","./ar-sa.js":"8230","./ar-tn":"6d83","./ar-tn.js":"6d83","./ar.js":"8e73","./az":"485c","./az.js":"485c","./be":"1fc1","./be.js":"1fc1","./bg":"84aa","./bg.js":"84aa","./bm":"a7fa","./bm.js":"a7fa","./bn":"9043","./bn-bd":"9686","./bn-bd.js":"9686","./bn.js":"9043","./bo":"d26a","./bo.js":"d26a","./br":"6887","./br.js":"6887","./bs":"2554","./bs.js":"2554","./ca":"d716","./ca.js":"d716","./cs":"3c0d","./cs.js":"3c0d","./cv":"03ec","./cv.js":"03ec","./cy":"9797","./cy.js":"9797","./da":"0f14","./da.js":"0f14","./de":"b469","./de-at":"b3eb","./de-at.js":"b3eb","./de-ch":"bb71","./de-ch.js":"bb71","./de.js":"b469","./dv":"598a","./dv.js":"598a","./el":"8d47","./el.js":"8d47","./en-au":"0e6b","./en-au.js":"0e6b","./en-ca":"3886","./en-ca.js":"3886","./en-gb":"39a6","./en-gb.js":"39a6","./en-ie":"e1d3","./en-ie.js":"e1d3","./en-il":"7333","./en-il.js":"7333","./en-in":"ec2e","./en-in.js":"ec2e","./en-nz":"6f50","./en-nz.js":"6f50","./en-sg":"b7e9","./en-sg.js":"b7e9","./eo":"65db","./eo.js":"65db","./es":"898b","./es-do":"0a3c","./es-do.js":"0a3c","./es-mx":"b5b7","./es-mx.js":"b5b7","./es-us":"55c9","./es-us.js":"55c9","./es.js":"898b","./et":"ec18","./et.js":"ec18","./eu":"0ff2","./eu.js":"0ff2","./fa":"8df4","./fa.js":"8df4","./fi":"81e9","./fi.js":"81e9","./fil":"d69a","./fil.js":"d69a","./fo":"0721","./fo.js":"0721","./fr":"9f26","./fr-ca":"d9f8","./fr-ca.js":"d9f8","./fr-ch":"0e49","./fr-ch.js":"0e49","./fr.js":"9f26","./fy":"7118","./fy.js":"7118","./ga":"5120","./ga.js":"5120","./gd":"f6b4","./gd.js":"f6b4","./gl":"8840","./gl.js":"8840","./gom-deva":"aaf2","./gom-deva.js":"aaf2","./gom-latn":"0caa","./gom-latn.js":"0caa","./gu":"e0c5","./gu.js":"e0c5","./he":"c7aa","./he.js":"c7aa","./hi":"dc4d","./hi.js":"dc4d","./hr":"4ba9","./hr.js":"4ba9","./hu":"5b14","./hu.js":"5b14","./hy-am":"d6b6","./hy-am.js":"d6b6","./id":"5038","./id.js":"5038","./is":"0558","./is.js":"0558","./it":"6e98","./it-ch":"6f12","./it-ch.js":"6f12","./it.js":"6e98","./ja":"079e","./ja.js":"079e","./jv":"b540","./jv.js":"b540","./ka":"201b","./ka.js":"201b","./kk":"6d79","./kk.js":"6d79","./km":"e81d","./km.js":"e81d","./kn":"3e92","./kn.js":"3e92","./ko":"22f8","./ko.js":"22f8","./ku":"2421","./ku.js":"2421","./ky":"9609","./ky.js":"9609","./lb":"440c","./lb.js":"440c","./lo":"b29d","./lo.js":"b29d","./lt":"26f9","./lt.js":"26f9","./lv":"b97c","./lv.js":"b97c","./me":"293c","./me.js":"293c","./mi":"688b","./mi.js":"688b","./mk":"6909","./mk.js":"6909","./ml":"02fb","./ml.js":"02fb","./mn":"958b","./mn.js":"958b","./mr":"39bd","./mr.js":"39bd","./ms":"ebe4","./ms-my":"6403","./ms-my.js":"6403","./ms.js":"ebe4","./mt":"1b45","./mt.js":"1b45","./my":"8689","./my.js":"8689","./nb":"6ce3","./nb.js":"6ce3","./ne":"3a39","./ne.js":"3a39","./nl":"facd","./nl-be":"db29","./nl-be.js":"db29","./nl.js":"facd","./nn":"b84c","./nn.js":"b84c","./oc-lnc":"167b","./oc-lnc.js":"167b","./pa-in":"f3ff","./pa-in.js":"f3ff","./pl":"8d57","./pl.js":"8d57","./pt":"f260","./pt-br":"d2d4","./pt-br.js":"d2d4","./pt.js":"f260","./ro":"972c","./ro.js":"972c","./ru":"957c","./ru.js":"957c","./sd":"6784","./sd.js":"6784","./se":"ffff","./se.js":"ffff","./si":"eda5","./si.js":"eda5","./sk":"7be6","./sk.js":"7be6","./sl":"8155","./sl.js":"8155","./sq":"c8f3","./sq.js":"c8f3","./sr":"cf1e","./sr-cyrl":"13e9","./sr-cyrl.js":"13e9","./sr.js":"cf1e","./ss":"52bd","./ss.js":"52bd","./sv":"5fbd","./sv.js":"5fbd","./sw":"74dc","./sw.js":"74dc","./ta":"3de5","./ta.js":"3de5","./te":"5cbb","./te.js":"5cbb","./tet":"576c","./tet.js":"576c","./tg":"3b1b","./tg.js":"3b1b","./th":"10e8","./th.js":"10e8","./tk":"5aff","./tk.js":"5aff","./tl-ph":"0f38","./tl-ph.js":"0f38","./tlh":"cf755","./tlh.js":"cf755","./tr":"0e81","./tr.js":"0e81","./tzl":"cf51","./tzl.js":"cf51","./tzm":"c109","./tzm-latn":"b53d","./tzm-latn.js":"b53d","./tzm.js":"c109","./ug-cn":"6117","./ug-cn.js":"6117","./uk":"ada2","./uk.js":"ada2","./ur":"5294","./ur.js":"5294","./uz":"2e8c","./uz-latn":"010e","./uz-latn.js":"010e","./uz.js":"2e8c","./vi":"2921","./vi.js":"2921","./x-pseudo":"fd7e","./x-pseudo.js":"fd7e","./yo":"7f33","./yo.js":"7f33","./zh-cn":"5c3a","./zh-cn.js":"5c3a","./zh-hk":"49ab","./zh-hk.js":"49ab","./zh-mo":"3a6c","./zh-mo.js":"3a6c","./zh-tw":"90ea","./zh-tw.js":"90ea"};function a(e){var t=r(e);return s(t)}function r(e){if(!s.o(i,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return i[e]}a.keys=function(){return Object.keys(i)},a.resolve=r,e.exports=a,a.id="4678"}}); \ No newline at end of file +(function(e){function t(t){for(var i,n,c=t[0],o=t[1],l=t[2],p=0,f=[];p0?s("div",{staticClass:"col-md-6 order-md-1 col-sm-12 order-sm-2 col-12 order-2",staticStyle:{"margin-top":"2vh"}},[s("div",{staticClass:"card border-primary"},[s("div",{staticClass:"card-body"},[s("div",{staticClass:"row"},[s("div",{staticClass:"col col-md-8"},[s("h4",{staticClass:"card-title"},[s("i",{staticClass:"fas fa-pepper-hot"}),e._v(" "+e._s(e._("Ingredients")))])])]),s("br"),s("div",{staticClass:"row"},[s("div",{staticClass:"col-md-12"},[s("table",{staticClass:"table table-sm"},[e._l(e.recipe.steps,(function(t){return[e._l(t.ingredients,(function(t){return[s("Ingredient",{key:t.id,attrs:{ingredient:t,ingredient_factor:e.ingredient_factor},on:{"checked-state-changed":e.updateIngredientCheckedState}})]}))]}))],2)])])])])]):e._e(),s("div",{staticClass:"col-12 order-1 col-sm-12 order-sm-1 col-md-6 order-md-2"},[s("div",{staticClass:"row"},[s("div",{staticClass:"col-12"},[null!==e.recipe.image?s("img",{staticClass:"img img-fluid rounded",staticStyle:{"max-height":"30vh"},attrs:{src:e.recipe.image,alt:e._("Recipe Image")}}):e._e()])]),s("div",{staticClass:"row",staticStyle:{"margin-top":"2vh"}},[s("div",{staticClass:"col-12"},[s("Nutrition",{attrs:{recipe:e.recipe,ingredient_factor:e.ingredient_factor}})],1)])])]),e.recipe.internal?e._e():[e.recipe.file_path.includes(".pdf")?s("div",[s("PdfViewer",{attrs:{recipe:e.recipe}})],1):e._e(),e.recipe.file_path.includes(".png")||e.recipe.file_path.includes(".jpg")||e.recipe.file_path.includes(".jpeg")?s("div",[s("ImageViewer",{attrs:{recipe:e.recipe}})],1):e._e()],e._l(e.recipe.steps,(function(t,i){return s("div",{key:t.id,staticStyle:{"margin-top":"1vh"}},[s("Step",{attrs:{recipe:e.recipe,step:t,ingredient_factor:e.ingredient_factor,index:i,start_time:e.start_time},on:{"update-start-time":e.updateStartTime,"checked-state-changed":e.updateIngredientCheckedState}})],1)}))],2)],2)},r=[function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"my-auto",staticStyle:{"padding-right":"4px"}},[s("i",{staticClass:"fas fa-user-clock fa-2x text-primary"})])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"my-auto",staticStyle:{"padding-right":"4px"}},[s("i",{staticClass:"far fa-clock fa-2x text-primary"})])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"my-auto",staticStyle:{"padding-right":"4px"}},[s("i",{staticClass:"fas fa-pizza-slice fa-2x text-primary"})])}],n=s("b85c"),c=s("5f5b"),o=(s("2dd8"),s("bc3a")),l=s.n(o),d=(s("99af"),s("59e4"));function p(e,t,s){var i=Math.floor(e),a=1,r=i+1,n=1;if(e!==i)while(a<=t&&n<=t){var c=(i+r)/(a+n);if(e===c){a+n<=t?(a+=n,i+=r,n=t+1):a>n?n=t+1:a=t+1;break}et&&(a=n,i=r),!s)return[0,i,a];var o=Math.floor(i/a);return[o,i-o*a,a]}var f={methods:{makeToast:function(e,t){var s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return u(e,t,s)}}};function u(e,t){var s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=new d["a"];i.$bvToast.toast(t,{title:e,variant:s,toaster:"b-toaster-top-center",solid:!0})}var m={methods:{_:function(e){return _(e)}}};function _(e){return window.gettext(e)}var v={methods:{resolveDjangoUrl:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return g(e,t)}}};function g(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==t?window.Urls[e](t):window.Urls[e]()}function b(e){return window.USER_PREF[e]}function h(e,t){if(b("user_fractions")){var s="",i=p.cont(e*t,9,!0);return i[0]>0&&(s+=i[0]),i[1]>0&&(s+=" ".concat(i[1],"").concat(i[2],"")),s}return j(e*t)}function j(e){var t=b("user_fractions")?b("user_fractions"):2;return+(Math.round(e+"e+".concat(t))+"e-".concat(t))}function y(e){var t=g("api:recipe-detail",e);return void 0!==window.SHARE_UID&&(t+="?share="+window.SHARE_UID),l.a.get(t).then((function(e){return e.data})).catch((function(e){w(e,"There was an error loading a resource!","danger")}))}function C(e){return l.a.post(g("api:cooklog-list"),e).then((function(e){console.log(e),u("Saved","Cook Log entry saved!","success")})).catch((function(e){w(e,"There was an error creating a resource!","danger")}))}function w(e,t){if("response"in e){console.log(e.response);var s="statusText"in e.response?e.response.statusText:_("Error");t+="\n\n"+JSON.stringify(e.response.data),u(s,t,"danger")}else u("Error",t,"danger"),console.log(e)}l.a.defaults.xsrfCookieName="csrftoken",l.a.defaults.xsrfHeaderName="X-CSRFTOKEN";var k=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",[s("hr"),"TEXT"===e.step.type?[e.recipe.steps.length>1?s("div",{staticClass:"row"},[s("div",{staticClass:"col col-md4"},[s("h5",{staticClass:"text-primary"},[e.step.name?[e._v(e._s(e.step.name))]:[e._v(e._s(e._("Step"))+" "+e._s(e.index+1))],0!==e.step.time?s("small",{staticClass:"text-muted",staticStyle:{"margin-left":"4px"}},[s("i",{staticClass:"fas fa-user-clock"}),e._v(" "+e._s(e.step.time)+" "+e._s(e._("min"))+" ")]):e._e(),""!==e.start_time?s("small",[s("b-link",{attrs:{id:"id_reactive_popover_"+e.step.id,href:"#"},on:{click:e.openPopover}},[e._v(" "+e._s(e.moment(e.start_time).add(e.step.time_offset,"minutes").format("HH:mm"))+" ")])],1):e._e()],2)]),s("div",{staticClass:"col col-md-8",staticStyle:{"text-align":"right"}},[s("b-button",{staticClass:"shadow-none",class:{"text-primary":e.details_visible,"text-success":!e.details_visible},staticStyle:{border:"none",background:"none"},on:{click:function(t){e.details_visible=!e.details_visible}}},[s("i",{staticClass:"far fa-check-circle"})])],1)]):e._e(),s("b-collapse",{attrs:{id:"collapse-1"},model:{value:e.details_visible,callback:function(t){e.details_visible=t},expression:"details_visible"}},[s("div",{staticClass:"row"},[e.step.ingredients.length>0&&e.recipe.steps.length>1?s("div",{staticClass:"col col-md-4"},[s("table",{staticClass:"table table-sm"},[e._l(e.step.ingredients,(function(t){return[s("Ingredient",{key:t.id,attrs:{ingredient:t,ingredient_factor:e.ingredient_factor},on:{"checked-state-changed":function(s){return e.$emit("checked-state-changed",t)}}})]}))],2)]):e._e(),s("div",{staticClass:"col",class:{"col-md-8":e.recipe.steps.length>1,"col-md-12":e.recipe.steps.length<=1}},[s("compile-component",{attrs:{code:e.step.ingredients_markdown,ingredient_factor:e.ingredient_factor}})],1)])])]:e._e(),"TIME"===e.step.type?[s("div",{staticClass:"row"},[s("div",{staticClass:"col-10 offset-1",staticStyle:{"text-align":"center"}},[s("h4",{staticClass:"text-primary"},[e.step.name?[e._v(e._s(e.step.name))]:[e._v(e._s(e._("Step"))+" "+e._s(e.index+1))]],2),0!==e.step.time?s("span",{staticClass:"text-muted",staticStyle:{"margin-left":"4px"}},[s("i",{staticClass:"fa fa-stopwatch"}),e._v(" "+e._s(e.step.time)+" "+e._s(e._("min")))]):e._e(),""!==e.start_time?s("b-link",{attrs:{id:"id_reactive_popover_"+e.step.id,href:"#"},on:{click:e.openPopover}},[e._v(" "+e._s(e.moment(e.start_time).add(e.step.time_offset,"minutes").format("HH:mm"))+" ")]):e._e()],1),s("div",{staticClass:"col-1",staticStyle:{"text-align":"right"}},[s("b-button",{staticClass:"shadow-none",class:{"text-primary":e.details_visible,"text-success":!e.details_visible},staticStyle:{border:"none",background:"none"},on:{click:function(t){e.details_visible=!e.details_visible}}},[s("i",{staticClass:"far fa-check-circle"})])],1)]),s("b-collapse",{attrs:{id:"collapse-1"},model:{value:e.details_visible,callback:function(t){e.details_visible=t},expression:"details_visible"}},[""!==e.step.instruction?s("div",{staticClass:"row"},[s("div",{staticClass:"col col-md-12",staticStyle:{"text-align":"center"}},[s("compile-component",{attrs:{code:e.step.ingredients_markdown,ingredient_factor:e.ingredient_factor}})],1)]):e._e()])]:e._e(),""!==e.start_time?s("div",[s("b-popover",{ref:"id_reactive_popover_"+e.step.id,attrs:{target:"id_reactive_popover_"+e.step.id,triggers:"click",placement:"bottom",title:e._("Step start time")}},[s("div",[s("b-form-group",{staticClass:"mb-1",attrs:{label:"Time","label-for":"popover-input-1","label-cols":"3"}},[s("b-form-input",{attrs:{type:"datetime-local",id:"popover-input-1",size:"sm"},model:{value:e.set_time_input,callback:function(t){e.set_time_input=t},expression:"set_time_input"}})],1)],1),s("div",{staticClass:"row",staticStyle:{"margin-top":"1vh"}},[s("div",{staticClass:"col-12",staticStyle:{"text-align":"right"}},[s("b-button",{staticStyle:{"margin-right":"8px"},attrs:{size:"sm",variant:"secondary"},on:{click:e.closePopover}},[e._v("Cancel")]),s("b-button",{attrs:{size:"sm",variant:"primary"},on:{click:e.updateTime}},[e._v("Ok")])],1)])])],1):e._e()],2)},x=[],S=(s("a9e3"),function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("tr",{on:{click:function(t){return e.$emit("checked-state-changed",e.ingredient)}}},[s("td",[e.ingredient.checked?s("i",{staticClass:"far fa-check-circle text-success"}):e._e(),e.ingredient.checked?e._e():s("i",{staticClass:"far fa-check-circle text-primary"})]),s("td",[0!==e.ingredient.amount?s("span",[e._v(e._s(e.calculateAmount(e.ingredient.amount)))]):e._e()]),s("td",[null!==e.ingredient.unit?s("span",[e._v(e._s(e.ingredient.unit.name))]):e._e()]),s("td",[null!==e.ingredient.food?s("span",[e._v(e._s(e.ingredient.food.name))]):e._e()]),s("td",[e.ingredient.note?s("div",[s("span",{directives:[{name:"b-popover",rawName:"v-b-popover.hover",value:e.ingredient.note,expression:"ingredient.note",modifiers:{hover:!0}}],staticClass:"d-print-none"},[s("i",{staticClass:"far fa-comment"})]),s("div",{staticClass:"d-none d-print-block"},[s("i",{staticClass:"far fa-comment-alt"}),e._v(" "+e._s(e.ingredient.note)+" ")])]):e._e()])])}),O=[],E={name:"Ingredient",props:{ingredient:Object,ingredient_factor:{type:Number,default:1}},data:function(){return{checked:!1}},methods:{calculateAmount:function(e){return h(e,this.ingredient_factor)}}},$=E,z=s("2877"),N=Object(z["a"])($,S,O,!1,null,null,null),P=N.exports,M=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",[s(e.compiled,{tag:"component",attrs:{ingredient_factor:e.ingredient_factor,code:e.code}})],1)},T=[],D=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("span",[e._v(e._s(e.calculateAmount(e.number)))])},I=[],U={name:"ScalableNumber",props:{number:Number,factor:{type:Number,default:4}},methods:{calculateAmount:function(e){return h(e,this.factor)}}},R=U,A=Object(z["a"])(R,D,I,!1,null,null,null),H=A.exports,L={name:"CompileComponent",props:["code","ingredient_factor"],data:function(){return{compiled:null}},mounted:function(){this.compiled=i["default"].component("compiled-component",{props:["ingredient_factor","code"],components:{ScalableNumber:H},template:"
".concat(this.code,"
")})}},V=L,F=Object(z["a"])(V,M,T,!1,null,null,null),J=F.exports,K=s("c1df"),q=s.n(K);i["default"].prototype.moment=q.a;var G={name:"Step",mixins:[m],components:{Ingredient:P,CompileComponent:J},props:{step:Object,ingredient_factor:Number,index:Number,recipe:Object,start_time:String},data:function(){return{details_visible:!0,set_time_input:""}},mounted:function(){this.set_time_input=q()(this.start_time).add(this.step.time_offset,"minutes").format("yyyy-MM-DDTHH:mm")},methods:{calculateAmount:function(e){return h(e,this.ingredient_factor)},updateTime:function(){this.$emit("update-start-time",q()(this.set_time_input).add(-1*this.time_offset,"minutes").format("yyyy-MM-DDTHH:mm")),this.closePopover()},closePopover:function(){this.$refs["id_reactive_popover_".concat(this.step.id)].$emit("close")},openPopover:function(){this.$refs["id_reactive_popover_".concat(this.step.id)].$emit("open")}}},X=G,B=Object(z["a"])(X,k,x,!1,null,null,null),W=B.exports,Q=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",[s("div",{staticClass:"dropdown"},[e._m(0),s("div",{staticClass:"dropdown-menu dropdown-menu-right",attrs:{"aria-labelledby":"dropdownMenuLink"}},[s("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_recipe",e.recipe.id)}},[s("i",{staticClass:"fas fa-pencil-alt fa-fw"}),e._v(" "+e._s(e._("Edit")))]),e.recipe.internal?e._e():s("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("edit_convert_recipe",e.recipe.id)}},[s("i",{staticClass:"fas fa-exchange-alt fa-fw"}),e._v(" "+e._s(e._("Convert to internal recipe")))]),s("button",{staticClass:"dropdown-item",attrs:{onclick:"$('#bookmarkModal').modal({'show':true})"}},[s("i",{staticClass:"fas fa-bookmark fa-fw"}),e._v(" "+e._s(e._("Add to Book"))+" ")]),e.recipe.internal?s("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_shopping")+"?r=["+e.recipe.id+","+e.servings_value+"]",target:"_blank",rel:"noopener noreferrer"}},[s("i",{staticClass:"fas fa-shopping-cart fa-fw"}),e._v(" "+e._s(e._("Add to Shopping"))+" ")]):e._e(),s("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_meal_plan")+"?r="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[s("i",{staticClass:"fas fa-calendar fa-fw"}),e._v(" "+e._s(e._("Add to Plan"))+" ")]),s("button",{staticClass:"dropdown-item",on:{click:function(t){return e.$bvModal.show("id_modal_cook_log")}}},[s("i",{staticClass:"fas fa-clipboard-list fa-fw"}),e._v(" "+e._s(e._("Log Cooking"))+" ")]),s("button",{staticClass:"dropdown-item",attrs:{onclick:"window.print()"}},[s("i",{staticClass:"fas fa-print fa-fw"}),e._v(" "+e._s(e._("Print"))+" ")]),s("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("view_export")+"?r="+e.recipe.id,target:"_blank",rel:"noopener noreferrer"}},[s("i",{staticClass:"fas fa-file-export fa-fw"}),e._v(" "+e._s(e._("Export")))]),e.recipe.internal?s("a",{staticClass:"dropdown-item",attrs:{href:e.resolveDjangoUrl("new_share_link",e.recipe.id),target:"_blank",rel:"noopener noreferrer"}},[s("i",{staticClass:"fas fa-share-alt fa-fw"}),e._v(" "+e._s(e._("Share")))]):e._e()])]),s("cook-log",{attrs:{recipe:e.recipe}})],1)},Y=[function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("a",{staticClass:"btn shadow-none",attrs:{href:"#",role:"button",id:"dropdownMenuLink","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}},[s("i",{staticClass:"fas fa-ellipsis-v"})])}],Z=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",[s("b-modal",{staticClass:"modal",attrs:{id:"id_modal_cook_log",title:e._("Log Recipe Cooking"),"ok-title":e._("Save"),"cancel-title":e._("Close")},on:{ok:function(t){return e.logCook()}}},[s("p",[e._v(e._s(e._("All fields are optional and can be left empty.")))]),s("form",[s("label",{attrs:{for:"id_log_servings"}},[e._v(e._s(e._("Servings")))]),s("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.servings,expression:"logObject.servings"}],staticClass:"form-control",attrs:{type:"number",id:"id_log_servings"},domProps:{value:e.logObject.servings},on:{input:function(t){t.target.composing||e.$set(e.logObject,"servings",t.target.value)}}}),s("label",{staticStyle:{"margin-top":"2vh"}},[e._v(e._s(e._("Rating"))+" - "),s("span",{attrs:{id:"id_rating_show"}},[e._v(e._s(e.logObject.rating)+"/5")])]),s("b-form-rating",{model:{value:e.logObject.rating,callback:function(t){e.$set(e.logObject,"rating",t)},expression:"logObject.rating"}}),s("label",{staticStyle:{"margin-top":"2vh"},attrs:{for:"id_date"}},[e._v(e._s(e._("Date")))]),s("input",{directives:[{name:"model",rawName:"v-model",value:e.logObject.created_at,expression:"logObject.created_at"}],staticClass:"form-control",attrs:{type:"datetime-local",id:"id_date"},domProps:{value:e.logObject.created_at},on:{input:function(t){t.target.composing||e.$set(e.logObject,"created_at",t.target.value)}}})],1)])],1)},ee=[];i["default"].prototype.moment=q.a,i["default"].use(c["a"]);var te={name:"CookLog",mixins:[m],props:{recipe:Object},data:function(){return{logObject:{recipe:this.recipe.id,servings:0,rating:0,created_at:q()().format("yyyy-MM-DDTHH:mm")}}},methods:{logCook:function(){C(this.logObject)}}},se=te,ie=Object(z["a"])(se,Z,ee,!1,null,null,null),ae=ie.exports,re={name:"RecipeContextMenu",mixins:[v,m],components:{CookLog:ae},data:function(){return{servings_value:0}},props:{recipe:Object,servings:{type:Number,default:-1}},mounted:function(){this.servings_value=-1===this.servings?this.recipe.servings:this.servings}},ne=re,ce=Object(z["a"])(ne,Q,Y,!1,null,null,null),oe=ce.exports,le=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",[s("iframe",{staticStyle:{border:"none"},attrs:{src:e.pdfUrl,width:"100%",height:"700px"}})])},de=[],pe={name:"PdfViewer",mixins:[v],props:{recipe:Object},computed:{pdfUrl:function(){return"/static/pdfjs/viewer.html?file="+g("api_get_recipe_file",this.recipe.id)}}},fe=pe,ue=Object(z["a"])(fe,le,de,!1,null,null,null),me=ue.exports,_e=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",[s("img",{attrs:{src:e.pdfUrl,width:"100%",height:"700px",alt:e._("External Recipe Image")}})])},ve=[],ge={name:"ImageViewer",mixins:[m],props:{recipe:Object},computed:{pdfUrl:function(){return g("api_get_recipe_file",this.recipe.id)}}},be=ge,he=Object(z["a"])(be,_e,ve,!1,null,null,null),je=he.exports,ye=function(){var e=this,t=e.$createElement,s=e._self._c||t;return null!==e.recipe.nutrition?s("div",[s("div",{staticClass:"card border-success"},[s("div",{staticClass:"card-body"},[s("div",{staticClass:"row"},[s("div",{staticClass:"col-12"},[s("h4",{staticClass:"card-title"},[s("i",{staticClass:"fas fa-carrot"}),e._v(" "+e._s(e._("Nutrition")))])])]),s("div",{staticClass:"row"},[s("div",{staticClass:"col-6"},[s("i",{staticClass:"fas fa-fire fa-fw text-primary"}),e._v(" "+e._s(e._("Calories"))+" ")]),s("div",{staticClass:"col-6"},[e._v(" "+e._s(e.calculateAmount(e.recipe.nutrition.calories))+" kcal ")])]),s("div",{staticClass:"row"},[s("div",{staticClass:"col-6"},[s("i",{staticClass:"fas fa-bread-slice fa-fw text-primary"}),e._v(" "+e._s(e._("Carbohydrates"))+" ")]),s("div",{staticClass:"col-6"},[e._v(" "+e._s(e.calculateAmount(e.recipe.nutrition.carbohydrates))+" g ")])]),s("div",{staticClass:"row"},[s("div",{staticClass:"col-6"},[s("i",{staticClass:"fas fa-cheese fa-fw text-primary"}),e._v(" "+e._s(e._("Fats"))+" ")]),s("div",{staticClass:"col-6"},[e._v(" "+e._s(e.calculateAmount(e.recipe.nutrition.fats))+" g ")])]),s("div",{staticClass:"row"},[s("div",{staticClass:"col-6"},[s("i",{staticClass:"fas fa-drumstick-bite fa-fw text-primary"}),e._v(" "+e._s(e._("Proteins"))+" ")]),s("div",{staticClass:"col-6"},[e._v(" "+e._s(e.calculateAmount(e.recipe.nutrition.proteins))+" g ")])])])])]):e._e()},Ce=[],we={name:"Nutrition",mixins:[m],props:{recipe:Object,ingredient_factor:Number},methods:{calculateAmount:function(e){return h(e,this.ingredient_factor)}}},ke=we,xe=Object(z["a"])(ke,ye,Ce,!1,null,null,null),Se=xe.exports,Oe=function(){var e=this,t=e.$createElement,s=e._self._c||t;return e.recipe.keywords.length>0?s("div",e._l(e.recipe.keywords,(function(t){return s("small",{key:t.id,staticStyle:{padding:"2px"}},[e._v(" "+e._s(t.icon)+" "+e._s(t.name)+" ")])})),0):e._e()},Ee=[],$e={name:"Keywords",props:{recipe:Object}},ze=$e,Ne=Object(z["a"])(ze,Oe,Ee,!1,null,null,null),Pe=Ne.exports,Me=function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)},Te=[function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"row"},[s("div",{staticClass:"col",staticStyle:{"text-align":"center"}},[s("i",{staticClass:"fas fa-spinner fa-spin fa-10x"})])])}],De={name:"LoadingSpinner",props:{recipe:Object}},Ie=De,Ue=Object(z["a"])(Ie,Me,Te,!1,null,null,null),Re=Ue.exports;i["default"].prototype.moment=q.a,i["default"].use(c["a"]);var Ae={name:"RecipeView",mixins:[m,v,f],components:{PdfViewer:me,ImageViewer:je,Ingredient:P,Step:W,RecipeContextMenu:oe,Nutrition:Se,Keywords:Pe,LoadingSpinner:Re},computed:{ingredient_factor:function(){return this.servings/this.recipe.servings}},data:function(){return{loading:!0,recipe_id:window.RECIPE_ID,recipe:void 0,ingredient_count:0,servings:1,start_time:""}},mounted:function(){this.loadRecipe(this.recipe_id)},methods:{loadRecipe:function(e){var t=this;y(e).then((function(e){0!==window.USER_SERVINGS&&(e.servings=window.USER_SERVINGS),t.servings=e.servings;var s,i=0,a=Object(n["a"])(e.steps);try{for(a.s();!(s=a.n()).done;){var r=s.value;t.ingredient_count+=r.ingredients.length;var c,o=Object(n["a"])(r.ingredients);try{for(o.s();!(c=o.n()).done;){var l=c.value;t.$set(l,"checked",!1)}}catch(d){o.e(d)}finally{o.f()}r.time_offset=i,i+=r.time}}catch(d){a.e(d)}finally{a.f()}i>0&&(t.start_time=q()().format("yyyy-MM-DDTHH:mm")),t.recipe=e,t.loading=!1}))},updateStartTime:function(e){this.start_time=e},updateIngredientCheckedState:function(e){var t,s=Object(n["a"])(this.recipe.steps);try{for(s.s();!(t=s.n()).done;){var i,a=t.value,r=Object(n["a"])(a.ingredients);try{for(r.s();!(i=r.n()).done;){var c=i.value;c.id===e.id&&this.$set(c,"checked",!c.checked)}}catch(o){r.e(o)}finally{r.f()}}}catch(o){s.e(o)}finally{s.f()}}}},He=Ae,Le=Object(z["a"])(He,a,r,!1,null,null,null),Ve=Le.exports;i["default"].config.productionTip=!1,new i["default"]({render:function(e){return e(Ve)}}).$mount("#app")},4678:function(e,t,s){var i={"./af":"2bfb","./af.js":"2bfb","./ar":"8e73","./ar-dz":"a356","./ar-dz.js":"a356","./ar-kw":"423e","./ar-kw.js":"423e","./ar-ly":"1cfd","./ar-ly.js":"1cfd","./ar-ma":"0a84","./ar-ma.js":"0a84","./ar-sa":"8230","./ar-sa.js":"8230","./ar-tn":"6d83","./ar-tn.js":"6d83","./ar.js":"8e73","./az":"485c","./az.js":"485c","./be":"1fc1","./be.js":"1fc1","./bg":"84aa","./bg.js":"84aa","./bm":"a7fa","./bm.js":"a7fa","./bn":"9043","./bn-bd":"9686","./bn-bd.js":"9686","./bn.js":"9043","./bo":"d26a","./bo.js":"d26a","./br":"6887","./br.js":"6887","./bs":"2554","./bs.js":"2554","./ca":"d716","./ca.js":"d716","./cs":"3c0d","./cs.js":"3c0d","./cv":"03ec","./cv.js":"03ec","./cy":"9797","./cy.js":"9797","./da":"0f14","./da.js":"0f14","./de":"b469","./de-at":"b3eb","./de-at.js":"b3eb","./de-ch":"bb71","./de-ch.js":"bb71","./de.js":"b469","./dv":"598a","./dv.js":"598a","./el":"8d47","./el.js":"8d47","./en-au":"0e6b","./en-au.js":"0e6b","./en-ca":"3886","./en-ca.js":"3886","./en-gb":"39a6","./en-gb.js":"39a6","./en-ie":"e1d3","./en-ie.js":"e1d3","./en-il":"7333","./en-il.js":"7333","./en-in":"ec2e","./en-in.js":"ec2e","./en-nz":"6f50","./en-nz.js":"6f50","./en-sg":"b7e9","./en-sg.js":"b7e9","./eo":"65db","./eo.js":"65db","./es":"898b","./es-do":"0a3c","./es-do.js":"0a3c","./es-mx":"b5b7","./es-mx.js":"b5b7","./es-us":"55c9","./es-us.js":"55c9","./es.js":"898b","./et":"ec18","./et.js":"ec18","./eu":"0ff2","./eu.js":"0ff2","./fa":"8df4","./fa.js":"8df4","./fi":"81e9","./fi.js":"81e9","./fil":"d69a","./fil.js":"d69a","./fo":"0721","./fo.js":"0721","./fr":"9f26","./fr-ca":"d9f8","./fr-ca.js":"d9f8","./fr-ch":"0e49","./fr-ch.js":"0e49","./fr.js":"9f26","./fy":"7118","./fy.js":"7118","./ga":"5120","./ga.js":"5120","./gd":"f6b4","./gd.js":"f6b4","./gl":"8840","./gl.js":"8840","./gom-deva":"aaf2","./gom-deva.js":"aaf2","./gom-latn":"0caa","./gom-latn.js":"0caa","./gu":"e0c5","./gu.js":"e0c5","./he":"c7aa","./he.js":"c7aa","./hi":"dc4d","./hi.js":"dc4d","./hr":"4ba9","./hr.js":"4ba9","./hu":"5b14","./hu.js":"5b14","./hy-am":"d6b6","./hy-am.js":"d6b6","./id":"5038","./id.js":"5038","./is":"0558","./is.js":"0558","./it":"6e98","./it-ch":"6f12","./it-ch.js":"6f12","./it.js":"6e98","./ja":"079e","./ja.js":"079e","./jv":"b540","./jv.js":"b540","./ka":"201b","./ka.js":"201b","./kk":"6d79","./kk.js":"6d79","./km":"e81d","./km.js":"e81d","./kn":"3e92","./kn.js":"3e92","./ko":"22f8","./ko.js":"22f8","./ku":"2421","./ku.js":"2421","./ky":"9609","./ky.js":"9609","./lb":"440c","./lb.js":"440c","./lo":"b29d","./lo.js":"b29d","./lt":"26f9","./lt.js":"26f9","./lv":"b97c","./lv.js":"b97c","./me":"293c","./me.js":"293c","./mi":"688b","./mi.js":"688b","./mk":"6909","./mk.js":"6909","./ml":"02fb","./ml.js":"02fb","./mn":"958b","./mn.js":"958b","./mr":"39bd","./mr.js":"39bd","./ms":"ebe4","./ms-my":"6403","./ms-my.js":"6403","./ms.js":"ebe4","./mt":"1b45","./mt.js":"1b45","./my":"8689","./my.js":"8689","./nb":"6ce3","./nb.js":"6ce3","./ne":"3a39","./ne.js":"3a39","./nl":"facd","./nl-be":"db29","./nl-be.js":"db29","./nl.js":"facd","./nn":"b84c","./nn.js":"b84c","./oc-lnc":"167b","./oc-lnc.js":"167b","./pa-in":"f3ff","./pa-in.js":"f3ff","./pl":"8d57","./pl.js":"8d57","./pt":"f260","./pt-br":"d2d4","./pt-br.js":"d2d4","./pt.js":"f260","./ro":"972c","./ro.js":"972c","./ru":"957c","./ru.js":"957c","./sd":"6784","./sd.js":"6784","./se":"ffff","./se.js":"ffff","./si":"eda5","./si.js":"eda5","./sk":"7be6","./sk.js":"7be6","./sl":"8155","./sl.js":"8155","./sq":"c8f3","./sq.js":"c8f3","./sr":"cf1e","./sr-cyrl":"13e9","./sr-cyrl.js":"13e9","./sr.js":"cf1e","./ss":"52bd","./ss.js":"52bd","./sv":"5fbd","./sv.js":"5fbd","./sw":"74dc","./sw.js":"74dc","./ta":"3de5","./ta.js":"3de5","./te":"5cbb","./te.js":"5cbb","./tet":"576c","./tet.js":"576c","./tg":"3b1b","./tg.js":"3b1b","./th":"10e8","./th.js":"10e8","./tk":"5aff","./tk.js":"5aff","./tl-ph":"0f38","./tl-ph.js":"0f38","./tlh":"cf755","./tlh.js":"cf755","./tr":"0e81","./tr.js":"0e81","./tzl":"cf51","./tzl.js":"cf51","./tzm":"c109","./tzm-latn":"b53d","./tzm-latn.js":"b53d","./tzm.js":"c109","./ug-cn":"6117","./ug-cn.js":"6117","./uk":"ada2","./uk.js":"ada2","./ur":"5294","./ur.js":"5294","./uz":"2e8c","./uz-latn":"010e","./uz-latn.js":"010e","./uz.js":"2e8c","./vi":"2921","./vi.js":"2921","./x-pseudo":"fd7e","./x-pseudo.js":"fd7e","./yo":"7f33","./yo.js":"7f33","./zh-cn":"5c3a","./zh-cn.js":"5c3a","./zh-hk":"49ab","./zh-hk.js":"49ab","./zh-mo":"3a6c","./zh-mo.js":"3a6c","./zh-tw":"90ea","./zh-tw.js":"90ea"};function a(e){var t=r(e);return s(t)}function r(e){if(!s.o(i,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return i[e]}a.keys=function(){return Object.keys(i)},a.resolve=r,e.exports=a,a.id="4678"}}); \ No newline at end of file diff --git a/cookbook/tests/edits/test_edits_recipe.py b/cookbook/tests/edits/test_edits_recipe.py index da91ef3f8..0408d0015 100644 --- a/cookbook/tests/edits/test_edits_recipe.py +++ b/cookbook/tests/edits/test_edits_recipe.py @@ -149,7 +149,7 @@ class TestEditsRecipe(TestViews): r = self.user_client_1.post( url, - {'name': 'Test', 'working_time': 15, 'waiting_time': 15, } + {'name': 'Test', 'working_time': 15, 'waiting_time': 15, 'servings': 1, } ) recipe.refresh_from_db() self.assertEqual(recipe.working_time, 15) diff --git a/recipes/locale/de/LC_MESSAGES/django.mo b/recipes/locale/de/LC_MESSAGES/django.mo index f0015b3ba..2211174ee 100644 Binary files a/recipes/locale/de/LC_MESSAGES/django.mo and b/recipes/locale/de/LC_MESSAGES/django.mo differ diff --git a/recipes/locale/de/LC_MESSAGES/django.po b/recipes/locale/de/LC_MESSAGES/django.po index 9102d156e..f3161d54b 100644 --- a/recipes/locale/de/LC_MESSAGES/django.po +++ b/recipes/locale/de/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-12-26 13:48+0100\n" +"POT-Creation-Date: 2021-01-13 23:31+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,30 +18,34 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: recipes/settings.py:175 +#: .\recipes\settings.py:196 msgid "English" msgstr "Englisch" -#: recipes/settings.py:176 +#: .\recipes\settings.py:197 msgid "German" msgstr "Deutsch" -#: recipes/settings.py:177 +#: .\recipes\settings.py:198 msgid "Dutch" msgstr "" -#: recipes/settings.py:178 +#: .\recipes\settings.py:199 msgid "French" msgstr "" -#: recipes/settings.py:179 +#: .\recipes\settings.py:200 msgid "Catalan" msgstr "" -#: recipes/settings.py:180 +#: .\recipes\settings.py:201 msgid "Spanish" msgstr "" -#: recipes/settings.py:181 +#: .\recipes\settings.py:202 msgid "Italian" msgstr "" + +#: .\recipes\settings.py:203 +msgid "Latvian" +msgstr "" diff --git a/requirements.txt b/requirements.txt index 35fb9e721..ad9401795 100644 --- a/requirements.txt +++ b/requirements.txt @@ -29,4 +29,5 @@ microdata==0.7.1 django-random-queryset==0.1.3 Jinja2==2.11.2 django-webpack-loader==0.7.0 -django-js-reverse==0.9.1 \ No newline at end of file +django-js-reverse==0.9.1 +pre-commit==2.9.3 \ No newline at end of file diff --git a/vue/src/components/Step.vue b/vue/src/components/Step.vue index 9cb5a836b..b2e438a06 100644 --- a/vue/src/components/Step.vue +++ b/vue/src/components/Step.vue @@ -60,7 +60,7 @@ -
+