From 7e7657e444a94fe43d48c9cf842eda39ba770424 Mon Sep 17 00:00:00 2001 From: Brian Hagerty Date: Sat, 4 May 2024 11:00:08 -0500 Subject: [PATCH 01/24] Remove obsolete "version: 3" to eliminate warning message The "version: 3" entry is obsolete and throws a warning: 'version' is obsolete. AFAIK, there's no reason to keep it. There's a lengthy discussion of this issue in a different repo: https://github.com/jasonacox/Powerwall-Dashboard/issues/453 They got rid of "version" in that project. It seems like it should be removed here too. --- docs/install/docker/plain/docker-compose.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/install/docker/plain/docker-compose.yml b/docs/install/docker/plain/docker-compose.yml index 089e72c56..05d827067 100644 --- a/docs/install/docker/plain/docker-compose.yml +++ b/docs/install/docker/plain/docker-compose.yml @@ -1,4 +1,3 @@ -version: "3" services: db_recipes: restart: always From d976fafd4514e25f409c0301cb40c629bd958f62 Mon Sep 17 00:00:00 2001 From: Carsten Docktor Date: Sat, 4 May 2024 10:03:34 +0000 Subject: [PATCH 02/24] Translated using Weblate (German) Currently translated at 95.6% (464 of 485 strings) Translation: Tandoor/Recipes Backend Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/de/ --- cookbook/locale/de/LC_MESSAGES/django.po | 71 ++++++++++-------------- 1 file changed, 28 insertions(+), 43 deletions(-) diff --git a/cookbook/locale/de/LC_MESSAGES/django.po b/cookbook/locale/de/LC_MESSAGES/django.po index 24b567ce1..5b88498ee 100644 --- a/cookbook/locale/de/LC_MESSAGES/django.po +++ b/cookbook/locale/de/LC_MESSAGES/django.po @@ -15,10 +15,10 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 14:39+0100\n" -"PO-Revision-Date: 2024-03-19 23:47+0000\n" -"Last-Translator: Johannes Jandke \n" -"Language-Team: German \n" +"PO-Revision-Date: 2024-05-04 19:10+0000\n" +"Last-Translator: Carsten Docktor \n" +"Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -432,10 +432,8 @@ msgid "Other" msgstr "Andere" #: .\cookbook\migrations\0190_auto_20230525_1506.py:17 -#, fuzzy -#| msgid "Fats" msgid "Fat" -msgstr "Fette" +msgstr "Fett" #: .\cookbook\migrations\0190_auto_20230525_1506.py:17 #: .\cookbook\migrations\0190_auto_20230525_1506.py:18 @@ -556,10 +554,8 @@ msgid "Transpose Words" msgstr "" #: .\cookbook\models.py:1474 -#, fuzzy -#| msgid "Food Alias" msgid "Food Replace" -msgstr "Lebensmittel Alias" +msgstr "Lebensmittelersatz" #: .\cookbook\models.py:1475 #, fuzzy @@ -1029,13 +1025,11 @@ msgstr "Exportieren" #: .\cookbook\templates\base.html:287 msgid "Properties" -msgstr "" +msgstr "Eigenschaften" #: .\cookbook\templates\base.html:301 .\cookbook\views\lists.py:255 -#, fuzzy -#| msgid "Account Connections" msgid "Unit Conversions" -msgstr "Account-Verbindungen" +msgstr "Einheitenumwandlungen" #: .\cookbook\templates\base.html:318 .\cookbook\templates\index.html:47 msgid "Import Recipe" @@ -1055,10 +1049,8 @@ msgid "Space Settings" msgstr "Space Einstellungen" #: .\cookbook\templates\base.html:340 -#, fuzzy -#| msgid "External Recipes" msgid "External Connectors" -msgstr "Externe Rezepte" +msgstr "Externe Konnektoren" #: .\cookbook\templates\base.html:345 .\cookbook\templates\system.html:13 msgid "System" @@ -1519,10 +1511,8 @@ msgid "Back" msgstr "Zurück" #: .\cookbook\templates\property_editor.html:7 -#, fuzzy -#| msgid "Ingredient Editor" msgid "Property Editor" -msgstr "Zutateneditor" +msgstr "Eigenschaften-Editor" #: .\cookbook\templates\recipe_view.html:36 msgid "Comments" @@ -1969,10 +1959,8 @@ msgid "Sign in using" msgstr "Einloggen mit" #: .\cookbook\templates\space_manage.html:7 -#, fuzzy -#| msgid "Space Membership" msgid "Space Management" -msgstr "Space-Mitgliedschaft" +msgstr "Space-Management" #: .\cookbook\templates\space_manage.html:26 msgid "Space:" @@ -2069,6 +2057,11 @@ msgid "" "script to generate version information (done automatically in docker).\n" " " msgstr "" +"\n" +" Führe version.py im update script durch, um " +"Informationen zur Version anzuzeigen (wird automatisch von docker " +"durchgeführt).\n" +" " #: .\cookbook\templates\system.html:46 msgid "Media Serving" @@ -2179,21 +2172,19 @@ msgstr "" #: .\cookbook\templates\system.html:171 msgid "False" -msgstr "" +msgstr "Falsch" #: .\cookbook\templates\system.html:171 msgid "True" -msgstr "" +msgstr "Wahr" #: .\cookbook\templates\system.html:196 msgid "Hide" -msgstr "" +msgstr "Verbergen" #: .\cookbook\templates\system.html:199 -#, fuzzy -#| msgid "Show Log" msgid "Show" -msgstr "Log anzeigen" +msgstr "Anzeigen" #: .\cookbook\templates\url_import.html:8 msgid "URL Import" @@ -2604,14 +2595,12 @@ msgid "There was an error updating this storage backend!" msgstr "Es gab einen Fehler beim Aktualisieren dieser Speicherquelle!" #: .\cookbook\views\edit.py:134 -#, fuzzy -#| msgid "Changes saved!" msgid "Config saved!" -msgstr "Änderungen gespeichert!" +msgstr "Einstellung gespeichert!" #: .\cookbook\views\edit.py:142 msgid "ConnectorConfig" -msgstr "" +msgstr "Konnektor-Config" #: .\cookbook\views\edit.py:198 msgid "Changes saved!" @@ -2669,13 +2658,11 @@ msgstr "Schritte" #: .\cookbook\views\lists.py:270 msgid "Property Types" -msgstr "" +msgstr "Eigenschaftstypen" #: .\cookbook\views\new.py:86 -#, fuzzy -#| msgid "This feature is not available in the demo version!" msgid "This feature is not enabled by the server admin!" -msgstr "Diese Funktion ist in der Demo-Version nicht verfügbar!" +msgstr "Diese Funktion wurde vom Administrator nicht freigeschaltet!" #: .\cookbook\views\new.py:123 msgid "Imported new recipe!" @@ -2810,7 +2797,7 @@ msgstr "" #: .\cookbook\views\views.py:446 msgid "Manage recipes, shopping list, meal plans and more." -msgstr "" +msgstr "Manage Rezepte, Einkaufslisten Essenspläne und mehr." #: .\cookbook\views\views.py:453 msgid "Plan" @@ -2818,17 +2805,15 @@ msgstr "Plan" #: .\cookbook\views\views.py:453 msgid "View your meal Plan" -msgstr "" +msgstr "Betrachte deinen Essensplan" #: .\cookbook\views\views.py:454 msgid "View your cookbooks" -msgstr "" +msgstr "Betrachte deine Kochbücher" #: .\cookbook\views\views.py:455 -#, fuzzy -#| msgid "New Shopping List" msgid "View your shopping lists" -msgstr "Neue Einkaufsliste" +msgstr "Zeige deine Einkaufslisten" #~ msgid "Default unit" #~ msgstr "Standardeinheit" From b32a7a9134082a2c3fc2f3263f38e7eafb604a04 Mon Sep 17 00:00:00 2001 From: Brian Hagerty Date: Mon, 6 May 2024 12:31:35 -0500 Subject: [PATCH 03/24] Remove obsolete "version:" entry Per my other PR, "version" is obsolete and throws a warning. --- docs/install/docker/ipv6_plain/docker-compose.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/install/docker/ipv6_plain/docker-compose.yml b/docs/install/docker/ipv6_plain/docker-compose.yml index e989fc09c..971518a0f 100644 --- a/docs/install/docker/ipv6_plain/docker-compose.yml +++ b/docs/install/docker/ipv6_plain/docker-compose.yml @@ -1,4 +1,3 @@ -version: "2.4" services: db_recipes: restart: always @@ -61,4 +60,4 @@ networks: ipam: driver: default config: - - subnet: ${IPV6_PREFIX:?NO_IPV6_PREFIX}::/${IPV6_PREFIX_LENGTH:?NO_IPV6_PREFIX_LENGTH} \ No newline at end of file + - subnet: ${IPV6_PREFIX:?NO_IPV6_PREFIX}::/${IPV6_PREFIX_LENGTH:?NO_IPV6_PREFIX_LENGTH} From e475115b6a1b4dd32f1b131ad0dc60a517feaef3 Mon Sep 17 00:00:00 2001 From: Brian Hagerty Date: Mon, 6 May 2024 12:36:53 -0500 Subject: [PATCH 04/24] Delete obsolete "version" entry Per my first PR, "version" is obsolete and throws a warning. --- docs/install/docker/nginx-proxy/docker-compose.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/install/docker/nginx-proxy/docker-compose.yml b/docs/install/docker/nginx-proxy/docker-compose.yml index 2e408646d..dd43cbaeb 100644 --- a/docs/install/docker/nginx-proxy/docker-compose.yml +++ b/docs/install/docker/nginx-proxy/docker-compose.yml @@ -1,4 +1,3 @@ -version: "3" services: db_recipes: restart: always From 44832f7c117035d7db1905cdc4103ceb3466fcfc Mon Sep 17 00:00:00 2001 From: Brian Hagerty Date: Mon, 6 May 2024 12:38:13 -0500 Subject: [PATCH 05/24] Delete obsolete "version" entry from compose.yml Per my other PR, "version" is obsolete --- docs/install/docker/traefik-nginx/docker-compose.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/install/docker/traefik-nginx/docker-compose.yml b/docs/install/docker/traefik-nginx/docker-compose.yml index afe2fbfb7..fd94e67af 100644 --- a/docs/install/docker/traefik-nginx/docker-compose.yml +++ b/docs/install/docker/traefik-nginx/docker-compose.yml @@ -1,4 +1,3 @@ -version: "3" services: db_recipes: restart: always From f92f18ecb203380d231565e368e6220069fd6f9d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 May 2024 20:55:38 +0000 Subject: [PATCH 06/24] Bump jinja2 from 3.1.3 to 3.1.4 Bumps [jinja2](https://github.com/pallets/jinja) from 3.1.3 to 3.1.4. - [Release notes](https://github.com/pallets/jinja/releases) - [Changelog](https://github.com/pallets/jinja/blob/main/CHANGES.rst) - [Commits](https://github.com/pallets/jinja/compare/3.1.3...3.1.4) --- updated-dependencies: - dependency-name: jinja2 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 51189602f..670f9a158 100644 --- a/requirements.txt +++ b/requirements.txt @@ -26,7 +26,7 @@ uritemplate==4.1.1 beautifulsoup4==4.12.3 microdata==0.8.0 mock==5.1.0 -Jinja2==3.1.3 +Jinja2==3.1.4 django-webpack-loader==3.0.1 git+https://github.com/BITSOLVER/django-js-reverse@071e304fd600107bc64bbde6f2491f1fe049ec82 django-allauth==0.61.1 From 3f258fbd877ebba80f186f533e87c3b88c41d60f Mon Sep 17 00:00:00 2001 From: Jakob Priesner Date: Fri, 10 May 2024 09:41:10 +0000 Subject: [PATCH 07/24] Translated using Weblate (German) Currently translated at 98.7% (479 of 485 strings) Translation: Tandoor/Recipes Backend Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/de/ --- cookbook/locale/de/LC_MESSAGES/django.po | 72 ++++++++++-------------- 1 file changed, 31 insertions(+), 41 deletions(-) diff --git a/cookbook/locale/de/LC_MESSAGES/django.po b/cookbook/locale/de/LC_MESSAGES/django.po index 5b88498ee..ffe494c34 100644 --- a/cookbook/locale/de/LC_MESSAGES/django.po +++ b/cookbook/locale/de/LC_MESSAGES/django.po @@ -15,8 +15,8 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 14:39+0100\n" -"PO-Revision-Date: 2024-05-04 19:10+0000\n" -"Last-Translator: Carsten Docktor \n" +"PO-Revision-Date: 2024-05-11 00:33+0000\n" +"Last-Translator: Jakob Priesner \n" "Language-Team: German \n" "Language: de\n" @@ -494,10 +494,8 @@ msgid "Nutrition" msgstr "Nährwerte" #: .\cookbook\models.py:919 -#, fuzzy -#| msgid "Merge" msgid "Allergen" -msgstr "Zusammenführen" +msgstr "Allergen" #: .\cookbook\models.py:920 msgid "Price" @@ -551,17 +549,15 @@ msgstr "Neue Einheit" #: .\cookbook\models.py:1473 msgid "Transpose Words" -msgstr "" +msgstr "Wörter austauschen" #: .\cookbook\models.py:1474 msgid "Food Replace" msgstr "Lebensmittelersatz" #: .\cookbook\models.py:1475 -#, fuzzy -#| msgid "Description Replace" msgid "Unit Replace" -msgstr "Beschreibung ersetzen" +msgstr "Einheit Ersetzen" #: .\cookbook\models.py:1476 msgid "Name Replace" @@ -2153,10 +2149,8 @@ msgid "Info" msgstr "Info" #: .\cookbook\templates\system.html:99 .\cookbook\templates\system.html:116 -#, fuzzy -#| msgid "Use fractions" msgid "Migrations" -msgstr "Brüche verwenden" +msgstr "Migrationen" #: .\cookbook\templates\system.html:105 msgid "" @@ -2169,6 +2163,14 @@ msgid "" "issue.\n" " " msgstr "" +"\n" +" Migrationen sollten niemals fehlschlagen!\n" +" Fehlgeschlagene Migrationen werden wahrscheinlich dazu führen, " +"dass wichtige Teile der App nicht mehr korrekt funktionieren.\n" +" Wenn eine Migration fehlschlägt, vergewissern Sie sich, dass Sie " +"die neueste Version verwenden. Wenn ja, posten Sie bitte das " +"Migrationsprotokoll und die Übersicht unten in einem GitHub-Problem.\n" +" " #: .\cookbook\templates\system.html:171 msgid "False" @@ -2261,18 +2263,18 @@ msgstr "{obj.name} wurde der Einkaufsliste hinzugefügt." #: .\cookbook\views\api.py:743 msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD." -msgstr "" +msgstr "Filtern Sie Essenspläne ab Datum (einschließlich) im Format JJJJ-MM-TT." #: .\cookbook\views\api.py:744 msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD." msgstr "" +"Filtern Sie die Essenspläne nach Datum (einschließlich) im Format JJJJ-MM-TT." #: .\cookbook\views\api.py:745 -#, fuzzy -#| msgid "ID of recipe a step is part of. For multiple repeat parameter." msgid "Filter meal plans with MealType ID. For multiple repeat parameter." msgstr "" -"ID des Rezeptes zu dem ein Schritt gehört. Kann mehrfach angegeben werden." +"Filtern Sie Mahlzeitenpläne nach der MealType ID. Für mehrere " +"Wiederholungsparameter." #: .\cookbook\views\api.py:873 msgid "ID of recipe a step is part of. For multiple repeat parameter." @@ -2468,18 +2470,14 @@ msgstr "" "mehrfach angegeben werden." #: .\cookbook\views\api.py:1126 -#, fuzzy -#| msgid "" -#| "Filter shopping list entries on checked. [true, false, both, recent]
- recent includes unchecked items and recently completed items." msgid "" "Filter shopping list entries on checked. [true, false, both, recent]
- recent includes unchecked items and recently " "completed items." msgstr "" -"Einkaufslisteneinträge nach Häkchen filtern. [ja, nein, beides, " -"kürzlich]
- kürzlich enthält nicht abgehakte Einträge und " -"kürzlich abgeschlossene Einträge." +"Einkaufslisteneinträge nach Häkchen filtern. [ja, nein, beides, " +"kürzlich]
- kürzlich enthält nicht abgehakte " +"Einträge und kürzlich abgeschlossene Einträge." #: .\cookbook\views\api.py:1129 msgid "Returns the shopping list entries sorted by supermarket category order." @@ -2488,7 +2486,7 @@ msgstr "" #: .\cookbook\views\api.py:1211 msgid "Filter for entries with the given recipe" -msgstr "" +msgstr "Filter für Einträge mit dem angegebenen Rezept" #: .\cookbook\views\api.py:1293 #, fuzzy @@ -2524,7 +2522,7 @@ msgstr "Es konnten keine passenden Daten gefunden werden." #: .\cookbook\views\api.py:1547 msgid "File is above space limit" -msgstr "" +msgstr "Datei überschreitet das Speicherplatzlimit" #: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114 msgid "Importing is not implemented for this provider" @@ -2678,11 +2676,10 @@ msgid "This feature is not available in the demo version!" msgstr "Diese Funktion ist in der Demo-Version nicht verfügbar!" #: .\cookbook\views\views.py:74 -#, fuzzy -#| msgid "You have reached the maximum number of recipes for your space." msgid "" "You have the reached the maximum amount of spaces that can be owned by you." -msgstr "Du hast die maximale Anzahl an Rezepten für Deinen Space erreicht." +msgstr "" +"Du hast die maximale Anzahl an Rezepten erreicht, die Du besitzen kannst." #: .\cookbook\views\views.py:89 msgid "" @@ -2721,29 +2718,22 @@ msgstr "Die \"Ungenaue\" Suche ist mit diesem Suchtyp nicht kompatibel!" #, python-format msgid "PostgreSQL %(v)s is deprecated. Upgrade to a fully supported version!" msgstr "" +"PostgreSQL %(v)s ist veraltet. Aktualisieren Sie auf eine vollständig " +"unterstützte Version!" #: .\cookbook\views\views.py:308 #, python-format msgid "You are running PostgreSQL %(v1)s. PostgreSQL %(v2)s is recommended" -msgstr "" +msgstr "Sie verwenden PostgreSQL %(v1)s. PostgreSQL %(v2)s wird empfohlen" #: .\cookbook\views\views.py:312 -#, fuzzy -#| msgid "" -#| "\n" -#| " This application is not running with a Postgres database " -#| "backend. This is ok but not recommended as some\n" -#| " features only work with postgres databases.\n" -#| " " msgid "" "This application is not running with a Postgres database backend. This is ok " "but not recommended as some features only work with postgres databases." msgstr "" -"\n" -" Diese Anwendung läuft nicht mit einer PostgreSQL Datenbank. Dies " -"ist in Ordnung, wird aber nicht empfohlen, da einige\n" -"Funktionen nur mit einer PostgreSQL-Datenbanken funktionieren.\n" -" " +"Diese Anwendung läuft nicht mit einer PostgreSQL Datenbank. Dies ist in " +"Ordnung, wird aber nicht empfohlen, da einige Funktionen nur mit einer " +"PostgreSQL-Datenbanken funktionieren." #: .\cookbook\views\views.py:355 #, fuzzy From 9254a36636c2f9da86a564f53b6a25e7b215bfc9 Mon Sep 17 00:00:00 2001 From: only Date: Sat, 18 May 2024 14:58:57 +0000 Subject: [PATCH 08/24] Translated using Weblate (Chinese (Traditional)) Currently translated at 11.3% (55 of 485 strings) Translation: Tandoor/Recipes Backend Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/zh_Hant/ --- cookbook/locale/zh_Hant/LC_MESSAGES/django.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cookbook/locale/zh_Hant/LC_MESSAGES/django.po b/cookbook/locale/zh_Hant/LC_MESSAGES/django.po index 223c02997..276b1cecf 100644 --- a/cookbook/locale/zh_Hant/LC_MESSAGES/django.po +++ b/cookbook/locale/zh_Hant/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 14:39+0100\n" -"PO-Revision-Date: 2023-03-12 02:55+0000\n" -"Last-Translator: Feng Zhong \n" +"PO-Revision-Date: 2024-05-19 13:38+0000\n" +"Last-Translator: only \n" "Language-Team: Chinese (Traditional) \n" "Language: zh_Hant\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.15\n" +"X-Generator: Weblate 5.4.2\n" #: .\cookbook\forms.py:45 msgid "" @@ -31,7 +31,7 @@ msgstr "名字" #: .\cookbook\forms.py:62 .\cookbook\forms.py:246 .\cookbook\views\lists.py:103 msgid "Keywords" -msgstr "關鍵詞" +msgstr "關鍵字" #: .\cookbook\forms.py:62 msgid "Preparation time in minutes" From 2cf9c288be758d7de46a75cf56aaccd714fa834d Mon Sep 17 00:00:00 2001 From: only Date: Sat, 18 May 2024 14:44:30 +0000 Subject: [PATCH 09/24] Translated using Weblate (Chinese (Traditional)) Currently translated at 8.2% (47 of 569 strings) Translation: Tandoor/Recipes Frontend Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/zh_Hant/ --- vue/src/locales/zh_Hant.json | 73 ++++++++++++++++++++++++------------ 1 file changed, 48 insertions(+), 25 deletions(-) diff --git a/vue/src/locales/zh_Hant.json b/vue/src/locales/zh_Hant.json index cda8efe3b..acedc0382 100644 --- a/vue/src/locales/zh_Hant.json +++ b/vue/src/locales/zh_Hant.json @@ -1,28 +1,28 @@ { - "err_fetching_resource": "", - "err_creating_resource": "", - "err_updating_resource": "", - "err_deleting_resource": "", - "success_fetching_resource": "", - "success_creating_resource": "", - "success_updating_resource": "", - "success_deleting_resource": "", - "import_running": "", - "all_fields_optional": "", - "convert_internal": "", - "show_only_internal": "", - "Log_Recipe_Cooking": "", - "External_Recipe_Image": "", - "Add_to_Shopping": "", - "Add_to_Plan": "", - "Step_start_time": "", - "Sort_by_new": "", - "Recipes_per_page": "", - "Manage_Books": "", - "Meal_Plan": "", - "Select_Book": "", - "Recipe_Image": "", - "Import_finished": "", + "err_fetching_resource": "獲取資源時發生錯誤!", + "err_creating_resource": "創建資源時發生錯誤!", + "err_updating_resource": "更新資源時發生錯誤!", + "err_deleting_resource": "刪除資源時發生錯誤!", + "success_fetching_resource": "成功獲取資源!", + "success_creating_resource": "成功創建資源!", + "success_updating_resource": "成功更新資源!", + "success_deleting_resource": "成功刪除資源!", + "import_running": "正在進行匯入,請稍候!", + "all_fields_optional": "所有欄位都是可選的,可以留空。", + "convert_internal": "轉換為內部食譜", + "show_only_internal": "僅顯示內部食譜", + "Log_Recipe_Cooking": "記錄食譜烹飪", + "External_Recipe_Image": "外部食譜圖片", + "Add_to_Shopping": "加入購物清單", + "Add_to_Plan": "加入計劃", + "Step_start_time": "步驟開始時間", + "Sort_by_new": "按最新排序", + "Recipes_per_page": "每頁食譜", + "Manage_Books": "管理書籍", + "Meal_Plan": "膳食計劃", + "Select_Book": "選擇書籍", + "Recipe_Image": "食譜圖片", + "Import_finished": "匯入完成", "View_Recipes": "", "Log_Cooking": "", "New_Recipe": "", @@ -84,5 +84,28 @@ "Use_Plural_Unit_Simple": "", "Use_Plural_Food_Always": "", "Use_Plural_Food_Simple": "", - "plural_usage_info": "" + "plural_usage_info": "", + "Table_of_Contents": "目錄", + "Select_File": "選擇檔案", + "file_upload_disabled": "您的空間未啟用檔案上傳功能。", + "step_time_minutes": "步驟時間(以分鐘為單位)", + "per_serving": "每份", + "warning_feature_beta": "此功能目前處於測試階段 (BETA)。使用此功能時,請預期可能會有漏洞和破壞性變更,未來可能會丟失與功能相關的數據。", + "err_deleting_protected_resource": "您嘗試刪除的對象仍在使用中,無法刪除。", + "err_moving_resource": "移動資源時發生錯誤!", + "err_merging_resource": "合併資源時發生錯誤!", + "success_moving_resource": "成功移動資源!", + "success_merging_resource": "成功合併資源!", + "show_split_screen": "分割視圖", + "Copy_template_reference": "複製參考模板", + "confirm_delete": "您確定要刪除這個{object}嗎?", + "Save_and_View": "儲存並查看", + "Add_nutrition_recipe": "為食譜添加營養資訊", + "Remove_nutrition_recipe": "從食譜中刪除營養資訊", + "warning_space_delete": "您可以刪除您的空間,包括所有食譜、購物清單、餐飲計畫以及其他您創建的內容。此操作無法撤銷!您確定要這樣做嗎?", + "food_inherit_info": "食物上應該預設繼承的欄位。", + "Hide_as_header": "隱藏為標題", + "err_importing_recipe": "匯入食譜時發生錯誤!", + "recipe_property_info": "您也可以為食材添加屬性,以便根據您的食譜自動計算它們!", + "Show_as_header": "顯示為標題" } From 98d4ce5ff897e401f7f070104ba26223b2f67554 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 21 May 2024 05:30:33 +0000 Subject: [PATCH 10/24] --- updated-dependencies: - dependency-name: requests dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 670f9a158..b68e26195 100644 --- a/requirements.txt +++ b/requirements.txt @@ -16,7 +16,7 @@ Markdown==3.5.1 Pillow==10.3.0 psycopg2-binary==2.9.9 python-dotenv==1.0.0 -requests==2.31.0 +requests==2.32.0 six==1.16.0 webdavclient3==3.14.6 whitenoise==6.6.0 From 6d4dbc26a4aaa977d0764f6d4679fc4b48bb171d Mon Sep 17 00:00:00 2001 From: tarek EL SOL Date: Mon, 27 May 2024 20:37:20 +0000 Subject: [PATCH 11/24] Translated using Weblate (French) Currently translated at 87.2% (423 of 485 strings) Translation: Tandoor/Recipes Backend Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/fr/ --- cookbook/locale/fr/LC_MESSAGES/django.po | 34 ++++++++++++------------ 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/cookbook/locale/fr/LC_MESSAGES/django.po b/cookbook/locale/fr/LC_MESSAGES/django.po index 87b0b6565..48475bddc 100644 --- a/cookbook/locale/fr/LC_MESSAGES/django.po +++ b/cookbook/locale/fr/LC_MESSAGES/django.po @@ -14,10 +14,10 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 14:39+0100\n" -"PO-Revision-Date: 2024-03-19 13:59+0000\n" -"Last-Translator: Anthony BARRIER \n" -"Language-Team: French \n" +"PO-Revision-Date: 2024-05-28 00:57+0000\n" +"Last-Translator: tarek EL SOL \n" +"Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -76,8 +76,7 @@ msgstr "Ajoutez votre commentaire : " #: .\cookbook\forms.py:151 msgid "Leave empty for dropbox and enter app password for nextcloud." msgstr "" -"Laissez vide pour Dropbox et renseignez votre mot de passe d’application " -"pour Nextcloud." +"Laissez vide pour Dropbox et renseignez votre mot de passe pour Nextcloud." #: .\cookbook\forms.py:154 msgid "Leave empty for nextcloud and enter api token for dropbox." @@ -137,8 +136,8 @@ msgid "" "An email address is not required but if present the invite link will be sent " "to the user." msgstr "" -"Une adresse mail n’est pas requise mais si elle est renseignée, le lien " -"d’invitation sera envoyé à l’utilisateur." +"Une adresse mail n’est pas requise, mais si elle est renseignée, le lien d’" +"invitation sera envoyé à l’utilisateur." #: .\cookbook\forms.py:287 msgid "Name already taken." @@ -170,16 +169,16 @@ msgid "" "Use fuzzy matching on units, keywords and ingredients when editing and " "importing recipes." msgstr "" -"Utilisez la correspondance floue sur les unités, les mots-clés et les " -"ingrédients lors de l’édition et de l’importation de recettes." +"Employez la correspondance approximative pour les unités, les mots-clés et " +"les ingrédients pendant l'édition et l'importation des recettes." #: .\cookbook\forms.py:342 msgid "" "Fields to search ignoring accents. Selecting this option can improve or " "degrade search quality depending on language" msgstr "" -"Champs à rechercher en ignorant les accents. La sélection de cette option " -"peut améliorer ou dégrader la qualité de la recherche en fonction de la " +"La recherche de champs sans tenir compte des accents peut soit améliorer " +"soit détériorer la qualité des résultats de recherche, cela dépend de la " "langue" #: .\cookbook\forms.py:343 @@ -187,17 +186,18 @@ msgid "" "Fields to search for partial matches. (e.g. searching for 'Pie' will return " "'pie' and 'piece' and 'soapie')" msgstr "" -"Champs à rechercher pour les correspondances partielles. (par exemple, la " -"recherche de « Tarte » renverra « tarte », « tartelette » et « tartes »)" +"Cherchez des champs pour des correspondances partielles. Par exemple : " +"rechercher \"Tarte\" pourrait retourner \"tarte\", \"tartelette\", et " +"\"tartes\"" #: .\cookbook\forms.py:344 msgid "" "Fields to search for beginning of word matches. (e.g. searching for 'sa' " "will return 'salad' and 'sandwich')" msgstr "" -"Champs permettant de rechercher les correspondances de début de mot (par " -"exemple, si vous recherchez « sa », vous obtiendrez « salade » et " -"« sandwich»)" +"Les champs de recherche conçus pour trouver des correspondances en début de " +"mot vous permettront, par exemple, de saisir « sa » et d'obtenir des " +"résultats tels que « salade » et « sandwich »" #: .\cookbook\forms.py:345 msgid "" From 0cb415f70de08f12cd61f1dc1a2771d1aaa9df62 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 18 Jun 2024 17:23:52 +0000 Subject: [PATCH 12/24] Bump ws from 7.5.9 to 7.5.10 in /vue Bumps [ws](https://github.com/websockets/ws) from 7.5.9 to 7.5.10. - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/7.5.9...7.5.10) --- updated-dependencies: - dependency-name: ws dependency-type: indirect ... Signed-off-by: dependabot[bot] --- vue/yarn.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/vue/yarn.lock b/vue/yarn.lock index eed173f13..9216792c9 100644 --- a/vue/yarn.lock +++ b/vue/yarn.lock @@ -12077,14 +12077,14 @@ write-file-atomic@^2.3.0: signal-exit "^3.0.2" "ws@^5.2.0 || ^6.0.0 || ^7.0.0", ws@^7.3.1: - version "7.5.9" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" - integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + version "7.5.10" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== ws@^8.13.0: - version "8.14.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.14.1.tgz#4b9586b4f70f9e6534c7bb1d3dc0baa8b8cf01e0" - integrity sha512-4OOseMUq8AzRBI/7SLMUwO+FEDnguetSk7KMb1sHwvF2w2Wv5Hoj0nlifx8vtGsftE/jWHojPy8sMMzYLJ2G/A== + version "8.17.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" + integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== xml2js@^0.5.0: version "0.5.0" From 769561349f220671a7790ad67378fb96cb09f24c Mon Sep 17 00:00:00 2001 From: Renato Date: Thu, 20 Jun 2024 14:35:59 +0000 Subject: [PATCH 13/24] Translated using Weblate (Portuguese (Brazil)) Currently translated at 89.2% (508 of 569 strings) Translation: Tandoor/Recipes Frontend Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/pt_BR/ --- vue/src/locales/pt_BR.json | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/vue/src/locales/pt_BR.json b/vue/src/locales/pt_BR.json index bd34a7e87..e5fe9088b 100644 --- a/vue/src/locales/pt_BR.json +++ b/vue/src/locales/pt_BR.json @@ -247,8 +247,8 @@ "shopping_share_desc": "Usuários poderão ver todos os itens que adicionar à sua lista de compras. Eles devem adicioná-lo para ver os itens na lista deles.", "shopping_auto_sync_desc": "Definir a 0 irá desativar a sincronização automática. Quando se visualiza uma lista de compras a lista é atualizada após um número determinado de segundos para sincronizar com possíveis alterações feitas por outros. Útil quando se compartilha a lista de compras porém irá consumir dados móveis.", "mealplan_autoadd_shopping_desc": "Automaticamente inclui ingredientes do plano de refeição para a lista de compras.", - "mealplan_autoexclude_onhand_desc": "", - "mealplan_autoinclude_related_desc": "", + "mealplan_autoexclude_onhand_desc": "Ao adicionar um plano de refeições à lista de compras (manualmente ou automaticamente), exclua os ingredientes que já estão disponíveis.", + "mealplan_autoinclude_related_desc": "Ao adicionar um plano de refeições à lista de compras (manualmente ou automaticamente), inclua todas as receitas relacionadas.", "default_delay_desc": "", "filter_to_supermarket": "Filtro para Supermercado", "Coming_Soon": "Em breve", @@ -502,5 +502,30 @@ "Auto_Sort_Help": "Mover todos os ingredientes para o passo mais indicado.", "Ingredient Overview": "Ingredientes - Visão Geral", "Cosmetic": "Aparência", - "err_importing_recipe": "Não existem erros ao importar a receita!" + "err_importing_recipe": "Não existem erros ao importar a receita!", + "FDC_ID_help": "ID do banco de dados FDC", + "Calculator": "Calculadora", + "created_by": "Criado por", + "FDC_ID": "FDC ID", + "property_type_fdc_hint": "Apenas tipos de propriedade com um ID FDC podem puxar dados automaticamente do banco de dados FDC", + "Data_Import_Info": "Enriqueça seu espaço importando uma lista comunitariamente curada de alimentos, unidades e mais para melhorar sua coleção de receitas.", + "CustomThemeHelp": "Substituir estilos do tema selecionado fazendo upload de um arquivo CSS personalizado.", + "CustomImageHelp": "Faça upload de uma imagem para mostrar na visão geral do espaço.", + "CustomLogoHelp": "Faça o upload de imagens quadradas em diferentes tamanhos para alterar o logotipo na aba do navegador e no aplicativo web instalado.", + "CustomTheme": "Tema Personalizado", + "ShowRecentlyCompleted": "Mostrar itens recentemente concluídos", + "Input": "Entrada", + "Undo": "Desfazer", + "NoMoreUndo": "Nenhuma alteração para desfazer.", + "Delete_All": "Excluir tudo", + "Property_Editor": "Editor de Propriedades", + "CustomNavLogoHelp": "Faça upload de uma imagem para usar como logotipo na barra de navegação.", + "CustomLogos": "Logotipos Personalizados", + "ShoppingBackgroundSyncWarning": "Rede ruim, aguardando sincronização...", + "open_data_help_text": "O projeto Tandoor Open Data fornece dados contribuídos pela comunidade para o Tandoor. Este campo é preenchido automaticamente ao importá-lo e permite atualizações no futuro.", + "Open_Data_Slug": "Identificador de Dados Abertos", + "Properties_Food_Amount": "Quantidade de Alimento das Propriedades", + "Properties_Food_Unit": "Unidade de Alimento das Propriedades", + "Shopping_input_placeholder": "ex. Batata/100 Batatas/100 g Batatas", + "FDC_Search": "Busca FDC" } From 202d8afa1036615264875bc79c5e10baf1ec172c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Jun 2024 19:05:46 +0000 Subject: [PATCH 14/24] Bump djangorestframework from 3.14.0 to 3.15.2 Bumps [djangorestframework](https://github.com/encode/django-rest-framework) from 3.14.0 to 3.15.2. - [Release notes](https://github.com/encode/django-rest-framework/releases) - [Commits](https://github.com/encode/django-rest-framework/compare/3.14.0...3.15.2) --- updated-dependencies: - dependency-name: djangorestframework dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index b68e26195..56788a705 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,7 +5,7 @@ django-cleanup==8.0.0 django-crispy-forms==2.1 crispy-bootstrap4==2022.1 django-tables2==2.7.0 -djangorestframework==3.14.0 +djangorestframework==3.15.2 drf-writable-nested==0.7.0 django-oauth-toolkit==2.3.0 django-debug-toolbar==4.3.0 From 17d34c5ca704f483c0240b40f1b65fcae972b697 Mon Sep 17 00:00:00 2001 From: vabene1111 Date: Thu, 27 Jun 2024 13:48:11 +0200 Subject: [PATCH 15/24] improved allowed hosts docs, default config and added a system warning --- .env.template | 3 +++ cookbook/templates/system.html | 11 +++++++++++ cookbook/views/views.py | 2 +- docs/system/configuration.md | 23 ++++++++++++----------- 4 files changed, 27 insertions(+), 12 deletions(-) diff --git a/.env.template b/.env.template index a7adf092f..0b37c05c5 100644 --- a/.env.template +++ b/.env.template @@ -6,6 +6,9 @@ # random secret key, use for example `base64 /dev/urandom | head -c50` to generate one SECRET_KEY= +# allowed hosts (see documentation), should be set to your hostname(s) but might be * (default) for some proxies/providers +# ALLOWED_HOSTS=recipes.mydomain.com + # add only a database password if you want to run with the default postgres, otherwise change settings accordingly DB_ENGINE=django.db.backends.postgresql POSTGRES_HOST=db_recipes diff --git a/cookbook/templates/system.html b/cookbook/templates/system.html index 873d46653..e6995578b 100644 --- a/cookbook/templates/system.html +++ b/cookbook/templates/system.html @@ -82,6 +82,17 @@ {% else %} {% trans 'Everything is fine!' %} {% endif %} + +

