Compare commits

..

46 Commits

Author SHA1 Message Date
vabene1111
cd2c4b35df Merge pull request #3742 from TandoorRecipes/dependabot/pip/psycopg2-binary-2.9.10
Bump psycopg2-binary from 2.9.9 to 2.9.10
2025-06-11 19:34:54 +02:00
dependabot[bot]
d1d4cec00f Bump psycopg2-binary from 2.9.9 to 2.9.10
Bumps [psycopg2-binary](https://github.com/psycopg/psycopg2) from 2.9.9 to 2.9.10.
- [Changelog](https://github.com/psycopg/psycopg2/blob/master/NEWS)
- [Commits](https://github.com/psycopg/psycopg2/compare/2.9.9...2.9.10)

---
updated-dependencies:
- dependency-name: psycopg2-binary
  dependency-version: 2.9.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-11 17:33:27 +00:00
vabene1111
6940f405eb Merge pull request #3757 from TandoorRecipes/dependabot/pip/requests-2.32.4
Bump requests from 2.32.3 to 2.32.4
2025-06-11 19:32:20 +02:00
dependabot[bot]
3e6f7a554a Bump requests from 2.32.3 to 2.32.4
Bumps [requests](https://github.com/psf/requests) from 2.32.3 to 2.32.4.
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.32.3...v2.32.4)

---
updated-dependencies:
- dependency-name: requests
  dependency-version: 2.32.4
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-10 10:03:22 +00:00
vabene1111
4df451a540 Merge pull request #3752 from TandoorRecipes/dependabot/pip/django-4.2.22
Bump django from 4.2.21 to 4.2.22
2025-06-09 11:07:17 +02:00
dependabot[bot]
fd06d67218 Bump django from 4.2.21 to 4.2.22
Bumps [django](https://github.com/django/django) from 4.2.21 to 4.2.22.
- [Commits](https://github.com/django/django/compare/4.2.21...4.2.22)

---
updated-dependencies:
- dependency-name: django
  dependency-version: 4.2.22
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-06 23:32:28 +00:00
Hennadii Lysenko
f546a4d382 Translated using Weblate (Ukrainian)
Currently translated at 53.6% (306 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/uk/
2025-05-21 14:58:39 +00:00
querty
c2ecf7ef57 Translated using Weblate (Portuguese)
Currently translated at 60.0% (342 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/pt/
2025-05-18 10:58:40 +00:00
querty
b9771d7c11 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (488 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/pt_BR/
2025-05-18 10:58:39 +00:00
querty
d5b53d2bca Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/pt_BR/
2025-05-18 10:58:39 +00:00
Vincenzo Reale
f502cd47e1 Translated using Weblate (Italian)
Currently translated at 100.0% (488 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/it/
2025-05-18 10:58:39 +00:00
Anna Kh
358fab9a8f Translated using Weblate (Russian)
Currently translated at 84.9% (484 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/ru/
2025-05-16 13:58:39 +00:00
Tales Garcia Fernandes
445e78825a Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (488 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/pt_BR/
2025-05-15 10:58:40 +00:00
vabene1111
e7d9824520 Merge pull request #3691 from TandoorRecipes/dependabot/pip/pytubefix-8.13.1
Bump pytubefix from 8.12.2 to 8.13.1
2025-05-14 07:08:37 +02:00
vabene1111
c9ebbdd4ec Merge pull request #3707 from EifX/fix-doc-updating
Fix doc updating postgress
2025-05-14 07:07:07 +02:00
vabene1111
85fa211390 Merge pull request #3695 from tpansino/s3-secret-access-key-file
Support reading S3_SECRET_ACCESS_KEY from file
2025-05-14 07:05:42 +02:00
EifX
3f5db2cb03 fix: removing sudo 2025-05-10 20:42:10 +02:00
EifX
79227b347e fix: Documentation around updating postgres 2025-05-10 20:39:14 +02:00
vabene1111
ffe0c22b3e Merge pull request #3704 from TandoorRecipes/dependabot/pip/django-4.2.21
Bump django from 4.2.20 to 4.2.21
2025-05-09 11:07:02 +02:00
dependabot[bot]
25e5faf135 Bump django from 4.2.20 to 4.2.21
Bumps [django](https://github.com/django/django) from 4.2.20 to 4.2.21.
- [Commits](https://github.com/django/django/compare/4.2.20...4.2.21)

---
updated-dependencies:
- dependency-name: django
  dependency-version: 4.2.21
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-08 15:44:57 +00:00
Tom Pansino
a6f8a9ef06 Support reading S3_SECRET_ACCESS_KEY from file 2025-05-03 09:07:14 -07:00
dependabot[bot]
05b51e83a6 Bump pytubefix from 8.12.2 to 8.13.1
Bumps [pytubefix](https://github.com/juanbindez/pytubefix) from 8.12.2 to 8.13.1.
- [Release notes](https://github.com/juanbindez/pytubefix/releases)
- [Commits](https://github.com/juanbindez/pytubefix/compare/v8.12.2...v8.13.1)

---
updated-dependencies:
- dependency-name: pytubefix
  dependency-version: 8.13.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-01 00:42:16 +00:00
Nico G
5625a9ae4f Translated using Weblate (Catalan)
Currently translated at 100.0% (488 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/ca/
2025-04-29 02:39:17 +00:00
Nico G
8e60a1954b Translated using Weblate (Catalan)
Currently translated at 96.3% (470 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/ca/
2025-04-26 11:58:40 +00:00
vabene1111
52d2d75fe9 Merge pull request #3653 from TandoorRecipes/dependabot/npm_and_yarn/vue/http-proxy-middleware-2.0.9
Bump http-proxy-middleware from 2.0.6 to 2.0.9 in /vue
2025-04-25 16:12:56 +02:00
Nico G
edb669ab36 Translated using Weblate (Catalan)
Currently translated at 95.6% (467 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/ca/
2025-04-25 09:58:39 +00:00
Nico G
e9ed28b44d Translated using Weblate (Catalan)
Currently translated at 94.2% (460 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/ca/
2025-04-24 07:58:39 +00:00
Nico G
343373bf4d Translated using Weblate (Catalan)
Currently translated at 93.4% (456 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/ca/
2025-04-22 10:12:51 +00:00
dependabot[bot]
698ede9eb6 Bump http-proxy-middleware from 2.0.6 to 2.0.9 in /vue
Bumps [http-proxy-middleware](https://github.com/chimurai/http-proxy-middleware) from 2.0.6 to 2.0.9.
- [Release notes](https://github.com/chimurai/http-proxy-middleware/releases)
- [Changelog](https://github.com/chimurai/http-proxy-middleware/blob/v2.0.9/CHANGELOG.md)
- [Commits](https://github.com/chimurai/http-proxy-middleware/compare/v2.0.6...v2.0.9)

---
updated-dependencies:
- dependency-name: http-proxy-middleware
  dependency-version: 2.0.9
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-16 15:34:33 +00:00
Nico G
3ae73f7cad Translated using Weblate (Catalan)
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/ca/
2025-04-16 07:58:39 +00:00
Nico G
340d36c628 Translated using Weblate (Catalan)
Currently translated at 88.1% (430 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/ca/
2025-04-16 07:58:39 +00:00
Nico G
703f782be1 Translated using Weblate (Catalan)
Currently translated at 87.3% (498 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/ca/
2025-04-11 13:58:39 +00:00
Nico G
2ef4514987 Translated using Weblate (Catalan)
Currently translated at 84.5% (482 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/ca/
2025-04-08 08:58:38 +00:00
Nico G
a89411aeec Translated using Weblate (Catalan)
Currently translated at 85.4% (417 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/ca/
2025-04-01 12:58:40 +00:00
vabene1111
0cf89ca33c Merge pull request #3614 from stritti/feature/mobile-apps-update
docs: mobile apps updated
2025-03-27 17:14:03 +01:00
Stephan Strittmatter
68ceada28b chore: mobile apps updated 2025-03-25 11:16:18 +00:00
Vlad
192ca44d89 Translated using Weblate (Ukrainian)
Currently translated at 44.7% (255 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/uk/
2025-03-23 15:07:19 +00:00
vabene1111
3204aaf161 Merge pull request #3607 from TandoorRecipes/dependabot/pip/gunicorn-23.0.0
Bump gunicorn from 22.0.0 to 23.0.0
2025-03-22 09:33:08 +01:00
dependabot[bot]
6cf6791fe6 Bump gunicorn from 22.0.0 to 23.0.0
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 22.0.0 to 23.0.0.
- [Release notes](https://github.com/benoitc/gunicorn/releases)
- [Commits](https://github.com/benoitc/gunicorn/compare/22.0.0...23.0.0)

---
updated-dependencies:
- dependency-name: gunicorn
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-22 03:20:08 +00:00
vabene1111
6ebb18a932 more ci dependency tests 2025-03-16 13:11:28 +01:00
vabene1111
7bde1bf44f split migrations, CI denendencies 2025-03-16 13:08:06 +01:00
vabene1111
3075ec066f Merge pull request #3595 from TandoorRecipes/dependabot/npm_and_yarn/vue/babel/runtime-7.26.10
Bump @babel/runtime from 7.22.15 to 7.26.10 in /vue
2025-03-16 12:53:55 +01:00
vabene1111
3ddc3c3768 Merge pull request #3594 from TandoorRecipes/dependabot/npm_and_yarn/vue/babel/helpers-7.26.10
Bump @babel/helpers from 7.22.15 to 7.26.10 in /vue
2025-03-16 12:53:46 +01:00
vabene1111
7b7b726ec5 migration to store space and created_by on ShoppingListRecipe
ATTENTION: This deletes all old shopping list recipes that do not have entries associated with it. This should not matter but just for the record
2025-03-14 13:51:49 +01:00
dependabot[bot]
83cf03a10b Bump @babel/runtime from 7.22.15 to 7.26.10 in /vue
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.22.15 to 7.26.10.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.26.10/packages/babel-runtime)

---
updated-dependencies:
- dependency-name: "@babel/runtime"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-14 09:17:29 +00:00
dependabot[bot]
7b56719716 Bump @babel/helpers from 7.22.15 to 7.26.10 in /vue
Bumps [@babel/helpers](https://github.com/babel/babel/tree/HEAD/packages/babel-helpers) from 7.22.15 to 7.26.10.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.26.10/packages/babel-helpers)

---
updated-dependencies:
- dependency-name: "@babel/helpers"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-14 09:17:26 +00:00
22 changed files with 1002 additions and 487 deletions

View File

@@ -16,7 +16,7 @@ jobs:
- uses: actions/checkout@v4
- uses: awalsh128/cache-apt-pkgs-action@v1.4.3
with:
packages: libsasl2-dev python3-dev libldap2-dev libssl-dev
packages: libsasl2-dev python3-dev libxml2-dev libxmlsec1-dev libxslt-dev libxmlsec1-openssl libldap2-dev libssl-dev gcc musl-dev postgresql-dev zlib-dev jpeg-dev libwebp-dev openssl-dev libffi-dev cargo openldap-dev python3-dev xmlsec-dev xmlsec build-base g++ curl
version: 1.0
# Setup python & dependencies

View File

@@ -41,6 +41,9 @@ if [ -f "${SOCIALACCOUNT_PROVIDERS_FILE}" ]; then
export SOCIALACCOUNT_PROVIDERS=$(cat "$SOCIALACCOUNT_PROVIDERS_FILE")
fi
if [ -f "${S3_SECRET_ACCESS_KEY_FILE}" ]; then
export S3_SECRET_ACCESS_KEY=$(cat "$S3_SECRET_ACCESS_KEY_FILE")
fi
echo "Waiting for database to be ready..."

View File

@@ -113,7 +113,7 @@ class RecipeShoppingEditor():
if not self.servings:
self.servings = getattr(self.mealplan, 'servings', None) or getattr(self.recipe, 'servings', 1.0)
self._shopping_list_recipe = ShoppingListRecipe.objects.create(recipe=self.recipe, mealplan=self.mealplan, servings=self.servings)
self._shopping_list_recipe = ShoppingListRecipe.objects.create(recipe=self.recipe, mealplan=self.mealplan, servings=self.servings, space=self.space, created_by=self.created_by)
if ingredients:
self._add_ingredients(ingredients=ingredients)

View File

@@ -13,7 +13,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2025-03-12 09:58+0000\n"
"PO-Revision-Date: 2025-04-29 02:39+0000\n"
"Last-Translator: Nico G <aprops@gmail.com>\n"
"Language-Team: Catalan <http://translate.tandoor.dev/projects/tandoor/"
"recipes-backend/ca/>\n"
@@ -252,7 +252,7 @@ msgstr ""
#: .\cookbook\helper\permission_helper.py:164
#: .\cookbook\helper\permission_helper.py:187 .\cookbook\views\views.py:117
msgid "You are not logged in and therefore cannot view this page!"
msgstr "No heu iniciat la sessió, no podeu veure aquesta pàgina."
msgstr "No heu iniciat la sessió, no podeu veure aquesta pàgina!"
#: .\cookbook\helper\permission_helper.py:168
#: .\cookbook\helper\permission_helper.py:174
@@ -284,10 +284,8 @@ msgid "You have more users than allowed in your space."
msgstr "Tens més usuaris dels permesos al teu espai."
#: .\cookbook\helper\recipe_url_import.py:310
#, fuzzy
#| msgid "Use fractions"
msgid "reverse rotation"
msgstr "Utilitza fraccions"
msgstr "Direcció inversa"
#: .\cookbook\helper\recipe_url_import.py:311
msgid "careful rotation"
@@ -391,7 +389,7 @@ msgstr "Temps de preparació"
#: .\cookbook\integration\saffron.py:29 .\cookbook\templates\index.html:7
msgid "Cookbook"
msgstr "Receptari"
msgstr "Llibre de receptes"
#: .\cookbook\integration\saffron.py:31
msgid "Section"
@@ -436,10 +434,8 @@ msgid "Other"
msgstr "Altres"
#: .\cookbook\migrations\0190_auto_20230525_1506.py:17
#, fuzzy
#| msgid "Fats"
msgid "Fat"
msgstr "Greixos"
msgstr "Greix"
#: .\cookbook\migrations\0190_auto_20230525_1506.py:17
#: .\cookbook\migrations\0190_auto_20230525_1506.py:18
@@ -548,10 +544,8 @@ msgid "Instruction Replace"
msgstr "Substituir les Instruccions"
#: .\cookbook\models.py:1472
#, fuzzy
#| msgid "New Unit"
msgid "Never Unit"
msgstr "Nova Unitat"
msgstr "Mai unitats"
#: .\cookbook\models.py:1473
msgid "Transpose Words"
@@ -562,10 +556,8 @@ msgid "Food Replace"
msgstr "Aliment equivalent"
#: .\cookbook\models.py:1475
#, fuzzy
#| msgid "Description"
msgid "Unit Replace"
msgstr "Descripció"
msgstr "Reemplaçar la descripció"
#: .\cookbook\models.py:1476
msgid "Name Replace"
@@ -577,10 +569,8 @@ msgid "Recipe"
msgstr "Recepta"
#: .\cookbook\models.py:1504
#, fuzzy
#| msgid "Foods"
msgid "Food"
msgstr "Menjars"
msgstr "Menjar o aliment"
#: .\cookbook\models.py:1505 .\cookbook\templates\base.html:149
msgid "Keyword"
@@ -1013,10 +1003,8 @@ msgstr "Historial"
#: .\cookbook\templates\base.html:263
#: .\cookbook\templates\ingredient_editor.html:7
#: .\cookbook\templates\ingredient_editor.html:13
#, fuzzy
#| msgid "Ingredients"
msgid "Ingredient Editor"
msgstr "Ingredients"
msgstr "Editor d'ingredients"
#: .\cookbook\templates\base.html:275
#: .\cookbook\templates\export_response.html:7
@@ -1029,10 +1017,8 @@ msgid "Properties"
msgstr "Propietats"
#: .\cookbook\templates\base.html:301 .\cookbook\views\lists.py:255
#, fuzzy
#| msgid "Account Connections"
msgid "Unit Conversions"
msgstr "Connexions de Compte"
msgstr "Conversió d'unitats"
#: .\cookbook\templates\base.html:318 .\cookbook\templates\index.html:47
msgid "Import Recipe"
@@ -1052,10 +1038,8 @@ msgid "Space Settings"
msgstr "Opcions d'espai"
#: .\cookbook\templates\base.html:340
#, fuzzy
#| msgid "External Recipes"
msgid "External Connectors"
msgstr "Receptes Externes"
msgstr "Connectors Externs"
#: .\cookbook\templates\base.html:345 .\cookbook\templates\system.html:13
msgid "System"
@@ -1067,10 +1051,8 @@ msgstr "Admin"
#: .\cookbook\templates\base.html:351
#: .\cookbook\templates\space_overview.html:25
#, fuzzy
#| msgid "No Space"
msgid "Your Spaces"
msgstr "Sense Espai"
msgstr "El teu espai"
#: .\cookbook\templates\base.html:362
#: .\cookbook\templates\space_overview.html:6
@@ -1121,7 +1103,7 @@ msgstr ""
#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:75
msgid "Sync"
msgstr "Sync"
msgstr "Sincronitzar"
#: .\cookbook\templates\batch\monitor.html:10
msgid "Manage watched Folders"
@@ -1337,14 +1319,16 @@ msgid ""
" "
msgstr ""
"\n"
"Markdown és un llenguatge de marcatge lleuger que es pot utilitzar per donar "
"format a text pla de forma senzilla.\n"
" Markdown és un llenguatge de marcatge lleuger que es pot utilitzar "
"per donar format a text pla de forma senzilla.\n"
"Aquest lloc utilitza la biblioteca <a href=\"https://python-markdown.github."
"io/\" target=\"_blank\"> Python Markown</a> per convertir el teu text en un "
"bonic format HTML. La documentació completa de Markdown es pot trobar <a "
"href=\"https://daringfireball.net/projects/markdown/syntax\" target=\"_blank"
"\">aquí</a>.\n"
"Pots trobar informació incompleta, encara que suficient més avall."
"io/\" target=\"_blank\"> Python Markown</a> \n"
"per convertir el teu text en un bonic format HTML. La documentació completa "
"de Markdown es pot trobar\n"
" <a href=\"https://daringfireball.net/projects/markdown/syntax\" target="
"\"_blank\">aquí</a>.\n"
"Pots trobar informació incompleta, encara que suficient més avall.\n"
" "
#: .\cookbook\templates\markdown_info.html:25
msgid "Headers"
@@ -1450,9 +1434,8 @@ msgid ""
"\"noreferrer noopener\" target=\"_blank\">this one.</a>"
msgstr ""
"Les taules de rebaixes són difícils de crear a mà. Es recomana utilitzar un "
"editor de taules com\n"
"<a href=\"https://www.tablesgenerator.com/markdown_tables\" rel=\"noreferrer "
"noopener\" target=\"_blank\">aquest.</a>"
"editor de taules com <a href=\"https://www.tablesgenerator.com/"
"markdown_tables\" rel=\"noreferrer noopener\" target=\"_blank\">aquest.</a>"
#: .\cookbook\templates\markdown_info.html:155
#: .\cookbook\templates\markdown_info.html:157
@@ -1519,10 +1502,8 @@ msgid "Back"
msgstr "Enrere"
#: .\cookbook\templates\property_editor.html:7
#, fuzzy
#| msgid "Ingredients"
msgid "Property Editor"
msgstr "Ingredients"
msgstr "Editor de propietats"
#: .\cookbook\templates\recipe_view.html:36
msgid "Comments"
@@ -1539,7 +1520,7 @@ msgstr "Comentari"
#: .\cookbook\templates\rest_framework\api.html:5
msgid "Recipe Home"
msgstr "Receptari"
msgstr "Pàgina d'inici"
#: .\cookbook\templates\search_info.html:5
#: .\cookbook\templates\search_info.html:9
@@ -1887,17 +1868,15 @@ msgstr "Crear compte de superusuari"
#: .\cookbook\templates\socialaccount\authentication_error.html:7
#: .\cookbook\templates\socialaccount\authentication_error.html:23
#, fuzzy
#| msgid "Social Login"
msgid "Social Network Login Failure"
msgstr "Accés Social"
msgstr "Error d'inici de sessió mitjançant l'inici de sessió social"
#: .\cookbook\templates\socialaccount\authentication_error.html:25
#, fuzzy
#| msgid "An error occurred attempting to move "
msgid ""
"An error occurred while attempting to login via your social network account."
msgstr "Error a l'intentar moure "
msgstr ""
"S'ha produït un error en intentar iniciar sessió mitjançant el teu compte de "
"xarxa social."
#: .\cookbook\templates\socialaccount\connections.html:4
#: .\cookbook\templates\socialaccount\connections.html:15
@@ -1928,7 +1907,7 @@ msgstr "Afegir Compte de tercers"
#: .\cookbook\templates\socialaccount\login.html:5
#: .\cookbook\templates\socialaccount\signup.html:5
msgid "Signup"
msgstr "Registre"
msgstr "Registrar"
#: .\cookbook\templates\socialaccount\login.html:9
#, python-format
@@ -1985,10 +1964,8 @@ msgid "Sign in using"
msgstr "Registrar emprant"
#: .\cookbook\templates\space_manage.html:7
#, fuzzy
#| msgid "Members"
msgid "Space Management"
msgstr "Membres"
msgstr "Gestiona de l'espai"
#: .\cookbook\templates\space_manage.html:26
msgid "Space:"
@@ -1999,10 +1976,8 @@ msgid "Manage Subscription"
msgstr "Administra Subscripció"
#: .\cookbook\templates\space_overview.html:13 .\cookbook\views\delete.py:184
#, fuzzy
#| msgid "Space:"
msgid "Space"
msgstr "Espai:"
msgstr "Espai"
#: .\cookbook\templates\space_overview.html:17
msgid ""
@@ -2022,10 +1997,8 @@ msgid "Owner"
msgstr "Propietari"
#: .\cookbook\templates\space_overview.html:57
#, fuzzy
#| msgid "Create Space"
msgid "Leave Space"
msgstr "Crear Espai"
msgstr "Abandonar l'espai"
#: .\cookbook\templates\space_overview.html:78
#: .\cookbook\templates\space_overview.html:88
@@ -2118,11 +2091,12 @@ msgid ""
" "
msgstr ""
"No es recomana publicar fitxers multimèdia directament mitjançant "
"<b>gunicorn / python.</b>\n"
"<b>gunicorn / python</b>!\n"
"Seguiu els passos descrits\n"
"<a href=\"https://github.com/vabene1111/recipes/releases/tag/0.8.1\">aquí</"
"a> per actualitzar\n"
"la vostra instal·lació."
"la vostra instal·lació.\n"
" "
#: .\cookbook\templates\system.html:55 .\cookbook\templates\system.html:70
#: .\cookbook\templates\system.html:83 .\cookbook\templates\system.html:94
@@ -2147,12 +2121,13 @@ msgid ""
" "
msgstr ""
"\n"
"No teniu un <code>SECRET_KEY </code>configurat al fitxer<code> .env.</code> "
"Django per defecte ha estat\n"
" No teniu un <code>SECRET_KEY </code>configurat al fitxer<code> ."
"env.</code> Django per defecte ha estat\n"
"clau estàndard\n"
"subministrat amb la instal·lació que és coneguda i insegura públicament. "
"Estableix-ho\n"
"<code>SECRET_KEY</code> al fitxer de configuració<code> .env.</code>"
"<code>SECRET_KEY</code> al fitxer de configuració<code> .env.</code>\n"
" "
#: .\cookbook\templates\system.html:73
msgid "Debug Mode"
@@ -2169,10 +2144,11 @@ msgid ""
" "
msgstr ""
"\n"
"Aquesta aplicació encara sexecuta en mode de depuració. És probable que "
"això no sigui necessari. Activa el mode de depuració\n"
" Aquesta aplicació encara sexecuta en mode de depuració. És "
"probable que això no sigui necessari. Activa el mode de depuració\n"
"configuració\n"
"<code>DEBUG = 0</code> al fitxer de configuració<code> .env.</code>"
"<code>DEBUG = 0</code> al fitxer de configuració<code> .env.</code>\n"
" "
#: .\cookbook\templates\system.html:86
msgid "Allowed Hosts"
@@ -2186,6 +2162,11 @@ msgid ""
"this.\n"
" "
msgstr ""
"\n"
" La vostra configuració permet tots els amfitrions, això està bé "
"en algunes instal·lacions, però en general cal evitar-ho. Consulteu la "
"documentació sobre aquest tema.\n"
" "
#: .\cookbook\templates\system.html:97
msgid "Database"
@@ -2196,10 +2177,8 @@ msgid "Info"
msgstr "Info"
#: .\cookbook\templates\system.html:110 .\cookbook\templates\system.html:127
#, fuzzy
#| msgid "Use fractions"
msgid "Migrations"
msgstr "Utilitza fraccions"
msgstr "Migracions"
#: .\cookbook\templates\system.html:116
msgid ""
@@ -2212,24 +2191,30 @@ msgid ""
"issue.\n"
" "
msgstr ""
"\n"
" Les migracions de dades no haurien de fallar mai!\n"
" Els errors de migració podrien provocar problemes operatius "
"importants a l'aplicació.\n"
" Si una migració falla, assegureu-vos que teniu l'última versió "
"i, si és així, publiqueu el registre de migració i la visió general a "
"continuació en un tiquet de GitHub.\n"
" "
#: .\cookbook\templates\system.html:182
msgid "False"
msgstr ""
msgstr "Fals"
#: .\cookbook\templates\system.html:182
msgid "True"
msgstr ""
msgstr "Cert"
#: .\cookbook\templates\system.html:207
msgid "Hide"
msgstr ""
msgstr "Amagar"
#: .\cookbook\templates\system.html:210
#, fuzzy
#| msgid "Show Log"
msgid "Show"
msgstr "Mostra Logs"
msgstr "Mostra"
#: .\cookbook\templates\url_import.html:8
msgid "URL Import"
@@ -2304,16 +2289,17 @@ msgstr "Afegit {obj.name} a la llista de la compra."
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
"Filtrar els plans d'àpats des de la data (inclosa) en el format AAAA-MM-DD."
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
msgstr "Filtreu els plans de menús actuals (inclosos) en el format AAAA-MM-DD."
#: .\cookbook\views\api.py:744
#, 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 de recepta forma part d'un pas. Per a múltiples repeteix paràmetre."
msgstr ""
"Filtra els plans d'àpats amb MealType ID. Per a múltiples paràmetres de "
"repetició."
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
@@ -2332,34 +2318,40 @@ msgstr ""
"també cerca text complet."
#: .\cookbook\views\api.py:910
#, fuzzy
#| msgid "ID of keyword a recipe should have. For multiple repeat parameter."
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr ""
"ID de la paraula clau que hauria de tenir una recepta. Per a múltiples "
"repeteix paràmetre."
"repeteix paràmetre. Equivalent a keywords_or"
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
"Identificadors (IDs) de paraules clau, Paraules clau d'identificació, "
"repetiu-ne per a múltiples. Retorna receptes amb qualsevol paraula clau"
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
"Paraules clau d'identificació (IDs), repetiu-ne per a múltiples. Torna "
"receptes que contenen totes les paraules clau."
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
"Identificador (ID) de les paraules clau, repetiu-ne per a diversos. Exclou "
"les receptes que continguin alguna de les paraules clau."
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
"Identificació (ID) de les paraules clau, repetiu-ne per a diversos. Exclou "
"les receptes que continguin alguna de les paraules clau."
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
@@ -2370,18 +2362,26 @@ msgstr ""
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
"ID dels aliments, repeteix-lo per a múltiples. Retorna les receptes que "
"continguin més d'un aliment"
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
"ID d'aliments, repetiu-ho per a múltiples. Retorna receptes amb tots els "
"aliments."
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
"ID d'aliments, repetiu-ho per a múltiples. Exclou receptes que contingui "
"algun dels aliments."
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
"Identificació (ID) dels aliments, repetiu-ne per a diversos. Exclou les "
"receptes que continguin tots els aliments."
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
@@ -2392,6 +2392,8 @@ msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
"Tingues en compte que una recepta hauria de tenir o ser superior. [0 - 5] Un "
"valor negatiu filtra una puntuació inferior a."
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
@@ -2402,70 +2404,94 @@ msgstr ""
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
"Identificadors de llibre (IDs), repeteix per a diversos. Retorna receptes "
"amb qualsevol dels llibres"
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
"Identificador (IDs) de llibres, repetiu-ho per a diversos. Torna receptes "
"amb tots els llibres."
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
"ID del llibre. Es pot especificar diverses vegades. Exclou les receptes dels "
"llibres amb l'ID especificat."
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
"ID dels llibres, es pot especificar diverses vegades. Exclou les receptes "
"amb tots els llibres amb les ID especificades."
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
msgstr "Només cal retornar les receptes internes. [sí/<b>no</b>]"
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
msgstr "Retorna resultats en ordre aleatori. [sí/<b>no</b>]"
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
"En primer lloc, retorna nous resultats als resultats de la cerca. [cert/"
"<b>fals</b>]"
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
"Filtra les receptes cuinades X vegades o més. Els valors negatius retornen "
"les receptes cuinades menys de X vegades"
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
"Filtra les receptes que s'han cuinat per última vegada el AAAA-MM-DD o "
"després. Prefixació: filtra la data exacta o abans de la data."
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
"Filtra les receptes que s'han creat el AAAA-MM-DD o després. Prefixació: "
"filtra la data exacta o abans de la data."
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
"Filtra les receptes que s'han actualitzat el AAAA-MM-DD o després. "
"Prefixació: filtra la data exacta o abans de la data."
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
"Filtra les receptes que s'han visitat per última vegada el AAAA-MM-DD o "
"després. Prefixació: filtra la data exacta o abans de la data."
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
"Filtra receptes que poden elaborar-se amb aliments disponibles. [true/"
"<b>false</b>]"
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
"Retorna l'entrada de la llista de la compra amb una clau primària "
"d'identificador. Es permeten diversos valors."
#: .\cookbook\views\api.py:1125
msgid ""
@@ -2473,20 +2499,27 @@ msgid ""
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
"Filtreu les entrades de la llista de compres per marcades. [cert, fals, "
"ambdues, <b>recent</b>]<br> -recent inclou elements no "
"marcats i elements completats recentment."
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
"Retorna les entrades de la llista de la compra ordenades per comanda de "
"categoria de supermercat."
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
msgstr "Filtrar les entrades amb la recepta especificada"
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
"Retorna l'entrada de la llista de la compra amb una clau primària de "
"l'identificador. Es permeten múltiples valors."
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
@@ -2494,7 +2527,7 @@ msgstr "Res a fer."
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
msgstr "Url Invàlida"
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
@@ -2502,7 +2535,7 @@ msgstr "Connexió Refusada."
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
msgstr "Esquema URL erroni."
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
@@ -2510,7 +2543,7 @@ msgstr "No s'han trobat dades utilitzables."
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
msgstr "El fitxer supera el límit d'emmagatzematge"
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
@@ -2525,7 +2558,7 @@ msgstr ""
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr "Sincronització correcte"
msgstr "Sincronització correcta!"
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
@@ -2556,42 +2589,36 @@ msgstr ""
"almenys un monitor."
#: .\cookbook\views\delete.py:135
#, fuzzy
#| msgid "Storage Backend"
msgid "Connectors Config Backend"
msgstr "Backend d'emmagatzematge"
msgstr "Back-end de configuració de connectors"
#: .\cookbook\views\delete.py:157
msgid "Invite Link"
msgstr "Enllaç de invitació"
#: .\cookbook\views\delete.py:168
#, fuzzy
#| msgid "Members"
msgid "Space Membership"
msgstr "Membres"
msgstr "Membres de l'espai"
#: .\cookbook\views\edit.py:84
msgid "You cannot edit this storage!"
msgstr "No podeu editar aquest emmagatzematge."
msgstr "No podeu editar aquest emmagatzematge!"
#: .\cookbook\views\edit.py:108
msgid "Storage saved!"
msgstr "Emmagatzematge desat."
msgstr "Emmagatzematge desat!"
#: .\cookbook\views\edit.py:110
msgid "There was an error updating this storage backend!"
msgstr "S'ha produït un error en actualitzar aquest backend d'emmagatzematge."
msgstr "S'ha produït un error en actualitzar aquest backend d'emmagatzematge!"
#: .\cookbook\views\edit.py:134
#, fuzzy
#| msgid "Changes saved!"
msgid "Config saved!"
msgstr "Canvis desats!"
msgstr "Configuració desada!"
#: .\cookbook\views\edit.py:142
msgid "ConnectorConfig"
msgstr ""
msgstr "Configuració del connector"
#: .\cookbook\views\edit.py:198
msgid "Changes saved!"
@@ -2622,10 +2649,8 @@ msgid "Shopping List"
msgstr "Llista de la Compra"
#: .\cookbook\views\lists.py:77 .\cookbook\views\new.py:98
#, fuzzy
#| msgid "Storage Backend"
msgid "Connector Config Backend"
msgstr "Backend d'emmagatzematge"
msgstr "Configuració del backend per a connectors"
#: .\cookbook\views\lists.py:91
msgid "Invite Links"
@@ -2640,10 +2665,8 @@ msgid "Shopping Categories"
msgstr "Categories de Compres"
#: .\cookbook\views\lists.py:202
#, fuzzy
#| msgid "Filter"
msgid "Custom Filters"
msgstr "Filtre"
msgstr "Filtres personalitzats"
#: .\cookbook\views\lists.py:239
msgid "Steps"
@@ -2651,13 +2674,11 @@ msgstr "Passos"
#: .\cookbook\views\lists.py:270
msgid "Property Types"
msgstr ""
msgstr "Tipus de propietat"
#: .\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 "Funció no està disponible a la versió de demostració!"
msgstr "Aquesta funció no està activada per l'administrador del servidor!"
#: .\cookbook\views\new.py:123
msgid "Imported new recipe!"
@@ -2673,11 +2694,9 @@ msgid "This feature is not available in the demo version!"
msgstr "Funció no està disponible a la versió de demostració!"
#: .\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 "Has arribat al nombre màxim de receptes per al vostre espai."
msgstr "Has assolit la quantitat màxima d'espais que pots tenir."
#: .\cookbook\views\views.py:89
msgid ""
@@ -2715,47 +2734,36 @@ msgstr "Cerca difusa no és compatible amb aquest mètode de cerca!"
#, python-format
msgid "PostgreSQL %(v)s is deprecated. Upgrade to a fully supported version!"
msgstr ""
"PostgreSQL %(v)s està obsolet. Actualitza a una versió totalment compatible!"
#: .\cookbook\views\views.py:309
#, python-format
msgid "You are running PostgreSQL %(v1)s. PostgreSQL %(v2)s is recommended"
msgstr ""
msgstr "Estàs fent servir PostgreSQL %(v1)s. Es recomana PostgreSQL %(v2)s"
#: .\cookbook\views\views.py:313
msgid "Unable to determine PostgreSQL version."
msgstr ""
msgstr "No es pot determinar la versió de PostgreSQL."
#: .\cookbook\views\views.py:317
#, 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"
"Aquesta aplicació no sexecuta amb un backend de base de dades Postgres. "
"Això està bé, però no es recomana com alguns\n"
"les funcions només funcionen amb bases de dades postgres."
"Aquesta aplicació no s'executa amb un backend de base de dades Postgres. "
"Això està bé, però no es recomanable, ja que algunes funcions només "
"funcionen amb bases de dades Postgres."
#: .\cookbook\views\views.py:360
#, fuzzy
#| 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 on how to reset passwords."
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 on how to reset passwords."
msgstr ""
"La pàgina de configuració només es pot utilitzar per crear el primer usuari. "
"Si heu oblidat les vostres credencials de superusuari, consulteu la "
"documentació de django sobre com restablir les contrasenyes."
"La pàgina de configuració només es pot utilitzar per crear el primer "
"usuari! Si heu oblidat les vostres credencials de "
"superusuari, consulteu la documentació de django sobre com restablir les "
"contrasenyes."
#: .\cookbook\views\views.py:369
msgid "Passwords dont match!"
@@ -2767,7 +2775,7 @@ msgstr "L'usuari s'ha creat, si us plau inicieu la sessió!"
#: .\cookbook\views\views.py:393
msgid "Malformed Invite Link supplied!"
msgstr "S'ha proporcionat un enllaç d'invitació mal format."
msgstr "S'ha proporcionat un enllaç d'invitació amb un format incorrecte!"
#: .\cookbook\views\views.py:410
msgid "Successfully joined space."
@@ -2775,7 +2783,7 @@ msgstr "Unit correctament a l'espai."
#: .\cookbook\views\views.py:416
msgid "Invite Link not valid or already used!"
msgstr "L'enllaç d'invitació no és vàlid o ja s'ha utilitzat."
msgstr "L'enllaç d'invitació no és vàlid o ja s'ha utilitzat!"
#: .\cookbook\views\views.py:432
msgid ""
@@ -2795,7 +2803,7 @@ msgstr ""
#: .\cookbook\views\views.py:451
msgid "Manage recipes, shopping list, meal plans and more."
msgstr ""
msgstr "Gestiona receptes, llistes de la compra, menús setmanals i molt més."
#: .\cookbook\views\views.py:458
msgid "Plan"
@@ -2803,17 +2811,15 @@ msgstr "Pla"
#: .\cookbook\views\views.py:458
msgid "View your meal Plan"
msgstr ""
msgstr "Veure la planificació de menús"
#: .\cookbook\views\views.py:459
msgid "View your cookbooks"
msgstr ""
msgstr "Veure els meus llibres de receptes"
#: .\cookbook\views\views.py:460
#, fuzzy
#| msgid "New Shopping List"
msgid "View your shopping lists"
msgstr "Nova Llista de Compra"
msgstr "Veure la teva llista de la compra"
#~ msgid "Default unit"
#~ msgstr "Unitat per defecte"

View File

@@ -12,7 +12,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2024-12-09 00:58+0000\n"
"PO-Revision-Date: 2025-05-18 10:58+0000\n"
"Last-Translator: Vincenzo Reale <smart2128vr@gmail.com>\n"
"Language-Team: Italian <http://translate.tandoor.dev/projects/tandoor/"
"recipes-backend/it/>\n"
@@ -1439,7 +1439,7 @@ msgid ""
"editor like <a href=\"https://www.tablesgenerator.com/markdown_tables\" rel="
"\"noreferrer noopener\" target=\"_blank\">this one.</a>"
msgstr ""
"Le tabelle in markdown sono difficili da creare a mano. Si raccomanda "
"Le tabelle in markdown sono difficili da creare a mano. Si consiglia "
"l'utilizzo di un editor di tabelle come <a href=\"https://www.tablesgenerator"
".com/markdown_tables\" rel=\"noreferrer noopener\" target=\"_blank\""
">questo.</a>"
@@ -2098,7 +2098,7 @@ msgid ""
" your installation.\n"
" "
msgstr ""
"<b>Non è raccomandato</b> erogare i file multimediali con gunicorn/python!\n"
"<b>Non è consigliato</b> erogare i file multimediali con gunicorn/python!\n"
" Segui i passi descritti\n"
" <a href=\"https://github.com/vabene1111/recipes/releases/tag/0.8."
"1\">qui</a> per aggiornare\n"

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,24 @@
# Generated by Django 4.2.18 on 2025-03-14 10:50
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('cookbook', '0219_connectorconfig_supports_description_field'),
]
operations = [
migrations.AddField(
model_name='shoppinglistrecipe',
name='created_by',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
),
migrations.AddField(
model_name='shoppinglistrecipe',
name='space',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='cookbook.space'),
),
]

View File

@@ -0,0 +1,42 @@
# Generated by Django 4.2.18 on 2025-03-14 10:50
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
from django.db.models import F, Count
from django_scopes import scopes_disabled
def add_space_and_owner_to_shopping_list_recipe(apps, schema_editor):
print('migrating shopping list recipe space attribute, this might take a while ...')
with scopes_disabled():
ShoppingListRecipe = apps.get_model('cookbook', 'ShoppingListRecipe')
# delete all shopping list recipes that do not have entries as those are of no use anyway
ShoppingListRecipe.objects.annotate(entry_count=Count('entries')).filter(entry_count__lte=0).delete()
shopping_list_recipes = ShoppingListRecipe.objects.all().prefetch_related('entries')
update_list = []
for slr in shopping_list_recipes:
if entry := slr.entries.first():
if entry.space and entry.created_by:
slr.space = entry.space
slr.created_by = entry.created_by
update_list.append(slr)
else:
print(slr, 'missing data on entry')
else:
print(slr, 'missing entry')
ShoppingListRecipe.objects.bulk_update(update_list, ['space', 'created_by'], batch_size=500)
class Migration(migrations.Migration):
dependencies = [
('cookbook', '0220_shoppinglistrecipe_created_by_and_more'),
]
operations = [
migrations.RunPython(add_space_and_owner_to_shopping_list_recipe),
]

View File

@@ -0,0 +1,26 @@
# Generated by Django 4.2.18 on 2025-03-14 12:41
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('cookbook', '0221_migrate_shoppinglistrecipe_space_created_by'),
]
operations = [
migrations.AlterField(
model_name='shoppinglistrecipe',
name='created_by',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
),
migrations.AlterField(
model_name='shoppinglistrecipe',
name='space',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='cookbook.space'),
),
]

View File

@@ -1179,31 +1179,18 @@ class MealPlan(ExportModelOperationsMixin('meal_plan'), models.Model, Permission
class ShoppingListRecipe(ExportModelOperationsMixin('shopping_list_recipe'), models.Model, PermissionModelMixin):
name = models.CharField(max_length=32, blank=True, default='')
recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE, null=True, blank=True) # TODO make required after old shoppinglist deprecated
servings = models.DecimalField(default=1, max_digits=8, decimal_places=4)
recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE, null=True, blank=True)
mealplan = models.ForeignKey(MealPlan, on_delete=models.CASCADE, null=True, blank=True)
objects = ScopedManager(space='recipe__space')
created_by = models.ForeignKey(User, on_delete=models.CASCADE)
space = models.ForeignKey(Space, on_delete=models.CASCADE)
@staticmethod
def get_space_key():
return 'recipe', 'space'
def get_space(self):
return self.recipe.space
objects = ScopedManager(space='space')
def __str__(self):
return f'Shopping list recipe {self.id} - {self.recipe}'
def get_owner(self):
try:
if not self.entries.exists():
return 'orphan'
else:
return getattr(self.entries.first(), 'created_by', None)
except AttributeError:
return None
class ShoppingListEntry(ExportModelOperationsMixin('shopping_list_entry'), models.Model, PermissionModelMixin):
list_recipe = models.ForeignKey(ShoppingListRecipe, on_delete=models.CASCADE, null=True, blank=True, related_name='entries')

View File

@@ -1093,6 +1093,7 @@ class ShoppingListRecipeSerializer(serializers.ModelSerializer):
mealplan_from_date = serializers.ReadOnlyField(source='mealplan.from_date')
mealplan_type = serializers.ReadOnlyField(source='mealplan.meal_type.name')
servings = CustomDecimalField()
created_by = UserSerializer(read_only=True)
def get_name(self, obj):
if not isinstance(value := obj.servings, Decimal):
@@ -1106,6 +1107,11 @@ class ShoppingListRecipeSerializer(serializers.ModelSerializer):
or obj.recipe.name
) + f' ({value:.2g})'
def create(self, validated_data):
validated_data['space'] = self.context['request'].space
validated_data['created_by'] = self.context['request'].user
return super().create(validated_data)
def update(self, instance, validated_data):
# TODO remove once old shopping list
if 'servings' in validated_data and self.context.get('view', None).__class__.__name__ != 'ShoppingListViewSet':
@@ -1116,8 +1122,8 @@ class ShoppingListRecipeSerializer(serializers.ModelSerializer):
class Meta:
model = ShoppingListRecipe
fields = ('id', 'recipe_name', 'name', 'recipe', 'mealplan', 'servings', 'mealplan_note', 'mealplan_from_date',
'mealplan_type')
read_only_fields = ('id',)
'mealplan_type', 'created_by')
read_only_fields = ('id', 'created_by',)
class ShoppingListEntrySerializer(WritableNestedModelSerializer):

View File

@@ -12,7 +12,7 @@ DETAIL_URL = 'api:shoppinglistrecipe-detail'
@pytest.fixture()
def obj_1(space_1, u1_s1, recipe_1_s1):
r = ShoppingListRecipe.objects.create(recipe=recipe_1_s1, servings=1)
r = ShoppingListRecipe.objects.create(recipe=recipe_1_s1, servings=1, space=space_1, created_by=auth.get_user(u1_s1))
for ing in r.recipe.steps.first().ingredients.all():
ShoppingListEntry.objects.create(list_recipe=r, ingredient=ing, food=ing.food, unit=ing.unit, amount=ing.amount, created_by=auth.get_user(u1_s1), space=space_1)
return r

View File

@@ -5,7 +5,20 @@ package by hhursev.
If you have the skills to add new sites or help resolve issues you are indirectly helping Tandoor.
## Unofficial mobile app
## Unofficial mobile apps
### kitshn
Unofficial Tandoor recipes client
Maintained by [Aimo](https://github.com/aimok04/kitshn)
- Website: [https://kitshn.app/](https://kitshn.app/)
- Appstores: [Apple](https://apps.apple.com/us/app/kitshn-for-tandoor/id6740168361), [Android](https://play.google.com/store/apps/details?id=de.kitshn.android)
### Untare (discontinued)
Maintained by [phantomate](https://github.com/phantomate/Untare)

View File

@@ -440,6 +440,13 @@ S3_SECRET_ACCESS_KEY=
S3_BUCKET_NAME=
```
Alternatively you can point to a file containing the S3_SECRET_ACCESS_KEY value. If using containers make sure the file is
persistent and available inside the container.
```
S3_SECRET_ACCESS_KEY_FILE=/path/to/file.txt
```
Optional settings (only copy the ones you need)
```

View File

@@ -7,9 +7,9 @@ While intermediate updates can be skipped when updating please make sure to
For all setups using Docker the updating process look something like this
0. Before updating it is recommended to **create a [backup](/system/backup)!**
1. Stop the container using `docker-compose down`
2. Pull the latest image using `docker-compose pull`
3. Start the container again using `docker-compose up -d`
1. Stop the container using `docker compose down`
2. Pull the latest image using `docker compose pull`
3. Start the container again using `docker compose up -d`
## Manual
@@ -45,49 +45,50 @@ docker ps -a --format 'table {{.ID}}\t{{.Names}}\t{{.Image}}\t{{.Status}}' | awk
docker exec -t {{database_container}} pg_dumpall -U {{djangouser}} > ~/tandoor.sql
```
3. Stop the postgres container
3. Stop the tandoor application
``` bash
docker stop {{database_container}} {{tandoor_container}}
docker compose down
```
4. Rename the tandoor volume
``` bash
sudo mv ~/.docker/compose/postgres ~/.docker/compose/postgres.old
mv ./postgresql ./postgresql.old
```
5. Update image tag on postgres container.
5. Update image tag on postgres container in the docker-compose.yaml
``` yaml
db_recipes:
restart: always
image: postgres:16-alpine
volumes:
- ./postgresql:/var/lib/postgresql/data
env_file:
- ./.env
```
``` yaml
db_recipes:
restart: always
image: postgres:16-alpine
volumes:
- ./postgresql:/var/lib/postgresql/data
env_file:
- ./.env
```
6. Pull and rebuild container.
6. Pull and rebuild database container
``` bash
docker-compose pull && docker-compose up -d
```
``` bash
docker compose pull && docker compose up -d db_recipes
```
7. Import the database export
``` bash
cat ~/tandoor.sql | sudo docker exec -i {{database_container}} psql postgres -U {{djangouser}}
```
8. Install postgres extensions
``` bash
docker exec -it {{database_container}} psql postgres -U {{djangouser}}
```
``` bash
cat ~/tandoor.sql | docker exec -i {{database_container}} psql postgres -U {{djangouser}}
```
8. Install postgres extensions
``` bash
docker exec -it {{database_container}} psql postgres -U {{djangouser}}
```
then
``` psql
CREATE EXTENSION IF NOT EXISTS unaccent;
CREATE EXTENSION IF NOT EXISTS pg_trgm;
```
``` psql
CREATE EXTENSION IF NOT EXISTS unaccent;
CREATE EXTENSION IF NOT EXISTS pg_trgm;
```
If anything fails, go back to the old postgres version and data directory and try again.

View File

@@ -1,4 +1,4 @@
Django==4.2.20
Django==4.2.22
cryptography===44.0.1
django-annoying==0.10.6
django-cleanup==8.0.0
@@ -10,13 +10,13 @@ drf-writable-nested==0.7.1
django-oauth-toolkit==2.4.0
django-debug-toolbar==4.3.0
bleach==6.2.0
gunicorn==22.0.0
gunicorn==23.0.0
lxml==5.3.1
Markdown==3.5.1
Pillow==11.1.0
psycopg2-binary==2.9.9
psycopg2-binary==2.9.10
python-dotenv==1.0.0
requests==2.32.3
requests==2.32.4
six==1.16.0
webdavclient3==3.14.6
whitenoise==6.8.2
@@ -41,7 +41,7 @@ django-hCaptcha==0.2.0
python-ldap==3.4.4
django-auth-ldap==4.6.0
pyppeteer==2.0.0
pytubefix==8.12.2
pytubefix==8.13.1
aiohttp==3.10.11
inflection==0.5.1
redis==5.2.1

View File

@@ -318,7 +318,7 @@
"shopping_share_desc": "Els usuaris veuran tots els elements de la teva llista de compres. Perquè puguis veure les seves t'han d'afegir.",
"shopping_auto_sync_desc": "Establiu 0 per deshabilitar la sincronització automàtica. Quan es mostra una llista de compres aquesta es guarda de forma automàtica cada pocs segons per recarregar els canvis d'altres usuaris. És útil per a llistes compartides, però utilitza més dades mòbils.",
"mealplan_autoadd_shopping_desc": "Afegir automàticament tots els ingredients del Pla d'Àpats a la llista de compres.",
"mealplan_autoexclude_onhand_desc": "",
"mealplan_autoexclude_onhand_desc": "En afegir alguna cosa a la llista de la compra (manualment o automàticament), excloure aquells ingredients que ja estan en possessió.",
"mealplan_autoinclude_related_desc": "Si afegiu a un pla d'àpats a la llista de compres (de forma manual o automàticament), incloureu totes les receptes relacionades.",
"default_delay_desc": "Nombre dhores per defecte per retardar lentrada de la llista de compres.",
"filter_to_supermarket": "Filtrar per supermercat",
@@ -396,35 +396,35 @@
"left_handed": "Mode Esquerrà",
"left_handed_help": "Optimitzarà la interfície dusuari per utilitzar-la amb la mà esquerra.",
"show_step_ingredients_setting": "Mostra els Ingredients al costat dels passo de la recepta",
"show_step_ingredients_setting_help": "",
"show_step_ingredients": "",
"hide_step_ingredients": "",
"Custom Filter": "",
"shared_with": "",
"sort_by": "",
"asc": "",
"desc": "",
"date_viewed": "",
"last_cooked": "",
"times_cooked": "",
"date_created": "",
"show_sortby": "",
"search_rank": "",
"make_now": "",
"Created": "",
"Updated": "",
"Unchanged": "",
"Error": "",
"make_now_count": "",
"recipe_filter": "",
"book_filter_help": "",
"review_shopping": "",
"view_recipe": "",
"copy_to_new": "",
"recipe_name": "",
"paste_ingredients_placeholder": "",
"paste_ingredients": "",
"ingredient_list": "",
"show_step_ingredients_setting_help": "Afegir la taula d'ingredients al costat dels passos de la recepta. S'aplica al moment de la creació. Pot anul·lar-se des de la vista d'edició de la recepta.",
"show_step_ingredients": "Mostrar els ingredients de cada pas",
"hide_step_ingredients": "No mostrar els ingredients per passos",
"Custom Filter": "Filtre Personalitzat",
"shared_with": "Compartit amb",
"sort_by": "Ordenar per",
"asc": "Ordre ascendent",
"desc": "Ordre descendent",
"date_viewed": "Darreres Vistes",
"last_cooked": "Cuinades últimament",
"times_cooked": "Nombre de cops elaborada",
"date_created": "Data de creació",
"show_sortby": "Mostrar \"Ordenar per\"",
"search_rank": "Buscar per puntuació",
"make_now": "Cuinar Ara",
"Created": "Creada",
"Updated": "Actualitzada",
"Unchanged": "Sense Canvis",
"Error": "Error",
"make_now_count": "Com a màxim els ingredients que falten",
"recipe_filter": "Filtre de receptes",
"book_filter_help": "Incloure les receptes del filtre de receptes a més de les assignades manualment.",
"review_shopping": "Comprova els elements de la llista abans de desar",
"view_recipe": "Veure la recepta",
"copy_to_new": "Copiar nova recepta",
"recipe_name": "Nom de la recepta",
"paste_ingredients_placeholder": "Enganxar aquí la llista d'ingredients...",
"paste_ingredients": "Enganxar els ingredients",
"ingredient_list": "Llista d'ingredients",
"explain": "Explicar",
"filter": "Filtre",
"Website": "Lloc Web",
@@ -440,21 +440,21 @@
"Nav_Text_Mode": "Mode de navegació per text",
"Nav_Text_Mode_Help": "Es comporta de forma diferent per cada tema.",
"Nav_Color_Help": "Canviar el color de navegació.",
"Space_Cosmetic_Settings": "",
"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": "",
"Space_Cosmetic_Settings": "Un administrador de l'espai podria canviar algunes configuracions estètiques i tindrien prioritat sobre la configuració dels usuaris per a aquest espai.",
"Use_Kj": "Utilitzar kJ en comptes de kcal",
"Comments_setting": "Mostrar comentaris",
"click_image_import": "Fes clic a la imatge que vols importar per a aquesta recepta",
"no_more_images_found": "No s'han trobat imatges addicionals en aquest lloc web.",
"import_duplicates": "Per evitar duplicats, s'ignoraran les receptes amb el mateix nom. Marqueu la casella per importar-ho tot.",
"paste_json": "Enganxeu una font json o html per carregar la recepta.",
"Click_To_Edit": "Clic per editar",
"search_no_recipes": "No s'ha trobat cap recepta!",
"search_import_help_text": "Importar una recepta d'un web extern o aplicació.",
"search_create_help_text": "Crear una nova recepta directament a Tandoor.",
"warning_duplicate_filter": "Avís: A causa de limitacions tècniques, tenir múltiples filtres de la mateixa combinació (i/o/no - and/or/not) pot causar resultats inesperats.",
"reset_children": "Restableix les herències i els fills o dependències",
"reset_children_help": "Sobreescriure tots els fills amb valors de camps heretats. Els camps heretats dels fills seran establerts a Camps Heretats llevat que s'hagi determinat uns Camps Heretats dels Fills.",
"reset_food_inheritance": "Restablir les herències/dependències",
"reset_food_inheritance_info": "Restablir tots els valors dels camps dels aliments heretats i els seus parents.",
"substitute_help": "Els substituts es tenen en compte quan es busquen receptes que es poden fer amb ingredients disponibles.",
"substitute_siblings_help": "Tots els aliments que comparteixen un pare amb aquest aliment es consideren substituts.",
@@ -486,85 +486,87 @@
"Change_Password": "Canviar contrasenya",
"Social_Authentication": "Identificació amb Xarxes Socials",
"Random Recipes": "Receptes Aleatòries",
"parameter_count": "",
"select_keyword": "",
"add_keyword": "",
"select_file": "",
"select_recipe": "",
"select_unit": "",
"select_food": "",
"remove_selection": "",
"empty_list": "",
"Select": "",
"Supermarkets": "",
"User": "",
"Username": "",
"First_name": "",
"Last_name": "",
"Keyword": "",
"Advanced": "",
"Page": "",
"Single": "",
"Multiple": "",
"Reset": "",
"Disabled": "",
"Disable": "",
"Enable": "",
"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": "",
"Toggle": "",
"total": "",
"Import_Error": "",
"Warning_Delete_Supermarket_Category": "",
"New_Supermarket": "",
"New_Supermarket_Category": "",
"Are_You_Sure": "",
"Valid Until": "",
"Split_All_Steps": "",
"Combine_All_Steps": "",
"Plural": "",
"plural_short": "",
"g": "",
"kg": "",
"ounce": "",
"pound": "",
"ml": "",
"l": "",
"fluid_ounce": "",
"pint": "",
"quart": "",
"gallon": "",
"tbsp": "",
"tsp": "",
"imperial_fluid_ounce": "",
"imperial_pint": "",
"imperial_quart": "",
"imperial_gallon": "",
"imperial_tbsp": "",
"imperial_tsp": "",
"Choose_Category": "",
"Back": "",
"Use_Plural_Unit_Always": "",
"Use_Plural_Unit_Simple": "",
"Use_Plural_Food_Always": "",
"Use_Plural_Food_Simple": "",
"plural_usage_info": "",
"Create Recipe": "",
"Import Recipe": "",
"Never_Unit": "",
"Transpose_Words": "",
"Name_Replace": "",
"parameter_count": "Paràmetre {count}",
"select_keyword": "Seleccionar paraula clau",
"add_keyword": "Afegir Paraula Clau",
"select_file": "Seleccionar Arxiu",
"select_recipe": "Seleccionar Recepta",
"select_unit": "Seleccionar Unitat",
"select_food": "Seleccionar Aliment",
"remove_selection": "Desseleccionar",
"empty_list": "La llista és buida.",
"Select": "Seleccionar",
"Supermarkets": "Supermercats",
"User": "Usuari",
"Username": "Nom d'Usuari",
"First_name": "Nom",
"Last_name": "Cognoms",
"Keyword": "Paraula clau",
"Advanced": "Avançat",
"Page": "Pàgina",
"Single": "Únic/a",
"Multiple": "Múltiple",
"Reset": "Restablir",
"Disabled": "Desactivat",
"Disable": "Desactivar",
"Enable": "Activat",
"Options": "Opcions",
"Create Food": "Crear aliment/ingredient",
"create_food_desc": "Crear un aliment i vincular-lo a aquesta recepta.",
"additional_options": "Opcions addicionals",
"Importer_Help": "Més informació i ajuda amb aquest importador:",
"Documentation": "Documentació",
"Select_App_To_Import": "Seleccioneu una aplicació des de la qual importar",
"Import_Supported": "Importació suportada",
"Export_Supported": "Exportació suportada",
"Import_Not_Yet_Supported": "Importació encara no suportada",
"Export_Not_Yet_Supported": "Exportació encara no suportada",
"Import_Result_Info": "{imported} de {total} receptes s'han importat",
"Recipes_In_Import": "Receptes al fitxer d'importació",
"Toggle": "Alternar",
"total": "total",
"Import_Error": "S'ha produït un error durant la importació. Si us plau, amplia els detalls a la part inferior de la pàgina per veure'l.",
"Warning_Delete_Supermarket_Category": "Si suprimiu una categoria de supermercat, també se suprimiran totes les relacions alimentàries. N'estàs segur?",
"New_Supermarket": "Crear nou supermercat",
"New_Supermarket_Category": "Crear nova categoria de supermercat",
"Are_You_Sure": "N'estàs segur?",
"Valid Until": "Vàlid fins",
"Split_All_Steps": "Dividir totes les files en passos separats.",
"Combine_All_Steps": "Combinar tots els passos en un sol camp.",
"Plural": "Plural",
"plural_short": "Plural",
"g": "gram [g] (mètric, pes)",
"kg": "Kilogram [kg] (mètric, pes)",
"ounce": "unça [oz] (pes)",
"pound": "lliura (pes)",
"ml": "mil·lilitre [ml] (mètrica, volum)",
"l": "litre [l] (mètric, volum)",
"fluid_ounce": "unça líquida [fl oz] (US, volum)",
"pint": "pinta [pt] (EUA, volum)",
"quart": "quart de galó [qt] (US, volum)",
"gallon": "galó [gal] (US, volum)",
"tbsp": "cullerada sopera [tbsp] (US, volum)",
"tsp": "culleradeta [tsp] (US, volum)",
"imperial_fluid_ounce": "unça líquida imperial [imp fl oz] (Regne Unit, volum)",
"imperial_pint": "Pinta imperial [imp pt] (Regne Unit, volum)",
"imperial_quart": "quart de galó imperial [imp qt] (Regne Unit, volum)",
"imperial_gallon": "galó imperial [imp gal] (Regne Unit, volum)",
"imperial_tbsp": "cullerada sopera imperial [imp tbsp] (Regne Unit, volum)",
"imperial_tsp": "culleradeta imperial [imp tsp] (Regne Unit, volum)",
"Choose_Category": "Escull Categoria",
"Back": "Enrere",
"Use_Plural_Unit_Always": "Utilitzar sempre el plural per a les unitats",
"Use_Plural_Unit_Simple": "Utilitzar la forma plural per les unitats de forma dinàmica",
"Use_Plural_Food_Always": "Fer servir sempre la forma plural pels aliments",
"Use_Plural_Food_Simple": "Utilitzar la forma plural per als aliments de manera dinàmica",
"plural_usage_info": "Utilitzar la forma plural per a les unitats i els aliments d'aquest grup.",
"Create Recipe": "Crear una recepta",
"Import Recipe": "Importar Recepta",
"Never_Unit": "No posar unitats mai",
"Transpose_Words": "Transposar paraules",
"Name_Replace": "Substituir el Nom",
"Food_Replace": "Aliment equivalent",
"Unit_Replace": "Substituir unitat"
"Unit_Replace": "Substituir unitat",
"DefaultPage": "Pàgina per defecte",
"us_cup": "tassa [cup] (US, Volume)"
}

View File

@@ -415,5 +415,41 @@
"err_importing_recipe": "Ocorreu um erro ao importar a receita!",
"recipe_property_info": "Você também pode adicionar propriedades aos alimentos para calculá-los automaticamente de acordo com sua receita!",
"open_data_help_text": "O projeto Tandoor Open Data fornece dados contribuídos pela comunidade. Este campo é preenchido automaticamente ao importá-lo e permite atualizações no futuro.",
"per_serving": "por porção"
"per_serving": "por porção",
"property_type_fdc_hint": "Somente tipos de propriedade com um ID FDC podem puxar dados da base de dados FDC automaticamente",
"Data_Import_Info": "Melhore seu Espaço importando uma lista curada de comidas, unidades e mais para melhorar sua coleção de receitas.",
"converted_amount": "Quantidade convertida",
"Properties": "Propriedades",
"created_by": "Criado por",
"FDC_ID": "ID FDC",
"FDC_ID_help": "ID database FDC",
"Input": "Input",
"Undo": "Desfazer",
"NoMoreUndo": "Nenhuma alteração para ser desfeita.",
"StartDate": "Data de início",
"EndDate": "Data fim",
"Welcome": "Bem-vindo",
"Open_Data_Slug": "Slug do Open Data",
"Open_Data_Import": "Importação do Open Data",
"Properties_Food_Amount": "Proriedades Quantidade de Comida",
"Properties_Food_Unit": "Propriedades Unidade de Comida",
"Shopping_input_placeholder": "Ex: Batata/100 Batatas/100 g Batatas",
"Property": "Propriedade",
"Property_Editor": "Propriedade Editor",
"Conversion": "Conversão",
"FDC_Search": "Pesquisa FDC",
"Update_Existing_Data": "Atualizar dados existentes",
"Use_Metric": "Usar sistema Métrico",
"converted_unit": "Unidade convertida",
"Learn_More": "Aprenda mais",
"Calculator": "Calculadora",
"base_unit": "Unidade base",
"base_amount": "Quantidade base",
"Datatype": "Tipo de dados",
"Number of Objects": "Número de objetos",
"Alignment": "Alinhamento",
"Delete_All": "Apagar todos",
"CustomImageHelp": "Fazer upload de uma image para mostrar na visão geral do espaço.",
"CustomTheme": "Tema customizado",
"CustomThemeHelp": "Substituir os estilos do tema selecionado com o upload de um arquivo CSS customizado."
}

View File

@@ -1,5 +1,5 @@
{
"warning_feature_beta": "Este recurso está atualmente em um estado BETA (teste). Por favor, espere bugs e possíveis mudanças no futuro (possivelmente perdendo dados relacionados a esta funcionalidade) ao usar este recurso.",
"warning_feature_beta": "Este recurso está atualmente em fase de teste (BETA). Por favor, espere bugs e possíveis mudanças no futuro ao usar este recurso (possivelmente perdendo dados relacionados a esta funcionalidade).",
"err_fetching_resource": "Ocorreu um erro ao buscar um recurso!",
"err_creating_resource": "Ocorreu um erro ao criar um recurso!",
"err_updating_resource": "Ocorreu um erro ao atualizar um recurso!",

View File

@@ -473,5 +473,16 @@
"plan_share_desc": "Выбранным пользователям будет автоматически предоставлен доступ к новым записям в Плане Питания.",
"CustomTheme": "Пользовательская тема",
"CustomThemeHelp": "Измените стили выбранной темы, загрузив собственный CSS-файл.",
"Learn_More": "Узнать больше"
"Learn_More": "Узнать больше",
"OnHand_help": "Еда находится в инвентаре и не будет автоматически добавлена в список покупок. Статус «Под рукой» передается пользователям, совершающим покупки.",
"csv_prefix_help": "Префикс для добавления при копировании списка в буфер обмена.",
"csv_prefix_label": "Префикс списка",
"mark_complete": "Пометить выполненным",
"ignore_shopping_help": "Никогда не добавляйте продукты в список покупок (например, воду)",
"shopping_add_onhand_desc": "Пометьте продукты «Под рукой», если они вычеркнуты из списка покупок.",
"Number of Objects": "Количество (шт.)",
"CustomLogoHelp": "Загрузите изображения разных размеров в форме квадрата, чтобы изменить логотип на вкладке браузера и в установленном веб-приложении.",
"Update_Existing_Data": "Обновить данные",
"Use_Metric": "Использовать метрическую систему",
"Property_Editor": "Редактировать свойство"
}

View File

@@ -1,5 +1,5 @@
{
"warning_feature_beta": "Ця функція зараз в БЕТІ (тестується). Будь ласка, очікуйте помилок і можливих порушень і майбутньому (можлива втрата даних), коли користуєтесь цією функцією.",
"warning_feature_beta": "Наразі ця функціональність знаходиться в стані BETA (тестування). Будь ласка, будьте готові до помилок і можливих змін у майбутньому (можливо, втрата даних, пов'язаних з функціональністю) під час використання.",
"err_fetching_resource": "Виникла помилка при отриманні ресурсу!",
"err_creating_resource": "Виникла помилка при створенні ресурсу!",
"err_updating_resource": "Виникла помилка при оновленні ресурсу!",
@@ -21,19 +21,19 @@
"convert_internal": "Конвертувати у внутрішній рецепт",
"show_only_internal": "Показати тільки внутрішні рецепти",
"show_split_screen": "Розділений перегляд",
"Log_Recipe_Cooking": "",
"Log_Recipe_Cooking": "Журнал приготування",
"External_Recipe_Image": "Зображення Зовнішнього Рецепту",
"Add_to_Shopping": "Додати до Покупок",
"Add_to_Plan": "Додати до Плану",
"Step_start_time": "Час початку кроку",
"Sort_by_new": "",
"Sort_by_new": "Сортувати за новими",
"Table_of_Contents": "Зміст",
"Recipes_per_page": "Кількість Рецептів на Сторінку",
"Show_as_header": "",
"Hide_as_header": "",
"Show_as_header": "Показати як заголовок",
"Hide_as_header": "Приховати як заголовок",
"Add_nutrition_recipe": "Додати харчову цінність до рецепту",
"Remove_nutrition_recipe": "Видалити харчову цінність з рецепта",
"Copy_template_reference": "",
"Copy_template_reference": "Скопіювати поссилання на шаблон",
"Save_and_View": "Зберегти і Подивитися",
"Manage_Books": "Управління Книжкою",
"Meal_Plan": "План Харчування",
@@ -42,7 +42,7 @@
"Recipe_Image": "Зображення Рецепту",
"Import_finished": "Імпорт закінчено",
"View_Recipes": "Подивитися Рецепт",
"Log_Cooking": "",
"Log_Cooking": "Занотувати приготування",
"New_Recipe": "Новий Рецепт",
"Url_Import": "Імпорт за посиланням",
"Reset_Search": "Скинути Пошук",
@@ -60,14 +60,14 @@
"Move_Down": "Перемістити вниз",
"Step_Name": "Ім'я Кроку",
"Step_Type": "Тип Кроку",
"Make_Header": "",
"Make_Ingredient": "",
"Make_Header": "Створити Заголовок",
"Make_Ingredient": "Створити Інгрідієнт",
"Enable_Amount": "Включити Кількість",
"Disable_Amount": "Виключити Кількість",
"Ingredient Editor": "Редактор Інгредієнтів",
"Add_Step": "Додати Крок",
"Keywords": "Ключові слова",
"Books": "Книжки",
"Books": "Книги",
"Proteins": "Білки",
"Fats": "Жири",
"Carbohydrates": "Вуглеводи",
@@ -120,7 +120,7 @@
"Download": "Скачати",
"Create": "Створити",
"Search Settings": "Налаштування Пошуку",
"View": "",
"View": "Перегляд",
"Recipes": "Рецепти",
"Move": "Перемістити",
"Merge": "Об'єднати",
@@ -129,8 +129,8 @@
"move_confirmation": "Перемістити <i>{child}</i> до батька <i>{parent}</i>",
"merge_confirmation": "Замінити <i>{source}</i> на <i>{target}</i>",
"create_rule": "і створити автоматизацію",
"move_selection": "",
"merge_selection": "",
"move_selection": "Вказати {type} в який перемістити {source}",
"merge_selection": "Замінити всі згадування {source} згадуваннями {type}.",
"Root": "Корінь",
"Ignore_Shopping": "Ігнорувати Покупки",
"Shopping_Category": "Категорія Покупок",
@@ -139,9 +139,9 @@
"Move_Food": "Перемістити Їжу",
"New_Food": "Нова Їжа",
"Hide_Food": "Сховати Їжу",
"Food_Alias": "",
"Unit_Alias": "",
"Keyword_Alias": "",
"Food_Alias": "Найменування Їжі",
"Unit_Alias": "Найменування Одиниць",
"Keyword_Alias": "Найменування Ключових Слів",
"Delete_Food": "Видалити Їжу",
"No_ID": "ID не знайдено, неможливо видалити.",
"Meal_Plan_Days": "Майбутній план харчування",
@@ -237,9 +237,9 @@
"CountMore": "...+{count} більше",
"IgnoreThis": "Ніколи {food} автоматично не додавати до покупок",
"DelayFor": "Затримка на {hours} годин",
"Warning": "Увага",
"Warning": "Застереження",
"NoCategory": "Жодна категорія не вибрана.",
"InheritWarning": "",
"InheritWarning": "{food} налаштовано на успадкування, зміни можуть не зберегтися.",
"ShowDelayed": "Показати Відкладені Предмети",
"Completed": "Виконано",
"OfflineAlert": "Ви офлайн, список покупок може не синхронізуватися.",
@@ -440,5 +440,46 @@
"Default_Unit": "Одиниця замовчуванням",
"recipe_property_info": "Ви також можете додати властивості до продуктів, щоб розрахувати їх автоматично на основі вашого рецепту!",
"per_serving": "на порцію",
"err_importing_recipe": "Виникла помилка при імпортуванні рецепту!"
"err_importing_recipe": "Виникла помилка при імпортуванні рецепту!",
"food_inherit_info": "Поля їжі, які повинні успадковуватися за змовчуванням.",
"Property_Editor": "Редактор Властивостей",
"FDC_ID": "FDC ID",
"base_amount": "Базова Кількість",
"Properties": "Властивості",
"Alignment": "Вирівнювання",
"Shopping_input_placeholder": "напр. Картопля/100 Картопли/100гр. Картоплі",
"CustomTheme": "Власна Тема",
"Property": "Властивість",
"Conversion": "Конвертування",
"CustomThemeHelp": "Переписати стили вибраної теми завантаживши власний CSS файл.",
"CustomLogoHelp": "Завантажте квадратні зображення різних розмірів, щоб змінити логотип у вкладці браузера та встановленому веб-додатку.",
"CustomImageHelp": "Завантажте зображення що буде показуватись у огляді простору.",
"Input": "Ввід",
"Undo": "Скасувати",
"NoMoreUndo": "Відсутні зміни для скасування.",
"StartDate": "Початкова дата",
"EndDate": "Кінцева Дата",
"created_by": "Створено",
"CustomNavLogoHelp": "Завантажте зображення що буде використовуватись як логотип у навігаційній панелі.",
"FDC_Search": "Пошук FDC",
"converted_unit": "Конвертована Одиниця",
"converted_amount": "Конвертована Кількість",
"base_unit": "Базова Одиниця",
"Datatype": "Тип данних",
"Number of Objects": "Кількість Об'єктів",
"FDC_ID_help": "Ідентифікатор Бази FDC",
"open_data_help_text": "Проект Tandoor Open Data надає дані для Tandoor, надані спільнотою. Це поле заповнюється автоматично при імпорті даних і дозволяє оновлювати їх у майбутньому.",
"Open_Data_Slug": "Open Data Slug",
"Open_Data_Import": "Відкрити Імпорт Данних",
"Properties_Food_Amount": "Властивості Кількості Їжі",
"Properties_Food_Unit": "Властивості Їжі",
"CustomLogos": "Власні Логотипи",
"Calculator": "Калькулятор",
"property_type_fdc_hint": "Тільки типи властивостей з ідентифікатором FDC можуть автоматично отримувати дані з бази даних FDC",
"Data_Import_Info": "Покращуйте свій Простір, імпортуючи курований спільнотою список продуктів, одиниць виміру тощо, щоб вдосконалити свою колекцію рецептів.",
"Update_Existing_Data": "Оновити Існуючі Данні",
"Use_Metric": "Використовувати метричну систему",
"Learn_More": "Дізнатися Більше",
"Delete_All": "Видалити усе",
"Welcome": "Вітаємо"
}

View File

@@ -156,6 +156,15 @@
"@babel/highlight" "^7.22.13"
chalk "^2.4.2"
"@babel/code-frame@^7.26.2":
version "7.26.2"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85"
integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==
dependencies:
"@babel/helper-validator-identifier" "^7.25.9"
js-tokens "^4.0.0"
picocolors "^1.0.0"
"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9":
version "7.22.9"
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730"
@@ -385,6 +394,11 @@
resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f"
integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==
"@babel/helper-string-parser@^7.25.9":
version "7.25.9"
resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c"
integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==
"@babel/helper-validator-identifier@^7.22.15", "@babel/helper-validator-identifier@^7.22.5":
version "7.22.15"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.15.tgz#601fa28e4cc06786c18912dca138cec73b882044"
@@ -395,6 +409,11 @@
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0"
integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==
"@babel/helper-validator-identifier@^7.25.9":
version "7.25.9"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7"
integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==
"@babel/helper-validator-option@^7.22.15":
version "7.22.15"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040"
@@ -410,13 +429,12 @@
"@babel/types" "^7.22.17"
"@babel/helpers@^7.22.15":
version "7.22.15"
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.22.15.tgz#f09c3df31e86e3ea0b7ff7556d85cdebd47ea6f1"
integrity sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==
version "7.26.10"
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.26.10.tgz#6baea3cd62ec2d0c1068778d63cb1314f6637384"
integrity sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g==
dependencies:
"@babel/template" "^7.22.15"
"@babel/traverse" "^7.22.15"
"@babel/types" "^7.22.15"
"@babel/template" "^7.26.9"
"@babel/types" "^7.26.10"
"@babel/highlight@^7.22.13":
version "7.22.13"
@@ -437,6 +455,13 @@
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719"
integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==
"@babel/parser@^7.26.9":
version "7.26.10"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.10.tgz#e9bdb82f14b97df6569b0b038edd436839c57749"
integrity sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA==
dependencies:
"@babel/types" "^7.26.10"
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.15":
version "7.22.15"
resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz#02dc8a03f613ed5fdc29fb2f728397c78146c962"
@@ -1199,9 +1224,9 @@
integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==
"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.13", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4":
version "7.22.15"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.15.tgz#38f46494ccf6cf020bd4eed7124b425e83e523b8"
integrity sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==
version "7.26.10"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.10.tgz#a07b4d8fa27af131a633d7b3524db803eb4764c2"
integrity sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==
dependencies:
regenerator-runtime "^0.14.0"
@@ -1214,7 +1239,16 @@
"@babel/parser" "^7.22.15"
"@babel/types" "^7.22.15"
"@babel/traverse@^7.22.15", "@babel/traverse@^7.22.17", "@babel/traverse@^7.22.5", "@babel/traverse@^7.7.0":
"@babel/template@^7.26.9":
version "7.26.9"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.26.9.tgz#4577ad3ddf43d194528cff4e1fa6b232fa609bb2"
integrity sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==
dependencies:
"@babel/code-frame" "^7.26.2"
"@babel/parser" "^7.26.9"
"@babel/types" "^7.26.9"
"@babel/traverse@^7.22.17", "@babel/traverse@^7.22.5", "@babel/traverse@^7.7.0":
version "7.23.2"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8"
integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==
@@ -1248,6 +1282,14 @@
"@babel/helper-validator-identifier" "^7.22.20"
to-fast-properties "^2.0.0"
"@babel/types@^7.26.10", "@babel/types@^7.26.9":
version "7.26.10"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.10.tgz#396382f6335bd4feb65741eacfc808218f859259"
integrity sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==
dependencies:
"@babel/helper-string-parser" "^7.25.9"
"@babel/helper-validator-identifier" "^7.25.9"
"@codemirror/autocomplete@^6.0.0", "@codemirror/autocomplete@^6.13.0", "@codemirror/autocomplete@^6.7.1":
version "6.13.0"
resolved "https://registry.yarnpkg.com/@codemirror/autocomplete/-/autocomplete-6.13.0.tgz#fa7df3b2809863df0da4556f72ac4263ea4d7adb"
@@ -6644,9 +6686,9 @@ http-parser-js@>=0.5.1:
integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==
http-proxy-middleware@^2.0.3:
version "2.0.6"
resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f"
integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==
version "2.0.9"
resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz#e9e63d68afaa4eee3d147f39149ab84c0c2815ef"
integrity sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==
dependencies:
"@types/http-proxy" "^1.17.8"
http-proxy "^1.18.1"