mirror of
https://github.com/TandoorRecipes/recipes.git
synced 2025-12-25 03:13:13 -05:00
Compare commits
1404 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8183e350c9 | ||
|
|
4438bfcb89 | ||
|
|
f42b2cfd31 | ||
|
|
09131e8eae | ||
|
|
f5f001b3d2 | ||
|
|
7f8587922d | ||
|
|
a3460bc023 | ||
|
|
5faa74a75d | ||
|
|
65dbc643d3 | ||
|
|
f0b169647b | ||
|
|
d786ee09fa | ||
|
|
a46f3958fe | ||
|
|
6c17937313 | ||
|
|
a26835ccc4 | ||
|
|
86fc4aa2d0 | ||
|
|
4bd3da451d | ||
|
|
0003405e98 | ||
|
|
b586794337 | ||
|
|
460cb43113 | ||
|
|
5128fcc9eb | ||
|
|
243ff8601c | ||
|
|
97f8d46afb | ||
|
|
e469ebf35e | ||
|
|
e04c729476 | ||
|
|
d98bf9155d | ||
|
|
e98d00a962 | ||
|
|
cf5f896cec | ||
|
|
e8d616ac98 | ||
|
|
7a22d43959 | ||
|
|
6b68f48227 | ||
|
|
115f18889a | ||
|
|
0aaffb7545 | ||
|
|
087cbdade8 | ||
|
|
7e55115a3a | ||
|
|
31ee55a113 | ||
|
|
61be55e4b7 | ||
|
|
e3f695bde1 | ||
|
|
0fb3d22f6a | ||
|
|
7ba5187ecf | ||
|
|
168c0f3a0d | ||
|
|
1179e226ab | ||
|
|
bed22c055d | ||
|
|
c25a1df480 | ||
|
|
d1df772218 | ||
|
|
cbdd23020b | ||
|
|
10f8a56343 | ||
|
|
006c5b3af8 | ||
|
|
562a0dceae | ||
|
|
cde03a0f33 | ||
|
|
b42285a9a5 | ||
|
|
f4d4a5b714 | ||
|
|
ee7d611086 | ||
|
|
e51fda5f20 | ||
|
|
bee759e166 | ||
|
|
5802dfd0a5 | ||
|
|
c18ce7635d | ||
|
|
942a8a6119 | ||
|
|
4015edde90 | ||
|
|
1c32940f5c | ||
|
|
447ffa9fe2 | ||
|
|
8480234592 | ||
|
|
2e0345a4a8 | ||
|
|
49fc0cf80f | ||
|
|
c67ecb6e31 | ||
|
|
b4f12c4e84 | ||
|
|
0b2adf5249 | ||
|
|
7dcb5884d9 | ||
|
|
35bd550101 | ||
|
|
707abfacb0 | ||
|
|
ed4f4c77e8 | ||
|
|
c492fb513b | ||
|
|
310b8e04e1 | ||
|
|
efeae4debc | ||
|
|
6bc25c32ff | ||
|
|
7f2b0438fe | ||
|
|
8481f8c658 | ||
|
|
d842795c25 | ||
|
|
58dd700207 | ||
|
|
1331d2cb6d | ||
|
|
ad2a613fd8 | ||
|
|
0565189580 | ||
|
|
5aa351b885 | ||
|
|
d5226eb5cf | ||
|
|
9ead1d0022 | ||
|
|
67342c3ba9 | ||
|
|
3fecd82cd0 | ||
|
|
a033c4290f | ||
|
|
b6597af0d7 | ||
|
|
af6ed4bd24 | ||
|
|
cc4bddb3fe | ||
|
|
95a9df9c05 | ||
|
|
c44de28c2c | ||
|
|
9f1b87fa4f | ||
|
|
b96e0bab11 | ||
|
|
fe97fb371b | ||
|
|
bb7df960cc | ||
|
|
c3c7d803dc | ||
|
|
99ce3327cc | ||
|
|
d1949df23d | ||
|
|
119b47c3c4 | ||
|
|
8b50c59ad3 | ||
|
|
e2ac65467b | ||
|
|
c5cc492f0a | ||
|
|
8c73b5254c | ||
|
|
4b0315ffd3 | ||
|
|
6a96f5b7c5 | ||
|
|
8875dd4083 | ||
|
|
7299f265d3 | ||
|
|
cac186f63c | ||
|
|
fd4c571e48 | ||
|
|
db99450475 | ||
|
|
ec50add571 | ||
|
|
1fc3746619 | ||
|
|
debf4c124a | ||
|
|
0e071255e5 | ||
|
|
4d0b8c690b | ||
|
|
85b3e0a0a6 | ||
|
|
d8573ce16f | ||
|
|
7f7e3180fa | ||
|
|
57cc6feef0 | ||
|
|
fb198a80d2 | ||
|
|
5b324a86dc | ||
|
|
f633274bef | ||
|
|
65b2eb6d7e | ||
|
|
0c509ec02e | ||
|
|
babcddeeb1 | ||
|
|
f23b282f27 | ||
|
|
fcfedd3026 | ||
|
|
efd65c1024 | ||
|
|
6f4f5381ff | ||
|
|
95b63f5180 | ||
|
|
f33a52a94c | ||
|
|
90baf26eb8 | ||
|
|
9119d773f1 | ||
|
|
4ea5cdb8b9 | ||
|
|
f36e5f1d89 | ||
|
|
bce95ff604 | ||
|
|
0f0a5b32cd | ||
|
|
0bd0b794df | ||
|
|
5267ac12b0 | ||
|
|
02678ffe30 | ||
|
|
2907e29a11 | ||
|
|
9d49c4d550 | ||
|
|
e2c6eec628 | ||
|
|
63716e4397 | ||
|
|
27e5955c78 | ||
|
|
e9e6cdccca | ||
|
|
8c8096e348 | ||
|
|
9fcbbc17e8 | ||
|
|
0a2f83cf85 | ||
|
|
01fff0783f | ||
|
|
7ccdb90f9b | ||
|
|
c2e522d9f2 | ||
|
|
92578dd6a2 | ||
|
|
3103f28fc8 | ||
|
|
a5df1275ec | ||
|
|
a4308f9864 | ||
|
|
21526fb676 | ||
|
|
5dc3116c44 | ||
|
|
2a6a87ec16 | ||
|
|
8149b05185 | ||
|
|
61afbbdfbe | ||
|
|
a37455ccda | ||
|
|
6d711aff41 | ||
|
|
d4adb975ec | ||
|
|
9b581d58bd | ||
|
|
79db8a2fe0 | ||
|
|
f722d4751b | ||
|
|
368ed2aaf3 | ||
|
|
50400e1d20 | ||
|
|
750115cab5 | ||
|
|
9d8acdc41f | ||
|
|
7ab36f1a7a | ||
|
|
b8d0e32550 | ||
|
|
d9f0889b36 | ||
|
|
35f40f175c | ||
|
|
291ff86c42 | ||
|
|
d2b0aeab52 | ||
|
|
3cab6e538e | ||
|
|
db67ab6b30 | ||
|
|
b5b31b3dc6 | ||
|
|
a15dd2ccbc | ||
|
|
62cc54f9f5 | ||
|
|
75c5bba7e5 | ||
|
|
642a0493af | ||
|
|
8d8e0be328 | ||
|
|
744b588cea | ||
|
|
d3a21b9ff0 | ||
|
|
3a9c40c566 | ||
|
|
387e0a5250 | ||
|
|
4ea28ba22a | ||
|
|
20660f547c | ||
|
|
2ee63d8568 | ||
|
|
2179d7d1f7 | ||
|
|
034d59373f | ||
|
|
d1ad0ade0f | ||
|
|
991089c17a | ||
|
|
54960d8480 | ||
|
|
5fcfe09bb6 | ||
|
|
01c4974507 | ||
|
|
2d57e0dab2 | ||
|
|
d52e5408c0 | ||
|
|
fdce69daf4 | ||
|
|
cb3ffcb12d | ||
|
|
d7342a349b | ||
|
|
794bbed833 | ||
|
|
0b335e80a6 | ||
|
|
2716d72e31 | ||
|
|
8c849a1077 | ||
|
|
8c1769458d | ||
|
|
2ac6451370 | ||
|
|
7841397b59 | ||
|
|
cd11194ce5 | ||
|
|
be7558f82b | ||
|
|
35a7875f6f | ||
|
|
55f1f834c2 | ||
|
|
f5f32912b1 | ||
|
|
5709435d43 | ||
|
|
1c219dbc3b | ||
|
|
1262982588 | ||
|
|
be8a340a0c | ||
|
|
fb1de15de6 | ||
|
|
2180f11768 | ||
|
|
1083b7521e | ||
|
|
70d40f9e70 | ||
|
|
1094cf2d92 | ||
|
|
aaf6e0f197 | ||
|
|
ec59cd6e4f | ||
|
|
3f7cb41db7 | ||
|
|
432ed09ef8 | ||
|
|
6c8a8841c7 | ||
|
|
c3c762c262 | ||
|
|
cc6f393a86 | ||
|
|
2546c5b74c | ||
|
|
118440c960 | ||
|
|
4f8ca0710f | ||
|
|
e2c1c4c1f7 | ||
|
|
8c18499fd7 | ||
|
|
bd9d5200b1 | ||
|
|
cb98b6347b | ||
|
|
a34d403b2c | ||
|
|
957d8092a3 | ||
|
|
eb799dead3 | ||
|
|
b37d9e2c25 | ||
|
|
9fc6e775aa | ||
|
|
211bf226eb | ||
|
|
360a923e96 | ||
|
|
2b689ffd6b | ||
|
|
feb6107c79 | ||
|
|
d39d5d4cbf | ||
|
|
62a66aa9a7 | ||
|
|
885433a1bd | ||
|
|
f67efd55a7 | ||
|
|
c238ea9136 | ||
|
|
5a0a5b09a1 | ||
|
|
e698d14ec3 | ||
|
|
0caf2fe77f | ||
|
|
c079f49d71 | ||
|
|
dd921f1555 | ||
|
|
e1a504564f | ||
|
|
424fbd4de8 | ||
|
|
7266ff8978 | ||
|
|
3c8d434358 | ||
|
|
088387fa90 | ||
|
|
7bc7017162 | ||
|
|
22adc9fef9 | ||
|
|
1f688c3fe2 | ||
|
|
68040aa568 | ||
|
|
1d751f73ff | ||
|
|
8490ac01cc | ||
|
|
84477ef52a | ||
|
|
b789573de3 | ||
|
|
d5d8e7ce63 | ||
|
|
c7a49458b9 | ||
|
|
a5dde3d3c8 | ||
|
|
5f2fff229d | ||
|
|
f3c67f134c | ||
|
|
1c48fc1c53 | ||
|
|
7c51419f3b | ||
|
|
b3984b02b4 | ||
|
|
758c3fa1a9 | ||
|
|
52a55edd04 | ||
|
|
896dd28fa8 | ||
|
|
c7b4fcd761 | ||
|
|
075e50b911 | ||
|
|
cc436898d5 | ||
|
|
a2cd7fb82d | ||
|
|
213ca2009c | ||
|
|
6add8b9b02 | ||
|
|
adbff13556 | ||
|
|
65757b0019 | ||
|
|
0b17ef329f | ||
|
|
d51a44a240 | ||
|
|
f4a7ef144f | ||
|
|
2a8a79b263 | ||
|
|
edcc5f6441 | ||
|
|
9fc77be51b | ||
|
|
a861d8a89c | ||
|
|
6baf640e6d | ||
|
|
1dd3f227ac | ||
|
|
a89cf71c17 | ||
|
|
2a6a785453 | ||
|
|
7dc9e012fa | ||
|
|
5d65c76686 | ||
|
|
ff184f7e5d | ||
|
|
767cc9b58a | ||
|
|
d8f444e596 | ||
|
|
6bc3e26eff | ||
|
|
68399acb8f | ||
|
|
22923b8e7e | ||
|
|
612c5e6668 | ||
|
|
a5a0264e41 | ||
|
|
fdb73563d6 | ||
|
|
cd2c4b35df | ||
|
|
d1d4cec00f | ||
|
|
6940f405eb | ||
|
|
3e6f7a554a | ||
|
|
4df451a540 | ||
|
|
78e2ee6631 | ||
|
|
fd06d67218 | ||
|
|
97aa3301ea | ||
|
|
ec0bc43c21 | ||
|
|
a8a5db401f | ||
|
|
23c4c2e543 | ||
|
|
d1a69dac90 | ||
|
|
7b819843b7 | ||
|
|
8e1893a215 | ||
|
|
6a43a01dd4 | ||
|
|
63069dd716 | ||
|
|
cd707d20a1 | ||
|
|
c648ee954c | ||
|
|
5695cacc0e | ||
|
|
bad5ad1f1f | ||
|
|
db8d35e332 | ||
|
|
c88df548e9 | ||
|
|
81180207ba | ||
|
|
2a1a6ea433 | ||
|
|
fa8af5596f | ||
|
|
f546a4d382 | ||
|
|
fc0b12af12 | ||
|
|
b2da40421b | ||
|
|
8740bf3a83 | ||
|
|
c2ecf7ef57 | ||
|
|
b9771d7c11 | ||
|
|
d5b53d2bca | ||
|
|
f502cd47e1 | ||
|
|
358fab9a8f | ||
|
|
445e78825a | ||
|
|
d49e17f088 | ||
|
|
e7d9824520 | ||
|
|
c9ebbdd4ec | ||
|
|
85fa211390 | ||
|
|
40a7db086f | ||
|
|
20f066104c | ||
|
|
1d9de9bae2 | ||
|
|
086272f103 | ||
|
|
9a7a05e8a9 | ||
|
|
36352ae6fb | ||
|
|
9419a823e2 | ||
|
|
f32fcd6e11 | ||
|
|
4ded92fcde | ||
|
|
1206215ea7 | ||
|
|
ac033600e9 | ||
|
|
5013d5ec94 | ||
|
|
3f5db2cb03 | ||
|
|
79227b347e | ||
|
|
ffe0c22b3e | ||
|
|
25e5faf135 | ||
|
|
e57ab1835c | ||
|
|
a6f8a9ef06 | ||
|
|
05b51e83a6 | ||
|
|
5625a9ae4f | ||
|
|
ac440aa8b1 | ||
|
|
0cebc33e27 | ||
|
|
11678431e1 | ||
|
|
75c03706cb | ||
|
|
7232c9373f | ||
|
|
06920807c6 | ||
|
|
ccae32f21c | ||
|
|
eaad4e21e4 | ||
|
|
6b4b65109d | ||
|
|
441e9ea887 | ||
|
|
25c369d400 | ||
|
|
491b5beded | ||
|
|
13c26d199b | ||
|
|
a02722a525 | ||
|
|
2553bea835 | ||
|
|
302528256c | ||
|
|
ca28a44743 | ||
|
|
32fd6e3827 | ||
|
|
ec4fa50012 | ||
|
|
8e60a1954b | ||
|
|
885a316955 | ||
|
|
cb1d45b625 | ||
|
|
52d2d75fe9 | ||
|
|
41d4728c89 | ||
|
|
edb669ab36 | ||
|
|
e9ed28b44d | ||
|
|
343373bf4d | ||
|
|
4a9082b70c | ||
|
|
c1e56920ec | ||
|
|
fe64da0841 | ||
|
|
6bf605f98e | ||
|
|
e18b0ad049 | ||
|
|
d7f37e8293 | ||
|
|
f576aa34e4 | ||
|
|
698ede9eb6 | ||
|
|
3ae73f7cad | ||
|
|
340d36c628 | ||
|
|
b08c119e57 | ||
|
|
703f782be1 | ||
|
|
052219e141 | ||
|
|
604d18d594 | ||
|
|
f23d4a4188 | ||
|
|
88f2177e9b | ||
|
|
675d7a0647 | ||
|
|
781d8845be | ||
|
|
c2fdf4812c | ||
|
|
ae1532e509 | ||
|
|
121d2471a7 | ||
|
|
278342f3f0 | ||
|
|
608526b348 | ||
|
|
a0ba1ecfae | ||
|
|
2ef4514987 | ||
|
|
67f63730a3 | ||
|
|
eeb3b2e5d5 | ||
|
|
7314572fc0 | ||
|
|
934d78c50e | ||
|
|
431eb7baf7 | ||
|
|
e0c8895733 | ||
|
|
b18a1d0110 | ||
|
|
a89411aeec | ||
|
|
838ce6615b | ||
|
|
e0cc42653d | ||
|
|
74b940d4eb | ||
|
|
c03e82f094 | ||
|
|
235c5d6b4a | ||
|
|
42e6e0bc50 | ||
|
|
f7eabfe458 | ||
|
|
988dcd1522 | ||
|
|
22aa0d2cb7 | ||
|
|
dd1975817e | ||
|
|
77195718d8 | ||
|
|
ebd354bc8d | ||
|
|
aa1fa3a40e | ||
|
|
2add3b70a4 | ||
|
|
d38a4a2e7e | ||
|
|
8827e6f453 | ||
|
|
742297c1fc | ||
|
|
7ae66a14be | ||
|
|
0cf89ca33c | ||
|
|
68ceada28b | ||
|
|
192ca44d89 | ||
|
|
421dab2405 | ||
|
|
3204aaf161 | ||
|
|
6cf6791fe6 | ||
|
|
0ff16f280e | ||
|
|
a297e4731c | ||
|
|
de5ac9181f | ||
|
|
fbab90e954 | ||
|
|
05472b5a29 | ||
|
|
d6839c5dfa | ||
|
|
dea4fa000e | ||
|
|
c36eaf934f | ||
|
|
4a13cc63ae | ||
|
|
96e0be0a78 | ||
|
|
5f190bdc6c | ||
|
|
73c376427c | ||
|
|
d34f39a9e0 | ||
|
|
8ae9de580d | ||
|
|
a144f347f8 | ||
|
|
f43788d676 | ||
|
|
cac00423a2 | ||
|
|
32429af5e9 | ||
|
|
792c3a07e3 | ||
|
|
2879fa466e | ||
|
|
9eed6693b4 | ||
|
|
c4c6eb3ca6 | ||
|
|
e29f318453 | ||
|
|
8eb2ba9512 | ||
|
|
e9f87bb475 | ||
|
|
8b4e6ac5ae | ||
|
|
ee0f652981 | ||
|
|
7f06f888df | ||
|
|
54f43c7938 | ||
|
|
6ebb18a932 | ||
|
|
7bde1bf44f | ||
|
|
e00c6459ab | ||
|
|
3075ec066f | ||
|
|
3ddc3c3768 | ||
|
|
4d8d4af42a | ||
|
|
1fd0028351 | ||
|
|
f59c5ae16e | ||
|
|
7b7b726ec5 | ||
|
|
9c1d161785 | ||
|
|
5f542e9ce6 | ||
|
|
5484506bc3 | ||
|
|
2e71bc4505 | ||
|
|
136f05b886 | ||
|
|
83cf03a10b | ||
|
|
7b56719716 | ||
|
|
348296763d | ||
|
|
5c7a57ac32 | ||
|
|
0c0b8ea455 | ||
|
|
2f20f43efe | ||
|
|
cf6435503c | ||
|
|
752e98275d | ||
|
|
40ee21a613 | ||
|
|
1662b793a5 | ||
|
|
2e4efe2500 | ||
|
|
3d01faed5f | ||
|
|
9bc3443a3c | ||
|
|
87dc32210e | ||
|
|
671216488e | ||
|
|
f596fc33a1 | ||
|
|
82756923ad | ||
|
|
14042563bf | ||
|
|
06e12396e8 | ||
|
|
b698eee3a1 | ||
|
|
9d15634dc8 | ||
|
|
5f6c298d04 | ||
|
|
f20a2ca781 | ||
|
|
6dcfbc24a9 | ||
|
|
ea9404301b | ||
|
|
da268b4429 | ||
|
|
2775960cf7 | ||
|
|
bff6b2ffb0 | ||
|
|
193600564e | ||
|
|
2abd683759 | ||
|
|
0163800a05 | ||
|
|
958ccd7f7d | ||
|
|
a0eb1df4fa | ||
|
|
3f1c6d1dd0 | ||
|
|
49d1946f29 | ||
|
|
7c448a5362 | ||
|
|
06c40b6c80 | ||
|
|
63f24e75b3 | ||
|
|
87f4068736 | ||
|
|
87a80e0caa | ||
|
|
debdd03a7a | ||
|
|
c58697aecd | ||
|
|
3b3ad37d64 | ||
|
|
d392b06e98 | ||
|
|
99a9f594e2 | ||
|
|
549a5b764d | ||
|
|
26592c31a9 | ||
|
|
378eb924e9 | ||
|
|
f8f4a87a99 | ||
|
|
55289e6837 | ||
|
|
60efbd0389 | ||
|
|
f3903c1aa5 | ||
|
|
b01e62007f | ||
|
|
d23139cd8a | ||
|
|
f59a450448 | ||
|
|
e14bb78ed1 | ||
|
|
7730890525 | ||
|
|
29977609aa | ||
|
|
88c3a7d0bf | ||
|
|
2c89add187 | ||
|
|
0461c57cf3 | ||
|
|
ba0335bb28 | ||
|
|
51e01ee40c | ||
|
|
09a76a2057 | ||
|
|
741220aefe | ||
|
|
2917d6ffcf | ||
|
|
6c73ca5b45 | ||
|
|
79658e2f7c | ||
|
|
f335c3f755 | ||
|
|
86fe129eba | ||
|
|
081104e655 | ||
|
|
96d997a817 | ||
|
|
b55ceda978 | ||
|
|
37b4f5c896 | ||
|
|
b0821a9c6b | ||
|
|
f178790709 | ||
|
|
425b71984a | ||
|
|
3cb2cf5333 | ||
|
|
9c0dc64a47 | ||
|
|
4a9bd3626e | ||
|
|
23a561e8cd | ||
|
|
2a2f1033d0 | ||
|
|
4234c5b35f | ||
|
|
1b09234e91 | ||
|
|
9b5878faae | ||
|
|
e27f4c5768 | ||
|
|
a78b42d9ab | ||
|
|
a1f1bc19e5 | ||
|
|
f6983993d5 | ||
|
|
a868860b7d | ||
|
|
d1b6a4eb43 | ||
|
|
61bfaf012b | ||
|
|
92adc9b610 | ||
|
|
feb4a63bb0 | ||
|
|
30f8318531 | ||
|
|
75eff42329 | ||
|
|
5b040900a7 | ||
|
|
717666fc14 | ||
|
|
a012a6f0d5 | ||
|
|
d0703f9639 | ||
|
|
7b2ade5fcd | ||
|
|
28c839a59d | ||
|
|
1ead724af6 | ||
|
|
3341c6db19 | ||
|
|
206d13594a | ||
|
|
37af406831 | ||
|
|
88f18a1b24 | ||
|
|
8bf410dbca | ||
|
|
c98411ca0e | ||
|
|
fcfb404edf | ||
|
|
a0c8b39f0c | ||
|
|
3a1f2540b1 | ||
|
|
9c680bc59c | ||
|
|
fde95a6a8e | ||
|
|
150a0332f6 | ||
|
|
618c32bdb8 | ||
|
|
ea35850b71 | ||
|
|
87561943f9 | ||
|
|
5fd8d4e847 | ||
|
|
3880f205b6 | ||
|
|
fcbc4cb792 | ||
|
|
f5837fdbd2 | ||
|
|
eb6d0d7922 | ||
|
|
d3dd9099f6 | ||
|
|
a112b23d07 | ||
|
|
4c591f3827 | ||
|
|
62a28f57f6 | ||
|
|
ef689b0857 | ||
|
|
aa903da042 | ||
|
|
9587d8832d | ||
|
|
f125be1347 | ||
|
|
269301852a | ||
|
|
8e5dcd57ce | ||
|
|
920273197d | ||
|
|
1be2e9fbb2 | ||
|
|
7c93eededf | ||
|
|
e0b414d8e9 | ||
|
|
1b17031523 | ||
|
|
2d76c3e84c | ||
|
|
a56c7c29a6 | ||
|
|
54f2e26f93 | ||
|
|
842f5bed81 | ||
|
|
1e5c656e51 | ||
|
|
539e01f97d | ||
|
|
503a4881fe | ||
|
|
03dd4370b9 | ||
|
|
04181fdda7 | ||
|
|
316fd65ab8 | ||
|
|
e8cbd91baf | ||
|
|
157af15a2a | ||
|
|
cba80aeac9 | ||
|
|
efa9e8aa3b | ||
|
|
d294341926 | ||
|
|
b930ecdcd0 | ||
|
|
35dce661bf | ||
|
|
100242f0a6 | ||
|
|
d695f71d36 | ||
|
|
5d60b7a67c | ||
|
|
5d5d89dab9 | ||
|
|
35a625e04b | ||
|
|
1a2d3bb441 | ||
|
|
2e3ac02afb | ||
|
|
1d2bfb4462 | ||
|
|
a5b8a65b7d | ||
|
|
dc320f2e6d | ||
|
|
acbca83553 | ||
|
|
cb26c5dfc8 | ||
|
|
b5c4174700 | ||
|
|
3e37d11c6a | ||
|
|
36e83a9d01 | ||
|
|
efcd759869 | ||
|
|
9f8830b341 | ||
|
|
7c81396ec5 | ||
|
|
9b50665375 | ||
|
|
83795581e6 | ||
|
|
af51524109 | ||
|
|
749f2bff02 | ||
|
|
cd8f8bb90c | ||
|
|
3a031bbbaf | ||
|
|
f4b1acb757 | ||
|
|
3e55e04fbd | ||
|
|
1822a62e14 | ||
|
|
2f991b5557 | ||
|
|
827efbd783 | ||
|
|
9573a68bfe | ||
|
|
738aa12243 | ||
|
|
f25de4b4ce | ||
|
|
c75d265686 | ||
|
|
c691d6028b | ||
|
|
c073512b17 | ||
|
|
dc827df95c | ||
|
|
b8db54d198 | ||
|
|
dc58b42f68 | ||
|
|
9eca4673cd | ||
|
|
ac41a55d4f | ||
|
|
741c05a519 | ||
|
|
ac2d78f7a5 | ||
|
|
a4a93c5f4a | ||
|
|
05e507278e | ||
|
|
cab1641b33 | ||
|
|
9e99edf6f6 | ||
|
|
2841e086df | ||
|
|
00ae511076 | ||
|
|
f97d8ffdfd | ||
|
|
34f337290c | ||
|
|
8159838fc3 | ||
|
|
698aa5a753 | ||
|
|
60f2494eae | ||
|
|
303f999b74 | ||
|
|
f83daf154f | ||
|
|
6444680e06 | ||
|
|
38e1db9c53 | ||
|
|
d71c929ba8 | ||
|
|
c604369e86 | ||
|
|
4865b742c7 | ||
|
|
1246549f4b | ||
|
|
55ee75fed1 | ||
|
|
846a4796e2 | ||
|
|
545c464f4f | ||
|
|
fabf0c28e3 | ||
|
|
e219f7e07c | ||
|
|
830ce14c65 | ||
|
|
79abb8bf8f | ||
|
|
fd4236672e | ||
|
|
00148a2993 | ||
|
|
359fcb24cf | ||
|
|
c1bfa563a3 | ||
|
|
bf4fc9a7aa | ||
|
|
4312b5ad65 | ||
|
|
6fc078090a | ||
|
|
a4548abc19 | ||
|
|
1a39066b45 | ||
|
|
9cf1435130 | ||
|
|
e895bda80b | ||
|
|
882f18ac29 | ||
|
|
ebfe5eee6d | ||
|
|
afac08dc01 | ||
|
|
a0ac379b3c | ||
|
|
f5cb393138 | ||
|
|
b93f8e5e95 | ||
|
|
38c8e1b84f | ||
|
|
275c879e62 | ||
|
|
cde632241b | ||
|
|
ea1e47e579 | ||
|
|
07b399cd80 | ||
|
|
ed20cf3df4 | ||
|
|
f5d7919f72 | ||
|
|
86c4278553 | ||
|
|
2a5c0bb740 | ||
|
|
432dfa9e86 | ||
|
|
8a4e32f05e | ||
|
|
5a8b4fb4ce | ||
|
|
65034e523f | ||
|
|
0c6637406a | ||
|
|
4b0d022db1 | ||
|
|
7a2b3c2d2e | ||
|
|
205eae785e | ||
|
|
e0223e0c5c | ||
|
|
d611391bea | ||
|
|
0c547353cd | ||
|
|
5ce859f267 | ||
|
|
8e0da93476 | ||
|
|
3f7c22cfe0 | ||
|
|
55ee575c9c | ||
|
|
de6627ab32 | ||
|
|
f61a8371f4 | ||
|
|
9b586ae709 | ||
|
|
0bcdf5e0a3 | ||
|
|
64a43d3d40 | ||
|
|
679957b48c | ||
|
|
0399763888 | ||
|
|
3e3780028b | ||
|
|
1c9d19fc76 | ||
|
|
ecdb1e9fee | ||
|
|
b9e5126ab4 | ||
|
|
a34fddc866 | ||
|
|
9b3bfd3d1c | ||
|
|
74000551e6 | ||
|
|
325ee16d39 | ||
|
|
37761bf6e7 | ||
|
|
ad57ce7790 | ||
|
|
169f799a23 | ||
|
|
942d1130a1 | ||
|
|
64cc20aed2 | ||
|
|
3a6731ec8d | ||
|
|
e6f11a17b9 | ||
|
|
cc1cd610e7 | ||
|
|
6a3b5ee844 | ||
|
|
49b119571e | ||
|
|
e024e3deb0 | ||
|
|
f1f907ee33 | ||
|
|
e3f20459dd | ||
|
|
da567a9d6c | ||
|
|
01a4fb57df | ||
|
|
7ccedb559d | ||
|
|
01d52143e8 | ||
|
|
35461ba926 | ||
|
|
b9f49cad45 | ||
|
|
d7487c6d5c | ||
|
|
15122387f4 | ||
|
|
103daf000d | ||
|
|
70df456307 | ||
|
|
375174ee41 | ||
|
|
931064a695 | ||
|
|
49c8a5a375 | ||
|
|
ab9f9701d8 | ||
|
|
da4abcfce2 | ||
|
|
4149549c88 | ||
|
|
fa8cd4a2f0 | ||
|
|
423dc7a6bf | ||
|
|
f19beba014 | ||
|
|
865756e4b2 | ||
|
|
41f834db08 | ||
|
|
2c94753a5a | ||
|
|
557954a259 | ||
|
|
38b72c8c72 | ||
|
|
3f395e816f | ||
|
|
0e05c77fa7 | ||
|
|
6dcc77243a | ||
|
|
110ffe52b7 | ||
|
|
2fab51ea9b | ||
|
|
425f00860f | ||
|
|
793c152b26 | ||
|
|
9df75f551c | ||
|
|
da49280ef2 | ||
|
|
e6087d5129 | ||
|
|
d91a3080d5 | ||
|
|
0485e5192b | ||
|
|
4f9bff20c8 | ||
|
|
683f1ac10a | ||
|
|
e844d2995a | ||
|
|
c0af3d19cd | ||
|
|
78d20e8340 | ||
|
|
6a90caee04 | ||
|
|
98c95a94bc | ||
|
|
d4dc4a30b8 | ||
|
|
70d2dc089c | ||
|
|
8698ad3054 | ||
|
|
7531c83379 | ||
|
|
6188f175ae | ||
|
|
189fab2401 | ||
|
|
a3adba1941 | ||
|
|
cea41af1b8 | ||
|
|
a325070f7f | ||
|
|
d782c54c2c | ||
|
|
58917fbc4d | ||
|
|
8b0547aeb9 | ||
|
|
9efc101161 | ||
|
|
691e8a940b | ||
|
|
bee7623eaf | ||
|
|
430697879f | ||
|
|
749974654a | ||
|
|
f31a661aaf | ||
|
|
70ea3acb05 | ||
|
|
81547563c6 | ||
|
|
c107f2f497 | ||
|
|
5fea2131cd | ||
|
|
d671df30a3 | ||
|
|
3aca96148d | ||
|
|
100b75a5d2 | ||
|
|
7dba36d210 | ||
|
|
0dea5c9877 | ||
|
|
1777dfe821 | ||
|
|
2b6edfb96d | ||
|
|
faa3c99965 | ||
|
|
1cc5a0a094 | ||
|
|
cbafbd44a4 | ||
|
|
f16a804758 | ||
|
|
c30e1bb43a | ||
|
|
31051086ba | ||
|
|
67d3c852dd | ||
|
|
4ea9b10fc4 | ||
|
|
e609f4e0e0 | ||
|
|
b9ee2611a3 | ||
|
|
8de3c41958 | ||
|
|
2a350a9bbe | ||
|
|
89c4c09481 | ||
|
|
a97b023504 | ||
|
|
4aa7152ab4 | ||
|
|
80ff8ddb12 | ||
|
|
45aeeaa069 | ||
|
|
0c24db72c6 | ||
|
|
95c4d72b74 | ||
|
|
1330c0e7a3 | ||
|
|
9af22bcf9f | ||
|
|
d24214c463 | ||
|
|
e8101dd433 | ||
|
|
94bd343eed | ||
|
|
f409633ade | ||
|
|
e927418535 | ||
|
|
be9f9d68db | ||
|
|
ba401877e8 | ||
|
|
77748a951b | ||
|
|
4692526e48 | ||
|
|
eb4b8555c2 | ||
|
|
6a12ca78d1 | ||
|
|
2ed53f8e50 | ||
|
|
615e3bfa3d | ||
|
|
e406bdbc2c | ||
|
|
7fd402aade | ||
|
|
e8522a4a6d | ||
|
|
eb872ddbf6 | ||
|
|
1b1c1bdd5e | ||
|
|
b2f950ebe4 | ||
|
|
8501dcc34e | ||
|
|
9fd1d76fd8 | ||
|
|
3a002cce9e | ||
|
|
416ddf3d34 | ||
|
|
e0f8d1ea9e | ||
|
|
be886b108c | ||
|
|
8b0a19c6a2 | ||
|
|
757fa1b768 | ||
|
|
736d829bd0 | ||
|
|
6829d5351d | ||
|
|
cbcddfbcd1 | ||
|
|
7d531d18d4 | ||
|
|
eee8ed70e7 | ||
|
|
805eb87754 | ||
|
|
e910ec4a51 | ||
|
|
4f425fb99a | ||
|
|
9395a456f0 | ||
|
|
a8256b461a | ||
|
|
3494bce2b8 | ||
|
|
4c0ace1d84 | ||
|
|
cae26e7fe0 | ||
|
|
b6b3e83c1e | ||
|
|
7d47fcf4e9 | ||
|
|
b857c9e4d9 | ||
|
|
25de4326d2 | ||
|
|
257f4f2b5b | ||
|
|
e4a6bd0a1f | ||
|
|
4ab0fbf36b | ||
|
|
8d070349a6 | ||
|
|
d1379935b7 | ||
|
|
64c5fe3157 | ||
|
|
ddf977f665 | ||
|
|
166697d791 | ||
|
|
90d93b733d | ||
|
|
272d2e94a1 | ||
|
|
f84a401714 | ||
|
|
f6b19d40b1 | ||
|
|
969b7ba492 | ||
|
|
c9edec6308 | ||
|
|
9f0ff1348c | ||
|
|
c85d62fc66 | ||
|
|
dae51a8d3e | ||
|
|
d522534a12 | ||
|
|
a3ee2fb69c | ||
|
|
143eafa24a | ||
|
|
a38308a24a | ||
|
|
b981960221 | ||
|
|
67fff17f06 | ||
|
|
5ada8e529c | ||
|
|
22a3654dfd | ||
|
|
9a94c650da | ||
|
|
ddaeb054d0 | ||
|
|
7d1461a752 | ||
|
|
0a3611b94a | ||
|
|
0db439c80d | ||
|
|
99103bc419 | ||
|
|
fcf9f30af0 | ||
|
|
beab927f64 | ||
|
|
91f2f34cd3 | ||
|
|
24a589fe41 | ||
|
|
b1d28a46c3 | ||
|
|
a44f61b507 | ||
|
|
fc567d2fbb | ||
|
|
12e0c7fd7b | ||
|
|
7e77e56e7f | ||
|
|
46706c633e | ||
|
|
6b376fbfbb | ||
|
|
c532b1f94f | ||
|
|
26ab7f5580 | ||
|
|
72c638ca6f | ||
|
|
5478b7d550 | ||
|
|
ea8ab582eb | ||
|
|
73e4f22256 | ||
|
|
a173e66a59 | ||
|
|
cad75408c3 | ||
|
|
cd93d9c697 | ||
|
|
ce869950c3 | ||
|
|
55bd417105 | ||
|
|
ed4592ae0c | ||
|
|
7c30204dd7 | ||
|
|
e6eacc48d6 | ||
|
|
0259e000e3 | ||
|
|
eb0a95f594 | ||
|
|
41ee8cf66f | ||
|
|
8c8834e6aa | ||
|
|
b52d61b6db | ||
|
|
1bed90b804 | ||
|
|
5eabf6869d | ||
|
|
4ee5d348bf | ||
|
|
252a7207f6 | ||
|
|
abc2dc8437 | ||
|
|
145abfa344 | ||
|
|
f60e61e331 | ||
|
|
fd534aba95 | ||
|
|
f23c99f5ea | ||
|
|
1a14cc9513 | ||
|
|
e98131ce7a | ||
|
|
7cff47efab | ||
|
|
27fe267181 | ||
|
|
1dcc3e06d4 | ||
|
|
9125921038 | ||
|
|
5f184693ca | ||
|
|
6087668e26 | ||
|
|
eea2a2c252 | ||
|
|
9554c69a39 | ||
|
|
506ab0f0c7 | ||
|
|
3e26ca5c68 | ||
|
|
3fa8a9f27e | ||
|
|
0cdff07e4b | ||
|
|
8a142c3b11 | ||
|
|
20ca7151d1 | ||
|
|
15abe9f24b | ||
|
|
754b7c3376 | ||
|
|
00b02248d3 | ||
|
|
fda302ebb6 | ||
|
|
70cd675aa1 | ||
|
|
960db5aaab | ||
|
|
8daf43d6e8 | ||
|
|
114ca55b26 | ||
|
|
59f5219c0b | ||
|
|
bc465c7b2f | ||
|
|
bf1b2db415 | ||
|
|
9085756fca | ||
|
|
db43bd1962 | ||
|
|
3c13c06ce1 | ||
|
|
830a385bda | ||
|
|
c92c19d9b2 | ||
|
|
8fe6f5c141 | ||
|
|
39ab8b00c4 | ||
|
|
d3164d3e0d | ||
|
|
beb1823a57 | ||
|
|
b6fa74c601 | ||
|
|
596b6c6f98 | ||
|
|
e6af0e3845 | ||
|
|
0eabf1f7c4 | ||
|
|
91111c7d74 | ||
|
|
7397f4c381 | ||
|
|
02ffb727d5 | ||
|
|
4ba769a49e | ||
|
|
ad71804b70 | ||
|
|
1bf9696a27 | ||
|
|
1bfe5bb6a0 | ||
|
|
b5e0055876 | ||
|
|
f6f6754669 | ||
|
|
752a25b1f8 | ||
|
|
8e8e4bb8bb | ||
|
|
06dc02d6b2 | ||
|
|
540daf2a38 | ||
|
|
9e671d93cb | ||
|
|
269be4e31a | ||
|
|
5969edc0b8 | ||
|
|
42176f42ed | ||
|
|
8c8bb159ea | ||
|
|
b9cf29a0ec | ||
|
|
5db9f33723 | ||
|
|
1ba09cc119 | ||
|
|
02bbe3fa13 | ||
|
|
6a3534da76 | ||
|
|
105a5f2bdc | ||
|
|
45543e9669 | ||
|
|
36bc96f192 | ||
|
|
516b345807 | ||
|
|
4a6d542965 | ||
|
|
fb9bbafd6e | ||
|
|
0c77ca91c1 | ||
|
|
0e44243e55 | ||
|
|
fbadf14b58 | ||
|
|
2558fe6c2b | ||
|
|
10fca9b5ae | ||
|
|
01f338e58b | ||
|
|
5e998796ab | ||
|
|
40231f45f6 | ||
|
|
b19b51c275 | ||
|
|
854877e685 | ||
|
|
028a8ddbda | ||
|
|
abb81209af | ||
|
|
578201c519 | ||
|
|
a5a23b366e | ||
|
|
ac57837f53 | ||
|
|
65b451b465 | ||
|
|
abff1136f9 | ||
|
|
3630172723 | ||
|
|
d241ee3cde | ||
|
|
6994f6bc1d | ||
|
|
25147f84ec | ||
|
|
c02523ee51 | ||
|
|
5cdc8302bb | ||
|
|
b095718545 | ||
|
|
0b53285b89 | ||
|
|
d1ea4360ca | ||
|
|
257372db5a | ||
|
|
855f20f2da | ||
|
|
8a4ffc5e0c | ||
|
|
5b3445a5b5 | ||
|
|
b05bff0fa0 | ||
|
|
51f0f943f7 | ||
|
|
11b42470b6 | ||
|
|
71e5e32206 | ||
|
|
6f44c8ba17 | ||
|
|
4f73e57ab2 | ||
|
|
1b529bba10 | ||
|
|
072cd00e59 | ||
|
|
4b03c1a8dd | ||
|
|
45a6564e17 | ||
|
|
f614413fb1 | ||
|
|
74153d79b8 | ||
|
|
edf06944e0 | ||
|
|
a02582e9f8 | ||
|
|
65641c1256 | ||
|
|
930e686cbd | ||
|
|
c4ff29beda | ||
|
|
cc839a1ae9 | ||
|
|
af9a95651d | ||
|
|
45106ae99a | ||
|
|
0ac3c55180 | ||
|
|
a289fd427b | ||
|
|
6385866e98 | ||
|
|
c2176305db | ||
|
|
fd3760198b | ||
|
|
826ddddd5d | ||
|
|
93613c9781 | ||
|
|
818ca0b2e4 | ||
|
|
17d34c5ca7 | ||
|
|
965f7c04d8 | ||
|
|
0e1e312f7c | ||
|
|
202d8afa10 | ||
|
|
769561349f | ||
|
|
0cb415f70d | ||
|
|
08309a6f04 | ||
|
|
10b4c3da05 | ||
|
|
6257f6ffb7 | ||
|
|
80f8a524ef | ||
|
|
6d4dbc26a4 | ||
|
|
6f3fc2fcab | ||
|
|
63759c985f | ||
|
|
98d4ce5ff8 | ||
|
|
2cf9c288be | ||
|
|
9254a36636 | ||
|
|
6a8b2b6338 | ||
|
|
3f258fbd87 | ||
|
|
fd1c6d718e | ||
|
|
7100f4eb8b | ||
|
|
7285d8b01c | ||
|
|
78da168a2e | ||
|
|
f54009ae00 | ||
|
|
f92f18ecb2 | ||
|
|
44832f7c11 | ||
|
|
e475115b6a | ||
|
|
b32a7a9134 | ||
|
|
381adb2a5b | ||
|
|
d976fafd45 | ||
|
|
7e7657e444 | ||
|
|
5f2e683b6b | ||
|
|
5f4283ca3f | ||
|
|
9df03a73d9 | ||
|
|
6d813ebb2f | ||
|
|
f961413e94 | ||
|
|
17693b90b5 | ||
|
|
4b551c595a | ||
|
|
c11dd8bcae | ||
|
|
ef3913d91f | ||
|
|
569b7e78fe | ||
|
|
c87964f6d0 | ||
|
|
353b2d6d21 | ||
|
|
1d58f318ca | ||
|
|
32b75250dc | ||
|
|
743fcbcfc1 | ||
|
|
748db37a1b | ||
|
|
a75650c045 | ||
|
|
ce9c469acc | ||
|
|
dc8958bee1 | ||
|
|
e405aab310 | ||
|
|
846c3e36cc | ||
|
|
771375b40b | ||
|
|
b42a444a67 | ||
|
|
4771f890cb | ||
|
|
991ff88767 | ||
|
|
4fa7155fc3 | ||
|
|
9e49652f80 | ||
|
|
931865b61f | ||
|
|
f0088b256e | ||
|
|
a047d36bf1 | ||
|
|
ebcc814abf | ||
|
|
b83f3a291b | ||
|
|
e4ff6ed732 | ||
|
|
a67b084b52 | ||
|
|
dd3f38fe75 | ||
|
|
3184deb00e | ||
|
|
2847721584 | ||
|
|
894a298f45 | ||
|
|
17610663c1 | ||
|
|
12cf9da8fc | ||
|
|
1e4f6d243c | ||
|
|
717c989ae9 | ||
|
|
4933726b79 | ||
|
|
c47e46263c | ||
|
|
e040a10096 | ||
|
|
d81e7f6c2b | ||
|
|
f1ab60bcd1 | ||
|
|
ce6c43fb62 | ||
|
|
faf025d2c4 | ||
|
|
68e6ab4be5 | ||
|
|
7ea9592398 | ||
|
|
52d8e8d9ba | ||
|
|
8e50742372 | ||
|
|
b0533f2f9b | ||
|
|
fd0d5813fb | ||
|
|
8cd79cdc20 | ||
|
|
d3abe4db3e | ||
|
|
b7e23df4c2 | ||
|
|
71765f3542 | ||
|
|
1e326fe414 | ||
|
|
f06b3e8af0 | ||
|
|
4edd729850 | ||
|
|
8412aa19fb | ||
|
|
fce57f7f03 | ||
|
|
5f0eb73927 | ||
|
|
fd8411b475 | ||
|
|
f312f6028d | ||
|
|
f401b0f635 | ||
|
|
7eaa33ac69 | ||
|
|
7ce2c042c3 | ||
|
|
e22c89a0e9 | ||
|
|
e5691d0e98 | ||
|
|
4266029e84 | ||
|
|
849856df26 | ||
|
|
371d8a76b8 | ||
|
|
7f63451b9a | ||
|
|
ee8237d493 | ||
|
|
91d3c43422 | ||
|
|
1700b9c531 | ||
|
|
7133249f4b | ||
|
|
ab9ea87549 | ||
|
|
975ad34672 | ||
|
|
6cb6861228 | ||
|
|
cc24964368 | ||
|
|
714242b6df | ||
|
|
e398fc0b38 | ||
|
|
c33c4ed79b | ||
|
|
971f8f3dad | ||
|
|
ca5fda7927 | ||
|
|
2e6cc3e58e | ||
|
|
42b7d1afcb | ||
|
|
99868e4e80 | ||
|
|
38b22f3a56 | ||
|
|
b70a3bce9f | ||
|
|
fb821ba0ef | ||
|
|
f14acc371d | ||
|
|
514c4106b1 | ||
|
|
3cf89aca10 | ||
|
|
9bf8b615dc | ||
|
|
cb8dd3bc99 | ||
|
|
1cd9caef4a | ||
|
|
1025829123 | ||
|
|
019a931b99 | ||
|
|
8398193a51 | ||
|
|
c031db9019 | ||
|
|
78686faad3 | ||
|
|
f560365ded | ||
|
|
ebc2902450 | ||
|
|
dfd9f7b066 | ||
|
|
cb98b6723f | ||
|
|
dcf7d44d72 | ||
|
|
369c460837 | ||
|
|
e99ff005d6 | ||
|
|
c1d6e98349 | ||
|
|
497a4bbeb9 | ||
|
|
f47c806ebd | ||
|
|
bb2a0eb642 | ||
|
|
28fd1917ec | ||
|
|
cf0f7482f1 | ||
|
|
2475eadab9 | ||
|
|
97cf2e6372 | ||
|
|
2c12ce3edf | ||
|
|
daf343c5fd | ||
|
|
31eacad5fb | ||
|
|
54e147ce8e | ||
|
|
b217ac7ae7 | ||
|
|
0727a52b8a | ||
|
|
2c24017e96 | ||
|
|
0f5d37fc7c | ||
|
|
2b3e2039b8 | ||
|
|
748518f567 | ||
|
|
91980d91e8 | ||
|
|
630f2fbf4e | ||
|
|
394d7d73ed | ||
|
|
49a437b103 | ||
|
|
15b38241da | ||
|
|
e02594ba83 | ||
|
|
061fbfff65 | ||
|
|
a5aa6d74b5 | ||
|
|
8a9e150f64 | ||
|
|
44a68bab71 | ||
|
|
facbe08e20 | ||
|
|
728bb76a43 | ||
|
|
bdd9ff796a | ||
|
|
77a46a4ef6 | ||
|
|
a4225769f6 | ||
|
|
cf74187be1 | ||
|
|
454a05986c | ||
|
|
fa2fcf4f08 | ||
|
|
44d7f18428 | ||
|
|
da60b4a097 | ||
|
|
40d460b458 | ||
|
|
86652a8f1f | ||
|
|
e4caf4169f | ||
|
|
5cd7538ed5 | ||
|
|
bfbe19b49b | ||
|
|
45f8d2b1c8 | ||
|
|
8006d7663c | ||
|
|
17f875863c | ||
|
|
4a8ad3db1e | ||
|
|
71261fc767 | ||
|
|
58d1c94b79 | ||
|
|
761b974aa5 | ||
|
|
bd96a29200 | ||
|
|
1427dd989f | ||
|
|
b4281aaf83 | ||
|
|
418821d8d3 | ||
|
|
22968495fd | ||
|
|
ab3de1871c | ||
|
|
f691da53d7 | ||
|
|
25887c0595 | ||
|
|
644be2d59b | ||
|
|
3f880ef304 | ||
|
|
851cb28714 | ||
|
|
92b7439969 | ||
|
|
257e886d87 | ||
|
|
89c6964e30 | ||
|
|
bb6356cfa8 | ||
|
|
8728865b97 | ||
|
|
62bfc6f7b0 | ||
|
|
54ad7db2c1 | ||
|
|
ccbbebccef | ||
|
|
0a5b707fec | ||
|
|
fb3473459d | ||
|
|
d6929e5cf9 | ||
|
|
3207b69874 | ||
|
|
bd317858bf | ||
|
|
9d4c26fd29 | ||
|
|
f0d0550251 | ||
|
|
f132eacb83 | ||
|
|
b75e3a7848 | ||
|
|
79a7e60cfc | ||
|
|
673c660d26 | ||
|
|
8f03899302 | ||
|
|
8ccd4b5045 | ||
|
|
5b3207bc24 | ||
|
|
57314c56c8 | ||
|
|
4cd1e0a4a5 | ||
|
|
83e9a2bbfb | ||
|
|
46d2b7730e | ||
|
|
b7c2b5c294 | ||
|
|
7b9d140e74 | ||
|
|
0c6850d498 | ||
|
|
ffe02bf210 | ||
|
|
e78dd305f3 | ||
|
|
e12c83faf1 | ||
|
|
05102d3842 | ||
|
|
18767c54ce | ||
|
|
09dc35228f | ||
|
|
312c215813 | ||
|
|
95583dbe2c | ||
|
|
cf20b22404 | ||
|
|
73ba5a591d | ||
|
|
82ebeacea9 | ||
|
|
c0c71c3967 | ||
|
|
aa5a87a1fc | ||
|
|
302faa193a | ||
|
|
9fe3eeb823 | ||
|
|
e0f7ce5de9 | ||
|
|
76eecedfb5 | ||
|
|
8f216a2791 | ||
|
|
75e3d826a0 | ||
|
|
a57b8f6081 | ||
|
|
1cac34d2a0 | ||
|
|
e47bdd043e | ||
|
|
521c71733a | ||
|
|
963273853f | ||
|
|
c0c26a5a20 | ||
|
|
b7533457de | ||
|
|
388a7ceb16 | ||
|
|
8391365d05 | ||
|
|
6a7c3b472a | ||
|
|
f9efe44e1d | ||
|
|
7817ed2f7e | ||
|
|
79c71bd5d9 | ||
|
|
0ddb013e94 | ||
|
|
3b2e75db1d | ||
|
|
3c7fd0fa35 | ||
|
|
1e349214fe | ||
|
|
e689cef201 | ||
|
|
f58d9e49d8 | ||
|
|
1b8d501208 | ||
|
|
1842bb7105 | ||
|
|
d53706bd5d | ||
|
|
b0e01e13bf | ||
|
|
5587429475 | ||
|
|
1e6e843e05 | ||
|
|
4972418dc5 | ||
|
|
1f39ed9d4e |
@@ -3,6 +3,11 @@ FROM python:3.10-alpine3.18
|
||||
#Install all dependencies.
|
||||
RUN apk add --no-cache postgresql-libs postgresql-client gettext zlib libjpeg libwebp libxml2-dev libxslt-dev openldap git yarn
|
||||
|
||||
# Fix libxml error from xmlsec https://github.com/xmlsec/python-xmlsec/issues/257#issuecomment-1738620862
|
||||
RUN echo "https://dl-cdn.alpinelinux.org/alpine/v3.15/community/" | tee -a /etc/apk/repositories
|
||||
RUN echo "https://dl-cdn.alpinelinux.org/alpine/v3.15/main" | tee -a /etc/apk/repositories
|
||||
RUN apk add --no-cache libxml2-dev=2.9.14-r2 xmlsec-dev=1.2.33-r0
|
||||
|
||||
#Print all logs without buffering it.
|
||||
ENV PYTHONUNBUFFERED 1
|
||||
|
||||
|
||||
@@ -20,6 +20,10 @@
|
||||
"ms-python.python"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
"containerEnv": {
|
||||
"CSRF_TRUSTED_ORIGINS": "http://localhost:8000,http://localhost:8080"
|
||||
}
|
||||
|
||||
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
|
||||
|
||||
@@ -29,3 +29,4 @@ vue/babel.config*
|
||||
vue/package.json
|
||||
vue/tsconfig.json
|
||||
vue/src/utils/openapi
|
||||
venv
|
||||
@@ -6,6 +6,12 @@
|
||||
# random secret key, use for example `base64 /dev/urandom | head -c50` to generate one
|
||||
SECRET_KEY=
|
||||
|
||||
# your default timezone See https://timezonedb.com/time-zones for a list of timezones
|
||||
TZ=Europe/Berlin
|
||||
|
||||
# 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
22
.flake8
Normal 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
|
||||
|
||||
2
.github/dependabot.yml
vendored
2
.github/dependabot.yml
vendored
@@ -16,7 +16,7 @@ updates:
|
||||
interval: "monthly"
|
||||
|
||||
- package-ecosystem: "npm"
|
||||
directory: "/vue/"
|
||||
directory: "/vue3/"
|
||||
schedule:
|
||||
interval: "monthly"
|
||||
|
||||
|
||||
110
.github/workflows/build-docker-open-data.yml
vendored
110
.github/workflows/build-docker-open-data.yml
vendored
@@ -1,110 +0,0 @@
|
||||
name: Build Docker Container with open data plugin installed
|
||||
|
||||
on: push
|
||||
|
||||
jobs:
|
||||
build-container:
|
||||
name: Build ${{ matrix.name }} Container
|
||||
runs-on: ubuntu-latest
|
||||
if: github.repository_owner == 'TandoorRecipes'
|
||||
continue-on-error: ${{ matrix.continue-on-error }}
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
# Standard build config
|
||||
- name: Standard
|
||||
dockerfile: Dockerfile
|
||||
platforms: linux/amd64,linux/arm64
|
||||
suffix: ""
|
||||
continue-on-error: false
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Get version number
|
||||
id: get_version
|
||||
run: |
|
||||
if [[ "$GITHUB_REF" = refs/tags/* ]]; then
|
||||
echo "VERSION=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_OUTPUT
|
||||
elif [[ "$GITHUB_REF" = refs/heads/beta ]]; then
|
||||
echo VERSION=beta >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo VERSION=develop >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
# clone open data plugin
|
||||
- name: clone open data plugin repo
|
||||
uses: actions/checkout@master
|
||||
with:
|
||||
repository: TandoorRecipes/open_data_plugin
|
||||
ref: master
|
||||
path: ./recipes/plugins/open_data_plugin
|
||||
|
||||
# Build Vue frontend
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '18'
|
||||
cache: yarn
|
||||
cache-dependency-path: vue/yarn.lock
|
||||
- name: Install dependencies
|
||||
working-directory: ./vue
|
||||
run: yarn install --frozen-lockfile
|
||||
- name: Build dependencies
|
||||
working-directory: ./vue
|
||||
run: yarn build
|
||||
|
||||
- name: Setup Open Data Plugin Links
|
||||
working-directory: ./recipes/plugins/open_data_plugin
|
||||
run: python setup_repo.py
|
||||
|
||||
- name: Build Open Data Frontend
|
||||
working-directory: ./recipes/plugins/open_data_plugin/vue
|
||||
run: yarn build
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
- name: Set up Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@v3
|
||||
if: github.secret_source == 'Actions'
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
- name: Login to GitHub Container Registry
|
||||
uses: docker/login-action@v3
|
||||
if: github.secret_source == 'Actions'
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ github.token }}
|
||||
- name: Docker meta
|
||||
id: meta
|
||||
uses: docker/metadata-action@v5
|
||||
with:
|
||||
images: |
|
||||
vabene1111/recipes
|
||||
ghcr.io/TandoorRecipes/recipes
|
||||
flavor: |
|
||||
latest=false
|
||||
suffix=${{ matrix.suffix }}
|
||||
tags: |
|
||||
type=raw,value=latest,suffix=-open-data-plugin,enable=${{ startsWith(github.ref, 'refs/tags/') }}
|
||||
type=semver,suffix=-open-data-plugin,pattern={{version}}
|
||||
type=semver,suffix=-open-data-plugin,pattern={{major}}.{{minor}}
|
||||
type=semver,suffix=-open-data-plugin,pattern={{major}}
|
||||
type=ref,suffix=-open-data-plugin,event=branch
|
||||
- name: Build and Push
|
||||
uses: docker/build-push-action@v5
|
||||
with:
|
||||
context: .
|
||||
file: ${{ matrix.dockerfile }}
|
||||
pull: true
|
||||
push: ${{ github.secret_source == 'Actions' }}
|
||||
platforms: ${{ matrix.platforms }}
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=max
|
||||
18
.github/workflows/build-docker.yml
vendored
18
.github/workflows/build-docker.yml
vendored
@@ -17,7 +17,7 @@ jobs:
|
||||
# Standard build config
|
||||
- name: Standard
|
||||
dockerfile: Dockerfile
|
||||
platforms: linux/amd64,linux/arm64,linux/arm/v7
|
||||
platforms: linux/amd64,linux/arm64
|
||||
suffix: ""
|
||||
continue-on-error: false
|
||||
steps:
|
||||
@@ -34,17 +34,17 @@ jobs:
|
||||
echo VERSION=develop >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
# Build Vue frontend
|
||||
# Build Vue 3 frontend
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '18'
|
||||
node-version: '22'
|
||||
cache: yarn
|
||||
cache-dependency-path: vue/yarn.lock
|
||||
cache-dependency-path: vue3/yarn.lock
|
||||
- name: Install dependencies
|
||||
working-directory: ./vue
|
||||
working-directory: ./vue3
|
||||
run: yarn install --frozen-lockfile
|
||||
- name: Build dependencies
|
||||
working-directory: ./vue
|
||||
working-directory: ./vue3
|
||||
run: yarn build
|
||||
|
||||
- name: Set up QEMU
|
||||
@@ -107,7 +107,7 @@ jobs:
|
||||
- name: Discord notification
|
||||
env:
|
||||
DISCORD_WEBHOOK: ${{ secrets.DISCORD_RELEASE_WEBHOOK }}
|
||||
uses: Ilshidur/action-discord@0.3.2
|
||||
uses: Ilshidur/action-discord@0.4.0
|
||||
with:
|
||||
args: '🚀 Version {{ VERSION }} of tandoor has been released 🥳 Check it out https://github.com/vabene1111/recipes/releases/tag/{{ VERSION }}'
|
||||
|
||||
@@ -121,6 +121,6 @@ jobs:
|
||||
- name: Discord notification
|
||||
env:
|
||||
DISCORD_WEBHOOK: ${{ secrets.DISCORD_BETA_WEBHOOK }}
|
||||
uses: Ilshidur/action-discord@0.3.2
|
||||
uses: Ilshidur/action-discord@0.4.0
|
||||
with:
|
||||
args: '🚀 The BETA Image has been updated! 🥳'
|
||||
args: '🚀 The Tandoor 2 Image has been updated! 🥳'
|
||||
|
||||
20
.github/workflows/ci.yml
vendored
20
.github/workflows/ci.yml
vendored
@@ -9,14 +9,13 @@ jobs:
|
||||
strategy:
|
||||
max-parallel: 4
|
||||
matrix:
|
||||
python-version: ["3.10"]
|
||||
node-version: ["18"]
|
||||
|
||||
python-version: ["3.12"]
|
||||
node-version: ["22"]
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: awalsh128/cache-apt-pkgs-action@v1.4.2
|
||||
- uses: awalsh128/cache-apt-pkgs-action@v1.5.1
|
||||
with:
|
||||
packages: libsasl2-dev python3-dev libldap2-dev libssl-dev
|
||||
packages: libsasl2-dev python3-dev libxml2-dev libxmlsec1-dev libxslt-dev libxmlsec1-openssl libxslt-dev libldap2-dev libssl-dev gcc musl-dev postgresql-dev zlib-dev jpeg-dev libwebp-dev openssl-dev libffi-dev cargo openldap-dev python3-dev xmlsec-dev xmlsec build-base g++ curl
|
||||
version: 1.0
|
||||
|
||||
# Setup python & dependencies
|
||||
@@ -37,10 +36,9 @@ jobs:
|
||||
with:
|
||||
path: |
|
||||
./cookbook/static
|
||||
./vue/webpack-stats.json
|
||||
./staticfiles
|
||||
key: |
|
||||
${{ runner.os }}-${{ matrix.python-version }}-${{ matrix.node-version }}-collectstatic-${{ hashFiles('**/*.css', '**/*.js', 'vue/src/*') }}
|
||||
${{ runner.os }}-${{ matrix.python-version }}-${{ matrix.node-version }}-collectstatic-${{ hashFiles('**/*.css', '**/*.js', 'vue3/src/*') }}
|
||||
|
||||
# Build Vue frontend & Dependencies
|
||||
- name: Set up Node ${{ matrix.node-version }}
|
||||
@@ -49,30 +47,28 @@ jobs:
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: "yarn"
|
||||
cache-dependency-path: ./vue/yarn.lock
|
||||
cache-dependency-path: ./vue3/yarn.lock
|
||||
|
||||
- name: Install Vue dependencies
|
||||
if: steps.django_cache.outputs.cache-hit != 'true'
|
||||
working-directory: ./vue
|
||||
working-directory: ./vue3
|
||||
run: yarn install
|
||||
|
||||
- name: Build Vue dependencies
|
||||
if: steps.django_cache.outputs.cache-hit != 'true'
|
||||
working-directory: ./vue
|
||||
working-directory: ./vue3
|
||||
run: yarn build
|
||||
|
||||
- name: Compile Django StaticFiles
|
||||
if: steps.django_cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
python3 manage.py collectstatic --noinput
|
||||
python3 manage.py collectstatic_js_reverse
|
||||
|
||||
- uses: actions/cache/save@v4
|
||||
if: steps.django_cache.outputs.cache-hit != 'true'
|
||||
with:
|
||||
path: |
|
||||
./cookbook/static
|
||||
./vue/webpack-stats.json
|
||||
./staticfiles
|
||||
key: |
|
||||
${{ runner.os }}-${{ matrix.python-version }}-${{ matrix.node-version }}-collectstatic-${{ hashFiles('**/*.css', '**/*.js', 'vue/src/*') }}
|
||||
|
||||
29
.gitignore
vendored
29
.gitignore
vendored
@@ -47,6 +47,11 @@ docs/reports/**
|
||||
|
||||
# Django stuff:
|
||||
*.log
|
||||
mediafiles/
|
||||
*.sqlite3*
|
||||
staticfiles/
|
||||
postgresql/
|
||||
data/
|
||||
|
||||
# Sphinx documentation
|
||||
docs/_build/
|
||||
@@ -59,32 +64,30 @@ 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
|
||||
/recipes/plugins
|
||||
vetur.config.js
|
||||
cookbook/static/vue
|
||||
vue/webpack-stats.json
|
||||
cookbook/templates/sw.js
|
||||
.prettierignore
|
||||
vue/.yarn
|
||||
vue3/.vite
|
||||
|
||||
# Configs
|
||||
vetur.config.js
|
||||
venv/
|
||||
.idea/easy-i18n.xml
|
||||
cookbook/static/vue3
|
||||
vue3/node_modules
|
||||
cookbook/tests/other/docs/reports/tests/tests.html
|
||||
cookbook/tests/other/docs/reports/tests/pytest.xml
|
||||
|
||||
6
.idea/prettier.xml
generated
Normal file
6
.idea/prettier.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="PrettierConfiguration">
|
||||
<option name="myConfigurationMode" value="AUTOMATIC" />
|
||||
</component>
|
||||
</project>
|
||||
2
.idea/recipes.iml
generated
2
.idea/recipes.iml
generated
@@ -18,7 +18,7 @@
|
||||
<excludeFolder url="file://$MODULE_DIR$/staticfiles" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/venv" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="jdk" jdkName="Python 3.12 (recipes)" jdkType="Python SDK" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
<component name="TemplatesService">
|
||||
|
||||
2
.idea/vcs.xml
generated
2
.idea/vcs.xml
generated
@@ -2,5 +2,7 @@
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="" vcs="Git" />
|
||||
<mapping directory="$PROJECT_DIR$/recipes/plugins/enterprise_plugin" vcs="Git" />
|
||||
<mapping directory="$PROJECT_DIR$/recipes/plugins/open_data_plugin" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
91
.idea/watcherTasks.xml
generated
Normal file
91
.idea/watcherTasks.xml
generated
Normal file
@@ -0,0 +1,91 @@
|
||||
<?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="NEVER" />
|
||||
<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>
|
||||
<TaskOptions isEnabled="false">
|
||||
<option name="arguments" value="-m isort $FilePath$" />
|
||||
<option name="checkSyntaxErrors" value="true" />
|
||||
<option name="description" />
|
||||
<option name="exitCodeBehavior" value="ERROR" />
|
||||
<option name="fileExtension" value="py" />
|
||||
<option name="immediateSync" value="false" />
|
||||
<option name="name" value="isort Watcher" />
|
||||
<option name="output" value="$FilePath$" />
|
||||
<option name="outputFilters">
|
||||
<array />
|
||||
</option>
|
||||
<option name="outputFromStdout" value="false" />
|
||||
<option name="program" value="$PyInterpreterDirectory$/python" />
|
||||
<option name="runOnExternalChanges" value="false" />
|
||||
<option name="scopeName" value="Project Files" />
|
||||
<option name="trackOnlyRoot" value="false" />
|
||||
<option name="workingDir" value="" />
|
||||
<envs />
|
||||
</TaskOptions>
|
||||
<TaskOptions isEnabled="false">
|
||||
<option name="arguments" value="-m yapf -i $FilePath$" />
|
||||
<option name="checkSyntaxErrors" value="true" />
|
||||
<option name="description" />
|
||||
<option name="exitCodeBehavior" value="NEVER" />
|
||||
<option name="fileExtension" value="py" />
|
||||
<option name="immediateSync" value="false" />
|
||||
<option name="name" value="YAPF" />
|
||||
<option name="output" value="$FilePath$" />
|
||||
<option name="outputFilters">
|
||||
<array />
|
||||
</option>
|
||||
<option name="outputFromStdout" value="false" />
|
||||
<option name="program" value="$PyInterpreterDirectory$/python" />
|
||||
<option name="runOnExternalChanges" value="false" />
|
||||
<option name="scopeName" value="Project Files" />
|
||||
<option name="trackOnlyRoot" value="false" />
|
||||
<option name="workingDir" value="" />
|
||||
<envs />
|
||||
</TaskOptions>
|
||||
<TaskOptions isEnabled="false">
|
||||
<option name="arguments" value="--cwd $ProjectFileDir$\vue prettier -w --config $ProjectFileDir$\.prettierrc $FilePath$" />
|
||||
<option name="checkSyntaxErrors" value="true" />
|
||||
<option name="description" />
|
||||
<option name="exitCodeBehavior" value="ERROR" />
|
||||
<option name="fileExtension" value="*" />
|
||||
<option name="immediateSync" value="true" />
|
||||
<option name="name" value="Prettier" />
|
||||
<option name="output" value="" />
|
||||
<option name="outputFilters">
|
||||
<array />
|
||||
</option>
|
||||
<option name="outputFromStdout" value="false" />
|
||||
<option name="program" value="yarn" />
|
||||
<option name="runOnExternalChanges" value="true" />
|
||||
<option name="scopeName" value="Prettier" />
|
||||
<option name="trackOnlyRoot" value="false" />
|
||||
<option name="workingDir" value="" />
|
||||
<envs />
|
||||
</TaskOptions>
|
||||
</component>
|
||||
</project>
|
||||
13
.prettierignore
Normal file
13
.prettierignore
Normal 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
7
.prettierrc
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"printWidth": 179,
|
||||
"trailingComma": "es5",
|
||||
"tabWidth": 2,
|
||||
"semi": false,
|
||||
"experimentalTernaries": true
|
||||
}
|
||||
2
.vscode/launch.json
vendored
2
.vscode/launch.json
vendored
@@ -24,7 +24,7 @@
|
||||
"console": "integratedTerminal",
|
||||
"env": {
|
||||
// coverage and pytest can't both be running at the same time
|
||||
"PYTEST_ADDOPTS": "--no-cov"
|
||||
"PYTEST_ADDOPTS": "--no-cov -n 0"
|
||||
},
|
||||
"django": true,
|
||||
"justMyCode": true
|
||||
|
||||
11
.vscode/settings.json
vendored
11
.vscode/settings.json
vendored
@@ -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": []
|
||||
}
|
||||
|
||||
202
.vscode/tasks.json
vendored
202
.vscode/tasks.json
vendored
@@ -1,75 +1,131 @@
|
||||
{
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"label": "Run Migrations",
|
||||
"type": "shell",
|
||||
"command": "python3 manage.py migrate",
|
||||
},
|
||||
{
|
||||
"label": "Collect Static Files",
|
||||
"type": "shell",
|
||||
"command": "python3 manage.py collectstatic",
|
||||
"dependsOn": ["Yarn Build"],
|
||||
},
|
||||
{
|
||||
"label": "Setup Dev Server",
|
||||
"dependsOn": ["Run Migrations", "Yarn Build"],
|
||||
},
|
||||
{
|
||||
"label": "Run Dev Server",
|
||||
"type": "shell",
|
||||
"dependsOn": ["Setup Dev Server"],
|
||||
"command": "python3 manage.py runserver",
|
||||
},
|
||||
{
|
||||
"label": "Yarn Install",
|
||||
"type": "shell",
|
||||
"command": "yarn install",
|
||||
"options": {
|
||||
"cwd": "${workspaceFolder}/vue"
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "Yarn Serve",
|
||||
"type": "shell",
|
||||
"command": "yarn serve",
|
||||
"dependsOn": ["Yarn Install"],
|
||||
"options": {
|
||||
"cwd": "${workspaceFolder}/vue"
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "Yarn Build",
|
||||
"type": "shell",
|
||||
"command": "yarn build",
|
||||
"dependsOn": ["Yarn Install"],
|
||||
"options": {
|
||||
"cwd": "${workspaceFolder}/vue"
|
||||
},
|
||||
"group": "build",
|
||||
},
|
||||
{
|
||||
"label": "Setup Tests",
|
||||
"dependsOn": ["Run Migrations", "Collect Static Files"],
|
||||
},
|
||||
{
|
||||
"label": "Run all pytests",
|
||||
"type": "shell",
|
||||
"command": "python3 -m pytest cookbook/tests",
|
||||
"dependsOn": ["Setup Tests"],
|
||||
"group": "test",
|
||||
},
|
||||
{
|
||||
"label": "Setup Documentation Dependencies",
|
||||
"type": "shell",
|
||||
"command": "pip install mkdocs-material mkdocs-include-markdown-plugin",
|
||||
},
|
||||
{
|
||||
"label": "Serve Documentation",
|
||||
"type": "shell",
|
||||
"command": "mkdocs serve",
|
||||
"dependsOn": ["Setup Documentation Dependencies"],
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"label": "Run Migrations",
|
||||
"type": "shell",
|
||||
"command": "python3 manage.py migrate"
|
||||
},
|
||||
{
|
||||
"label": "Collect Static Files",
|
||||
"type": "shell",
|
||||
"command": "python3 manage.py collectstatic",
|
||||
"dependsOn": ["Yarn Build"]
|
||||
},
|
||||
{
|
||||
"label": "Setup Dev Server",
|
||||
"dependsOn": ["Run Migrations", "Yarn Build"]
|
||||
},
|
||||
{
|
||||
"label": "Run Dev Server",
|
||||
"type": "shell",
|
||||
"dependsOn": ["Setup Dev Server"],
|
||||
"command": "python3 manage.py runserver"
|
||||
},
|
||||
{
|
||||
"label": "Yarn Install",
|
||||
"dependsOn": ["Yarn Install - Vue", "Yarn Install - Vue3"]
|
||||
},
|
||||
{
|
||||
"label": "Yarn Install - Vue",
|
||||
"type": "shell",
|
||||
"command": "yarn install --force",
|
||||
"options": {
|
||||
"cwd": "${workspaceFolder}/vue"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "Yarn Install - Vue3",
|
||||
"type": "shell",
|
||||
"command": "yarn install --force",
|
||||
"options": {
|
||||
"cwd": "${workspaceFolder}/vue3"
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "Generate API",
|
||||
"dependsOn": ["Generate API - Vue", "Generate API - Vue3"]
|
||||
},
|
||||
{
|
||||
"label": "Generate API - Vue",
|
||||
"type": "shell",
|
||||
"command": "openapi-generator-cli generate -g typescript-axios -i http://127.0.0.1:8000/openapi/",
|
||||
"options": {
|
||||
"cwd": "${workspaceFolder}/vue/src/utils/openapi"
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "Generate API - Vue3",
|
||||
"type": "shell",
|
||||
"command": "openapi-generator-cli generate -g typescript-fetch -i http://127.0.0.1:8000/openapi/",
|
||||
"options": {
|
||||
"cwd": "${workspaceFolder}/vue3/src/openapi"
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "Yarn Serve",
|
||||
"type": "shell",
|
||||
"command": "yarn serve",
|
||||
"dependsOn": ["Yarn Install - Vue"],
|
||||
"options": {
|
||||
"cwd": "${workspaceFolder}/vue"
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "Vite Serve",
|
||||
"type": "shell",
|
||||
"command": "vite",
|
||||
"dependsOn": ["Yarn Install - Vue3"],
|
||||
"options": {
|
||||
"cwd": "${workspaceFolder}/vue3"
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "Yarn Build",
|
||||
"dependsOn": ["Yarn Build - Vue", "Vite Build - Vue3"],
|
||||
"group": "build"
|
||||
},
|
||||
{
|
||||
"label": "Yarn Build - Vue",
|
||||
"type": "shell",
|
||||
"command": "yarn build",
|
||||
"dependsOn": ["Yarn Install - Vue"],
|
||||
"options": {
|
||||
"cwd": "${workspaceFolder}/vue"
|
||||
},
|
||||
"group": "build"
|
||||
},
|
||||
{
|
||||
"label": "Vite Build - Vue3",
|
||||
"type": "shell",
|
||||
"command": "vite build",
|
||||
"dependsOn": ["Yarn Install - Vue3"],
|
||||
"options": {
|
||||
"cwd": "${workspaceFolder}/vue3"
|
||||
},
|
||||
"group": "build"
|
||||
},
|
||||
{
|
||||
"label": "Setup Tests",
|
||||
"dependsOn": ["Run Migrations", "Collect Static Files"]
|
||||
},
|
||||
{
|
||||
"label": "Run all pytests",
|
||||
"type": "shell",
|
||||
"command": "python3 -m pytest cookbook/tests",
|
||||
"dependsOn": ["Setup Tests"],
|
||||
"group": "test"
|
||||
},
|
||||
{
|
||||
"label": "Setup Documentation Dependencies",
|
||||
"type": "shell",
|
||||
"command": "pip install mkdocs-material mkdocs-include-markdown-plugin"
|
||||
},
|
||||
{
|
||||
"label": "Serve Documentation",
|
||||
"type": "shell",
|
||||
"command": "mkdocs serve",
|
||||
"dependsOn": ["Setup Documentation Dependencies"]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
43
Dockerfile
43
Dockerfile
@@ -1,15 +1,14 @@
|
||||
FROM python:3.12-alpine3.19
|
||||
FROM python:3.13-alpine3.22
|
||||
|
||||
#Install all dependencies.
|
||||
RUN apk add --no-cache postgresql-libs postgresql-client gettext zlib libjpeg libwebp libxml2-dev libxslt-dev openldap git
|
||||
RUN apk add --no-cache postgresql-libs postgresql-client gettext zlib libjpeg libwebp libxml2-dev libxslt-dev openldap git libgcc libstdc++ nginx tini envsubst
|
||||
|
||||
#Print all logs without buffering it.
|
||||
ENV PYTHONUNBUFFERED 1
|
||||
|
||||
ENV DOCKER true
|
||||
ENV PYTHONUNBUFFERED=1 \
|
||||
DOCKER=true
|
||||
|
||||
#This port will be used by gunicorn.
|
||||
EXPOSE 8080
|
||||
EXPOSE 80 8080
|
||||
|
||||
#Create app dir and install requirements.
|
||||
RUN mkdir /opt/recipes
|
||||
@@ -17,29 +16,33 @@ WORKDIR /opt/recipes
|
||||
|
||||
COPY requirements.txt ./
|
||||
|
||||
RUN \
|
||||
if [ `apk --print-arch` = "armv7" ]; then \
|
||||
printf "[global]\nextra-index-url=https://www.piwheels.org/simple\n" > /etc/pip.conf ; \
|
||||
fi
|
||||
# remove Development dependencies from requirements.txt
|
||||
RUN sed -i '/# Development/,$d' requirements.txt
|
||||
RUN apk add --no-cache --virtual .build-deps gcc musl-dev postgresql-dev zlib-dev jpeg-dev libwebp-dev openssl-dev libffi-dev cargo openldap-dev python3-dev && \
|
||||
echo -n "INPUT ( libldap.so )" > /usr/lib/libldap_r.so && \
|
||||
RUN apk add --no-cache --virtual .build-deps gcc musl-dev postgresql-dev zlib-dev jpeg-dev libwebp-dev openssl-dev libffi-dev cargo openldap-dev python3-dev xmlsec-dev xmlsec build-base g++ curl rust && \
|
||||
python -m venv venv && \
|
||||
/opt/recipes/venv/bin/python -m pip install --upgrade pip && \
|
||||
venv/bin/pip install wheel==0.42.0 && \
|
||||
venv/bin/pip install setuptools_rust==1.9.0 && \
|
||||
venv/bin/pip debug -v && \
|
||||
venv/bin/pip install wheel==0.45.1 && \
|
||||
venv/bin/pip install setuptools_rust==1.10.2 && \
|
||||
venv/bin/pip install -r requirements.txt --no-cache-dir &&\
|
||||
apk --purge del .build-deps
|
||||
|
||||
#Copy project and execute it.
|
||||
COPY . ./
|
||||
|
||||
# collect the static files
|
||||
RUN /opt/recipes/venv/bin/python manage.py collectstatic_js_reverse
|
||||
RUN /opt/recipes/venv/bin/python manage.py collectstatic --noinput
|
||||
# copy the collected static files to a different location, so they can be moved into a potentially mounted volume
|
||||
RUN mv /opt/recipes/staticfiles /opt/recipes/staticfiles-collect
|
||||
# delete default nginx config and link it to tandoors config
|
||||
# create symlinks to access and error log to show them on stdout
|
||||
RUN rm -rf /etc/nginx/http.d && \
|
||||
ln -s /opt/recipes/http.d /etc/nginx/http.d && \
|
||||
ln -sf /dev/stdout /var/log/nginx/access.log && \
|
||||
ln -sf /dev/stderr /var/log/nginx/error.log
|
||||
|
||||
# commented for now https://github.com/TandoorRecipes/recipes/issues/3478
|
||||
#HEALTHCHECK --interval=30s \
|
||||
# --timeout=5s \
|
||||
# --start-period=10s \
|
||||
# --retries=3 \
|
||||
# CMD [ "/usr/bin/wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:8080/openapi" ]
|
||||
|
||||
# collect information from git repositories
|
||||
RUN /opt/recipes/venv/bin/python version.py
|
||||
@@ -47,4 +50,4 @@ RUN /opt/recipes/venv/bin/python version.py
|
||||
RUN find . -type d -name ".git" | xargs rm -rf
|
||||
|
||||
RUN chmod +x boot.sh
|
||||
ENTRYPOINT ["/opt/recipes/boot.sh"]
|
||||
ENTRYPOINT ["/sbin/tini", "--", "/opt/recipes/boot.sh"]
|
||||
|
||||
11
README.md
11
README.md
@@ -23,6 +23,7 @@
|
||||
<a href="https://docs.tandoor.dev/install/docker/" target="_blank" rel="noopener noreferrer">Installation</a> •
|
||||
<a href="https://docs.tandoor.dev/" target="_blank" rel="noopener noreferrer">Docs</a> •
|
||||
<a href="https://app.tandoor.dev/accounts/login/?demo" target="_blank" rel="noopener noreferrer">Demo</a> •
|
||||
<a href="https://community.tandoor.dev" target="_blank" rel="noopener noreferrer">Community</a> •
|
||||
<a href="https://discord.gg/RhzBrfWgtp" target="_blank" rel="noopener noreferrer">Discord</a>
|
||||
</p>
|
||||
|
||||
@@ -71,7 +72,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
|
||||
|
||||
@@ -81,13 +82,13 @@ Share some information on how you use Tandoor to help me improve the application
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td><a href="https://discord.gg/RhzBrfWgtp">Discord</a></td>
|
||||
<td>We have a public Discord server that anyone can join. This is where all our developers and contributors hang out and where we make announcements</td>
|
||||
<td><a href="https://community.tandoor.dev">Community</a></td>
|
||||
<td>Get support, share best practices, discuss feature ideas, and meet other Tandoor users.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><a href="https://twitter.com/TandoorRecipes">Twitter</a></td>
|
||||
<td>You can follow our Twitter account to get updates on new features or releases</td>
|
||||
<td><a href="https://discord.gg/RhzBrfWgtp">Discord</a></td>
|
||||
<td>We have a public Discord server that anyone can join. This is where all our developers and contributors hang out and where we make announcements</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
60
boot.sh
Normal file → Executable file
60
boot.sh
Normal file → Executable file
@@ -1,11 +1,19 @@
|
||||
#!/bin/sh
|
||||
source venv/bin/activate
|
||||
|
||||
TANDOOR_PORT="${TANDOOR_PORT:-8080}"
|
||||
# these are envsubst in the nginx config, make sure they default to something sensible when unset
|
||||
export TANDOOR_PORT="${TANDOOR_PORT:-8080}"
|
||||
export MEDIA_ROOT=${MEDIA_ROOT:-/opt/recipes/mediafiles};
|
||||
export STATIC_ROOT=${STATIC_ROOT:-/opt/recipes/staticfiles};
|
||||
|
||||
GUNICORN_WORKERS="${GUNICORN_WORKERS:-3}"
|
||||
GUNICORN_THREADS="${GUNICORN_THREADS:-2}"
|
||||
GUNICORN_LOG_LEVEL="${GUNICORN_LOG_LEVEL:-'info'}"
|
||||
NGINX_CONF_FILE=/opt/recipes/nginx/conf.d/Recipes.conf
|
||||
|
||||
if [ "${TANDOOR_PORT}" -eq 80 ]; then
|
||||
echo "TANDOOR_PORT set to 8080 because 80 is now taken by the integrated nginx"
|
||||
TANDOOR_PORT=8080
|
||||
fi
|
||||
|
||||
display_warning() {
|
||||
echo "[WARNING]"
|
||||
@@ -14,11 +22,6 @@ display_warning() {
|
||||
|
||||
echo "Checking configuration..."
|
||||
|
||||
# Nginx config file must exist if gunicorn is not active
|
||||
if [ ! -f "$NGINX_CONF_FILE" ] && [ $GUNICORN_MEDIA -eq 0 ]; then
|
||||
display_warning "Nginx configuration file could not be found at the default location!\nPath: ${NGINX_CONF_FILE}"
|
||||
fi
|
||||
|
||||
# SECRET_KEY (or a valid file at SECRET_KEY_FILE) must be set in .env file
|
||||
|
||||
if [ -f "${SECRET_KEY_FILE}" ]; then
|
||||
@@ -29,6 +32,21 @@ if [ -z "${SECRET_KEY}" ]; then
|
||||
display_warning "The environment variable 'SECRET_KEY' (or 'SECRET_KEY_FILE' that points to an existing file) is not set but REQUIRED for running Tandoor!"
|
||||
fi
|
||||
|
||||
if [ -f "${AUTH_LDAP_BIND_PASSWORD_FILE}" ]; then
|
||||
export AUTH_LDAP_BIND_PASSWORD=$(cat "$AUTH_LDAP_BIND_PASSWORD_FILE")
|
||||
fi
|
||||
|
||||
if [ -f "${EMAIL_HOST_PASSWORD_FILE}" ]; then
|
||||
export EMAIL_HOST_PASSWORD=$(cat "$EMAIL_HOST_PASSWORD_FILE")
|
||||
fi
|
||||
|
||||
if [ -f "${SOCIALACCOUNT_PROVIDERS_FILE}" ]; then
|
||||
export SOCIALACCOUNT_PROVIDERS=$(cat "$SOCIALACCOUNT_PROVIDERS_FILE")
|
||||
fi
|
||||
|
||||
if [ -f "${S3_SECRET_ACCESS_KEY_FILE}" ]; then
|
||||
export S3_SECRET_ACCESS_KEY=$(cat "$S3_SECRET_ACCESS_KEY_FILE")
|
||||
fi
|
||||
|
||||
echo "Waiting for database to be ready..."
|
||||
|
||||
@@ -67,29 +85,27 @@ echo "Migrating database"
|
||||
|
||||
python manage.py migrate
|
||||
|
||||
if [[ "${DOCKER}" == "true" ]]; then
|
||||
echo "Copying cached static files from docker build"
|
||||
echo "Collecting static files, this may take a while..."
|
||||
|
||||
mkdir -p /opt/recipes/staticfiles
|
||||
rm -rf /opt/recipes/staticfiles/*
|
||||
mv /opt/recipes/staticfiles-collect/* /opt/recipes/staticfiles
|
||||
rm -rf /opt/recipes/staticfiles-collect
|
||||
else
|
||||
echo "Collecting static files, this may take a while..."
|
||||
python manage.py collectstatic --noinput
|
||||
|
||||
python manage.py collectstatic_js_reverse
|
||||
python manage.py collectstatic --noinput
|
||||
echo "Done"
|
||||
|
||||
echo "Done"
|
||||
fi
|
||||
|
||||
chmod -R 755 /opt/recipes/mediafiles
|
||||
chmod -R 755 ${MEDIA_ROOT:-/opt/recipes/mediafiles}
|
||||
|
||||
ipv6_disable=$(cat /sys/module/ipv6/parameters/disable)
|
||||
|
||||
# prepare nginx config
|
||||
envsubst '$MEDIA_ROOT $STATIC_ROOT $TANDOOR_PORT' < /opt/recipes/http.d/Recipes.conf.template > /opt/recipes/http.d/Recipes.conf
|
||||
|
||||
# start nginx
|
||||
echo "Starting nginx"
|
||||
nginx
|
||||
|
||||
echo "Starting gunicorn"
|
||||
# Check if IPv6 is enabled, only then run gunicorn with ipv6 support
|
||||
if [ "$ipv6_disable" -eq 0 ]; then
|
||||
exec gunicorn -b "[::]:$TANDOOR_PORT" --workers $GUNICORN_WORKERS --threads $GUNICORN_THREADS --access-logfile - --error-logfile - --log-level $GUNICORN_LOG_LEVEL recipes.wsgi
|
||||
else
|
||||
exec gunicorn -b ":$TANDOOR_PORT" --workers $GUNICORN_WORKERS --threads $GUNICORN_THREADS --access-logfile - --error-logfile - --log-level $GUNICORN_LOG_LEVEL recipes.wsgi
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -7,10 +7,11 @@ from django.utils import translation
|
||||
from django_scopes import scopes_disabled
|
||||
from treebeard.admin import TreeAdmin
|
||||
from treebeard.forms import movenodeform_factory
|
||||
from allauth.account.decorators import secure_admin_login
|
||||
|
||||
from cookbook.managers import DICTIONARY
|
||||
|
||||
from .models import (BookmarkletImport, Comment, CookLog, Food, ImportLog, Ingredient, InviteLink,
|
||||
from .models import (BookmarkletImport, Comment, CookLog, CustomFilter, Food, ImportLog, Ingredient, InviteLink,
|
||||
Keyword, MealPlan, MealType, NutritionInformation, Property, PropertyType,
|
||||
Recipe, RecipeBook, RecipeBookEntry, RecipeImport, SearchPreference, ShareLink,
|
||||
ShoppingListEntry, ShoppingListRecipe, Space, Step, Storage,
|
||||
@@ -18,6 +19,8 @@ from .models import (BookmarkletImport, Comment, CookLog, Food, ImportLog, Ingre
|
||||
TelegramBot, Unit, UnitConversion, UserFile, UserPreference, UserSpace,
|
||||
ViewLog, ConnectorConfig)
|
||||
|
||||
admin.site.login = secure_admin_login(admin.site.login)
|
||||
|
||||
|
||||
class CustomUserAdmin(UserAdmin):
|
||||
def has_add_permission(self, request, obj=None):
|
||||
@@ -103,6 +106,13 @@ class ConnectorConfigAdmin(admin.ModelAdmin):
|
||||
admin.site.register(ConnectorConfig, ConnectorConfigAdmin)
|
||||
|
||||
|
||||
class CustomFilterAdmin(admin.ModelAdmin):
|
||||
list_display = ('id', 'type', 'name')
|
||||
|
||||
|
||||
admin.site.register(CustomFilter, CustomFilterAdmin)
|
||||
|
||||
|
||||
class SyncAdmin(admin.ModelAdmin):
|
||||
list_display = ('storage', 'path', 'active', 'last_checked')
|
||||
search_fields = ('storage__name', 'path')
|
||||
@@ -185,7 +195,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 +386,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)
|
||||
|
||||
@@ -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
|
||||
@@ -1,6 +1,43 @@
|
||||
from abc import ABC, abstractmethod
|
||||
from dataclasses import dataclass
|
||||
from typing import Optional
|
||||
|
||||
from cookbook.models import ShoppingListEntry, Space, ConnectorConfig
|
||||
from cookbook.models import ShoppingListEntry, User, ConnectorConfig
|
||||
|
||||
|
||||
@dataclass
|
||||
class UserDTO:
|
||||
username: str
|
||||
first_name: Optional[str]
|
||||
|
||||
@staticmethod
|
||||
def create_from_user(instance: User) -> 'UserDTO':
|
||||
return UserDTO(
|
||||
username=instance.username,
|
||||
first_name=instance.first_name if instance.first_name else None
|
||||
)
|
||||
|
||||
|
||||
@dataclass
|
||||
class ShoppingListEntryDTO:
|
||||
food_name: str
|
||||
amount: Optional[float]
|
||||
base_unit: Optional[str]
|
||||
unit_name: Optional[str]
|
||||
created_by: UserDTO
|
||||
|
||||
@staticmethod
|
||||
def try_create_from_entry(instance: ShoppingListEntry) -> Optional['ShoppingListEntryDTO']:
|
||||
if instance.food is None or instance.created_by is None:
|
||||
return None
|
||||
|
||||
return ShoppingListEntryDTO(
|
||||
food_name=instance.food.name,
|
||||
amount=instance.amount if instance.amount else None,
|
||||
unit_name=instance.unit.name if instance.unit else None,
|
||||
base_unit=instance.unit.base_unit if instance.unit and instance.unit.base_unit else None,
|
||||
created_by=UserDTO.create_from_user(instance.created_by),
|
||||
)
|
||||
|
||||
|
||||
# A Connector is 'destroyed' & recreated each time 'any' ConnectorConfig in a space changes.
|
||||
@@ -10,20 +47,18 @@ class Connector(ABC):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_shopping_list_entry_created(self, space: Space, instance: ShoppingListEntry) -> None:
|
||||
async def on_shopping_list_entry_created(self, instance: ShoppingListEntryDTO) -> None:
|
||||
pass
|
||||
|
||||
# This method might not trigger on 'direct' entry updates: https://stackoverflow.com/a/35238823
|
||||
@abstractmethod
|
||||
async def on_shopping_list_entry_updated(self, space: Space, instance: ShoppingListEntry) -> None:
|
||||
async def on_shopping_list_entry_updated(self, instance: ShoppingListEntryDTO) -> None:
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def on_shopping_list_entry_deleted(self, space: Space, instance: ShoppingListEntry) -> None:
|
||||
async def on_shopping_list_entry_deleted(self, instance: ShoppingListEntryDTO) -> None:
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
async def close(self) -> None:
|
||||
pass
|
||||
|
||||
# TODO: Add Recipes & possibly Meal Place listeners/hooks (And maybe more?)
|
||||
|
||||
@@ -5,13 +5,14 @@ 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
|
||||
|
||||
from django.conf import settings
|
||||
from django_scopes import scope
|
||||
|
||||
from cookbook.connectors.connector import Connector
|
||||
from cookbook.connectors.connector import Connector, ShoppingListEntryDTO
|
||||
from cookbook.connectors.homeassistant import HomeAssistant
|
||||
from cookbook.models import ShoppingListEntry, Space, ConnectorConfig
|
||||
|
||||
@@ -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,20 +48,21 @@ 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._logger.debug("ConnectorManager initializing")
|
||||
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()
|
||||
|
||||
# Called by post save & post delete signals
|
||||
def __call__(self, instance: Any, **kwargs) -> None:
|
||||
if not isinstance(instance, self._listening_to_classes) or not hasattr(instance, "space"):
|
||||
return
|
||||
|
||||
action_type: ActionType
|
||||
if "created" in kwargs and kwargs["created"]:
|
||||
action_type = ActionType.CREATED
|
||||
@@ -62,22 +73,45 @@ class ConnectorManager:
|
||||
else:
|
||||
return
|
||||
|
||||
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)}")
|
||||
return
|
||||
self._add_work(action_type, instance)
|
||||
|
||||
def _add_work(self, action_type: ActionType, *instances: REGISTERED_CLASSES):
|
||||
for instance in instances:
|
||||
if not isinstance(instance, self._listening_to_classes) or not hasattr(instance, "space"):
|
||||
continue
|
||||
try:
|
||||
_force_load_instance(instance)
|
||||
self._queue.put_nowait(Work(instance, action_type))
|
||||
except queue.Full:
|
||||
self._logger.info(f"queue was full, so skipping {action_type} of type {type(instance)}")
|
||||
|
||||
def stop(self):
|
||||
self._queue.join()
|
||||
self._worker.join()
|
||||
|
||||
@classmethod
|
||||
def is_initialized(cls):
|
||||
return cls in cls._instances
|
||||
|
||||
@staticmethod
|
||||
def add_work(action_type: ActionType, *instances: REGISTERED_CLASSES):
|
||||
"""
|
||||
Manually inject work that failed to come in through the __call__ (aka Django signal)
|
||||
Before the work is processed, we check if the connectionManager is initialized, because if it's not, we don't want to accidentally initialize it.
|
||||
Be careful calling it, because it might result in a instance being processed twice.
|
||||
"""
|
||||
if not ConnectorManager.is_initialized():
|
||||
return
|
||||
ConnectorManager()._add_work(action_type, *instances)
|
||||
|
||||
@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 +125,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)
|
||||
|
||||
@@ -99,7 +135,7 @@ class ConnectorManager:
|
||||
|
||||
if connectors is None or refresh_connector_cache:
|
||||
if connectors is not None:
|
||||
loop.run_until_complete(close_connectors(connectors))
|
||||
loop.run_until_complete(_close_connectors(connectors))
|
||||
|
||||
with scope(space=space):
|
||||
connectors: List[Connector] = list()
|
||||
@@ -111,7 +147,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 +159,12 @@ class ConnectorManager:
|
||||
worker_queue.task_done()
|
||||
continue
|
||||
|
||||
loop.run_until_complete(run_connectors(connectors, space, item.instance, item.actionType))
|
||||
logger.debug(f"running {len(connectors)} connectors for {item.instance=} with {item.actionType=}")
|
||||
|
||||
loop.run_until_complete(run_connectors(connectors, 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()
|
||||
@@ -140,7 +178,14 @@ class ConnectorManager:
|
||||
return None
|
||||
|
||||
|
||||
async def close_connectors(connectors: List[Connector]):
|
||||
def _force_load_instance(instance: REGISTERED_CLASSES):
|
||||
if isinstance(instance, ShoppingListEntry):
|
||||
_ = instance.food # Force load food
|
||||
_ = instance.unit # Force load unit
|
||||
_ = instance.created_by # Force load created_by
|
||||
|
||||
|
||||
async def _close_connectors(connectors: List[Connector]):
|
||||
tasks: List[Task] = [asyncio.create_task(connector.close()) for connector in connectors]
|
||||
|
||||
if len(tasks) == 0:
|
||||
@@ -152,22 +197,24 @@ async def close_connectors(connectors: List[Connector]):
|
||||
logging.exception("received an exception while closing one of the connectors")
|
||||
|
||||
|
||||
async def run_connectors(connectors: List[Connector], space: Space, instance: REGISTERED_CLASSES, action_type: ActionType):
|
||||
async def run_connectors(connectors: List[Connector], instance: REGISTERED_CLASSES, action_type: ActionType):
|
||||
tasks: List[Task] = list()
|
||||
|
||||
if isinstance(instance, ShoppingListEntry):
|
||||
shopping_list_entry: ShoppingListEntry = instance
|
||||
shopping_list_entry = ShoppingListEntryDTO.try_create_from_entry(instance)
|
||||
if shopping_list_entry is None:
|
||||
return
|
||||
|
||||
match action_type:
|
||||
case ActionType.CREATED:
|
||||
for connector in connectors:
|
||||
tasks.append(asyncio.create_task(connector.on_shopping_list_entry_created(space, shopping_list_entry)))
|
||||
tasks.append(asyncio.create_task(connector.on_shopping_list_entry_created(shopping_list_entry)))
|
||||
case ActionType.UPDATED:
|
||||
for connector in connectors:
|
||||
tasks.append(asyncio.create_task(connector.on_shopping_list_entry_updated(space, shopping_list_entry)))
|
||||
tasks.append(asyncio.create_task(connector.on_shopping_list_entry_updated(shopping_list_entry)))
|
||||
case ActionType.DELETED:
|
||||
for connector in connectors:
|
||||
tasks.append(asyncio.create_task(connector.on_shopping_list_entry_deleted(space, shopping_list_entry)))
|
||||
tasks.append(asyncio.create_task(connector.on_shopping_list_entry_deleted(shopping_list_entry)))
|
||||
|
||||
if len(tasks) == 0:
|
||||
return
|
||||
|
||||
@@ -3,10 +3,10 @@ from logging import Logger
|
||||
from typing import Dict, Tuple
|
||||
from urllib.parse import urljoin
|
||||
|
||||
from aiohttp import ClientError, request
|
||||
from aiohttp import request, ClientResponseError
|
||||
|
||||
from cookbook.connectors.connector import Connector
|
||||
from cookbook.models import ShoppingListEntry, ConnectorConfig, Space
|
||||
from cookbook.connectors.connector import Connector, ShoppingListEntryDTO
|
||||
from cookbook.models import ConnectorConfig
|
||||
|
||||
|
||||
class HomeAssistant(Connector):
|
||||
@@ -17,10 +17,11 @@ class HomeAssistant(Connector):
|
||||
if not config.token or not config.url or not config.todo_entity:
|
||||
raise ValueError("config for HomeAssistantConnector in incomplete")
|
||||
|
||||
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")
|
||||
|
||||
async def homeassistant_api_call(self, method: str, path: str, data: Dict) -> str:
|
||||
headers = {
|
||||
@@ -31,42 +32,39 @@ class HomeAssistant(Connector):
|
||||
response.raise_for_status()
|
||||
return await response.json()
|
||||
|
||||
async def on_shopping_list_entry_created(self, space: Space, shopping_list_entry: ShoppingListEntry) -> None:
|
||||
async def on_shopping_list_entry_created(self, shopping_list_entry: ShoppingListEntryDTO) -> None:
|
||||
if not self._config.on_shopping_list_entry_created_enabled:
|
||||
return
|
||||
|
||||
item, description = _format_shopping_list_entry(shopping_list_entry)
|
||||
|
||||
logging.debug(f"adding {item=} to {self._config.name}")
|
||||
self._logger.debug(f"adding {item=} with {description=} to {self._config.todo_entity}")
|
||||
|
||||
data = {
|
||||
"entity_id": self._config.todo_entity,
|
||||
"item": item,
|
||||
"description": description,
|
||||
}
|
||||
|
||||
if self._config.supports_description_field:
|
||||
data["description"] = description
|
||||
|
||||
try:
|
||||
await self.homeassistant_api_call("POST", "services/todo/add_item", data)
|
||||
except ClientError as err:
|
||||
self._logger.warning(f"[HomeAssistant {self._config.name}] Received an exception from the api: {err=}, {type(err)=}")
|
||||
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:
|
||||
async def on_shopping_list_entry_updated(self, shopping_list_entry: ShoppingListEntryDTO) -> None:
|
||||
if not self._config.on_shopping_list_entry_updated_enabled:
|
||||
return
|
||||
pass
|
||||
|
||||
async def on_shopping_list_entry_deleted(self, space: Space, shopping_list_entry: ShoppingListEntry) -> None:
|
||||
async def on_shopping_list_entry_deleted(self, shopping_list_entry: ShoppingListEntryDTO) -> None:
|
||||
if not self._config.on_shopping_list_entry_deleted_enabled:
|
||||
return
|
||||
|
||||
if not hasattr(shopping_list_entry._state.fields_cache, "food"):
|
||||
# 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)
|
||||
|
||||
logging.debug(f"removing {item=} from {self._config.name}")
|
||||
self._logger.debug(f"removing {item=} from {self._config.todo_entity}")
|
||||
|
||||
data = {
|
||||
"entity_id": self._config.todo_entity,
|
||||
@@ -75,27 +73,27 @@ class HomeAssistant(Connector):
|
||||
|
||||
try:
|
||||
await self.homeassistant_api_call("POST", "services/todo/remove_item", data)
|
||||
except ClientError as err:
|
||||
except ClientResponseError as err:
|
||||
# This error will always trigger if the item is not present/found
|
||||
self._logger.debug(f"[HomeAssistant {self._config.name}] Received an exception from the api: {err=}, {type(err)=}")
|
||||
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:
|
||||
pass
|
||||
|
||||
|
||||
def _format_shopping_list_entry(shopping_list_entry: ShoppingListEntry) -> Tuple[str, str]:
|
||||
item = shopping_list_entry.food.name
|
||||
if shopping_list_entry.amount > 0:
|
||||
def _format_shopping_list_entry(shopping_list_entry: ShoppingListEntryDTO) -> Tuple[str, str]:
|
||||
item = shopping_list_entry.food_name
|
||||
if shopping_list_entry.amount:
|
||||
item += f" ({shopping_list_entry.amount:.2f}".rstrip('0').rstrip('.')
|
||||
if shopping_list_entry.unit and shopping_list_entry.unit.base_unit and len(shopping_list_entry.unit.base_unit) > 0:
|
||||
item += f" {shopping_list_entry.unit.base_unit})"
|
||||
elif shopping_list_entry.unit and shopping_list_entry.unit.name and len(shopping_list_entry.unit.name) > 0:
|
||||
item += f" {shopping_list_entry.unit.name})"
|
||||
if shopping_list_entry.base_unit:
|
||||
item += f" {shopping_list_entry.base_unit})"
|
||||
elif shopping_list_entry.unit_name:
|
||||
item += f" {shopping_list_entry.unit_name})"
|
||||
else:
|
||||
item += ")"
|
||||
|
||||
description = "From TandoorRecipes"
|
||||
if shopping_list_entry.created_by.first_name and len(shopping_list_entry.created_by.first_name) > 0:
|
||||
if shopping_list_entry.created_by.first_name:
|
||||
description += f", by {shopping_list_entry.created_by.first_name}"
|
||||
else:
|
||||
description += f", by {shopping_list_entry.created_by.username}"
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
from datetime import datetime
|
||||
|
||||
from allauth.account.forms import ResetPasswordForm, SignupForm
|
||||
from allauth.socialaccount.forms import SignupForm as SocialSignupForm
|
||||
from django import forms
|
||||
from django.conf import settings
|
||||
from django.core.exceptions import ValidationError
|
||||
@@ -12,60 +13,14 @@ from hcaptcha.fields import hCaptchaField
|
||||
|
||||
from .models import Comment, InviteLink, Keyword, Recipe, SearchPreference, Space, Storage, Sync, User, UserPreference, ConnectorConfig
|
||||
|
||||
|
||||
class SelectWidget(widgets.Select):
|
||||
|
||||
class Media:
|
||||
js = ('custom/js/form_select.js', )
|
||||
js = ('custom/js/form_select.js',)
|
||||
|
||||
|
||||
class MultiSelectWidget(widgets.SelectMultiple):
|
||||
|
||||
class Media:
|
||||
js = ('custom/js/form_multiselect.js', )
|
||||
|
||||
|
||||
# Yes there are some stupid browsers that still dont support this but
|
||||
# I dont support people using these browsers.
|
||||
class DateWidget(forms.DateInput):
|
||||
input_type = 'date'
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
kwargs["format"] = "%Y-%m-%d"
|
||||
super().__init__(**kwargs)
|
||||
|
||||
|
||||
class UserNameForm(forms.ModelForm):
|
||||
prefix = 'name'
|
||||
|
||||
class Meta:
|
||||
model = User
|
||||
fields = ('first_name', 'last_name')
|
||||
|
||||
help_texts = {'first_name': _('Both fields are optional. If none are given the username will be displayed instead')}
|
||||
|
||||
|
||||
class ExternalRecipeForm(forms.ModelForm):
|
||||
file_path = forms.CharField(disabled=True, required=False)
|
||||
file_uid = forms.CharField(disabled=True, required=False)
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
space = kwargs.pop('space')
|
||||
super().__init__(*args, **kwargs)
|
||||
self.fields['keywords'].queryset = Keyword.objects.filter(space=space).all()
|
||||
|
||||
class Meta:
|
||||
model = Recipe
|
||||
fields = ('name', 'description', 'servings', 'working_time', 'waiting_time', 'file_path', 'file_uid', 'keywords')
|
||||
|
||||
labels = {
|
||||
'name': _('Name'), 'keywords': _('Keywords'), 'working_time': _('Preparation time in minutes'), 'waiting_time': _('Waiting time (cooking/baking) in minutes'),
|
||||
'file_path': _('Path'), 'file_uid': _('Storage UID'),
|
||||
}
|
||||
widgets = {'keywords': MultiSelectWidget}
|
||||
field_classes = {'keywords': SafeModelMultipleChoiceField, }
|
||||
|
||||
|
||||
js = ('custom/js/form_multiselect.js',)
|
||||
class ImportExportBase(forms.Form):
|
||||
DEFAULT = 'DEFAULT'
|
||||
PAPRIKA = 'PAPRIKA'
|
||||
@@ -89,13 +44,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):
|
||||
allow_multiple_selected = True
|
||||
@@ -120,8 +75,6 @@ class ImportForm(ImportExportBase):
|
||||
files = MultipleFileField(required=True)
|
||||
duplicates = forms.BooleanField(help_text=_('To prevent duplicates recipes with the same name as existing ones are ignored. Check this box to import everything.'),
|
||||
required=False)
|
||||
|
||||
|
||||
class ExportForm(ImportExportBase):
|
||||
recipes = forms.ModelMultipleChoiceField(widget=MultiSelectWidget, queryset=Recipe.objects.none(), required=False)
|
||||
all = forms.BooleanField(required=False)
|
||||
@@ -132,120 +85,7 @@ class ExportForm(ImportExportBase):
|
||||
super().__init__(*args, **kwargs)
|
||||
self.fields['recipes'].queryset = Recipe.objects.filter(space=space).all()
|
||||
|
||||
|
||||
class CommentForm(forms.ModelForm):
|
||||
prefix = 'comment'
|
||||
|
||||
class Meta:
|
||||
model = Comment
|
||||
fields = ('text', )
|
||||
|
||||
labels = {'text': _('Add your comment: '), }
|
||||
widgets = {'text': forms.Textarea(attrs={'rows': 2, 'cols': 15}), }
|
||||
|
||||
|
||||
class StorageForm(forms.ModelForm):
|
||||
username = forms.CharField(widget=forms.TextInput(attrs={'autocomplete': 'new-password'}), required=False)
|
||||
password = forms.CharField(widget=forms.TextInput(attrs={'autocomplete': 'new-password', 'type': 'password'}),
|
||||
required=False,
|
||||
help_text=_('Leave empty for dropbox and enter app password for nextcloud.'))
|
||||
token = forms.CharField(widget=forms.TextInput(attrs={'autocomplete': 'new-password', 'type': 'password'}),
|
||||
required=False,
|
||||
help_text=_('Leave empty for nextcloud and enter api token for dropbox.'))
|
||||
|
||||
class Meta:
|
||||
model = Storage
|
||||
fields = ('name', 'method', 'username', 'password', 'token', 'url', 'path')
|
||||
|
||||
help_texts = {'url': _('Leave empty for dropbox and enter only base url for nextcloud (<code>/remote.php/webdav/</code> is added automatically)'), }
|
||||
|
||||
|
||||
|
||||
class ConnectorConfigForm(forms.ModelForm):
|
||||
enabled = forms.BooleanField(
|
||||
help_text="Is the connector enabled",
|
||||
required=False,
|
||||
)
|
||||
|
||||
on_shopping_list_entry_created_enabled = forms.BooleanField(
|
||||
help_text="Enable action for ShoppingListEntry created events",
|
||||
required=False,
|
||||
)
|
||||
|
||||
on_shopping_list_entry_updated_enabled = forms.BooleanField(
|
||||
help_text="Enable action for ShoppingListEntry updated events",
|
||||
required=False,
|
||||
)
|
||||
|
||||
on_shopping_list_entry_deleted_enabled = forms.BooleanField(
|
||||
help_text="Enable action for ShoppingListEntry deleted events",
|
||||
required=False,
|
||||
)
|
||||
|
||||
update_token = forms.CharField(
|
||||
widget=forms.TextInput(attrs={'autocomplete': 'update-token', 'type': 'password'}),
|
||||
required=False,
|
||||
help_text=_('<a href="https://www.home-assistant.io/docs/authentication/#your-account-profile">Long Lived Access Token</a> for your HomeAssistant instance')
|
||||
)
|
||||
|
||||
url = forms.URLField(
|
||||
required=False,
|
||||
help_text=_('Something like http://homeassistant.local:8123/api'),
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = ConnectorConfig
|
||||
|
||||
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',
|
||||
)
|
||||
|
||||
help_texts = {
|
||||
'url': _('http://homeassistant.local:8123/api for example'),
|
||||
}
|
||||
|
||||
|
||||
class SyncForm(forms.ModelForm):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
space = kwargs.pop('space')
|
||||
super().__init__(*args, **kwargs)
|
||||
self.fields['storage'].queryset = Storage.objects.filter(space=space).all()
|
||||
|
||||
class Meta:
|
||||
model = Sync
|
||||
fields = ('storage', 'path', 'active')
|
||||
|
||||
field_classes = {'storage': SafeModelChoiceField, }
|
||||
|
||||
labels = {'storage': _('Storage'), 'path': _('Path'), 'active': _('Active')}
|
||||
|
||||
|
||||
class BatchEditForm(forms.Form):
|
||||
search = forms.CharField(label=_('Search String'))
|
||||
keywords = forms.ModelMultipleChoiceField(queryset=Keyword.objects.none(), required=False, widget=MultiSelectWidget)
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
space = kwargs.pop('space')
|
||||
super().__init__(*args, **kwargs)
|
||||
self.fields['keywords'].queryset = Keyword.objects.filter(space=space).all().order_by('id')
|
||||
|
||||
|
||||
class ImportRecipeForm(forms.ModelForm):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
space = kwargs.pop('space')
|
||||
super().__init__(*args, **kwargs)
|
||||
self.fields['keywords'].queryset = Keyword.objects.filter(space=space).all()
|
||||
|
||||
class Meta:
|
||||
model = Recipe
|
||||
fields = ('name', 'keywords', 'file_path', 'file_uid')
|
||||
|
||||
labels = {'name': _('Name'), 'keywords': _('Keywords'), 'file_path': _('Path'), 'file_uid': _('File ID'), }
|
||||
widgets = {'keywords': MultiSelectWidget}
|
||||
field_classes = {'keywords': SafeModelChoiceField, }
|
||||
from .models import InviteLink, SearchPreference, Space, User, UserPreference
|
||||
|
||||
|
||||
class InviteLinkForm(forms.ModelForm):
|
||||
@@ -308,6 +148,18 @@ class AllAuthSignupForm(SignupForm):
|
||||
pass
|
||||
|
||||
|
||||
class AllAuthSocialSignupForm(SocialSignupForm):
|
||||
terms = forms.BooleanField(label=_('Accept Terms and Privacy'))
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
if settings.PRIVACY_URL == '' and settings.TERMS_URL == '':
|
||||
self.fields.pop('terms')
|
||||
|
||||
def signup(self, request, user):
|
||||
pass
|
||||
|
||||
|
||||
class CustomPasswordResetForm(ResetPasswordForm):
|
||||
captcha = hCaptchaField()
|
||||
|
||||
@@ -321,37 +173,3 @@ class UserCreateForm(forms.Form):
|
||||
name = forms.CharField(label='Username')
|
||||
password = forms.CharField(widget=forms.TextInput(attrs={'autocomplete': 'new-password', 'type': 'password'}))
|
||||
password_confirm = forms.CharField(widget=forms.TextInput(attrs={'autocomplete': 'new-password', 'type': 'password'}))
|
||||
|
||||
|
||||
class SearchPreferenceForm(forms.ModelForm):
|
||||
prefix = 'search'
|
||||
trigram_threshold = forms.DecimalField(min_value=0.01,
|
||||
max_value=1,
|
||||
decimal_places=2,
|
||||
widget=NumberInput(attrs={'class': "form-control-range", 'type': 'range'}),
|
||||
help_text=_('Determines how fuzzy a search is if it uses trigram similarity matching (e.g. low values mean more typos are ignored).'))
|
||||
preset = forms.CharField(widget=forms.HiddenInput(), required=False)
|
||||
|
||||
class Meta:
|
||||
model = SearchPreference
|
||||
fields = ('search', 'lookup', 'unaccent', 'icontains', 'istartswith', 'trigram', 'fulltext', 'trigram_threshold')
|
||||
|
||||
help_texts = {
|
||||
'search': _('Select type method of search. Click <a href="/docs/search/">here</a> for full description of choices.'), 'lookup':
|
||||
_('Use fuzzy matching on units, keywords and ingredients when editing and importing recipes.'), 'unaccent':
|
||||
_('Fields to search ignoring accents. Selecting this option can improve or degrade search quality depending on language'), 'icontains':
|
||||
_("Fields to search for partial matches. (e.g. searching for 'Pie' will return 'pie' and 'piece' and 'soapie')"), 'istartswith':
|
||||
_("Fields to search for beginning of word matches. (e.g. searching for 'sa' will return 'salad' and 'sandwich')"), 'trigram':
|
||||
_("Fields to 'fuzzy' search. (e.g. searching for 'recpie' will find 'recipe'.) Note: this option will conflict with 'web' and 'raw' methods of search."), 'fulltext':
|
||||
_("Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods only function with fulltext fields."),
|
||||
}
|
||||
|
||||
labels = {
|
||||
'search': _('Search Method'), 'lookup': _('Fuzzy Lookups'), 'unaccent': _('Ignore Accent'), 'icontains': _("Partial Match"), 'istartswith': _("Starts With"),
|
||||
'trigram': _("Fuzzy Search"), 'fulltext': _("Full Text")
|
||||
}
|
||||
|
||||
widgets = {
|
||||
'search': SelectWidget, 'unaccent': MultiSelectWidget, 'icontains': MultiSelectWidget, 'istartswith': MultiSelectWidget, 'trigram': MultiSelectWidget, 'fulltext':
|
||||
MultiSelectWidget,
|
||||
}
|
||||
|
||||
@@ -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, ])
|
||||
|
||||
@@ -109,7 +109,7 @@ class AutomationEngine:
|
||||
Moves a string that should never be treated as a unit to next token and optionally replaced with default unit
|
||||
e.g. NEVER_UNIT: param1: egg, param2: None would modify ['1', 'egg', 'white'] to ['1', '', 'egg', 'white']
|
||||
or NEVER_UNIT: param1: egg, param2: pcs would modify ['1', 'egg', 'yolk'] to ['1', 'pcs', 'egg', 'yolk']
|
||||
:param1 string: string that should never be considered a unit, will be moved to token[2]
|
||||
:param1 tokens: string that should never be considered a unit, will be moved to token[2]
|
||||
:param2 (optional) unit as string: will insert unit string into token[1]
|
||||
:return: unit as string (possibly changed by automation)
|
||||
"""
|
||||
@@ -135,7 +135,7 @@ class AutomationEngine:
|
||||
new_unit = self.never_unit[tokens[1].lower()]
|
||||
never_unit = True
|
||||
except KeyError:
|
||||
return tokens
|
||||
return tokens, never_unit
|
||||
else:
|
||||
if a := Automation.objects.annotate(param_1_lower=Lower('param_1')).filter(space=self.request.space, type=Automation.NEVER_UNIT, param_1_lower__in=[
|
||||
tokens[1].lower(), alt_unit.lower()], disabled=False).order_by('order').first():
|
||||
@@ -144,7 +144,7 @@ class AutomationEngine:
|
||||
|
||||
if never_unit:
|
||||
tokens.insert(1, new_unit)
|
||||
return tokens
|
||||
return tokens, never_unit
|
||||
|
||||
def apply_transpose_automation(self, string):
|
||||
"""
|
||||
|
||||
102
cookbook/helper/drf_spectacular_hooks.py
Normal file
102
cookbook/helper/drf_spectacular_hooks.py
Normal file
@@ -0,0 +1,102 @@
|
||||
# custom processing for schema
|
||||
# reason: DRF writable nested needs ID's to decide if a nested object should be created or updated
|
||||
# the API schema/client make ID's read only by default and strips them entirely in request objects (with COMPONENT_SPLIT_REQUEST enabled)
|
||||
# change the schema to make IDs optional but writable so they are included in the request
|
||||
|
||||
def custom_postprocessing_hook(result, generator, request, public):
|
||||
for c in result['components']['schemas'].keys():
|
||||
# handle schemas used by the client to do requests on the server
|
||||
if 'properties' in result['components']['schemas'][c] and 'id' in result['components']['schemas'][c]['properties']:
|
||||
# make ID field not read only so it's not stripped from the request on the client
|
||||
result['components']['schemas'][c]['properties']['id']['readOnly'] = False
|
||||
# make ID field not required
|
||||
if 'required' in result['components']['schemas'][c] and 'id' in result['components']['schemas'][c]['required']:
|
||||
result['components']['schemas'][c]['required'].remove('id')
|
||||
|
||||
return result
|
||||
|
||||
|
||||
# TODO remove below once legacy API has been fully deprecated
|
||||
from drf_spectacular.openapi import AutoSchema # noqa: E402 isort: skip
|
||||
import functools # noqa: E402 isort: skip
|
||||
import re # noqa: E402 isort: skip
|
||||
|
||||
|
||||
class LegacySchema(AutoSchema):
|
||||
operation_id_base = None
|
||||
|
||||
@functools.cached_property
|
||||
def path(self):
|
||||
path = re.sub(pattern=self.path_prefix, repl='', string=self.path, flags=re.IGNORECASE)
|
||||
# remove path variables
|
||||
return re.sub(pattern=r'\{[\w\-]+\}', repl='', string=path)
|
||||
|
||||
def get_operation_id(self):
|
||||
"""
|
||||
Compute an operation ID from the view type and get_operation_id_base method.
|
||||
"""
|
||||
method_name = getattr(self.view, 'action', self.method.lower())
|
||||
if self._is_list_view():
|
||||
action = 'list'
|
||||
elif method_name not in self.method_mapping:
|
||||
action = self._to_camel_case(method_name)
|
||||
else:
|
||||
action = self.method_mapping[self.method.lower()]
|
||||
|
||||
name = self.get_operation_id_base(action)
|
||||
|
||||
return action + name
|
||||
|
||||
def get_operation_id_base(self, action):
|
||||
"""
|
||||
Compute the base part for operation ID from the model, serializer or view name.
|
||||
"""
|
||||
model = getattr(getattr(self.view, 'queryset', None), 'model', None)
|
||||
|
||||
if self.operation_id_base is not None:
|
||||
name = self.operation_id_base
|
||||
|
||||
# Try to deduce the ID from the view's model
|
||||
elif model is not None:
|
||||
name = model.__name__
|
||||
|
||||
# Try with the serializer class name
|
||||
elif self.get_serializer() is not None:
|
||||
name = self.get_serializer().__class__.__name__
|
||||
if name.endswith('Serializer'):
|
||||
name = name[:-10]
|
||||
|
||||
# Fallback to the view name
|
||||
else:
|
||||
name = self.view.__class__.__name__
|
||||
if name.endswith('APIView'):
|
||||
name = name[:-7]
|
||||
elif name.endswith('View'):
|
||||
name = name[:-4]
|
||||
|
||||
# Due to camel-casing of classes and `action` being lowercase, apply title in order to find if action truly
|
||||
# comes at the end of the name
|
||||
if name.endswith(action.title()): # ListView, UpdateAPIView, ThingDelete ...
|
||||
name = name[:-len(action)]
|
||||
|
||||
if action == 'list' and not name.endswith('s'): # listThings instead of listThing
|
||||
name += 's'
|
||||
|
||||
return name
|
||||
|
||||
def get_serializer(self):
|
||||
view = self.view
|
||||
|
||||
if not hasattr(view, 'get_serializer'):
|
||||
return None
|
||||
|
||||
try:
|
||||
return view.get_serializer()
|
||||
except Exception:
|
||||
return None
|
||||
|
||||
def _to_camel_case(self, snake_str):
|
||||
components = snake_str.split('_')
|
||||
# We capitalize the first letter of each component except the first one
|
||||
# with the 'title' method and join them together.
|
||||
return components[0] + ''.join(x.title() for x in components[1:])
|
||||
@@ -35,6 +35,33 @@ def get_filetype(name):
|
||||
return '.jpeg'
|
||||
|
||||
|
||||
def is_file_type_allowed(filename, image_only=False):
|
||||
is_file_allowed = False
|
||||
allowed_file_types = ['.pdf', '.docx', '.xlsx', '.css']
|
||||
allowed_image_types = ['.png', '.jpg', '.jpeg', '.gif', '.webp']
|
||||
check_list = allowed_image_types
|
||||
if not image_only:
|
||||
check_list += allowed_file_types
|
||||
|
||||
for file_type in check_list:
|
||||
if filename.lower().endswith(file_type):
|
||||
is_file_allowed = True
|
||||
|
||||
return is_file_allowed
|
||||
|
||||
|
||||
def strip_image_meta(image_object, file_format):
|
||||
image_object = Image.open(image_object)
|
||||
|
||||
data = list(image_object.getdata())
|
||||
image_without_exif = Image.new(image_object.mode, image_object.size)
|
||||
image_without_exif.putdata(data)
|
||||
|
||||
im_io = BytesIO()
|
||||
image_without_exif.save(im_io, file_format)
|
||||
return im_io
|
||||
|
||||
|
||||
# TODO this whole file needs proper documentation, refactoring, and testing
|
||||
# TODO also add env variable to define which images sizes should be compressed
|
||||
# filetype argument can not be optional, otherwise this function will treat all images as if they were a jpeg
|
||||
@@ -45,9 +72,19 @@ def handle_image(request, image_object, filetype):
|
||||
except Exception:
|
||||
return None
|
||||
|
||||
file_format = None
|
||||
if filetype == '.jpeg' or filetype == '.jpg':
|
||||
file_format = 'JPEG'
|
||||
if filetype == '.png':
|
||||
file_format = 'PNG'
|
||||
|
||||
if (image_object.size / 1000) > 500: # if larger than 500 kb compress
|
||||
if filetype == '.jpeg' or filetype == '.jpg':
|
||||
return rescale_image_jpeg(image_object)
|
||||
if filetype == '.png':
|
||||
return rescale_image_png(image_object)
|
||||
else:
|
||||
return strip_image_meta(image_object, file_format)
|
||||
|
||||
# TODO webp and gifs bypass the scaling and metadata checks, fix
|
||||
return image_object
|
||||
|
||||
@@ -118,7 +118,7 @@ class IngredientParser:
|
||||
note = ''
|
||||
start = 0
|
||||
# search for first occurrence of an argument ending in a comma
|
||||
while start < len(tokens) and not tokens[start].endswith(','):
|
||||
while start < len(tokens) and not tokens[start].endswith((',', ';', ':')):
|
||||
start += 1
|
||||
if start == len(tokens):
|
||||
# no token ending in a comma found -> use everything as food
|
||||
@@ -176,7 +176,6 @@ class IngredientParser:
|
||||
# if something like this is detected move it to the beginning so the parser can handle it
|
||||
if len(ingredient) < 1000 and re.search(r'^([^\W\d_])+(.)*[1-9](\d)*\s*([^\W\d_])+', ingredient):
|
||||
match = re.search(r'[1-9](\d)*\s*([^\W\d_])+', ingredient)
|
||||
print(f'reording from {ingredient} to {ingredient[match.start():match.end()] + " " + ingredient.replace(ingredient[match.start():match.end()], "")}')
|
||||
ingredient = ingredient[match.start():match.end()] + ' ' + ingredient.replace(ingredient[match.start():match.end()], '')
|
||||
|
||||
# if the string contains parenthesis early on remove it and place it at the end
|
||||
@@ -211,39 +210,46 @@ class IngredientParser:
|
||||
# three arguments if it already has a unit there can't be
|
||||
# a fraction for the amount
|
||||
if len(tokens) > 2:
|
||||
never_unit_applied = False
|
||||
if not self.ignore_rules:
|
||||
tokens = self.automation.apply_never_unit_automation(tokens)
|
||||
try:
|
||||
if unit is not None:
|
||||
# a unit is already found, no need to try the second argument for a fraction
|
||||
# probably not the best method to do it, but I didn't want to make an if check and paste the exact same thing in the else as already is in the except
|
||||
raise ValueError
|
||||
# try to parse second argument as amount and add that, in case of '2 1/2' or '2 ½'
|
||||
amount += self.parse_fraction(tokens[1])
|
||||
# assume that units can't end with a comma
|
||||
if len(tokens) > 3 and not tokens[2].endswith(','):
|
||||
# try to use third argument as unit and everything else as food, use everything as food if it fails
|
||||
try:
|
||||
food, note = self.parse_food(tokens[3:])
|
||||
unit = tokens[2]
|
||||
except ValueError:
|
||||
tokens, never_unit_applied = self.automation.apply_never_unit_automation(tokens)
|
||||
|
||||
if never_unit_applied:
|
||||
unit = tokens[1]
|
||||
food, note = self.parse_food(tokens[2:])
|
||||
else:
|
||||
try:
|
||||
if unit is not None:
|
||||
# a unit is already found, no need to try the second argument for a fraction
|
||||
# probably not the best method to do it, but I didn't want to make an if check and paste the exact same thing in the else as already is in the except
|
||||
raise ValueError
|
||||
# try to parse second argument as amount and add that, in case of '2 1/2' or '2 ½'
|
||||
if tokens[1]:
|
||||
amount += self.parse_fraction(tokens[1])
|
||||
# assume that units can't end with a comma
|
||||
if len(tokens) > 3 and not tokens[2].endswith(','):
|
||||
# try to use third argument as unit and everything else as food, use everything as food if it fails
|
||||
try:
|
||||
food, note = self.parse_food(tokens[3:])
|
||||
unit = tokens[2]
|
||||
except ValueError:
|
||||
food, note = self.parse_food(tokens[2:])
|
||||
else:
|
||||
food, note = self.parse_food(tokens[2:])
|
||||
else:
|
||||
food, note = self.parse_food(tokens[2:])
|
||||
except ValueError:
|
||||
# assume that units can't end with a comma
|
||||
if not tokens[1].endswith(','):
|
||||
# try to use second argument as unit and everything else as food, use everything as food if it fails
|
||||
try:
|
||||
food, note = self.parse_food(tokens[2:])
|
||||
if unit is None:
|
||||
unit = tokens[1]
|
||||
else:
|
||||
note = tokens[1]
|
||||
except ValueError:
|
||||
except ValueError:
|
||||
# assume that units can't end with a comma
|
||||
if not tokens[1].endswith(','):
|
||||
# try to use second argument as unit and everything else as food, use everything as food if it fails
|
||||
try:
|
||||
food, note = self.parse_food(tokens[2:])
|
||||
if unit is None:
|
||||
unit = tokens[1]
|
||||
else:
|
||||
note = tokens[1]
|
||||
except ValueError:
|
||||
food, note = self.parse_food(tokens[1:])
|
||||
else:
|
||||
food, note = self.parse_food(tokens[1:])
|
||||
else:
|
||||
food, note = self.parse_food(tokens[1:])
|
||||
else:
|
||||
# only two arguments, first one is the amount
|
||||
# which means this is the food
|
||||
@@ -264,6 +270,7 @@ class IngredientParser:
|
||||
|
||||
if food and not self.ignore_rules:
|
||||
food = self.automation.apply_food_automation(food)
|
||||
|
||||
if len(food) > Food._meta.get_field('name').max_length: # test if food name is to long
|
||||
# try splitting it at a space and taking only the first arg
|
||||
if len(food.split()) > 1 and len(food.split()[0]) < Food._meta.get_field('name').max_length:
|
||||
|
||||
@@ -7,7 +7,9 @@ class StyleTreeprocessor(Treeprocessor):
|
||||
def run_processor(self, node):
|
||||
for child in node:
|
||||
if child.tag == "table":
|
||||
child.set("class", "table table-bordered")
|
||||
child.set("class", "markdown-table")
|
||||
if child.tag == "th" or child.tag == "td":
|
||||
child.set("class", "markdown-table-cell")
|
||||
if child.tag == "img":
|
||||
child.set("class", "img-fluid")
|
||||
self.run_processor(child)
|
||||
|
||||
@@ -6,6 +6,8 @@ from cookbook.models import (Food, FoodProperty, Property, PropertyType, Superma
|
||||
SupermarketCategory, SupermarketCategoryRelation, Unit, UnitConversion)
|
||||
import re
|
||||
|
||||
from recipes.settings import DEBUG
|
||||
|
||||
|
||||
class OpenDataImportResponse:
|
||||
total_created = 0
|
||||
@@ -339,7 +341,7 @@ class OpenDataImporter:
|
||||
obj_dict = {
|
||||
'name': self.data[datatype][k]['name'],
|
||||
'plural_name': self.data[datatype][k]['plural_name'] if self.data[datatype][k]['plural_name'] != '' else None,
|
||||
'supermarket_category_id': self.slug_id_cache['category'][self.data[datatype][k]['store_category']],
|
||||
'supermarket_category_id': self.slug_id_cache['category'][self.data[datatype][k]['store_category']] if self.data[datatype][k]['store_category'] in self.slug_id_cache['category'] else None,
|
||||
'fdc_id': re.sub(r'\D', '', self.data[datatype][k]['fdc_id']) if self.data[datatype][k]['fdc_id'] != '' else None,
|
||||
'open_data_slug': k,
|
||||
'properties_food_unit_id': None,
|
||||
@@ -367,12 +369,28 @@ class OpenDataImporter:
|
||||
create_list.append({'data': obj_dict})
|
||||
|
||||
if self.update_existing and len(update_list) > 0:
|
||||
model_type.objects.bulk_update(update_list, field_list)
|
||||
od_response.total_updated += len(update_list)
|
||||
try:
|
||||
model_type.objects.bulk_update(update_list, field_list)
|
||||
od_response.total_updated += len(update_list)
|
||||
except Exception:
|
||||
if DEBUG:
|
||||
print('========= LOAD FOOD FAILED ============')
|
||||
print(update_list)
|
||||
print(existing_data_names)
|
||||
print(existing_data_slugs)
|
||||
traceback.print_exc()
|
||||
|
||||
if len(create_list) > 0:
|
||||
Food.load_bulk(create_list, None)
|
||||
od_response.total_created += len(create_list)
|
||||
try:
|
||||
Food.load_bulk(create_list, None)
|
||||
od_response.total_created += len(create_list)
|
||||
except Exception:
|
||||
if DEBUG:
|
||||
print('========= LOAD FOOD FAILED ============')
|
||||
print(create_list)
|
||||
print(existing_data_names)
|
||||
print(existing_data_slugs)
|
||||
traceback.print_exc()
|
||||
|
||||
# --------------- PROPERTY STUFF -----------------------
|
||||
model_type = Property
|
||||
|
||||
@@ -160,18 +160,15 @@ class GroupRequiredMixin(object):
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
if not has_group_permission(request.user, self.groups_required):
|
||||
if not request.user.is_authenticated:
|
||||
messages.add_message(request, messages.ERROR,
|
||||
_('You are not logged in and therefore cannot view this page!'))
|
||||
messages.add_message(request, messages.ERROR, _('You are not logged in and therefore cannot view this page!'))
|
||||
return HttpResponseRedirect(reverse_lazy('account_login') + '?next=' + request.path)
|
||||
else:
|
||||
messages.add_message(request, messages.ERROR,
|
||||
_('You do not have the required permissions to view this page!'))
|
||||
messages.add_message(request, messages.ERROR, _('You do not have the required permissions to view this page!'))
|
||||
return HttpResponseRedirect(reverse_lazy('index'))
|
||||
try:
|
||||
obj = self.get_object()
|
||||
if obj.get_space() != request.space:
|
||||
messages.add_message(request, messages.ERROR,
|
||||
_('You do not have the required permissions to view this page!'))
|
||||
messages.add_message(request, messages.ERROR, _('You do not have the required permissions to view this page!'))
|
||||
return HttpResponseRedirect(reverse_lazy('index'))
|
||||
except AttributeError:
|
||||
pass
|
||||
|
||||
@@ -44,13 +44,17 @@ class FoodPropertyHelper:
|
||||
if i.food is not None:
|
||||
conversions = uch.get_conversions(i)
|
||||
for pt in property_types:
|
||||
# if a property could be calculated with an actual value
|
||||
found_property = False
|
||||
if i.food.properties_food_amount == 0 or i.food.properties_food_unit is None: # if food is configured incorrectly
|
||||
computed_properties[pt.id]['food_values'][i.food.id] = {'id': i.food.id, 'food': i.food.name, 'value': None}
|
||||
# if food has a value for the given property type (no matter if conversion is possible)
|
||||
has_property_value = False
|
||||
if i.food.properties_food_amount == 0 or i.food.properties_food_unit is None and not (i.amount == 0 or i.no_amount): # if food is configured incorrectly
|
||||
computed_properties[pt.id]['food_values'][i.food.id] = {'id': i.food.id, 'food': {'id': i.food.id, 'name': i.food.name}, 'value': None}
|
||||
computed_properties[pt.id]['missing_value'] = True
|
||||
else:
|
||||
for p in i.food.properties.all():
|
||||
if p.property_type == pt and p.property_amount is not None:
|
||||
has_property_value = True
|
||||
for c in conversions:
|
||||
if c.unit == i.food.properties_food_unit:
|
||||
found_property = True
|
||||
@@ -58,12 +62,19 @@ class FoodPropertyHelper:
|
||||
computed_properties[pt.id]['food_values'] = self.add_or_create(
|
||||
computed_properties[p.property_type.id]['food_values'], c.food.id, (c.amount / i.food.properties_food_amount) * p.property_amount, c.food)
|
||||
if not found_property:
|
||||
if i.amount == 0: # don't count ingredients without an amount as missing
|
||||
computed_properties[pt.id]['missing_value'] = computed_properties[pt.id]['missing_value'] or False # don't override if another food was already missing
|
||||
computed_properties[pt.id]['food_values'][i.food.id] = {'id': i.food.id, 'food': i.food.name, 'value': 0}
|
||||
# if no amount and food does not exist yet add it but don't count as missing
|
||||
if i.amount == 0 or i.no_amount and i.food.id not in computed_properties[pt.id]['food_values']:
|
||||
computed_properties[pt.id]['food_values'][i.food.id] = {'id': i.food.id, 'food': {'id': i.food.id, 'name': i.food.name}, 'value': 0}
|
||||
# if amount is present but unit is missing indicate it in the result
|
||||
elif i.unit is None:
|
||||
if i.food.id not in computed_properties[pt.id]['food_values']:
|
||||
computed_properties[pt.id]['food_values'][i.food.id] = {'id': i.food.id, 'food': {'id': i.food.id, 'name': i.food.name}, 'value': 0}
|
||||
computed_properties[pt.id]['food_values'][i.food.id]['missing_unit'] = True
|
||||
else:
|
||||
computed_properties[pt.id]['missing_value'] = True
|
||||
computed_properties[pt.id]['food_values'][i.food.id] = {'id': i.food.id, 'food': i.food.name, 'value': None}
|
||||
computed_properties[pt.id]['food_values'][i.food.id] = {'id': i.food.id, 'food': {'id': i.food.id, 'name': i.food.name}, 'value': None}
|
||||
if has_property_value and i.unit is not None:
|
||||
computed_properties[pt.id]['food_values'][i.food.id]['missing_conversion'] = {'base_unit': {'id': i.unit.id, 'name': i.unit.name}, 'converted_unit': {'id': i.food.properties_food_unit.id, 'name': i.food.properties_food_unit.name}}
|
||||
|
||||
return computed_properties
|
||||
|
||||
@@ -74,5 +85,5 @@ class FoodPropertyHelper:
|
||||
if key in d and d[key]['value']:
|
||||
d[key]['value'] += value
|
||||
else:
|
||||
d[key] = {'id': food.id, 'food': food.name, 'value': value}
|
||||
d[key] = {'id': food.id, 'food': {'id': food.id, 'name': food.name}, 'value': value}
|
||||
return d
|
||||
|
||||
@@ -49,7 +49,11 @@ class RecipeSearch():
|
||||
self._search_prefs = SearchPreference()
|
||||
self._string = self._params.get('query').strip(
|
||||
) if self._params.get('query', None) else None
|
||||
|
||||
self._rating = self._params.get('rating', None)
|
||||
self._rating_gte = self._params.get('rating_gte', None)
|
||||
self._rating_lte = self._params.get('rating_lte', None)
|
||||
|
||||
self._keywords = {
|
||||
'or': self._params.get('keywords_or', None) or self._params.get('keywords', None),
|
||||
'and': self._params.get('keywords_and', None),
|
||||
@@ -70,20 +74,36 @@ class RecipeSearch():
|
||||
}
|
||||
self._steps = self._params.get('steps', None)
|
||||
self._units = self._params.get('units', None)
|
||||
# TODO add created by
|
||||
# TODO image exists
|
||||
self._sort_order = self._params.get('sort_order', None)
|
||||
self._internal = str2bool(self._params.get('internal', None))
|
||||
self._random = str2bool(self._params.get('random', False))
|
||||
self._sort_order = self._params.get('sort_order', None)
|
||||
if self._sort_order == 'random':
|
||||
self._random = True
|
||||
self.sort_order = None
|
||||
else:
|
||||
self._random = str2bool(self._params.get('random', False))
|
||||
self._new = str2bool(self._params.get('new', False))
|
||||
self._num_recent = int(self._params.get('num_recent', 0))
|
||||
self._include_children = str2bool(
|
||||
self._params.get('include_children', None))
|
||||
self._timescooked = self._params.get('timescooked', None)
|
||||
self._cookedon = self._params.get('cookedon', None)
|
||||
self._timescooked_gte = self._params.get('timescooked_gte', None)
|
||||
self._timescooked_lte = self._params.get('timescooked_lte', None)
|
||||
|
||||
self._createdon = self._params.get('createdon', None)
|
||||
self._createdon_gte = self._params.get('createdon_gte', None)
|
||||
self._createdon_lte = self._params.get('createdon_lte', None)
|
||||
|
||||
self._updatedon = self._params.get('updatedon', None)
|
||||
self._viewedon = self._params.get('viewedon', None)
|
||||
self._updatedon_gte = self._params.get('updatedon_gte', None)
|
||||
self._updatedon_lte = self._params.get('updatedon_lte', None)
|
||||
|
||||
self._viewedon_gte = self._params.get('viewedon_gte', None)
|
||||
self._viewedon_lte = self._params.get('viewedon_lte', None)
|
||||
|
||||
self._cookedon_gte = self._params.get('cookedon_gte', None)
|
||||
self._cookedon_lte = self._params.get('cookedon_lte', None)
|
||||
|
||||
self._createdby = self._params.get('createdby', None)
|
||||
self._makenow = self._params.get('makenow', None)
|
||||
# this supports hidden feature to find recipes missing X ingredients
|
||||
if isinstance(self._makenow, bool) and self._makenow == True:
|
||||
@@ -130,16 +150,19 @@ class RecipeSearch():
|
||||
|
||||
self._build_sort_order()
|
||||
self._recently_viewed(num_recent=self._num_recent)
|
||||
self._cooked_on_filter(cooked_date=self._cookedon)
|
||||
self._created_on_filter(created_date=self._createdon)
|
||||
self._updated_on_filter(updated_date=self._updatedon)
|
||||
self._viewed_on_filter(viewed_date=self._viewedon)
|
||||
self._favorite_recipes(times_cooked=self._timescooked)
|
||||
|
||||
self._cooked_on_filter()
|
||||
self._created_on_filter()
|
||||
self._updated_on_filter()
|
||||
self._viewed_on_filter()
|
||||
|
||||
self._created_by_filter(created_by_user_id=self._createdby)
|
||||
self._favorite_recipes()
|
||||
self._new_recipes()
|
||||
self.keyword_filters(**self._keywords)
|
||||
self.food_filters(**self._foods)
|
||||
self.book_filters(**self._books)
|
||||
self.rating_filter(rating=self._rating)
|
||||
self.rating_filter()
|
||||
self.internal_filter(internal=self._internal)
|
||||
self.step_filters(steps=self._steps)
|
||||
self.unit_filters(units=self._units)
|
||||
@@ -186,9 +209,9 @@ class RecipeSearch():
|
||||
else:
|
||||
order += default_order
|
||||
order[:] = [Lower('name').asc() if x ==
|
||||
'name' else x for x in order]
|
||||
'name' else x for x in order]
|
||||
order[:] = [Lower('name').desc() if x ==
|
||||
'-name' else x for x in order]
|
||||
'-name' else x for x in order]
|
||||
self.orderby = order
|
||||
|
||||
def string_filters(self, string=None):
|
||||
@@ -227,9 +250,9 @@ class RecipeSearch():
|
||||
query_filter |= Q(**{"%s" % f: self._string})
|
||||
self._queryset = self._queryset.filter(query_filter).distinct()
|
||||
|
||||
def _cooked_on_filter(self, cooked_date=None):
|
||||
if self._sort_includes('lastcooked') or cooked_date:
|
||||
lessthan = self._sort_includes('-lastcooked') or '-' in (cooked_date or [])[:1]
|
||||
def _cooked_on_filter(self):
|
||||
if self._sort_includes('lastcooked') or self._cookedon_gte or self._cookedon_lte:
|
||||
lessthan = self._sort_includes('-lastcooked') or self._cookedon_lte
|
||||
if lessthan:
|
||||
default = timezone.now() - timedelta(days=100000)
|
||||
else:
|
||||
@@ -237,51 +260,44 @@ class RecipeSearch():
|
||||
self._queryset = self._queryset.annotate(
|
||||
lastcooked=Coalesce(Max(Case(When(cooklog__created_by=self._request.user, cooklog__space=self._request.space, then='cooklog__created_at'))), Value(default))
|
||||
)
|
||||
if cooked_date is None:
|
||||
return
|
||||
|
||||
cooked_date = date(*[int(x)for x in cooked_date.split('-') if x != ''])
|
||||
|
||||
if lessthan:
|
||||
self._queryset = self._queryset.filter(lastcooked__date__lte=cooked_date).exclude(lastcooked=default)
|
||||
else:
|
||||
self._queryset = self._queryset.filter(lastcooked__date__gte=cooked_date).exclude(lastcooked=default)
|
||||
|
||||
def _created_on_filter(self, created_date=None):
|
||||
if created_date is None:
|
||||
return
|
||||
lessthan = '-' in created_date[:1]
|
||||
created_date = date(*[int(x) for x in created_date.split('-') if x != ''])
|
||||
if lessthan:
|
||||
self._queryset = self._queryset.filter(created_at__date__lte=created_date)
|
||||
else:
|
||||
self._queryset = self._queryset.filter(created_at__date__gte=created_date)
|
||||
|
||||
def _updated_on_filter(self, updated_date=None):
|
||||
if updated_date is None:
|
||||
return
|
||||
lessthan = '-' in updated_date[:1]
|
||||
updated_date = date(*[int(x)for x in updated_date.split('-') if x != ''])
|
||||
if lessthan:
|
||||
self._queryset = self._queryset.filter(updated_at__date__lte=updated_date)
|
||||
else:
|
||||
self._queryset = self._queryset.filter(updated_at__date__gte=updated_date)
|
||||
if self._cookedon_lte:
|
||||
self._queryset = self._queryset.filter(lastcooked__date__lte=self._cookedon_lte).exclude(lastcooked=default)
|
||||
elif self._cookedon_gte:
|
||||
self._queryset = self._queryset.filter(lastcooked__date__gte=self._cookedon_gte).exclude(lastcooked=default)
|
||||
|
||||
def _viewed_on_filter(self, viewed_date=None):
|
||||
if self._sort_includes('lastviewed') or viewed_date:
|
||||
if self._sort_includes('lastviewed') or self._viewedon_gte or self._viewedon_lte:
|
||||
longTimeAgo = timezone.now() - timedelta(days=100000)
|
||||
self._queryset = self._queryset.annotate(
|
||||
lastviewed=Coalesce(Max(Case(When(viewlog__created_by=self._request.user, viewlog__space=self._request.space, then='viewlog__created_at'))), Value(longTimeAgo))
|
||||
)
|
||||
if viewed_date is None:
|
||||
return
|
||||
lessthan = '-' in viewed_date[:1]
|
||||
viewed_date = date(*[int(x)for x in viewed_date.split('-') if x != ''])
|
||||
|
||||
if lessthan:
|
||||
self._queryset = self._queryset.filter(lastviewed__date__lte=viewed_date).exclude(lastviewed=longTimeAgo)
|
||||
else:
|
||||
self._queryset = self._queryset.filter(lastviewed__date__gte=viewed_date).exclude(lastviewed=longTimeAgo)
|
||||
if self._viewedon_lte:
|
||||
self._queryset = self._queryset.filter(lastviewed__date__lte=self._viewedon_lte).exclude(lastviewed=longTimeAgo)
|
||||
elif self._viewedon_gte:
|
||||
self._queryset = self._queryset.filter(lastviewed__date__gte=self._viewedon_gte).exclude(lastviewed=longTimeAgo)
|
||||
|
||||
def _created_on_filter(self):
|
||||
if self._createdon:
|
||||
self._queryset = self._queryset.filter(created_at__date=self._createdon)
|
||||
elif self._createdon_lte:
|
||||
self._queryset = self._queryset.filter(created_at__date__lte=self._createdon_lte)
|
||||
elif self._createdon_gte:
|
||||
self._queryset = self._queryset.filter(created_at__date__gte=self._createdon_gte)
|
||||
|
||||
def _updated_on_filter(self):
|
||||
if self._updatedon:
|
||||
self._queryset = self._queryset.filter(updated_at__date__date=self._updatedon)
|
||||
elif self._updatedon_lte:
|
||||
self._queryset = self._queryset.filter(updated_at__date__lte=self._updatedon_lte)
|
||||
elif self._updatedon_gte:
|
||||
self._queryset = self._queryset.filter(updated_at__date__gte=self._updatedon_gte)
|
||||
|
||||
def _created_by_filter(self, created_by_user_id=None):
|
||||
if created_by_user_id is None:
|
||||
return
|
||||
self._queryset = self._queryset.filter(created_by__id=created_by_user_id)
|
||||
|
||||
def _new_recipes(self, new_days=7):
|
||||
# TODO make new days a user-setting
|
||||
@@ -307,9 +323,9 @@ class RecipeSearch():
|
||||
)
|
||||
self._queryset = self._queryset.annotate(recent=Coalesce(Max(Case(When(pk__in=num_recent_recipes.values('recipe'), then='viewlog__pk'))), Value(0)))
|
||||
|
||||
def _favorite_recipes(self, times_cooked=None):
|
||||
if self._sort_includes('favorite') or times_cooked:
|
||||
less_than = '-' in (str(times_cooked) or []) and not self._sort_includes('-favorite')
|
||||
def _favorite_recipes(self):
|
||||
if self._sort_includes('favorite') or self._timescooked or self._timescooked_gte or self._timescooked_lte:
|
||||
less_than = self._timescooked_lte and not self._sort_includes('-favorite')
|
||||
if less_than:
|
||||
default = 1000
|
||||
else:
|
||||
@@ -321,15 +337,13 @@ class RecipeSearch():
|
||||
.values('count')
|
||||
)
|
||||
self._queryset = self._queryset.annotate(favorite=Coalesce(Subquery(favorite_recipes), default))
|
||||
if times_cooked is None:
|
||||
return
|
||||
|
||||
if times_cooked == '0':
|
||||
if self._timescooked:
|
||||
self._queryset = self._queryset.filter(favorite=0)
|
||||
elif less_than:
|
||||
self._queryset = self._queryset.filter(favorite__lte=int(times_cooked.replace('-', ''))).exclude(favorite=0)
|
||||
else:
|
||||
self._queryset = self._queryset.filter(favorite__gte=int(times_cooked))
|
||||
elif self._timescooked_lte:
|
||||
self._queryset = self._queryset.filter(favorite__lte=int(self._timescooked_lte)).exclude(favorite=0)
|
||||
elif self._timescooked_gte:
|
||||
self._queryset = self._queryset.filter(favorite__gte=int(self._timescooked_gte))
|
||||
|
||||
def keyword_filters(self, **kwargs):
|
||||
if all([kwargs[x] is None for x in kwargs]):
|
||||
@@ -407,25 +421,16 @@ class RecipeSearch():
|
||||
units = [units]
|
||||
self._queryset = self._queryset.filter(steps__ingredients__unit__in=units)
|
||||
|
||||
def rating_filter(self, rating=None):
|
||||
if rating or self._sort_includes('rating'):
|
||||
lessthan = '-' in (rating or [])
|
||||
reverse = 'rating' in (self._sort_order or []) and '-rating' not in (self._sort_order or [])
|
||||
if lessthan or reverse:
|
||||
default = 100
|
||||
else:
|
||||
default = 0
|
||||
# TODO make ratings a settings user-only vs all-users
|
||||
self._queryset = self._queryset.annotate(rating=Round(Avg(Case(When(cooklog__created_by=self._request.user, then='cooklog__rating'), default=default))))
|
||||
if rating is None:
|
||||
return
|
||||
def rating_filter(self):
|
||||
if self._rating or self._rating_lte or self._rating_gte or self._sort_includes('rating'):
|
||||
self._queryset = self._queryset.annotate(rating=Round(Avg(Case(When(cooklog__created_by=self._request.user, then='cooklog__rating'), default=0))))
|
||||
|
||||
if rating == '0':
|
||||
self._queryset = self._queryset.filter(rating=0)
|
||||
elif lessthan:
|
||||
self._queryset = self._queryset.filter(rating__lte=int(rating[1:])).exclude(rating=0)
|
||||
else:
|
||||
self._queryset = self._queryset.filter(rating__gte=int(rating))
|
||||
if self._rating:
|
||||
self._queryset = self._queryset.filter(rating=round(int(self._rating)))
|
||||
elif self._rating_gte:
|
||||
self._queryset = self._queryset.filter(rating__gte=int(self._rating_gte))
|
||||
elif self._rating_lte:
|
||||
self._queryset = self._queryset.filter(rating__gte=int(self._rating_lte)).exclude(rating=0)
|
||||
|
||||
def internal_filter(self, internal=None):
|
||||
if not internal:
|
||||
@@ -535,11 +540,11 @@ class RecipeSearch():
|
||||
shopping_users = [*self._request.user.get_shopping_share(), self._request.user]
|
||||
|
||||
onhand_filter = (
|
||||
Q(steps__ingredients__food__onhand_users__in=shopping_users) # food onhand
|
||||
# or substitute food onhand
|
||||
| Q(steps__ingredients__food__substitute__onhand_users__in=shopping_users)
|
||||
| Q(steps__ingredients__food__in=self.__children_substitute_filter(shopping_users))
|
||||
| Q(steps__ingredients__food__in=self.__sibling_substitute_filter(shopping_users))
|
||||
Q(steps__ingredients__food__onhand_users__in=shopping_users) # food onhand
|
||||
# or substitute food onhand
|
||||
| Q(steps__ingredients__food__substitute__onhand_users__in=shopping_users)
|
||||
| Q(steps__ingredients__food__in=self.__children_substitute_filter(shopping_users))
|
||||
| Q(steps__ingredients__food__in=self.__sibling_substitute_filter(shopping_users))
|
||||
)
|
||||
makenow_recipes = Recipe.objects.annotate(
|
||||
count_food=Count('steps__ingredients__food__pk', filter=Q(steps__ingredients__food__isnull=False), distinct=True),
|
||||
|
||||
@@ -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])
|
||||
@@ -107,14 +106,14 @@ def get_from_scraper(scrape, request):
|
||||
|
||||
# assign image
|
||||
try:
|
||||
recipe_json['image'] = parse_image(scrape.image()) or None
|
||||
recipe_json['image_url'] = parse_image(scrape.image()) or None
|
||||
except Exception:
|
||||
recipe_json['image'] = None
|
||||
if not recipe_json['image']:
|
||||
recipe_json['image_url'] = None
|
||||
if not recipe_json['image_url']:
|
||||
try:
|
||||
recipe_json['image'] = parse_image(scrape.schema.data.get('image')) or ''
|
||||
recipe_json['image_url'] = parse_image(scrape.schema.data.get('image')) or ''
|
||||
except Exception:
|
||||
recipe_json['image'] = ''
|
||||
recipe_json['image_url'] = ''
|
||||
|
||||
# assign keywords
|
||||
try:
|
||||
@@ -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,23 +188,24 @@ 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
|
||||
|
||||
recipe_json['properties'] = []
|
||||
try:
|
||||
recipe_json['properties'] = get_recipe_properties(request.space, scrape.schema.nutrients())
|
||||
print(recipe_json['properties'])
|
||||
@@ -221,6 +228,13 @@ def get_recipe_properties(space, property_data):
|
||||
"property-proteins": "proteinContent",
|
||||
"property-fats": "fatContent",
|
||||
}
|
||||
|
||||
serving_size = 1
|
||||
try:
|
||||
serving_size = parse_servings(property_data['servingSize'])
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
recipe_properties = []
|
||||
for pt in PropertyType.objects.filter(space=space, open_data_slug__in=list(properties.keys())).all():
|
||||
for p in list(properties.keys()):
|
||||
@@ -231,7 +245,7 @@ def get_recipe_properties(space, property_data):
|
||||
'id': pt.id,
|
||||
'name': pt.name,
|
||||
},
|
||||
'property_amount': parse_servings(property_data[properties[p]]) / parse_servings(property_data['servingSize']),
|
||||
'property_amount': parse_servings(property_data[properties[p]]) / serving_size,
|
||||
})
|
||||
|
||||
return recipe_properties
|
||||
@@ -248,14 +262,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 +282,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 +382,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
|
||||
|
||||
@@ -417,9 +432,9 @@ def parse_keywords(keyword_json, request):
|
||||
if len(kw) != 0:
|
||||
kw = automation_engine.apply_keyword_automation(kw)
|
||||
if k := Keyword.objects.filter(name__iexact=kw, space=request.space).first():
|
||||
keywords.append({'label': str(k), 'name': k.name, 'id': k.id})
|
||||
keywords.append({'label': str(k), 'name': k.name, 'id': k.id, 'import_keyword': True})
|
||||
else:
|
||||
keywords.append({'label': kw, 'name': kw})
|
||||
keywords.append({'label': kw, 'name': kw, 'import_keyword': False})
|
||||
|
||||
return keywords
|
||||
|
||||
@@ -452,10 +467,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)
|
||||
|
||||
|
||||
@@ -479,7 +491,11 @@ def get_images_from_soup(soup, url):
|
||||
u = u.split('?')[0]
|
||||
filename = re.search(r'/([\w_-]+[.](jpg|jpeg|gif|png))$', u)
|
||||
if filename:
|
||||
if (('http' not in u) and (url)):
|
||||
if u.startswith('//'):
|
||||
# urls from e.g. ottolenghi.co.uk start with //
|
||||
u = 'https:' + u
|
||||
if ('http' not in u) and url:
|
||||
print(f'rewriting URL {u}')
|
||||
# sometimes an image source can be relative
|
||||
# if it is provide the base url
|
||||
u = '{}://{}{}'.format(prot, site, u)
|
||||
|
||||
@@ -12,7 +12,7 @@ class ScopeMiddleware:
|
||||
self.get_response = get_response
|
||||
|
||||
def __call__(self, request):
|
||||
prefix = settings.JS_REVERSE_SCRIPT_PREFIX or ''
|
||||
prefix = settings.SCRIPT_NAME or ''
|
||||
|
||||
# need to disable scopes for writing requests into userpref and enable for loading ?
|
||||
if request.path.startswith(prefix + '/api/user-preference/'):
|
||||
|
||||
@@ -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]
|
||||
@@ -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)
|
||||
@@ -113,7 +113,7 @@ class RecipeShoppingEditor():
|
||||
if not self.servings:
|
||||
self.servings = getattr(self.mealplan, 'servings', None) or getattr(self.recipe, 'servings', 1.0)
|
||||
|
||||
self._shopping_list_recipe = ShoppingListRecipe.objects.create(recipe=self.recipe, mealplan=self.mealplan, servings=self.servings)
|
||||
self._shopping_list_recipe = ShoppingListRecipe.objects.create(recipe=self.recipe, mealplan=self.mealplan, servings=self.servings, space=self.space, created_by=self.created_by)
|
||||
|
||||
if ingredients:
|
||||
self._add_ingredients(ingredients=ingredients)
|
||||
@@ -153,8 +153,9 @@ class RecipeShoppingEditor():
|
||||
return True
|
||||
|
||||
for sle in ShoppingListEntry.objects.filter(list_recipe=self._shopping_list_recipe):
|
||||
sle.amount = sle.ingredient.amount * Decimal(self._servings_factor)
|
||||
sle.save()
|
||||
if sle.ingredient: # TODO temporarily dont scale manual entries until ingredient_amount or some other base amount has been migrated to SLE
|
||||
sle.amount = sle.ingredient.amount * Decimal(self._servings_factor)
|
||||
sle.save()
|
||||
self._shopping_list_recipe.servings = self.servings
|
||||
self._shopping_list_recipe.save()
|
||||
return True
|
||||
|
||||
@@ -3,6 +3,8 @@ from gettext import gettext as _
|
||||
import bleach
|
||||
import markdown as md
|
||||
from jinja2 import Template, TemplateSyntaxError, UndefinedError
|
||||
from jinja2.exceptions import SecurityError
|
||||
from jinja2.sandbox import SandboxedEnvironment
|
||||
from markdown.extensions.tables import TableExtension
|
||||
|
||||
from cookbook.helper.mdx_attributes import MarkdownFormatExtension
|
||||
@@ -68,7 +70,7 @@ def render_instructions(step): # TODO deduplicate markdown cleanup code
|
||||
parsed_md = md.markdown(
|
||||
instructions,
|
||||
extensions=[
|
||||
'markdown.extensions.fenced_code', TableExtension(),
|
||||
'markdown.extensions.fenced_code', 'markdown.extensions.sane_lists', 'markdown.extensions.nl2br', TableExtension(),
|
||||
UrlizeExtension(), MarkdownFormatExtension()
|
||||
]
|
||||
)
|
||||
@@ -89,11 +91,13 @@ def render_instructions(step): # TODO deduplicate markdown cleanup code
|
||||
return f"<scalable-number v-bind:number='{bleach.clean(str(number))}' v-bind:factor='ingredient_factor'></scalable-number>"
|
||||
|
||||
try:
|
||||
template = Template(instructions)
|
||||
instructions = template.render(ingredients=ingredients, scale=scale)
|
||||
env = SandboxedEnvironment()
|
||||
instructions = env.from_string(instructions).render(ingredients=ingredients, scale=scale)
|
||||
except TemplateSyntaxError:
|
||||
return _('Could not parse template code.') + ' Error: Template Syntax broken'
|
||||
except UndefinedError:
|
||||
return _('Could not parse template code.') + ' Error: Undefined Error'
|
||||
except SecurityError:
|
||||
return _('Could not parse template code.') + ' Error: Security Error'
|
||||
|
||||
return instructions
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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)))
|
||||
|
||||
@@ -60,14 +60,15 @@ class CookBookApp(Integration):
|
||||
food=f, unit=u, amount=ingredient.get('amount', None), note=ingredient.get('note', None), original_text=ingredient.get('original_text', None), space=self.request.space,
|
||||
))
|
||||
|
||||
if len(images) > 0:
|
||||
try:
|
||||
url = images[0]
|
||||
if validators.url(url, public=True):
|
||||
try:
|
||||
for url in images:
|
||||
# import the first valid image which is not cookbookapp branding
|
||||
if validate_import_url(url) and not url.startswith("https://media.cookbookmanager.com/brand/"):
|
||||
response = requests.get(url)
|
||||
self.import_recipe_image(recipe, BytesIO(response.content))
|
||||
except Exception as e:
|
||||
print('failed to import image ', str(e))
|
||||
break
|
||||
except Exception as e:
|
||||
print('failed to import image ', str(e))
|
||||
|
||||
recipe.save()
|
||||
return recipe
|
||||
|
||||
@@ -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:
|
||||
|
||||
211
cookbook/integration/gourmet.py
Normal file
211
cookbook/integration/gourmet.py
Normal 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')
|
||||
@@ -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):
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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,23 @@ 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))
|
||||
if response.status_code == 200 and len(response.content) > 0:
|
||||
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')
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
import imghdr
|
||||
import json
|
||||
import re
|
||||
from io import BytesIO
|
||||
from zipfile import ZipFile
|
||||
|
||||
import requests
|
||||
import validators
|
||||
from PIL import Image
|
||||
|
||||
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,9 +126,9 @@ 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:
|
||||
if Image.open(BytesIO(response.content)).verify():
|
||||
self.import_recipe_image(recipe, BytesIO(response.content), filetype=get_filetype(file['originalPicture']))
|
||||
else:
|
||||
raise Exception("Original image failed to download.")
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
Binary file not shown.
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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 ""
|
||||
|
||||
Binary file not shown.
@@ -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-27 19:02+0000\n"
|
||||
"Last-Translator: Axel Breiterman <axelbreiterman@gmail.com>\n"
|
||||
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
|
||||
"PO-Revision-Date: 2025-06-23 08:28+0000\n"
|
||||
"Last-Translator: Ángel <1024mb@users.noreply.translate.tandoor.dev>\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 5.4.2\n"
|
||||
"X-Generator: Weblate 5.8.4\n"
|
||||
|
||||
#: .\cookbook\forms.py:45
|
||||
msgid ""
|
||||
@@ -66,31 +66,30 @@ msgid ""
|
||||
"To prevent duplicates recipes with the same name as existing ones are "
|
||||
"ignored. Check this box to import everything."
|
||||
msgstr ""
|
||||
"Para evitar duplicados, las recetas con el mismo nombre serán ignoradas. "
|
||||
"Marca esta opción para importar todas las recetas."
|
||||
"Para evitar duplicados, las recetas con el mismo nombre que las ya "
|
||||
"existentes serán ignoradas. Marca esta casilla para importar todo."
|
||||
|
||||
#: .\cookbook\forms.py:143
|
||||
msgid "Add your comment: "
|
||||
msgstr "Añada su comentario: "
|
||||
msgstr "Añade tu comentario: "
|
||||
|
||||
#: .\cookbook\forms.py:151
|
||||
msgid "Leave empty for dropbox and enter app password for nextcloud."
|
||||
msgstr ""
|
||||
"Déjelo vacío para Dropbox e ingrese la contraseña de la aplicación para "
|
||||
"nextcloud."
|
||||
"Déjalo vacío para Dropbox o ingresa la contraseña de la aplicación para "
|
||||
"Nextcloud."
|
||||
|
||||
#: .\cookbook\forms.py:154
|
||||
msgid "Leave empty for nextcloud and enter api token for dropbox."
|
||||
msgstr ""
|
||||
"Déjelo en blanco para nextcloud e ingrese el token de api para dropbox."
|
||||
msgstr "Déjalo vacío para Nextcloud o ingresa el token API para 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 ""
|
||||
"Dejar vació para Dropbox e introducir sólo la URL base para Nextcloud "
|
||||
"(<code>/remote.php/webdav/</code> se añade automáticamente)"
|
||||
"Déjalo vacío para Dropbox o ingresa solo la URL base para Nextcloud "
|
||||
"(<code>/remote.php/webdav/</code> es añadido automáticamente)"
|
||||
|
||||
#: .\cookbook\forms.py:188
|
||||
msgid ""
|
||||
@@ -98,15 +97,16 @@ msgid ""
|
||||
"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"
|
||||
"profile\">Token de acceso de larga duración</a> para tu instancia de "
|
||||
"HomeAssistant"
|
||||
|
||||
#: .\cookbook\forms.py:193
|
||||
msgid "Something like http://homeassistant.local:8123/api"
|
||||
msgstr "Algo similar a http://homeassistant.local:8123/api"
|
||||
msgstr "Algo como http://homeassistant.local:8123/api"
|
||||
|
||||
#: .\cookbook\forms.py:205
|
||||
msgid "http://homeassistant.local:8123/api for example"
|
||||
msgstr "por ejemplo http://homeassistant.local:8123/api for example"
|
||||
msgstr "Por ejemplo http://homeassistant.local:8123/api"
|
||||
|
||||
#: .\cookbook\forms.py:222 .\cookbook\views\edit.py:117
|
||||
msgid "Storage"
|
||||
@@ -283,33 +283,31 @@ msgstr "Ha alcanzado el número máximo de recetas para su espacio."
|
||||
msgid "You have more users than allowed in your space."
|
||||
msgstr "Tenés mas usuarios que los permitidos en tu espacio"
|
||||
|
||||
#: .\cookbook\helper\recipe_url_import.py:304
|
||||
#, fuzzy
|
||||
#| msgid "Use fractions"
|
||||
#: .\cookbook\helper\recipe_url_import.py:310
|
||||
msgid "reverse rotation"
|
||||
msgstr "Usar fracciones"
|
||||
msgstr "rotación inversa"
|
||||
|
||||
#: .\cookbook\helper\recipe_url_import.py:305
|
||||
#: .\cookbook\helper\recipe_url_import.py:311
|
||||
msgid "careful rotation"
|
||||
msgstr ""
|
||||
msgstr "rotación cuidadosa"
|
||||
|
||||
#: .\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 "sous-vide"
|
||||
|
||||
@@ -398,8 +396,9 @@ msgid "Section"
|
||||
msgstr "Sección"
|
||||
|
||||
#: .\cookbook\management\commands\fix_duplicate_properties.py:15
|
||||
#, fuzzy
|
||||
msgid "Fixes foods with "
|
||||
msgstr ""
|
||||
msgstr "Corrige alimentos con "
|
||||
|
||||
#: .\cookbook\management\commands\rebuildindex.py:14
|
||||
msgid "Rebuilds full text search index on Recipe"
|
||||
@@ -431,21 +430,19 @@ 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"
|
||||
|
||||
#: .\cookbook\migrations\0190_auto_20230525_1506.py:17
|
||||
#, fuzzy
|
||||
#| msgid "Fats"
|
||||
msgid "Fat"
|
||||
msgstr "Grasas"
|
||||
msgstr "Grasa"
|
||||
|
||||
#: .\cookbook\migrations\0190_auto_20230525_1506.py:17
|
||||
#: .\cookbook\migrations\0190_auto_20230525_1506.py:18
|
||||
#: .\cookbook\migrations\0190_auto_20230525_1506.py:19
|
||||
msgid "g"
|
||||
msgstr ""
|
||||
msgstr "gr."
|
||||
|
||||
#: .\cookbook\migrations\0190_auto_20230525_1506.py:18
|
||||
msgid "Carbohydrates"
|
||||
@@ -468,48 +465,48 @@ msgid ""
|
||||
"Maximum file storage for space in MB. 0 for unlimited, -1 to disable file "
|
||||
"upload."
|
||||
msgstr ""
|
||||
"Almacenamiento máximo de archivos para el espacio en MB. 0 para ilimitado, -"
|
||||
"1 para desactivar la carga de archivos."
|
||||
|
||||
#: .\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
|
||||
#, fuzzy
|
||||
#| msgid "Merge"
|
||||
#: .\cookbook\models.py:918
|
||||
msgid "Allergen"
|
||||
msgstr "Combinar"
|
||||
msgstr "Alérgeno"
|
||||
|
||||
#: .\cookbook\models.py:920
|
||||
#: .\cookbook\models.py:919
|
||||
msgid "Price"
|
||||
msgstr ""
|
||||
msgstr "Precio"
|
||||
|
||||
#: .\cookbook\models.py:920
|
||||
#: .\cookbook\models.py:919
|
||||
msgid "Goal"
|
||||
msgstr ""
|
||||
msgstr "Objetivo"
|
||||
|
||||
#: .\cookbook\models.py:1408 .\cookbook\templates\search_info.html:28
|
||||
msgid "Simple"
|
||||
@@ -532,54 +529,40 @@ msgid "Food Alias"
|
||||
msgstr "Alias de la Comida"
|
||||
|
||||
#: .\cookbook\models.py:1468
|
||||
#, fuzzy
|
||||
#| msgid "Units"
|
||||
msgid "Unit Alias"
|
||||
msgstr "Unidades"
|
||||
msgstr "Alias de unidad"
|
||||
|
||||
#: .\cookbook\models.py:1469
|
||||
#, fuzzy
|
||||
#| msgid "Keywords"
|
||||
msgid "Keyword Alias"
|
||||
msgstr "Palabras clave"
|
||||
msgstr "Alias de palabra clave"
|
||||
|
||||
#: .\cookbook\models.py:1470
|
||||
#, fuzzy
|
||||
#| msgid "Description"
|
||||
msgid "Description Replace"
|
||||
msgstr "Descripción"
|
||||
msgstr "Reemplazo de descripción"
|
||||
|
||||
#: .\cookbook\models.py:1471
|
||||
#, fuzzy
|
||||
#| msgid "Instructions"
|
||||
msgid "Instruction Replace"
|
||||
msgstr "Instrucciones"
|
||||
msgstr "Reemplazo de instrucciones"
|
||||
|
||||
#: .\cookbook\models.py:1472
|
||||
#, fuzzy
|
||||
#| msgid "New Unit"
|
||||
msgid "Never Unit"
|
||||
msgstr "Nueva Unidad"
|
||||
msgstr "Unidad prohibida"
|
||||
|
||||
#: .\cookbook\models.py:1473
|
||||
msgid "Transpose Words"
|
||||
msgstr ""
|
||||
msgstr "Transponer palabras"
|
||||
|
||||
#: .\cookbook\models.py:1474
|
||||
#, fuzzy
|
||||
#| msgid "Food Alias"
|
||||
msgid "Food Replace"
|
||||
msgstr "Alias de la Comida"
|
||||
msgstr "Reemplazo de alimento"
|
||||
|
||||
#: .\cookbook\models.py:1475
|
||||
#, fuzzy
|
||||
#| msgid "Description"
|
||||
msgid "Unit Replace"
|
||||
msgstr "Descripción"
|
||||
msgstr "Reemplazo de unidad"
|
||||
|
||||
#: .\cookbook\models.py:1476
|
||||
msgid "Name Replace"
|
||||
msgstr ""
|
||||
msgstr "Reemplazo de nombre"
|
||||
|
||||
#: .\cookbook\models.py:1503 .\cookbook\views\delete.py:40
|
||||
#: .\cookbook\views\edit.py:210 .\cookbook\views\new.py:39
|
||||
@@ -587,10 +570,8 @@ msgid "Recipe"
|
||||
msgstr "Receta"
|
||||
|
||||
#: .\cookbook\models.py:1504
|
||||
#, fuzzy
|
||||
#| msgid "Food"
|
||||
msgid "Food"
|
||||
msgstr "Comida"
|
||||
msgstr "Alimento"
|
||||
|
||||
#: .\cookbook\models.py:1505 .\cookbook\templates\base.html:149
|
||||
msgid "Keyword"
|
||||
@@ -648,22 +629,26 @@ msgstr "Invitación para Tandoor Recipes"
|
||||
|
||||
#: .\cookbook\serializer.py:1426
|
||||
msgid "Existing shopping list to update"
|
||||
msgstr ""
|
||||
msgstr "Lista de compras existente para actualizar"
|
||||
|
||||
#: .\cookbook\serializer.py:1428
|
||||
msgid ""
|
||||
"List of ingredient IDs from the recipe to add, if not provided all "
|
||||
"ingredients will be added."
|
||||
msgstr ""
|
||||
"Lista de IDs de ingredientes de la receta para agregar; si no se "
|
||||
"proporciona, se agregarán todos los ingredientes."
|
||||
|
||||
#: .\cookbook\serializer.py:1430
|
||||
msgid ""
|
||||
"Providing a list_recipe ID and servings of 0 will delete that shopping list."
|
||||
msgstr ""
|
||||
"Proporcionar un ID list_recipe y porciones igual a 0 eliminará esa lista de "
|
||||
"compras."
|
||||
|
||||
#: .\cookbook\serializer.py:1439
|
||||
msgid "Amount of food to add to the shopping list"
|
||||
msgstr ""
|
||||
msgstr "Cantidad de alimento a agregar a la lista de compras"
|
||||
|
||||
#: .\cookbook\serializer.py:1441
|
||||
msgid "ID of unit to use for the shopping list"
|
||||
@@ -2010,14 +1995,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"
|
||||
|
||||
@@ -2039,7 +2024,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!"
|
||||
|
||||
@@ -2092,20 +2078,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"
|
||||
@@ -2117,19 +2116,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"
|
||||
@@ -2139,282 +2138,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
|
||||
@@ -2422,11 +2421,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"
|
||||
|
||||
@@ -2566,7 +2565,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!"
|
||||
|
||||
@@ -2605,17 +2604,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"
|
||||
@@ -2633,7 +2636,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 "
|
||||
@@ -2648,55 +2651,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"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -13,17 +13,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 13:59+0000\n"
|
||||
"Last-Translator: Anthony BARRIER <barrier.anthony@gmail.com>\n"
|
||||
"Language-Team: French <http://translate.tandoor.dev/projects/tandoor/recipes-"
|
||||
"backend/fr/>\n"
|
||||
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
|
||||
"PO-Revision-Date: 2025-08-10 11:36+0000\n"
|
||||
"Last-Translator: Enzo La Rafale <enzo.chaussivert@gmail.com>\n"
|
||||
"Language-Team: French <http://translate.tandoor.dev/projects/tandoor/"
|
||||
"recipes-backend/fr/>\n"
|
||||
"Language: fr\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.8.4\n"
|
||||
|
||||
#: .\cookbook\forms.py:45
|
||||
msgid ""
|
||||
@@ -76,8 +76,7 @@ msgstr "Ajoutez votre commentaire : "
|
||||
#: .\cookbook\forms.py:151
|
||||
msgid "Leave empty for dropbox and enter app password for nextcloud."
|
||||
msgstr ""
|
||||
"Laissez vide pour Dropbox et renseignez votre mot de passe d’application "
|
||||
"pour Nextcloud."
|
||||
"Laissez vide pour Dropbox et renseignez votre mot de passe pour Nextcloud."
|
||||
|
||||
#: .\cookbook\forms.py:154
|
||||
msgid "Leave empty for nextcloud and enter api token for dropbox."
|
||||
@@ -137,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 n’est pas requise mais si elle est renseignée, le lien "
|
||||
"Une adresse mail n’est pas requise, mais si elle est renseignée, le lien "
|
||||
"d’invitation sera envoyé à l’utilisateur."
|
||||
|
||||
#: .\cookbook\forms.py:287
|
||||
@@ -170,16 +169,16 @@ msgid ""
|
||||
"Use fuzzy matching on units, keywords and ingredients when editing and "
|
||||
"importing recipes."
|
||||
msgstr ""
|
||||
"Utilisez la correspondance floue sur les unités, les mots-clés et les "
|
||||
"ingrédients lors de l’édition et de l’importation de recettes."
|
||||
"Employez la correspondance approximative pour les unités, les mots-clés et "
|
||||
"les ingrédients pendant l'édition et l'importation des recettes."
|
||||
|
||||
#: .\cookbook\forms.py:342
|
||||
msgid ""
|
||||
"Fields to search ignoring accents. Selecting this option can improve or "
|
||||
"degrade search quality depending on language"
|
||||
msgstr ""
|
||||
"Champs à rechercher en ignorant les accents. La sélection de cette option "
|
||||
"peut améliorer ou dégrader la qualité de la recherche en fonction de la "
|
||||
"La recherche de champs sans tenir compte des accents peut soit améliorer "
|
||||
"soit détériorer la qualité des résultats de recherche, cela dépend de la "
|
||||
"langue"
|
||||
|
||||
#: .\cookbook\forms.py:343
|
||||
@@ -187,17 +186,18 @@ msgid ""
|
||||
"Fields to search for partial matches. (e.g. searching for 'Pie' will return "
|
||||
"'pie' and 'piece' and 'soapie')"
|
||||
msgstr ""
|
||||
"Champs à rechercher pour les correspondances partielles. (par exemple, la "
|
||||
"recherche de « Tarte » renverra « tarte », « tartelette » et « tartes »)"
|
||||
"Cherchez des champs pour des correspondances partielles. Par exemple : "
|
||||
"rechercher \"Tarte\" pourrait retourner \"tarte\", \"tartelette\", et "
|
||||
"\"tartes\""
|
||||
|
||||
#: .\cookbook\forms.py:344
|
||||
msgid ""
|
||||
"Fields to search for beginning of word matches. (e.g. searching for 'sa' "
|
||||
"will return 'salad' and 'sandwich')"
|
||||
msgstr ""
|
||||
"Champs permettant de rechercher les correspondances de début de mot (par "
|
||||
"exemple, si vous recherchez « sa », vous obtiendrez « salade » et "
|
||||
"« sandwich»)"
|
||||
"Les champs de recherche conçus pour trouver des correspondances en début de "
|
||||
"mot vous permettront, par exemple, de saisir « sa » et d'obtenir des "
|
||||
"résultats tels que « salade » et « sandwich »"
|
||||
|
||||
#: .\cookbook\forms.py:345
|
||||
msgid ""
|
||||
@@ -291,31 +291,31 @@ msgstr ""
|
||||
"Le nombre d’utilisateurs dans votre groupe dépasse le nombre d’utilisateurs "
|
||||
"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"
|
||||
|
||||
@@ -405,7 +405,7 @@ msgstr "Rubrique"
|
||||
|
||||
#: .\cookbook\management\commands\fix_duplicate_properties.py:15
|
||||
msgid "Fixes foods with "
|
||||
msgstr ""
|
||||
msgstr "Corriger les aliments avec "
|
||||
|
||||
#: .\cookbook\management\commands\rebuildindex.py:14
|
||||
msgid "Rebuilds full text search index on Recipe"
|
||||
@@ -437,13 +437,11 @@ 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"
|
||||
|
||||
#: .\cookbook\migrations\0190_auto_20230525_1506.py:17
|
||||
#, fuzzy
|
||||
#| msgid "Fats"
|
||||
msgid "Fat"
|
||||
msgstr "Matières grasses"
|
||||
|
||||
@@ -451,7 +449,7 @@ msgstr "Matières grasses"
|
||||
#: .\cookbook\migrations\0190_auto_20230525_1506.py:18
|
||||
#: .\cookbook\migrations\0190_auto_20230525_1506.py:19
|
||||
msgid "g"
|
||||
msgstr ""
|
||||
msgstr "g"
|
||||
|
||||
#: .\cookbook\migrations\0190_auto_20230525_1506.py:18
|
||||
msgid "Carbohydrates"
|
||||
@@ -467,7 +465,7 @@ msgstr "Calories"
|
||||
|
||||
#: .\cookbook\migrations\0190_auto_20230525_1506.py:20
|
||||
msgid "kcal"
|
||||
msgstr ""
|
||||
msgstr "kcal"
|
||||
|
||||
#: .\cookbook\models.py:325
|
||||
msgid ""
|
||||
@@ -477,47 +475,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 d’une é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
|
||||
#, fuzzy
|
||||
#| msgid "Merge"
|
||||
#: .\cookbook\models.py:918
|
||||
msgid "Allergen"
|
||||
msgstr "Fusionner"
|
||||
msgstr "Allergène"
|
||||
|
||||
#: .\cookbook\models.py:920
|
||||
#: .\cookbook\models.py:919
|
||||
msgid "Price"
|
||||
msgstr ""
|
||||
msgstr "Prix"
|
||||
|
||||
#: .\cookbook\models.py:920
|
||||
#: .\cookbook\models.py:919
|
||||
msgid "Goal"
|
||||
msgstr ""
|
||||
msgstr "Objectif"
|
||||
|
||||
#: .\cookbook\models.py:1408 .\cookbook\templates\search_info.html:28
|
||||
msgid "Simple"
|
||||
@@ -556,30 +552,24 @@ msgid "Instruction Replace"
|
||||
msgstr "Remplacer l'instruction"
|
||||
|
||||
#: .\cookbook\models.py:1472
|
||||
#, fuzzy
|
||||
#| msgid "New Unit"
|
||||
msgid "Never Unit"
|
||||
msgstr "Nouvelle unité"
|
||||
msgstr "Aucune unité"
|
||||
|
||||
#: .\cookbook\models.py:1473
|
||||
msgid "Transpose Words"
|
||||
msgstr ""
|
||||
msgstr "Transposer les mots"
|
||||
|
||||
#: .\cookbook\models.py:1474
|
||||
#, fuzzy
|
||||
#| msgid "Food Alias"
|
||||
msgid "Food Replace"
|
||||
msgstr "Aliment équivalent"
|
||||
msgstr "Aliment alternatif"
|
||||
|
||||
#: .\cookbook\models.py:1475
|
||||
#, fuzzy
|
||||
#| msgid "Description Replace"
|
||||
msgid "Unit Replace"
|
||||
msgstr "Remplacer la Description"
|
||||
msgstr "Remplacer l'unité"
|
||||
|
||||
#: .\cookbook\models.py:1476
|
||||
msgid "Name Replace"
|
||||
msgstr ""
|
||||
msgstr "Remplacer le nom"
|
||||
|
||||
#: .\cookbook\models.py:1503 .\cookbook\views\delete.py:40
|
||||
#: .\cookbook\views\edit.py:210 .\cookbook\views\new.py:39
|
||||
@@ -1039,13 +1029,11 @@ msgstr "Exporter"
|
||||
|
||||
#: .\cookbook\templates\base.html:287
|
||||
msgid "Properties"
|
||||
msgstr ""
|
||||
msgstr "Propriétés"
|
||||
|
||||
#: .\cookbook\templates\base.html:301 .\cookbook\views\lists.py:255
|
||||
#, fuzzy
|
||||
#| msgid "Account Connections"
|
||||
msgid "Unit Conversions"
|
||||
msgstr "Comptes connectés"
|
||||
msgstr "Conversions d'unités"
|
||||
|
||||
#: .\cookbook\templates\base.html:318 .\cookbook\templates\index.html:47
|
||||
msgid "Import Recipe"
|
||||
@@ -1065,10 +1053,8 @@ msgid "Space Settings"
|
||||
msgstr "Paramètres de groupe"
|
||||
|
||||
#: .\cookbook\templates\base.html:340
|
||||
#, fuzzy
|
||||
#| msgid "External Recipes"
|
||||
msgid "External Connectors"
|
||||
msgstr "Recettes externes"
|
||||
msgstr "Connecteurs externes"
|
||||
|
||||
#: .\cookbook\templates\base.html:345 .\cookbook\templates\system.html:13
|
||||
msgid "System"
|
||||
@@ -1532,10 +1518,8 @@ msgid "Back"
|
||||
msgstr "Retour"
|
||||
|
||||
#: .\cookbook\templates\property_editor.html:7
|
||||
#, fuzzy
|
||||
#| msgid "Ingredient Editor"
|
||||
msgid "Property Editor"
|
||||
msgstr "Éditeur d’ingrédients"
|
||||
msgstr "Éditeur de propriété"
|
||||
|
||||
#: .\cookbook\templates\recipe_view.html:36
|
||||
msgid "Comments"
|
||||
@@ -2013,10 +1997,8 @@ msgid "Sign in using"
|
||||
msgstr "Se connecter avec"
|
||||
|
||||
#: .\cookbook\templates\space_manage.html:7
|
||||
#, fuzzy
|
||||
#| msgid "Space Membership"
|
||||
msgid "Space Management"
|
||||
msgstr "Adhésion à l'espace"
|
||||
msgstr "Gestion de l'espace"
|
||||
|
||||
#: .\cookbook\templates\space_manage.html:26
|
||||
msgid "Space:"
|
||||
@@ -2112,20 +2094,25 @@ msgid ""
|
||||
"script to generate version information (done automatically in docker).\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
" Vous devez exécuter <code>version.py</code> dans votre script de "
|
||||
"mise à jour pour générer les informations de version (automatique avec "
|
||||
"docker).\n"
|
||||
" "
|
||||
|
||||
#: .\cookbook\templates\system.html:46
|
||||
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 +2133,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 +2185,36 @@ msgstr ""
|
||||
" "
|
||||
|
||||
#: .\cookbook\templates\system.html:86
|
||||
msgid "Allowed Hosts"
|
||||
msgstr "Hôtes autorisés"
|
||||
|
||||
#: .\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"
|
||||
" Votre configuration autorise tous les hôtes, cela ok dans "
|
||||
"certaines installations mais évité. Veuillez consulter les documentations à "
|
||||
"ce sujet.\n"
|
||||
" "
|
||||
|
||||
#: .\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
|
||||
#, fuzzy
|
||||
#| msgid "Use fractions"
|
||||
#: .\cookbook\templates\system.html:110 .\cookbook\templates\system.html:127
|
||||
msgid "Migrations"
|
||||
msgstr "Utiliser les fractions"
|
||||
msgstr "Migrations"
|
||||
|
||||
#: .\cookbook\templates\system.html:105
|
||||
#: .\cookbook\templates\system.html:116
|
||||
msgid ""
|
||||
"\n"
|
||||
" Migrations should never fail!\n"
|
||||
@@ -2221,125 +2225,131 @@ msgid ""
|
||||
"issue.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
" Les migrations de données ne devraient jamais échouer!\n"
|
||||
" Les échecs de migrations vont causer des problèmes de "
|
||||
"fonctionnement majeurs dans l’application..\n"
|
||||
" Si une migration échoue, vérifiez que vous êtes sur la dernière "
|
||||
"version et si c'est le cas veuillez créer un ticket sur GitHub avec le "
|
||||
"contenu du journal de migration.\n"
|
||||
" "
|
||||
|
||||
#: .\cookbook\templates\system.html:171
|
||||
#: .\cookbook\templates\system.html:182
|
||||
msgid "False"
|
||||
msgstr ""
|
||||
msgstr "Faux"
|
||||
|
||||
#: .\cookbook\templates\system.html:171
|
||||
#: .\cookbook\templates\system.html:182
|
||||
msgid "True"
|
||||
msgstr ""
|
||||
msgstr "Vrai"
|
||||
|
||||
#: .\cookbook\templates\system.html:196
|
||||
#: .\cookbook\templates\system.html:207
|
||||
msgid "Hide"
|
||||
msgstr ""
|
||||
msgstr "Cacher"
|
||||
|
||||
#: .\cookbook\templates\system.html:199
|
||||
#, fuzzy
|
||||
#| msgid "Show Log"
|
||||
#: .\cookbook\templates\system.html:210
|
||||
msgid "Show"
|
||||
msgstr "Afficher le journal"
|
||||
msgstr "Afficher"
|
||||
|
||||
#: .\cookbook\templates\url_import.html:8
|
||||
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 n’existe aucun(e) {self.basename} avec l’identifiant {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 n’existe aucun(e) {self.basename} avec l’id {target}"
|
||||
|
||||
#: .\cookbook\views\api.py:251
|
||||
#: .\cookbook\views\api.py:250
|
||||
msgid "Cannot merge with child object!"
|
||||
msgstr "Impossible de fusionner avec l’objet 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 n’existe aucun(e) {self.basename} avec l’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 é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 ""
|
||||
msgstr "Filtrer les repas depuis la date (incluse) avec le format YYYY-MM-DD."
|
||||
|
||||
#: .\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 ""
|
||||
"Filtrer les plannings de repas depuis la date (incluse) avec le format YYYY-"
|
||||
"MM-DD."
|
||||
|
||||
#: .\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 ""
|
||||
"Identifiant de la recette dont fait partie une étape. Pour plusieurs "
|
||||
"Filtrer le planning des repas avec l'identifiant MealType. 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 +2357,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 +2365,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 +2435,137 @@ 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 ""
|
||||
"ID du livre dans lequel une recette doit se trouver. Pour plusieurs "
|
||||
"paramètres de répétition."
|
||||
|
||||
#: .\cookbook\views\api.py:924
|
||||
#: .\cookbook\views\api.py:923
|
||||
msgid "Book IDs, repeat for multiple. Return recipes with any of the books"
|
||||
msgstr ""
|
||||
"IDs de livre, répéter pour plusieurs livres. Renvoie les recettes dans "
|
||||
"n'importe quel livre."
|
||||
|
||||
#: .\cookbook\views\api.py:925
|
||||
#: .\cookbook\views\api.py:924
|
||||
msgid "Book IDs, repeat for multiple. Return recipes with all of the books."
|
||||
msgstr ""
|
||||
"IDs de livre, répéter pour plusieurs livres. Renvoie les recettes dans tous "
|
||||
"les livre."
|
||||
|
||||
#: .\cookbook\views\api.py:926
|
||||
#: .\cookbook\views\api.py:925
|
||||
#, fuzzy
|
||||
msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books."
|
||||
msgstr ""
|
||||
"Identifiants de livres : répéter pour plusieurs. Exclure les recettes de "
|
||||
"l'un des livres."
|
||||
|
||||
#: .\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 d’URL."
|
||||
|
||||
#: .\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 "L’importation n’est 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 +2573,11 @@ msgstr ""
|
||||
"Cette fonctionnalité n’est 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 +2714,7 @@ msgid "There was an error importing this recipe!"
|
||||
msgstr "Une erreur est survenue lors de l’importation 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é n’est pas disponible dans la version d’essai !"
|
||||
|
||||
@@ -2741,17 +2760,21 @@ msgid "Fuzzy search is not compatible with this search method!"
|
||||
msgstr ""
|
||||
"La recherche floue n’est 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 +2793,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 +2809,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 "L’utilisateur a été créé, veuillez vous connecter !"
|
||||
|
||||
#: .\cookbook\views\views.py:388
|
||||
#: .\cookbook\views\views.py:393
|
||||
msgid "Malformed Invite Link supplied!"
|
||||
msgstr "Le lien d’invitation 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 d’invitation 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 +2837,7 @@ msgstr ""
|
||||
"Le signalement de liens partagés n’est pas autorisé pour cette installation. "
|
||||
"Veuillez contacter l’administrateur 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 +2845,23 @@ msgstr ""
|
||||
"Le lien de partage de la recette a été désactivé ! Pour plus d’informations, "
|
||||
"veuillez contacter l’administrateur 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"
|
||||
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
2543
cookbook/locale/hr/LC_MESSAGES/django.po
Normal file
2543
cookbook/locale/hr/LC_MESSAGES/django.po
Normal file
File diff suppressed because it is too large
Load Diff
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
@@ -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: 2023-08-19 21:36+0000\n"
|
||||
"Last-Translator: NeoID <neoid@animenord.com>\n"
|
||||
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
|
||||
"PO-Revision-Date: 2025-01-26 05:58+0000\n"
|
||||
"Last-Translator: Ole Martin Ruud <nett@barskern.no>\n"
|
||||
"Language-Team: Norwegian Bokmål <http://translate.tandoor.dev/projects/"
|
||||
"tandoor/recipes-backend/nb_NO/>\n"
|
||||
"Language: nb_NO\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 4.15\n"
|
||||
"X-Generator: Weblate 5.8.4\n"
|
||||
|
||||
#: .\cookbook\forms.py:45
|
||||
msgid ""
|
||||
@@ -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 ""
|
||||
|
||||
@@ -326,10 +326,8 @@ msgid "Imported %s recipes."
|
||||
msgstr "Importerte %s oppskrifter."
|
||||
|
||||
#: .\cookbook\integration\openeats.py:28
|
||||
#, fuzzy
|
||||
#| msgid "Recipes"
|
||||
msgid "Recipe source:"
|
||||
msgstr "Oppskrifter"
|
||||
msgstr "Oppskriftskilde:"
|
||||
|
||||
#: .\cookbook\integration\paprika.py:49
|
||||
msgid "Notes"
|
||||
@@ -400,7 +398,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 +436,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 ""
|
||||
|
||||
@@ -555,7 +553,7 @@ msgstr "Oppskrift"
|
||||
|
||||
#: .\cookbook\models.py:1504
|
||||
msgid "Food"
|
||||
msgstr ""
|
||||
msgstr "Mat"
|
||||
|
||||
#: .\cookbook\models.py:1505 .\cookbook\templates\base.html:149
|
||||
msgid "Keyword"
|
||||
@@ -846,10 +844,8 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: .\cookbook\templates\account\password_reset.html:32
|
||||
#, fuzzy
|
||||
#| msgid "Password reset is not implemented for the time being!"
|
||||
msgid "Password reset is disabled on this instance."
|
||||
msgstr "Det er foreløpig ikke implementert funksjon for å nullstille passord!"
|
||||
msgstr "Nullstilling av passord er skrudd av for denne instansen."
|
||||
|
||||
#: .\cookbook\templates\account\password_reset_done.html:25
|
||||
msgid ""
|
||||
@@ -912,7 +908,7 @@ msgstr ""
|
||||
#: .\cookbook\templates\account\signup.html:48
|
||||
#: .\cookbook\templates\socialaccount\signup.html:39
|
||||
msgid "and"
|
||||
msgstr ""
|
||||
msgstr "og"
|
||||
|
||||
#: .\cookbook\templates\account\signup.html:52
|
||||
#: .\cookbook\templates\socialaccount\signup.html:43
|
||||
@@ -946,8 +942,6 @@ msgid "Recipes"
|
||||
msgstr "Oppskrifter"
|
||||
|
||||
#: .\cookbook\templates\base.html:161 .\cookbook\views\lists.py:120
|
||||
#, fuzzy
|
||||
#| msgid "New Food"
|
||||
msgid "Foods"
|
||||
msgstr "Ny matvare"
|
||||
|
||||
@@ -989,10 +983,8 @@ msgstr "Historikk"
|
||||
#: .\cookbook\templates\base.html:263
|
||||
#: .\cookbook\templates\ingredient_editor.html:7
|
||||
#: .\cookbook\templates\ingredient_editor.html:13
|
||||
#, fuzzy
|
||||
#| msgid "Ingredients"
|
||||
msgid "Ingredient Editor"
|
||||
msgstr "Ingredienser"
|
||||
msgstr "Ingrediensredigerer"
|
||||
|
||||
#: .\cookbook\templates\base.html:275
|
||||
#: .\cookbook\templates\export_response.html:7
|
||||
@@ -1002,7 +994,7 @@ msgstr "Eksporter"
|
||||
|
||||
#: .\cookbook\templates\base.html:287
|
||||
msgid "Properties"
|
||||
msgstr ""
|
||||
msgstr "Egenskaper"
|
||||
|
||||
#: .\cookbook\templates\base.html:301 .\cookbook\views\lists.py:255
|
||||
msgid "Unit Conversions"
|
||||
@@ -1179,7 +1171,7 @@ msgstr ""
|
||||
|
||||
#: .\cookbook\templates\generic\delete_template.html:27
|
||||
msgid "Protected"
|
||||
msgstr ""
|
||||
msgstr "Beskyttet"
|
||||
|
||||
#: .\cookbook\templates\generic\delete_template.html:42
|
||||
msgid "Cascade"
|
||||
@@ -1935,14 +1927,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 ""
|
||||
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"
|
||||
|
||||
@@ -1957,7 +1949,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 +1987,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 +2023,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 +2045,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 +2456,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 +2493,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
@@ -10,19 +10,19 @@ 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: Tomasz Klimczak <klemensble@gmail.com>\n"
|
||||
"Language-Team: Polish <http://translate.tandoor.dev/projects/tandoor/recipes-"
|
||||
"backend/pl/>\n"
|
||||
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
|
||||
"PO-Revision-Date: 2025-01-26 05:58+0000\n"
|
||||
"Last-Translator: Dominik Ruczajewski <slick.moose.dev@gmail.com>\n"
|
||||
"Language-Team: Polish <http://translate.tandoor.dev/projects/tandoor/"
|
||||
"recipes-backend/pl/>\n"
|
||||
"Language: pl\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n"
|
||||
"%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n"
|
||||
"%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
|
||||
"X-Generator: Weblate 5.4.2\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && ("
|
||||
"n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && "
|
||||
"n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
|
||||
"X-Generator: Weblate 5.8.4\n"
|
||||
|
||||
#: .\cookbook\forms.py:45
|
||||
msgid ""
|
||||
@@ -65,6 +65,8 @@ msgid ""
|
||||
"To prevent duplicates recipes with the same name as existing ones are "
|
||||
"ignored. Check this box to import everything."
|
||||
msgstr ""
|
||||
"Aby zapobiec duplikatom, przepisy o tej samej nazwie co istniejące zostaną "
|
||||
"pominięte. Zaznacz to pole, aby zaimportować wszystko."
|
||||
|
||||
#: .\cookbook\forms.py:143
|
||||
msgid "Add your comment: "
|
||||
@@ -91,14 +93,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\">Long Lived Access Token</a> dla Twojej instancji Home Assistant"
|
||||
|
||||
#: .\cookbook\forms.py:193
|
||||
msgid "Something like http://homeassistant.local:8123/api"
|
||||
msgstr ""
|
||||
msgstr "Coś w stylu http://homeassistant.local:8123/api"
|
||||
|
||||
#: .\cookbook\forms.py:205
|
||||
msgid "http://homeassistant.local:8123/api for example"
|
||||
msgstr ""
|
||||
msgstr "na przykład http://homeassistant.local:8123/api"
|
||||
|
||||
#: .\cookbook\forms.py:222 .\cookbook\views\edit.py:117
|
||||
msgid "Storage"
|
||||
@@ -106,11 +110,11 @@ msgstr "Magazyn"
|
||||
|
||||
#: .\cookbook\forms.py:222
|
||||
msgid "Active"
|
||||
msgstr ""
|
||||
msgstr "Aktywuj"
|
||||
|
||||
#: .\cookbook\forms.py:226
|
||||
msgid "Search String"
|
||||
msgstr "Wyszukaj ciąg"
|
||||
msgstr "Wyszukaj tekst"
|
||||
|
||||
#: .\cookbook\forms.py:246
|
||||
msgid "File ID"
|
||||
@@ -118,101 +122,117 @@ msgstr "Numer identyfikacyjny pliku"
|
||||
|
||||
#: .\cookbook\forms.py:262
|
||||
msgid "Maximum number of users for this space reached."
|
||||
msgstr ""
|
||||
msgstr "Osiągnięto maksymalną liczbę użytkowników dla tej przestrzeni."
|
||||
|
||||
#: .\cookbook\forms.py:268
|
||||
msgid "Email address already taken!"
|
||||
msgstr ""
|
||||
msgstr "Wybrany adres email jest już zajęty!"
|
||||
|
||||
#: .\cookbook\forms.py:275
|
||||
msgid ""
|
||||
"An email address is not required but if present the invite link will be sent "
|
||||
"to the user."
|
||||
msgstr ""
|
||||
"Adres email nie jest wymagany, jednak gdy zostanie podany link z "
|
||||
"zaproszeniem zostanie wysłany do użytkownika."
|
||||
|
||||
#: .\cookbook\forms.py:287
|
||||
msgid "Name already taken."
|
||||
msgstr ""
|
||||
msgstr "Podana nazwa jest już zajęta."
|
||||
|
||||
#: .\cookbook\forms.py:298
|
||||
msgid "Accept Terms and Privacy"
|
||||
msgstr ""
|
||||
msgstr "Zaakceptuj Regulamin oraz Politykę Prywatności"
|
||||
|
||||
#: .\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 ""
|
||||
"Określa, jak niedokładne może być wyszukiwanie, jeśli wykorzystuje "
|
||||
"dopasowanie podobieństwa trigramowego (np. niskie wartości oznaczają, że "
|
||||
"więcej literówek jest ignorowanych)."
|
||||
|
||||
#: .\cookbook\forms.py:340
|
||||
msgid ""
|
||||
"Select type method of search. Click <a href=\"/docs/search/\">here</a> for "
|
||||
"full description of choices."
|
||||
msgstr ""
|
||||
"Wybierz metodę wyszukiwania. Kliknij <a href=\"/docs/search/\">tutaj</a>, "
|
||||
"aby zapoznać się z pełnym opisem dostępnych opcji."
|
||||
|
||||
#: .\cookbook\forms.py:341
|
||||
msgid ""
|
||||
"Use fuzzy matching on units, keywords and ingredients when editing and "
|
||||
"importing recipes."
|
||||
msgstr ""
|
||||
"Użyj niedokładnego dopasowywania dla jednostek, słów kluczowych i składników "
|
||||
"podczas edytowania i importowania przepisów."
|
||||
|
||||
#: .\cookbook\forms.py:342
|
||||
msgid ""
|
||||
"Fields to search ignoring accents. Selecting this option can improve or "
|
||||
"degrade search quality depending on language"
|
||||
msgstr ""
|
||||
"Pola do przeszukiwania z pominięciem akcentów. Wybranie tej opcji może "
|
||||
"poprawić lub pogorszyć jakość wyszukiwania w zależności od języka"
|
||||
|
||||
#: .\cookbook\forms.py:343
|
||||
msgid ""
|
||||
"Fields to search for partial matches. (e.g. searching for 'Pie' will return "
|
||||
"'pie' and 'piece' and 'soapie')"
|
||||
msgstr ""
|
||||
"Pola do przeszukiwania częściowych dopasowań (np. wyszukiwanie 'Ciasto' "
|
||||
"zwróci 'ciasto', 'ciasteczko' i 'ciastolina')"
|
||||
|
||||
#: .\cookbook\forms.py:344
|
||||
msgid ""
|
||||
"Fields to search for beginning of word matches. (e.g. searching for 'sa' "
|
||||
"will return 'salad' and 'sandwich')"
|
||||
msgstr ""
|
||||
"Pola do przeszukiwania dopasowań na początku wyrazu (np. wyszukiwanie 'sa' "
|
||||
"zwróci 'sałatka' i '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 ""
|
||||
"Pola do wyszukiwania z użyciem 'niedokładnego' dopasowywania (np. "
|
||||
"wyszukiwanie 'przepisz' znajdzie 'przepis'). Uwaga: ta opcja będzie "
|
||||
"kolidować z metodami wyszukiwania 'web' i 'raw'."
|
||||
|
||||
#: .\cookbook\forms.py:346
|
||||
msgid ""
|
||||
"Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods "
|
||||
"only function with fulltext fields."
|
||||
msgstr ""
|
||||
"Pola do wyszukiwania pełno tekstowego. Uwaga: metody wyszukiwania 'web', "
|
||||
"'phrase' i 'raw' działają wyłącznie z polami pełno tekstowymi."
|
||||
|
||||
#: .\cookbook\forms.py:350
|
||||
#, fuzzy
|
||||
#| msgid "Search"
|
||||
msgid "Search Method"
|
||||
msgstr "Szukaj"
|
||||
msgstr "Metoda wyszukiwania"
|
||||
|
||||
#: .\cookbook\forms.py:350
|
||||
msgid "Fuzzy Lookups"
|
||||
msgstr ""
|
||||
msgstr "Niedokładne dopasowanie"
|
||||
|
||||
#: .\cookbook\forms.py:350
|
||||
msgid "Ignore Accent"
|
||||
msgstr ""
|
||||
msgstr "Ignoruj akcenty"
|
||||
|
||||
#: .\cookbook\forms.py:350
|
||||
msgid "Partial Match"
|
||||
msgstr ""
|
||||
msgstr "Częściowe dopasowanie"
|
||||
|
||||
#: .\cookbook\forms.py:350
|
||||
msgid "Starts With"
|
||||
msgstr ""
|
||||
msgstr "Zaczyna się od"
|
||||
|
||||
#: .\cookbook\forms.py:351
|
||||
#, fuzzy
|
||||
#| msgid "Search"
|
||||
msgid "Fuzzy Search"
|
||||
msgstr "Szukaj"
|
||||
msgstr "Niedokładne wyszukiwanie"
|
||||
|
||||
#: .\cookbook\forms.py:351
|
||||
#, fuzzy
|
||||
@@ -225,6 +245,8 @@ msgid ""
|
||||
"In order to prevent spam, the requested email was not send. Please wait a "
|
||||
"few minutes and try again."
|
||||
msgstr ""
|
||||
"Aby zapobiec spamowi, żądany e-mail nie został wysłany. Proszę poczekać "
|
||||
"kilka minut i spróbować ponownie."
|
||||
|
||||
#: .\cookbook\helper\permission_helper.py:164
|
||||
#: .\cookbook\helper\permission_helper.py:187 .\cookbook\views\views.py:117
|
||||
@@ -255,57 +277,57 @@ msgstr ""
|
||||
|
||||
#: .\cookbook\helper\permission_helper.py:402
|
||||
msgid "You have reached the maximum number of recipes for your space."
|
||||
msgstr ""
|
||||
msgstr "Osiągnąłeś maksymalną liczbę przepisów dla swojej przestrzeni."
|
||||
|
||||
#: .\cookbook\helper\permission_helper.py:414
|
||||
msgid "You have more users than allowed in your space."
|
||||
msgstr ""
|
||||
|
||||
#: .\cookbook\helper\recipe_url_import.py:304
|
||||
msgid "reverse rotation"
|
||||
msgstr ""
|
||||
|
||||
#: .\cookbook\helper\recipe_url_import.py:305
|
||||
msgid "careful rotation"
|
||||
msgstr ""
|
||||
|
||||
#: .\cookbook\helper\recipe_url_import.py:306
|
||||
msgid "knead"
|
||||
msgstr ""
|
||||
|
||||
#: .\cookbook\helper\recipe_url_import.py:307
|
||||
msgid "thicken"
|
||||
msgstr ""
|
||||
|
||||
#: .\cookbook\helper\recipe_url_import.py:308
|
||||
msgid "warm up"
|
||||
msgstr ""
|
||||
|
||||
#: .\cookbook\helper\recipe_url_import.py:309
|
||||
msgid "ferment"
|
||||
msgstr ""
|
||||
msgstr "Masz więcej użytkowników, niż jest dozwolone w Twojej przestrzeni."
|
||||
|
||||
#: .\cookbook\helper\recipe_url_import.py:310
|
||||
msgid "reverse rotation"
|
||||
msgstr "rotacja wsteczna"
|
||||
|
||||
#: .\cookbook\helper\recipe_url_import.py:311
|
||||
msgid "careful rotation"
|
||||
msgstr "delikatna rotacja"
|
||||
|
||||
#: .\cookbook\helper\recipe_url_import.py:312
|
||||
msgid "knead"
|
||||
msgstr "zagnieść"
|
||||
|
||||
#: .\cookbook\helper\recipe_url_import.py:313
|
||||
msgid "thicken"
|
||||
msgstr "zagęścić"
|
||||
|
||||
#: .\cookbook\helper\recipe_url_import.py:314
|
||||
msgid "warm up"
|
||||
msgstr "podgrzać"
|
||||
|
||||
#: .\cookbook\helper\recipe_url_import.py:315
|
||||
msgid "ferment"
|
||||
msgstr "doprowadzić do wrzenia"
|
||||
|
||||
#: .\cookbook\helper\recipe_url_import.py:316
|
||||
msgid "sous-vide"
|
||||
msgstr ""
|
||||
msgstr "gotować w próżni"
|
||||
|
||||
#: .\cookbook\helper\shopping_helper.py:150
|
||||
msgid "You must supply a servings size"
|
||||
msgstr ""
|
||||
msgstr "Musisz podać wielkość porcji"
|
||||
|
||||
#: .\cookbook\helper\template_helper.py:95
|
||||
#: .\cookbook\helper\template_helper.py:97
|
||||
msgid "Could not parse template code."
|
||||
msgstr ""
|
||||
msgstr "Nie można przeanalizować kodu szablonu."
|
||||
|
||||
#: .\cookbook\integration\copymethat.py:44
|
||||
#: .\cookbook\integration\melarecipes.py:37
|
||||
msgid "Favorite"
|
||||
msgstr ""
|
||||
msgstr "Ulubione"
|
||||
|
||||
#: .\cookbook\integration\copymethat.py:50
|
||||
msgid "I made this"
|
||||
msgstr ""
|
||||
msgstr "Stworzyłem to"
|
||||
|
||||
#: .\cookbook\integration\integration.py:209
|
||||
msgid ""
|
||||
@@ -320,10 +342,12 @@ msgid ""
|
||||
"An unexpected error occurred during the import. Please make sure you have "
|
||||
"uploaded a valid file."
|
||||
msgstr ""
|
||||
"Wystąpił nieoczekiwany błąd podczas importu. Upewnij się, że przesłałeś "
|
||||
"prawidłowy plik."
|
||||
|
||||
#: .\cookbook\integration\integration.py:217
|
||||
msgid "The following recipes were ignored because they already existed:"
|
||||
msgstr ""
|
||||
msgstr "Następujące przepisy zostały pominięte, ponieważ już istnieją:"
|
||||
|
||||
#: .\cookbook\integration\integration.py:221
|
||||
#, python-format
|
||||
@@ -341,14 +365,12 @@ msgid "Notes"
|
||||
msgstr "Notatka"
|
||||
|
||||
#: .\cookbook\integration\paprika.py:52
|
||||
#, fuzzy
|
||||
#| msgid "Information"
|
||||
msgid "Nutritional Information"
|
||||
msgstr "Informacja"
|
||||
msgstr "Informacje o wartości odżywczej"
|
||||
|
||||
#: .\cookbook\integration\paprika.py:56
|
||||
msgid "Source"
|
||||
msgstr ""
|
||||
msgstr "Źródło"
|
||||
|
||||
#: .\cookbook\integration\recettetek.py:54
|
||||
#: .\cookbook\integration\recipekeeper.py:70
|
||||
@@ -377,23 +399,25 @@ msgstr "Sekcja"
|
||||
|
||||
#: .\cookbook\management\commands\fix_duplicate_properties.py:15
|
||||
msgid "Fixes foods with "
|
||||
msgstr ""
|
||||
msgstr "Poprawia potrawy z "
|
||||
|
||||
#: .\cookbook\management\commands\rebuildindex.py:14
|
||||
msgid "Rebuilds full text search index on Recipe"
|
||||
msgstr ""
|
||||
msgstr "Odbudowuje indeks wyszukiwania pełno tekstowego dla przepisu"
|
||||
|
||||
#: .\cookbook\management\commands\rebuildindex.py:18
|
||||
msgid "Only Postgresql databases use full text search, no index to rebuild"
|
||||
msgstr ""
|
||||
"Pełno tekstowe wyszukiwanie jest używane tylko w bazach danych PostgreSQL, "
|
||||
"brak indeksu do odbudowy"
|
||||
|
||||
#: .\cookbook\management\commands\rebuildindex.py:29
|
||||
msgid "Recipe index rebuild complete."
|
||||
msgstr ""
|
||||
msgstr "Odbudowa indeksu przepisu zakończona."
|
||||
|
||||
#: .\cookbook\management\commands\rebuildindex.py:31
|
||||
msgid "Recipe index rebuild failed."
|
||||
msgstr ""
|
||||
msgstr "Odbudowa indeksu przepisu nie powiodła się."
|
||||
|
||||
#: .\cookbook\migrations\0047_auto_20200602_1133.py:14
|
||||
msgid "Breakfast"
|
||||
@@ -407,13 +431,11 @@ 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"
|
||||
|
||||
#: .\cookbook\migrations\0190_auto_20230525_1506.py:17
|
||||
#, fuzzy
|
||||
#| msgid "Fats"
|
||||
msgid "Fat"
|
||||
msgstr "Tłuszcze"
|
||||
|
||||
@@ -421,7 +443,7 @@ msgstr "Tłuszcze"
|
||||
#: .\cookbook\migrations\0190_auto_20230525_1506.py:18
|
||||
#: .\cookbook\migrations\0190_auto_20230525_1506.py:19
|
||||
msgid "g"
|
||||
msgstr ""
|
||||
msgstr "g"
|
||||
|
||||
#: .\cookbook\migrations\0190_auto_20230525_1506.py:18
|
||||
msgid "Carbohydrates"
|
||||
@@ -437,53 +459,55 @@ msgstr "Kalorie"
|
||||
|
||||
#: .\cookbook\migrations\0190_auto_20230525_1506.py:20
|
||||
msgid "kcal"
|
||||
msgstr ""
|
||||
msgstr "kcal"
|
||||
|
||||
#: .\cookbook\models.py:325
|
||||
msgid ""
|
||||
"Maximum file storage for space in MB. 0 for unlimited, -1 to disable file "
|
||||
"upload."
|
||||
msgstr ""
|
||||
"Maksymalna pojemność na pliki dla przestrzeni w MB. 0 oznacza brak limitu, -"
|
||||
"1 wyłącza możliwość przesyłania plików."
|
||||
|
||||
#: .\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 +1992,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 +2021,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 +2074,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 +2110,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 +2132,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 +2545,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 +2586,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 +2611,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 +2622,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"
|
||||
|
||||
@@ -11,9 +11,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-10-07 18:02+0000\n"
|
||||
"Last-Translator: Guilherme Roda <glealroda@gmail.com>\n"
|
||||
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
|
||||
"PO-Revision-Date: 2025-02-21 10:58+0000\n"
|
||||
"Last-Translator: Filipe Neves <homemdasneves@gmail.com>\n"
|
||||
"Language-Team: Portuguese <http://translate.tandoor.dev/projects/tandoor/"
|
||||
"recipes-backend/pt/>\n"
|
||||
"Language: pt\n"
|
||||
@@ -21,7 +21,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.8.4\n"
|
||||
|
||||
#: .\cookbook\forms.py:45
|
||||
msgid ""
|
||||
@@ -94,14 +94,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 longa duração</a>para a sua instância HomeAssistant"
|
||||
|
||||
#: .\cookbook\forms.py:193
|
||||
msgid "Something like http://homeassistant.local:8123/api"
|
||||
msgstr ""
|
||||
msgstr "Algo como http://homeassistant.local:8123/api"
|
||||
|
||||
#: .\cookbook\forms.py:205
|
||||
msgid "http://homeassistant.local:8123/api for example"
|
||||
msgstr ""
|
||||
msgstr "http://homeassistant.local:8123/api por exemplo"
|
||||
|
||||
#: .\cookbook\forms.py:222 .\cookbook\views\edit.py:117
|
||||
msgid "Storage"
|
||||
@@ -181,18 +183,25 @@ msgid ""
|
||||
"Fields to search for partial matches. (e.g. searching for 'Pie' will return "
|
||||
"'pie' and 'piece' and 'soapie')"
|
||||
msgstr ""
|
||||
"Campos a pesquisar por correspondência. (Ex: pesquisar por 'mor' retorna "
|
||||
"'morango' e 'amora')"
|
||||
|
||||
#: .\cookbook\forms.py:344
|
||||
msgid ""
|
||||
"Fields to search for beginning of word matches. (e.g. searching for 'sa' "
|
||||
"will return 'salad' and 'sandwich')"
|
||||
msgstr ""
|
||||
"Campos a pesquisar para correspondências no início da palavra. (por exemplo, "
|
||||
"pesquisar por \"sa\" retornará \"salada\" e \"sanduíche\")"
|
||||
|
||||
#: .\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 ""
|
||||
"Campos para pesquisa aproximada. (por exemplo, pesquisar por \"recita\" "
|
||||
"encontrará \"receita\"). Nota: esta opção entra em conflito com os métodos "
|
||||
"de pesquisa \"web\" e \"raw\"."
|
||||
|
||||
#: .\cookbook\forms.py:346
|
||||
msgid ""
|
||||
@@ -206,19 +215,19 @@ msgstr "Método de Pesquisa"
|
||||
|
||||
#: .\cookbook\forms.py:350
|
||||
msgid "Fuzzy Lookups"
|
||||
msgstr ""
|
||||
msgstr "Pesquisas Aproximadas"
|
||||
|
||||
#: .\cookbook\forms.py:350
|
||||
msgid "Ignore Accent"
|
||||
msgstr ""
|
||||
msgstr "Ignorar pronúncia"
|
||||
|
||||
#: .\cookbook\forms.py:350
|
||||
msgid "Partial Match"
|
||||
msgstr ""
|
||||
msgstr "Correspondência parcial"
|
||||
|
||||
#: .\cookbook\forms.py:350
|
||||
msgid "Starts With"
|
||||
msgstr ""
|
||||
msgstr "Começa com"
|
||||
|
||||
#: .\cookbook\forms.py:351
|
||||
msgid "Fuzzy Search"
|
||||
@@ -233,6 +242,8 @@ msgid ""
|
||||
"In order to prevent spam, the requested email was not send. Please wait a "
|
||||
"few minutes and try again."
|
||||
msgstr ""
|
||||
"Para evitar spam, o email solicitado não foi enviado. Por favor, aguarde "
|
||||
"alguns minutos e tente novamente."
|
||||
|
||||
#: .\cookbook\helper\permission_helper.py:164
|
||||
#: .\cookbook\helper\permission_helper.py:187 .\cookbook\views\views.py:117
|
||||
@@ -257,41 +268,41 @@ msgstr "Sem permissões para aceder a esta página!"
|
||||
#: .\cookbook\helper\permission_helper.py:237
|
||||
#: .\cookbook\helper\permission_helper.py:252
|
||||
msgid "You cannot interact with this object as it is not owned by you!"
|
||||
msgstr ""
|
||||
msgstr "Não pode interagir com este objeto, pois não é seu!"
|
||||
|
||||
#: .\cookbook\helper\permission_helper.py:402
|
||||
msgid "You have reached the maximum number of recipes for your space."
|
||||
msgstr ""
|
||||
msgstr "Atingiu o número máximo de receitas para o seu espaço."
|
||||
|
||||
#: .\cookbook\helper\permission_helper.py:414
|
||||
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 +418,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 +454,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 +1880,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 +1902,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 +1940,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 +1978,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 +2000,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 +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 ""
|
||||
|
||||
@@ -2415,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 "Shopping"
|
||||
msgid "View your shopping lists"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -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 ""
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -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-04-01 22:04+0000\n"
|
||||
"Last-Translator: atom karinca <atomkarinca@tutanota.com>\n"
|
||||
"POT-Creation-Date: 2024-08-01 15:04+0200\n"
|
||||
"PO-Revision-Date: 2025-01-20 05:20+0000\n"
|
||||
"Last-Translator: Yigit <yigit.gungor@outlook.com>\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 5.4.2\n"
|
||||
"X-Generator: Weblate 5.8.4\n"
|
||||
|
||||
#: .\cookbook\forms.py:45
|
||||
msgid ""
|
||||
@@ -83,8 +83,8 @@ 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)"
|
||||
"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 ""
|
||||
@@ -199,7 +199,7 @@ msgstr ""
|
||||
|
||||
#: .\cookbook\forms.py:350
|
||||
msgid "Search Method"
|
||||
msgstr ""
|
||||
msgstr "Arama Metodu"
|
||||
|
||||
#: .\cookbook\forms.py:350
|
||||
msgid "Fuzzy Lookups"
|
||||
@@ -207,15 +207,15 @@ msgstr ""
|
||||
|
||||
#: .\cookbook\forms.py:350
|
||||
msgid "Ignore Accent"
|
||||
msgstr ""
|
||||
msgstr "Harflerdeki Vurguları Görmezden Gel"
|
||||
|
||||
#: .\cookbook\forms.py:350
|
||||
msgid "Partial Match"
|
||||
msgstr ""
|
||||
msgstr "Kısmi Eşleşme"
|
||||
|
||||
#: .\cookbook\forms.py:350
|
||||
msgid "Starts With"
|
||||
msgstr ""
|
||||
msgstr "İle başlayan"
|
||||
|
||||
#: .\cookbook\forms.py:351
|
||||
msgid "Fuzzy Search"
|
||||
@@ -223,18 +223,20 @@ msgstr ""
|
||||
|
||||
#: .\cookbook\forms.py:351
|
||||
msgid "Full Text"
|
||||
msgstr ""
|
||||
msgstr "Tam Metin"
|
||||
|
||||
#: .\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 ""
|
||||
"İstenmeyen e-postayı önlemek için istenen e-posta gönderilemedi. Lütfen "
|
||||
"birkaç dakika bekleyin ve tekrar deneyin."
|
||||
|
||||
#: .\cookbook\helper\permission_helper.py:164
|
||||
#: .\cookbook\helper\permission_helper.py:187 .\cookbook\views\views.py:117
|
||||
msgid "You are not logged in and therefore cannot view this page!"
|
||||
msgstr ""
|
||||
msgstr "Giriş yapmadınız ve bu nedenle bu sayfayı görüntüleyemezsiniz!"
|
||||
|
||||
#: .\cookbook\helper\permission_helper.py:168
|
||||
#: .\cookbook\helper\permission_helper.py:174
|
||||
@@ -247,68 +249,68 @@ msgstr ""
|
||||
#: .\cookbook\helper\permission_helper.py:341 .\cookbook\views\data.py:35
|
||||
#: .\cookbook\views\views.py:127 .\cookbook\views\views.py:131
|
||||
msgid "You do not have the required permissions to view this page!"
|
||||
msgstr ""
|
||||
msgstr "Bu sayfayı görüntülemek için gerekli izinlere sahip değilsiniz!"
|
||||
|
||||
#: .\cookbook\helper\permission_helper.py:192
|
||||
#: .\cookbook\helper\permission_helper.py:215
|
||||
#: .\cookbook\helper\permission_helper.py:237
|
||||
#: .\cookbook\helper\permission_helper.py:252
|
||||
msgid "You cannot interact with this object as it is not owned by you!"
|
||||
msgstr ""
|
||||
msgstr "Bu nesne size ait olmadığı için onunla etkileşime giremezsiniz!"
|
||||
|
||||
#: .\cookbook\helper\permission_helper.py:402
|
||||
msgid "You have reached the maximum number of recipes for your space."
|
||||
msgstr ""
|
||||
msgstr "Alanınız için maksimum tarif sayısına ulaştınız."
|
||||
|
||||
#: .\cookbook\helper\permission_helper.py:414
|
||||
msgid "You have more users than allowed in your space."
|
||||
msgstr ""
|
||||
|
||||
#: .\cookbook\helper\recipe_url_import.py:304
|
||||
msgid "reverse rotation"
|
||||
msgstr ""
|
||||
|
||||
#: .\cookbook\helper\recipe_url_import.py:305
|
||||
msgid "careful rotation"
|
||||
msgstr ""
|
||||
|
||||
#: .\cookbook\helper\recipe_url_import.py:306
|
||||
msgid "knead"
|
||||
msgstr ""
|
||||
|
||||
#: .\cookbook\helper\recipe_url_import.py:307
|
||||
msgid "thicken"
|
||||
msgstr ""
|
||||
|
||||
#: .\cookbook\helper\recipe_url_import.py:308
|
||||
msgid "warm up"
|
||||
msgstr ""
|
||||
|
||||
#: .\cookbook\helper\recipe_url_import.py:309
|
||||
msgid "ferment"
|
||||
msgstr ""
|
||||
msgstr "Alanınızda izin verilenden daha fazla kullanıcı var."
|
||||
|
||||
#: .\cookbook\helper\recipe_url_import.py:310
|
||||
msgid "reverse rotation"
|
||||
msgstr "ters dönüş"
|
||||
|
||||
#: .\cookbook\helper\recipe_url_import.py:311
|
||||
msgid "careful rotation"
|
||||
msgstr "dikkatli dönüş"
|
||||
|
||||
#: .\cookbook\helper\recipe_url_import.py:312
|
||||
msgid "knead"
|
||||
msgstr "yoğur"
|
||||
|
||||
#: .\cookbook\helper\recipe_url_import.py:313
|
||||
msgid "thicken"
|
||||
msgstr "kalınlaştır"
|
||||
|
||||
#: .\cookbook\helper\recipe_url_import.py:314
|
||||
msgid "warm up"
|
||||
msgstr "ısıt"
|
||||
|
||||
#: .\cookbook\helper\recipe_url_import.py:315
|
||||
msgid "ferment"
|
||||
msgstr "mayala"
|
||||
|
||||
#: .\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"
|
||||
msgstr ""
|
||||
msgstr "Bir porsiyon büyüklüğü vermelisiniz"
|
||||
|
||||
#: .\cookbook\helper\template_helper.py:95
|
||||
#: .\cookbook\helper\template_helper.py:97
|
||||
msgid "Could not parse template code."
|
||||
msgstr ""
|
||||
msgstr "Şablon kodu ayrıştırılamadı."
|
||||
|
||||
#: .\cookbook\integration\copymethat.py:44
|
||||
#: .\cookbook\integration\melarecipes.py:37
|
||||
msgid "Favorite"
|
||||
msgstr ""
|
||||
msgstr "Favori"
|
||||
|
||||
#: .\cookbook\integration\copymethat.py:50
|
||||
msgid "I made this"
|
||||
msgstr ""
|
||||
msgstr "Bunu yaptım"
|
||||
|
||||
#: .\cookbook\integration\integration.py:209
|
||||
msgid ""
|
||||
@@ -324,28 +326,28 @@ msgstr ""
|
||||
|
||||
#: .\cookbook\integration\integration.py:217
|
||||
msgid "The following recipes were ignored because they already existed:"
|
||||
msgstr ""
|
||||
msgstr "Aşağıdaki tarifler zaten mevcut olduğu için göz ardı edildi:"
|
||||
|
||||
#: .\cookbook\integration\integration.py:221
|
||||
#, python-format
|
||||
msgid "Imported %s recipes."
|
||||
msgstr ""
|
||||
msgstr "%s tarif içe aktarıldı."
|
||||
|
||||
#: .\cookbook\integration\openeats.py:28
|
||||
msgid "Recipe source:"
|
||||
msgstr ""
|
||||
msgstr "Tarif kaynağı:"
|
||||
|
||||
#: .\cookbook\integration\paprika.py:49
|
||||
msgid "Notes"
|
||||
msgstr ""
|
||||
msgstr "Notlar"
|
||||
|
||||
#: .\cookbook\integration\paprika.py:52
|
||||
msgid "Nutritional Information"
|
||||
msgstr ""
|
||||
msgstr "Beslenme Bilgileri"
|
||||
|
||||
#: .\cookbook\integration\paprika.py:56
|
||||
msgid "Source"
|
||||
msgstr ""
|
||||
msgstr "Kaynak"
|
||||
|
||||
#: .\cookbook\integration\recettetek.py:54
|
||||
#: .\cookbook\integration\recipekeeper.py:70
|
||||
@@ -354,23 +356,23 @@ msgstr ""
|
||||
|
||||
#: .\cookbook\integration\saffron.py:23
|
||||
msgid "Servings"
|
||||
msgstr ""
|
||||
msgstr "Porsiyon"
|
||||
|
||||
#: .\cookbook\integration\saffron.py:25
|
||||
msgid "Waiting time"
|
||||
msgstr ""
|
||||
msgstr "Bekleme süresi"
|
||||
|
||||
#: .\cookbook\integration\saffron.py:27
|
||||
msgid "Preparation Time"
|
||||
msgstr ""
|
||||
msgstr "Hazırlık Süresi"
|
||||
|
||||
#: .\cookbook\integration\saffron.py:29 .\cookbook\templates\index.html:7
|
||||
msgid "Cookbook"
|
||||
msgstr ""
|
||||
msgstr "Yemek kitabı"
|
||||
|
||||
#: .\cookbook\integration\saffron.py:31
|
||||
msgid "Section"
|
||||
msgstr ""
|
||||
msgstr "Bölüm"
|
||||
|
||||
#: .\cookbook\management\commands\fix_duplicate_properties.py:15
|
||||
msgid "Fixes foods with "
|
||||
@@ -383,6 +385,8 @@ msgstr ""
|
||||
#: .\cookbook\management\commands\rebuildindex.py:18
|
||||
msgid "Only Postgresql databases use full text search, no index to rebuild"
|
||||
msgstr ""
|
||||
"Yalnızca Postgresql veritabanları tam metin araması kullanır, yeniden "
|
||||
"oluşturulacak dizin yoktur"
|
||||
|
||||
#: .\cookbook\management\commands\rebuildindex.py:29
|
||||
msgid "Recipe index rebuild complete."
|
||||
@@ -404,7 +408,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 ""
|
||||
|
||||
@@ -440,43 +444,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 ""
|
||||
|
||||
@@ -955,10 +959,8 @@ msgstr ""
|
||||
#: .\cookbook\templates\base.html:263
|
||||
#: .\cookbook\templates\ingredient_editor.html:7
|
||||
#: .\cookbook\templates\ingredient_editor.html:13
|
||||
#, fuzzy
|
||||
#| msgid "Ingredients"
|
||||
msgid "Ingredient Editor"
|
||||
msgstr "Malzemeler"
|
||||
msgstr "Malzeme Editörü"
|
||||
|
||||
#: .\cookbook\templates\base.html:275
|
||||
#: .\cookbook\templates\export_response.html:7
|
||||
@@ -1417,10 +1419,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"
|
||||
@@ -1843,14 +1843,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 ""
|
||||
|
||||
@@ -1865,7 +1865,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 ""
|
||||
|
||||
@@ -1902,20 +1903,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"
|
||||
@@ -1927,19 +1939,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 ""
|
||||
|
||||
@@ -1947,286 +1959,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 +2362,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,82 +2399,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"
|
||||
|
||||
@@ -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: 2025-01-16 18:58+0000\n"
|
||||
"Last-Translator: Anton Shevtsov <ashevtsovs@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.8.4\n"
|
||||
|
||||
#: .\cookbook\forms.py:45
|
||||
msgid ""
|
||||
@@ -32,51 +32,55 @@ 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"
|
||||
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 ""
|
||||
|
||||
@@ -937,13 +941,13 @@ msgstr ""
|
||||
#: .\cookbook\templates\ingredient_editor.html:7
|
||||
#: .\cookbook\templates\ingredient_editor.html:13
|
||||
msgid "Ingredient Editor"
|
||||
msgstr ""
|
||||
msgstr "Редактор Інгредієнтів"
|
||||
|
||||
#: .\cookbook\templates\base.html:275
|
||||
#: .\cookbook\templates\export_response.html:7
|
||||
#: .\cookbook\templates\test2.html:14 .\cookbook\templates\test2.html:20
|
||||
msgid "Export"
|
||||
msgstr ""
|
||||
msgstr "Експорт"
|
||||
|
||||
#: .\cookbook\templates\base.html:287
|
||||
msgid "Properties"
|
||||
@@ -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 ""
|
||||
|
||||
|
||||
@@ -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
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -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)
|
||||
]
|
||||
@@ -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'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,24 @@
|
||||
# Generated by Django 4.2.18 on 2025-03-14 10:50
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('cookbook', '0219_connectorconfig_supports_description_field'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='shoppinglistrecipe',
|
||||
name='created_by',
|
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='shoppinglistrecipe',
|
||||
name='space',
|
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='cookbook.space'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,42 @@
|
||||
# Generated by Django 4.2.18 on 2025-03-14 10:50
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
from django.db.models import F, Count
|
||||
from django_scopes import scopes_disabled
|
||||
|
||||
|
||||
def add_space_and_owner_to_shopping_list_recipe(apps, schema_editor):
|
||||
print('migrating shopping list recipe space attribute, this might take a while ...')
|
||||
with scopes_disabled():
|
||||
ShoppingListRecipe = apps.get_model('cookbook', 'ShoppingListRecipe')
|
||||
|
||||
# delete all shopping list recipes that do not have entries as those are of no use anyway
|
||||
ShoppingListRecipe.objects.annotate(entry_count=Count('entries')).filter(entry_count__lte=0).delete()
|
||||
|
||||
shopping_list_recipes = ShoppingListRecipe.objects.all().prefetch_related('entries')
|
||||
update_list = []
|
||||
|
||||
for slr in shopping_list_recipes:
|
||||
if entry := slr.entries.first():
|
||||
if entry.space and entry.created_by:
|
||||
slr.space = entry.space
|
||||
slr.created_by = entry.created_by
|
||||
update_list.append(slr)
|
||||
else:
|
||||
print(slr, 'missing data on entry')
|
||||
else:
|
||||
print(slr, 'missing entry')
|
||||
|
||||
ShoppingListRecipe.objects.bulk_update(update_list, ['space', 'created_by'], batch_size=500)
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
('cookbook', '0220_shoppinglistrecipe_created_by_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(add_space_and_owner_to_shopping_list_recipe),
|
||||
]
|
||||
@@ -0,0 +1,26 @@
|
||||
# Generated by Django 4.2.18 on 2025-03-14 12:41
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('cookbook', '0221_migrate_shoppinglistrecipe_space_created_by'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='shoppinglistrecipe',
|
||||
name='created_by',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='shoppinglistrecipe',
|
||||
name='space',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='cookbook.space'),
|
||||
),
|
||||
]
|
||||
@@ -126,7 +126,7 @@ class TreeModel(MP_Node):
|
||||
return None
|
||||
|
||||
@property
|
||||
def full_name(self):
|
||||
def full_name(self) -> str:
|
||||
"""
|
||||
Returns a string representation of a tree node and it's ancestors,
|
||||
e.g. 'Cuisine > Asian > Chinese > Catonese'.
|
||||
@@ -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'
|
||||
@@ -912,12 +912,19 @@ class PropertyType(models.Model, PermissionModelMixin, MergeModelMixin):
|
||||
GOAL = 'GOAL'
|
||||
OTHER = 'OTHER'
|
||||
|
||||
CHOICES = (
|
||||
(NUTRITION, _('Nutrition')),
|
||||
(ALLERGEN, _('Allergen')),
|
||||
(PRICE, _('Price')),
|
||||
(GOAL, _('Goal')),
|
||||
(OTHER, _('Other')),
|
||||
)
|
||||
|
||||
name = models.CharField(max_length=128)
|
||||
unit = models.CharField(max_length=64, blank=True, null=True)
|
||||
order = models.IntegerField(default=0)
|
||||
description = models.CharField(max_length=512, blank=True, null=True)
|
||||
category = models.CharField(max_length=64, choices=((NUTRITION, _('Nutrition')), (ALLERGEN, _('Allergen')),
|
||||
(PRICE, _('Price')), (GOAL, _('Goal')), (OTHER, _('Other'))), null=True, blank=True)
|
||||
category = models.CharField(max_length=64, choices=CHOICES, null=True, blank=True)
|
||||
open_data_slug = models.CharField(max_length=128, null=True, blank=True, default=None)
|
||||
|
||||
fdc_id = models.IntegerField(null=True, default=None, blank=True)
|
||||
@@ -1087,6 +1094,19 @@ class RecipeImport(models.Model, PermissionModelMixin):
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
def convert_to_recipe(self, user):
|
||||
recipe = Recipe(
|
||||
name=self.name,
|
||||
file_path=self.file_path,
|
||||
storage=self.storage,
|
||||
file_uid=self.file_uid,
|
||||
created_by=user,
|
||||
space=self.space
|
||||
)
|
||||
recipe.save()
|
||||
self.delete()
|
||||
return recipe
|
||||
|
||||
|
||||
class RecipeBook(ExportModelOperationsMixin('book'), models.Model, PermissionModelMixin):
|
||||
name = models.CharField(max_length=128)
|
||||
@@ -1135,6 +1155,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 +1179,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')
|
||||
@@ -1178,31 +1199,18 @@ class MealPlan(ExportModelOperationsMixin('meal_plan'), models.Model, Permission
|
||||
|
||||
class ShoppingListRecipe(ExportModelOperationsMixin('shopping_list_recipe'), models.Model, PermissionModelMixin):
|
||||
name = models.CharField(max_length=32, blank=True, default='')
|
||||
recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE, null=True, blank=True) # TODO make required after old shoppinglist deprecated
|
||||
servings = models.DecimalField(default=1, max_digits=8, decimal_places=4)
|
||||
recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE, null=True, blank=True)
|
||||
mealplan = models.ForeignKey(MealPlan, on_delete=models.CASCADE, null=True, blank=True)
|
||||
|
||||
objects = ScopedManager(space='recipe__space')
|
||||
created_by = models.ForeignKey(User, on_delete=models.CASCADE)
|
||||
space = models.ForeignKey(Space, on_delete=models.CASCADE)
|
||||
|
||||
@staticmethod
|
||||
def get_space_key():
|
||||
return 'recipe', 'space'
|
||||
|
||||
def get_space(self):
|
||||
return self.recipe.space
|
||||
objects = ScopedManager(space='space')
|
||||
|
||||
def __str__(self):
|
||||
return f'Shopping list recipe {self.id} - {self.recipe}'
|
||||
|
||||
def get_owner(self):
|
||||
try:
|
||||
if not self.entries.exists():
|
||||
return 'orphan'
|
||||
else:
|
||||
return getattr(self.entries.first(), 'created_by', None)
|
||||
except AttributeError:
|
||||
return None
|
||||
|
||||
|
||||
class ShoppingListEntry(ExportModelOperationsMixin('shopping_list_entry'), models.Model, PermissionModelMixin):
|
||||
list_recipe = models.ForeignKey(ShoppingListRecipe, on_delete=models.CASCADE, null=True, blank=True, related_name='entries')
|
||||
@@ -1462,19 +1470,21 @@ class Automation(ExportModelOperationsMixin('automations'), models.Model, Permis
|
||||
UNIT_REPLACE = 'UNIT_REPLACE'
|
||||
NAME_REPLACE = 'NAME_REPLACE'
|
||||
|
||||
automation_types = (
|
||||
(FOOD_ALIAS, _('Food Alias')),
|
||||
(UNIT_ALIAS, _('Unit Alias')),
|
||||
(KEYWORD_ALIAS, _('Keyword Alias')),
|
||||
(DESCRIPTION_REPLACE, _('Description Replace')),
|
||||
(INSTRUCTION_REPLACE, _('Instruction Replace')),
|
||||
(NEVER_UNIT, _('Never Unit')),
|
||||
(TRANSPOSE_WORDS, _('Transpose Words')),
|
||||
(FOOD_REPLACE, _('Food Replace')),
|
||||
(UNIT_REPLACE, _('Unit Replace')),
|
||||
(NAME_REPLACE, _('Name Replace')),
|
||||
)
|
||||
|
||||
type = models.CharField(max_length=128,
|
||||
choices=(
|
||||
(FOOD_ALIAS, _('Food Alias')),
|
||||
(UNIT_ALIAS, _('Unit Alias')),
|
||||
(KEYWORD_ALIAS, _('Keyword Alias')),
|
||||
(DESCRIPTION_REPLACE, _('Description Replace')),
|
||||
(INSTRUCTION_REPLACE, _('Instruction Replace')),
|
||||
(NEVER_UNIT, _('Never Unit')),
|
||||
(TRANSPOSE_WORDS, _('Transpose Words')),
|
||||
(FOOD_REPLACE, _('Food Replace')),
|
||||
(UNIT_REPLACE, _('Unit Replace')),
|
||||
(NAME_REPLACE, _('Name Replace')),
|
||||
))
|
||||
choices=automation_types)
|
||||
name = models.CharField(max_length=128, default='')
|
||||
description = models.TextField(blank=True, null=True)
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user