Compare commits

..

111 Commits

Author SHA1 Message Date
renovate[bot]
6732fcd696 chore(deps): update dependency fastapi to v0.120.3 (#6465)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-31 11:08:41 -05:00
Hayden
5fcbfbf361 chore(l10n): New Crowdin updates (#6464) 2025-10-31 01:06:46 +05:45
Hayden
1318998bc9 chore(l10n): New Crowdin updates (#6462) 2025-10-30 12:59:57 +05:45
renovate[bot]
0947212271 chore(deps): update dependency fastapi to v0.120.2 (#6457) 2025-10-29 14:39:33 +00:00
renovate[bot]
92ac5c6253 chore(deps): update node.js to v24 (#6451) 2025-10-29 09:27:00 -05:00
renovate[bot]
5f96f4b47f chore(deps): update dependency fastapi to v0.120.1 (#6450)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-29 08:49:32 -05:00
renovate[bot]
dbcd430425 chore(deps): update dependency alembic to v1.17.1 (#6456)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-29 04:52:13 +00:00
renovate[bot]
4c9164594b chore(deps): update dependency python-dotenv to v1.2.1 (#6442)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-28 23:39:37 -05:00
renovate[bot]
e5a13f8b43 chore(deps): update dependency ingredient-parser-nlp to v2.4.0 (#6448)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-29 01:34:43 +00:00
github-actions[bot]
726ad10c7e chore(auto): Update pre-commit hooks (#6445)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2025-10-29 01:22:51 +00:00
Hayden
df53310f2e chore(l10n): New Crowdin updates (#6455) 2025-10-28 22:12:48 +05:45
Hayden
82bf5c1bae chore(l10n): New Crowdin updates (#6446) 2025-10-28 10:32:51 +05:45
Hayden
c70a63f0ff chore(l10n): New Crowdin updates (#6444) 2025-10-27 12:16:52 +05:45
Hayden
14bfa6bcae chore(l10n): New Crowdin updates (#6441) 2025-10-26 09:52:59 -05:00
github-actions[bot]
adbafef157 chore(l10n): Crowdin locale sync (#6440)
Co-authored-by: GitHub Action <action@github.com>
2025-10-26 04:06:16 +00:00
Hayden
62d52f53e4 chore(l10n): New Crowdin updates (#6439) 2025-10-25 22:55:47 -05:00
Florian Fischer
4370319fec fix: Food seed only works for American English (#6204) (#6436)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-10-25 12:40:02 -05:00
Hayden
15908d190d chore(l10n): New Crowdin updates (#6435) 2025-10-25 10:07:21 -05:00
Hayden
fcb909e072 chore(l10n): New Crowdin updates (#6434) 2025-10-25 01:50:15 +00:00
Aurelien
8e532af4d9 fix: Heart and Ranking Stars overlap each other (#6359)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-10-24 17:35:07 -05:00
Richard vL
831cb6dd17 fix: Changed sorting icons (#6354)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-10-24 21:51:11 +00:00
Michael Genson
089bb24c0f fix: Make docs:gen consistent regardless of timestamp (again) (#6432) 2025-10-24 16:34:44 -05:00
Fernando Muñoz Paredes
107dfc34de fix: dash slug names (#5709)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-10-24 16:01:55 -05:00
renovate[bot]
144d4caea6 chore(deps): update dependency orjson to v3.11.4 (#6431)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-24 14:02:45 -05:00
renovate[bot]
b3db81b9a4 chore(deps): update dependency openai to v2.6.1 (#6429)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-24 18:29:53 +00:00
renovate[bot]
dc2bbdc494 fix(deps): update dependency fastapi to ^0.120.0 (#6426)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-24 13:17:47 -05:00
Hayden
8f17a08923 chore(l10n): New Crowdin updates (#6396) 2025-10-24 15:44:12 +00:00
renovate[bot]
f6209bff54 chore(deps): update node.js to 23c24e8 (#6424)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-24 15:31:16 +00:00
Michael Genson
33865285d1 fix: Use crossorigin: "use-credentials" with PWA manifest (#6430) 2025-10-24 10:20:04 -05:00
renovate[bot]
e226b9b1d5 fix(deps): update dependency vite to v7 [security] (#6412)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-24 14:55:04 +00:00
miah
201c63d1e4 feat: Improve shopping list label sections (#6345)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-10-24 09:43:55 -05:00
renovate[bot]
a242f567ad chore(deps): update dependency ruff to v0.14.2 (#6425)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-23 23:08:29 -05:00
renovate[bot]
67ead2e8a1 chore(deps): update node.js to a2a7dcc (#6422)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-22 13:54:33 +00:00
renovate[bot]
7b273b77e2 chore(deps): update node.js to 58644f2 (#6418)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-22 08:42:55 -05:00
renovate[bot]
b4cd095360 chore(deps): update dependency pylint to v4.0.2 (#6409)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-21 18:22:02 +00:00
renovate[bot]
a9bb27c782 chore(deps): update dependency fastapi to v0.119.1 (#6408)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-21 13:08:10 -05:00
renovate[bot]
9df1523911 fix(deps): update dependency uvicorn to ^0.38.0 (#6400)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-21 12:47:15 -05:00
renovate[bot]
0c8a1ae608 chore(deps): update dependency openai to v2.6.0 (#6398)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-21 17:26:57 +00:00
renovate[bot]
7d54404bf0 chore(deps): update dependency ruff to v0.14.1 (#6397)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-21 12:04:13 -05:00
github-actions[bot]
8bbe70d245 chore(auto): Update pre-commit hooks (#6407)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2025-10-21 16:16:07 +00:00
renovate[bot]
6c87f7fe33 chore(deps): update dependency pydantic to v2.12.3 (#6377)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-21 11:04:10 -05:00
miah
7e168eb75b feat: Support User-Level Default Activities (#5125) 2025-10-15 21:30:08 -05:00
Hayden
64d481b4fc chore(l10n): New Crowdin updates (#6395) 2025-10-15 21:08:22 +00:00
renovate[bot]
a9926557bc fix(deps): update dependency pillow to v12 (#6394)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-15 15:55:25 -05:00
renovate[bot]
2a908c0dd2 chore(deps): update dependency coverage to v7.11.0 (#6392) 2025-10-15 14:50:55 -05:00
renovate[bot]
c64a0dc769 chore(deps): update dependency mkdocs-material to v9.6.22 (#6391) 2025-10-15 10:46:58 -05:00
renovate[bot]
7ce9c35ef5 chore(deps): update dependency pylint to v4.0.1 (#6389) 2025-10-15 13:17:11 +00:00
Hayden
0acca2021d chore(l10n): New Crowdin updates (#6388) 2025-10-15 08:05:19 -05:00
Michael Genson
5de0b48aa9 fix: Upgrade Pydantic and remove manual Postgres URL parsing (#6385) 2025-10-14 15:52:50 -05:00
Hayden
ffe199c083 chore(l10n): New Crowdin updates (#6384) 2025-10-14 20:25:34 +00:00
Michael Genson
215a18be42 fix: Check x-forwarded-proto header when determining auth cookie samesite attribute (#6383) 2025-10-14 12:38:03 -05:00
github-actions[bot]
a1b065e5d1 chore(auto): Update pre-commit hooks (#6370)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2025-10-14 16:22:22 +00:00
Hayden
d660d89a1b chore(l10n): New Crowdin updates (#6381) 2025-10-14 10:22:03 -05:00
Hayden
ade1f797a9 chore(l10n): New Crowdin updates (#6376) 2025-10-13 19:45:53 +00:00
Ritoban Dutta
192872b9ec fix: Change 'Units' to 'Unit' in shopping list item editor (#6372) 2025-10-13 17:41:29 +00:00
renovate[bot]
25ebcb1a05 chore(deps): update dependency pylint to v4 (#6366)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-13 15:21:26 +00:00
Hayden
89d95ca5e1 chore(l10n): New Crowdin updates (#6371) 2025-10-13 10:09:53 -05:00
Hayden
b705652af3 chore(l10n): New Crowdin updates (#6367) 2025-10-12 14:28:54 -05:00
github-actions[bot]
b0c78de2da chore(l10n): Crowdin locale sync (#6364)
Co-authored-by: GitHub Action <action@github.com>
2025-10-12 04:15:09 +00:00
renovate[bot]
c4b1f9fd01 fix(deps): update dependency fastapi to ^0.119.0 (#6362)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-11 23:01:45 -05:00
renovate[bot]
2b0d8227f4 chore(deps): update dependency alembic to v1.17.0 (#6361)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-11 19:14:31 +00:00
Hayden
42517e9f8a chore(l10n): New Crowdin updates (#6357) 2025-10-11 14:01:21 -05:00
renovate[bot]
37c97c8aba chore(deps): update dependency python-ldap to v3.4.5 [security] (#6356)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-10 22:52:36 -05:00
Hayden
64d36a2608 chore(l10n): New Crowdin updates (#6353) 2025-10-10 12:49:24 -05:00
renovate[bot]
563defe074 chore(deps): update dependency sqlalchemy to v2.0.44 (#6352)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-10 12:14:59 -05:00
renovate[bot]
f5ffb760d3 chore(deps): update dependency psycopg2-binary to v2.9.11 (#6351)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-10 16:34:05 +00:00
renovate[bot]
3118a0c0cf fix(deps): update dependency aiofiles to v25 (#6344)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-10 11:19:52 -05:00
renovate[bot]
444beb68f9 chore(deps): update dependency rich to v14.2.0 (#6341)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-10 16:03:34 +00:00
renovate[bot]
49a97ebc0e chore(deps): update dependency fastapi to v0.118.3 (#6336)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-10 10:46:29 -05:00
renovate[bot]
6f682b742e chore(deps): update dependency pydantic to v2.12.0 (#6310)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-10 10:24:12 -05:00
Hayden
32d4d22bb8 chore(l10n): New Crowdin updates (#6347)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-10-10 05:33:04 +00:00
Dallin Miner
71d86489f4 feat: Add new migration for DVO Cook'n (#5085)
Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2025-10-10 00:22:51 -05:00
github-actions[bot]
a95eaf3d2e docs(auto): Update image tag, for release v3.3.2 (#6346)
Co-authored-by: michael-genson <71845777+michael-genson@users.noreply.github.com>
2025-10-10 04:14:06 +00:00
renovate[bot]
414af989e7 chore(deps): update dependency openai to v2.3.0 (#6330)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-09 23:02:07 -05:00
Michael Genson
b7b191a5ee fix: Truncate Long Passwords (>72 bytes) (#6335) 2025-10-09 23:46:06 +00:00
Hayden
5620370ade chore(l10n): New Crowdin updates (#6320) 2025-10-09 16:30:31 +00:00
renovate[bot]
d333d47e34 chore(deps): update dependency ruff to ^0.14.0 (#6334)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-07 18:49:52 +00:00
Brian Choromanski
b34b1c9be3 feat: Added url to current version release (#6308) 2025-10-07 09:31:55 +00:00
Michael Genson
8c5010148d fix: Translate log-out string (#6332) 2025-10-06 17:14:51 -05:00
Michael Genson
a17b0e329e fix: No Redirect On Valid Token (#6327) 2025-10-06 13:02:25 -05:00
Arsène Reymond
8ab69a7d7a fix: Remove unused next-auth dependency (#6328) 2025-10-06 12:43:13 -05:00
github-actions[bot]
f4ecf74b91 chore(auto): Update pre-commit hooks (#6324)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2025-10-06 15:09:13 +00:00
renovate[bot]
ba9d816f64 chore(deps): update dependency pylint to v3.3.9 (#6321)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-06 09:57:17 -05:00
Michael Genson
6895b49543 fix: Re-write Nuxt auth backend and get rid of sidebase auth (#6322) 2025-10-05 20:43:38 -05:00
github-actions[bot]
fffe7b05e0 chore(l10n): Crowdin locale sync (#6318)
Co-authored-by: GitHub Action <action@github.com>
2025-10-05 02:56:21 +00:00
Hayden
1271e0e49b chore(l10n): New Crowdin updates (#6317) 2025-10-04 21:45:57 -05:00
Hayden
478054b724 chore(l10n): New Crowdin updates (#6313) 2025-10-04 11:30:21 -05:00
Hayden
57d259a7a3 chore(l10n): New Crowdin updates (#6309) 2025-10-04 21:34:09 +10:00
Hayden
a4a6d4dfb1 chore(l10n): New Crowdin updates (#6273) 2025-10-03 17:24:33 +00:00
github-actions[bot]
f7b4f79312 chore(l10n): Crowdin locale sync (#6268)
Co-authored-by: GitHub Action <action@github.com>
2025-10-03 17:03:14 +00:00
renovate[bot]
434d312f7c chore(deps): update dependency openai to v2.1.0 (#6302)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-03 11:50:06 -05:00
renovate[bot]
bda460b49e chore(deps): update dependency ruff to v0.13.3 (#6301)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-03 16:17:53 +00:00
renovate[bot]
d3e1c48655 chore(deps): update dependency authlib to v1.6.5 (#6299)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-03 11:05:13 -05:00
github-actions[bot]
b2a3430f2c docs(auto): Update image tag, for release v3.3.1 (#6300)
Co-authored-by: michael-genson <71845777+michael-genson@users.noreply.github.com>
2025-10-02 18:26:51 +00:00
renovate[bot]
3d792d9333 chore(deps): update dependency openai to v2.0.1 (#6296)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-02 17:22:38 +00:00
renovate[bot]
2e028d7e12 chore(deps): update node.js to 2bb201f (#6295)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-02 12:11:00 -05:00
Brian Choromanski
c63932e8b3 fix: Updated pwa orientation to any (#6298) 2025-10-01 20:51:15 -05:00
renovate[bot]
3ba2227bc7 chore(deps): update dependency mkdocs-material to v9.6.21 (#6293)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-01 04:45:41 +00:00
renovate[bot]
67af391c6b chore(deps): update dependency pillow-heif to v1.1.1 (#6291)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-30 23:33:14 -05:00
renovate[bot]
70ae0dac25 chore(deps): update node.js to d367fd3 (#6292)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-01 03:19:44 +00:00
renovate[bot]
e15a9c3c9f chore(deps): update dependency apprise to v1.9.5 (#6290)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-30 22:07:31 -05:00
renovate[bot]
9d40d60b3b fix(deps): update dependency openai to v2 (#6294)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-30 21:40:14 -05:00
renovate[bot]
e2760f7247 chore(deps): update dependency tzdata to v2025 (#6287) 2025-09-29 17:18:19 -05:00
Michael Genson
83bf21b947 fix: Restore recipe meta for non-logged-in users (#6286) 2025-09-29 10:33:18 -05:00
Michael Genson
d1824affff fix: Default to "0" qty when creating ingredients everywhere (#6285) 2025-09-29 10:19:37 -05:00
renovate[bot]
4827e1092f chore(deps): update dependency beautifulsoup4 to v4.14.2 (#6283)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-29 09:49:54 -05:00
github-actions[bot]
7db767b075 chore(auto): Update pre-commit hooks (#6282)
Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2025-09-29 14:36:01 +00:00
renovate[bot]
afdd0b15dc fix(deps): update dependency fastapi to ^0.118.0 (#6281)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-29 09:24:37 -05:00
Michael Genson
37c9166a77 docs: Update TOKEN_TIME docs to include max (#6279) 2025-09-28 22:05:15 -05:00
github-actions[bot]
ba0b9d4cd9 docs(auto): Update image tag, for release v3.3.0 (#6267)
Co-authored-by: michael-genson <71845777+michael-genson@users.noreply.github.com>
2025-09-28 01:13:15 +00:00
renovate[bot]
9fd99a86b8 chore(deps): update dependency beautifulsoup4 to v4.14.0 (#6260)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-27 20:02:31 -05:00
195 changed files with 8445 additions and 7384 deletions

View File

@@ -77,7 +77,7 @@ jobs:
sed -i 's/:v[0-9]*.[0-9]*.[0-9]*/:v${{ env.VERSION_NUM }}/' docs/docs/documentation/getting-started/installation/sqlite.md sed -i 's/:v[0-9]*.[0-9]*.[0-9]*/:v${{ env.VERSION_NUM }}/' docs/docs/documentation/getting-started/installation/sqlite.md
sed -i 's/:v[0-9]*.[0-9]*.[0-9]*/:v${{ env.VERSION_NUM }}/' docs/docs/documentation/getting-started/installation/postgres.md sed -i 's/:v[0-9]*.[0-9]*.[0-9]*/:v${{ env.VERSION_NUM }}/' docs/docs/documentation/getting-started/installation/postgres.md
sed -i 's/^version = "[^"]*"/version = "${{ env.VERSION_NUM }}"/' pyproject.toml sed -i 's/^version = "[^"]*"/version = "${{ env.VERSION_NUM }}"/' pyproject.toml
sed -i 's/^\s*"version": "[^"]*"/"version": "${{ env.VERSION_NUM }}"/' frontend/package.json sed -i 's/\("version": "\)[^"]*"/\1${{ env.VERSION_NUM }}"/' frontend/package.json
- name: Create Pull Request - name: Create Pull Request
uses: peter-evans/create-pull-request@v6 uses: peter-evans/create-pull-request@v6

View File

@@ -12,7 +12,7 @@ repos:
exclude: ^tests/data/ exclude: ^tests/data/
- repo: https://github.com/astral-sh/ruff-pre-commit - repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version. # Ruff version.
rev: v0.13.1 rev: v0.14.2
hooks: hooks:
- id: ruff - id: ruff
- id: ruff-format - id: ruff-format

View File

@@ -1,7 +1,8 @@
import json import json
from datetime import UTC, datetime
from typing import Any
from fastapi import FastAPI from fastapi import FastAPI
from freezegun import freeze_time
from mealie.app import app from mealie.app import app
from mealie.core.config import determine_data_dir from mealie.core.config import determine_data_dir
@@ -37,14 +38,43 @@ HTML_TEMPLATE = """<!-- Custom HTML site displayed as the Home chapter -->
""" """
HTML_PATH = DATA_DIR.parent.parent.joinpath("docs/docs/overrides/api.html") HTML_PATH = DATA_DIR.parent.parent.joinpath("docs/docs/overrides/api.html")
CONSTANT_DT = datetime(2025, 10, 24, 15, 53, 0, 0, tzinfo=UTC)
def normalize_timestamps(s: dict[str, Any]) -> dict[str, Any]:
field_format = s.get("format")
is_timestamp = field_format in ["date-time", "date", "time"]
has_default = s.get("default")
if not is_timestamp:
for k, v in s.items():
if isinstance(v, dict):
s[k] = normalize_timestamps(v)
elif isinstance(v, list):
s[k] = [normalize_timestamps(i) if isinstance(i, dict) else i for i in v]
return s
elif not has_default:
return s
if field_format == "date-time":
s["default"] = CONSTANT_DT.isoformat()
elif field_format == "date":
s["default"] = CONSTANT_DT.date().isoformat()
elif field_format == "time":
s["default"] = CONSTANT_DT.time().isoformat()
return s
def generate_api_docs(my_app: FastAPI): def generate_api_docs(my_app: FastAPI):
openapi_schema = my_app.openapi()
openapi_schema = normalize_timestamps(openapi_schema)
with open(HTML_PATH, "w") as fd: with open(HTML_PATH, "w") as fd:
text = HTML_TEMPLATE.replace("MY_SPECIFIC_TEXT", json.dumps(my_app.openapi())) text = HTML_TEMPLATE.replace("MY_SPECIFIC_TEXT", json.dumps(openapi_schema))
fd.write(text) fd.write(text)
if __name__ == "__main__": if __name__ == "__main__":
with freeze_time("2024-01-20T17:00:55Z"): generate_api_docs(app)
generate_api_docs(app)

View File

@@ -1,7 +1,7 @@
############################################### ###############################################
# Frontend Build # Frontend Build
############################################### ###############################################
FROM node:22@sha256:4973262386dc1cb70f7d6fc48a855027d8f12d2d3b1fe559b9db9a4fcb74668f \ FROM node:24@sha256:34af25027ee1b8bffd482ba995ec1e577fbd398db87beb4c60b80c2c9c025127 \
AS frontend-builder AS frontend-builder
WORKDIR /frontend WORKDIR /frontend

View File

@@ -22,6 +22,7 @@ Mealie supports importing recipes from a few other sources besides websites. Cur
- Recipe Keeper - Recipe Keeper
- Copy Me That - Copy Me That
- My Recipe Box - My Recipe Box
- DVO Cook'n X3
You can access these options on your installation at the `/group/migrations` page on your installation. If you'd like to see another source added, feel free to request so on Github. You can access these options on your installation at the `/group/migrations` page on your installation. If you'd like to see another source added, feel free to request so on Github.

View File

@@ -11,7 +11,7 @@
| DEFAULT_GROUP | Home | The default group for users | | DEFAULT_GROUP | Home | The default group for users |
| DEFAULT_HOUSEHOLD | Family | The default household for users in each group | | DEFAULT_HOUSEHOLD | Family | The default household for users in each group |
| BASE_URL | http://localhost:8080 | Used for Notifications | | BASE_URL | http://localhost:8080 | Used for Notifications |
| TOKEN_TIME | 48 | The time in hours that a login/auth token is valid | | TOKEN_TIME | 48 | The time in hours that a login/auth token is valid. Must be <= 87600 (10 years, in hours). |
| API_PORT | 9000 | The port exposed by backend API. **Do not change this if you're running in Docker** | | API_PORT | 9000 | The port exposed by backend API. **Do not change this if you're running in Docker** |
| API_DOCS | True | Turns on/off access to the API documentation locally | | API_DOCS | True | Turns on/off access to the API documentation locally |
| TZ | UTC | Must be set to get correct date/time on the server | | TZ | UTC | Must be set to get correct date/time on the server |

View File

@@ -31,7 +31,7 @@ To deploy mealie on your local network, it is highly recommended to use Docker t
We've gone through a few versions of Mealie v1 deployment targets. We have settled on a single container deployment, and we've begun publishing the nightly container on github containers. If you're looking to move from the old nightly (split containers _or_ the omni image) to the new nightly, there are a few things you need to do: We've gone through a few versions of Mealie v1 deployment targets. We have settled on a single container deployment, and we've begun publishing the nightly container on github containers. If you're looking to move from the old nightly (split containers _or_ the omni image) to the new nightly, there are a few things you need to do:
1. Take a backup just in case! 1. Take a backup just in case!
2. Replace the image for the API container with `ghcr.io/mealie-recipes/mealie:v3.2.1` 2. Replace the image for the API container with `ghcr.io/mealie-recipes/mealie:v3.3.2`
3. Take the external port from the frontend container and set that as the port mapped to port `9000` on the new container. The frontend is now served on port 9000 from the new container, so it will need to be mapped for you to have access. 3. Take the external port from the frontend container and set that as the port mapped to port `9000` on the new container. The frontend is now served on port 9000 from the new container, so it will need to be mapped for you to have access.
4. Restart the container 4. Restart the container

View File

@@ -10,7 +10,7 @@ PostgreSQL might be considered if you need to support many concurrent users. In
```yaml ```yaml
services: services:
mealie: mealie:
image: ghcr.io/mealie-recipes/mealie:v3.2.1 # (3) image: ghcr.io/mealie-recipes/mealie:v3.3.2 # (3)
container_name: mealie container_name: mealie
restart: always restart: always
ports: ports:

View File

@@ -11,7 +11,7 @@ SQLite is a popular, open source, self-contained, zero-configuration database th
```yaml ```yaml
services: services:
mealie: mealie:
image: ghcr.io/mealie-recipes/mealie:v3.2.1 # (3) image: ghcr.io/mealie-recipes/mealie:v3.3.2 # (3)
container_name: mealie container_name: mealie
restart: always restart: always
ports: ports:

View File

@@ -28,6 +28,7 @@ Mealie is a self hosted recipe manager and meal planner with a RestAPI backend a
- Copy Me That - Copy Me That
- Paprika - Paprika
- Tandoor Recipes - Tandoor Recipes
- DVO Cook'n X3
- Random Meal Plan generation - Random Meal Plan generation
- Advanced rule configuration to fine tune random recipes - Advanced rule configuration to fine tune random recipes

File diff suppressed because one or more lines are too long

View File

@@ -49,7 +49,6 @@
> >
<RecipeFavoriteBadge <RecipeFavoriteBadge
v-if="isOwnGroup" v-if="isOwnGroup"
class="absolute"
:recipe-id="recipeId" :recipe-id="recipeId"
show-always show-always
/> />

View File

@@ -32,7 +32,7 @@
v-bind="props" v-bind="props"
> >
<v-icon :start="!$vuetify.display.xs"> <v-icon :start="!$vuetify.display.xs">
{{ state.orderDirection === "asc" ? $globals.icons.sortAscending : $globals.icons.sortDescending }} {{ state.orderDirection === "asc" ? $globals.icons.sortDescending : $globals.icons.sortAscending }}
</v-icon> </v-icon>
{{ $vuetify.display.xs ? null : sortText }} {{ $vuetify.display.xs ? null : sortText }}
</v-btn> </v-btn>
@@ -42,7 +42,7 @@
<v-list-item <v-list-item
slim slim
density="comfortable" density="comfortable"
:prepend-icon="state.orderDirection === 'asc' ? $globals.icons.sortDescending : $globals.icons.sortAscending" :prepend-icon="state.orderDirection === 'asc' ? $globals.icons.sortAscending : $globals.icons.sortDescending"
:title="state.orderDirection === 'asc' ? $t('general.sort-descending') : $t('general.sort-ascending')" :title="state.orderDirection === 'asc' ? $t('general.sort-descending') : $t('general.sort-ascending')"
@click="toggleOrderDirection" @click="toggleOrderDirection"
/> />

View File

@@ -127,7 +127,7 @@ function addIngredient(ingredients: Array<string> | null = null) {
note: x, note: x,
unit: undefined, unit: undefined,
food: undefined, food: undefined,
quantity: 1, quantity: 0,
}; };
}); });
@@ -145,7 +145,7 @@ function addIngredient(ingredients: Array<string> | null = null) {
unit: undefined, unit: undefined,
// @ts-expect-error - prop can be null-type by NoUndefinedField type forces it to be set // @ts-expect-error - prop can be null-type by NoUndefinedField type forces it to be set
food: undefined, food: undefined,
quantity: 1, quantity: 0,
}); });
} }
} }
@@ -159,7 +159,7 @@ function insertNewIngredient(dest: number) {
unit: undefined, unit: undefined,
// @ts-expect-error - prop can be null-type by NoUndefinedField type forces it to be set // @ts-expect-error - prop can be null-type by NoUndefinedField type forces it to be set
food: undefined, food: undefined,
quantity: 1, quantity: 0,
}); });
} }
</script> </script>

View File

@@ -523,7 +523,7 @@ function insertNewIngredient(index: number) {
input: "", input: "",
confidence: {}, confidence: {},
ingredient: { ingredient: {
quantity: 1.0, quantity: 0,
referenceId: uuid4(), referenceId: uuid4(),
}, },
} as ParsedIngredient; } as ParsedIngredient;

View File

@@ -47,7 +47,7 @@
left left
color="primary" color="primary"
> >
{{ $globals.icons.knfife }} {{ $globals.icons.knife }}
</v-icon> </v-icon>
<p class="my-0"> <p class="my-0">
<span class="font-weight-bold opacity-80">{{ validatePrepTime.name }}</span><br>{{ validatePrepTime.value }} <span class="font-weight-bold opacity-80">{{ validatePrepTime.name }}</span><br>{{ validatePrepTime.value }}

View File

@@ -10,7 +10,7 @@
v-model="listItem.unit" v-model="listItem.unit"
v-model:item-id="listItem.unitId!" v-model:item-id="listItem.unitId!"
:items="units" :items="units"
:label="$t('general.units')" :label="$t('recipe.unit')"
:icon="$globals.icons.units" :icon="$globals.icons.units"
create create
@create="createAssignUnit" @create="createAssignUnit"

View File

@@ -128,7 +128,7 @@ export default defineNuxtComponent({
async function logout() { async function logout() {
try { try {
await $auth.signOut({ callbackUrl: "/login?direct=1" }); await $auth.signOut("/login?direct=1");
} }
catch (e) { catch (e) {
console.error(e); console.error(e);

View File

@@ -0,0 +1,17 @@
<template>
<v-expansion-panels v-model="open">
<slot />
</v-expansion-panels>
</template>
<script setup lang="ts">
interface Props {
startOpen?: boolean;
}
const props = withDefaults(defineProps<Props>(), {
startOpen: false,
});
const open = ref(props.startOpen ? [0] : []);
</script>

View File

@@ -1,5 +1,5 @@
import { useToggle } from "@vueuse/core"; import { useToggle } from "@vueuse/core";
import type { ShoppingListOut, ShoppingListItemOut } from "~/lib/api/types/household"; import type { ShoppingListOut } from "~/lib/api/types/household";
/** /**
* Composable for managing shopping list label state and operations * Composable for managing shopping list label state and operations
@@ -36,14 +36,24 @@ export function useShoppingListLabels(shoppingList: Ref<ShoppingListOut | null>)
); );
}); });
const labelColorByName = computed(() => {
const map: Record<string, string | undefined> = {};
shoppingList.value?.listItems?.forEach((item) => {
if (!item.label) return;
const labelName = item.label?.name || t("shopping-list.no-label");
map[labelName] = item.label.color;
});
return map;
});
watch(labelNames, initializeLabelOpenStates, { immediate: true }); watch(labelNames, initializeLabelOpenStates, { immediate: true });
function toggleShowLabel(key: string) { function toggleShowLabel(key: string) {
labelOpenState.value[key] = !labelOpenState.value[key]; labelOpenState.value[key] = !labelOpenState.value[key];
} }
function getLabelColor(item: ShoppingListItemOut | null) { function getLabelColor(label: string) {
return item?.label?.color; return labelColorByName.value[label];
} }
const presentLabels = computed(() => { const presentLabels = computed(() => {

View File

@@ -0,0 +1,63 @@
import type { Activity, I18n, TranslationResult } from "~/lib/api/types/activity";
import { ActivityKey } from "~/lib/api/types/activity";
export const DEFAULT_ACTIVITY = "/g/home" as const;
type ActivityRegistry = {
recipes: Activity;
mealplanner: Activity;
shopping_list: Activity;
};
const selectableActivities: ActivityRegistry = {
recipes: {
key: ActivityKey.RECIPES,
route: groupSlug => groupSlug ? `/g/${groupSlug}` : DEFAULT_ACTIVITY,
label: i18n => i18n.t("general.recipes"),
},
mealplanner: {
key: ActivityKey.MEALPLANNER,
route: () => "/household/mealplan/planner/view",
label: i18n => i18n.t("meal-plan.meal-planner"),
},
shopping_list: {
key: ActivityKey.SHOPPING_LIST,
route: () => "/shopping-lists",
label: i18n => i18n.t("shopping-list.shopping-lists"),
},
};
function getDefaultActivityRoute(activityKey?: ActivityKey, groupSlug?: string): string {
if (!activityKey) {
return DEFAULT_ACTIVITY;
}
const route = selectableActivities[activityKey]?.route ?? (() => DEFAULT_ACTIVITY);
return route(groupSlug);
}
function getDefaultActivityLabels(i18n: I18n): TranslationResult[] {
return Object.values(selectableActivities).map(
({ label }) => label(i18n),
);
}
function getActivityKey(i18n: I18n, target: TranslationResult = ""): ActivityKey | undefined {
return Object.values(selectableActivities)
.find(({ label }) => label(i18n) === target)?.key;
}
function getActivityLabel(i18n: I18n, target?: ActivityKey): TranslationResult {
return Object.values(selectableActivities)
.find(({ key }) => key === target)
?.label(i18n) ?? "";
}
export default function useDefaultActivity() {
return {
selectableActivities,
getDefaultActivityRoute,
getDefaultActivityLabels,
getActivityKey,
getActivityLabel,
};
}

View File

@@ -21,7 +21,7 @@ export const LOCALES = [
{ {
name: "Українська (Ukrainian)", name: "Українська (Ukrainian)",
value: "uk-UA", value: "uk-UA",
progress: 44, progress: 57,
dir: "ltr", dir: "ltr",
}, },
{ {
@@ -33,7 +33,7 @@ export const LOCALES = [
{ {
name: "Svenska (Swedish)", name: "Svenska (Swedish)",
value: "sv-SE", value: "sv-SE",
progress: 52, progress: 65,
dir: "ltr", dir: "ltr",
}, },
{ {
@@ -57,7 +57,7 @@ export const LOCALES = [
{ {
name: "Pусский (Russian)", name: "Pусский (Russian)",
value: "ru-RU", value: "ru-RU",
progress: 40, progress: 44,
dir: "ltr", dir: "ltr",
}, },
{ {
@@ -75,25 +75,25 @@ export const LOCALES = [
{ {
name: "Português do Brasil (Brazilian Portuguese)", name: "Português do Brasil (Brazilian Portuguese)",
value: "pt-BR", value: "pt-BR",
progress: 45, progress: 46,
dir: "ltr", dir: "ltr",
}, },
{ {
name: "Polski (Polish)", name: "Polski (Polish)",
value: "pl-PL", value: "pl-PL",
progress: 42, progress: 43,
dir: "ltr", dir: "ltr",
}, },
{ {
name: "Norsk (Norwegian)", name: "Norsk (Norwegian)",
value: "no-NO", value: "no-NO",
progress: 39, progress: 40,
dir: "ltr", dir: "ltr",
}, },
{ {
name: "Nederlands (Dutch)", name: "Nederlands (Dutch)",
value: "nl-NL", value: "nl-NL",
progress: 49, progress: 52,
dir: "ltr", dir: "ltr",
}, },
{ {
@@ -123,19 +123,19 @@ export const LOCALES = [
{ {
name: "Italiano (Italian)", name: "Italiano (Italian)",
value: "it-IT", value: "it-IT",
progress: 41, progress: 46,
dir: "ltr", dir: "ltr",
}, },
{ {
name: "Íslenska (Icelandic)", name: "Íslenska (Icelandic)",
value: "is-IS", value: "is-IS",
progress: 3, progress: 27,
dir: "ltr", dir: "ltr",
}, },
{ {
name: "Magyar (Hungarian)", name: "Magyar (Hungarian)",
value: "hu-HU", value: "hu-HU",
progress: 45, progress: 46,
dir: "ltr", dir: "ltr",
}, },
{ {
@@ -147,7 +147,7 @@ export const LOCALES = [
{ {
name: "עברית (Hebrew)", name: "עברית (Hebrew)",
value: "he-IL", value: "he-IL",
progress: 73, progress: 72,
dir: "rtl", dir: "rtl",
}, },
{ {
@@ -159,7 +159,7 @@ export const LOCALES = [
{ {
name: "Français (French)", name: "Français (French)",
value: "fr-FR", value: "fr-FR",
progress: 66, progress: 67,
dir: "ltr", dir: "ltr",
}, },
{ {
@@ -171,25 +171,25 @@ export const LOCALES = [
{ {
name: "Belge (Belgian)", name: "Belge (Belgian)",
value: "fr-BE", value: "fr-BE",
progress: 41, progress: 40,
dir: "ltr", dir: "ltr",
}, },
{ {
name: "Suomi (Finnish)", name: "Suomi (Finnish)",
value: "fi-FI", value: "fi-FI",
progress: 37, progress: 40,
dir: "ltr", dir: "ltr",
}, },
{ {
name: "Eesti (Estonian)", name: "Eesti (Estonian)",
value: "et-EE", value: "et-EE",
progress: 37, progress: 36,
dir: "ltr", dir: "ltr",
}, },
{ {
name: "Español (Spanish)", name: "Español (Spanish)",
value: "es-ES", value: "es-ES",
progress: 42, progress: 45,
dir: "ltr", dir: "ltr",
}, },
{ {
@@ -207,19 +207,19 @@ export const LOCALES = [
{ {
name: "Ελληνικά (Greek)", name: "Ελληνικά (Greek)",
value: "el-GR", value: "el-GR",
progress: 40, progress: 41,
dir: "ltr", dir: "ltr",
}, },
{ {
name: "Deutsch (German)", name: "Deutsch (German)",
value: "de-DE", value: "de-DE",
progress: 78, progress: 95,
dir: "ltr", dir: "ltr",
}, },
{ {
name: "Dansk (Danish)", name: "Dansk (Danish)",
value: "da-DK", value: "da-DK",
progress: 40, progress: 45,
dir: "ltr", dir: "ltr",
}, },
{ {
@@ -237,7 +237,7 @@ export const LOCALES = [
{ {
name: "Български (Bulgarian)", name: "Български (Bulgarian)",
value: "bg-BG", value: "bg-BG",
progress: 44, progress: 47,
dir: "ltr", dir: "ltr",
}, },
{ {

View File

@@ -1,4 +1,5 @@
import { useLocalStorage, useSessionStorage } from "@vueuse/core"; import { useLocalStorage, useSessionStorage } from "@vueuse/core";
import { ActivityKey } from "~/lib/api/types/activity";
import type { RegisteredParser, TimelineEventType } from "~/lib/api/types/recipe"; import type { RegisteredParser, TimelineEventType } from "~/lib/api/types/recipe";
import type { QueryFilterJSON } from "~/lib/api/types/response"; import type { QueryFilterJSON } from "~/lib/api/types/response";
@@ -65,6 +66,10 @@ export interface UserRecipeCreatePreferences {
parseRecipe: boolean; parseRecipe: boolean;
} }
export interface UserActivityPreferences {
defaultActivity: ActivityKey;
}
export function useUserMealPlanPreferences(): Ref<UserMealPlanPreferences> { export function useUserMealPlanPreferences(): Ref<UserMealPlanPreferences> {
const fromStorage = useLocalStorage( const fromStorage = useLocalStorage(
"meal-planner-preferences", "meal-planner-preferences",
@@ -115,6 +120,20 @@ export function useUserSortPreferences(): Ref<UserRecipePreferences> {
return fromStorage; return fromStorage;
} }
export function useUserActivityPreferences(): Ref<UserActivityPreferences> {
const fromStorage = useLocalStorage(
"activity-preferences",
{
defaultActivity: ActivityKey.RECIPES,
},
{ mergeDefaults: true },
// we cast to a Ref because by default it will return an optional type ref
// but since we pass defaults we know all properties are set.
) as Ref<UserActivityPreferences>;
return fromStorage;
}
export function useUserSearchQuerySession(): Ref<UserSearchQuery> { export function useUserSearchQuerySession(): Ref<UserSearchQuery> {
const fromStorage = useSessionStorage( const fromStorage = useSessionStorage(
"search-query", "search-query",

View File

@@ -0,0 +1,151 @@
import { ref, computed } from "vue";
import type { UserOut } from "~/lib/api/types/user";
interface AuthData {
value: UserOut | null;
}
interface AuthStatus {
value: "loading" | "authenticated" | "unauthenticated";
}
interface AuthState {
data: AuthData;
status: AuthStatus;
signIn: (credentials: FormData, options?: { redirect?: boolean }) => Promise<void>;
signOut: (callbackUrl?: string) => Promise<void>;
refresh: () => Promise<void>;
getSession: () => Promise<void>;
setToken: (token: string | null) => void;
}
const authUser = ref<UserOut | null>(null);
const authStatus = ref<"loading" | "authenticated" | "unauthenticated">("loading");
export const useAuthBackend = function (): AuthState {
const { $axios } = useNuxtApp();
const router = useRouter();
const tokenName = useRuntimeConfig().public.AUTH_TOKEN;
const tokenCookie = useCookie(tokenName);
function setToken(token: string | null) {
tokenCookie.value = token;
}
function handleAuthError(error: any, redirect = false) {
// Only clear token on auth errors, not network errors
if (error?.response?.status === 401) {
setToken(null);
authUser.value = null;
authStatus.value = "unauthenticated";
if (redirect) {
router.push("/login");
}
}
}
async function getSession(): Promise<void> {
if (!tokenCookie.value) {
authUser.value = null;
authStatus.value = "unauthenticated";
return;
}
authStatus.value = "loading";
try {
const { data } = await $axios.get<UserOut>("/api/users/self");
authUser.value = data;
authStatus.value = "authenticated";
}
catch (error: any) {
console.error("Failed to fetch user session:", error);
handleAuthError(error);
authStatus.value = "unauthenticated";
}
}
async function signIn(credentials: FormData): Promise<void> {
authStatus.value = "loading";
try {
const response = await $axios.post("/api/auth/token", credentials, {
headers: {
"Content-Type": "multipart/form-data",
},
});
const { access_token } = response.data;
setToken(access_token);
await getSession();
}
catch (error) {
authStatus.value = "unauthenticated";
throw error;
}
}
async function signOut(callbackUrl: string = ""): Promise<void> {
try {
await $axios.post("/api/auth/logout");
}
catch (error) {
// Continue with logout even if API call fails
console.warn("Logout API call failed:", error);
}
finally {
setToken(null);
authUser.value = null;
authStatus.value = "unauthenticated";
await router.push(callbackUrl || "/login");
}
}
async function refresh(): Promise<void> {
if (!tokenCookie.value) return;
try {
const response = await $axios.get("/api/auth/refresh");
const { access_token } = response.data;
setToken(access_token);
await getSession();
}
catch (error: any) {
handleAuthError(error, true);
throw error;
}
}
// Auto-refresh user data periodically when authenticated
if (import.meta.client) {
let refreshInterval: NodeJS.Timeout | null = null;
watch(() => authStatus.value, (status) => {
if (status === "authenticated") {
refreshInterval = setInterval(() => {
if (tokenCookie.value) {
getSession().catch(() => {
// Ignore errors in background refresh
});
}
}, 5 * 60 * 1000); // 5 minutes
}
else {
// Clear interval when not authenticated
if (refreshInterval) {
clearInterval(refreshInterval);
refreshInterval = null;
}
}
}, { immediate: true });
}
return {
data: computed(() => authUser.value),
status: computed(() => authStatus.value),
signIn,
signOut,
refresh,
getSession,
setToken,
};
};

View File

@@ -1,9 +1,9 @@
import { ref, watch, computed } from "vue"; import { ref, watch, computed } from "vue";
import { useAuthBackend } from "~/composables/useAuthBackend";
import type { UserOut } from "~/lib/api/types/user"; import type { UserOut } from "~/lib/api/types/user";
export const useMealieAuth = function () { export const useMealieAuth = function () {
const auth = useAuth(); const auth = useAuthBackend();
const { setToken } = useAuthState();
const { $axios } = useNuxtApp(); const { $axios } = useNuxtApp();
// User Management // User Management
@@ -40,7 +40,7 @@ export const useMealieAuth = function () {
async function oauthSignIn() { async function oauthSignIn() {
const params = new URLSearchParams(window.location.search); const params = new URLSearchParams(window.location.search);
const { data: token } = await $axios.get<{ access_token: string; token_type: "bearer" }>("/api/auth/oauth/callback", { params }); const { data: token } = await $axios.get<{ access_token: string; token_type: "bearer" }>("/api/auth/oauth/callback", { params });
setToken(token.access_token); auth.setToken(token.access_token);
await auth.getSession(); await auth.getSession();
} }
@@ -49,7 +49,6 @@ export const useMealieAuth = function () {
loggedIn, loggedIn,
signIn: auth.signIn, signIn: auth.signIn,
signOut: auth.signOut, signOut: auth.signOut,
signUp: auth.signUp,
refresh: auth.refresh, refresh: auth.refresh,
oauthSignIn, oauthSignIn,
}; };

View File

@@ -399,6 +399,10 @@
"description-long": "Mealie kan resepte van Tandoor invoer. Voer jou data uit in die \"Standaardformaat\" en laai dan die .zip-lêer op.", "description-long": "Mealie kan resepte van Tandoor invoer. Voer jou data uit in die \"Standaardformaat\" en laai dan die .zip-lêer op.",
"title": "Tandoor resepte" "title": "Tandoor resepte"
}, },
"cookn": {
"description-long": "Mealie can import recipes from DVO Cook'n X3. Export a cookbook or menu in the \"Cook'n\" format, rename the export extension to .zip, then upload the .zip below.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "Resep migrasie", "recipe-data-migrations": "Resep migrasie",
"recipe-data-migrations-explanation": "Jy kan resepte vanaf 'n ander program in Mealie invoer. Op hierdie manier kan jy vinnig aan die gang kom.", "recipe-data-migrations-explanation": "Jy kan resepte vanaf 'n ander program in Mealie invoer. Op hierdie manier kan jy vinnig aan die gang kom.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "Coming from another application or an even older version of Mealie? Check out migrations and see if your data can be imported.", "coming-from-another-application-or-an-even-older-version-of-mealie": "Coming from another application or an even older version of Mealie? Check out migrations and see if your data can be imported.",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Don't want to see this anymore? Be sure to change your email in your user settings!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Don't want to see this anymore? Be sure to change your email in your user settings!",
"forgot-password": "Forgot Password", "forgot-password": "Forgot Password",
"forgot-password-text": "Please enter your email address and we will send you a link to reset your password.", "forgot-password-text": "Please enter your email address and we will send you a link to reset your password.",
"changes-reflected-immediately": "Changes to this user will be reflected immediately." "changes-reflected-immediately": "Changes to this user will be reflected immediately.",
"default-activity": "Default Activity",
"default-activity-hint": "Select which page you'd like to navigate to upon logging in from this device"
}, },
"language-dialog": { "language-dialog": {
"translated": "vertaal", "translated": "vertaal",

View File

@@ -399,6 +399,10 @@
"description-long": "يمكن لميلي استيراد الوصفات من تندور. يجب تصدير بياناتك بالتنسيق \"الافتراضي\"، ثم يجب تحميل المِلَفّ المضغوط أدناه.", "description-long": "يمكن لميلي استيراد الوصفات من تندور. يجب تصدير بياناتك بالتنسيق \"الافتراضي\"، ثم يجب تحميل المِلَفّ المضغوط أدناه.",
"title": "وصفات تاندور" "title": "وصفات تاندور"
}, },
"cookn": {
"description-long": "Mealie can import recipes from DVO Cook'n X3. Export a cookbook or menu in the \"Cook'n\" format, rename the export extension to .zip, then upload the .zip below.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "وصفة 2", "recipe-data-migrations": "وصفة 2",
"recipe-data-migrations-explanation": "يمكن نقل الوصفات من تطبيق آخر مدعوم إلى ميلي. هذه طريقة رائعة للبدء مع ميلي.", "recipe-data-migrations-explanation": "يمكن نقل الوصفات من تطبيق آخر مدعوم إلى ميلي. هذه طريقة رائعة للبدء مع ميلي.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "هل تأتي من تطبيق آخر أو حتى إصدار قديم من ميلي؟ يجب التحقق من عمليات الترحيل لمعرفة ما إذا كان يمكن استيراد بياناتك.", "coming-from-another-application-or-an-even-older-version-of-mealie": "هل تأتي من تطبيق آخر أو حتى إصدار قديم من ميلي؟ يجب التحقق من عمليات الترحيل لمعرفة ما إذا كان يمكن استيراد بياناتك.",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "لا تريد رؤية هذه الرسالة بعد الآن؟ تأكد من تغيير بريدك الإلكتروني في إعدادات المستخدم الخاصة بك!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "لا تريد رؤية هذه الرسالة بعد الآن؟ تأكد من تغيير بريدك الإلكتروني في إعدادات المستخدم الخاصة بك!",
"forgot-password": "نسيت كلمة المرور", "forgot-password": "نسيت كلمة المرور",
"forgot-password-text": "الرجاء إدخال بريدك الإلكتروني وسنرسل لك رابطًا لإعادة تعيين كلمة المرور الخاصة بك.", "forgot-password-text": "الرجاء إدخال بريدك الإلكتروني وسنرسل لك رابطًا لإعادة تعيين كلمة المرور الخاصة بك.",
"changes-reflected-immediately": "التغييرات التي ستطرأ على هذا المستخدم ستنعكس على الفور." "changes-reflected-immediately": "التغييرات التي ستطرأ على هذا المستخدم ستنعكس على الفور.",
"default-activity": "Default Activity",
"default-activity-hint": "Select which page you'd like to navigate to upon logging in from this device"
}, },
"language-dialog": { "language-dialog": {
"translated": "مترجم", "translated": "مترجم",

View File

@@ -10,14 +10,14 @@
"default-group": "Група по подразбиране", "default-group": "Група по подразбиране",
"default-household": "Домакинство по подразбиране", "default-household": "Домакинство по подразбиране",
"demo": "Демо", "demo": "Демо",
"demo-status": "Статус на Демото", "demo-status": "Статус на версията",
"development": "Разработване", "development": "Разработване",
"docs": "Документи", "docs": "Документи",
"download-log": "Дневник на изтеглянията", "download-log": "Дневник на изтеглянията",
"download-recipe-json": "Последно обработен json файл", "download-recipe-json": "Последно обработен json файл",
"github": "GitHub", "github": "GitHub",
"log-lines": "Редове от лога", "log-lines": "Редове от лога",
"not-demo": "Не е демо", "not-demo": "Не е демоверсия",
"portfolio": "Портфолио", "portfolio": "Портфолио",
"production": "Производствена среда", "production": "Производствена среда",
"support": "Поддръжка", "support": "Поддръжка",
@@ -97,11 +97,11 @@
"custom": "Персонализиран", "custom": "Персонализиран",
"dashboard": "Табло", "dashboard": "Табло",
"delete": "Изтриване", "delete": "Изтриване",
"disabled": "Деактивирано", "disabled": "Изключено",
"download": "Изтегли", "download": "Изтегли",
"duplicate": "Дублиране", "duplicate": "Дублиране",
"edit": "Редактирай", "edit": "Редактирай",
"enabled": "Активиран", "enabled": "Включено",
"exception": "Грешка", "exception": "Грешка",
"failed-count": "Неуспешни: {count}", "failed-count": "Неуспешни: {count}",
"failure-uploading-file": "Неуспешно качване на файл", "failure-uploading-file": "Неуспешно качване на файл",
@@ -129,7 +129,7 @@
"monday": "Понеделник", "monday": "Понеделник",
"name": "Име", "name": "Име",
"new": "Нов", "new": "Нов",
"never": икога", "never": яма данни",
"no": "Не", "no": "Не",
"no-recipe-found": "Няма намерени рецепти", "no-recipe-found": "Няма намерени рецепти",
"ok": "Добре", "ok": "Добре",
@@ -147,7 +147,7 @@
"saturday": "Събота", "saturday": "Събота",
"save": "Запази", "save": "Запази",
"settings": "Настройки", "settings": "Настройки",
"share": "Сподели", "share": "Споделяне",
"show-all": "Покажи всички", "show-all": "Покажи всички",
"shuffle": "Разбъркано", "shuffle": "Разбъркано",
"sort": "Сортирай", "sort": "Сортирай",
@@ -180,7 +180,7 @@
"back": "Назад", "back": "Назад",
"next": "Напред", "next": "Напред",
"start": "Начало", "start": "Начало",
"toggle-view": "Превключване на режим", "toggle-view": "Смяна на изгледа",
"date": "Дата", "date": "Дата",
"id": "Id", "id": "Id",
"owner": "Собственик", "owner": "Собственик",
@@ -340,7 +340,7 @@
"rule-day": "Ден от седмицата", "rule-day": "Ден от седмицата",
"meal-type": "Вид ястие", "meal-type": "Вид ястие",
"breakfast": "Закуска", "breakfast": "Закуска",
"lunch": "обяд", "lunch": "Обяд",
"dinner": "Вечеря", "dinner": "Вечеря",
"type-any": "Всички", "type-any": "Всички",
"day-any": "Всички", "day-any": "Всички",
@@ -399,6 +399,10 @@
"description-long": "Mealie може да импортира рецепти от Tandoor. Експортирайте данните в стандартния формат и ги качете като .zip файл по-долу.", "description-long": "Mealie може да импортира рецепти от Tandoor. Експортирайте данните в стандартния формат и ги качете като .zip файл по-долу.",
"title": "Tandoor рецепти" "title": "Tandoor рецепти"
}, },
"cookn": {
"description-long": "Mealie може да импортира рецепти от DVO Cook'n X3. Експортирайте готварска книга или меню във формат \"Cook'n\", преименувайте разширението за експортиране на .zip и след това качете .zip файла по-долу.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "Миграция на данни на рецепти", "recipe-data-migrations": "Миграция на данни на рецепти",
"recipe-data-migrations-explanation": "Рецептите могат да бъдат мигрирани от други приложения поддържани от Mealie. Това е добър начин да започнете използването си на Mealie.", "recipe-data-migrations-explanation": "Рецептите могат да бъдат мигрирани от други приложения поддържани от Mealie. Това е добър начин да започнете използването си на Mealie.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "Идваш от друго приложение или дори по-стара версия на Mealie? Провери миграциите и виж дали данните ти могат да бъдат импорторани.", "coming-from-another-application-or-an-even-older-version-of-mealie": "Идваш от друго приложение или дори по-стара версия на Mealie? Провери миграциите и виж дали данните ти могат да бъдат импорторани.",
@@ -553,7 +557,7 @@
"yields-amount-with-text": "Порции {amount} {text}", "yields-amount-with-text": "Порции {amount} {text}",
"yield-text": "Забележка", "yield-text": "Забележка",
"quantity": "Количество", "quantity": "Количество",
"choose-unit": "Избери единица", "choose-unit": "Избери мерна единица",
"press-enter-to-create": "Натисните Enter за да създадете", "press-enter-to-create": "Натисните Enter за да създадете",
"choose-food": "Избери продукт", "choose-food": "Избери продукт",
"notes": "Бележки", "notes": "Бележки",
@@ -624,7 +628,7 @@
"scrape-recipe-you-can-import-from-raw-data-directly": "Можете да импортирате директно от сурови данни", "scrape-recipe-you-can-import-from-raw-data-directly": "Можете да импортирате директно от сурови данни",
"import-original-keywords-as-tags": "Добави оригиналните ключови думи като етикети", "import-original-keywords-as-tags": "Добави оригиналните ключови думи като етикети",
"stay-in-edit-mode": "Остани в режим на редакция", "stay-in-edit-mode": "Остани в режим на редакция",
"parse-recipe-ingredients-after-import": "Parse recipe ingredients after import", "parse-recipe-ingredients-after-import": "Анализиране на съставките на рецептата след импортиране",
"import-from-zip": "Импортирай от Zip", "import-from-zip": "Импортирай от Zip",
"import-from-zip-description": "Импортирай рецепта, която е била експортирана от друга инстанция на Mealie.", "import-from-zip-description": "Импортирай рецепта, която е била експортирана от друга инстанция на Mealie.",
"import-from-html-or-json": "Импортиране от HTML или JSON", "import-from-html-or-json": "Импортиране от HTML или JSON",
@@ -671,12 +675,12 @@
"this-unit-could-not-be-parsed-automatically": "Тази мерна единица не може да бъде анализирана автоматично", "this-unit-could-not-be-parsed-automatically": "Тази мерна единица не може да бъде анализирана автоматично",
"this-food-could-not-be-parsed-automatically": "Тази храна не може да бъде анализирана автоматично", "this-food-could-not-be-parsed-automatically": "Тази храна не може да бъде анализирана автоматично",
"no-food": "Не е зададен вид храна", "no-food": "Не е зададен вид храна",
"review-parsed-ingredients": "Review parsed ingredients", "review-parsed-ingredients": "Прегледайте анализираните съставки",
"confidence-score": "Confidence Score", "confidence-score": "Индекс на доверие",
"ingredient-parser-description": "Your ingredients have been successfully parsed. Please review the ingredients we're not sure about.", "ingredient-parser-description": "Съставките бяха успешно анализирани. Моля, прегледайте съставките, за които не сме сигурни.",
"ingredient-parser-final-review-description": "Once all ingredients have been reviewed, you'll have one more chance to review all ingredients before applying the changes to your recipe.", "ingredient-parser-final-review-description": "След като всички съставки бъдат прегледани, ще имате още една възможност да ги прегледате, преди да приложите промените към рецептата си.",
"add-text-as-alias-for-item": "Add \"{text}\" as alias for {item}", "add-text-as-alias-for-item": "Добавете „{text}“ като псевдоним за {item}",
"delete-item": "Delete Item" "delete-item": "Изтриване"
}, },
"reset-servings-count": "Нулиране на броя на порциите", "reset-servings-count": "Нулиране на броя на порциите",
"not-linked-ingredients": "Допълнителни съставки", "not-linked-ingredients": "Допълнителни съставки",
@@ -725,7 +729,7 @@
}, },
"settings": { "settings": {
"add-a-new-theme": "Добавяне на нова тема", "add-a-new-theme": "Добавяне на нова тема",
"admin-settings": "Административни настройки", "admin-settings": "Системни настройки",
"backup": { "backup": {
"backup-created": "Архивът е създаден успешно", "backup-created": "Архивът е създаден успешно",
"backup-created-at-response-export_path": "Резервно копие е създадено в {path}", "backup-created-at-response-export_path": "Резервно копие е създадено в {path}",
@@ -751,7 +755,7 @@
}, },
"backup-and-exports": "Резервни копия", "backup-and-exports": "Резервни копия",
"change-password": "Смяна на парола", "change-password": "Смяна на парола",
"current": "Версия:", "current": "Версия на приложението:",
"custom-pages": "Допълнителни страници", "custom-pages": "Допълнителни страници",
"edit-page": "Редактиране на страница", "edit-page": "Редактиране на страница",
"events": "Събития", "events": "Събития",
@@ -864,7 +868,7 @@
"ldap-ready": "Използва LDAP", "ldap-ready": "Използва LDAP",
"ldap-ready-error-text": "Не всички LDAP стойности са конфигурирани. Това може да бъде игнорирано, ако не използвате LDAP удостоверяване.", "ldap-ready-error-text": "Не всички LDAP стойности са конфигурирани. Това може да бъде игнорирано, ако не използвате LDAP удостоверяване.",
"ldap-ready-success-text": "Задължителните LDAP променливи са зададени.", "ldap-ready-success-text": "Задължителните LDAP променливи са зададени.",
"build": "Компилинирана версия", "build": "GitHub версия",
"recipe-scraper-version": "Версия на скрепер на рецепти", "recipe-scraper-version": "Версия на скрепер на рецепти",
"oidc-ready": "Готов за OIDC", "oidc-ready": "Готов за OIDC",
"oidc-ready-error-text": "Не всички OIDC стойности са конфигурирани. Това може да бъде игнорирано, ако не използвате OIDC удостоверяване.", "oidc-ready-error-text": "Не всички OIDC стойности са конфигурирани. Това може да бъде игнорирано, ако не използвате OIDC удостоверяване.",
@@ -1002,7 +1006,7 @@
"please-enter-password": "Моля, въведете новата си парола.", "please-enter-password": "Моля, въведете новата си парола.",
"register": "Регистриране", "register": "Регистриране",
"reset-password": "Нулиране на паролата", "reset-password": "Нулиране на паролата",
"sign-in": "Влизане", "sign-in": "Вписване",
"total-mealplans": "Хранителни планове общо", "total-mealplans": "Хранителни планове общо",
"total-users": "Общо потребители", "total-users": "Общо потребители",
"upload-photo": "Качете снимка", "upload-photo": "Качете снимка",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Искате ли да виждате това по-често? Уверете се, че сте конфигурирали настройките си за email известяване правилно!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Искате ли да виждате това по-често? Уверете се, че сте конфигурирали настройките си за email известяване правилно!",
"forgot-password": "Забравена Парола", "forgot-password": "Забравена Парола",
"forgot-password-text": "Въведете Вашият имейл адрес и ние ще ви изпратим линк, с който да промените Вашата парола.", "forgot-password-text": "Въведете Вашият имейл адрес и ние ще ви изпратим линк, с който да промените Вашата парола.",
"changes-reflected-immediately": "Промените по този потребител ще бъдат отразени моментално." "changes-reflected-immediately": "Промените по този потребител ще бъдат отразени моментално.",
"default-activity": "Default Activity",
"default-activity-hint": "Select which page you'd like to navigate to upon logging in from this device"
}, },
"language-dialog": { "language-dialog": {
"translated": "преведено", "translated": "преведено",
@@ -1319,8 +1325,8 @@
"welcome-user": "👋 Добре дошъл(а), {0}!", "welcome-user": "👋 Добре дошъл(а), {0}!",
"description": "Настройки на профил, рецепти и настройки на групата.", "description": "Настройки на профил, рецепти и настройки на групата.",
"invite-link": "Линк за Покана", "invite-link": "Линк за Покана",
"get-invite-link": "Вземи линк за покана", "get-invite-link": "Създай линк за покана",
"get-public-link": "Вземи публичен линк", "get-public-link": "Създай публичен линк",
"account-summary": "Обобщение на акаунта", "account-summary": "Обобщение на акаунта",
"account-summary-description": "Обобщение на информацията за Вашата група.", "account-summary-description": "Обобщение на информацията за Вашата група.",
"group-statistics": "Статистики на групата", "group-statistics": "Статистики на групата",
@@ -1344,7 +1350,7 @@
"members": "Участници", "members": "Участници",
"members-description": "Вижте кой е във вашето домакинство и управлявайте техните разрешения.", "members-description": "Вижте кой е във вашето домакинство и управлявайте техните разрешения.",
"webhooks-description": "Настройте webhooks, които се задействат в дните, в които имате планиран план за хранене.", "webhooks-description": "Настройте webhooks, които се задействат в дните, в които имате планиран план за хранене.",
"notifiers": "Уведомители", "notifiers": "Уведомления",
"notifiers-description": "Настройте имейл и push известия, които се задействат при конкретни събития.", "notifiers-description": "Настройте имейл и push известия, които се задействат при конкретни събития.",
"manage-data": "Управление на данни", "manage-data": "Управление на данни",
"manage-data-description": "Управлявай данните в Mealie: Храни, Единици, Категории, Тагове и други.", "manage-data-description": "Управлявай данните в Mealie: Храни, Единици, Категории, Тагове и други.",
@@ -1362,7 +1368,7 @@
"manage-cookbooks": "Управление на готварските книги", "manage-cookbooks": "Управление на готварските книги",
"manage-members": "Управление на потребителите", "manage-members": "Управление на потребителите",
"manage-webhooks": "Управление на Webhooks", "manage-webhooks": "Управление на Webhooks",
"manage-notifiers": "Управление на уведомители", "manage-notifiers": "Настройки на уведомленията",
"manage-data-migrations": "Управление на миграцията на данни" "manage-data-migrations": "Управление на миграцията на данни"
}, },
"cookbook": { "cookbook": {

View File

@@ -399,6 +399,10 @@
"description-long": "Mealie pot importar les receptes de Tandoor. Exporta les dades en format \"Default\", i carrega el .zip a sota.", "description-long": "Mealie pot importar les receptes de Tandoor. Exporta les dades en format \"Default\", i carrega el .zip a sota.",
"title": "Tandoor Recipes" "title": "Tandoor Recipes"
}, },
"cookn": {
"description-long": "Mealie can import recipes from DVO Cook'n X3. Export a cookbook or menu in the \"Cook'n\" format, rename the export extension to .zip, then upload the .zip below.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "Migració de receptes", "recipe-data-migrations": "Migració de receptes",
"recipe-data-migrations-explanation": "Les receptes es poden migrar des d'una altra aplicació suportada cap a Mealie. És una manera genial de començar a utilitzar el Mealie.", "recipe-data-migrations-explanation": "Les receptes es poden migrar des d'una altra aplicació suportada cap a Mealie. És una manera genial de començar a utilitzar el Mealie.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "Véns d'una altra aplicació o una versió més antiga de Mealia? Fés un cop d'ull a migracions i mira si pots importar les teves dades.", "coming-from-another-application-or-an-even-older-version-of-mealie": "Véns d'una altra aplicació o una versió més antiga de Mealia? Fés un cop d'ull a migracions i mira si pots importar les teves dades.",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "No vols tornar a veure això? Assegura't de canviar el teu correu electrònic a les configuracions del teu usuari!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "No vols tornar a veure això? Assegura't de canviar el teu correu electrònic a les configuracions del teu usuari!",
"forgot-password": "Contrasenya oblidada", "forgot-password": "Contrasenya oblidada",
"forgot-password-text": "Introdueix siusplau la teva adreça de correu electrònic i t'enviarem un enllaç per restablir la teva contrassenya.", "forgot-password-text": "Introdueix siusplau la teva adreça de correu electrònic i t'enviarem un enllaç per restablir la teva contrassenya.",
"changes-reflected-immediately": "Els canvis en aquest usuari s'actualitzaran immediatament." "changes-reflected-immediately": "Els canvis en aquest usuari s'actualitzaran immediatament.",
"default-activity": "Default Activity",
"default-activity-hint": "Select which page you'd like to navigate to upon logging in from this device"
}, },
"language-dialog": { "language-dialog": {
"translated": "traduït", "translated": "traduït",

View File

@@ -399,6 +399,10 @@
"description-long": "Mealie může importovat recepty z Tandoor. Exportujte data ve výchozím formátu, poté nahrajte soubor ve formátu .zip.", "description-long": "Mealie může importovat recepty z Tandoor. Exportujte data ve výchozím formátu, poté nahrajte soubor ve formátu .zip.",
"title": "Recepty Tandoor" "title": "Recepty Tandoor"
}, },
"cookn": {
"description-long": "Mealie can import recipes from DVO Cook'n X3. Export a cookbook or menu in the \"Cook'n\" format, rename the export extension to .zip, then upload the .zip below.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "Migrace dat receptů", "recipe-data-migrations": "Migrace dat receptů",
"recipe-data-migrations-explanation": "Recepty mohou být migrovány z jiné podporované aplikace na Mealie. To je skvělý způsob, jak začít s Mealie.", "recipe-data-migrations-explanation": "Recepty mohou být migrovány z jiné podporované aplikace na Mealie. To je skvělý způsob, jak začít s Mealie.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "Migrujete z jiné aplikace nebo starší verze Mealie? Podívejte se na migrace a zjistěte, zda lze vaše data importovat.", "coming-from-another-application-or-an-even-older-version-of-mealie": "Migrujete z jiné aplikace nebo starší verze Mealie? Podívejte se na migrace a zjistěte, zda lze vaše data importovat.",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Už to nechcete vidět? Nezapomeňte si změnit svůj e-mail v uživatelském nastavení!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Už to nechcete vidět? Nezapomeňte si změnit svůj e-mail v uživatelském nastavení!",
"forgot-password": "Zapomenuté heslo", "forgot-password": "Zapomenuté heslo",
"forgot-password-text": "Zadejte prosím svou e-mailovou adresu a my vám zašleme odkaz pro obnovení hesla.", "forgot-password-text": "Zadejte prosím svou e-mailovou adresu a my vám zašleme odkaz pro obnovení hesla.",
"changes-reflected-immediately": "Změny tohoto uživatele budou okamžitě zohledněny." "changes-reflected-immediately": "Změny tohoto uživatele budou okamžitě zohledněny.",
"default-activity": "Default Activity",
"default-activity-hint": "Select which page you'd like to navigate to upon logging in from this device"
}, },
"language-dialog": { "language-dialog": {
"translated": "přeloženo", "translated": "přeloženo",

View File

@@ -57,7 +57,7 @@
"event-delete-confirmation": "Er du sikker på, at du vil slette denne begivenhed?", "event-delete-confirmation": "Er du sikker på, at du vil slette denne begivenhed?",
"event-deleted": "Hændelse slettet", "event-deleted": "Hændelse slettet",
"event-updated": "Hændelse opdateret", "event-updated": "Hændelse opdateret",
"new-notification-form-description": "Mealie bruger Apprise-biblioteket for at generere notifikationer. De giver mange muligheder for notifikationer til tjenester. Kig i deres wiki for en gennemgående guide til, hvordan en URL oprettes i din situation. Hvis muligt, kan valget af din type af notifikation omfatte flere ekstrafunktioner.", "new-notification-form-description": "Mealie bruger Apprise biblioteket for at generere notifikationer. De giver mange muligheder for notifikationer til tjenester. Kig i deres wiki for en gennemgående guide til, hvordan en URL oprettes i din situation. Hvis muligt, kan valget af din type af notifikation omfatte flere ekstrafunktioner.",
"new-version": "Ny opdatering er tilgængelig!", "new-version": "Ny opdatering er tilgængelig!",
"notification": "Notifikation", "notification": "Notifikation",
"refresh": "Opdater", "refresh": "Opdater",
@@ -399,6 +399,10 @@
"description-long": "Mealie kan importere opskrifter fra Tandoor. Eksporter dine data i \"Standard\" format, og upload derefter Zip filen nedenfor.", "description-long": "Mealie kan importere opskrifter fra Tandoor. Eksporter dine data i \"Standard\" format, og upload derefter Zip filen nedenfor.",
"title": "Tandoor Recipes" "title": "Tandoor Recipes"
}, },
"cookn": {
"description-long": "Mealie kan importere opskrifter fra DVO Cook'n X3. Eksportér en kogebog eller menu i \"Cook'n\" formatet, omdøb filtypen .dvo til .zip, og upload derefter .zip nedenfor.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "Migrering af opskrifter", "recipe-data-migrations": "Migrering af opskrifter",
"recipe-data-migrations-explanation": "Opskrifter kan migreres fra et andet understøttet program til Mealie. Dette er en fantastisk måde at komme i gang med Mealie.", "recipe-data-migrations-explanation": "Opskrifter kan migreres fra et andet understøttet program til Mealie. Dette er en fantastisk måde at komme i gang med Mealie.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "Kommer fra en anden applikation eller en endnu ældre version af Mealie? Tjek migrationer og se om dine data kan importeres.", "coming-from-another-application-or-an-even-older-version-of-mealie": "Kommer fra en anden applikation eller en endnu ældre version af Mealie? Tjek migrationer og se om dine data kan importeres.",
@@ -624,7 +628,7 @@
"scrape-recipe-you-can-import-from-raw-data-directly": "Du kan importere direkte fra rå data", "scrape-recipe-you-can-import-from-raw-data-directly": "Du kan importere direkte fra rå data",
"import-original-keywords-as-tags": "Importér originale nøgleord som mærker", "import-original-keywords-as-tags": "Importér originale nøgleord som mærker",
"stay-in-edit-mode": "Bliv i redigeringstilstand", "stay-in-edit-mode": "Bliv i redigeringstilstand",
"parse-recipe-ingredients-after-import": "Parse recipe ingredients after import", "parse-recipe-ingredients-after-import": "Fortolk opskrift ingredienser efter import",
"import-from-zip": "Importer fra zip-fil", "import-from-zip": "Importer fra zip-fil",
"import-from-zip-description": "Importer en enkelt opskrift, der blev eksporteret fra en anden Mealie instans.", "import-from-zip-description": "Importer en enkelt opskrift, der blev eksporteret fra en anden Mealie instans.",
"import-from-html-or-json": "Importer fra HTML eller JSON", "import-from-html-or-json": "Importer fra HTML eller JSON",
@@ -671,12 +675,12 @@
"this-unit-could-not-be-parsed-automatically": "Denne enhed kunne ikke fortolkes automatisk", "this-unit-could-not-be-parsed-automatically": "Denne enhed kunne ikke fortolkes automatisk",
"this-food-could-not-be-parsed-automatically": "Denne fødevare kunne ikke fortolkes automatisk", "this-food-could-not-be-parsed-automatically": "Denne fødevare kunne ikke fortolkes automatisk",
"no-food": "Ingen fødevarer", "no-food": "Ingen fødevarer",
"review-parsed-ingredients": "Review parsed ingredients", "review-parsed-ingredients": "Gennemgå fortolkede ingredienser",
"confidence-score": "Confidence Score", "confidence-score": "Tillidsscore",
"ingredient-parser-description": "Your ingredients have been successfully parsed. Please review the ingredients we're not sure about.", "ingredient-parser-description": "Dine ingredienser er blevet fortolket. Gennemgå de ingredienser, vi ikke er sikker på.",
"ingredient-parser-final-review-description": "Once all ingredients have been reviewed, you'll have one more chance to review all ingredients before applying the changes to your recipe.", "ingredient-parser-final-review-description": "Når alle ingredienser er blevet gennemgået, har du endnu en chance for at gennemgå alle ingredienser, før du anvender ændringerne til din opskrift.",
"add-text-as-alias-for-item": "Add \"{text}\" as alias for {item}", "add-text-as-alias-for-item": "Tilføj \"{text}\" som alias for {item}",
"delete-item": "Delete Item" "delete-item": "Slet Element"
}, },
"reset-servings-count": "Nulstil antal serveringer", "reset-servings-count": "Nulstil antal serveringer",
"not-linked-ingredients": "Yderligere ingredienser", "not-linked-ingredients": "Yderligere ingredienser",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Vil du ikke længere se dette? Sørg for at ændre din e-mail i dine brugerindstillinger!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Vil du ikke længere se dette? Sørg for at ændre din e-mail i dine brugerindstillinger!",
"forgot-password": "Glemt adgangskode", "forgot-password": "Glemt adgangskode",
"forgot-password-text": "Indtast venligst din e-mail-adresse. Vi sender dig en e-mail, så at du kan nulstille din adgangskode.", "forgot-password-text": "Indtast venligst din e-mail-adresse. Vi sender dig en e-mail, så at du kan nulstille din adgangskode.",
"changes-reflected-immediately": "Ændringer til denne bruger vil have effekt med det samme." "changes-reflected-immediately": "Ændringer til denne bruger vil have effekt med det samme.",
"default-activity": "",
"default-activity-hint": "Select which page you'd like to navigate to upon logging in from this device"
}, },
"language-dialog": { "language-dialog": {
"translated": "oversat", "translated": "oversat",
@@ -1176,7 +1182,7 @@
"provide-registration-token-description": "Angiv venligst det registreringstoken, der er knyttet til den gruppe, du gerne vil deltage i. Du skal indhente dette fra et eksisterende gruppemedlem.", "provide-registration-token-description": "Angiv venligst det registreringstoken, der er knyttet til den gruppe, du gerne vil deltage i. Du skal indhente dette fra et eksisterende gruppemedlem.",
"group-details": "Gruppeoplysninger", "group-details": "Gruppeoplysninger",
"group-details-description": "Før du opretter en konto, skal du oprette en gruppe. Din gruppe vil kun indeholde dig, men du vil kunne invitere andre senere. Medlemmer i din gruppe kan dele madplaner, indkøbslister, opskrifter og meget mere!", "group-details-description": "Før du opretter en konto, skal du oprette en gruppe. Din gruppe vil kun indeholde dig, men du vil kunne invitere andre senere. Medlemmer i din gruppe kan dele madplaner, indkøbslister, opskrifter og meget mere!",
"use-seed-data": "Anved standard data", "use-seed-data": "Anvend standard data",
"use-seed-data-description": "Mealie kommer med en samling af Fødevarer, Enheder, og Etiketter som kan blive brugt til at udfylde din gruppe med nyttig data til at organisere dine opskrifter. De er oversat til det sprog, du i øjeblikket har valgt. Du kan altid tilføje og ændre disse data senere.", "use-seed-data-description": "Mealie kommer med en samling af Fødevarer, Enheder, og Etiketter som kan blive brugt til at udfylde din gruppe med nyttig data til at organisere dine opskrifter. De er oversat til det sprog, du i øjeblikket har valgt. Du kan altid tilføje og ændre disse data senere.",
"account-details": "Kontodetaljer" "account-details": "Kontodetaljer"
}, },

View File

@@ -47,7 +47,7 @@
"category-updated": "Kategorie aktualisiert", "category-updated": "Kategorie aktualisiert",
"uncategorized-count": "Nicht kategorisiert {count}", "uncategorized-count": "Nicht kategorisiert {count}",
"create-a-category": "Eine Kategorie erstellen", "create-a-category": "Eine Kategorie erstellen",
"category-name": "Name der Kategorie", "category-name": "Kategoriename",
"category": "Kategorie" "category": "Kategorie"
}, },
"events": { "events": {
@@ -399,6 +399,10 @@
"description-long": "Mealie kann Rezepte von Tandoor importieren. Exportiere deine Daten im 'Default' Format und lade dann unten die .zip Datei hoch.", "description-long": "Mealie kann Rezepte von Tandoor importieren. Exportiere deine Daten im 'Default' Format und lade dann unten die .zip Datei hoch.",
"title": "Tandoor Rezepte" "title": "Tandoor Rezepte"
}, },
"cookn": {
"description-long": "Mealie kann Rezepte von DVO Cook'n X3 importieren. Exportieren Sie ein Kochbuch oder ein Menü im \"Cook'n\"-Format, benennen Sie die Export-Erweiterung in .zip um, dann laden Sie die .zip unten hoch.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "Rezeptdatenmigration", "recipe-data-migrations": "Rezeptdatenmigration",
"recipe-data-migrations-explanation": "Rezepte können aus unterstützten Programmen nach Mealie migriert werden. Das ist eine gute Möglichkeit, um mit Mealie loszulegen.", "recipe-data-migrations-explanation": "Rezepte können aus unterstützten Programmen nach Mealie migriert werden. Das ist eine gute Möglichkeit, um mit Mealie loszulegen.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "Wechselst du von einer anderen Anwendung oder einer noch älteren Version von Mealie? Prüfe die Migrations-Optionen, vielleicht können deine Daten importiert werden.", "coming-from-another-application-or-an-even-older-version-of-mealie": "Wechselst du von einer anderen Anwendung oder einer noch älteren Version von Mealie? Prüfe die Migrations-Optionen, vielleicht können deine Daten importiert werden.",
@@ -676,7 +680,7 @@
"ingredient-parser-description": "Deine Zutaten wurden erfolgreich geparst. Bitte überprüfe die Zutaten, bei denen wir uns nicht sicher sind.", "ingredient-parser-description": "Deine Zutaten wurden erfolgreich geparst. Bitte überprüfe die Zutaten, bei denen wir uns nicht sicher sind.",
"ingredient-parser-final-review-description": "Sobald alle Zutaten überprüft wurden, kannst du nochmal alle Zutaten kontrollieren, bevor die Änderungen ins Rezept übernommen werden.", "ingredient-parser-final-review-description": "Sobald alle Zutaten überprüft wurden, kannst du nochmal alle Zutaten kontrollieren, bevor die Änderungen ins Rezept übernommen werden.",
"add-text-as-alias-for-item": "Füge \"{text}\" als Alias für {item} hinzu", "add-text-as-alias-for-item": "Füge \"{text}\" als Alias für {item} hinzu",
"delete-item": "Delete Item" "delete-item": "Element löschen"
}, },
"reset-servings-count": "Portionen zurücksetzen", "reset-servings-count": "Portionen zurücksetzen",
"not-linked-ingredients": "Zusätzliche Zutaten", "not-linked-ingredients": "Zusätzliche Zutaten",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Möchtest du das hier nicht mehr sehen? Bitte ändere deine E-Mail in den Benutzereinstellungen!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Möchtest du das hier nicht mehr sehen? Bitte ändere deine E-Mail in den Benutzereinstellungen!",
"forgot-password": "Passwort vergessen", "forgot-password": "Passwort vergessen",
"forgot-password-text": "Bitte gib Deine E-Mail-Adresse ein. Wir werden Dir eine E-Mail zusenden, damit Du Dein Passwort zurücksetzen kannst.", "forgot-password-text": "Bitte gib Deine E-Mail-Adresse ein. Wir werden Dir eine E-Mail zusenden, damit Du Dein Passwort zurücksetzen kannst.",
"changes-reflected-immediately": "Änderungen an diesem Benutzer sind sofort wirksam." "changes-reflected-immediately": "Änderungen an diesem Benutzer sind sofort wirksam.",
"default-activity": "Standardaktivität",
"default-activity-hint": "Wählen Sie die Seite, auf die Sie navigieren möchten, wenn Sie sich von diesem Gerät aus anmelden"
}, },
"language-dialog": { "language-dialog": {
"translated": "übersetzt", "translated": "übersetzt",

View File

@@ -1,6 +1,6 @@
{ {
"about": { "about": {
"about": "Σχετικά με", "about": "Σχετικά",
"about-mealie": "Σχετικά με το Mealie", "about-mealie": "Σχετικά με το Mealie",
"api-docs": "Τεκμηρίωση API", "api-docs": "Τεκμηρίωση API",
"api-port": "Θύρα API", "api-port": "Θύρα API",
@@ -14,7 +14,7 @@
"development": "Ανάπτυξη", "development": "Ανάπτυξη",
"docs": "Τεκμηρίωση", "docs": "Τεκμηρίωση",
"download-log": "Λήψη αρχείου καταγραφής", "download-log": "Λήψη αρχείου καταγραφής",
"download-recipe-json": "Τελευταίο Scraped JSON", "download-recipe-json": "Τελευταίο αντλημένο JSON",
"github": "GitHub", "github": "GitHub",
"log-lines": "Γραμμές καταγραφής", "log-lines": "Γραμμές καταγραφής",
"not-demo": "Εκτός Επίδειξης", "not-demo": "Εκτός Επίδειξης",
@@ -27,7 +27,7 @@
}, },
"asset": { "asset": {
"assets": "Στοιχεία", "assets": "Στοιχεία",
"code": "Κώδικας", "code": "Κωδικός",
"file": "Αρχείο", "file": "Αρχείο",
"image": "Εικόνα", "image": "Εικόνα",
"new-asset": "Νέο Στοιχείο", "new-asset": "Νέο Στοιχείο",
@@ -38,15 +38,15 @@
}, },
"category": { "category": {
"categories": "Κατηγορίες", "categories": "Κατηγορίες",
"category-created": "Δημιουργήθηκε η κατηγορία", "category-created": "Η κατηγορία δημιουργήθηκε",
"category-creation-failed": "Η δημιουργία κατηγορίας απέτυχε", "category-creation-failed": "Η δημιουργία κατηγορίας απέτυχε",
"category-deleted": "Κατηγορία Διαγράφηκε", "category-deleted": "Η κατηγορία διαγράφηκε",
"category-deletion-failed": "Η διαγραφή κατηγορίας απέτυχε", "category-deletion-failed": "Η διαγραφή κατηγορίας απέτυχε",
"category-filter": "Φίλτρο κατηγορίας", "category-filter": "Φίλτρο κατηγορίας",
"category-update-failed": "Η ενημέρωση της κατηγορίας απέτυχε", "category-update-failed": "Η ενημέρωση της κατηγορίας απέτυχε",
"category-updated": "Η κατηγορία ενημερώθηκε", "category-updated": "Η κατηγορία ενημερώθηκε",
"uncategorized-count": "Μη κατηγοριοποιημένο {count}", "uncategorized-count": "Μη κατηγοριοποιημένο {count}",
"create-a-category": "Δημιουργήστε μια Κατηγορία", "create-a-category": "Δημιουργία Κατηγορίας",
"category-name": "Όνομα Κατηγορίας", "category-name": "Όνομα Κατηγορίας",
"category": "Κατηγορία" "category": "Κατηγορία"
}, },
@@ -399,6 +399,10 @@
"description-long": "Το Mealie μπορεί να εισάγει συνταγές από το Tandoor. Εξαγάγετε τα δεδομένα σας στην \"Προεπιλεγμένη\" (default) μορφή, στη συνέχεια, ανεβάστε το .zip παρακάτω.", "description-long": "Το Mealie μπορεί να εισάγει συνταγές από το Tandoor. Εξαγάγετε τα δεδομένα σας στην \"Προεπιλεγμένη\" (default) μορφή, στη συνέχεια, ανεβάστε το .zip παρακάτω.",
"title": "Tandoor Recipes" "title": "Tandoor Recipes"
}, },
"cookn": {
"description-long": "Το Mealie μπορεί να εισάγει συνταγές από το DVO Cook'n X3. Κάντε εξαγωγή ενός βιβλίου μαγειρικής ή ενός μενού σε μορφή \"Cook'n\", αλλάξτε την επέκταση του εξαγόμενου αρχείου σε .zip και, στη συνέχεια, ανεβάστε το .zip παρακάτω.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "Μετεγκατάσταση Δεδομένων Συνταγής", "recipe-data-migrations": "Μετεγκατάσταση Δεδομένων Συνταγής",
"recipe-data-migrations-explanation": "Συνταγές μπορούν να μετεγκατασταθούν από άλλη υποστηριζόμενη εφαρμογή στο Mealie. Αυτός είναι ένας πολύ καλός τρόπος για να ξεκινήσετε με Mealie.", "recipe-data-migrations-explanation": "Συνταγές μπορούν να μετεγκατασταθούν από άλλη υποστηριζόμενη εφαρμογή στο Mealie. Αυτός είναι ένας πολύ καλός τρόπος για να ξεκινήσετε με Mealie.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "Ερχόμενοι από άλλη εφαρμογή ή ακόμα και παλαιότερη έκδοση του Mealie; Ελέγξτε τις μετεγκαταστάσεις και δείτε αν τα δεδομένα σας μπορούν να εισαχθούν.", "coming-from-another-application-or-an-even-older-version-of-mealie": "Ερχόμενοι από άλλη εφαρμογή ή ακόμα και παλαιότερη έκδοση του Mealie; Ελέγξτε τις μετεγκαταστάσεις και δείτε αν τα δεδομένα σας μπορούν να εισαχθούν.",
@@ -676,7 +680,7 @@
"ingredient-parser-description": "Τα συστατικά σας έχουν αναλυθεί επιτυχώς. Παρακαλούμε ελέγξτε τα συστατικά για τα οποία δεν είμαστε σίγουροι.", "ingredient-parser-description": "Τα συστατικά σας έχουν αναλυθεί επιτυχώς. Παρακαλούμε ελέγξτε τα συστατικά για τα οποία δεν είμαστε σίγουροι.",
"ingredient-parser-final-review-description": "Μόλις εξεταστούν όλα τα συστατικά, θα έχετε μία ακόμη ευκαιρία να επανεξετάσετε όλα τα συστατικά πριν εφαρμόσετε τις αλλαγές στη συνταγή σας.", "ingredient-parser-final-review-description": "Μόλις εξεταστούν όλα τα συστατικά, θα έχετε μία ακόμη ευκαιρία να επανεξετάσετε όλα τα συστατικά πριν εφαρμόσετε τις αλλαγές στη συνταγή σας.",
"add-text-as-alias-for-item": "Προσθήκη \"{text}\" ως ψευδώνυμο για το {item}", "add-text-as-alias-for-item": "Προσθήκη \"{text}\" ως ψευδώνυμο για το {item}",
"delete-item": "Delete Item" "delete-item": "Διαγραφή αντικειμένου"
}, },
"reset-servings-count": "Επαναφορά μέτρησης μερίδων", "reset-servings-count": "Επαναφορά μέτρησης μερίδων",
"not-linked-ingredients": "Πρόσθετα συστατικά", "not-linked-ingredients": "Πρόσθετα συστατικά",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Δεν θέλετε να το δείτε αυτό ξανά; Φροντίστε να αλλάξετε το email σας στις ρυθμίσεις χρήστη!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Δεν θέλετε να το δείτε αυτό ξανά; Φροντίστε να αλλάξετε το email σας στις ρυθμίσεις χρήστη!",
"forgot-password": "Ξέχασα τον κωδικό πρόσβασης", "forgot-password": "Ξέχασα τον κωδικό πρόσβασης",
"forgot-password-text": "Παρακαλώ εισάγετε τη διεύθυνση email σας και θα σας στείλουμε έναν σύνδεσμο για να επαναφέρετε τον κωδικό πρόσβασής σας.", "forgot-password-text": "Παρακαλώ εισάγετε τη διεύθυνση email σας και θα σας στείλουμε έναν σύνδεσμο για να επαναφέρετε τον κωδικό πρόσβασής σας.",
"changes-reflected-immediately": "Οι αλλαγές σε αυτόν τον χρήστη θα αντικατοπτρίζονται αμέσως." "changes-reflected-immediately": "Οι αλλαγές σε αυτόν τον χρήστη θα αντικατοπτρίζονται αμέσως.",
"default-activity": "Προεπιλεγμένη Δραστηριότητα",
"default-activity-hint": "Επιλέξτε σε ποια σελίδα θα θέλατε να μεταβείτε κατά τη σύνδεση από αυτήν τη συσκευή"
}, },
"language-dialog": { "language-dialog": {
"translated": "μεταφρασμένο", "translated": "μεταφρασμένο",

View File

@@ -399,6 +399,10 @@
"description-long": "Mealie can import recipes from Tandoor. Export your data in the \"Default\" format, then upload the .zip below.", "description-long": "Mealie can import recipes from Tandoor. Export your data in the \"Default\" format, then upload the .zip below.",
"title": "Tandoor Recipes" "title": "Tandoor Recipes"
}, },
"cookn": {
"description-long": "Mealie can import recipes from DVO Cook'n X3. Export a cookbook or menu in the \"Cook'n\" format, rename the export extension to .zip, then upload the .zip below.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "Recipe Data Migrations", "recipe-data-migrations": "Recipe Data Migrations",
"recipe-data-migrations-explanation": "Recipes can be migrated from another supported application to Mealie. This is a great way to get started with Mealie.", "recipe-data-migrations-explanation": "Recipes can be migrated from another supported application to Mealie. This is a great way to get started with Mealie.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "Coming from another application or an even older version of Mealie? Check out migrations and see if your data can be imported.", "coming-from-another-application-or-an-even-older-version-of-mealie": "Coming from another application or an even older version of Mealie? Check out migrations and see if your data can be imported.",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Don't want to see this any more? Be sure to change your email in your user settings!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Don't want to see this any more? Be sure to change your email in your user settings!",
"forgot-password": "Forgot Password", "forgot-password": "Forgot Password",
"forgot-password-text": "Please enter your email address and we will send you a link to reset your password.", "forgot-password-text": "Please enter your email address and we will send you a link to reset your password.",
"changes-reflected-immediately": "Changes to this user will be reflected immediately." "changes-reflected-immediately": "Changes to this user will be reflected immediately.",
"default-activity": "Default Activity",
"default-activity-hint": "Select which page you'd like to navigate to upon logging in from this device"
}, },
"language-dialog": { "language-dialog": {
"translated": "translated", "translated": "translated",

View File

@@ -399,6 +399,10 @@
"description-long": "Mealie can import recipes from Tandoor. Export your data in the \"Default\" format, then upload the .zip below.", "description-long": "Mealie can import recipes from Tandoor. Export your data in the \"Default\" format, then upload the .zip below.",
"title": "Tandoor Recipes" "title": "Tandoor Recipes"
}, },
"cookn": {
"description-long": "Mealie can import recipes from DVO Cook'n X3. Export a cookbook or menu in the \"Cook'n\" format, rename the export extension to .zip, then upload the .zip below.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "Recipe Data Migrations", "recipe-data-migrations": "Recipe Data Migrations",
"recipe-data-migrations-explanation": "Recipes can be migrated from another supported application to Mealie. This is a great way to get started with Mealie.", "recipe-data-migrations-explanation": "Recipes can be migrated from another supported application to Mealie. This is a great way to get started with Mealie.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "Coming from another application or an even older version of Mealie? Check out migrations and see if your data can be imported.", "coming-from-another-application-or-an-even-older-version-of-mealie": "Coming from another application or an even older version of Mealie? Check out migrations and see if your data can be imported.",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Don't want to see this anymore? Be sure to change your email in your user settings!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Don't want to see this anymore? Be sure to change your email in your user settings!",
"forgot-password": "Forgot Password", "forgot-password": "Forgot Password",
"forgot-password-text": "Please enter your email address and we will send you a link to reset your password.", "forgot-password-text": "Please enter your email address and we will send you a link to reset your password.",
"changes-reflected-immediately": "Changes to this user will be reflected immediately." "changes-reflected-immediately": "Changes to this user will be reflected immediately.",
"default-activity": "Default Activity",
"default-activity-hint": "Select which page you'd like to navigate to upon logging in from this device"
}, },
"language-dialog": { "language-dialog": {
"translated": "translated", "translated": "translated",

View File

@@ -18,7 +18,7 @@
"github": "GitHub", "github": "GitHub",
"log-lines": "Líneas de registro", "log-lines": "Líneas de registro",
"not-demo": "No Demo", "not-demo": "No Demo",
"portfolio": "Portfolio", "portfolio": "Portafolio",
"production": "Producción", "production": "Producción",
"support": "Soporte", "support": "Soporte",
"version": "Versión", "version": "Versión",
@@ -399,6 +399,10 @@
"description-long": "Mealie puede importar recetas de Tandoor. Exporta tus datos en el formato \"Por defecto\" y luego sube el archivo .zip.", "description-long": "Mealie puede importar recetas de Tandoor. Exporta tus datos en el formato \"Por defecto\" y luego sube el archivo .zip.",
"title": "Recetas de Tandoor" "title": "Recetas de Tandoor"
}, },
"cookn": {
"description-long": "Mealie can import recipes from DVO Cook'n X3. Export a cookbook or menu in the \"Cook'n\" format, rename the export extension to .zip, then upload the .zip below.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "Migración de recetas", "recipe-data-migrations": "Migración de recetas",
"recipe-data-migrations-explanation": "Las recetas pueden migrarse desde otra aplicación soportada a Mealie. Esta es una excelente manera de empezar con Mealie.", "recipe-data-migrations-explanation": "Las recetas pueden migrarse desde otra aplicación soportada a Mealie. Esta es una excelente manera de empezar con Mealie.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "¿Vienes de otra app o una versión previa de Mealie? Revisa migraciones para ver si tus datos pueden ser importados.", "coming-from-another-application-or-an-even-older-version-of-mealie": "¿Vienes de otra app o una versión previa de Mealie? Revisa migraciones para ver si tus datos pueden ser importados.",
@@ -561,7 +565,7 @@
"see-original-text": "Mostrar Texto Original", "see-original-text": "Mostrar Texto Original",
"original-text-with-value": "Texto original: {originalText}", "original-text-with-value": "Texto original: {originalText}",
"ingredient-linker": "Vincular ingredientes", "ingredient-linker": "Vincular ingredientes",
"unlinked": "Not linked yet", "unlinked": "Aún no vinculado",
"linked-to-other-step": "Enlazado a otro paso", "linked-to-other-step": "Enlazado a otro paso",
"auto": "Auto", "auto": "Auto",
"cook-mode": "Modo Cocinar", "cook-mode": "Modo Cocinar",
@@ -624,7 +628,7 @@
"scrape-recipe-you-can-import-from-raw-data-directly": "Puede importar directamente desde datos brutos", "scrape-recipe-you-can-import-from-raw-data-directly": "Puede importar directamente desde datos brutos",
"import-original-keywords-as-tags": "Importar palabras clave originales como etiquetas", "import-original-keywords-as-tags": "Importar palabras clave originales como etiquetas",
"stay-in-edit-mode": "Permanecer en modo edición", "stay-in-edit-mode": "Permanecer en modo edición",
"parse-recipe-ingredients-after-import": "Parse recipe ingredients after import", "parse-recipe-ingredients-after-import": "Analizar los ingredientes de la receta después de importarla",
"import-from-zip": "Importar desde zip", "import-from-zip": "Importar desde zip",
"import-from-zip-description": "Importa una receta única que fue exportada desde otra instancia de Mealie.", "import-from-zip-description": "Importa una receta única que fue exportada desde otra instancia de Mealie.",
"import-from-html-or-json": "Importar desde HTML o JSON", "import-from-html-or-json": "Importar desde HTML o JSON",
@@ -671,12 +675,12 @@
"this-unit-could-not-be-parsed-automatically": "Esta unidad no pudo ser procesada automáticamente", "this-unit-could-not-be-parsed-automatically": "Esta unidad no pudo ser procesada automáticamente",
"this-food-could-not-be-parsed-automatically": "Esta comida no pudo ser procesada automáticamente", "this-food-could-not-be-parsed-automatically": "Esta comida no pudo ser procesada automáticamente",
"no-food": "Sin Comida", "no-food": "Sin Comida",
"review-parsed-ingredients": "Review parsed ingredients", "review-parsed-ingredients": "Revisar los ingredientes analizados",
"confidence-score": "Confidence Score", "confidence-score": "Puntuación de confianza",
"ingredient-parser-description": "Your ingredients have been successfully parsed. Please review the ingredients we're not sure about.", "ingredient-parser-description": "Tus ingredientes se han analizado correctamente. Revisa los ingredientes que no nos convencen.",
"ingredient-parser-final-review-description": "Once all ingredients have been reviewed, you'll have one more chance to review all ingredients before applying the changes to your recipe.", "ingredient-parser-final-review-description": "Una vez que se hayan revisado todos los ingredientes, tendrás una oportunidad más de revisarlos todos antes de aplicar los cambios a tu receta.",
"add-text-as-alias-for-item": "Add \"{text}\" as alias for {item}", "add-text-as-alias-for-item": "Añadir \"{text}\" como alias para {item}",
"delete-item": "Delete Item" "delete-item": "Borrar elemento"
}, },
"reset-servings-count": "Restablecer contador de porciones", "reset-servings-count": "Restablecer contador de porciones",
"not-linked-ingredients": "Ingredientes adicionales", "not-linked-ingredients": "Ingredientes adicionales",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "¿No quieres ver esto más? ¡Asegúrate de cambiar tu correo electrónico en tu configuración de usuario!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "¿No quieres ver esto más? ¡Asegúrate de cambiar tu correo electrónico en tu configuración de usuario!",
"forgot-password": "Olvidé mi contraseña", "forgot-password": "Olvidé mi contraseña",
"forgot-password-text": "Por favor, introduce tu correo electrónico y te enviaremos un enlace para restablecer tu contraseña.", "forgot-password-text": "Por favor, introduce tu correo electrónico y te enviaremos un enlace para restablecer tu contraseña.",
"changes-reflected-immediately": "Los cambios en este grupo se reflejarán inmediatamente." "changes-reflected-immediately": "Los cambios en este grupo se reflejarán inmediatamente.",
"default-activity": "Default Activity",
"default-activity-hint": "Select which page you'd like to navigate to upon logging in from this device"
}, },
"language-dialog": { "language-dialog": {
"translated": "traducido", "translated": "traducido",

View File

@@ -399,6 +399,10 @@
"description-long": "Mealie saab importida retsepte Tandoor-ist. Ekspordi oma andmed \"Default\" formaadis ning lae .zip allolevasse kasti", "description-long": "Mealie saab importida retsepte Tandoor-ist. Ekspordi oma andmed \"Default\" formaadis ning lae .zip allolevasse kasti",
"title": "Tandoor-i retsptid" "title": "Tandoor-i retsptid"
}, },
"cookn": {
"description-long": "Mealie can import recipes from DVO Cook'n X3. Export a cookbook or menu in the \"Cook'n\" format, rename the export extension to .zip, then upload the .zip below.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "Retsepti andmete ületoomised", "recipe-data-migrations": "Retsepti andmete ületoomised",
"recipe-data-migrations-explanation": "Retsepte saab üle tuua teisest toetatud rakendusest Mealiesse. See on hea viis tegemaks algust Mealie-ga.", "recipe-data-migrations-explanation": "Retsepte saab üle tuua teisest toetatud rakendusest Mealiesse. See on hea viis tegemaks algust Mealie-ga.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "Tuled teisest rakendusest või hoopis vanemast Mealie versioonist? Uuri ületoomise võimalusi ning vaata kas su andmeid saab importida.", "coming-from-another-application-or-an-even-older-version-of-mealie": "Tuled teisest rakendusest või hoopis vanemast Mealie versioonist? Uuri ületoomise võimalusi ning vaata kas su andmeid saab importida.",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Ei taha enam seda näha? Ära unusta muuta oma email kasutaja seadetes", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Ei taha enam seda näha? Ära unusta muuta oma email kasutaja seadetes",
"forgot-password": "Unustasid salasõna", "forgot-password": "Unustasid salasõna",
"forgot-password-text": "Sisestage oma meiliaadress, et saada e-kiri uue salasõna määramiseks.", "forgot-password-text": "Sisestage oma meiliaadress, et saada e-kiri uue salasõna määramiseks.",
"changes-reflected-immediately": "Selle kasutaja muudatused on koheselt nähtaval" "changes-reflected-immediately": "Selle kasutaja muudatused on koheselt nähtaval",
"default-activity": "Default Activity",
"default-activity-hint": "Select which page you'd like to navigate to upon logging in from this device"
}, },
"language-dialog": { "language-dialog": {
"translated": "tõlgitud", "translated": "tõlgitud",

View File

@@ -2,7 +2,7 @@
"about": { "about": {
"about": "Tietoja", "about": "Tietoja",
"about-mealie": "Tietoja Mealiestä", "about-mealie": "Tietoja Mealiestä",
"api-docs": "API Docs", "api-docs": "API-dokumentit",
"api-port": "API-portti", "api-port": "API-portti",
"application-mode": "Sovellustila", "application-mode": "Sovellustila",
"database-type": "Tietokannan tyyppi", "database-type": "Tietokannan tyyppi",
@@ -12,12 +12,12 @@
"demo": "Demo", "demo": "Demo",
"demo-status": "Demon tila", "demo-status": "Demon tila",
"development": "Kehitys", "development": "Kehitys",
"docs": "Docs", "docs": "Dokumentit",
"download-log": "Latausloki", "download-log": "Latausloki",
"download-recipe-json": "Viimeisin haettu JSON", "download-recipe-json": "Viimeisin haettu JSON",
"github": "GitHub", "github": "GitHub",
"log-lines": "Lokirivit", "log-lines": "Lokirivit",
"not-demo": "Ei esittelytilassa", "not-demo": "Ei demotilassa",
"portfolio": "Portfolio", "portfolio": "Portfolio",
"production": "Tuotanto", "production": "Tuotanto",
"support": "Tuki", "support": "Tuki",
@@ -57,7 +57,7 @@
"event-delete-confirmation": "Oletko varma että haluat poistaa tämän tapahtuman?", "event-delete-confirmation": "Oletko varma että haluat poistaa tämän tapahtuman?",
"event-deleted": "Tapahtuma poistettu", "event-deleted": "Tapahtuma poistettu",
"event-updated": "Tapahtuma päivitetty", "event-updated": "Tapahtuma päivitetty",
"new-notification-form-description": "Mealie käyttää Apprise-kirjastoa ilmoitusten luomiseen. Se tarjoaa monia ilmoituspalvelveluvaihtoehtoja. Lisää tietoa siitä, kuinka luoda URL palvelua varten, Apprisen wikistä. Joihinkin ilmoitustyyppeihin voi sisältyä lisäominaisuuksia.", "new-notification-form-description": "Mealie käyttää Apprise-kirjastoa ilmoitusten luomiseen. Se tarjoaa monia ilmoituspalvelveluvaihtoehtoja. Lisää tietoa siitä, kuinka luoda URL palvelua varten, löydät Apprisen wikistä. Joihinkin ilmoitustyyppeihin voi sisältyä lisäominaisuuksia.",
"new-version": "Uusi versio saatavilla!", "new-version": "Uusi versio saatavilla!",
"notification": "Ilmoitus", "notification": "Ilmoitus",
"refresh": "Päivitä", "refresh": "Päivitä",
@@ -69,11 +69,11 @@
"new-notification": "Uusi ilmoitus", "new-notification": "Uusi ilmoitus",
"event-notifiers": "Tapahtumien ilmoitukset", "event-notifiers": "Tapahtumien ilmoitukset",
"apprise-url-skipped-if-blank": "Ilmoitusverkko-osoite (voi jättää tyhjäksi)", "apprise-url-skipped-if-blank": "Ilmoitusverkko-osoite (voi jättää tyhjäksi)",
"apprise-url-is-left-intentionally-blank": "Since Apprise URLs typically contain sensitive information, this field is left intentionally blank while editing. If you wish to update the URL, please enter the new one here, otherwise leave it blank to keep the current URL.", "apprise-url-is-left-intentionally-blank": "Apprise URL-osoitteet sisältävät yleensä arkaluonteisia tietoja, joten tämä kenttä on tarkoituksellisesti tyhjä muokattaessa. Jos haluat päivittää URL-osoitteen, kirjoita uusi osoite tähän, muuten jätä se tyhjäksi pitääksesi nykyisen URL-osoitteen.",
"enable-notifier": "Ota ilmoittaja käyttöön", "enable-notifier": "Ota ilmoittaja käyttöön",
"what-events": "Mistä tapahtumista tulisi ilmoittaa?", "what-events": "Mistä tapahtumista tulisi ilmoittaa?",
"user-events": "Käyttäjän tapahtumat", "user-events": "Käyttäjän tapahtumat",
"mealplan-events": "Ateriasuunnitelman Tapahtumat", "mealplan-events": "Ateriasuunnittelun tapahtumat",
"when-a-user-in-your-group-creates-a-new-mealplan": "Kun ryhmäsi käyttäjä tekee ateriasuunnitelman", "when-a-user-in-your-group-creates-a-new-mealplan": "Kun ryhmäsi käyttäjä tekee ateriasuunnitelman",
"shopping-list-events": "Ostoslistatapahtumat", "shopping-list-events": "Ostoslistatapahtumat",
"cookbook-events": "Keittokirjatapahtumat", "cookbook-events": "Keittokirjatapahtumat",
@@ -81,7 +81,7 @@
"category-events": "Luokkatapahtumat", "category-events": "Luokkatapahtumat",
"when-a-new-user-joins-your-group": "Kun ryhmääsi liittyy uusi jäsen", "when-a-new-user-joins-your-group": "Kun ryhmääsi liittyy uusi jäsen",
"recipe-events": "Reseptitapahtumat", "recipe-events": "Reseptitapahtumat",
"label-events": "Label Events" "label-events": "Merkitse Tapahtumat"
}, },
"general": { "general": {
"add": "Lisää", "add": "Lisää",
@@ -136,7 +136,7 @@
"options": "Valinnat:", "options": "Valinnat:",
"plural-name": "Monikollinen nimi", "plural-name": "Monikollinen nimi",
"print": "Tulosta", "print": "Tulosta",
"print-preferences": "Tulosta asetukset", "print-preferences": "Tulostusasetukset",
"random": "Satunnainen", "random": "Satunnainen",
"rating": "Arvio", "rating": "Arvio",
"recent": "Viimeisimmät", "recent": "Viimeisimmät",
@@ -399,6 +399,10 @@
"description-long": "Mealie voi tuoda reseptejä Tandoorista. Vie tietosi \"Oletus\" -muodossa ja lataa sitten .zip alla.", "description-long": "Mealie voi tuoda reseptejä Tandoorista. Vie tietosi \"Oletus\" -muodossa ja lataa sitten .zip alla.",
"title": "Tandoor Recipes -sovellus" "title": "Tandoor Recipes -sovellus"
}, },
"cookn": {
"description-long": "Mealie voi tuoda reseptejä DVO Cook'n X3:sta. Vie keittokirja tai valikko \"Cook'n\"-muodossa, nimeä tiedosto uudelleen .zip-muotoon ja lataa sitten Mealieen alta.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "Reseptien tietojen migraatiot", "recipe-data-migrations": "Reseptien tietojen migraatiot",
"recipe-data-migrations-explanation": "Reseptit voidaan siirtää toisesta tuetusta sovelluksesta Mealie -sovellukseen. Tämä on hyvä tapa päästä alkuun Mealiella.", "recipe-data-migrations-explanation": "Reseptit voidaan siirtää toisesta tuetusta sovelluksesta Mealie -sovellukseen. Tämä on hyvä tapa päästä alkuun Mealiella.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "Olitko toisessa sovelluksessa tai Mealien aiemmassa versiossa? Tarkista, voidaanko tietosi siirtää.", "coming-from-another-application-or-an-even-older-version-of-mealie": "Olitko toisessa sovelluksessa tai Mealien aiemmassa versiossa? Tarkista, voidaanko tietosi siirtää.",
@@ -474,7 +478,7 @@
"comment": "Kommentti", "comment": "Kommentti",
"comments": "Kommentit", "comments": "Kommentit",
"delete-confirmation": "Haluatko varmasti poistaa reseptin?", "delete-confirmation": "Haluatko varmasti poistaa reseptin?",
"admin-delete-confirmation": "You're about to delete a recipe that isn't yours using admin permissions. Are you sure?", "admin-delete-confirmation": "Olet poistamassa reseptiä, joka ei ole sinun käyttäen järjestelmänvalvojan käyttöoikeuksia. Oletko varma?",
"delete-recipe": "Poista resepti", "delete-recipe": "Poista resepti",
"description": "Kuvaus", "description": "Kuvaus",
"disable-amount": "Poista ainesosien määrät käytöstä", "disable-amount": "Poista ainesosien määrät käytöstä",
@@ -561,7 +565,7 @@
"see-original-text": "Katso Alkuperäinen Teksti", "see-original-text": "Katso Alkuperäinen Teksti",
"original-text-with-value": "Alkuperäinen Teksti: {originalText}", "original-text-with-value": "Alkuperäinen Teksti: {originalText}",
"ingredient-linker": "Ainesosan linkittäjä", "ingredient-linker": "Ainesosan linkittäjä",
"unlinked": "Not linked yet", "unlinked": "Ei vielä linkitetty",
"linked-to-other-step": "Linkitetty toiseen vaiheeseen", "linked-to-other-step": "Linkitetty toiseen vaiheeseen",
"auto": "Automaattinen", "auto": "Automaattinen",
"cook-mode": "Kokkitila", "cook-mode": "Kokkitila",
@@ -583,14 +587,14 @@
"made-this": "Tein tämän", "made-this": "Tein tämän",
"how-did-it-turn-out": "Miten se onnistui?", "how-did-it-turn-out": "Miten se onnistui?",
"user-made-this": "{user} teki tämän", "user-made-this": "{user} teki tämän",
"added-to-timeline": "Added to timeline", "added-to-timeline": "Lisätty aikajanalle",
"failed-to-add-to-timeline": "Failed to add to timeline", "failed-to-add-to-timeline": "Aikajanaan lisääminen epäonnistui",
"failed-to-update-recipe": "Failed to update recipe", "failed-to-update-recipe": "Reseptin päivitys epäonnistui",
"added-to-timeline-but-failed-to-add-image": "Added to timeline, but failed to add image", "added-to-timeline-but-failed-to-add-image": "Lisätty aikajanaan, mutta kuvan lisääminen epäonnistui",
"api-extras-description": "Reseptiekstrat ovat Mealien API:n tärkeä ominaisuus. Niiden avulla voidaan luoda mukautettuja JSON-avain/arvo-pareja reseptin sisällä viitaten kolmannen osapuolen sovelluksiin. Näitä avaimia voi käyttää tiedon antamiseksi, esimerkiksi automaattisen toiminnon tai mukautetun viestin käynnistämiseksi haluamaasi laitteeseen.", "api-extras-description": "Reseptiekstrat ovat Mealien API:n tärkeä ominaisuus. Niiden avulla voidaan luoda mukautettuja JSON-avain/arvo-pareja reseptin sisällä viitaten kolmannen osapuolen sovelluksiin. Näitä avaimia voi käyttää tiedon antamiseksi, esimerkiksi automaattisen toiminnon tai mukautetun viestin käynnistämiseksi haluamaasi laitteeseen.",
"message-key": "Viestiavain", "message-key": "Viestiavain",
"parse": "Jäsennä", "parse": "Jäsennä",
"ingredients-not-parsed-description": "It looks like your ingredients aren't parsed yet. Click the \"{parse}\" button below to parse your ingredients into structured foods.", "ingredients-not-parsed-description": "Näyttää siltä, että ainesosat eivät ole vielä jäsenneltyjä. Klikkaa \"{parse}\" painiketta alla jäsentääksesi ainesosat strukturoiduiksi elintarvikkeiksi.",
"attach-images-hint": "Liitä kuvia vetämällä ja pudottamalla ne editoriin", "attach-images-hint": "Liitä kuvia vetämällä ja pudottamalla ne editoriin",
"drop-image": "Tuo kuva", "drop-image": "Tuo kuva",
"enable-ingredient-amounts-to-use-this-feature": "Käytä ainesosan määriä käyttääksesi tätä ominaisuutta", "enable-ingredient-amounts-to-use-this-feature": "Käytä ainesosan määriä käyttääksesi tätä ominaisuutta",
@@ -608,10 +612,10 @@
"create-recipe-from-an-image": "Luo resepti kuvasta", "create-recipe-from-an-image": "Luo resepti kuvasta",
"create-recipe-from-an-image-description": "Luo resepti tuomalla siitä kuva. Mealie pyrkii poimimaan tekstin kuvasta tekoälyllä ja luomaan siitä reseptin.", "create-recipe-from-an-image-description": "Luo resepti tuomalla siitä kuva. Mealie pyrkii poimimaan tekstin kuvasta tekoälyllä ja luomaan siitä reseptin.",
"crop-and-rotate-the-image": "Rajaa ja kierrä kuvaa niin, että vain teksti näkyy, ja että se on oikein päin.", "crop-and-rotate-the-image": "Rajaa ja kierrä kuvaa niin, että vain teksti näkyy, ja että se on oikein päin.",
"create-from-images": "Create from Images", "create-from-images": "Luo resepti kuvasta",
"should-translate-description": "Käännä resepti kielelleni", "should-translate-description": "Käännä resepti kielelleni",
"please-wait-image-procesing": "Odota, että kuva käsitellään. Tämä voi kestää hetken.", "please-wait-image-procesing": "Odota, että kuva käsitellään. Tämä voi kestää hetken.",
"please-wait-images-processing": "Please wait, the images are processing. This may take some time.", "please-wait-images-processing": "Odota, että kuvat käsitellään. Tämä saattaa kestää jonkin aikaa.",
"bulk-url-import": "Massa tuonti URL-osoitteesta", "bulk-url-import": "Massa tuonti URL-osoitteesta",
"debug-scraper": "Etsi ongelmia Scraperista", "debug-scraper": "Etsi ongelmia Scraperista",
"create-a-recipe-by-providing-the-name-all-recipes-must-have-unique-names": "Luo resepti antamalla nimi. Kaikilla resepteillä on oltava yksilölliset nimet.", "create-a-recipe-by-providing-the-name-all-recipes-must-have-unique-names": "Luo resepti antamalla nimi. Kaikilla resepteillä on oltava yksilölliset nimet.",
@@ -624,7 +628,7 @@
"scrape-recipe-you-can-import-from-raw-data-directly": "Voit tuoda raakadatan suoraan", "scrape-recipe-you-can-import-from-raw-data-directly": "Voit tuoda raakadatan suoraan",
"import-original-keywords-as-tags": "Tuo alkuperäiset avainsanat tunnisteiksi", "import-original-keywords-as-tags": "Tuo alkuperäiset avainsanat tunnisteiksi",
"stay-in-edit-mode": "Pysy muokkaustilassa", "stay-in-edit-mode": "Pysy muokkaustilassa",
"parse-recipe-ingredients-after-import": "Parse recipe ingredients after import", "parse-recipe-ingredients-after-import": "Jäsennä reseptin ainesosat tuonnin jälkeen",
"import-from-zip": "Tuo zip-arkistosta", "import-from-zip": "Tuo zip-arkistosta",
"import-from-zip-description": "Tuo yksi resepti, joka on viety toisesta Mealie-asennuksesta.", "import-from-zip-description": "Tuo yksi resepti, joka on viety toisesta Mealie-asennuksesta.",
"import-from-html-or-json": "Tuo HTML- tai JSON-tiedostosta", "import-from-html-or-json": "Tuo HTML- tai JSON-tiedostosta",
@@ -668,23 +672,23 @@
"no-unit": "Ei yksikköä", "no-unit": "Ei yksikköä",
"missing-unit": "Luo puuttuva yksikkö: {unit}", "missing-unit": "Luo puuttuva yksikkö: {unit}",
"missing-food": "Luo puuttuva ruoka: {food}", "missing-food": "Luo puuttuva ruoka: {food}",
"this-unit-could-not-be-parsed-automatically": "This unit could not be parsed automatically", "this-unit-could-not-be-parsed-automatically": "Tätä yksikköä ei voitu jäsentää automaattisesti",
"this-food-could-not-be-parsed-automatically": "This food could not be parsed automatically", "this-food-could-not-be-parsed-automatically": "Tätä ruokaa ei voitu automaattisesti jäsentää",
"no-food": "Ei ruokaa", "no-food": "Ei ruokaa",
"review-parsed-ingredients": "Review parsed ingredients", "review-parsed-ingredients": "Tarkastele jäsennetyt ainesosat",
"confidence-score": "Confidence Score", "confidence-score": "Varmuuspisteet",
"ingredient-parser-description": "Your ingredients have been successfully parsed. Please review the ingredients we're not sure about.", "ingredient-parser-description": "Ainesosat on haettu onnistuneesti. Ole hyvä ja tarkista ainesosat joista emme ole varmoja.",
"ingredient-parser-final-review-description": "Once all ingredients have been reviewed, you'll have one more chance to review all ingredients before applying the changes to your recipe.", "ingredient-parser-final-review-description": "Kun kaikki ainesosat on tarkistettu, sinulla on vielä yksi mahdollisuus tarkistaa kaikki ainesosat ennen kuin muokkaat reseptiäsi.",
"add-text-as-alias-for-item": "Add \"{text}\" as alias for {item}", "add-text-as-alias-for-item": "",
"delete-item": "Delete Item" "delete-item": "Poista kohde"
}, },
"reset-servings-count": "Palauta Annoksien Määrä", "reset-servings-count": "Palauta Annoksien Määrä",
"not-linked-ingredients": "Muut ainesosat", "not-linked-ingredients": "Muut ainesosat",
"upload-another-image": "Upload another image", "upload-another-image": "Lataa toinen kuva",
"upload-images": "Upload images", "upload-images": "Lataa kuva",
"upload-more-images": "Upload more images", "upload-more-images": "Lataa lisää kuvia",
"set-as-cover-image": "Set as recipe cover image", "set-as-cover-image": "Aseta reseptin kansikuvaksi",
"cover-image": "Cover image" "cover-image": "Kansikuva"
}, },
"recipe-finder": { "recipe-finder": {
"recipe-finder": "Reseptin etsijä", "recipe-finder": "Reseptin etsijä",
@@ -733,7 +737,7 @@
"restore-success": "Palautus onnistui", "restore-success": "Palautus onnistui",
"restore-fail": "Palautus epäonnistui. Tarkista palvelinloki saadaksesi lisätietoja", "restore-fail": "Palautus epäonnistui. Tarkista palvelinloki saadaksesi lisätietoja",
"backup-tag": "Varmuuskopion tunniste", "backup-tag": "Varmuuskopion tunniste",
"create-heading": "Create a Backup", "create-heading": "Luo varmuuskopio",
"delete-backup": "Poista varmuuskopio", "delete-backup": "Poista varmuuskopio",
"error-creating-backup-see-log-file": "Virhe varmuuskopiota luodessa. Katso lokitiedosto", "error-creating-backup-see-log-file": "Virhe varmuuskopiota luodessa. Katso lokitiedosto",
"full-backup": "Täysi varmuuskopiointi", "full-backup": "Täysi varmuuskopiointi",
@@ -988,7 +992,7 @@
"login": "Kirjaudu", "login": "Kirjaudu",
"login-oidc": "Kirjaudu sisään käyttäen", "login-oidc": "Kirjaudu sisään käyttäen",
"or": "tai", "or": "tai",
"logout": "Uloskirjaudu", "logout": "Kirjaudu ulos",
"manage-users": "Käyttäjien hallinta", "manage-users": "Käyttäjien hallinta",
"manage-users-description": "Luo ja hallitse käyttäjiä.", "manage-users-description": "Luo ja hallitse käyttäjiä.",
"new-password": "Uusi salasana", "new-password": "Uusi salasana",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Vaihda sähköpostisi asetuksista, jos et halua nähdä tätä enää.", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Vaihda sähköpostisi asetuksista, jos et halua nähdä tätä enää.",
"forgot-password": "Unohditko salasanasi", "forgot-password": "Unohditko salasanasi",
"forgot-password-text": "Syötä sähköpostiosoitteesi, niin voit muuttaa salasanaasi linkin kautta.", "forgot-password-text": "Syötä sähköpostiosoitteesi, niin voit muuttaa salasanaasi linkin kautta.",
"changes-reflected-immediately": "Muutokset tähän käyttäjään astuvat välittömästi voimaan." "changes-reflected-immediately": "Muutokset tähän käyttäjään astuvat välittömästi voimaan.",
"default-activity": "Default Activity",
"default-activity-hint": "Select which page you'd like to navigate to upon logging in from this device"
}, },
"language-dialog": { "language-dialog": {
"translated": "käännetty", "translated": "käännetty",
@@ -1177,7 +1183,7 @@
"group-details": "Ryhmän tiedot", "group-details": "Ryhmän tiedot",
"group-details-description": "Ennen kuin luot tilin, sinun on luotava ryhmä. Ryhmässäsi on vain sinä, mutta voit kutsua muita myöhemmin. Ryhmäsi jäsenet voivat jakaa ateriasuunnitelmia, ostoslistoja, reseptejä ja paljon muuta!", "group-details-description": "Ennen kuin luot tilin, sinun on luotava ryhmä. Ryhmässäsi on vain sinä, mutta voit kutsua muita myöhemmin. Ryhmäsi jäsenet voivat jakaa ateriasuunnitelmia, ostoslistoja, reseptejä ja paljon muuta!",
"use-seed-data": "Käytä pohjatietoja", "use-seed-data": "Käytä pohjatietoja",
"use-seed-data-description": "Mealie ships with a collection of Foods, Units, and Labels that can be used to populate your group with helpful data for organizing your recipes. These are translated into the language you currently have selected. You can always add to or modify this data later.", "use-seed-data-description": "Mealie:ssa tulee mukana kokoelma valmiita Ruokia, Yksiköitä sekä Luokituksia, joita voidaan käyttää resepteissä sekä niiden lajittelussa. Ne on käännetty kielelle joka on tällä hetkellä valittuna. Voit aina lisätä tai muokata tätä dataa myöhemmin.",
"account-details": "Tilitiedot" "account-details": "Tilitiedot"
}, },
"validation": { "validation": {

View File

@@ -399,6 +399,10 @@
"description-long": "Mealie peut importer des recettes à partir de Tandoor. Exportez vos données dans le format « Défaut », puis téléchargez le .zip ci-dessous.", "description-long": "Mealie peut importer des recettes à partir de Tandoor. Exportez vos données dans le format « Défaut », puis téléchargez le .zip ci-dessous.",
"title": "Recettes Tandoor" "title": "Recettes Tandoor"
}, },
"cookn": {
"description-long": "Mealie can import recipes from DVO Cook'n X3. Export a cookbook or menu in the \"Cook'n\" format, rename the export extension to .zip, then upload the .zip below.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "Migration des données de recettes", "recipe-data-migrations": "Migration des données de recettes",
"recipe-data-migrations-explanation": "Les recettes peuvent être migrées depuis une autre application prise en charge vers Mealie. C'est une excellente façon de commencer avec Mealie.", "recipe-data-migrations-explanation": "Les recettes peuvent être migrées depuis une autre application prise en charge vers Mealie. C'est une excellente façon de commencer avec Mealie.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "En provenance dune autre application une dune version encore plus vieille de Mealie ? Regardez du côté des migrations pour voir si vos données peuvent être importées.", "coming-from-another-application-or-an-even-older-version-of-mealie": "En provenance dune autre application une dune version encore plus vieille de Mealie ? Regardez du côté des migrations pour voir si vos données peuvent être importées.",
@@ -676,7 +680,7 @@
"ingredient-parser-description": "Vos ingrédients ont été analysés avec succès. Veuillez vérifier les ingrédients dont nous ne sommes pas certains.", "ingredient-parser-description": "Vos ingrédients ont été analysés avec succès. Veuillez vérifier les ingrédients dont nous ne sommes pas certains.",
"ingredient-parser-final-review-description": "Une fois que tous les ingrédients ont été analysés, vous aurez encore une chance de vérifier tous les ingrédients avant de les appliquer à votre recette.", "ingredient-parser-final-review-description": "Une fois que tous les ingrédients ont été analysés, vous aurez encore une chance de vérifier tous les ingrédients avant de les appliquer à votre recette.",
"add-text-as-alias-for-item": "Ajouter \"{text}\" comme alias pour {item}", "add-text-as-alias-for-item": "Ajouter \"{text}\" comme alias pour {item}",
"delete-item": "Delete Item" "delete-item": "Supprimer l'élément"
}, },
"reset-servings-count": "Réinitialiser le nombre de portions", "reset-servings-count": "Réinitialiser le nombre de portions",
"not-linked-ingredients": "Ingrédients supplémentaires", "not-linked-ingredients": "Ingrédients supplémentaires",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Vous ne voulez plus voir cela ? Assurez-vous de changer votre adresse e-mail dans vos paramètres d'utilisateur !", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Vous ne voulez plus voir cela ? Assurez-vous de changer votre adresse e-mail dans vos paramètres d'utilisateur !",
"forgot-password": "Mot de passe oublié", "forgot-password": "Mot de passe oublié",
"forgot-password-text": "Veuillez entrer votre adresse e-mail. Un e-mail vous sera envoyé afin de réinitialiser votre mot de passe.", "forgot-password-text": "Veuillez entrer votre adresse e-mail. Un e-mail vous sera envoyé afin de réinitialiser votre mot de passe.",
"changes-reflected-immediately": "Les changements apportés à cet utilisateur seront immédiatement pris en compte." "changes-reflected-immediately": "Les changements apportés à cet utilisateur seront immédiatement pris en compte.",
"default-activity": "Default Activity",
"default-activity-hint": "Select which page you'd like to navigate to upon logging in from this device"
}, },
"language-dialog": { "language-dialog": {
"translated": "traduit", "translated": "traduit",

View File

@@ -399,6 +399,10 @@
"description-long": "Mealie peut importer des recettes à partir de Tandoor. Exportez vos données dans le format « Défaut », puis téléchargez le .zip ci-dessous.", "description-long": "Mealie peut importer des recettes à partir de Tandoor. Exportez vos données dans le format « Défaut », puis téléchargez le .zip ci-dessous.",
"title": "Recettes Tandoor" "title": "Recettes Tandoor"
}, },
"cookn": {
"description-long": "Mealie can import recipes from DVO Cook'n X3. Export a cookbook or menu in the \"Cook'n\" format, rename the export extension to .zip, then upload the .zip below.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "Migration des données de recettes", "recipe-data-migrations": "Migration des données de recettes",
"recipe-data-migrations-explanation": "Les recettes peuvent être migrées depuis une autre application prise en charge vers Mealie. C'est une excellente façon de commencer avec Mealie.", "recipe-data-migrations-explanation": "Les recettes peuvent être migrées depuis une autre application prise en charge vers Mealie. C'est une excellente façon de commencer avec Mealie.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "En provenance dune autre application une dune version encore plus vieille de Mealie ? Regardez du côté des migrations pour voir si vos données peuvent être importées.", "coming-from-another-application-or-an-even-older-version-of-mealie": "En provenance dune autre application une dune version encore plus vieille de Mealie ? Regardez du côté des migrations pour voir si vos données peuvent être importées.",
@@ -676,7 +680,7 @@
"ingredient-parser-description": "Vos ingrédients ont été analysés avec succès. Veuillez vérifier les ingrédients dont nous ne sommes pas certains.", "ingredient-parser-description": "Vos ingrédients ont été analysés avec succès. Veuillez vérifier les ingrédients dont nous ne sommes pas certains.",
"ingredient-parser-final-review-description": "Une fois que tous les ingrédients ont été analysés, vous aurez encore une chance de vérifier tous les ingrédients avant de les appliquer à votre recette.", "ingredient-parser-final-review-description": "Une fois que tous les ingrédients ont été analysés, vous aurez encore une chance de vérifier tous les ingrédients avant de les appliquer à votre recette.",
"add-text-as-alias-for-item": "Ajouter \"{text}\" comme alias pour {item}", "add-text-as-alias-for-item": "Ajouter \"{text}\" comme alias pour {item}",
"delete-item": "Delete Item" "delete-item": "Supprimer l'élément"
}, },
"reset-servings-count": "Réinitialiser le nombre de portions", "reset-servings-count": "Réinitialiser le nombre de portions",
"not-linked-ingredients": "Ingrédients supplémentaires", "not-linked-ingredients": "Ingrédients supplémentaires",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Vous ne voulez plus voir cela? Assurez-vous de changer votre adresse courriel dans vos paramètres d'utilisateur!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Vous ne voulez plus voir cela? Assurez-vous de changer votre adresse courriel dans vos paramètres d'utilisateur!",
"forgot-password": "Mot de passe oublié", "forgot-password": "Mot de passe oublié",
"forgot-password-text": "Veuillez entrer votre adresse e-mail. Un e-mail vous sera envoyé afin de réinitialiser votre mot de passe.", "forgot-password-text": "Veuillez entrer votre adresse e-mail. Un e-mail vous sera envoyé afin de réinitialiser votre mot de passe.",
"changes-reflected-immediately": "Les changements apportés à cet utilisateur seront immédiatement pris en compte." "changes-reflected-immediately": "Les changements apportés à cet utilisateur seront immédiatement pris en compte.",
"default-activity": "Default Activity",
"default-activity-hint": "Select which page you'd like to navigate to upon logging in from this device"
}, },
"language-dialog": { "language-dialog": {
"translated": "traduit", "translated": "traduit",

View File

@@ -399,6 +399,10 @@
"description-long": "Mealie peut importer des recettes à partir de Tandoor. Exportez vos données dans le format « Défaut », puis téléchargez le .zip ci-dessous.", "description-long": "Mealie peut importer des recettes à partir de Tandoor. Exportez vos données dans le format « Défaut », puis téléchargez le .zip ci-dessous.",
"title": "Recettes Tandoor" "title": "Recettes Tandoor"
}, },
"cookn": {
"description-long": "Mealie can import recipes from DVO Cook'n X3. Export a cookbook or menu in the \"Cook'n\" format, rename the export extension to .zip, then upload the .zip below.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "Migration des données de recettes", "recipe-data-migrations": "Migration des données de recettes",
"recipe-data-migrations-explanation": "Les recettes peuvent être migrées depuis une autre application prise en charge vers Mealie. C'est une excellente façon de commencer avec Mealie.", "recipe-data-migrations-explanation": "Les recettes peuvent être migrées depuis une autre application prise en charge vers Mealie. C'est une excellente façon de commencer avec Mealie.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "En provenance dune autre application une dune version encore plus vieille de Mealie ? Regardez du côté des migrations pour voir si vos données peuvent être importées.", "coming-from-another-application-or-an-even-older-version-of-mealie": "En provenance dune autre application une dune version encore plus vieille de Mealie ? Regardez du côté des migrations pour voir si vos données peuvent être importées.",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Vous ne voulez plus voir cela ? Assurez-vous de changer votre adresse e-mail dans vos paramètres d'utilisateur !", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Vous ne voulez plus voir cela ? Assurez-vous de changer votre adresse e-mail dans vos paramètres d'utilisateur !",
"forgot-password": "Mot de passe oublié", "forgot-password": "Mot de passe oublié",
"forgot-password-text": "Veuillez entrer votre adresse e-mail. Un e-mail vous sera envoyé afin de réinitialiser votre mot de passe.", "forgot-password-text": "Veuillez entrer votre adresse e-mail. Un e-mail vous sera envoyé afin de réinitialiser votre mot de passe.",
"changes-reflected-immediately": "Les changements apportés à cet utilisateur seront immédiatement pris en compte." "changes-reflected-immediately": "Les changements apportés à cet utilisateur seront immédiatement pris en compte.",
"default-activity": "Activité par défaut",
"default-activity-hint": "Select which page you'd like to navigate to upon logging in from this device"
}, },
"language-dialog": { "language-dialog": {
"translated": "traduit", "translated": "traduit",

View File

@@ -399,6 +399,10 @@
"description-long": "O Mealie pode importar receitas do Tandoor. Exporte os seus datos no formato \"Padrón\" e despois cargue o . zip abaixo.", "description-long": "O Mealie pode importar receitas do Tandoor. Exporte os seus datos no formato \"Padrón\" e despois cargue o . zip abaixo.",
"title": "Receitas do Tandoor" "title": "Receitas do Tandoor"
}, },
"cookn": {
"description-long": "Mealie can import recipes from DVO Cook'n X3. Export a cookbook or menu in the \"Cook'n\" format, rename the export extension to .zip, then upload the .zip below.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "Migracións de Datos de Receita", "recipe-data-migrations": "Migracións de Datos de Receita",
"recipe-data-migrations-explanation": "As receitas poden ser migradas desde outra aplicación compatível a Mealie. Esta é unha boa forma de comezar a usar o Mealie.", "recipe-data-migrations-explanation": "As receitas poden ser migradas desde outra aplicación compatível a Mealie. Esta é unha boa forma de comezar a usar o Mealie.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "Ven de outra aplicación ou de unha versión ainda mais antiga do Mealie? Verifique as migracións e vexa se os seus datos poden ser importados.", "coming-from-another-application-or-an-even-older-version-of-mealie": "Ven de outra aplicación ou de unha versión ainda mais antiga do Mealie? Verifique as migracións e vexa se os seus datos poden ser importados.",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Non quer voltar a ver isto? Non se esqueza de alterar o seu email nas suas definicións de usuario!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Non quer voltar a ver isto? Non se esqueza de alterar o seu email nas suas definicións de usuario!",
"forgot-password": "Esquecin a miña seña", "forgot-password": "Esquecin a miña seña",
"forgot-password-text": "Por favor, dixite o seu enderezo de email para enviarmos un link para redefinir a sua seña.", "forgot-password-text": "Por favor, dixite o seu enderezo de email para enviarmos un link para redefinir a sua seña.",
"changes-reflected-immediately": "As alteracións deste usuario serán aplicadas imediatamente." "changes-reflected-immediately": "As alteracións deste usuario serán aplicadas imediatamente.",
"default-activity": "Default Activity",
"default-activity-hint": "Select which page you'd like to navigate to upon logging in from this device"
}, },
"language-dialog": { "language-dialog": {
"translated": "traducido", "translated": "traducido",

View File

@@ -399,6 +399,10 @@
"description-long": "Mealie יכול לייבא מתכונים מ-Tandoor, תייצא את המתכון בפורמט הדיפולטיבי ולאחר מכן העלאה אותם בחזרה בפורמט zip.", "description-long": "Mealie יכול לייבא מתכונים מ-Tandoor, תייצא את המתכון בפורמט הדיפולטיבי ולאחר מכן העלאה אותם בחזרה בפורמט zip.",
"title": "מתכוני Tandoor" "title": "מתכוני Tandoor"
}, },
"cookn": {
"description-long": "Mealie can import recipes from DVO Cook'n X3. Export a cookbook or menu in the \"Cook'n\" format, rename the export extension to .zip, then upload the .zip below.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "מגרציית מידע מתכונים", "recipe-data-migrations": "מגרציית מידע מתכונים",
"recipe-data-migrations-explanation": "ניתן לייבא מתכונים מאפליקציות תומכות אחרות אל Mealie. זו דרך מעולה להתחיל במילי.", "recipe-data-migrations-explanation": "ניתן לייבא מתכונים מאפליקציות תומכות אחרות אל Mealie. זו דרך מעולה להתחיל במילי.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "הגעת מתוכנה אחרת או גרסה ישנה יותר של Mealie? מומלץ לבדוק מיגרציות ולראות אם ניתן לייבא את המידע שלך.", "coming-from-another-application-or-an-even-older-version-of-mealie": "הגעת מתוכנה אחרת או גרסה ישנה יותר של Mealie? מומלץ לבדוק מיגרציות ולראות אם ניתן לייבא את המידע שלך.",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "לא רוצה לראות את זה יותר? ניתן לשנות את המייל שלך בהגדרות המשתמש!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "לא רוצה לראות את זה יותר? ניתן לשנות את המייל שלך בהגדרות המשתמש!",
"forgot-password": "שכחתי סיסמא", "forgot-password": "שכחתי סיסמא",
"forgot-password-text": "נא לספק כתובת דוא\"ל. אנו נשלח לך הודעת דוא\"ל לצורך איפוס הסיסמה שלך.", "forgot-password-text": "נא לספק כתובת דוא\"ל. אנו נשלח לך הודעת דוא\"ל לצורך איפוס הסיסמה שלך.",
"changes-reflected-immediately": "שינויים למשתמש זה ישתקפו מיידית." "changes-reflected-immediately": "שינויים למשתמש זה ישתקפו מיידית.",
"default-activity": "Default Activity",
"default-activity-hint": "Select which page you'd like to navigate to upon logging in from this device"
}, },
"language-dialog": { "language-dialog": {
"translated": "תורגם", "translated": "תורגם",

View File

@@ -399,6 +399,10 @@
"description-long": "Mealie može inportirati recepte iz Tandoor-a. Izvezite Vaše recepte u uobičajnom formatu, pa učitajte .zip ispod.", "description-long": "Mealie može inportirati recepte iz Tandoor-a. Izvezite Vaše recepte u uobičajnom formatu, pa učitajte .zip ispod.",
"title": "Tandoor Recepti" "title": "Tandoor Recepti"
}, },
"cookn": {
"description-long": "Mealie can import recipes from DVO Cook'n X3. Export a cookbook or menu in the \"Cook'n\" format, rename the export extension to .zip, then upload the .zip below.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "Migracije Podataka Recepata", "recipe-data-migrations": "Migracije Podataka Recepata",
"recipe-data-migrations-explanation": "Recepti se mogu prenijeti s druge podržane aplikacije na Mealie. To je sjajan način za započetak korištenja Mealieja.", "recipe-data-migrations-explanation": "Recepti se mogu prenijeti s druge podržane aplikacije na Mealie. To je sjajan način za započetak korištenja Mealieja.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "Coming from another application or an even older version of Mealie? Check out migrations and see if your data can be imported.", "coming-from-another-application-or-an-even-older-version-of-mealie": "Coming from another application or an even older version of Mealie? Check out migrations and see if your data can be imported.",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Don't want to see this anymore? Be sure to change your email in your user settings!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Don't want to see this anymore? Be sure to change your email in your user settings!",
"forgot-password": "Forgot Password", "forgot-password": "Forgot Password",
"forgot-password-text": "Please enter your email address and we will send you a link to reset your password.", "forgot-password-text": "Please enter your email address and we will send you a link to reset your password.",
"changes-reflected-immediately": "Changes to this user will be reflected immediately." "changes-reflected-immediately": "Changes to this user will be reflected immediately.",
"default-activity": "Default Activity",
"default-activity-hint": "Select which page you'd like to navigate to upon logging in from this device"
}, },
"language-dialog": { "language-dialog": {
"translated": "prevedeno", "translated": "prevedeno",

View File

@@ -399,6 +399,10 @@
"description-long": "Mealie képes recepteket importálni a Tandoorból. Exportálja adatait az \"Alapértelmezett\" formátumban, majd töltse fel a .zip fájlt lentebb.", "description-long": "Mealie képes recepteket importálni a Tandoorból. Exportálja adatait az \"Alapértelmezett\" formátumban, majd töltse fel a .zip fájlt lentebb.",
"title": "Tandoor receptek" "title": "Tandoor receptek"
}, },
"cookn": {
"description-long": "Mealie képes importálni a DVO Cook'n X3 receptjeit. Exportáljon egy szakácskönyvet vagy menüt „Cook'n” formátumban, nevezze át az exportált fájl kiterjesztését .zip-re, majd töltse fel az alábbi .zip fájlt.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "Receptadatok migrációja", "recipe-data-migrations": "Receptadatok migrációja",
"recipe-data-migrations-explanation": "A receptek átemelhetők más támogatott alkalmazásból Mealie-be. Ez egy remek módja a Mealie használatának elkezdésére.", "recipe-data-migrations-explanation": "A receptek átemelhetők más támogatott alkalmazásból Mealie-be. Ez egy remek módja a Mealie használatának elkezdésére.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "A Mealie egy másik verzióját használtad vagy valami teljesen más applikációt? Nézd meg az adat importálási lehetőségeinket.", "coming-from-another-application-or-an-even-older-version-of-mealie": "A Mealie egy másik verzióját használtad vagy valami teljesen más applikációt? Nézd meg az adat importálási lehetőségeinket.",
@@ -676,7 +680,7 @@
"ingredient-parser-description": "Sikeresen feldolgoztuk a hozzávalókat. Kérljük, nézze át azokat, amelyekben nem vagyunk teljesen biztosak.", "ingredient-parser-description": "Sikeresen feldolgoztuk a hozzávalókat. Kérljük, nézze át azokat, amelyekben nem vagyunk teljesen biztosak.",
"ingredient-parser-final-review-description": "Miután az összes hozzávalót átnézte, még egyszer átnézheti az összes hozzávalót, mielőtt a változtatásokat átvezeti a receptbe.", "ingredient-parser-final-review-description": "Miután az összes hozzávalót átnézte, még egyszer átnézheti az összes hozzávalót, mielőtt a változtatásokat átvezeti a receptbe.",
"add-text-as-alias-for-item": "Adja hozzá a „{text}” nevet {item} aliasaként", "add-text-as-alias-for-item": "Adja hozzá a „{text}” nevet {item} aliasaként",
"delete-item": "Delete Item" "delete-item": "Elem törlése"
}, },
"reset-servings-count": "Adagok számának visszaállítása", "reset-servings-count": "Adagok számának visszaállítása",
"not-linked-ingredients": "Kiegészítő hozzávalók", "not-linked-ingredients": "Kiegészítő hozzávalók",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Nem akarja ezt többé látni? Mindenképpen változtassa meg az e-mail címét a felhasználói beállítások között!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Nem akarja ezt többé látni? Mindenképpen változtassa meg az e-mail címét a felhasználói beállítások között!",
"forgot-password": "Elfelejtett jelszó", "forgot-password": "Elfelejtett jelszó",
"forgot-password-text": "Írja be e-mail címét és mi küldünk egy linket a jelszó visszaállításához.", "forgot-password-text": "Írja be e-mail címét és mi küldünk egy linket a jelszó visszaállításához.",
"changes-reflected-immediately": "Ehhez a felhasználóhoz tartozó változtatások azonnal megjelennek." "changes-reflected-immediately": "Ehhez a felhasználóhoz tartozó változtatások azonnal megjelennek.",
"default-activity": "Alapértelmezett tevékenység",
"default-activity-hint": "Válassza ki, melyik oldalra szeretne navigálni, amikor bejelentkezik erről az eszközről"
}, },
"language-dialog": { "language-dialog": {
"translated": "lefordítva", "translated": "lefordítva",
@@ -1273,7 +1279,7 @@
"action-clean-temporary-files-description": "Minden fájl és mappa eltávolítása a .temp könyvtárból", "action-clean-temporary-files-description": "Minden fájl és mappa eltávolítása a .temp könyvtárból",
"action-clean-images-name": "Képek tisztítása", "action-clean-images-name": "Képek tisztítása",
"action-clean-images-description": "Minden nem .webp kiterjesztésű kép eltávolítása", "action-clean-images-description": "Minden nem .webp kiterjesztésű kép eltávolítása",
"actions-description": "A karbantartási műveletek {destructive_in_bold} és óvatosan használandók. Ezen műveletek bármelyikének végrehajtása {irreversible_in_bold}.", "actions-description": "A karbantartási műveletek {destructive_in_bold} jellegűek, ezért óvatosan kell alkalmazni őket. Ezen műveletek végrehajtása {irreversible_in_bold}.",
"actions-description-destructive": "romboló", "actions-description-destructive": "romboló",
"actions-description-irreversible": "visszafordíthatatlan", "actions-description-irreversible": "visszafordíthatatlan",
"logs-action-refresh": "Logok frissítése", "logs-action-refresh": "Logok frissítése",

File diff suppressed because it is too large Load Diff

View File

@@ -399,6 +399,10 @@
"description-long": "Mealie può importare ricette da Tandoor. Esporta i tuoi dati nel formato \"Predefinito\", quindi carica il file .zip sottostante.", "description-long": "Mealie può importare ricette da Tandoor. Esporta i tuoi dati nel formato \"Predefinito\", quindi carica il file .zip sottostante.",
"title": "Ricette Del Tandoore" "title": "Ricette Del Tandoore"
}, },
"cookn": {
"description-long": "Mealie può importare ricette da DVO Cook'n X3. Per esportare un ricettario o un menu nel formato \"Cook'n\", rinominare l'estensione di esportazione in .zip, quindi caricare il file .zip qui sotto.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "Migrazione Dati Ricetta", "recipe-data-migrations": "Migrazione Dati Ricetta",
"recipe-data-migrations-explanation": "Le ricette possono essere migrate da un'altra applicazione supportata da Mealie. Questo è un ottimo modo per iniziare con Mealie.", "recipe-data-migrations-explanation": "Le ricette possono essere migrate da un'altra applicazione supportata da Mealie. Questo è un ottimo modo per iniziare con Mealie.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "Arrivi da un'altra applicazione o da una versione più vecchia di Mealie? Scopri le migrazioni e scopri se i tuoi dati possono essere importati.", "coming-from-another-application-or-an-even-older-version-of-mealie": "Arrivi da un'altra applicazione o da una versione più vecchia di Mealie? Scopri le migrazioni e scopri se i tuoi dati possono essere importati.",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Non vuoi più vederlo? Assicurati di modificare la tua email nelle impostazioni utente!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Non vuoi più vederlo? Assicurati di modificare la tua email nelle impostazioni utente!",
"forgot-password": "Password Dimenticata", "forgot-password": "Password Dimenticata",
"forgot-password-text": "Inserisci il tuo indirizzo email e ti invieremo un collegamento per reimpostare la tua password.", "forgot-password-text": "Inserisci il tuo indirizzo email e ti invieremo un collegamento per reimpostare la tua password.",
"changes-reflected-immediately": "Le modifiche a questo utente diventeranno immediatamente effettive." "changes-reflected-immediately": "Le modifiche a questo utente diventeranno immediatamente effettive.",
"default-activity": "Attività Predefinita",
"default-activity-hint": "Seleziona a quale pagina vuoi navigare al momento dell'accesso da questo dispositivo"
}, },
"language-dialog": { "language-dialog": {
"translated": "tradotto", "translated": "tradotto",

View File

@@ -399,6 +399,10 @@
"description-long": "MealieはTandoorからレシピをインポートすることができます。「デフォルト」形式でデータをエクスポートし、以下に.zipをアップロードしてください。", "description-long": "MealieはTandoorからレシピをインポートすることができます。「デフォルト」形式でデータをエクスポートし、以下に.zipをアップロードしてください。",
"title": "Tandoor Recipes" "title": "Tandoor Recipes"
}, },
"cookn": {
"description-long": "Mealie can import recipes from DVO Cook'n X3. Export a cookbook or menu in the \"Cook'n\" format, rename the export extension to .zip, then upload the .zip below.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "レシピの移行", "recipe-data-migrations": "レシピの移行",
"recipe-data-migrations-explanation": "レシピは、サポートされている別のアプリケーションからMealieに移行できます。これはMealieを始めるのに最適な方法です。", "recipe-data-migrations-explanation": "レシピは、サポートされている別のアプリケーションからMealieに移行できます。これはMealieを始めるのに最適な方法です。",
"coming-from-another-application-or-an-even-older-version-of-mealie": "別のアプリケーションもしくは古いバージョンのMealieからですか移行をチェックして、データをインポートできるかどうかを確認してください。", "coming-from-another-application-or-an-even-older-version-of-mealie": "別のアプリケーションもしくは古いバージョンのMealieからですか移行をチェックして、データをインポートできるかどうかを確認してください。",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "これ以上表示したくないですか?ユーザー設定でメールアドレスを変更してください!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "これ以上表示したくないですか?ユーザー設定でメールアドレスを変更してください!",
"forgot-password": "パスワードを忘れた", "forgot-password": "パスワードを忘れた",
"forgot-password-text": "メールアドレスを入力すると、パスワードをリセットするためのリンクが送信されます。", "forgot-password-text": "メールアドレスを入力すると、パスワードをリセットするためのリンクが送信されます。",
"changes-reflected-immediately": "このユーザーへの変更はすぐに反映されます。" "changes-reflected-immediately": "このユーザーへの変更はすぐに反映されます。",
"default-activity": "Default Activity",
"default-activity-hint": "Select which page you'd like to navigate to upon logging in from this device"
}, },
"language-dialog": { "language-dialog": {
"translated": "翻訳済み", "translated": "翻訳済み",

View File

@@ -399,6 +399,10 @@
"description-long": "Mealie can import recipes from Tandoor. Export your data in the \"Default\" format, then upload the .zip below.", "description-long": "Mealie can import recipes from Tandoor. Export your data in the \"Default\" format, then upload the .zip below.",
"title": "Tandoor Recipes" "title": "Tandoor Recipes"
}, },
"cookn": {
"description-long": "Mealie can import recipes from DVO Cook'n X3. Export a cookbook or menu in the \"Cook'n\" format, rename the export extension to .zip, then upload the .zip below.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "Recipe Data Migrations", "recipe-data-migrations": "Recipe Data Migrations",
"recipe-data-migrations-explanation": "Recipes can be migrated from another supported application to Mealie. This is a great way to get started with Mealie.", "recipe-data-migrations-explanation": "Recipes can be migrated from another supported application to Mealie. This is a great way to get started with Mealie.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "Coming from another application or an even older version of Mealie? Check out migrations and see if your data can be imported.", "coming-from-another-application-or-an-even-older-version-of-mealie": "Coming from another application or an even older version of Mealie? Check out migrations and see if your data can be imported.",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Don't want to see this anymore? Be sure to change your email in your user settings!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Don't want to see this anymore? Be sure to change your email in your user settings!",
"forgot-password": "Forgot Password", "forgot-password": "Forgot Password",
"forgot-password-text": "Please enter your email address and we will send you a link to reset your password.", "forgot-password-text": "Please enter your email address and we will send you a link to reset your password.",
"changes-reflected-immediately": "Changes to this user will be reflected immediately." "changes-reflected-immediately": "Changes to this user will be reflected immediately.",
"default-activity": "Default Activity",
"default-activity-hint": "Select which page you'd like to navigate to upon logging in from this device"
}, },
"language-dialog": { "language-dialog": {
"translated": "translated", "translated": "translated",

View File

@@ -399,6 +399,10 @@
"description-long": "Mealie gali importuoti receptus iš \"Tandoor\". Eksportuokite savo duomenis \"Default\" formatu ir įkelkite .ZIP failą žemiau.", "description-long": "Mealie gali importuoti receptus iš \"Tandoor\". Eksportuokite savo duomenis \"Default\" formatu ir įkelkite .ZIP failą žemiau.",
"title": "\"Tandoor\" receptai" "title": "\"Tandoor\" receptai"
}, },
"cookn": {
"description-long": "Mealie can import recipes from DVO Cook'n X3. Export a cookbook or menu in the \"Cook'n\" format, rename the export extension to .zip, then upload the .zip below.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "Receptų duomenų migracijos", "recipe-data-migrations": "Receptų duomenų migracijos",
"recipe-data-migrations-explanation": "Receptai gali būti importuojami į Mealie iš kitų palaikomų sistemų. Tai - puikus būdas pradėti naudotis Mealie.", "recipe-data-migrations-explanation": "Receptai gali būti importuojami į Mealie iš kitų palaikomų sistemų. Tai - puikus būdas pradėti naudotis Mealie.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "Coming from another application or an even older version of Mealie? Check out migrations and see if your data can be imported.", "coming-from-another-application-or-an-even-older-version-of-mealie": "Coming from another application or an even older version of Mealie? Check out migrations and see if your data can be imported.",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Don't want to see this anymore? Be sure to change your email in your user settings!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Don't want to see this anymore? Be sure to change your email in your user settings!",
"forgot-password": "Forgot Password", "forgot-password": "Forgot Password",
"forgot-password-text": "Please enter your email address and we will send you a link to reset your password.", "forgot-password-text": "Please enter your email address and we will send you a link to reset your password.",
"changes-reflected-immediately": "Changes to this user will be reflected immediately." "changes-reflected-immediately": "Changes to this user will be reflected immediately.",
"default-activity": "Default Activity",
"default-activity-hint": "Select which page you'd like to navigate to upon logging in from this device"
}, },
"language-dialog": { "language-dialog": {
"translated": "išversta", "translated": "išversta",

View File

@@ -399,6 +399,10 @@
"description-long": "Mealie var importēt receptes no Tandoor. Eksportējiet savus datus formātā “Noklusējums”, pēc tam augšupielādējiet zemāk esošu.zip.", "description-long": "Mealie var importēt receptes no Tandoor. Eksportējiet savus datus formātā “Noklusējums”, pēc tam augšupielādējiet zemāk esošu.zip.",
"title": "Tandoor receptes" "title": "Tandoor receptes"
}, },
"cookn": {
"description-long": "Mealie can import recipes from DVO Cook'n X3. Export a cookbook or menu in the \"Cook'n\" format, rename the export extension to .zip, then upload the .zip below.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "Recepšu datu migrācija", "recipe-data-migrations": "Recepšu datu migrācija",
"recipe-data-migrations-explanation": "Receptes var migrēt no citas atbalstītas lietojumprogrammas uz Mealie. Tas ir lielisks veids, kā sākt darbu ar Mealie.", "recipe-data-migrations-explanation": "Receptes var migrēt no citas atbalstītas lietojumprogrammas uz Mealie. Tas ir lielisks veids, kā sākt darbu ar Mealie.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "Vai nāk no citas lietojumprogrammas vai vēl vecākas Mealie versijas? Pārbaudiet migrācijas un pārbaudiet, vai jūsu datus var importēt.", "coming-from-another-application-or-an-even-older-version-of-mealie": "Vai nāk no citas lietojumprogrammas vai vēl vecākas Mealie versijas? Pārbaudiet migrācijas un pārbaudiet, vai jūsu datus var importēt.",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Vai nevēlaties to vairs redzēt? Noteikti mainiet savu e-pastu lietotāja iestatījumos!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Vai nevēlaties to vairs redzēt? Noteikti mainiet savu e-pastu lietotāja iestatījumos!",
"forgot-password": "Aizmirsāt paroli", "forgot-password": "Aizmirsāt paroli",
"forgot-password-text": "Lūdzu, ievadiet savu e-pasta adresi, un mēs jums nosūtīsim saiti, lai atiestatītu jūsu paroli.", "forgot-password-text": "Lūdzu, ievadiet savu e-pasta adresi, un mēs jums nosūtīsim saiti, lai atiestatītu jūsu paroli.",
"changes-reflected-immediately": "Izmaiņas šim lietotājam tiks atspoguļotas nekavējoties." "changes-reflected-immediately": "Izmaiņas šim lietotājam tiks atspoguļotas nekavējoties.",
"default-activity": "Default Activity",
"default-activity-hint": "Select which page you'd like to navigate to upon logging in from this device"
}, },
"language-dialog": { "language-dialog": {
"translated": "tulkots", "translated": "tulkots",

View File

@@ -399,6 +399,10 @@
"description-long": "Mealie kan recepten importeren van Tandoor. Exporteer je gegevens in het \"Standaardformaat\" (\"Default\") en upload het .zip bestand hieronder.", "description-long": "Mealie kan recepten importeren van Tandoor. Exporteer je gegevens in het \"Standaardformaat\" (\"Default\") en upload het .zip bestand hieronder.",
"title": "Tandoor-recepten" "title": "Tandoor-recepten"
}, },
"cookn": {
"description-long": "Mealie kan recepten importeren van DVO Cook'n X3. Exporteer een cookboek of menu in het \"Cook'n\" formaat. Verander de naam van de export extensie naar .zip. En upload daarna de .zip.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "Receptmigratie", "recipe-data-migrations": "Receptmigratie",
"recipe-data-migrations-explanation": "Je kunt recepten van een ander programma importeren in Mealie. Zo kun je snel aan de slag.", "recipe-data-migrations-explanation": "Je kunt recepten van een ander programma importeren in Mealie. Zo kun je snel aan de slag.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "Kom je van een andere toepassing of een oudere versie van Mealie? Kijk eens naar de migraties. Misschien kunnen we je gegevens importeren.", "coming-from-another-application-or-an-even-older-version-of-mealie": "Kom je van een andere toepassing of een oudere versie van Mealie? Kijk eens naar de migraties. Misschien kunnen we je gegevens importeren.",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Wil je dit niet meer zien? Verander dan je e-mailadres in je gebruikersinstellingen!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Wil je dit niet meer zien? Verander dan je e-mailadres in je gebruikersinstellingen!",
"forgot-password": "Wachtwoord vergeten", "forgot-password": "Wachtwoord vergeten",
"forgot-password-text": "Voer je e-mailadres in, dan sturen we je een link om het wachtwoord te herstellen.", "forgot-password-text": "Voer je e-mailadres in, dan sturen we je een link om het wachtwoord te herstellen.",
"changes-reflected-immediately": "Wijzigingen in deze groep zijn meteen zichtbaar." "changes-reflected-immediately": "Wijzigingen in deze groep zijn meteen zichtbaar.",
"default-activity": "Standaard activiteit",
"default-activity-hint": "Kies de pagina waar u naar toe wilt, na inloggen op dit apparaat"
}, },
"language-dialog": { "language-dialog": {
"translated": "vertaald", "translated": "vertaald",

View File

@@ -69,7 +69,7 @@
"new-notification": "Nytt varsel", "new-notification": "Nytt varsel",
"event-notifiers": "Hendelsesvarsler", "event-notifiers": "Hendelsesvarsler",
"apprise-url-skipped-if-blank": "Apprise-URL (hoppes over hvis tom)", "apprise-url-skipped-if-blank": "Apprise-URL (hoppes over hvis tom)",
"apprise-url-is-left-intentionally-blank": "Since Apprise URLs typically contain sensitive information, this field is left intentionally blank while editing. If you wish to update the URL, please enter the new one here, otherwise leave it blank to keep the current URL.", "apprise-url-is-left-intentionally-blank": "Siden Apprise URL-er vanligvis inneholder sensitiv informasjon, må dette feltet ikke være tomt mens du redigerer. Hvis du vil oppdatere URL, skriv inn den nye her, ellers la den være tom for å beholde den gjeldende URL.",
"enable-notifier": "Aktiver varslingsagenten", "enable-notifier": "Aktiver varslingsagenten",
"what-events": "Hvilke hendelser skal denne varslingsagenten abonnere på?", "what-events": "Hvilke hendelser skal denne varslingsagenten abonnere på?",
"user-events": "Brukerhendelser", "user-events": "Brukerhendelser",
@@ -81,7 +81,7 @@
"category-events": "Kategorihendelser", "category-events": "Kategorihendelser",
"when-a-new-user-joins-your-group": "Når en ny bruker blir med i gruppen din", "when-a-new-user-joins-your-group": "Når en ny bruker blir med i gruppen din",
"recipe-events": "Oppskriftshendelser", "recipe-events": "Oppskriftshendelser",
"label-events": "Label Events" "label-events": "Merk hendelser"
}, },
"general": { "general": {
"add": "Legg til", "add": "Legg til",
@@ -399,6 +399,10 @@
"description-long": "Mealie kan importere oppskrifter fra Tandoor. Eksporter dataene i \"Standard\"-formatet, last deretter opp zip-filen nedenfor.", "description-long": "Mealie kan importere oppskrifter fra Tandoor. Eksporter dataene i \"Standard\"-formatet, last deretter opp zip-filen nedenfor.",
"title": "Tandoor Recipes" "title": "Tandoor Recipes"
}, },
"cookn": {
"description-long": "Mealie can import recipes from DVO Cook'n X3. Export a cookbook or menu in the \"Cook'n\" format, rename the export extension to .zip, then upload the .zip below.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "Overføring av oppskrifter", "recipe-data-migrations": "Overføring av oppskrifter",
"recipe-data-migrations-explanation": "Oppskrifter kan overføres fra et annet støttet program til Mealie. Dette er en flott måte å komme i gang med Mealie på.", "recipe-data-migrations-explanation": "Oppskrifter kan overføres fra et annet støttet program til Mealie. Dette er en flott måte å komme i gang med Mealie på.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "Kommer du fra en annen applikasjon eller en enda eldre versjon av Mealie? Sjekk ut overføringer og se om dine data kan importeres.", "coming-from-another-application-or-an-even-older-version-of-mealie": "Kommer du fra en annen applikasjon eller en enda eldre versjon av Mealie? Sjekk ut overføringer og se om dine data kan importeres.",
@@ -561,7 +565,7 @@
"see-original-text": "Se opprinnelig tekst", "see-original-text": "Se opprinnelig tekst",
"original-text-with-value": "Opprinnelig tekst: {originalText}", "original-text-with-value": "Opprinnelig tekst: {originalText}",
"ingredient-linker": "Tilknytt ingredienser", "ingredient-linker": "Tilknytt ingredienser",
"unlinked": "Not linked yet", "unlinked": "Ingen lenke enda",
"linked-to-other-step": "Tilknyttet et annet steg", "linked-to-other-step": "Tilknyttet et annet steg",
"auto": "Automatisk", "auto": "Automatisk",
"cook-mode": "Tilberedelsesmodus", "cook-mode": "Tilberedelsesmodus",
@@ -590,7 +594,7 @@
"api-extras-description": "Ekstramaterialer til oppskrifter er en viktig funksjon i Mealie API-en. De lar deg opprette egendefinerte JSON-nøkkel/verdi-par innenfor en oppskrift for å referere fra tredjepartsapplikasjoner. Du kan bruke disse nøklene til å gi informasjon for eksempel for å utløse automatiseringer eller egendefinerte meldinger som skal videreformidles til ønsket enhet.", "api-extras-description": "Ekstramaterialer til oppskrifter er en viktig funksjon i Mealie API-en. De lar deg opprette egendefinerte JSON-nøkkel/verdi-par innenfor en oppskrift for å referere fra tredjepartsapplikasjoner. Du kan bruke disse nøklene til å gi informasjon for eksempel for å utløse automatiseringer eller egendefinerte meldinger som skal videreformidles til ønsket enhet.",
"message-key": "Meldingsnøkkel", "message-key": "Meldingsnøkkel",
"parse": "Analyser", "parse": "Analyser",
"ingredients-not-parsed-description": "It looks like your ingredients aren't parsed yet. Click the \"{parse}\" button below to parse your ingredients into structured foods.", "ingredients-not-parsed-description": "Det ser ut som ingridensene ikke har blitt analysert enda. Klikk\"{parse}\"-knappen under for å analysere ingrediensese som strukturert matvarer.",
"attach-images-hint": "Fest bilder ved å dra og slippe dem inn i redigereringsverktøyet", "attach-images-hint": "Fest bilder ved å dra og slippe dem inn i redigereringsverktøyet",
"drop-image": "Slipp bilde", "drop-image": "Slipp bilde",
"enable-ingredient-amounts-to-use-this-feature": "Aktiver ingrediensmengder for å bruke denne funksjonen", "enable-ingredient-amounts-to-use-this-feature": "Aktiver ingrediensmengder for å bruke denne funksjonen",
@@ -624,7 +628,7 @@
"scrape-recipe-you-can-import-from-raw-data-directly": "Du kan importere fra rådata direkte", "scrape-recipe-you-can-import-from-raw-data-directly": "Du kan importere fra rådata direkte",
"import-original-keywords-as-tags": "Importer originale søkeord som emneord", "import-original-keywords-as-tags": "Importer originale søkeord som emneord",
"stay-in-edit-mode": "Forbli i redigeringsmodus", "stay-in-edit-mode": "Forbli i redigeringsmodus",
"parse-recipe-ingredients-after-import": "Parse recipe ingredients after import", "parse-recipe-ingredients-after-import": "Analyser oppskriftens ingredienser etter at importen er fullført",
"import-from-zip": "Importer fra zip-fil", "import-from-zip": "Importer fra zip-fil",
"import-from-zip-description": "Importer en enkelt oppskrift som ble eksportert fra en annen Mealie-instans.", "import-from-zip-description": "Importer en enkelt oppskrift som ble eksportert fra en annen Mealie-instans.",
"import-from-html-or-json": "Importer fra HTML eller JSON", "import-from-html-or-json": "Importer fra HTML eller JSON",
@@ -668,15 +672,15 @@
"no-unit": "Ingen enhet", "no-unit": "Ingen enhet",
"missing-unit": "Opprett manglende enhet: {unit}", "missing-unit": "Opprett manglende enhet: {unit}",
"missing-food": "Opprett manglende mat: {food}", "missing-food": "Opprett manglende mat: {food}",
"this-unit-could-not-be-parsed-automatically": "This unit could not be parsed automatically", "this-unit-could-not-be-parsed-automatically": "Denne enheten kunne ikke analyseres automatisk",
"this-food-could-not-be-parsed-automatically": "Denne maten kunne ikke leses automatisk", "this-food-could-not-be-parsed-automatically": "Denne maten kunne ikke leses automatisk",
"no-food": "Ingen matvarer", "no-food": "Ingen matvarer",
"review-parsed-ingredients": "Review parsed ingredients", "review-parsed-ingredients": "Gjennomgå de analyserte ingrediensene",
"confidence-score": "Confidence Score", "confidence-score": "Tillit score",
"ingredient-parser-description": "Your ingredients have been successfully parsed. Please review the ingredients we're not sure about.", "ingredient-parser-description": "Ingrediensene har blitt analysert. Venligst gjennomgå ingrediensene vi ikke er sikkre på.",
"ingredient-parser-final-review-description": "Once all ingredients have been reviewed, you'll have one more chance to review all ingredients before applying the changes to your recipe.", "ingredient-parser-final-review-description": "Når alle ingredienser er gjennomgått, har du en siste sjanse til å gjennomgå alle ingrediensene før du tar i bruk endringene på oppskriften din.",
"add-text-as-alias-for-item": "Add \"{text}\" as alias for {item}", "add-text-as-alias-for-item": "Legg til \"{text}\" som kallenavn for {item}",
"delete-item": "Delete Item" "delete-item": "Slett gjenstanden"
}, },
"reset-servings-count": "Nullstill antall porsjoner", "reset-servings-count": "Nullstill antall porsjoner",
"not-linked-ingredients": "Tilleggsingredienser", "not-linked-ingredients": "Tilleggsingredienser",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Ønsker du ikke å se dette lenger? Sørg for å endre e-posten din i brukerinnstillingene dine!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Ønsker du ikke å se dette lenger? Sørg for å endre e-posten din i brukerinnstillingene dine!",
"forgot-password": "Glemt passord", "forgot-password": "Glemt passord",
"forgot-password-text": "Skriv inn e-postadressen din. Vi sender deg en e-post slik at du kan tilbakestille passordet ditt.", "forgot-password-text": "Skriv inn e-postadressen din. Vi sender deg en e-post slik at du kan tilbakestille passordet ditt.",
"changes-reflected-immediately": "Endringer på denne brukeren gjenspeiles umiddelbart." "changes-reflected-immediately": "Endringer på denne brukeren gjenspeiles umiddelbart.",
"default-activity": "Default Activity",
"default-activity-hint": "Select which page you'd like to navigate to upon logging in from this device"
}, },
"language-dialog": { "language-dialog": {
"translated": "oversatt", "translated": "oversatt",
@@ -1177,7 +1183,7 @@
"group-details": "Gruppedetaljer", "group-details": "Gruppedetaljer",
"group-details-description": "Før du oppretter en konto må du opprette en gruppe. Gruppen din vil bare inneholde deg, men du vil kunne invitere andre senere. Medlemmer i gruppen din kan dele måltider, handlelister, oppskrifter med mer!", "group-details-description": "Før du oppretter en konto må du opprette en gruppe. Gruppen din vil bare inneholde deg, men du vil kunne invitere andre senere. Medlemmer i gruppen din kan dele måltider, handlelister, oppskrifter med mer!",
"use-seed-data": "Bruk tilføringsdata", "use-seed-data": "Bruk tilføringsdata",
"use-seed-data-description": "Mealie ships with a collection of Foods, Units, and Labels that can be used to populate your group with helpful data for organizing your recipes. These are translated into the language you currently have selected. You can always add to or modify this data later.", "use-seed-data-description": "Mealie leveres med en kolleksjon av matvarer, enheter og etiketter, som can bli brukt til å utfylle gruppen med hjelpsom data for organisering av oppskrifter. Disse er oversatt over til språket du har valgt. Du kan alltid legge til eller modifisere denne dataen senere.",
"account-details": "Kontodetaljer" "account-details": "Kontodetaljer"
}, },
"validation": { "validation": {

View File

@@ -399,6 +399,10 @@
"description-long": "Mealie może zaimportować przepisy z Tandoor. Wyeksportuj swoje przepisy w formacie HTML, a następnie prześlij plik .zip poniżej.", "description-long": "Mealie może zaimportować przepisy z Tandoor. Wyeksportuj swoje przepisy w formacie HTML, a następnie prześlij plik .zip poniżej.",
"title": "Przepisy Tandoor" "title": "Przepisy Tandoor"
}, },
"cookn": {
"description-long": "Mealie can import recipes from DVO Cook'n X3. Export a cookbook or menu in the \"Cook'n\" format, rename the export extension to .zip, then upload the .zip below.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "Migracja danych przepisów", "recipe-data-migrations": "Migracja danych przepisów",
"recipe-data-migrations-explanation": "Receptury mogą być przeniesione z innej wspieranej aplikacji na Mealie. To świetny sposób na rozpoczęcie z Mealie.", "recipe-data-migrations-explanation": "Receptury mogą być przeniesione z innej wspieranej aplikacji na Mealie. To świetny sposób na rozpoczęcie z Mealie.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "Przechodzisz z innej aplikacji, bądź starszej wersji Mealie? Sprawdź dostępne migracje i zobacz czy dane mogą zostać zaimportowane.", "coming-from-another-application-or-an-even-older-version-of-mealie": "Przechodzisz z innej aplikacji, bądź starszej wersji Mealie? Sprawdź dostępne migracje i zobacz czy dane mogą zostać zaimportowane.",
@@ -624,7 +628,7 @@
"scrape-recipe-you-can-import-from-raw-data-directly": "Możesz zaimportować bezpośrednio z surowych danych", "scrape-recipe-you-can-import-from-raw-data-directly": "Możesz zaimportować bezpośrednio z surowych danych",
"import-original-keywords-as-tags": "Importuj oryginalne słowa kluczowe jako tagi", "import-original-keywords-as-tags": "Importuj oryginalne słowa kluczowe jako tagi",
"stay-in-edit-mode": "Pozostań w trybie edycji", "stay-in-edit-mode": "Pozostań w trybie edycji",
"parse-recipe-ingredients-after-import": "Parse recipe ingredients after import", "parse-recipe-ingredients-after-import": "Analizuj składniki receptury po zaimportowaniu",
"import-from-zip": "Importuj z pliku Zip", "import-from-zip": "Importuj z pliku Zip",
"import-from-zip-description": "Importuj pojedynczy przepis, który został wyeksportowany z innej instancji Mealie.", "import-from-zip-description": "Importuj pojedynczy przepis, który został wyeksportowany z innej instancji Mealie.",
"import-from-html-or-json": "Importuj z HTML lub JSON", "import-from-html-or-json": "Importuj z HTML lub JSON",
@@ -671,12 +675,12 @@
"this-unit-could-not-be-parsed-automatically": "Nie można przetworzyć tej jednostki automatycznie", "this-unit-could-not-be-parsed-automatically": "Nie można przetworzyć tej jednostki automatycznie",
"this-food-could-not-be-parsed-automatically": "Nie można przetworzyć tego jedzenia automatycznie", "this-food-could-not-be-parsed-automatically": "Nie można przetworzyć tego jedzenia automatycznie",
"no-food": "Brak potrawy", "no-food": "Brak potrawy",
"review-parsed-ingredients": "Review parsed ingredients", "review-parsed-ingredients": "Przejrzyj przeanalizowane składniki",
"confidence-score": "Confidence Score", "confidence-score": "Wskaźnik pewności",
"ingredient-parser-description": "Your ingredients have been successfully parsed. Please review the ingredients we're not sure about.", "ingredient-parser-description": "Your ingredients have been successfully parsed. Please review the ingredients we're not sure about.",
"ingredient-parser-final-review-description": "Once all ingredients have been reviewed, you'll have one more chance to review all ingredients before applying the changes to your recipe.", "ingredient-parser-final-review-description": "Once all ingredients have been reviewed, you'll have one more chance to review all ingredients before applying the changes to your recipe.",
"add-text-as-alias-for-item": "Add \"{text}\" as alias for {item}", "add-text-as-alias-for-item": "Add \"{text}\" as alias for {item}",
"delete-item": "Delete Item" "delete-item": "Usuń przedmiot"
}, },
"reset-servings-count": "Zresetuj liczbę porcji", "reset-servings-count": "Zresetuj liczbę porcji",
"not-linked-ingredients": "Dodatkowe składniki", "not-linked-ingredients": "Dodatkowe składniki",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Nie chcesz już tego widzieć? Pamiętaj, aby zmienić swój adres e-mail w ustawieniach użytkownika!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Nie chcesz już tego widzieć? Pamiętaj, aby zmienić swój adres e-mail w ustawieniach użytkownika!",
"forgot-password": "Nie pamiętam hasła", "forgot-password": "Nie pamiętam hasła",
"forgot-password-text": "Podaj adres e-mail konta, do którego chcesz odzyskać hasło.", "forgot-password-text": "Podaj adres e-mail konta, do którego chcesz odzyskać hasło.",
"changes-reflected-immediately": "Zmiany dla tego użytkownika będą zastosowane natychmiastowo." "changes-reflected-immediately": "Zmiany dla tego użytkownika będą zastosowane natychmiastowo.",
"default-activity": "Default Activity",
"default-activity-hint": "Select which page you'd like to navigate to upon logging in from this device"
}, },
"language-dialog": { "language-dialog": {
"translated": "przetłumaczone", "translated": "przetłumaczone",

View File

@@ -399,6 +399,10 @@
"description-long": "Mealie pode importar receitas do Tandoor. Exporte seus dados no formato \"Padrão\" e faça o upload do arquivo .zip abaixo.", "description-long": "Mealie pode importar receitas do Tandoor. Exporte seus dados no formato \"Padrão\" e faça o upload do arquivo .zip abaixo.",
"title": "Receitas do Tandoor" "title": "Receitas do Tandoor"
}, },
"cookn": {
"description-long": "Mealie can import recipes from DVO Cook'n X3. Export a cookbook or menu in the \"Cook'n\" format, rename the export extension to .zip, then upload the .zip below.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "Migrações de Dados de Receita", "recipe-data-migrations": "Migrações de Dados de Receita",
"recipe-data-migrations-explanation": "Receitas podem ser migradas de outro aplicativo suportado para o Mealie. Esta é uma ótima maneira de começar com Mealie.", "recipe-data-migrations-explanation": "Receitas podem ser migradas de outro aplicativo suportado para o Mealie. Esta é uma ótima maneira de começar com Mealie.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "Vindo de outra aplicação ou de uma versão mais antiga do Mealie? Confira as migrações e veja se seus dados podem ser importados.", "coming-from-another-application-or-an-even-older-version-of-mealie": "Vindo de outra aplicação ou de uma versão mais antiga do Mealie? Confira as migrações e veja se seus dados podem ser importados.",
@@ -671,12 +675,12 @@
"this-unit-could-not-be-parsed-automatically": "Esta unidade não pôde ser analisada automaticamente", "this-unit-could-not-be-parsed-automatically": "Esta unidade não pôde ser analisada automaticamente",
"this-food-could-not-be-parsed-automatically": "Este alimento não pôde ser analisado automaticamente", "this-food-could-not-be-parsed-automatically": "Este alimento não pôde ser analisado automaticamente",
"no-food": "Sem Comida", "no-food": "Sem Comida",
"review-parsed-ingredients": "Review parsed ingredients", "review-parsed-ingredients": "Revisar ingredientes analisados",
"confidence-score": "Confidence Score", "confidence-score": "Nota de Confiança",
"ingredient-parser-description": "Your ingredients have been successfully parsed. Please review the ingredients we're not sure about.", "ingredient-parser-description": "Seus ingredientes foram analisados com sucesso. Por favor, verifique os ingredientes que não temos certeza.",
"ingredient-parser-final-review-description": "Once all ingredients have been reviewed, you'll have one more chance to review all ingredients before applying the changes to your recipe.", "ingredient-parser-final-review-description": "Depois que todos os ingredientes forem revisados, você terá mais uma chance de revisar todos os ingredientes antes de aplicar as mudanças em sua receita.",
"add-text-as-alias-for-item": "Add \"{text}\" as alias for {item}", "add-text-as-alias-for-item": "Adicionar \"{text}\" como apelido para {item}",
"delete-item": "Delete Item" "delete-item": "Excluir item"
}, },
"reset-servings-count": "Redefinir Contagem de Porções", "reset-servings-count": "Redefinir Contagem de Porções",
"not-linked-ingredients": "Ingredientes adicionais", "not-linked-ingredients": "Ingredientes adicionais",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Não quer mais ver isto? Não se esqueça de alterar seu e-mail nas configurações do seu usuário!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Não quer mais ver isto? Não se esqueça de alterar seu e-mail nas configurações do seu usuário!",
"forgot-password": "Esqueci minha senha", "forgot-password": "Esqueci minha senha",
"forgot-password-text": "Digite seu endereço de e-mail e enviaremos um link para redefinir sua senha.", "forgot-password-text": "Digite seu endereço de e-mail e enviaremos um link para redefinir sua senha.",
"changes-reflected-immediately": "As alterações deste usuário serão refletidas imediatamente." "changes-reflected-immediately": "As alterações deste usuário serão refletidas imediatamente.",
"default-activity": "Default Activity",
"default-activity-hint": "Select which page you'd like to navigate to upon logging in from this device"
}, },
"language-dialog": { "language-dialog": {
"translated": "traduzido", "translated": "traduzido",

View File

@@ -399,6 +399,10 @@
"description-long": "O Mealie pode importar receitas a partir da Tandoor. Exporte os seus dados no formato \"Padrão\" e faça o upload do .zip abaixo.", "description-long": "O Mealie pode importar receitas a partir da Tandoor. Exporte os seus dados no formato \"Padrão\" e faça o upload do .zip abaixo.",
"title": "Receitas do Tandoor" "title": "Receitas do Tandoor"
}, },
"cookn": {
"description-long": "Mealie can import recipes from DVO Cook'n X3. Export a cookbook or menu in the \"Cook'n\" format, rename the export extension to .zip, then upload the .zip below.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "Migrações de dados de receita", "recipe-data-migrations": "Migrações de dados de receita",
"recipe-data-migrations-explanation": "Podem ser migradas receitas de outra aplicação suportada para o Mealie. Esta é uma ótima maneira de começar com o Mealie.", "recipe-data-migrations-explanation": "Podem ser migradas receitas de outra aplicação suportada para o Mealie. Esta é uma ótima maneira de começar com o Mealie.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "Vem de outra aplicação ou de uma versão ainda mais antiga do Mealie? Consulte as migrações e veja se os seus dados podem ser importados.", "coming-from-another-application-or-an-even-older-version-of-mealie": "Vem de outra aplicação ou de uma versão ainda mais antiga do Mealie? Consulte as migrações e veja se os seus dados podem ser importados.",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Não quer voltar a ver isto? Não se esqueça de alterar o seu email nas suas definições de utilizador!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Não quer voltar a ver isto? Não se esqueça de alterar o seu email nas suas definições de utilizador!",
"forgot-password": "Esqueceu-se da palavra-passe", "forgot-password": "Esqueceu-se da palavra-passe",
"forgot-password-text": "Por favor, digite o seu endereço de email para enviarmos um link para redefinir a sua palavra-passe.", "forgot-password-text": "Por favor, digite o seu endereço de email para enviarmos um link para redefinir a sua palavra-passe.",
"changes-reflected-immediately": "As alterações a este utilizador serão aplicadas imediatamente." "changes-reflected-immediately": "As alterações a este utilizador serão aplicadas imediatamente.",
"default-activity": "Default Activity",
"default-activity-hint": "Select which page you'd like to navigate to upon logging in from this device"
}, },
"language-dialog": { "language-dialog": {
"translated": "traduzido", "translated": "traduzido",

View File

@@ -399,6 +399,10 @@
"description-long": "Mealie poate importa rețete din Tandoor. Exportă datele în formatul \"Implicit\", apoi încarcă fișierul de tip \".ZIP\" folosind câmpul de mai jos.", "description-long": "Mealie poate importa rețete din Tandoor. Exportă datele în formatul \"Implicit\", apoi încarcă fișierul de tip \".ZIP\" folosind câmpul de mai jos.",
"title": "Rețete Tandoor" "title": "Rețete Tandoor"
}, },
"cookn": {
"description-long": "Mealie can import recipes from DVO Cook'n X3. Export a cookbook or menu in the \"Cook'n\" format, rename the export extension to .zip, then upload the .zip below.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "Migrarea datelor rețetelor", "recipe-data-migrations": "Migrarea datelor rețetelor",
"recipe-data-migrations-explanation": "Rețetele pot fi migrate de la o altă aplicație ce este suportată de Mealie. Acesta este un mod excelent de a începe să folosiți Mealie.", "recipe-data-migrations-explanation": "Rețetele pot fi migrate de la o altă aplicație ce este suportată de Mealie. Acesta este un mod excelent de a începe să folosiți Mealie.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "Veniți dintr-o altă aplicație sau o versiune și mai veche a Mealie? Uitați-vă la migrări și vedeți dacă datele dvs. pot fi importate.", "coming-from-another-application-or-an-even-older-version-of-mealie": "Veniți dintr-o altă aplicație sau o versiune și mai veche a Mealie? Uitați-vă la migrări și vedeți dacă datele dvs. pot fi importate.",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Nu mai vrei să vezi acest lucru? Asigură-te că îți schimbi adresa de e-mail în setările de utilizator!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Nu mai vrei să vezi acest lucru? Asigură-te că îți schimbi adresa de e-mail în setările de utilizator!",
"forgot-password": "Recuperare parola", "forgot-password": "Recuperare parola",
"forgot-password-text": "Va rugam introduceti adresa de e-mail pentru a va trimite un link de resetare parola.", "forgot-password-text": "Va rugam introduceti adresa de e-mail pentru a va trimite un link de resetare parola.",
"changes-reflected-immediately": "Modificările aduse acestui utilizator vor fi reflectate imediat." "changes-reflected-immediately": "Modificările aduse acestui utilizator vor fi reflectate imediat.",
"default-activity": "Default Activity",
"default-activity-hint": "Select which page you'd like to navigate to upon logging in from this device"
}, },
"language-dialog": { "language-dialog": {
"translated": "tradus", "translated": "tradus",

View File

@@ -14,7 +14,7 @@
"development": "В разработке", "development": "В разработке",
"docs": "Справка", "docs": "Справка",
"download-log": "Скачать журнал", "download-log": "Скачать журнал",
"download-recipe-json": "Последний распаршенный JSON", "download-recipe-json": "Последний извлеченный JSON",
"github": "GitHub", "github": "GitHub",
"log-lines": "Строки журнала", "log-lines": "Строки журнала",
"not-demo": "Не демо", "not-demo": "Не демо",
@@ -51,7 +51,7 @@
"category": "Категория" "category": "Категория"
}, },
"events": { "events": {
"apprise-url": "Apprise URL", "apprise-url": "Apprise URL-адрес",
"database": "База данных", "database": "База данных",
"delete-event": "Удалить событие", "delete-event": "Удалить событие",
"event-delete-confirmation": "Вы уверены, что хотите удалить данное событие?", "event-delete-confirmation": "Вы уверены, что хотите удалить данное событие?",
@@ -399,6 +399,10 @@
"description-long": "Mealie может импортировать рецепты из Tandoor. Экспортируйте ваши данные в формате «По умолчанию», затем загрузите .zip ниже.", "description-long": "Mealie может импортировать рецепты из Tandoor. Экспортируйте ваши данные в формате «По умолчанию», затем загрузите .zip ниже.",
"title": "Рецепты Tandoor" "title": "Рецепты Tandoor"
}, },
"cookn": {
"description-long": "Mealie может импортировать рецепты из DVO Cook'n X3. Экспортируйте книгу рецептов или меню в формате \"Cook'n\", переименуйте расширение файла экспорта в .zip, затем загрузите .zip ниже.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "Перенос данных рецептов", "recipe-data-migrations": "Перенос данных рецептов",
"recipe-data-migrations-explanation": "Рецепты могут быть перенесены из другого поддерживаемого приложения в Mealie. Это отличный способ начать работу с Mealie.", "recipe-data-migrations-explanation": "Рецепты могут быть перенесены из другого поддерживаемого приложения в Mealie. Это отличный способ начать работу с Mealie.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "Переходите из другого приложения или с более поздней версии Mealie? Проверьте \"миграции\", чтобы убедиться, что ваши данные могут быть перенесены.", "coming-from-another-application-or-an-even-older-version-of-mealie": "Переходите из другого приложения или с более поздней версии Mealie? Проверьте \"миграции\", чтобы убедиться, что ваши данные могут быть перенесены.",
@@ -521,7 +525,7 @@
"save-recipe-before-use": "Сохранить рецепт перед использованием", "save-recipe-before-use": "Сохранить рецепт перед использованием",
"section-title": "Название раздела", "section-title": "Название раздела",
"servings": "Порций", "servings": "Порций",
"serves-amount": "Серверов {amount}", "serves-amount": "Порции {amount}",
"share-recipe-message": "Я хотел(а) поделиться с тобой моим рецептом {0}.", "share-recipe-message": "Я хотел(а) поделиться с тобой моим рецептом {0}.",
"show-nutrition-values": "Показать пищевую ценность", "show-nutrition-values": "Показать пищевую ценность",
"sodium-content": "Соль", "sodium-content": "Соль",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Больше не хотите видеть это сообщение? Не забудьте изменить адрес электронной почты в настройках пользователя!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Больше не хотите видеть это сообщение? Не забудьте изменить адрес электронной почты в настройках пользователя!",
"forgot-password": "Забыли Пароль", "forgot-password": "Забыли Пароль",
"forgot-password-text": "Введите адрес вашей почты, и мы отправим на неё ссылку для сброса пароля.", "forgot-password-text": "Введите адрес вашей почты, и мы отправим на неё ссылку для сброса пароля.",
"changes-reflected-immediately": "Изменения в этом пользователе будут отражены немедленно." "changes-reflected-immediately": "Изменения в этом пользователе будут отражены немедленно.",
"default-activity": "Действие по умолчанию",
"default-activity-hint": "Выберите, на какую страницу вы хотели бы перейти при входе в систему с этого устройства"
}, },
"language-dialog": { "language-dialog": {
"translated": "переведено", "translated": "переведено",

View File

@@ -399,6 +399,10 @@
"description-long": "Mealie dokáže importovať recepty z Tandoor. Exportujte recepty v prednastavenom formáte a zip-súbor nahrajte nižšie.", "description-long": "Mealie dokáže importovať recepty z Tandoor. Exportujte recepty v prednastavenom formáte a zip-súbor nahrajte nižšie.",
"title": "Tandoor recepty" "title": "Tandoor recepty"
}, },
"cookn": {
"description-long": "Mealie can import recipes from DVO Cook'n X3. Export a cookbook or menu in the \"Cook'n\" format, rename the export extension to .zip, then upload the .zip below.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "Migrácie dát receptov", "recipe-data-migrations": "Migrácie dát receptov",
"recipe-data-migrations-explanation": "Recepty je možné prenášať do Mealie z inej podporovanej aplikácie. Je to výborný spôsob ako začať s používaním Mealie.", "recipe-data-migrations-explanation": "Recepty je možné prenášať do Mealie z inej podporovanej aplikácie. Je to výborný spôsob ako začať s používaním Mealie.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "Prichádzate z inej aplikácie alebo dokonca staršej verzie Mealie? Pozrite si možnosti migrácie a zistite, či je možné importovať vaše pôvodné dáta.", "coming-from-another-application-or-an-even-older-version-of-mealie": "Prichádzate z inej aplikácie alebo dokonca staršej verzie Mealie? Pozrite si možnosti migrácie a zistite, či je možné importovať vaše pôvodné dáta.",
@@ -549,7 +553,7 @@
"failed-to-add-recipes-to-list": "Pridanie receptu do zoznamu zlyhalo", "failed-to-add-recipes-to-list": "Pridanie receptu do zoznamu zlyhalo",
"failed-to-add-recipe-to-mealplan": "Pridanie receptu do stravovacieho plánu zlyhalo", "failed-to-add-recipe-to-mealplan": "Pridanie receptu do stravovacieho plánu zlyhalo",
"failed-to-add-to-list": "Pridanie do zoznamu zlyhalo", "failed-to-add-to-list": "Pridanie do zoznamu zlyhalo",
"yield": "Počet porcií", "yield": "Množstvo",
"yields-amount-with-text": "Pre {amount} {text}", "yields-amount-with-text": "Pre {amount} {text}",
"yield-text": "Jednotka množstva", "yield-text": "Jednotka množstva",
"quantity": "Množstvo", "quantity": "Množstvo",
@@ -590,7 +594,7 @@
"api-extras-description": "API dolnky receptov sú kľúčovou funkcionalitou Mealie API. Umožňujú používateľom vytvárať vlastné JSON páry kľúč/hodnota v rámci receptu, a využiť v aplikáciách tretích strán. Údaje uložené pod jednotlivými kľúčmi je možné využiť napríklad ako spúšťač automatizovaných procesov, či pri zasielaní vlastných správ do vami zvolených zariadení.", "api-extras-description": "API dolnky receptov sú kľúčovou funkcionalitou Mealie API. Umožňujú používateľom vytvárať vlastné JSON páry kľúč/hodnota v rámci receptu, a využiť v aplikáciách tretích strán. Údaje uložené pod jednotlivými kľúčmi je možné využiť napríklad ako spúšťač automatizovaných procesov, či pri zasielaní vlastných správ do vami zvolených zariadení.",
"message-key": "Kľúč správy", "message-key": "Kľúč správy",
"parse": "Analyzovať", "parse": "Analyzovať",
"ingredients-not-parsed-description": "", "ingredients-not-parsed-description": "Zdá sa, že vaše suroviny neboli zatiaľ analyzované. Kliknite na tlačidlo \"{parse}\" nižšie, aby ste rozložili ingrediencie do štrukturovaných potravín.",
"attach-images-hint": "Pridaj obrázky ich potiahnutím a pustením na editor", "attach-images-hint": "Pridaj obrázky ich potiahnutím a pustením na editor",
"drop-image": "Odstrániť obrázok", "drop-image": "Odstrániť obrázok",
"enable-ingredient-amounts-to-use-this-feature": "Povoľ množstvám prísad využívať túto vlastnosť", "enable-ingredient-amounts-to-use-this-feature": "Povoľ množstvám prísad využívať túto vlastnosť",
@@ -624,7 +628,7 @@
"scrape-recipe-you-can-import-from-raw-data-directly": "Môžete importovať priamo nespracované údaje", "scrape-recipe-you-can-import-from-raw-data-directly": "Môžete importovať priamo nespracované údaje",
"import-original-keywords-as-tags": "Importovať pôvodné kľúčové slová ako štítky", "import-original-keywords-as-tags": "Importovať pôvodné kľúčové slová ako štítky",
"stay-in-edit-mode": "Zostať v režime editovania", "stay-in-edit-mode": "Zostať v režime editovania",
"parse-recipe-ingredients-after-import": "Parse recipe ingredients after import", "parse-recipe-ingredients-after-import": "Analyzovať ingrediencie po importe",
"import-from-zip": "Importovať zo Zip-súboru", "import-from-zip": "Importovať zo Zip-súboru",
"import-from-zip-description": "Importovať recept exportovaný z inej Mealie inštalácie.", "import-from-zip-description": "Importovať recept exportovaný z inej Mealie inštalácie.",
"import-from-html-or-json": "Importovať z HTML alebo JSONu", "import-from-html-or-json": "Importovať z HTML alebo JSONu",
@@ -671,12 +675,12 @@
"this-unit-could-not-be-parsed-automatically": "Túto jednotku nebolo možné parsovať automaticky", "this-unit-could-not-be-parsed-automatically": "Túto jednotku nebolo možné parsovať automaticky",
"this-food-could-not-be-parsed-automatically": "Toto jedlo nebolo možné parsovať automaticky", "this-food-could-not-be-parsed-automatically": "Toto jedlo nebolo možné parsovať automaticky",
"no-food": "Žiadne suroviny", "no-food": "Žiadne suroviny",
"review-parsed-ingredients": "Review parsed ingredients", "review-parsed-ingredients": "Skontrolovať analyzované ingrediencie",
"confidence-score": "Confidence Score", "confidence-score": "Skóre istoty",
"ingredient-parser-description": "Your ingredients have been successfully parsed. Please review the ingredients we're not sure about.", "ingredient-parser-description": "Vaše ingrediencie boli úspešne zanalyzované. Prosím prekontrolujte ingrediencie pri ktorých nemáme istotu.",
"ingredient-parser-final-review-description": "Once all ingredients have been reviewed, you'll have one more chance to review all ingredients before applying the changes to your recipe.", "ingredient-parser-final-review-description": "Keď skontrolujete všetky ingrediencie, budete mať ešte jednu možnosť skontrolovať ich pred tým než uložíte zmeny vo svojom recepte.",
"add-text-as-alias-for-item": "Add \"{text}\" as alias for {item}", "add-text-as-alias-for-item": "Pridať \"{text}\" ako alias pre {item}",
"delete-item": "Delete Item" "delete-item": "Zmazať položku"
}, },
"reset-servings-count": "Resetovať počet porcií", "reset-servings-count": "Resetovať počet porcií",
"not-linked-ingredients": "Ďalšie suroviny", "not-linked-ingredients": "Ďalšie suroviny",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Želáte si, aby sa vám toto už viackrát nezobrazovalo? Zmeňte si prosím váš e-mail v nastaveniach používateľa!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Želáte si, aby sa vám toto už viackrát nezobrazovalo? Zmeňte si prosím váš e-mail v nastaveniach používateľa!",
"forgot-password": "Zabudnuté heslo", "forgot-password": "Zabudnuté heslo",
"forgot-password-text": "Prosím zadajte svoju e-mailovú adresu a my vám zašleme odkaz, ktorý vám umožní heslo obnoviť.", "forgot-password-text": "Prosím zadajte svoju e-mailovú adresu a my vám zašleme odkaz, ktorý vám umožní heslo obnoviť.",
"changes-reflected-immediately": "Zmeny týkajúce sa tohto používateľa budú vykonané okamžite." "changes-reflected-immediately": "Zmeny týkajúce sa tohto používateľa budú vykonané okamžite.",
"default-activity": "Default Activity",
"default-activity-hint": "Select which page you'd like to navigate to upon logging in from this device"
}, },
"language-dialog": { "language-dialog": {
"translated": "preložené", "translated": "preložené",
@@ -1072,7 +1078,7 @@
"foods": { "foods": {
"merge-dialog-text": "Kombináciou vybraných potravín sa zdrojové jedlo a cieľové jedlo zlúčia do jedného jedla. Zdrojové jedlo bude vymazané a všetky odkazy na zdrojové jedlo budú aktualizované tak, aby ukazovali na cieľové jedlo.", "merge-dialog-text": "Kombináciou vybraných potravín sa zdrojové jedlo a cieľové jedlo zlúčia do jedného jedla. Zdrojové jedlo bude vymazané a všetky odkazy na zdrojové jedlo budú aktualizované tak, aby ukazovali na cieľové jedlo.",
"merge-food-example": "Zlučujem {food1} do {food2}", "merge-food-example": "Zlučujem {food1} do {food2}",
"seed-dialog-text": "Naplňte databázu potravinami vo vašom jazyku. Tým vytvoríte viac ako 200 bežných potravín, ktoré môžete použiť na organizovanie vašej databáze. Potraviny sú preložené vďaka úsiliu komunity.", "seed-dialog-text": "Naplňte databázu potravinami vo vašom jazyku. Tým vytvoríte viac ako 2700 bežných potravín, ktoré môžete použiť na organizovanie vašej databáze. Potraviny sú preložené vďaka úsiliu komunity.",
"seed-dialog-warning": "V databáze už máte nejaké údaje. Táto akcia neodstráni duplicitné položky, budete ich musieť odstrániť ručne.", "seed-dialog-warning": "V databáze už máte nejaké údaje. Táto akcia neodstráni duplicitné položky, budete ich musieť odstrániť ručne.",
"combine-food": "Kombinované jedlo", "combine-food": "Kombinované jedlo",
"source-food": "Zdrojové jedlo", "source-food": "Zdrojové jedlo",
@@ -1177,7 +1183,7 @@
"group-details": "Podrobnosti o skupine", "group-details": "Podrobnosti o skupine",
"group-details-description": "Pred vytvorením účtu musíte vytvoriť skupinu. Vaša skupina bude obsahovať iba vás, ale neskôr budete môcť pozvať ostatných. Členovia vašej skupiny môžu zdieľať stravovacie plány, nákupné zoznamy, recepty a ďalšie!", "group-details-description": "Pred vytvorením účtu musíte vytvoriť skupinu. Vaša skupina bude obsahovať iba vás, ale neskôr budete môcť pozvať ostatných. Členovia vašej skupiny môžu zdieľať stravovacie plány, nákupné zoznamy, recepty a ďalšie!",
"use-seed-data": "Použiť predvolené dáta", "use-seed-data": "Použiť predvolené dáta",
"use-seed-data-description": "Mealie sa dodáva so zbierkou ingrediencií, jednotiek a označení. Môžete ich použiť vo vašej skupine pre lepšiu organizáciu vašich receptov. Tieto sú preložené do jazyka, ktorý ste si práve zvolili. Tieto dáta môžete kedykoľvek doplniť alebo zmeniť.", "use-seed-data-description": "Mealie sa dodáva so zbierkou potravín, jednotiek a označení, ktorými môžete naplniť vašu skupinu užitočnými dátami pre lepšiu organizáciu vašich receptov. Tieto sú preložené do jazyka, ktorý ste si práve zvolili. Tieto dáta môžete kedykoľvek doplniť alebo zmeniť.",
"account-details": "Detaily účtu" "account-details": "Detaily účtu"
}, },
"validation": { "validation": {
@@ -1347,7 +1353,7 @@
"notifiers": "Notifikátory", "notifiers": "Notifikátory",
"notifiers-description": "Nastaviť e-mail a push notifikácie, ktoré sa spúšťajú pri špecifických udalostiach.", "notifiers-description": "Nastaviť e-mail a push notifikácie, ktoré sa spúšťajú pri špecifických udalostiach.",
"manage-data": "Spravovať dáta", "manage-data": "Spravovať dáta",
"manage-data-description": "Spravujte svoje údaje, jedlá, jednotky, kategórie, štítky a ďalšie.", "manage-data-description": "Spravujte svoje údaje, potraviny, jednotky, kategórie, štítky a ďalšie.",
"data-migrations": "Migrácie dát", "data-migrations": "Migrácie dát",
"data-migrations-description": "Migrujte svoje existujúce údaje z iných aplikácií, ako sú Nextcloud Recipes a Chowdown.", "data-migrations-description": "Migrujte svoje existujúce údaje z iných aplikácií, ako sú Nextcloud Recipes a Chowdown.",
"email-sent": "E-mail Odoslaný", "email-sent": "E-mail Odoslaný",

View File

@@ -399,6 +399,10 @@
"description-long": "Mealie lahko uvozi recepte iz aplikacije Tandoor. Izvozi podatke v \"Default\" formatu, nato spodaj naloži .zip datoteko.", "description-long": "Mealie lahko uvozi recepte iz aplikacije Tandoor. Izvozi podatke v \"Default\" formatu, nato spodaj naloži .zip datoteko.",
"title": "Tandoor recepti" "title": "Tandoor recepti"
}, },
"cookn": {
"description-long": "Mealie lahko uvozi recepte iz DVO Cook'n X3. Izvozite kuharsko knjigo ali jedilnik v formatu »Cook'n«, preimenujte izvozno končnico v .zip in nato naložite spodnjo datoteko .zip.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "Migracije receptov", "recipe-data-migrations": "Migracije receptov",
"recipe-data-migrations-explanation": "Recepte lahko migriraš iz drugih podprtih aplikacij v Mealie. To je super način za čim hitrejši začetek z Mealie.", "recipe-data-migrations-explanation": "Recepte lahko migriraš iz drugih podprtih aplikacij v Mealie. To je super način za čim hitrejši začetek z Mealie.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "Prihajaš iz druge aplijacije ali celo starejše verzije Mealie aplikacije? Poglej podprte migracije in preveri, če lahko uvoziš svoje podatke.", "coming-from-another-application-or-an-even-older-version-of-mealie": "Prihajaš iz druge aplijacije ali celo starejše verzije Mealie aplikacije? Poglej podprte migracije in preveri, če lahko uvoziš svoje podatke.",
@@ -624,7 +628,7 @@
"scrape-recipe-you-can-import-from-raw-data-directly": "Uvoziš lahko neposredno iz surovih podatkov", "scrape-recipe-you-can-import-from-raw-data-directly": "Uvoziš lahko neposredno iz surovih podatkov",
"import-original-keywords-as-tags": "Uvozi izvorne ključne besede kot značke", "import-original-keywords-as-tags": "Uvozi izvorne ključne besede kot značke",
"stay-in-edit-mode": "Urejaj naprej", "stay-in-edit-mode": "Urejaj naprej",
"parse-recipe-ingredients-after-import": "Parse recipe ingredients after import", "parse-recipe-ingredients-after-import": "Razčlenitev sestavin recepta po uvozu",
"import-from-zip": "Uvozi z Zip", "import-from-zip": "Uvozi z Zip",
"import-from-zip-description": "Uvozi posamezen recept, ki je bil izvožen iz druge instance Mealie aplikacije.", "import-from-zip-description": "Uvozi posamezen recept, ki je bil izvožen iz druge instance Mealie aplikacije.",
"import-from-html-or-json": "Uvozi iz HTML ali JSON", "import-from-html-or-json": "Uvozi iz HTML ali JSON",
@@ -671,12 +675,12 @@
"this-unit-could-not-be-parsed-automatically": "Te enote ni bilo mogoče samodejno razčleniti", "this-unit-could-not-be-parsed-automatically": "Te enote ni bilo mogoče samodejno razčleniti",
"this-food-could-not-be-parsed-automatically": "Te hrane ni bilo mogoče samodejno razčleniti", "this-food-could-not-be-parsed-automatically": "Te hrane ni bilo mogoče samodejno razčleniti",
"no-food": "Ni živila", "no-food": "Ni živila",
"review-parsed-ingredients": "Review parsed ingredients", "review-parsed-ingredients": "Pregled razčlenjenih sestavin",
"confidence-score": "Confidence Score", "confidence-score": "Stopnja zaupanja",
"ingredient-parser-description": "Your ingredients have been successfully parsed. Please review the ingredients we're not sure about.", "ingredient-parser-description": "Vaše sestavine so bile uspešno razčlenjene. Prosimo, preglejte sestavine, glede katerih nismo prepričani.",
"ingredient-parser-final-review-description": "Once all ingredients have been reviewed, you'll have one more chance to review all ingredients before applying the changes to your recipe.", "ingredient-parser-final-review-description": "Ko bodo vse sestavine pregledane, boste imeli še eno priložnost, da jih pregledate, preden spremembe uveljavite v svojem receptu.",
"add-text-as-alias-for-item": "Add \"{text}\" as alias for {item}", "add-text-as-alias-for-item": "Dodaj \"{text}\" kot vzdevek za {item}",
"delete-item": "Delete Item" "delete-item": "Izbriši element"
}, },
"reset-servings-count": "Ponastavi števec obrokov", "reset-servings-count": "Ponastavi števec obrokov",
"not-linked-ingredients": "Dodatne sestavine", "not-linked-ingredients": "Dodatne sestavine",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Ne želiš več videti tega sporočila? Spremeni svoj email v uporabiških nastavitvah!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Ne želiš več videti tega sporočila? Spremeni svoj email v uporabiških nastavitvah!",
"forgot-password": "Ste pozabili geslo", "forgot-password": "Ste pozabili geslo",
"forgot-password-text": "Vnesi svoj email naslov, poslali ti bomo povezavo za ponastavitev gesla.", "forgot-password-text": "Vnesi svoj email naslov, poslali ti bomo povezavo za ponastavitev gesla.",
"changes-reflected-immediately": "Spremembe na tem uporabniku se poznajo takoj." "changes-reflected-immediately": "Spremembe na tem uporabniku se poznajo takoj.",
"default-activity": "Privzeta dejavnost",
"default-activity-hint": "Izberite, na katero stran želite priti ob prijavi iz te naprave"
}, },
"language-dialog": { "language-dialog": {
"translated": "prevedeno", "translated": "prevedeno",

View File

@@ -399,6 +399,10 @@
"description-long": "Mealie can import recipes from Tandoor. Export your data in the \"Default\" format, then upload the .zip below.", "description-long": "Mealie can import recipes from Tandoor. Export your data in the \"Default\" format, then upload the .zip below.",
"title": "Tandoor Recipes" "title": "Tandoor Recipes"
}, },
"cookn": {
"description-long": "Mealie can import recipes from DVO Cook'n X3. Export a cookbook or menu in the \"Cook'n\" format, rename the export extension to .zip, then upload the .zip below.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "Recipe Data Migrations", "recipe-data-migrations": "Recipe Data Migrations",
"recipe-data-migrations-explanation": "Recipes can be migrated from another supported application to Mealie. This is a great way to get started with Mealie.", "recipe-data-migrations-explanation": "Recipes can be migrated from another supported application to Mealie. This is a great way to get started with Mealie.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "Coming from another application or an even older version of Mealie? Check out migrations and see if your data can be imported.", "coming-from-another-application-or-an-even-older-version-of-mealie": "Coming from another application or an even older version of Mealie? Check out migrations and see if your data can be imported.",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Don't want to see this anymore? Be sure to change your email in your user settings!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Don't want to see this anymore? Be sure to change your email in your user settings!",
"forgot-password": "Forgot Password", "forgot-password": "Forgot Password",
"forgot-password-text": "Please enter your email address and we will send you a link to reset your password.", "forgot-password-text": "Please enter your email address and we will send you a link to reset your password.",
"changes-reflected-immediately": "Changes to this user will be reflected immediately." "changes-reflected-immediately": "Changes to this user will be reflected immediately.",
"default-activity": "Default Activity",
"default-activity-hint": "Select which page you'd like to navigate to upon logging in from this device"
}, },
"language-dialog": { "language-dialog": {
"translated": "translated", "translated": "translated",

View File

@@ -69,7 +69,7 @@
"new-notification": "Ny avisering", "new-notification": "Ny avisering",
"event-notifiers": "Händelseavisering", "event-notifiers": "Händelseavisering",
"apprise-url-skipped-if-blank": "Apprise-URL (hoppa över om tom)", "apprise-url-skipped-if-blank": "Apprise-URL (hoppa över om tom)",
"apprise-url-is-left-intentionally-blank": "Since Apprise URLs typically contain sensitive information, this field is left intentionally blank while editing. If you wish to update the URL, please enter the new one here, otherwise leave it blank to keep the current URL.", "apprise-url-is-left-intentionally-blank": "Eftersom Apprise URL:er vanligtvis innehåller känslig information lämnas detta fält medvetet tomt vid redigering. Om du vill uppdatera webbadressen, ange det nya här, annars lämna det tomt för att behålla den aktuella webbadressen.",
"enable-notifier": "Aktivera avisering", "enable-notifier": "Aktivera avisering",
"what-events": "Vilka händelser ska denna avisering prenumerera på?", "what-events": "Vilka händelser ska denna avisering prenumerera på?",
"user-events": "Användarhändelser", "user-events": "Användarhändelser",
@@ -81,7 +81,7 @@
"category-events": "Kategorihändelser", "category-events": "Kategorihändelser",
"when-a-new-user-joins-your-group": "När en ny användare går med i din grupp", "when-a-new-user-joins-your-group": "När en ny användare går med i din grupp",
"recipe-events": "Recepthändelser", "recipe-events": "Recepthändelser",
"label-events": "Label Events" "label-events": "Etiketthändelser"
}, },
"general": { "general": {
"add": "Lägg till", "add": "Lägg till",
@@ -399,6 +399,10 @@
"description-long": "Mealie kan importera recept från Tandoor. Exportera dina data i \"Standard\"-format, ladda sedan upp .zip nedan.", "description-long": "Mealie kan importera recept från Tandoor. Exportera dina data i \"Standard\"-format, ladda sedan upp .zip nedan.",
"title": "Tandoor-recept" "title": "Tandoor-recept"
}, },
"cookn": {
"description-long": "Mealie kan importera recept från DVO Cook'n X3. Exportera en kokbok eller meny i \"Cook'n\" format, byt namn på exporttillägget till .zip, sedan ladda upp .zip nedan.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "Migrering av receptdata", "recipe-data-migrations": "Migrering av receptdata",
"recipe-data-migrations-explanation": "Recept kan migreras från en annan applikation som stöds till Mealie. Detta är ett bra sätt att komma igång med Mealie.", "recipe-data-migrations-explanation": "Recept kan migreras från en annan applikation som stöds till Mealie. Detta är ett bra sätt att komma igång med Mealie.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "Kommer från en annan app, program eller tidigare version av Mealie? Kika på migrationer och se om din data kan bli importerad.", "coming-from-another-application-or-an-even-older-version-of-mealie": "Kommer från en annan app, program eller tidigare version av Mealie? Kika på migrationer och se om din data kan bli importerad.",
@@ -561,7 +565,7 @@
"see-original-text": "Visa originaltext", "see-original-text": "Visa originaltext",
"original-text-with-value": "Originaltext: {originalText}", "original-text-with-value": "Originaltext: {originalText}",
"ingredient-linker": "Länka ingredienser", "ingredient-linker": "Länka ingredienser",
"unlinked": "Not linked yet", "unlinked": "Ännu inte länkad",
"linked-to-other-step": "Kopplat till annat steg", "linked-to-other-step": "Kopplat till annat steg",
"auto": "Auto", "auto": "Auto",
"cook-mode": "Matlagningsläge", "cook-mode": "Matlagningsläge",
@@ -624,7 +628,7 @@
"scrape-recipe-you-can-import-from-raw-data-directly": "Du kan importera från rådata direkt", "scrape-recipe-you-can-import-from-raw-data-directly": "Du kan importera från rådata direkt",
"import-original-keywords-as-tags": "Importera ursprungliga sökord som taggar", "import-original-keywords-as-tags": "Importera ursprungliga sökord som taggar",
"stay-in-edit-mode": "Stanna kvar i redigeringsläge", "stay-in-edit-mode": "Stanna kvar i redigeringsläge",
"parse-recipe-ingredients-after-import": "Parse recipe ingredients after import", "parse-recipe-ingredients-after-import": "Tolka receptingredienser efter import",
"import-from-zip": "Importera från zip", "import-from-zip": "Importera från zip",
"import-from-zip-description": "Importera ett enstaka recept som exporterades från en annan Mealie-instans.", "import-from-zip-description": "Importera ett enstaka recept som exporterades från en annan Mealie-instans.",
"import-from-html-or-json": "Importera från HTML eller JSON", "import-from-html-or-json": "Importera från HTML eller JSON",
@@ -671,12 +675,12 @@
"this-unit-could-not-be-parsed-automatically": "Enheten kunde inte översättas automatiskt", "this-unit-could-not-be-parsed-automatically": "Enheten kunde inte översättas automatiskt",
"this-food-could-not-be-parsed-automatically": "Maten kunde inte översättas automatiskt", "this-food-could-not-be-parsed-automatically": "Maten kunde inte översättas automatiskt",
"no-food": "Ingen mat", "no-food": "Ingen mat",
"review-parsed-ingredients": "Review parsed ingredients", "review-parsed-ingredients": "Granska tolkade ingredienser",
"confidence-score": "Confidence Score", "confidence-score": "Konfidenspoäng",
"ingredient-parser-description": "Your ingredients have been successfully parsed. Please review the ingredients we're not sure about.", "ingredient-parser-description": "Dina ingredienser har blivit tolkade. Se över ingredienserna vi inte är säkra på.",
"ingredient-parser-final-review-description": "Once all ingredients have been reviewed, you'll have one more chance to review all ingredients before applying the changes to your recipe.", "ingredient-parser-final-review-description": "När alla ingredienser har granskats har du ytterligare en chans att granska alla ingredienser innan du tillämpar ändringarna i ditt recept.",
"add-text-as-alias-for-item": "Add \"{text}\" as alias for {item}", "add-text-as-alias-for-item": "Lägg till \"{text}\" som alias för {item}",
"delete-item": "Delete Item" "delete-item": "Radera objekt"
}, },
"reset-servings-count": "Nollställ antal portioner", "reset-servings-count": "Nollställ antal portioner",
"not-linked-ingredients": "Ytterligare ingredienser", "not-linked-ingredients": "Ytterligare ingredienser",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Vill du inte se detta längre? Se till att ändra din e-post i dina användarinställningar!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Vill du inte se detta längre? Se till att ändra din e-post i dina användarinställningar!",
"forgot-password": "Glömt lösenord", "forgot-password": "Glömt lösenord",
"forgot-password-text": "Ange din e-postadress så skickar vi dig en länk för att återställa ditt lösenord.", "forgot-password-text": "Ange din e-postadress så skickar vi dig en länk för att återställa ditt lösenord.",
"changes-reflected-immediately": "Ändringar av denna användare kommer att ske omedelbart." "changes-reflected-immediately": "Ändringar av denna användare kommer att ske omedelbart.",
"default-activity": "Default Activity",
"default-activity-hint": "Select which page you'd like to navigate to upon logging in from this device"
}, },
"language-dialog": { "language-dialog": {
"translated": "översatt", "translated": "översatt",
@@ -1177,7 +1183,7 @@
"group-details": "Gruppuppgifter", "group-details": "Gruppuppgifter",
"group-details-description": "Innan du skapar ett konto måste du skapa en grupp. Din grupp kommer bara att innehålla dig, men du kommer att kunna bjuda in andra senare. Medlemmarna i din grupp kan dela måltidsplaner, inköpslistor, recept och mycket mer!", "group-details-description": "Innan du skapar ett konto måste du skapa en grupp. Din grupp kommer bara att innehålla dig, men du kommer att kunna bjuda in andra senare. Medlemmarna i din grupp kan dela måltidsplaner, inköpslistor, recept och mycket mer!",
"use-seed-data": "Använd exempeldata", "use-seed-data": "Använd exempeldata",
"use-seed-data-description": "Mealie ships with a collection of Foods, Units, and Labels that can be used to populate your group with helpful data for organizing your recipes. These are translated into the language you currently have selected. You can always add to or modify this data later.", "use-seed-data-description": "Mealie kommer med en samling av ingridienser, enheter och etiketter som kan användas för att fylla din grupp med användbara data för att organisera dina recept. Dessa översätts till det språk du just nu har valt. Du kan alltid lägga till eller ändra dessa data senare.",
"account-details": "Kontouppgifter" "account-details": "Kontouppgifter"
}, },
"validation": { "validation": {

View File

@@ -399,6 +399,10 @@
"description-long": "Mealie, Tandoor'dan tarifleri içe aktarabilir. Verilerinizi \"Varsayılan\" biçimde dışa aktarın, ardından aşağıdaki .zip dosyasını yükleyin.", "description-long": "Mealie, Tandoor'dan tarifleri içe aktarabilir. Verilerinizi \"Varsayılan\" biçimde dışa aktarın, ardından aşağıdaki .zip dosyasını yükleyin.",
"title": "Tandoor Tarifleri" "title": "Tandoor Tarifleri"
}, },
"cookn": {
"description-long": "Mealie can import recipes from DVO Cook'n X3. Export a cookbook or menu in the \"Cook'n\" format, rename the export extension to .zip, then upload the .zip below.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "Tarif Verilerini Taşı", "recipe-data-migrations": "Tarif Verilerini Taşı",
"recipe-data-migrations-explanation": "Tarifler desteklenen başka bir uygulamadan Mealie'ye taşınabilir. Bu Mealie kullanmaya başlamak için mükemmel bir yöntemdir.", "recipe-data-migrations-explanation": "Tarifler desteklenen başka bir uygulamadan Mealie'ye taşınabilir. Bu Mealie kullanmaya başlamak için mükemmel bir yöntemdir.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "Başka bir uygulamadan mı yoksa Mealie'nin daha eski bir sürümünden mi geliyorsunuz? Taşıma işlemlerine göz atın ve verilerinizin içe aktarılıp aktarılamayacağını görün.", "coming-from-another-application-or-an-even-older-version-of-mealie": "Başka bir uygulamadan mı yoksa Mealie'nin daha eski bir sürümünden mi geliyorsunuz? Taşıma işlemlerine göz atın ve verilerinizin içe aktarılıp aktarılamayacağını görün.",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Artık bunu görmek istemiyor musunuz? Kullanıcı ayarlarınızda e-postanızı değiştirmeyi unutmayın!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Artık bunu görmek istemiyor musunuz? Kullanıcı ayarlarınızda e-postanızı değiştirmeyi unutmayın!",
"forgot-password": "Şifreni mi Unuttun?", "forgot-password": "Şifreni mi Unuttun?",
"forgot-password-text": "Lütfen e-posta adresinizi girin, size şifrenizi sıfırlamanız için bir bağlantı göndereceğiz.", "forgot-password-text": "Lütfen e-posta adresinizi girin, size şifrenizi sıfırlamanız için bir bağlantı göndereceğiz.",
"changes-reflected-immediately": "Bu kullanıcıda yapılan değişiklikler hemen yansıtılacaktır." "changes-reflected-immediately": "Bu kullanıcıda yapılan değişiklikler hemen yansıtılacaktır.",
"default-activity": "Default Activity",
"default-activity-hint": "Select which page you'd like to navigate to upon logging in from this device"
}, },
"language-dialog": { "language-dialog": {
"translated": "çevirilmiş", "translated": "çevirilmiş",

View File

@@ -399,6 +399,10 @@
"description-long": "Mealie може імпортувати рецепти з Tandoor. Експортуйте свої дані в формат \"Default\", а потім завантажте .zip нижче.", "description-long": "Mealie може імпортувати рецепти з Tandoor. Експортуйте свої дані в формат \"Default\", а потім завантажте .zip нижче.",
"title": "Tandoor Recipes" "title": "Tandoor Recipes"
}, },
"cookn": {
"description-long": "Mealie може імпортувати рецепти з DVO Cook'n X3. Експортуйте кулінарну книгу або меню у форматі «Cook'n», перейменуйте розширення експорту на .zip, а потім завантажте файл .zip нижче.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "Міграція рецептів", "recipe-data-migrations": "Міграція рецептів",
"recipe-data-migrations-explanation": "Рецепти можна мігрувати з іншого застосунку до Mealie. Це чудовий спосіб розпочати роботу з Mealie.", "recipe-data-migrations-explanation": "Рецепти можна мігрувати з іншого застосунку до Mealie. Це чудовий спосіб розпочати роботу з Mealie.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "Використовуєте іншу програму або іще старішу версію Mealie? Перевірте документацію з міграції та подивіться, чи можуть Ваші дані бути імпортовані.", "coming-from-another-application-or-an-even-older-version-of-mealie": "Використовуєте іншу програму або іще старішу версію Mealie? Перевірте документацію з міграції та подивіться, чи можуть Ваші дані бути імпортовані.",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Більше не хочете це бачити? Обов'язково змініть адресу електронної пошти в налаштуваннях користувача!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Більше не хочете це бачити? Обов'язково змініть адресу електронної пошти в налаштуваннях користувача!",
"forgot-password": "Нагадати пароль", "forgot-password": "Нагадати пароль",
"forgot-password-text": "Будь ласка, введіть адресу вашої електронної пошти й вам надійде повідомлення, щоб відновити пароль.", "forgot-password-text": "Будь ласка, введіть адресу вашої електронної пошти й вам надійде повідомлення, щоб відновити пароль.",
"changes-reflected-immediately": "Зміни для цього користувача будуть негайно відображені." "changes-reflected-immediately": "Зміни для цього користувача будуть негайно відображені.",
"default-activity": "Дія за замовчуванням",
"default-activity-hint": "Виберіть, на яку сторінку ви хочете перейти після входу з цього пристрою"
}, },
"language-dialog": { "language-dialog": {
"translated": "перекладено", "translated": "перекладено",

View File

@@ -399,6 +399,10 @@
"description-long": "Mealie can import recipes from Tandoor. Export your data in the \"Default\" format, then upload the .zip below.", "description-long": "Mealie can import recipes from Tandoor. Export your data in the \"Default\" format, then upload the .zip below.",
"title": "Tandoor Recipes" "title": "Tandoor Recipes"
}, },
"cookn": {
"description-long": "Mealie can import recipes from DVO Cook'n X3. Export a cookbook or menu in the \"Cook'n\" format, rename the export extension to .zip, then upload the .zip below.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "Recipe Data Migrations", "recipe-data-migrations": "Recipe Data Migrations",
"recipe-data-migrations-explanation": "Recipes can be migrated from another supported application to Mealie. This is a great way to get started with Mealie.", "recipe-data-migrations-explanation": "Recipes can be migrated from another supported application to Mealie. This is a great way to get started with Mealie.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "Coming from another application or an even older version of Mealie? Check out migrations and see if your data can be imported.", "coming-from-another-application-or-an-even-older-version-of-mealie": "Coming from another application or an even older version of Mealie? Check out migrations and see if your data can be imported.",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Don't want to see this anymore? Be sure to change your email in your user settings!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Don't want to see this anymore? Be sure to change your email in your user settings!",
"forgot-password": "Forgot Password", "forgot-password": "Forgot Password",
"forgot-password-text": "Please enter your email address and we will send you a link to reset your password.", "forgot-password-text": "Please enter your email address and we will send you a link to reset your password.",
"changes-reflected-immediately": "Changes to this user will be reflected immediately." "changes-reflected-immediately": "Changes to this user will be reflected immediately.",
"default-activity": "Default Activity",
"default-activity-hint": "Select which page you'd like to navigate to upon logging in from this device"
}, },
"language-dialog": { "language-dialog": {
"translated": "translated", "translated": "translated",

View File

@@ -399,6 +399,10 @@
"description-long": "Mealie支持从Tandoor中导入食谱。在Tandoor中以“默认”格式导出数据并在下方上传zip文件。", "description-long": "Mealie支持从Tandoor中导入食谱。在Tandoor中以“默认”格式导出数据并在下方上传zip文件。",
"title": "Tandoor食谱" "title": "Tandoor食谱"
}, },
"cookn": {
"description-long": "Mealie can import recipes from DVO Cook'n X3. Export a cookbook or menu in the \"Cook'n\" format, rename the export extension to .zip, then upload the .zip below.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "食谱数据迁移", "recipe-data-migrations": "食谱数据迁移",
"recipe-data-migrations-explanation": "你可以从受支持的应用中将食谱迁移至Mealie这是上手Mealie的好方法。", "recipe-data-migrations-explanation": "你可以从受支持的应用中将食谱迁移至Mealie这是上手Mealie的好方法。",
"coming-from-another-application-or-an-even-older-version-of-mealie": "之前使用其他食谱应用或是旧版本Mealie吗检查迁移设置来确认你的原有数据是否可以导入。", "coming-from-another-application-or-an-even-older-version-of-mealie": "之前使用其他食谱应用或是旧版本Mealie吗检查迁移设置来确认你的原有数据是否可以导入。",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "不想再看到这条消息了吗?请务必在用户设置中更改你的邮箱!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "不想再看到这条消息了吗?请务必在用户设置中更改你的邮箱!",
"forgot-password": "忘记密码", "forgot-password": "忘记密码",
"forgot-password-text": "请输入你的邮箱地址,我们会发给你重置密码的链接。", "forgot-password-text": "请输入你的邮箱地址,我们会发给你重置密码的链接。",
"changes-reflected-immediately": "对用户的更改将立即生效。" "changes-reflected-immediately": "对用户的更改将立即生效。",
"default-activity": "Default Activity",
"default-activity-hint": "Select which page you'd like to navigate to upon logging in from this device"
}, },
"language-dialog": { "language-dialog": {
"translated": "已翻译", "translated": "已翻译",

View File

@@ -399,6 +399,10 @@
"description-long": "Mealie can import recipes from Tandoor. Export your data in the \"Default\" format, then upload the .zip below.", "description-long": "Mealie can import recipes from Tandoor. Export your data in the \"Default\" format, then upload the .zip below.",
"title": "Tandoor Recipes" "title": "Tandoor Recipes"
}, },
"cookn": {
"description-long": "Mealie can import recipes from DVO Cook'n X3. Export a cookbook or menu in the \"Cook'n\" format, rename the export extension to .zip, then upload the .zip below.",
"title": "DVO Cook'n X3"
},
"recipe-data-migrations": "Recipe Data Migrations", "recipe-data-migrations": "Recipe Data Migrations",
"recipe-data-migrations-explanation": "Recipes can be migrated from another supported application to Mealie. This is a great way to get started with Mealie.", "recipe-data-migrations-explanation": "Recipes can be migrated from another supported application to Mealie. This is a great way to get started with Mealie.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "Coming from another application or an even older version of Mealie? Check out migrations and see if your data can be imported.", "coming-from-another-application-or-an-even-older-version-of-mealie": "Coming from another application or an even older version of Mealie? Check out migrations and see if your data can be imported.",
@@ -1059,7 +1063,9 @@
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Don't want to see this anymore? Be sure to change your email in your user settings!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Don't want to see this anymore? Be sure to change your email in your user settings!",
"forgot-password": "Forgot Password", "forgot-password": "Forgot Password",
"forgot-password-text": "Please enter your email address and we will send you a link to reset your password.", "forgot-password-text": "Please enter your email address and we will send you a link to reset your password.",
"changes-reflected-immediately": "Changes to this user will be reflected immediately." "changes-reflected-immediately": "Changes to this user will be reflected immediately.",
"default-activity": "Default Activity",
"default-activity-hint": "Select which page you'd like to navigate to upon logging in from this device"
}, },
"language-dialog": { "language-dialog": {
"translated": "translated", "translated": "translated",

View File

@@ -0,0 +1,18 @@
export type I18n = ReturnType<typeof useI18n>;
export type TRoute = string;
export type TranslationResult = string;
export type ActivityRoute = (groupSlug?: string) => TRoute;
export type ActivityLabel = (i18n: I18n) => TranslationResult;
export type Activity = {
key: ActivityKey;
route: ActivityRoute;
label: ActivityLabel;
};
export const enum ActivityKey {
RECIPES = "recipes",
MEALPLANNER = "mealplanner",
SHOPPING_LIST = "shopping_list",
}

View File

@@ -14,7 +14,8 @@ export type SupportedMigrations =
| "tandoor" | "tandoor"
| "plantoeat" | "plantoeat"
| "myrecipebox" | "myrecipebox"
| "recipekeeper"; | "recipekeeper"
| "cookn";
export interface CreateGroupPreferences { export interface CreateGroupPreferences {
privateGroup?: boolean; privateGroup?: boolean;

View File

@@ -1,159 +1,159 @@
import { import {
mdiAccount, mdiAccount,
mdiSilverwareVariant,
mdiPlus,
mdiPlusCircle,
mdiDelete,
mdiContentSave,
mdiContentSaveEdit,
mdiSquareEditOutline,
mdiClose,
mdiTagArrowUpOutline,
mdiTagArrowRight,
mdiTagMultipleOutline,
mdiShapeOutline,
mdiBookOutline,
mdiAccountCog, mdiAccountCog,
mdiAccountGroup, mdiAccountGroup,
mdiSlotMachine, mdiAccountPlusOutline,
mdiHome, mdiAlert,
mdiHomeAccount,
mdiMagnify,
mdiPotSteamOutline,
mdiTranslate,
mdiClockTimeFourOutline,
mdiImport,
mdiEmail,
mdiLock,
mdiEye,
mdiDrag,
mdiEyeOff,
mdiCalendarMinus,
mdiAlertOutline,
mdiCalendar,
mdiDiceMultiple,
mdiAlertCircle, mdiAlertCircle,
mdiDotsVertical, mdiAlertOutline,
mdiPrinter, mdiApi,
mdiPrinterPosCog, mdiArrowLeftBold,
mdiShareVariant, mdiArrowLeftBoldOutline,
mdiChevronDown, mdiArrowRightBold,
mdiHeart, mdiArrowRightBoldOutline,
mdiHeartOutline, mdiBackupRestore,
mdiDotsHorizontal, mdiBeakerOutline,
mdiBellAlert,
mdiBellPlus,
mdiBookOpenPageVariant,
mdiBookOutline,
mdiBowlMixOutline,
mdiBroom,
mdiCalendar,
mdiCalendarMinus,
mdiCalendarMultiselect,
mdiCalendarToday,
mdiCalendarWeek,
mdiCalendarWeekBegin,
mdiCartCheck,
mdiChartLine,
mdiCheck,
mdiCheckBold,
mdiCheckboxBlankOutline, mdiCheckboxBlankOutline,
mdiCheckboxMarkedCircle,
mdiCheckboxOutline,
mdiChefHat,
mdiChevronDown,
mdiChevronRight,
mdiClipboardCheck,
mdiClockTimeFourOutline,
mdiClose,
mdiCloudUpload,
mdiCodeJson,
mdiCodeTags,
mdiCog,
mdiCommentTextMultiple, mdiCommentTextMultiple,
mdiCommentTextMultipleOutline, mdiCommentTextMultipleOutline,
mdiContentCopy,
mdiContentDuplicate,
mdiContentSave,
mdiContentSaveEdit,
mdiCookie,
mdiCursorMove,
mdiDatabase,
mdiDelete,
mdiDesktopTowerMonitor,
mdiDevTo,
mdiDiceMultiple,
mdiDockBottom,
mdiDockLeft,
mdiDockRight,
mdiDockTop,
mdiDocker,
mdiDotsHorizontal,
mdiDotsVertical,
mdiDownload, mdiDownload,
mdiDrag,
mdiEmail,
mdiEye,
mdiEyeOff,
mdiFile, mdiFile,
mdiFilePdfBox, mdiFileCabinet,
mdiFileImage, mdiFileImage,
mdiCodeJson, mdiFilePdfBox,
mdiCog, mdiFileSign,
mdiFilter,
mdiFlipHorizontal,
mdiFlipVertical,
mdiFolderOutline,
mdiFolderZipOutline,
mdiFood,
mdiFoodApple,
mdiFormSelect,
mdiFormatColorFill,
mdiFormatListChecks,
mdiGithub,
mdiHeart,
mdiHeartOutline,
mdiHelpCircleOutline,
mdiHome,
mdiHomeAccount,
mdiImport,
mdiInformation,
mdiInformationOutline,
mdiInformationVariant,
mdiKnife,
mdiLink,
mdiLinkVariant,
mdiLinkVariantPlus,
mdiLock,
mdiLogout,
mdiMagnify,
mdiMenu,
mdiMessageText,
mdiMinus,
mdiNewBox,
mdiNotificationClearAll,
mdiOpenInNew,
mdiOrderAlphabeticalAscending,
mdiPageLayoutBody,
mdiPlus,
mdiPlusCircle,
mdiPotSteamOutline,
mdiPrinter,
mdiPrinterPosCog,
mdiRefresh,
mdiRefreshCircle,
mdiRobot,
mdiRotateLeft,
mdiRotateRight,
mdiSelectionDrag,
mdiShapeOutline,
mdiShareVariant,
mdiShuffleVariant,
mdiSilverwareForkKnife,
mdiSilverwareVariant,
mdiSlotMachine,
mdiSort, mdiSort,
mdiSortAscending,
mdiSortDescending,
mdiSortAlphabeticalAscending, mdiSortAlphabeticalAscending,
mdiSortAlphabeticalDescending, mdiSortAlphabeticalDescending,
mdiSortCalendarAscending, mdiSortCalendarAscending,
mdiSortCalendarDescending, mdiSortCalendarDescending,
mdiSortClockAscending, mdiSortClockAscending,
mdiSortClockDescending, mdiSortClockDescending,
mdiOrderAlphabeticalAscending, mdiSortReverseVariant,
mdiSortVariant,
mdiSquareEditOutline,
mdiStar, mdiStar,
mdiNewBox, mdiTableEdit,
mdiShuffleVariant, mdiTagArrowRight,
mdiAlert, mdiTagArrowUpOutline,
mdiCheckboxMarkedCircle, mdiTagMultipleOutline,
mdiInformation,
mdiInformationOutline,
mdiInformationVariant,
mdiBellAlert,
mdiRefreshCircle,
mdiMenu,
mdiWeatherSunny,
mdiWeatherNight,
mdiLink,
mdiRobot,
mdiLinkVariant,
mdiViewModule,
mdiViewDashboard,
mdiTools,
mdiCalendarWeek,
mdiCalendarToday,
mdiCalendarMultiselect,
mdiFormatListChecks,
mdiLogout,
mdiContentCopy,
mdiClipboardCheck,
mdiCloudUpload,
mdiDatabase,
mdiGithub,
mdiFolderOutline,
mdiApi,
mdiTestTube, mdiTestTube,
mdiDevTo,
mdiBackupRestore,
mdiNotificationClearAll,
mdiFood,
mdiWebhook,
mdiFilter,
mdiAccountPlusOutline,
mdiDesktopTowerMonitor,
mdiFormatColorFill,
mdiFormSelect,
mdiPageLayoutBody,
mdiCalendarWeekBegin,
mdiOpenInNew,
mdiCheck,
mdiCheckBold,
mdiBroom,
mdiCartCheck,
mdiArrowLeftBold,
mdiMinus,
mdiWindowClose,
mdiFolderZipOutline,
mdiFoodApple,
mdiBeakerOutline,
mdiArrowLeftBoldOutline,
mdiArrowRightBoldOutline,
mdiTimerSand,
mdiRefresh,
mdiArrowRightBold,
mdiChevronRight,
mdiBowlMixOutline,
mdiWrench,
mdiChartLine,
mdiHelpCircleOutline,
mdiDocker,
mdiUndo,
mdiSelectionDrag,
mdiCursorMove,
mdiText, mdiText,
mdiTextBoxOutline, mdiTextBoxOutline,
mdiTimelineText, mdiTimelineText,
mdiMessageText, mdiTimerSand,
mdiChefHat, mdiTools,
mdiContentDuplicate, mdiTranslate,
mdiDockLeft, mdiUndo,
mdiDockRight, mdiViewDashboard,
mdiDockTop, mdiViewModule,
mdiDockBottom, mdiWeatherNight,
mdiCheckboxOutline, mdiWeatherSunny,
mdiFlipHorizontal, mdiWebhook,
mdiFlipVertical, mdiWindowClose,
mdiRotateLeft, mdiWrench,
mdiRotateRight,
mdiBookOpenPageVariant,
mdiFileCabinet,
mdiSilverwareForkKnife,
mdiCodeTags,
mdiKnife,
mdiCookie,
mdiBellPlus,
mdiLinkVariantPlus,
mdiTableEdit,
mdiFileSign,
} from "@mdi/js"; } from "@mdi/js";
export const icons = { export const icons = {
@@ -205,6 +205,7 @@ export const icons = {
database: mdiDatabase, database: mdiDatabase,
desktopTowerMonitor: mdiDesktopTowerMonitor, desktopTowerMonitor: mdiDesktopTowerMonitor,
devTo: mdiDevTo, devTo: mdiDevTo,
knife: mdiKnife,
diceMultiple: mdiDiceMultiple, diceMultiple: mdiDiceMultiple,
dockTop: mdiDockTop, dockTop: mdiDockTop,
dockBottom: mdiDockBottom, dockBottom: mdiDockBottom,
@@ -261,8 +262,8 @@ export const icons = {
shuffleVariant: mdiShuffleVariant, shuffleVariant: mdiShuffleVariant,
silverwareForkKnife: mdiSilverwareForkKnife, silverwareForkKnife: mdiSilverwareForkKnife,
sort: mdiSort, sort: mdiSort,
sortAscending: mdiSortAscending, sortAscending: mdiSortVariant,
sortDescending: mdiSortDescending, sortDescending: mdiSortReverseVariant,
sortAlphabeticalAscending: mdiSortAlphabeticalAscending, sortAlphabeticalAscending: mdiSortAlphabeticalAscending,
sortAlphabeticalDescending: mdiSortAlphabeticalDescending, sortAlphabeticalDescending: mdiSortAlphabeticalDescending,
sortCalendarAscending: mdiSortCalendarAscending, sortCalendarAscending: mdiSortCalendarAscending,
@@ -284,7 +285,6 @@ export const icons = {
windowClose: mdiWindowClose, windowClose: mdiWindowClose,
zip: mdiFolderZipOutline, zip: mdiFolderZipOutline,
undo: mdiUndo, undo: mdiUndo,
knfife: mdiKnife,
bread: mdiCookie, bread: mdiCookie,
fileSign: mdiFileSign, fileSign: mdiFileSign,

View File

@@ -9,7 +9,6 @@ export default defineNuxtConfig({
modules: [ modules: [
"@vite-pwa/nuxt", "@vite-pwa/nuxt",
"@nuxtjs/i18n", "@nuxtjs/i18n",
"@sidebase/nuxt-auth",
"@nuxt/fonts", "@nuxt/fonts",
"vuetify-nuxt-module", "vuetify-nuxt-module",
"@nuxt/eslint", "@nuxt/eslint",
@@ -51,11 +50,11 @@ export default defineNuxtConfig({
}, },
], ],
link: [ link: [
{ "rel": "icon", "type": "image/x-icon", "href": "/favicon.ico", "data-n-head": "ssr" }, { rel: "icon", type: "image/x-icon", href: "/favicon.ico" },
{ "rel": "shortcut icon", "type": "image/png", "href": "/icons/icon-x64.png", "data-n-head": "ssr" }, { rel: "shortcut icon", type: "image/png", href: "/icons/icon-x64.png" },
{ "rel": "apple-touch-icon", "type": "image/png", "href": "/icons/apple-touch-icon.png", "data-n-head": "ssr" }, { rel: "apple-touch-icon", type: "image/png", href: "/icons/apple-touch-icon.png" },
{ "rel": "mask-icon", "href": "/icons/safari-pinned-tab.svg", "data-n-head": "ssr" }, { rel: "mask-icon", href: "/icons/safari-pinned-tab.svg" },
{ "rel": "manifest", "href": "/manifest.webmanifest", "data-n-head": "ssr" }, { rel: "manifest", href: "/manifest.webmanifest", crossorigin: "use-credentials" },
], ],
}, },
@@ -126,29 +125,6 @@ export default defineNuxtConfig({
baseURL: process.env.SUB_PATH || "", baseURL: process.env.SUB_PATH || "",
}, },
auth: {
isEnabled: true,
// disableServerSideAuth: true,
originEnvKey: "AUTH_ORIGIN",
baseURL: "/api",
provider: {
type: "local",
endpoints: {
signIn: { path: "/auth/token", method: "post" },
signOut: { path: "/auth/logout", method: "post" },
getSession: { path: "/users/self", method: "get" },
},
token: {
signInResponseTokenPointer: "/access_token",
type: "Bearer",
cookieName: AUTH_TOKEN,
},
pages: {
login: "/login",
},
},
},
// eslint rules // eslint rules
eslint: { eslint: {
config: { config: {
@@ -269,7 +245,7 @@ export default defineNuxtConfig({
"browser", "browser",
"window-controls-overlay", "window-controls-overlay",
], ],
orientation: "portrait-primary", orientation: "any",
categories: ["food", "lifestyle"], categories: ["food", "lifestyle"],
prefer_related_applications: false, prefer_related_applications: false,
handle_links: "preferred", handle_links: "preferred",

View File

@@ -1,6 +1,6 @@
{ {
"name": "mealie", "name": "mealie",
"version": "3.2.1", "version": "3.3.2",
"private": true, "private": true,
"scripts": { "scripts": {
"dev": "nuxt dev", "dev": "nuxt dev",
@@ -21,7 +21,6 @@
"@mdi/js": "^7.4.47", "@mdi/js": "^7.4.47",
"@nuxt/fonts": "^0.11.4", "@nuxt/fonts": "^0.11.4",
"@nuxtjs/i18n": "^9.2.1", "@nuxtjs/i18n": "^9.2.1",
"@sidebase/nuxt-auth": "^1.1.0",
"@vite-pwa/nuxt": "^0.10.6", "@vite-pwa/nuxt": "^0.10.6",
"@vueuse/core": "^12.7.0", "@vueuse/core": "^12.7.0",
"axios": "^1.8.1", "axios": "^1.8.1",
@@ -30,9 +29,8 @@
"isomorphic-dompurify": "^2.28.0", "isomorphic-dompurify": "^2.28.0",
"json-editor-vue": "^0.18.1", "json-editor-vue": "^0.18.1",
"marked": "^15.0.12", "marked": "^15.0.12",
"next-auth": "~4.24.0",
"nuxt": "^3.19.2", "nuxt": "^3.19.2",
"vite": "^6.2.0", "vite": "^7.0.0",
"vue-advanced-cropper": "^2.8.9", "vue-advanced-cropper": "^2.8.9",
"vue-draggable-plus": "^0.6.0", "vue-draggable-plus": "^0.6.0",
"vuetify": "^3.9.7", "vuetify": "^3.9.7",

View File

@@ -1,6 +1,6 @@
<script setup lang="ts"> <script setup lang="ts">
definePageMeta({ definePageMeta({
middleware: ["sidebase-auth", "admin-only"], middleware: ["admin-only"],
}); });
</script> </script>

View File

@@ -244,6 +244,7 @@ import UserRegistrationForm from "~/components/Domain/User/UserRegistrationForm.
definePageMeta({ definePageMeta({
layout: "blank", layout: "blank",
middleware: ["admin-only"],
}); });
// ================================================================ // ================================================================
@@ -264,13 +265,6 @@ useSeoMeta({
title: i18n.t("admin.setup.first-time-setup"), title: i18n.t("admin.setup.first-time-setup"),
}); });
if (!$auth.loggedIn.value) {
router.push("/login");
}
else if (!$auth.user.value?.admin) {
router.push(groupSlug.value ? `/g/${groupSlug.value}` : "/login");
}
enum Pages { enum Pages {
LANDING = 0, LANDING = 0,
USER_INFO = 1, USER_INFO = 1,

View File

@@ -194,6 +194,16 @@
</a> </a>
</v-list-item-subtitle> </v-list-item-subtitle>
</template> </template>
<template v-else-if="property.slot === 'version' && property.value !== 'develop' && property.value !== 'nightly'">
<v-list-item-subtitle>
<a
target="_blank"
:href="`https://github.com/mealie-recipes/mealie/releases/tag/${property.value}`"
>
{{ property.value }}
</a>
</v-list-item-subtitle>
</template>
<template v-else> <template v-else>
<v-list-item-subtitle> <v-list-item-subtitle>
{{ property.value }} {{ property.value }}
@@ -400,6 +410,7 @@ export default defineNuxtComponent({
rawAppInfo.value.versionLatest = data.versionLatest; rawAppInfo.value.versionLatest = data.versionLatest;
const prettyInfo = [ const prettyInfo = [
{ {
slot: "version",
name: i18n.t("about.version"), name: i18n.t("about.version"),
icon: $globals.icons.information, icon: $globals.icons.information,
value: data.version, value: data.version,

View File

@@ -145,7 +145,7 @@ import { useCookbookPreferences } from "~/composables/use-users/preferences";
export default defineNuxtComponent({ export default defineNuxtComponent({
components: { CookbookEditor, VueDraggable }, components: { CookbookEditor, VueDraggable },
middleware: ["sidebase-auth", "group-only"], middleware: ["group-only"],
setup() { setup() {
const dialogStates = reactive({ const dialogStates = reactive({
create: false, create: false,

View File

@@ -19,20 +19,21 @@ import type { Recipe } from "~/lib/api/types/recipe";
const $auth = useMealieAuth(); const $auth = useMealieAuth();
const { isOwnGroup } = useLoggedInState(); const { isOwnGroup } = useLoggedInState();
const route = useRoute(); const route = useRoute();
const title = ref(route.meta?.title ?? ""); const title = ref(route.meta?.title as string || "");
useSeoMeta({ title }); useSeoMeta({ title });
const router = useRouter(); const router = useRouter();
const slug = route.params.slug as string; const slug = route.params.slug as string;
const recipe = ref<Recipe | null>(null); const recipe = ref<Recipe | null>(null);
if (isOwnGroup.value) { function loadRecipe() {
const { recipe: data } = useRecipe(slug); const { recipe: data } = useRecipe(slug);
watch(data, (value) => { watch(data, (value) => {
recipe.value = value; recipe.value = value;
}); });
} }
else {
async function loadPublicRecipe() {
const groupSlug = computed(() => route.params.groupSlug as string || $auth.user.value?.groupSlug || ""); const groupSlug = computed(() => route.params.groupSlug as string || $auth.user.value?.groupSlug || "");
const api = usePublicExploreApi(groupSlug.value); const api = usePublicExploreApi(groupSlug.value);
const { data } = await useAsyncData(useAsyncKey(), async () => { const { data } = await useAsyncData(useAsyncKey(), async () => {
@@ -47,6 +48,13 @@ else {
recipe.value = data.value; recipe.value = data.value;
} }
if (isOwnGroup.value) {
loadRecipe();
}
else {
onMounted(loadPublicRecipe);
}
whenever( whenever(
() => recipe.value, () => recipe.value,
() => { () => {

View File

@@ -49,7 +49,7 @@ import AdvancedOnly from "~/components/global/AdvancedOnly.vue";
export default defineNuxtComponent({ export default defineNuxtComponent({
components: { AdvancedOnly }, components: { AdvancedOnly },
middleware: ["sidebase-auth", "group-only"], middleware: ["group-only"],
setup() { setup() {
const i18n = useI18n(); const i18n = useI18n();
const $auth = useMealieAuth(); const $auth = useMealieAuth();

View File

@@ -23,7 +23,7 @@ export default defineNuxtComponent({
components: { components: {
RecipeOrganizerPage, RecipeOrganizerPage,
}, },
middleware: ["sidebase-auth", "group-only"], middleware: ["group-only"],
setup() { setup() {
const { store, actions } = useCategoryStore(); const { store, actions } = useCategoryStore();
const i18n = useI18n(); const i18n = useI18n();

View File

@@ -23,7 +23,7 @@ export default defineNuxtComponent({
components: { components: {
RecipeOrganizerPage, RecipeOrganizerPage,
}, },
middleware: ["sidebase-auth", "group-only"], middleware: ["group-only"],
setup() { setup() {
const { store, actions } = useTagStore(); const { store, actions } = useTagStore();
const i18n = useI18n(); const i18n = useI18n();

View File

@@ -36,7 +36,7 @@ import RecipeTimeline from "~/components/Domain/Recipe/RecipeTimeline.vue";
export default defineNuxtComponent({ export default defineNuxtComponent({
components: { RecipeTimeline }, components: { RecipeTimeline },
middleware: ["sidebase-auth", "group-only"], middleware: ["group-only"],
setup() { setup() {
const i18n = useI18n(); const i18n = useI18n();
const api = useUserApi(); const api = useUserApi();

View File

@@ -28,7 +28,7 @@ export default defineNuxtComponent({
components: { components: {
RecipeOrganizerPage, RecipeOrganizerPage,
}, },
middleware: ["sidebase-auth", "group-only"], middleware: ["group-only"],
setup() { setup() {
const $auth = useMealieAuth(); const $auth = useMealieAuth();
const toolStore = useToolStore(); const toolStore = useToolStore();

View File

@@ -25,7 +25,7 @@ const router = useRouter();
const recipeId = route.params.id as string; const recipeId = route.params.id as string;
const api = usePublicApi(); const api = usePublicApi();
const title = ref(route.meta?.title ?? ""); const title = ref(route.meta?.title as string ?? "");
useSeoMeta({ useSeoMeta({
title, title,
}); });

View File

@@ -36,7 +36,7 @@
<script lang="ts"> <script lang="ts">
export default defineNuxtComponent({ export default defineNuxtComponent({
middleware: ["sidebase-auth", "can-organize-only"], middleware: ["can-organize-only"],
setup() { setup() {
const i18n = useI18n(); const i18n = useI18n();
const buttonLookup: { [key: string]: string } = { const buttonLookup: { [key: string]: string } = {

View File

@@ -57,11 +57,12 @@
variant="outlined" variant="outlined"
offset offset
> >
<template #item="{ item }"> <template #item="{ item, props }">
<v-list-item-title> {{ item.raw.name }} </v-list-item-title> <v-list-item v-bind="props">
<v-list-item-subtitle> <v-list-item-subtitle>
{{ item.raw.progress }}% {{ $t("language-dialog.translated") }} {{ item.raw.progress }}% {{ $t("language-dialog.translated") }}
</v-list-item-subtitle> </v-list-item-subtitle>
</v-list-item>
</template> </template>
</v-autocomplete> </v-autocomplete>

View File

@@ -116,11 +116,12 @@
variant="outlined" variant="outlined"
offset offset
> >
<template #item="{ item }"> <template #item="{ item, props }">
<v-list-item-title> {{ item.raw.name }} </v-list-item-title> <v-list-item v-bind="props">
<v-list-item-subtitle> <v-list-item-subtitle>
{{ item.raw.progress }}% {{ $t("language-dialog.translated") }} {{ item.raw.progress }}% {{ $t("language-dialog.translated") }}
</v-list-item-subtitle> </v-list-item-subtitle>
</v-list-item>
</template> </template>
</v-autocomplete> </v-autocomplete>

View File

@@ -231,11 +231,12 @@
variant="outlined" variant="outlined"
offset offset
> >
<template #item="{ item }"> <template #item="{ item, props }">
<v-list-item-title> {{ item.raw.name }} </v-list-item-title> <v-list-item v-bind="props">
<v-list-item-subtitle> <v-list-item-subtitle>
{{ item.raw.progress }}% {{ $t("language-dialog.translated") }} {{ item.raw.progress }}% {{ $t("language-dialog.translated") }}
</v-list-item-subtitle> </v-list-item-subtitle>
</v-list-item>
</template> </template>
</v-autocomplete> </v-autocomplete>

View File

@@ -47,7 +47,7 @@
import { useGroupSelf } from "~/composables/use-groups"; import { useGroupSelf } from "~/composables/use-groups";
export default defineNuxtComponent({ export default defineNuxtComponent({
middleware: ["sidebase-auth", "can-manage-only"], middleware: ["can-manage-only"],
setup() { setup() {
const { group, actions: groupActions } = useGroupSelf(); const { group, actions: groupActions } = useGroupSelf();
const i18n = useI18n(); const i18n = useI18n();

View File

@@ -124,10 +124,11 @@ const MIGRATIONS = {
plantoeat: "plantoeat", plantoeat: "plantoeat",
recipekeeper: "recipekeeper", recipekeeper: "recipekeeper",
tandoor: "tandoor", tandoor: "tandoor",
cookn: "cookn",
}; };
export default defineNuxtComponent({ export default defineNuxtComponent({
middleware: ["sidebase-auth", "advanced-only"], middleware: ["advanced-only"],
setup() { setup() {
const i18n = useI18n(); const i18n = useI18n();
const { $globals } = useNuxtApp(); const { $globals } = useNuxtApp();
@@ -185,6 +186,10 @@ export default defineNuxtComponent({
text: i18n.t("migration.tandoor.title"), text: i18n.t("migration.tandoor.title"),
value: MIGRATIONS.tandoor, value: MIGRATIONS.tandoor,
}, },
{
text: i18n.t("migration.cookn.title"),
value: MIGRATIONS.cookn,
},
]; ];
const _content: Record<string, MigrationContent> = { const _content: Record<string, MigrationContent> = {
[MIGRATIONS.mealie]: { [MIGRATIONS.mealie]: {
@@ -398,6 +403,34 @@ export default defineNuxtComponent({
}, },
], ],
}, },
[MIGRATIONS.cookn]: {
text: i18n.t("migration.cookn.description-long"),
acceptedFileType: ".zip",
tree: [
{
icon: $globals.icons.zip,
title: "cookn.zip",
children: [
{ title: "temp_brand.dsv", icon: $globals.icons.codeJson },
{ title: "temp_chapter_desc.dsv", icon: $globals.icons.codeJson },
{ title: "temp_chapter.dsv", icon: $globals.icons.codeJson },
{ title: "temp_cookBook_desc.dsv", icon: $globals.icons.codeJson },
{ title: "temp_cookBook.dsv", icon: $globals.icons.codeJson },
{ title: "temp_food_brand.dsv", icon: $globals.icons.codeJson },
{ title: "temp_food_group.dsv", icon: $globals.icons.codeJson },
{ title: "temp_food.dsv", icon: $globals.icons.codeJson },
{ title: "temp_ingredient.dsv", icon: $globals.icons.codeJson },
{ title: "temp_media.dsv", icon: $globals.icons.codeJson },
{ title: "temp_nutrient.dsv", icon: $globals.icons.codeJson },
{ title: "temp_recipe_desc.dsv", icon: $globals.icons.codeJson },
{ title: "temp_recipe.dsv", icon: $globals.icons.codeJson },
{ title: "temp_unit_equivalent.dsv", icon: $globals.icons.codeJson },
{ title: "temp_unit.dsv", icon: $globals.icons.codeJson },
{ title: "images", icon: $globals.icons.fileImage },
],
},
],
},
}; };
function addIdToNode(counter: number, node: TreeNode): number { function addIdToNode(counter: number, node: TreeNode): number {

View File

@@ -52,7 +52,6 @@ import { useUserApi } from "~/composables/api";
import type { ReportOut } from "~/lib/api/types/reports"; import type { ReportOut } from "~/lib/api/types/reports";
export default defineNuxtComponent({ export default defineNuxtComponent({
middleware: "sidebase-auth",
setup() { setup() {
const route = useRoute(); const route = useRoute();
const id = route.params.id as string; const id = route.params.id as string;

View File

@@ -43,7 +43,7 @@ export default defineNuxtComponent({
components: { components: {
HouseholdPreferencesEditor, HouseholdPreferencesEditor,
}, },
middleware: ["sidebase-auth", "can-manage-household-only"], middleware: ["can-manage-household-only"],
setup() { setup() {
const { household, actions: householdActions } = useHouseholdSelf(); const { household, actions: householdActions } = useHouseholdSelf();
const i18n = useI18n(); const i18n = useI18n();

View File

@@ -75,7 +75,6 @@ import { useMealplans } from "~/composables/use-group-mealplan";
import { useUserMealPlanPreferences } from "~/composables/use-users/preferences"; import { useUserMealPlanPreferences } from "~/composables/use-users/preferences";
export default defineNuxtComponent({ export default defineNuxtComponent({
middleware: ["sidebase-auth"],
setup() { setup() {
const route = useRoute(); const route = useRoute();
const router = useRouter(); const router = useRouter();

View File

@@ -183,7 +183,6 @@ export default defineNuxtComponent({
GroupMealPlanRuleForm, GroupMealPlanRuleForm,
RecipeChips, RecipeChips,
}, },
middleware: ["sidebase-auth"],
props: { props: {
modelValue: { modelValue: {
type: Boolean, type: Boolean,

View File

@@ -124,7 +124,6 @@ export default defineNuxtComponent({
components: { components: {
UserAvatar, UserAvatar,
}, },
middleware: ["sidebase-auth"],
setup() { setup() {
const $auth = useMealieAuth(); const $auth = useMealieAuth();
const api = useUserApi(); const api = useUserApi();

View File

@@ -199,7 +199,7 @@ interface OptionSection {
} }
export default defineNuxtComponent({ export default defineNuxtComponent({
middleware: ["sidebase-auth", "advanced-only"], middleware: ["advanced-only"],
setup() { setup() {
const api = useUserApi(); const api = useUserApi();
const i18n = useI18n(); const i18n = useI18n();

View File

@@ -75,7 +75,7 @@ import { alert } from "~/composables/use-toast";
export default defineNuxtComponent({ export default defineNuxtComponent({
components: { GroupWebhookEditor }, components: { GroupWebhookEditor },
middleware: ["sidebase-auth", "advanced-only"], middleware: ["advanced-only"],
setup() { setup() {
const i18n = useI18n(); const i18n = useI18n();
const { actions, webhooks } = useGroupWebhooks(); const { actions, webhooks } = useGroupWebhooks();

View File

@@ -3,6 +3,8 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import useDefaultActivity from "~/composables/use-default-activity";
import { useUserActivityPreferences } from "~/composables/use-users/preferences";
import { useAsyncKey } from "~/composables/use-utils"; import { useAsyncKey } from "~/composables/use-utils";
import type { AppInfo, AppStartupInfo } from "~/lib/api/types/admin"; import type { AppInfo, AppStartupInfo } from "~/lib/api/types/admin";
@@ -15,6 +17,8 @@ export default defineNuxtComponent({
const $auth = useMealieAuth(); const $auth = useMealieAuth();
const { $axios } = useNuxtApp(); const { $axios } = useNuxtApp();
const router = useRouter(); const router = useRouter();
const activityPreferences = useUserActivityPreferences();
const { getDefaultActivityRoute } = useDefaultActivity();
const groupSlug = computed(() => $auth.user.value?.groupSlug); const groupSlug = computed(() => $auth.user.value?.groupSlug);
async function redirectPublicUserToDefaultGroup() { async function redirectPublicUserToDefaultGroup() {
@@ -32,9 +36,16 @@ export default defineNuxtComponent({
const data = await $axios.get<AppStartupInfo>("/api/app/about/startup-info"); const data = await $axios.get<AppStartupInfo>("/api/app/about/startup-info");
const isDemo = data.data.isDemo; const isDemo = data.data.isDemo;
const isFirstLogin = data.data.isFirstLogin; const isFirstLogin = data.data.isFirstLogin;
const defaultActivityRoute = getDefaultActivityRoute(
activityPreferences.value.defaultActivity,
groupSlug.value,
);
if (!isDemo && isFirstLogin && $auth.user.value?.admin) { if (!isDemo && isFirstLogin && $auth.user.value?.admin) {
router.push("/admin/setup"); router.push("/admin/setup");
} }
else if (defaultActivityRoute) {
router.push(defaultActivityRoute);
}
else { else {
router.push(`/g/${groupSlug.value}`); router.push(`/g/${groupSlug.value}`);
} }

View File

@@ -217,6 +217,7 @@ import { usePasswordField } from "~/composables/use-passwords";
import { alert } from "~/composables/use-toast"; import { alert } from "~/composables/use-toast";
import { useAsyncKey } from "~/composables/use-utils"; import { useAsyncKey } from "~/composables/use-utils";
import type { AppStartupInfo } from "~/lib/api/types/admin"; import type { AppStartupInfo } from "~/lib/api/types/admin";
import { useUserActivityPreferences } from "~/composables/use-users/preferences";
export default defineNuxtComponent({ export default defineNuxtComponent({
setup() { setup() {
@@ -233,6 +234,8 @@ export default defineNuxtComponent({
const groupSlug = computed(() => $auth.user.value?.groupSlug); const groupSlug = computed(() => $auth.user.value?.groupSlug);
const isDemo = ref(false); const isDemo = ref(false);
const isFirstLogin = ref(false); const isFirstLogin = ref(false);
const activityPreferences = useUserActivityPreferences();
const { getDefaultActivityRoute } = useDefaultActivity();
useSeoMeta({ useSeoMeta({
title: i18n.t("user.login"), title: i18n.t("user.login"),
@@ -253,9 +256,16 @@ export default defineNuxtComponent({
whenever( whenever(
() => loggedIn.value && groupSlug.value, () => loggedIn.value && groupSlug.value,
() => { () => {
const defaultActivityRoute = getDefaultActivityRoute(
activityPreferences.value.defaultActivity,
groupSlug.value,
);
if (!isDemo.value && isFirstLogin.value && $auth.user.value?.admin) { if (!isDemo.value && isFirstLogin.value && $auth.user.value?.admin) {
router.push("/admin/setup"); router.push("/admin/setup");
} }
else if (defaultActivityRoute) {
router.push(defaultActivityRoute);
}
else { else {
router.push(`/g/${groupSlug.value || ""}`); router.push(`/g/${groupSlug.value || ""}`);
} }
@@ -304,7 +314,6 @@ export default defineNuxtComponent({
oidcLoggingIn.value = true; oidcLoggingIn.value = true;
try { try {
await $auth.oauthSignIn(); await $auth.oauthSignIn();
window.location.href = "/"; // Reload the app to get the new user
} }
catch (error) { catch (error) {
await router.replace("/login?direct=1"); await router.replace("/login?direct=1");
@@ -330,8 +339,7 @@ export default defineNuxtComponent({
formData.append("remember_me", String(form.remember)); formData.append("remember_me", String(form.remember));
try { try {
await $auth.signIn(formData, { redirect: false }); await $auth.signIn(formData);
window.location.href = "/"; // Reload the app to get the new user
} }
catch (error) { catch (error) {
console.log(error); console.log(error);

View File

@@ -36,6 +36,34 @@
</v-card-text> </v-card-text>
</BaseDialog> </BaseDialog>
<!-- Reorder Labels -->
<BaseDialog
v-model="reorderLabelsDialog"
:icon="$globals.icons.tagArrowUp"
:title="$t('shopping-list.reorder-labels')"
:submit-icon="$globals.icons.save"
:submit-text="$t('general.save')"
can-submit
@submit="saveLabelOrder"
@close="cancelLabelOrder"
>
<v-card height="fit-content" max-height="70vh" style="overflow-y: auto;">
<VueDraggable
v-if="localLabels"
v-model="localLabels"
handle=".handle"
:delay="250"
:delay-on-touch-only="true"
class="my-2"
@update:model-value="updateLabelOrder"
>
<div v-for="(labelSetting, index) in localLabels" :key="labelSetting.id">
<MultiPurposeLabelSection v-model="localLabels[index]" use-color />
</div>
</VueDraggable>
</v-card>
</BaseDialog>
<BasePageTitle divider> <BasePageTitle divider>
<template #header> <template #header>
<v-container class="px-0"> <v-container class="px-0">
@@ -127,10 +155,7 @@
/> />
<!-- Viewer --> <!-- Viewer -->
<section <section v-if="!edit" class="py-2 d-flex flex-column ga-4">
v-if="!edit"
class="py-2"
>
<!-- Create Item --> <!-- Create Item -->
<div v-if="createEditorOpen"> <div v-if="createEditorOpen">
<ShoppingListItemEditor <ShoppingListItemEditor
@@ -154,27 +179,15 @@
</BaseButton> </BaseButton>
</div> </div>
<div <BaseExpansionPanels v-for="(value, key) in itemsByLabel" :key="key" :v-model="0" start-open>
v-for="(value, key) in itemsByLabel" <v-expansion-panel class="shopping-list-section">
:key="key" <v-expansion-panel-title
class="pb-4" :color="getLabelColor(key)"
> class="body-1 font-weight-bold section-title"
<v-btn >
:color="getLabelColor(value[0]) ? getLabelColor(value[0]) : '#959595'" {{ key }}
:style="{ </v-expansion-panel-title>
'color': getTextColor(getLabelColor(value[0])), <v-expansion-panel-text eager>
'letter-spacing': 'normal',
}"
@click="toggleShowLabel(key.toString())"
>
<v-icon>
{{ labelOpenState[key] ? $globals.icons.chevronDown : $globals.icons.chevronRight }}
</v-icon>
{{ key }}
</v-btn>
<v-divider />
<v-expand-transition>
<div v-if="labelOpenState[key]">
<VueDraggable <VueDraggable
:model-value="value" :model-value="value"
handle=".handle" handle=".handle"
@@ -184,107 +197,53 @@
@end="loadingCounter -= 1" @end="loadingCounter -= 1"
@update:model-value="updateIndexUncheckedByLabel(key.toString(), $event)" @update:model-value="updateIndexUncheckedByLabel(key.toString(), $event)"
> >
<v-lazy <ShoppingListItem
v-for="(item, index) in value" v-for="(item, index) in value"
:key="item.id" :key="item.id"
class="ml-2 my-2" v-model="value[index]"
> class="ml-2 my-2 w-auto"
<ShoppingListItem :labels="allLabels || []"
v-model="value[index]" :units="allUnits || []"
:labels="allLabels || []" :foods="allFoods || []"
:units="allUnits || []" :recipes="recipeMap"
:foods="allFoods || []" @checked="saveListItem"
:recipes="recipeMap" @save="saveListItem"
@checked="saveListItem" @delete="deleteListItem(item)"
@save="saveListItem"
@delete="deleteListItem(item)"
/>
</v-lazy>
</VueDraggable>
</div>
</v-expand-transition>
</div>
<!-- Reorder Labels -->
<BaseDialog
v-model="reorderLabelsDialog"
:icon="$globals.icons.tagArrowUp"
:title="$t('shopping-list.reorder-labels')"
:submit-icon="$globals.icons.save"
:submit-text="$t('general.save')"
can-submit
@submit="saveLabelOrder"
@close="cancelLabelOrder"
>
<v-card
height="fit-content"
max-height="70vh"
style="overflow-y: auto;"
>
<VueDraggable
v-if="localLabels"
v-model="localLabels"
handle=".handle"
:delay="250"
:delay-on-touch-only="true"
class="my-2"
@update:model-value="updateLabelOrder"
>
<div
v-for="(labelSetting, index) in localLabels"
:key="labelSetting.id"
>
<MultiPurposeLabelSection
v-model="localLabels[index]"
use-color
/> />
</div> </VueDraggable>
</VueDraggable> </v-expansion-panel-text>
</v-card> </v-expansion-panel>
</BaseDialog> </BaseExpansionPanels>
<!-- Checked Items --> <!-- Checked Items -->
<div <v-expansion-panels flat>
v-if="listItems.checked && listItems.checked.length > 0" <v-expansion-panel v-if="listItems.checked && listItems.checked.length > 0">
class="mt-6" <v-expansion-panel-title class="border-solid border-thin py-1">
> <div class="d-flex align-center flex-0-1-100">
<div class="d-flex"> <div class="flex-1-0">
<div class="flex-grow-1"> {{ $t('shopping-list.items-checked-count', listItems.checked ? listItems.checked.length : 0) }}
<button @click="toggleShowChecked()"> </div>
<span> <div class="justify-end">
<v-icon> <BaseButtonGroup
{{ showChecked ? $globals.icons.chevronDown : $globals.icons.chevronRight }} :buttons="[
</v-icon> {
</span> icon: $globals.icons.checkboxBlankOutline,
{{ $t('shopping-list.items-checked-count', listItems.checked ? listItems.checked.length : 0) }} text: $t('shopping-list.uncheck-all-items'),
</button> event: 'uncheck',
</div> },
<div class="justify-end mt-n2"> {
<BaseButtonGroup icon: $globals.icons.delete,
:buttons="[ text: $t('shopping-list.delete-checked'),
{ event: 'delete',
icon: $globals.icons.checkboxBlankOutline, },
text: $t('shopping-list.uncheck-all-items'), ]"
event: 'uncheck', @uncheck="openUncheckAll"
}, @delete="openDeleteChecked"
{ />
icon: $globals.icons.delete, </div>
text: $t('shopping-list.delete-checked'), </div>
event: 'delete', </v-expansion-panel-title>
}, <v-expansion-panel-text eager>
]" <div v-for="(item, idx) in listItems.checked" :key="item.id">
@uncheck="openUncheckAll"
@delete="openDeleteChecked"
/>
</div>
</div>
<v-divider class="my-4" />
<v-expand-transition>
<div v-if="showChecked">
<div
v-for="(item, idx) in listItems.checked"
:key="item.id"
>
<ShoppingListItem <ShoppingListItem
v-model="listItems.checked[idx]" v-model="listItems.checked[idx]"
class="strike-through-note" class="strike-through-note"
@@ -296,14 +255,15 @@
@delete="deleteListItem(item)" @delete="deleteListItem(item)"
/> />
</div> </div>
</div> </v-expansion-panel-text>
</v-expand-transition> </v-expansion-panel>
</div> </v-expansion-panels>
</section> </section>
<!-- Recipe References --> <!-- Recipe References -->
<v-lazy <v-lazy
v-if="shoppingList.recipeReferences && shoppingList.recipeReferences.length > 0" v-if="shoppingList.recipeReferences && shoppingList.recipeReferences.length > 0"
class="mt-6"
> >
<section> <section>
<div> <div>
@@ -316,7 +276,7 @@
? shoppingList.recipeReferences.length ? shoppingList.recipeReferences.length
: 0) }} : 0) }}
</div> </div>
<v-divider class="my-4" /> <v-divider />
<RecipeList <RecipeList
:recipes="recipeList" :recipes="recipeList"
show-description show-description
@@ -367,14 +327,14 @@
<script lang="ts"> <script lang="ts">
import { VueDraggable } from "vue-draggable-plus"; import { VueDraggable } from "vue-draggable-plus";
import RecipeList from "~/components/Domain/Recipe/RecipeList.vue";
import MultiPurposeLabelSection from "~/components/Domain/ShoppingList/MultiPurposeLabelSection.vue"; import MultiPurposeLabelSection from "~/components/Domain/ShoppingList/MultiPurposeLabelSection.vue";
import ShoppingListItem from "~/components/Domain/ShoppingList/ShoppingListItem.vue"; import ShoppingListItem from "~/components/Domain/ShoppingList/ShoppingListItem.vue";
import RecipeList from "~/components/Domain/Recipe/RecipeList.vue";
import ShoppingListItemEditor from "~/components/Domain/ShoppingList/ShoppingListItemEditor.vue"; import ShoppingListItemEditor from "~/components/Domain/ShoppingList/ShoppingListItemEditor.vue";
import { useFoodStore, useLabelStore, useUnitStore } from "~/composables/store";
import { useShoppingListPreferences } from "~/composables/use-users/preferences";
import { getTextColor } from "~/composables/use-text-color";
import { useShoppingListPage } from "~/composables/shopping-list-page/use-shopping-list-page"; import { useShoppingListPage } from "~/composables/shopping-list-page/use-shopping-list-page";
import { useFoodStore, useLabelStore, useUnitStore } from "~/composables/store";
import { getTextColor } from "~/composables/use-text-color";
import { useShoppingListPreferences } from "~/composables/use-users/preferences";
export default defineNuxtComponent({ export default defineNuxtComponent({
components: { components: {
@@ -417,8 +377,19 @@ export default defineNuxtComponent({
}); });
</script> </script>
<style scoped> <style>
.number-input-container { .number-input-container {
max-width: 50px; max-width: 50px;
} }
.shopping-list-section {
.section-title {
font-size: 1rem;
min-height: 48px !important;
}
.v-expansion-panel-text__wrapper {
padding: 0;
}
}
</style> </style>

View File

@@ -131,7 +131,6 @@ import { useShoppingListPreferences } from "~/composables/use-users/preferences"
import type { UserOut } from "~/lib/api/types/user"; import type { UserOut } from "~/lib/api/types/user";
export default defineNuxtComponent({ export default defineNuxtComponent({
middleware: "sidebase-auth",
setup() { setup() {
const $auth = useMealieAuth(); const $auth = useMealieAuth();
const i18n = useI18n(); const i18n = useI18n();

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