Compare commits

..

305 Commits

Author SHA1 Message Date
vabene1111
c0af3d19cd Merge branch 'develop' 2024-11-23 21:59:46 +01:00
vabene1111
78d20e8340 removed log 2024-11-23 21:59:40 +01:00
vabene1111
6a90caee04 removed log 2024-11-23 21:58:57 +01:00
vabene1111
98c95a94bc fixed youtube importer 2024-11-23 21:56:32 +01:00
vabene1111
d4dc4a30b8 fixed system page 2024-11-23 13:26:12 +01:00
Oleh Hudyma
70d2dc089c Translated using Weblate (Ukrainian)
Currently translated at 2.2% (11 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/uk/
2024-11-22 07:58:36 +00:00
Matjaž T
8698ad3054 Translated using Weblate (Slovenian)
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/sl/
2024-11-22 07:58:36 +00:00
Daniel Legin
6188f175ae Translated using Weblate (Croatian)
Currently translated at 30.9% (151 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/hr/
2024-11-19 06:58:39 +00:00
Daniel Legin
189fab2401 Translated using Weblate (Croatian)
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/hr/
2024-11-19 06:58:39 +00:00
Anders Obro
a3adba1941 Translated using Weblate (Danish)
Currently translated at 94.5% (539 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/da/
2024-11-19 06:58:39 +00:00
Mario Dvorsek
cea41af1b8 Translated using Weblate (Slovenian)
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/sl/
2024-11-19 06:58:39 +00:00
Matjaž T
a325070f7f Translated using Weblate (Slovenian)
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/sl/
2024-11-19 06:58:39 +00:00
Matjaž T
d782c54c2c Translated using Weblate (Slovenian)
Currently translated at 100.0% (488 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/sl/
2024-11-19 06:58:39 +00:00
vabene1111
58917fbc4d Merge pull request #3403 from TandoorRecipes/dependabot/pip/aiohttp-3.10.11
Bump aiohttp from 3.10.2 to 3.10.11
2024-11-19 07:11:06 +01:00
dependabot[bot]
8b0547aeb9 Bump aiohttp from 3.10.2 to 3.10.11
---
updated-dependencies:
- dependency-name: aiohttp
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-19 06:10:25 +00:00
Daniel Legin
9efc101161 Added translation using Weblate (Croatian) 2024-11-18 19:04:53 +00:00
Daniel Legin
691e8a940b Added translation using Weblate (Croatian) 2024-11-18 11:13:47 +00:00
Matjaž T
bee7623eaf Translated using Weblate (Slovenian)
Currently translated at 71.7% (409 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/sl/
2024-11-17 16:58:38 +00:00
Matjaž T
430697879f Translated using Weblate (Slovenian)
Currently translated at 84.0% (410 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/sl/
2024-11-17 16:58:38 +00:00
Vincenzo Reale
749974654a Translated using Weblate (Italian)
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/it/
2024-11-17 16:58:36 +00:00
Matjaž T
f31a661aaf Translated using Weblate (Slovenian)
Currently translated at 71.7% (409 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/sl/
2024-11-16 14:09:25 +00:00
Matjaž T
70ea3acb05 Translated using Weblate (Slovenian)
Currently translated at 15.3% (75 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/sl/
2024-11-16 14:09:25 +00:00
vabene1111
81547563c6 Merge branch 'develop' 2024-11-14 16:07:51 +01:00
vabene1111
c107f2f497 fixed system view 2024-11-14 16:06:58 +01:00
Владислав
5fea2131cd Translated using Weblate (Russian)
Currently translated at 5.5% (27 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/ru/
2024-11-12 17:58:38 +00:00
Владислав
d671df30a3 Translated using Weblate (Russian)
Currently translated at 82.9% (473 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/ru/
2024-11-12 17:58:38 +00:00
vabene1111
100b75a5d2 Merge branch 'develop' 2024-11-12 16:15:31 +01:00
vabene1111
7dba36d210 switched to space stats 2024-11-12 16:15:01 +01:00
vabene1111
0dea5c9877 api stats 2024-11-12 15:53:13 +01:00
vabene1111
1777dfe821 Revert "Merge pull request #3334 from TandoorRecipes/dependabot/pip/pytest-asyncio-0.24.0"
This reverts commit c30e1bb43a, reversing
changes made to 31051086ba.
2024-11-11 18:10:14 +01:00
vabene1111
2b6edfb96d fixed import_export docs format 2024-11-11 18:06:29 +01:00
vabene1111
faa3c99965 Merge pull request #3280 from vitoller/feature/import-gourmet
import of gourmet files
2024-11-11 18:04:55 +01:00
vabene1111
1cc5a0a094 Merge pull request #3382 from TandoorRecipes/dependabot/pip/django-cors-headers-4.6.0
Bump django-cors-headers from 4.3.1 to 4.6.0
2024-11-11 17:58:58 +01:00
vabene1111
cbafbd44a4 Merge pull request #3337 from TandoorRecipes/dependabot/pip/flake8-7.1.1
Bump flake8 from 6.1.0 to 7.1.1
2024-11-11 17:58:52 +01:00
vabene1111
f16a804758 Merge pull request #3335 from TandoorRecipes/dependabot/pip/lxml-5.3.0
Bump lxml from 5.1.0 to 5.3.0
2024-11-11 17:58:36 +01:00
vabene1111
c30e1bb43a Merge pull request #3334 from TandoorRecipes/dependabot/pip/pytest-asyncio-0.24.0
Bump pytest-asyncio from 0.23.5 to 0.24.0
2024-11-11 17:58:29 +01:00
vabene1111
31051086ba Merge pull request #3333 from TandoorRecipes/dependabot/pip/requests-2.32.3
Bump requests from 2.32.0 to 2.32.3
2024-11-11 17:58:22 +01:00
vabene1111
67d3c852dd Merge pull request #3381 from TandoorRecipes/dependabot/npm_and_yarn/vue/elliptic-6.6.0
Bump elliptic from 6.5.7 to 6.6.0 in /vue
2024-11-11 17:57:18 +01:00
Aija Kozlovska
4ea9b10fc4 Translated using Weblate (Latvian)
Currently translated at 2.8% (16 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/lv/
2024-11-05 10:58:36 +00:00
Aija Kozlovska
e609f4e0e0 Translated using Weblate (Latvian)
Currently translated at 67.6% (330 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/lv/
2024-11-05 10:58:36 +00:00
Dragan
b9ee2611a3 Translated using Weblate (Slovenian)
Currently translated at 54.0% (308 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/sl/
2024-11-04 10:29:24 +00:00
Johnny Ip
8de3c41958 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/zh_Hant/
2024-11-04 10:29:24 +00:00
Johnny Ip
2a350a9bbe Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (488 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/zh_Hant/
2024-11-04 10:29:23 +00:00
Johnny Ip
89c4c09481 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (488 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/zh_Hans/
2024-11-04 10:29:23 +00:00
Aija Kozlovska
a97b023504 Translated using Weblate (Latvian)
Currently translated at 45.9% (224 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/lv/
2024-11-04 10:29:23 +00:00
Aija Kozlovska
4aa7152ab4 Added translation using Weblate (Latvian) 2024-11-04 08:31:40 +00:00
Johnny Ip
80ff8ddb12 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/zh_Hant/
2024-11-03 16:34:45 +00:00
Johnny Ip
45aeeaa069 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/zh_Hant/
2024-11-03 16:32:49 +00:00
Vincenzo Reale
0c24db72c6 Translated using Weblate (Italian)
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/it/
2024-11-01 06:58:36 +00:00
Vincenzo Reale
95c4d72b74 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/
2024-11-01 06:58:36 +00:00
dependabot[bot]
1330c0e7a3 Bump django-cors-headers from 4.3.1 to 4.6.0
Bumps [django-cors-headers](https://github.com/adamchainz/django-cors-headers) from 4.3.1 to 4.6.0.
- [Changelog](https://github.com/adamchainz/django-cors-headers/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/adamchainz/django-cors-headers/compare/4.3.1...4.6.0)

---
updated-dependencies:
- dependency-name: django-cors-headers
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-01 00:03:14 +00:00
Vincenzo Reale
9af22bcf9f Translated using Weblate (Italian)
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/it/
2024-10-31 06:00:00 +00:00
Vincenzo Reale
d24214c463 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/
2024-10-31 06:00:00 +00:00
dependabot[bot]
e8101dd433 Bump elliptic from 6.5.7 to 6.6.0 in /vue
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.7 to 6.6.0.
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.7...v6.6.0)

---
updated-dependencies:
- dependency-name: elliptic
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-31 02:20:39 +00:00
Vincenzo Reale
94bd343eed Translated using Weblate (Italian)
Currently translated at 96.6% (551 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/it/
2024-10-30 16:02:55 +00:00
Vincenzo Reale
f409633ade Translated using Weblate (Italian)
Currently translated at 93.4% (456 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/it/
2024-10-30 16:02:55 +00:00
Vincenzo Reale
e927418535 Translated using Weblate (Italian)
Currently translated at 82.6% (471 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/it/
2024-10-30 13:30:42 +00:00
Vincenzo Reale
be9f9d68db Translated using Weblate (Italian)
Currently translated at 89.3% (436 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/it/
2024-10-30 13:30:42 +00:00
vabene1111
3a002cce9e Merge pull request #3359 from Chronophylos/mealie-import
Fix null-constrait errors in mealie import
2024-10-14 08:25:11 +02:00
vabene1111
416ddf3d34 Merge pull request #3361 from tlambertz/paprika-fix
Fix Paprika Import Images when not downloading from URL.
2024-10-14 08:22:19 +02:00
vabene1111
8b0a19c6a2 Merge pull request #3357 from TandoorRecipes/dependabot/npm_and_yarn/vue/elliptic-6.5.7
Bump elliptic from 6.5.4 to 6.5.7 in /vue
2024-10-13 12:30:59 +02:00
Thomas Lambertz
757fa1b768 Fix Paprika Import Images when not downloading from URL.
Previously, the code only tried to use the cropped image from paprika when downloading actively failed.
But if a user takes an image himself, the url will be empty, thus downloading won't be attempted and won't fail.
This change makes it so that the download is tried first, but the photo_data is always tried if no image exists for whatever reason.
2024-10-12 21:15:37 +02:00
Chronophylos
736d829bd0 Fix null-constrait errors in mealie import 2024-10-12 16:01:32 +02:00
dependabot[bot]
6829d5351d Bump elliptic from 6.5.4 to 6.5.7 in /vue
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.4 to 6.5.7.
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.4...v6.5.7)

---
updated-dependencies:
- dependency-name: elliptic
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-12 03:18:39 +00:00
vabene1111
805eb87754 Merge pull request #3353 from TandoorRecipes/dependabot/pip/django-4.2.16
Bump django from 4.2.15 to 4.2.16
2024-10-10 13:07:43 +02:00
dependabot[bot]
e910ec4a51 Bump django from 4.2.15 to 4.2.16
Bumps [django](https://github.com/django/django) from 4.2.15 to 4.2.16.
- [Commits](https://github.com/django/django/compare/4.2.15...4.2.16)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-08 21:29:14 +00:00
vabene1111
4c0ace1d84 Merge branch 'develop' 2024-10-08 18:25:17 +02:00
vabene1111
cae26e7fe0 updated recipe scrapers 2024-10-08 18:22:03 +02:00
supaeasy
8d070349a6 Translated using Weblate (German)
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/de/
2024-10-02 23:58:36 +00:00
vabene1111
166697d791 Merge pull request #3340 from TandoorRecipes/revert-3326-develop
Revert "Update connectors.md"
2024-10-02 14:29:36 +02:00
vabene1111
90d93b733d Revert "Update connectors.md" 2024-10-02 14:29:24 +02:00
vabene1111
272d2e94a1 Merge pull request #3327 from IkkiOcean/patch-1
Update manual.md with required python version
2024-10-02 09:24:46 +02:00
vabene1111
f84a401714 Merge pull request #3326 from supaeasy/develop
Update connectors.md
2024-10-02 09:23:01 +02:00
Jorge Martinez
f6b19d40b1 Translated using Weblate (Spanish)
Currently translated at 99.2% (566 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/es/
2024-10-01 18:58:35 +00:00
dependabot[bot]
969b7ba492 Bump flake8 from 6.1.0 to 7.1.1
Bumps [flake8](https://github.com/pycqa/flake8) from 6.1.0 to 7.1.1.
- [Commits](https://github.com/pycqa/flake8/compare/6.1.0...7.1.1)

---
updated-dependencies:
- dependency-name: flake8
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-01 00:42:42 +00:00
dependabot[bot]
c9edec6308 Bump lxml from 5.1.0 to 5.3.0
Bumps [lxml](https://github.com/lxml/lxml) from 5.1.0 to 5.3.0.
- [Release notes](https://github.com/lxml/lxml/releases)
- [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt)
- [Commits](https://github.com/lxml/lxml/compare/lxml-5.1.0...lxml-5.3.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-01 00:42:37 +00:00
dependabot[bot]
9f0ff1348c Bump pytest-asyncio from 0.23.5 to 0.24.0
Bumps [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) from 0.23.5 to 0.24.0.
- [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases)
- [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v0.23.5...v0.24.0)

---
updated-dependencies:
- dependency-name: pytest-asyncio
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-01 00:42:31 +00:00
dependabot[bot]
c85d62fc66 Bump requests from 2.32.0 to 2.32.3
Bumps [requests](https://github.com/psf/requests) from 2.32.0 to 2.32.3.
- [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.0...v2.32.3)

---
updated-dependencies:
- dependency-name: requests
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-01 00:42:28 +00:00
Vivek Prakash
dae51a8d3e Update manual.md with required python version
The code written in https://github.com/TandoorRecipes/recipes/blob/develop/cookbook/connectors/connector_manager.py makes use of features introduced in Python 3.10, such as the structural pattern matching (match and case) and the union types with the pipe operator (|) which are not compatible with Python 3.9. That's why the minimum required python version for the manual installation should be python version 3.10.
2024-10-01 00:53:04 +05:30
supaeasy
d522534a12 Update connectors.md
Fixed errors in description:
- add / after api
- omit 'todo.' when adding HA-Entity
2024-09-30 14:17:18 +02:00
supaeasy
a38308a24a Translated using Weblate (German)
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/de/
2024-09-27 13:58:36 +00:00
supaeasy
b981960221 Translated using Weblate (German)
Currently translated at 100.0% (488 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/de/
2024-09-27 13:58:35 +00:00
nenormalniy
7d1461a752 Translated using Weblate (Russian)
Currently translated at 63.3% (361 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/ru/
2024-09-26 03:58:35 +00:00
Emmker
24a589fe41 Translated using Weblate (Greek)
Currently translated at 46.3% (226 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/el/
2024-09-23 21:58:37 +00:00
supaeasy
b1d28a46c3 Translated using Weblate (German)
Currently translated at 98.9% (483 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/de/
2024-09-23 21:58:37 +00:00
vabene1111
6b376fbfbb Merge pull request #3302 from mikhail5555/dont-log-sensitive-headers-in-err
Allow HomeAssistant Connector to work with Debug=False (and logging improvements)
2024-09-23 07:44:01 +02:00
vabene1111
c532b1f94f Merge branch 'develop' into dont-log-sensitive-headers-in-err 2024-09-23 07:43:55 +02:00
vabene1111
26ab7f5580 Merge pull request #3305 from ehowe/develop
Make HomeAssistant description field optional
2024-09-23 07:37:34 +02:00
Emmker
72c638ca6f Translated using Weblate (Greek)
Currently translated at 99.8% (569 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/el/
2024-09-22 21:31:53 +00:00
Georgii Bogdanov
5478b7d550 Translated using Weblate (Russian)
Currently translated at 62.9% (359 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/ru/
2024-09-22 21:31:52 +00:00
Mikhail Epifanov
e6eacc48d6 update code so it also works in DEBUG=false 2024-09-17 22:25:08 +02:00
Bebbe K
0259e000e3 Translated using Weblate (Swedish)
Currently translated at 61.4% (300 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/sv/
2024-09-17 11:58:35 +00:00
Eugene Howe
eb0a95f594 Make HomeAssistant description field optional 2024-09-15 10:44:30 -04:00
Muck Péter
41ee8cf66f Translated using Weblate (Hungarian)
Currently translated at 81.5% (465 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/hu/
2024-09-14 12:44:44 +00:00
Mikhail Epifanov
8c8834e6aa dont log err.headers which can contain sensitive info 2024-09-13 22:36:05 +02:00
Tomer Alcavi
145abfa344 Translated using Weblate (Hebrew)
Currently translated at 18.2% (89 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/he/
2024-09-08 12:58:37 +00:00
Jaan
f60e61e331 Translated using Weblate (Russian)
Currently translated at 62.4% (356 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/ru/
2024-09-08 12:58:37 +00:00
Sergei
fd534aba95 Translated using Weblate (Russian)
Currently translated at 62.4% (356 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/ru/
2024-09-08 12:58:37 +00:00
vabene1111
f23c99f5ea Merge pull request #3293 from TandoorRecipes/dependabot/pip/cryptography-43.0.1
Bump cryptography from 42.0.5 to 43.0.1
2024-09-06 07:32:00 +02:00
dependabot[bot]
1a14cc9513 Bump cryptography from 42.0.5 to 43.0.1
Bumps [cryptography](https://github.com/pyca/cryptography) from 42.0.5 to 43.0.1.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/42.0.5...43.0.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-04 00:11:21 +00:00
S. v.d. Gevel
e98131ce7a Translated using Weblate (Dutch)
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/nl/
2024-09-03 19:58:35 +00:00
S. v.d. Gevel
7cff47efab Translated using Weblate (Dutch)
Currently translated at 100.0% (488 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/nl/
2024-09-03 19:58:35 +00:00
Stefan van der Gevel
1dcc3e06d4 Translated using Weblate (Dutch)
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/nl/
2024-09-02 19:31:07 +00:00
S. v.d. Gevel
9125921038 Translated using Weblate (Dutch)
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/nl/
2024-09-02 19:31:07 +00:00
vabene1111
eea2a2c252 Merge pull request #3287 from TandoorRecipes/dependabot/pip/pyyaml-6.0.2
Bump pyyaml from 6.0.1 to 6.0.2
2024-09-02 16:39:46 +02:00
vabene1111
9554c69a39 Merge pull request #3288 from TandoorRecipes/dependabot/pip/django-crispy-forms-2.3
Bump django-crispy-forms from 2.1 to 2.3
2024-09-02 16:39:21 +02:00
vabene1111
506ab0f0c7 Merge pull request #3290 from TandoorRecipes/dependabot/pip/pillow-10.4.0
Bump pillow from 10.3.0 to 10.4.0
2024-09-02 16:39:03 +02:00
vabene1111
3e26ca5c68 Merge pull request #3291 from TandoorRecipes/dependabot/pip/whitenoise-6.7.0
Bump whitenoise from 6.6.0 to 6.7.0
2024-09-02 16:38:51 +02:00
dependabot[bot]
3fa8a9f27e Bump whitenoise from 6.6.0 to 6.7.0
Bumps [whitenoise](https://github.com/evansd/whitenoise) from 6.6.0 to 6.7.0.
- [Changelog](https://github.com/evansd/whitenoise/blob/main/docs/changelog.rst)
- [Commits](https://github.com/evansd/whitenoise/compare/6.6.0...6.7.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-01 00:34:14 +00:00
dependabot[bot]
0cdff07e4b Bump pillow from 10.3.0 to 10.4.0
Bumps [pillow](https://github.com/python-pillow/Pillow) from 10.3.0 to 10.4.0.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/10.3.0...10.4.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-01 00:34:11 +00:00
dependabot[bot]
8a142c3b11 Bump django-crispy-forms from 2.1 to 2.3
Bumps [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms) from 2.1 to 2.3.
- [Release notes](https://github.com/django-crispy-forms/django-crispy-forms/releases)
- [Changelog](https://github.com/django-crispy-forms/django-crispy-forms/blob/main/CHANGELOG.md)
- [Commits](https://github.com/django-crispy-forms/django-crispy-forms/compare/2.1...2.3)

---
updated-dependencies:
- dependency-name: django-crispy-forms
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-01 00:34:05 +00:00
dependabot[bot]
20ca7151d1 Bump pyyaml from 6.0.1 to 6.0.2
Bumps [pyyaml](https://github.com/yaml/pyyaml) from 6.0.1 to 6.0.2.
- [Release notes](https://github.com/yaml/pyyaml/releases)
- [Changelog](https://github.com/yaml/pyyaml/blob/main/CHANGES)
- [Commits](https://github.com/yaml/pyyaml/compare/6.0.1...6.0.2)

---
updated-dependencies:
- dependency-name: pyyaml
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-01 00:34:02 +00:00
Horst
15abe9f24b import of gourmet files
* in gourmet export as html and zip folder
* 'menus' are not imported

Note: it appears that the native format '.grmt' does not include the unit for ingredients
2024-08-30 10:05:19 +02:00
vabene1111
754b7c3376 Merge pull request #3278 from Priyanshu1035/fixtypo
Fixed the typo in the base.html file
2024-08-29 17:28:04 +02:00
Stefan van der Gevel
00b02248d3 Translated using Weblate (Dutch)
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/nl/
2024-08-28 18:49:54 +00:00
Priyanshu1035
fda302ebb6 fixedtypo 2024-08-28 23:29:41 +05:30
Stefan van der Gevel
70cd675aa1 Translated using Weblate (Dutch)
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/nl/
2024-08-28 12:58:35 +00:00
Stefan van der Gevel
960db5aaab Translated using Weblate (Dutch)
Currently translated at 100.0% (488 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/nl/
2024-08-28 12:58:35 +00:00
Known Rabbit
8daf43d6e8 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/zh_Hans/
2024-08-27 07:58:35 +00:00
Stefan van der Gevel
114ca55b26 Translated using Weblate (Dutch)
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/nl/
2024-08-27 07:58:35 +00:00
Known Rabbit
59f5219c0b Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (488 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/zh_Hans/
2024-08-27 07:58:35 +00:00
Stefan van der Gevel
bc465c7b2f Translated using Weblate (Dutch)
Currently translated at 100.0% (488 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/nl/
2024-08-27 07:58:35 +00:00
Known Rabbit
bf1b2db415 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/zh_Hans/
2024-08-26 06:47:13 +00:00
Known Rabbit
9085756fca Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (488 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/zh_Hans/
2024-08-26 06:47:13 +00:00
Known Rabbit
db43bd1962 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (570 of 570 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/zh_Hans/
2024-08-24 14:58:37 +00:00
Known Rabbit
3c13c06ce1 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (488 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/zh_Hans/
2024-08-24 14:58:37 +00:00
vabene1111
beb1823a57 Merge pull request #3268 from smilerz/source_import_fix
set URL when none provided
2024-08-23 08:06:33 +02:00
smilerz
b6fa74c601 text 2024-08-22 12:45:49 -05:00
Matjaž T
596b6c6f98 Translated using Weblate (Slovenian)
Currently translated at 15.1% (74 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/sl/
2024-08-21 16:58:36 +00:00
vabene1111
1bfe5bb6a0 Merge branch 'develop' 2024-08-20 12:21:11 +02:00
vabene1111
f6f6754669 removed validators library and improved url validation 2024-08-20 11:45:23 +02:00
vabene1111
752a25b1f8 fixed comma 2024-08-18 14:41:17 +02:00
vabene1111
8e8e4bb8bb added us_cup as base unit 2024-08-18 14:26:10 +02:00
vabene1111
06dc02d6b2 Merge pull request #3260 from yuekaim/patch-1
Update unit_conversion_helper.py
2024-08-18 14:24:17 +02:00
vabene1111
540daf2a38 fixed test 2024-08-18 14:20:09 +02:00
vabene1111
9e671d93cb added guest read only permission to keyword/api/space endpoint 2024-08-18 12:59:34 +02:00
Stefan van der Gevel
269be4e31a Translated using Weblate (Dutch)
Currently translated at 100.0% (569 of 569 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/nl/
2024-08-17 12:58:35 +00:00
Stefan van der Gevel
5969edc0b8 Translated using Weblate (Dutch)
Currently translated at 100.0% (569 of 569 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/nl/
2024-08-16 11:58:37 +00:00
Stefan van der Gevel
42176f42ed Translated using Weblate (Dutch)
Currently translated at 100.0% (488 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/nl/
2024-08-16 11:58:37 +00:00
cleo miao
8c8bb159ea Update unit_conversion_helper.py
added us cup as a volume measurement
2024-08-14 02:43:19 +02:00
vabene1111
b9cf29a0ec Merge pull request #3259 from TandoorRecipes/dependabot/pip/django-4.2.15
Bump django from 4.2.14 to 4.2.15
2024-08-13 13:04:44 +02:00
dependabot[bot]
5db9f33723 Bump django from 4.2.14 to 4.2.15
Bumps [django](https://github.com/django/django) from 4.2.14 to 4.2.15.
- [Commits](https://github.com/django/django/compare/4.2.14...4.2.15)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-13 11:04:28 +00:00
vabene1111
1ba09cc119 Merge pull request #3248 from TandoorRecipes/dependabot/pip/aiohttp-3.10.2
Bump aiohttp from 3.10.0 to 3.10.2
2024-08-13 13:03:29 +02:00
dependabot[bot]
02bbe3fa13 Bump aiohttp from 3.10.0 to 3.10.2
Bumps [aiohttp](https://github.com/aio-libs/aiohttp) from 3.10.0 to 3.10.2.
- [Release notes](https://github.com/aio-libs/aiohttp/releases)
- [Changelog](https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst)
- [Commits](https://github.com/aio-libs/aiohttp/compare/v3.10.0...v3.10.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-09 16:52:46 +00:00
vabene1111
0c77ca91c1 updated translations 2024-08-01 15:04:19 +02:00
vabene1111
fbadf14b58 Merge pull request #3238 from TandoorRecipes/dependabot/pip/crispy-bootstrap4-2024.1
Bump crispy-bootstrap4 from 2022.1 to 2024.1
2024-08-01 13:58:55 +02:00
vabene1111
2558fe6c2b Merge pull request #3237 from TandoorRecipes/dependabot/pip/aiohttp-3.10.0
Bump aiohttp from 3.9.4 to 3.10.0
2024-08-01 13:58:27 +02:00
vabene1111
10fca9b5ae Merge pull request #3235 from TandoorRecipes/dependabot/pip/pytest-xdist-3.6.1
Bump pytest-xdist from 3.5.0 to 3.6.1
2024-08-01 13:58:11 +02:00
dependabot[bot]
01f338e58b Bump aiohttp from 3.9.4 to 3.10.0
Bumps [aiohttp](https://github.com/aio-libs/aiohttp) from 3.9.4 to 3.10.0.
- [Release notes](https://github.com/aio-libs/aiohttp/releases)
- [Changelog](https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst)
- [Commits](https://github.com/aio-libs/aiohttp/compare/v3.9.4...v3.10.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-01 11:58:10 +00:00
vabene1111
5e998796ab Merge pull request #3236 from TandoorRecipes/dependabot/pip/django-oauth-toolkit-2.4.0
Bump django-oauth-toolkit from 2.3.0 to 2.4.0
2024-08-01 13:57:51 +02:00
vabene1111
40231f45f6 Merge pull request #3239 from TandoorRecipes/dependabot/pip/validators-0.33.0
Bump validators from 0.20.0 to 0.33.0
2024-08-01 13:57:00 +02:00
vabene1111
b19b51c275 Merge pull request #3215 from mikhail5555/enable-global-logging-and-more-connector-logging
enable logging for whole project and add more logging to connectors
2024-08-01 13:52:20 +02:00
vabene1111
854877e685 Merge pull request #3226 from jknndy/Contribute-readme
Update link in Contributing section of readme
2024-08-01 13:49:30 +02:00
vabene1111
028a8ddbda Merge pull request #3227 from smilerz/scraper-updates
Scraper updates
2024-08-01 13:48:38 +02:00
dependabot[bot]
abb81209af Bump validators from 0.20.0 to 0.33.0
Bumps [validators](https://github.com/python-validators/validators) from 0.20.0 to 0.33.0.
- [Release notes](https://github.com/python-validators/validators/releases)
- [Changelog](https://github.com/python-validators/validators/blob/master/CHANGES.md)
- [Commits](https://github.com/python-validators/validators/compare/0.20.0...0.33.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-01 01:01:21 +00:00
dependabot[bot]
578201c519 Bump crispy-bootstrap4 from 2022.1 to 2024.1
Bumps [crispy-bootstrap4](https://github.com/django-crispy-forms/crispy-bootstrap4) from 2022.1 to 2024.1.
- [Release notes](https://github.com/django-crispy-forms/crispy-bootstrap4/releases)
- [Changelog](https://github.com/django-crispy-forms/crispy-bootstrap4/blob/main/CHANGELOG.md)
- [Commits](https://github.com/django-crispy-forms/crispy-bootstrap4/compare/2022.1...2024.1)

---
updated-dependencies:
- dependency-name: crispy-bootstrap4
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-01 01:01:19 +00:00
dependabot[bot]
a5a23b366e Bump django-oauth-toolkit from 2.3.0 to 2.4.0
Bumps [django-oauth-toolkit](https://github.com/jazzband/django-oauth-toolkit) from 2.3.0 to 2.4.0.
- [Release notes](https://github.com/jazzband/django-oauth-toolkit/releases)
- [Changelog](https://github.com/jazzband/django-oauth-toolkit/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jazzband/django-oauth-toolkit/compare/2.3.0...2.4.0)

---
updated-dependencies:
- dependency-name: django-oauth-toolkit
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-01 01:01:10 +00:00
dependabot[bot]
ac57837f53 Bump pytest-xdist from 3.5.0 to 3.6.1
Bumps [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) from 3.5.0 to 3.6.1.
- [Release notes](https://github.com/pytest-dev/pytest-xdist/releases)
- [Changelog](https://github.com/pytest-dev/pytest-xdist/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-xdist/compare/v3.5.0...v3.6.1)

---
updated-dependencies:
- dependency-name: pytest-xdist
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-01 01:01:08 +00:00
vabene1111
5cdc8302bb Translated using Weblate (German)
Currently translated at 98.3% (480 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/de/
2024-07-31 13:05:41 +00:00
smilerz
b095718545 add user-agent to URL import html request 2024-07-30 14:03:12 -05:00
smilerz
0b53285b89 bump recipe scrapers to 15.0.0 2024-07-29 10:01:31 -05:00
dudu dor
d1ea4360ca Translated using Weblate (Hebrew)
Currently translated at 4.7% (23 of 488 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/he/
2024-07-28 08:38:59 +00:00
dudu dor
257372db5a Translated using Weblate (Hebrew)
Currently translated at 100.0% (569 of 569 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/he/
2024-07-28 08:38:58 +00:00
Joey
855f20f2da Update README.md 2024-07-25 16:54:17 -04:00
Adam Krivanek
4f73e57ab2 Translated using Weblate (Czech)
Currently translated at 98.2% (559 of 569 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/cs/
2024-07-16 21:58:40 +00:00
Mikhail Epifanov
1b529bba10 update variable name and change default to warning, add docs 2024-07-13 22:41:08 +02:00
vabene1111
072cd00e59 Merge pull request #3216 from TandoorRecipes/dependabot/pip/django-4.2.14
Bump django from 4.2.11 to 4.2.14
2024-07-12 17:48:07 +02:00
dependabot[bot]
4b03c1a8dd Bump django from 4.2.11 to 4.2.14
Bumps [django](https://github.com/django/django) from 4.2.11 to 4.2.14.
- [Commits](https://github.com/django/django/compare/4.2.11...4.2.14)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-10 22:10:20 +00:00
Mikhail Epifanov
f614413fb1 use self._logger everywhere 2024-07-10 11:17:06 +02:00
Mikhail Epifanov
74153d79b8 add process and thread name aswell 2024-07-10 10:56:39 +02:00
Mikhail Epifanov
edf06944e0 enable logging for whole project and add more logging to connectors 2024-07-10 10:54:41 +02:00
smilerz
a02582e9f8 rebase 2024-07-09 08:01:39 -05:00
vabene1111
c4ff29beda added missing requirement for openapi endpoint 2024-07-09 07:20:49 +02:00
vabene1111
cc839a1ae9 Merge branch 'develop' 2024-07-08 20:32:15 +02:00
vabene1111
af9a95651d test respect new validation logic 2024-07-08 18:13:49 +02:00
vabene1111
45106ae99a Merge branch 'develop' of https://github.com/TandoorRecipes/recipes into develop 2024-07-08 18:02:50 +02:00
vabene1111
0ac3c55180 update translations 2024-07-08 18:02:44 +02:00
vabene1111
a289fd427b Merge pull request #3204 from AlD/develop
Gracefully handle lookup errors in resolveDjangoUrl
2024-07-08 17:44:00 +02:00
smilerz
6385866e98 url import fixes 2024-07-08 08:35:59 -05:00
smilerz
c2176305db fix invalid syntax in admin/step 2024-07-08 08:28:49 -05:00
Jean-Félix ALLARD
fd3760198b 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/
2024-07-05 16:38:58 +00:00
Taylan TATLI
826ddddd5d 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/
2024-07-03 16:39:00 +00:00
Taylan TATLI
93613c9781 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/
2024-07-03 16:39:00 +00:00
Daniel Albers
818ca0b2e4 Gracefully handle lookup errors in resolveDjangoUrl 2024-07-03 13:45:33 +02:00
vabene1111
17d34c5ca7 improved allowed hosts docs, default config and added a system warning 2024-06-27 13:48:11 +02:00
vabene1111
965f7c04d8 Merge pull request #3188 from TandoorRecipes/dependabot/npm_and_yarn/vue/ws-7.5.10
Bump ws from 7.5.9 to 7.5.10 in /vue
2024-06-27 13:26:40 +02:00
vabene1111
0e1e312f7c Merge pull request #3196 from TandoorRecipes/dependabot/pip/djangorestframework-3.15.2
Bump djangorestframework from 3.14.0 to 3.15.2
2024-06-27 13:26:09 +02:00
dependabot[bot]
202d8afa10 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] <support@github.com>
2024-06-26 19:05:46 +00:00
Renato
769561349f 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/
2024-06-21 14:38:58 +00:00
dependabot[bot]
0cb415f70d 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] <support@github.com>
2024-06-18 17:23:52 +00:00
tarek EL SOL
6d4dbc26a4 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/
2024-05-28 00:57:11 +00:00
vabene1111
63759c985f Merge pull request #3160 from TandoorRecipes/dependabot/pip/requests-2.32.0
Bump requests from 2.31.0 to 2.32.0
2024-05-21 16:11:16 +02:00
dependabot[bot]
98d4ce5ff8 ---
updated-dependencies:
- dependency-name: requests
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-21 05:30:33 +00:00
only
2cf9c288be 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/
2024-05-19 13:38:57 +00:00
only
9254a36636 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/
2024-05-19 13:38:57 +00:00
Jakob Priesner
3f258fbd87 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/
2024-05-11 00:33:05 +00:00
vabene1111
7100f4eb8b Merge pull request #3147 from bhagerty/patch-1
Remove obsolete "version: 3" to eliminate warning message
2024-05-07 07:56:00 +02:00
vabene1111
7285d8b01c Merge pull request #3150 from bhagerty/develop
Delete obsolete "version" entry from last two compose.yml files
2024-05-07 07:55:23 +02:00
vabene1111
78da168a2e Merge pull request #3149 from bhagerty/patch-2
Remove obsolete "version:" entry
2024-05-07 07:55:02 +02:00
vabene1111
f54009ae00 Merge pull request #3151 from TandoorRecipes/dependabot/pip/jinja2-3.1.4
Bump jinja2 from 3.1.3 to 3.1.4
2024-05-07 07:53:34 +02:00
dependabot[bot]
f92f18ecb2 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] <support@github.com>
2024-05-06 20:55:38 +00:00
Brian Hagerty
44832f7c11 Delete obsolete "version" entry from compose.yml
Per my other PR, "version" is obsolete
2024-05-06 12:38:13 -05:00
Brian Hagerty
e475115b6a Delete obsolete "version" entry
Per my first PR, "version" is obsolete and throws a warning.
2024-05-06 12:36:53 -05:00
Brian Hagerty
b32a7a9134 Remove obsolete "version:" entry
Per my other PR, "version" is obsolete and throws a warning.
2024-05-06 12:31:35 -05:00
Brian Hagerty
381adb2a5b Merge pull request #1 from TandoorRecipes/develop
Translated using Weblate (German)
2024-05-06 12:29:48 -05:00
Carsten Docktor
d976fafd45 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/
2024-05-04 19:10:19 +00:00
Brian Hagerty
7e7657e444 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.
2024-05-04 11:00:08 -05:00
vabene1111
4b551c595a MealPlan from/to date to datetime, added time to MealType 2024-05-01 13:45:12 +02:00
vabene1111
c87964f6d0 Merge pull request #3132 from smilerz/collectstatic_fix
removing pre-cached staticfiles from Docker & boot.sh
2024-04-30 17:55:41 +02:00
Fymyte
353b2d6d21 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/
2024-04-30 14:59:33 +00:00
smilerz
1d58f318ca removing pre-cached staticfiles from Docker & boot.sh 2024-04-30 07:21:30 -05:00
vabene1111
771375b40b added missing doctype attribute 2024-04-27 09:28:19 +02:00
vabene1111
1e4f6d243c Merge pull request #3120 from ellezhu1/planToEat
Fix #2982 - PlantoEat Importer
2024-04-22 08:03:43 +02:00
vabene1111
717c989ae9 Merge pull request #3121 from ellezhu1/nextCloud
Fix #3060 Next Cloud handle special ingredients ##
2024-04-22 08:03:00 +02:00
ellezhu1
4933726b79 made some changes 2024-04-21 21:23:40 +00:00
ellezhu1
d81e7f6c2b remove ##ingredients 2024-04-21 11:28:51 +00:00
ellezhu1
f1ab60bcd1 Merge branch 'develop' into planToEat 2024-04-21 06:18:51 -05:00
ellezhu1
68e6ab4be5 get step name 2024-04-21 08:31:29 +00:00
ellezhu1
7ea9592398 tested 2024-04-21 06:25:02 +00:00
ellezhu1
52d8e8d9ba issue2982 - plantToEat 2024-04-21 06:09:55 +00:00
vabene1111
b7e23df4c2 Merge pull request #3115 from TandoorRecipes/dependabot/pip/aiohttp-3.9.4
Bump aiohttp from 3.9.3 to 3.9.4
2024-04-19 07:31:52 +02:00
dependabot[bot]
fce57f7f03 Bump aiohttp from 3.9.3 to 3.9.4
Bumps [aiohttp](https://github.com/aio-libs/aiohttp) from 3.9.3 to 3.9.4.
- [Release notes](https://github.com/aio-libs/aiohttp/releases)
- [Changelog](https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst)
- [Commits](https://github.com/aio-libs/aiohttp/compare/v3.9.3...v3.9.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-18 16:18:46 +00:00
vabene1111
7eaa33ac69 Merge pull request #3113 from TandoorRecipes/dependabot/pip/gunicorn-22.0.0
Bump gunicorn from 21.2.0 to 22.0.0
2024-04-18 09:38:53 +02:00
dependabot[bot]
7ce2c042c3 Bump gunicorn from 21.2.0 to 22.0.0
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 21.2.0 to 22.0.0.
- [Release notes](https://github.com/benoitc/gunicorn/releases)
- [Commits](https://github.com/benoitc/gunicorn/compare/21.2.0...22.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-17 02:51:06 +00:00
vabene1111
371d8a76b8 added flake8 watcher 2024-04-14 18:58:52 +02:00
vabene1111
7f63451b9a Merge pull request #3095 from Manon-ds/fixRounding
fix: rounding units
2024-04-14 18:21:28 +02:00
vabene1111
ee8237d493 Merge pull request #3101 from tooboredtocode/develop
improve docker run speed
2024-04-14 18:20:06 +02:00
vabene1111
91d3c43422 Merge pull request #3109 from smilerz/recipe_scrapers
Compatible with recipe_scrapers v15
2024-04-14 18:15:20 +02:00
smilerz
1700b9c531 change test_automations to use scrape_html
remove reliance on custom text_scraper class
changed url on test case to generic wildmode vs specific site
2024-04-12 09:20:56 -05:00
smilerz
7133249f4b update recipe_scrapers to use scrape_html
scrape_me has been deprecated
2024-04-12 08:11:59 -05:00
smilerz
ab9ea87549 upgrade recipe-scrapers 2024-04-12 08:11:58 -05:00
smilerz
975ad34672 Revert "tests for pk only nested serializer"
This reverts commit 714242b6df.
2024-04-12 07:02:57 -05:00
smilerz
6cb6861228 Revert "Revert "moved prettier configuration to .prettierrc""
This reverts commit cc24964368.
2024-04-12 07:02:42 -05:00
smilerz
cc24964368 Revert "moved prettier configuration to .prettierrc"
This reverts commit c33c4ed79b.
2024-04-11 18:24:44 -05:00
smilerz
714242b6df tests for pk only nested serializer 2024-04-11 17:36:24 -05:00
smilerz
c33c4ed79b moved prettier configuration to .prettierrc 2024-04-11 07:27:22 -05:00
vabene1111
971f8f3dad Merge pull request #3102 from smilerz/yapf_prettier
Yapf prettier
2024-04-11 07:46:12 +02:00
vabene1111
ca5fda7927 added property type delete admin 2024-04-10 20:04:17 +02:00
smilerz
2e6cc3e58e document configurations required for formatting and linting 2024-04-08 19:16:18 -05:00
tooboredtocode
42b7d1afcb fix: image not working in docker compose environments 2024-04-08 23:58:10 +02:00
tooboredtocode
99868e4e80 Reapply "Merge pull request #3055 from tooboredtocode/develop"
This reverts commit f14acc371d.
2024-04-08 23:56:49 +02:00
smilerz
38b22f3a56 setup project level linting with flake8
project level formatting with prettier
project level formatting with yapf
2024-04-08 10:49:53 -05:00
Manon Brun
b70a3bce9f Merge branch 'develop' into fixRounding 2024-04-08 09:13:57 +01:00
vabene1111
fb821ba0ef Merge branch 'develop' 2024-04-08 07:21:09 +02:00
vabene1111
f14acc371d Revert "Merge pull request #3055 from tooboredtocode/develop"
This reverts commit d7669279ff, reversing
changes made to 4293ec77c0.
2024-04-08 07:20:41 +02:00
vabene1111
c031db9019 downgraded recipe scrapers to pass tests for now 2024-04-05 21:18:01 +02:00
Manon Brun
78686faad3 fix: rounding units 2024-04-05 15:57:09 +01:00
vabene1111
b9e806b818 Merge branch 'develop' 2024-04-04 20:57:53 +02:00
vabene1111
d7669279ff Merge pull request #3055 from tooboredtocode/develop
Improve docker run speeds
2024-04-04 20:52:48 +02:00
vabene1111
4293ec77c0 fixed changing categories of shopping items 2024-04-04 20:49:48 +02:00
vabene1111
0a30c39add Merge pull request #3082 from TandoorRecipes/dependabot/github_actions/awalsh128/cache-apt-pkgs-action-1.4.2
Bump awalsh128/cache-apt-pkgs-action from 1.4.1 to 1.4.2
2024-04-04 20:42:52 +02:00
vabene1111
1b6449270b Merge pull request #3081 from TandoorRecipes/dependabot/pip/beautifulsoup4-4.12.3
Bump beautifulsoup4 from 4.12.2 to 4.12.3
2024-04-04 20:42:41 +02:00
vabene1111
3ae264eea7 Merge pull request #3080 from TandoorRecipes/dependabot/pip/django-debug-toolbar-4.3.0
Bump django-debug-toolbar from 4.2.0 to 4.3.0
2024-04-04 20:42:35 +02:00
vabene1111
c9dc7164f5 Merge pull request #3078 from TandoorRecipes/dependabot/pip/pytest-cov-5.0.0
Bump pytest-cov from 4.1.0 to 5.0.0
2024-04-04 20:42:22 +02:00
vabene1111
5751ba1ec5 Merge pull request #3079 from TandoorRecipes/dependabot/pip/django-crispy-forms-2.1
Bump django-crispy-forms from 2.0 to 2.1
2024-04-04 20:42:16 +02:00
vabene1111
3eca8c6db4 Merge pull request #3077 from TandoorRecipes/dependabot/pip/recipe-scrapers-14.55.0
Bump recipe-scrapers from 14.52.0 to 14.55.0
2024-04-04 20:42:03 +02:00
vabene1111
5cccbb8e5c Merge pull request #3092 from TandoorRecipes/dependabot/pip/pillow-10.3.0
Bump pillow from 10.2.0 to 10.3.0
2024-04-04 15:56:09 +02:00
dependabot[bot]
4390703c0c Bump pillow from 10.2.0 to 10.3.0
Bumps [pillow](https://github.com/python-pillow/Pillow) from 10.2.0 to 10.3.0.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/10.2.0...10.3.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-03 16:22:02 +00:00
smilerz
47bc3cfbe7 Update backup.md
update compose configuration for pgbackup to include .env file
2024-04-03 09:07:09 -05:00
atom karinca
30a2012e90 Translated using Weblate (Turkish)
Currently translated at 5.9% (29 of 485 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/tr/
2024-04-01 22:04:36 +00:00
dependabot[bot]
b38ea866b4 Bump awalsh128/cache-apt-pkgs-action from 1.4.1 to 1.4.2
Bumps [awalsh128/cache-apt-pkgs-action](https://github.com/awalsh128/cache-apt-pkgs-action) from 1.4.1 to 1.4.2.
- [Release notes](https://github.com/awalsh128/cache-apt-pkgs-action/releases)
- [Commits](https://github.com/awalsh128/cache-apt-pkgs-action/compare/v1.4.1...v1.4.2)

---
updated-dependencies:
- dependency-name: awalsh128/cache-apt-pkgs-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-01 01:02:35 +00:00
dependabot[bot]
5a0b9e14d2 Bump beautifulsoup4 from 4.12.2 to 4.12.3
Bumps [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) from 4.12.2 to 4.12.3.

---
updated-dependencies:
- dependency-name: beautifulsoup4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-01 00:53:28 +00:00
dependabot[bot]
4f0f59a55c Bump django-debug-toolbar from 4.2.0 to 4.3.0
Bumps [django-debug-toolbar](https://github.com/jazzband/django-debug-toolbar) from 4.2.0 to 4.3.0.
- [Release notes](https://github.com/jazzband/django-debug-toolbar/releases)
- [Changelog](https://github.com/jazzband/django-debug-toolbar/blob/main/docs/changes.rst)
- [Commits](https://github.com/jazzband/django-debug-toolbar/compare/4.2...4.3)

---
updated-dependencies:
- dependency-name: django-debug-toolbar
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-01 00:53:25 +00:00
dependabot[bot]
768b678c93 Bump django-crispy-forms from 2.0 to 2.1
Bumps [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms) from 2.0 to 2.1.
- [Release notes](https://github.com/django-crispy-forms/django-crispy-forms/releases)
- [Changelog](https://github.com/django-crispy-forms/django-crispy-forms/blob/main/CHANGELOG.md)
- [Commits](https://github.com/django-crispy-forms/django-crispy-forms/compare/2.0...2.1)

---
updated-dependencies:
- dependency-name: django-crispy-forms
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-01 00:53:19 +00:00
dependabot[bot]
10373b6ac5 Bump pytest-cov from 4.1.0 to 5.0.0
Bumps [pytest-cov](https://github.com/pytest-dev/pytest-cov) from 4.1.0 to 5.0.0.
- [Changelog](https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-cov/compare/v4.1.0...v5.0.0)

---
updated-dependencies:
- dependency-name: pytest-cov
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-01 00:53:12 +00:00
dependabot[bot]
4e0780d512 Bump recipe-scrapers from 14.52.0 to 14.55.0
Bumps [recipe-scrapers](https://github.com/hhursev/recipe-scrapers) from 14.52.0 to 14.55.0.
- [Release notes](https://github.com/hhursev/recipe-scrapers/releases)
- [Commits](https://github.com/hhursev/recipe-scrapers/compare/14.52.0...14.55.0)

---
updated-dependencies:
- dependency-name: recipe-scrapers
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-01 00:53:06 +00:00
atom karinca
959ad2a45c Translated using Weblate (Turkish)
Currently translated at 33.7% (192 of 569 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/tr/
2024-03-31 20:08:43 +00:00
vabene1111
94045905d3 Merge pull request #3069 from TandoorRecipes/dependabot/npm_and_yarn/vue/express-4.19.2
Bump express from 4.18.2 to 4.19.2 in /vue
2024-03-28 07:40:49 +01:00
dependabot[bot]
ad8d8daf79 Bump express from 4.18.2 to 4.19.2 in /vue
Bumps [express](https://github.com/expressjs/express) from 4.18.2 to 4.19.2.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.18.2...4.19.2)

---
updated-dependencies:
- dependency-name: express
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-28 06:40:03 +00:00
vabene1111
b623abf81e Merge pull request #3067 from Mikhail5555/move-away-from-homeassistant-api
use normal async client for api calls
2024-03-28 07:38:43 +01:00
tooboredtocode
f8b8d3f199 Merge branch 'TandoorRecipes:develop' into develop 2024-03-27 23:31:44 +01:00
Axel Breiterman
be388b0d10 Translated using Weblate (Spanish)
Currently translated at 53.1% (258 of 485 strings)

Translation: Tandoor/Recipes Backend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/es/
2024-03-27 19:02:41 +00:00
Mikhail Epifanov
41a448578a extra check if we arent accidently doing a query 2024-03-26 23:21:23 +01:00
Mikhail Epifanov
441c55936d use normal async client for api calls 2024-03-26 22:46:04 +01:00
vabene1111
b67281bbc8 fixed property helper calculation 2024-03-25 20:27:33 +01:00
vabene1111
5a1a5f3c4d Merge pull request #3057 from TandoorRecipes/dependabot/npm_and_yarn/vue/webpack-dev-middleware-5.3.4
Bump webpack-dev-middleware from 5.3.3 to 5.3.4 in /vue
2024-03-25 07:43:18 +01:00
vabene1111
30e2fc4895 Merge pull request #3052 from smilerz/test_performance
Test performance
2024-03-25 07:33:39 +01:00
vabene1111
57304f9c6c Merge pull request #3059 from richid/fix-system-issue-3503
bug: Fix TypeError at /system due to invalid PostgreSQL values [Closes #3053]
2024-03-25 07:31:28 +01:00
jorge Teixeira
87327b0959 Translated using Weblate (Portuguese (Brazil))
Currently translated at 84.5% (481 of 569 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/pt_BR/
2024-03-24 16:02:39 +00:00
Rich Schumacher
7957413ca0 bug: Fix TypeError at /system due to invalid PostgreSQL values [Closes #3053]
The bug was a missing tuple index introduced in #3027. Added the index
and also wrapped everything in a try/catch to prevent future issues.
2024-03-23 15:31:44 -04:00
dependabot[bot]
d99a157416 Bump webpack-dev-middleware from 5.3.3 to 5.3.4 in /vue
Bumps [webpack-dev-middleware](https://github.com/webpack/webpack-dev-middleware) from 5.3.3 to 5.3.4.
- [Release notes](https://github.com/webpack/webpack-dev-middleware/releases)
- [Changelog](https://github.com/webpack/webpack-dev-middleware/blob/v5.3.4/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-middleware/compare/v5.3.3...v5.3.4)

---
updated-dependencies:
- dependency-name: webpack-dev-middleware
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-23 06:40:34 +00:00
tooboredtocode
20b812c2cc feat: re-add venv 2024-03-22 19:04:29 +01:00
tooboredtocode
7bfa23b953 feat: better messages 2024-03-22 11:32:30 +01:00
tooboredtocode
ae37abf8b2 fix: fix modified the wrong file 2024-03-22 11:26:26 +01:00
tooboredtocode
5f211e420e fix: moving into exisiting files 2024-03-22 02:50:18 +01:00
tooboredtocode
1235cb8da5 feat: improve docker run speeds 2024-03-22 00:50:02 +01:00
smilerz
5e3a5eb8f5 fix errant IF statement 2024-03-21 09:18:38 -05:00
smilerz
b6a42e8e81 enable parallel test execution 2024-03-21 09:13:11 -05:00
smilerz
49539ef3ba add TEST_DATABASE env parameters 2024-03-21 09:11:57 -05:00
Johannes Jandke
db310c4076 Translated using Weblate (German)
Currently translated at 100.0% (569 of 569 strings)

Translation: Tandoor/Recipes Frontend
Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/de/
2024-03-21 14:02:41 +00:00
vabene1111
0248e1c500 Merge pull request #3006 from TandoorRecipes/dependabot/pip/django-cors-headers-4.3.1
Bump django-cors-headers from 4.2.0 to 4.3.1
2024-03-21 14:59:33 +01:00
vabene1111
db04386997 Merge pull request #3008 from TandoorRecipes/dependabot/pip/cryptography-42.0.5
Bump cryptography from 42.0.4 to 42.0.5
2024-03-21 14:59:16 +01:00
vabene1111
54f0b2b036 Merge pull request #3009 from TandoorRecipes/dependabot/pip/gunicorn-21.2.0
Bump gunicorn from 20.1.0 to 21.2.0
2024-03-21 14:59:04 +01:00
smilerz
33b23b299d removed unused docs/coverage/ reports 2024-03-21 08:58:32 -05:00
smilerz
a047613edb enabled entire test_recipe_full_text_search unit tests 2024-03-21 08:56:45 -05:00
smilerz
149cf93618 removed unused CustomTestRunner 2024-03-21 08:56:21 -05:00
vabene1111
20e0c948c4 Merge branch 'develop' 2024-03-21 14:40:23 +01:00
dependabot[bot]
a9dcc7261c Bump cryptography from 42.0.4 to 42.0.5
Bumps [cryptography](https://github.com/pyca/cryptography) from 42.0.4 to 42.0.5.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/42.0.4...42.0.5)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-21 13:04:03 +00:00
vabene1111
a626bda1ab Merge branch 'develop' 2024-03-05 14:06:56 +01:00
vabene1111
21f1700d6d Merge branch 'develop'
# Conflicts:
#	cookbook/forms.py
2024-03-05 08:55:33 +01:00
dependabot[bot]
cf61de0dba Bump gunicorn from 20.1.0 to 21.2.0
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 20.1.0 to 21.2.0.
- [Release notes](https://github.com/benoitc/gunicorn/releases)
- [Commits](https://github.com/benoitc/gunicorn/compare/20.1.0...21.2.0)

---
updated-dependencies:
- dependency-name: gunicorn
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-01 00:05:19 +00:00
dependabot[bot]
29a937c44d Bump django-cors-headers from 4.2.0 to 4.3.1
Bumps [django-cors-headers](https://github.com/adamchainz/django-cors-headers) from 4.2.0 to 4.3.1.
- [Changelog](https://github.com/adamchainz/django-cors-headers/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/adamchainz/django-cors-headers/compare/4.2.0...4.3.1)

---
updated-dependencies:
- dependency-name: django-cors-headers
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-01 00:04:56 +00:00
vabene1111
57d7bda803 added captcha option to password reset form 2024-02-14 07:28:47 +01:00
vabene1111
a088697812 added additional rate limiting to password reset 2024-02-14 07:28:47 +01:00
vabene1111
2a15d19551 Merge branch 'develop' 2024-02-02 07:45:24 +01:00
272 changed files with 16461 additions and 39278 deletions

View File

@@ -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

22
.flake8 Normal file
View File

@@ -0,0 +1,22 @@
[flake8]
extend-ignore =
# Whitespace before ':' - Required for black compatibility
E203,
# Line break occurred before a binary operator - Required for black compatibility
W503,
# Comparison to False should be 'if cond is False:' or 'if not cond:'
E712
exclude =
.git,
**/__pycache__,
**/.git,
**/.svn,
**/.hg,
**/CVS,
**/.DS_Store,
.vscode,
**/*.pyc
per-file-ignores=
cookbook/apps.py:F401
max-line-length = 179

View File

@@ -14,7 +14,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: awalsh128/cache-apt-pkgs-action@v1.4.1
- uses: awalsh128/cache-apt-pkgs-action@v1.4.2
with:
packages: libsasl2-dev python3-dev libldap2-dev libssl-dev
version: 1.0

28
.gitignore vendored
View File

@@ -47,6 +47,11 @@ docs/reports/**
# Django stuff:
*.log
mediafiles/
*.sqlite3*
staticfiles/
postgresql/
data/
# Sphinx documentation
docs/_build/
@@ -59,32 +64,23 @@ target/
\.idea/dataSources\.local\.xml
venv/
mediafiles/
*.sqlite3*
\.idea/workspace\.xml
\.idea/misc\.xml
# Deployment
\.env
staticfiles/
postgresql/
data/
cookbook/static/vue
vue/webpack-stats.json
/docker-compose.override.yml
vue/node_modules
plugins
vetur.config.js
cookbook/static/vue
vue/webpack-stats.json
vue3/node_modules
cookbook/templates/sw.js
.prettierignore
vue/.yarn
vue3/.vite
vue3/node_modules
# Configs
vetur.config.js
venv/

31
.idea/watcherTasks.xml generated Normal file
View File

@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectTasksOptions">
<TaskOptions isEnabled="false">
<option name="arguments" value="-m flake8 $FilePath$ --config $ContentRoot$\.flake8" />
<option name="checkSyntaxErrors" value="true" />
<option name="description" />
<option name="exitCodeBehavior" value="ALWAYS" />
<option name="fileExtension" value="py" />
<option name="immediateSync" value="false" />
<option name="name" value="Flake8 Watcher" />
<option name="output" value="$FilePath$" />
<option name="outputFilters">
<array>
<FilterInfo>
<option name="description" value="" />
<option name="name" value="" />
<option name="regExp" value="$FILE_PATH$:$LINE$:$COLUMN$: $MESSAGE$" />
</FilterInfo>
</array>
</option>
<option name="outputFromStdout" value="false" />
<option name="program" value="$PyInterpreterDirectory$/python" />
<option name="runOnExternalChanges" value="false" />
<option name="scopeName" value="Current File" />
<option name="trackOnlyRoot" value="false" />
<option name="workingDir" value="" />
<envs />
</TaskOptions>
</component>
</project>

13
.prettierignore Normal file
View File

@@ -0,0 +1,13 @@
# generated files
api.ts
vue/src/apps/*.js
vue/node_modules
staticfiles/
docs/reports/
/vue3/src/openapi/
# ignored files - prettier interferes with django templates and github actions
*.html
*.yml
*.yaml

7
.prettierrc Normal file
View File

@@ -0,0 +1,7 @@
{
"printWidth": 179,
"trailingComma": "es5",
"tabWidth": 2,
"semi": false,
"experimentalTernaries": true
}

5
.vscode/launch.json vendored
View File

@@ -4,7 +4,6 @@
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python Debugger: Django",
"type": "debugpy",
@@ -24,8 +23,8 @@
],
"console": "integratedTerminal",
"env": {
"//comment": "coverage and pytest can't both be running at the same time",
"PYTEST_ADDOPTS": "--no-cov -n 2"
// coverage and pytest can't both be running at the same time
"PYTEST_ADDOPTS": "--no-cov"
},
"django": true,
"justMyCode": true

11
.vscode/settings.json vendored
View File

@@ -3,5 +3,12 @@
"cookbook/tests"
],
"python.testing.unittestEnabled": false,
"python.testing.pytestEnabled": true
}
"python.testing.pytestEnabled": true,
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"[python]": {
"editor.defaultFormatter": "eeyore.yapf",
},
"yapf.args": [],
"isort.args": []
}

View File

@@ -6,6 +6,8 @@ RUN apk add --no-cache postgresql-libs postgresql-client gettext zlib libjpeg li
#Print all logs without buffering it.
ENV PYTHONUNBUFFERED 1
ENV DOCKER true
#This port will be used by gunicorn.
EXPOSE 8080

View File

@@ -71,7 +71,7 @@ Because of that there are several ways you can support us
- **Let us host for you** We are offering a [hosted version](https://app.tandoor.dev) where all profits support us and the development of tandoor (currently only available in germany).
## Contributing
Contributions are welcome but please read [this](https://docs.tandoor.dev/contribute/#contributing-code) **BEFORE** contributing anything!
Contributions are welcome but please read [this](https://docs.tandoor.dev/contribute/guidelines/) **BEFORE** contributing anything!
## Your Feedback

View File

@@ -67,7 +67,7 @@ echo "Migrating database"
python manage.py migrate
echo "Generating static files"
echo "Collecting static files, this may take a while..."
python manage.py collectstatic_js_reverse
python manage.py collectstatic --noinput

View File

@@ -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{'':s 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
@@ -376,10 +376,17 @@ class ShareLinkAdmin(admin.ModelAdmin):
admin.site.register(ShareLink, ShareLinkAdmin)
@admin.action(description='Delete all properties with type')
def delete_properties_with_type(modeladmin, request, queryset):
for pt in queryset:
Property.objects.filter(property_type=pt).delete()
class PropertyTypeAdmin(admin.ModelAdmin):
search_fields = ('space',)
search_fields = ('name',)
list_display = ('id', 'space', 'name', 'fdc_id')
actions = [delete_properties_with_type]
admin.site.register(PropertyType, PropertyTypeAdmin)

View File

@@ -16,15 +16,11 @@ class CookbookConfig(AppConfig):
import cookbook.signals # noqa
if not settings.DISABLE_EXTERNAL_CONNECTORS:
try:
from cookbook.connectors.connector_manager import ConnectorManager # Needs to be here to prevent loading race condition of oauth2 modules in models.py
handler = ConnectorManager()
post_save.connect(handler, dispatch_uid="connector_manager")
post_delete.connect(handler, dispatch_uid="connector_manager")
except Exception as e:
traceback.print_exc()
print('Failed to initialize connectors')
pass
from cookbook.connectors.connector_manager import ConnectorManager # Needs to be here to prevent loading race condition of oauth2 modules in models.py
handler = ConnectorManager()
post_save.connect(handler, dispatch_uid="post_save-connector_manager")
post_delete.connect(handler, dispatch_uid="post_delete-connector_manager")
# if not settings.DISABLE_TREE_FIX_STARTUP:
# # when starting up run fix_tree to:
# # a) make sure that nodes are sorted when switching between sort modes
@@ -45,4 +41,4 @@ class CookbookConfig(AppConfig):
# except Exception:
# if DEBUG:
# traceback.print_exc()
# pass # dont break startup just because fix could not run, need to investigate cases when this happens
# pass # dont break startup just because fix could not run, need to investigate cases when this happens

View File

@@ -5,6 +5,7 @@ import threading
from asyncio import Task
from dataclasses import dataclass
from enum import Enum
from logging import Logger
from types import UnionType
from typing import List, Any, Dict, Optional, Type
@@ -30,6 +31,15 @@ class Work:
actionType: ActionType
class Singleton(type):
_instances = {}
def __call__(cls, *args, **kwargs):
if cls not in cls._instances:
cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
return cls._instances[cls]
# The way ConnectionManager works is as follows:
# 1. On init, it starts a worker & creates a queue for 'Work'
# 2. Then any time its called, it verifies the type of action (create/update/delete) and if the item is of interest, pushes the Work (non-blocking) to the queue.
@@ -38,11 +48,14 @@ class Work:
# 3.2 If work is of type REGISTERED_CLASSES, it asynchronously fires of all connectors and wait for them to finish (runtime should depend on the 'slowest' connector)
# 4. Work is marked as consumed, and next entry of the queue is consumed.
# Each 'Work' is processed in sequential by the worker, so the throughput is about [workers * the slowest connector]
class ConnectorManager:
# The Singleton class is used for ConnectorManager to have a self-reference and so Python does not garbage collect it
class ConnectorManager(metaclass=Singleton):
_logger: Logger
_queue: queue.Queue
_listening_to_classes = REGISTERED_CLASSES | ConnectorConfig
def __init__(self):
self._logger = logging.getLogger("recipes.connector")
self._queue = queue.Queue(maxsize=settings.EXTERNAL_CONNECTORS_QUEUE_SIZE)
self._worker = threading.Thread(target=self.worker, args=(0, self._queue,), daemon=True)
self._worker.start()
@@ -65,7 +78,7 @@ class ConnectorManager:
try:
self._queue.put_nowait(Work(instance, action_type))
except queue.Full:
logging.info(f"queue was full, so skipping {action_type} of type {type(instance)}")
self._logger.info(f"queue was full, so skipping {action_type} of type {type(instance)}")
return
def stop(self):
@@ -74,10 +87,12 @@ class ConnectorManager:
@staticmethod
def worker(worker_id: int, worker_queue: queue.Queue):
logger = logging.getLogger("recipes.connector.worker")
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
logging.info(f"started ConnectionManager worker {worker_id}")
logger.info(f"started ConnectionManager worker {worker_id}")
# When multiple workers are used, please make sure the cache is shared across all threads, otherwise it might lead to un-expected behavior.
_connectors_cache: Dict[int, List[Connector]] = dict()
@@ -91,6 +106,8 @@ class ConnectorManager:
if item is None:
break
logger.debug(f"received {item.instance=} with {item.actionType=}")
# If a Connector was changed/updated, refresh connector from the database for said space
refresh_connector_cache = isinstance(item.instance, ConnectorConfig)
@@ -111,7 +128,7 @@ class ConnectorManager:
try:
connector: Optional[Connector] = ConnectorManager.get_connected_for_config(config)
except BaseException:
logging.exception(f"failed to initialize {config.name}")
logger.exception(f"failed to initialize {config.name}")
continue
if connector is not None:
@@ -123,10 +140,12 @@ class ConnectorManager:
worker_queue.task_done()
continue
logger.debug(f"running {len(connectors)} connectors for {item.instance=} with {item.actionType=}")
loop.run_until_complete(run_connectors(connectors, space, item.instance, item.actionType))
worker_queue.task_done()
logging.info(f"terminating ConnectionManager worker {worker_id}")
logger.info(f"terminating ConnectionManager worker {worker_id}")
asyncio.set_event_loop(None)
loop.close()

View File

@@ -1,26 +1,38 @@
import logging
from logging import Logger
from typing import Dict, Tuple
from urllib.parse import urljoin
from homeassistant_api import Client, HomeassistantAPIError, Domain
from aiohttp import request, ClientResponseError
from cookbook.connectors.connector import Connector
from cookbook.models import ShoppingListEntry, ConnectorConfig, Space
class HomeAssistant(Connector):
_domains_cache: dict[str, Domain]
_config: ConnectorConfig
_logger: Logger
_client: Client
_required_foreign_keys = ("food", "unit", "created_by")
def __init__(self, config: ConnectorConfig):
if not config.token or not config.url or not config.todo_entity:
raise ValueError("config for HomeAssistantConnector in incomplete")
self._domains_cache = dict()
self._logger = logging.getLogger(f"recipes.connector.homeassistant.{config.name}")
if config.url[-1] != "/":
config.url += "/"
self._config = config
self._logger = logging.getLogger("connector.HomeAssistant")
self._client = Client(self._config.url, self._config.token, async_cache_session=False, use_async=True)
async def homeassistant_api_call(self, method: str, path: str, data: Dict) -> str:
headers = {
"Authorization": f"Bearer {self._config.token}",
"Content-Type": "application/json"
}
async with request(method, urljoin(self._config.url, path), headers=headers, json=data) as response:
response.raise_for_status()
return await response.json()
async def on_shopping_list_entry_created(self, space: Space, shopping_list_entry: ShoppingListEntry) -> None:
if not self._config.on_shopping_list_entry_created_enabled:
@@ -28,16 +40,20 @@ class HomeAssistant(Connector):
item, description = _format_shopping_list_entry(shopping_list_entry)
todo_domain = self._domains_cache.get('todo')
try:
if todo_domain is None:
todo_domain = await self._client.async_get_domain('todo')
self._domains_cache['todo'] = todo_domain
self._logger.debug(f"adding {item=} with {description=} to {self._config.todo_entity}")
logging.debug(f"pushing {item} to {self._config.name}")
await todo_domain.add_item(entity_id=self._config.todo_entity, item=item)
except HomeassistantAPIError as err:
self._logger.warning(f"[HomeAssistant {self._config.name}] Received an exception from the api: {err=}, {type(err)=}")
data = {
"entity_id": self._config.todo_entity,
"item": item,
}
if self._config.supports_description_field:
data["description"] = description
try:
await self.homeassistant_api_call("POST", "services/todo/add_item", data)
except ClientResponseError as err:
self._logger.warning(f"received an exception from the api: {err.request_info.url=}, {err.request_info.method=}, {err.status=}, {err.message=}, {type(err)=}")
async def on_shopping_list_entry_updated(self, space: Space, shopping_list_entry: ShoppingListEntry) -> None:
if not self._config.on_shopping_list_entry_updated_enabled:
@@ -48,24 +64,31 @@ class HomeAssistant(Connector):
if not self._config.on_shopping_list_entry_deleted_enabled:
return
item, description = _format_shopping_list_entry(shopping_list_entry)
if not all(k in shopping_list_entry._state.fields_cache for k in self._required_foreign_keys):
# Sometimes the food foreign key is not loaded, and we cant load it from an async process
self._logger.debug("required property was not present in ShoppingListEntry")
return
item, _ = _format_shopping_list_entry(shopping_list_entry)
self._logger.debug(f"removing {item=} from {self._config.todo_entity}")
data = {
"entity_id": self._config.todo_entity,
"item": item,
}
todo_domain = self._domains_cache.get('todo')
try:
if todo_domain is None:
todo_domain = await self._client.async_get_domain('todo')
self._domains_cache['todo'] = todo_domain
logging.debug(f"deleting {item} from {self._config.name}")
await todo_domain.remove_item(entity_id=self._config.todo_entity, item=item)
except HomeassistantAPIError as err:
self._logger.warning(f"[HomeAssistant {self._config.name}] Received an exception from the api: {err=}, {type(err)=}")
await self.homeassistant_api_call("POST", "services/todo/remove_item", data)
except ClientResponseError as err:
# This error will always trigger if the item is not present/found
self._logger.debug(f"received an exception from the api: {err.request_info.url=}, {err.request_info.method=}, {err.status=}, {err.message=}, {type(err)=}")
async def close(self) -> None:
await self._client.async_cache_session.close()
pass
def _format_shopping_list_entry(shopping_list_entry: ShoppingListEntry):
def _format_shopping_list_entry(shopping_list_entry: ShoppingListEntry) -> Tuple[str, str]:
item = shopping_list_entry.food.name
if shopping_list_entry.amount > 0:
item += f" ({shopping_list_entry.amount:.2f}".rstrip('0').rstrip('.')
@@ -76,10 +99,10 @@ def _format_shopping_list_entry(shopping_list_entry: ShoppingListEntry):
else:
item += ")"
description = "Imported by TandoorRecipes"
description = "From TandoorRecipes"
if shopping_list_entry.created_by.first_name and len(shopping_list_entry.created_by.first_name) > 0:
description += f", created by {shopping_list_entry.created_by.first_name}"
description += f", by {shopping_list_entry.created_by.first_name}"
else:
description += f", created by {shopping_list_entry.created_by.username}"
description += f", by {shopping_list_entry.created_by.username}"
return item, description

View File

@@ -89,12 +89,13 @@ class ImportExportBase(forms.Form):
COOKMATE = 'COOKMATE'
REZEPTSUITEDE = 'REZEPTSUITEDE'
PDF = 'PDF'
GOURMET = 'GOURMET'
type = forms.ChoiceField(choices=((DEFAULT, _('Default')), (PAPRIKA, 'Paprika'), (NEXTCLOUD, 'Nextcloud Cookbook'), (MEALIE, 'Mealie'), (CHOWDOWN, 'Chowdown'),
(SAFFRON, 'Saffron'), (CHEFTAP, 'ChefTap'), (PEPPERPLATE, 'Pepperplate'), (RECETTETEK, 'RecetteTek'), (RECIPESAGE, 'Recipe Sage'),
(DOMESTICA, 'Domestica'), (MEALMASTER, 'MealMaster'), (REZKONV, 'RezKonv'), (OPENEATS, 'Openeats'), (RECIPEKEEPER, 'Recipe Keeper'),
(PLANTOEAT, 'Plantoeat'), (COOKBOOKAPP, 'CookBookApp'), (COPYMETHAT, 'CopyMeThat'), (PDF, 'PDF'), (MELARECIPES, 'Melarecipes'),
(COOKMATE, 'Cookmate'), (REZEPTSUITEDE, 'Recipesuite.de')))
(COOKMATE, 'Cookmate'), (REZEPTSUITEDE, 'Recipesuite.de'), (GOURMET, 'Gourmet')))
class MultipleFileInput(forms.ClearableFileInput):
@@ -182,6 +183,12 @@ class ConnectorConfigForm(forms.ModelForm):
required=False,
)
supports_description_field = forms.BooleanField(
help_text="Does the connector todo entity support the description field",
initial=True,
required=False,
)
update_token = forms.CharField(
widget=forms.TextInput(attrs={'autocomplete': 'update-token', 'type': 'password'}),
required=False,
@@ -198,7 +205,7 @@ class ConnectorConfigForm(forms.ModelForm):
fields = (
'name', 'type', 'enabled', 'on_shopping_list_entry_created_enabled', 'on_shopping_list_entry_updated_enabled',
'on_shopping_list_entry_deleted_enabled', 'url', 'todo_entity',
'on_shopping_list_entry_deleted_enabled', 'supports_description_field', 'url', 'todo_entity',
)
help_texts = {

View File

@@ -1,8 +0,0 @@
from django.test.runner import DiscoverRunner
from django_scopes import scopes_disabled
class CustomTestRunner(DiscoverRunner):
def run_tests(self, *args, **kwargs):
with scopes_disabled():
return super().run_tests(*args, **kwargs)

View File

@@ -1,4 +1,12 @@
import socket
from urllib.parse import urlparse
from django.core.exceptions import ValidationError
from django.core.validators import URLValidator
from django.db.models import Func
from ipaddress import ip_address
from recipes import settings
class Round(Func):
@@ -11,3 +19,30 @@ def str2bool(v):
return v
else:
return v.lower() in ("yes", "true", "1")
"""
validates an url that is supposed to be imported
checks that the protocol used is http(s) and that no local address is accessed
@:param url to test
@:return true if url is valid, false otherwise
"""
def validate_import_url(url):
try:
validator = URLValidator(schemes=['http', 'https'])
validator(url)
except ValidationError:
# if schema is not http or https, consider url invalid
return False
# resolve IP address of url
try:
url_ip_address = ip_address(str(socket.gethostbyname(urlparse(url).hostname)))
except (ValueError, AttributeError, TypeError, Exception) as e:
# if ip cannot be parsed, consider url invalid
return False
# validate that IP is neither private nor any other special address
return not any([url_ip_address.is_private, url_ip_address.is_reserved, url_ip_address.is_loopback, url_ip_address.is_multicast, url_ip_address.is_link_local, ])

View File

@@ -71,7 +71,7 @@ class FoodPropertyHelper:
# TODO move to central helper ? --> use defaultdict
@staticmethod
def add_or_create(d, key, value, food):
if key in d:
if key in d and d[key]['value']:
d[key]['value'] += value
else:
d[key] = {'id': food.id, 'food': food.name, 'value': value}

View File

@@ -6,7 +6,7 @@ from django.utils.dateparse import parse_duration
from django.utils.translation import gettext as _
from isodate import parse_duration as iso_parse_duration
from isodate.isoerror import ISO8601Error
from pytube import YouTube
from pytubefix import YouTube
from recipe_scrapers._utils import get_host_name, get_minutes
from cookbook.helper.automation_helper import AutomationEngine
@@ -15,12 +15,9 @@ from cookbook.models import Automation, Keyword, PropertyType
def get_from_scraper(scrape, request):
# converting the scrape_me object to the existing json format based on ld+json
# converting the scrape_html object to the existing json format based on ld+json
recipe_json = {
'steps': [],
'internal': True
}
recipe_json = {'steps': [], 'internal': True}
keywords = []
# assign source URL
@@ -31,7 +28,9 @@ def get_from_scraper(scrape, request):
source_url = scrape.url
except Exception:
pass
if source_url:
if source_url == "https://urlnotfound.none" or not source_url:
recipe_json['source_url'] = ''
else:
recipe_json['source_url'] = source_url
try:
keywords.append(source_url.replace('http://', '').replace('https://', '').split('/')[0])
@@ -157,11 +156,18 @@ def get_from_scraper(scrape, request):
# assign steps
try:
for i in parse_instructions(scrape.instructions()):
recipe_json['steps'].append({'instruction': i, 'ingredients': [], 'show_ingredients_table': request.user.userpreference.show_step_ingredients, })
recipe_json['steps'].append({
'instruction': i,
'ingredients': [],
'show_ingredients_table': request.user.userpreference.show_step_ingredients,
})
except Exception:
pass
if len(recipe_json['steps']) == 0:
recipe_json['steps'].append({'instruction': '', 'ingredients': [], })
recipe_json['steps'].append({
'instruction': '',
'ingredients': [],
})
recipe_json['description'] = recipe_json['description'][:512]
if len(recipe_json['description']) > 256: # split at 256 as long descriptions don't look good on recipe cards
@@ -182,20 +188,20 @@ def get_from_scraper(scrape, request):
'original_text': x
}
if unit:
ingredient['unit'] = {'name': unit, }
ingredient['unit'] = {
'name': unit,
}
recipe_json['steps'][0]['ingredients'].append(ingredient)
except Exception:
recipe_json['steps'][0]['ingredients'].append(
{
'amount': 0,
'unit': None,
'food': {
'name': x,
},
'note': '',
'original_text': x
}
)
recipe_json['steps'][0]['ingredients'].append({
'amount': 0,
'unit': None,
'food': {
'name': x,
},
'note': '',
'original_text': x
})
except Exception:
pass
@@ -248,14 +254,16 @@ def get_from_youtube_scraper(url, request):
'working_time': 0,
'waiting_time': 0,
'image': "",
'keywords': [{'name': kw.name, 'label': kw.name, 'id': kw.pk}],
'keywords': [{
'name': kw.name,
'label': kw.name,
'id': kw.pk
}],
'source_url': url,
'steps': [
{
'ingredients': [],
'instruction': ''
}
]
'steps': [{
'ingredients': [],
'instruction': ''
}]
}
try:
@@ -266,9 +274,8 @@ def get_from_youtube_scraper(url, request):
default_recipe_json['image'] = video.thumbnail_url
if video.description:
default_recipe_json['steps'][0]['instruction'] = automation_engine.apply_regex_replace_automation(video.description, Automation.INSTRUCTION_REPLACE)
except Exception:
pass
traceback.print_exc()
return default_recipe_json
@@ -367,8 +374,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
@@ -452,10 +459,7 @@ def normalize_string(string):
def iso_duration_to_minutes(string):
match = re.match(
r'P((?P<years>\d+)Y)?((?P<months>\d+)M)?((?P<weeks>\d+)W)?((?P<days>\d+)D)?T((?P<hours>\d+)H)?((?P<minutes>\d+)M)?((?P<seconds>\d+)S)?',
string
).groupdict()
match = re.match(r'P((?P<years>\d+)Y)?((?P<months>\d+)M)?((?P<weeks>\d+)W)?((?P<days>\d+)D)?T((?P<hours>\d+)H)?((?P<minutes>\d+)M)?((?P<seconds>\d+)S)?', string).groupdict()
return int(match['days'] or 0) * 24 * 60 + int(match['hours'] or 0) * 60 + int(match['minutes'] or 0)

View File

@@ -1,68 +0,0 @@
import json
from recipe_scrapers._abstract import AbstractScraper
class CooksIllustrated(AbstractScraper):
@classmethod
def host(cls, site='cooksillustrated'):
return {
'cooksillustrated': f"{site}.com",
'americastestkitchen': f"{site}.com",
'cookscountry': f"{site}.com",
}.get(site)
def title(self):
return self.schema.title()
def image(self):
return self.schema.image()
def total_time(self):
if not self.recipe:
self.get_recipe()
return self.recipe['recipeTimeNote']
def yields(self):
if not self.recipe:
self.get_recipe()
return self.recipe['yields']
def ingredients(self):
if not self.recipe:
self.get_recipe()
ingredients = []
for group in self.recipe['ingredientGroups']:
ingredients += group['fields']['recipeIngredientItems']
return [
"{} {} {}{}".format(
i['fields']['qty'] or '',
i['fields']['measurement'] or '',
i['fields']['ingredient']['fields']['title'] or '',
i['fields']['postText'] or ''
)
for i in ingredients
]
def instructions(self):
if not self.recipe:
self.get_recipe()
if self.recipe.get('headnote', False):
i = ['Note: ' + self.recipe.get('headnote', '')]
else:
i = []
return "\n".join(
i
+ [self.recipe.get('whyThisWorks', '')]
+ [
instruction['fields']['content']
for instruction in self.recipe['instructions']
]
)
def nutrients(self):
raise NotImplementedError("This should be implemented.")
def get_recipe(self):
j = json.loads(self.soup.find(type='application/json').string)
name = list(j['props']['initialState']['content']['documents'])[0]
self.recipe = j['props']['initialState']['content']['documents'][name]

View File

@@ -1,43 +0,0 @@
from json import JSONDecodeError
from bs4 import BeautifulSoup
from recipe_scrapers import SCRAPERS, get_host_name
from recipe_scrapers._factory import SchemaScraperFactory
from recipe_scrapers._schemaorg import SchemaOrg
from .cooksillustrated import CooksIllustrated
CUSTOM_SCRAPERS = {
CooksIllustrated.host(site="cooksillustrated"): CooksIllustrated,
CooksIllustrated.host(site="americastestkitchen"): CooksIllustrated,
CooksIllustrated.host(site="cookscountry"): CooksIllustrated,
}
SCRAPERS.update(CUSTOM_SCRAPERS)
def text_scraper(text, url=None):
domain = None
if url:
domain = get_host_name(url)
if domain in SCRAPERS:
scraper_class = SCRAPERS[domain]
else:
scraper_class = SchemaScraperFactory.SchemaScraper
class TextScraper(scraper_class):
def __init__(
self,
html=None,
url=None,
):
self.wild_mode = False
self.meta_http_equiv = False
self.soup = BeautifulSoup(html, "html.parser")
self.url = url
self.recipe = None
try:
self.schema = SchemaOrg(html)
except (JSONDecodeError, AttributeError):
pass
return TextScraper(url=url, html=text)

View File

@@ -20,6 +20,7 @@ CONVERSION_TABLE = {
'gallon': 0.264172,
'tbsp': 67.628,
'tsp': 202.884,
'us_cup': 4.22675,
'imperial_fluid_ounce': 35.1951,
'imperial_pint': 1.75975,
'imperial_quart': 0.879877,

View File

@@ -2,12 +2,12 @@ import re
from io import BytesIO
import requests
import validators
from cookbook.helper.HelperFunctions import validate_import_url
from cookbook.helper.ingredient_parser import IngredientParser
from cookbook.helper.recipe_url_import import (get_from_scraper, get_images_from_soup,
iso_duration_to_minutes)
from cookbook.helper.scrapers.scrapers import text_scraper
from recipe_scrapers import scrape_html
from cookbook.integration.integration import Integration
from cookbook.models import Ingredient, Recipe, Step
@@ -20,7 +20,7 @@ class CookBookApp(Integration):
def get_recipe_from_file(self, file):
recipe_html = file.getvalue().decode("utf-8")
scrape = text_scraper(text=recipe_html)
scrape = scrape_html(html=recipe_html, org_url="https://cookbookapp.import", supported_only=False)
recipe_json = get_from_scraper(scrape, self.request)
images = list(dict.fromkeys(get_images_from_soup(scrape.soup, None)))
@@ -63,7 +63,7 @@ class CookBookApp(Integration):
if len(images) > 0:
try:
url = images[0]
if validators.url(url, public=True):
if validate_import_url(url):
response = requests.get(url)
self.import_recipe_image(recipe, BytesIO(response.content))
except Exception as e:

View File

@@ -1,8 +1,8 @@
from io import BytesIO
import requests
import validators
from cookbook.helper.HelperFunctions import validate_import_url
from cookbook.helper.ingredient_parser import IngredientParser
from cookbook.helper.recipe_url_import import parse_servings, parse_servings_text, parse_time
from cookbook.integration.integration import Integration
@@ -69,7 +69,7 @@ class Cookmate(Integration):
if recipe_xml.find('imageurl') is not None:
try:
url = recipe_xml.find('imageurl').text.strip()
if validators.url(url, public=True):
if validate_import_url(url):
response = requests.get(url)
self.import_recipe_image(recipe, BytesIO(response.content))
except Exception as e:

View File

@@ -0,0 +1,211 @@
import base64
from io import BytesIO
from lxml import etree
import requests
from pathlib import Path
from bs4 import BeautifulSoup, Tag
from cookbook.helper.HelperFunctions import validate_import_url
from cookbook.helper.ingredient_parser import IngredientParser
from cookbook.helper.recipe_url_import import parse_servings, parse_servings_text, parse_time, iso_duration_to_minutes
from cookbook.integration.integration import Integration
from cookbook.models import Ingredient, Recipe, Step, Keyword
from recipe_scrapers import scrape_html
class Gourmet(Integration):
def split_recipe_file(self, file):
encoding = 'utf-8'
byte_string = file.read()
text_obj = byte_string.decode(encoding, errors="ignore")
soup = BeautifulSoup(text_obj, "html.parser")
return soup.find_all("div", {"class": "recipe"})
def get_ingredients_recursive(self, step, ingredients, ingredient_parser):
if isinstance(ingredients, Tag):
for ingredient in ingredients.children:
if not isinstance(ingredient, Tag):
continue
if ingredient.name in ["li"]:
step_name = "".join(ingredient.findAll(text=True, recursive=False)).strip().rstrip(":")
step.ingredients.add(Ingredient.objects.create(
is_header=True,
note=step_name[:256],
original_text=step_name,
space=self.request.space,
))
next_ingrediets = ingredient.find("ul", {"class": "ing"})
self.get_ingredients_recursive(step, next_ingrediets, ingredient_parser)
else:
try:
amount, unit, food, note = ingredient_parser.parse(ingredient.text.strip())
f = ingredient_parser.get_food(food)
u = ingredient_parser.get_unit(unit)
step.ingredients.add(
Ingredient.objects.create(
food=f,
unit=u,
amount=amount,
note=note,
original_text=ingredient.text.strip(),
space=self.request.space,
)
)
except ValueError:
pass
def get_recipe_from_file(self, file):
# 'file' comes is as a beautifulsoup object
source_url = None
for item in file.find_all('a'):
if item.has_attr('href'):
source_url = item.get("href")
break
name = file.find("p", {"class": "title"}).find("span", {"itemprop": "name"}).text.strip()
recipe = Recipe.objects.create(
name=name[:128],
source_url=source_url,
created_by=self.request.user,
internal=True,
space=self.request.space,
)
for category in file.find_all("span", {"itemprop": "recipeCategory"}):
keyword, created = Keyword.objects.get_or_create(name=category.text, space=self.request.space)
recipe.keywords.add(keyword)
try:
recipe.servings = parse_servings(file.find("span", {"itemprop": "recipeYield"}).text.strip())
except AttributeError:
pass
try:
prep_time = file.find("span", {"itemprop": "prepTime"}).text.strip().split()
prep_time[0] = prep_time[0].replace(',', '.')
if prep_time[1].lower() in ['stunde', 'stunden', 'hour', 'hours']:
prep_time_min = int(float(prep_time[0]) * 60)
elif prep_time[1].lower() in ['tag', 'tage', 'day', 'days']:
prep_time_min = int(float(prep_time[0]) * 60 * 24)
else:
prep_time_min = int(prep_time[0])
recipe.waiting_time = prep_time_min
except AttributeError:
pass
try:
cook_time = file.find("span", {"itemprop": "cookTime"}).text.strip().split()
cook_time[0] = cook_time[0].replace(',', '.')
if cook_time[1].lower() in ['stunde', 'stunden', 'hour', 'hours']:
cook_time_min = int(float(cook_time[0]) * 60)
elif cook_time[1].lower() in ['tag', 'tage', 'day', 'days']:
cook_time_min = int(float(cook_time[0]) * 60 * 24)
else:
cook_time_min = int(cook_time[0])
recipe.working_time = cook_time_min
except AttributeError:
pass
for cuisine in file.find_all('span', {'itemprop': 'recipeCuisine'}):
cuisine_name = cuisine.text
keyword = Keyword.objects.get_or_create(space=self.request.space, name=cuisine_name)
if len(keyword):
recipe.keywords.add(keyword[0])
for category in file.find_all('span', {'itemprop': 'recipeCategory'}):
category_name = category.text
keyword = Keyword.objects.get_or_create(space=self.request.space, name=category_name)
if len(keyword):
recipe.keywords.add(keyword[0])
step = Step.objects.create(
instruction='',
space=self.request.space,
show_ingredients_table=self.request.user.userpreference.show_step_ingredients,
)
ingredient_parser = IngredientParser(self.request, True)
ingredients = file.find("ul", {"class": "ing"})
self.get_ingredients_recursive(step, ingredients, ingredient_parser)
instructions = file.find("div", {"class": "instructions"})
if isinstance(instructions, Tag):
for instruction in instructions.children:
if not isinstance(instruction, Tag) or instruction.text == "":
continue
if instruction.name == "h3":
if step.instruction:
step.save()
recipe.steps.add(step)
step = Step.objects.create(
instruction='',
space=self.request.space,
)
step.name = instruction.text.strip()[:128]
else:
if instruction.name == "div":
for instruction_step in instruction.children:
for br in instruction_step.find_all("br"):
br.replace_with("\n")
step.instruction += instruction_step.text.strip() + ' \n\n'
notes = file.find("div", {"class": "modifications"})
if notes:
for n in notes.children:
if n.text == "":
continue
if n.name == "h3":
step.instruction += f'*{n.text.strip()}:* \n\n'
else:
for br in n.find_all("br"):
br.replace_with("\n")
step.instruction += '*' + n.text.strip() + '* \n\n'
description = ''
try:
description = file.find("div", {"id": "description"}).text.strip()
except AttributeError:
pass
if len(description) <= 512:
recipe.description = description
else:
recipe.description = description[:480] + ' ... (full description below)'
step.instruction += '*Description:* \n\n*' + description + '* \n\n'
step.save()
recipe.steps.add(step)
# import the Primary recipe image that is stored in the Zip
try:
image_path = file.find("img").get("src")
image_filename = image_path.split("\\")[1]
for f in self.import_zip.filelist:
zip_file_name = Path(f.filename).name
if image_filename == zip_file_name:
image_file = self.import_zip.read(f)
image_bytes = BytesIO(image_file)
self.import_recipe_image(recipe, image_bytes, filetype='.jpeg')
break
except Exception as e:
print(recipe.name, ': failed to import image ', str(e))
recipe.save()
return recipe
def get_files_from_recipes(self, recipes, el, cookie):
raise NotImplementedError('Method not implemented in storage integration')
def get_file_from_recipe(self, recipe):
raise NotImplementedError('Method not implemented in storage integration')

View File

@@ -153,6 +153,19 @@ class Integration:
il.total_recipes = len(new_file_list)
file_list = new_file_list
if isinstance(self, cookbook.integration.gourmet.Gourmet):
self.import_zip = import_zip
new_file_list = []
for file in file_list:
if file.file_size == 0:
next
if file.filename.startswith("index.htm"):
next
if file.filename.endswith(".htm"):
new_file_list += self.split_recipe_file(BytesIO(import_zip.read(file.filename)))
il.total_recipes = len(new_file_list)
file_list = new_file_list
for z in file_list:
try:
if not hasattr(z, 'filename') or isinstance(z, Tag):

View File

@@ -72,14 +72,14 @@ class Mealie(Integration):
)
recipe.steps.add(step)
if 'recipe_yield' in recipe_json:
if 'recipe_yield' in recipe_json and recipe_json['recipe_yield'] is not None:
recipe.servings = parse_servings(recipe_json['recipe_yield'])
recipe.servings_text = parse_servings_text(recipe_json['recipe_yield'])
if 'total_time' in recipe_json and recipe_json['total_time'] is not None:
recipe.working_time = parse_time(recipe_json['total_time'])
if 'org_url' in recipe_json:
if 'org_url' in recipe_json and recipe_json['org_url'] is not None:
recipe.source_url = recipe_json['org_url']
recipe.save()

View File

@@ -60,20 +60,20 @@ class NextcloudCookbook(Integration):
step = Step.objects.create(
instruction=s, space=self.request.space, show_ingredients_table=self.request.user.userpreference.show_step_ingredients,
)
if not ingredients_added:
if len(recipe_json['description'].strip()) > 500:
step.instruction = recipe_json['description'].strip() + '\n\n' + step.instruction
ingredients_added = True
ingredient_parser = IngredientParser(self.request, True)
ingredient_parser = IngredientParser(self.request, True)
if ingredients_added == False:
for ingredient in recipe_json['recipeIngredient']:
amount, unit, food, note = ingredient_parser.parse(ingredient)
f = ingredient_parser.get_food(food)
u = ingredient_parser.get_unit(unit)
step.ingredients.add(Ingredient.objects.create(
food=f, unit=u, amount=amount, note=note, original_text=ingredient, space=self.request.space,
))
ingredients_added = True
if ingredient.startswith('##'):
subheader = ingredient.replace('##', '', 1)
step.ingredients.add(Ingredient.objects.create(note=subheader, is_header=True, no_amount=True, space=self.request.space))
else:
amount, unit, food, note = ingredient_parser.parse(ingredient)
f = ingredient_parser.get_food(food)
u = ingredient_parser.get_unit(unit)
step.ingredients.add(Ingredient.objects.create(
food=f, unit=u, amount=amount, note=note, original_text=ingredient, space=self.request.space,))
recipe.steps.add(step)
if 'nutrition' in recipe_json:

View File

@@ -6,8 +6,8 @@ from gettext import gettext as _
from io import BytesIO
import requests
import validators
from cookbook.helper.HelperFunctions import validate_import_url
from cookbook.helper.ingredient_parser import IngredientParser
from cookbook.helper.recipe_url_import import parse_servings, parse_servings_text
from cookbook.integration.integration import Integration
@@ -84,13 +84,22 @@ class Paprika(Integration):
recipe.steps.add(step)
# Paprika exports can have images in either of image_url, or photo_data.
# If a user takes an image himself, only photo_data will be set.
# If a user imports an image, both will be set. But the photo_data will be a center-cropped square resized version, so the image_url is preferred.
# Try to download image if possible
try:
if recipe_json.get("image_url", None):
url = recipe_json.get("image_url", None)
if validators.url(url, public=True):
if validate_import_url(url):
response = requests.get(url)
self.import_recipe_image(recipe, BytesIO(response.content))
except Exception:
pass
# If no image downloaded, try to extract from photo_data
if not recipe.image:
if recipe_json.get("photo_data", None):
self.import_recipe_image(recipe, BytesIO(base64.b64decode(recipe_json['photo_data'])), filetype='.jpeg')

View File

@@ -1,9 +1,10 @@
from io import BytesIO
import requests
import validators
from cookbook.helper.HelperFunctions import validate_import_url
from cookbook.helper.ingredient_parser import IngredientParser
from cookbook.helper.recipe_url_import import parse_servings, parse_servings_text, parse_time
from cookbook.integration.integration import Integration
from cookbook.models import Ingredient, Keyword, Recipe, Step
@@ -18,32 +19,38 @@ class Plantoeat(Integration):
tags = None
ingredients = []
directions = []
description = ''
fields = {}
for line in file.replace('\r', '').split('\n'):
if line.strip() != '':
if 'Title:' in line:
title = line.replace('Title:', '').replace('"', '').strip()
fields['name'] = line.replace('Title:', '').replace('"', '').strip()
if 'Description:' in line:
description = line.replace('Description:', '').strip()
if 'Source:' in line or 'Serves:' in line or 'Prep Time:' in line or 'Cook Time:' in line:
directions.append(line.strip() + '\n')
fields['description'] = line.replace('Description:', '').strip()
if 'Serves:' in line:
fields['servings'] = parse_servings(line.replace('Serves:', '').strip())
if 'Source:' in line:
fields['source_url'] = line.replace('Source:', '').strip()
if 'Photo Url:' in line:
image_url = line.replace('Photo Url:', '').strip()
if 'Prep Time:' in line:
fields['working_time'] = parse_time(line.replace('Prep Time:', '').strip())
if 'Cook Time:' in line:
fields['waiting_time'] = parse_time(line.replace('Cook Time:', '').strip())
if 'Tags:' in line:
tags = line.replace('Tags:', '').strip()
if ingredient_mode:
if len(line) > 2 and 'Instructions:' not in line:
ingredients.append(line.strip())
if direction_mode:
if len(line) > 2:
directions.append(line.strip() + '\n')
if 'Ingredients:' in line:
ingredient_mode = True
if 'Directions:' in line:
ingredient_mode = False
direction_mode = True
if ingredient_mode:
if len(line) > 2 and 'Ingredients:' not in line:
ingredients.append(line.strip())
if direction_mode:
if len(line) > 2:
directions.append(line.strip() + '\n')
recipe = Recipe.objects.create(name=title, description=description, created_by=self.request.user, internal=True, space=self.request.space)
recipe = Recipe.objects.create(**fields, created_by=self.request.user, internal=True, space=self.request.space)
step = Step.objects.create(
instruction='\n'.join(directions) + '\n\n', space=self.request.space, show_ingredients_table=self.request.user.userpreference.show_step_ingredients,
@@ -68,7 +75,7 @@ class Plantoeat(Integration):
if image_url:
try:
if validators.url(image_url, public=True):
if validate_import_url(image_url):
response = requests.get(image_url)
self.import_recipe_image(recipe, BytesIO(response.content))
except Exception as e:

View File

@@ -5,9 +5,10 @@ from io import BytesIO
from zipfile import ZipFile
import requests
import validators
from django.utils.translation import gettext as _
from cookbook.helper.HelperFunctions import validate_import_url
from cookbook.helper.image_processing import get_filetype
from cookbook.helper.ingredient_parser import IngredientParser
from cookbook.integration.integration import Integration
@@ -125,7 +126,7 @@ class RecetteTek(Integration):
else:
if file['originalPicture'] != '':
url = file['originalPicture']
if validators.url(url, public=True):
if validate_import_url(url):
response = requests.get(url)
if imghdr.what(BytesIO(response.content)) is not None:
self.import_recipe_image(recipe, BytesIO(response.content), filetype=get_filetype(file['originalPicture']))

View File

@@ -2,8 +2,8 @@ import json
from io import BytesIO
import requests
import validators
from cookbook.helper.HelperFunctions import validate_import_url
from cookbook.helper.ingredient_parser import IngredientParser
from cookbook.helper.recipe_url_import import parse_servings, parse_servings_text, parse_time
from cookbook.integration.integration import Integration
@@ -56,7 +56,7 @@ class RecipeSage(Integration):
if len(file['image']) > 0:
try:
url = file['image'][0]
if validators.url(url, public=True):
if validate_import_url(url):
response = requests.get(url)
self.import_recipe_image(recipe, BytesIO(response.content))
except Exception as e:

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-03-21 14:39+0100\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2023-11-28 11:03+0000\n"
"Last-Translator: Mahmoud Aljouhari <mapgohary@gmail.com>\n"
"Language-Team: Arabic <http://translate.tandoor.dev/projects/tandoor/recipes-"
@@ -247,33 +247,33 @@ msgstr ""
msgid "You have more users than allowed in your space."
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:304
#: .\cookbook\helper\recipe_url_import.py:310
#, fuzzy
#| msgid "Use fractions"
msgid "reverse rotation"
msgstr "إستخدم الكسور"
#: .\cookbook\helper\recipe_url_import.py:305
#: .\cookbook\helper\recipe_url_import.py:311
msgid "careful rotation"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:306
#: .\cookbook\helper\recipe_url_import.py:312
msgid "knead"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:307
#: .\cookbook\helper\recipe_url_import.py:313
msgid "thicken"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:308
#: .\cookbook\helper\recipe_url_import.py:314
msgid "warm up"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:309
#: .\cookbook\helper\recipe_url_import.py:315
msgid "ferment"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:310
#: .\cookbook\helper\recipe_url_import.py:316
msgid "sous-vide"
msgstr ""
@@ -391,7 +391,7 @@ msgstr "الغداء"
msgid "Dinner"
msgstr "العشاء"
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:920
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:919
msgid "Other"
msgstr "اخرى"
@@ -427,45 +427,45 @@ msgid ""
"upload."
msgstr ""
#: .\cookbook\models.py:455 .\cookbook\templates\search.html:7
#: .\cookbook\models.py:454 .\cookbook\templates\search.html:7
#: .\cookbook\templates\settings.html:18
msgid "Search"
msgstr "ابحث"
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:114
#: .\cookbook\models.py:455 .\cookbook\templates\base.html:114
#: .\cookbook\templates\meal_plan.html:7
msgid "Meal-Plan"
msgstr ""
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:454
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:459
msgid "Books"
msgstr ""
#: .\cookbook\models.py:458 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:455
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:460
msgid "Shopping"
msgstr "التسوق"
#: .\cookbook\models.py:753
#: .\cookbook\models.py:752
msgid " is part of a recipe step and cannot be deleted"
msgstr ""
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
#, fuzzy
#| msgid "Automations"
msgid "Nutrition"
msgstr "الأتمتات"
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
msgid "Allergen"
msgstr ""
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Price"
msgstr ""
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Goal"
msgstr ""
@@ -1828,14 +1828,14 @@ msgid "Media Serving"
msgstr ""
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:91
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:102 .\cookbook\templates\system.html:113
msgid "Warning"
msgstr ""
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:93
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:104 .\cookbook\templates\system.html:113
msgid "Ok"
msgstr ""
@@ -1850,7 +1850,8 @@ msgid ""
msgstr ""
#: .\cookbook\templates\system.html:55 .\cookbook\templates\system.html:70
#: .\cookbook\templates\system.html:83 .\cookbook\views\views.py:302
#: .\cookbook\templates\system.html:83 .\cookbook\templates\system.html:94
#: .\cookbook\views\views.py:303
msgid "Everything is fine!"
msgstr ""
@@ -1887,20 +1888,33 @@ msgid ""
msgstr ""
#: .\cookbook\templates\system.html:86
msgid "Allowed Hosts"
msgstr ""
#: .\cookbook\templates\system.html:90
msgid ""
"\n"
" 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.\n"
" "
msgstr ""
#: .\cookbook\templates\system.html:97
msgid "Database"
msgstr ""
#: .\cookbook\templates\system.html:89
#: .\cookbook\templates\system.html:100
msgid "Info"
msgstr ""
#: .\cookbook\templates\system.html:99 .\cookbook\templates\system.html:116
#: .\cookbook\templates\system.html:110 .\cookbook\templates\system.html:127
#, fuzzy
#| msgid "Use fractions"
msgid "Migrations"
msgstr "إستخدم الكسور"
#: .\cookbook\templates\system.html:105
#: .\cookbook\templates\system.html:116
msgid ""
"\n"
" Migrations should never fail!\n"
@@ -1912,19 +1926,19 @@ msgid ""
" "
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "False"
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "True"
msgstr ""
#: .\cookbook\templates\system.html:196
#: .\cookbook\templates\system.html:207
msgid "Hide"
msgstr ""
#: .\cookbook\templates\system.html:199
#: .\cookbook\templates\system.html:210
msgid "Show"
msgstr ""
@@ -1932,286 +1946,286 @@ msgstr ""
msgid "URL Import"
msgstr ""
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr ""
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr ""
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr ""
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr ""
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr ""
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr ""
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr ""
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr ""
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr ""
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr ""
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr ""
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr ""
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
msgstr ""
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr ""
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr ""
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr ""
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr ""
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
msgstr ""
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr ""
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr ""
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr ""
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr ""
@@ -2341,7 +2355,7 @@ msgid "There was an error importing this recipe!"
msgstr ""
#: .\cookbook\views\views.py:69 .\cookbook\views\views.py:177
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:418
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:423
msgid "This feature is not available in the demo version!"
msgstr "هذه الميزة غير موجودة في النسخة التجريبية!"
@@ -2378,78 +2392,82 @@ msgstr ""
msgid "Fuzzy search is not compatible with this search method!"
msgstr ""
#: .\cookbook\views\views.py:305
#: .\cookbook\views\views.py:306
#, python-format
msgid "PostgreSQL %(v)s is deprecated. Upgrade to a fully supported version!"
msgstr ""
#: .\cookbook\views\views.py:308
#: .\cookbook\views\views.py:309
#, python-format
msgid "You are running PostgreSQL %(v1)s. PostgreSQL %(v2)s is recommended"
msgstr ""
#: .\cookbook\views\views.py:312
#: .\cookbook\views\views.py:313
msgid "Unable to determine PostgreSQL version."
msgstr ""
#: .\cookbook\views\views.py:317
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 ""
#: .\cookbook\views\views.py:355
#: .\cookbook\views\views.py:360
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 ""
#: .\cookbook\views\views.py:364
#: .\cookbook\views\views.py:369
msgid "Passwords dont match!"
msgstr ""
#: .\cookbook\views\views.py:372
#: .\cookbook\views\views.py:377
msgid "User has been created, please login!"
msgstr ""
#: .\cookbook\views\views.py:388
#: .\cookbook\views\views.py:393
msgid "Malformed Invite Link supplied!"
msgstr ""
#: .\cookbook\views\views.py:405
#: .\cookbook\views\views.py:410
msgid "Successfully joined space."
msgstr ""
#: .\cookbook\views\views.py:411
#: .\cookbook\views\views.py:416
msgid "Invite Link not valid or already used!"
msgstr ""
#: .\cookbook\views\views.py:427
#: .\cookbook\views\views.py:432
msgid ""
"Reporting share links is not enabled for this instance. Please notify the "
"page administrator to report problems."
msgstr ""
#: .\cookbook\views\views.py:432
#: .\cookbook\views\views.py:437
msgid ""
"Recipe sharing link has been disabled! For additional information please "
"contact the page administrator."
msgstr ""
#: .\cookbook\views\views.py:446
#: .\cookbook\views\views.py:451
msgid "Manage recipes, shopping list, meal plans and more."
msgstr ""
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "Plan"
msgstr ""
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "View your meal Plan"
msgstr ""
#: .\cookbook\views\views.py:454
#: .\cookbook\views\views.py:459
msgid "View your cookbooks"
msgstr ""
#: .\cookbook\views\views.py:455
#: .\cookbook\views\views.py:460
#, fuzzy
#| msgid "Users with whom to share shopping lists."
msgid "View your shopping lists"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-03-21 14:39+0100\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2023-04-12 11:55+0000\n"
"Last-Translator: noxonad <noxonad@proton.me>\n"
"Language-Team: Bulgarian <http://translate.tandoor.dev/projects/tandoor/"
@@ -277,33 +277,33 @@ msgid "You have more users than allowed in your space."
msgstr ""
"Имате повече потребители, отколкото е позволено във вашето пространство."
#: .\cookbook\helper\recipe_url_import.py:304
#: .\cookbook\helper\recipe_url_import.py:310
#, fuzzy
#| msgid "Use fractions"
msgid "reverse rotation"
msgstr "Използвайте дроби"
#: .\cookbook\helper\recipe_url_import.py:305
#: .\cookbook\helper\recipe_url_import.py:311
msgid "careful rotation"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:306
#: .\cookbook\helper\recipe_url_import.py:312
msgid "knead"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:307
#: .\cookbook\helper\recipe_url_import.py:313
msgid "thicken"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:308
#: .\cookbook\helper\recipe_url_import.py:314
msgid "warm up"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:309
#: .\cookbook\helper\recipe_url_import.py:315
msgid "ferment"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:310
#: .\cookbook\helper\recipe_url_import.py:316
msgid "sous-vide"
msgstr ""
@@ -427,7 +427,7 @@ msgstr "Обяд"
msgid "Dinner"
msgstr "Вечеря"
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:920
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:919
msgid "Other"
msgstr "Друго"
@@ -465,47 +465,47 @@ msgstr ""
"Максимално място за съхранение на файлове в MB. 0 за неограничено, -1 за "
"деактивиране на качването на файлове."
#: .\cookbook\models.py:455 .\cookbook\templates\search.html:7
#: .\cookbook\models.py:454 .\cookbook\templates\search.html:7
#: .\cookbook\templates\settings.html:18
msgid "Search"
msgstr "Търсене"
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:114
#: .\cookbook\models.py:455 .\cookbook\templates\base.html:114
#: .\cookbook\templates\meal_plan.html:7
msgid "Meal-Plan"
msgstr "План на хранене"
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:454
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:459
msgid "Books"
msgstr "Книги"
#: .\cookbook\models.py:458 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:455
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:460
msgid "Shopping"
msgstr "Пазаруване"
#: .\cookbook\models.py:753
#: .\cookbook\models.py:752
msgid " is part of a recipe step and cannot be deleted"
msgstr " е част от стъпка от рецептата и не може да бъде изтрита"
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
#, fuzzy
#| msgid "Automations"
msgid "Nutrition"
msgstr "Автоматики"
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
#, fuzzy
#| msgid "Merge"
msgid "Allergen"
msgstr "Обединяване"
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Price"
msgstr ""
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Goal"
msgstr ""
@@ -2092,14 +2092,14 @@ msgid "Media Serving"
msgstr "Обслужване на медии"
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:91
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:102 .\cookbook\templates\system.html:113
msgid "Warning"
msgstr "Внимание"
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:93
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:104 .\cookbook\templates\system.html:113
msgid "Ok"
msgstr "ОК"
@@ -2121,7 +2121,8 @@ msgstr ""
" "
#: .\cookbook\templates\system.html:55 .\cookbook\templates\system.html:70
#: .\cookbook\templates\system.html:83 .\cookbook\views\views.py:302
#: .\cookbook\templates\system.html:83 .\cookbook\templates\system.html:94
#: .\cookbook\views\views.py:303
msgid "Everything is fine!"
msgstr "Всичко е наред!"
@@ -2175,20 +2176,33 @@ msgstr ""
" "
#: .\cookbook\templates\system.html:86
msgid "Allowed Hosts"
msgstr ""
#: .\cookbook\templates\system.html:90
msgid ""
"\n"
" 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.\n"
" "
msgstr ""
#: .\cookbook\templates\system.html:97
msgid "Database"
msgstr "База данни"
#: .\cookbook\templates\system.html:89
#: .\cookbook\templates\system.html:100
msgid "Info"
msgstr "Информация"
#: .\cookbook\templates\system.html:99 .\cookbook\templates\system.html:116
#: .\cookbook\templates\system.html:110 .\cookbook\templates\system.html:127
#, fuzzy
#| msgid "Use fractions"
msgid "Migrations"
msgstr "Използвайте дроби"
#: .\cookbook\templates\system.html:105
#: .\cookbook\templates\system.html:116
msgid ""
"\n"
" Migrations should never fail!\n"
@@ -2200,19 +2214,19 @@ msgid ""
" "
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "False"
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "True"
msgstr ""
#: .\cookbook\templates\system.html:196
#: .\cookbook\templates\system.html:207
msgid "Hide"
msgstr ""
#: .\cookbook\templates\system.html:199
#: .\cookbook\templates\system.html:210
#, fuzzy
#| msgid "Show Log"
msgid "Show"
@@ -2222,81 +2236,81 @@ msgstr "Покажи дневник"
msgid "URL Import"
msgstr "Импортиране на URL"
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr "Параметърът updated_at е форматиран неправилно"
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr "Не съществува {self.basename} с идентификатор {pk}"
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr "Не може да се слее със същия обект!"
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr "Не съществува {self.basename} с идентификатор {target}"
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr "Не може да се слее с дъщерен обект!"
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr "{source.name} беше обединен успешно с {target.name}"
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr "Възникна грешка при опит за сливане на {source.name} с {target.name}"
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr "{child.name} беше преместен успешно в основния."
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr "Възникна грешка при опит за преместване "
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr "Не може да премести обект към себе си!"
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr "Не съществува {self.basename} с идентификатор {parent}"
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr "{child.name} беше преместен успешно в родител {parent.name}"
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr "{obj.name} беше премахнат от списъка за пазаруване."
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr "{obj.name} беше добавен към списъка за пазаруване."
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\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."
@@ -2304,17 +2318,17 @@ msgstr ""
"Идентификатор на рецептата, част от която е стъпка. За параметър за "
"многократно повторение."
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
"Идентификатор на рецептата, част от която е стъпка. За параметър за "
"многократно повторение."
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr "Низът на заявката съответства (размито) спрямо името на обекта."
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
@@ -2322,7 +2336,7 @@ msgstr ""
"Низът на заявката съвпада (размито) с името на рецептата. В бъдеще също и "
"пълнотекстово търсене."
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
@@ -2330,69 +2344,69 @@ msgstr ""
"Идентификатор на ключовата дума, която рецептата трябва да има. За параметър "
"за многократно повторение. Еквивалентно на keywords_or"
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
"Идентификатори на ключови думи, повторете за няколко. Връща рецепти с някоя "
"от ключовите думи"
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
"Идентификатори на ключови думи, повторете за няколко. Връща рецепти с всички "
"ключови думи."
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
"Идентификатори на ключови думи, повторете за няколко. Изключва рецепти с "
"някоя от ключовите думи."
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
"Идентификатори на ключови думи, повторете за няколко. Изключва рецепти с "
"всички ключови думи."
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
"Идентификация на храната, която рецептата трябва да има. За параметър за "
"многократно повторение."
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
"Идентификатори на храни, повторете за няколко. Връща рецепти с някоя от "
"храните"
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
"Идентификатори на храни, повторете за няколко. Връща рецептите с всички "
"храни."
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
"Идентификатори на храни, повторете за няколко. Изключва рецепти с някоя от "
"храните."
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
"Идентификатори на храни, повторете за няколко. Изключва рецепти с всички "
"храни."
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr "Идентификатор на единицата, която рецептата трябва да има."
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
@@ -2400,50 +2414,50 @@ msgstr ""
"Оценка на рецептата трябва да има или по-висока. [0 - 5] Отрицателна "
"стойност филтрира оценка по-малка от."
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
"Идентификатор на книгата, в която трябва да е рецепта. За параметър за "
"многократно повторение."
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
"Идентификационен № на книги, повторете за няколко. Връща рецепти с някоя от "
"книгите"
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
"Идентификационен № на книги, повторете за няколко. Връща рецептите с всички "
"книги."
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
"Идентификационен № на книги, повторете за няколко. Изключва рецептите с "
"някоя от книгите."
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
"Идентификационен № на книги, повторете за няколко. Изключва рецептите от "
"всички книги."
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr "Ако трябва да се върнат само вътрешни рецепти. [вярно/<b>невярно</b>]"
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr "Връща резултатите в произволен ред. [вярно/<b>невярно</b>]"
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
"Първо връща нови резултати в резултатите от търсенето. [вярно/<b>невярно</b>]"
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
@@ -2451,7 +2465,7 @@ msgstr ""
"Филтрирайте рецепти, приготвени X пъти или повече. Отрицателните стойности "
"връщат приготвени по-малко от X пъти"
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
@@ -2459,7 +2473,7 @@ msgstr ""
"Филтрирайте последно приготвените рецепти на или след ГГГГ-ММ-ДД. "
"Предварително филтрира на или преди дата."
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
@@ -2467,7 +2481,7 @@ msgstr ""
"Филтрирайте рецептите, създадени на или след ГГГГ-ММ-ДД. Предварително "
"филтрира на или преди дата."
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
@@ -2475,7 +2489,7 @@ msgstr ""
"Филтрирайте рецептите, актуализирани на или след ГГГГ-ММ-ДД. Предварително "
"филтрира на или преди дата."
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
@@ -2483,13 +2497,13 @@ msgstr ""
"Филтрирането на рецептите последно разглеждани на или след ГГГГ-ММ-ДД. "
"Предварително филтрира на или преди дата."
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
"Филтрирайте рецепти, които могат да се приготвят с храна в наличност. [вярно/"
"<b>невярно</b>]"
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
@@ -2497,7 +2511,7 @@ msgstr ""
"Връща записа в списъка за пазаруване с първичен ключ на идентификатора. "
"Разрешени са множество стойности."
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
#, fuzzy
#| msgid ""
#| "Filter shopping list entries on checked. [true, false, both, <b>recent</"
@@ -2511,17 +2525,17 @@ msgstr ""
"и двете, <b>скорошни</b>]<br> - скорошни включва неотметнати елементи и "
"наскоро завършени елементи."
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
"Връща записите в списъка за пазаруване, сортирани по реда на категории "
"супермаркети."
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
#, fuzzy
#| msgid ""
#| "Returns the shopping list entry with a primary key of id. Multiple "
@@ -2533,45 +2547,45 @@ msgstr ""
"Връща записа в списъка за пазаруване с първичен ключ на идентификатора. "
"Разрешени са множество стойности."
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr "Няма нищо за правене."
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr "Връзката е отказана."
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr "Лоша URL схема."
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
msgstr "Не бяха намерени полезни данни."
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr "Импортирането не е реализирано за този доставчик"
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr "Тази функция все още не е налична в хостваната версия на tandoor!"
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr "Синхронизирането успешно!"
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr "Грешка при синхронизирането с хранилището"
@@ -2709,7 +2723,7 @@ msgid "There was an error importing this recipe!"
msgstr "При импортирането на тази рецепта възникна грешка!"
#: .\cookbook\views\views.py:69 .\cookbook\views\views.py:177
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:418
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:423
msgid "This feature is not available in the demo version!"
msgstr "Тази функция не е налична в демо версията!"
@@ -2752,17 +2766,21 @@ msgstr ""
msgid "Fuzzy search is not compatible with this search method!"
msgstr "Размитото търсене не е съвместимо с този метод за търсене!"
#: .\cookbook\views\views.py:305
#: .\cookbook\views\views.py:306
#, python-format
msgid "PostgreSQL %(v)s is deprecated. Upgrade to a fully supported version!"
msgstr ""
#: .\cookbook\views\views.py:308
#: .\cookbook\views\views.py:309
#, python-format
msgid "You are running PostgreSQL %(v1)s. PostgreSQL %(v2)s is recommended"
msgstr ""
#: .\cookbook\views\views.py:312
#: .\cookbook\views\views.py:313
msgid "Unable to determine PostgreSQL version."
msgstr ""
#: .\cookbook\views\views.py:317
#, fuzzy
#| msgid ""
#| "\n"
@@ -2780,7 +2798,7 @@ msgstr ""
" функциите работят само с бази данни Postgres.\n"
" "
#: .\cookbook\views\views.py:355
#: .\cookbook\views\views.py:360
#, fuzzy
#| msgid ""
#| "The setup page can only be used to create the first user! If you have "
@@ -2796,27 +2814,27 @@ msgstr ""
"потребител, моля, вижте документацията на django за това как да нулирате "
"пароли."
#: .\cookbook\views\views.py:364
#: .\cookbook\views\views.py:369
msgid "Passwords dont match!"
msgstr "Паролите не съвпадат!"
#: .\cookbook\views\views.py:372
#: .\cookbook\views\views.py:377
msgid "User has been created, please login!"
msgstr "Потребителят е създаден, моля, влезте!"
#: .\cookbook\views\views.py:388
#: .\cookbook\views\views.py:393
msgid "Malformed Invite Link supplied!"
msgstr "Malformed връзка за покана е предоставена!"
#: .\cookbook\views\views.py:405
#: .\cookbook\views\views.py:410
msgid "Successfully joined space."
msgstr "Успешно присъединяване към пространството."
#: .\cookbook\views\views.py:411
#: .\cookbook\views\views.py:416
msgid "Invite Link not valid or already used!"
msgstr "Връзката за покана не е валидна или вече е използвана!"
#: .\cookbook\views\views.py:427
#: .\cookbook\views\views.py:432
msgid ""
"Reporting share links is not enabled for this instance. Please notify the "
"page administrator to report problems."
@@ -2824,7 +2842,7 @@ msgstr ""
"Отчитането на връзките за споделяне не е активирано за тази инстанция. Моля, "
"уведомете администратора на страницата, за да съобщи за проблеми."
#: .\cookbook\views\views.py:432
#: .\cookbook\views\views.py:437
msgid ""
"Recipe sharing link has been disabled! For additional information please "
"contact the page administrator."
@@ -2832,25 +2850,25 @@ msgstr ""
"Връзката за споделяне на рецепти е деактивирана! За допълнителна информация, "
"моля свържете се с администратора на страницата."
#: .\cookbook\views\views.py:446
#: .\cookbook\views\views.py:451
msgid "Manage recipes, shopping list, meal plans and more."
msgstr ""
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
#, fuzzy
#| msgid "Meal-Plan"
msgid "Plan"
msgstr "План на хранене"
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "View your meal Plan"
msgstr ""
#: .\cookbook\views\views.py:454
#: .\cookbook\views\views.py:459
msgid "View your cookbooks"
msgstr ""
#: .\cookbook\views\views.py:455
#: .\cookbook\views\views.py:460
#, fuzzy
#| msgid "Users with whom to share shopping lists."
msgid "View your shopping lists"

View File

@@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-03-21 14:39+0100\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2024-03-08 23:19+0000\n"
"Last-Translator: Enric Bergadà <enric@bergada.cat>\n"
"Language-Team: Catalan <http://translate.tandoor.dev/projects/tandoor/"
@@ -280,33 +280,33 @@ msgstr "Has arribat al nombre màxim de receptes per al vostre espai."
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:304
#: .\cookbook\helper\recipe_url_import.py:310
#, fuzzy
#| msgid "Use fractions"
msgid "reverse rotation"
msgstr "Utilitza fraccions"
#: .\cookbook\helper\recipe_url_import.py:305
#: .\cookbook\helper\recipe_url_import.py:311
msgid "careful rotation"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:306
#: .\cookbook\helper\recipe_url_import.py:312
msgid "knead"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:307
#: .\cookbook\helper\recipe_url_import.py:313
msgid "thicken"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:308
#: .\cookbook\helper\recipe_url_import.py:314
msgid "warm up"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:309
#: .\cookbook\helper\recipe_url_import.py:315
msgid "ferment"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:310
#: .\cookbook\helper\recipe_url_import.py:316
msgid "sous-vide"
msgstr ""
@@ -430,7 +430,7 @@ msgstr "Dinar"
msgid "Dinner"
msgstr "Sopar"
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:920
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:919
msgid "Other"
msgstr "Un altre"
@@ -470,45 +470,45 @@ msgstr ""
"Emmagatzematge màxim de fitxers per espai en MB. 0 per il·limitat, -1 per "
"desactivar la càrrega de fitxers."
#: .\cookbook\models.py:455 .\cookbook\templates\search.html:7
#: .\cookbook\models.py:454 .\cookbook\templates\search.html:7
#: .\cookbook\templates\settings.html:18
msgid "Search"
msgstr "Cerca"
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:114
#: .\cookbook\models.py:455 .\cookbook\templates\base.html:114
#: .\cookbook\templates\meal_plan.html:7
msgid "Meal-Plan"
msgstr "Plans de Menjar"
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:454
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:459
msgid "Books"
msgstr "Receptes"
#: .\cookbook\models.py:458 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:455
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:460
msgid "Shopping"
msgstr "Compres"
#: .\cookbook\models.py:753
#: .\cookbook\models.py:752
msgid " is part of a recipe step and cannot be deleted"
msgstr " forma part d'un pas de recepta i no es pot suprimir"
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
msgid "Nutrition"
msgstr "Nutrició"
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
#, fuzzy
#| msgid "Merge"
msgid "Allergen"
msgstr "Combina"
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Price"
msgstr ""
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Goal"
msgstr ""
@@ -1985,14 +1985,14 @@ msgid "Media Serving"
msgstr "Servei Mitjans"
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:91
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:102 .\cookbook\templates\system.html:113
msgid "Warning"
msgstr "Advertència"
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:93
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:104 .\cookbook\templates\system.html:113
msgid "Ok"
msgstr "Ok"
@@ -2013,7 +2013,8 @@ msgstr ""
"la vostra instal·lació."
#: .\cookbook\templates\system.html:55 .\cookbook\templates\system.html:70
#: .\cookbook\templates\system.html:83 .\cookbook\views\views.py:302
#: .\cookbook\templates\system.html:83 .\cookbook\templates\system.html:94
#: .\cookbook\views\views.py:303
msgid "Everything is fine!"
msgstr "Tot està bé!"
@@ -2062,20 +2063,33 @@ msgstr ""
"<code>DEBUG = 0</code> al fitxer de configuració<code> .env.</code>"
#: .\cookbook\templates\system.html:86
msgid "Allowed Hosts"
msgstr ""
#: .\cookbook\templates\system.html:90
msgid ""
"\n"
" 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.\n"
" "
msgstr ""
#: .\cookbook\templates\system.html:97
msgid "Database"
msgstr "Base de Dades"
#: .\cookbook\templates\system.html:89
#: .\cookbook\templates\system.html:100
msgid "Info"
msgstr "Info"
#: .\cookbook\templates\system.html:99 .\cookbook\templates\system.html:116
#: .\cookbook\templates\system.html:110 .\cookbook\templates\system.html:127
#, fuzzy
#| msgid "Use fractions"
msgid "Migrations"
msgstr "Utilitza fraccions"
#: .\cookbook\templates\system.html:105
#: .\cookbook\templates\system.html:116
msgid ""
"\n"
" Migrations should never fail!\n"
@@ -2087,19 +2101,19 @@ msgid ""
" "
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "False"
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "True"
msgstr ""
#: .\cookbook\templates\system.html:196
#: .\cookbook\templates\system.html:207
msgid "Hide"
msgstr ""
#: .\cookbook\templates\system.html:199
#: .\cookbook\templates\system.html:210
#, fuzzy
#| msgid "Show Log"
msgid "Show"
@@ -2109,95 +2123,95 @@ msgstr "Mostra Logs"
msgid "URL Import"
msgstr "Importació dURL"
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr "El paràmetre updated_at té un format incorrecte"
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr "No {self.basename} amb id {pk} existeix"
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr "No es pot fusionar amb el mateix objecte!"
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr "No {self.basename} amb id {target} existeix"
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr "No es pot combinar amb l'objecte fill!"
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr "{source.name} s'ha fusionat amb {target.name}"
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr "Error en intentar combinar {source.name} amb {target.name}"
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr "{child.name} s'ha mogut correctament a l'arrel."
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr "Error a l'intentar moure "
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr "No es pot moure un objecte cap a si mateix!"
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr "No existeix {self.basename} amb identificador {parent}"
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr "{child.name} s'ha mogut correctament al pare {parent.name}"
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr "{obj.name} eliminat de la llista de la compra."
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr "Afegit {obj.name} a la llista de la compra."
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\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."
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr "ID de recepta forma part d'un pas. Per a múltiples repeteix paràmetre."
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr "La cadena de consulta coincideix (difusa) amb el nom de l'objecte."
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
@@ -2205,7 +2219,7 @@ msgstr ""
"Cadena de consulta coincideix (difusa) amb el nom de la recepta. En el futur "
"també cerca text complet."
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
#, fuzzy
#| msgid "ID of keyword a recipe should have. For multiple repeat parameter."
msgid ""
@@ -2215,193 +2229,193 @@ msgstr ""
"ID de la paraula clau que hauria de tenir una recepta. Per a múltiples "
"repeteix paràmetre."
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
"ID d'aliments que ha de tenir una recepta. Per a múltiples repeteix "
"paràmetres."
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr "ID d'unitat que hauria de tenir una recepta."
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
"ID del llibre hauria d'haver-hi en una recepta. Per al paràmetre de "
"repetició múltiple."
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr "Res a fer."
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr "Connexió Refusada."
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
msgstr "No s'han trobat dades utilitzables."
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr "Importació no implementada en aquest proveïdor"
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr ""
"Aquesta funció encara no està disponible a la versió allotjada de tandoor!"
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr "Sincronització correcte"
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr "Error de sincronització amb emmagatzematge"
@@ -2542,7 +2556,7 @@ msgid "There was an error importing this recipe!"
msgstr "S'ha produït un error en importar la recepta!"
#: .\cookbook\views\views.py:69 .\cookbook\views\views.py:177
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:418
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:423
msgid "This feature is not available in the demo version!"
msgstr "Funció no està disponible a la versió de demostració!"
@@ -2585,17 +2599,21 @@ msgstr ""
msgid "Fuzzy search is not compatible with this search method!"
msgstr "Cerca difusa no és compatible amb aquest mètode de cerca!"
#: .\cookbook\views\views.py:305
#: .\cookbook\views\views.py:306
#, python-format
msgid "PostgreSQL %(v)s is deprecated. Upgrade to a fully supported version!"
msgstr ""
#: .\cookbook\views\views.py:308
#: .\cookbook\views\views.py:309
#, python-format
msgid "You are running PostgreSQL %(v1)s. PostgreSQL %(v2)s is recommended"
msgstr ""
#: .\cookbook\views\views.py:312
#: .\cookbook\views\views.py:313
msgid "Unable to determine PostgreSQL version."
msgstr ""
#: .\cookbook\views\views.py:317
#, fuzzy
#| msgid ""
#| "\n"
@@ -2612,7 +2630,7 @@ msgstr ""
"Això està bé, però no es recomana com alguns\n"
"les funcions només funcionen amb bases de dades postgres."
#: .\cookbook\views\views.py:355
#: .\cookbook\views\views.py:360
#, fuzzy
#| msgid ""
#| "The setup page can only be used to create the first user! If you have "
@@ -2627,27 +2645,27 @@ msgstr ""
"Si heu oblidat les vostres credencials de superusuari, consulteu la "
"documentació de django sobre com restablir les contrasenyes."
#: .\cookbook\views\views.py:364
#: .\cookbook\views\views.py:369
msgid "Passwords dont match!"
msgstr "Les contrasenyes no coincideixen!"
#: .\cookbook\views\views.py:372
#: .\cookbook\views\views.py:377
msgid "User has been created, please login!"
msgstr "L'usuari s'ha creat, si us plau inicieu la sessió!"
#: .\cookbook\views\views.py:388
#: .\cookbook\views\views.py:393
msgid "Malformed Invite Link supplied!"
msgstr "S'ha proporcionat un enllaç d'invitació mal format."
#: .\cookbook\views\views.py:405
#: .\cookbook\views\views.py:410
msgid "Successfully joined space."
msgstr "Unit correctament a l'espai."
#: .\cookbook\views\views.py:411
#: .\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."
#: .\cookbook\views\views.py:427
#: .\cookbook\views\views.py:432
msgid ""
"Reporting share links is not enabled for this instance. Please notify the "
"page administrator to report problems."
@@ -2655,7 +2673,7 @@ msgstr ""
"Notificació d'enllaços compartits no activada en aquesta instància. Aviseu "
"l'administrador per informar dels problemes."
#: .\cookbook\views\views.py:432
#: .\cookbook\views\views.py:437
msgid ""
"Recipe sharing link has been disabled! For additional information please "
"contact the page administrator."
@@ -2663,23 +2681,23 @@ msgstr ""
"L'enllaç per compartir receptes s'ha desactivat! Per obtenir informació "
"addicional, poseu-vos en contacte amb l'administrador."
#: .\cookbook\views\views.py:446
#: .\cookbook\views\views.py:451
msgid "Manage recipes, shopping list, meal plans and more."
msgstr ""
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "Plan"
msgstr "Pla"
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "View your meal Plan"
msgstr ""
#: .\cookbook\views\views.py:454
#: .\cookbook\views\views.py:459
msgid "View your cookbooks"
msgstr ""
#: .\cookbook\views\views.py:455
#: .\cookbook\views\views.py:460
#, fuzzy
#| msgid "New Shopping List"
msgid "View your shopping lists"

View File

@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-03-21 14:39+0100\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2024-01-09 12:07+0000\n"
"Last-Translator: Jan Kubošek <kuboja@outlook.cz>\n"
"Language-Team: Czech <http://translate.tandoor.dev/projects/tandoor/recipes-"
@@ -258,31 +258,31 @@ msgstr ""
msgid "You have more users than allowed in your space."
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:304
#: .\cookbook\helper\recipe_url_import.py:310
msgid "reverse rotation"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:305
#: .\cookbook\helper\recipe_url_import.py:311
msgid "careful rotation"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:306
#: .\cookbook\helper\recipe_url_import.py:312
msgid "knead"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:307
#: .\cookbook\helper\recipe_url_import.py:313
msgid "thicken"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:308
#: .\cookbook\helper\recipe_url_import.py:314
msgid "warm up"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:309
#: .\cookbook\helper\recipe_url_import.py:315
msgid "ferment"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:310
#: .\cookbook\helper\recipe_url_import.py:316
msgid "sous-vide"
msgstr ""
@@ -407,7 +407,7 @@ msgstr "Oběd"
msgid "Dinner"
msgstr "Večeře"
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:920
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:919
msgid "Other"
msgstr "Ostatní"
@@ -445,45 +445,45 @@ msgid ""
"upload."
msgstr ""
#: .\cookbook\models.py:455 .\cookbook\templates\search.html:7
#: .\cookbook\models.py:454 .\cookbook\templates\search.html:7
#: .\cookbook\templates\settings.html:18
msgid "Search"
msgstr "Vyhledat"
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:114
#: .\cookbook\models.py:455 .\cookbook\templates\base.html:114
#: .\cookbook\templates\meal_plan.html:7
msgid "Meal-Plan"
msgstr "Jídelníček"
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:454
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:459
msgid "Books"
msgstr "Kuchařky"
#: .\cookbook\models.py:458 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:455
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:460
msgid "Shopping"
msgstr "Nákupy"
#: .\cookbook\models.py:753
#: .\cookbook\models.py:752
msgid " is part of a recipe step and cannot be deleted"
msgstr ""
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
msgid "Nutrition"
msgstr "Výživové hodnoty"
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
#, fuzzy
#| msgid "Merge"
msgid "Allergen"
msgstr "Sloučit"
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Price"
msgstr ""
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Goal"
msgstr ""
@@ -1974,14 +1974,14 @@ msgid "Media Serving"
msgstr "Mediální služby"
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:91
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:102 .\cookbook\templates\system.html:113
msgid "Warning"
msgstr "Varování"
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:93
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:104 .\cookbook\templates\system.html:113
msgid "Ok"
msgstr "OK"
@@ -2003,7 +2003,8 @@ msgstr ""
" "
#: .\cookbook\templates\system.html:55 .\cookbook\templates\system.html:70
#: .\cookbook\templates\system.html:83 .\cookbook\views\views.py:302
#: .\cookbook\templates\system.html:83 .\cookbook\templates\system.html:94
#: .\cookbook\views\views.py:303
msgid "Everything is fine!"
msgstr "Vše je v pořádku!"
@@ -2055,18 +2056,31 @@ msgstr ""
" "
#: .\cookbook\templates\system.html:86
msgid "Allowed Hosts"
msgstr ""
#: .\cookbook\templates\system.html:90
msgid ""
"\n"
" 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.\n"
" "
msgstr ""
#: .\cookbook\templates\system.html:97
msgid "Database"
msgstr "Databáze"
#: .\cookbook\templates\system.html:89
#: .\cookbook\templates\system.html:100
msgid "Info"
msgstr "Informace"
#: .\cookbook\templates\system.html:99 .\cookbook\templates\system.html:116
#: .\cookbook\templates\system.html:110 .\cookbook\templates\system.html:127
msgid "Migrations"
msgstr ""
#: .\cookbook\templates\system.html:105
#: .\cookbook\templates\system.html:116
msgid ""
"\n"
" Migrations should never fail!\n"
@@ -2078,19 +2092,19 @@ msgid ""
" "
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "False"
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "True"
msgstr ""
#: .\cookbook\templates\system.html:196
#: .\cookbook\templates\system.html:207
msgid "Hide"
msgstr ""
#: .\cookbook\templates\system.html:199
#: .\cookbook\templates\system.html:210
#, fuzzy
#| msgid "Show help"
msgid "Show"
@@ -2100,282 +2114,282 @@ msgstr "Zobrazit nápovědu"
msgid "URL Import"
msgstr "Import URL"
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
#, fuzzy
#| msgid "Parameter filter_list incorrectly formatted"
msgid "Parameter updated_at incorrectly formatted"
msgstr "Parametr filter_list v nesprávném formátu"
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr ""
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr "Nelze sloučit se stejným objektem!"
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr ""
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
#, fuzzy
#| msgid "Cannot merge with the same object!"
msgid "Cannot merge with child object!"
msgstr "Nelze sloučit se stejným objektem!"
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr ""
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr ""
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr ""
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr ""
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr ""
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr ""
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr ""
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
msgstr ""
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr ""
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr ""
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr ""
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr ""
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
#, fuzzy
#| msgid "The requested page could not be found."
msgid "No usable data could be found."
msgstr "Požadovaná stránka nebyla nalezena."
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr "Import není pro tohoto poskytovatele implementován!"
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
#, fuzzy
@@ -2383,11 +2397,11 @@ msgstr "Import není pro tohoto poskytovatele implementován!"
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr "Tato funkce není dostupná v demo verzi!"
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr "Synchronizace proběhla úspěšně!"
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr "Chyba synchronizace s úložištěm"
@@ -2528,7 +2542,7 @@ msgid "There was an error importing this recipe!"
msgstr "Nastala chyba při importu tohoto receptu!"
#: .\cookbook\views\views.py:69 .\cookbook\views\views.py:177
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:418
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:423
msgid "This feature is not available in the demo version!"
msgstr "Tato funkce není dostupná v demo verzi!"
@@ -2565,17 +2579,21 @@ msgstr ""
msgid "Fuzzy search is not compatible with this search method!"
msgstr ""
#: .\cookbook\views\views.py:305
#: .\cookbook\views\views.py:306
#, python-format
msgid "PostgreSQL %(v)s is deprecated. Upgrade to a fully supported version!"
msgstr ""
#: .\cookbook\views\views.py:308
#: .\cookbook\views\views.py:309
#, python-format
msgid "You are running PostgreSQL %(v1)s. PostgreSQL %(v2)s is recommended"
msgstr ""
#: .\cookbook\views\views.py:312
#: .\cookbook\views\views.py:313
msgid "Unable to determine PostgreSQL version."
msgstr ""
#: .\cookbook\views\views.py:317
#, fuzzy
#| msgid ""
#| "\n"
@@ -2593,7 +2611,7 @@ msgstr ""
" funkce pracují pouze s Postgree databází.\n"
" "
#: .\cookbook\views\views.py:355
#: .\cookbook\views\views.py:360
#, fuzzy
#| msgid ""
#| "The setup page can only be used to create the first user! If you have "
@@ -2608,55 +2626,55 @@ msgstr ""
"Pokud jste zapoměl(a) heslo superuživatele, prozkoumejte django dokumentaci "
"a postupujte podle návodu pro reset hesla."
#: .\cookbook\views\views.py:364
#: .\cookbook\views\views.py:369
msgid "Passwords dont match!"
msgstr "Hesla nesouhlasí!"
#: .\cookbook\views\views.py:372
#: .\cookbook\views\views.py:377
msgid "User has been created, please login!"
msgstr "Uživatel byl vytvořen, prosím přihlaste se!"
#: .\cookbook\views\views.py:388
#: .\cookbook\views\views.py:393
msgid "Malformed Invite Link supplied!"
msgstr "Vložena neplatná URL pozvánky!"
#: .\cookbook\views\views.py:405
#: .\cookbook\views\views.py:410
msgid "Successfully joined space."
msgstr ""
#: .\cookbook\views\views.py:411
#: .\cookbook\views\views.py:416
msgid "Invite Link not valid or already used!"
msgstr "Neplatná URL pozvánky, nebo se již používá!"
#: .\cookbook\views\views.py:427
#: .\cookbook\views\views.py:432
msgid ""
"Reporting share links is not enabled for this instance. Please notify the "
"page administrator to report problems."
msgstr ""
#: .\cookbook\views\views.py:432
#: .\cookbook\views\views.py:437
msgid ""
"Recipe sharing link has been disabled! For additional information please "
"contact the page administrator."
msgstr ""
#: .\cookbook\views\views.py:446
#: .\cookbook\views\views.py:451
msgid "Manage recipes, shopping list, meal plans and more."
msgstr ""
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "Plan"
msgstr "Plán"
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "View your meal Plan"
msgstr ""
#: .\cookbook\views\views.py:454
#: .\cookbook\views\views.py:459
msgid "View your cookbooks"
msgstr ""
#: .\cookbook\views\views.py:455
#: .\cookbook\views\views.py:460
#, fuzzy
#| msgid "Shopping Lists"
msgid "View your shopping lists"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-03-21 14:39+0100\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2023-04-12 11:55+0000\n"
"Last-Translator: noxonad <noxonad@proton.me>\n"
"Language-Team: Danish <http://translate.tandoor.dev/projects/tandoor/recipes-"
@@ -275,33 +275,33 @@ msgstr "Du har nået det maksimale antal opskrifter for dit rum."
msgid "You have more users than allowed in your space."
msgstr "Du har flere brugere end tilladt i dit rum."
#: .\cookbook\helper\recipe_url_import.py:304
#: .\cookbook\helper\recipe_url_import.py:310
#, fuzzy
#| msgid "Use fractions"
msgid "reverse rotation"
msgstr "Benyt brøker"
#: .\cookbook\helper\recipe_url_import.py:305
#: .\cookbook\helper\recipe_url_import.py:311
msgid "careful rotation"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:306
#: .\cookbook\helper\recipe_url_import.py:312
msgid "knead"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:307
#: .\cookbook\helper\recipe_url_import.py:313
msgid "thicken"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:308
#: .\cookbook\helper\recipe_url_import.py:314
msgid "warm up"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:309
#: .\cookbook\helper\recipe_url_import.py:315
msgid "ferment"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:310
#: .\cookbook\helper\recipe_url_import.py:316
msgid "sous-vide"
msgstr ""
@@ -425,7 +425,7 @@ msgstr "Frokost"
msgid "Dinner"
msgstr "Aftensmad"
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:920
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:919
msgid "Other"
msgstr "Andet"
@@ -463,47 +463,47 @@ msgstr ""
"Maksimal fil lager for rum i MB. 0 for ubegrænset, -1 for at slå upload af "
"filer fra."
#: .\cookbook\models.py:455 .\cookbook\templates\search.html:7
#: .\cookbook\models.py:454 .\cookbook\templates\search.html:7
#: .\cookbook\templates\settings.html:18
msgid "Search"
msgstr "Søg"
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:114
#: .\cookbook\models.py:455 .\cookbook\templates\base.html:114
#: .\cookbook\templates\meal_plan.html:7
msgid "Meal-Plan"
msgstr "Madplan"
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:454
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:459
msgid "Books"
msgstr "Bøger"
#: .\cookbook\models.py:458 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:455
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:460
msgid "Shopping"
msgstr "Indkøb"
#: .\cookbook\models.py:753
#: .\cookbook\models.py:752
msgid " is part of a recipe step and cannot be deleted"
msgstr " er del af et opskriftstrin og kan ikke slettes"
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
#, fuzzy
#| msgid "Automations"
msgid "Nutrition"
msgstr "Automationer"
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
#, fuzzy
#| msgid "Merge"
msgid "Allergen"
msgstr "Sammenflet"
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Price"
msgstr ""
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Goal"
msgstr ""
@@ -2084,14 +2084,14 @@ msgid "Media Serving"
msgstr "Medie servering"
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:91
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:102 .\cookbook\templates\system.html:113
msgid "Warning"
msgstr "Advarsel"
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:93
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:104 .\cookbook\templates\system.html:113
msgid "Ok"
msgstr "Ok"
@@ -2112,7 +2112,8 @@ msgstr ""
" "
#: .\cookbook\templates\system.html:55 .\cookbook\templates\system.html:70
#: .\cookbook\templates\system.html:83 .\cookbook\views\views.py:302
#: .\cookbook\templates\system.html:83 .\cookbook\templates\system.html:94
#: .\cookbook\views\views.py:303
msgid "Everything is fine!"
msgstr "Alt er fint!"
@@ -2163,20 +2164,33 @@ msgstr ""
" "
#: .\cookbook\templates\system.html:86
msgid "Allowed Hosts"
msgstr ""
#: .\cookbook\templates\system.html:90
msgid ""
"\n"
" 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.\n"
" "
msgstr ""
#: .\cookbook\templates\system.html:97
msgid "Database"
msgstr "Database"
#: .\cookbook\templates\system.html:89
#: .\cookbook\templates\system.html:100
msgid "Info"
msgstr "Information"
#: .\cookbook\templates\system.html:99 .\cookbook\templates\system.html:116
#: .\cookbook\templates\system.html:110 .\cookbook\templates\system.html:127
#, fuzzy
#| msgid "Use fractions"
msgid "Migrations"
msgstr "Benyt brøker"
#: .\cookbook\templates\system.html:105
#: .\cookbook\templates\system.html:116
msgid ""
"\n"
" Migrations should never fail!\n"
@@ -2188,19 +2202,19 @@ msgid ""
" "
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "False"
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "True"
msgstr ""
#: .\cookbook\templates\system.html:196
#: .\cookbook\templates\system.html:207
msgid "Hide"
msgstr ""
#: .\cookbook\templates\system.html:199
#: .\cookbook\templates\system.html:210
#, fuzzy
#| msgid "Show Log"
msgid "Show"
@@ -2210,96 +2224,96 @@ msgstr "Vis log"
msgid "URL Import"
msgstr "URL import"
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr "Parameter updated_at ikke formateret korrekt"
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr "Ingen {self.basename} med ID {pk} eksisterer"
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr "Kan ikke sammenflette med det samme objekt!"
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr "Ingen {self.basename} med ID {target} eksisterer"
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr "Kan ikke sammenflette med et objekt som er et barn!"
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr "{source.name} blev sammenflettet med {target.name}"
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
"Der opstod en fejl under sammenfletningen af {source.name} med {target.name}"
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr "{child.name} blev flyttet til roden."
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr "Der skete en fejl under flytningen "
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr "Kan ikke flytte et objekt til sig selv!"
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr "Ingen {self.basename} med ID {parent} eksisterer"
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr "{child.name} blev flyttet til forælder {parent.name}"
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr "{obj.name} blev fjernet fra indkøbslisten."
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr "{obj.name} blev tilføjet til indkøbslisten."
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\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 på den opskrift som et trin er del af. For flere, gentag parameter."
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr "ID på den opskrift som et trin er del af. For flere, gentag parameter."
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr "Søgningen matchede (fuzzy) mod objektets navn."
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
@@ -2307,7 +2321,7 @@ msgstr ""
"Søgningen matchede (fuzzy) mod opskriftens navn. I fremtiden også heltekst "
"søgning."
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
@@ -2315,64 +2329,64 @@ msgstr ""
"ID på nøgeord som opskriften skal have. For flere, gentag parameter. "
"Sammenligneligt med keywords_or"
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
"Nøgleord ID'er, gentag for flere. Returnerer opskrifter med bare et af "
"nøgleorderne"
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
"Nøgleord ID'er, gentag for flere. Returnerer opskrifter med alle "
"nøgleorderne."
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
"Nøgleord ID'er, gentag for flere. Ekskluderer opskrifter med bare et af "
"nøgleorderne."
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
"Nøgleord ID'er, gentag for flere. Ekskluderer opskrifter med alle "
"nøgleorderne."
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr "ID på mad en opskrift skal have. For flere, gentag parameter."
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
"Mad ID'er, gentag for flere. Returnerer mad med bare et af de angivne mad"
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
"Mad ID'er, gentag for flere. Returnerer opskrifter med alt det angivne mad."
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
"Mad ID'er, gentag for flere. Eksluderer opskrifter med bare et af det "
"angivne mad."
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
"Mad ID'er, gentag for flere. Eksluderer opskrifter med alt det angivne mad."
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr "ID på enhed en opskrift skal have."
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
@@ -2380,42 +2394,42 @@ msgstr ""
"Bedømmelse en opskrift mindst skal have. [0 - 5] Negative værdier filtrerer "
"opskrifter med mindre end det angivne."
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr "ID på bog en opskrift skal være i. For flere, gentag parameter."
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
"Bog ID'er, gentag for flere. Returnerer opskrifter med bare en af bøgerne"
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr "Bog ID'er, gentag for flere. Returnerer opskrifter med alle bøgerne."
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
"Bog ID'er, gentag for flere. Eksluderer opskrifter med bare en af bøgerne."
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr "Bog ID'er, gentag for flere. Ekskluderer opskrifter med alle bøgerne."
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr "Om kun interne opskrifter skal returneres. [true/<b>false</b>]"
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr "Returnerer resultaterne i tilfældig rækkefølge. [true/<b>false</b>]"
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
"Returnerer nye resultater først i søgeresultaterne. [true/<b>false</b>]"
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
@@ -2423,7 +2437,7 @@ msgstr ""
"Filtrer opskrifter tilberedt X gange eller flere. Negative værdier "
"returnerer tilberedt mindre end X gange"
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
@@ -2431,7 +2445,7 @@ msgstr ""
"Filtrer opskrifter sidst tilberedt på eller efter d. YYYY-MM-DD. Hvis datoen "
"starter med '-', filtrerer den i stedet på eller før dato."
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
@@ -2439,7 +2453,7 @@ msgstr ""
"Filtrer opskrifter oprettet på eller efter d. YYYY-MM-DD. Hvis datoen "
"starter med '-', filtrerer den i stedet på eller før dato."
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
@@ -2447,7 +2461,7 @@ msgstr ""
"Filtrer opskrifter opdateret på eller efter d. YYYY-MM-DD. Hvis datoen "
"starter med '-', filtrerer den i stedet på eller før dato."
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
@@ -2455,19 +2469,19 @@ msgstr ""
"Filtrer opskrifter sidst åbnet på eller efter d. YYYY-MM-DD. Hvis datoen "
"starter med '-', filtrerer den i stedet på eller før dato."
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
"Filtrer opskrifter der kan laves med tilgængeligt mad. [true/<b>false</b>]"
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
"Returnerer indkøbslistepunktet med primær nøgle på ID. Flere værdier tilladt."
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
#, fuzzy
#| msgid ""
#| "Filter shopping list entries on checked. [true, false, both, <b>recent</"
@@ -2481,17 +2495,17 @@ msgstr ""
"false, both, <b>recent</b>]<br> - 'recent' har både ikke afkrydsede artikler "
"og nyligt færdiggjorte artikler."
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
"Returnerer indkøbslistepunkterne sorteret efter "
"supermarkedskategorirækkefølge."
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
#, fuzzy
#| msgid ""
#| "Returns the shopping list entry with a primary key of id. Multiple "
@@ -2502,46 +2516,46 @@ msgid ""
msgstr ""
"Returnerer indkøbslistepunktet med primær nøgle på ID. Flere værdier tilladt."
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr "Ikke noget at gøre."
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr "Forbindelse nægtet."
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr "Ugyldigt link."
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
msgstr "Intet brugbart data kunne findes."
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr "Importering er ikke implementeret for denne udbyder"
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr ""
"Denne funktion er endnu ikke tilgængelig i den hostede version af Tandoor!"
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr "Synkronisering var en succes!"
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr "Der skete en fejl under synkroniseringen med lageret"
@@ -2679,7 +2693,7 @@ msgid "There was an error importing this recipe!"
msgstr "Der opstod en fejl under importeringen af denne opskrift!"
#: .\cookbook\views\views.py:69 .\cookbook\views\views.py:177
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:418
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:423
msgid "This feature is not available in the demo version!"
msgstr "Denne funktion er ikke tilgængelig i demoversionen!"
@@ -2721,17 +2735,21 @@ msgstr ""
msgid "Fuzzy search is not compatible with this search method!"
msgstr "Fuzzy søgning er ikke kompatibelt med denne søgemetode!"
#: .\cookbook\views\views.py:305
#: .\cookbook\views\views.py:306
#, python-format
msgid "PostgreSQL %(v)s is deprecated. Upgrade to a fully supported version!"
msgstr ""
#: .\cookbook\views\views.py:308
#: .\cookbook\views\views.py:309
#, python-format
msgid "You are running PostgreSQL %(v1)s. PostgreSQL %(v2)s is recommended"
msgstr ""
#: .\cookbook\views\views.py:312
#: .\cookbook\views\views.py:313
msgid "Unable to determine PostgreSQL version."
msgstr ""
#: .\cookbook\views\views.py:317
#, fuzzy
#| msgid ""
#| "\n"
@@ -2749,7 +2767,7 @@ msgstr ""
" nogle funktioner kun virker med en postgres database.\n"
" "
#: .\cookbook\views\views.py:355
#: .\cookbook\views\views.py:360
#, fuzzy
#| msgid ""
#| "The setup page can only be used to create the first user! If you have "
@@ -2764,27 +2782,27 @@ msgstr ""
"du har gemt dine superbruger oplysninger, konsulter venligst Django "
"dokumentationen for at lære at nulstille dit kodeord."
#: .\cookbook\views\views.py:364
#: .\cookbook\views\views.py:369
msgid "Passwords dont match!"
msgstr "Kodeorderne er ikke ens!"
#: .\cookbook\views\views.py:372
#: .\cookbook\views\views.py:377
msgid "User has been created, please login!"
msgstr "Brugeren blev oprettet, log venligst ind!"
#: .\cookbook\views\views.py:388
#: .\cookbook\views\views.py:393
msgid "Malformed Invite Link supplied!"
msgstr "Ugyldigt invitationslink angivet!"
#: .\cookbook\views\views.py:405
#: .\cookbook\views\views.py:410
msgid "Successfully joined space."
msgstr "Du er nu medlem af rummet."
#: .\cookbook\views\views.py:411
#: .\cookbook\views\views.py:416
msgid "Invite Link not valid or already used!"
msgstr "Invitationslink er ugyldigt eller allerede brugt!"
#: .\cookbook\views\views.py:427
#: .\cookbook\views\views.py:432
msgid ""
"Reporting share links is not enabled for this instance. Please notify the "
"page administrator to report problems."
@@ -2792,7 +2810,7 @@ msgstr ""
"Rapportering af delingslinks er ikke slået til for denne instans. Oplys "
"venligst din sideadministrator om at rapportere problemer."
#: .\cookbook\views\views.py:432
#: .\cookbook\views\views.py:437
msgid ""
"Recipe sharing link has been disabled! For additional information please "
"contact the page administrator."
@@ -2800,25 +2818,25 @@ msgstr ""
"Opskriftsdelingslinks er blevet slået fra! For mere information kontakt "
"venligst din sideadministrator."
#: .\cookbook\views\views.py:446
#: .\cookbook\views\views.py:451
msgid "Manage recipes, shopping list, meal plans and more."
msgstr ""
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
#, fuzzy
#| msgid "Meal-Plan"
msgid "Plan"
msgstr "Madplan"
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "View your meal Plan"
msgstr ""
#: .\cookbook\views\views.py:454
#: .\cookbook\views\views.py:459
msgid "View your cookbooks"
msgstr ""
#: .\cookbook\views\views.py:455
#: .\cookbook\views\views.py:460
#, fuzzy
#| msgid "Users with whom to share shopping lists."
msgid "View your shopping lists"

View File

@@ -14,17 +14,17 @@ msgid ""
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 <johannesjandke@gmail.com>\n"
"Language-Team: German <http://translate.tandoor.dev/projects/tandoor/recipes-"
"backend/de/>\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2024-09-27 13:58+0000\n"
"Last-Translator: supaeasy <crafty_renewably854@supaeasy.de>\n"
"Language-Team: German <http://translate.tandoor.dev/projects/tandoor/"
"recipes-backend/de/>\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.4.2\n"
"X-Generator: Weblate 5.6.2\n"
#: .\cookbook\forms.py:45
msgid ""
@@ -281,31 +281,31 @@ msgstr "Du hast die maximale Anzahl an Rezepten für Deinen Space erreicht."
msgid "You have more users than allowed in your space."
msgstr "Du hast mehr Benutzer in Deinem Space als erlaubt."
#: .\cookbook\helper\recipe_url_import.py:304
#: .\cookbook\helper\recipe_url_import.py:310
msgid "reverse rotation"
msgstr "Linkslauf"
#: .\cookbook\helper\recipe_url_import.py:305
#: .\cookbook\helper\recipe_url_import.py:311
msgid "careful rotation"
msgstr "Kochlöffel"
#: .\cookbook\helper\recipe_url_import.py:306
#: .\cookbook\helper\recipe_url_import.py:312
msgid "knead"
msgstr "Kneten"
#: .\cookbook\helper\recipe_url_import.py:307
#: .\cookbook\helper\recipe_url_import.py:313
msgid "thicken"
msgstr "Andicken"
#: .\cookbook\helper\recipe_url_import.py:308
#: .\cookbook\helper\recipe_url_import.py:314
msgid "warm up"
msgstr "Erwärmen"
#: .\cookbook\helper\recipe_url_import.py:309
#: .\cookbook\helper\recipe_url_import.py:315
msgid "ferment"
msgstr "Fermentieren"
#: .\cookbook\helper\recipe_url_import.py:310
#: .\cookbook\helper\recipe_url_import.py:316
msgid "sous-vide"
msgstr "Sous-vide"
@@ -395,7 +395,7 @@ msgstr "Sektion"
#: .\cookbook\management\commands\fix_duplicate_properties.py:15
msgid "Fixes foods with "
msgstr ""
msgstr "Behebt Lebensmittel mit "
#: .\cookbook\management\commands\rebuildindex.py:14
msgid "Rebuilds full text search index on Recipe"
@@ -427,15 +427,13 @@ msgstr "Mittagessen"
msgid "Dinner"
msgstr "Abendessen"
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:920
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:919
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
@@ -467,45 +465,43 @@ msgstr ""
"Maximale Datei-Speichergröße in MB. 0 für unbegrenzt, -1 um den Datei-Upload "
"zu deaktivieren."
#: .\cookbook\models.py:455 .\cookbook\templates\search.html:7
#: .\cookbook\models.py:454 .\cookbook\templates\search.html:7
#: .\cookbook\templates\settings.html:18
msgid "Search"
msgstr "Suchen"
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:114
#: .\cookbook\models.py:455 .\cookbook\templates\base.html:114
#: .\cookbook\templates\meal_plan.html:7
msgid "Meal-Plan"
msgstr "Essensplan"
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:454
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:459
msgid "Books"
msgstr "Bücher"
msgstr "Kochbücher"
#: .\cookbook\models.py:458 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:455
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:460
msgid "Shopping"
msgstr "Einkaufsliste"
#: .\cookbook\models.py:753
#: .\cookbook\models.py:752
msgid " is part of a recipe step and cannot be deleted"
msgstr " ist Teil eines Rezepts und kann nicht gelöscht werden"
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
msgid "Nutrition"
msgstr "Nährwerte"
#: .\cookbook\models.py:919
#, fuzzy
#| msgid "Merge"
#: .\cookbook\models.py:918
msgid "Allergen"
msgstr "Zusammenführen"
msgstr "Allergen"
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Price"
msgstr "Preis"
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Goal"
msgstr "Ziel"
@@ -546,26 +542,20 @@ msgid "Instruction Replace"
msgstr "Anleitung ersetzen"
#: .\cookbook\models.py:1472
#, fuzzy
#| msgid "New Unit"
msgid "Never Unit"
msgstr "Neue Einheit"
msgstr "Nie Einheit"
#: .\cookbook\models.py:1473
msgid "Transpose Words"
msgstr ""
msgstr "Wörter austauschen"
#: .\cookbook\models.py:1474
#, fuzzy
#| msgid "Food Alias"
msgid "Food Replace"
msgstr "Lebensmittel Alias"
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"
@@ -1029,13 +1019,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 +1043,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 +1505,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 +1953,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,20 +2051,25 @@ msgid ""
"script to generate version information (done automatically in docker).\n"
" "
msgstr ""
"\n"
" Führe <code>version.py</code> im update script durch, um "
"Informationen zur Version anzuzeigen (wird automatisch von docker "
"durchgeführt).\n"
" "
#: .\cookbook\templates\system.html:46
msgid "Media Serving"
msgstr "Medien ausliefern"
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:91
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:102 .\cookbook\templates\system.html:113
msgid "Warning"
msgstr "Warnung"
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:93
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:104 .\cookbook\templates\system.html:113
msgid "Ok"
msgstr "Ok"
@@ -2102,7 +2089,8 @@ msgstr ""
" "
#: .\cookbook\templates\system.html:55 .\cookbook\templates\system.html:70
#: .\cookbook\templates\system.html:83 .\cookbook\views\views.py:302
#: .\cookbook\templates\system.html:83 .\cookbook\templates\system.html:94
#: .\cookbook\views\views.py:303
msgid "Everything is fine!"
msgstr "Alles in Ordnung!"
@@ -2152,20 +2140,36 @@ msgstr ""
" "
#: .\cookbook\templates\system.html:86
msgid "Allowed Hosts"
msgstr "Erlaubte Hosts"
#: .\cookbook\templates\system.html:90
msgid ""
"\n"
" 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.\n"
" "
msgstr ""
"\n"
" Die erlaubten Hosts sind so konfiguriert, dass sie jeden Host "
"erlauben. Das mag in einigen Fällen in Ordnung sein, sollte aber im "
"Regelfall vermieden werden. Bitte lies in der Dokumentation dazu nach.\n"
" "
#: .\cookbook\templates\system.html:97
msgid "Database"
msgstr "Datenbank"
#: .\cookbook\templates\system.html:89
#: .\cookbook\templates\system.html:100
msgid "Info"
msgstr "Info"
#: .\cookbook\templates\system.html:99 .\cookbook\templates\system.html:116
#, fuzzy
#| msgid "Use fractions"
#: .\cookbook\templates\system.html:110 .\cookbook\templates\system.html:127
msgid "Migrations"
msgstr "Brüche verwenden"
msgstr "Migrationen"
#: .\cookbook\templates\system.html:105
#: .\cookbook\templates\system.html:116
msgid ""
"\n"
" Migrations should never fail!\n"
@@ -2176,123 +2180,130 @@ 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
#: .\cookbook\templates\system.html:182
msgid "False"
msgstr ""
msgstr "Falsch"
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "True"
msgstr ""
msgstr "Wahr"
#: .\cookbook\templates\system.html:196
#: .\cookbook\templates\system.html:207
msgid "Hide"
msgstr ""
msgstr "Verbergen"
#: .\cookbook\templates\system.html:199
#, fuzzy
#| msgid "Show Log"
#: .\cookbook\templates\system.html:210
msgid "Show"
msgstr "Log anzeigen"
msgstr "Anzeigen"
#: .\cookbook\templates\url_import.html:8
msgid "URL Import"
msgstr "URL-Import"
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr "Der Parameter updated_at ist falsch formatiert"
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr "Kein {self.basename} mit der ID {pk} existiert"
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr "Zusammenführen mit selben Objekt nicht möglich!"
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr "Kein {self.basename} mit der ID {target} existiert"
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr "Zusammenführen mit untergeordnetem Objekt nicht möglich!"
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr "{source.name} wurde erfolgreich mit {target.name} zusammengeführt"
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
"Beim zusammenführen von {source.name} mit {target.name} ist ein Fehler "
"aufgetreten"
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr "{child.name} wurde erfolgreich zur Wurzel verschoben."
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr "Fehler aufgetreten beim verschieben von "
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr "Ein Element kann nicht in sich selbst verschoben werden!"
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr "Kein {self.basename} mit ID {parent} existiert"
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr ""
"{child.name} wurde erfolgreich zum Überelement {parent.name} verschoben"
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr "{obj.name} wurde von der Einkaufsliste entfernt."
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr "{obj.name} wurde der Einkaufsliste hinzugefügt."
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
"Filtern Sie Essenspläne ab Datum (einschließlich) im Format JJJJ-MM-TT."
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
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."
#: .\cookbook\views\api.py:744
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
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
"ID des Rezeptes zu dem ein Schritt gehört. Kann mehrfach angegeben werden."
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr "Abfragezeichenfolge, die mit dem Objektnamen übereinstimmt (ungenau)."
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
@@ -2300,7 +2311,7 @@ msgstr ""
"Suchbegriff wird mit dem Rezeptnamen abgeglichen. In Zukunft auch "
"Volltextsuche."
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
@@ -2308,69 +2319,69 @@ msgstr ""
"ID des Stichwortes, das ein Rezept haben muss. Kann mehrfach angegeben "
"werden. Äquivalent zu keywords_or"
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
"Stichwort IDs. Kann mehrfach angegeben werden. Listet Rezepte zu jedem der "
"angegebenen Stichwörter"
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
"Stichwort IDs. Kann mehrfach angegeben werden. Listet Rezepte mit allen "
"angegebenen Stichwörtern."
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
"Stichwort ID. Kann mehrfach angegeben werden. Schließt Rezepte einem der "
"angegebenen Stichwörtern aus."
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
"Stichwort IDs. Kann mehrfach angegeben werden. Schließt Rezepte mit allen "
"angegebenen Stichwörtern aus."
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
"ID einer Zutat, zu der Rezepte gelistet werden sollen. Kann mehrfach "
"angegeben werden."
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
"Zutat ID. Kann mehrfach angegeben werden. Listet Rezepte mindestens einer "
"der Zutaten"
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
"Zutat ID. Kann mehrfach angegeben werden. Listet Rezepte mit allen "
"angegebenen Zutaten."
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
"Zutat ID. Kann mehrfach angegeben werden. Schließt Rezepte aus, die eine der "
"angegebenen Zutaten enthalten."
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
"Zutat ID. Kann mehrfach angegeben werden. Schließt Rezepte aus, die alle "
"angegebenen Zutaten enthalten."
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr "ID der Einheit, die ein Rezept haben sollte."
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
@@ -2378,50 +2389,50 @@ msgstr ""
"Mindestbewertung eines Rezeptes (0-5). Negative Werte filtern nach "
"Maximalbewertung."
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr "Buch ID, in dem das Rezept ist. Kann mehrfach angegeben werden."
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
"Buch ID. Kann mehrfach angegeben werden. Listet alle Rezepte aus den "
"angegebenen Büchern"
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
"Buch ID. Kann mehrfach angegeben werden. Listet die Rezepte, die in allen "
"Büchern enthalten sind."
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
"Buch IDs. Kann mehrfach angegeben werden. Schließt Rezepte aus den "
"angegebenen Büchern aus."
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
"Buch IDs. Kann mehrfach angegeben werden. Schließt Rezepte aus, die in allen "
"angegebenen Büchern enthalten sind."
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr "Nur interne Rezepte sollen gelistet werden. [ja/<b>nein</b>]"
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
"Die Suchergebnisse sollen in zufälliger Reihenfolge gelistet werden. [ja/"
"<b>nein</b>]"
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
"Die neuesten Suchergebnisse sollen zuerst angezeigt werden. [ja/<b>nein</b>]"
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
@@ -2429,7 +2440,7 @@ msgstr ""
"Rezepte listen, die mindestens x-mal gekocht wurden. Eine negative Zahl "
"listet Rezepte, die weniger als x-mal gekocht wurden"
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
@@ -2438,7 +2449,7 @@ msgstr ""
"wurden. Mit vorangestelltem - , werden Rezepte am oder vor dem Datum "
"gelistet."
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
@@ -2446,7 +2457,7 @@ msgstr ""
"Rezepte listen, die am angegebenen Datum oder später erstellt wurden. Wenn - "
"vorangestellt wird, wird am oder vor dem Datum gelistet."
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
@@ -2454,7 +2465,7 @@ msgstr ""
"Rezepte listen, die am angegebenen Datum oder später aktualisiert wurden. "
"Wenn - vorangestellt wird, wird am oder vor dem Datum gelistet."
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
@@ -2462,13 +2473,13 @@ msgstr ""
"Rezepte listen, die am angegebenen Datum oder später zuletzt angesehen "
"wurden. Wenn - vorangestellt wird, wird am oder vor dem Datum gelistet."
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
"Rezepte listen, die mit vorhandenen Zutaten gekocht werden können. [ja/"
"<b>nein</b>]"
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
@@ -2476,80 +2487,72 @@ msgstr ""
"Zeigt denjenigen Eintrag auf der Einkaufliste mit der angegebenen ID. Kann "
"mehrfach angegeben werden."
#: .\cookbook\views\api.py:1126
#, fuzzy
#| msgid ""
#| "Filter shopping list entries on checked. [true, false, both, <b>recent</"
#| "b>]<br> - recent includes unchecked items and recently completed items."
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
"Einkaufslisteneinträge nach Häkchen filtern. [ja, nein, beides, "
"<b>kürzlich</b>]<br> - kürzlich enthält nicht abgehakte Einträge und "
"kürzlich abgeschlossene Einträge."
"Einkaufslisteneinträge nach Häkchen filtern. [ja, nein, beides, "
"<b>kürzlich</b>]<br> - kürzlich enthält nicht abgehakte "
"Einträge und kürzlich abgeschlossene Einträge."
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
"Listet die Einträge der Einkaufsliste sortiert nach Supermarktkategorie."
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
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
#| msgid ""
#| "Returns the shopping list entry with a primary key of id. Multiple "
#| "values allowed."
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
"Zeigt denjenigen Eintrag auf der Einkaufliste mit der angegebenen ID. Kann "
"mehrfach angegeben werden."
"Zeigt Automationen, die dem Automationstyp entsprechen. Kann mehrfach "
"angegeben werden."
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr "Nichts zu tun."
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr "Ungültige URL"
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr "Verbindung fehlgeschlagen."
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr "Ungültiges URL Schema."
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
msgstr "Es konnten keine passenden Daten gefunden werden."
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
msgstr "Datei überschreitet das Speicherplatzlimit"
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr "Importieren ist für diesen Anbieter noch nicht implementiert"
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr "Diese Funktion ist in dieser Version von Tandoor noch nicht verfügbar!"
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr "Synchronisation erfolgreich!"
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr "Fehler beim Synchronisieren"
@@ -2578,10 +2581,8 @@ msgstr ""
"Monitor verwendet wird."
#: .\cookbook\views\delete.py:135
#, fuzzy
#| msgid "Storage Backend"
msgid "Connectors Config Backend"
msgstr "Speicherquelle"
msgstr "Backendkonfiguration für Konnektoren"
#: .\cookbook\views\delete.py:157
msgid "Invite Link"
@@ -2604,14 +2605,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!"
@@ -2642,10 +2641,8 @@ msgid "Shopping List"
msgstr "Einkaufsliste"
#: .\cookbook\views\lists.py:77 .\cookbook\views\new.py:98
#, fuzzy
#| msgid "Storage Backend"
msgid "Connector Config Backend"
msgstr "Speicherquelle"
msgstr "Backendkonfiguration für Konnektoren"
#: .\cookbook\views\lists.py:91
msgid "Invite Links"
@@ -2669,13 +2666,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!"
@@ -2686,16 +2681,15 @@ msgid "There was an error importing this recipe!"
msgstr "Beim Importieren des Rezeptes ist ein Fehler aufgetreten!"
#: .\cookbook\views\views.py:69 .\cookbook\views\views.py:177
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:418
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:423
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 ""
@@ -2730,69 +2724,62 @@ msgstr ""
msgid "Fuzzy search is not compatible with this search method!"
msgstr "Die \"Ungenaue\" Suche ist mit diesem Suchtyp nicht kompatibel!"
#: .\cookbook\views\views.py:305
#: .\cookbook\views\views.py:306
#, 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
#: .\cookbook\views\views.py:309
#, 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"
#| " "
#: .\cookbook\views\views.py:313
msgid "Unable to determine PostgreSQL version."
msgstr "PostgreSQL version konnte nicht erkannt werden."
#: .\cookbook\views\views.py:317
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
#| 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."
#: .\cookbook\views\views.py:360
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 ""
"Die Setup-Seite kann nur für den ersten Nutzer verwendet werden. Zum "
"Zurücksetzen von Passwörtern bitte der Django-Dokumentation folgen."
"Die Setup-Seite kann nur für den ersten Nutzer verwendet "
"werden. Falls du die Superuser Logindaten vergessen "
"hast, folge bitte der Django-Dokumentation um Passwörter zurückzusetzen."
#: .\cookbook\views\views.py:364
#: .\cookbook\views\views.py:369
msgid "Passwords dont match!"
msgstr "Passwörter stimmen nicht überein!"
#: .\cookbook\views\views.py:372
#: .\cookbook\views\views.py:377
msgid "User has been created, please login!"
msgstr "Benutzer wurde erstellt, bitte einloggen!"
#: .\cookbook\views\views.py:388
#: .\cookbook\views\views.py:393
msgid "Malformed Invite Link supplied!"
msgstr "Fehlerhafter Einladungslink angegeben!"
#: .\cookbook\views\views.py:405
#: .\cookbook\views\views.py:410
msgid "Successfully joined space."
msgstr "Space erfolgreich beigetreten."
#: .\cookbook\views\views.py:411
#: .\cookbook\views\views.py:416
msgid "Invite Link not valid or already used!"
msgstr "Einladungslink ungültig oder bereits genutzt!"
#: .\cookbook\views\views.py:427
#: .\cookbook\views\views.py:432
msgid ""
"Reporting share links is not enabled for this instance. Please notify the "
"page administrator to report problems."
@@ -2800,7 +2787,7 @@ msgstr ""
"Das melden von Links ist in dieser Instanz nicht aktiviert. Bitte "
"kontaktieren sie den Seitenadministrator um Probleme zu melden."
#: .\cookbook\views\views.py:432
#: .\cookbook\views\views.py:437
msgid ""
"Recipe sharing link has been disabled! For additional information please "
"contact the page administrator."
@@ -2808,27 +2795,25 @@ msgstr ""
"Dieser Link wurde deaktiviert! Bitte kontaktieren sie den "
"Seitenadministrator für weitere Informationen."
#: .\cookbook\views\views.py:446
#: .\cookbook\views\views.py:451
msgid "Manage recipes, shopping list, meal plans and more."
msgstr ""
msgstr "Manage Rezepte, Einkaufslisten Essenspläne und mehr."
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "Plan"
msgstr "Plan"
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "View your meal Plan"
msgstr ""
msgstr "Betrachte deinen Essensplan"
#: .\cookbook\views\views.py:454
#: .\cookbook\views\views.py:459
msgid "View your cookbooks"
msgstr ""
msgstr "Betrachte deine Kochbücher"
#: .\cookbook\views\views.py:455
#, fuzzy
#| msgid "New Shopping List"
#: .\cookbook\views\views.py:460
msgid "View your shopping lists"
msgstr "Neue Einkaufsliste"
msgstr "Zeige deine Einkaufslisten"
#~ msgid "Default unit"
#~ msgstr "Standardeinheit"

View File

@@ -7,17 +7,17 @@ msgid ""
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-08-21 09:19+0000\n"
"Last-Translator: Theodoros Grammenos <teogramm@outlook.com>\n"
"Language-Team: Greek <http://translate.tandoor.dev/projects/tandoor/recipes-"
"backend/el/>\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2024-09-23 21:58+0000\n"
"Last-Translator: Emmker <emmker@gmail.com>\n"
"Language-Team: Greek <http://translate.tandoor.dev/projects/tandoor/"
"recipes-backend/el/>\n"
"Language: el\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.15\n"
"X-Generator: Weblate 5.6.2\n"
#: .\cookbook\forms.py:45
msgid ""
@@ -33,7 +33,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"
@@ -98,7 +98,7 @@ msgstr ""
#: .\cookbook\forms.py:205
msgid "http://homeassistant.local:8123/api for example"
msgstr ""
msgstr "http://homeassistant.local:8123/api για παράδειγμα"
#: .\cookbook\forms.py:222 .\cookbook\views\edit.py:117
msgid "Storage"
@@ -271,33 +271,33 @@ msgstr "Έχετε υπερβεί τον μέγιστο αριθμό συντα
msgid "You have more users than allowed in your space."
msgstr "Έχετε περισσότερους χρήστες από το επιτρεπόμενο στον χώρο σας."
#: .\cookbook\helper\recipe_url_import.py:304
#: .\cookbook\helper\recipe_url_import.py:310
#, fuzzy
#| msgid "Use fractions"
msgid "reverse rotation"
msgstr "Χρήση κλασμάτων"
#: .\cookbook\helper\recipe_url_import.py:305
#: .\cookbook\helper\recipe_url_import.py:311
msgid "careful rotation"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:306
#: .\cookbook\helper\recipe_url_import.py:312
msgid "knead"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:307
#: .\cookbook\helper\recipe_url_import.py:313
msgid "thicken"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:308
#: .\cookbook\helper\recipe_url_import.py:314
msgid "warm up"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:309
#: .\cookbook\helper\recipe_url_import.py:315
msgid "ferment"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:310
#: .\cookbook\helper\recipe_url_import.py:316
msgid "sous-vide"
msgstr ""
@@ -421,7 +421,7 @@ msgstr "Μεσημεριανό"
msgid "Dinner"
msgstr "Βραδινό"
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:920
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:919
msgid "Other"
msgstr "Άλλο"
@@ -459,47 +459,47 @@ msgstr ""
"Μέγιστος χώρος αποθήκευσης αρχείων σε MB. Ορίστε το σε 0 για απεριόριστο "
"χώρο, σε -1 για να απενεργοποιήσετε τη μεταφόρτωση αρχείων."
#: .\cookbook\models.py:455 .\cookbook\templates\search.html:7
#: .\cookbook\models.py:454 .\cookbook\templates\search.html:7
#: .\cookbook\templates\settings.html:18
msgid "Search"
msgstr "Αναζήτηση"
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:114
#: .\cookbook\models.py:455 .\cookbook\templates\base.html:114
#: .\cookbook\templates\meal_plan.html:7
msgid "Meal-Plan"
msgstr "Πραγματισμός γευμάτων"
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:454
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:459
msgid "Books"
msgstr "Βιβλία"
#: .\cookbook\models.py:458 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:455
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:460
msgid "Shopping"
msgstr "Αγορές"
#: .\cookbook\models.py:753
#: .\cookbook\models.py:752
msgid " is part of a recipe step and cannot be deleted"
msgstr " είναι μέρος ενός βήματος συνταγής και δεν μπορεί να διαγράφει"
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
#, fuzzy
#| msgid "Automations"
msgid "Nutrition"
msgstr "Αυτοματισμοί"
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
#, fuzzy
#| msgid "Merge"
msgid "Allergen"
msgstr "Συγχώνευση"
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Price"
msgstr ""
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Goal"
msgstr ""
@@ -1910,14 +1910,14 @@ msgid "Media Serving"
msgstr ""
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:91
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:102 .\cookbook\templates\system.html:113
msgid "Warning"
msgstr ""
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:93
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:104 .\cookbook\templates\system.html:113
msgid "Ok"
msgstr ""
@@ -1932,7 +1932,8 @@ msgid ""
msgstr ""
#: .\cookbook\templates\system.html:55 .\cookbook\templates\system.html:70
#: .\cookbook\templates\system.html:83 .\cookbook\views\views.py:302
#: .\cookbook\templates\system.html:83 .\cookbook\templates\system.html:94
#: .\cookbook\views\views.py:303
msgid "Everything is fine!"
msgstr ""
@@ -1969,20 +1970,33 @@ msgid ""
msgstr ""
#: .\cookbook\templates\system.html:86
msgid "Allowed Hosts"
msgstr ""
#: .\cookbook\templates\system.html:90
msgid ""
"\n"
" 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.\n"
" "
msgstr ""
#: .\cookbook\templates\system.html:97
msgid "Database"
msgstr ""
#: .\cookbook\templates\system.html:89
#: .\cookbook\templates\system.html:100
msgid "Info"
msgstr ""
#: .\cookbook\templates\system.html:99 .\cookbook\templates\system.html:116
#: .\cookbook\templates\system.html:110 .\cookbook\templates\system.html:127
#, fuzzy
#| msgid "Use fractions"
msgid "Migrations"
msgstr "Χρήση κλασμάτων"
#: .\cookbook\templates\system.html:105
#: .\cookbook\templates\system.html:116
msgid ""
"\n"
" Migrations should never fail!\n"
@@ -1994,19 +2008,19 @@ msgid ""
" "
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "False"
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "True"
msgstr ""
#: .\cookbook\templates\system.html:196
#: .\cookbook\templates\system.html:207
msgid "Hide"
msgstr ""
#: .\cookbook\templates\system.html:199
#: .\cookbook\templates\system.html:210
#, fuzzy
#| msgid "Show Log"
msgid "Show"
@@ -2016,286 +2030,286 @@ msgstr "Προβολή αρχείων καταγραφής"
msgid "URL Import"
msgstr ""
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr ""
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr ""
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr ""
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr ""
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr ""
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr ""
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr ""
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr ""
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr ""
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr ""
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr ""
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr ""
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
msgstr ""
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr ""
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr ""
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr ""
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr ""
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
msgstr ""
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr ""
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr ""
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr ""
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr ""
@@ -2419,7 +2433,7 @@ msgid "There was an error importing this recipe!"
msgstr ""
#: .\cookbook\views\views.py:69 .\cookbook\views\views.py:177
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:418
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:423
msgid "This feature is not available in the demo version!"
msgstr ""
@@ -2458,56 +2472,60 @@ msgstr ""
msgid "Fuzzy search is not compatible with this search method!"
msgstr ""
#: .\cookbook\views\views.py:305
#: .\cookbook\views\views.py:306
#, python-format
msgid "PostgreSQL %(v)s is deprecated. Upgrade to a fully supported version!"
msgstr ""
#: .\cookbook\views\views.py:308
#: .\cookbook\views\views.py:309
#, python-format
msgid "You are running PostgreSQL %(v1)s. PostgreSQL %(v2)s is recommended"
msgstr ""
#: .\cookbook\views\views.py:312
#: .\cookbook\views\views.py:313
msgid "Unable to determine PostgreSQL version."
msgstr ""
#: .\cookbook\views\views.py:317
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 ""
#: .\cookbook\views\views.py:355
#: .\cookbook\views\views.py:360
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 ""
#: .\cookbook\views\views.py:364
#: .\cookbook\views\views.py:369
msgid "Passwords dont match!"
msgstr ""
#: .\cookbook\views\views.py:372
#: .\cookbook\views\views.py:377
msgid "User has been created, please login!"
msgstr ""
#: .\cookbook\views\views.py:388
#: .\cookbook\views\views.py:393
msgid "Malformed Invite Link supplied!"
msgstr ""
#: .\cookbook\views\views.py:405
#: .\cookbook\views\views.py:410
msgid "Successfully joined space."
msgstr ""
#: .\cookbook\views\views.py:411
#: .\cookbook\views\views.py:416
msgid "Invite Link not valid or already used!"
msgstr ""
#: .\cookbook\views\views.py:427
#: .\cookbook\views\views.py:432
msgid ""
"Reporting share links is not enabled for this instance. Please notify the "
"page administrator to report problems."
msgstr ""
#: .\cookbook\views\views.py:432
#: .\cookbook\views\views.py:437
msgid ""
"Recipe sharing link has been disabled! For additional information please "
"contact the page administrator."
@@ -2515,25 +2533,25 @@ msgstr ""
"Ο σύνδεσμος κοινοποίησης συνταγής έχει απενεργοποιηθεί! Για περαιτέρω "
"πληροφορίες, παρακαλώ επικοινωνήστε με τον διαχειριστή της σελίδας."
#: .\cookbook\views\views.py:446
#: .\cookbook\views\views.py:451
msgid "Manage recipes, shopping list, meal plans and more."
msgstr ""
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
#, fuzzy
#| msgid "Meal-Plan"
msgid "Plan"
msgstr "Πραγματισμός γευμάτων"
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "View your meal Plan"
msgstr ""
#: .\cookbook\views\views.py:454
#: .\cookbook\views\views.py:459
msgid "View your cookbooks"
msgstr ""
#: .\cookbook\views\views.py:455
#: .\cookbook\views\views.py:460
#, fuzzy
#| msgid "Users with whom to share shopping lists."
msgid "View your shopping lists"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-03-21 14:39+0100\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -243,31 +243,31 @@ msgstr ""
msgid "You have more users than allowed in your space."
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:304
#: .\cookbook\helper\recipe_url_import.py:310
msgid "reverse rotation"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:305
#: .\cookbook\helper\recipe_url_import.py:311
msgid "careful rotation"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:306
#: .\cookbook\helper\recipe_url_import.py:312
msgid "knead"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:307
#: .\cookbook\helper\recipe_url_import.py:313
msgid "thicken"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:308
#: .\cookbook\helper\recipe_url_import.py:314
msgid "warm up"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:309
#: .\cookbook\helper\recipe_url_import.py:315
msgid "ferment"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:310
#: .\cookbook\helper\recipe_url_import.py:316
msgid "sous-vide"
msgstr ""
@@ -383,7 +383,7 @@ msgstr ""
msgid "Dinner"
msgstr ""
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:920
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:919
msgid "Other"
msgstr ""
@@ -419,43 +419,43 @@ msgid ""
"upload."
msgstr ""
#: .\cookbook\models.py:455 .\cookbook\templates\search.html:7
#: .\cookbook\models.py:454 .\cookbook\templates\search.html:7
#: .\cookbook\templates\settings.html:18
msgid "Search"
msgstr ""
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:114
#: .\cookbook\models.py:455 .\cookbook\templates\base.html:114
#: .\cookbook\templates\meal_plan.html:7
msgid "Meal-Plan"
msgstr ""
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:454
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:459
msgid "Books"
msgstr ""
#: .\cookbook\models.py:458 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:455
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:460
msgid "Shopping"
msgstr ""
#: .\cookbook\models.py:753
#: .\cookbook\models.py:752
msgid " is part of a recipe step and cannot be deleted"
msgstr ""
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
msgid "Nutrition"
msgstr ""
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
msgid "Allergen"
msgstr ""
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Price"
msgstr ""
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Goal"
msgstr ""
@@ -1818,14 +1818,14 @@ msgid "Media Serving"
msgstr ""
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:91
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:102 .\cookbook\templates\system.html:113
msgid "Warning"
msgstr ""
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:93
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:104 .\cookbook\templates\system.html:113
msgid "Ok"
msgstr ""
@@ -1840,7 +1840,8 @@ msgid ""
msgstr ""
#: .\cookbook\templates\system.html:55 .\cookbook\templates\system.html:70
#: .\cookbook\templates\system.html:83 .\cookbook\views\views.py:302
#: .\cookbook\templates\system.html:83 .\cookbook\templates\system.html:94
#: .\cookbook\views\views.py:303
msgid "Everything is fine!"
msgstr ""
@@ -1877,18 +1878,31 @@ msgid ""
msgstr ""
#: .\cookbook\templates\system.html:86
msgid "Allowed Hosts"
msgstr ""
#: .\cookbook\templates\system.html:90
msgid ""
"\n"
" 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.\n"
" "
msgstr ""
#: .\cookbook\templates\system.html:97
msgid "Database"
msgstr ""
#: .\cookbook\templates\system.html:89
#: .\cookbook\templates\system.html:100
msgid "Info"
msgstr ""
#: .\cookbook\templates\system.html:99 .\cookbook\templates\system.html:116
#: .\cookbook\templates\system.html:110 .\cookbook\templates\system.html:127
msgid "Migrations"
msgstr ""
#: .\cookbook\templates\system.html:105
#: .\cookbook\templates\system.html:116
msgid ""
"\n"
" Migrations should never fail!\n"
@@ -1900,19 +1914,19 @@ msgid ""
" "
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "False"
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "True"
msgstr ""
#: .\cookbook\templates\system.html:196
#: .\cookbook\templates\system.html:207
msgid "Hide"
msgstr ""
#: .\cookbook\templates\system.html:199
#: .\cookbook\templates\system.html:210
msgid "Show"
msgstr ""
@@ -1920,286 +1934,286 @@ msgstr ""
msgid "URL Import"
msgstr ""
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr ""
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr ""
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr ""
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr ""
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr ""
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr ""
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr ""
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr ""
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr ""
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr ""
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr ""
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr ""
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
msgstr ""
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr ""
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr ""
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr ""
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr ""
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
msgstr ""
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr ""
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr ""
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr ""
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr ""
@@ -2323,7 +2337,7 @@ msgid "There was an error importing this recipe!"
msgstr ""
#: .\cookbook\views\views.py:69 .\cookbook\views\views.py:177
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:418
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:423
msgid "This feature is not available in the demo version!"
msgstr ""
@@ -2360,77 +2374,81 @@ msgstr ""
msgid "Fuzzy search is not compatible with this search method!"
msgstr ""
#: .\cookbook\views\views.py:305
#: .\cookbook\views\views.py:306
#, python-format
msgid "PostgreSQL %(v)s is deprecated. Upgrade to a fully supported version!"
msgstr ""
#: .\cookbook\views\views.py:308
#: .\cookbook\views\views.py:309
#, python-format
msgid "You are running PostgreSQL %(v1)s. PostgreSQL %(v2)s is recommended"
msgstr ""
#: .\cookbook\views\views.py:312
#: .\cookbook\views\views.py:313
msgid "Unable to determine PostgreSQL version."
msgstr ""
#: .\cookbook\views\views.py:317
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 ""
#: .\cookbook\views\views.py:355
#: .\cookbook\views\views.py:360
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 ""
#: .\cookbook\views\views.py:364
#: .\cookbook\views\views.py:369
msgid "Passwords dont match!"
msgstr ""
#: .\cookbook\views\views.py:372
#: .\cookbook\views\views.py:377
msgid "User has been created, please login!"
msgstr ""
#: .\cookbook\views\views.py:388
#: .\cookbook\views\views.py:393
msgid "Malformed Invite Link supplied!"
msgstr ""
#: .\cookbook\views\views.py:405
#: .\cookbook\views\views.py:410
msgid "Successfully joined space."
msgstr ""
#: .\cookbook\views\views.py:411
#: .\cookbook\views\views.py:416
msgid "Invite Link not valid or already used!"
msgstr ""
#: .\cookbook\views\views.py:427
#: .\cookbook\views\views.py:432
msgid ""
"Reporting share links is not enabled for this instance. Please notify the "
"page administrator to report problems."
msgstr ""
#: .\cookbook\views\views.py:432
#: .\cookbook\views\views.py:437
msgid ""
"Recipe sharing link has been disabled! For additional information please "
"contact the page administrator."
msgstr ""
#: .\cookbook\views\views.py:446
#: .\cookbook\views\views.py:451
msgid "Manage recipes, shopping list, meal plans and more."
msgstr ""
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "Plan"
msgstr ""
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "View your meal Plan"
msgstr ""
#: .\cookbook\views\views.py:454
#: .\cookbook\views\views.py:459
msgid "View your cookbooks"
msgstr ""
#: .\cookbook\views\views.py:455
#: .\cookbook\views\views.py:460
msgid "View your shopping lists"
msgstr ""

View File

@@ -13,9 +13,9 @@ msgid ""
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-09-25 09:59+0000\n"
"Last-Translator: Matias Laporte <laportematias+weblate@gmail.com>\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2024-03-27 19:02+0000\n"
"Last-Translator: Axel Breiterman <axelbreiterman@gmail.com>\n"
"Language-Team: Spanish <http://translate.tandoor.dev/projects/tandoor/"
"recipes-backend/es/>\n"
"Language: es\n"
@@ -23,7 +23,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.15\n"
"X-Generator: Weblate 5.4.2\n"
#: .\cookbook\forms.py:45
msgid ""
@@ -97,14 +97,16 @@ msgid ""
"<a href=\"https://www.home-assistant.io/docs/authentication/#your-account-"
"profile\">Long Lived Access Token</a> for your HomeAssistant instance"
msgstr ""
"<a href=\"https://www.home-assistant.io/docs/authentication/#your-account-"
"profile\">Token de larga duración</a>para tu instancia de HomeAssistant"
#: .\cookbook\forms.py:193
msgid "Something like http://homeassistant.local:8123/api"
msgstr ""
msgstr "Algo similar a http://homeassistant.local:8123/api"
#: .\cookbook\forms.py:205
msgid "http://homeassistant.local:8123/api for example"
msgstr ""
msgstr "por ejemplo http://homeassistant.local:8123/api for example"
#: .\cookbook\forms.py:222 .\cookbook\views\edit.py:117
msgid "Storage"
@@ -279,37 +281,37 @@ msgstr "Ha alcanzado el número máximo de recetas para su espacio."
#: .\cookbook\helper\permission_helper.py:414
msgid "You have more users than allowed in your space."
msgstr ""
msgstr "Tenés mas usuarios que los permitidos en tu espacio"
#: .\cookbook\helper\recipe_url_import.py:304
#: .\cookbook\helper\recipe_url_import.py:310
#, fuzzy
#| msgid "Use fractions"
msgid "reverse rotation"
msgstr "Usar fracciones"
#: .\cookbook\helper\recipe_url_import.py:305
#: .\cookbook\helper\recipe_url_import.py:311
msgid "careful rotation"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:306
#: .\cookbook\helper\recipe_url_import.py:312
msgid "knead"
msgstr "amasar"
#: .\cookbook\helper\recipe_url_import.py:307
#: .\cookbook\helper\recipe_url_import.py:313
msgid "thicken"
msgstr "espesar"
#: .\cookbook\helper\recipe_url_import.py:308
#: .\cookbook\helper\recipe_url_import.py:314
msgid "warm up"
msgstr "precalentar"
#: .\cookbook\helper\recipe_url_import.py:309
#: .\cookbook\helper\recipe_url_import.py:315
msgid "ferment"
msgstr "fermentar"
#: .\cookbook\helper\recipe_url_import.py:310
#: .\cookbook\helper\recipe_url_import.py:316
msgid "sous-vide"
msgstr ""
msgstr "sous-vide"
#: .\cookbook\helper\shopping_helper.py:150
msgid "You must supply a servings size"
@@ -318,7 +320,7 @@ msgstr "Debe proporcionar un tamaño de porción"
#: .\cookbook\helper\template_helper.py:95
#: .\cookbook\helper\template_helper.py:97
msgid "Could not parse template code."
msgstr ""
msgstr "No se pudo parsear el código de la planitlla."
#: .\cookbook\integration\copymethat.py:44
#: .\cookbook\integration\melarecipes.py:37
@@ -342,6 +344,8 @@ msgid ""
"An unexpected error occurred during the import. Please make sure you have "
"uploaded a valid file."
msgstr ""
"Ocurrió un error inesperado al importar. Por favor asegurate de haber subido "
"un archivo válido."
#: .\cookbook\integration\integration.py:217
msgid "The following recipes were ignored because they already existed:"
@@ -427,7 +431,7 @@ msgstr "Almuerzo"
msgid "Dinner"
msgstr "Cena"
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:920
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:919
msgid "Other"
msgstr "Otro"
@@ -457,7 +461,7 @@ msgstr "Calorías"
#: .\cookbook\migrations\0190_auto_20230525_1506.py:20
msgid "kcal"
msgstr ""
msgstr "kcal"
#: .\cookbook\models.py:325
msgid ""
@@ -465,45 +469,45 @@ msgid ""
"upload."
msgstr ""
#: .\cookbook\models.py:455 .\cookbook\templates\search.html:7
#: .\cookbook\models.py:454 .\cookbook\templates\search.html:7
#: .\cookbook\templates\settings.html:18
msgid "Search"
msgstr "Buscar"
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:114
#: .\cookbook\models.py:455 .\cookbook\templates\base.html:114
#: .\cookbook\templates\meal_plan.html:7
msgid "Meal-Plan"
msgstr "Régimen de comidas"
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:454
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:459
msgid "Books"
msgstr "Libros"
#: .\cookbook\models.py:458 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:455
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:460
msgid "Shopping"
msgstr "Compras"
#: .\cookbook\models.py:753
#: .\cookbook\models.py:752
msgid " is part of a recipe step and cannot be deleted"
msgstr " es parte del paso de una receta y no puede ser eliminado"
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
msgid "Nutrition"
msgstr "Información Nutricional"
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
#, fuzzy
#| msgid "Merge"
msgid "Allergen"
msgstr "Combinar"
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Price"
msgstr ""
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Goal"
msgstr ""
@@ -2006,14 +2010,14 @@ msgid "Media Serving"
msgstr "Servidor multimedia"
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:91
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:102 .\cookbook\templates\system.html:113
msgid "Warning"
msgstr "Advertencia"
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:93
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:104 .\cookbook\templates\system.html:113
msgid "Ok"
msgstr "Ok"
@@ -2035,7 +2039,8 @@ msgstr ""
" "
#: .\cookbook\templates\system.html:55 .\cookbook\templates\system.html:70
#: .\cookbook\templates\system.html:83 .\cookbook\views\views.py:302
#: .\cookbook\templates\system.html:83 .\cookbook\templates\system.html:94
#: .\cookbook\views\views.py:303
msgid "Everything is fine!"
msgstr "¡Todo va bien!"
@@ -2088,20 +2093,33 @@ msgstr ""
" "
#: .\cookbook\templates\system.html:86
msgid "Allowed Hosts"
msgstr ""
#: .\cookbook\templates\system.html:90
msgid ""
"\n"
" 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.\n"
" "
msgstr ""
#: .\cookbook\templates\system.html:97
msgid "Database"
msgstr "Base de Datos"
#: .\cookbook\templates\system.html:89
#: .\cookbook\templates\system.html:100
msgid "Info"
msgstr "Información"
#: .\cookbook\templates\system.html:99 .\cookbook\templates\system.html:116
#: .\cookbook\templates\system.html:110 .\cookbook\templates\system.html:127
#, fuzzy
#| msgid "Use fractions"
msgid "Migrations"
msgstr "Usar fracciones"
#: .\cookbook\templates\system.html:105
#: .\cookbook\templates\system.html:116
msgid ""
"\n"
" Migrations should never fail!\n"
@@ -2113,19 +2131,19 @@ msgid ""
" "
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "False"
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "True"
msgstr ""
#: .\cookbook\templates\system.html:196
#: .\cookbook\templates\system.html:207
msgid "Hide"
msgstr ""
#: .\cookbook\templates\system.html:199
#: .\cookbook\templates\system.html:210
#, fuzzy
#| msgid "Show Links"
msgid "Show"
@@ -2135,282 +2153,282 @@ msgstr "Mostrar Enlaces"
msgid "URL Import"
msgstr "Importar URL"
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
#, fuzzy
#| msgid "Parameter filter_list incorrectly formatted"
msgid "Parameter updated_at incorrectly formatted"
msgstr "Parámetro filter_list formateado incorrectamente"
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr ""
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr "¡No se puede unir con el mismo objeto!"
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr ""
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
#, fuzzy
#| msgid "Cannot merge with the same object!"
msgid "Cannot merge with child object!"
msgstr "¡No se puede unir con el mismo objeto!"
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr ""
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr ""
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr ""
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr ""
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr ""
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr ""
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr ""
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
msgstr ""
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr ""
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr ""
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr ""
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr ""
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
#, fuzzy
#| msgid "The requested page could not be found."
msgid "No usable data could be found."
msgstr "La página solicitada no pudo ser encontrada."
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr "La importación no está implementada para este proveedor"
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
#, fuzzy
@@ -2418,11 +2436,11 @@ msgstr "La importación no está implementada para este proveedor"
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr "¡Esta funcionalidad no está disponible en la versión demo!"
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr "¡Sincronización exitosa!"
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr "Error de sincronización con el almacenamiento"
@@ -2562,7 +2580,7 @@ msgid "There was an error importing this recipe!"
msgstr "¡Hubo un error al importar esta receta!"
#: .\cookbook\views\views.py:69 .\cookbook\views\views.py:177
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:418
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:423
msgid "This feature is not available in the demo version!"
msgstr "¡Esta funcionalidad no está disponible en la versión demo!"
@@ -2601,17 +2619,21 @@ msgstr ""
msgid "Fuzzy search is not compatible with this search method!"
msgstr ""
#: .\cookbook\views\views.py:305
#: .\cookbook\views\views.py:306
#, python-format
msgid "PostgreSQL %(v)s is deprecated. Upgrade to a fully supported version!"
msgstr ""
#: .\cookbook\views\views.py:308
#: .\cookbook\views\views.py:309
#, python-format
msgid "You are running PostgreSQL %(v1)s. PostgreSQL %(v2)s is recommended"
msgstr ""
#: .\cookbook\views\views.py:312
#: .\cookbook\views\views.py:313
msgid "Unable to determine PostgreSQL version."
msgstr ""
#: .\cookbook\views\views.py:317
#, fuzzy
#| msgid ""
#| "\n"
@@ -2629,7 +2651,7 @@ msgstr ""
" características sólo funcionan con bases de datos Postgres.\n"
" "
#: .\cookbook\views\views.py:355
#: .\cookbook\views\views.py:360
#, fuzzy
#| msgid ""
#| "The setup page can only be used to create the first user! If you have "
@@ -2644,55 +2666,55 @@ msgstr ""
"usuario. Si has olvidado tus credenciales de superusuario, por favor "
"consulta la documentación de django sobre cómo restablecer las contraseñas."
#: .\cookbook\views\views.py:364
#: .\cookbook\views\views.py:369
msgid "Passwords dont match!"
msgstr "¡Las contraseñas no coinciden!"
#: .\cookbook\views\views.py:372
#: .\cookbook\views\views.py:377
msgid "User has been created, please login!"
msgstr "El usuario ha sido creado, ¡inicie sesión!"
#: .\cookbook\views\views.py:388
#: .\cookbook\views\views.py:393
msgid "Malformed Invite Link supplied!"
msgstr "¡Se proporcionó un enlace de invitación con formato incorrecto!"
#: .\cookbook\views\views.py:405
#: .\cookbook\views\views.py:410
msgid "Successfully joined space."
msgstr ""
#: .\cookbook\views\views.py:411
#: .\cookbook\views\views.py:416
msgid "Invite Link not valid or already used!"
msgstr "¡El enlace de invitación no es válido o ya se ha utilizado!"
#: .\cookbook\views\views.py:427
#: .\cookbook\views\views.py:432
msgid ""
"Reporting share links is not enabled for this instance. Please notify the "
"page administrator to report problems."
msgstr ""
#: .\cookbook\views\views.py:432
#: .\cookbook\views\views.py:437
msgid ""
"Recipe sharing link has been disabled! For additional information please "
"contact the page administrator."
msgstr ""
#: .\cookbook\views\views.py:446
#: .\cookbook\views\views.py:451
msgid "Manage recipes, shopping list, meal plans and more."
msgstr ""
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "Plan"
msgstr "Menú"
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "View your meal Plan"
msgstr ""
#: .\cookbook\views\views.py:454
#: .\cookbook\views\views.py:459
msgid "View your cookbooks"
msgstr ""
#: .\cookbook\views\views.py:455
#: .\cookbook\views\views.py:460
#, fuzzy
#| msgid "Shopping List"
msgid "View your shopping lists"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-03-21 14:39+0100\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2024-03-10 06:12+0000\n"
"Last-Translator: Kn <kn@users.noreply.translate.tandoor.dev>\n"
"Language-Team: Finnish <http://translate.tandoor.dev/projects/tandoor/"
@@ -246,31 +246,31 @@ msgstr ""
msgid "You have more users than allowed in your space."
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:304
#: .\cookbook\helper\recipe_url_import.py:310
msgid "reverse rotation"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:305
#: .\cookbook\helper\recipe_url_import.py:311
msgid "careful rotation"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:306
#: .\cookbook\helper\recipe_url_import.py:312
msgid "knead"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:307
#: .\cookbook\helper\recipe_url_import.py:313
msgid "thicken"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:308
#: .\cookbook\helper\recipe_url_import.py:314
msgid "warm up"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:309
#: .\cookbook\helper\recipe_url_import.py:315
msgid "ferment"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:310
#: .\cookbook\helper\recipe_url_import.py:316
msgid "sous-vide"
msgstr ""
@@ -386,7 +386,7 @@ msgstr ""
msgid "Dinner"
msgstr ""
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:920
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:919
msgid "Other"
msgstr ""
@@ -422,43 +422,43 @@ msgid ""
"upload."
msgstr ""
#: .\cookbook\models.py:455 .\cookbook\templates\search.html:7
#: .\cookbook\models.py:454 .\cookbook\templates\search.html:7
#: .\cookbook\templates\settings.html:18
msgid "Search"
msgstr ""
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:114
#: .\cookbook\models.py:455 .\cookbook\templates\base.html:114
#: .\cookbook\templates\meal_plan.html:7
msgid "Meal-Plan"
msgstr ""
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:454
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:459
msgid "Books"
msgstr "Kirjat"
#: .\cookbook\models.py:458 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:455
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:460
msgid "Shopping"
msgstr ""
#: .\cookbook\models.py:753
#: .\cookbook\models.py:752
msgid " is part of a recipe step and cannot be deleted"
msgstr ""
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
msgid "Nutrition"
msgstr ""
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
msgid "Allergen"
msgstr ""
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Price"
msgstr ""
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Goal"
msgstr ""
@@ -1823,14 +1823,14 @@ msgid "Media Serving"
msgstr ""
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:91
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:102 .\cookbook\templates\system.html:113
msgid "Warning"
msgstr ""
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:93
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:104 .\cookbook\templates\system.html:113
msgid "Ok"
msgstr ""
@@ -1845,7 +1845,8 @@ msgid ""
msgstr ""
#: .\cookbook\templates\system.html:55 .\cookbook\templates\system.html:70
#: .\cookbook\templates\system.html:83 .\cookbook\views\views.py:302
#: .\cookbook\templates\system.html:83 .\cookbook\templates\system.html:94
#: .\cookbook\views\views.py:303
msgid "Everything is fine!"
msgstr ""
@@ -1882,18 +1883,31 @@ msgid ""
msgstr ""
#: .\cookbook\templates\system.html:86
msgid "Allowed Hosts"
msgstr ""
#: .\cookbook\templates\system.html:90
msgid ""
"\n"
" 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.\n"
" "
msgstr ""
#: .\cookbook\templates\system.html:97
msgid "Database"
msgstr ""
#: .\cookbook\templates\system.html:89
#: .\cookbook\templates\system.html:100
msgid "Info"
msgstr ""
#: .\cookbook\templates\system.html:99 .\cookbook\templates\system.html:116
#: .\cookbook\templates\system.html:110 .\cookbook\templates\system.html:127
msgid "Migrations"
msgstr ""
#: .\cookbook\templates\system.html:105
#: .\cookbook\templates\system.html:116
msgid ""
"\n"
" Migrations should never fail!\n"
@@ -1905,19 +1919,19 @@ msgid ""
" "
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "False"
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "True"
msgstr ""
#: .\cookbook\templates\system.html:196
#: .\cookbook\templates\system.html:207
msgid "Hide"
msgstr ""
#: .\cookbook\templates\system.html:199
#: .\cookbook\templates\system.html:210
msgid "Show"
msgstr ""
@@ -1925,286 +1939,286 @@ msgstr ""
msgid "URL Import"
msgstr ""
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr ""
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr ""
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr ""
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr ""
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr ""
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr ""
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr ""
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr ""
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr ""
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr ""
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr ""
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr ""
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
msgstr ""
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr ""
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr ""
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr ""
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr ""
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
msgstr ""
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr ""
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr ""
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr ""
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr ""
@@ -2328,7 +2342,7 @@ msgid "There was an error importing this recipe!"
msgstr ""
#: .\cookbook\views\views.py:69 .\cookbook\views\views.py:177
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:418
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:423
msgid "This feature is not available in the demo version!"
msgstr ""
@@ -2365,78 +2379,82 @@ msgstr ""
msgid "Fuzzy search is not compatible with this search method!"
msgstr ""
#: .\cookbook\views\views.py:305
#: .\cookbook\views\views.py:306
#, python-format
msgid "PostgreSQL %(v)s is deprecated. Upgrade to a fully supported version!"
msgstr ""
#: .\cookbook\views\views.py:308
#: .\cookbook\views\views.py:309
#, python-format
msgid "You are running PostgreSQL %(v1)s. PostgreSQL %(v2)s is recommended"
msgstr ""
#: .\cookbook\views\views.py:312
#: .\cookbook\views\views.py:313
msgid "Unable to determine PostgreSQL version."
msgstr ""
#: .\cookbook\views\views.py:317
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 ""
#: .\cookbook\views\views.py:355
#: .\cookbook\views\views.py:360
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 ""
#: .\cookbook\views\views.py:364
#: .\cookbook\views\views.py:369
msgid "Passwords dont match!"
msgstr ""
#: .\cookbook\views\views.py:372
#: .\cookbook\views\views.py:377
msgid "User has been created, please login!"
msgstr ""
#: .\cookbook\views\views.py:388
#: .\cookbook\views\views.py:393
msgid "Malformed Invite Link supplied!"
msgstr ""
#: .\cookbook\views\views.py:405
#: .\cookbook\views\views.py:410
msgid "Successfully joined space."
msgstr ""
#: .\cookbook\views\views.py:411
#: .\cookbook\views\views.py:416
msgid "Invite Link not valid or already used!"
msgstr ""
#: .\cookbook\views\views.py:427
#: .\cookbook\views\views.py:432
msgid ""
"Reporting share links is not enabled for this instance. Please notify the "
"page administrator to report problems."
msgstr ""
#: .\cookbook\views\views.py:432
#: .\cookbook\views\views.py:437
msgid ""
"Recipe sharing link has been disabled! For additional information please "
"contact the page administrator."
msgstr ""
#: .\cookbook\views\views.py:446
#: .\cookbook\views\views.py:451
msgid "Manage recipes, shopping list, meal plans and more."
msgstr ""
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "Plan"
msgstr ""
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "View your meal Plan"
msgstr ""
#: .\cookbook\views\views.py:454
#: .\cookbook\views\views.py:459
msgid "View your cookbooks"
msgstr ""
#: .\cookbook\views\views.py:455
#: .\cookbook\views\views.py:460
msgid "View your shopping lists"
msgstr ""

View File

@@ -13,9 +13,9 @@ msgid ""
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 <barrier.anthony@gmail.com>\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2024-05-28 00:57+0000\n"
"Last-Translator: tarek EL SOL <tarek.elsol@gmail.com>\n"
"Language-Team: French <http://translate.tandoor.dev/projects/tandoor/recipes-"
"backend/fr/>\n"
"Language: fr\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 dapplication "
"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,7 +136,7 @@ msgid ""
"An email address is not required but if present the invite link will be sent "
"to the user."
msgstr ""
"Une adresse mail nest pas requise mais si elle est renseignée, le lien "
"Une adresse mail nest pas requise, mais si elle est renseignée, le lien "
"dinvitation sera envoyé à lutilisateur."
#: .\cookbook\forms.py:287
@@ -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 limportation 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 ""
@@ -291,31 +291,31 @@ msgstr ""
"Le nombre dutilisateurs dans votre groupe dépasse le nombre dutilisateurs "
"autorisé."
#: .\cookbook\helper\recipe_url_import.py:304
#: .\cookbook\helper\recipe_url_import.py:310
msgid "reverse rotation"
msgstr "sens inverse"
#: .\cookbook\helper\recipe_url_import.py:305
#: .\cookbook\helper\recipe_url_import.py:311
msgid "careful rotation"
msgstr "sens horloger"
#: .\cookbook\helper\recipe_url_import.py:306
#: .\cookbook\helper\recipe_url_import.py:312
msgid "knead"
msgstr "pétrir"
#: .\cookbook\helper\recipe_url_import.py:307
#: .\cookbook\helper\recipe_url_import.py:313
msgid "thicken"
msgstr "épaissir"
#: .\cookbook\helper\recipe_url_import.py:308
#: .\cookbook\helper\recipe_url_import.py:314
msgid "warm up"
msgstr "réchauffer"
#: .\cookbook\helper\recipe_url_import.py:309
#: .\cookbook\helper\recipe_url_import.py:315
msgid "ferment"
msgstr "fermenter"
#: .\cookbook\helper\recipe_url_import.py:310
#: .\cookbook\helper\recipe_url_import.py:316
msgid "sous-vide"
msgstr "sous-vide"
@@ -437,7 +437,7 @@ msgstr "Déjeuner"
msgid "Dinner"
msgstr "Dîner"
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:920
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:919
msgid "Other"
msgstr "Autre"
@@ -477,45 +477,45 @@ msgstr ""
"Le stockage maximal de fichiers pour ce groupe en Mo. Mettre 0 pour ne pas "
"avoir de limite et -1 pour empêcher le téléversement de fichiers."
#: .\cookbook\models.py:455 .\cookbook\templates\search.html:7
#: .\cookbook\models.py:454 .\cookbook\templates\search.html:7
#: .\cookbook\templates\settings.html:18
msgid "Search"
msgstr "Rechercher"
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:114
#: .\cookbook\models.py:455 .\cookbook\templates\base.html:114
#: .\cookbook\templates\meal_plan.html:7
msgid "Meal-Plan"
msgstr "Menu de la semaine"
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:454
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:459
msgid "Books"
msgstr "Livres"
#: .\cookbook\models.py:458 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:455
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:460
msgid "Shopping"
msgstr "Courses"
#: .\cookbook\models.py:753
#: .\cookbook\models.py:752
msgid " is part of a recipe step and cannot be deleted"
msgstr " fait partie dune étape de la recette et ne peut être supprimé(e)"
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
msgid "Nutrition"
msgstr "Informations nutritionnelles"
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
#, fuzzy
#| msgid "Merge"
msgid "Allergen"
msgstr "Fusionner"
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Price"
msgstr ""
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Goal"
msgstr ""
@@ -2118,14 +2118,14 @@ msgid "Media Serving"
msgstr "Publication des médias"
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:91
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:102 .\cookbook\templates\system.html:113
msgid "Warning"
msgstr "Avertissement"
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:93
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:104 .\cookbook\templates\system.html:113
msgid "Ok"
msgstr "OK"
@@ -2146,7 +2146,8 @@ msgstr ""
" "
#: .\cookbook\templates\system.html:55 .\cookbook\templates\system.html:70
#: .\cookbook\templates\system.html:83 .\cookbook\views\views.py:302
#: .\cookbook\templates\system.html:83 .\cookbook\templates\system.html:94
#: .\cookbook\views\views.py:303
msgid "Everything is fine!"
msgstr "Tout est en ordre !"
@@ -2197,20 +2198,33 @@ msgstr ""
" "
#: .\cookbook\templates\system.html:86
msgid "Allowed Hosts"
msgstr ""
#: .\cookbook\templates\system.html:90
msgid ""
"\n"
" 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.\n"
" "
msgstr ""
#: .\cookbook\templates\system.html:97
msgid "Database"
msgstr "Base de données"
#: .\cookbook\templates\system.html:89
#: .\cookbook\templates\system.html:100
msgid "Info"
msgstr "Info"
#: .\cookbook\templates\system.html:99 .\cookbook\templates\system.html:116
#: .\cookbook\templates\system.html:110 .\cookbook\templates\system.html:127
#, fuzzy
#| msgid "Use fractions"
msgid "Migrations"
msgstr "Utiliser les fractions"
#: .\cookbook\templates\system.html:105
#: .\cookbook\templates\system.html:116
msgid ""
"\n"
" Migrations should never fail!\n"
@@ -2222,19 +2236,19 @@ msgid ""
" "
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "False"
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "True"
msgstr ""
#: .\cookbook\templates\system.html:196
#: .\cookbook\templates\system.html:207
msgid "Hide"
msgstr ""
#: .\cookbook\templates\system.html:199
#: .\cookbook\templates\system.html:210
#, fuzzy
#| msgid "Show Log"
msgid "Show"
@@ -2244,83 +2258,83 @@ msgstr "Afficher le journal"
msgid "URL Import"
msgstr "Import URL"
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr "Le paramètre «update_at» n'est pas correctement formaté"
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr "Il nexiste aucun(e) {self.basename} avec lidentifiant {pk}"
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr "Impossible de fusionner un objet avec lui-même !"
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr "Il nexiste aucun(e) {self.basename} avec lid {target}"
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr "Impossible de fusionner avec lobjet enfant !"
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr "{source.name} a été fusionné avec succès avec {target.name}"
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
"Une erreur est survenue lors de la tentative de fusion de {source.name} avec "
"{target.name}"
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr "{child.name} a été déplacé avec succès vers la racine."
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr "Une erreur est survenue en essayant de déplacer "
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr "Impossible de déplacer un objet vers lui-même !"
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr "Il nexiste aucun(e) {self.basename} avec lid {parent}"
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr "{child.name} a été déplacé avec succès vers le parent {parent.name}"
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr "{obj.name} a été supprimé(e) de la liste de courses."
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr "{obj.name} a été ajouté(e) à la liste de courses."
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\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."
@@ -2328,18 +2342,18 @@ msgstr ""
"Identifiant de la recette dont fait partie une étape. Pour plusieurs "
"paramètres de répétition."
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
"Identifiant de la recette dont fait partie une étape. Pour plusieurs "
"paramètres de répétition."
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
"Correspondance (floue) entre la chaîne de requête et le nom de l'objet."
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
@@ -2347,7 +2361,7 @@ msgstr ""
"La chaîne d'interrogation correspond (de manière floue) au nom de la "
"recette. À l'avenir, la recherche en texte intégral sera également possible."
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
@@ -2355,69 +2369,69 @@ msgstr ""
"ID du mot-clé qu'une recette doit avoir. Pour les paramètres à répétition "
"multiple. Equivalent à keywords_or"
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
"ID des mots-clés, répéter pour plusieurs. Retourner les recettes avec "
"n'importe quel mot-clé"
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
"ID des mots-clés, répéter pour plusieurs. Retourner les recettes contenant "
"tous les mots-clés."
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
"ID des mots-clés, répéter pour plusieurs. Exclure les recettes contenant "
"l'un des mots-clés."
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
"ID des mots-clés, répéter pour plusieurs. Exclure les recettes contenant "
"l'un des mots-clés."
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
"ID de l'aliment qu'une recette doit contenir. Pour les paramètres de "
"répétition multiples."
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
"ID des aliments, répéter pour plusieurs. Retourner les recettes contenant "
"l'un des aliments"
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
"ID des aliments, répéter pour plusieurs. Retourner les recettes avec tous "
"les aliments."
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
"ID des aliments, répéter pour plusieurs. Exclure les recettes contenant l'un "
"des aliments."
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
"ID des aliments, répéter pour plusieurs. Exclure les recettes contenant tous "
"les aliments."
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr "ID de l'unité qu'une recette doit avoir."
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
@@ -2425,128 +2439,128 @@ msgstr ""
"Note qu'une recette devrait avoir ou être supérieure. [0 - 5] Une valeur "
"négative filtre une note inférieure à."
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr "Rien à faire."
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr "Url non valide"
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr "Connexion refusée."
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr "Mauvais schéma dURL."
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
msgstr "Aucune information utilisable n'a été trouvée."
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr "Limportation nest pas implémentée pour ce fournisseur"
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
@@ -2554,11 +2568,11 @@ msgstr ""
"Cette fonctionnalité nest pas encore disponible dans la version hébergée de "
"Tandoor !"
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr "Synchronisation réussie !"
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr "Erreur lors de la synchronisation avec le stockage"
@@ -2695,7 +2709,7 @@ msgid "There was an error importing this recipe!"
msgstr "Une erreur est survenue lors de limportation de cette recette !"
#: .\cookbook\views\views.py:69 .\cookbook\views\views.py:177
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:418
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:423
msgid "This feature is not available in the demo version!"
msgstr "Cette fonctionnalité nest pas disponible dans la version dessai !"
@@ -2741,17 +2755,21 @@ msgid "Fuzzy search is not compatible with this search method!"
msgstr ""
"La recherche floue nest pas compatible avec cette méthode de recherche !"
#: .\cookbook\views\views.py:305
#: .\cookbook\views\views.py:306
#, python-format
msgid "PostgreSQL %(v)s is deprecated. Upgrade to a fully supported version!"
msgstr ""
#: .\cookbook\views\views.py:308
#: .\cookbook\views\views.py:309
#, python-format
msgid "You are running PostgreSQL %(v1)s. PostgreSQL %(v2)s is recommended"
msgstr ""
#: .\cookbook\views\views.py:312
#: .\cookbook\views\views.py:313
msgid "Unable to determine PostgreSQL version."
msgstr ""
#: .\cookbook\views\views.py:317
#, fuzzy
#| msgid ""
#| "\n"
@@ -2770,7 +2788,7 @@ msgstr ""
"de données Postgres.\n"
" "
#: .\cookbook\views\views.py:355
#: .\cookbook\views\views.py:360
#, fuzzy
#| msgid ""
#| "The setup page can only be used to create the first user! If you have "
@@ -2786,27 +2804,27 @@ msgstr ""
"utilisateur, counsultez la documentation Django pour savoir comment "
"réinitialiser le mot de passe."
#: .\cookbook\views\views.py:364
#: .\cookbook\views\views.py:369
msgid "Passwords dont match!"
msgstr "Les mots de passe ne correspondent pas !"
#: .\cookbook\views\views.py:372
#: .\cookbook\views\views.py:377
msgid "User has been created, please login!"
msgstr "Lutilisateur a été créé, veuillez vous connecter !"
#: .\cookbook\views\views.py:388
#: .\cookbook\views\views.py:393
msgid "Malformed Invite Link supplied!"
msgstr "Le lien dinvitation fourni est mal formé !"
#: .\cookbook\views\views.py:405
#: .\cookbook\views\views.py:410
msgid "Successfully joined space."
msgstr "Vous avez bien rejoint le groupe."
#: .\cookbook\views\views.py:411
#: .\cookbook\views\views.py:416
msgid "Invite Link not valid or already used!"
msgstr "Le lien dinvitation est invalide ou déjà utilisé !"
#: .\cookbook\views\views.py:427
#: .\cookbook\views\views.py:432
msgid ""
"Reporting share links is not enabled for this instance. Please notify the "
"page administrator to report problems."
@@ -2814,7 +2832,7 @@ msgstr ""
"Le signalement de liens partagés nest pas autorisé pour cette installation. "
"Veuillez contacter ladministrateur de la page pour signaler le problème."
#: .\cookbook\views\views.py:432
#: .\cookbook\views\views.py:437
msgid ""
"Recipe sharing link has been disabled! For additional information please "
"contact the page administrator."
@@ -2822,23 +2840,23 @@ msgstr ""
"Le lien de partage de la recette a été désactivé ! Pour plus dinformations, "
"veuillez contacter ladministrateur de la page."
#: .\cookbook\views\views.py:446
#: .\cookbook\views\views.py:451
msgid "Manage recipes, shopping list, meal plans and more."
msgstr ""
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "Plan"
msgstr "Menu"
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "View your meal Plan"
msgstr ""
#: .\cookbook\views\views.py:454
#: .\cookbook\views\views.py:459
msgid "View your cookbooks"
msgstr ""
#: .\cookbook\views\views.py:455
#: .\cookbook\views\views.py:460
#, fuzzy
#| msgid "New Shopping List"
msgid "View your shopping lists"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-03-21 14:39+0100\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2023-12-05 09:15+0000\n"
"Last-Translator: Ferenc <ugyes@freemail.hu>\n"
"Language-Team: Hungarian <http://translate.tandoor.dev/projects/tandoor/"
@@ -281,31 +281,31 @@ msgstr "Elérte a maximális számú receptet a helyén."
msgid "You have more users than allowed in your space."
msgstr "Több felhasználója van, mint amennyit engedélyeztek a térben."
#: .\cookbook\helper\recipe_url_import.py:304
#: .\cookbook\helper\recipe_url_import.py:310
msgid "reverse rotation"
msgstr "Ellentétes irány"
#: .\cookbook\helper\recipe_url_import.py:305
#: .\cookbook\helper\recipe_url_import.py:311
msgid "careful rotation"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:306
#: .\cookbook\helper\recipe_url_import.py:312
msgid "knead"
msgstr "dagasztás"
#: .\cookbook\helper\recipe_url_import.py:307
#: .\cookbook\helper\recipe_url_import.py:313
msgid "thicken"
msgstr "sűrítés"
#: .\cookbook\helper\recipe_url_import.py:308
#: .\cookbook\helper\recipe_url_import.py:314
msgid "warm up"
msgstr "melegítés"
#: .\cookbook\helper\recipe_url_import.py:309
#: .\cookbook\helper\recipe_url_import.py:315
msgid "ferment"
msgstr "fermentálás"
#: .\cookbook\helper\recipe_url_import.py:310
#: .\cookbook\helper\recipe_url_import.py:316
msgid "sous-vide"
msgstr "sous-vide"
@@ -427,7 +427,7 @@ msgstr "Ebéd"
msgid "Dinner"
msgstr "Vacsora"
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:920
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:919
msgid "Other"
msgstr "Egyéb"
@@ -465,47 +465,47 @@ msgstr ""
"Maximális tárhely a fájloknak MB-ban. 0 a korlátlan, -1 a fájlfeltöltés "
"letiltásához."
#: .\cookbook\models.py:455 .\cookbook\templates\search.html:7
#: .\cookbook\models.py:454 .\cookbook\templates\search.html:7
#: .\cookbook\templates\settings.html:18
msgid "Search"
msgstr "Keresés"
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:114
#: .\cookbook\models.py:455 .\cookbook\templates\base.html:114
#: .\cookbook\templates\meal_plan.html:7
msgid "Meal-Plan"
msgstr "Menüterv"
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:454
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:459
msgid "Books"
msgstr "Könyvek"
#: .\cookbook\models.py:458 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:455
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:460
msgid "Shopping"
msgstr "Bevásárlás"
#: .\cookbook\models.py:753
#: .\cookbook\models.py:752
msgid " is part of a recipe step and cannot be deleted"
msgstr " egy recept része, ezért nem törölhető"
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
#, fuzzy
#| msgid "Automations"
msgid "Nutrition"
msgstr "Automatizációk"
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
#, fuzzy
#| msgid "Merge"
msgid "Allergen"
msgstr "Egyesítés"
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Price"
msgstr ""
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Goal"
msgstr ""
@@ -2125,14 +2125,14 @@ msgid "Media Serving"
msgstr "Média kiszolgáló"
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:91
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:102 .\cookbook\templates\system.html:113
msgid "Warning"
msgstr "Figyelmeztetés"
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:93
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:104 .\cookbook\templates\system.html:113
msgid "Ok"
msgstr "Rendben"
@@ -2154,7 +2154,8 @@ msgstr ""
" "
#: .\cookbook\templates\system.html:55 .\cookbook\templates\system.html:70
#: .\cookbook\templates\system.html:83 .\cookbook\views\views.py:302
#: .\cookbook\templates\system.html:83 .\cookbook\templates\system.html:94
#: .\cookbook\views\views.py:303
msgid "Everything is fine!"
msgstr "Minden rendben van!"
@@ -2207,20 +2208,33 @@ msgstr ""
" "
#: .\cookbook\templates\system.html:86
msgid "Allowed Hosts"
msgstr ""
#: .\cookbook\templates\system.html:90
msgid ""
"\n"
" 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.\n"
" "
msgstr ""
#: .\cookbook\templates\system.html:97
msgid "Database"
msgstr "Adatbázis"
#: .\cookbook\templates\system.html:89
#: .\cookbook\templates\system.html:100
msgid "Info"
msgstr "Információ"
#: .\cookbook\templates\system.html:99 .\cookbook\templates\system.html:116
#: .\cookbook\templates\system.html:110 .\cookbook\templates\system.html:127
#, fuzzy
#| msgid "Use fractions"
msgid "Migrations"
msgstr "Törtek használata"
#: .\cookbook\templates\system.html:105
#: .\cookbook\templates\system.html:116
msgid ""
"\n"
" Migrations should never fail!\n"
@@ -2232,19 +2246,19 @@ msgid ""
" "
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "False"
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "True"
msgstr ""
#: .\cookbook\templates\system.html:196
#: .\cookbook\templates\system.html:207
msgid "Hide"
msgstr ""
#: .\cookbook\templates\system.html:199
#: .\cookbook\templates\system.html:210
#, fuzzy
#| msgid "Show Log"
msgid "Show"
@@ -2254,81 +2268,81 @@ msgstr "Napló megjelenítése"
msgid "URL Import"
msgstr "URL importálása"
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr "Az updated_at paraméter helytelenül van formázva"
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr "Nem létezik {self.basename} azonosítóval {pk}"
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr "Nem egyesíthető ugyanazzal az objektummal!"
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr "Nem létezik {self.basename} azonosítóval {target}"
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr "Nem lehet egyesíteni a gyermekobjektummal!"
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr "{source.name} sikeresen egyesült a {target.name} -vel"
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr "Hiba történt a {source.name} és a {target.name} egyesítése során"
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr "{child.name} sikeresen átkerült a gyökérbe."
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr "Hiba történt az áthelyezés közben "
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr "Nem lehet egy objektumot önmagába mozgatni!"
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr "Nem létezik {self.basename} azonosítóval {parent}"
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr "{child.name} sikeresen átkerült a {parent.name} szülőhöz"
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr "{obj.name} lekerült a bevásárlólistáról."
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr "{obj.name} hozzá lett adva a bevásárlólistához."
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\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."
@@ -2336,17 +2350,17 @@ msgstr ""
"A recept azonosítója, amelynek egy lépés része. Többszörös ismétlés esetén "
"paraméter."
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
"A recept azonosítója, amelynek egy lépés része. Többszörös ismétlés esetén "
"paraméter."
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr "A lekérdezés karakterlánca az objektum nevével összevetve (fuzzy)."
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
@@ -2354,7 +2368,7 @@ msgstr ""
"A lekérdezési karakterláncot a recept nevével összevetve (fuzzy). A jövőben "
"teljes szöveges keresés is."
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
@@ -2362,69 +2376,69 @@ msgstr ""
"A recept kulcsszavának azonosítója. Többszörös ismétlődő paraméter esetén. "
"Egyenértékű a keywords_or kulcsszavakkal"
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
"Kulcsszó azonosítók. Többször is megadható. A megadott kulcsszavak "
"mindegyikéhez tartozó receptek listázza"
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
"Kulcsszó azonosítók. Többször is megadható. Az összes megadott kulcsszót "
"tartalmazó receptek listázása."
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
"Kulcsszó azonosító. Többször is megadható. Kizárja a recepteket a megadott "
"kulcsszavak egyikéből."
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
"Kulcsszó azonosítók. Többször is megadható. Kizárja az összes megadott "
"kulcsszóval rendelkező receptet."
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
"Annak az összetevőnek az azonosítója, amelynek receptjeit fel kell sorolni. "
"Többször is megadható."
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
"Összetevő azonosító. Többször is megadható. Legalább egy összetevő "
"receptjeinek listája"
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
"Összetevő azonosító. Többször is megadható. Az összes megadott összetevőt "
"tartalmazó receptek listája."
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
"Összetevő azonosító. Többször is megadható. Kizárja azokat a recepteket, "
"amelyek a megadott összetevők bármelyikét tartalmazzák."
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
"Összetevő azonosító. Többször is megadható. Kizárja az összes megadott "
"összetevőt tartalmazó recepteket."
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr "A recepthez tartozó mértékegység azonosítója."
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
@@ -2432,51 +2446,51 @@ msgstr ""
"Egy recept minimális értékelése (0-5). A negatív értékek a maximális "
"értékelés szerint szűrnek."
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
"A könyv azonosítója, amelyben a recept található. Többször is megadható."
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
"A könyv azonosítója. Többször is megadható. A megadott könyvek összes "
"receptjének listája"
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
"A könyv azonosítója. Többször is megadható. Az összes könyvben szereplő "
"recept listája."
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
"A könyv azonosítói. Többször is megadható. Kizárja a megadott könyvek "
"receptjeit."
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
"A könyv azonosítói. Többször is megadható. Kizárja az összes megadott "
"könyvben szereplő receptet."
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr "Ha csak a belső recepteket kell visszaadni. [true/<b>false</b>]"
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
"Az eredményeket véletlenszerű sorrendben adja vissza. [true/<b>false</b>]"
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
"Az új találatokat adja vissza először a keresési eredmények között. [true/"
"<b>false</b>]"
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
@@ -2484,7 +2498,7 @@ msgstr ""
"X-szer vagy többször főzött receptek szűrése. A negatív értékek X "
"alkalomnál kevesebbet főzött recepteket jelenítik meg"
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
@@ -2493,7 +2507,7 @@ msgstr ""
"vagy később főztek meg utoljára. A - jelölve az adott dátumon vagy azt "
"megelőzően elkészítettek kerülnek be a receptek listájába."
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
@@ -2502,7 +2516,7 @@ msgstr ""
"vagy később hoztak létre. A - jelölve az adott dátumon vagy azt megelőzően "
"hozták létre."
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
@@ -2511,7 +2525,7 @@ msgstr ""
"vagy később frissültek. A - jelölve az adott dátumon vagy azt megelőzően "
"frissültek."
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
@@ -2520,13 +2534,13 @@ msgstr ""
"vagy később néztek meg utoljára. A - jelölve az adott dátumon vagy azt "
"megelőzően néztek meg utoljára."
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
"Felsorolja azokat a recepteket, amelyeket a rendelkezésre álló összetevőkből "
"el lehet készíteni. [true/<b>false</b>]"
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
@@ -2534,7 +2548,7 @@ msgstr ""
"Visszaadja az id elsődleges kulccsal rendelkező bevásárlólista-bejegyzést. "
"Több érték megengedett."
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
#, fuzzy
#| msgid ""
#| "Filter shopping list entries on checked. [true, false, both, <b>recent</"
@@ -2548,17 +2562,17 @@ msgstr ""
"mindkettő, <b>legutóbbi</b>]<br> a legutóbbi a nem bejelölt és a nemrég "
"befejezett elemeket tartalmazza."
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
"Visszaadja a bevásárlólista bejegyzéseit szupermarket kategóriák szerinti "
"sorrendben."
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
#, fuzzy
#| msgid ""
#| "Returns the shopping list entry with a primary key of id. Multiple "
@@ -2570,45 +2584,45 @@ msgstr ""
"Visszaadja az id elsődleges kulccsal rendelkező bevásárlólista-bejegyzést. "
"Több érték megengedett."
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr "Semmi feladat."
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr "Érvénytelen URL"
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr "Kapcsolat megtagadva."
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr "Rossz URL séma."
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
msgstr "Nem sikerült használható adatokat találni."
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr "Az importálás nincs implementálva ennél a szolgáltatónál"
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr "Ez a funkció még nem érhető el a tandoor hosztolt verziójában!"
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr "Szinkronizálás sikeres!"
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr "Hiba szinkronizálás közben a tárolóval"
@@ -2746,7 +2760,7 @@ msgid "There was an error importing this recipe!"
msgstr "Hiba történt a recept importálásakor!"
#: .\cookbook\views\views.py:69 .\cookbook\views\views.py:177
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:418
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:423
msgid "This feature is not available in the demo version!"
msgstr "Ez a funkció nem érhető el a demó verzióban!"
@@ -2789,17 +2803,21 @@ msgstr ""
msgid "Fuzzy search is not compatible with this search method!"
msgstr "A bizonytalan keresés nem kompatibilis ezzel a keresési módszerrel!"
#: .\cookbook\views\views.py:305
#: .\cookbook\views\views.py:306
#, python-format
msgid "PostgreSQL %(v)s is deprecated. Upgrade to a fully supported version!"
msgstr ""
#: .\cookbook\views\views.py:308
#: .\cookbook\views\views.py:309
#, python-format
msgid "You are running PostgreSQL %(v1)s. PostgreSQL %(v2)s is recommended"
msgstr ""
#: .\cookbook\views\views.py:312
#: .\cookbook\views\views.py:313
msgid "Unable to determine PostgreSQL version."
msgstr ""
#: .\cookbook\views\views.py:317
#, fuzzy
#| msgid ""
#| "\n"
@@ -2817,7 +2835,7 @@ msgstr ""
" funkciók csak Postgres adatbázisokkal működnek.\n"
" "
#: .\cookbook\views\views.py:355
#: .\cookbook\views\views.py:360
#, fuzzy
#| msgid ""
#| "The setup page can only be used to create the first user! If you have "
@@ -2832,27 +2850,27 @@ msgstr ""
"elfelejtette a szuperfelhasználói hitelesítő adatait, kérjük, olvassa el a "
"django dokumentációját a jelszavak visszaállításáról."
#: .\cookbook\views\views.py:364
#: .\cookbook\views\views.py:369
msgid "Passwords dont match!"
msgstr "A jelszavak nem egyeznek!"
#: .\cookbook\views\views.py:372
#: .\cookbook\views\views.py:377
msgid "User has been created, please login!"
msgstr "A felhasználó létre lett hozva, kérjük, jelentkezzen be!"
#: .\cookbook\views\views.py:388
#: .\cookbook\views\views.py:393
msgid "Malformed Invite Link supplied!"
msgstr "Hibás meghívó linket küldtek!"
#: .\cookbook\views\views.py:405
#: .\cookbook\views\views.py:410
msgid "Successfully joined space."
msgstr "Sikeresen csatlakozott az térhez."
#: .\cookbook\views\views.py:411
#: .\cookbook\views\views.py:416
msgid "Invite Link not valid or already used!"
msgstr "A meghívó link nem érvényes vagy már felhasználásra került!"
#: .\cookbook\views\views.py:427
#: .\cookbook\views\views.py:432
msgid ""
"Reporting share links is not enabled for this instance. Please notify the "
"page administrator to report problems."
@@ -2860,7 +2878,7 @@ msgstr ""
"A megosztási hivatkozások jelentése nem engedélyezett ezen a példányon. "
"Kérjük, a problémák jelentéséhez értesítse az oldal adminisztrátorát."
#: .\cookbook\views\views.py:432
#: .\cookbook\views\views.py:437
msgid ""
"Recipe sharing link has been disabled! For additional information please "
"contact the page administrator."
@@ -2868,25 +2886,25 @@ msgstr ""
"A receptmegosztó linket letiltották! További információkért kérjük, "
"forduljon az oldal adminisztrátorához."
#: .\cookbook\views\views.py:446
#: .\cookbook\views\views.py:451
msgid "Manage recipes, shopping list, meal plans and more."
msgstr ""
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
#, fuzzy
#| msgid "Meal-Plan"
msgid "Plan"
msgstr "Menüterv"
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "View your meal Plan"
msgstr ""
#: .\cookbook\views\views.py:454
#: .\cookbook\views\views.py:459
msgid "View your cookbooks"
msgstr ""
#: .\cookbook\views\views.py:455
#: .\cookbook\views\views.py:460
#, fuzzy
#| msgid "New Shopping List"
msgid "View your shopping lists"

View File

@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-03-21 14:39+0100\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2023-01-08 17:55+0000\n"
"Last-Translator: Joachim Weber <joachim.weber@gmx.de>\n"
"Language-Team: Armenian <http://translate.tandoor.dev/projects/tandoor/"
@@ -260,31 +260,31 @@ msgstr ""
msgid "You have more users than allowed in your space."
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:304
#: .\cookbook\helper\recipe_url_import.py:310
msgid "reverse rotation"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:305
#: .\cookbook\helper\recipe_url_import.py:311
msgid "careful rotation"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:306
#: .\cookbook\helper\recipe_url_import.py:312
msgid "knead"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:307
#: .\cookbook\helper\recipe_url_import.py:313
msgid "thicken"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:308
#: .\cookbook\helper\recipe_url_import.py:314
msgid "warm up"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:309
#: .\cookbook\helper\recipe_url_import.py:315
msgid "ferment"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:310
#: .\cookbook\helper\recipe_url_import.py:316
msgid "sous-vide"
msgstr ""
@@ -409,7 +409,7 @@ msgstr "Ճաշ"
msgid "Dinner"
msgstr "Ընթրիք"
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:920
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:919
msgid "Other"
msgstr "Այլ"
@@ -447,45 +447,45 @@ msgid ""
"upload."
msgstr ""
#: .\cookbook\models.py:455 .\cookbook\templates\search.html:7
#: .\cookbook\models.py:454 .\cookbook\templates\search.html:7
#: .\cookbook\templates\settings.html:18
msgid "Search"
msgstr "Փնտրել"
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:114
#: .\cookbook\models.py:455 .\cookbook\templates\base.html:114
#: .\cookbook\templates\meal_plan.html:7
msgid "Meal-Plan"
msgstr "Ճաշացուցակ"
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:454
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:459
msgid "Books"
msgstr "Գրքեր"
#: .\cookbook\models.py:458 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:455
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:460
msgid "Shopping"
msgstr "Գնումներ"
#: .\cookbook\models.py:753
#: .\cookbook\models.py:752
msgid " is part of a recipe step and cannot be deleted"
msgstr ""
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
msgid "Nutrition"
msgstr "Սննդայնություն"
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
#, fuzzy
#| msgid "Merge"
msgid "Allergen"
msgstr "Միավորել"
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Price"
msgstr ""
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Goal"
msgstr ""
@@ -1982,14 +1982,14 @@ msgid "Media Serving"
msgstr "Մեդիայի մատուցում"
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:91
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:102 .\cookbook\templates\system.html:113
msgid "Warning"
msgstr "Զգուշացում"
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:93
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:104 .\cookbook\templates\system.html:113
msgid "Ok"
msgstr "Լավ է"
@@ -2011,7 +2011,8 @@ msgstr ""
" "
#: .\cookbook\templates\system.html:55 .\cookbook\templates\system.html:70
#: .\cookbook\templates\system.html:83 .\cookbook\views\views.py:302
#: .\cookbook\templates\system.html:83 .\cookbook\templates\system.html:94
#: .\cookbook\views\views.py:303
msgid "Everything is fine!"
msgstr "Ամեն բան նորմալ է։"
@@ -2062,18 +2063,31 @@ msgstr ""
" "
#: .\cookbook\templates\system.html:86
msgid "Allowed Hosts"
msgstr ""
#: .\cookbook\templates\system.html:90
msgid ""
"\n"
" 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.\n"
" "
msgstr ""
#: .\cookbook\templates\system.html:97
msgid "Database"
msgstr "Շտեմարան"
#: .\cookbook\templates\system.html:89
#: .\cookbook\templates\system.html:100
msgid "Info"
msgstr "Տեղեկություն"
#: .\cookbook\templates\system.html:99 .\cookbook\templates\system.html:116
#: .\cookbook\templates\system.html:110 .\cookbook\templates\system.html:127
msgid "Migrations"
msgstr ""
#: .\cookbook\templates\system.html:105
#: .\cookbook\templates\system.html:116
msgid ""
"\n"
" Migrations should never fail!\n"
@@ -2085,19 +2099,19 @@ msgid ""
" "
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "False"
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "True"
msgstr ""
#: .\cookbook\templates\system.html:196
#: .\cookbook\templates\system.html:207
msgid "Hide"
msgstr ""
#: .\cookbook\templates\system.html:199
#: .\cookbook\templates\system.html:210
#, fuzzy
#| msgid "Show help"
msgid "Show"
@@ -2107,282 +2121,282 @@ msgstr "Ցուցադրել օգնություն"
msgid "URL Import"
msgstr "URL ներմուծում"
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
#, fuzzy
#| msgid "Parameter filter_list incorrectly formatted"
msgid "Parameter updated_at incorrectly formatted"
msgstr "filter_list պարամետրը սխալ է ձևավորված"
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr ""
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr "Հնարավոր չէ միավորել նույն օբյեկտի հետ:"
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr ""
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
#, fuzzy
#| msgid "Cannot merge with the same object!"
msgid "Cannot merge with child object!"
msgstr "Հնարավոր չէ միավորել նույն օբյեկտի հետ:"
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr ""
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr ""
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr ""
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr ""
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr ""
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr ""
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr ""
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
msgstr ""
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr ""
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr ""
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr ""
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr ""
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
#, fuzzy
#| msgid "The requested page could not be found."
msgid "No usable data could be found."
msgstr "Պահանջվող էջը չի գտնվել:"
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr "Ներմուծումն այս պրովայդերի համար իրականացված չէ"
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
#, fuzzy
@@ -2390,11 +2404,11 @@ msgstr "Ներմուծումն այս պրովայդերի համար իրակա
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr "Այս հատկությունը հասանելի չէ փորձնական տարբերակում։"
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr "Սինքրոնիզացիան հաջողված է:"
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr "Պահոցի հետ սինքրոնիզացիայի սխալ"
@@ -2533,7 +2547,7 @@ msgid "There was an error importing this recipe!"
msgstr "Այս բաղադրատոմսի ներմուծման ժամանակ սխալ է գրանցվել։"
#: .\cookbook\views\views.py:69 .\cookbook\views\views.py:177
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:418
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:423
msgid "This feature is not available in the demo version!"
msgstr "Այս հատկությունը հասանելի չէ փորձնական տարբերակում։"
@@ -2570,17 +2584,21 @@ msgstr ""
msgid "Fuzzy search is not compatible with this search method!"
msgstr ""
#: .\cookbook\views\views.py:305
#: .\cookbook\views\views.py:306
#, python-format
msgid "PostgreSQL %(v)s is deprecated. Upgrade to a fully supported version!"
msgstr ""
#: .\cookbook\views\views.py:308
#: .\cookbook\views\views.py:309
#, python-format
msgid "You are running PostgreSQL %(v1)s. PostgreSQL %(v2)s is recommended"
msgstr ""
#: .\cookbook\views\views.py:312
#: .\cookbook\views\views.py:313
msgid "Unable to determine PostgreSQL version."
msgstr ""
#: .\cookbook\views\views.py:317
#, fuzzy
#| msgid ""
#| "\n"
@@ -2598,7 +2616,7 @@ msgstr ""
" հատկություններ աշխատում են միայն postgres շտեմարանների հետ։\n"
" "
#: .\cookbook\views\views.py:355
#: .\cookbook\views\views.py:360
#, fuzzy
#| msgid ""
#| "The setup page can only be used to create the first user! If you have "
@@ -2613,55 +2631,55 @@ msgstr ""
"համար։ Եթե մոռացել եք ձեր սուպեր-օգտատերի գաղտնաբառը, խնդրում ենք ստուգել "
"django-ի փաստաթղթերը գաղտնաբառը վերականգնելու ցուցումների համար։"
#: .\cookbook\views\views.py:364
#: .\cookbook\views\views.py:369
msgid "Passwords dont match!"
msgstr "Գաղտնաբառերը չեն համընկնում:"
#: .\cookbook\views\views.py:372
#: .\cookbook\views\views.py:377
msgid "User has been created, please login!"
msgstr "Օգտատերը ստեղծված է, խնդրում ենք մուտք գործել։"
#: .\cookbook\views\views.py:388
#: .\cookbook\views\views.py:393
msgid "Malformed Invite Link supplied!"
msgstr "Հրավերի արատավոր հղում է տրամադրվել։"
#: .\cookbook\views\views.py:405
#: .\cookbook\views\views.py:410
msgid "Successfully joined space."
msgstr ""
#: .\cookbook\views\views.py:411
#: .\cookbook\views\views.py:416
msgid "Invite Link not valid or already used!"
msgstr "Հրավերի հղումը վավեր չէ, կամ արդեն օգտագործվել է:"
#: .\cookbook\views\views.py:427
#: .\cookbook\views\views.py:432
msgid ""
"Reporting share links is not enabled for this instance. Please notify the "
"page administrator to report problems."
msgstr ""
#: .\cookbook\views\views.py:432
#: .\cookbook\views\views.py:437
msgid ""
"Recipe sharing link has been disabled! For additional information please "
"contact the page administrator."
msgstr ""
#: .\cookbook\views\views.py:446
#: .\cookbook\views\views.py:451
msgid "Manage recipes, shopping list, meal plans and more."
msgstr ""
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "Plan"
msgstr "Պլան"
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "View your meal Plan"
msgstr ""
#: .\cookbook\views\views.py:454
#: .\cookbook\views\views.py:459
msgid "View your cookbooks"
msgstr ""
#: .\cookbook\views\views.py:455
#: .\cookbook\views\views.py:460
#, fuzzy
#| msgid "Shopping Lists"
msgid "View your shopping lists"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-03-21 14:39+0100\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2022-10-12 08:33+0000\n"
"Last-Translator: wella <wella.design@gmail.com>\n"
"Language-Team: Indonesian <http://translate.tandoor.dev/projects/tandoor/"
@@ -267,33 +267,33 @@ msgstr ""
msgid "You have more users than allowed in your space."
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:304
#: .\cookbook\helper\recipe_url_import.py:310
#, fuzzy
#| msgid "Use fractions"
msgid "reverse rotation"
msgstr "Gunakan pecahan"
#: .\cookbook\helper\recipe_url_import.py:305
#: .\cookbook\helper\recipe_url_import.py:311
msgid "careful rotation"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:306
#: .\cookbook\helper\recipe_url_import.py:312
msgid "knead"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:307
#: .\cookbook\helper\recipe_url_import.py:313
msgid "thicken"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:308
#: .\cookbook\helper\recipe_url_import.py:314
msgid "warm up"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:309
#: .\cookbook\helper\recipe_url_import.py:315
msgid "ferment"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:310
#: .\cookbook\helper\recipe_url_import.py:316
msgid "sous-vide"
msgstr ""
@@ -409,7 +409,7 @@ msgstr ""
msgid "Dinner"
msgstr ""
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:920
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:919
msgid "Other"
msgstr ""
@@ -445,43 +445,43 @@ msgid ""
"upload."
msgstr ""
#: .\cookbook\models.py:455 .\cookbook\templates\search.html:7
#: .\cookbook\models.py:454 .\cookbook\templates\search.html:7
#: .\cookbook\templates\settings.html:18
msgid "Search"
msgstr ""
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:114
#: .\cookbook\models.py:455 .\cookbook\templates\base.html:114
#: .\cookbook\templates\meal_plan.html:7
msgid "Meal-Plan"
msgstr ""
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:454
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:459
msgid "Books"
msgstr ""
#: .\cookbook\models.py:458 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:455
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:460
msgid "Shopping"
msgstr ""
#: .\cookbook\models.py:753
#: .\cookbook\models.py:752
msgid " is part of a recipe step and cannot be deleted"
msgstr ""
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
msgid "Nutrition"
msgstr ""
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
msgid "Allergen"
msgstr ""
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Price"
msgstr ""
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Goal"
msgstr ""
@@ -1844,14 +1844,14 @@ msgid "Media Serving"
msgstr ""
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:91
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:102 .\cookbook\templates\system.html:113
msgid "Warning"
msgstr ""
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:93
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:104 .\cookbook\templates\system.html:113
msgid "Ok"
msgstr ""
@@ -1866,7 +1866,8 @@ msgid ""
msgstr ""
#: .\cookbook\templates\system.html:55 .\cookbook\templates\system.html:70
#: .\cookbook\templates\system.html:83 .\cookbook\views\views.py:302
#: .\cookbook\templates\system.html:83 .\cookbook\templates\system.html:94
#: .\cookbook\views\views.py:303
msgid "Everything is fine!"
msgstr ""
@@ -1903,20 +1904,33 @@ msgid ""
msgstr ""
#: .\cookbook\templates\system.html:86
msgid "Allowed Hosts"
msgstr ""
#: .\cookbook\templates\system.html:90
msgid ""
"\n"
" 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.\n"
" "
msgstr ""
#: .\cookbook\templates\system.html:97
msgid "Database"
msgstr ""
#: .\cookbook\templates\system.html:89
#: .\cookbook\templates\system.html:100
msgid "Info"
msgstr ""
#: .\cookbook\templates\system.html:99 .\cookbook\templates\system.html:116
#: .\cookbook\templates\system.html:110 .\cookbook\templates\system.html:127
#, fuzzy
#| msgid "Use fractions"
msgid "Migrations"
msgstr "Gunakan pecahan"
#: .\cookbook\templates\system.html:105
#: .\cookbook\templates\system.html:116
msgid ""
"\n"
" Migrations should never fail!\n"
@@ -1928,19 +1942,19 @@ msgid ""
" "
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "False"
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "True"
msgstr ""
#: .\cookbook\templates\system.html:196
#: .\cookbook\templates\system.html:207
msgid "Hide"
msgstr ""
#: .\cookbook\templates\system.html:199
#: .\cookbook\templates\system.html:210
msgid "Show"
msgstr ""
@@ -1948,286 +1962,286 @@ msgstr ""
msgid "URL Import"
msgstr ""
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr ""
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr ""
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr ""
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr ""
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr ""
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr ""
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr ""
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr ""
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr ""
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr ""
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr ""
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr ""
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
msgstr ""
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr ""
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr ""
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr ""
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr ""
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
msgstr ""
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr ""
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr ""
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr ""
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr ""
@@ -2350,7 +2364,7 @@ msgid "There was an error importing this recipe!"
msgstr ""
#: .\cookbook\views\views.py:69 .\cookbook\views\views.py:177
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:418
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:423
msgid "This feature is not available in the demo version!"
msgstr ""
@@ -2387,78 +2401,82 @@ msgstr ""
msgid "Fuzzy search is not compatible with this search method!"
msgstr ""
#: .\cookbook\views\views.py:305
#: .\cookbook\views\views.py:306
#, python-format
msgid "PostgreSQL %(v)s is deprecated. Upgrade to a fully supported version!"
msgstr ""
#: .\cookbook\views\views.py:308
#: .\cookbook\views\views.py:309
#, python-format
msgid "You are running PostgreSQL %(v1)s. PostgreSQL %(v2)s is recommended"
msgstr ""
#: .\cookbook\views\views.py:312
#: .\cookbook\views\views.py:313
msgid "Unable to determine PostgreSQL version."
msgstr ""
#: .\cookbook\views\views.py:317
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 ""
#: .\cookbook\views\views.py:355
#: .\cookbook\views\views.py:360
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 ""
#: .\cookbook\views\views.py:364
#: .\cookbook\views\views.py:369
msgid "Passwords dont match!"
msgstr ""
#: .\cookbook\views\views.py:372
#: .\cookbook\views\views.py:377
msgid "User has been created, please login!"
msgstr ""
#: .\cookbook\views\views.py:388
#: .\cookbook\views\views.py:393
msgid "Malformed Invite Link supplied!"
msgstr ""
#: .\cookbook\views\views.py:405
#: .\cookbook\views\views.py:410
msgid "Successfully joined space."
msgstr ""
#: .\cookbook\views\views.py:411
#: .\cookbook\views\views.py:416
msgid "Invite Link not valid or already used!"
msgstr ""
#: .\cookbook\views\views.py:427
#: .\cookbook\views\views.py:432
msgid ""
"Reporting share links is not enabled for this instance. Please notify the "
"page administrator to report problems."
msgstr ""
#: .\cookbook\views\views.py:432
#: .\cookbook\views\views.py:437
msgid ""
"Recipe sharing link has been disabled! For additional information please "
"contact the page administrator."
msgstr ""
#: .\cookbook\views\views.py:446
#: .\cookbook\views\views.py:451
msgid "Manage recipes, shopping list, meal plans and more."
msgstr ""
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "Plan"
msgstr ""
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "View your meal Plan"
msgstr ""
#: .\cookbook\views\views.py:454
#: .\cookbook\views\views.py:459
msgid "View your cookbooks"
msgstr ""
#: .\cookbook\views\views.py:455
#: .\cookbook\views\views.py:460
#, fuzzy
#| msgid "Users with whom to share shopping lists."
msgid "View your shopping lists"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-03-21 14:39+0100\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2023-08-19 21:36+0000\n"
"Last-Translator: NeoID <neoid@animenord.com>\n"
"Language-Team: Norwegian Bokmål <http://translate.tandoor.dev/projects/"
@@ -256,31 +256,31 @@ msgstr ""
msgid "You have more users than allowed in your space."
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:304
#: .\cookbook\helper\recipe_url_import.py:310
msgid "reverse rotation"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:305
#: .\cookbook\helper\recipe_url_import.py:311
msgid "careful rotation"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:306
#: .\cookbook\helper\recipe_url_import.py:312
msgid "knead"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:307
#: .\cookbook\helper\recipe_url_import.py:313
msgid "thicken"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:308
#: .\cookbook\helper\recipe_url_import.py:314
msgid "warm up"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:309
#: .\cookbook\helper\recipe_url_import.py:315
msgid "ferment"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:310
#: .\cookbook\helper\recipe_url_import.py:316
msgid "sous-vide"
msgstr ""
@@ -400,7 +400,7 @@ msgstr "Lunsj"
msgid "Dinner"
msgstr "Middag"
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:920
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:919
msgid "Other"
msgstr "Annet"
@@ -438,45 +438,45 @@ msgid ""
"upload."
msgstr ""
#: .\cookbook\models.py:455 .\cookbook\templates\search.html:7
#: .\cookbook\models.py:454 .\cookbook\templates\search.html:7
#: .\cookbook\templates\settings.html:18
msgid "Search"
msgstr "Søk"
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:114
#: .\cookbook\models.py:455 .\cookbook\templates\base.html:114
#: .\cookbook\templates\meal_plan.html:7
msgid "Meal-Plan"
msgstr "Måltidsplan"
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:454
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:459
msgid "Books"
msgstr "Bøker"
#: .\cookbook\models.py:458 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:455
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:460
msgid "Shopping"
msgstr "Handle"
#: .\cookbook\models.py:753
#: .\cookbook\models.py:752
msgid " is part of a recipe step and cannot be deleted"
msgstr ""
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
msgid "Nutrition"
msgstr "Næringsinnhold"
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
#, fuzzy
#| msgid "Merge"
msgid "Allergen"
msgstr "Slå sammen"
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Price"
msgstr ""
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Goal"
msgstr ""
@@ -1935,14 +1935,14 @@ msgid "Media Serving"
msgstr ""
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:91
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:102 .\cookbook\templates\system.html:113
msgid "Warning"
msgstr ""
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:93
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:104 .\cookbook\templates\system.html:113
msgid "Ok"
msgstr "OK"
@@ -1957,7 +1957,8 @@ msgid ""
msgstr ""
#: .\cookbook\templates\system.html:55 .\cookbook\templates\system.html:70
#: .\cookbook\templates\system.html:83 .\cookbook\views\views.py:302
#: .\cookbook\templates\system.html:83 .\cookbook\templates\system.html:94
#: .\cookbook\views\views.py:303
msgid "Everything is fine!"
msgstr ""
@@ -1994,18 +1995,31 @@ msgid ""
msgstr ""
#: .\cookbook\templates\system.html:86
msgid "Allowed Hosts"
msgstr ""
#: .\cookbook\templates\system.html:90
msgid ""
"\n"
" 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.\n"
" "
msgstr ""
#: .\cookbook\templates\system.html:97
msgid "Database"
msgstr "Database"
#: .\cookbook\templates\system.html:89
#: .\cookbook\templates\system.html:100
msgid "Info"
msgstr "Info"
#: .\cookbook\templates\system.html:99 .\cookbook\templates\system.html:116
#: .\cookbook\templates\system.html:110 .\cookbook\templates\system.html:127
msgid "Migrations"
msgstr ""
#: .\cookbook\templates\system.html:105
#: .\cookbook\templates\system.html:116
msgid ""
"\n"
" Migrations should never fail!\n"
@@ -2017,19 +2031,19 @@ msgid ""
" "
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "False"
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "True"
msgstr ""
#: .\cookbook\templates\system.html:196
#: .\cookbook\templates\system.html:207
msgid "Hide"
msgstr ""
#: .\cookbook\templates\system.html:199
#: .\cookbook\templates\system.html:210
#, fuzzy
#| msgid "Show help"
msgid "Show"
@@ -2039,286 +2053,286 @@ msgstr "Vis hjelp"
msgid "URL Import"
msgstr ""
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr ""
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr ""
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr ""
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr ""
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr ""
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr ""
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr ""
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr ""
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr ""
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr ""
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr ""
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr ""
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
msgstr ""
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr ""
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr ""
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr ""
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr ""
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
msgstr ""
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr ""
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr ""
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr ""
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr ""
@@ -2450,7 +2464,7 @@ msgid "There was an error importing this recipe!"
msgstr ""
#: .\cookbook\views\views.py:69 .\cookbook\views\views.py:177
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:418
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:423
msgid "This feature is not available in the demo version!"
msgstr ""
@@ -2487,78 +2501,82 @@ msgstr ""
msgid "Fuzzy search is not compatible with this search method!"
msgstr ""
#: .\cookbook\views\views.py:305
#: .\cookbook\views\views.py:306
#, python-format
msgid "PostgreSQL %(v)s is deprecated. Upgrade to a fully supported version!"
msgstr ""
#: .\cookbook\views\views.py:308
#: .\cookbook\views\views.py:309
#, python-format
msgid "You are running PostgreSQL %(v1)s. PostgreSQL %(v2)s is recommended"
msgstr ""
#: .\cookbook\views\views.py:312
#: .\cookbook\views\views.py:313
msgid "Unable to determine PostgreSQL version."
msgstr ""
#: .\cookbook\views\views.py:317
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 ""
#: .\cookbook\views\views.py:355
#: .\cookbook\views\views.py:360
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 ""
#: .\cookbook\views\views.py:364
#: .\cookbook\views\views.py:369
msgid "Passwords dont match!"
msgstr ""
#: .\cookbook\views\views.py:372
#: .\cookbook\views\views.py:377
msgid "User has been created, please login!"
msgstr ""
#: .\cookbook\views\views.py:388
#: .\cookbook\views\views.py:393
msgid "Malformed Invite Link supplied!"
msgstr ""
#: .\cookbook\views\views.py:405
#: .\cookbook\views\views.py:410
msgid "Successfully joined space."
msgstr ""
#: .\cookbook\views\views.py:411
#: .\cookbook\views\views.py:416
msgid "Invite Link not valid or already used!"
msgstr ""
#: .\cookbook\views\views.py:427
#: .\cookbook\views\views.py:432
msgid ""
"Reporting share links is not enabled for this instance. Please notify the "
"page administrator to report problems."
msgstr ""
#: .\cookbook\views\views.py:432
#: .\cookbook\views\views.py:437
msgid ""
"Recipe sharing link has been disabled! For additional information please "
"contact the page administrator."
msgstr ""
#: .\cookbook\views\views.py:446
#: .\cookbook\views\views.py:451
msgid "Manage recipes, shopping list, meal plans and more."
msgstr ""
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "Plan"
msgstr "Plan"
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "View your meal Plan"
msgstr ""
#: .\cookbook\views\views.py:454
#: .\cookbook\views\views.py:459
msgid "View your cookbooks"
msgstr ""
#: .\cookbook\views\views.py:455
#: .\cookbook\views\views.py:460
#, fuzzy
#| msgid "Open Shopping List"
msgid "View your shopping lists"

File diff suppressed because it is too large Load Diff

View File

@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-03-21 14:39+0100\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2024-03-19 23:47+0000\n"
"Last-Translator: Tomasz Klimczak <klemensble@gmail.com>\n"
"Language-Team: Polish <http://translate.tandoor.dev/projects/tandoor/recipes-"
@@ -261,31 +261,31 @@ msgstr ""
msgid "You have more users than allowed in your space."
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:304
#: .\cookbook\helper\recipe_url_import.py:310
msgid "reverse rotation"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:305
#: .\cookbook\helper\recipe_url_import.py:311
msgid "careful rotation"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:306
#: .\cookbook\helper\recipe_url_import.py:312
msgid "knead"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:307
#: .\cookbook\helper\recipe_url_import.py:313
msgid "thicken"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:308
#: .\cookbook\helper\recipe_url_import.py:314
msgid "warm up"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:309
#: .\cookbook\helper\recipe_url_import.py:315
msgid "ferment"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:310
#: .\cookbook\helper\recipe_url_import.py:316
msgid "sous-vide"
msgstr ""
@@ -407,7 +407,7 @@ msgstr "Lunch"
msgid "Dinner"
msgstr "Obiad"
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:920
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:919
msgid "Other"
msgstr "Inne"
@@ -445,45 +445,45 @@ msgid ""
"upload."
msgstr ""
#: .\cookbook\models.py:455 .\cookbook\templates\search.html:7
#: .\cookbook\models.py:454 .\cookbook\templates\search.html:7
#: .\cookbook\templates\settings.html:18
msgid "Search"
msgstr "Szukaj"
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:114
#: .\cookbook\models.py:455 .\cookbook\templates\base.html:114
#: .\cookbook\templates\meal_plan.html:7
msgid "Meal-Plan"
msgstr "Plan posiłków"
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:454
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:459
msgid "Books"
msgstr "Książki"
#: .\cookbook\models.py:458 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:455
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:460
msgid "Shopping"
msgstr "Zakupy"
#: .\cookbook\models.py:753
#: .\cookbook\models.py:752
msgid " is part of a recipe step and cannot be deleted"
msgstr ""
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
msgid "Nutrition"
msgstr "Wartość odżywcza"
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
#, fuzzy
#| msgid "Merge"
msgid "Allergen"
msgstr "Połącz"
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Price"
msgstr ""
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Goal"
msgstr ""
@@ -1968,14 +1968,14 @@ msgid "Media Serving"
msgstr "Obsługa multimediów"
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:91
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:102 .\cookbook\templates\system.html:113
msgid "Warning"
msgstr "Uwaga"
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:93
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:104 .\cookbook\templates\system.html:113
msgid "Ok"
msgstr "Ok"
@@ -1997,7 +1997,8 @@ msgstr ""
" "
#: .\cookbook\templates\system.html:55 .\cookbook\templates\system.html:70
#: .\cookbook\templates\system.html:83 .\cookbook\views\views.py:302
#: .\cookbook\templates\system.html:83 .\cookbook\templates\system.html:94
#: .\cookbook\views\views.py:303
msgid "Everything is fine!"
msgstr "Wszystko w porządku!"
@@ -2049,18 +2050,31 @@ msgstr ""
" "
#: .\cookbook\templates\system.html:86
msgid "Allowed Hosts"
msgstr ""
#: .\cookbook\templates\system.html:90
msgid ""
"\n"
" 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.\n"
" "
msgstr ""
#: .\cookbook\templates\system.html:97
msgid "Database"
msgstr "Baza danych"
#: .\cookbook\templates\system.html:89
#: .\cookbook\templates\system.html:100
msgid "Info"
msgstr "Informacje"
#: .\cookbook\templates\system.html:99 .\cookbook\templates\system.html:116
#: .\cookbook\templates\system.html:110 .\cookbook\templates\system.html:127
msgid "Migrations"
msgstr ""
#: .\cookbook\templates\system.html:105
#: .\cookbook\templates\system.html:116
msgid ""
"\n"
" Migrations should never fail!\n"
@@ -2072,19 +2086,19 @@ msgid ""
" "
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "False"
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "True"
msgstr ""
#: .\cookbook\templates\system.html:196
#: .\cookbook\templates\system.html:207
msgid "Hide"
msgstr ""
#: .\cookbook\templates\system.html:199
#: .\cookbook\templates\system.html:210
#, fuzzy
#| msgid "Show help"
msgid "Show"
@@ -2094,290 +2108,290 @@ msgstr "Wyświetl pomoc"
msgid "URL Import"
msgstr "Importuj z URL"
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
#, fuzzy
#| msgid "Parameter filter_list incorrectly formatted"
msgid "Parameter updated_at incorrectly formatted"
msgstr "Nieprawidłowo sformatowany parametr filter_list"
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr ""
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr "Nie można scalić tego samego obiektu!"
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr ""
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
#, fuzzy
#| msgid "Cannot merge with the same object!"
msgid "Cannot merge with child object!"
msgstr "Nie można scalić tego samego obiektu!"
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr ""
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr ""
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr ""
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr ""
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr ""
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr ""
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr ""
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
msgstr ""
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr ""
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr ""
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr ""
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr ""
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
msgstr "Nie znaleziono żadnych przydatnych danych."
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr "Plik przekracza limit miejsca"
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr "Importowanie dla tego usługodawcy nie zostało zaimplementowane"
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr "Ta funkcja nie jest jeszcze dostępna w hostowanej wersji tandoor!"
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr "Synchronizacja powiodła się!"
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr "Błąd synchronizacji z magazynem"
@@ -2507,7 +2521,7 @@ msgid "There was an error importing this recipe!"
msgstr "Wystąpił błąd podczas importu tego przepisu!"
#: .\cookbook\views\views.py:69 .\cookbook\views\views.py:177
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:418
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:423
msgid "This feature is not available in the demo version!"
msgstr "Ta funkcja nie jest dostępna w wersji demo!"
@@ -2548,19 +2562,23 @@ msgstr ""
msgid "Fuzzy search is not compatible with this search method!"
msgstr "Wyszukiwanie rozmyte nie jest kompatybilne z tą metodą wyszukiwania!"
#: .\cookbook\views\views.py:305
#: .\cookbook\views\views.py:306
#, python-format
msgid "PostgreSQL %(v)s is deprecated. Upgrade to a fully supported version!"
msgstr ""
"PostgreSQL %(v)s jest przestarzały. Uaktualnij do w pełni obsługiwanej "
"wersji!!"
#: .\cookbook\views\views.py:308
#: .\cookbook\views\views.py:309
#, python-format
msgid "You are running PostgreSQL %(v1)s. PostgreSQL %(v2)s is recommended"
msgstr "Używasz PostgreSQL %(v1)s. Zalecany jest PostgreSQL %(v2)s"
#: .\cookbook\views\views.py:312
#: .\cookbook\views\views.py:313
msgid "Unable to determine PostgreSQL version."
msgstr ""
#: .\cookbook\views\views.py:317
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."
@@ -2569,7 +2587,7 @@ msgstr ""
"możliwe, ale nie zalecane, ponieważ niektóre funkcje działają tylko z bazami "
"danych Postgres."
#: .\cookbook\views\views.py:355
#: .\cookbook\views\views.py:360
msgid ""
"The setup page can only be used to create the first "
"user! If you have forgotten your superuser credentials "
@@ -2580,55 +2598,55 @@ msgstr ""
"superużytkownika, proszę skonsultuj się z dokumentacją django w celu resetu "
"hasła."
#: .\cookbook\views\views.py:364
#: .\cookbook\views\views.py:369
msgid "Passwords dont match!"
msgstr "Hasła się nie zgadzają!"
#: .\cookbook\views\views.py:372
#: .\cookbook\views\views.py:377
msgid "User has been created, please login!"
msgstr "Użytkownik został utworzony, proszę się zalogować!"
#: .\cookbook\views\views.py:388
#: .\cookbook\views\views.py:393
msgid "Malformed Invite Link supplied!"
msgstr "Użyty został nieprawidłowy odnośnik zaproszenia!"
#: .\cookbook\views\views.py:405
#: .\cookbook\views\views.py:410
msgid "Successfully joined space."
msgstr "Pomyślnie dołączono do przestrzeni."
#: .\cookbook\views\views.py:411
#: .\cookbook\views\views.py:416
msgid "Invite Link not valid or already used!"
msgstr "Odnośnik zaproszenia jest nieprawidłowy bądź został już użyty!"
#: .\cookbook\views\views.py:427
#: .\cookbook\views\views.py:432
msgid ""
"Reporting share links is not enabled for this instance. Please notify the "
"page administrator to report problems."
msgstr ""
#: .\cookbook\views\views.py:432
#: .\cookbook\views\views.py:437
msgid ""
"Recipe sharing link has been disabled! For additional information please "
"contact the page administrator."
msgstr ""
#: .\cookbook\views\views.py:446
#: .\cookbook\views\views.py:451
msgid "Manage recipes, shopping list, meal plans and more."
msgstr ""
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "Plan"
msgstr "Planowanie"
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "View your meal Plan"
msgstr ""
#: .\cookbook\views\views.py:454
#: .\cookbook\views\views.py:459
msgid "View your cookbooks"
msgstr ""
#: .\cookbook\views\views.py:455
#: .\cookbook\views\views.py:460
#, fuzzy
#| msgid "Shopping Lists"
msgid "View your shopping lists"

View File

@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-03-21 14:39+0100\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2023-10-07 18:02+0000\n"
"Last-Translator: Guilherme Roda <glealroda@gmail.com>\n"
"Language-Team: Portuguese <http://translate.tandoor.dev/projects/tandoor/"
@@ -267,31 +267,31 @@ msgstr ""
msgid "You have more users than allowed in your space."
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:304
#: .\cookbook\helper\recipe_url_import.py:310
msgid "reverse rotation"
msgstr "rotação reversa"
#: .\cookbook\helper\recipe_url_import.py:305
#: .\cookbook\helper\recipe_url_import.py:311
msgid "careful rotation"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:306
#: .\cookbook\helper\recipe_url_import.py:312
msgid "knead"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:307
#: .\cookbook\helper\recipe_url_import.py:313
msgid "thicken"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:308
#: .\cookbook\helper\recipe_url_import.py:314
msgid "warm up"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:309
#: .\cookbook\helper\recipe_url_import.py:315
msgid "ferment"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:310
#: .\cookbook\helper\recipe_url_import.py:316
msgid "sous-vide"
msgstr ""
@@ -407,7 +407,7 @@ msgstr "Almoço"
msgid "Dinner"
msgstr "Jantar"
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:920
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:919
msgid "Other"
msgstr "Outro"
@@ -443,45 +443,45 @@ msgid ""
"upload."
msgstr ""
#: .\cookbook\models.py:455 .\cookbook\templates\search.html:7
#: .\cookbook\models.py:454 .\cookbook\templates\search.html:7
#: .\cookbook\templates\settings.html:18
msgid "Search"
msgstr "Procurar"
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:114
#: .\cookbook\models.py:455 .\cookbook\templates\base.html:114
#: .\cookbook\templates\meal_plan.html:7
msgid "Meal-Plan"
msgstr "Plano de refeição"
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:454
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:459
msgid "Books"
msgstr "Livros"
#: .\cookbook\models.py:458 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:455
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:460
msgid "Shopping"
msgstr "Compras"
#: .\cookbook\models.py:753
#: .\cookbook\models.py:752
msgid " is part of a recipe step and cannot be deleted"
msgstr ""
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
msgid "Nutrition"
msgstr ""
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
#, fuzzy
#| msgid "Merge"
msgid "Allergen"
msgstr "Juntar"
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Price"
msgstr ""
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Goal"
msgstr ""
@@ -1869,14 +1869,14 @@ msgid "Media Serving"
msgstr ""
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:91
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:102 .\cookbook\templates\system.html:113
msgid "Warning"
msgstr ""
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:93
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:104 .\cookbook\templates\system.html:113
msgid "Ok"
msgstr ""
@@ -1891,7 +1891,8 @@ msgid ""
msgstr ""
#: .\cookbook\templates\system.html:55 .\cookbook\templates\system.html:70
#: .\cookbook\templates\system.html:83 .\cookbook\views\views.py:302
#: .\cookbook\templates\system.html:83 .\cookbook\templates\system.html:94
#: .\cookbook\views\views.py:303
msgid "Everything is fine!"
msgstr ""
@@ -1928,20 +1929,33 @@ msgid ""
msgstr ""
#: .\cookbook\templates\system.html:86
msgid "Allowed Hosts"
msgstr ""
#: .\cookbook\templates\system.html:90
msgid ""
"\n"
" 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.\n"
" "
msgstr ""
#: .\cookbook\templates\system.html:97
msgid "Database"
msgstr ""
#: .\cookbook\templates\system.html:89
#: .\cookbook\templates\system.html:100
msgid "Info"
msgstr ""
#: .\cookbook\templates\system.html:99 .\cookbook\templates\system.html:116
#: .\cookbook\templates\system.html:110 .\cookbook\templates\system.html:127
#, fuzzy
#| msgid "Use fractions"
msgid "Migrations"
msgstr "Usar frações"
#: .\cookbook\templates\system.html:105
#: .\cookbook\templates\system.html:116
msgid ""
"\n"
" Migrations should never fail!\n"
@@ -1953,19 +1967,19 @@ msgid ""
" "
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "False"
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "True"
msgstr ""
#: .\cookbook\templates\system.html:196
#: .\cookbook\templates\system.html:207
msgid "Hide"
msgstr ""
#: .\cookbook\templates\system.html:199
#: .\cookbook\templates\system.html:210
#, fuzzy
#| msgid "Show Log"
msgid "Show"
@@ -1975,286 +1989,286 @@ msgstr "Mostrar Log"
msgid "URL Import"
msgstr ""
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr ""
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr ""
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr ""
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr ""
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr ""
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr ""
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr ""
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr ""
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr ""
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr ""
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr ""
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr ""
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
msgstr ""
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr ""
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr ""
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr ""
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr ""
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
msgstr ""
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr ""
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr ""
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr ""
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr ""
@@ -2378,7 +2392,7 @@ msgid "There was an error importing this recipe!"
msgstr ""
#: .\cookbook\views\views.py:69 .\cookbook\views\views.py:177
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:418
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:423
msgid "This feature is not available in the demo version!"
msgstr ""
@@ -2415,80 +2429,84 @@ msgstr ""
msgid "Fuzzy search is not compatible with this search method!"
msgstr ""
#: .\cookbook\views\views.py:305
#: .\cookbook\views\views.py:306
#, python-format
msgid "PostgreSQL %(v)s is deprecated. Upgrade to a fully supported version!"
msgstr ""
#: .\cookbook\views\views.py:308
#: .\cookbook\views\views.py:309
#, python-format
msgid "You are running PostgreSQL %(v1)s. PostgreSQL %(v2)s is recommended"
msgstr ""
#: .\cookbook\views\views.py:312
#: .\cookbook\views\views.py:313
msgid "Unable to determine PostgreSQL version."
msgstr ""
#: .\cookbook\views\views.py:317
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 ""
#: .\cookbook\views\views.py:355
#: .\cookbook\views\views.py:360
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 ""
#: .\cookbook\views\views.py:364
#: .\cookbook\views\views.py:369
msgid "Passwords dont match!"
msgstr ""
#: .\cookbook\views\views.py:372
#: .\cookbook\views\views.py:377
msgid "User has been created, please login!"
msgstr ""
#: .\cookbook\views\views.py:388
#: .\cookbook\views\views.py:393
msgid "Malformed Invite Link supplied!"
msgstr ""
#: .\cookbook\views\views.py:405
#: .\cookbook\views\views.py:410
msgid "Successfully joined space."
msgstr ""
#: .\cookbook\views\views.py:411
#: .\cookbook\views\views.py:416
msgid "Invite Link not valid or already used!"
msgstr ""
#: .\cookbook\views\views.py:427
#: .\cookbook\views\views.py:432
msgid ""
"Reporting share links is not enabled for this instance. Please notify the "
"page administrator to report problems."
msgstr ""
#: .\cookbook\views\views.py:432
#: .\cookbook\views\views.py:437
msgid ""
"Recipe sharing link has been disabled! For additional information please "
"contact the page administrator."
msgstr ""
#: .\cookbook\views\views.py:446
#: .\cookbook\views\views.py:451
msgid "Manage recipes, shopping list, meal plans and more."
msgstr ""
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
#, fuzzy
#| msgid "Meal-Plan"
msgid "Plan"
msgstr "Plano de refeição"
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "View your meal Plan"
msgstr ""
#: .\cookbook\views\views.py:454
#: .\cookbook\views\views.py:459
msgid "View your cookbooks"
msgstr ""
#: .\cookbook\views\views.py:455
#: .\cookbook\views\views.py:460
#, fuzzy
#| msgid "Shopping"
msgid "View your shopping lists"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-03-21 14:39+0100\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2023-10-09 01:54+0000\n"
"Last-Translator: Guilherme Roda <glealroda@gmail.com>\n"
"Language-Team: Portuguese (Brazil) <http://translate.tandoor.dev/projects/"
@@ -258,33 +258,33 @@ msgstr ""
msgid "You have more users than allowed in your space."
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:304
#: .\cookbook\helper\recipe_url_import.py:310
#, fuzzy
#| msgid "Use fractions"
msgid "reverse rotation"
msgstr "Usar frações"
#: .\cookbook\helper\recipe_url_import.py:305
#: .\cookbook\helper\recipe_url_import.py:311
msgid "careful rotation"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:306
#: .\cookbook\helper\recipe_url_import.py:312
msgid "knead"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:307
#: .\cookbook\helper\recipe_url_import.py:313
msgid "thicken"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:308
#: .\cookbook\helper\recipe_url_import.py:314
msgid "warm up"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:309
#: .\cookbook\helper\recipe_url_import.py:315
msgid "ferment"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:310
#: .\cookbook\helper\recipe_url_import.py:316
msgid "sous-vide"
msgstr ""
@@ -404,7 +404,7 @@ msgstr "Almoço"
msgid "Dinner"
msgstr "Jantar"
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:920
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:919
msgid "Other"
msgstr "Outro"
@@ -440,47 +440,47 @@ msgid ""
"upload."
msgstr ""
#: .\cookbook\models.py:455 .\cookbook\templates\search.html:7
#: .\cookbook\models.py:454 .\cookbook\templates\search.html:7
#: .\cookbook\templates\settings.html:18
msgid "Search"
msgstr "Pesquisa"
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:114
#: .\cookbook\models.py:455 .\cookbook\templates\base.html:114
#: .\cookbook\templates\meal_plan.html:7
msgid "Meal-Plan"
msgstr "Plano de Refeição"
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:454
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:459
msgid "Books"
msgstr "Livros"
#: .\cookbook\models.py:458 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:455
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:460
msgid "Shopping"
msgstr "Compras"
#: .\cookbook\models.py:753
#: .\cookbook\models.py:752
msgid " is part of a recipe step and cannot be deleted"
msgstr ""
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
#, fuzzy
#| msgid "Automations"
msgid "Nutrition"
msgstr "Automações"
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
#, fuzzy
#| msgid "Merge"
msgid "Allergen"
msgstr "Mesclar"
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Price"
msgstr ""
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Goal"
msgstr ""
@@ -1874,14 +1874,14 @@ msgid "Media Serving"
msgstr ""
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:91
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:102 .\cookbook\templates\system.html:113
msgid "Warning"
msgstr "Alerta"
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:93
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:104 .\cookbook\templates\system.html:113
msgid "Ok"
msgstr "Ok"
@@ -1896,7 +1896,8 @@ msgid ""
msgstr ""
#: .\cookbook\templates\system.html:55 .\cookbook\templates\system.html:70
#: .\cookbook\templates\system.html:83 .\cookbook\views\views.py:302
#: .\cookbook\templates\system.html:83 .\cookbook\templates\system.html:94
#: .\cookbook\views\views.py:303
msgid "Everything is fine!"
msgstr "Tudo está bem!"
@@ -1933,20 +1934,33 @@ msgid ""
msgstr ""
#: .\cookbook\templates\system.html:86
msgid "Allowed Hosts"
msgstr ""
#: .\cookbook\templates\system.html:90
msgid ""
"\n"
" 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.\n"
" "
msgstr ""
#: .\cookbook\templates\system.html:97
msgid "Database"
msgstr "Banco de Dados"
#: .\cookbook\templates\system.html:89
#: .\cookbook\templates\system.html:100
msgid "Info"
msgstr "Informação"
#: .\cookbook\templates\system.html:99 .\cookbook\templates\system.html:116
#: .\cookbook\templates\system.html:110 .\cookbook\templates\system.html:127
#, fuzzy
#| msgid "Use fractions"
msgid "Migrations"
msgstr "Usar frações"
#: .\cookbook\templates\system.html:105
#: .\cookbook\templates\system.html:116
msgid ""
"\n"
" Migrations should never fail!\n"
@@ -1958,19 +1972,19 @@ msgid ""
" "
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "False"
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "True"
msgstr ""
#: .\cookbook\templates\system.html:196
#: .\cookbook\templates\system.html:207
msgid "Hide"
msgstr ""
#: .\cookbook\templates\system.html:199
#: .\cookbook\templates\system.html:210
#, fuzzy
#| msgid "Show Log"
msgid "Show"
@@ -1980,286 +1994,286 @@ msgstr "Mostrar Log"
msgid "URL Import"
msgstr ""
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr ""
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr ""
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr ""
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr ""
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr ""
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr ""
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr ""
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr ""
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr ""
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr ""
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr ""
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr ""
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
msgstr ""
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr ""
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr ""
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr "Nada para fazer."
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr ""
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
msgstr ""
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr ""
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr ""
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr "Sincronização realizada com sucesso!"
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr ""
@@ -2389,7 +2403,7 @@ msgid "There was an error importing this recipe!"
msgstr ""
#: .\cookbook\views\views.py:69 .\cookbook\views\views.py:177
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:418
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:423
msgid "This feature is not available in the demo version!"
msgstr ""
@@ -2426,80 +2440,84 @@ msgstr ""
msgid "Fuzzy search is not compatible with this search method!"
msgstr ""
#: .\cookbook\views\views.py:305
#: .\cookbook\views\views.py:306
#, python-format
msgid "PostgreSQL %(v)s is deprecated. Upgrade to a fully supported version!"
msgstr ""
#: .\cookbook\views\views.py:308
#: .\cookbook\views\views.py:309
#, python-format
msgid "You are running PostgreSQL %(v1)s. PostgreSQL %(v2)s is recommended"
msgstr ""
#: .\cookbook\views\views.py:312
#: .\cookbook\views\views.py:313
msgid "Unable to determine PostgreSQL version."
msgstr ""
#: .\cookbook\views\views.py:317
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 ""
#: .\cookbook\views\views.py:355
#: .\cookbook\views\views.py:360
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 ""
#: .\cookbook\views\views.py:364
#: .\cookbook\views\views.py:369
msgid "Passwords dont match!"
msgstr ""
#: .\cookbook\views\views.py:372
#: .\cookbook\views\views.py:377
msgid "User has been created, please login!"
msgstr ""
#: .\cookbook\views\views.py:388
#: .\cookbook\views\views.py:393
msgid "Malformed Invite Link supplied!"
msgstr ""
#: .\cookbook\views\views.py:405
#: .\cookbook\views\views.py:410
msgid "Successfully joined space."
msgstr ""
#: .\cookbook\views\views.py:411
#: .\cookbook\views\views.py:416
msgid "Invite Link not valid or already used!"
msgstr ""
#: .\cookbook\views\views.py:427
#: .\cookbook\views\views.py:432
msgid ""
"Reporting share links is not enabled for this instance. Please notify the "
"page administrator to report problems."
msgstr ""
#: .\cookbook\views\views.py:432
#: .\cookbook\views\views.py:437
msgid ""
"Recipe sharing link has been disabled! For additional information please "
"contact the page administrator."
msgstr ""
#: .\cookbook\views\views.py:446
#: .\cookbook\views\views.py:451
msgid "Manage recipes, shopping list, meal plans and more."
msgstr ""
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
#, fuzzy
#| msgid "Meal-Plan"
msgid "Plan"
msgstr "Plano de Refeição"
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "View your meal Plan"
msgstr ""
#: .\cookbook\views\views.py:454
#: .\cookbook\views\views.py:459
msgid "View your cookbooks"
msgstr ""
#: .\cookbook\views\views.py:455
#: .\cookbook\views\views.py:460
#, fuzzy
#| msgid "New Shopping List"
msgid "View your shopping lists"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-03-21 14:39+0100\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -243,31 +243,31 @@ msgstr ""
msgid "You have more users than allowed in your space."
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:304
#: .\cookbook\helper\recipe_url_import.py:310
msgid "reverse rotation"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:305
#: .\cookbook\helper\recipe_url_import.py:311
msgid "careful rotation"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:306
#: .\cookbook\helper\recipe_url_import.py:312
msgid "knead"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:307
#: .\cookbook\helper\recipe_url_import.py:313
msgid "thicken"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:308
#: .\cookbook\helper\recipe_url_import.py:314
msgid "warm up"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:309
#: .\cookbook\helper\recipe_url_import.py:315
msgid "ferment"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:310
#: .\cookbook\helper\recipe_url_import.py:316
msgid "sous-vide"
msgstr ""
@@ -383,7 +383,7 @@ msgstr ""
msgid "Dinner"
msgstr ""
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:920
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:919
msgid "Other"
msgstr ""
@@ -419,43 +419,43 @@ msgid ""
"upload."
msgstr ""
#: .\cookbook\models.py:455 .\cookbook\templates\search.html:7
#: .\cookbook\models.py:454 .\cookbook\templates\search.html:7
#: .\cookbook\templates\settings.html:18
msgid "Search"
msgstr ""
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:114
#: .\cookbook\models.py:455 .\cookbook\templates\base.html:114
#: .\cookbook\templates\meal_plan.html:7
msgid "Meal-Plan"
msgstr ""
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:454
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:459
msgid "Books"
msgstr ""
#: .\cookbook\models.py:458 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:455
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:460
msgid "Shopping"
msgstr ""
#: .\cookbook\models.py:753
#: .\cookbook\models.py:752
msgid " is part of a recipe step and cannot be deleted"
msgstr ""
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
msgid "Nutrition"
msgstr ""
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
msgid "Allergen"
msgstr ""
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Price"
msgstr ""
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Goal"
msgstr ""
@@ -1818,14 +1818,14 @@ msgid "Media Serving"
msgstr ""
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:91
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:102 .\cookbook\templates\system.html:113
msgid "Warning"
msgstr ""
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:93
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:104 .\cookbook\templates\system.html:113
msgid "Ok"
msgstr ""
@@ -1840,7 +1840,8 @@ msgid ""
msgstr ""
#: .\cookbook\templates\system.html:55 .\cookbook\templates\system.html:70
#: .\cookbook\templates\system.html:83 .\cookbook\views\views.py:302
#: .\cookbook\templates\system.html:83 .\cookbook\templates\system.html:94
#: .\cookbook\views\views.py:303
msgid "Everything is fine!"
msgstr ""
@@ -1877,18 +1878,31 @@ msgid ""
msgstr ""
#: .\cookbook\templates\system.html:86
msgid "Allowed Hosts"
msgstr ""
#: .\cookbook\templates\system.html:90
msgid ""
"\n"
" 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.\n"
" "
msgstr ""
#: .\cookbook\templates\system.html:97
msgid "Database"
msgstr ""
#: .\cookbook\templates\system.html:89
#: .\cookbook\templates\system.html:100
msgid "Info"
msgstr ""
#: .\cookbook\templates\system.html:99 .\cookbook\templates\system.html:116
#: .\cookbook\templates\system.html:110 .\cookbook\templates\system.html:127
msgid "Migrations"
msgstr ""
#: .\cookbook\templates\system.html:105
#: .\cookbook\templates\system.html:116
msgid ""
"\n"
" Migrations should never fail!\n"
@@ -1900,19 +1914,19 @@ msgid ""
" "
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "False"
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "True"
msgstr ""
#: .\cookbook\templates\system.html:196
#: .\cookbook\templates\system.html:207
msgid "Hide"
msgstr ""
#: .\cookbook\templates\system.html:199
#: .\cookbook\templates\system.html:210
msgid "Show"
msgstr ""
@@ -1920,286 +1934,286 @@ msgstr ""
msgid "URL Import"
msgstr ""
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr ""
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr ""
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr ""
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr ""
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr ""
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr ""
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr ""
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr ""
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr ""
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr ""
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr ""
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr ""
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
msgstr ""
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr ""
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr ""
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr ""
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr ""
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
msgstr ""
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr ""
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr ""
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr ""
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr ""
@@ -2323,7 +2337,7 @@ msgid "There was an error importing this recipe!"
msgstr ""
#: .\cookbook\views\views.py:69 .\cookbook\views\views.py:177
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:418
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:423
msgid "This feature is not available in the demo version!"
msgstr ""
@@ -2360,77 +2374,81 @@ msgstr ""
msgid "Fuzzy search is not compatible with this search method!"
msgstr ""
#: .\cookbook\views\views.py:305
#: .\cookbook\views\views.py:306
#, python-format
msgid "PostgreSQL %(v)s is deprecated. Upgrade to a fully supported version!"
msgstr ""
#: .\cookbook\views\views.py:308
#: .\cookbook\views\views.py:309
#, python-format
msgid "You are running PostgreSQL %(v1)s. PostgreSQL %(v2)s is recommended"
msgstr ""
#: .\cookbook\views\views.py:312
#: .\cookbook\views\views.py:313
msgid "Unable to determine PostgreSQL version."
msgstr ""
#: .\cookbook\views\views.py:317
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 ""
#: .\cookbook\views\views.py:355
#: .\cookbook\views\views.py:360
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 ""
#: .\cookbook\views\views.py:364
#: .\cookbook\views\views.py:369
msgid "Passwords dont match!"
msgstr ""
#: .\cookbook\views\views.py:372
#: .\cookbook\views\views.py:377
msgid "User has been created, please login!"
msgstr ""
#: .\cookbook\views\views.py:388
#: .\cookbook\views\views.py:393
msgid "Malformed Invite Link supplied!"
msgstr ""
#: .\cookbook\views\views.py:405
#: .\cookbook\views\views.py:410
msgid "Successfully joined space."
msgstr ""
#: .\cookbook\views\views.py:411
#: .\cookbook\views\views.py:416
msgid "Invite Link not valid or already used!"
msgstr ""
#: .\cookbook\views\views.py:427
#: .\cookbook\views\views.py:432
msgid ""
"Reporting share links is not enabled for this instance. Please notify the "
"page administrator to report problems."
msgstr ""
#: .\cookbook\views\views.py:432
#: .\cookbook\views\views.py:437
msgid ""
"Recipe sharing link has been disabled! For additional information please "
"contact the page administrator."
msgstr ""
#: .\cookbook\views\views.py:446
#: .\cookbook\views\views.py:451
msgid "Manage recipes, shopping list, meal plans and more."
msgstr ""
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "Plan"
msgstr ""
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "View your meal Plan"
msgstr ""
#: .\cookbook\views\views.py:454
#: .\cookbook\views\views.py:459
msgid "View your cookbooks"
msgstr ""
#: .\cookbook\views\views.py:455
#: .\cookbook\views\views.py:460
msgid "View your shopping lists"
msgstr ""

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-03-21 14:39+0100\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2023-04-27 08:55+0000\n"
"Last-Translator: noxonad <noxonad@proton.me>\n"
"Language-Team: Romanian <http://translate.tandoor.dev/projects/tandoor/"
@@ -283,33 +283,33 @@ msgstr "Ai ajuns la numărul maxim de rețete pentru spațiul dvs."
msgid "You have more users than allowed in your space."
msgstr "Aveți mai mulți utilizatori decât este permis în spațiul dvs."
#: .\cookbook\helper\recipe_url_import.py:304
#: .\cookbook\helper\recipe_url_import.py:310
#, fuzzy
#| msgid "Use fractions"
msgid "reverse rotation"
msgstr "Utilizare fracții"
#: .\cookbook\helper\recipe_url_import.py:305
#: .\cookbook\helper\recipe_url_import.py:311
msgid "careful rotation"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:306
#: .\cookbook\helper\recipe_url_import.py:312
msgid "knead"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:307
#: .\cookbook\helper\recipe_url_import.py:313
msgid "thicken"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:308
#: .\cookbook\helper\recipe_url_import.py:314
msgid "warm up"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:309
#: .\cookbook\helper\recipe_url_import.py:315
msgid "ferment"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:310
#: .\cookbook\helper\recipe_url_import.py:316
msgid "sous-vide"
msgstr ""
@@ -437,7 +437,7 @@ msgstr "Prânz"
msgid "Dinner"
msgstr "Cină"
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:920
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:919
msgid "Other"
msgstr "Altele"
@@ -475,47 +475,47 @@ msgstr ""
"Spațiu maxim de stocare a fișierelor pentru spațiu în MB. 0 pentru "
"nelimitat, -1 pentru a dezactiva încărcarea fișierelor."
#: .\cookbook\models.py:455 .\cookbook\templates\search.html:7
#: .\cookbook\models.py:454 .\cookbook\templates\search.html:7
#: .\cookbook\templates\settings.html:18
msgid "Search"
msgstr "Căutare"
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:114
#: .\cookbook\models.py:455 .\cookbook\templates\base.html:114
#: .\cookbook\templates\meal_plan.html:7
msgid "Meal-Plan"
msgstr "Plan de alimentare"
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:454
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:459
msgid "Books"
msgstr "Cărți"
#: .\cookbook\models.py:458 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:455
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:460
msgid "Shopping"
msgstr "Cumpărături"
#: .\cookbook\models.py:753
#: .\cookbook\models.py:752
msgid " is part of a recipe step and cannot be deleted"
msgstr " face parte dintr-un pas de rețetă și nu poate fi șters"
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
#, fuzzy
#| msgid "Automations"
msgid "Nutrition"
msgstr "Automatizări"
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
#, fuzzy
#| msgid "Merge"
msgid "Allergen"
msgstr "Unire"
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Price"
msgstr ""
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Goal"
msgstr ""
@@ -2153,14 +2153,14 @@ msgid "Media Serving"
msgstr "Livrare conținut media"
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:91
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:102 .\cookbook\templates\system.html:113
msgid "Warning"
msgstr "Atenționare"
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:93
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:104 .\cookbook\templates\system.html:113
msgid "Ok"
msgstr "Ok"
@@ -2182,7 +2182,8 @@ msgstr ""
" "
#: .\cookbook\templates\system.html:55 .\cookbook\templates\system.html:70
#: .\cookbook\templates\system.html:83 .\cookbook\views\views.py:302
#: .\cookbook\templates\system.html:83 .\cookbook\templates\system.html:94
#: .\cookbook\views\views.py:303
msgid "Everything is fine!"
msgstr "Totul este bine!"
@@ -2235,20 +2236,33 @@ msgstr ""
" "
#: .\cookbook\templates\system.html:86
msgid "Allowed Hosts"
msgstr ""
#: .\cookbook\templates\system.html:90
msgid ""
"\n"
" 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.\n"
" "
msgstr ""
#: .\cookbook\templates\system.html:97
msgid "Database"
msgstr "Bază de date"
#: .\cookbook\templates\system.html:89
#: .\cookbook\templates\system.html:100
msgid "Info"
msgstr "Informație"
#: .\cookbook\templates\system.html:99 .\cookbook\templates\system.html:116
#: .\cookbook\templates\system.html:110 .\cookbook\templates\system.html:127
#, fuzzy
#| msgid "Use fractions"
msgid "Migrations"
msgstr "Utilizare fracții"
#: .\cookbook\templates\system.html:105
#: .\cookbook\templates\system.html:116
msgid ""
"\n"
" Migrations should never fail!\n"
@@ -2260,19 +2274,19 @@ msgid ""
" "
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "False"
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "True"
msgstr ""
#: .\cookbook\templates\system.html:196
#: .\cookbook\templates\system.html:207
msgid "Hide"
msgstr ""
#: .\cookbook\templates\system.html:199
#: .\cookbook\templates\system.html:210
#, fuzzy
#| msgid "Show Log"
msgid "Show"
@@ -2282,290 +2296,290 @@ msgstr "Afișare jurnal"
msgid "URL Import"
msgstr "Importare URL"
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr "Parametrul updated_at formatat incorect"
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr "Nu există {self.basename} cu id {pk}"
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr "Nu se poate uni cu același obiect!"
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr "Nu există {self.basename} cu id {target}"
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr "Nu se poate uni cu obiect copil!"
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr "{source.name} a fost unit cu succes cu {target.name}"
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
"A apărut o eroare la încercarea de a uni {source.name} cu {target.name}"
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr "{child.name} a fost mutat cu succes la rădăcină."
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr "A apărut o eroare la încercarea de a muta "
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr "Nu se poate muta un obiect la sine!"
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr "Nu există {self.basename} cu id {parent}"
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr "{child.name} a fost mutat cu succes la părintele {parent.name}"
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr ""
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr ""
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
msgstr ""
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr ""
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr ""
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr "Nimic de făcut."
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr ""
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
#, fuzzy
#| msgid "No useable data could be found."
msgid "No usable data could be found."
msgstr "Nu au putut fi găsite date utilizabile."
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr "Importul nu este implementat pentru acest furnizor"
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr ""
"Această funcție nu este încă disponibilă în versiunea găzduită a tandoor!"
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr "Sincronizare de succes!"
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr "Eroare la sincronizarea cu stocarea"
@@ -2707,7 +2721,7 @@ msgid "There was an error importing this recipe!"
msgstr "A existat o eroare la importul acestei rețete!"
#: .\cookbook\views\views.py:69 .\cookbook\views\views.py:177
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:418
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:423
msgid "This feature is not available in the demo version!"
msgstr "Această funcție nu este disponibilă în versiunea demo!"
@@ -2750,17 +2764,21 @@ msgstr ""
msgid "Fuzzy search is not compatible with this search method!"
msgstr "Căutarea vagă nu este compatibilă cu această metodă de căutare!"
#: .\cookbook\views\views.py:305
#: .\cookbook\views\views.py:306
#, python-format
msgid "PostgreSQL %(v)s is deprecated. Upgrade to a fully supported version!"
msgstr ""
#: .\cookbook\views\views.py:308
#: .\cookbook\views\views.py:309
#, python-format
msgid "You are running PostgreSQL %(v1)s. PostgreSQL %(v2)s is recommended"
msgstr ""
#: .\cookbook\views\views.py:312
#: .\cookbook\views\views.py:313
msgid "Unable to determine PostgreSQL version."
msgstr ""
#: .\cookbook\views\views.py:317
#, fuzzy
#| msgid ""
#| "\n"
@@ -2778,7 +2796,7 @@ msgstr ""
" caracteristicile funcționează numai cu baze de date Postgres.\n"
" "
#: .\cookbook\views\views.py:355
#: .\cookbook\views\views.py:360
#, fuzzy
#| msgid ""
#| "The setup page can only be used to create the first user! If you have "
@@ -2793,27 +2811,27 @@ msgstr ""
"utilizator! Dacă ați uitat datele superutilizatorului, vă rugăm să "
"consultați documentația Django despre cum să resetați parolele."
#: .\cookbook\views\views.py:364
#: .\cookbook\views\views.py:369
msgid "Passwords dont match!"
msgstr "Parolele nu se potrivesc!"
#: .\cookbook\views\views.py:372
#: .\cookbook\views\views.py:377
msgid "User has been created, please login!"
msgstr "Utilizatorul a fost creat, vă rugăm să vă autentificați!"
#: .\cookbook\views\views.py:388
#: .\cookbook\views\views.py:393
msgid "Malformed Invite Link supplied!"
msgstr "Link-ul de invitație este furnizat malformat!"
#: .\cookbook\views\views.py:405
#: .\cookbook\views\views.py:410
msgid "Successfully joined space."
msgstr "Spațiu alăturat cu succes."
#: .\cookbook\views\views.py:411
#: .\cookbook\views\views.py:416
msgid "Invite Link not valid or already used!"
msgstr "Link-ul de invitație nu este valid sau deja utilizat!"
#: .\cookbook\views\views.py:427
#: .\cookbook\views\views.py:432
msgid ""
"Reporting share links is not enabled for this instance. Please notify the "
"page administrator to report problems."
@@ -2821,7 +2839,7 @@ msgstr ""
"Raportarea linkurilor de partajare nu este activată pentru această instanță. "
"Vă rugăm să anunțați administratorul paginii pentru a raporta probleme."
#: .\cookbook\views\views.py:432
#: .\cookbook\views\views.py:437
msgid ""
"Recipe sharing link has been disabled! For additional information please "
"contact the page administrator."
@@ -2829,25 +2847,25 @@ msgstr ""
"Partajare link-urilor de rețete a fost dezactivată! Pentru informații "
"suplimentare, vă rugăm să contactați administratorul paginii."
#: .\cookbook\views\views.py:446
#: .\cookbook\views\views.py:451
msgid "Manage recipes, shopping list, meal plans and more."
msgstr ""
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
#, fuzzy
#| msgid "Meal-Plan"
msgid "Plan"
msgstr "Plan de alimentare"
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "View your meal Plan"
msgstr ""
#: .\cookbook\views\views.py:454
#: .\cookbook\views\views.py:459
msgid "View your cookbooks"
msgstr ""
#: .\cookbook\views\views.py:455
#: .\cookbook\views\views.py:460
#, fuzzy
#| msgid "New Shopping List"
msgid "View your shopping lists"

View File

@@ -7,18 +7,18 @@ msgid ""
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-05-01 07:55+0000\n"
"Last-Translator: axeron2036 <admin@axeron2036.ru>\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2024-11-12 17:58+0000\n"
"Last-Translator: Владислав <vlad@kelonmyosa.ru>\n"
"Language-Team: Russian <http://translate.tandoor.dev/projects/tandoor/"
"recipes-backend/ru/>\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 4.15\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 5.6.2\n"
#: .\cookbook\forms.py:45
msgid ""
@@ -269,31 +269,31 @@ msgstr ""
msgid "You have more users than allowed in your space."
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:304
#: .\cookbook\helper\recipe_url_import.py:310
msgid "reverse rotation"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:305
#: .\cookbook\helper\recipe_url_import.py:311
msgid "careful rotation"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:306
#: .\cookbook\helper\recipe_url_import.py:312
msgid "knead"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:307
#: .\cookbook\helper\recipe_url_import.py:313
msgid "thicken"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:308
#: .\cookbook\helper\recipe_url_import.py:314
msgid "warm up"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:309
#: .\cookbook\helper\recipe_url_import.py:315
msgid "ferment"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:310
#: .\cookbook\helper\recipe_url_import.py:316
msgid "sous-vide"
msgstr ""
@@ -410,7 +410,7 @@ msgstr ""
msgid "Dinner"
msgstr ""
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:920
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:919
msgid "Other"
msgstr ""
@@ -446,43 +446,43 @@ msgid ""
"upload."
msgstr ""
#: .\cookbook\models.py:455 .\cookbook\templates\search.html:7
#: .\cookbook\models.py:454 .\cookbook\templates\search.html:7
#: .\cookbook\templates\settings.html:18
msgid "Search"
msgstr ""
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:114
#: .\cookbook\models.py:455 .\cookbook\templates\base.html:114
#: .\cookbook\templates\meal_plan.html:7
msgid "Meal-Plan"
msgstr ""
msgstr "План питания"
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:454
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:459
msgid "Books"
msgstr "Книги"
msgstr "Книги рецептов"
#: .\cookbook\models.py:458 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:455
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:460
msgid "Shopping"
msgstr ""
msgstr "Покупки"
#: .\cookbook\models.py:753
#: .\cookbook\models.py:752
msgid " is part of a recipe step and cannot be deleted"
msgstr ""
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
msgid "Nutrition"
msgstr ""
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
msgid "Allergen"
msgstr ""
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Price"
msgstr ""
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Goal"
msgstr ""
@@ -929,7 +929,7 @@ msgstr ""
#: .\cookbook\templates\base.html:110 .\cookbook\templates\index.html:87
msgid "Recipes"
msgstr ""
msgstr "Рецепты"
#: .\cookbook\templates\base.html:161 .\cookbook\views\lists.py:120
msgid "Foods"
@@ -1853,14 +1853,14 @@ msgid "Media Serving"
msgstr ""
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:91
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:102 .\cookbook\templates\system.html:113
msgid "Warning"
msgstr ""
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:93
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:104 .\cookbook\templates\system.html:113
msgid "Ok"
msgstr ""
@@ -1875,7 +1875,8 @@ msgid ""
msgstr ""
#: .\cookbook\templates\system.html:55 .\cookbook\templates\system.html:70
#: .\cookbook\templates\system.html:83 .\cookbook\views\views.py:302
#: .\cookbook\templates\system.html:83 .\cookbook\templates\system.html:94
#: .\cookbook\views\views.py:303
msgid "Everything is fine!"
msgstr ""
@@ -1912,18 +1913,31 @@ msgid ""
msgstr ""
#: .\cookbook\templates\system.html:86
msgid "Allowed Hosts"
msgstr ""
#: .\cookbook\templates\system.html:90
msgid ""
"\n"
" 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.\n"
" "
msgstr ""
#: .\cookbook\templates\system.html:97
msgid "Database"
msgstr ""
#: .\cookbook\templates\system.html:89
#: .\cookbook\templates\system.html:100
msgid "Info"
msgstr ""
#: .\cookbook\templates\system.html:99 .\cookbook\templates\system.html:116
#: .\cookbook\templates\system.html:110 .\cookbook\templates\system.html:127
msgid "Migrations"
msgstr ""
#: .\cookbook\templates\system.html:105
#: .\cookbook\templates\system.html:116
msgid ""
"\n"
" Migrations should never fail!\n"
@@ -1935,19 +1949,19 @@ msgid ""
" "
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "False"
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "True"
msgstr ""
#: .\cookbook\templates\system.html:196
#: .\cookbook\templates\system.html:207
msgid "Hide"
msgstr ""
#: .\cookbook\templates\system.html:199
#: .\cookbook\templates\system.html:210
msgid "Show"
msgstr ""
@@ -1955,286 +1969,286 @@ msgstr ""
msgid "URL Import"
msgstr ""
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr ""
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr ""
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr ""
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr ""
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr ""
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr ""
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr ""
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr ""
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr ""
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr ""
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr ""
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr ""
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
msgstr ""
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr ""
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr ""
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr ""
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr ""
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
msgstr ""
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr ""
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr ""
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr ""
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr ""
@@ -2359,7 +2373,7 @@ msgid "There was an error importing this recipe!"
msgstr ""
#: .\cookbook\views\views.py:69 .\cookbook\views\views.py:177
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:418
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:423
msgid "This feature is not available in the demo version!"
msgstr ""
@@ -2396,78 +2410,82 @@ msgstr ""
msgid "Fuzzy search is not compatible with this search method!"
msgstr ""
#: .\cookbook\views\views.py:305
#: .\cookbook\views\views.py:306
#, python-format
msgid "PostgreSQL %(v)s is deprecated. Upgrade to a fully supported version!"
msgstr ""
#: .\cookbook\views\views.py:308
#: .\cookbook\views\views.py:309
#, python-format
msgid "You are running PostgreSQL %(v1)s. PostgreSQL %(v2)s is recommended"
msgstr ""
#: .\cookbook\views\views.py:312
#: .\cookbook\views\views.py:313
msgid "Unable to determine PostgreSQL version."
msgstr ""
#: .\cookbook\views\views.py:317
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 ""
#: .\cookbook\views\views.py:355
#: .\cookbook\views\views.py:360
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 ""
#: .\cookbook\views\views.py:364
#: .\cookbook\views\views.py:369
msgid "Passwords dont match!"
msgstr ""
#: .\cookbook\views\views.py:372
#: .\cookbook\views\views.py:377
msgid "User has been created, please login!"
msgstr ""
#: .\cookbook\views\views.py:388
#: .\cookbook\views\views.py:393
msgid "Malformed Invite Link supplied!"
msgstr ""
#: .\cookbook\views\views.py:405
#: .\cookbook\views\views.py:410
msgid "Successfully joined space."
msgstr ""
#: .\cookbook\views\views.py:411
#: .\cookbook\views\views.py:416
msgid "Invite Link not valid or already used!"
msgstr ""
#: .\cookbook\views\views.py:427
#: .\cookbook\views\views.py:432
msgid ""
"Reporting share links is not enabled for this instance. Please notify the "
"page administrator to report problems."
msgstr ""
#: .\cookbook\views\views.py:432
#: .\cookbook\views\views.py:437
msgid ""
"Recipe sharing link has been disabled! For additional information please "
"contact the page administrator."
msgstr ""
#: .\cookbook\views\views.py:446
#: .\cookbook\views\views.py:451
msgid "Manage recipes, shopping list, meal plans and more."
msgstr ""
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "Plan"
msgstr ""
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "View your meal Plan"
msgstr ""
#: .\cookbook\views\views.py:454
#: .\cookbook\views\views.py:459
msgid "View your cookbooks"
msgstr ""
#: .\cookbook\views\views.py:455
#: .\cookbook\views\views.py:460
msgid "View your shopping lists"
msgstr ""

File diff suppressed because it is too large Load Diff

View File

@@ -7,9 +7,9 @@ msgid ""
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-11 13:02+0000\n"
"Last-Translator: Kn <kn@users.noreply.translate.tandoor.dev>\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2024-09-17 11:58+0000\n"
"Last-Translator: Bebbe K <kajolekk91@gmail.com>\n"
"Language-Team: Swedish <http://translate.tandoor.dev/projects/tandoor/"
"recipes-backend/sv/>\n"
"Language: sv\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.4.2\n"
"X-Generator: Weblate 5.6.2\n"
#: .\cookbook\forms.py:45
msgid ""
@@ -151,48 +151,61 @@ msgid ""
"Select type method of search. Click <a href=\"/docs/search/\">here</a> for "
"full description of choices."
msgstr ""
"Välj typ av sökmetod. Klicka <a href=\"/docs/search/\">här</a> för "
"fullständig beskrivning av alternativen."
#: .\cookbook\forms.py:341
msgid ""
"Use fuzzy matching on units, keywords and ingredients when editing and "
"importing recipes."
msgstr ""
"Använd \"fuzzy\" matchning på enheter, nyckelord och ingredienser när du "
"redigerar och importerar recept."
#: .\cookbook\forms.py:342
msgid ""
"Fields to search ignoring accents. Selecting this option can improve or "
"degrade search quality depending on language"
msgstr ""
"Fält att söka medan man ignorerar accenter. Val av detta alternativ kan "
"förbättra eller försämra sökkvaliteten beroende på språk"
#: .\cookbook\forms.py:343
msgid ""
"Fields to search for partial matches. (e.g. searching for 'Pie' will return "
"'pie' and 'piece' and 'soapie')"
msgstr ""
"Fält att söka efter delvisa matchningar. (t.ex. att söka efter 'Pie' kommer "
"att returnera 'pie' och 'piece' och 'soapie')"
#: .\cookbook\forms.py:344
msgid ""
"Fields to search for beginning of word matches. (e.g. searching for 'sa' "
"will return 'salad' and 'sandwich')"
msgstr ""
"Fält att söka för matchningar i början av ord. (t.ex. att söka efter 'sa' "
"kommer att returnera 'salad' och 'sandwich')"
#: .\cookbook\forms.py:345
msgid ""
"Fields to 'fuzzy' search. (e.g. searching for 'recpie' will find 'recipe'.) "
"Note: this option will conflict with 'web' and 'raw' methods of search."
msgstr ""
"Fält för 'fuzzy'-sökning. (t.ex. att söka efter 'recpie' kommer att hitta "
"'recipe'.Observera: detta alternativet kommer att komma i konflikt med "
"sökmetoderna 'web' och 'raw'.)"
#: .\cookbook\forms.py:346
msgid ""
"Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods "
"only function with fulltext fields."
msgstr ""
"Fält för fulltextsökning. Observera: Sökmetoderna 'web', 'phrase' och 'raw' "
"fungerar endast med fulltextfält."
#: .\cookbook\forms.py:350
#, fuzzy
#| msgid "Search"
msgid "Search Method"
msgstr "Sök"
msgstr "Sök Metod"
#: .\cookbook\forms.py:350
msgid "Fuzzy Lookups"
@@ -211,22 +224,20 @@ msgid "Starts With"
msgstr "Börjar med"
#: .\cookbook\forms.py:351
#, fuzzy
#| msgid "Search"
msgid "Fuzzy Search"
msgstr "Sök"
msgstr "Fuzzy Sök"
#: .\cookbook\forms.py:351
#, fuzzy
#| msgid "Text"
msgid "Full Text"
msgstr "Text"
msgstr "Hel Text"
#: .\cookbook\helper\AllAuthCustomAdapter.py:41
msgid ""
"In order to prevent spam, the requested email was not send. Please wait a "
"few minutes and try again."
msgstr ""
"För att förhindra spam, så skickades inte den begärda e-posten. Vänta några "
"minuter och försök igen."
#: .\cookbook\helper\permission_helper.py:164
#: .\cookbook\helper\permission_helper.py:187 .\cookbook\views\views.py:117
@@ -255,43 +266,43 @@ msgstr "Du kan inte interagera med detta objekt för att det ägs inte av dig!"
#: .\cookbook\helper\permission_helper.py:402
msgid "You have reached the maximum number of recipes for your space."
msgstr ""
msgstr "Du har nått det maximala antalet recept för din utrymme."
#: .\cookbook\helper\permission_helper.py:414
msgid "You have more users than allowed in your space."
msgstr ""
msgstr "Du har mer användare än tillåtet för ditt utrymme."
#: .\cookbook\helper\recipe_url_import.py:304
#: .\cookbook\helper\recipe_url_import.py:310
msgid "reverse rotation"
msgstr ""
msgstr "återvänd rotering"
#: .\cookbook\helper\recipe_url_import.py:305
#: .\cookbook\helper\recipe_url_import.py:311
msgid "careful rotation"
msgstr ""
msgstr "försiktig rotering"
#: .\cookbook\helper\recipe_url_import.py:306
#: .\cookbook\helper\recipe_url_import.py:312
msgid "knead"
msgstr "knåda"
#: .\cookbook\helper\recipe_url_import.py:307
#: .\cookbook\helper\recipe_url_import.py:313
msgid "thicken"
msgstr "förtjocka"
#: .\cookbook\helper\recipe_url_import.py:308
#: .\cookbook\helper\recipe_url_import.py:314
msgid "warm up"
msgstr "Uppvärm"
#: .\cookbook\helper\recipe_url_import.py:309
#: .\cookbook\helper\recipe_url_import.py:315
msgid "ferment"
msgstr "fermentera"
#: .\cookbook\helper\recipe_url_import.py:310
#: .\cookbook\helper\recipe_url_import.py:316
msgid "sous-vide"
msgstr "sous-vide"
#: .\cookbook\helper\shopping_helper.py:150
msgid "You must supply a servings size"
msgstr ""
msgstr "Du måste ange en portionstorlek"
#: .\cookbook\helper\template_helper.py:95
#: .\cookbook\helper\template_helper.py:97
@@ -305,7 +316,7 @@ msgstr "Favorit"
#: .\cookbook\integration\copymethat.py:50
msgid "I made this"
msgstr ""
msgstr "Jag gjorde den här"
#: .\cookbook\integration\integration.py:209
msgid ""
@@ -319,6 +330,8 @@ msgid ""
"An unexpected error occurred during the import. Please make sure you have "
"uploaded a valid file."
msgstr ""
"Ett oväntat fel uppstod under importeringen. Se till att du har laddat upp "
"en giltig fil."
#: .\cookbook\integration\integration.py:217
msgid "The following recipes were ignored because they already existed:"
@@ -330,10 +343,8 @@ msgid "Imported %s recipes."
msgstr "Importerade %s recept."
#: .\cookbook\integration\openeats.py:28
#, fuzzy
#| msgid "Recipe Home"
msgid "Recipe source:"
msgstr "Recept Hem"
msgstr "Recept källa:"
#: .\cookbook\integration\paprika.py:49
msgid "Notes"
@@ -374,23 +385,25 @@ msgstr "Sektion"
#: .\cookbook\management\commands\fix_duplicate_properties.py:15
msgid "Fixes foods with "
msgstr ""
msgstr "Korrigerar livsmedel med "
#: .\cookbook\management\commands\rebuildindex.py:14
msgid "Rebuilds full text search index on Recipe"
msgstr ""
msgstr "Återuppbygger fulltextsökningens index för Recept"
#: .\cookbook\management\commands\rebuildindex.py:18
msgid "Only Postgresql databases use full text search, no index to rebuild"
msgstr ""
"Endast Postgresql-databaser använder fulltextsökning, inget index att "
"återuppbygga med"
#: .\cookbook\management\commands\rebuildindex.py:29
msgid "Recipe index rebuild complete."
msgstr ""
msgstr "Recept index återbyggning färdig."
#: .\cookbook\management\commands\rebuildindex.py:31
msgid "Recipe index rebuild failed."
msgstr ""
msgstr "Recept index återbyggning misslyckades."
#: .\cookbook\migrations\0047_auto_20200602_1133.py:14
msgid "Breakfast"
@@ -404,7 +417,7 @@ msgstr "Lunch"
msgid "Dinner"
msgstr "Kvällsmat"
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:920
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:919
msgid "Other"
msgstr "Annat"
@@ -439,44 +452,46 @@ msgid ""
"Maximum file storage for space in MB. 0 for unlimited, -1 to disable file "
"upload."
msgstr ""
"Maximal lagringsutrymme för utrymme i MB. 0 för obegränsad, -1 för att "
"inaktivera filuppladdning."
#: .\cookbook\models.py:455 .\cookbook\templates\search.html:7
#: .\cookbook\models.py:454 .\cookbook\templates\search.html:7
#: .\cookbook\templates\settings.html:18
msgid "Search"
msgstr "Sök"
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:114
#: .\cookbook\models.py:455 .\cookbook\templates\base.html:114
#: .\cookbook\templates\meal_plan.html:7
msgid "Meal-Plan"
msgstr "Matsedel"
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:454
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:459
msgid "Books"
msgstr "Böcker"
#: .\cookbook\models.py:458 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:455
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:460
msgid "Shopping"
msgstr "Handla"
#: .\cookbook\models.py:753
#: .\cookbook\models.py:752
msgid " is part of a recipe step and cannot be deleted"
msgstr ""
msgstr " är en del av ett receptsteg och kan inte tas bort"
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
msgid "Nutrition"
msgstr "Näringsinnehåll"
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
msgid "Allergen"
msgstr "Allergen"
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Price"
msgstr "Pris"
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Goal"
msgstr "Mål"
@@ -501,34 +516,24 @@ msgid "Food Alias"
msgstr "Alternativt namn för mat"
#: .\cookbook\models.py:1468
#, fuzzy
#| msgid "Units"
msgid "Unit Alias"
msgstr "Enheter"
msgstr "Enhetsalias"
#: .\cookbook\models.py:1469
#, fuzzy
#| msgid "Keywords"
msgid "Keyword Alias"
msgstr "Nyckelord"
msgstr "Nyckelordsalias"
#: .\cookbook\models.py:1470
#, fuzzy
#| msgid "Description"
msgid "Description Replace"
msgstr "Beskrivning"
msgstr "Beskrivning Ersätt"
#: .\cookbook\models.py:1471
#, fuzzy
#| msgid "Instructions"
msgid "Instruction Replace"
msgstr "Instruktioner"
msgstr "Instruktioner Ersätt"
#: .\cookbook\models.py:1472
#, fuzzy
#| msgid "New Unit"
msgid "Never Unit"
msgstr "Ny enhet"
msgstr "Aldrig Enhet"
#: .\cookbook\models.py:1473
msgid "Transpose Words"
@@ -539,10 +544,8 @@ msgid "Food Replace"
msgstr "Ersätt mat"
#: .\cookbook\models.py:1475
#, fuzzy
#| msgid "Edit Recipe"
msgid "Unit Replace"
msgstr "Redigera recept"
msgstr "Ersätt Enhet"
#: .\cookbook\models.py:1476
msgid "Name Replace"
@@ -1966,14 +1969,14 @@ msgid "Media Serving"
msgstr "Mediaservering"
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:91
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:102 .\cookbook\templates\system.html:113
msgid "Warning"
msgstr "Varning"
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:93
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:104 .\cookbook\templates\system.html:113
msgid "Ok"
msgstr "Ok"
@@ -1994,7 +1997,8 @@ msgstr ""
" "
#: .\cookbook\templates\system.html:55 .\cookbook\templates\system.html:70
#: .\cookbook\templates\system.html:83 .\cookbook\views\views.py:302
#: .\cookbook\templates\system.html:83 .\cookbook\templates\system.html:94
#: .\cookbook\views\views.py:303
msgid "Everything is fine!"
msgstr "Allting är bra!"
@@ -2046,18 +2050,31 @@ msgstr ""
" "
#: .\cookbook\templates\system.html:86
msgid "Allowed Hosts"
msgstr ""
#: .\cookbook\templates\system.html:90
msgid ""
"\n"
" 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.\n"
" "
msgstr ""
#: .\cookbook\templates\system.html:97
msgid "Database"
msgstr "Databas"
#: .\cookbook\templates\system.html:89
#: .\cookbook\templates\system.html:100
msgid "Info"
msgstr "Info"
#: .\cookbook\templates\system.html:99 .\cookbook\templates\system.html:116
#: .\cookbook\templates\system.html:110 .\cookbook\templates\system.html:127
msgid "Migrations"
msgstr "migrationer"
#: .\cookbook\templates\system.html:105
#: .\cookbook\templates\system.html:116
msgid ""
"\n"
" Migrations should never fail!\n"
@@ -2069,19 +2086,19 @@ msgid ""
" "
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "False"
msgstr "Falsk"
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "True"
msgstr "Sann"
#: .\cookbook\templates\system.html:196
#: .\cookbook\templates\system.html:207
msgid "Hide"
msgstr "Göm"
#: .\cookbook\templates\system.html:199
#: .\cookbook\templates\system.html:210
#, fuzzy
#| msgid "Show help"
msgid "Show"
@@ -2091,280 +2108,280 @@ msgstr "Visa hjälp"
msgid "URL Import"
msgstr "URL-import"
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr "Parameter updated_at felaktigt formaterad"
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr ""
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr "Kan inte slås samman med samma objekt!"
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr ""
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
#, fuzzy
#| msgid "Cannot merge with the same object!"
msgid "Cannot merge with child object!"
msgstr "Kan inte slås samman med samma objekt!"
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr ""
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr ""
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr ""
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr ""
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr ""
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr ""
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr ""
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
msgstr ""
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr ""
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr ""
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr ""
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr ""
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
#, fuzzy
#| msgid "The requested page could not be found."
msgid "No usable data could be found."
msgstr "Sidan kunde inte hittas."
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr "Importering är inte implementerad för denna leverantör"
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
#, fuzzy
@@ -2372,11 +2389,11 @@ msgstr "Importering är inte implementerad för denna leverantör"
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr "Denna funktion är inte tillgänglig i demoversionen!"
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr "Synkroniseringen lyckades!"
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr "Fel vid synkronisering med lagring"
@@ -2514,7 +2531,7 @@ msgid "There was an error importing this recipe!"
msgstr "Det uppstod ett fel när det här receptet skulle importeras!"
#: .\cookbook\views\views.py:69 .\cookbook\views\views.py:177
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:418
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:423
msgid "This feature is not available in the demo version!"
msgstr "Denna funktion är inte tillgänglig i demoversionen!"
@@ -2552,17 +2569,21 @@ msgstr ""
msgid "Fuzzy search is not compatible with this search method!"
msgstr ""
#: .\cookbook\views\views.py:305
#: .\cookbook\views\views.py:306
#, python-format
msgid "PostgreSQL %(v)s is deprecated. Upgrade to a fully supported version!"
msgstr ""
#: .\cookbook\views\views.py:308
#: .\cookbook\views\views.py:309
#, python-format
msgid "You are running PostgreSQL %(v1)s. PostgreSQL %(v2)s is recommended"
msgstr ""
#: .\cookbook\views\views.py:312
#: .\cookbook\views\views.py:313
msgid "Unable to determine PostgreSQL version."
msgstr ""
#: .\cookbook\views\views.py:317
#, fuzzy
#| msgid ""
#| "\n"
@@ -2580,7 +2601,7 @@ msgstr ""
" funktioner bara fungerar med postgres-databaser.\n"
" "
#: .\cookbook\views\views.py:355
#: .\cookbook\views\views.py:360
#, fuzzy
#| msgid ""
#| "The setup page can only be used to create the first user! If you have "
@@ -2595,55 +2616,55 @@ msgstr ""
"Om du har glömt dina superanvändaruppgifter, vänligen läs django-"
"dokumentationen om hur du återställer lösenord."
#: .\cookbook\views\views.py:364
#: .\cookbook\views\views.py:369
msgid "Passwords dont match!"
msgstr "Lösenord matchar inte!"
#: .\cookbook\views\views.py:372
#: .\cookbook\views\views.py:377
msgid "User has been created, please login!"
msgstr "Användaren har skapats, vänligen logga in!"
#: .\cookbook\views\views.py:388
#: .\cookbook\views\views.py:393
msgid "Malformed Invite Link supplied!"
msgstr "Felaktig inbjudningslänk!"
#: .\cookbook\views\views.py:405
#: .\cookbook\views\views.py:410
msgid "Successfully joined space."
msgstr ""
#: .\cookbook\views\views.py:411
#: .\cookbook\views\views.py:416
msgid "Invite Link not valid or already used!"
msgstr "Inbjudningslänken är inte giltig eller redan använd!"
#: .\cookbook\views\views.py:427
#: .\cookbook\views\views.py:432
msgid ""
"Reporting share links is not enabled for this instance. Please notify the "
"page administrator to report problems."
msgstr ""
#: .\cookbook\views\views.py:432
#: .\cookbook\views\views.py:437
msgid ""
"Recipe sharing link has been disabled! For additional information please "
"contact the page administrator."
msgstr ""
#: .\cookbook\views\views.py:446
#: .\cookbook\views\views.py:451
msgid "Manage recipes, shopping list, meal plans and more."
msgstr ""
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "Plan"
msgstr "Planen"
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "View your meal Plan"
msgstr ""
#: .\cookbook\views\views.py:454
#: .\cookbook\views\views.py:459
msgid "View your cookbooks"
msgstr ""
#: .\cookbook\views\views.py:455
#: .\cookbook\views\views.py:460
#, fuzzy
#| msgid "Shopping Lists"
msgid "View your shopping lists"

View File

@@ -10,9 +10,9 @@ msgid ""
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-03 23:19+0000\n"
"Last-Translator: M Ugur <mugurd@gmail.com>\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2024-07-03 16:38+0000\n"
"Last-Translator: Taylan TATLI <uyelik-tandoor@tatli.me>\n"
"Language-Team: Turkish <http://translate.tandoor.dev/projects/tandoor/"
"recipes-backend/tr/>\n"
"Language: tr\n"
@@ -20,7 +20,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Weblate 4.15\n"
"X-Generator: Weblate 5.4.2\n"
#: .\cookbook\forms.py:45
msgid ""
@@ -63,42 +63,48 @@ msgid ""
"To prevent duplicates recipes with the same name as existing ones are "
"ignored. Check this box to import everything."
msgstr ""
"Varolan tariflerden benzer isimli olanlar mükerrerliği engellemek için "
"gözardı edilecektir. Tümünü içeri aktarmak için bu kutucuğu işaretleyin."
#: .\cookbook\forms.py:143
msgid "Add your comment: "
msgstr ""
msgstr "Yorum ekleyin: "
#: .\cookbook\forms.py:151
msgid "Leave empty for dropbox and enter app password for nextcloud."
msgstr ""
msgstr "Dropbox için boş bırakın ve Nextcloud için uygulama şifresini girin."
#: .\cookbook\forms.py:154
msgid "Leave empty for nextcloud and enter api token for dropbox."
msgstr ""
msgstr "Nextcloud için boş bırakın ve Dropbox için API anahtarını girin."
#: .\cookbook\forms.py:160
msgid ""
"Leave empty for dropbox and enter only base url for nextcloud (<code>/remote."
"php/webdav/</code> is added automatically)"
msgstr ""
"Dropbox için boş bırakın ve Nextcloud için yalnızca ana URL'yi girin(<code>/"
"remote.php/webdav/</code> otomatik olarak eklenir)"
#: .\cookbook\forms.py:188
msgid ""
"<a href=\"https://www.home-assistant.io/docs/authentication/#your-account-"
"profile\">Long Lived Access Token</a> for your HomeAssistant instance"
msgstr ""
"HomeAssistant uygulamanız için <a href=\"https://www.home-assistant.io/docs/"
"authentication/#your-account-profile\">Uzun Süreli Erişim Anahtarı</a>"
#: .\cookbook\forms.py:193
msgid "Something like http://homeassistant.local:8123/api"
msgstr ""
msgstr "Örneğin http://homeassistant.local:8123/api"
#: .\cookbook\forms.py:205
msgid "http://homeassistant.local:8123/api for example"
msgstr ""
msgstr "http://homeassistant.local:8123/api örneğin"
#: .\cookbook\forms.py:222 .\cookbook\views\edit.py:117
msgid "Storage"
msgstr ""
msgstr "Depolama"
#: .\cookbook\forms.py:222
msgid "Active"
@@ -106,51 +112,60 @@ msgstr "Aktif"
#: .\cookbook\forms.py:226
msgid "Search String"
msgstr ""
msgstr "Arama Sorgusu"
#: .\cookbook\forms.py:246
msgid "File ID"
msgstr ""
msgstr "Dosya ID"
#: .\cookbook\forms.py:262
msgid "Maximum number of users for this space reached."
msgstr ""
msgstr "Bu alan için maksimum kullanıcı sayısına ulaşıldı."
#: .\cookbook\forms.py:268
msgid "Email address already taken!"
msgstr ""
msgstr "Email adresi zaten alınmış!"
#: .\cookbook\forms.py:275
msgid ""
"An email address is not required but if present the invite link will be sent "
"to the user."
msgstr ""
"Email adresi zorunlu değildir fakat verilmesi halinde davet linki "
"kullanıcıya gönderilecektir."
#: .\cookbook\forms.py:287
msgid "Name already taken."
msgstr ""
msgstr "İsim zaten alınmış."
#: .\cookbook\forms.py:298
msgid "Accept Terms and Privacy"
msgstr ""
msgstr "Koşulları ve Gizliliği Onayla"
#: .\cookbook\forms.py:332
msgid ""
"Determines how fuzzy a search is if it uses trigram similarity matching (e."
"g. low values mean more typos are ignored)."
msgstr ""
"Trigram benzerlik eşleşmesi kullanılması halinde aramanın ne kadar bulanık "
"olduğunu belirler (ör. düşük değerler daha fazla yazım hatasını gözardı "
"eder)."
#: .\cookbook\forms.py:340
msgid ""
"Select type method of search. Click <a href=\"/docs/search/\">here</a> for "
"full description of choices."
msgstr ""
"Arama tipi metodunu seçin. Seçeneklerin tam açıklamasını görmek için <a "
"href=\"/docs/search/\">buraya</a> tıklayın."
#: .\cookbook\forms.py:341
msgid ""
"Use fuzzy matching on units, keywords and ingredients when editing and "
"importing recipes."
msgstr ""
"Tarifleri düzenlerken ve içeri aktarırken birimler, anahtar kelimeler ve "
"malzemelerde bulanık eşleştirme kullan."
#: .\cookbook\forms.py:342
msgid ""
@@ -249,31 +264,31 @@ msgstr ""
msgid "You have more users than allowed in your space."
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:304
#: .\cookbook\helper\recipe_url_import.py:310
msgid "reverse rotation"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:305
#: .\cookbook\helper\recipe_url_import.py:311
msgid "careful rotation"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:306
#: .\cookbook\helper\recipe_url_import.py:312
msgid "knead"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:307
#: .\cookbook\helper\recipe_url_import.py:313
msgid "thicken"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:308
#: .\cookbook\helper\recipe_url_import.py:314
msgid "warm up"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:309
#: .\cookbook\helper\recipe_url_import.py:315
msgid "ferment"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:310
#: .\cookbook\helper\recipe_url_import.py:316
msgid "sous-vide"
msgstr ""
@@ -389,7 +404,7 @@ msgstr ""
msgid "Dinner"
msgstr ""
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:920
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:919
msgid "Other"
msgstr ""
@@ -425,43 +440,43 @@ msgid ""
"upload."
msgstr ""
#: .\cookbook\models.py:455 .\cookbook\templates\search.html:7
#: .\cookbook\models.py:454 .\cookbook\templates\search.html:7
#: .\cookbook\templates\settings.html:18
msgid "Search"
msgstr ""
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:114
#: .\cookbook\models.py:455 .\cookbook\templates\base.html:114
#: .\cookbook\templates\meal_plan.html:7
msgid "Meal-Plan"
msgstr ""
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:454
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:459
msgid "Books"
msgstr ""
#: .\cookbook\models.py:458 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:455
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:460
msgid "Shopping"
msgstr ""
#: .\cookbook\models.py:753
#: .\cookbook\models.py:752
msgid " is part of a recipe step and cannot be deleted"
msgstr ""
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
msgid "Nutrition"
msgstr ""
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
msgid "Allergen"
msgstr ""
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Price"
msgstr ""
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Goal"
msgstr ""
@@ -940,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
@@ -1402,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"
@@ -1828,14 +1839,14 @@ msgid "Media Serving"
msgstr ""
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:91
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:102 .\cookbook\templates\system.html:113
msgid "Warning"
msgstr ""
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:93
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:104 .\cookbook\templates\system.html:113
msgid "Ok"
msgstr ""
@@ -1850,7 +1861,8 @@ msgid ""
msgstr ""
#: .\cookbook\templates\system.html:55 .\cookbook\templates\system.html:70
#: .\cookbook\templates\system.html:83 .\cookbook\views\views.py:302
#: .\cookbook\templates\system.html:83 .\cookbook\templates\system.html:94
#: .\cookbook\views\views.py:303
msgid "Everything is fine!"
msgstr ""
@@ -1887,20 +1899,31 @@ msgid ""
msgstr ""
#: .\cookbook\templates\system.html:86
msgid "Allowed Hosts"
msgstr ""
#: .\cookbook\templates\system.html:90
msgid ""
"\n"
" 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.\n"
" "
msgstr ""
#: .\cookbook\templates\system.html:97
msgid "Database"
msgstr ""
#: .\cookbook\templates\system.html:89
#: .\cookbook\templates\system.html:100
msgid "Info"
msgstr ""
#: .\cookbook\templates\system.html:99 .\cookbook\templates\system.html:116
#, fuzzy
#| msgid "Use fractions"
#: .\cookbook\templates\system.html:110 .\cookbook\templates\system.html:127
msgid "Migrations"
msgstr "Kesirleri kullan"
msgstr "Göçler"
#: .\cookbook\templates\system.html:105
#: .\cookbook\templates\system.html:116
msgid ""
"\n"
" Migrations should never fail!\n"
@@ -1912,19 +1935,19 @@ msgid ""
" "
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "False"
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "True"
msgstr ""
#: .\cookbook\templates\system.html:196
#: .\cookbook\templates\system.html:207
msgid "Hide"
msgstr ""
#: .\cookbook\templates\system.html:199
#: .\cookbook\templates\system.html:210
msgid "Show"
msgstr ""
@@ -1932,286 +1955,286 @@ msgstr ""
msgid "URL Import"
msgstr ""
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr ""
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr ""
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr ""
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr ""
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr ""
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr ""
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr ""
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr ""
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr ""
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr ""
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr ""
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr ""
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
msgstr ""
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr ""
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr ""
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr ""
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr ""
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
msgstr ""
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr ""
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr ""
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr ""
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr ""
@@ -2335,7 +2358,7 @@ msgid "There was an error importing this recipe!"
msgstr ""
#: .\cookbook\views\views.py:69 .\cookbook\views\views.py:177
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:418
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:423
msgid "This feature is not available in the demo version!"
msgstr ""
@@ -2372,82 +2395,84 @@ msgstr ""
msgid "Fuzzy search is not compatible with this search method!"
msgstr ""
#: .\cookbook\views\views.py:305
#: .\cookbook\views\views.py:306
#, python-format
msgid "PostgreSQL %(v)s is deprecated. Upgrade to a fully supported version!"
msgstr ""
#: .\cookbook\views\views.py:308
#: .\cookbook\views\views.py:309
#, python-format
msgid "You are running PostgreSQL %(v1)s. PostgreSQL %(v2)s is recommended"
msgstr ""
#: .\cookbook\views\views.py:312
#: .\cookbook\views\views.py:313
msgid "Unable to determine PostgreSQL version."
msgstr ""
#: .\cookbook\views\views.py:317
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 ""
#: .\cookbook\views\views.py:355
#: .\cookbook\views\views.py:360
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 ""
#: .\cookbook\views\views.py:364
#: .\cookbook\views\views.py:369
msgid "Passwords dont match!"
msgstr ""
#: .\cookbook\views\views.py:372
#: .\cookbook\views\views.py:377
msgid "User has been created, please login!"
msgstr ""
#: .\cookbook\views\views.py:388
#: .\cookbook\views\views.py:393
msgid "Malformed Invite Link supplied!"
msgstr ""
#: .\cookbook\views\views.py:405
#: .\cookbook\views\views.py:410
msgid "Successfully joined space."
msgstr ""
#: .\cookbook\views\views.py:411
#: .\cookbook\views\views.py:416
msgid "Invite Link not valid or already used!"
msgstr ""
#: .\cookbook\views\views.py:427
#: .\cookbook\views\views.py:432
msgid ""
"Reporting share links is not enabled for this instance. Please notify the "
"page administrator to report problems."
msgstr ""
#: .\cookbook\views\views.py:432
#: .\cookbook\views\views.py:437
msgid ""
"Recipe sharing link has been disabled! For additional information please "
"contact the page administrator."
msgstr ""
#: .\cookbook\views\views.py:446
#: .\cookbook\views\views.py:451
msgid "Manage recipes, shopping list, meal plans and more."
msgstr ""
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "Plan"
msgstr ""
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "View your meal Plan"
msgstr ""
#: .\cookbook\views\views.py:454
#: .\cookbook\views\views.py:459
msgid "View your cookbooks"
msgstr ""
#: .\cookbook\views\views.py:455
#, fuzzy
#| msgid "Users with whom to share shopping lists."
#: .\cookbook\views\views.py:460
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"

View File

@@ -7,18 +7,18 @@ msgid ""
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-04-12 11:55+0000\n"
"Last-Translator: noxonad <noxonad@proton.me>\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2024-11-22 07:58+0000\n"
"Last-Translator: Oleh Hudyma <oleg.hudymaa@gmail.com>\n"
"Language-Team: Ukrainian <http://translate.tandoor.dev/projects/tandoor/"
"recipes-backend/uk/>\n"
"Language: uk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 4.15\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 5.6.2\n"
#: .\cookbook\forms.py:45
msgid ""
@@ -36,47 +36,51 @@ msgstr ""
#: .\cookbook\forms.py:62
msgid "Preparation time in minutes"
msgstr ""
msgstr "Час приготування у хвилинах"
#: .\cookbook\forms.py:62
msgid "Waiting time (cooking/baking) in minutes"
msgstr ""
msgstr "Час очікування (варіння/випічка) у хвилинах"
#: .\cookbook\forms.py:63 .\cookbook\forms.py:222 .\cookbook\forms.py:246
msgid "Path"
msgstr ""
msgstr "Шлях"
#: .\cookbook\forms.py:63
msgid "Storage UID"
msgstr ""
msgstr "UID сховища"
#: .\cookbook\forms.py:93
msgid "Default"
msgstr ""
msgstr "За замовчуванням"
#: .\cookbook\forms.py:121
msgid ""
"To prevent duplicates recipes with the same name as existing ones are "
"ignored. Check this box to import everything."
msgstr ""
"Щоб запобігти дублюванням, рецепти з назвами, що вже існують, "
"ігноруватимуться. Установіть цей прапорець, щоб імпортувати все."
#: .\cookbook\forms.py:143
msgid "Add your comment: "
msgstr ""
msgstr "Додайте ваш коментар: "
#: .\cookbook\forms.py:151
msgid "Leave empty for dropbox and enter app password for nextcloud."
msgstr ""
msgstr "Залиште порожнім для dropbox і введіть api ключі для nextcloud."
#: .\cookbook\forms.py:154
msgid "Leave empty for nextcloud and enter api token for dropbox."
msgstr ""
msgstr "Залиште порожнім для nextcloud і введіть api ключі для dropbox."
#: .\cookbook\forms.py:160
msgid ""
"Leave empty for dropbox and enter only base url for nextcloud (<code>/remote."
"php/webdav/</code> is added automatically)"
msgstr ""
"Залиште порожнім для dropbox і введіть лише базовий url для nextcloud "
"(<code>/remote.php/webdav/</code> буде додано автоматично)"
#: .\cookbook\forms.py:188
msgid ""
@@ -245,31 +249,31 @@ msgstr ""
msgid "You have more users than allowed in your space."
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:304
#: .\cookbook\helper\recipe_url_import.py:310
msgid "reverse rotation"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:305
#: .\cookbook\helper\recipe_url_import.py:311
msgid "careful rotation"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:306
#: .\cookbook\helper\recipe_url_import.py:312
msgid "knead"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:307
#: .\cookbook\helper\recipe_url_import.py:313
msgid "thicken"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:308
#: .\cookbook\helper\recipe_url_import.py:314
msgid "warm up"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:309
#: .\cookbook\helper\recipe_url_import.py:315
msgid "ferment"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:310
#: .\cookbook\helper\recipe_url_import.py:316
msgid "sous-vide"
msgstr ""
@@ -385,7 +389,7 @@ msgstr ""
msgid "Dinner"
msgstr ""
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:920
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:919
msgid "Other"
msgstr ""
@@ -421,43 +425,43 @@ msgid ""
"upload."
msgstr ""
#: .\cookbook\models.py:455 .\cookbook\templates\search.html:7
#: .\cookbook\models.py:454 .\cookbook\templates\search.html:7
#: .\cookbook\templates\settings.html:18
msgid "Search"
msgstr ""
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:114
#: .\cookbook\models.py:455 .\cookbook\templates\base.html:114
#: .\cookbook\templates\meal_plan.html:7
msgid "Meal-Plan"
msgstr ""
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:454
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:459
msgid "Books"
msgstr ""
#: .\cookbook\models.py:458 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:455
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:460
msgid "Shopping"
msgstr ""
#: .\cookbook\models.py:753
#: .\cookbook\models.py:752
msgid " is part of a recipe step and cannot be deleted"
msgstr ""
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
msgid "Nutrition"
msgstr ""
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
msgid "Allergen"
msgstr ""
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Price"
msgstr ""
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Goal"
msgstr ""
@@ -1820,14 +1824,14 @@ msgid "Media Serving"
msgstr ""
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:91
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:102 .\cookbook\templates\system.html:113
msgid "Warning"
msgstr ""
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:93
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:104 .\cookbook\templates\system.html:113
msgid "Ok"
msgstr ""
@@ -1842,7 +1846,8 @@ msgid ""
msgstr ""
#: .\cookbook\templates\system.html:55 .\cookbook\templates\system.html:70
#: .\cookbook\templates\system.html:83 .\cookbook\views\views.py:302
#: .\cookbook\templates\system.html:83 .\cookbook\templates\system.html:94
#: .\cookbook\views\views.py:303
msgid "Everything is fine!"
msgstr ""
@@ -1879,18 +1884,31 @@ msgid ""
msgstr ""
#: .\cookbook\templates\system.html:86
msgid "Allowed Hosts"
msgstr ""
#: .\cookbook\templates\system.html:90
msgid ""
"\n"
" 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.\n"
" "
msgstr ""
#: .\cookbook\templates\system.html:97
msgid "Database"
msgstr ""
#: .\cookbook\templates\system.html:89
#: .\cookbook\templates\system.html:100
msgid "Info"
msgstr ""
#: .\cookbook\templates\system.html:99 .\cookbook\templates\system.html:116
#: .\cookbook\templates\system.html:110 .\cookbook\templates\system.html:127
msgid "Migrations"
msgstr ""
#: .\cookbook\templates\system.html:105
#: .\cookbook\templates\system.html:116
msgid ""
"\n"
" Migrations should never fail!\n"
@@ -1902,19 +1920,19 @@ msgid ""
" "
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "False"
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "True"
msgstr ""
#: .\cookbook\templates\system.html:196
#: .\cookbook\templates\system.html:207
msgid "Hide"
msgstr ""
#: .\cookbook\templates\system.html:199
#: .\cookbook\templates\system.html:210
msgid "Show"
msgstr ""
@@ -1922,286 +1940,286 @@ msgstr ""
msgid "URL Import"
msgstr ""
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr ""
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr ""
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr ""
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr ""
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr ""
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr ""
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr ""
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr ""
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr ""
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr ""
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr ""
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr ""
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
msgstr ""
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr ""
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr ""
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr ""
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr ""
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
msgid "No usable data could be found."
msgstr ""
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr ""
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr ""
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr ""
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr ""
@@ -2326,7 +2344,7 @@ msgid "There was an error importing this recipe!"
msgstr ""
#: .\cookbook\views\views.py:69 .\cookbook\views\views.py:177
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:418
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:423
msgid "This feature is not available in the demo version!"
msgstr ""
@@ -2363,78 +2381,82 @@ msgstr ""
msgid "Fuzzy search is not compatible with this search method!"
msgstr ""
#: .\cookbook\views\views.py:305
#: .\cookbook\views\views.py:306
#, python-format
msgid "PostgreSQL %(v)s is deprecated. Upgrade to a fully supported version!"
msgstr ""
#: .\cookbook\views\views.py:308
#: .\cookbook\views\views.py:309
#, python-format
msgid "You are running PostgreSQL %(v1)s. PostgreSQL %(v2)s is recommended"
msgstr ""
#: .\cookbook\views\views.py:312
#: .\cookbook\views\views.py:313
msgid "Unable to determine PostgreSQL version."
msgstr ""
#: .\cookbook\views\views.py:317
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 ""
#: .\cookbook\views\views.py:355
#: .\cookbook\views\views.py:360
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 ""
#: .\cookbook\views\views.py:364
#: .\cookbook\views\views.py:369
msgid "Passwords dont match!"
msgstr ""
#: .\cookbook\views\views.py:372
#: .\cookbook\views\views.py:377
msgid "User has been created, please login!"
msgstr ""
#: .\cookbook\views\views.py:388
#: .\cookbook\views\views.py:393
msgid "Malformed Invite Link supplied!"
msgstr ""
#: .\cookbook\views\views.py:405
#: .\cookbook\views\views.py:410
msgid "Successfully joined space."
msgstr ""
#: .\cookbook\views\views.py:411
#: .\cookbook\views\views.py:416
msgid "Invite Link not valid or already used!"
msgstr ""
#: .\cookbook\views\views.py:427
#: .\cookbook\views\views.py:432
msgid ""
"Reporting share links is not enabled for this instance. Please notify the "
"page administrator to report problems."
msgstr ""
#: .\cookbook\views\views.py:432
#: .\cookbook\views\views.py:437
msgid ""
"Recipe sharing link has been disabled! For additional information please "
"contact the page administrator."
msgstr ""
#: .\cookbook\views\views.py:446
#: .\cookbook\views\views.py:451
msgid "Manage recipes, shopping list, meal plans and more."
msgstr ""
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "Plan"
msgstr ""
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "View your meal Plan"
msgstr ""
#: .\cookbook\views\views.py:454
#: .\cookbook\views\views.py:459
msgid "View your cookbooks"
msgstr ""
#: .\cookbook\views\views.py:455
#: .\cookbook\views\views.py:460
msgid "View your shopping lists"
msgstr ""

View File

@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-03-21 14:39+0100\n"
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
"PO-Revision-Date: 2020-06-02 19:28+0000\n"
"Last-Translator: Hieu, 2021\n"
"Language-Team: Vietnamese (https://www.transifex.com/django-recipes/"
@@ -255,31 +255,31 @@ msgstr ""
msgid "You have more users than allowed in your space."
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:304
#: .\cookbook\helper\recipe_url_import.py:310
msgid "reverse rotation"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:305
#: .\cookbook\helper\recipe_url_import.py:311
msgid "careful rotation"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:306
#: .\cookbook\helper\recipe_url_import.py:312
msgid "knead"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:307
#: .\cookbook\helper\recipe_url_import.py:313
msgid "thicken"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:308
#: .\cookbook\helper\recipe_url_import.py:314
msgid "warm up"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:309
#: .\cookbook\helper\recipe_url_import.py:315
msgid "ferment"
msgstr ""
#: .\cookbook\helper\recipe_url_import.py:310
#: .\cookbook\helper\recipe_url_import.py:316
msgid "sous-vide"
msgstr ""
@@ -402,7 +402,7 @@ msgstr "Bữa trưa"
msgid "Dinner"
msgstr "Bữa tối"
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:920
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29 .\cookbook\models.py:919
msgid "Other"
msgstr "Khác"
@@ -438,45 +438,45 @@ msgid ""
"upload."
msgstr ""
#: .\cookbook\models.py:455 .\cookbook\templates\search.html:7
#: .\cookbook\models.py:454 .\cookbook\templates\search.html:7
#: .\cookbook\templates\settings.html:18
msgid "Search"
msgstr "Tìm kiếm"
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:114
#: .\cookbook\models.py:455 .\cookbook\templates\base.html:114
#: .\cookbook\templates\meal_plan.html:7
msgid "Meal-Plan"
msgstr "Kế hoạch Khẩu phần ăn"
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:454
#: .\cookbook\models.py:456 .\cookbook\templates\base.html:122
#: .\cookbook\views\views.py:459
msgid "Books"
msgstr "Sách"
#: .\cookbook\models.py:458 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:455
#: .\cookbook\models.py:457 .\cookbook\templates\base.html:118
#: .\cookbook\views\views.py:460
msgid "Shopping"
msgstr ""
#: .\cookbook\models.py:753
#: .\cookbook\models.py:752
msgid " is part of a recipe step and cannot be deleted"
msgstr ""
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
msgid "Nutrition"
msgstr ""
#: .\cookbook\models.py:919
#: .\cookbook\models.py:918
#, fuzzy
#| msgid "Merge"
msgid "Allergen"
msgstr "Gộp"
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Price"
msgstr ""
#: .\cookbook\models.py:920
#: .\cookbook\models.py:919
msgid "Goal"
msgstr ""
@@ -1901,14 +1901,14 @@ msgid "Media Serving"
msgstr ""
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:91
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:102 .\cookbook\templates\system.html:113
msgid "Warning"
msgstr "Cảnh báo"
#: .\cookbook\templates\system.html:47 .\cookbook\templates\system.html:61
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:93
#: .\cookbook\templates\system.html:102
#: .\cookbook\templates\system.html:75 .\cookbook\templates\system.html:88
#: .\cookbook\templates\system.html:104 .\cookbook\templates\system.html:113
msgid "Ok"
msgstr "Ok"
@@ -1923,7 +1923,8 @@ msgid ""
msgstr ""
#: .\cookbook\templates\system.html:55 .\cookbook\templates\system.html:70
#: .\cookbook\templates\system.html:83 .\cookbook\views\views.py:302
#: .\cookbook\templates\system.html:83 .\cookbook\templates\system.html:94
#: .\cookbook\views\views.py:303
msgid "Everything is fine!"
msgstr "Mọi thứ đều ổn!"
@@ -1968,18 +1969,31 @@ msgid ""
msgstr ""
#: .\cookbook\templates\system.html:86
msgid "Allowed Hosts"
msgstr ""
#: .\cookbook\templates\system.html:90
msgid ""
"\n"
" 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.\n"
" "
msgstr ""
#: .\cookbook\templates\system.html:97
msgid "Database"
msgstr "Cơ sở dữ liệu"
#: .\cookbook\templates\system.html:89
#: .\cookbook\templates\system.html:100
msgid "Info"
msgstr "Thông tin"
#: .\cookbook\templates\system.html:99 .\cookbook\templates\system.html:116
#: .\cookbook\templates\system.html:110 .\cookbook\templates\system.html:127
msgid "Migrations"
msgstr ""
#: .\cookbook\templates\system.html:105
#: .\cookbook\templates\system.html:116
msgid ""
"\n"
" Migrations should never fail!\n"
@@ -1991,19 +2005,19 @@ msgid ""
" "
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "False"
msgstr ""
#: .\cookbook\templates\system.html:171
#: .\cookbook\templates\system.html:182
msgid "True"
msgstr ""
#: .\cookbook\templates\system.html:196
#: .\cookbook\templates\system.html:207
msgid "Hide"
msgstr ""
#: .\cookbook\templates\system.html:199
#: .\cookbook\templates\system.html:210
msgid "Show"
msgstr ""
@@ -2011,288 +2025,288 @@ msgstr ""
msgid "URL Import"
msgstr "Nhập URL"
#: .\cookbook\views\api.py:121 .\cookbook\views\api.py:214
#: .\cookbook\views\api.py:120 .\cookbook\views\api.py:213
msgid "Parameter updated_at incorrectly formatted"
msgstr ""
#: .\cookbook\views\api.py:235 .\cookbook\views\api.py:341
#: .\cookbook\views\api.py:234 .\cookbook\views\api.py:340
#, python-brace-format
msgid "No {self.basename} with id {pk} exists"
msgstr ""
#: .\cookbook\views\api.py:239
#: .\cookbook\views\api.py:238
msgid "Cannot merge with the same object!"
msgstr ""
#: .\cookbook\views\api.py:246
#: .\cookbook\views\api.py:245
#, python-brace-format
msgid "No {self.basename} with id {target} exists"
msgstr ""
#: .\cookbook\views\api.py:251
#: .\cookbook\views\api.py:250
msgid "Cannot merge with child object!"
msgstr ""
#: .\cookbook\views\api.py:289
#: .\cookbook\views\api.py:288
#, python-brace-format
msgid "{source.name} was merged successfully with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:294
#: .\cookbook\views\api.py:293
#, python-brace-format
msgid "An error occurred attempting to merge {source.name} with {target.name}"
msgstr ""
#: .\cookbook\views\api.py:350
#: .\cookbook\views\api.py:349
#, python-brace-format
msgid "{child.name} was moved successfully to the root."
msgstr ""
#: .\cookbook\views\api.py:353 .\cookbook\views\api.py:371
#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:370
msgid "An error occurred attempting to move "
msgstr ""
#: .\cookbook\views\api.py:356
#: .\cookbook\views\api.py:355
msgid "Cannot move an object to itself!"
msgstr ""
#: .\cookbook\views\api.py:362
#: .\cookbook\views\api.py:361
#, python-brace-format
msgid "No {self.basename} with id {parent} exists"
msgstr ""
#: .\cookbook\views\api.py:368
#: .\cookbook\views\api.py:367
#, python-brace-format
msgid "{child.name} was moved successfully to parent {parent.name}"
msgstr ""
#: .\cookbook\views\api.py:590
#: .\cookbook\views\api.py:589
#, python-brace-format
msgid "{obj.name} was removed from the shopping list."
msgstr ""
#: .\cookbook\views\api.py:595 .\cookbook\views\api.py:1038
#: .\cookbook\views\api.py:1051
#: .\cookbook\views\api.py:594 .\cookbook\views\api.py:1037
#: .\cookbook\views\api.py:1050
#, python-brace-format
msgid "{obj.name} was added to the shopping list."
msgstr ""
#: .\cookbook\views\api.py:743
#: .\cookbook\views\api.py:742
msgid "Filter meal plans from date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:744
#: .\cookbook\views\api.py:743
msgid "Filter meal plans to date (inclusive) in the format of YYYY-MM-DD."
msgstr ""
#: .\cookbook\views\api.py:745
#: .\cookbook\views\api.py:744
msgid "Filter meal plans with MealType ID. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:873
#: .\cookbook\views\api.py:872
msgid "ID of recipe a step is part of. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:874
#: .\cookbook\views\api.py:873
msgid "Query string matched (fuzzy) against object name."
msgstr ""
#: .\cookbook\views\api.py:910
#: .\cookbook\views\api.py:909
msgid ""
"Query string matched (fuzzy) against recipe name. In the future also "
"fulltext search."
msgstr ""
#: .\cookbook\views\api.py:911
#: .\cookbook\views\api.py:910
msgid ""
"ID of keyword a recipe should have. For multiple repeat parameter. "
"Equivalent to keywords_or"
msgstr ""
#: .\cookbook\views\api.py:912
#: .\cookbook\views\api.py:911
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with any of the keywords"
msgstr ""
#: .\cookbook\views\api.py:913
#: .\cookbook\views\api.py:912
msgid ""
"Keyword IDs, repeat for multiple. Return recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:914
#: .\cookbook\views\api.py:913
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords."
msgstr ""
#: .\cookbook\views\api.py:915
#: .\cookbook\views\api.py:914
msgid ""
"Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords."
msgstr ""
#: .\cookbook\views\api.py:916
#: .\cookbook\views\api.py:915
msgid "ID of food a recipe should have. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:917
#: .\cookbook\views\api.py:916
msgid "Food IDs, repeat for multiple. Return recipes with any of the foods"
msgstr ""
#: .\cookbook\views\api.py:918
#: .\cookbook\views\api.py:917
msgid "Food IDs, repeat for multiple. Return recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:919
#: .\cookbook\views\api.py:918
msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods."
msgstr ""
#: .\cookbook\views\api.py:920
#: .\cookbook\views\api.py:919
msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods."
msgstr ""
#: .\cookbook\views\api.py:921
#: .\cookbook\views\api.py:920
msgid "ID of unit a recipe should have."
msgstr ""
#: .\cookbook\views\api.py:922
#: .\cookbook\views\api.py:921
msgid ""
"Rating a recipe should have or greater. [0 - 5] Negative value filters "
"rating less than."
msgstr ""
#: .\cookbook\views\api.py:923
#: .\cookbook\views\api.py:922
msgid "ID of book a recipe should be in. For multiple repeat parameter."
msgstr ""
#: .\cookbook\views\api.py:924
#: .\cookbook\views\api.py:923
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
msgstr ""
#: .\cookbook\views\api.py:925
#: .\cookbook\views\api.py:924
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:926
#: .\cookbook\views\api.py:925
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
msgstr ""
#: .\cookbook\views\api.py:927
#: .\cookbook\views\api.py:926
msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books."
msgstr ""
#: .\cookbook\views\api.py:928
#: .\cookbook\views\api.py:927
msgid "If only internal recipes should be returned. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:929
#: .\cookbook\views\api.py:928
msgid "Returns the results in randomized order. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:930
#: .\cookbook\views\api.py:929
msgid "Returns new results first in search results. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:931
#: .\cookbook\views\api.py:930
msgid ""
"Filter recipes cooked X times or more. Negative values returns cooked less "
"than X times"
msgstr ""
#: .\cookbook\views\api.py:932
#: .\cookbook\views\api.py:931
msgid ""
"Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:933
#: .\cookbook\views\api.py:932
msgid ""
"Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:934
#: .\cookbook\views\api.py:933
msgid ""
"Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or "
"before date."
msgstr ""
#: .\cookbook\views\api.py:935
#: .\cookbook\views\api.py:934
msgid ""
"Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on "
"or before date."
msgstr ""
#: .\cookbook\views\api.py:936
#: .\cookbook\views\api.py:935
msgid "Filter recipes that can be made with OnHand food. [true/<b>false</b>]"
msgstr ""
#: .\cookbook\views\api.py:1123
#: .\cookbook\views\api.py:1122
msgid ""
"Returns the shopping list entry with a primary key of id. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1126
#: .\cookbook\views\api.py:1125
msgid ""
"Filter shopping list entries on checked. [true, false, both, <b>recent</"
"b>]<br> - recent includes unchecked items and recently "
"completed items."
msgstr ""
#: .\cookbook\views\api.py:1129
#: .\cookbook\views\api.py:1128
msgid "Returns the shopping list entries sorted by supermarket category order."
msgstr ""
#: .\cookbook\views\api.py:1211
#: .\cookbook\views\api.py:1210
msgid "Filter for entries with the given recipe"
msgstr ""
#: .\cookbook\views\api.py:1293
#: .\cookbook\views\api.py:1292
msgid ""
"Return the Automations matching the automation type. Multiple values "
"allowed."
msgstr ""
#: .\cookbook\views\api.py:1416
#: .\cookbook\views\api.py:1415
msgid "Nothing to do."
msgstr ""
#: .\cookbook\views\api.py:1443
#: .\cookbook\views\api.py:1445
msgid "Invalid Url"
msgstr ""
#: .\cookbook\views\api.py:1447
#: .\cookbook\views\api.py:1449
msgid "Connection Refused."
msgstr ""
#: .\cookbook\views\api.py:1449
#: .\cookbook\views\api.py:1451
msgid "Bad URL Schema."
msgstr ""
#: .\cookbook\views\api.py:1472
#: .\cookbook\views\api.py:1474
#, fuzzy
#| msgid "The requested page could not be found."
msgid "No usable data could be found."
msgstr "Không thể tìm thấy trang được yêu cầu."
#: .\cookbook\views\api.py:1547
#: .\cookbook\views\api.py:1549
msgid "File is above space limit"
msgstr ""
#: .\cookbook\views\api.py:1564 .\cookbook\views\import_export.py:114
#: .\cookbook\views\api.py:1566 .\cookbook\views\import_export.py:114
msgid "Importing is not implemented for this provider"
msgstr ""
#: .\cookbook\views\api.py:1648 .\cookbook\views\data.py:30
#: .\cookbook\views\api.py:1650 .\cookbook\views\data.py:30
#: .\cookbook\views\edit.py:88 .\cookbook\views\new.py:63
#: .\cookbook\views\new.py:82
msgid "This feature is not yet available in the hosted version of tandoor!"
msgstr ""
#: .\cookbook\views\api.py:1669
#: .\cookbook\views\api.py:1671
msgid "Sync successful!"
msgstr "Đồng bộ thành công!"
#: .\cookbook\views\api.py:1672
#: .\cookbook\views\api.py:1674
msgid "Error synchronizing with Storage"
msgstr ""
@@ -2421,7 +2435,7 @@ msgid "There was an error importing this recipe!"
msgstr "Đã có lỗi xảy ra khi nhập công thức này!"
#: .\cookbook\views\views.py:69 .\cookbook\views\views.py:177
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:418
#: .\cookbook\views\views.py:204 .\cookbook\views\views.py:423
msgid "This feature is not available in the demo version!"
msgstr ""
@@ -2458,23 +2472,27 @@ msgstr ""
msgid "Fuzzy search is not compatible with this search method!"
msgstr ""
#: .\cookbook\views\views.py:305
#: .\cookbook\views\views.py:306
#, python-format
msgid "PostgreSQL %(v)s is deprecated. Upgrade to a fully supported version!"
msgstr ""
#: .\cookbook\views\views.py:308
#: .\cookbook\views\views.py:309
#, python-format
msgid "You are running PostgreSQL %(v1)s. PostgreSQL %(v2)s is recommended"
msgstr ""
#: .\cookbook\views\views.py:312
#: .\cookbook\views\views.py:313
msgid "Unable to determine PostgreSQL version."
msgstr ""
#: .\cookbook\views\views.py:317
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 ""
#: .\cookbook\views\views.py:355
#: .\cookbook\views\views.py:360
#, fuzzy
#| msgid ""
#| "The setup page can only be used to create the first user! If you have "
@@ -2489,55 +2507,55 @@ msgstr ""
"định danh của tài khoản quản trị của bạn, xin hãy tham khảo tài liệu django "
"để xem cách đặt lại mật khẩu."
#: .\cookbook\views\views.py:364
#: .\cookbook\views\views.py:369
msgid "Passwords dont match!"
msgstr "Mật khẩu không trùng khớp!"
#: .\cookbook\views\views.py:372
#: .\cookbook\views\views.py:377
msgid "User has been created, please login!"
msgstr "Người dùng đã được tạo, xin hãy đăng nhập!"
#: .\cookbook\views\views.py:388
#: .\cookbook\views\views.py:393
msgid "Malformed Invite Link supplied!"
msgstr ""
#: .\cookbook\views\views.py:405
#: .\cookbook\views\views.py:410
msgid "Successfully joined space."
msgstr ""
#: .\cookbook\views\views.py:411
#: .\cookbook\views\views.py:416
msgid "Invite Link not valid or already used!"
msgstr "Liên kết mời không hợp lệ hoặc đã được sử dụng!"
#: .\cookbook\views\views.py:427
#: .\cookbook\views\views.py:432
msgid ""
"Reporting share links is not enabled for this instance. Please notify the "
"page administrator to report problems."
msgstr ""
#: .\cookbook\views\views.py:432
#: .\cookbook\views\views.py:437
msgid ""
"Recipe sharing link has been disabled! For additional information please "
"contact the page administrator."
msgstr ""
#: .\cookbook\views\views.py:446
#: .\cookbook\views\views.py:451
msgid "Manage recipes, shopping list, meal plans and more."
msgstr ""
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "Plan"
msgstr "Kế hoạch"
#: .\cookbook\views\views.py:453
#: .\cookbook\views\views.py:458
msgid "View your meal Plan"
msgstr ""
#: .\cookbook\views\views.py:454
#: .\cookbook\views\views.py:459
msgid "View your cookbooks"
msgstr ""
#: .\cookbook\views\views.py:455
#: .\cookbook\views\views.py:460
#, fuzzy
#| msgid "Shopping Lists"
msgid "View your shopping lists"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,46 @@
# Generated by Django 4.2.11 on 2024-05-01 10:56
from datetime import timedelta
from django.db import migrations, models
from django_scopes import scopes_disabled
def timezone_correction(apps, schema_editor):
# when converting from date to datetime the field becomes timezone aware and defaults to 00:00:00 UTC
# this will be converted to a local datetime on the client which, for all negative offset timezones,
# would mean that the plan item shows one day prior to the previous planning date
# by setting the time on the old entries to 11:00 this issue will be limited to a very small number of people (see https://en.wikipedia.org/wiki/Time_zone#/media/File:World_Time_Zones_Map.svg)
# the server timezone could be used to guess zone of most of the clients but that would also not be perfect so this much simpler alternative is chosen
with scopes_disabled():
MealPlan = apps.get_model('cookbook', 'MealPlan')
meal_plans = MealPlan.objects.all()
for mp in meal_plans:
mp.from_date += timedelta(hours=12)
mp.to_date += timedelta(hours=12)
MealPlan.objects.bulk_update(meal_plans, ['from_date', 'to_date'], batch_size=1000)
class Migration(migrations.Migration):
dependencies = [
('cookbook', '0217_alter_userpreference_default_page'),
]
operations = [
migrations.AddField(
model_name='mealtype',
name='time',
field=models.TimeField(blank=True, null=True),
),
migrations.AlterField(
model_name='mealplan',
name='from_date',
field=models.DateTimeField(),
),
migrations.AlterField(
model_name='mealplan',
name='to_date',
field=models.DateTimeField(),
),
migrations.RunPython(timezone_correction)
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 4.2.15 on 2024-09-15 10:30
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('cookbook', '0218_alter_mealplan_from_date_alter_mealplan_to_date'),
]
operations = [
migrations.AddField(
model_name='connectorconfig',
name='supports_description_field',
field=models.BooleanField(default=True, help_text='Does the todo entity support the description field'),
),
]

View File

@@ -406,6 +406,7 @@ class ConnectorConfig(models.Model, PermissionModelMixin):
on_shopping_list_entry_created_enabled = models.BooleanField(default=False)
on_shopping_list_entry_updated_enabled = models.BooleanField(default=False)
on_shopping_list_entry_deleted_enabled = models.BooleanField(default=False)
supports_description_field = models.BooleanField(default=True, help_text="Does the todo entity support the description field")
url = models.URLField(blank=True, null=True)
token = models.CharField(max_length=512, blank=True, null=True)
@@ -417,7 +418,6 @@ class ConnectorConfig(models.Model, PermissionModelMixin):
objects = ScopedManager(space='space')
class UserPreference(models.Model, PermissionModelMixin):
# Themes
BOOTSTRAP = 'BOOTSTRAP'
@@ -1135,6 +1135,7 @@ class MealType(models.Model, PermissionModelMixin):
name = models.CharField(max_length=128)
order = models.IntegerField(default=0)
color = models.CharField(max_length=7, blank=True, null=True)
time = models.TimeField(null=True, blank=True)
default = models.BooleanField(default=False, blank=True)
created_by = models.ForeignKey(User, on_delete=models.CASCADE)
@@ -1158,8 +1159,8 @@ class MealPlan(ExportModelOperationsMixin('meal_plan'), models.Model, Permission
shared = models.ManyToManyField(User, blank=True, related_name='plan_share')
meal_type = models.ForeignKey(MealType, on_delete=models.CASCADE)
note = models.TextField(blank=True)
from_date = models.DateField()
to_date = models.DateField()
from_date = models.DateTimeField()
to_date = models.DateTimeField()
space = models.ForeignKey(Space, on_delete=models.CASCADE)
objects = ScopedManager(space='space')

View File

@@ -4,8 +4,8 @@ import os
from datetime import datetime
import requests
import validators
from cookbook.helper.HelperFunctions import validate_import_url
from cookbook.models import Recipe, RecipeImport, SyncLog
from cookbook.provider.provider import Provider
@@ -107,7 +107,7 @@ class Dropbox(Provider):
recipe.save()
url = recipe.link.replace('www.dropbox.', 'dl.dropboxusercontent.')
if validators.url(url, public=True):
if validate_import_url(url):
response = requests.get(url)
return io.BytesIO(response.content)

View File

@@ -4,8 +4,9 @@ import tempfile
from datetime import datetime
import requests
import validators
import webdav3.client as wc
from cookbook.helper.HelperFunctions import validate_import_url
from cookbook.models import Recipe, RecipeImport, SyncLog
from cookbook.provider.provider import Provider
from requests.auth import HTTPBasicAuth
@@ -93,7 +94,7 @@ class Nextcloud(Provider):
"Content-Type": "application/json"
}
if validators.url(url, public=True):
if validate_import_url(url):
r = requests.get(
url,
headers=headers,

View File

@@ -355,7 +355,7 @@ class MealTypeSerializer(SpacedModelSerializer, WritableNestedModelSerializer):
class Meta:
list_serializer_class = SpaceFilterSerializer
model = MealType
fields = ('id', 'name', 'order', 'color', 'default', 'created_by')
fields = ('id', 'name', 'order', 'time', 'color', 'default', 'created_by')
read_only_fields = ('created_by',)
@@ -427,7 +427,7 @@ class ConnectorConfigConfigSerializer(SpacedModelSerializer):
fields = (
'id', 'name', 'url', 'token', 'todo_entity', 'enabled',
'on_shopping_list_entry_created_enabled', 'on_shopping_list_entry_updated_enabled',
'on_shopping_list_entry_deleted_enabled', 'created_by'
'on_shopping_list_entry_deleted_enabled', 'supports_description_field', 'created_by'
)
read_only_fields = ('created_by',)
@@ -1030,7 +1030,7 @@ class MealPlanSerializer(SpacedModelSerializer, WritableNestedModelSerializer):
shared = UserSerializer(many=True, required=False, allow_null=True)
shopping = serializers.SerializerMethodField('in_shopping')
to_date = serializers.DateField(required=False)
to_date = serializers.DateTimeField(required=False)
def get_note_markdown(self, obj):
return markdown(obj.note)

View File

@@ -4,7 +4,7 @@
{% load custom_tags %}
{% theme_values request as theme_values %}
<!DOCTYPE html>
<html>
<head>
<title>{% block title %}
@@ -403,7 +403,7 @@
{% if HOSTED and request.space.max_recipes == 10 %}
<div class="bg-warning" style=" width: 100%; text-align: center!important; color: #ffffff; padding: 8px">
{% trans 'You are using the free version of Tandor' %} <a class="btn-success btn-sm"
{% trans 'You are using the free version of Tandoor' %} <a class="btn-success btn-sm"
href="https://tandoor.dev/manage">{% trans 'Upgrade Now' %}</a>
</div>
{% endif %}

View File

@@ -83,6 +83,17 @@
{% trans 'Everything is fine!' %}
{% endif %}
<h4 class="mt-3">{% trans 'Allowed Hosts' %} <span
class="badge badge-{% if '*' in allowed_hosts %}warning{% else %}success{% endif %}">{% if '*' in allowed_hosts %}
{% trans 'Warning' %}{% else %}{% trans 'Ok' %}{% endif %}</span></h4>
{% 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 %}
<h4 class="mt-3">{% trans 'Database' %}
<span class="badge badge-{{ postgres_status }}">
{% if postgres_status == 'warning' %}
@@ -164,7 +175,34 @@
{#{% for orphan in orphans %}{{ orphan }}#}
{#{% endfor %}#}
{# </textarea>#}
{% if api_space_stats %}
<h4 class="mt-3">API Stats</h4>
<h6 >Space Stats</h6>
<table class="table table-bordered table-striped">
{% for r in api_space_stats %}
<tr>
{% for c in r %}
<td>
{{ c }}
</td>
{% endfor %}
</tr>
{% endfor %}
</table>
<h6 >Endpoint Stats</h6>
<table class="table table-bordered table-striped">
{% for r in api_stats %}
<tr>
{% for c in r %}
<td>
{{ c }}
</td>
{% endfor %}
</tr>
{% endfor %}
</table>
{% endif %}
<h4 class="mt-3">Debug</h4>
<textarea class="form-control" rows="20">
Gunicorn Media: {{ gunicorn_media }}

View File

@@ -0,0 +1,319 @@
body {
font-family: Helvetica, Arial, sans-serif;
font-size: 12px;
/* do not increase min-width as some may use split screens */
min-width: 800px;
color: #999;
}
h1 {
font-size: 24px;
color: black;
}
h2 {
font-size: 16px;
color: black;
}
p {
color: black;
}
a {
color: #999;
}
table {
border-collapse: collapse;
}
/******************************
* SUMMARY INFORMATION
******************************/
#environment td {
padding: 5px;
border: 1px solid #e6e6e6;
vertical-align: top;
}
#environment tr:nth-child(odd) {
background-color: #f6f6f6;
}
#environment ul {
margin: 0;
padding: 0 20px;
}
/******************************
* TEST RESULT COLORS
******************************/
span.passed,
.passed .col-result {
color: green;
}
span.skipped,
span.xfailed,
span.rerun,
.skipped .col-result,
.xfailed .col-result,
.rerun .col-result {
color: orange;
}
span.error,
span.failed,
span.xpassed,
.error .col-result,
.failed .col-result,
.xpassed .col-result {
color: red;
}
.col-links__extra {
margin-right: 3px;
}
/******************************
* RESULTS TABLE
*
* 1. Table Layout
* 2. Extra
* 3. Sorting items
*
******************************/
/*------------------
* 1. Table Layout
*------------------*/
#results-table {
border: 1px solid #e6e6e6;
color: #999;
font-size: 12px;
width: 100%;
}
#results-table th,
#results-table td {
padding: 5px;
border: 1px solid #e6e6e6;
text-align: left;
}
#results-table th {
font-weight: bold;
}
/*------------------
* 2. Extra
*------------------*/
.logwrapper {
max-height: 230px;
overflow-y: scroll;
background-color: #e6e6e6;
}
.logwrapper.expanded {
max-height: none;
}
.logwrapper.expanded .logexpander:after {
content: "collapse [-]";
}
.logwrapper .logexpander {
z-index: 1;
position: sticky;
top: 10px;
width: max-content;
border: 1px solid;
border-radius: 3px;
padding: 5px 7px;
margin: 10px 0 10px calc(100% - 80px);
cursor: pointer;
background-color: #e6e6e6;
}
.logwrapper .logexpander:after {
content: "expand [+]";
}
.logwrapper .logexpander:hover {
color: #000;
border-color: #000;
}
.logwrapper .log {
min-height: 40px;
position: relative;
top: -50px;
height: calc(100% + 50px);
border: 1px solid #e6e6e6;
color: black;
display: block;
font-family: "Courier New", Courier, monospace;
padding: 5px;
padding-right: 80px;
white-space: pre-wrap;
}
div.media {
border: 1px solid #e6e6e6;
float: right;
height: 240px;
margin: 0 5px;
overflow: hidden;
width: 320px;
}
.media-container {
display: grid;
grid-template-columns: 25px auto 25px;
align-items: center;
flex: 1 1;
overflow: hidden;
height: 200px;
}
.media-container--fullscreen {
grid-template-columns: 0px auto 0px;
}
.media-container__nav--right,
.media-container__nav--left {
text-align: center;
cursor: pointer;
}
.media-container__viewport {
cursor: pointer;
text-align: center;
height: inherit;
}
.media-container__viewport img,
.media-container__viewport video {
object-fit: cover;
width: 100%;
max-height: 100%;
}
.media__name,
.media__counter {
display: flex;
flex-direction: row;
justify-content: space-around;
flex: 0 0 25px;
align-items: center;
}
.collapsible td:not(.col-links) {
cursor: pointer;
}
.collapsible td:not(.col-links):hover::after {
color: #bbb;
font-style: italic;
cursor: pointer;
}
.col-result {
width: 130px;
}
.col-result:hover::after {
content: " (hide details)";
}
.col-result.collapsed:hover::after {
content: " (show details)";
}
#environment-header h2:hover::after {
content: " (hide details)";
color: #bbb;
font-style: italic;
cursor: pointer;
font-size: 12px;
}
#environment-header.collapsed h2:hover::after {
content: " (show details)";
color: #bbb;
font-style: italic;
cursor: pointer;
font-size: 12px;
}
/*------------------
* 3. Sorting items
*------------------*/
.sortable {
cursor: pointer;
}
.sortable.desc:after {
content: " ";
position: relative;
left: 5px;
bottom: -12.5px;
border: 10px solid #4caf50;
border-bottom: 0;
border-left-color: transparent;
border-right-color: transparent;
}
.sortable.asc:after {
content: " ";
position: relative;
left: 5px;
bottom: 12.5px;
border: 10px solid #4caf50;
border-top: 0;
border-left-color: transparent;
border-right-color: transparent;
}
.hidden, .summary__reload__button.hidden {
display: none;
}
.summary__data {
flex: 0 0 550px;
}
.summary__reload {
flex: 1 1;
display: flex;
justify-content: center;
}
.summary__reload__button {
flex: 0 0 300px;
display: flex;
color: white;
font-weight: bold;
background-color: #4caf50;
text-align: center;
justify-content: center;
align-items: center;
border-radius: 3px;
cursor: pointer;
}
.summary__reload__button:hover {
background-color: #46a049;
}
.summary__spacer {
flex: 0 0 550px;
}
.controls {
display: flex;
justify-content: space-between;
}
.filters,
.collapse {
display: flex;
align-items: center;
}
.filters button,
.collapse button {
color: #999;
border: none;
background: none;
cursor: pointer;
text-decoration: underline;
}
.filters button:hover,
.collapse button:hover {
color: #ccc;
}
.filter__label {
margin-right: 10px;
}

View File

@@ -0,0 +1 @@
<?xml version="1.0" encoding="utf-8"?><testsuites><testsuite name="pytest" errors="0" failures="0" skipped="0" tests="5" time="35.973" timestamp="2024-08-18T14:19:20.591136" hostname="vabene-pc"><testcase classname="cookbook.tests.api.test_api_space" name="test_list_permission[arg0]" time="27.231" /><testcase classname="cookbook.tests.api.test_api_space" name="test_list_permission[arg1]" time="27.784" /><testcase classname="cookbook.tests.api.test_api_space" name="test_list_permission[arg3]" time="28.126" /><testcase classname="cookbook.tests.api.test_api_space" name="test_list_permission[arg4]" time="28.153" /><testcase classname="cookbook.tests.api.test_api_space" name="test_list_permission[arg2]" time="28.177" /></testsuite></testsuites>

File diff suppressed because one or more lines are too long

View File

@@ -99,11 +99,23 @@ def test_add(arg, request, a1_s2, obj_1):
assert r.status_code == arg[1]
if r.status_code == 201:
assert response['name'] == 'test'
assert response['supports_description_field'] == True
r = c.get(reverse(DETAIL_URL, args={response['id']}))
assert r.status_code == 200
r = a1_s2.get(reverse(DETAIL_URL, args={response['id']}))
assert r.status_code == 404
def test_add_with_supports_description_field_false(a1_s2):
r = a1_s2.post(
reverse(LIST_URL),
{'name': 'test', 'url': 'http://localhost:8123/api', 'token': '1234', 'enabled': 'true', 'supports_description_field': 'false'},
content_type='application/json'
)
response = json.loads(r.content)
print(r.content)
assert r.status_code == 201
assert response['name'] == 'test'
assert response['supports_description_field'] == False
def test_delete(a1_s1, a1_s2, obj_1):
r = a1_s2.delete(

View File

@@ -81,7 +81,7 @@ def obj_tree_1(request, space_1):
@pytest.mark.parametrize("arg", [
['a_u', 403],
['g1_s1', 403],
['g1_s1', 200],
['u1_s1', 200],
['a1_s1', 200],
])

View File

@@ -51,7 +51,7 @@ def test_list_space(obj_1, obj_2, u1_s1, u1_s2, space_2):
['g1_s2', 403],
['u1_s2', 404],
['a1_s2', 404],
])
], ids=str)
def test_update(arg, request, obj_1):
c = request.getfixturevalue(arg[0])
r = c.patch(

View File

@@ -73,7 +73,7 @@ def recipe_1_1_s1(u1_s1, obj_1_1, space_1):
@pytest.mark.parametrize("arg", [
['a_u', 403],
['g1_s1', 403],
['g1_s1', 200],
['u1_s1', 200],
['a1_s1', 200],
])

View File

@@ -100,7 +100,7 @@ def test_add_duplicate(u1_s1, obj_1):
{'book': obj_1.book.pk, 'recipe': obj_1.recipe.pk},
content_type='application/json'
)
assert r.status_code == 201
assert r.status_code == 400
def test_delete(u1_s1, u1_s2, obj_1):

View File

@@ -11,7 +11,7 @@ DETAIL_URL = 'api:space-detail'
@pytest.mark.parametrize("arg", [
['a_u', 403, 0],
['g1_s1', 403, 0],
['g1_s1', 200, 1],
['u1_s1', 200, 1],
['a1_s1', 200, 1],
['a2_s1', 200, 1],

View File

@@ -0,0 +1,319 @@
body {
font-family: Helvetica, Arial, sans-serif;
font-size: 12px;
/* do not increase min-width as some may use split screens */
min-width: 800px;
color: #999;
}
h1 {
font-size: 24px;
color: black;
}
h2 {
font-size: 16px;
color: black;
}
p {
color: black;
}
a {
color: #999;
}
table {
border-collapse: collapse;
}
/******************************
* SUMMARY INFORMATION
******************************/
#environment td {
padding: 5px;
border: 1px solid #e6e6e6;
vertical-align: top;
}
#environment tr:nth-child(odd) {
background-color: #f6f6f6;
}
#environment ul {
margin: 0;
padding: 0 20px;
}
/******************************
* TEST RESULT COLORS
******************************/
span.passed,
.passed .col-result {
color: green;
}
span.skipped,
span.xfailed,
span.rerun,
.skipped .col-result,
.xfailed .col-result,
.rerun .col-result {
color: orange;
}
span.error,
span.failed,
span.xpassed,
.error .col-result,
.failed .col-result,
.xpassed .col-result {
color: red;
}
.col-links__extra {
margin-right: 3px;
}
/******************************
* RESULTS TABLE
*
* 1. Table Layout
* 2. Extra
* 3. Sorting items
*
******************************/
/*------------------
* 1. Table Layout
*------------------*/
#results-table {
border: 1px solid #e6e6e6;
color: #999;
font-size: 12px;
width: 100%;
}
#results-table th,
#results-table td {
padding: 5px;
border: 1px solid #e6e6e6;
text-align: left;
}
#results-table th {
font-weight: bold;
}
/*------------------
* 2. Extra
*------------------*/
.logwrapper {
max-height: 230px;
overflow-y: scroll;
background-color: #e6e6e6;
}
.logwrapper.expanded {
max-height: none;
}
.logwrapper.expanded .logexpander:after {
content: "collapse [-]";
}
.logwrapper .logexpander {
z-index: 1;
position: sticky;
top: 10px;
width: max-content;
border: 1px solid;
border-radius: 3px;
padding: 5px 7px;
margin: 10px 0 10px calc(100% - 80px);
cursor: pointer;
background-color: #e6e6e6;
}
.logwrapper .logexpander:after {
content: "expand [+]";
}
.logwrapper .logexpander:hover {
color: #000;
border-color: #000;
}
.logwrapper .log {
min-height: 40px;
position: relative;
top: -50px;
height: calc(100% + 50px);
border: 1px solid #e6e6e6;
color: black;
display: block;
font-family: "Courier New", Courier, monospace;
padding: 5px;
padding-right: 80px;
white-space: pre-wrap;
}
div.media {
border: 1px solid #e6e6e6;
float: right;
height: 240px;
margin: 0 5px;
overflow: hidden;
width: 320px;
}
.media-container {
display: grid;
grid-template-columns: 25px auto 25px;
align-items: center;
flex: 1 1;
overflow: hidden;
height: 200px;
}
.media-container--fullscreen {
grid-template-columns: 0px auto 0px;
}
.media-container__nav--right,
.media-container__nav--left {
text-align: center;
cursor: pointer;
}
.media-container__viewport {
cursor: pointer;
text-align: center;
height: inherit;
}
.media-container__viewport img,
.media-container__viewport video {
object-fit: cover;
width: 100%;
max-height: 100%;
}
.media__name,
.media__counter {
display: flex;
flex-direction: row;
justify-content: space-around;
flex: 0 0 25px;
align-items: center;
}
.collapsible td:not(.col-links) {
cursor: pointer;
}
.collapsible td:not(.col-links):hover::after {
color: #bbb;
font-style: italic;
cursor: pointer;
}
.col-result {
width: 130px;
}
.col-result:hover::after {
content: " (hide details)";
}
.col-result.collapsed:hover::after {
content: " (show details)";
}
#environment-header h2:hover::after {
content: " (hide details)";
color: #bbb;
font-style: italic;
cursor: pointer;
font-size: 12px;
}
#environment-header.collapsed h2:hover::after {
content: " (show details)";
color: #bbb;
font-style: italic;
cursor: pointer;
font-size: 12px;
}
/*------------------
* 3. Sorting items
*------------------*/
.sortable {
cursor: pointer;
}
.sortable.desc:after {
content: " ";
position: relative;
left: 5px;
bottom: -12.5px;
border: 10px solid #4caf50;
border-bottom: 0;
border-left-color: transparent;
border-right-color: transparent;
}
.sortable.asc:after {
content: " ";
position: relative;
left: 5px;
bottom: 12.5px;
border: 10px solid #4caf50;
border-top: 0;
border-left-color: transparent;
border-right-color: transparent;
}
.hidden, .summary__reload__button.hidden {
display: none;
}
.summary__data {
flex: 0 0 550px;
}
.summary__reload {
flex: 1 1;
display: flex;
justify-content: center;
}
.summary__reload__button {
flex: 0 0 300px;
display: flex;
color: white;
font-weight: bold;
background-color: #4caf50;
text-align: center;
justify-content: center;
align-items: center;
border-radius: 3px;
cursor: pointer;
}
.summary__reload__button:hover {
background-color: #46a049;
}
.summary__spacer {
flex: 0 0 550px;
}
.controls {
display: flex;
justify-content: space-between;
}
.filters,
.collapse {
display: flex;
align-items: center;
}
.filters button,
.collapse button {
color: #999;
border: none;
background: none;
cursor: pointer;
text-decoration: underline;
}
.filters button:hover,
.collapse button:hover {
color: #ccc;
}
.filter__label {
margin-right: 10px;
}

View File

@@ -0,0 +1 @@
<?xml version="1.0" encoding="utf-8"?><testsuites><testsuite name="pytest" errors="0" failures="0" skipped="0" tests="1" time="30.686" timestamp="2024-08-20T11:34:55.376500" hostname="DESKTOP-RM10LP5"><testcase classname="cookbook.tests.other.test_helpers" name="test_url_validator" time="21.551" /></testsuite></testsuites>

View File

@@ -0,0 +1,770 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title id="head-title">tests.html</title>
<link href="assets\style.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<h1 id="title">tests.html</h1>
<p>Report generated on 20-Aug-2024 at 11:35:26 by <a href="https://pypi.python.org/pypi/pytest-html">pytest-html</a>
v4.1.1</p>
<div id="environment-header">
<h2>Environment</h2>
</div>
<table id="environment"></table>
<!-- TEMPLATES -->
<template id="template_environment_row">
<tr>
<td></td>
<td></td>
</tr>
</template>
<template id="template_results-table__body--empty">
<tbody class="results-table-row">
<tr id="not-found-message">
<td colspan="4">No results found. Check the filters.</th>
</tr>
</template>
<template id="template_results-table__tbody">
<tbody class="results-table-row">
<tr class="collapsible">
</tr>
<tr class="extras-row">
<td class="extra" colspan="4">
<div class="extraHTML"></div>
<div class="media">
<div class="media-container">
<div class="media-container__nav--left"><</div>
<div class="media-container__viewport">
<img src="" />
<video controls>
<source src="" type="video/mp4">
</video>
</div>
<div class="media-container__nav--right">></div>
</div>
<div class="media__name"></div>
<div class="media__counter"></div>
</div>
<div class="logwrapper">
<div class="logexpander"></div>
<div class="log"></div>
</div>
</td>
</tr>
</tbody>
</template>
<!-- END TEMPLATES -->
<div class="summary">
<div class="summary__data">
<h2>Summary</h2>
<div class="additional-summary prefix">
</div>
<p class="run-count">1 test took 00:00:22.</p>
<p class="filter">(Un)check the boxes to filter the results.</p>
<div class="summary__reload">
<div class="summary__reload__button hidden" onclick="location.reload()">
<div>There are still tests running. <br />Reload this page to get the latest results!</div>
</div>
</div>
<div class="summary__spacer"></div>
<div class="controls">
<div class="filters">
<input checked="true" class="filter" name="filter_checkbox" type="checkbox" data-test-result="failed" disabled/>
<span class="failed">0 Failed,</span>
<input checked="true" class="filter" name="filter_checkbox" type="checkbox" data-test-result="passed" />
<span class="passed">1 Passed,</span>
<input checked="true" class="filter" name="filter_checkbox" type="checkbox" data-test-result="skipped" disabled/>
<span class="skipped">0 Skipped,</span>
<input checked="true" class="filter" name="filter_checkbox" type="checkbox" data-test-result="xfailed" disabled/>
<span class="xfailed">0 Expected failures,</span>
<input checked="true" class="filter" name="filter_checkbox" type="checkbox" data-test-result="xpassed" disabled/>
<span class="xpassed">0 Unexpected passes,</span>
<input checked="true" class="filter" name="filter_checkbox" type="checkbox" data-test-result="error" disabled/>
<span class="error">0 Errors,</span>
<input checked="true" class="filter" name="filter_checkbox" type="checkbox" data-test-result="rerun" disabled/>
<span class="rerun">0 Reruns</span>
</div>
<div class="collapse">
<button id="show_all_details">Show all details</button>&nbsp;/&nbsp;<button id="hide_all_details">Hide all details</button>
</div>
</div>
</div>
<div class="additional-summary summary">
</div>
<div class="additional-summary postfix">
</div>
</div>
<table id="results-table">
<thead id="results-table-head">
<tr>
<th class="sortable" data-column-type="result">Result</th>
<th class="sortable" data-column-type="testId">Test</th>
<th class="sortable" data-column-type="duration">Duration</th>
<th>Links</th>
</tr>
</thead>
</table>
</body>
<footer>
<div id="data-container" data-jsonblob="{&#34;environment&#34;: {&#34;Python&#34;: &#34;3.12.5&#34;, &#34;Platform&#34;: &#34;Windows-10-10.0.19045-SP0&#34;, &#34;Packages&#34;: {&#34;pytest&#34;: &#34;8.0.0&#34;, &#34;pluggy&#34;: &#34;1.4.0&#34;}, &#34;Plugins&#34;: {&#34;Faker&#34;: &#34;23.2.1&#34;, &#34;asyncio&#34;: &#34;0.23.5&#34;, &#34;cov&#34;: &#34;5.0.0&#34;, &#34;django&#34;: &#34;4.8.0&#34;, &#34;factoryboy&#34;: &#34;2.6.0&#34;, &#34;html&#34;: &#34;4.1.1&#34;, &#34;metadata&#34;: &#34;3.1.1&#34;, &#34;xdist&#34;: &#34;3.6.1&#34;}}, &#34;tests&#34;: {&#34;cookbook/tests/other/test_helpers.py::test_url_validator&#34;: [{&#34;extras&#34;: [], &#34;result&#34;: &#34;Passed&#34;, &#34;testId&#34;: &#34;cookbook/tests/other/test_helpers.py::test_url_validator&#34;, &#34;duration&#34;: &#34;00:00:22&#34;, &#34;resultsTableRow&#34;: [&#34;&lt;td class=\&#34;col-result\&#34;&gt;Passed&lt;/td&gt;&#34;, &#34;&lt;td class=\&#34;col-testId\&#34;&gt;cookbook/tests/other/test_helpers.py::test_url_validator&lt;/td&gt;&#34;, &#34;&lt;td class=\&#34;col-duration\&#34;&gt;00:00:22&lt;/td&gt;&#34;, &#34;&lt;td class=\&#34;col-links\&#34;&gt;&lt;/td&gt;&#34;], &#34;log&#34;: &#34;[gw0] win32 -- Python 3.12.5 C:\\Users\\Benedikt.Sienz\\Documents\\Development\\Django\\recipes\\venv\\Scripts\\python.exe\n\n---------------------------- Captured stdout setup -----------------------------\nTransforming nutrition information, this might take a while on large databases\n&#34;}]}, &#34;renderCollapsed&#34;: [&#34;passed&#34;], &#34;initialSort&#34;: &#34;result&#34;, &#34;title&#34;: &#34;tests.html&#34;}"></div>
<script>
(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
const { getCollapsedCategory, setCollapsedIds } = require('./storage.js')
class DataManager {
setManager(data) {
const collapsedCategories = [...getCollapsedCategory(data.renderCollapsed)]
const collapsedIds = []
const tests = Object.values(data.tests).flat().map((test, index) => {
const collapsed = collapsedCategories.includes(test.result.toLowerCase())
const id = `test_${index}`
if (collapsed) {
collapsedIds.push(id)
}
return {
...test,
id,
collapsed,
}
})
const dataBlob = { ...data, tests }
this.data = { ...dataBlob }
this.renderData = { ...dataBlob }
setCollapsedIds(collapsedIds)
}
get allData() {
return { ...this.data }
}
resetRender() {
this.renderData = { ...this.data }
}
setRender(data) {
this.renderData.tests = [...data]
}
toggleCollapsedItem(id) {
this.renderData.tests = this.renderData.tests.map((test) =>
test.id === id ? { ...test, collapsed: !test.collapsed } : test,
)
}
set allCollapsed(collapsed) {
this.renderData = { ...this.renderData, tests: [...this.renderData.tests.map((test) => (
{ ...test, collapsed }
))] }
}
get testSubset() {
return [...this.renderData.tests]
}
get environment() {
return this.renderData.environment
}
get initialSort() {
return this.data.initialSort
}
}
module.exports = {
manager: new DataManager(),
}
},{"./storage.js":8}],2:[function(require,module,exports){
const mediaViewer = require('./mediaviewer.js')
const templateEnvRow = document.getElementById('template_environment_row')
const templateResult = document.getElementById('template_results-table__tbody')
function htmlToElements(html) {
const temp = document.createElement('template')
temp.innerHTML = html
return temp.content.childNodes
}
const find = (selector, elem) => {
if (!elem) {
elem = document
}
return elem.querySelector(selector)
}
const findAll = (selector, elem) => {
if (!elem) {
elem = document
}
return [...elem.querySelectorAll(selector)]
}
const dom = {
getStaticRow: (key, value) => {
const envRow = templateEnvRow.content.cloneNode(true)
const isObj = typeof value === 'object' && value !== null
const values = isObj ? Object.keys(value).map((k) => `${k}: ${value[k]}`) : null
const valuesElement = htmlToElements(
values ? `<ul>${values.map((val) => `<li>${val}</li>`).join('')}<ul>` : `<div>${value}</div>`)[0]
const td = findAll('td', envRow)
td[0].textContent = key
td[1].appendChild(valuesElement)
return envRow
},
getResultTBody: ({ testId, id, log, extras, resultsTableRow, tableHtml, result, collapsed }) => {
const resultBody = templateResult.content.cloneNode(true)
resultBody.querySelector('tbody').classList.add(result.toLowerCase())
resultBody.querySelector('tbody').id = testId
resultBody.querySelector('.collapsible').dataset.id = id
resultsTableRow.forEach((html) => {
const t = document.createElement('template')
t.innerHTML = html
resultBody.querySelector('.collapsible').appendChild(t.content)
})
if (log) {
// Wrap lines starting with "E" with span.error to color those lines red
const wrappedLog = log.replace(/^E.*$/gm, (match) => `<span class="error">${match}</span>`)
resultBody.querySelector('.log').innerHTML = wrappedLog
} else {
resultBody.querySelector('.log').remove()
}
if (collapsed) {
resultBody.querySelector('.collapsible > td')?.classList.add('collapsed')
resultBody.querySelector('.extras-row').classList.add('hidden')
} else {
resultBody.querySelector('.collapsible > td')?.classList.remove('collapsed')
}
const media = []
extras?.forEach(({ name, format_type, content }) => {
if (['image', 'video'].includes(format_type)) {
media.push({ path: content, name, format_type })
}
if (format_type === 'html') {
resultBody.querySelector('.extraHTML').insertAdjacentHTML('beforeend', `<div>${content}</div>`)
}
})
mediaViewer.setup(resultBody, media)
// Add custom html from the pytest_html_results_table_html hook
tableHtml?.forEach((item) => {
resultBody.querySelector('td[class="extra"]').insertAdjacentHTML('beforeend', item)
})
return resultBody
},
}
module.exports = {
dom,
htmlToElements,
find,
findAll,
}
},{"./mediaviewer.js":6}],3:[function(require,module,exports){
const { manager } = require('./datamanager.js')
const { doSort } = require('./sort.js')
const storageModule = require('./storage.js')
const getFilteredSubSet = (filter) =>
manager.allData.tests.filter(({ result }) => filter.includes(result.toLowerCase()))
const doInitFilter = () => {
const currentFilter = storageModule.getVisible()
const filteredSubset = getFilteredSubSet(currentFilter)
manager.setRender(filteredSubset)
}
const doFilter = (type, show) => {
if (show) {
storageModule.showCategory(type)
} else {
storageModule.hideCategory(type)
}
const currentFilter = storageModule.getVisible()
const filteredSubset = getFilteredSubSet(currentFilter)
manager.setRender(filteredSubset)
const sortColumn = storageModule.getSort()
doSort(sortColumn, true)
}
module.exports = {
doFilter,
doInitFilter,
}
},{"./datamanager.js":1,"./sort.js":7,"./storage.js":8}],4:[function(require,module,exports){
const { redraw, bindEvents, renderStatic } = require('./main.js')
const { doInitFilter } = require('./filter.js')
const { doInitSort } = require('./sort.js')
const { manager } = require('./datamanager.js')
const data = JSON.parse(document.getElementById('data-container').dataset.jsonblob)
function init() {
manager.setManager(data)
doInitFilter()
doInitSort()
renderStatic()
redraw()
bindEvents()
}
init()
},{"./datamanager.js":1,"./filter.js":3,"./main.js":5,"./sort.js":7}],5:[function(require,module,exports){
const { dom, find, findAll } = require('./dom.js')
const { manager } = require('./datamanager.js')
const { doSort } = require('./sort.js')
const { doFilter } = require('./filter.js')
const {
getVisible,
getCollapsedIds,
setCollapsedIds,
getSort,
getSortDirection,
possibleFilters,
} = require('./storage.js')
const removeChildren = (node) => {
while (node.firstChild) {
node.removeChild(node.firstChild)
}
}
const renderStatic = () => {
const renderEnvironmentTable = () => {
const environment = manager.environment
const rows = Object.keys(environment).map((key) => dom.getStaticRow(key, environment[key]))
const table = document.getElementById('environment')
removeChildren(table)
rows.forEach((row) => table.appendChild(row))
}
renderEnvironmentTable()
}
const addItemToggleListener = (elem) => {
elem.addEventListener('click', ({ target }) => {
const id = target.parentElement.dataset.id
manager.toggleCollapsedItem(id)
const collapsedIds = getCollapsedIds()
if (collapsedIds.includes(id)) {
const updated = collapsedIds.filter((item) => item !== id)
setCollapsedIds(updated)
} else {
collapsedIds.push(id)
setCollapsedIds(collapsedIds)
}
redraw()
})
}
const renderContent = (tests) => {
const sortAttr = getSort(manager.initialSort)
const sortAsc = JSON.parse(getSortDirection())
const rows = tests.map(dom.getResultTBody)
const table = document.getElementById('results-table')
const tableHeader = document.getElementById('results-table-head')
const newTable = document.createElement('table')
newTable.id = 'results-table'
// remove all sorting classes and set the relevant
findAll('.sortable', tableHeader).forEach((elem) => elem.classList.remove('asc', 'desc'))
tableHeader.querySelector(`.sortable[data-column-type="${sortAttr}"]`)?.classList.add(sortAsc ? 'desc' : 'asc')
newTable.appendChild(tableHeader)
if (!rows.length) {
const emptyTable = document.getElementById('template_results-table__body--empty').content.cloneNode(true)
newTable.appendChild(emptyTable)
} else {
rows.forEach((row) => {
if (!!row) {
findAll('.collapsible td:not(.col-links', row).forEach(addItemToggleListener)
find('.logexpander', row).addEventListener('click',
(evt) => evt.target.parentNode.classList.toggle('expanded'),
)
newTable.appendChild(row)
}
})
}
table.replaceWith(newTable)
}
const renderDerived = () => {
const currentFilter = getVisible()
possibleFilters.forEach((result) => {
const input = document.querySelector(`input[data-test-result="${result}"]`)
input.checked = currentFilter.includes(result)
})
}
const bindEvents = () => {
const filterColumn = (evt) => {
const { target: element } = evt
const { testResult } = element.dataset
doFilter(testResult, element.checked)
const collapsedIds = getCollapsedIds()
const updated = manager.renderData.tests.map((test) => {
return {
...test,
collapsed: collapsedIds.includes(test.id),
}
})
manager.setRender(updated)
redraw()
}
const header = document.getElementById('environment-header')
header.addEventListener('click', () => {
const table = document.getElementById('environment')
table.classList.toggle('hidden')
header.classList.toggle('collapsed')
})
findAll('input[name="filter_checkbox"]').forEach((elem) => {
elem.addEventListener('click', filterColumn)
})
findAll('.sortable').forEach((elem) => {
elem.addEventListener('click', (evt) => {
const { target: element } = evt
const { columnType } = element.dataset
doSort(columnType)
redraw()
})
})
document.getElementById('show_all_details').addEventListener('click', () => {
manager.allCollapsed = false
setCollapsedIds([])
redraw()
})
document.getElementById('hide_all_details').addEventListener('click', () => {
manager.allCollapsed = true
const allIds = manager.renderData.tests.map((test) => test.id)
setCollapsedIds(allIds)
redraw()
})
}
const redraw = () => {
const { testSubset } = manager
renderContent(testSubset)
renderDerived()
}
module.exports = {
redraw,
bindEvents,
renderStatic,
}
},{"./datamanager.js":1,"./dom.js":2,"./filter.js":3,"./sort.js":7,"./storage.js":8}],6:[function(require,module,exports){
class MediaViewer {
constructor(assets) {
this.assets = assets
this.index = 0
}
nextActive() {
this.index = this.index === this.assets.length - 1 ? 0 : this.index + 1
return [this.activeFile, this.index]
}
prevActive() {
this.index = this.index === 0 ? this.assets.length - 1 : this.index -1
return [this.activeFile, this.index]
}
get currentIndex() {
return this.index
}
get activeFile() {
return this.assets[this.index]
}
}
const setup = (resultBody, assets) => {
if (!assets.length) {
resultBody.querySelector('.media').classList.add('hidden')
return
}
const mediaViewer = new MediaViewer(assets)
const container = resultBody.querySelector('.media-container')
const leftArrow = resultBody.querySelector('.media-container__nav--left')
const rightArrow = resultBody.querySelector('.media-container__nav--right')
const mediaName = resultBody.querySelector('.media__name')
const counter = resultBody.querySelector('.media__counter')
const imageEl = resultBody.querySelector('img')
const sourceEl = resultBody.querySelector('source')
const videoEl = resultBody.querySelector('video')
const setImg = (media, index) => {
if (media?.format_type === 'image') {
imageEl.src = media.path
imageEl.classList.remove('hidden')
videoEl.classList.add('hidden')
} else if (media?.format_type === 'video') {
sourceEl.src = media.path
videoEl.classList.remove('hidden')
imageEl.classList.add('hidden')
}
mediaName.innerText = media?.name
counter.innerText = `${index + 1} / ${assets.length}`
}
setImg(mediaViewer.activeFile, mediaViewer.currentIndex)
const moveLeft = () => {
const [media, index] = mediaViewer.prevActive()
setImg(media, index)
}
const doRight = () => {
const [media, index] = mediaViewer.nextActive()
setImg(media, index)
}
const openImg = () => {
window.open(mediaViewer.activeFile.path, '_blank')
}
if (assets.length === 1) {
container.classList.add('media-container--fullscreen')
} else {
leftArrow.addEventListener('click', moveLeft)
rightArrow.addEventListener('click', doRight)
}
imageEl.addEventListener('click', openImg)
}
module.exports = {
setup,
}
},{}],7:[function(require,module,exports){
const { manager } = require('./datamanager.js')
const storageModule = require('./storage.js')
const genericSort = (list, key, ascending, customOrder) => {
let sorted
if (customOrder) {
sorted = list.sort((a, b) => {
const aValue = a.result.toLowerCase()
const bValue = b.result.toLowerCase()
const aIndex = customOrder.findIndex((item) => item.toLowerCase() === aValue)
const bIndex = customOrder.findIndex((item) => item.toLowerCase() === bValue)
// Compare the indices to determine the sort order
return aIndex - bIndex
})
} else {
sorted = list.sort((a, b) => a[key] === b[key] ? 0 : a[key] > b[key] ? 1 : -1)
}
if (ascending) {
sorted.reverse()
}
return sorted
}
const durationSort = (list, ascending) => {
const parseDuration = (duration) => {
if (duration.includes(':')) {
// If it's in the format "HH:mm:ss"
const [hours, minutes, seconds] = duration.split(':').map(Number)
return (hours * 3600 + minutes * 60 + seconds) * 1000
} else {
// If it's in the format "nnn ms"
return parseInt(duration)
}
}
const sorted = list.sort((a, b) => parseDuration(a['duration']) - parseDuration(b['duration']))
if (ascending) {
sorted.reverse()
}
return sorted
}
const doInitSort = () => {
const type = storageModule.getSort(manager.initialSort)
const ascending = storageModule.getSortDirection()
const list = manager.testSubset
const initialOrder = ['Error', 'Failed', 'Rerun', 'XFailed', 'XPassed', 'Skipped', 'Passed']
storageModule.setSort(type)
storageModule.setSortDirection(ascending)
if (type?.toLowerCase() === 'original') {
manager.setRender(list)
} else {
let sortedList
switch (type) {
case 'duration':
sortedList = durationSort(list, ascending)
break
case 'result':
sortedList = genericSort(list, type, ascending, initialOrder)
break
default:
sortedList = genericSort(list, type, ascending)
break
}
manager.setRender(sortedList)
}
}
const doSort = (type, skipDirection) => {
const newSortType = storageModule.getSort(manager.initialSort) !== type
const currentAsc = storageModule.getSortDirection()
let ascending
if (skipDirection) {
ascending = currentAsc
} else {
ascending = newSortType ? false : !currentAsc
}
storageModule.setSort(type)
storageModule.setSortDirection(ascending)
const list = manager.testSubset
const sortedList = type === 'duration' ? durationSort(list, ascending) : genericSort(list, type, ascending)
manager.setRender(sortedList)
}
module.exports = {
doInitSort,
doSort,
}
},{"./datamanager.js":1,"./storage.js":8}],8:[function(require,module,exports){
const possibleFilters = [
'passed',
'skipped',
'failed',
'error',
'xfailed',
'xpassed',
'rerun',
]
const getVisible = () => {
const url = new URL(window.location.href)
const settings = new URLSearchParams(url.search).get('visible')
const lower = (item) => {
const lowerItem = item.toLowerCase()
if (possibleFilters.includes(lowerItem)) {
return lowerItem
}
return null
}
return settings === null ?
possibleFilters :
[...new Set(settings?.split(',').map(lower).filter((item) => item))]
}
const hideCategory = (categoryToHide) => {
const url = new URL(window.location.href)
const visibleParams = new URLSearchParams(url.search).get('visible')
const currentVisible = visibleParams ? visibleParams.split(',') : [...possibleFilters]
const settings = [...new Set(currentVisible)].filter((f) => f !== categoryToHide).join(',')
url.searchParams.set('visible', settings)
window.history.pushState({}, null, unescape(url.href))
}
const showCategory = (categoryToShow) => {
if (typeof window === 'undefined') {
return
}
const url = new URL(window.location.href)
const currentVisible = new URLSearchParams(url.search).get('visible')?.split(',').filter(Boolean) ||
[...possibleFilters]
const settings = [...new Set([categoryToShow, ...currentVisible])]
const noFilter = possibleFilters.length === settings.length || !settings.length
noFilter ? url.searchParams.delete('visible') : url.searchParams.set('visible', settings.join(','))
window.history.pushState({}, null, unescape(url.href))
}
const getSort = (initialSort) => {
const url = new URL(window.location.href)
let sort = new URLSearchParams(url.search).get('sort')
if (!sort) {
sort = initialSort || 'result'
}
return sort
}
const setSort = (type) => {
const url = new URL(window.location.href)
url.searchParams.set('sort', type)
window.history.pushState({}, null, unescape(url.href))
}
const getCollapsedCategory = (renderCollapsed) => {
let categories
if (typeof window !== 'undefined') {
const url = new URL(window.location.href)
const collapsedItems = new URLSearchParams(url.search).get('collapsed')
switch (true) {
case !renderCollapsed && collapsedItems === null:
categories = ['passed']
break
case collapsedItems?.length === 0 || /^["']{2}$/.test(collapsedItems):
categories = []
break
case /^all$/.test(collapsedItems) || collapsedItems === null && /^all$/.test(renderCollapsed):
categories = [...possibleFilters]
break
default:
categories = collapsedItems?.split(',').map((item) => item.toLowerCase()) || renderCollapsed
break
}
} else {
categories = []
}
return categories
}
const getSortDirection = () => JSON.parse(sessionStorage.getItem('sortAsc')) || false
const setSortDirection = (ascending) => sessionStorage.setItem('sortAsc', ascending)
const getCollapsedIds = () => JSON.parse(sessionStorage.getItem('collapsedIds')) || []
const setCollapsedIds = (list) => sessionStorage.setItem('collapsedIds', JSON.stringify(list))
module.exports = {
getVisible,
hideCategory,
showCategory,
getCollapsedIds,
setCollapsedIds,
getSort,
setSort,
getSortDirection,
setSortDirection,
getCollapsedCategory,
possibleFilters,
}
},{}]},{},[4]);
</script>
</footer>
</html>

View File

@@ -4,10 +4,10 @@ import pytest
from django.contrib import auth
from django.test import RequestFactory
from django_scopes import scope
from recipe_scrapers import scrape_html
from cookbook.helper.automation_helper import AutomationEngine
from cookbook.helper.recipe_url_import import get_from_scraper
from cookbook.helper.scrapers.scrapers import text_scraper
from cookbook.models import Automation
DATA_DIR = "cookbook/tests/other/test_data/"
@@ -73,12 +73,14 @@ def test_unit_automation(u1_s1, arg):
assert (automation.apply_unit_automation(arg[0]) == target_name) is True
@pytest.mark.parametrize("arg", [
[[1, 'egg', 'white'], '', [1, '', 'egg', 'white']],
[[1, 'Egg', 'white'], '', [1, '', 'Egg', 'white']],
[[1, 'êgg', 'white'], '', [1, 'êgg', 'white']],
[[1, 'egg', 'white'], 'whole', [1, 'whole', 'egg', 'white']],
])
@pytest.mark.parametrize(
"arg", [
[[1, 'egg', 'white'], '', [1, '', 'egg', 'white']],
[[1, 'Egg', 'white'], '', [1, '', 'Egg', 'white']],
[[1, 'êgg', 'white'], '', [1, 'êgg', 'white']],
[[1, 'egg', 'white'], 'whole', [1, 'whole', 'egg', 'white']],
]
)
def test_never_unit_automation(u1_s1, arg):
user = auth.get_user(u1_s1)
space = user.userspace_set.first().space
@@ -97,13 +99,15 @@ def test_never_unit_automation(u1_s1, arg):
['.*allrecipes.*', True],
['.*google.*', False],
])
@pytest.mark.parametrize("arg", [
[Automation.DESCRIPTION_REPLACE],
[Automation.INSTRUCTION_REPLACE],
[Automation.NAME_REPLACE],
[Automation.FOOD_REPLACE],
[Automation.UNIT_REPLACE],
])
@pytest.mark.parametrize(
"arg", [
[Automation.DESCRIPTION_REPLACE],
[Automation.INSTRUCTION_REPLACE],
[Automation.NAME_REPLACE],
[Automation.FOOD_REPLACE],
[Automation.UNIT_REPLACE],
]
)
def test_regex_automation(u1_s1, arg, source):
user = auth.get_user(u1_s1)
space = user.userspace_set.first().space
@@ -124,11 +128,13 @@ def test_regex_automation(u1_s1, arg, source):
assert (automation.apply_regex_replace_automation(fail, arg[0]) == target) == False
@pytest.mark.parametrize("arg", [
['second first', 'first second'],
['longer string second first longer string', 'longer string first second longer string'],
['second fails first', 'second fails first'],
])
@pytest.mark.parametrize(
"arg", [
['second first', 'first second'],
['longer string second first longer string', 'longer string first second longer string'],
['second fails first', 'second fails first'],
]
)
def test_transpose_automation(u1_s1, arg):
user = auth.get_user(u1_s1)
space = user.userspace_set.first().space
@@ -156,10 +162,11 @@ def test_url_import_regex_replace(u1_s1):
if 'cookbook' in os.getcwd():
test_file = os.path.join(os.getcwd(), 'other', 'test_data', recipe)
# TODO this catch doesn't really work depending on from where you start the test, must check for duplicate path sections
else:
test_file = os.path.join(os.getcwd(), 'cookbook', 'tests', 'other', 'test_data', recipe)
with open(test_file, 'r', encoding='UTF-8') as d:
scrape = text_scraper(text=d.read(), url="https://www.allrecipes.com")
scrape = scrape_html(html=d.read(), org_url="https://testrecipe.test", supported_only=False)
with scope(space=space):
for t in types:
Automation.objects.get_or_create(name=t, type=t, param_1='.*', param_2=find_text, param_3='', created_by=user, space=space)

View File

@@ -0,0 +1,14 @@
from cookbook.helper.HelperFunctions import validate_import_url
def test_url_validator():
# neither local nor public urls without protocol are valid
assert not validate_import_url('localhost:8080')
assert not validate_import_url('www.google.com')
# public urls with schema and parameters are valid
assert validate_import_url('https://www.google.com')
assert validate_import_url('https://cheatsheetseries.owasp.org/cheatsheets/Server_Side_Request_Forgery_Prevention_Cheat_Sheet.html#case-2-application-can-send-requests-to-any-external-ip-address-or-domain-name')
assert not validate_import_url('https://localhost')
assert not validate_import_url('http://127.0.0.1')

View File

@@ -273,12 +273,12 @@ def test_search_units(found_recipe, recipes, u1_s1, space_1):
('fuzzy_lookups', True), ('fuzzy_lookups', False)
],
[('unaccent', True), ('unaccent', False)]
), indirect=['user1'])
), indirect=['user1'], ids=str)
@pytest.mark.parametrize("found_recipe, param_type", [
({'unit': True}, 'unit'),
({'keyword': True}, 'keyword'),
({'food': True}, 'food'),
], indirect=['found_recipe'])
], indirect=['found_recipe'], ids=str)
def test_fuzzy_lookup(found_recipe, recipes, param_type, user1, space_1):
with scope(space=space_1):
list_url = f'api:{param_type}-list'
@@ -297,36 +297,36 @@ def test_fuzzy_lookup(found_recipe, recipes, param_type, user1, space_1):
# commenting this out for general use - it is really slow
# it should be run on occasion to ensure everything still works
# @pytest.mark.skipif(sqlite and True, reason="requires PostgreSQL")
# @pytest.mark.parametrize("user1", itertools.product(
# [
# ('fuzzy_search', True), ('fuzzy_search', False),
# ('fulltext', True), ('fulltext', False),
# ('icontains', True), ('icontains', False),
# ('istartswith', True), ('istartswith', False),
# ],
# [('unaccent', True), ('unaccent', False)]
# ), indirect=['user1'])
# @pytest.mark.parametrize("found_recipe", [
# ({'name': True}),
# ({'description': True}),
# ({'instruction': True}),
# ({'keyword': True}),
# ({'food': True}),
# ], indirect=['found_recipe'])
# # user array contains: user client, expected count of search, expected count of mispelled search, search string, mispelled search string, user search preferences
# def test_search_string(found_recipe, recipes, user1, space_1):
# with scope(space=space_1):
# param1 = f"query={user1[3]}"
# param2 = f"query={user1[4]}"
@pytest.mark.skipif(sqlite and True, reason="requires PostgreSQL")
@pytest.mark.parametrize("user1", itertools.product(
[
('fuzzy_search', True), ('fuzzy_search', False),
('fulltext', True), ('fulltext', False),
('icontains', True), ('icontains', False),
('istartswith', True), ('istartswith', False),
],
[('unaccent', True), ('unaccent', False)]
), indirect=['user1'], ids=str)
@pytest.mark.parametrize("found_recipe", [
({'name': True}),
({'description': True}),
({'instruction': True}),
({'keyword': True}),
({'food': True}),
], indirect=['found_recipe'], ids=str)
# user array contains: user client, expected count of search, expected count of mispelled search, search string, mispelled search string, user search preferences
def test_search_string(found_recipe, recipes, user1, space_1):
with scope(space=space_1):
param1 = f"query={user1[3]}"
param2 = f"query={user1[4]}"
# r = json.loads(user1[0].get(reverse(LIST_URL) + f'?{param1}').content)
# assert len([x['id'] for x in r['results'] if x['id'] in [
# found_recipe[0].id, found_recipe[1].id]]) == user1[1]
r = json.loads(user1[0].get(reverse(LIST_URL) + f'?{param1}').content)
assert len([x['id'] for x in r['results'] if x['id'] in [
found_recipe[0].id, found_recipe[1].id]]) == user1[1]
# r = json.loads(user1[0].get(reverse(LIST_URL) + f'?{param2}').content)
# assert len([x['id'] for x in r['results'] if x['id'] in [
# found_recipe[0].id, found_recipe[1].id]]) == user1[2]
r = json.loads(user1[0].get(reverse(LIST_URL) + f'?{param2}').content)
assert len([x['id'] for x in r['results'] if x['id'] in [
found_recipe[0].id, found_recipe[1].id]]) == user1[2]
@pytest.mark.parametrize("found_recipe, param_type, result", [

View File

@@ -19,6 +19,23 @@ DATA_DIR = "cookbook/tests/other/test_data/"
# plus the test that previously existed
# plus the custom scraper that was created
# plus any specific defects discovered along the way
RECIPES = [
ALLRECIPES,
AMERICAS_TEST_KITCHEN,
CHEF_KOCH,
CHEF_KOCH2, # test for empty ingredient in ingredient_parser
COOKPAD,
COOKS_COUNTRY,
DELISH,
FOOD_NETWORK,
GIALLOZAFFERANO,
JOURNAL_DES_FEMMES,
MADAME_DESSERT, # example of json only source
MARMITON,
TASTE_OF_HOME,
THE_SPRUCE_EATS, # example of non-json recipes_scraper
TUDOGOSTOSO,
]
@pytest.mark.parametrize("arg", [
@@ -32,29 +49,7 @@ def test_import_permission(arg, request):
assert c.get(reverse(IMPORT_SOURCE_URL)).status_code == arg[1]
@pytest.mark.parametrize("arg", [
ALLRECIPES,
# test of custom scraper ATK
AMERICAS_TEST_KITCHEN,
CHEF_KOCH,
# test for empty ingredient in ingredient_parser
CHEF_KOCH2,
COOKPAD,
# test of custom scraper ATK
COOKS_COUNTRY,
DELISH,
FOOD_NETWORK,
GIALLOZAFFERANO,
JOURNAL_DES_FEMMES,
# example of recipes_scraper in with wildmode
# example of json only source
MADAME_DESSERT,
MARMITON,
TASTE_OF_HOME,
# example of non-json recipes_scraper
THE_SPRUCE_EATS, # TODO seems to be broken in recipe scrapers
TUDOGOSTOSO,
])
@pytest.mark.parametrize("arg", RECIPES, ids=[x['file'][0] for x in RECIPES])
def test_recipe_import(arg, u1_s1):
url = arg['url']
for f in list(arg['file']): # url and files get popped later

View File

@@ -12,8 +12,8 @@ from json import JSONDecodeError
from urllib.parse import unquote
from zipfile import ZipFile
import redis
import requests
import validators
from PIL import UnidentifiedImageError
from annoying.decorators import ajax_request
from annoying.functions import get_object_or_None
@@ -31,11 +31,12 @@ from django.http import FileResponse, HttpResponse, JsonResponse
from django.shortcuts import get_object_or_404, redirect
from django.urls import reverse
from django.utils import timezone
from django.utils.datetime_safe import date
from django.utils.translation import gettext as _
from django_scopes import scopes_disabled
from icalendar import Calendar, Event
from oauth2_provider.models import AccessToken
from recipe_scrapers import scrape_me
from recipe_scrapers import scrape_html
from recipe_scrapers._exceptions import NoSchemaFoundInWildMode
from requests.exceptions import MissingSchema
from rest_framework import decorators, status, viewsets
@@ -53,17 +54,16 @@ from treebeard.exceptions import InvalidMoveToDescendant, InvalidPosition, PathO
from cookbook.forms import ImportForm
from cookbook.helper import recipe_url_import as helper
from cookbook.helper.HelperFunctions import str2bool
from cookbook.helper.HelperFunctions import str2bool, validate_import_url
from cookbook.helper.image_processing import handle_image
from cookbook.helper.ingredient_parser import IngredientParser
from cookbook.helper.open_data_importer import OpenDataImporter
from cookbook.helper.permission_helper import (
CustomIsAdmin, CustomIsOwner, CustomIsOwnerReadOnly, CustomIsShared, CustomIsSpaceOwner, CustomIsUser, CustomRecipePermission, CustomTokenHasReadWriteScope,
CustomTokenHasScope, CustomUserPermission, IsReadOnlyDRF, above_space_limit, group_required, has_group_permission, is_space_owner, switch_user_active_space,
CustomTokenHasScope, CustomUserPermission, IsReadOnlyDRF, above_space_limit, group_required, has_group_permission, is_space_owner, switch_user_active_space, CustomIsGuest,
)
from cookbook.helper.recipe_search import RecipeSearch
from cookbook.helper.recipe_url_import import clean_dict, get_from_youtube_scraper, get_images_from_soup
from cookbook.helper.scrapers.scrapers import text_scraper
from cookbook.helper.shopping_helper import RecipeShoppingEditor, shopping_helper
from cookbook.models import (Automation, BookmarkletImport, CookLog, CustomFilter, ExportLog, Food,
FoodInheritField, FoodProperty, ImportLog, Ingredient, InviteLink,
@@ -103,6 +103,49 @@ from recipes import settings
from recipes.settings import DRF_THROTTLE_RECIPE_URL_IMPORT, FDC_API_KEY
class LoggingMixin(object):
"""
logs request counts to redis cache total/per user/
"""
def initial(self, request, *args, **kwargs):
super(LoggingMixin, self).initial(request, *args, **kwargs)
if settings.REDIS_HOST:
try:
d = date.today().isoformat()
space = request.space
endpoint = request.resolver_match.url_name
r = redis.StrictRedis(
host=settings.REDIS_HOST,
port=settings.REDIS_PORT,
username=settings.REDIS_USERNAME,
password=settings.REDIS_PASSWORD,
db=settings.REDIS_DATABASES['STATS'],
)
pipe = r.pipeline()
# Global and daily tallies for all URLs.
pipe.incr('api:request-count')
pipe.incr(f'api:request-count:{d}')
# Use a sorted set to store the user stats, with the score representing
# the number of queries the user made total or on a given day.
pipe.zincrby(f'api:space-request-count', 1, space.pk)
pipe.zincrby(f'api:space-request-count:{d}', 1, space.pk)
# Use a sorted set to store all the endpoints with score representing
# the number of queries the endpoint received total or on a given day.
pipe.zincrby(f'api:endpoint-request-count', 1, endpoint)
pipe.zincrby(f'api:endpoint-request-count:{d}', 1, endpoint)
pipe.execute()
except:
pass
class StandardFilterMixin(ViewSetMixin):
def get_queryset(self):
@@ -186,9 +229,9 @@ class FuzzyFilterMixin(ViewSetMixin, ExtendedRecipeMixin):
if query is not None and query not in ["''", '']:
if fuzzy and (settings.DATABASES['default']['ENGINE'] == 'django.db.backends.postgresql'):
if self.request.user.is_authenticated and any(
[self.model.__name__.lower() in x for x in self.request.user.searchpreference.unaccent.values_list('field', flat=True)]
):
self.queryset = self.queryset.annotate(trigram=TrigramSimilarity('name__unaccent', query))
[self.model.__name__.lower() in x for x in self.request.user.searchpreference.unaccent.values_list('field', flat=True)]
):
self.queryset = self.queryset.annotate(trigram=TrigramSimilarity('name__unaccent', query))
else:
self.queryset = self.queryset.annotate(trigram=TrigramSimilarity('name', query))
self.queryset = self.queryset.order_by('-trigram')
@@ -372,7 +415,7 @@ class TreeMixin(MergeMixin, FuzzyFilterMixin, ExtendedRecipeMixin):
return Response(content, status=status.HTTP_400_BAD_REQUEST)
class UserViewSet(viewsets.ModelViewSet):
class UserViewSet(LoggingMixin, viewsets.ModelViewSet):
"""
list:
optional parameters
@@ -396,24 +439,24 @@ class UserViewSet(viewsets.ModelViewSet):
return queryset
class GroupViewSet(viewsets.ModelViewSet):
class GroupViewSet(LoggingMixin, viewsets.ModelViewSet):
queryset = Group.objects.all()
serializer_class = GroupSerializer
permission_classes = [CustomIsAdmin & CustomTokenHasReadWriteScope]
http_method_names = ['get', ]
class SpaceViewSet(viewsets.ModelViewSet):
class SpaceViewSet(LoggingMixin, viewsets.ModelViewSet):
queryset = Space.objects
serializer_class = SpaceSerializer
permission_classes = [IsReadOnlyDRF & CustomIsUser | CustomIsOwner & CustomIsAdmin & CustomTokenHasReadWriteScope]
permission_classes = [IsReadOnlyDRF & CustomIsGuest | CustomIsOwner & CustomIsAdmin & CustomTokenHasReadWriteScope]
http_method_names = ['get', 'patch']
def get_queryset(self):
return self.queryset.filter(id=self.request.space.id)
class UserSpaceViewSet(viewsets.ModelViewSet):
class UserSpaceViewSet(LoggingMixin, viewsets.ModelViewSet):
queryset = UserSpace.objects
serializer_class = UserSpaceSerializer
permission_classes = [(CustomIsSpaceOwner | CustomIsOwnerReadOnly) & CustomTokenHasReadWriteScope]
@@ -436,7 +479,7 @@ class UserSpaceViewSet(viewsets.ModelViewSet):
return self.queryset.filter(user=self.request.user, space=self.request.space)
class UserPreferenceViewSet(viewsets.ModelViewSet):
class UserPreferenceViewSet(LoggingMixin, viewsets.ModelViewSet):
queryset = UserPreference.objects
serializer_class = UserPreferenceSerializer
permission_classes = [CustomIsOwner & CustomTokenHasReadWriteScope]
@@ -447,7 +490,7 @@ class UserPreferenceViewSet(viewsets.ModelViewSet):
return self.queryset.filter(user=self.request.user)
class StorageViewSet(viewsets.ModelViewSet):
class StorageViewSet(LoggingMixin, viewsets.ModelViewSet):
# TODO handle delete protect error and adjust test
queryset = Storage.objects
serializer_class = StorageSerializer
@@ -457,7 +500,7 @@ class StorageViewSet(viewsets.ModelViewSet):
return self.queryset.filter(space=self.request.space)
class ConnectorConfigConfigViewSet(viewsets.ModelViewSet):
class ConnectorConfigConfigViewSet(LoggingMixin, viewsets.ModelViewSet):
queryset = ConnectorConfig.objects
serializer_class = ConnectorConfigConfigSerializer
permission_classes = [CustomIsAdmin & CustomTokenHasReadWriteScope]
@@ -466,7 +509,7 @@ class ConnectorConfigConfigViewSet(viewsets.ModelViewSet):
return self.queryset.filter(space=self.request.space)
class SyncViewSet(viewsets.ModelViewSet):
class SyncViewSet(LoggingMixin, viewsets.ModelViewSet):
queryset = Sync.objects
serializer_class = SyncSerializer
permission_classes = [CustomIsAdmin & CustomTokenHasReadWriteScope]
@@ -475,7 +518,7 @@ class SyncViewSet(viewsets.ModelViewSet):
return self.queryset.filter(space=self.request.space)
class SyncLogViewSet(viewsets.ReadOnlyModelViewSet):
class SyncLogViewSet(LoggingMixin, viewsets.ReadOnlyModelViewSet):
queryset = SyncLog.objects
serializer_class = SyncLogSerializer
permission_classes = [CustomIsAdmin & CustomTokenHasReadWriteScope]
@@ -485,7 +528,7 @@ class SyncLogViewSet(viewsets.ReadOnlyModelViewSet):
return self.queryset.filter(sync__space=self.request.space)
class SupermarketViewSet(viewsets.ModelViewSet, StandardFilterMixin):
class SupermarketViewSet(LoggingMixin, viewsets.ModelViewSet, StandardFilterMixin):
schema = FilterSchema()
queryset = Supermarket.objects
serializer_class = SupermarketSerializer
@@ -496,7 +539,7 @@ class SupermarketViewSet(viewsets.ModelViewSet, StandardFilterMixin):
return super().get_queryset()
class SupermarketCategoryViewSet(viewsets.ModelViewSet, FuzzyFilterMixin, MergeMixin):
class SupermarketCategoryViewSet(LoggingMixin, viewsets.ModelViewSet, FuzzyFilterMixin, MergeMixin):
queryset = SupermarketCategory.objects
model = SupermarketCategory
serializer_class = SupermarketCategorySerializer
@@ -507,7 +550,7 @@ class SupermarketCategoryViewSet(viewsets.ModelViewSet, FuzzyFilterMixin, MergeM
return super().get_queryset()
class SupermarketCategoryRelationViewSet(viewsets.ModelViewSet, StandardFilterMixin):
class SupermarketCategoryRelationViewSet(LoggingMixin, viewsets.ModelViewSet, StandardFilterMixin):
queryset = SupermarketCategoryRelation.objects
serializer_class = SupermarketCategoryRelationSerializer
permission_classes = [CustomIsUser & CustomTokenHasReadWriteScope]
@@ -518,15 +561,15 @@ class SupermarketCategoryRelationViewSet(viewsets.ModelViewSet, StandardFilterMi
return super().get_queryset()
class KeywordViewSet(viewsets.ModelViewSet, TreeMixin):
class KeywordViewSet(LoggingMixin, viewsets.ModelViewSet, TreeMixin):
queryset = Keyword.objects
model = Keyword
serializer_class = KeywordSerializer
permission_classes = [CustomIsUser & CustomTokenHasReadWriteScope]
permission_classes = [(CustomIsGuest & IsReadOnlyDRF | CustomIsUser) & CustomTokenHasReadWriteScope]
pagination_class = DefaultPagination
class UnitViewSet(viewsets.ModelViewSet, MergeMixin, FuzzyFilterMixin):
class UnitViewSet(LoggingMixin, viewsets.ModelViewSet, MergeMixin, FuzzyFilterMixin):
queryset = Unit.objects
model = Unit
serializer_class = UnitSerializer
@@ -534,7 +577,7 @@ class UnitViewSet(viewsets.ModelViewSet, MergeMixin, FuzzyFilterMixin):
pagination_class = DefaultPagination
class FoodInheritFieldViewSet(viewsets.ReadOnlyModelViewSet):
class FoodInheritFieldViewSet(LoggingMixin, viewsets.ReadOnlyModelViewSet):
queryset = FoodInheritField.objects
serializer_class = FoodInheritFieldSerializer
permission_classes = [CustomIsUser & CustomTokenHasReadWriteScope]
@@ -545,11 +588,11 @@ class FoodInheritFieldViewSet(viewsets.ReadOnlyModelViewSet):
return super().get_queryset()
class FoodViewSet(viewsets.ModelViewSet, TreeMixin):
class FoodViewSet(LoggingMixin, viewsets.ModelViewSet, TreeMixin):
queryset = Food.objects
model = Food
serializer_class = FoodSerializer
permission_classes = [CustomIsUser & CustomTokenHasReadWriteScope]
permission_classes = [(CustomIsGuest & IsReadOnlyDRF | CustomIsUser) & CustomTokenHasReadWriteScope]
pagination_class = DefaultPagination
def get_queryset(self):
@@ -612,8 +655,8 @@ class FoodViewSet(viewsets.ModelViewSet, TreeMixin):
return JsonResponse(
{
'msg':
'API Key Rate Limit reached/exceeded, see https://api.data.gov/docs/rate-limits/ for more information. \
Configure your key in Tandoor using environment FDC_API_KEY variable.'
'API Key Rate Limit reached/exceeded, see https://api.data.gov/docs/rate-limits/ for more information. \
Configure your key in Tandoor using environment FDC_API_KEY variable.'
},
status=429,
json_dumps_params={'indent': 4})
@@ -682,7 +725,7 @@ class FoodViewSet(viewsets.ModelViewSet, TreeMixin):
return Response(content, status=status.HTTP_403_FORBIDDEN)
class RecipeBookViewSet(viewsets.ModelViewSet, StandardFilterMixin):
class RecipeBookViewSet(LoggingMixin, viewsets.ModelViewSet, StandardFilterMixin):
queryset = RecipeBook.objects
serializer_class = RecipeBookSerializer
permission_classes = [(CustomIsOwner | CustomIsShared) & CustomTokenHasReadWriteScope]
@@ -700,7 +743,7 @@ class RecipeBookViewSet(viewsets.ModelViewSet, StandardFilterMixin):
return super().get_queryset()
class RecipeBookEntryViewSet(viewsets.ModelViewSet, viewsets.GenericViewSet):
class RecipeBookEntryViewSet(LoggingMixin, viewsets.ModelViewSet, viewsets.GenericViewSet):
"""
list:
optional parameters
@@ -726,7 +769,7 @@ class RecipeBookEntryViewSet(viewsets.ModelViewSet, viewsets.GenericViewSet):
return queryset
class MealPlanViewSet(viewsets.ModelViewSet):
class MealPlanViewSet(LoggingMixin, viewsets.ModelViewSet):
"""
list:
optional parameters
@@ -764,7 +807,7 @@ class MealPlanViewSet(viewsets.ModelViewSet):
return queryset
class AutoPlanViewSet(viewsets.ViewSet):
class AutoPlanViewSet(LoggingMixin, viewsets.ViewSet):
def create(self, request):
serializer = AutoMealPlanSerializer(data=request.data)
@@ -826,7 +869,7 @@ class AutoPlanViewSet(viewsets.ViewSet):
return Response(serializer.errors, 400)
class MealTypeViewSet(viewsets.ModelViewSet):
class MealTypeViewSet(LoggingMixin, viewsets.ModelViewSet):
"""
returns list of meal types created by the
requesting user ordered by the order field.
@@ -840,7 +883,7 @@ class MealTypeViewSet(viewsets.ModelViewSet):
return queryset
class IngredientViewSet(viewsets.ModelViewSet):
class IngredientViewSet(LoggingMixin, viewsets.ModelViewSet):
queryset = Ingredient.objects
serializer_class = IngredientSerializer
permission_classes = [CustomIsUser & CustomTokenHasReadWriteScope]
@@ -861,10 +904,10 @@ 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):
class StepViewSet(LoggingMixin, viewsets.ModelViewSet):
queryset = Step.objects
serializer_class = StepSerializer
permission_classes = [CustomIsUser & CustomTokenHasReadWriteScope]
@@ -899,7 +942,7 @@ class RecipePagination(PageNumberPagination):
return Response(OrderedDict([('count', self.page.paginator.count), ('next', self.get_next_link()), ('previous', self.get_previous_link()), ('results', data), ]))
class RecipeViewSet(viewsets.ModelViewSet):
class RecipeViewSet(LoggingMixin, viewsets.ModelViewSet):
queryset = Recipe.objects
serializer_class = RecipeSerializer
# TODO split read and write permission for meal plan guest
@@ -995,7 +1038,7 @@ class RecipeViewSet(viewsets.ModelViewSet):
elif 'image_url' in serializer.validated_data:
try:
url = serializer.validated_data['image_url']
if validators.url(url, public=True):
if validate_import_url(url):
response = requests.get(url, headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0"})
image = File(io.BytesIO(response.content))
filetype = mimetypes.guess_extension(response.headers['content-type']) or filetype
@@ -1066,7 +1109,7 @@ class RecipeViewSet(viewsets.ModelViewSet):
return Response(self.serializer_class(qs, many=True).data)
class UnitConversionViewSet(viewsets.ModelViewSet):
class UnitConversionViewSet(LoggingMixin, viewsets.ModelViewSet):
queryset = UnitConversion.objects
serializer_class = UnitConversionSerializer
permission_classes = [CustomIsUser & CustomTokenHasReadWriteScope]
@@ -1083,7 +1126,7 @@ class UnitConversionViewSet(viewsets.ModelViewSet):
return self.queryset.filter(space=self.request.space)
class PropertyTypeViewSet(viewsets.ModelViewSet):
class PropertyTypeViewSet(LoggingMixin, viewsets.ModelViewSet):
queryset = PropertyType.objects
serializer_class = PropertyTypeSerializer
permission_classes = [CustomIsUser & CustomTokenHasReadWriteScope]
@@ -1092,7 +1135,7 @@ class PropertyTypeViewSet(viewsets.ModelViewSet):
return self.queryset.filter(space=self.request.space)
class PropertyViewSet(viewsets.ModelViewSet):
class PropertyViewSet(LoggingMixin, viewsets.ModelViewSet):
queryset = Property.objects
serializer_class = PropertySerializer
permission_classes = [CustomIsUser & CustomTokenHasReadWriteScope]
@@ -1101,7 +1144,7 @@ class PropertyViewSet(viewsets.ModelViewSet):
return self.queryset.filter(space=self.request.space)
class ShoppingListRecipeViewSet(viewsets.ModelViewSet):
class ShoppingListRecipeViewSet(LoggingMixin, viewsets.ModelViewSet):
queryset = ShoppingListRecipe.objects
serializer_class = ShoppingListRecipeSerializer
permission_classes = [(CustomIsOwner | CustomIsShared) & CustomTokenHasReadWriteScope]
@@ -1112,10 +1155,10 @@ class ShoppingListRecipeViewSet(viewsets.ModelViewSet):
Q(entries__isnull=True)
| Q(entries__created_by=self.request.user)
| Q(entries__created_by__in=list(self.request.user.get_shopping_share()))
).distinct().all()
).distinct().all()
class ShoppingListEntryViewSet(viewsets.ModelViewSet):
class ShoppingListEntryViewSet(LoggingMixin, viewsets.ModelViewSet):
queryset = ShoppingListEntry.objects
serializer_class = ShoppingListEntrySerializer
permission_classes = [(CustomIsOwner | CustomIsShared) & CustomTokenHasReadWriteScope]
@@ -1125,7 +1168,7 @@ class ShoppingListEntryViewSet(viewsets.ModelViewSet):
name='checked',
description=_('Filter shopping list entries on checked. [''true'', ''false'', ''both'', ''<b>recent</b>'']<br> \
- ''recent'' includes unchecked items and recently completed items.')
),
),
QueryParam(name='supermarket', description=_('Returns the shopping list entries sorted by supermarket category order.'), qtype='integer'),
]
schema = QueryParamAutoSchema()
@@ -1173,7 +1216,7 @@ class ShoppingListEntryViewSet(viewsets.ModelViewSet):
print(serializer.validated_data)
bulk_entries = ShoppingListEntry.objects.filter(
Q(created_by=self.request.user) | Q(created_by__in=list(self.request.user.get_shopping_share()))
).filter(space=request.space, id__in=serializer.validated_data['ids'])
).filter(space=request.space, id__in=serializer.validated_data['ids'])
bulk_entries.update(checked=(checked := serializer.validated_data['checked']), updated_at=timezone.now(), )
# update the onhand for food if shopping_add_onhand is True
@@ -1191,7 +1234,7 @@ class ShoppingListEntryViewSet(viewsets.ModelViewSet):
return Response(serializer.errors, 400)
class ViewLogViewSet(viewsets.ModelViewSet):
class ViewLogViewSet(LoggingMixin, viewsets.ModelViewSet):
queryset = ViewLog.objects
serializer_class = ViewLogSerializer
permission_classes = [CustomIsOwner & CustomTokenHasReadWriteScope]
@@ -1202,7 +1245,7 @@ class ViewLogViewSet(viewsets.ModelViewSet):
return self.queryset.filter(created_by=self.request.user).filter(space=self.request.space)
class CookLogViewSet(viewsets.ModelViewSet):
class CookLogViewSet(LoggingMixin, viewsets.ModelViewSet):
queryset = CookLog.objects
serializer_class = CookLogSerializer
permission_classes = [CustomIsOwner & CustomTokenHasReadWriteScope]
@@ -1217,7 +1260,7 @@ class CookLogViewSet(viewsets.ModelViewSet):
return self.queryset.filter(space=self.request.space)
class ImportLogViewSet(viewsets.ModelViewSet):
class ImportLogViewSet(LoggingMixin, viewsets.ModelViewSet):
queryset = ImportLog.objects
serializer_class = ImportLogSerializer
permission_classes = [CustomIsUser & CustomTokenHasReadWriteScope]
@@ -1227,7 +1270,7 @@ class ImportLogViewSet(viewsets.ModelViewSet):
return self.queryset.filter(space=self.request.space)
class ExportLogViewSet(viewsets.ModelViewSet):
class ExportLogViewSet(LoggingMixin, viewsets.ModelViewSet):
queryset = ExportLog.objects
serializer_class = ExportLogSerializer
permission_classes = [CustomIsUser & CustomTokenHasReadWriteScope]
@@ -1237,7 +1280,7 @@ class ExportLogViewSet(viewsets.ModelViewSet):
return self.queryset.filter(space=self.request.space)
class BookmarkletImportViewSet(viewsets.ModelViewSet):
class BookmarkletImportViewSet(LoggingMixin, viewsets.ModelViewSet):
queryset = BookmarkletImport.objects
serializer_class = BookmarkletImportSerializer
permission_classes = [CustomIsUser & CustomTokenHasScope]
@@ -1252,7 +1295,7 @@ class BookmarkletImportViewSet(viewsets.ModelViewSet):
return self.queryset.filter(space=self.request.space).all()
class UserFileViewSet(viewsets.ModelViewSet, StandardFilterMixin):
class UserFileViewSet(LoggingMixin, viewsets.ModelViewSet, StandardFilterMixin):
schema = FilterSchema()
queryset = UserFile.objects
serializer_class = UserFileSerializer
@@ -1264,7 +1307,7 @@ class UserFileViewSet(viewsets.ModelViewSet, StandardFilterMixin):
return super().get_queryset()
class AutomationViewSet(viewsets.ModelViewSet, StandardFilterMixin):
class AutomationViewSet(LoggingMixin, viewsets.ModelViewSet, StandardFilterMixin):
"""
list:
optional parameters
@@ -1315,7 +1358,7 @@ class AutomationViewSet(viewsets.ModelViewSet, StandardFilterMixin):
return super().get_queryset()
class InviteLinkViewSet(viewsets.ModelViewSet, StandardFilterMixin):
class InviteLinkViewSet(LoggingMixin, viewsets.ModelViewSet, StandardFilterMixin):
queryset = InviteLink.objects
serializer_class = InviteLinkSerializer
permission_classes = [CustomIsSpaceOwner & CustomIsAdmin & CustomTokenHasReadWriteScope]
@@ -1333,7 +1376,7 @@ class InviteLinkViewSet(viewsets.ModelViewSet, StandardFilterMixin):
return None
class CustomFilterViewSet(viewsets.ModelViewSet, StandardFilterMixin):
class CustomFilterViewSet(LoggingMixin, viewsets.ModelViewSet, StandardFilterMixin):
queryset = CustomFilter.objects
serializer_class = CustomFilterSerializer
permission_classes = [CustomIsOwner & CustomTokenHasReadWriteScope]
@@ -1344,7 +1387,7 @@ class CustomFilterViewSet(viewsets.ModelViewSet, StandardFilterMixin):
return super().get_queryset()
class AccessTokenViewSet(viewsets.ModelViewSet):
class AccessTokenViewSet(LoggingMixin, viewsets.ModelViewSet):
queryset = AccessToken.objects
serializer_class = AccessTokenSerializer
permission_classes = [CustomIsOwner & CustomTokenHasReadWriteScope]
@@ -1417,7 +1460,7 @@ class RecipeUrlImportView(APIView):
elif url and not data:
if re.match('^(https?://)?(www\\.youtube\\.com|youtu\\.be)/.+$', url):
if validators.url(url, public=True):
if validate_import_url(url):
return Response({'recipe_json': get_from_youtube_scraper(url, request), 'recipe_images': [], }, status=status.HTTP_200_OK)
if re.match('^(.)*/view/recipe/[0-9]+/[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$', url):
recipe_json = requests.get(
@@ -1427,7 +1470,7 @@ class RecipeUrlImportView(APIView):
serialized_recipe = RecipeExportSerializer(data=recipe_json, context={'request': request})
if serialized_recipe.is_valid():
recipe = serialized_recipe.save()
if validators.url(recipe_json['image'], public=True):
if validate_import_url(recipe_json['image']):
recipe.image = File(handle_image(request,
File(io.BytesIO(requests.get(recipe_json['image']).content), name='image'),
filetype=pathlib.Path(recipe_json['image']).suffix),
@@ -1436,9 +1479,12 @@ class RecipeUrlImportView(APIView):
return Response({'link': request.build_absolute_uri(reverse('view_recipe', args={recipe.pk}))}, status=status.HTTP_201_CREATED)
else:
try:
if validators.url(url, public=True):
scrape = scrape_me(url_path=url, wild_mode=True)
if validate_import_url(url):
html = requests.get(
url,
headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0"}
).content
scrape = scrape_html(org_url=url, html=html, supported_only=False)
else:
return Response({'error': True, 'msg': _('Invalid Url')}, status=status.HTTP_400_BAD_REQUEST)
except NoSchemaFoundInWildMode:
@@ -1457,16 +1503,16 @@ class RecipeUrlImportView(APIView):
data = "<script type='application/ld+json'>" + json.dumps(data_json) + "</script>"
except JSONDecodeError:
pass
scrape = text_scraper(text=data, url=url)
if not url and (found_url := scrape.schema.data.get('url', None)):
scrape = text_scraper(text=data, url=found_url)
scrape = scrape_html(html=data, org_url='https://urlnotfound.none', supported_only=False)
if not url and (found_url := scrape.schema.data.get('url', 'https://urlnotfound.none')):
scrape = scrape_html(html=data, org_url=found_url, supported_only=False)
if scrape:
return Response({
'recipe_json': helper.get_from_scraper(scrape, request),
'recipe_images': list(dict.fromkeys(get_images_from_soup(scrape.soup, url))),
},
status=status.HTTP_200_OK)
status=status.HTTP_200_OK)
else:
return Response({'error': True, 'msg': _('No usable data could be found.')}, status=status.HTTP_400_BAD_REQUEST)
@@ -1677,7 +1723,7 @@ def sync_all(request):
# @schema(AutoSchema()) #TODO add proper schema
@permission_classes([CustomIsUser & CustomTokenHasReadWriteScope])
def share_link(request, pk):
if request.space.allow_sharing and has_group_permission(request.user, ('user', )):
if request.space.allow_sharing and has_group_permission(request.user, ('user',)):
recipe = get_object_or_404(Recipe, pk=pk, space=request.space)
link = ShareLink.objects.create(recipe=recipe, created_by=request.user, space=request.space)
return JsonResponse({'pk': pk, 'share': link.uuid, 'link': request.build_absolute_uri(reverse('view_recipe', args=[pk, link.uuid]))})

View File

@@ -31,6 +31,7 @@ from cookbook.integration.recipesage import RecipeSage
from cookbook.integration.rezeptsuitede import Rezeptsuitede
from cookbook.integration.rezkonv import RezKonv
from cookbook.integration.saffron import Saffron
from cookbook.integration.gourmet import Gourmet
from cookbook.models import ExportLog, Recipe
from recipes import settings
@@ -80,6 +81,8 @@ def get_integration(request, export_type):
return Cookmate(request, export_type)
if export_type == ImportExportBase.REZEPTSUITEDE:
return Rezeptsuitede(request, export_type)
if export_type == ImportExportBase.GOURMET:
return Gourmet(request, export_type)
@group_required('user')

View File

@@ -1,9 +1,10 @@
import os
import re
from datetime import datetime
from datetime import datetime, timedelta
from io import StringIO
from uuid import UUID
import redis
from django.apps import apps
from django.conf import settings
from django.contrib import messages
@@ -17,6 +18,7 @@ from django.http import HttpResponseRedirect, JsonResponse
from django.shortcuts import get_object_or_404, redirect, render
from django.urls import reverse, reverse_lazy
from django.utils import timezone
from django.utils.datetime_safe import date
from django.utils.translation import gettext as _
from django_scopes import scopes_disabled
@@ -38,7 +40,8 @@ def index(request):
return HttpResponseRedirect(reverse_lazy('view_search'))
try:
page_map = {UserPreference.SEARCH: reverse_lazy('view_search'), UserPreference.PLAN: reverse_lazy('view_plan'), UserPreference.BOOKS: reverse_lazy('view_books'), UserPreference.SHOPPING: reverse_lazy('view_shopping'),}
page_map = {UserPreference.SEARCH: reverse_lazy('view_search'), UserPreference.PLAN: reverse_lazy('view_plan'), UserPreference.BOOKS: reverse_lazy('view_books'),
UserPreference.SHOPPING: reverse_lazy('view_shopping'), }
return HttpResponseRedirect(page_map.get(request.user.userpreference.default_page))
except UserPreference.DoesNotExist:
@@ -160,7 +163,6 @@ def recipe_view(request, pk, share=None):
return render(request, 'recipe_view.html', {'recipe': recipe, 'comments': comments, 'comment_form': comment_form, 'share': share, 'servings': servings})
@group_required('user')
def books(request):
return render(request, 'books.html', {})
@@ -296,16 +298,21 @@ def system(request):
from django.db import connection
postgres_ver = divmod(connection.pg_version, 10000)
if postgres_ver >= postgres_current:
database_status = 'success'
database_message = _('Everything is fine!')
elif postgres_ver < postgres_current - 2:
try:
postgres_ver = divmod(connection.pg_version, 10000)[0]
if postgres_ver >= postgres_current:
database_status = 'success'
database_message = _('Everything is fine!')
elif postgres_ver < postgres_current - 2:
database_status = 'danger'
database_message = _('PostgreSQL %(v)s is deprecated. Upgrade to a fully supported version!') % {'v': postgres_ver}
else:
database_status = 'info'
database_message = _('You are running PostgreSQL %(v1)s. PostgreSQL %(v2)s is recommended') % {'v1': postgres_ver, 'v2': postgres_current}
except Exception as e:
print(f"Error determining PostgreSQL version: {e}")
database_status = 'danger'
database_message = _('PostgreSQL %(v)s is deprecated. Upgrade to a fully supported version!') % {'v': postgres_ver}
else:
database_status = 'info'
database_message = _('You are running PostgreSQL %(v1)s. PostgreSQL %(v2)s is recommended') % {'v1': postgres_ver, 'v2': postgres_current}
database_message = _('Unable to determine PostgreSQL version.')
else:
database_status = 'info'
database_message = _(
@@ -339,11 +346,51 @@ def system(request):
for key in migration_info.keys():
migration_info[key]['total'] = len(migration_info[key]['unapplied_migrations']) + len(migration_info[key]['applied_migrations'])
api_stats = None
api_space_stats = None
# API endpoint logging
if settings.REDIS_HOST:
r = redis.StrictRedis(
host=settings.REDIS_HOST,
port=settings.REDIS_PORT,
password='',
username='',
db=settings.REDIS_DATABASES['STATS'],
)
api_stats = [['Endpoint', 'Total']]
api_space_stats = [['User', 'Total']]
total_stats = ['All', int(r.get('api:request-count'))]
for i in range(0, 6):
d = (date.today() - timedelta(days=i)).isoformat()
api_stats[0].append(d)
api_space_stats[0].append(d)
total_stats.append(int(r.get(f'api:request-count:{d}')) if r.get(f'api:request-count:{d}') else 0)
api_stats.append(total_stats)
for x in r.zrange('api:endpoint-request-count', 0, -1, withscores=True, desc=True):
endpoint = x[0].decode('utf-8')
endpoint_stats = [endpoint, x[1]]
for i in range(0, 6):
d = (date.today() - timedelta(days=i)).isoformat()
endpoint_stats.append(r.zscore(f'api:endpoint-request-count:{d}', endpoint))
api_stats.append(endpoint_stats)
for x in r.zrange('api:space-request-count', 0, 20, withscores=True, desc=True):
s = x[0].decode('utf-8')
space_stats = [Space.objects.get(pk=s).name, x[1]]
for i in range(0, 6):
d = (date.today() - timedelta(days=i)).isoformat()
space_stats.append(r.zscore(f'api:space-request-count:{d}', s))
api_space_stats.append(space_stats)
return render(
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, 'api_stats': api_stats, 'api_space_stats': api_space_stats
})

Some files were not shown because too many files have changed in this diff Show More