{% trans 'Allowed Hosts' %} {% if '*' in allowed_hosts %} + {% trans 'Warning' %}{% else %}{% trans 'Ok' %}{% endif %}

+ {% if debug %} + {% blocktrans %} + Your allowed hosts are configured to allow every host. This might be ok in some setups but should be avoided. Please see the docs about this. + {% endblocktrans %} + {% else %} + {% trans 'Everything is fine!' %} + {% endif %}

{% trans 'Database' %} diff --git a/cookbook/views/views.py b/cookbook/views/views.py index 58ffdf736..c0592edbd 100644 --- a/cookbook/views/views.py +++ b/cookbook/views/views.py @@ -348,7 +348,7 @@ def system(request): request, 'system.html', { 'gunicorn_media': settings.GUNICORN_MEDIA, 'debug': settings.DEBUG, 'postgres': postgres, 'postgres_version': postgres_ver, 'postgres_status': database_status, 'postgres_message': database_message, 'version_info': VERSION_INFO, 'plugins': PLUGINS, 'secret_key': secret_key, 'orphans': orphans, 'migration_info': migration_info, - 'missing_migration': missing_migration, + 'missing_migration': missing_migration, 'allowed_hosts': settings.ALLOWED_HOSTS, }) diff --git a/docs/system/configuration.md b/docs/system/configuration.md index 90f75963c..af5d39849 100644 --- a/docs/system/configuration.md +++ b/docs/system/configuration.md @@ -27,6 +27,18 @@ SECRET_KEY_FILE=/path/to/file.txt #$tp%v6*(*ba01wcz(ip(i5vfz8z$f%qdio&q@anr1#$=%(m4c ``` +#### Allowed Hosts + +> default `*` - options: `recipes.mydomain.com,cooking.mydomain.com,...` (comma seperated domain/ip list) + +Security setting to prevent HTTP Host Header Attacks, +see [Django docs](https://docs.djangoproject.com/en/5.0/ref/settings/#allowed-hosts). +Some proxies require `*` (default) but it should be set to the actual host(s). + +``` +ALLOWED_HOSTS=recipes.mydomain.com +``` + ### Database Multiple parameters are required to configure the database. @@ -92,17 +104,6 @@ Port for gunicorn to bind to. Should not be changed if using docker stack with r TANDOOR_PORT=8080 ``` -#### Allowed Hosts - -> default `*` - options: `recipes.mydomain.com,cooking.mydomain.com,...` (comma seperated domain/ip list) - -Security setting to prevent HTTP Host Header Attacks, -see [Django docs](https://docs.djangoproject.com/en/5.0/ref/settings/#allowed-hosts). -Many reverse proxies handle this and require the setting to be `*` (default). - -``` -ALLOWED_HOSTS=recipes.mydomain.com -``` #### URL Path From 818ca0b2e4117ca2cd4f4ab94ce84e6eebad5a71 Mon Sep 17 00:00:00 2001 From: Daniel Albers Date: Wed, 3 Jul 2024 13:45:33 +0200 Subject: [PATCH 16/24] Gracefully handle lookup errors in resolveDjangoUrl --- vue/src/utils/utils.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/vue/src/utils/utils.js b/vue/src/utils/utils.js index 6316d45fe..b0ed1e979 100644 --- a/vue/src/utils/utils.js +++ b/vue/src/utils/utils.js @@ -242,17 +242,22 @@ export const ResolveUrlMixin = { } export function resolveDjangoUrl(url, params = null) { + let fun = window.Urls[url]; + if (typeof fun !== 'function') { + console.error(`window.Urls[${url}] is not a function: ${fun}`); + return + } if (params == null) { - return window.Urls[url]() + return fun() } else if (typeof params != "object") { - return window.Urls[url](params) + return fun(params) } else if (typeof params == "object") { if (params.length === 1) { - return window.Urls[url](params) + return fun(params) } else if (params.length === 2) { - return window.Urls[url](params[0], params[1]) + return fun(params[0], params[1]) } else if (params.length === 3) { - return window.Urls[url](params[0], params[1], params[2]) + return fun(params[0], params[1], params[2]) } } } @@ -774,4 +779,4 @@ export const formFunctions = { } return form }, -} \ No newline at end of file +} From 93613c9781c2365acb861a661b8389a6a6871da8 Mon Sep 17 00:00:00 2001 From: Taylan TATLI Date: Tue, 2 Jul 2024 17:55:31 +0000 Subject: [PATCH 17/24] Translated using Weblate (Turkish) Currently translated at 6.8% (33 of 485 strings) Translation: Tandoor/Recipes Backend Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/tr/ --- cookbook/locale/tr/LC_MESSAGES/django.po | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/cookbook/locale/tr/LC_MESSAGES/django.po b/cookbook/locale/tr/LC_MESSAGES/django.po index 5fdea7ddc..e36adfa46 100644 --- a/cookbook/locale/tr/LC_MESSAGES/django.po +++ b/cookbook/locale/tr/LC_MESSAGES/django.po @@ -11,8 +11,8 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-03-21 14:39+0100\n" -"PO-Revision-Date: 2024-04-01 22:04+0000\n" -"Last-Translator: atom karinca \n" +"PO-Revision-Date: 2024-07-03 16:38+0000\n" +"Last-Translator: Taylan TATLI \n" "Language-Team: Turkish \n" "Language: tr\n" @@ -955,10 +955,8 @@ msgstr "" #: .\cookbook\templates\base.html:263 #: .\cookbook\templates\ingredient_editor.html:7 #: .\cookbook\templates\ingredient_editor.html:13 -#, fuzzy -#| msgid "Ingredients" msgid "Ingredient Editor" -msgstr "Malzemeler" +msgstr "Malzeme Editörü" #: .\cookbook\templates\base.html:275 #: .\cookbook\templates\export_response.html:7 @@ -1417,10 +1415,8 @@ msgid "Back" msgstr "" #: .\cookbook\templates\property_editor.html:7 -#, fuzzy -#| msgid "Ingredients" msgid "Property Editor" -msgstr "Malzemeler" +msgstr "Özellik Editörü" #: .\cookbook\templates\recipe_view.html:36 msgid "Comments" @@ -1910,10 +1906,8 @@ msgid "Info" msgstr "" #: .\cookbook\templates\system.html:99 .\cookbook\templates\system.html:116 -#, fuzzy -#| msgid "Use fractions" msgid "Migrations" -msgstr "Kesirleri kullan" +msgstr "Göçler" #: .\cookbook\templates\system.html:105 msgid "" @@ -2459,10 +2453,8 @@ msgid "View your cookbooks" msgstr "" #: .\cookbook\views\views.py:455 -#, fuzzy -#| msgid "Users with whom to share shopping lists." msgid "View your shopping lists" -msgstr "Alışveriş listesinin paylaşılacağı kullanıcılar." +msgstr "Alışveriş listelerinizi görüntüleyin" #~ msgid "Default unit" #~ msgstr "Varsayılan birim" From 826ddddd5d80fa6f5dbe89cd3e0bd2c4d3090bc0 Mon Sep 17 00:00:00 2001 From: Taylan TATLI Date: Tue, 2 Jul 2024 17:05:36 +0000 Subject: [PATCH 18/24] Translated using Weblate (Turkish) Currently translated at 100.0% (569 of 569 strings) Translation: Tandoor/Recipes Frontend Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/tr/ --- vue/src/locales/tr.json | 682 ++++++++++++++++++++++------------------ 1 file changed, 378 insertions(+), 304 deletions(-) diff --git a/vue/src/locales/tr.json b/vue/src/locales/tr.json index 4da139004..38b8fc407 100644 --- a/vue/src/locales/tr.json +++ b/vue/src/locales/tr.json @@ -1,5 +1,5 @@ { - "warning_feature_beta": "", + "warning_feature_beta": "Bu özellik şu anda BETA (test) durumundadır. Lütfen bu özelliği kullanırken hatalara ve muhtemelen gelecekte değişikliklere (muhtemelen özellikle ilgili verilerin kaybolmasına) hazırlıklı olun.", "err_fetching_resource": "Kaynak alınırken bir hata oluştu!", "err_creating_resource": "Kaynak oluşturulurken bir hata oluştu!", "err_updating_resource": "Kaynak güncellenirken bir hata oluştu!", @@ -133,324 +133,324 @@ "Copy Link": "Bağlantıyı Kopyala", "Copy Token": "Anahtarı Kopyala", "delete_confirmation": "{source}'ı silmek istediğinizden emin misiniz?", - "move_confirmation": "", - "merge_confirmation": "", - "create_rule": "", - "move_selection": "", - "merge_selection": "", - "Root": "", - "Ignore_Shopping": "", - "Shopping_Category": "", - "Shopping_Categories": "", - "Edit_Food": "", - "Move_Food": "", - "New_Food": "", - "Hide_Food": "", - "Food_Alias": "", - "Unit_Alias": "", - "Keyword_Alias": "", - "Delete_Food": "", - "No_ID": "", - "Meal_Plan_Days": "", - "merge_title": "", - "move_title": "", - "Food": "", - "Recipe_Book": "", - "del_confirmation_tree": "", - "delete_title": "", - "create_title": "", - "edit_title": "", - "Name": "", - "Type": "", - "Description": "", - "Recipe": "", - "tree_root": "", - "Icon": "", - "Unit": "", - "Decimals": "", - "Default_Unit": "", - "No_Results": "", - "New_Unit": "", - "Create_New_Shopping Category": "", - "Create_New_Food": "", - "Create_New_Keyword": "", - "Create_New_Unit": "", - "Create_New_Meal_Type": "", - "Create_New_Shopping_Category": "", - "and_up": "", - "and_down": "", - "Instructions": "", - "Unrated": "", - "Automate": "", - "Empty": "", - "Key_Ctrl": "", - "Key_Shift": "", - "Time": "", - "Text": "", - "Shopping_list": "", - "Added_by": "", - "Added_on": "", - "AddToShopping": "", - "IngredientInShopping": "", - "NotInShopping": "", - "OnHand": "", - "FoodOnHand": "", - "FoodNotOnHand": "", - "Undefined": "", - "Create_Meal_Plan_Entry": "", - "Edit_Meal_Plan_Entry": "", - "Title": "", - "Week": "", - "Month": "", - "Year": "", - "Planner": "", - "Planner_Settings": "", - "Period": "", - "Plan_Period_To_Show": "", - "Periods": "", - "Plan_Show_How_Many_Periods": "", - "Starting_Day": "", - "Meal_Types": "", - "Meal_Type": "", - "New_Entry": "", - "Clone": "", - "Drag_Here_To_Delete": "", - "Meal_Type_Required": "", - "Title_or_Recipe_Required": "", - "Color": "", - "New_Meal_Type": "", - "Use_Fractions": "", - "Use_Fractions_Help": "", - "AddFoodToShopping": "", - "RemoveFoodFromShopping": "", - "DeleteShoppingConfirm": "", - "IgnoredFood": "", - "Add_Servings_to_Shopping": "", - "Week_Numbers": "", - "Show_Week_Numbers": "", - "Export_As_ICal": "", - "Export_To_ICal": "", - "Cannot_Add_Notes_To_Shopping": "", - "Added_To_Shopping_List": "", - "Shopping_List_Empty": "", - "Next_Period": "", - "Previous_Period": "", - "Current_Period": "", - "Next_Day": "", - "Previous_Day": "", - "Inherit": "", - "InheritFields": "", - "FoodInherit": "", - "ShowUncategorizedFood": "", - "GroupBy": "", - "Language": "", - "Theme": "", - "SupermarketCategoriesOnly": "", - "MoveCategory": "", - "CountMore": "", - "IgnoreThis": "", - "DelayFor": "", - "Warning": "", - "NoCategory": "", - "InheritWarning": "", - "ShowDelayed": "", - "Completed": "", - "OfflineAlert": "", - "shopping_share": "", - "shopping_auto_sync": "", - "one_url_per_line": "", - "mealplan_autoadd_shopping": "", - "mealplan_autoexclude_onhand": "", - "mealplan_autoinclude_related": "", - "default_delay": "", - "plan_share_desc": "", - "shopping_share_desc": "", - "shopping_auto_sync_desc": "", - "mealplan_autoadd_shopping_desc": "", - "mealplan_autoexclude_onhand_desc": "", - "mealplan_autoinclude_related_desc": "", - "default_delay_desc": "", - "filter_to_supermarket": "", - "Coming_Soon": "", - "Auto_Planner": "", - "New_Cookbook": "", - "Hide_Keyword": "", - "Hour": "", - "Hours": "", - "Day": "", - "Days": "", - "Second": "", - "Seconds": "", - "Clear": "", - "Users": "", - "Invites": "", - "err_move_self": "", - "nothing": "", - "err_merge_self": "", - "show_sql": "", - "filter_to_supermarket_desc": "", - "CategoryName": "", - "SupermarketName": "", - "CategoryInstruction": "", - "shopping_recent_days_desc": "", - "shopping_recent_days": "", - "download_pdf": "", - "download_csv": "", - "csv_delim_help": "", - "csv_delim_label": "", - "SuccessClipboard": "", - "copy_to_clipboard": "", - "csv_prefix_help": "", - "csv_prefix_label": "", - "copy_markdown_table": "", - "in_shopping": "", - "DelayUntil": "", - "Pin": "", - "mark_complete": "", - "QuickEntry": "", - "shopping_add_onhand_desc": "", - "shopping_add_onhand": "", - "related_recipes": "", - "today_recipes": "", - "sql_debug": "", - "remember_search": "", - "remember_hours": "", - "tree_select": "", - "OnHand_help": "", - "ignore_shopping_help": "", - "shopping_category_help": "", - "food_recipe_help": "", - "Foods": "", - "Account": "", - "Cosmetic": "", - "API": "", - "enable_expert": "", - "expert_mode": "", - "simple_mode": "", - "advanced": "", - "fields": "", - "show_keywords": "", - "show_foods": "", - "show_books": "", - "show_rating": "", - "show_units": "", - "show_filters": "", - "not": "", - "save_filter": "", - "filter_name": "", - "left_handed": "", - "left_handed_help": "", - "Custom Filter": "", - "shared_with": "", - "sort_by": "", - "asc": "", - "desc": "", - "date_viewed": "", - "last_cooked": "", - "times_cooked": "", - "date_created": "", - "show_sortby": "", - "search_rank": "", - "make_now": "", + "move_confirmation": "{child}'ı ebeveyn {parent}'a taşı", + "merge_confirmation": "{source} kaynağını {target} hedefiyle değiştir", + "create_rule": "ve otomasyon oluştur", + "move_selection": "{source}'un taşınacağı bir üst {type} seçin.", + "merge_selection": "{source} ifadesinin tüm tekrarlarını seçilen {type} ile değiştirin.", + "Root": "Kök", + "Ignore_Shopping": "Alışverişi Yoksay", + "Shopping_Category": "Alışveriş Kategorisi", + "Shopping_Categories": "Alışveriş Kategorileri", + "Edit_Food": "Yiyeceği Düzenle", + "Move_Food": "Yiyeceği Taşı", + "New_Food": "Yeni Yiyecek", + "Hide_Food": "Yiyeceği Gizle", + "Food_Alias": "Yiyecek Takma Adı", + "Unit_Alias": "Birim Takma Adı", + "Keyword_Alias": "Anahtar Kelime Takma Adı", + "Delete_Food": "Yiyeceği Sil", + "No_ID": "ID bulunamadı, silinemez.", + "Meal_Plan_Days": "Gelecek yemek planları", + "merge_title": "{type} birleştir", + "move_title": "{type} taşı", + "Food": "Yiyecek", + "Recipe_Book": "Yemek Tarifi Kitabı", + "del_confirmation_tree": "{source} ve tüm alt öğelerini silmek istediğinizden emin misiniz?", + "delete_title": "{type}'ı sil", + "create_title": "Yeni {type}", + "edit_title": "{type} düzenle", + "Name": "İsim", + "Type": "Tür", + "Description": "Açıklama", + "Recipe": "Tarif", + "tree_root": "Ağaç Kökü", + "Icon": "Simge", + "Unit": "Birim", + "Decimals": "Ondalık Sayılar", + "Default_Unit": "Varsayılan Birim", + "No_Results": "Sonuç Yok", + "New_Unit": "Yeni Birim", + "Create_New_Shopping Category": "Yeni Alışveriş Kategorisi Oluştur", + "Create_New_Food": "Yeni Yiyecek Ekle", + "Create_New_Keyword": "Yeni Anahtar Kelime Ekle", + "Create_New_Unit": "Yeni Birim Ekle", + "Create_New_Meal_Type": "Yeni Yemek Türü Ekle", + "Create_New_Shopping_Category": "Yeni Alışveriş Kategorisi Ekle", + "and_up": "& Yukarı", + "and_down": "& Aşağı", + "Instructions": "Talimatlar", + "Unrated": "Derecelendirilmemiş", + "Automate": "Otomatikleştir", + "Empty": "Boş", + "Key_Ctrl": "Ctrl", + "Key_Shift": "Shift", + "Time": "Zaman", + "Text": "Metin", + "Shopping_list": "Alışveriş Listesi", + "Added_by": "Ekleyen", + "Added_on": "Eklenme Zamanı", + "AddToShopping": "Alışveriş listesine ekle", + "IngredientInShopping": "Bu malzeme alışveriş listenizde.", + "NotInShopping": "{food} alışveriş listenizde yok.", + "OnHand": "Şu anda Elinizde", + "FoodOnHand": "Elinizde {food} var.", + "FoodNotOnHand": "Elinizde {food} yok.", + "Undefined": "Tanımlanmamış", + "Create_Meal_Plan_Entry": "Yemek planı girişi oluştur", + "Edit_Meal_Plan_Entry": "Yemek planı girişini düzenle", + "Title": "Başlık", + "Week": "Hafta", + "Month": "Ay", + "Year": "Yıl", + "Planner": "Planlayıcı", + "Planner_Settings": "Planlayıcı ayarları", + "Period": "Dönem", + "Plan_Period_To_Show": "Haftaları, ayları veya yılları göster", + "Periods": "Dönemler", + "Plan_Show_How_Many_Periods": "Kaç dönem gösterilecek", + "Starting_Day": "Haftanın başlangıç günü", + "Meal_Types": "Yemek türleri", + "Meal_Type": "Yemek türü", + "New_Entry": "Yeni Giriş", + "Clone": "Klonla", + "Drag_Here_To_Delete": "Silmek için buraya sürükleyin", + "Meal_Type_Required": "Yemek türü gereklidir", + "Title_or_Recipe_Required": "Başlık veya tarif seçimi gereklidir", + "Color": "Renk", + "New_Meal_Type": "Yeni Yemek türü", + "Use_Fractions": "Kesirleri Kullan", + "Use_Fractions_Help": "Bir tarifi görüntülerken ondalık sayıları otomatik olarak kesirlere dönüştürün.", + "AddFoodToShopping": "{food}'ı alışveriş listenize ekleyin", + "RemoveFoodFromShopping": "{food}'ı alışveriş listenizden çıkarın", + "DeleteShoppingConfirm": "Tüm {food} alışveriş listesinden kaldırmak istediğinizden emin misiniz?", + "IgnoredFood": "{food}, alışverişte yok sayılacak şekilde ayarlandı.", + "Add_Servings_to_Shopping": "Alışverişe {servings} Porsiyon Ekle", + "Week_Numbers": "Hafta numaraları", + "Show_Week_Numbers": "Hafta numaralarını göster?", + "Export_As_ICal": "Mevcut dönemi iCal formatında dışa aktar", + "Export_To_ICal": ".ics olarak dışa aktar", + "Cannot_Add_Notes_To_Shopping": "Alışveriş listesine notlar eklenemez", + "Added_To_Shopping_List": "Alışveriş listesine eklendi", + "Shopping_List_Empty": "Alışveriş listeniz şu anda boş, yemek planı girişinin içerik menüsü aracılığıyla öğeler ekleyebilirsiniz (karta sağ tıklayın veya menü simgesine sol tıklayın)", + "Next_Period": "Sonraki Dönem", + "Previous_Period": "Önceki Dönem", + "Current_Period": "Mevcut Dönem", + "Next_Day": "Sonraki Gün", + "Previous_Day": "Önceki Gün", + "Inherit": "Devral", + "InheritFields": "Alan Değerlerini Devral", + "FoodInherit": "Yiyeceğin Devralınabileceği Alanlar", + "ShowUncategorizedFood": "Tanımlanmamışları Göster", + "GroupBy": "Gruplandırma Ölçütü", + "Language": "Dil", + "Theme": "Tema", + "SupermarketCategoriesOnly": "Yalnızca Süpermarket Kategorileri", + "MoveCategory": "Taşı: ", + "CountMore": "...+{count} fazlası", + "IgnoreThis": "{food}'ı hiçbir zaman alışverişe otomatik olarak ekleme", + "DelayFor": "{hours} saat geciktir", + "Warning": "Uyarı", + "NoCategory": "Hiçbir kategori seçilmedi.", + "InheritWarning": "{food} devralacak şekilde ayarlandı; değişiklikler kalıcı olmayabilir.", + "ShowDelayed": "Geciken öğeleri göster", + "Completed": "Tamamlandı", + "OfflineAlert": "Çevrimdışısınız, alışveriş listesi senkronize edilemeyebilir.", + "shopping_share": "Alışveriş Listesini Paylaş", + "shopping_auto_sync": "Otomatik Senkronizasyon", + "one_url_per_line": "Satır başına bir URL", + "mealplan_autoadd_shopping": "Otomatik Yemek Planı Ekle", + "mealplan_autoexclude_onhand": "Eldeki Yiyecekleri Hariç Tut", + "mealplan_autoinclude_related": "İlgili Tarifleri Ekle", + "default_delay": "Varsayılan Gecikme Saatleri", + "plan_share_desc": "Yeni Yemek Planı girişleri seçilen kullanıcılarla otomatik olarak paylaşılacaktır.", + "shopping_share_desc": "Kullanıcılar alışveriş listenize eklediğiniz tüm ürünleri görecektir. Listelerindeki öğeleri görebilmeniz için sizi eklemeleri gerekir.", + "shopping_auto_sync_desc": "0'a ayarlamak otomatik senkronizasyonu devre dışı bırakacaktır. Bir alışveriş listesini görüntülerken liste, başka birinin yapmış olabileceği değişiklikleri senkronize etmek için belirlenen her saniyede bir güncellenir. Birden fazla kişiyle alışveriş yaparken kullanışlıdır ancak mobil veriyi kullanır.", + "mealplan_autoadd_shopping_desc": "Yemek planı malzemelerini otomatik olarak alışveriş listesine ekleyin.", + "mealplan_autoexclude_onhand_desc": "Alışveriş listesine bir yemek planı eklerken (manuel veya otomatik olarak), elinizde bulunan malzemeleri hariç tutun.", + "mealplan_autoinclude_related_desc": "Alışveriş listesine bir yemek planı eklerken (manuel veya otomatik olarak), ilgili tüm tarifleri dahil edin.", + "default_delay_desc": "Bir alışveriş listesi girişini geciktirmek için varsayılan saat sayısı.", + "filter_to_supermarket": "Süpermarkete Filtrele", + "Coming_Soon": "Yakında Gelecek", + "Auto_Planner": "Otomatik Planlayıcı", + "New_Cookbook": "Yeni yemek kitabı", + "Hide_Keyword": "Anahtar kelimeleri gizle", + "Hour": "Saat", + "Hours": "Saatler", + "Day": "Gün", + "Days": "Günler", + "Second": "Saniye", + "Seconds": "Saniyeler", + "Clear": "Temizle", + "Users": "Kullanıcılar", + "Invites": "Davetler", + "err_move_self": "Öğe kendisine taşınamaz", + "nothing": "Yapacak bir şey yok", + "err_merge_self": "Öğe kendisiyle birleştirilemez", + "show_sql": "SQL göster", + "filter_to_supermarket_desc": "Varsayılan olarak, alışveriş listesini yalnızca seçilen süpermarkete ait kategorileri içerecek şekilde filtreleyin.", + "CategoryName": "Kategori Adı", + "SupermarketName": "Süpermarket Adı", + "CategoryInstruction": "Alışveriş listesinde görünen sipariş kategorilerini değiştirmek için kategorileri sürükleyin.", + "shopping_recent_days_desc": "Görüntülenecek son alışveriş listesi girişlerinin günleri.", + "shopping_recent_days": "Son Günler", + "download_pdf": "PDF'i İndir", + "download_csv": "CSV İndir", + "csv_delim_help": "CSV dışa aktarmaları için kullanılacak ayırıcı.", + "csv_delim_label": "CSV Ayırıcı", + "SuccessClipboard": "Alışveriş listesi panoya kopyalandı", + "copy_to_clipboard": "Panoya Kopyala", + "csv_prefix_help": "Listeyi panoya kopyalarken eklenecek önek.", + "csv_prefix_label": "Liste Ön Eki", + "copy_markdown_table": "Markdown Tablosu Olarak Kopyala", + "in_shopping": "Alışveriş Listesinde", + "DelayUntil": "Şu Zamana Kadar Geciktir", + "Pin": "Sabitle", + "mark_complete": "Tamamlandı Olarak İşaretle", + "QuickEntry": "Hızlı Giriş", + "shopping_add_onhand_desc": "Alışveriş listesinde işaretlendiğinde yiyeceği 'Elde' olarak işaretleyin.", + "shopping_add_onhand": "Otomatik Elde", + "related_recipes": "İlgili Tarifler", + "today_recipes": "Günün Tarifleri", + "sql_debug": "SQL Hata Ayıklama", + "remember_search": "Aramayı Hatırla", + "remember_hours": "Hatırlanacak Süre", + "tree_select": "Ağaç Seçimini Kullan", + "OnHand_help": "Yiyecekler envanterdedir ve otomatik olarak alışveriş listesine eklenmez. Eldeki durum alışveriş kullanıcılarıyla paylaşılır.", + "ignore_shopping_help": "Alışveriş listesine asla eklenmeyecek yiyecek (örn. su)", + "shopping_category_help": "Süpermarketler, reyonların düzenine göre Alışveriş Kategorisine göre sipariş edilebilir ve filtrelenebilir.", + "food_recipe_help": "Bir tarifi buraya bağlamak, bağlantılı tarifi bu yiyeceği kullanan diğer tariflere dahil edecektir", + "Foods": "Yiyecekler", + "Account": "Hesap", + "Cosmetic": "Kozmetik", + "API": "API", + "enable_expert": "Uzman Modunu Etkinleştir", + "expert_mode": "Uzman Modu", + "simple_mode": "Basit Mod", + "advanced": "Gelişmiş", + "fields": "Alanlar", + "show_keywords": "Anahtar Kelimeleri Göster", + "show_foods": "Yiyecekleri Göster", + "show_books": "Kitapları Göster", + "show_rating": "Derecelendirmeyi Göster", + "show_units": "Birimleri Göster", + "show_filters": "Filtreleri Göster", + "not": "değil", + "save_filter": "Filtreyi Kaydet", + "filter_name": "Fitre Adı", + "left_handed": "Sol El modu", + "left_handed_help": "Kullanıcı arayüzünü sol elinizle kullanım için optimize edecektir.", + "Custom Filter": "Özel Filtre", + "shared_with": "Paylaşılan", + "sort_by": "Sıralama Ölçütü", + "asc": "Artan", + "desc": "Azalan", + "date_viewed": "Son Görüntülenen", + "last_cooked": "Son Pişirilen", + "times_cooked": "Pişirilme Sayısı", + "date_created": "Oluşturma Zamanı", + "show_sortby": "Sıralamayı Göster", + "search_rank": "Arama Sıralaması", + "make_now": "Şimdi Yap", "recipe_filter": "Tarif Filtresi", - "book_filter_help": "", - "review_shopping": "", + "book_filter_help": "Manuel olarak atananlara ek olarak tarif filtresindeki tarifleri de ekleyin.", + "review_shopping": "Kaydetmeden önce alışveriş girişlerini inceleyin", "view_recipe": "Tarif Görüntüle", "copy_to_new": "Yeni Tarif'e Kopyala", "recipe_name": "Tarif Adı", - "paste_ingredients_placeholder": "", - "paste_ingredients": "", - "ingredient_list": "", - "explain": "", - "filter": "", - "Website": "", - "App": "", - "Message": "", - "Bookmarklet": "", - "Sticky_Nav": "", - "Sticky_Nav_Help": "", - "Nav_Color": "", - "Nav_Color_Help": "", - "Use_Kj": "", - "Comments_setting": "", - "click_image_import": "", - "no_more_images_found": "", - "import_duplicates": "", - "paste_json": "", - "Click_To_Edit": "", - "search_no_recipes": "", - "search_import_help_text": "", - "search_create_help_text": "", - "warning_duplicate_filter": "", - "reset_children": "", - "reset_children_help": "", - "reset_food_inheritance": "", - "reset_food_inheritance_info": "", - "substitute_help": "", - "substitute_siblings_help": "", - "substitute_children_help": "", - "substitute_siblings": "", - "substitute_children": "", - "SubstituteOnHand": "", - "ChildInheritFields": "", - "ChildInheritFields_help": "", - "InheritFields_help": "", - "show_ingredient_overview": "", - "Ingredient Overview": "", - "last_viewed": "", - "created_on": "", - "updatedon": "", - "Imported_From": "", - "advanced_search_settings": "", - "nothing_planned_today": "", - "no_pinned_recipes": "", + "paste_ingredients_placeholder": "Malzeme listesini buraya yapıştırın...", + "paste_ingredients": "Malzemeleri Yapıştır", + "ingredient_list": "Malzeme Listesi", + "explain": "Açıkla", + "filter": "Filtre", + "Website": "Website", + "App": "Uygulama", + "Message": "Mesaj", + "Bookmarklet": "Yer İmi", + "Sticky_Nav": "Yapışkan Gezinme Çubuğu", + "Sticky_Nav_Help": "Gezinme menüsünü her zaman ekranın üst kısmında gösterin.", + "Nav_Color": "Gezinme Çubuğu Rengi", + "Nav_Color_Help": "Gezinme çubuğu rengini değiştir.", + "Use_Kj": "Kcal yerine kJ kullanın", + "Comments_setting": "Yorumları Göster", + "click_image_import": "Bu tarif için içe aktarmak istediğiniz görsele tıklayın", + "no_more_images_found": "Web sitesinde ek resim bulunamadı.", + "import_duplicates": "Mevcut tariflerle aynı adı taşıyan tariflerin tekrarlanmasını önlemek için göz ardı edilir. Her şeyi içe aktarmak için bu kutuyu işaretleyin.", + "paste_json": "Tarifi yüklemek için json veya html kaynağını buraya yapıştırın.", + "Click_To_Edit": "Düzenlemek için tıklayın", + "search_no_recipes": "Herhangi bir tarif bulunamadı!", + "search_import_help_text": "Harici bir web sitesinden veya uygulamadan bir tarifi içe aktarın.", + "search_create_help_text": "Doğrudan Tandoor'da yeni bir tarif oluşturun.", + "warning_duplicate_filter": "Uyarı: Teknik sınırlamalar nedeniyle aynı kombinasyona sahip (ve/veya/değil) birden fazla filtreye sahip olmak beklenmedik sonuçlara yol açabilir.", + "reset_children": "Alt Devralmayı Sıfırla", + "reset_children_help": "Devralınan alanlardaki değerleri tüm alt öğelerin üzerine yazın. Alt Devralınan Alanlar ayarlanmadıysa alttan devralınan alanlar Alanları Devral olarak ayarlanacaktır.", + "reset_food_inheritance": "Devralmayı Sıfırla", + "reset_food_inheritance_info": "Tüm yiyecekleri varsayılan devralınan alanlara ve bunların üst değerlerine sıfırlayın.", + "substitute_help": "Eldeki malzemelerle yapılabilecek tarifler ararken alternatifler dikkate alınır.", + "substitute_siblings_help": "Bu yiyeceğin bir üstünü paylaşan tüm yiyecekler ikame olarak kabul edilir.", + "substitute_children_help": "Bu yiyeceğin altı olan tüm yiyecekler ikame olarak kabul edilir.", + "substitute_siblings": "Yedek Kardeşler", + "substitute_children": "Yedek Çocuklar", + "SubstituteOnHand": "Elinizde bir yedek var.", + "ChildInheritFields": "Alt Öğeler Alanları Devralır", + "ChildInheritFields_help": "Alt öğeler varsayılan olarak bu alanları devralır.", + "InheritFields_help": "Bu alanların değerleri üst öğeden devralınacaktır (İstisna: boş alışveriş kategorileri devralınmaz)", + "show_ingredient_overview": "Tarifin başlangıcında tüm malzemelerin bir listesini görüntüleyin.", + "Ingredient Overview": "Malzeme Genel Bakış", + "last_viewed": "Son Bakılan", + "created_on": "Oluşturma Zamanı", + "updatedon": "Güncelleme Zamanı", + "Imported_From": "İçe Aktarıldığı Yer", + "advanced_search_settings": "Gelişmiş Arama Ayarları", + "nothing_planned_today": "Bugün için planınız yok!", + "no_pinned_recipes": "Sabitlenmiş tarifiniz yok!", "Planned": "Planlanan", - "Pinned": "", - "Imported": "", + "Pinned": "Sabitlenmiş", + "Imported": "İçe Aktarılmış", "Quick actions": "Hızlı işlemler", - "Ratings": "", - "Internal": "", + "Ratings": "Derecelendirmeler", + "Internal": "Dahili", "Units": "Birimler", - "Manage_Emails": "", - "Change_Password": "", - "Social_Authentication": "", + "Manage_Emails": "E-postaları Yönet", + "Change_Password": "Parolayı Değiştir", + "Social_Authentication": "Sosyal Kimlik Doğrulama", "Random Recipes": "Rasgele Tarifler", - "parameter_count": "", - "select_keyword": "", - "add_keyword": "", + "parameter_count": "Parametre {count}", + "select_keyword": "Anahtar Kelimeyi Seç", + "add_keyword": "Anahtar Kelime Ekle", "select_file": "Dosya Seç", "select_recipe": "Tarif Seç", "select_unit": "Birim Seç", - "select_food": "", - "remove_selection": "", - "empty_list": "", + "select_food": "Yiyecek Seç", + "remove_selection": "Seçimi Kaldır", + "empty_list": "Liste boş.", "Select": "Seç", "Supermarkets": "Marketler", - "User": "", - "Username": "", + "User": "Kullanıcı", + "Username": "Kullanıcı Adı", "First_name": "İsim", "Last_name": "Soyisim", - "Keyword": "", - "Advanced": "", + "Keyword": "Anahtar Kelime", + "Advanced": "Gelişmiş", "Page": "Sayfa", - "Single": "", - "Multiple": "", - "Reset": "", - "Disabled": "", - "Disable": "", - "Options": "", - "Create Food": "", - "create_food_desc": "", - "additional_options": "", - "Importer_Help": "", - "Documentation": "", - "Select_App_To_Import": "", - "Import_Supported": "", - "Export_Supported": "", - "Import_Not_Yet_Supported": "", - "Export_Not_Yet_Supported": "", - "Import_Result_Info": "", - "Recipes_In_Import": "", + "Single": "Tek", + "Multiple": "Çoklu", + "Reset": "Sıfırla", + "Disabled": "Devre Dışı", + "Disable": "Devre dışı bırak", + "Options": "Seçenekler", + "Create Food": "Yiyecek Oluştur", + "create_food_desc": "Bir yiyecek oluşturun ve onu bu tarife bağlayın.", + "additional_options": "Ek Seçenekler", + "Importer_Help": "Bu içe aktarıcı hakkında daha fazla bilgi ve yardım:", + "Documentation": "Dokümantasyon", + "Select_App_To_Import": "Lütfen İçe Aktarılacak Uygulamayı seçin", + "Import_Supported": "Desteklenen İçe Aktarma", + "Export_Supported": "Desteklenen Dışa Aktarma", + "Import_Not_Yet_Supported": "İçe aktarma henüz desteklenmiyor", + "Export_Not_Yet_Supported": "Dışa aktarma henüz desteklenmiyor", + "Import_Result_Info": "{total} tariften {imported} tanesi içe aktarıldı", + "Recipes_In_Import": "İçe aktarma dosyanızdaki tarifler", "Toggle": "Değiştir", "Import_Error": "İçeri aktarma sırasında bir hata oluştu. Görüntülemek için lütfen sayfanın altındaki Ayrıntıları genişletin.", "Warning_Delete_Supermarket_Category": "Bir market kategorisinin silinmesi, gıdalarla olan tüm ilişkileri de silecektir. Emin misiniz?", @@ -493,5 +493,79 @@ "base_amount": "Temel Miktar", "Calculator": "Hesap Makinesi", "property_type_fdc_hint": "Yalnızca FDC kimliği olan özellik tipleri FDC veritabanından veri çekebilir", - "Alignment": "Hizalama" + "Alignment": "Hizalama", + "Create Recipe": "Tarif Oluştur", + "kg": "kilogram [kg] (metrik, ağırlık)", + "Use_Plural_Food_Always": "Yiyecek için her zaman çoğul biçimi kullanın", + "created_by": "Oluşturan", + "CustomThemeHelp": "Özel bir CSS dosyası yükleyerek seçilen temanın stillerini geçersiz kılın.", + "CustomLogoHelp": "Tarayıcı sekmesinde ve yüklü web uygulamasında logoyu değiştirmek için farklı boyutlarda kare görseller yükleyin.", + "UnpinnedConfirmation": "{recipe} sabitlemesi kaldırıldı.", + "show_step_ingredients_setting_help": "Tarif adımlarının yanına malzemeler tablosunu ekleyin. Oluşturulma zamanında geçerlidir. Tarif düzenleme görünümünde geçersiz kılınabilir.", + "Split_All_Steps": "Tüm satırları ayrı adımlara bölün.", + "show_step_ingredients_setting": "Tarif Adımlarının Yanında Malzemeleri Göster", + "Space_Cosmetic_Settings": "Bazı kozmetik ayarlar alan yöneticileri tarafından değiştirilebilir ve o alanın istemci ayarlarını geçersiz kılar.", + "plural_short": "çoğul", + "g": "gram [g] (metrik, ağırlık)", + "ml": "mililitre [ml] (metrik, hacim)", + "tsp": "çay kaşığı [tsp] (ABD, hacim)", + "imperial_quart": "imperial quart [imp qt] (Birleşik Krallık, hacim)", + "Choose_Category": "Kategori Seç", + "Use_Plural_Food_Simple": "Yiyecek için çoğul biçimi dinamik olarak kullanın", + "Import Recipe": "Tarif İçe Aktar", + "Use_Plural_Unit_Always": "Birimler için her zaman çoğul biçimi seç", + "plural_usage_info": "Bu alandaki birimler ve yiyecekler için çoğul biçimini kullanın.", + "Transpose_Words": "Devrik Kelimeler", + "Never_Unit": "Asla Birim", + "Property": "Özellik", + "Conversion": "Dönüşüm", + "Original_Text": "Orijinal Metin", + "make_now_count": "En çok eksik malzemeler", + "CustomTheme": "Özel Tema", + "CustomLogos": "Özel Logolar", + "Unpin": "Sabitlemeyi Kaldır", + "Unit_Replace": "Birim Değiştir", + "Property_Editor": "Özellik Editörü", + "pint": "pint [pt] (ABD, hacim)", + "quart": "quart [qt] (ABD, hacim)", + "gallon": "galon [gal] (ABD, hacim)", + "Logo": "Logo", + "Show_Logo": "Logoyu Göster", + "Show_Logo_Help": "Gezinti çubuğunda Tandoor veya alan logosu gösterin.", + "Shopping_input_placeholder": "örn. Patates/100 Patatesler/100 g Patatesler", + "Properties": "Özellikler", + "CustomNavLogoHelp": "Gezinme çubuğu logosu olarak kullanılacak bir resim yükleyin.", + "ShowRecentlyCompleted": "Yakın zamanda tamamlanan öğeleri göster", + "ShoppingBackgroundSyncWarning": "Kötü bağlantı, senkronizasyon bekleniyor...", + "CustomImageHelp": "Alan genel bakışında gösterilecek bir resim yükleyin.", + "OrderInformation": "Nesneler küçükten büyüğe doğru sıralanır.", + "PinnedConfirmation": "{recipe} sabitlendi.", + "show_step_ingredients": "Adımdaki Malzemeleri Göster", + "hide_step_ingredients": "Adımdaki Malzemeleri Gizle", + "Created": "Oluşturuldu", + "Updated": "Güncellendi", + "Unchanged": "Değiştirilmemiş", + "Error": "Hata", + "Nav_Text_Mode": "Gezinme Çubuğu Metin Modu", + "Nav_Text_Mode_Help": "Her tema için farklı davranır.", + "Enable": "Etkinleştir", + "show_ingredients_table": "Adım metninin yanında malzemeler tablosunu görüntüleyin", + "total": "toplam", + "Name_Replace": "İsim Değiştir", + "Food_Replace": "Yiyecek Değiştir", + "DefaultPage": "Varsayılan Sayfa", + "Combine_All_Steps": "Tüm adımları tek bir alanda birleştirin.", + "Plural": "Çoğul", + "ounce": "ons [oz] (ağırlık)", + "pound": "pound (ağırlık)", + "l": "litre [l] (metrik, hacim)", + "fluid_ounce": "sıvı onsu [fl oz] (ABD, hacim)", + "tbsp": "yemek kaşığı [tbsp] (ABD, hacim)", + "imperial_fluid_ounce": "imperial fluid ounce [imp fl oz] (Birleşik Krallık, hacim)", + "imperial_pint": "imperial pint [imp pt] (Birleşik Krallık, hacim)", + "imperial_gallon": "imperial gal [imp gal] (Birleşik Krallık, hacim)", + "imperial_tbsp": "imperial tablespoon [imp tbsp] (Birleşik Krallık, hacim)", + "imperial_tsp": "imperial teaspoon [imp tsp] (Birleşik Krallık, hacim)", + "Back": "Geri", + "Use_Plural_Unit_Simple": "Birim için dinamik olarak çoğul biçimi kullanın" } From fd3760198bb12d4d08cc76fb15711a1bd28952d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-F=C3=A9lix=20ALLARD?= Date: Thu, 4 Jul 2024 15:46:22 +0000 Subject: [PATCH 19/24] Translated using Weblate (French) Currently translated at 96.8% (551 of 569 strings) Translation: Tandoor/Recipes Frontend Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/fr/ --- vue/src/locales/fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vue/src/locales/fr.json b/vue/src/locales/fr.json index da3e528df..9ed69c3a6 100644 --- a/vue/src/locales/fr.json +++ b/vue/src/locales/fr.json @@ -422,7 +422,7 @@ "plan_share_desc": "Les nouvelles entrées de menu de la semaine seront partagées automatiquement avec des utilisateurs sélectionnés.", "Use_Kj": "Utiliser kJ au lieu de kcal", "Manage_Emails": "Gérer les e-mails", - "select_food": "Séletionner l’aliment", + "select_food": "Sélectionner l’aliment", "Toggle": "Basculer", "Theme": "Thème", "Import_Supported": "Importation prise en charge", From c2176305db4fff55c132b4b4a9a02992372a085c Mon Sep 17 00:00:00 2001 From: smilerz Date: Mon, 8 Jul 2024 08:28:49 -0500 Subject: [PATCH 20/24] fix invalid syntax in admin/step --- cookbook/admin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cookbook/admin.py b/cookbook/admin.py index 88a1cd79a..32af3e5a2 100644 --- a/cookbook/admin.py +++ b/cookbook/admin.py @@ -185,7 +185,7 @@ class StepAdmin(admin.ModelAdmin): @admin.display(description="Name") def recipe_and_name(obj): if not obj.recipe_set.exists(): - return f"Orphaned Step{'' if not obj.name else f': {obj.name}'}" + return "Orphaned Step" + ('' if not obj.name else f': {obj.name}') return f"{obj.recipe_set.first().name}: {obj.name}" if obj.name else obj.recipe_set.first().name From 6385866e98df4c95398d183cefcd7efb1a06a6c5 Mon Sep 17 00:00:00 2001 From: smilerz Date: Mon, 8 Jul 2024 08:35:59 -0500 Subject: [PATCH 21/24] url import fixes --- cookbook/helper/recipe_url_import.py | 4 ++-- cookbook/views/api.py | 2 +- requirements.txt | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cookbook/helper/recipe_url_import.py b/cookbook/helper/recipe_url_import.py index eca6813aa..a6d91f84c 100644 --- a/cookbook/helper/recipe_url_import.py +++ b/cookbook/helper/recipe_url_import.py @@ -373,8 +373,8 @@ def parse_servings(servings): servings = 1 elif isinstance(servings, list): try: - servings = int(re.findall(r'\b\d+\b', servings[0])[0]) - except KeyError: + servings = int(re.findall(r'\b\d+\b', str(servings[0]))[0]) + except (KeyError, IndexError): servings = 1 return servings diff --git a/cookbook/views/api.py b/cookbook/views/api.py index f890caeaa..3c2d596b2 100644 --- a/cookbook/views/api.py +++ b/cookbook/views/api.py @@ -861,7 +861,7 @@ class IngredientViewSet(viewsets.ModelViewSet): if unit and re.match(r'^(\d)+$', unit): queryset = queryset.filter(unit_id=unit) - return queryset + return queryset.select_related('food') class StepViewSet(viewsets.ModelViewSet): diff --git a/requirements.txt b/requirements.txt index 56788a705..0e4924d3c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -30,7 +30,7 @@ Jinja2==3.1.4 django-webpack-loader==3.0.1 git+https://github.com/BITSOLVER/django-js-reverse@071e304fd600107bc64bbde6f2491f1fe049ec82 django-allauth==0.61.1 -recipe-scrapers==15.0.0-rc2 +recipe-scrapers==15.0.0-rc3 django-scopes==2.0.0 django-treebeard==4.7 django-cors-headers==4.3.1 From 0ac3c55180d26fed7109c3cd9686c6aa6511a559 Mon Sep 17 00:00:00 2001 From: vabene1111 Date: Mon, 8 Jul 2024 18:02:44 +0200 Subject: [PATCH 22/24] update translations --- .idea/watcherTasks.xml | 2 +- cookbook/locale/ar/LC_MESSAGES/django.po | 116 +++++++++------- cookbook/locale/bg/LC_MESSAGES/django.po | 116 +++++++++------- cookbook/locale/ca/LC_MESSAGES/django.po | 116 +++++++++------- cookbook/locale/cs/LC_MESSAGES/django.po | 116 +++++++++------- cookbook/locale/da/LC_MESSAGES/django.po | 116 +++++++++------- cookbook/locale/de/LC_MESSAGES/django.mo | Bin 56294 -> 60666 bytes cookbook/locale/de/LC_MESSAGES/django.po | 123 +++++++++-------- cookbook/locale/el/LC_MESSAGES/django.po | 116 +++++++++------- cookbook/locale/en/LC_MESSAGES/django.po | 116 +++++++++------- cookbook/locale/es/LC_MESSAGES/django.mo | Bin 25025 -> 26089 bytes cookbook/locale/es/LC_MESSAGES/django.po | 116 +++++++++------- cookbook/locale/fi/LC_MESSAGES/django.po | 116 +++++++++------- cookbook/locale/fr/LC_MESSAGES/django.mo | Bin 56552 -> 56548 bytes cookbook/locale/fr/LC_MESSAGES/django.po | 124 ++++++++++-------- cookbook/locale/he/LC_MESSAGES/django.po | 116 +++++++++------- cookbook/locale/hu_HU/LC_MESSAGES/django.po | 116 +++++++++------- cookbook/locale/hy/LC_MESSAGES/django.po | 116 +++++++++------- cookbook/locale/id/LC_MESSAGES/django.po | 116 +++++++++------- cookbook/locale/it/LC_MESSAGES/django.po | 116 +++++++++------- cookbook/locale/lv/LC_MESSAGES/django.po | 116 +++++++++------- cookbook/locale/nb_NO/LC_MESSAGES/django.po | 116 +++++++++------- cookbook/locale/nl/LC_MESSAGES/django.po | 116 +++++++++------- cookbook/locale/pl/LC_MESSAGES/django.po | 116 +++++++++------- cookbook/locale/pt/LC_MESSAGES/django.po | 116 +++++++++------- cookbook/locale/pt_BR/LC_MESSAGES/django.po | 116 +++++++++------- cookbook/locale/rn/LC_MESSAGES/django.po | 116 +++++++++------- cookbook/locale/ro/LC_MESSAGES/django.po | 116 +++++++++------- cookbook/locale/ru/LC_MESSAGES/django.po | 116 +++++++++------- cookbook/locale/sl/LC_MESSAGES/django.po | 116 +++++++++------- cookbook/locale/sv/LC_MESSAGES/django.po | 116 +++++++++------- cookbook/locale/tr/LC_MESSAGES/django.mo | Bin 1177 -> 4396 bytes cookbook/locale/tr/LC_MESSAGES/django.po | 120 ++++++++++------- cookbook/locale/uk/LC_MESSAGES/django.po | 116 +++++++++------- cookbook/locale/vi/LC_MESSAGES/django.po | 116 +++++++++------- cookbook/locale/zh_CN/LC_MESSAGES/django.po | 116 +++++++++------- cookbook/locale/zh_Hant/LC_MESSAGES/django.mo | Bin 5036 -> 5033 bytes cookbook/locale/zh_Hant/LC_MESSAGES/django.po | 116 +++++++++------- recipes/locale/ar/LC_MESSAGES/django.po | 58 ++++---- recipes/locale/bg/LC_MESSAGES/django.po | 58 ++++---- recipes/locale/ca/LC_MESSAGES/django.po | 58 ++++---- recipes/locale/cs/LC_MESSAGES/django.po | 58 ++++---- recipes/locale/da/LC_MESSAGES/django.po | 58 ++++---- recipes/locale/de/LC_MESSAGES/django.po | 58 ++++---- recipes/locale/el/LC_MESSAGES/django.po | 58 ++++---- recipes/locale/en/LC_MESSAGES/django.po | 58 ++++---- recipes/locale/es/LC_MESSAGES/django.po | 58 ++++---- recipes/locale/fi/LC_MESSAGES/django.po | 58 ++++---- recipes/locale/fr/LC_MESSAGES/django.po | 58 ++++---- recipes/locale/he/LC_MESSAGES/django.po | 58 ++++---- recipes/locale/hu_HU/LC_MESSAGES/django.po | 58 ++++---- recipes/locale/hy/LC_MESSAGES/django.po | 58 ++++---- recipes/locale/id/LC_MESSAGES/django.po | 58 ++++---- recipes/locale/it/LC_MESSAGES/django.po | 58 ++++---- recipes/locale/lv/LC_MESSAGES/django.po | 58 ++++---- recipes/locale/nb_NO/LC_MESSAGES/django.po | 58 ++++---- recipes/locale/nl/LC_MESSAGES/django.po | 58 ++++---- recipes/locale/pl/LC_MESSAGES/django.po | 58 ++++---- recipes/locale/pt/LC_MESSAGES/django.po | 58 ++++---- recipes/locale/pt_BR/LC_MESSAGES/django.po | 58 ++++---- recipes/locale/rn/LC_MESSAGES/django.po | 58 ++++---- recipes/locale/ro/LC_MESSAGES/django.po | 58 ++++---- recipes/locale/ru/LC_MESSAGES/django.po | 58 ++++---- recipes/locale/sl/LC_MESSAGES/django.po | 58 ++++---- recipes/locale/sv/LC_MESSAGES/django.po | 58 ++++---- recipes/locale/tr/LC_MESSAGES/django.po | 58 ++++---- recipes/locale/uk/LC_MESSAGES/django.po | 58 ++++---- recipes/locale/vi/LC_MESSAGES/django.po | 58 ++++---- recipes/locale/zh_CN/LC_MESSAGES/django.po | 58 ++++---- recipes/locale/zh_Hant/LC_MESSAGES/django.po | 58 ++++---- 70 files changed, 2891 insertions(+), 2698 deletions(-) diff --git a/.idea/watcherTasks.xml b/.idea/watcherTasks.xml index 0976eb2bc..546f6cfc0 100644 --- a/.idea/watcherTasks.xml +++ b/.idea/watcherTasks.xml @@ -1,7 +1,7 @@ - +